diff --git a/locales/fa/LC_MESSAGES/contribute.po b/locales/fa/LC_MESSAGES/contribute.po index aa4832e93f76f9edfaab30dd0c3f20113ff39808..60f011a1277ea76a5a05243d38a1125b5be9faa3 100644 --- a/locales/fa/LC_MESSAGES/contribute.po +++ b/locales/fa/LC_MESSAGES/contribute.po @@ -1,14 +1,14 @@ -# SOME DESCRIPTIVE TITLE. +# LANGUAGE translation of FILENAME.pot # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors -# This file is distributed under the same license as the Jami package. +# This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Jami\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 12:03+0000\n" +"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:52+0000\n" "Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n" "MIME-Version: 1.0\n" diff --git a/locales/fa/LC_MESSAGES/developer.po b/locales/fa/LC_MESSAGES/developer.po index 5425a199d96dfdbcfd23397c90e950f55ae2b539..00667cbadfffd2ee6d6ddc9e63daf4420989bfb9 100644 --- a/locales/fa/LC_MESSAGES/developer.po +++ b/locales/fa/LC_MESSAGES/developer.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Jami\n" "Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" -"POT-Creation-Date: 2022-11-08 03:52+0000\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:48+0000\n" "Last-Translator: Amin Mahmudian, 2022\n" "Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n" @@ -1249,7 +1249,7 @@ msgstr "" #: ../../../developer/conference-protocol.md:38 #: ../../../developer/conference-protocol.md:95 -#: ../../../developer/swarm.md:490 +#: ../../../developer/swarm.md:520 msgid "Implementation" msgstr "" @@ -1703,7 +1703,7 @@ msgstr "" msgid "ChannelSockets are used by the client to interact with the other peer." msgstr "" -#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:507 +#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:537 msgid "Usage" msgstr "" @@ -1839,8 +1839,8 @@ msgid "" "As from September of 2020, Jami team has added plugins as a call feature for" " GNU/Linux, Windows, and Android users. This meaning that now you can " "personalize your call and chat experience by using one of our available " -"plugins. But that is not all, you can also transform your awesome ideas " -"into a brand new plugin!" +"plugins. But that is not all, you can also transform your awesome ideas into" +" a brand new plugin!" msgstr "" #: ../../../developer/creating-jami-plugins.md:11 @@ -2133,7 +2133,7 @@ msgid "" "`defaultValue`, and `scope`. The specific ones are linked to the type of the" " preference constructed. For `EDITTEXT` preferences there is no other " "property to be set. For `PATH` preferences we have: `mimeType`. For `LIST` " -"preferences we have: `entries` and `entryValues`. A `LIST` preference must " +"preferences we have: `entries` and `entryValues`. A `LIST` preference must " "have a list of possible values to be used and a list of 'names' for these " "values. For example: If you have two `entriesValues`: '0' and '1', these " "values may not be understandable by the user. Jami's UI will take the values" @@ -2555,9 +2555,9 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:320 #: ../../../developer/creating-jami-plugins.md:454 msgid "" -"Available APIs: (1) video during a call (Media Handler API) (2) audio " -"during a call (Media Handler API) (3) chat messages (Chat Handler API) For " -"more information about the API, call help preferences." +"Available APIs: (1) video during a call (Media Handler API) (2) audio during" +" a call (Media Handler API) (3) chat messages (Chat Handler API) For more " +"information about the API, call help preferences." msgstr "" #: ../../../developer/creating-jami-plugins.md:326 @@ -2576,7 +2576,7 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:332 msgid "" -"Your preferences options available are: (0) List; (1) Path; (2) EditText;" +"Your preferences options available are: (0) List; (1) Path; (2) EditText;" msgstr "" #: ../../../developer/creating-jami-plugins.md:337 @@ -2607,7 +2607,7 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:358 msgid "" -"Your preferences options available are: (0) List; (1) Path; (3) EditText;" +"Your preferences options available are: (0) List; (1) Path; (3) EditText;" msgstr "" #: ../../../developer/creating-jami-plugins.md:363 @@ -2730,7 +2730,7 @@ msgid "python3 build-plugin.py --projects=HelloWorld" msgstr "" #: ../../../developer/creating-jami-plugins.md:427 -#: ../../../developer/feature-requests.md:40 +#: ../../../developer/feature-requests.md:39 msgid "Android:" msgstr "" @@ -2809,6 +2809,146 @@ msgid "" "community is developping their own plugins!" msgstr "" +#: ../../../developer/debugging-tools.rst:2 +msgid "Debugging Tools" +msgstr "" + +#: ../../../developer/debugging-tools.rst:4 +msgid "" +"There are several ways to debug Jami from a developer perspective, depending" +" on what you want to debug." +msgstr "" + +#: ../../../developer/debugging-tools.rst:7 +msgid "Loggers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:9 +msgid "" +"The first way is to use runtime loggers. Starting `jami` with `-d` will " +"enable logging by the deamon (or the Troubleshoot section in the General " +"settings). Because Jami uses several libraries, we do not enable all logs by" +" default. But you can pass some environment variables to show it:" +msgstr "" + +#: ../../../developer/debugging-tools.rst:13 +msgid "`SIPLOGLEVEL=5` for enabling logs from PJSIP." +msgstr "" + +#: ../../../developer/debugging-tools.rst:14 +msgid "`DHTLOGLEVEL=5` for enabling logs from OpenDHT." +msgstr "" + +#: ../../../developer/debugging-tools.rst:15 +msgid "`AVLOGLEVEL=50` for enabling logs from ffmpeg." +msgstr "" + +#: ../../../developer/debugging-tools.rst:18 +msgid "Debuggers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:20 +msgid "" +"Generally your IDE has an embedded debuggger. Else, you can use `gdb` for " +"example to be able to add breakpoints, backtraces from crashes, print " +"internal structures, etc. You need to compile the project in *DEBUG* mode to" +" get debug symbols." +msgstr "" + +#: ../../../developer/debugging-tools.rst:24 +msgid "Some useful commands:" +msgstr "" + +#: ../../../developer/debugging-tools.rst:26 +msgid "" +"`b file.cpp:line` - Add a breakpoint (*file.cpp:line* can be replaced by a " +"symbol)" +msgstr "" + +#: ../../../developer/debugging-tools.rst:27 +msgid "`t a a bt` - (thread apply all backtrace) to get all backtraces" +msgstr "" + +#: ../../../developer/debugging-tools.rst:28 +msgid "`Ctrl + X / A` - pass in graphical view" +msgstr "" + +#: ../../../developer/debugging-tools.rst:29 +msgid "`p` - print an internal value." +msgstr "" + +#: ../../../developer/debugging-tools.rst:32 +msgid "Profilers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:34 +msgid "" +"Debuggers are useful, but they do not show real-time memory " +"consumption/network activity/CPU usage. For this, you can use the embedded " +"profiler in your IDE (from Android Studio or Qt Creator/Visual Studio for " +"example)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:39 +msgid "Address Sanitizer" +msgstr "" + +#: ../../../developer/debugging-tools.rst:41 +msgid "" +"This can be useful to detect leaks, crashes, potential deadlocks at runtime." +" To enable this, you can compile the daemon with " +"`CXXFLAGS+=\"-fsanitize=address\"`. Other flags like `tsan` may be useful." +msgstr "" + +#: ../../../developer/debugging-tools.rst:45 +msgid "Valgrind/Callgrind" +msgstr "" + +#: ../../../developer/debugging-tools.rst:47 +msgid "" +"Valgrind is a tool to watch allocations, CPU usage and more and can be used " +"via: `valgrind --tool=callgrind ./jami -d`. This will make the application " +"very slow but can provide useful reports about memory allocation/performance" +" usage (**KCacheGrind** can be used to read reports)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:52 +msgid "Tests" +msgstr "" + +#: ../../../developer/debugging-tools.rst:54 +msgid "" +"Daemon has many tests and coverage enabled. If the daemon is built in static" +" (else private symbols will not be available), adding new tests can help to " +"reproduce bugs, solve bugs and avoid any regression. (cf. " +"`daemon/tests/unitTests``)" +msgstr "" + +#: ../../../developer/debugging-tools.rst:59 +msgid "Agent" +msgstr "" + +#: ../../../developer/debugging-tools.rst:61 +msgid "" +"Tests are only using one daemon to simulate both peers. So it can be " +"difficult to test in various environments. Another possibility is to write a" +" scenario and run an agent (documentation is available in the daemon's " +"repository)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:66 +msgid "LTTng" +msgstr "" + +#: ../../../developer/debugging-tools.rst:68 +msgid "" +"Finally, tracepoints can be created and analyzed. `daemon/tools/trace` " +"provide the documentation and some examples. The advantage of LTTng is that " +"it is quicker than logs, can be triggered by system events and can be used " +"with tracepoints already present in the kernel (so that it can be used with " +"tracepoints from network interfaces)." +msgstr "" + #: ../../../developer/feature-requests.md:1 msgid "Feature requests" msgstr "" @@ -2826,7 +2966,7 @@ msgstr "" #: ../../../developer/feature-requests.md:10 msgid "" "{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`" -" -> Contact #Jami (Adrien, Sébastien, etc.) / hard" +" -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress" msgstr "" #: ../../../developer/feature-requests.md:12 @@ -2854,161 +2994,164 @@ msgid "SIP:" msgstr "" #: ../../../developer/feature-requests.md:18 -msgid "re-check all SIP features / easy" +msgid "Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy" msgstr "" #: ../../../developer/feature-requests.md:19 -msgid "" -"Check why SIP unregister is not sent when leaving the application. -> " -"Contact #Jami / easy" -msgstr "" - -#: ../../../developer/feature-requests.md:20 msgid "Add unit-tests / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:21 +#: ../../../developer/feature-requests.md:20 msgid "" "Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard" msgstr "" -#: ../../../developer/feature-requests.md:23 +#: ../../../developer/feature-requests.md:22 msgid "" "Search in system contacts ({client-gnome-issue}`1191`, {client-gnome-" "issue}`829`, etc.) -> Contact #Jami (Adrien, Sébastien, Andreas, etc.) / " "easy but long" msgstr "" -#: ../../../developer/feature-requests.md:26 +#: ../../../developer/feature-requests.md:25 msgid "Crypto: (Contact #Jami - Adrien)" msgstr "" -#: ../../../developer/feature-requests.md:27 +#: ../../../developer/feature-requests.md:26 msgid "Update media RTP ciphers for ffmpeg / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:28 +#: ../../../developer/feature-requests.md:27 msgid "Support ECC (instead RSA) for Jami accounts / hard but short" msgstr "" -#: ../../../developer/feature-requests.md:29 +#: ../../../developer/feature-requests.md:28 msgid "Remove usages of SHA1 (ids + git) / hard" msgstr "" -#: ../../../developer/feature-requests.md:30 +#: ../../../developer/feature-requests.md:29 msgid "Media -> Contact #Jami (Adrien, Andreas, etc.)" msgstr "" -#: ../../../developer/feature-requests.md:31 +#: ../../../developer/feature-requests.md:30 msgid "Push to talk support (system wide) / easy" msgstr "" -#: ../../../developer/feature-requests.md:32 +#: ../../../developer/feature-requests.md:31 msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard" msgstr "" -#: ../../../developer/feature-requests.md:33 +#: ../../../developer/feature-requests.md:32 msgid "Fix the video recorder / probably hard" msgstr "" -#: ../../../developer/feature-requests.md:34 -msgid "Fix audio mixing (when sharing camera + a file) / probably hard" +#: ../../../developer/feature-requests.md:33 +msgid "" +"Fix audio mixing (when sharing camera + a file) / probably hard / In " +"progress" msgstr "" -#: ../../../developer/feature-requests.md:35 +#: ../../../developer/feature-requests.md:34 msgid "Investigate audio quality (contact #Jami, medium difficulty)" msgstr "" -#: ../../../developer/feature-requests.md:36 +#: ../../../developer/feature-requests.md:35 msgid "Plugins ideas: (Contact #Jami - Aline)" msgstr "" -#: ../../../developer/feature-requests.md:37 +#: ../../../developer/feature-requests.md:36 msgid "" "{client-qt-issue}`Live closed captions (multiple languages) <576>` (Whisper " -"OpenAI, Google Speech API or similar) / probably easy" +"OpenAI, Google Speech API or similar) / probably easy / In progress" msgstr "" -#: ../../../developer/feature-requests.md:39 +#: ../../../developer/feature-requests.md:38 msgid "Payment plug-in" msgstr "" -#: ../../../developer/feature-requests.md:41 +#: ../../../developer/feature-requests.md:40 msgid "Fix support for Bluetooth/headset / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:42 +#: ../../../developer/feature-requests.md:41 msgid "" -"Support OpenPush (Android + OpenDHT - <https://bubu1.eu/openpush/>) / easy " -"and started" +"Support OpenPush (Android + OpenDHT - <https://bubu1.eu/openpush/>) / easy /" +" In progress" msgstr "" -#: ../../../developer/feature-requests.md:44 +#: ../../../developer/feature-requests.md:43 msgid "" "Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a dedicated " "library (can be shared with OpenDHT) / medium difficulty & long term project" +" / In progress" msgstr "" -#: ../../../developer/feature-requests.md:47 +#: ../../../developer/feature-requests.md:46 msgid "Add new transports (e.g. QUIC?)" msgstr "" -#: ../../../developer/feature-requests.md:48 +#: ../../../developer/feature-requests.md:47 msgid "Add libtorrent support?" msgstr "" -#: ../../../developer/feature-requests.md:49 +#: ../../../developer/feature-requests.md:48 msgid "POC HTTP or SSH over this library" msgstr "" -#: ../../../developer/feature-requests.md:50 +#: ../../../developer/feature-requests.md:49 msgid "" "Public page/personal blog available through Jami (Contact #Jami / medium " "difficulty & long term project)" msgstr "" -#: ../../../developer/feature-requests.md:52 +#: ../../../developer/feature-requests.md:51 msgid "Qt:" msgstr "" -#: ../../../developer/feature-requests.md:53 +#: ../../../developer/feature-requests.md:52 msgid "" "Add support for location sharing (contact #Jami - medium difficulty) (In " "progress)" msgstr "" -#: ../../../developer/feature-requests.md:54 +#: ../../../developer/feature-requests.md:53 msgid "" "{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - " "easy)" msgstr "" -#: ../../../developer/feature-requests.md:55 +#: ../../../developer/feature-requests.md:54 msgid "" "{client-qt-issue}`Add support for searching messages in conversations<869>` " "(contact #Jami - easy)" msgstr "" -#: ../../../developer/feature-requests.md:56 +#: ../../../developer/feature-requests.md:55 msgid "" "Emoji as a native component to avoid depending on qt-webengine for this (not" " available on macOS) (e.g. https://github.com/jnodev/QMLemoji)" msgstr "" -#: ../../../developer/feature-requests.md:58 +#: ../../../developer/feature-requests.md:57 msgid "" "Categorized conversations (like favorites, groups, etc) (to discuss with " "#Jami)" msgstr "" -#: ../../../developer/feature-requests.md:59 +#: ../../../developer/feature-requests.md:58 msgid "Swarm:" msgstr "" -#: ../../../developer/feature-requests.md:60 +#: ../../../developer/feature-requests.md:59 msgid "Add emoji reactions to messages (Contact #Jami - easy)" msgstr "" +#: ../../../developer/feature-requests.md:60 +msgid "" +"{daemon-issue}`File-transfer small improvements<788>` (contact #Jami - " +"easy)" +msgstr "" + #: ../../../developer/feature-requests.md:61 msgid "jami-web:" msgstr "" @@ -3241,8 +3384,8 @@ msgstr "" msgid "{daemon-issue}`Remote control <349>`" msgstr "" -#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:374 -#: ../../../developer/swarm.md:554 +#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:404 +#: ../../../developer/swarm.md:584 msgid "File transfer" msgstr "" @@ -5237,7 +5380,7 @@ msgid "" "`ns.jami.net` and querying an Ethereum node." msgstr "" -#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:378 +#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:408 msgid "Protocol" msgstr "" @@ -7005,49 +7148,86 @@ msgid "" msgstr "" #: ../../../developer/swarm.md:264 -msgid "Merge conflicts management" +msgid "Preferences" msgstr "" #: ../../../developer/swarm.md:266 msgid "" +"Every conversation has attached preferences set by the user. Those " +"preferences are synced across user's devices. This can be the color of the " +"conversation, if the user wants to ignore notifications, file transfer size " +"limit, etc. For now, the recognized keys are:" +msgstr "" + +#: ../../../developer/swarm.md:268 +msgid "\"color\" - the color of the conversation" +msgstr "" + +#: ../../../developer/swarm.md:269 +msgid "" +"\"ignoreNotifications\" - to ignore notifications for new messages in this " +"conversation" +msgstr "" + +#: ../../../developer/swarm.md:270 +msgid "\"symbol\" - to define a default emoji." +msgstr "" + +#: ../../../developer/swarm.md:272 +msgid "" +"Those preferences are stored in a packet MapStringString, stored in " +"`accountDir/conversation_data/conversationId/preferences` and only sent " +"across devices of the same user via SyncMsg." +msgstr "" + +#: ../../../developer/swarm.md:274 +msgid "The API to interact with the preferences are:" +msgstr "" + +#: ../../../developer/swarm.md:294 +msgid "Merge conflicts management" +msgstr "" + +#: ../../../developer/swarm.md:296 +msgid "" "Because two admins can change the description at the same time, a merge " "conflict can occur on `profile.vcf`. In this case, the commit with the " "higher hash (eg ffffff > 000000) will be chosen." msgstr "" -#: ../../../developer/swarm.md:268 +#: ../../../developer/swarm.md:298 msgid "APIs" msgstr "" -#: ../../../developer/swarm.md:270 +#: ../../../developer/swarm.md:300 msgid "The user got 2 methods to get and set conversation's metadatas:" msgstr "" -#: ../../../developer/swarm.md:296 +#: ../../../developer/swarm.md:326 msgid "where `infos` is a `map<str, str>` with the following keys:" msgstr "" -#: ../../../developer/swarm.md:298 +#: ../../../developer/swarm.md:328 msgid "mode: READ-ONLY" msgstr "" -#: ../../../developer/swarm.md:299 +#: ../../../developer/swarm.md:329 msgid "title" msgstr "" -#: ../../../developer/swarm.md:300 +#: ../../../developer/swarm.md:330 msgid "description" msgstr "" -#: ../../../developer/swarm.md:301 +#: ../../../developer/swarm.md:331 msgid "avatar" msgstr "" -#: ../../../developer/swarm.md:303 +#: ../../../developer/swarm.md:333 msgid "Re-import an account (link/export)" msgstr "" -#: ../../../developer/swarm.md:305 +#: ../../../developer/swarm.md:335 msgid "" "The archive MUST contain conversationId to be able to retrieve conversations" " on new commits after a re-import (because there is no invite at this " @@ -7055,123 +7235,123 @@ msgid "" "possibilities:" msgstr "" -#: ../../../developer/swarm.md:307 +#: ../../../developer/swarm.md:337 msgid "" "The conversationId is there, in this case, the daemon is able to re-clone " "this conversation" msgstr "" -#: ../../../developer/swarm.md:308 +#: ../../../developer/swarm.md:338 msgid "" "The conversationId is missing, so the daemon asks (via a message " "`{{\"application/invite\", conversationId}}`) a new invite that the user " "needs to (re)accepts" msgstr "" -#: ../../../developer/swarm.md:310 +#: ../../../developer/swarm.md:340 msgid "" "Note, a conversation can only be retrieved if a contact or another device is" " there, else it will be lost. There is no magic." msgstr "" -#: ../../../developer/swarm.md:312 +#: ../../../developer/swarm.md:342 msgid "Other mime types" msgstr "" -#: ../../../developer/swarm.md:314 +#: ../../../developer/swarm.md:344 msgid "" "`application/call-history+json` with a JSON containing the `id` and the " "`duration` of the call" msgstr "" -#: ../../../developer/swarm.md:315 +#: ../../../developer/swarm.md:345 msgid "" "`application/data-transfer+json` with a JSON containing the `tid` of the " "file, the `sha3sum` and `displayName`" msgstr "" -#: ../../../developer/swarm.md:317 +#: ../../../developer/swarm.md:347 msgid "Used protocols" msgstr "" -#: ../../../developer/swarm.md:319 +#: ../../../developer/swarm.md:349 msgid "Git" msgstr "" -#: ../../../developer/swarm.md:321 +#: ../../../developer/swarm.md:351 msgid "Why this choice" msgstr "" -#: ../../../developer/swarm.md:323 +#: ../../../developer/swarm.md:353 msgid "" "Each conversation will be a git repository. This choice is motivated by:" msgstr "" -#: ../../../developer/swarm.md:325 +#: ../../../developer/swarm.md:355 msgid "" "We need to sync and order messages. The Merkle Tree is the perfect structure" " to do that and can be linearized by merging branches. Moreover, because " "it's massively used by Git, it's easy to sync between devices." msgstr "" -#: ../../../developer/swarm.md:326 +#: ../../../developer/swarm.md:356 msgid "Distributed by nature. Massively used. Lots of backends and pluggable." msgstr "" -#: ../../../developer/swarm.md:327 +#: ../../../developer/swarm.md:357 msgid "Can verify commits via hooks and massively used crypto" msgstr "" -#: ../../../developer/swarm.md:328 +#: ../../../developer/swarm.md:358 msgid "Can be stored in a database if necessary" msgstr "" -#: ../../../developer/swarm.md:329 +#: ../../../developer/swarm.md:359 msgid "Conflicts are avoided by using commit messages, not files." msgstr "" -#: ../../../developer/swarm.md:331 +#: ../../../developer/swarm.md:361 msgid "What we have to validate" msgstr "" -#: ../../../developer/swarm.md:333 +#: ../../../developer/swarm.md:363 msgid "Performance? `git.lock` can be low" msgstr "" -#: ../../../developer/swarm.md:334 +#: ../../../developer/swarm.md:364 msgid "Hooks in libgit2" msgstr "" -#: ../../../developer/swarm.md:335 +#: ../../../developer/swarm.md:365 msgid "Multiple pulls at the same time?" msgstr "" -#: ../../../developer/swarm.md:337 +#: ../../../developer/swarm.md:367 msgid "Limits" msgstr "" -#: ../../../developer/swarm.md:339 +#: ../../../developer/swarm.md:369 msgid "" "History can't be deleted. To delete a conversation, the device has to leave " "the conversation and create another one." msgstr "" -#: ../../../developer/swarm.md:341 +#: ../../../developer/swarm.md:371 msgid "" "However, non-permanent messages (like messages readable only for some " "minutes) can be sent via a special message via the DRT (like Typing or Read" " notifications)." msgstr "" -#: ../../../developer/swarm.md:343 +#: ../../../developer/swarm.md:373 msgid "Moreover editing messages will be possible! (`commit --fixup`)" msgstr "" -#: ../../../developer/swarm.md:345 +#: ../../../developer/swarm.md:375 msgid "Structure" msgstr "" -#: ../../../developer/swarm.md:376 +#: ../../../developer/swarm.md:406 msgid "" "Swarm massively changes file transfer. Now, all the history is syncing, " "allowing all devices in the conversation to easily retrieve old files. This " @@ -7183,19 +7363,19 @@ msgid "" "allowing to retrieve files even if the sender is not there." msgstr "" -#: ../../../developer/swarm.md:380 +#: ../../../developer/swarm.md:410 msgid "" "The sender adds a new commit in the conversation with the following format:" msgstr "" -#: ../../../developer/swarm.md:390 +#: ../../../developer/swarm.md:420 msgid "" "and creates a link in " "`${data_path}/conversation_data/${conversation_id}/${file_id}` where " "`file_id=${commitid}_${value[\"tid\"]}.${extension}`" msgstr "" -#: ../../../developer/swarm.md:392 +#: ../../../developer/swarm.md:422 msgid "" "Then, the receiver can now download the files by contacting the devices " "hosting the file by opening a channel with `name=\"data-transfer://\" + " @@ -7204,7 +7384,7 @@ msgid "" "`${data_path}/conversation_data/${conversation_id}/waiting`" msgstr "" -#: ../../../developer/swarm.md:394 +#: ../../../developer/swarm.md:424 msgid "" "The device receiving the connection will accepts the channel by verifying if" " the file can be sent (if sha3sum is correct and if file exists). The " @@ -7214,172 +7394,172 @@ msgid "" " data." msgstr "" -#: ../../../developer/swarm.md:396 +#: ../../../developer/swarm.md:426 msgid "" "When the transfer is finished or the channel closed, the sha3sum is verified" " to validate that the file is correct (else it's deleted). If valid, the " "file will be removed from the waiting." msgstr "" -#: ../../../developer/swarm.md:398 +#: ../../../developer/swarm.md:428 msgid "" "In case of failure, when a device of the conversation will be back online, " "we will ask for all waiting files by the same way." msgstr "" -#: ../../../developer/swarm.md:400 +#: ../../../developer/swarm.md:430 msgid "Call in swarm" msgstr "" -#: ../../../developer/swarm.md:402 +#: ../../../developer/swarm.md:432 msgid "TODO: nameserver part" msgstr "" -#: ../../../developer/swarm.md:404 +#: ../../../developer/swarm.md:434 msgid "Idea" msgstr "" -#: ../../../developer/swarm.md:406 +#: ../../../developer/swarm.md:436 msgid "" "A swarm conversation can have multiple rendez-vous. A rendez-vous is defined" " by the following uri:" msgstr "" -#: ../../../developer/swarm.md:408 +#: ../../../developer/swarm.md:438 msgid "" "\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId " "describes the host." msgstr "" -#: ../../../developer/swarm.md:410 +#: ../../../developer/swarm.md:440 msgid "The host can be determined via two ways:" msgstr "" -#: ../../../developer/swarm.md:412 +#: ../../../developer/swarm.md:442 msgid "" "In the swarm metadatas. Where it's stored like the title/desc/avatar of the " "room" msgstr "" -#: ../../../developer/swarm.md:413 +#: ../../../developer/swarm.md:443 msgid "Or the initial caller." msgstr "" -#: ../../../developer/swarm.md:415 +#: ../../../developer/swarm.md:445 msgid "" "When starting a call, the host will add a new commit to the swarm, with the " "URI to join (accountUri/deviceId/conversationId/confId). This will be valid " "till the end of the call (announced by a commit with the duration to show)" msgstr "" -#: ../../../developer/swarm.md:418 +#: ../../../developer/swarm.md:448 msgid "" "So every part will receive the infos that a call has started and will be " "able to join it by calling it." msgstr "" -#: ../../../developer/swarm.md:420 +#: ../../../developer/swarm.md:450 msgid "Attacks?" msgstr "" -#: ../../../developer/swarm.md:422 +#: ../../../developer/swarm.md:452 msgid "Avoid git bombs" msgstr "" -#: ../../../developer/swarm.md:424 +#: ../../../developer/swarm.md:454 msgid "Notes" msgstr "" -#: ../../../developer/swarm.md:426 +#: ../../../developer/swarm.md:456 msgid "" "The timestamp of a commit can be trusted because it's editable. Only the " "user's timestamp can be trusted." msgstr "" -#: ../../../developer/swarm.md:428 +#: ../../../developer/swarm.md:458 msgid "TLS" msgstr "" -#: ../../../developer/swarm.md:430 +#: ../../../developer/swarm.md:460 msgid "" "Git operations, control messages, files, and other things will use a p2p TLS" " v1.3 link with only ciphers which guaranty PFS. So each key is renegotiated" " for each new connexion." msgstr "" -#: ../../../developer/swarm.md:432 +#: ../../../developer/swarm.md:462 msgid "DHT (udp)" msgstr "" -#: ../../../developer/swarm.md:434 +#: ../../../developer/swarm.md:464 msgid "" "Used to send messages for mobiles (to trigger push notifications) and to " "initiate TCP connexions." msgstr "" -#: ../../../developer/swarm.md:436 +#: ../../../developer/swarm.md:466 msgid "DRT (the name will change)" msgstr "" -#: ../../../developer/swarm.md:438 +#: ../../../developer/swarm.md:468 msgid "" "The DRT is a new concept used in swarm to maintain p2p connections. Indeed, " "group members define a graph of nodes (identified by a hash) en must be " "connected." msgstr "" -#: ../../../developer/swarm.md:440 +#: ../../../developer/swarm.md:470 msgid "So we need a structure that:" msgstr "" -#: ../../../developer/swarm.md:442 +#: ../../../developer/swarm.md:472 msgid "Maximize the connected nodes at every time" msgstr "" -#: ../../../developer/swarm.md:443 +#: ../../../developer/swarm.md:473 msgid "Minimize the time for message transmission" msgstr "" -#: ../../../developer/swarm.md:444 +#: ../../../developer/swarm.md:474 msgid "Minimize links between peers" msgstr "" -#: ../../../developer/swarm.md:445 +#: ../../../developer/swarm.md:475 msgid "Needs low calculation" msgstr "" -#: ../../../developer/swarm.md:447 +#: ../../../developer/swarm.md:477 msgid "Several solutions exist:" msgstr "" -#: ../../../developer/swarm.md:449 +#: ../../../developer/swarm.md:479 msgid "" "Each node has a connection to the next node. So we only need $N$ " "connections, but it's not effective to transmit a message, because the " "message will go through all peers, one by one." msgstr "" -#: ../../../developer/swarm.md:450 +#: ../../../developer/swarm.md:480 msgid "" "Each node is connected to all other nodes $N\\timesN$ connections. Effective" " to transmit, but need more resources **WILL BE CHOSEN FOR THE FIRST " "VERSION**" msgstr "" -#: ../../../developer/swarm.md:451 +#: ../../../developer/swarm.md:481 msgid "" "[*Maximizing the Coverage of Roadmap Graph for Optimal Motion " "Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). But " "need calculations" msgstr "" -#: ../../../developer/swarm.md:452 +#: ../../../developer/swarm.md:482 msgid "" "Use the algorithm of the DHT for the routing table. The 4 points are " "basically solved and already used by Jami in UDP." msgstr "" -#: ../../../developer/swarm.md:454 +#: ../../../developer/swarm.md:484 msgid "" "Note: to optimize the socket numbers, a socket will be given by a " "**ConnectionManager** to get multiplexed sockets with a given hash. This " @@ -7387,35 +7567,35 @@ msgid "" "one socket will be used." msgstr "" -#: ../../../developer/swarm.md:456 +#: ../../../developer/swarm.md:486 msgid "Network activity" msgstr "" -#: ../../../developer/swarm.md:458 +#: ../../../developer/swarm.md:488 msgid "Process to invite someone" msgstr "" -#: ../../../developer/swarm.md:460 +#: ../../../developer/swarm.md:490 msgid "Alice wants to invite Bob:" msgstr "" -#: ../../../developer/swarm.md:462 +#: ../../../developer/swarm.md:492 msgid "Alice adds bob to a conversation" msgstr "" -#: ../../../developer/swarm.md:463 +#: ../../../developer/swarm.md:493 msgid "" "Alice generates an invite: { \"application/invite+json\" : { " "\"conversationId\": \"$id\", \"members\": [{...}] }}" msgstr "" -#: ../../../developer/swarm.md:467 +#: ../../../developer/swarm.md:497 msgid "" "Two possibilities for sending the message a. If not connected, via the DHT" " b. Else, Alice sends on the SIP channel" msgstr "" -#: ../../../developer/swarm.md:470 +#: ../../../developer/swarm.md:500 msgid "" "Two possibilities for Bob a. Receives the invite, a signal is emitted for " "the client b. Not connected, so will never receive the request cause Alice " @@ -7423,23 +7603,23 @@ msgid "" "regenerate a new invite via a new message (cf. next scenario)" msgstr "" -#: ../../../developer/swarm.md:474 +#: ../../../developer/swarm.md:504 msgid "Process to send a message to someone" msgstr "" -#: ../../../developer/swarm.md:476 +#: ../../../developer/swarm.md:506 msgid "Alice wants to send a message to Bob:" msgstr "" -#: ../../../developer/swarm.md:478 +#: ../../../developer/swarm.md:508 msgid "Alice adds a message in the repo, giving an ID" msgstr "" -#: ../../../developer/swarm.md:479 +#: ../../../developer/swarm.md:509 msgid "Alice gets a message received (from herself) if successful" msgstr "" -#: ../../../developer/swarm.md:480 +#: ../../../developer/swarm.md:510 msgid "" "Two possibilities, alice and bob are connected, or not. In both case a " "message is crafted: { \"application/im-gitmessage-id\" : " @@ -7448,7 +7628,7 @@ msgid "" "Alice sends on the SIP channel" msgstr "" -#: ../../../developer/swarm.md:483 +#: ../../../developer/swarm.md:513 msgid "" "Four possibilities for Bob: a. Bob is not connected to Alice, so if he " "trusts Alice, ask for a new connection and go to b. b. If connected, fetch " @@ -7459,28 +7639,28 @@ msgid "" "message but will try to sync when the next connection will occur" msgstr "" -#: ../../../developer/swarm.md:492 +#: ../../../developer/swarm.md:522 msgid "" msgstr "" -#: ../../../developer/swarm.md:492 +#: ../../../developer/swarm.md:522 msgid "Diagram: swarm chat classes" msgstr "" -#: ../../../developer/swarm.md:495 +#: ../../../developer/swarm.md:525 msgid "**!! OLD DRAFT !!**" msgstr "" -#: ../../../developer/swarm.md:497 +#: ../../../developer/swarm.md:527 msgid "" "Note: Following notes are not organized yet. Just some line of thoughts." msgstr "" -#: ../../../developer/swarm.md:499 +#: ../../../developer/swarm.md:529 msgid "Crypto improvements." msgstr "" -#: ../../../developer/swarm.md:501 +#: ../../../developer/swarm.md:531 msgid "" "For a serious group chat feature, we also need serious crypto. With the " "current design, if a certificate is stolen as the previous DHT values of a " @@ -7488,91 +7668,91 @@ msgid "" "something like **Double ratchet**." msgstr "" -#: ../../../developer/swarm.md:503 +#: ../../../developer/swarm.md:533 msgid "" "Note: a lib might exist to implement group conversations. TODO, investigate." msgstr "" -#: ../../../developer/swarm.md:505 +#: ../../../developer/swarm.md:535 msgid "Needs ECC support in OpenDHT" msgstr "" -#: ../../../developer/swarm.md:509 +#: ../../../developer/swarm.md:539 msgid "Add Roles?" msgstr "" -#: ../../../developer/swarm.md:511 +#: ../../../developer/swarm.md:541 msgid "There is two major use case for group chats:" msgstr "" -#: ../../../developer/swarm.md:513 +#: ../../../developer/swarm.md:543 msgid "" "Something like a Mattermost in a company, with private channels, and some " "roles (admin/spectator/bot/etc) or for educations (where only a few are " "active)." msgstr "" -#: ../../../developer/swarm.md:514 +#: ../../../developer/swarm.md:544 msgid "Horizontal conversations like a conversation between friends." msgstr "" -#: ../../../developer/swarm.md:516 +#: ../../../developer/swarm.md:546 msgid "Ring will be for which one?" msgstr "" -#: ../../../developer/swarm.md:518 +#: ../../../developer/swarm.md:548 msgid "Implementation idea" msgstr "" -#: ../../../developer/swarm.md:520 +#: ../../../developer/swarm.md:550 msgid "" "A certificate for a group that sign user with a flag for a role. Adding or " "revoking can also be done." msgstr "" -#: ../../../developer/swarm.md:522 +#: ../../../developer/swarm.md:552 msgid "Join a conversation" msgstr "" -#: ../../../developer/swarm.md:524 +#: ../../../developer/swarm.md:554 msgid "Only via a direct invite" msgstr "" -#: ../../../developer/swarm.md:525 +#: ../../../developer/swarm.md:555 msgid "Via a link/QR Code/whatever" msgstr "" -#: ../../../developer/swarm.md:526 +#: ../../../developer/swarm.md:556 msgid "Via a room name? (a **hash** on the DHT)" msgstr "" -#: ../../../developer/swarm.md:528 +#: ../../../developer/swarm.md:558 msgid "What we need" msgstr "" -#: ../../../developer/swarm.md:530 +#: ../../../developer/swarm.md:560 msgid "" "Confidentiality: members outside of the group chat should not be able to " "read messages in the group" msgstr "" -#: ../../../developer/swarm.md:531 +#: ../../../developer/swarm.md:561 msgid "" "Forward secrecy: if any key from the group is compromised, previous messages" " should remain confidential (as much as possible)" msgstr "" -#: ../../../developer/swarm.md:533 +#: ../../../developer/swarm.md:563 msgid "Message ordering: There is a need to have messages in the right order" msgstr "" -#: ../../../developer/swarm.md:534 +#: ../../../developer/swarm.md:564 msgid "" "Synchronization: There is also a need to be sure to have all messages at " "soon as possible." msgstr "" -#: ../../../developer/swarm.md:535 +#: ../../../developer/swarm.md:565 msgid "" "Persistence: Actually, a message on the DHT lives only 10 minutes. Because " "it's the best timing calculated for this kind of DHT. To persist data, the " @@ -7583,53 +7763,53 @@ msgid "" "will still do 64 requests but limit the max redundancy to 8 nodes." msgstr "" -#: ../../../developer/swarm.md:537 +#: ../../../developer/swarm.md:567 msgid "Other distributed ways" msgstr "" -#: ../../../developer/swarm.md:539 +#: ../../../developer/swarm.md:569 msgid "IPFS: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:540 +#: ../../../developer/swarm.md:570 msgid "BitMessage: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:541 +#: ../../../developer/swarm.md:571 msgid "Maidsafe: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:543 +#: ../../../developer/swarm.md:573 msgid "Based on current work we have" msgstr "" -#: ../../../developer/swarm.md:545 +#: ../../../developer/swarm.md:575 msgid "" "Group chat can be based on the same work we already have for multi-devices " "(but here, with a group certificate). Problems to solve:" msgstr "" -#: ../../../developer/swarm.md:547 +#: ../../../developer/swarm.md:577 msgid "" "History sync. This needs to move the database from the client into the " "daemon." msgstr "" -#: ../../../developer/swarm.md:548 +#: ../../../developer/swarm.md:578 msgid "" "If nobody is connected, the synchronization can't be done, and the person " "will never see the conversation" msgstr "" -#: ../../../developer/swarm.md:550 +#: ../../../developer/swarm.md:580 msgid "Another dedicated DHT" msgstr "" -#: ../../../developer/swarm.md:552 +#: ../../../developer/swarm.md:582 msgid "Like a DHT with a superuser. (Not convinced)" msgstr "" -#: ../../../developer/swarm.md:556 +#: ../../../developer/swarm.md:586 msgid "" "Currently, the file transfer algorithm is based on a TURN connection (See " "{doc}`file-transfer`). In the case of a big group, this will be bad. We " @@ -7637,21 +7817,21 @@ msgid "" "transfer." msgstr "" -#: ../../../developer/swarm.md:558 +#: ../../../developer/swarm.md:588 msgid "" "Other problem: currently there is no implementation for TCP support for ICE " "in PJSIP. This is mandatory for this point (in pjsip or homemade)" msgstr "" -#: ../../../developer/swarm.md:560 +#: ../../../developer/swarm.md:590 msgid "Resources" msgstr "" -#: ../../../developer/swarm.md:562 +#: ../../../developer/swarm.md:592 msgid "https://eprint.iacr.org/2017/666.pdf" msgstr "" -#: ../../../developer/swarm.md:563 +#: ../../../developer/swarm.md:593 msgid "" "Robust distributed synchronization of networked linear systems with " "intermittent information (Sean Phillips and Ricardo G.Sanfelice)" diff --git a/locales/fa/LC_MESSAGES/index.po b/locales/fa/LC_MESSAGES/index.po index b71523c5d1f8cd9d6199a2b30665d7d85325b9af..f13db3a66eb73f4bc8c541a26cda1733e6f5a8aa 100644 --- a/locales/fa/LC_MESSAGES/index.po +++ b/locales/fa/LC_MESSAGES/index.po @@ -1,6 +1,6 @@ -# SOME DESCRIPTIVE TITLE. +# LANGUAGE translation of FILENAME.pot # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors -# This file is distributed under the same license as the Jami package. +# This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Jami\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 12:03+0000\n" +"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:41+0000\n" "Last-Translator: Mohammad Amin Sameti <mamins1376@gmail.com>, 2022\n" "Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n" diff --git a/locales/fa/LC_MESSAGES/sphinx.po b/locales/fa/LC_MESSAGES/sphinx.po index 1bbf6fb74a704a291346bc15f8df32ab8e0251e2..45af78cf5543fbd74e991d7cf8d2c275ab338f07 100644 --- a/locales/fa/LC_MESSAGES/sphinx.po +++ b/locales/fa/LC_MESSAGES/sphinx.po @@ -1,14 +1,14 @@ -# SOME DESCRIPTIVE TITLE. +# LANGUAGE translation of FILENAME.pot # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors -# This file is distributed under the same license as the Jami package. +# This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Jami\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 12:03+0000\n" +"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:53+0000\n" "Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n" "MIME-Version: 1.0\n" diff --git a/locales/fa/LC_MESSAGES/user.po b/locales/fa/LC_MESSAGES/user.po index c4055ff04a30371e6e5e4a91e3171e7901ce321a..077841dfd87e388d1f51f781acea8e8f56a42519 100644 --- a/locales/fa/LC_MESSAGES/user.po +++ b/locales/fa/LC_MESSAGES/user.po @@ -2,10 +2,9 @@ # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors # This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# +# # Translators: # . . <ovari123@zoho.com>, 2022 -# Mohammad Amin Sameti <mamins1376@gmail.com>, 2022 # Mrehdi Ghayour, 2022 # Reza Ghasemi, 2022 # Amir Taherizadeh, 2022 @@ -14,13 +13,13 @@ # ali ask <aliraadlar@gmail.com>, 2022 # Hamid reza Zaefarani, 2022 # Danial Behzadi <dani.behzi@ubuntu.com>, 2022 -# +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: Jami\n" "Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" -"POT-Creation-Date: 2022-11-01 02:52+0000\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:45+0000\n" "Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>, 2022\n" "Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n" @@ -47,13 +46,18 @@ msgid "E : experimental" msgstr "" #: ../../../user/all-features-by-client.md:8 -msgid "X : not available yet" +msgid "X : not yet available" msgstr "" #: ../../../user/all-features-by-client.md:9 msgid "N/A : not applicable for this client" msgstr "" +#: ../../../user/all-features-by-client.md:10 +msgid "Desktop : Apple macOS, GNU/Linux, Microsoft Windows operating systems" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 #: ../../../user/all-features-by-client.md:11 msgid "Text messaging" msgstr "پیغامدهی متنی" @@ -63,11 +67,7 @@ msgid "**Client**" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Linux" -msgstr "" - -#: ../../../user/all-features-by-client.md:0 -msgid "Windows" +msgid "Desktop" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -82,14 +82,6 @@ msgstr "" msgid "iOS" msgstr "" -#: ../../../user/all-features-by-client.md:0 -msgid "macOS" -msgstr "" - -#: ../../../user/all-features-by-client.md:0 -msgid "Text Messaging" -msgstr "" - #: ../../../user/all-features-by-client.md:0 msgid "✓" msgstr "" @@ -106,16 +98,12 @@ msgstr "" msgid "X" msgstr "" -#: ../../../user/all-features-by-client.md:0 -msgid "Clear History" -msgstr "پاک کردن تاریخچه" - #: ../../../user/all-features-by-client.md:0 msgid "Chat history shared across devices" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Send Files" +msgid "Send files" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -134,16 +122,52 @@ msgstr "" msgid "Read status" msgstr "" -#: ../../../user/all-features-by-client.md:25 +#: ../../../user/all-features-by-client.md:0 +msgid "Reply to" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Message edition" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Emoji reaction" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Update conversation's profile" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Add/Kick members" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Conversation's preferences" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Search messages" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Share location" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Media gallery" +msgstr "" + +#: ../../../user/all-features-by-client.md:33 msgid "Calling" msgstr "در Øال تماس" #: ../../../user/all-features-by-client.md:0 -msgid "Audio Calling" +msgid "Audio calling" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Video Calling" +msgid "Video calling" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -190,6 +214,10 @@ msgstr "" msgid "Window sharing" msgstr "" +#: ../../../user/all-features-by-client.md:0 +msgid "✓(3)" +msgstr "" + #: ../../../user/all-features-by-client.md:0 msgid "Media sharing" msgstr "" @@ -211,7 +239,7 @@ msgid "Texting while on call" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Remote recording notif" +msgid "Remote recording notification" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -219,7 +247,7 @@ msgid "Rendez-vous mode" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Conference Layout" +msgid "Conference layout" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -231,31 +259,35 @@ msgid "Videosplit" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Audio Processor \\*\\*" +msgid "Audio processor \\*\\*" msgstr "" #: ../../../user/all-features-by-client.md:0 msgid "✓(2)" msgstr "" -#: ../../../user/all-features-by-client.md:54 +#: ../../../user/all-features-by-client.md:0 +msgid "Voice activity" +msgstr "" + +#: ../../../user/all-features-by-client.md:63 msgid "" -"\\* This enables 4k video calling support \\*\\* cf. {ref}`user/faq:How " -"can I configure the audio processor?` in the FAQ" +"\\* This enables 4k video calling support \\*\\* cf. {ref}`user/faq:How can " +"I configure the audio processor?` in the FAQ" msgstr "" -#: ../../../user/all-features-by-client.md:58 +#: ../../../user/all-features-by-client.md:67 msgid "" -"(1) only on X (not Wayland) (2) Some features enabled by default and not " -"configurable" +"(1) only on X (not Wayland) (2) Some features enabled by default and not " +"configurable (3) only on X and not on Microsoft Windows" msgstr "" -#: ../../../user/all-features-by-client.md:61 +#: ../../../user/all-features-by-client.md:71 msgid "Account settings" msgstr "تنظیمات Øساب کاربری" #: ../../../user/all-features-by-client.md:0 -msgid "Profile avatar" +msgid "Profile picture" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -275,11 +307,11 @@ msgid "Register username" msgstr "ثبت نام کاربری" #: ../../../user/all-features-by-client.md:0 -msgid "Delete Contacts" +msgid "Delete contacts" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Block Contacts" +msgid "Block contacts" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -294,20 +326,20 @@ msgstr "" msgid "Auto answer" msgstr "پاسخ خودکار" -#: ../../../user/all-features-by-client.md:77 +#: ../../../user/all-features-by-client.md:87 msgid "Other features" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Scan QR Code" -msgstr "اسکن کد QR" +msgid "Scan QR code" +msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Display QR Code" +msgid "Display QR code" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Ban contact" +msgid "Block contact" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -343,23 +375,29 @@ msgid "Dark theme support" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "JAMS support" +msgid "JAMS\\*\\* support" msgstr "" #: ../../../user/all-features-by-client.md:0 msgid "Plugin support" msgstr "" -#: ../../../user/all-features-by-client.md:94 -msgid "\\* According to <https://explore.transifex.com/savoirfairelinux/jami/>" +#: ../../../user/all-features-by-client.md:0 +msgid "Application translation" +msgstr "" + +#: ../../../user/all-features-by-client.md:105 +msgid "" +"\\* According to <https://explore.transifex.com/savoirfairelinux/jami/> " +"\\*\\* JAMS (Jami Account Management Server) <https://jami.biz/>" msgstr "" -#: ../../../user/all-features-by-client.md:96 +#: ../../../user/all-features-by-client.md:108 msgid "Advanced settings" msgstr "تنظیمات پیشرÙته" #: ../../../user/all-features-by-client.md:0 -msgid "DHT Proxy support" +msgid "DHT proxy support" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -2331,3 +2369,120 @@ msgid "" "This will start a geth daemon with an attached console which is now syncing " "with Jami's network." msgstr "" + +#: ../../../user/lan-only.rst:2 +msgid "Use Jami on a LAN" +msgstr "" + +#: ../../../user/lan-only.rst:4 +msgid "" +"Due the distributed nature of Jami, it is possible to use it over a LAN, " +"without any Internet connection. This allows you to continue to communicate " +"with other people in the company/building/country without global Internet " +"access. However, some services are external so in this document we will " +"explain some tweaks you may need." +msgstr "" + +#: ../../../user/lan-only.rst:16 +msgid "Boostraping" +msgstr "" + +#: ../../../user/lan-only.rst:19 +msgid "What is a bootstrap?" +msgstr "" + +#: ../../../user/lan-only.rst:21 +msgid "" +"Jami uses the DHT technology to find other users. So, all the users you want" +" to contact must be reachable on the same DHT network (e.g. if the Internet " +"is split between two buildings, users in the first buildings will not be " +"able to reach the second building). To enter a DHT network, one must be able" +" to reach at least one other node. This node is called bootstrap, it is the " +"entry point of the network. By default, **bootstrap.jami.net** is " +"configured, but any node in the public DHT can be a bootstrap (it is a " +"classic node, generally always online)." +msgstr "" + +#: ../../../user/lan-only.rst:29 +msgid "" +"So, if the Internet is cut, you need another bootstrap to create a network. " +"On a LAN, there is two ways to configure it in Jami:" +msgstr "" + +#: ../../../user/lan-only.rst:33 +msgid "Bootstrap settings" +msgstr "" + +#: ../../../user/lan-only.rst:35 +msgid "" +"In the advanced account settings, the user can configure multiple " +"bootstraps. **bootstrap.jami.net** is usually the default, " +"**bootstrap.jami.net;your.bootstrap.tld** will be valid. The IP:port of " +"another DHT node can be specified as a bootstrap." +msgstr "" + +#: ../../../user/lan-only.rst:40 +msgid "Local Peer Discovery" +msgstr "" + +#: ../../../user/lan-only.rst:42 +msgid "" +"Another way is to enable peer discovery. This will announce the bootstrap on" +" the network by broadcasting UDP packets (like a printer). So, UDP broadcast" +" must be supported by the network in order to work. However, this method " +"does not need to specify an ip:port in the settings, so it can be preferred." +msgstr "" + +#: ../../../user/lan-only.rst:48 +msgid "TURN" +msgstr "" + +#: ../../../user/lan-only.rst:50 +msgid "" +"Another external service is the TURN server, used as a fallback for " +"connections if the NAT block all possible connections. Generally it is " +"**turn.jami.net** but can be any TURN (we use coturn, cf. " +":doc:`/developer/setting-up-your-own-turn-server`)" +msgstr "" + +#: ../../../user/lan-only.rst:54 +msgid "" +"On a LAN, it may be ignored (because there will be no NAT), but disabling it" +" should not be necessary (because it will not be used if unreachable)." +msgstr "" + +#: ../../../user/lan-only.rst:58 +msgid "On mobile (DHT Proxy)" +msgstr "" + +#: ../../../user/lan-only.rst:60 +msgid "" +"A DHT Proxy is used with mobile devices to save battery by avoiding " +"synchronization. It is generally **dhtproxy.jami.net** but can be any DHT " +"node with the REST API enabled. However, if the DHT proxy is using push " +"notifications it will depend on another external service (Firebase or APN or" +" a Unified Push instance). In this case, only the third one can be self-" +"hosted." +msgstr "" + +#: ../../../user/lan-only.rst:65 +msgid "" +"On iOS it is basically not possible to work without push, as the OS from " +"Apple will kill any application as soon as it is in background. So you can " +"not disable the usage of push notifications. However, for Android, you may " +"want to self-host your proxy (with or without unified push support), or you " +"can disable the DHT Proxy and enable \"Run in background\" in order to use " +"your local DHT." +msgstr "" + +#: ../../../user/lan-only.rst:72 +msgid "NameServer" +msgstr "" + +#: ../../../user/lan-only.rst:74 +msgid "" +"Finally, the last external service you may need is a NameServer. This is " +"used to translate addresses (the 40-characters fingerprint ID) to usernames." +" You may not have access to **ns.jami.net**, but you can self-host one " +"(:doc:`/developer/name-server-protocol`) or only use IDs." +msgstr "" diff --git a/locales/fr/LC_MESSAGES/developer.po b/locales/fr/LC_MESSAGES/developer.po index f8fdeb0f04167389015c3886e3666c616d37e794..f365109ccc3ce43e7cc3101af4688866fe84bee2 100644 --- a/locales/fr/LC_MESSAGES/developer.po +++ b/locales/fr/LC_MESSAGES/developer.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Jami\n" "Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" -"POT-Creation-Date: 2022-11-08 03:52+0000\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:48+0000\n" "Last-Translator: Cyrille Béraud <cyrille.beraud@savoirfairelinux.com>, 2022\n" "Language-Team: French (https://www.transifex.com/savoirfairelinux/teams/49466/fr/)\n" @@ -1255,7 +1255,7 @@ msgstr "" #: ../../../developer/conference-protocol.md:38 #: ../../../developer/conference-protocol.md:95 -#: ../../../developer/swarm.md:490 +#: ../../../developer/swarm.md:520 msgid "Implementation" msgstr "" @@ -1709,7 +1709,7 @@ msgstr "" msgid "ChannelSockets are used by the client to interact with the other peer." msgstr "" -#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:507 +#: ../../../developer/connection-manager.md:67 ../../../developer/swarm.md:537 msgid "Usage" msgstr "" @@ -1845,8 +1845,8 @@ msgid "" "As from September of 2020, Jami team has added plugins as a call feature for" " GNU/Linux, Windows, and Android users. This meaning that now you can " "personalize your call and chat experience by using one of our available " -"plugins. But that is not all, you can also transform your awesome ideas " -"into a brand new plugin!" +"plugins. But that is not all, you can also transform your awesome ideas into" +" a brand new plugin!" msgstr "" #: ../../../developer/creating-jami-plugins.md:11 @@ -2139,7 +2139,7 @@ msgid "" "`defaultValue`, and `scope`. The specific ones are linked to the type of the" " preference constructed. For `EDITTEXT` preferences there is no other " "property to be set. For `PATH` preferences we have: `mimeType`. For `LIST` " -"preferences we have: `entries` and `entryValues`. A `LIST` preference must " +"preferences we have: `entries` and `entryValues`. A `LIST` preference must " "have a list of possible values to be used and a list of 'names' for these " "values. For example: If you have two `entriesValues`: '0' and '1', these " "values may not be understandable by the user. Jami's UI will take the values" @@ -2561,9 +2561,9 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:320 #: ../../../developer/creating-jami-plugins.md:454 msgid "" -"Available APIs: (1) video during a call (Media Handler API) (2) audio " -"during a call (Media Handler API) (3) chat messages (Chat Handler API) For " -"more information about the API, call help preferences." +"Available APIs: (1) video during a call (Media Handler API) (2) audio during" +" a call (Media Handler API) (3) chat messages (Chat Handler API) For more " +"information about the API, call help preferences." msgstr "" #: ../../../developer/creating-jami-plugins.md:326 @@ -2582,7 +2582,7 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:332 msgid "" -"Your preferences options available are: (0) List; (1) Path; (2) EditText;" +"Your preferences options available are: (0) List; (1) Path; (2) EditText;" msgstr "" #: ../../../developer/creating-jami-plugins.md:337 @@ -2613,7 +2613,7 @@ msgstr "" #: ../../../developer/creating-jami-plugins.md:358 msgid "" -"Your preferences options available are: (0) List; (1) Path; (3) EditText;" +"Your preferences options available are: (0) List; (1) Path; (3) EditText;" msgstr "" #: ../../../developer/creating-jami-plugins.md:363 @@ -2736,7 +2736,7 @@ msgid "python3 build-plugin.py --projects=HelloWorld" msgstr "" #: ../../../developer/creating-jami-plugins.md:427 -#: ../../../developer/feature-requests.md:40 +#: ../../../developer/feature-requests.md:39 msgid "Android:" msgstr "" @@ -2815,6 +2815,146 @@ msgid "" "community is developping their own plugins!" msgstr "" +#: ../../../developer/debugging-tools.rst:2 +msgid "Debugging Tools" +msgstr "" + +#: ../../../developer/debugging-tools.rst:4 +msgid "" +"There are several ways to debug Jami from a developer perspective, depending" +" on what you want to debug." +msgstr "" + +#: ../../../developer/debugging-tools.rst:7 +msgid "Loggers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:9 +msgid "" +"The first way is to use runtime loggers. Starting `jami` with `-d` will " +"enable logging by the deamon (or the Troubleshoot section in the General " +"settings). Because Jami uses several libraries, we do not enable all logs by" +" default. But you can pass some environment variables to show it:" +msgstr "" + +#: ../../../developer/debugging-tools.rst:13 +msgid "`SIPLOGLEVEL=5` for enabling logs from PJSIP." +msgstr "" + +#: ../../../developer/debugging-tools.rst:14 +msgid "`DHTLOGLEVEL=5` for enabling logs from OpenDHT." +msgstr "" + +#: ../../../developer/debugging-tools.rst:15 +msgid "`AVLOGLEVEL=50` for enabling logs from ffmpeg." +msgstr "" + +#: ../../../developer/debugging-tools.rst:18 +msgid "Debuggers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:20 +msgid "" +"Generally your IDE has an embedded debuggger. Else, you can use `gdb` for " +"example to be able to add breakpoints, backtraces from crashes, print " +"internal structures, etc. You need to compile the project in *DEBUG* mode to" +" get debug symbols." +msgstr "" + +#: ../../../developer/debugging-tools.rst:24 +msgid "Some useful commands:" +msgstr "" + +#: ../../../developer/debugging-tools.rst:26 +msgid "" +"`b file.cpp:line` - Add a breakpoint (*file.cpp:line* can be replaced by a " +"symbol)" +msgstr "" + +#: ../../../developer/debugging-tools.rst:27 +msgid "`t a a bt` - (thread apply all backtrace) to get all backtraces" +msgstr "" + +#: ../../../developer/debugging-tools.rst:28 +msgid "`Ctrl + X / A` - pass in graphical view" +msgstr "" + +#: ../../../developer/debugging-tools.rst:29 +msgid "`p` - print an internal value." +msgstr "" + +#: ../../../developer/debugging-tools.rst:32 +msgid "Profilers" +msgstr "" + +#: ../../../developer/debugging-tools.rst:34 +msgid "" +"Debuggers are useful, but they do not show real-time memory " +"consumption/network activity/CPU usage. For this, you can use the embedded " +"profiler in your IDE (from Android Studio or Qt Creator/Visual Studio for " +"example)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:39 +msgid "Address Sanitizer" +msgstr "" + +#: ../../../developer/debugging-tools.rst:41 +msgid "" +"This can be useful to detect leaks, crashes, potential deadlocks at runtime." +" To enable this, you can compile the daemon with " +"`CXXFLAGS+=\"-fsanitize=address\"`. Other flags like `tsan` may be useful." +msgstr "" + +#: ../../../developer/debugging-tools.rst:45 +msgid "Valgrind/Callgrind" +msgstr "" + +#: ../../../developer/debugging-tools.rst:47 +msgid "" +"Valgrind is a tool to watch allocations, CPU usage and more and can be used " +"via: `valgrind --tool=callgrind ./jami -d`. This will make the application " +"very slow but can provide useful reports about memory allocation/performance" +" usage (**KCacheGrind** can be used to read reports)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:52 +msgid "Tests" +msgstr "" + +#: ../../../developer/debugging-tools.rst:54 +msgid "" +"Daemon has many tests and coverage enabled. If the daemon is built in static" +" (else private symbols will not be available), adding new tests can help to " +"reproduce bugs, solve bugs and avoid any regression. (cf. " +"`daemon/tests/unitTests``)" +msgstr "" + +#: ../../../developer/debugging-tools.rst:59 +msgid "Agent" +msgstr "" + +#: ../../../developer/debugging-tools.rst:61 +msgid "" +"Tests are only using one daemon to simulate both peers. So it can be " +"difficult to test in various environments. Another possibility is to write a" +" scenario and run an agent (documentation is available in the daemon's " +"repository)." +msgstr "" + +#: ../../../developer/debugging-tools.rst:66 +msgid "LTTng" +msgstr "" + +#: ../../../developer/debugging-tools.rst:68 +msgid "" +"Finally, tracepoints can be created and analyzed. `daemon/tools/trace` " +"provide the documentation and some examples. The advantage of LTTng is that " +"it is quicker than logs, can be triggered by system events and can be used " +"with tracepoints already present in the kernel (so that it can be used with " +"tracepoints from network interfaces)." +msgstr "" + #: ../../../developer/feature-requests.md:1 msgid "Feature requests" msgstr "" @@ -2832,7 +2972,7 @@ msgstr "" #: ../../../developer/feature-requests.md:10 msgid "" "{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`" -" -> Contact #Jami (Adrien, Sébastien, etc.) / hard" +" -> Contact #Jami (Adrien, Sébastien, etc.) / hard / In progress" msgstr "" #: ../../../developer/feature-requests.md:12 @@ -2860,161 +3000,164 @@ msgid "SIP:" msgstr "" #: ../../../developer/feature-requests.md:18 -msgid "re-check all SIP features / easy" +msgid "Fix IP to IP -> Contact #Jami (Adrien, Sébastien) / easy" msgstr "" #: ../../../developer/feature-requests.md:19 -msgid "" -"Check why SIP unregister is not sent when leaving the application. -> " -"Contact #Jami / easy" -msgstr "" - -#: ../../../developer/feature-requests.md:20 msgid "Add unit-tests / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:21 +#: ../../../developer/feature-requests.md:20 msgid "" "Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard" msgstr "" -#: ../../../developer/feature-requests.md:23 +#: ../../../developer/feature-requests.md:22 msgid "" "Search in system contacts ({client-gnome-issue}`1191`, {client-gnome-" "issue}`829`, etc.) -> Contact #Jami (Adrien, Sébastien, Andreas, etc.) / " "easy but long" msgstr "" -#: ../../../developer/feature-requests.md:26 +#: ../../../developer/feature-requests.md:25 msgid "Crypto: (Contact #Jami - Adrien)" msgstr "" -#: ../../../developer/feature-requests.md:27 +#: ../../../developer/feature-requests.md:26 msgid "Update media RTP ciphers for ffmpeg / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:28 +#: ../../../developer/feature-requests.md:27 msgid "Support ECC (instead RSA) for Jami accounts / hard but short" msgstr "" -#: ../../../developer/feature-requests.md:29 +#: ../../../developer/feature-requests.md:28 msgid "Remove usages of SHA1 (ids + git) / hard" msgstr "" -#: ../../../developer/feature-requests.md:30 +#: ../../../developer/feature-requests.md:29 msgid "Media -> Contact #Jami (Adrien, Andreas, etc.)" msgstr "" -#: ../../../developer/feature-requests.md:31 +#: ../../../developer/feature-requests.md:30 msgid "Push to talk support (system wide) / easy" msgstr "" -#: ../../../developer/feature-requests.md:32 +#: ../../../developer/feature-requests.md:31 msgid "{daemon-issue}`POC for AV1 support <27>` / probably hard" msgstr "" -#: ../../../developer/feature-requests.md:33 +#: ../../../developer/feature-requests.md:32 msgid "Fix the video recorder / probably hard" msgstr "" -#: ../../../developer/feature-requests.md:34 -msgid "Fix audio mixing (when sharing camera + a file) / probably hard" +#: ../../../developer/feature-requests.md:33 +msgid "" +"Fix audio mixing (when sharing camera + a file) / probably hard / In " +"progress" msgstr "" -#: ../../../developer/feature-requests.md:35 +#: ../../../developer/feature-requests.md:34 msgid "Investigate audio quality (contact #Jami, medium difficulty)" msgstr "" -#: ../../../developer/feature-requests.md:36 +#: ../../../developer/feature-requests.md:35 msgid "Plugins ideas: (Contact #Jami - Aline)" msgstr "" -#: ../../../developer/feature-requests.md:37 +#: ../../../developer/feature-requests.md:36 msgid "" "{client-qt-issue}`Live closed captions (multiple languages) <576>` (Whisper " -"OpenAI, Google Speech API or similar) / probably easy" +"OpenAI, Google Speech API or similar) / probably easy / In progress" msgstr "" -#: ../../../developer/feature-requests.md:39 +#: ../../../developer/feature-requests.md:38 msgid "Payment plug-in" msgstr "" -#: ../../../developer/feature-requests.md:41 +#: ../../../developer/feature-requests.md:40 msgid "Fix support for Bluetooth/headset / probably easy" msgstr "" -#: ../../../developer/feature-requests.md:42 +#: ../../../developer/feature-requests.md:41 msgid "" -"Support OpenPush (Android + OpenDHT - <https://bubu1.eu/openpush/>) / easy " -"and started" +"Support OpenPush (Android + OpenDHT - <https://bubu1.eu/openpush/>) / easy /" +" In progress" msgstr "" -#: ../../../developer/feature-requests.md:44 +#: ../../../developer/feature-requests.md:43 msgid "" "Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a dedicated " "library (can be shared with OpenDHT) / medium difficulty & long term project" +" / In progress" msgstr "" -#: ../../../developer/feature-requests.md:47 +#: ../../../developer/feature-requests.md:46 msgid "Add new transports (e.g. QUIC?)" msgstr "" -#: ../../../developer/feature-requests.md:48 +#: ../../../developer/feature-requests.md:47 msgid "Add libtorrent support?" msgstr "" -#: ../../../developer/feature-requests.md:49 +#: ../../../developer/feature-requests.md:48 msgid "POC HTTP or SSH over this library" msgstr "" -#: ../../../developer/feature-requests.md:50 +#: ../../../developer/feature-requests.md:49 msgid "" "Public page/personal blog available through Jami (Contact #Jami / medium " "difficulty & long term project)" msgstr "" -#: ../../../developer/feature-requests.md:52 +#: ../../../developer/feature-requests.md:51 msgid "Qt:" msgstr "" -#: ../../../developer/feature-requests.md:53 +#: ../../../developer/feature-requests.md:52 msgid "" "Add support for location sharing (contact #Jami - medium difficulty) (In " "progress)" msgstr "" -#: ../../../developer/feature-requests.md:54 +#: ../../../developer/feature-requests.md:53 msgid "" "{client-qt-issue}`Add support for peer discovery<868>` (contact #Jami - " "easy)" msgstr "" -#: ../../../developer/feature-requests.md:55 +#: ../../../developer/feature-requests.md:54 msgid "" "{client-qt-issue}`Add support for searching messages in conversations<869>` " "(contact #Jami - easy)" msgstr "" -#: ../../../developer/feature-requests.md:56 +#: ../../../developer/feature-requests.md:55 msgid "" "Emoji as a native component to avoid depending on qt-webengine for this (not" " available on macOS) (e.g. https://github.com/jnodev/QMLemoji)" msgstr "" -#: ../../../developer/feature-requests.md:58 +#: ../../../developer/feature-requests.md:57 msgid "" "Categorized conversations (like favorites, groups, etc) (to discuss with " "#Jami)" msgstr "" -#: ../../../developer/feature-requests.md:59 +#: ../../../developer/feature-requests.md:58 msgid "Swarm:" msgstr "" -#: ../../../developer/feature-requests.md:60 +#: ../../../developer/feature-requests.md:59 msgid "Add emoji reactions to messages (Contact #Jami - easy)" msgstr "" +#: ../../../developer/feature-requests.md:60 +msgid "" +"{daemon-issue}`File-transfer small improvements<788>` (contact #Jami - " +"easy)" +msgstr "" + #: ../../../developer/feature-requests.md:61 msgid "jami-web:" msgstr "" @@ -3247,8 +3390,8 @@ msgstr "" msgid "{daemon-issue}`Remote control <349>`" msgstr "" -#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:374 -#: ../../../developer/swarm.md:554 +#: ../../../developer/file-transfer.md:1 ../../../developer/swarm.md:404 +#: ../../../developer/swarm.md:584 msgid "File transfer" msgstr "" @@ -5243,7 +5386,7 @@ msgid "" "`ns.jami.net` and querying an Ethereum node." msgstr "" -#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:378 +#: ../../../developer/protocol.md:1 ../../../developer/swarm.md:408 msgid "Protocol" msgstr "" @@ -7011,49 +7154,86 @@ msgid "" msgstr "" #: ../../../developer/swarm.md:264 -msgid "Merge conflicts management" +msgid "Preferences" msgstr "" #: ../../../developer/swarm.md:266 msgid "" +"Every conversation has attached preferences set by the user. Those " +"preferences are synced across user's devices. This can be the color of the " +"conversation, if the user wants to ignore notifications, file transfer size " +"limit, etc. For now, the recognized keys are:" +msgstr "" + +#: ../../../developer/swarm.md:268 +msgid "\"color\" - the color of the conversation" +msgstr "" + +#: ../../../developer/swarm.md:269 +msgid "" +"\"ignoreNotifications\" - to ignore notifications for new messages in this " +"conversation" +msgstr "" + +#: ../../../developer/swarm.md:270 +msgid "\"symbol\" - to define a default emoji." +msgstr "" + +#: ../../../developer/swarm.md:272 +msgid "" +"Those preferences are stored in a packet MapStringString, stored in " +"`accountDir/conversation_data/conversationId/preferences` and only sent " +"across devices of the same user via SyncMsg." +msgstr "" + +#: ../../../developer/swarm.md:274 +msgid "The API to interact with the preferences are:" +msgstr "" + +#: ../../../developer/swarm.md:294 +msgid "Merge conflicts management" +msgstr "" + +#: ../../../developer/swarm.md:296 +msgid "" "Because two admins can change the description at the same time, a merge " "conflict can occur on `profile.vcf`. In this case, the commit with the " "higher hash (eg ffffff > 000000) will be chosen." msgstr "" -#: ../../../developer/swarm.md:268 +#: ../../../developer/swarm.md:298 msgid "APIs" msgstr "" -#: ../../../developer/swarm.md:270 +#: ../../../developer/swarm.md:300 msgid "The user got 2 methods to get and set conversation's metadatas:" msgstr "" -#: ../../../developer/swarm.md:296 +#: ../../../developer/swarm.md:326 msgid "where `infos` is a `map<str, str>` with the following keys:" msgstr "" -#: ../../../developer/swarm.md:298 +#: ../../../developer/swarm.md:328 msgid "mode: READ-ONLY" msgstr "" -#: ../../../developer/swarm.md:299 +#: ../../../developer/swarm.md:329 msgid "title" msgstr "" -#: ../../../developer/swarm.md:300 +#: ../../../developer/swarm.md:330 msgid "description" msgstr "" -#: ../../../developer/swarm.md:301 +#: ../../../developer/swarm.md:331 msgid "avatar" msgstr "" -#: ../../../developer/swarm.md:303 +#: ../../../developer/swarm.md:333 msgid "Re-import an account (link/export)" msgstr "" -#: ../../../developer/swarm.md:305 +#: ../../../developer/swarm.md:335 msgid "" "The archive MUST contain conversationId to be able to retrieve conversations" " on new commits after a re-import (because there is no invite at this " @@ -7061,123 +7241,123 @@ msgid "" "possibilities:" msgstr "" -#: ../../../developer/swarm.md:307 +#: ../../../developer/swarm.md:337 msgid "" "The conversationId is there, in this case, the daemon is able to re-clone " "this conversation" msgstr "" -#: ../../../developer/swarm.md:308 +#: ../../../developer/swarm.md:338 msgid "" "The conversationId is missing, so the daemon asks (via a message " "`{{\"application/invite\", conversationId}}`) a new invite that the user " "needs to (re)accepts" msgstr "" -#: ../../../developer/swarm.md:310 +#: ../../../developer/swarm.md:340 msgid "" "Note, a conversation can only be retrieved if a contact or another device is" " there, else it will be lost. There is no magic." msgstr "" -#: ../../../developer/swarm.md:312 +#: ../../../developer/swarm.md:342 msgid "Other mime types" msgstr "" -#: ../../../developer/swarm.md:314 +#: ../../../developer/swarm.md:344 msgid "" "`application/call-history+json` with a JSON containing the `id` and the " "`duration` of the call" msgstr "" -#: ../../../developer/swarm.md:315 +#: ../../../developer/swarm.md:345 msgid "" "`application/data-transfer+json` with a JSON containing the `tid` of the " "file, the `sha3sum` and `displayName`" msgstr "" -#: ../../../developer/swarm.md:317 +#: ../../../developer/swarm.md:347 msgid "Used protocols" msgstr "" -#: ../../../developer/swarm.md:319 +#: ../../../developer/swarm.md:349 msgid "Git" msgstr "" -#: ../../../developer/swarm.md:321 +#: ../../../developer/swarm.md:351 msgid "Why this choice" msgstr "" -#: ../../../developer/swarm.md:323 +#: ../../../developer/swarm.md:353 msgid "" "Each conversation will be a git repository. This choice is motivated by:" msgstr "" -#: ../../../developer/swarm.md:325 +#: ../../../developer/swarm.md:355 msgid "" "We need to sync and order messages. The Merkle Tree is the perfect structure" " to do that and can be linearized by merging branches. Moreover, because " "it's massively used by Git, it's easy to sync between devices." msgstr "" -#: ../../../developer/swarm.md:326 +#: ../../../developer/swarm.md:356 msgid "Distributed by nature. Massively used. Lots of backends and pluggable." msgstr "" -#: ../../../developer/swarm.md:327 +#: ../../../developer/swarm.md:357 msgid "Can verify commits via hooks and massively used crypto" msgstr "" -#: ../../../developer/swarm.md:328 +#: ../../../developer/swarm.md:358 msgid "Can be stored in a database if necessary" msgstr "" -#: ../../../developer/swarm.md:329 +#: ../../../developer/swarm.md:359 msgid "Conflicts are avoided by using commit messages, not files." msgstr "" -#: ../../../developer/swarm.md:331 +#: ../../../developer/swarm.md:361 msgid "What we have to validate" msgstr "" -#: ../../../developer/swarm.md:333 +#: ../../../developer/swarm.md:363 msgid "Performance? `git.lock` can be low" msgstr "" -#: ../../../developer/swarm.md:334 +#: ../../../developer/swarm.md:364 msgid "Hooks in libgit2" msgstr "" -#: ../../../developer/swarm.md:335 +#: ../../../developer/swarm.md:365 msgid "Multiple pulls at the same time?" msgstr "" -#: ../../../developer/swarm.md:337 +#: ../../../developer/swarm.md:367 msgid "Limits" msgstr "" -#: ../../../developer/swarm.md:339 +#: ../../../developer/swarm.md:369 msgid "" "History can't be deleted. To delete a conversation, the device has to leave " "the conversation and create another one." msgstr "" -#: ../../../developer/swarm.md:341 +#: ../../../developer/swarm.md:371 msgid "" "However, non-permanent messages (like messages readable only for some " "minutes) can be sent via a special message via the DRT (like Typing or Read" " notifications)." msgstr "" -#: ../../../developer/swarm.md:343 +#: ../../../developer/swarm.md:373 msgid "Moreover editing messages will be possible! (`commit --fixup`)" msgstr "" -#: ../../../developer/swarm.md:345 +#: ../../../developer/swarm.md:375 msgid "Structure" msgstr "" -#: ../../../developer/swarm.md:376 +#: ../../../developer/swarm.md:406 msgid "" "Swarm massively changes file transfer. Now, all the history is syncing, " "allowing all devices in the conversation to easily retrieve old files. This " @@ -7189,19 +7369,19 @@ msgid "" "allowing to retrieve files even if the sender is not there." msgstr "" -#: ../../../developer/swarm.md:380 +#: ../../../developer/swarm.md:410 msgid "" "The sender adds a new commit in the conversation with the following format:" msgstr "" -#: ../../../developer/swarm.md:390 +#: ../../../developer/swarm.md:420 msgid "" "and creates a link in " "`${data_path}/conversation_data/${conversation_id}/${file_id}` where " "`file_id=${commitid}_${value[\"tid\"]}.${extension}`" msgstr "" -#: ../../../developer/swarm.md:392 +#: ../../../developer/swarm.md:422 msgid "" "Then, the receiver can now download the files by contacting the devices " "hosting the file by opening a channel with `name=\"data-transfer://\" + " @@ -7210,7 +7390,7 @@ msgid "" "`${data_path}/conversation_data/${conversation_id}/waiting`" msgstr "" -#: ../../../developer/swarm.md:394 +#: ../../../developer/swarm.md:424 msgid "" "The device receiving the connection will accepts the channel by verifying if" " the file can be sent (if sha3sum is correct and if file exists). The " @@ -7220,172 +7400,172 @@ msgid "" " data." msgstr "" -#: ../../../developer/swarm.md:396 +#: ../../../developer/swarm.md:426 msgid "" "When the transfer is finished or the channel closed, the sha3sum is verified" " to validate that the file is correct (else it's deleted). If valid, the " "file will be removed from the waiting." msgstr "" -#: ../../../developer/swarm.md:398 +#: ../../../developer/swarm.md:428 msgid "" "In case of failure, when a device of the conversation will be back online, " "we will ask for all waiting files by the same way." msgstr "" -#: ../../../developer/swarm.md:400 +#: ../../../developer/swarm.md:430 msgid "Call in swarm" msgstr "" -#: ../../../developer/swarm.md:402 +#: ../../../developer/swarm.md:432 msgid "TODO: nameserver part" msgstr "" -#: ../../../developer/swarm.md:404 +#: ../../../developer/swarm.md:434 msgid "Idea" msgstr "" -#: ../../../developer/swarm.md:406 +#: ../../../developer/swarm.md:436 msgid "" "A swarm conversation can have multiple rendez-vous. A rendez-vous is defined" " by the following uri:" msgstr "" -#: ../../../developer/swarm.md:408 +#: ../../../developer/swarm.md:438 msgid "" "\"accountUri/deviceId/conversationId/confId\" where accountUri/deviceId " "describes the host." msgstr "" -#: ../../../developer/swarm.md:410 +#: ../../../developer/swarm.md:440 msgid "The host can be determined via two ways:" msgstr "" -#: ../../../developer/swarm.md:412 +#: ../../../developer/swarm.md:442 msgid "" "In the swarm metadatas. Where it's stored like the title/desc/avatar of the " "room" msgstr "" -#: ../../../developer/swarm.md:413 +#: ../../../developer/swarm.md:443 msgid "Or the initial caller." msgstr "" -#: ../../../developer/swarm.md:415 +#: ../../../developer/swarm.md:445 msgid "" "When starting a call, the host will add a new commit to the swarm, with the " "URI to join (accountUri/deviceId/conversationId/confId). This will be valid " "till the end of the call (announced by a commit with the duration to show)" msgstr "" -#: ../../../developer/swarm.md:418 +#: ../../../developer/swarm.md:448 msgid "" "So every part will receive the infos that a call has started and will be " "able to join it by calling it." msgstr "" -#: ../../../developer/swarm.md:420 +#: ../../../developer/swarm.md:450 msgid "Attacks?" msgstr "" -#: ../../../developer/swarm.md:422 +#: ../../../developer/swarm.md:452 msgid "Avoid git bombs" msgstr "" -#: ../../../developer/swarm.md:424 +#: ../../../developer/swarm.md:454 msgid "Notes" msgstr "" -#: ../../../developer/swarm.md:426 +#: ../../../developer/swarm.md:456 msgid "" "The timestamp of a commit can be trusted because it's editable. Only the " "user's timestamp can be trusted." msgstr "" -#: ../../../developer/swarm.md:428 +#: ../../../developer/swarm.md:458 msgid "TLS" msgstr "" -#: ../../../developer/swarm.md:430 +#: ../../../developer/swarm.md:460 msgid "" "Git operations, control messages, files, and other things will use a p2p TLS" " v1.3 link with only ciphers which guaranty PFS. So each key is renegotiated" " for each new connexion." msgstr "" -#: ../../../developer/swarm.md:432 +#: ../../../developer/swarm.md:462 msgid "DHT (udp)" msgstr "" -#: ../../../developer/swarm.md:434 +#: ../../../developer/swarm.md:464 msgid "" "Used to send messages for mobiles (to trigger push notifications) and to " "initiate TCP connexions." msgstr "" -#: ../../../developer/swarm.md:436 +#: ../../../developer/swarm.md:466 msgid "DRT (the name will change)" msgstr "" -#: ../../../developer/swarm.md:438 +#: ../../../developer/swarm.md:468 msgid "" "The DRT is a new concept used in swarm to maintain p2p connections. Indeed, " "group members define a graph of nodes (identified by a hash) en must be " "connected." msgstr "" -#: ../../../developer/swarm.md:440 +#: ../../../developer/swarm.md:470 msgid "So we need a structure that:" msgstr "" -#: ../../../developer/swarm.md:442 +#: ../../../developer/swarm.md:472 msgid "Maximize the connected nodes at every time" msgstr "" -#: ../../../developer/swarm.md:443 +#: ../../../developer/swarm.md:473 msgid "Minimize the time for message transmission" msgstr "" -#: ../../../developer/swarm.md:444 +#: ../../../developer/swarm.md:474 msgid "Minimize links between peers" msgstr "" -#: ../../../developer/swarm.md:445 +#: ../../../developer/swarm.md:475 msgid "Needs low calculation" msgstr "" -#: ../../../developer/swarm.md:447 +#: ../../../developer/swarm.md:477 msgid "Several solutions exist:" msgstr "" -#: ../../../developer/swarm.md:449 +#: ../../../developer/swarm.md:479 msgid "" "Each node has a connection to the next node. So we only need $N$ " "connections, but it's not effective to transmit a message, because the " "message will go through all peers, one by one." msgstr "" -#: ../../../developer/swarm.md:450 +#: ../../../developer/swarm.md:480 msgid "" "Each node is connected to all other nodes $N\\timesN$ connections. Effective" " to transmit, but need more resources **WILL BE CHOSEN FOR THE FIRST " "VERSION**" msgstr "" -#: ../../../developer/swarm.md:451 +#: ../../../developer/swarm.md:481 msgid "" "[*Maximizing the Coverage of Roadmap Graph for Optimal Motion " "Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). But " "need calculations" msgstr "" -#: ../../../developer/swarm.md:452 +#: ../../../developer/swarm.md:482 msgid "" "Use the algorithm of the DHT for the routing table. The 4 points are " "basically solved and already used by Jami in UDP." msgstr "" -#: ../../../developer/swarm.md:454 +#: ../../../developer/swarm.md:484 msgid "" "Note: to optimize the socket numbers, a socket will be given by a " "**ConnectionManager** to get multiplexed sockets with a given hash. This " @@ -7393,35 +7573,35 @@ msgid "" "one socket will be used." msgstr "" -#: ../../../developer/swarm.md:456 +#: ../../../developer/swarm.md:486 msgid "Network activity" msgstr "" -#: ../../../developer/swarm.md:458 +#: ../../../developer/swarm.md:488 msgid "Process to invite someone" msgstr "" -#: ../../../developer/swarm.md:460 +#: ../../../developer/swarm.md:490 msgid "Alice wants to invite Bob:" msgstr "" -#: ../../../developer/swarm.md:462 +#: ../../../developer/swarm.md:492 msgid "Alice adds bob to a conversation" msgstr "" -#: ../../../developer/swarm.md:463 +#: ../../../developer/swarm.md:493 msgid "" "Alice generates an invite: { \"application/invite+json\" : { " "\"conversationId\": \"$id\", \"members\": [{...}] }}" msgstr "" -#: ../../../developer/swarm.md:467 +#: ../../../developer/swarm.md:497 msgid "" "Two possibilities for sending the message a. If not connected, via the DHT" " b. Else, Alice sends on the SIP channel" msgstr "" -#: ../../../developer/swarm.md:470 +#: ../../../developer/swarm.md:500 msgid "" "Two possibilities for Bob a. Receives the invite, a signal is emitted for " "the client b. Not connected, so will never receive the request cause Alice " @@ -7429,23 +7609,23 @@ msgid "" "regenerate a new invite via a new message (cf. next scenario)" msgstr "" -#: ../../../developer/swarm.md:474 +#: ../../../developer/swarm.md:504 msgid "Process to send a message to someone" msgstr "" -#: ../../../developer/swarm.md:476 +#: ../../../developer/swarm.md:506 msgid "Alice wants to send a message to Bob:" msgstr "" -#: ../../../developer/swarm.md:478 +#: ../../../developer/swarm.md:508 msgid "Alice adds a message in the repo, giving an ID" msgstr "" -#: ../../../developer/swarm.md:479 +#: ../../../developer/swarm.md:509 msgid "Alice gets a message received (from herself) if successful" msgstr "" -#: ../../../developer/swarm.md:480 +#: ../../../developer/swarm.md:510 msgid "" "Two possibilities, alice and bob are connected, or not. In both case a " "message is crafted: { \"application/im-gitmessage-id\" : " @@ -7454,7 +7634,7 @@ msgid "" "Alice sends on the SIP channel" msgstr "" -#: ../../../developer/swarm.md:483 +#: ../../../developer/swarm.md:513 msgid "" "Four possibilities for Bob: a. Bob is not connected to Alice, so if he " "trusts Alice, ask for a new connection and go to b. b. If connected, fetch " @@ -7465,28 +7645,28 @@ msgid "" "message but will try to sync when the next connection will occur" msgstr "" -#: ../../../developer/swarm.md:492 +#: ../../../developer/swarm.md:522 msgid "" msgstr "" -#: ../../../developer/swarm.md:492 +#: ../../../developer/swarm.md:522 msgid "Diagram: swarm chat classes" msgstr "" -#: ../../../developer/swarm.md:495 +#: ../../../developer/swarm.md:525 msgid "**!! OLD DRAFT !!**" msgstr "" -#: ../../../developer/swarm.md:497 +#: ../../../developer/swarm.md:527 msgid "" "Note: Following notes are not organized yet. Just some line of thoughts." msgstr "" -#: ../../../developer/swarm.md:499 +#: ../../../developer/swarm.md:529 msgid "Crypto improvements." msgstr "" -#: ../../../developer/swarm.md:501 +#: ../../../developer/swarm.md:531 msgid "" "For a serious group chat feature, we also need serious crypto. With the " "current design, if a certificate is stolen as the previous DHT values of a " @@ -7494,91 +7674,91 @@ msgid "" "something like **Double ratchet**." msgstr "" -#: ../../../developer/swarm.md:503 +#: ../../../developer/swarm.md:533 msgid "" "Note: a lib might exist to implement group conversations. TODO, investigate." msgstr "" -#: ../../../developer/swarm.md:505 +#: ../../../developer/swarm.md:535 msgid "Needs ECC support in OpenDHT" msgstr "" -#: ../../../developer/swarm.md:509 +#: ../../../developer/swarm.md:539 msgid "Add Roles?" msgstr "" -#: ../../../developer/swarm.md:511 +#: ../../../developer/swarm.md:541 msgid "There is two major use case for group chats:" msgstr "" -#: ../../../developer/swarm.md:513 +#: ../../../developer/swarm.md:543 msgid "" "Something like a Mattermost in a company, with private channels, and some " "roles (admin/spectator/bot/etc) or for educations (where only a few are " "active)." msgstr "" -#: ../../../developer/swarm.md:514 +#: ../../../developer/swarm.md:544 msgid "Horizontal conversations like a conversation between friends." msgstr "" -#: ../../../developer/swarm.md:516 +#: ../../../developer/swarm.md:546 msgid "Ring will be for which one?" msgstr "" -#: ../../../developer/swarm.md:518 +#: ../../../developer/swarm.md:548 msgid "Implementation idea" msgstr "" -#: ../../../developer/swarm.md:520 +#: ../../../developer/swarm.md:550 msgid "" "A certificate for a group that sign user with a flag for a role. Adding or " "revoking can also be done." msgstr "" -#: ../../../developer/swarm.md:522 +#: ../../../developer/swarm.md:552 msgid "Join a conversation" msgstr "" -#: ../../../developer/swarm.md:524 +#: ../../../developer/swarm.md:554 msgid "Only via a direct invite" msgstr "" -#: ../../../developer/swarm.md:525 +#: ../../../developer/swarm.md:555 msgid "Via a link/QR Code/whatever" msgstr "" -#: ../../../developer/swarm.md:526 +#: ../../../developer/swarm.md:556 msgid "Via a room name? (a **hash** on the DHT)" msgstr "" -#: ../../../developer/swarm.md:528 +#: ../../../developer/swarm.md:558 msgid "What we need" msgstr "" -#: ../../../developer/swarm.md:530 +#: ../../../developer/swarm.md:560 msgid "" "Confidentiality: members outside of the group chat should not be able to " "read messages in the group" msgstr "" -#: ../../../developer/swarm.md:531 +#: ../../../developer/swarm.md:561 msgid "" "Forward secrecy: if any key from the group is compromised, previous messages" " should remain confidential (as much as possible)" msgstr "" -#: ../../../developer/swarm.md:533 +#: ../../../developer/swarm.md:563 msgid "Message ordering: There is a need to have messages in the right order" msgstr "" -#: ../../../developer/swarm.md:534 +#: ../../../developer/swarm.md:564 msgid "" "Synchronization: There is also a need to be sure to have all messages at " "soon as possible." msgstr "" -#: ../../../developer/swarm.md:535 +#: ../../../developer/swarm.md:565 msgid "" "Persistence: Actually, a message on the DHT lives only 10 minutes. Because " "it's the best timing calculated for this kind of DHT. To persist data, the " @@ -7589,53 +7769,53 @@ msgid "" "will still do 64 requests but limit the max redundancy to 8 nodes." msgstr "" -#: ../../../developer/swarm.md:537 +#: ../../../developer/swarm.md:567 msgid "Other distributed ways" msgstr "" -#: ../../../developer/swarm.md:539 +#: ../../../developer/swarm.md:569 msgid "IPFS: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:540 +#: ../../../developer/swarm.md:570 msgid "BitMessage: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:541 +#: ../../../developer/swarm.md:571 msgid "Maidsafe: Need some investigation" msgstr "" -#: ../../../developer/swarm.md:543 +#: ../../../developer/swarm.md:573 msgid "Based on current work we have" msgstr "" -#: ../../../developer/swarm.md:545 +#: ../../../developer/swarm.md:575 msgid "" "Group chat can be based on the same work we already have for multi-devices " "(but here, with a group certificate). Problems to solve:" msgstr "" -#: ../../../developer/swarm.md:547 +#: ../../../developer/swarm.md:577 msgid "" "History sync. This needs to move the database from the client into the " "daemon." msgstr "" -#: ../../../developer/swarm.md:548 +#: ../../../developer/swarm.md:578 msgid "" "If nobody is connected, the synchronization can't be done, and the person " "will never see the conversation" msgstr "" -#: ../../../developer/swarm.md:550 +#: ../../../developer/swarm.md:580 msgid "Another dedicated DHT" msgstr "" -#: ../../../developer/swarm.md:552 +#: ../../../developer/swarm.md:582 msgid "Like a DHT with a superuser. (Not convinced)" msgstr "" -#: ../../../developer/swarm.md:556 +#: ../../../developer/swarm.md:586 msgid "" "Currently, the file transfer algorithm is based on a TURN connection (See " "{doc}`file-transfer`). In the case of a big group, this will be bad. We " @@ -7643,21 +7823,21 @@ msgid "" "transfer." msgstr "" -#: ../../../developer/swarm.md:558 +#: ../../../developer/swarm.md:588 msgid "" "Other problem: currently there is no implementation for TCP support for ICE " "in PJSIP. This is mandatory for this point (in pjsip or homemade)" msgstr "" -#: ../../../developer/swarm.md:560 +#: ../../../developer/swarm.md:590 msgid "Resources" msgstr "" -#: ../../../developer/swarm.md:562 +#: ../../../developer/swarm.md:592 msgid "https://eprint.iacr.org/2017/666.pdf" msgstr "" -#: ../../../developer/swarm.md:563 +#: ../../../developer/swarm.md:593 msgid "" "Robust distributed synchronization of networked linear systems with " "intermittent information (Sean Phillips and Ricardo G.Sanfelice)" diff --git a/locales/fr/LC_MESSAGES/index.po b/locales/fr/LC_MESSAGES/index.po index b0e742f4decfe33e5f62f4a4b8a0229ac12c9573..4bae3fb81b23d2cb476aaf8389bb78540edcd3e7 100644 --- a/locales/fr/LC_MESSAGES/index.po +++ b/locales/fr/LC_MESSAGES/index.po @@ -1,6 +1,6 @@ -# SOME DESCRIPTIVE TITLE. +# LANGUAGE translation of FILENAME.pot # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors -# This file is distributed under the same license as the Jami package. +# This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # # Translators: @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Jami\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 12:03+0000\n" +"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:41+0000\n" "Last-Translator: Cyrille Béraud <cyrille.beraud@savoirfairelinux.com>, 2022\n" "Language-Team: French (https://www.transifex.com/savoirfairelinux/teams/49466/fr/)\n" diff --git a/locales/fr/LC_MESSAGES/sphinx.po b/locales/fr/LC_MESSAGES/sphinx.po index 54acd4b0a220080396eb87c371bb8c11dfa04001..736821361b490ead0fe050744ac809f6e3bdd44a 100644 --- a/locales/fr/LC_MESSAGES/sphinx.po +++ b/locales/fr/LC_MESSAGES/sphinx.po @@ -1,14 +1,14 @@ -# SOME DESCRIPTIVE TITLE. +# LANGUAGE translation of FILENAME.pot # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors -# This file is distributed under the same license as the Jami package. +# This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Jami\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 12:03+0000\n" +"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:53+0000\n" "Language-Team: French (https://www.transifex.com/savoirfairelinux/teams/49466/fr/)\n" "MIME-Version: 1.0\n" diff --git a/locales/fr/LC_MESSAGES/user.po b/locales/fr/LC_MESSAGES/user.po index 5bbe282a2b23b053d60e615e898218656bc57d17..c2086d911f7b2bd87d25b1b0051856185a406bdb 100644 --- a/locales/fr/LC_MESSAGES/user.po +++ b/locales/fr/LC_MESSAGES/user.po @@ -2,7 +2,7 @@ # Copyright (C) 2018-2022 Savoir-faire Linux Inc. and contributors # This file is distributed under the same license as the Jami documentation. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# +# # Translators: # savoirfairelinux <support@savoirfairelinux.com>, 2022 # Ecko <edric.milaret@gmail.com>, 2022 @@ -15,13 +15,13 @@ # Zertrin, 2022 # Antoine Gorenflot, 2022 # Cyrille Béraud <cyrille.beraud@savoirfairelinux.com>, 2022 -# +# #, fuzzy msgid "" msgstr "" "Project-Id-Version: Jami\n" "Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n" -"POT-Creation-Date: 2022-11-01 02:52+0000\n" +"POT-Creation-Date: 2022-11-15 03:53+0000\n" "PO-Revision-Date: 2022-09-14 17:45+0000\n" "Last-Translator: Cyrille Béraud <cyrille.beraud@savoirfairelinux.com>, 2022\n" "Language-Team: French (https://www.transifex.com/savoirfairelinux/teams/49466/fr/)\n" @@ -48,13 +48,18 @@ msgid "E : experimental" msgstr "E : Expérimentale" #: ../../../user/all-features-by-client.md:8 -msgid "X : not available yet" -msgstr "X : non disponible pour le moment " +msgid "X : not yet available" +msgstr "" #: ../../../user/all-features-by-client.md:9 msgid "N/A : not applicable for this client" msgstr "" +#: ../../../user/all-features-by-client.md:10 +msgid "Desktop : Apple macOS, GNU/Linux, Microsoft Windows operating systems" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 #: ../../../user/all-features-by-client.md:11 msgid "Text messaging" msgstr "Messagerie texte" @@ -64,13 +69,9 @@ msgid "**Client**" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Linux" +msgid "Desktop" msgstr "" -#: ../../../user/all-features-by-client.md:0 -msgid "Windows" -msgstr "Les fenêtres" - #: ../../../user/all-features-by-client.md:0 msgid "Android" msgstr "Android" @@ -83,14 +84,6 @@ msgstr "Android TV" msgid "iOS" msgstr "iOS" -#: ../../../user/all-features-by-client.md:0 -msgid "macOS" -msgstr "macOS" - -#: ../../../user/all-features-by-client.md:0 -msgid "Text Messaging" -msgstr "" - #: ../../../user/all-features-by-client.md:0 msgid "✓" msgstr "✓" @@ -107,16 +100,12 @@ msgstr "" msgid "X" msgstr "X" -#: ../../../user/all-features-by-client.md:0 -msgid "Clear History" -msgstr "Effacer l'historique" - #: ../../../user/all-features-by-client.md:0 msgid "Chat history shared across devices" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Send Files" +msgid "Send files" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -135,16 +124,52 @@ msgstr "" msgid "Read status" msgstr "" -#: ../../../user/all-features-by-client.md:25 +#: ../../../user/all-features-by-client.md:0 +msgid "Reply to" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Message edition" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Emoji reaction" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Update conversation's profile" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Add/Kick members" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Conversation's preferences" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Search messages" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Share location" +msgstr "" + +#: ../../../user/all-features-by-client.md:0 +msgid "Media gallery" +msgstr "" + +#: ../../../user/all-features-by-client.md:33 msgid "Calling" msgstr "Appel en cours" #: ../../../user/all-features-by-client.md:0 -msgid "Audio Calling" +msgid "Audio calling" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Video Calling" +msgid "Video calling" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -191,6 +216,10 @@ msgstr "" msgid "Window sharing" msgstr "" +#: ../../../user/all-features-by-client.md:0 +msgid "✓(3)" +msgstr "" + #: ../../../user/all-features-by-client.md:0 msgid "Media sharing" msgstr "" @@ -212,7 +241,7 @@ msgid "Texting while on call" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Remote recording notif" +msgid "Remote recording notification" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -220,7 +249,7 @@ msgid "Rendez-vous mode" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Conference Layout" +msgid "Conference layout" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -232,31 +261,35 @@ msgid "Videosplit" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Audio Processor \\*\\*" +msgid "Audio processor \\*\\*" msgstr "" #: ../../../user/all-features-by-client.md:0 msgid "✓(2)" msgstr "" -#: ../../../user/all-features-by-client.md:54 +#: ../../../user/all-features-by-client.md:0 +msgid "Voice activity" +msgstr "" + +#: ../../../user/all-features-by-client.md:63 msgid "" -"\\* This enables 4k video calling support \\*\\* cf. {ref}`user/faq:How " -"can I configure the audio processor?` in the FAQ" +"\\* This enables 4k video calling support \\*\\* cf. {ref}`user/faq:How can " +"I configure the audio processor?` in the FAQ" msgstr "" -#: ../../../user/all-features-by-client.md:58 +#: ../../../user/all-features-by-client.md:67 msgid "" -"(1) only on X (not Wayland) (2) Some features enabled by default and not " -"configurable" +"(1) only on X (not Wayland) (2) Some features enabled by default and not " +"configurable (3) only on X and not on Microsoft Windows" msgstr "" -#: ../../../user/all-features-by-client.md:61 +#: ../../../user/all-features-by-client.md:71 msgid "Account settings" msgstr "Paramètres du compte" #: ../../../user/all-features-by-client.md:0 -msgid "Profile avatar" +msgid "Profile picture" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -276,11 +309,11 @@ msgid "Register username" msgstr "Enregistrer le nom d'utilisateur" #: ../../../user/all-features-by-client.md:0 -msgid "Delete Contacts" +msgid "Delete contacts" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Block Contacts" +msgid "Block contacts" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -295,20 +328,20 @@ msgstr "" msgid "Auto answer" msgstr "Décrocher automatiquement" -#: ../../../user/all-features-by-client.md:77 +#: ../../../user/all-features-by-client.md:87 msgid "Other features" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Scan QR Code" -msgstr "Scanner un code QR" +msgid "Scan QR code" +msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Display QR Code" +msgid "Display QR code" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "Ban contact" +msgid "Block contact" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -344,23 +377,29 @@ msgid "Dark theme support" msgstr "" #: ../../../user/all-features-by-client.md:0 -msgid "JAMS support" +msgid "JAMS\\*\\* support" msgstr "" #: ../../../user/all-features-by-client.md:0 msgid "Plugin support" msgstr "" -#: ../../../user/all-features-by-client.md:94 -msgid "\\* According to <https://explore.transifex.com/savoirfairelinux/jami/>" +#: ../../../user/all-features-by-client.md:0 +msgid "Application translation" msgstr "" -#: ../../../user/all-features-by-client.md:96 +#: ../../../user/all-features-by-client.md:105 +msgid "" +"\\* According to <https://explore.transifex.com/savoirfairelinux/jami/> " +"\\*\\* JAMS (Jami Account Management Server) <https://jami.biz/>" +msgstr "" + +#: ../../../user/all-features-by-client.md:108 msgid "Advanced settings" msgstr "Réglages avancés" #: ../../../user/all-features-by-client.md:0 -msgid "DHT Proxy support" +msgid "DHT proxy support" msgstr "" #: ../../../user/all-features-by-client.md:0 @@ -2332,3 +2371,120 @@ msgid "" "This will start a geth daemon with an attached console which is now syncing " "with Jami's network." msgstr "" + +#: ../../../user/lan-only.rst:2 +msgid "Use Jami on a LAN" +msgstr "" + +#: ../../../user/lan-only.rst:4 +msgid "" +"Due the distributed nature of Jami, it is possible to use it over a LAN, " +"without any Internet connection. This allows you to continue to communicate " +"with other people in the company/building/country without global Internet " +"access. However, some services are external so in this document we will " +"explain some tweaks you may need." +msgstr "" + +#: ../../../user/lan-only.rst:16 +msgid "Boostraping" +msgstr "" + +#: ../../../user/lan-only.rst:19 +msgid "What is a bootstrap?" +msgstr "" + +#: ../../../user/lan-only.rst:21 +msgid "" +"Jami uses the DHT technology to find other users. So, all the users you want" +" to contact must be reachable on the same DHT network (e.g. if the Internet " +"is split between two buildings, users in the first buildings will not be " +"able to reach the second building). To enter a DHT network, one must be able" +" to reach at least one other node. This node is called bootstrap, it is the " +"entry point of the network. By default, **bootstrap.jami.net** is " +"configured, but any node in the public DHT can be a bootstrap (it is a " +"classic node, generally always online)." +msgstr "" + +#: ../../../user/lan-only.rst:29 +msgid "" +"So, if the Internet is cut, you need another bootstrap to create a network. " +"On a LAN, there is two ways to configure it in Jami:" +msgstr "" + +#: ../../../user/lan-only.rst:33 +msgid "Bootstrap settings" +msgstr "" + +#: ../../../user/lan-only.rst:35 +msgid "" +"In the advanced account settings, the user can configure multiple " +"bootstraps. **bootstrap.jami.net** is usually the default, " +"**bootstrap.jami.net;your.bootstrap.tld** will be valid. The IP:port of " +"another DHT node can be specified as a bootstrap." +msgstr "" + +#: ../../../user/lan-only.rst:40 +msgid "Local Peer Discovery" +msgstr "" + +#: ../../../user/lan-only.rst:42 +msgid "" +"Another way is to enable peer discovery. This will announce the bootstrap on" +" the network by broadcasting UDP packets (like a printer). So, UDP broadcast" +" must be supported by the network in order to work. However, this method " +"does not need to specify an ip:port in the settings, so it can be preferred." +msgstr "" + +#: ../../../user/lan-only.rst:48 +msgid "TURN" +msgstr "" + +#: ../../../user/lan-only.rst:50 +msgid "" +"Another external service is the TURN server, used as a fallback for " +"connections if the NAT block all possible connections. Generally it is " +"**turn.jami.net** but can be any TURN (we use coturn, cf. " +":doc:`/developer/setting-up-your-own-turn-server`)" +msgstr "" + +#: ../../../user/lan-only.rst:54 +msgid "" +"On a LAN, it may be ignored (because there will be no NAT), but disabling it" +" should not be necessary (because it will not be used if unreachable)." +msgstr "" + +#: ../../../user/lan-only.rst:58 +msgid "On mobile (DHT Proxy)" +msgstr "" + +#: ../../../user/lan-only.rst:60 +msgid "" +"A DHT Proxy is used with mobile devices to save battery by avoiding " +"synchronization. It is generally **dhtproxy.jami.net** but can be any DHT " +"node with the REST API enabled. However, if the DHT proxy is using push " +"notifications it will depend on another external service (Firebase or APN or" +" a Unified Push instance). In this case, only the third one can be self-" +"hosted." +msgstr "" + +#: ../../../user/lan-only.rst:65 +msgid "" +"On iOS it is basically not possible to work without push, as the OS from " +"Apple will kill any application as soon as it is in background. So you can " +"not disable the usage of push notifications. However, for Android, you may " +"want to self-host your proxy (with or without unified push support), or you " +"can disable the DHT Proxy and enable \"Run in background\" in order to use " +"your local DHT." +msgstr "" + +#: ../../../user/lan-only.rst:72 +msgid "NameServer" +msgstr "" + +#: ../../../user/lan-only.rst:74 +msgid "" +"Finally, the last external service you may need is a NameServer. This is " +"used to translate addresses (the 40-characters fingerprint ID) to usernames." +" You may not have access to **ns.jami.net**, but you can self-host one " +"(:doc:`/developer/name-server-protocol`) or only use IDs." +msgstr ""