diff --git a/locales/fa/LC_MESSAGES/build.po b/locales/fa/LC_MESSAGES/build.po
index 5c4c018112cba7dba0abb63918704f59453a3b5b..e36dcd5791f26c9c0c1fe1b0ee220c6f518d185b 100644
--- a/locales/fa/LC_MESSAGES/build.po
+++ b/locales/fa/LC_MESSAGES/build.po
@@ -1,30 +1,21 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
 #, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+0000\n"
+"PO-Revision-Date: 2022-09-14 17:46+0000\n"
+"Language-Team: Persian (https://www.transifex.com/savoirfairelinux/teams/49466/fa/)\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
-
-#: ../../../build/building.rst:2
-msgid "Building"
-msgstr ""
-
-#: ../../../build/building.rst:4 ../../../build/packaging.rst:4
-msgid "TODO"
-msgstr ""
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../build/dependencies.rst:2
 msgid "Dependencies"
@@ -33,8 +24,8 @@ msgstr ""
 #: ../../../build/dependencies.rst:4
 msgid ""
 "Jami is a large and complex piece of software, and depends on several "
-"external free software libraries.  Here we outline these dependencies and"
-" how to install them with a few popular package systems."
+"external free software libraries.  Here we outline these dependencies and "
+"how to install them with a few popular package systems."
 msgstr ""
 
 #: ../../../build/dependencies.rst:16 ../../../build/dependencies.rst:107
@@ -226,23 +217,22 @@ msgstr ""
 #: ../../../build/dependencies.rst:66 ../../../build/dependencies.rst:136
 msgid ""
 "On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel, and "
-"Ubuntu you can install these using packages using ``apt-get`` or ``apt`` "
-"as follows::"
+"Ubuntu you can install these using packages using ``apt-get`` or ``apt`` as "
+"follows::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:80
 msgid ""
-"On rpm-based distributions like Fedora and openSUSE the dependencies can "
-"be installed using ``dnf``, ``yum``, or ``zypper`` like so::"
+"On rpm-based distributions like Fedora and openSUSE the dependencies can be "
+"installed using ``dnf``, ``yum``, or ``zypper`` like so::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:94
 msgid ""
-"We will do our best to keep the above list up-to-date, but in case you "
-"face any issues with missing dependencies you can always check the "
-"package definitions for Jami packages distributed via dl.jami.net, as "
-"well as the ``build.py`` script, available in the ``jami-project`` "
-"repository."
+"We will do our best to keep the above list up-to-date, but in case you face "
+"any issues with missing dependencies you can always check the package "
+"definitions for Jami packages distributed via dl.jami.net, as well as the "
+"``build.py`` script, available in the ``jami-project`` repository."
 msgstr ""
 
 #: ../../../build/dependencies.rst:102
@@ -268,7 +258,8 @@ msgid "libqrencode"
 msgstr ""
 
 #: ../../../build/dependencies.rst:111
-msgid "libayatana-appindicator or libappindicator (optional, for notifications)"
+msgid ""
+"libayatana-appindicator or libappindicator (optional, for notifications)"
 msgstr ""
 
 #: ../../../build/dependencies.rst:113
@@ -307,18 +298,18 @@ msgstr ""
 
 #: ../../../build/dependencies.rst:123
 msgid ""
-"The libqt-jami and jami-libqt packages from dl.jami.net provide the "
-"needed Qt 6 dependencies on supported dpkg/deb-based and rpm-based "
-"GNU/Linux distributions respectively.  This is especially useful for "
-"building Jami on slightly older versions of these distributions where Qt "
-"6 was not yet packaged in the distribution's official repositories. To "
-"install this package providing the Qt 6 dependencies on a supported "
-"distribution, first add the respective dl.jami.net repository by "
-"following the instructions on the `Download Jami for GNU/Linux "
-"<https://jami.net/download-jami-linux/>`_ page of the Jami website, then "
-"install the package using a command like ``sudo apt-get install libqt-"
-"jami`` (for dpkg/deb-based GNU/Linux distributions) and ``sudo dnf "
-"install jami-libqt`` (for rpm-based GNU/Linux distributions)."
+"The libqt-jami and jami-libqt packages from dl.jami.net provide the needed "
+"Qt 6 dependencies on supported dpkg/deb-based and rpm-based GNU/Linux "
+"distributions respectively.  This is especially useful for building Jami on "
+"slightly older versions of these distributions where Qt 6 was not yet "
+"packaged in the distribution's official repositories. To install this "
+"package providing the Qt 6 dependencies on a supported distribution, first "
+"add the respective dl.jami.net repository by following the instructions on "
+"the `Download Jami for GNU/Linux <https://jami.net/download-jami-linux/>`_ "
+"page of the Jami website, then install the package using a command like "
+"``sudo apt-get install libqt-jami`` (for dpkg/deb-based GNU/Linux "
+"distributions) and ``sudo dnf install jami-libqt`` (for rpm-based GNU/Linux "
+"distributions)."
 msgstr ""
 
 #: ../../../build/dependencies.rst:153 ../../../build/dependencies.rst:167
@@ -327,18 +318,18 @@ msgstr ""
 
 #: ../../../build/dependencies.rst:160
 msgid ""
-"On rpm-based distributions like Fedora and openSUSE the dependencies can "
-"be installed using ``dnf`` or ``zypper`` like so::"
+"On rpm-based distributions like Fedora and openSUSE the dependencies can be "
+"installed using ``dnf`` or ``zypper`` like so::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:171
 msgid ""
-"Given the newness of Qt 6, it may not be fully (or at all) packaged in "
-"the official repositories of your GNU/Linux distribution of choice yet.  "
-"In that case, the easiest approach would be to install the libqt-jami or "
-"jami-libqt package on your supported dpkg/deb-based and rpm-based "
-"GNU/Linux distribution respectively, to get all of the needed Qt 6 "
-"dependencies of Jami."
+"Given the newness of Qt 6, it may not be fully (or at all) packaged in the "
+"official repositories of your GNU/Linux distribution of choice yet.  In that"
+" case, the easiest approach would be to install the libqt-jami or jami-libqt"
+" package on your supported dpkg/deb-based and rpm-based GNU/Linux "
+"distribution respectively, to get all of the needed Qt 6 dependencies of "
+"Jami."
 msgstr ""
 
 #: ../../../build/index.rst:3
@@ -347,13 +338,13 @@ msgstr ""
 
 #: ../../../build/index.rst:5
 msgid ""
-"The Jami build manual documents the various aspects of building Jami from"
-" source, as well as packaging Jami for various package systems. This "
-"manual is aimed at those looking to build Jami from source -- for "
-"instance to hack on Jami and contribute to its development, or to try "
-"recently-added unreleased features -- as well as package maintainers and "
-"contributors to GNU/Linux distributions looking to package or help "
-"maintain a Jami package for their distribution's repositories."
+"The Jami build manual documents the various aspects of building Jami from "
+"source, as well as packaging Jami for various package systems. This manual "
+"is aimed at those looking to build Jami from source -- for instance to hack "
+"on Jami and contribute to its development, or to try recently-added "
+"unreleased features -- as well as package maintainers and contributors to "
+"GNU/Linux distributions looking to package or help maintain a Jami package "
+"for their distribution's repositories."
 msgstr ""
 
 #: ../../../build/introduction.rst:2
@@ -374,61 +365,56 @@ msgstr ""
 
 #: ../../../build/introduction.rst:9
 msgid ""
-"To use Jami, the Jami daemon/library is always needed, since it is the "
-"core of Jami and contains all of the connectivity, communication, "
-"cryptography, and media logic.  It uses libraries such as OpenDHT, PJSIP,"
-" GnuTLS, and FFmpeg, and has several APIs including DBus, libwrap (shared"
-" library), JNI, and REST.  These APIs make it possible to interact with "
-"Jami without going through a graphical user interface (especially useful "
-"for using Jami in a headless/server setting), build automation "
-"tools/scripts around Jami, and build custom user interfaces for Jami."
+"To use Jami, the Jami daemon/library is always needed, since it is the core "
+"of Jami and contains all of the connectivity, communication, cryptography, "
+"and media logic.  It uses libraries such as OpenDHT, PJSIP, GnuTLS, and "
+"FFmpeg, and has several APIs including DBus, libwrap (shared library), JNI, "
+"and REST.  These APIs make it possible to interact with Jami without going "
+"through a graphical user interface (especially useful for using Jami in a "
+"headless/server setting), build automation tools/scripts around Jami, and "
+"build custom user interfaces for Jami."
 msgstr ""
 
 #: ../../../build/introduction.rst:19
 msgid ""
-"The client (i.e. user interface) may vary depending on the operating "
-"system and/or platform being used.  For example, on Android/Replicant "
-"systems this would be jami-client-android, and on GNU/Linux, Windows, and"
-" macOS this would be the jami-client-qt.  There also used to be a GTK-"
-"based jami-client-gnome for GNU/Linux and a jami-client-macos for macOS, "
-"both of which were deprecated in favour of the newer cross-platform jami-"
-"client-qt based on the Qt framework."
+"The client (i.e. user interface) may vary depending on the operating system "
+"and/or platform being used.  For example, on Android/Replicant systems this "
+"would be jami-client-android, and on GNU/Linux, Windows, and macOS this "
+"would be the jami-client-qt.  There also used to be a GTK-based jami-client-"
+"gnome for GNU/Linux and a jami-client-macos for macOS, both of which were "
+"deprecated in favour of the newer cross-platform jami-client-qt based on the"
+" Qt framework."
 msgstr ""
 
 #: ../../../build/introduction.rst:27
 msgid ""
-"On GNU/Linux systems, jami-client-qt can be configured and built to use "
-"one of two main APIs for communicating with the Jami daemon/library:"
+"On GNU/Linux systems, jami-client-qt can be configured and built to use one "
+"of two main APIs for communicating with the Jami daemon/library:"
 msgstr ""
 
 #: ../../../build/introduction.rst:31
 msgid ""
-"libwrap: when jami-client-qt is configured to use libwrap (which is "
-"always the case on macOS and Windows), it will use Jami daemon's shared "
-"library API, and there will be no separate daemon process. This has the "
-"advantage of things being somewhat more efficient than with the DBus API "
-"mentioned below, in exchange for less flexibility (not being able to "
-"interact with Jami via DBus when using libwrap)."
+"libwrap: when jami-client-qt is configured to use libwrap (which is always "
+"the case on macOS and Windows), it will use Jami daemon's shared library "
+"API, and there will be no separate daemon process. This has the advantage of"
+" things being somewhat more efficient than with the DBus API mentioned "
+"below, in exchange for less flexibility (not being able to interact with "
+"Jami via DBus when using libwrap)."
 msgstr ""
 
 #: ../../../build/introduction.rst:38
 msgid ""
-"The Jami packages distributed via dl.jami.net are currently all "
-"configured to use the libwrap API."
+"The Jami packages distributed via dl.jami.net are currently all configured "
+"to use the libwrap API."
 msgstr ""
 
 #: ../../../build/introduction.rst:41
 msgid ""
 "DBus: when jami-client-qt is configured to use DBus, it will communicate "
-"with the Jami daemon via its DBus API, and the daemon will be running as "
-"a separate process by itself.  This is greatly flexible for communicating"
-" with and controlling the daemon through other means (for example small "
-"utility scripts) simultaneously while the Jami Qt client also uses and "
-"interacts with it. The associated cost of this added flexibility is the "
-"overhead of using DBus."
-msgstr ""
-
-#: ../../../build/packaging.rst:2
-msgid "Packaging"
+"with the Jami daemon via its DBus API, and the daemon will be running as a "
+"separate process by itself.  This is greatly flexible for communicating with"
+" and controlling the daemon through other means (for example small utility "
+"scripts) simultaneously while the Jami Qt client also uses and interacts "
+"with it. The associated cost of this added flexibility is the overhead of "
+"using DBus."
 msgstr ""
-
diff --git a/locales/fa/LC_MESSAGES/contribute.po b/locales/fa/LC_MESSAGES/contribute.po
index f76bf8c00417ca2c85810c4d82c285d6f47cfe20..aa4832e93f76f9edfaab30dd0c3f20113ff39808 100644
--- a/locales/fa/LC_MESSAGES/contribute.po
+++ b/locales/fa/LC_MESSAGES/contribute.po
@@ -1,22 +1,21 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
 #, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../contribute.rst:3
 msgid "Contribute to Jami"
@@ -24,9 +23,9 @@ msgstr ""
 
 #: ../../../contribute.rst:5
 msgid ""
-"Contributions to Jami are always welcome and are much appreciated. There "
-"are many ways to contribute to Jami, including reporting bugs and issues,"
-" contributing code, helping package and maintain Jami for your GNU/Linux "
+"Contributions to Jami are always welcome and are much appreciated. There are"
+" many ways to contribute to Jami, including reporting bugs and issues, "
+"contributing code, helping package and maintain Jami for your GNU/Linux "
 "distribution or other operating system, as well as contributing to these "
 "very docs themselves."
 msgstr ""
@@ -41,8 +40,8 @@ msgstr ""
 
 #: ../../../contribute.rst:20
 msgid ""
-"Please see the :doc:`user/bug-report-guide` for step-by-step instructions"
-" on how to report bugs and issues you encounter in Jami."
+"Please see the :doc:`user/bug-report-guide` for step-by-step instructions on"
+" how to report bugs and issues you encounter in Jami."
 msgstr ""
 
 #: ../../../contribute.rst:24
@@ -63,32 +62,31 @@ msgstr ""
 
 #: ../../../contribute.rst:36
 msgid ""
-"Contributions to these docs are always welcome and appreciated, from "
-"small corrections to whole new chapters."
+"Contributions to these docs are always welcome and appreciated, from small "
+"corrections to whole new chapters."
 msgstr ""
 
 #: ../../../contribute.rst:39
 msgid ""
 "This page will walk through the steps to create a new page or submit a "
 "correction.  The patch review process is the same as :doc:`for any other "
-"Jami project <how-to-submit-a-patch>`, so we will not explain every "
-"command."
+"Jami project <how-to-submit-a-patch>`, so we will not explain every command."
 msgstr ""
 
 #: ../../../contribute.rst:44
 msgid ""
-"By contributing to this documentation, you agree to make your "
-"contributions available under the :doc:`fdl`, Version 1.3 or any later "
-"version published by the Free Software Foundation; with no Invariant "
-"Sections, no Front-Cover Texts, and no Back-Cover Texts."
+"By contributing to this documentation, you agree to make your contributions "
+"available under the :doc:`fdl`, Version 1.3 or any later version published "
+"by the Free Software Foundation; with no Invariant Sections, no Front-Cover "
+"Texts, and no Back-Cover Texts."
 msgstr ""
 
 #: ../../../contribute.rst:50
 msgid ""
-"You are also promising that you are the author of your changes, or that "
-"you copied them from a work in the public domain or a work released under"
-" a free license that is compatible with the :doc:`fdl`.  DO NOT SUBMIT "
-"COPYRIGHTED WORK WITHOUT PERMISSION."
+"You are also promising that you are the author of your changes, or that you "
+"copied them from a work in the public domain or a work released under a free"
+" license that is compatible with the :doc:`fdl`.  DO NOT SUBMIT COPYRIGHTED "
+"WORK WITHOUT PERMISSION."
 msgstr ""
 
 #: ../../../contribute.rst:56
@@ -101,27 +99,24 @@ msgstr ""
 
 #: ../../../contribute.rst:61
 msgid ""
-"You will need Git installed and configured to use your SSH keypair, and "
-"an account on the `Jami Gerrit <https://review.jami.net>`_, where you "
-"would send your patches for review.  If you need help with this, see "
-":doc:`the beginning of our patch submission guide <how-to-"
-"submit-a-patch>` (TODO)."
+"You will need Git installed and configured to use your SSH keypair, and an "
+"account on the `Jami Gerrit <https://review.jami.net>`_, where you would "
+"send your patches for review.  If you need help with this, see :doc:`the "
+"beginning of our patch submission guide <how-to-submit-a-patch>` (TODO)."
 msgstr ""
 
 #: ../../../contribute.rst:67
 msgid ""
-"If you want to preview your changes locally in your web browser, you need"
-" to install `Sphinx <https://www.sphinx-doc.org>`_, the `Read the Docs "
-"Sphinx theme <https://sphinx-rtd-theme.readthedocs.io/en/stable/>`_, and "
-"the `MyST Markdown parser <https://myst-"
-"parser.readthedocs.io/en/latest/index.html>`_."
+"If you want to preview your changes locally in your web browser, you need to"
+" install `Sphinx <https://www.sphinx-doc.org>`_, the `Read the Docs Sphinx "
+"theme <https://sphinx-rtd-theme.readthedocs.io/en/stable/>`_, and the `MyST "
+"Markdown parser <https://myst-parser.readthedocs.io/en/latest/index.html>`_."
 msgstr ""
 
 #: ../../../contribute.rst:78
 msgid ""
 "If you want to use the auto-build and auto-refresh feature, also install "
-"`sphinx-autobuild <https://github.com/executablebooks/sphinx-"
-"autobuild>`_."
+"`sphinx-autobuild <https://github.com/executablebooks/sphinx-autobuild>`_."
 msgstr ""
 
 #: ../../../contribute.rst:86
@@ -134,9 +129,9 @@ msgstr ""
 
 #: ../../../contribute.rst:96
 msgid ""
-"You may want to checkout a new branch for each contribution/change before"
-" you make any change to the files, so that you could easily ``git pull`` "
-"any future changes from upstream into your main local branch:"
+"You may want to checkout a new branch for each contribution/change before "
+"you make any change to the files, so that you could easily ``git pull`` any "
+"future changes from upstream into your main local branch:"
 msgstr ""
 
 #: ../../../contribute.rst:106
@@ -145,10 +140,10 @@ msgstr ""
 
 #: ../../../contribute.rst:108
 msgid ""
-"Pages are written in either markdown or `reStructuredText <https://www"
-".sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_. You can "
-"click \"View page source\" at the top of any page to open the raw source "
-"of the page and see how it was written."
+"Pages are written in either markdown or `reStructuredText "
+"<https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_."
+" You can click \"View page source\" at the top of any page to open the raw "
+"source of the page and see how it was written."
 msgstr ""
 
 #: ../../../contribute.rst:113
@@ -165,8 +160,8 @@ msgstr ""
 
 #: ../../../contribute.rst:124
 msgid ""
-"You should now be able to view the documentation in your web browser.  "
-"The homepage is at ``_build/html/index.html``."
+"You should now be able to view the documentation in your web browser.  The "
+"homepage is at ``_build/html/index.html``."
 msgstr ""
 
 #: ../../../contribute.rst:127
@@ -177,8 +172,8 @@ msgstr ""
 
 #: ../../../contribute.rst:134
 msgid ""
-"Keep this running in the background, then navigate to "
-"http://127.0.0.1:8000 (*not* the local .html file)."
+"Keep this running in the background, then navigate to http://127.0.0.1:8000 "
+"(*not* the local .html file)."
 msgstr ""
 
 #: ../../../contribute.rst:138
@@ -199,10 +194,10 @@ msgstr ""
 
 #: ../../../contribute.rst:170
 msgid ""
-"The first time you try to push your changes, Gerrit will complain that "
-"you don't have a Change-Id in your commit, and provide an ``scp`` command"
-" to install the commit hook.  After running the command, you should be "
-"able to recommit and push your change:"
+"The first time you try to push your changes, Gerrit will complain that you "
+"don't have a Change-Id in your commit, and provide an ``scp`` command to "
+"install the commit hook.  After running the command, you should be able to "
+"recommit and push your change:"
 msgstr ""
 
 #: ../../../contribute.rst:182
@@ -213,8 +208,8 @@ msgstr ""
 msgid ""
 "A reviewer may ask you to make changes to your patch before merging it.  "
 "This is no problem!  Simply make the changes, ``git add`` them, and run "
-"``git commit --amend`` to modify the patch.  Note the ``--amend`` switch,"
-" which is needed to tell git to *amend*/tweak the existing newest commit "
+"``git commit --amend`` to modify the patch.  Note the ``--amend`` switch, "
+"which is needed to tell git to *amend*/tweak the existing newest commit "
 "rather than making a new commit.  This is the workflow for updating a "
 "proposed change when using Gerrit."
 msgstr ""
@@ -225,15 +220,14 @@ msgstr ""
 
 #: ../../../contribute.rst:194
 msgid ""
-"If you decide to add a whole new page to the documentation, you must also"
-" add it to the ``toctree`` directive of that chapter."
+"If you decide to add a whole new page to the documentation, you must also "
+"add it to the ``toctree`` directive of that chapter."
 msgstr ""
 
 #: ../../../contribute.rst:197
 msgid ""
 "For instance, if you added a new page called ``hosting-jams-on-aws-"
-"guide.md`` to the Jami user manual in the ``user`` folder, you should add"
-" it in the ``toctree`` directive of ``user/index.rst``, *without* the "
-"file extension:"
+"guide.md`` to the Jami user manual in the ``user`` folder, you should add it"
+" in the ``toctree`` directive of ``user/index.rst``, *without* the file "
+"extension:"
 msgstr ""
-
diff --git a/locales/fa/LC_MESSAGES/developer.po b/locales/fa/LC_MESSAGES/developer.po
index d3c6413561e89b2b8aef1ed40c5dc4cbf92d02cb..4f380079d61f8be1c5bca0ede212ff6d0ada7192 100644
--- a/locales/fa/LC_MESSAGES/developer.po
+++ b/locales/fa/LC_MESSAGES/developer.po
@@ -1,22 +1,27 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# Mohammad Amin Sameti <mamins1376@gmail.com>, 2022
+# Hamid reza Zaefarani, 2022
+# Amin Mahmudian, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../developer/account-management.md:1
 msgid "Account management"
@@ -24,10 +29,10 @@ msgstr ""
 
 #: ../../../developer/account-management.md:4
 msgid ""
-"In this part, we will learn how to manage a Ring account. This means, how"
-" to create a Ring account, modify the basic settings and delete the "
-"account. This part will *NOT* explain what all the settings mean or how "
-"we can use the account to do any action like adding a contact."
+"In this part, we will learn how to manage a Ring account. This means, how to"
+" create a Ring account, modify the basic settings and delete the account. "
+"This part will *NOT* explain what all the settings mean or how we can use "
+"the account to do any action like adding a contact."
 msgstr ""
 
 #: ../../../developer/account-management.md:6
@@ -48,8 +53,7 @@ msgstr ""
 
 #: ../../../developer/account-management.md:12
 msgid ""
-"The code related to this feature is located in "
-"`src/accountcreationwizard.*`"
+"The code related to this feature is located in `src/accountcreationwizard.*`"
 msgstr ""
 
 #: ../../../developer/account-management.md:14
@@ -81,16 +85,16 @@ msgstr ""
 
 #: ../../../developer/account-management.md:45
 msgid ""
-"The details can be retrieven from the method `getAccountTemplate(type)` "
-"with `type=RING` or `type=SIP`. For example, this is the following code "
-"used in LRC."
+"The details can be retrieven from the method `getAccountTemplate(type)` with"
+" `type=RING` or `type=SIP`. For example, this is the following code used in "
+"LRC."
 msgstr ""
 
 #: ../../../developer/account-management.md:72
 msgid ""
-"When a new account is added, the signal `accountsChanged` will be "
-"emitted. The client should update its internal structure after this "
-"signal with other methods in ConfigurationManager."
+"When a new account is added, the signal `accountsChanged` will be emitted. "
+"The client should update its internal structure after this signal with other"
+" methods in ConfigurationManager."
 msgstr ""
 
 #: ../../../developer/account-management.md:74
@@ -111,11 +115,11 @@ msgstr ""
 #: ../../../developer/account-management.md:80
 msgid ""
 "A Ring account is in fact represented by some files stored in a gzip "
-"archive. If a password is provided during the account creation, the "
-"archive will be encrypted as following: `dht::crypto::aesEncrypt(archive,"
-" password)` (`dht::crypto::aesEncrypt` is defined in OpenDHT and use "
-"`nettle/{aes,gcm}`). This is what the archive will contain a big JSON "
-"file with:"
+"archive. If a password is provided during the account creation, the archive "
+"will be encrypted as following: `dht::crypto::aesEncrypt(archive, password)`"
+" (`dht::crypto::aesEncrypt` is defined in OpenDHT and use "
+"`nettle/{aes,gcm}`). This is what the archive will contain a big JSON file "
+"with:"
 msgstr ""
 
 #: ../../../developer/account-management.md:82
@@ -134,8 +138,8 @@ msgstr ""
 
 #: ../../../developer/account-management.md:85
 msgid ""
-"The ethereum private key `ethKey` for the device. It's only used when you"
-" register your name on `ns.ring.cx`. Not mandatory."
+"The ethereum private key `ethKey` for the device. It's only used when you "
+"register your name on `ns.ring.cx`. Not mandatory."
 msgstr ""
 
 #: ../../../developer/account-management.md:86
@@ -163,38 +167,36 @@ msgstr ""
 
 #: ../../../developer/account-management.md:97
 msgid ""
-"Deleting a Ring account is pretty simple. Because the keys are only on "
-"the device, if the keys are deleted... the account is deleted! The only "
-"thing outside the device is the username, on the nameserver. To remove "
-"this info, it depends how the nameserver work. For example, it's not "
-"possible with https://ns.ring.cx"
+"Deleting a Ring account is pretty simple. Because the keys are only on the "
+"device, if the keys are deleted... the account is deleted! The only thing "
+"outside the device is the username, on the nameserver. To remove this info, "
+"it depends how the nameserver work. For example, it's not possible with "
+"https://ns.ring.cx"
 msgstr ""
 
 #: ../../../developer/account-management.md:103
 msgid ""
-"The code related to this feature is located in "
-"`newaccountsettingsview.cpp`"
+"The code related to this feature is located in `newaccountsettingsview.cpp`"
 msgstr ""
 
 #: ../../../developer/account-management.md:107
 msgid ""
 "The account deletion is in the *NewAccountModel* in "
-"`src/api/newaccountmodel.h` and `src/newaccountmodel.cpp` "
-"(`removeAccount`)"
+"`src/api/newaccountmodel.h` and `src/newaccountmodel.cpp` (`removeAccount`)"
 msgstr ""
 
 #: ../../../developer/account-management.md:128
 msgid ""
-"When the account is deleted, the signal `accountsChanged` will be "
-"emitted. The client should update its internal structure after this "
-"signal with other methods in ConfigurationManager."
+"When the account is deleted, the signal `accountsChanged` will be emitted. "
+"The client should update its internal structure after this signal with other"
+" methods in ConfigurationManager."
 msgstr ""
 
 #: ../../../developer/account-management.md:132
 msgid ""
-"The main logic to create a new account is located in `src/manager.cpp`, "
-"in `Manager::removeAccount`. It removes the accounts files and update the"
-" config (`dring.yml`)."
+"The main logic to create a new account is located in `src/manager.cpp`, in "
+"`Manager::removeAccount`. It removes the accounts files and update the "
+"config (`dring.yml`)."
 msgstr ""
 
 #: ../../../developer/account-management.md:134
@@ -216,8 +218,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:6
 msgid ""
 "The documentation related to the API of OpenDHT is "
-"[here](https://github.com/savoirfairelinux/opendht/wiki/API-Overview) and"
-" will not be detailed in the following part."
+"[here](https://github.com/savoirfairelinux/opendht/wiki/API-Overview) and "
+"will not be detailed in the following part."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:8
@@ -229,16 +231,17 @@ msgid "The managers"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:12
-msgid "The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
+msgid ""
+"The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:13
 msgid ""
-"The **CallManager** interface is used to manage call and conference "
-"related actions. Since the Jami daemon supports multiple "
-"incoming/outgoing calls, any actions involving a specific call must "
-"address the method by the means of a unique callID.  Jami daemon will "
-"generate a unique callID for outgoing and incoming calls."
+"The **CallManager** interface is used to manage call and conference related "
+"actions. Since the Jami daemon supports multiple incoming/outgoing calls, "
+"any actions involving a specific call must address the method by the means "
+"of a unique callID.  Jami daemon will generate a unique callID for outgoing "
+"and incoming calls."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:14
@@ -257,9 +260,9 @@ msgstr ""
 
 #: ../../../developer/apis-of-jami.md:17
 msgid ""
-"The **Instance** is used to count the number of clients actually "
-"registered to the core. When initializing your client, you need to "
-"register it against the core by using this interface."
+"The **Instance** is used to count the number of clients actually registered "
+"to the core. When initializing your client, you need to register it against "
+"the core by using this interface."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:19
@@ -363,8 +366,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:50
 msgid ""
 "All the documentation and code for the Node JS API is located in `jami-"
-"daemon/bin/nodejs`. This API is not used in any known project and maybe "
-"is not up-to-date."
+"daemon/bin/nodejs`. This API is not used in any known project and maybe is "
+"not up-to-date."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:52
@@ -374,8 +377,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:54
 msgid ""
 "All the documentation and code for the REST API is located in `jami-"
-"daemon/bin/restcpp`. This API is not used in any known project and maybe "
-"is not up-to-date."
+"daemon/bin/restcpp`. This API is not used in any known project and maybe is "
+"not up-to-date."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:56
@@ -384,14 +387,14 @@ msgstr ""
 
 #: ../../../developer/apis-of-jami.md:58
 msgid ""
-"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This "
-"wrapper uses DBus."
+"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This wrapper "
+"uses DBus."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:60
 msgid ""
-"This is, for example a quick and dirty IRC bot to interact with Jami made"
-" with this API:"
+"This is, for example a quick and dirty IRC bot to interact with Jami made "
+"with this API:"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:62
@@ -434,8 +437,8 @@ msgstr ""
 
 #: ../../../developer/banned-contacts.md:4
 msgid ""
-"Following information are here for development purposes and may not "
-"reflect the current state of any Ring client."
+"Following information are here for development purposes and may not reflect "
+"the current state of any Ring client."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:7
@@ -448,13 +451,13 @@ msgstr ""
 
 #: ../../../developer/banned-contacts.md:12
 msgid ""
-"Alice and Jessica are friends, and like all good friends do, they use "
-"Ring to communicate. They are both Ring contact of each other, so Alice "
-"is a contact of Jessica and Jessica is a contact of Alice. Some day "
-"however, Jessica does something really bad to Alice and Alice doesn't "
-"want to hear from her anymore. Instead of removing Jessica from her Ring "
-"contacts -- which would still allow Jessica to send her contact requests,"
-" Alice *bans* Jessica."
+"Alice and Jessica are friends, and like all good friends do, they use Ring "
+"to communicate. They are both Ring contact of each other, so Alice is a "
+"contact of Jessica and Jessica is a contact of Alice. Some day however, "
+"Jessica does something really bad to Alice and Alice doesn't want to hear "
+"from her anymore. Instead of removing Jessica from her Ring contacts -- "
+"which would still allow Jessica to send her contact requests, Alice *bans* "
+"Jessica."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:20
@@ -473,8 +476,8 @@ msgstr ""
 msgid ""
 "As a *banned contact* of Alice, Jessica *won't be allowed to contact her "
 "anymore*, in any way. Text messages, voice or video calls won't be "
-"acknowledged or answered in any way. Alice won't even be aware that "
-"Jessica tried to contact her."
+"acknowledged or answered in any way. Alice won't even be aware that Jessica "
+"tried to contact her."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:32
@@ -489,13 +492,14 @@ msgstr ""
 msgid ""
 "As long as Jessica is a banned contact, the conversation with Jessica "
 "doesn't appears in the conversations list. The conversation history, "
-"however, is not deleted. Jessica appears in Alice' account banned contact"
-" list. Alice might also find/open the conversation by performing an exact"
-" search for Jessica' username."
+"however, is not deleted. Jessica appears in Alice' account banned contact "
+"list. Alice might also find/open the conversation by performing an exact "
+"search for Jessica' username."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:43
-msgid "Alice can un-ban Jessica from the conversation or the banned contact list."
+msgid ""
+"Alice can un-ban Jessica from the conversation or the banned contact list."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:46
@@ -514,12 +518,12 @@ msgstr ""
 #: ../../../developer/calls.md:1
 #: ../../../developer/synchronizing-profiles.md:19
 msgid "Calls"
-msgstr ""
+msgstr "تماس‌ها"
 
 #: ../../../developer/calls.md:4
 msgid ""
-"**NOTE: this page detail the principle for Jami accounts. For SIP "
-"accounts, the SIP protocol is used.**"
+"**NOTE: this page detail the principle for Jami accounts. For SIP accounts, "
+"the SIP protocol is used.**"
 msgstr ""
 
 #: ../../../developer/calls.md:6
@@ -536,8 +540,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:12
 msgid ""
-"Search the contact presence on the DHT (for more details, see {doc"
-"}`contact-management`)"
+"Search the contact presence on the DHT (for more details, see {doc}`contact-"
+"management`)"
 msgstr ""
 
 #: ../../../developer/calls.md:13
@@ -555,8 +559,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:15
 msgid ""
-"Negotiate the socket via ICE. In fact, two ICE sessions are negotiated. "
-"One (preferred) in TCP, one in UDP (as a fallback)."
+"Negotiate the socket via ICE. In fact, two ICE sessions are negotiated. One "
+"(preferred) in TCP, one in UDP (as a fallback)."
 msgstr ""
 
 #: ../../../developer/calls.md:16
@@ -565,9 +569,9 @@ msgstr ""
 
 #: ../../../developer/calls.md:17
 msgid ""
-"The contact is now able to accept or decline the call. When they accept, "
-"a ICE transport (UDP only for now) is negotiated to create 4 new sockets "
-"for the medias (2 for audio, 2 for video)."
+"The contact is now able to accept or decline the call. When they accept, a "
+"ICE transport (UDP only for now) is negotiated to create 4 new sockets for "
+"the medias (2 for audio, 2 for video)."
 msgstr ""
 
 #: ../../../developer/calls.md:18
@@ -581,33 +585,33 @@ msgstr ""
 #: ../../../developer/calls.md:22
 msgid ""
 "Everything really starts in `jamiaccount.cpp` "
-"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and "
-"when the contact is found via the DHT, the call request for the contact "
-"is crafted. This request contains all the informations necessary for the "
-"remote ICE session defined by:"
+"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and when"
+" the contact is found via the DHT, the call request for the contact is "
+"crafted. This request contains all the informations necessary for the remote"
+" ICE session defined by:"
 msgstr ""
 
 #: ../../../developer/calls.md:28
 msgid ""
 "where `callvid` is a random number used to identify the call and blob "
 "contains two concatened ICE messages (`IceTransport::packIceMsg` in "
-"`ice_transport.cpp`) containing the password of the session, the *ufrag* "
-"and ICE candidates.) like:"
+"`ice_transport.cpp`) containing the password of the session, the *ufrag* and"
+" ICE candidates.) like:"
 msgstr ""
 
 #: ../../../developer/calls.md:48
 msgid ""
 "and is sent via the DHT in an encrypted message for the device to "
-"`hash(callto:xxxxxx)` where `xxxxxx` is the device id. The peer will "
-"answer at the exact same place (but encrypted for the sender device) its "
-"own `dht::IceCandidates`. See `JamiAccount::replyToIncomingIceMsg` for "
-"more details."
+"`hash(callto:xxxxxx)` where `xxxxxx` is the device id. The peer will answer "
+"at the exact same place (but encrypted for the sender device) its own "
+"`dht::IceCandidates`. See `JamiAccount::replyToIncomingIceMsg` for more "
+"details."
 msgstr ""
 
 #: ../../../developer/calls.md:50
 msgid ""
-"The ICE session is created both side when they have all the candidates "
-"(so for the sender, when the reply from the contact is received)."
+"The ICE session is created both side when they have all the candidates (so "
+"for the sender, when the reply from the contact is received)."
 msgstr ""
 
 #: ../../../developer/calls.md:52
@@ -616,13 +620,13 @@ msgstr ""
 
 #: ../../../developer/calls.md:54
 msgid ""
-"Pending calls are managed by `JamiAccount::handlePendingCallList()`, "
-"which first wait that the TCP negotiation finish (and if it fails, wait "
-"for the UDP one). The code for the ICE negotiation is mainly managed by "
+"Pending calls are managed by `JamiAccount::handlePendingCallList()`, which "
+"first wait that the TCP negotiation finish (and if it fails, wait for the "
+"UDP one). The code for the ICE negotiation is mainly managed by "
 "[pjproject](https://github.com/pjsip/pjproject) but for Jami, the "
-"interesting part is located in `ice_transport.cpp`. Moreover, we add some"
-" important patches/features on top of *pjproject* not merged upstream for"
-" now (for example, ICE over TCP). These patches are present in "
+"interesting part is located in `ice_transport.cpp`. Moreover, we add some "
+"important patches/features on top of *pjproject* not merged upstream for now"
+" (for example, ICE over TCP). These patches are present in "
 "`contrib/src/pjproject`."
 msgstr ""
 
@@ -632,13 +636,12 @@ msgstr ""
 
 #: ../../../developer/calls.md:58
 msgid ""
-"Once the socket is created and managed by an **IceTransport** instance, "
-"it is then wrapped in a **SipTransport** corresponding to a "
-"*TlsIceTransport*. The main code is located into "
-"`JamiAccount::handlePendingCall()` and the wrapping is done into "
-"`SipTransportBroker::getTlsIceTransport`. Finally, our session is managed"
-" by **TlsSession** in `daemon/src/security/tls_session.cpp` and uses the "
-"GnuTLS library."
+"Once the socket is created and managed by an **IceTransport** instance, it "
+"is then wrapped in a **SipTransport** corresponding to a *TlsIceTransport*. "
+"The main code is located into `JamiAccount::handlePendingCall()` and the "
+"wrapping is done into `SipTransportBroker::getTlsIceTransport`. Finally, our"
+" session is managed by **TlsSession** in "
+"`daemon/src/security/tls_session.cpp` and uses the GnuTLS library."
 msgstr ""
 
 #: ../../../developer/calls.md:60
@@ -653,8 +656,8 @@ msgstr ""
 #: ../../../developer/calls.md:62
 msgid ""
 "The control socket is used to transmit SIP packets, like invites, custom "
-"messages (Jami sends the VCard of your profile on this socket at the "
-"start of the call, or the rotation of the camera), text messages."
+"messages (Jami sends the VCard of your profile on this socket at the start "
+"of the call, or the rotation of the camera), text messages."
 msgstr ""
 
 #: ../../../developer/calls.md:64 ../../../developer/jami-plugins.md:294
@@ -675,8 +678,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:71
 msgid ""
-"Media sockets are SRTP sockets where the key is negotiated through the "
-"TLS Session previously created. **TODO**"
+"Media sockets are SRTP sockets where the key is negotiated through the TLS "
+"Session previously created. **TODO**"
 msgstr ""
 
 #: ../../../developer/calls.md:74
@@ -704,16 +707,15 @@ msgstr ""
 
 #: ../../../developer/calls.md:88
 msgid ""
-"The first part is to negotiate enough media streams.  In fact, every "
-"media stream uses 2 UDP sockets.  We consider three scenarios:"
+"The first part is to negotiate enough media streams.  In fact, every media "
+"stream uses 2 UDP sockets.  We consider three scenarios:"
 msgstr ""
 
 #: ../../../developer/calls.md:91
 msgid ""
-"If it's the host of a conference who wants to add media, there is nothing"
-" more to negotiate, because we already mix the videos into one stream.  "
-"So, we add the new media directly to the video-mixer without "
-"negotiations."
+"If it's the host of a conference who wants to add media, there is nothing "
+"more to negotiate, because we already mix the videos into one stream.  So, "
+"we add the new media directly to the video-mixer without negotiations."
 msgstr ""
 
 #: ../../../developer/calls.md:96
@@ -729,8 +731,8 @@ msgstr ""
 #: ../../../developer/calls.md:101
 msgid ""
 "To make pjsip able to generate more sockets per ICE session, "
-"`PJ_ICE_COMP_BITS` was modified to `5` (which corresponds to `2^5`, so 32"
-" streams)."
+"`PJ_ICE_COMP_BITS` was modified to `5` (which corresponds to `2^5`, so 32 "
+"streams)."
 msgstr ""
 
 #: ../../../developer/calls.md:105
@@ -753,8 +755,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:159
 msgid ""
-"If a call is done with a peer where the daemon's version is < 13.3.0, "
-"multi-stream is not enabled and the old behavior is used (1 video only)."
+"If a call is done with a peer where the daemon's version is < 13.3.0, multi-"
+"stream is not enabled and the old behavior is used (1 video only)."
 msgstr ""
 
 #: ../../../developer/calls.md:163
@@ -763,9 +765,9 @@ msgstr ""
 
 #: ../../../developer/calls.md:165
 msgid ""
-"Because there can be multiple streams now, every media stream is "
-"identified by its identifier, and the format is \"<type>_<idx>\"; for "
-"example: \"audio_0\", \"video_2\", etc."
+"Because there can be multiple streams now, every media stream is identified "
+"by its identifier, and the format is \"<type>_<idx>\"; for example: "
+"\"audio_0\", \"video_2\", etc."
 msgstr ""
 
 #: ../../../developer/calls.md:169
@@ -787,7 +789,7 @@ msgstr ""
 
 #: ../../../developer/calls.md:215
 msgid "Conference"
-msgstr ""
+msgstr "نشست"
 
 #: ../../../developer/calls.md:217
 msgid "Reflected changes are documented {doc}`here <conference-protocol>`."
@@ -799,17 +801,17 @@ msgstr ""
 
 #: ../../../developer/calls.md:221
 msgid ""
-"Even if the back-end supports up to 32 media at the same time, except for"
-" custom clients we currently recommend only giving the ability to share "
-"one camera and one video at the same time.  The camera is controlled via "
-"the camera button, and the other media via the \"Share\" button."
+"Even if the back-end supports up to 32 media at the same time, except for "
+"custom clients we currently recommend only giving the ability to share one "
+"camera and one video at the same time.  The camera is controlled via the "
+"camera button, and the other media via the \"Share\" button."
 msgstr ""
 
 #: ../../../developer/calls.md:227
 msgid ""
 "In client-qt, the interesting part is in `AvAdapter` (methods like "
-"`isCapturing`, `shareAllScreens`, `stopSharing`).  In the library's "
-"logic, `addMedia` and `removeMedia` in the `callModel` directly use the "
+"`isCapturing`, `shareAllScreens`, `stopSharing`).  In the library's logic, "
+"`addMedia` and `removeMedia` in the `callModel` directly use the "
 "`requestMediaChange` and can be used as a design reference."
 msgstr ""
 
@@ -823,16 +825,15 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:6
 msgid ""
-"This page aims to describe how call will works with groups. This method "
-"will allow clients to provides call for multiple participants with a "
-"shared text history. The protocol must be flexible, keep compatibility "
-"with the SIP stack, adn must work in a distributed environment. This "
-"distributed environment also brings some challenges, such as possible "
-"race conditions (where multiple parties can start a call at the same "
-"time). Finally, because the Swarm can be with members only using mobiles,"
-" or by companies with dedicated servers to mix the video, it should also "
-"be able to work with the best experience possible on heterogeneous "
-"environment."
+"This page aims to describe how call will works with groups. This method will"
+" allow clients to provides call for multiple participants with a shared text"
+" history. The protocol must be flexible, keep compatibility with the SIP "
+"stack, adn must work in a distributed environment. This distributed "
+"environment also brings some challenges, such as possible race conditions "
+"(where multiple parties can start a call at the same time). Finally, because"
+" the Swarm can be with members only using mobiles, or by companies with "
+"dedicated servers to mix the video, it should also be able to work with the "
+"best experience possible on heterogeneous environment."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:8
@@ -841,7 +842,8 @@ msgid "Definitions"
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:10
-msgid "a **Rendezvous** will mix all authorized incoming calls in a conference."
+msgid ""
+"a **Rendezvous** will mix all authorized incoming calls in a conference."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:11
@@ -870,8 +872,8 @@ msgstr ""
 #: ../../../developer/calls-in-swarm.md:17
 msgid ""
 "Note: those two URIs allow the client to place a call in order to join a "
-"*Rendezvous* or to init a call to a swarm, resulting in the logic "
-"described in the next section."
+"*Rendezvous* or to init a call to a swarm, resulting in the logic described "
+"in the next section."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:19
@@ -931,10 +933,10 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:38
 msgid ""
-"When receiving a new incoming call, the URI MUST be parsed. If the "
-"incoming call is for a *Rendezvous* which is currently hosted by the "
-"device and the caller is authorized to join, the call MUST be answered "
-"and added to the current *Rendezvous*"
+"When receiving a new incoming call, the URI MUST be parsed. If the incoming "
+"call is for a *Rendezvous* which is currently hosted by the device and the "
+"caller is authorized to join, the call MUST be answered and added to the "
+"current *Rendezvous*"
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:41
@@ -943,11 +945,11 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:43
 msgid ""
-"To define a default URI, the member who wants to be the host should "
-"update the profile of the conversation, and this will be synced and "
-"validated by peers. However, the host MUST be able to accept or not to be"
-" the host and a member with enough permissions SHOULD be able to ask a "
-"device to be the host. This process is not decided for now."
+"To define a default URI, the member who wants to be the host should update "
+"the profile of the conversation, and this will be synced and validated by "
+"peers. However, the host MUST be able to accept or not to be the host and a "
+"member with enough permissions SHOULD be able to ask a device to be the "
+"host. This process is not decided for now."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:45
@@ -966,8 +968,8 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:51
 msgid ""
-"Members of the swarm that aren't in a call SHOULD be able to know who is "
-"in the active calls."
+"Members of the swarm that aren't in a call SHOULD be able to know who is in "
+"the active calls."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:53
@@ -977,8 +979,8 @@ msgstr ""
 #: ../../../developer/calls-in-swarm.md:55
 msgid ""
 "Because conferences are still mixed SIP calls, a SIP bridge is still "
-"possible. In the *Swarm's profile* it should be possible to add a SIP "
-"entry, like some popular VoIP systems)"
+"possible. In the *Swarm's profile* it should be possible to add a SIP entry,"
+" like some popular VoIP systems)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:1
@@ -1002,9 +1004,9 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:8
 msgid ""
-"It is not necessary to aim for an optimal quality (CRF < 20) because "
-"beyond that, the visual perception is almost similar while the data flow "
-"(bitrate) required is much higher."
+"It is not necessary to aim for an optimal quality (CRF < 20) because beyond "
+"that, the visual perception is almost similar while the data flow (bitrate) "
+"required is much higher."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:10
@@ -1013,8 +1015,8 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:11
 msgid ""
-"The purpose of this document is to verify the impact of a change in video"
-" quality with the CRF parameter of the encoder."
+"The purpose of this document is to verify the impact of a change in video "
+"quality with the CRF parameter of the encoder."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:13
@@ -1067,16 +1069,16 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:29
 msgid ""
-"Thanks to this test we can estimate the bitrate that will be emitted in "
-"Jami according to the chosen parameters. We also have an overview of the "
-"visual quality."
+"Thanks to this test we can estimate the bitrate that will be emitted in Jami"
+" according to the chosen parameters. We also have an overview of the visual "
+"quality."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:33
 msgid ""
 "1080p / 300 kbit/s / CRF28 ![image](images/choosing-crf-1080p-300kbps-"
-"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-crf-1080p-"
-"300kbps-crf38.png)"
+"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-"
+"crf-1080p-300kbps-crf38.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:33
@@ -1098,8 +1100,8 @@ msgstr ""
 #: ../../../developer/choosing-crf-value-for-encoder.md:40
 msgid ""
 "1080p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-1080p-1.5mbps-"
-"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-"
-"1080p-1.5mbps-crf30.png)"
+"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-"
+"crf-1080p-1.5mbps-crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:45
@@ -1110,9 +1112,8 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:47
 msgid ""
-"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-"
-"crf17.png)  1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-"
-"6mbps-crf23.png)"
+"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-crf17.png)  "
+"1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:52
@@ -1121,23 +1122,22 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:56
 msgid ""
-"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-"
-"crf28.png) 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-"
-"300kbps-crf38.png) Visual comparison (CRF28 left / CRF38 right)"
+"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-crf28.png)"
+" 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-300kbps-"
+"crf38.png) Visual comparison (CRF28 left / CRF38 right)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:62
 msgid ""
-"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-"
-"crf22.png) 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) "
-"![image](images/choosing-crf-720p-1.5mbps-crf30.png)"
+"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-crf22.png)"
+" 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) ![image](images/choosing-"
+"crf-720p-1.5mbps-crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:69
 msgid ""
 "720p / 6 Mbps / CRF17 ![image](images/choosing-crf-720p-6mbps-crf17.png) "
-"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-"
-"crf23.png)"
+"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:74
@@ -1147,9 +1147,9 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:78
 msgid ""
-"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-"
-"crf28.png) 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-"
-"300kbps-crf38.png)"
+"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-crf28.png)"
+" 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-300kbps-"
+"crf38.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:83
@@ -1158,16 +1158,15 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:85
 msgid ""
-"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-"
-"crf22.png) 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1"
-".5mbps-crf30.png)"
+"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-crf22.png)"
+" 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1.5mbps-"
+"crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:92
 msgid ""
 "436p / 6 Mbps / CRF17 ![image](images/choosing-crf-436p-6mbps-crf17.png) "
-"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-"
-"crf23.png)"
+"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/coding-style.md:1
@@ -1183,8 +1182,7 @@ msgstr ""
 #: ../../../developer/coding-style.md:7
 msgid ""
 "C++ format rules are defined by this clang-format file: "
-"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-"
-"format"
+"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-format"
 msgstr ""
 
 #: ../../../developer/coding-style.md:10
@@ -1201,10 +1199,10 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:3
 msgid ""
 "This document aims to describe the evolutions we will do for managing "
-"conferences (audio/video). The goal is to improve the current "
-"implementation which simply merges SIP calls and provide a grid view, to "
-"a view where participants are listed, can be muted independently, or the "
-"video layout changed (to show only one participant)"
+"conferences (audio/video). The goal is to improve the current implementation"
+" which simply merges SIP calls and provide a grid view, to a view where "
+"participants are listed, can be muted independently, or the video layout "
+"changed (to show only one participant)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:7
@@ -1222,8 +1220,8 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:12
 msgid ""
 "This document only describes the first steps for now. This means the "
-"identification of participants and position in the video mixer sent to "
-"all participants."
+"identification of participants and position in the video mixer sent to all "
+"participants."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:14
@@ -1235,7 +1233,8 @@ msgid "GRID: Every member is shown with the same height/width"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:17
-msgid "ONE_BIG_WITH_SMALL: One member is zoomed and the other preview is shown"
+msgid ""
+"ONE_BIG_WITH_SMALL: One member is zoomed and the other preview is shown"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:18
@@ -1249,15 +1248,16 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:38
-#: ../../../developer/conference-protocol.md:95 ../../../developer/swarm.md:490
+#: ../../../developer/conference-protocol.md:95
+#: ../../../developer/swarm.md:490
 msgid "Implementation"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:40
 msgid ""
 "The implementation is pretty straightforward. Everything is managed by "
-"`conference.cpp` (to link participant to sources) and `video_mixer.cpp` "
-"(to render the wanted layout)."
+"`conference.cpp` (to link participant to sources) and `video_mixer.cpp` (to "
+"render the wanted layout)."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:43
@@ -1267,22 +1267,22 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:45
 msgid ""
 "Note: Actually, the word participant is used for callId mixed in a "
-"conference. This can lead at first to some problems for the API and must "
-"be fixed in the future"
+"conference. This can lead at first to some problems for the API and must be "
+"fixed in the future"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:47
 msgid ""
 "The goal is to notify all participants of the metadata of the rendered "
-"video. This means what participant is in the conference and where the "
-"video is located."
+"video. This means what participant is in the conference and where the video "
+"is located."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:49
 msgid ""
-"If a participant is itself a conference, its incoming layout info should "
-"be merged when sent to other participants. Layout info must not be merged"
-" when sent back to a conference."
+"If a participant is itself a conference, its incoming layout info should be "
+"merged when sent to other participants. Layout info must not be merged when "
+"sent back to a conference."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:51
@@ -1291,8 +1291,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:53
 msgid ""
-"The Layout is stored as a VectorMapStringString for clients and "
-"internally with a vector<ParticipantInfo> with the following format:"
+"The Layout is stored as a VectorMapStringString for clients and internally "
+"with a vector<ParticipantInfo> with the following format:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:67
@@ -1365,16 +1365,16 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:87
 msgid ""
-"A new method (in CallManager) and a new signal to respectively get "
-"current conference infos and updates are available:"
+"A new method (in CallManager) and a new signal to respectively get current "
+"conference infos and updates are available:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:97
 msgid ""
-"The `Conference` Object (which only exists if we mix calls, this means "
-"that we are the master) manages the information for the whole conference,"
-" based on the LayoutInfos of each `Call` object. The getConferenceInfos "
-"will retrieve info directly from this object."
+"The `Conference` Object (which only exists if we mix calls, this means that "
+"we are the master) manages the information for the whole conference, based "
+"on the LayoutInfos of each `Call` object. The getConferenceInfos will "
+"retrieve info directly from this object."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:99
@@ -1385,14 +1385,14 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:101
 msgid ""
-"The master of a conference sends its info via the SIP channel as a "
-"message with the following MIME type: `application/confInfo+json`"
+"The master of a conference sends its info via the SIP channel as a message "
+"with the following MIME type: `application/confInfo+json`"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:104
 msgid ""
-"So, if a call receives some confInfo, we know that this call is a member "
-"of a conference."
+"So, if a call receives some confInfo, we know that this call is a member of "
+"a conference."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:106
@@ -1417,8 +1417,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:114
 msgid ""
-"It should handle orders at multiple levels. In fact for a conference the "
-"is 3 levels to define a participant:"
+"It should handle orders at multiple levels. In fact for a conference the is "
+"3 levels to define a participant:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:115
@@ -1431,12 +1431,13 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:117
 msgid ""
-"Medias, because there can be multiple videos by devices (eg 1 camera and "
-"1 screen sharing)"
+"Medias, because there can be multiple videos by devices (eg 1 camera and 1 "
+"screen sharing)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:119
-msgid "To save bandwidth, clients should be able to send multiple orders at once."
+msgid ""
+"To save bandwidth, clients should be able to send multiple orders at once."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:121
@@ -1446,8 +1447,8 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:123
 msgid ""
 "To change a layout, the moderator can send a payload with "
-"\"application/confOrder+json\" as type: where **0** is a grid, **1** is "
-"one user in big, others in small, **2** is one in big"
+"\"application/confOrder+json\" as type: where **0** is a grid, **1** is one "
+"user in big, others in small, **2** is one in big"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:126
@@ -1456,8 +1457,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:128
 msgid ""
-"For now, there is no action supported, however, in the future `moderator:"
-" true/false` should be handled to change a moderator."
+"For now, there is no action supported, however, in the future `moderator: "
+"true/false` should be handled to change a moderator."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:130
@@ -1465,13 +1466,14 @@ msgid "Device's actions"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:132
-msgid "`hangup: true` to hangup a device from the conference (only moderators)"
+msgid ""
+"`hangup: true` to hangup a device from the conference (only moderators)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:133
 msgid ""
-"`raisehand: true/false` to change the raise hand's status. Only doable by"
-" the device itself, else dropped."
+"`raisehand: true/false` to change the raise hand's status. Only doable by "
+"the device itself, else dropped."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:135
@@ -1479,7 +1481,8 @@ msgid "Media's actions"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:137
-msgid "`muteAudio` only doable by moderators to mute the audio of a participant"
+msgid ""
+"`muteAudio` only doable by moderators to mute the audio of a participant"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:138
@@ -1492,12 +1495,12 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:140
 msgid ""
-"`voiceActivity` to indiciate a media stream's voice activity status (only"
-" relevant for audio)"
+"`voiceActivity` to indiciate a media stream's voice activity status (only "
+"relevant for audio)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:142
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Example"
 msgstr ""
 
@@ -1507,9 +1510,9 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:169
 msgid ""
-"Note: the type of the media should be included in conferences "
-"informations and can be used for the client to improve display (e.g. do "
-"not crop screen sharing)"
+"Note: the type of the media should be included in conferences informations "
+"and can be used for the client to improve display (e.g. do not crop screen "
+"sharing)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:172
@@ -1548,9 +1551,9 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:186
 msgid ""
-"It's likely that the protocol will evolve for future needs. I believe "
-"it's best if we have a \"version\" field. The older version will be "
-"recognized if this field is missing."
+"It's likely that the protocol will evolve for future needs. I believe it's "
+"best if we have a \"version\" field. The older version will be recognized if"
+" this field is missing."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:1
@@ -1566,21 +1569,20 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:6
 msgid ""
-"The connection manager is the first piece of the group chat features. "
-"This class manages connections to peers and offer to the user multiplexed"
-" sockets to devices they want to connect. For example, if Alice wants to "
-"be connected to one of Bob's device to transfer 2 files, she will ask the"
-" ConnectionManager to open 2 channels (one per file) to Bob. This will "
-"give:"
+"The connection manager is the first piece of the group chat features. This "
+"class manages connections to peers and offer to the user multiplexed sockets"
+" to devices they want to connect. For example, if Alice wants to be "
+"connected to one of Bob's device to transfer 2 files, she will ask the "
+"ConnectionManager to open 2 channels (one per file) to Bob. This will give:"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:24
 msgid ""
-"Behind that, the ConnectionManager will first connect to Bob's device via"
-" the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a "
-"channel, and when the channel is ready, inform Alice via a callback. For "
-"the second file, it will use the first socket and will just open a new "
-"channel (only needs 2 TLS packet, so it's fast)"
+"Behind that, the ConnectionManager will first connect to Bob's device via "
+"the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a channel, "
+"and when the channel is ready, inform Alice via a callback. For the second "
+"file, it will use the first socket and will just open a new channel (only "
+"needs 2 TLS packet, so it's fast)"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:26
@@ -1595,8 +1597,8 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:30
 msgid ""
-"However, when a side receives a new ICE request, the callback set by ` "
-"void onICERequest(onICERequestCallback&& cb);` is triggered."
+"However, when a side receives a new ICE request, the callback set by ` void "
+"onICERequest(onICERequestCallback&& cb);` is triggered."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:32
@@ -1605,15 +1607,14 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:34
 msgid ""
-"A channel is defined by an id (unique) and a uri (not unique). For "
-"example (1, 'git://*')"
+"A channel is defined by an id (unique) and a uri (not unique). For example "
+"(1, 'git://*')"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:36
 msgid ""
-"When ready, the ConnectionManager considers that the channel 0 exists. "
-"This channel is called the *CONTROL* channel and is used to ask for new "
-"channels."
+"When ready, the ConnectionManager considers that the channel 0 exists. This "
+"channel is called the *CONTROL* channel and is used to ask for new channels."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:38
@@ -1638,15 +1639,14 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:46
 msgid ""
-"To ask for a new channel, the ConnectionManager will send a "
-"`ChannelRequest` object (msgpack is used to serialize the struct) in the "
-"channel 0 to send the id and the name of the new channel to the peer "
-"(with `isAnswer = false`). The peer will call the callback given with ̀"
-"    void onChannelRequest(ChannelRequestCallBack&& cb);` and will refuse "
-"or accept the request. If accepted, the peer will answer with a "
-"ChannelRequest with the same data (and ̀`isAnswer = true`) and then both "
-"peers callbacks will be triggered to inform that the ChannelSock is "
-"usable."
+"To ask for a new channel, the ConnectionManager will send a `ChannelRequest`"
+" object (msgpack is used to serialize the struct) in the channel 0 to send "
+"the id and the name of the new channel to the peer (with `isAnswer = "
+"false`). The peer will call the callback given with ̀    void "
+"onChannelRequest(ChannelRequestCallBack&& cb);` and will refuse or accept "
+"the request. If accepted, the peer will answer with a ChannelRequest with "
+"the same data (and ̀`isAnswer = true`) and then both peers callbacks will be"
+" triggered to inform that the ChannelSock is usable."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:48
@@ -1654,7 +1654,8 @@ msgid "Closing a channel"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:50
-msgid "A *EOF* is transmitted for a channel if the length of the content is 0."
+msgid ""
+"A *EOF* is transmitted for a channel if the length of the content is 0."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:52
@@ -1676,7 +1677,8 @@ msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:58
-msgid "MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
+msgid ""
+"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:59
@@ -1717,10 +1719,9 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:4
 msgid ""
-"This section will present how to find and add a contact from the DHT to "
-"the client. The usage of a name server will not be explained here.  If "
-"you'd like more details about that, please read {doc}`name-server-"
-"protocol`."
+"This section will present how to find and add a contact from the DHT to the "
+"client. The usage of a name server will not be explained here.  If you'd "
+"like more details about that, please read {doc}`name-server-protocol`."
 msgstr ""
 
 #: ../../../developer/contact-management.md:6
@@ -1733,22 +1734,21 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:10
 msgid ""
-"The presence is pretty simple to announce on the DHT. In fact, it's just "
-"a value containing the device hash (see the previous section, {doc"
-"}`account-management`) on the hash corresponding to the fingerprint of "
-"the key. So, if we have the account "
-"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the device "
-"`62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined value "
-"will be sent over the DHT:"
+"The presence is pretty simple to announce on the DHT. In fact, it's just a "
+"value containing the device hash (see the previous section, {doc}`account-"
+"management`) on the hash corresponding to the fingerprint of the key. So, if"
+" we have the account `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the "
+"device `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined "
+"value will be sent over the DHT:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:29
 msgid ""
 "(This value can be put with `dht_.put(h, VALUE, dht::DoneCallback{}, {}, "
 "true);`, as a permanent put). If the device is announced, the device is "
-"present. For now, there is no way to delete or edit a value on the DHT "
-"(this will come when OpenDHT will supports ECC). So, the presence always "
-"have a delay for now (mean delay: expire-time/2, so 2min30 for now)."
+"present. For now, there is no way to delete or edit a value on the DHT (this"
+" will come when OpenDHT will supports ECC). So, the presence always have a "
+"delay for now (mean delay: expire-time/2, so 2min30 for now)."
 msgstr ""
 
 #: ../../../developer/contact-management.md:31
@@ -1757,13 +1757,13 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:33
 msgid ""
-"Now our presence on the network, it's time to get if somebody is present "
-"on the DHT. With the previous section, it's easy to do the reverse "
-"process. To know if somebody is present on the DHT (ex: "
+"Now our presence on the network, it's time to get if somebody is present on "
+"the DHT. With the previous section, it's easy to do the reverse process. To "
+"know if somebody is present on the DHT (ex: "
 "`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9`), we have to get value at "
 "`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` and retrieve the "
-"`DeviceAnnouncement` on this hash. The related code in the ring daemon is"
-" in `ringaccount.cpp`:"
+"`DeviceAnnouncement` on this hash. The related code in the ring daemon is in"
+" `ringaccount.cpp`:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:66
@@ -1784,8 +1784,8 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:74
 msgid ""
-"Finally, once the trust request is crafted, we can push the request to "
-"the following hash: `InfoHash(\"inbox:\" + deviceId)`"
+"Finally, once the trust request is crafted, we can push the request to the "
+"following hash: `InfoHash(\"inbox:\" + deviceId)`"
 msgstr ""
 
 #: ../../../developer/contact-management.md:76
@@ -1812,14 +1812,14 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:120
 msgid ""
-"All methods and signals used to manage trust requests and contacts are in"
-" the `ConfigurationManager` such as:"
+"All methods and signals used to manage trust requests and contacts are in "
+"the `ConfigurationManager` such as:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:212
 msgid ""
-"If you want some examples, these methods are used into `contactmodel.cpp`"
-" in LRC."
+"If you want some examples, these methods are used into `contactmodel.cpp` in"
+" LRC."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:1
@@ -1836,8 +1836,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:7
 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 "
+"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!"
@@ -1855,8 +1855,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:14
 msgid ""
-"An example of how to create your own base plugin with our SDK - [#Create "
-"my first plugin](#create-my-first-plugin)."
+"An example of how to create your own base plugin with our SDK - [#Create my "
+"first plugin](#create-my-first-plugin)."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:16
@@ -1865,18 +1865,18 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:17
 msgid ""
-"We developped a Plugin System for Jami and we have a few plugins "
-"available to be used. However as an open source project, we now desire "
-"users to be able to create, use, and distribute their own plugins. To "
-"achieve that goal, we also developped a Jami Plugins SDK. This kit is "
-"fully writen in python, and can be invoked running [pluginMainSDK.py]('')"
-" from `<plugins>` folder. To get started you must:"
+"We developped a Plugin System for Jami and we have a few plugins available "
+"to be used. However as an open source project, we now desire users to be "
+"able to create, use, and distribute their own plugins. To achieve that goal,"
+" we also developped a Jami Plugins SDK. This kit is fully writen in python, "
+"and can be invoked running [pluginMainSDK.py]('') from `<plugins>` folder. "
+"To get started you must:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:32
 msgid ""
-"You will notice that this script will generate a Jami Plugins SDK shell "
-"that allows users to:"
+"You will notice that this script will generate a Jami Plugins SDK shell that"
+" allows users to:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:34
@@ -1930,8 +1930,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:48
 msgid ""
-"This option performs a sequence of actions to properly create all base "
-"files needed to start a plugin development. The steps are:"
+"This option performs a sequence of actions to properly create all base files"
+" needed to start a plugin development. The steps are:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:50
@@ -1964,13 +1964,13 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:58
 msgid ""
-"If all is completed successfully, the plugin may be build, installed, and"
-" loaded. Also the functionallities may be toggled, however, since their "
-"data processes are not implemented, they will perform no action. In our "
+"If all is completed successfully, the plugin may be build, installed, and "
+"loaded. Also the functionallities may be toggled, however, since their data "
+"processes are not implemented, they will perform no action. In our "
 "`HelloWorld` plugin, we implement a simple process using **OpenCV**. For "
 "more complex options, you can refer to our available plugins at {gitlab-"
-"project}`jami-plugins`. Feel free to implement any ideas you may have, "
-"but you should respect those constrains:"
+"project}`jami-plugins`. Feel free to implement any ideas you may have, but "
+"you should respect those constrains:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:59
@@ -1995,17 +1995,16 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:64
 msgid ""
-"if you need other libraries, check if we support it's build with jami-"
-"daemon project, otherwise, you will have to build it and ensure correct "
-"link to the plugin libraries."
+"if you need other libraries, check if we support it's build with jami-daemon"
+" project, otherwise, you will have to build it and ensure correct link to "
+"the plugin libraries."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:67
 msgid ""
 "To fully create a basic plugin with pre-implementation of desired "
-"functionalities APIs, preferences, package, manifest, main file, and "
-"basic build related files, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"functionalities APIs, preferences, package, manifest, main file, and basic "
+"build related files, from inside Jami Plugins SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:72
@@ -2015,8 +2014,7 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:215
 #: ../../../developer/creating-jami-plugins.md:263
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task."
+"The SDK will ask other informations needed to correctly accomplish the task."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:74
@@ -2025,18 +2023,18 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:75
 msgid ""
-"Every plugin must have a manifest. This file contains the official name, "
-"a description, and carries the plugin build version as in the example "
-"bellow. Without it, the plugin system will not be able to find the plugin"
-" library it should load. Due to it's importance, every time Jami Plugin "
-"SDK is told to create files to a non existing plugin or to a plugin with "
-"no manifest, it will first create a new manifest."
+"Every plugin must have a manifest. This file contains the official name, a "
+"description, and carries the plugin build version as in the example bellow. "
+"Without it, the plugin system will not be able to find the plugin library it"
+" should load. Due to it's importance, every time Jami Plugin SDK is told to "
+"create files to a non existing plugin or to a plugin with no manifest, it "
+"will first create a new manifest."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:85
 msgid ""
-"To create/modify (or to delete) a manifest.json, from inside Jami Plugins"
-" SDK shell, the user must call:"
+"To create/modify (or to delete) a manifest.json, from inside Jami Plugins "
+"SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:92
@@ -2045,11 +2043,11 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:93
 msgid ""
-"Jami currently supports plugins for GNU/Linux, Android and Windows. For "
-"the latter, the build system used is the same as for Jami, it is, we call"
-" the plugin build using a python script. This script will look for a "
-"`package.json` file to aquire build informations and commands. Without "
-"this file our build pipeline for Windows will not work."
+"Jami currently supports plugins for GNU/Linux, Android and Windows. For the "
+"latter, the build system used is the same as for Jami, it is, we call the "
+"plugin build using a python script. This script will look for a "
+"`package.json` file to aquire build informations and commands. Without this "
+"file our build pipeline for Windows will not work."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:95
@@ -2066,30 +2064,28 @@ msgstr ""
 msgid ""
 "`extractLibs` indicates to the build system if the files under `<jami-"
 "plugins>/contrib/libs.tar.gz` will be used. This archive contains header "
-"files for **Tensorflow**. Thus, you only need to set `extractLibs` to "
-"true if you plan to use this library."
+"files for **Tensorflow**. Thus, you only need to set `extractLibs` to true "
+"if you plan to use this library."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:98
 msgid ""
 "To play with audio or video, the plugin is dependent of **ffmpeg**. By "
 "adding it to `deps`, the build system will automatically compile this "
-"library from `<jami-daemon>/contrib` if needed. We also provide "
-"**OpenCV** build from inside `<jami-daemon>/contrib` ! If you want to use"
-" Tensorflow, we provide built libraries for GNU/Linux and Android with "
-"our docker images "
-"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-"
-"cuda) and "
+"library from `<jami-daemon>/contrib` if needed. We also provide **OpenCV** "
+"build from inside `<jami-daemon>/contrib` ! If you want to use Tensorflow, "
+"we provide built libraries for GNU/Linux and Android with our docker images "
+"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-cuda)"
+" and "
 "[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflowlite)."
 " For more information about OpenCV and Tensorflow build, please refer to "
-"{doc}`jami-plugins` technical documentation. There we have a step-by-"
-"step!"
+"{doc}`jami-plugins` technical documentation. There we have a step-by-step!"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:101
 msgid ""
-"If you're using cmake, your can set configuration definition in `defines`"
-" property. Exemple: if your configuration line is of the form `cmake "
+"If you're using cmake, your can set configuration definition in `defines` "
+"property. Exemple: if your configuration line is of the form `cmake "
 "-DCPU=TRUE ..` you may set `\"defines\": [\"CPU=TRUE\"]`."
 msgstr ""
 
@@ -2099,21 +2095,21 @@ msgid ""
 "`custom_scripts`. Bellow we create the build folder to with the plugins "
 "project will be configured with `mkdir msvc` and we also set the build "
 "command as `cmake --build ./msvc --config Release`. Our example "
-"CMakeLists.txt may have pre and post build instruction that are not "
-"listed here."
+"CMakeLists.txt may have pre and post build instruction that are not listed "
+"here."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:125
 msgid ""
-"To create a package.json, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"To create a package.json, from inside Jami Plugins SDK shell, the user must "
+"call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:130
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. After the base package.json creation, the user must add or modify "
-"any information not previewed by the SDK process."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" After the base package.json creation, the user must add or modify any "
+"information not previewed by the SDK process."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:132
@@ -2122,37 +2118,36 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:133
 msgid ""
-"A preference is a internal variable that will be used upon loading or "
-"while running the plugin. There is limited types of preferences supported"
-" by the plugin system and each of them must contain generic and specific "
-"informations. Those informations must be placed under a certain structure"
-" that will form one preference and each preference must be listed inside "
-"a `preference.json` file."
+"A preference is a internal variable that will be used upon loading or while "
+"running the plugin. There is limited types of preferences supported by the "
+"plugin system and each of them must contain generic and specific "
+"informations. Those informations must be placed under a certain structure "
+"that will form one preference and each preference must be listed inside a "
+"`preference.json` file."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:136
 msgid ""
 "The generic properties of a preference are those that must be set by any "
 "type of preference: `category`, `type`, `key`, `title`, `summary`, "
-"`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 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 from `entries` to be shown as 'names' for each "
-"one of these `entryValues`. Then you can call '0' and '1' as 'sent' and "
-"'received'. The UI will show these names that are more user friendly! It "
-"is important to note that `entries` and `entryValues` must have the same "
-"number of items."
+"`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 "
+"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"
+" from `entries` to be shown as 'names' for each one of these `entryValues`. "
+"Then you can call '0' and '1' as 'sent' and 'received'. The UI will show "
+"these names that are more user friendly! It is important to note that "
+"`entries` and `entryValues` must have the same number of items."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:145
 msgid ""
-"Another important point to be noted for the preferences is that their "
-"values could be modified during runtime if, and only if, two conditions "
-"are satisfied:"
+"Another important point to be noted for the preferences is that their values"
+" could be modified during runtime if, and only if, two conditions are "
+"satisfied:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:147
@@ -2167,31 +2162,29 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:150
 msgid ""
-"To better explain, we have to detail what is a scope and how a preference"
-" changement is implemented inside the plugin."
+"To better explain, we have to detail what is a scope and how a preference "
+"changement is implemented inside the plugin."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:152
 msgid ""
-"**Scope**: A scope is a list of functionalities that can modify a "
-"preference value even if the functionality is under use. It is, imagine "
-"you have a functionality called \"Circle\" that prints a colored circle "
-"to your video. Consider also that the color of that circle is set by a "
-"preference and that this preference lists \"Circle\" as one of it's "
-"scopes. In that scenario \"Circle\" will be able to modify the default "
-"circle color to another one."
+"**Scope**: A scope is a list of functionalities that can modify a preference"
+" value even if the functionality is under use. It is, imagine you have a "
+"functionality called \"Circle\" that prints a colored circle to your video. "
+"Consider also that the color of that circle is set by a preference and that "
+"this preference lists \"Circle\" as one of it's scopes. In that scenario "
+"\"Circle\" will be able to modify the default circle color to another one."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:153
 msgid ""
-"**Code implementation**: Continuing our example above, \"Circle\" also is"
-" the implementation of an abstract API class from Daemon (for more "
-"details check [#Create functionality](#create-functionality). When a user"
-" changes a preference value, the plugin system will call the "
-"`setPreferenceAttribute` implementation for each of the functionalities "
-"listed by the preference's scope. By it's turn, this function will match "
-"the preference unique `key` and call an internal function to apply the "
-"new value."
+"**Code implementation**: Continuing our example above, \"Circle\" also is "
+"the implementation of an abstract API class from Daemon (for more details "
+"check [#Create functionality](#create-functionality). When a user changes a "
+"preference value, the plugin system will call the `setPreferenceAttribute` "
+"implementation for each of the functionalities listed by the preference's "
+"scope. By it's turn, this function will match the preference unique `key` "
+"and call an internal function to apply the new value."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:155
@@ -2201,25 +2194,25 @@ msgid ""
 "[pluginMediaHandler.cpp](https://git.jami.net/savoirfairelinux/jami-"
 "plugins/blob/master/GreenScreen/pluginMediaHandler.cpp) and [preferences-"
 "onnx.json](https://git.jami.net/savoirfairelinux/jami-"
-"plugins/blob/master/GreenScreen/preferences-onnx.json). This plugin has "
-"both `LIST` and `PATH` preferences and also has one preference that can "
-"be modified during runtime. Can you tell wich one?"
+"plugins/blob/master/GreenScreen/preferences-onnx.json). This plugin has both"
+" `LIST` and `PATH` preferences and also has one preference that can be "
+"modified during runtime. Can you tell wich one?"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:157
 msgid ""
-"To create (or delete) a preference, from inside Jami Plugins SDK shell, "
-"the user must call:"
+"To create (or delete) a preference, from inside Jami Plugins SDK shell, the "
+"user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:162
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. If a preference is created from outside a functionality creation "
-"pipeline, any API implementation will not be changed in order to avoid "
-"overwrittings. Thus, if you want to allow values changement during "
-"runtime, you may need to manually modify your functionality "
-"implementation to fit running time changements conditions."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" If a preference is created from outside a functionality creation pipeline, "
+"any API implementation will not be changed in order to avoid overwrittings. "
+"Thus, if you want to allow values changement during runtime, you may need to"
+" manually modify your functionality implementation to fit running time "
+"changements conditions."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:164
@@ -2229,28 +2222,27 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:165
 msgid ""
 "A Jami plugin may wrap one or multiple functionalities. It is, the same "
-"plugins may have a functionality to change background and to draw a "
-"circle to a video for example. Each functionality must implement an "
-"abstract API class defined by Jami plugins System. That way, we can say "
-"that one functionality is one implementation of an API. Currently we have"
-" the `MediaHandler` which allows access to audio or video frames and we "
-"have `ChatHandler` which allows acces to messages exchanged in a "
-"conversation."
+"plugins may have a functionality to change background and to draw a circle "
+"to a video for example. Each functionality must implement an abstract API "
+"class defined by Jami plugins System. That way, we can say that one "
+"functionality is one implementation of an API. Currently we have the "
+"`MediaHandler` which allows access to audio or video frames and we have "
+"`ChatHandler` which allows acces to messages exchanged in a conversation."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:169
 msgid ""
-"When defining a new a functionality, the SDK will create basic header and"
-" cpp files for you work on. However, your new functionality can not be "
-"added to the scopes of a previously existing preference. For more "
-"information, please refer to [Create or delete a preference](#create-or-"
-"delete-a-preference)."
+"When defining a new a functionality, the SDK will create basic header and "
+"cpp files for you work on. However, your new functionality can not be added "
+"to the scopes of a previously existing preference. For more information, "
+"please refer to [Create or delete a preference](#create-or-delete-a-"
+"preference)."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:172
 msgid ""
-"To create a functionality, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"To create a functionality, from inside Jami Plugins SDK shell, the user must"
+" call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:179
@@ -2259,9 +2251,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:180
 msgid ""
-"This option create plugin's `main.cpp`. A file that implements the plugin"
-" external loading function that Jami Plugin System will call to "
-"initialize and register all functionalities for latter use."
+"This option create plugin's `main.cpp`. A file that implements the plugin "
+"external loading function that Jami Plugin System will call to initialize "
+"and register all functionalities for latter use."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:183
@@ -2273,8 +2265,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:186
 msgid ""
-"To create a `main.cpp`, from inside Jami Plugins SDK shell, the user must"
-" call:"
+"To create a `main.cpp`, from inside Jami Plugins SDK shell, the user must "
+"call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:193
@@ -2284,9 +2276,9 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:194
 msgid ""
 "The final plugin file is an archive compressed to a `JPL` format. This "
-"archive contains libraries, manifest.json, preferences.json, icons and "
-"other custom important files for your plugin. OBS.: files added by the "
-"developper must be organized under the `data/` folder."
+"archive contains libraries, manifest.json, preferences.json, icons and other"
+" custom important files for your plugin. OBS.: files added by the developper"
+" must be organized under the `data/` folder."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:197
@@ -2295,25 +2287,24 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:199
 msgid ""
-"it creates a build folder and copies there all files that will be "
-"compressed to the final plugin archive. For linux host: "
-"`<plugins>/<HelloWorld>/build-local/jpl/` and for a windows host: "
-"`<plugins>/<HelloWorld>/msvc/jpl/`;"
+"it creates a build folder and copies there all files that will be compressed"
+" to the final plugin archive. For linux host: `<plugins>/<HelloWorld>/build-"
+"local/jpl/` and for a windows host: `<plugins>/<HelloWorld>/msvc/jpl/`;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:200
 msgid ""
-"it compresses all files inside the build folder to the jpl archive wich "
-"is output under `<plugins>/build`."
+"it compresses all files inside the build folder to the jpl archive wich is "
+"output under `<plugins>/build`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:202
 msgid ""
-"Both process should be called from inside the CMakeLists.txt as "
-"POST_BUILD and PRE_BUILD commands, respectively. Also, the build.sh "
-"script should call them. For more information about CMakeLists.txt and "
-"build.sh files, please refere to [build](#build) and to our available "
-"plugins at {gitlab-project}`jami-plugins`."
+"Both process should be called from inside the CMakeLists.txt as POST_BUILD "
+"and PRE_BUILD commands, respectively. Also, the build.sh script should call "
+"them. For more information about CMakeLists.txt and build.sh files, please "
+"refere to [build](#build) and to our available plugins at {gitlab-"
+"project}`jami-plugins`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:205
@@ -2348,29 +2339,29 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:223
 msgid ""
-"A description of thes CMakeLists.txt and buils.sh files are found further"
-" in this section."
+"A description of thes CMakeLists.txt and buils.sh files are found further in"
+" this section."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:225
 msgid ""
-"To create basic CMakeLists.txt and buils.sh files, from inside Jami "
-"Plugins SDK shell, the user must call:"
+"To create basic CMakeLists.txt and buils.sh files, from inside Jami Plugins "
+"SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:230
 msgid ""
-"To build plugin library with default configuration, from inside Jami "
-"Plugins SDK shell, the user must call:"
+"To build plugin library with default configuration, from inside Jami Plugins"
+" SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:235
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. For the moment, the build option does not support cross-compilation"
-" neither non default builds. If you have build variables to be set "
-"differently than the default option, please directly use the `<plugins"
-">/build-plugin.py` script."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" For the moment, the build option does not support cross-compilation neither"
+" non default builds. If you have build variables to be set differently than "
+"the default option, please directly use the `<plugins>/build-plugin.py` "
+"script."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:237
@@ -2383,25 +2374,24 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:240
 msgid ""
-"If you need to pass any defines to cmake generation, your definitions can"
-" be in `package.json` as explained in the package section. The "
-"package.json created specifies the default configuration that calling the"
-" build from Jami Plugins SDK will consider. If you want to build with no "
-"default configuration, you can: directly use the script mentioned above "
-"and pass non-default definitions as an argument or; you also can manually"
-" change your package.json file. For examples, you can refer to our "
-"available plugins at {gitlab-project}`jami-plugins`."
+"If you need to pass any defines to cmake generation, your definitions can be"
+" in `package.json` as explained in the package section. The package.json "
+"created specifies the default configuration that calling the build from Jami"
+" Plugins SDK will consider. If you want to build with no default "
+"configuration, you can: directly use the script mentioned above and pass "
+"non-default definitions as an argument or; you also can manually change your"
+" package.json file. For examples, you can refer to our available plugins at "
+"{gitlab-project}`jami-plugins`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:243
 msgid ""
 "Another important information about CMakeLists.txt is that it has to add "
-"custom commands. For PRE_BUILD, it must call the pre-assemble "
-"functionality process. For POST_BUILD, it must copy the built library to "
-"the build folder and call the assemble functionality process. In the end,"
-" your jpl archive may be found under `<plugins>/build`. The "
-"CMakeLists.txt file automatically created by our SDK, already respects "
-"these constraints."
+"custom commands. For PRE_BUILD, it must call the pre-assemble functionality "
+"process. For POST_BUILD, it must copy the built library to the build folder "
+"and call the assemble functionality process. In the end, your jpl archive "
+"may be found under `<plugins>/build`. The CMakeLists.txt file automatically "
+"created by our SDK, already respects these constraints."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:245
@@ -2416,26 +2406,26 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:248
 msgid ""
-"The basic script consider the environment variable `DAEMON` that must "
-"point to the jami-daemon folder. Besides, you can pass an argument for "
-"the platform used like `-t android` if you want to cross-compile for "
-"Android. Further custom definitions and environment variables should be "
-"handled by the plugin developper. If you want to build with no default "
-"configuration, you can modify the environment variables values and then "
-"call the build. Ie: for android, you can set which ABI you want to build "
-"with `export ANDROID_ABI=\"arm64-v8a armeabi-v7a`. For other examples, "
-"you can refer to our {doc}`technical documentation <jami-plugins>` and to"
-" our {gitlab-project}`available plugins <jami-plugins>`."
+"The basic script consider the environment variable `DAEMON` that must point "
+"to the jami-daemon folder. Besides, you can pass an argument for the "
+"platform used like `-t android` if you want to cross-compile for Android. "
+"Further custom definitions and environment variables should be handled by "
+"the plugin developper. If you want to build with no default configuration, "
+"you can modify the environment variables values and then call the build. Ie:"
+" for android, you can set which ABI you want to build with `export "
+"ANDROID_ABI=\"arm64-v8a armeabi-v7a`. For other examples, you can refer to "
+"our {doc}`technical documentation <jami-plugins>` and to our {gitlab-"
+"project}`available plugins <jami-plugins>`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:253
 msgid ""
-"Another important information about build.sh is that it has to call pre "
-"and post assemble. Before the build, it must call the pre-assemble "
-"functionality process. After it, it must copy the built library to the "
-"build folder and call the assemble functionality process. In the end, "
-"your jpl archive may be found under `<plugins>/build`. The build.sh file "
-"automatically created by our SDK, already respects these constraints."
+"Another important information about build.sh is that it has to call pre and "
+"post assemble. Before the build, it must call the pre-assemble functionality"
+" process. After it, it must copy the built library to the build folder and "
+"call the assemble functionality process. In the end, your jpl archive may be"
+" found under `<plugins>/build`. The build.sh file automatically created by "
+"our SDK, already respects these constraints."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:255
@@ -2447,16 +2437,16 @@ msgid ""
 "If you have more than one jpl archives, like one build for Android and "
 "anothe for GNU/Linux platforms, you can merge them into one to easy it's "
 "distribution. However, you should know that merging two or more jpls may "
-"inccur orverwritting some of the files inside them if they are not equal "
-"for all archives. The only files that may not present conflicting "
-"contents are the ones that do not repeate themselves. If conflicts occur,"
-" files from the first jpl in the arguments will prevail over the others."
+"inccur orverwritting some of the files inside them if they are not equal for"
+" all archives. The only files that may not present conflicting contents are "
+"the ones that do not repeate themselves. If conflicts occur, files from the "
+"first jpl in the arguments will prevail over the others."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:258
 msgid ""
-"To merge two or more jpls, from inside Jami Plugins SDK shell, the user "
-"must simple call:"
+"To merge two or more jpls, from inside Jami Plugins SDK shell, the user must"
+" simple call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:265
@@ -2466,16 +2456,16 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:266
 msgid ""
 "Through this section we will present a step-by-step construction of a "
-"`HelloWorld` plugin using our SDK. Our goal is to print a coloured circle"
-" in the midle of the video frames using **OpenCV**. The color of that "
-"circle will be defined by a preference which will be changeable during "
-"runtime. Also we can set a stream preferece to define if the plugin will "
-"modify the video sent or the one received, this time we don't want to "
-"allow a changement during runtime. We can define a second functionality "
-"that will aways draw a circle in the right top corner, with the color "
-"defined by the same preference as the previous functionality but that "
-"cannot be changed during runtime. At the end we will exemplify how to "
-"build your plugin with and without the SDK."
+"`HelloWorld` plugin using our SDK. Our goal is to print a coloured circle in"
+" the midle of the video frames using **OpenCV**. The color of that circle "
+"will be defined by a preference which will be changeable during runtime. "
+"Also we can set a stream preferece to define if the plugin will modify the "
+"video sent or the one received, this time we don't want to allow a "
+"changement during runtime. We can define a second functionality that will "
+"aways draw a circle in the right top corner, with the color defined by the "
+"same preference as the previous functionality but that cannot be changed "
+"during runtime. At the end we will exemplify how to build your plugin with "
+"and without the SDK."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:273
@@ -2545,14 +2535,13 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:311
 msgid ""
-"Tell us a description: HelloWorld draws a circle in the center of a "
-"call's video"
+"Tell us a description: HelloWorld draws a circle in the center of a call's "
+"video"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:313
 msgid ""
-"Version must be of the form X.Y.Z Set plugin version (default 0.0.0): "
-"1.0.0"
+"Version must be of the form X.Y.Z Set plugin version (default 0.0.0): 1.0.0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:316
@@ -2567,8 +2556,8 @@ msgstr ""
 #: ../../../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."
+"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
@@ -2586,15 +2575,16 @@ msgid "Would you like to add a preference? [y/n] y"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:332
-msgid "Your preferences options available are:  (0) List; (1) Path; (2) EditText;"
+msgid ""
+"Your preferences options available are:  (0) List; (1) Path; (2) EditText;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:337
 msgid ""
 "Which preference type do you choose: 0 Type a value for category: stream "
-"Type a value for key: videostream Type a value for title: Video stream "
-"Type a value for summary: select a video direction Type a value for "
-"defaultValue: 0"
+"Type a value for key: videostream Type a value for title: Video stream Type "
+"a value for summary: select a video direction Type a value for defaultValue:"
+" 0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:344
@@ -2611,19 +2601,20 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:352
 msgid ""
-"Do you want to add a new entry Value? [y/n] n Type an entry name for '0':"
-" sent Type an entry name for '1': received"
+"Do you want to add a new entry Value? [y/n] n Type an entry name for '0': "
+"sent Type an entry name for '1': received"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:358
-msgid "Your preferences options available are:  (0) List; (1) Path; (3) EditText;"
+msgid ""
+"Your preferences options available are:  (0) List; (1) Path; (3) EditText;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:363
 msgid ""
-"Which preference type do you choose: 0 Type a value for category: color "
-"Type a value for key: color Type a value for title: Circle color Type a "
-"value for summary: select a color Type a value for defaultValue: ##00FF00"
+"Which preference type do you choose: 0 Type a value for category: color Type"
+" a value for key: color Type a value for title: Circle color Type a value "
+"for summary: select a color Type a value for defaultValue: ##00FF00"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:370
@@ -2639,22 +2630,25 @@ msgid "Which scope do you choose: 0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:377
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #0000FF"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #0000FF"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:380
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #00FF00"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #00FF00"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:383
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #FF0000"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #FF0000"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:386
 msgid ""
 "Do you want to add a new entry Value? [y/n] n Type an entry name for "
-"'#0000FF': blue Type an entry name for '#00FF00': green Type an entry "
-"name for '#FF0000': red"
+"'#0000FF': blue Type an entry name for '#00FF00': green Type an entry name "
+"for '#FF0000': red"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:391
@@ -2700,13 +2694,14 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:408
 msgid ""
 "Before building the HelloWorld, you should compile ffmpeg and OpenCV "
-"dependencies. This can be achieved by following the build instructions "
-"for OpenCV {doc}`here <jami-plugins>`. Ffmpeg will be automatically build"
-" if you follow those instructions. To build you plugin, you can either:"
+"dependencies. This can be achieved by following the build instructions for "
+"OpenCV {doc}`here <jami-plugins>`. Ffmpeg will be automatically build if you"
+" follow those instructions. To build you plugin, you can either:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:410
-msgid "Call the build from Jami Plugins SDK (works for GNU/Linux and Windows):"
+msgid ""
+"Call the build from Jami Plugins SDK (works for GNU/Linux and Windows):"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:415
@@ -2722,7 +2717,8 @@ msgid "DAEMON not provided, building with ./../../daemon"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:423
-msgid "Call plugin-build.py script (works for GNU/Linux, Windows and Android):"
+msgid ""
+"Call plugin-build.py script (works for GNU/Linux, Windows and Android):"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:424
@@ -2744,9 +2740,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:430
 msgid ""
-"OBS: For Android, you can set `ANDROID_ABI` environment variable to the "
-"ABI you want to build. Currently Jami supports `x86_64`, `armeabi-v7a`, "
-"and `arm64-v8a`. Plugins will be build for the three options by default."
+"OBS: For Android, you can set `ANDROID_ABI` environment variable to the ABI "
+"you want to build. Currently Jami supports `x86_64`, `armeabi-v7a`, and "
+"`arm64-v8a`. Plugins will be build for the three options by default."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:432
@@ -2755,8 +2751,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:433
 msgid ""
-"Now that you tested and your HelloWorld is working, you can try to do add"
-" another functionality to it."
+"Now that you tested and your HelloWorld is working, you can try to do add "
+"another functionality to it."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:438
@@ -2790,15 +2786,16 @@ msgid "Optionally, you can change your plugin version and description:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:476
-msgid "(Jami Plugins SDK) manifest Leave Empty or Press 'q' to quit this option."
+msgid ""
+"(Jami Plugins SDK) manifest Leave Empty or Press 'q' to quit this option."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:479
 msgid ""
-"Plugin to be modified or created: HelloWorld New description for your "
-"plugin (ignore to keep previous description): HelloWorld can draw a "
-"circle at the center or at the top-left of a call's video New plugin "
-"version (ignore to keep previous version): 2.0"
+"Plugin to be modified or created: HelloWorld New description for your plugin"
+" (ignore to keep previous description): HelloWorld can draw a circle at the "
+"center or at the top-left of a call's video New plugin version (ignore to "
+"keep previous version): 2.0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:483
@@ -2807,9 +2804,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:486
 msgid ""
-"Now you can start your own creations! Do not forget to tag Jami or "
-"Savoir-Faire Linux in your repository, this way we can get to know how "
-"the community is developping their own plugins!"
+"Now you can start your own creations! Do not forget to tag Jami or Savoir-"
+"Faire Linux in your repository, this way we can get to know how the "
+"community is developping their own plugins!"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:1
@@ -2818,9 +2815,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:4
 msgid ""
-"This page exists to classify feature requests per users' feedback, to "
-"avoid leaving tickets open for years.  Under construction, will sort the "
-"tickets."
+"This page exists to classify feature requests per users' feedback, to avoid "
+"leaving tickets open for years.  Under construction, will sort the tickets."
 msgstr ""
 
 #: ../../../developer/feature-requests.md:8
@@ -2829,8 +2825,8 @@ 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"
+"{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`"
+" -> Contact #Jami (Adrien, Sébastien, etc.) / hard"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:12
@@ -2850,7 +2846,8 @@ msgid "Add unit-tests / probably easy"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:16
-msgid "Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard"
+msgid ""
+"Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:18
@@ -2910,8 +2907,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:33
 msgid ""
-"{client-qt-issue}`Live closed captions (multiple languages) <576>` "
-"(Whisper OpenAI, Google Speech API or similar) / probably easy"
+"{client-qt-issue}`Live closed captions (multiple languages) <576>` (Whisper "
+"OpenAI, Google Speech API or similar) / probably easy"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:35
@@ -2930,9 +2927,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:40
 msgid ""
-"Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a "
-"dedicated library (can be shared with OpenDHT) / medium difficulty & long"
-" term project"
+"Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a dedicated "
+"library (can be shared with OpenDHT) / medium difficulty & long term project"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:43
@@ -2951,8 +2947,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:47
 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)"
+"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:49
@@ -2967,8 +2963,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:51
 msgid ""
-"{daemon-issue}`Support message edition/deletion <316>` (Contact #Jami - "
-"easy but long)"
+"{daemon-issue}`Support message edition/deletion <316>` (Contact #Jami - easy"
+" but long)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:53
@@ -2981,14 +2977,13 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:57
 msgid ""
-"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact "
-"Rennes"
+"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact Rennes"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:59
 msgid ""
-"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-"
-"client-qt/-/issues) -> Contact #Jami (Andreas)"
+"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
+"qt/-/issues) -> Contact #Jami (Andreas)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:61
@@ -3005,9 +3000,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:64
 msgid ""
-"{gerrit-project}`jami-web`; because installing an app can be boring. "
-"Joining a conference via a link can be cool.  For now, nobody is working "
-"on it."
+"{gerrit-project}`jami-web`; because installing an app can be boring. Joining"
+" a conference via a link can be cool.  For now, nobody is working on it."
 msgstr ""
 
 #: ../../../developer/feature-requests.md:68
@@ -3027,14 +3021,14 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:74
 msgid ""
-"{project-issue}`add possibility to show \"reachable at the following "
-"times\" (contact details) <1261>`"
+"{project-issue}`add possibility to show \"reachable at the following times\""
+" (contact details) <1261>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:76
 msgid ""
-"{project-issue}`Preferences per contact (allow calls, file transfer, "
-"custom ringtone) <1280>`"
+"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
+"ringtone) <1280>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:78
@@ -3096,8 +3090,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:95
 msgid ""
-"{project-issue}`Emoticon/emoji message reactions <1034>` (need to wait "
-"for group chat)"
+"{project-issue}`Emoticon/emoji message reactions <1034>` (need to wait for "
+"group chat)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:98
@@ -3105,7 +3099,7 @@ msgid "Depends on mass changes"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:102
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:59
 msgid "Packaging"
 msgstr ""
@@ -3139,7 +3133,8 @@ msgid "{project-issue}`Sound safety <441>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:113
-msgid "{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
+msgid ""
+"{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:115
@@ -3209,8 +3204,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:12
 msgid ""
-"For sending a file on gnome, in a conversation you need to click to the "
-"send file icon at the bottom right of the conversation:"
+"For sending a file on gnome, in a conversation you need to click to the send"
+" file icon at the bottom right of the conversation:"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:15
@@ -3225,8 +3220,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:17
 msgid ""
-"Then you will see your image as soon as the transfer is finished (and "
-"show images is activated)"
+"Then you will see your image as soon as the transfer is finished (and show "
+"images is activated)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:20
@@ -3271,7 +3266,8 @@ msgstr ""
 msgid "Gnome_ongoing"
 msgstr ""
 
-#: ../../../developer/file-transfer.md:32 ../../../developer/jami-plugins.md:32
+#: ../../../developer/file-transfer.md:32
+#: ../../../developer/jami-plugins.md:32
 #: ../../../developer/jami-plugins.md:110
 #: ../../../developer/jami-plugins.md:269
 msgid "Android"
@@ -3295,8 +3291,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:39
 msgid ""
-"Note: when you send a file, the other has to accept it. At this moment "
-"you will see 'awaiting peer':"
+"Note: when you send a file, the other has to accept it. At this moment you "
+"will see 'awaiting peer':"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:42
@@ -3320,40 +3316,38 @@ msgstr ""
 #: ../../../developer/file-transfer.md:51
 msgid ""
 "Jami is a distributed application and has to work without any internet "
-"connectivity. So, file transfer too! Basically, we use the same method to"
-" perform file transfer and calls, but in TCP. To summarize how it works, "
-"we can imagine a situation where Alice (A) wants to transfer a file to "
-"Bob (B)."
+"connectivity. So, file transfer too! Basically, we use the same method to "
+"perform file transfer and calls, but in TCP. To summarize how it works, we "
+"can imagine a situation where Alice (A) wants to transfer a file to Bob (B)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:53
 msgid ""
-"First, Alice will request a connection to Bob. To do that, Jami is using "
-"ICE (RFC 6544), a protocol used to negotiate links between peers. Alice "
-"will send, into an encrypted packet via the DHT the ip of its device. So,"
-" when Bob receives the ips of Alice, they will be able to negotiate a "
-"transport where Bob will be able to send packets to Alice. The "
-"negotiation can be successful, but if it fails, a TURN server will be "
-"used (the one configured into the settings) to perform the transfer. If "
-"the negotiation succeeds, Bob will send its ips to Alice to perform the "
-"negotiation in the other direction. Note that the link is still not "
-"secure, so Bob will send the ips through the DHT in an encrypted message."
-" If the second negotiation fails, the TURN will be used as a fallback."
+"First, Alice will request a connection to Bob. To do that, Jami is using ICE"
+" (RFC 6544), a protocol used to negotiate links between peers. Alice will "
+"send, into an encrypted packet via the DHT the ip of its device. So, when "
+"Bob receives the ips of Alice, they will be able to negotiate a transport "
+"where Bob will be able to send packets to Alice. The negotiation can be "
+"successful, but if it fails, a TURN server will be used (the one configured "
+"into the settings) to perform the transfer. If the negotiation succeeds, Bob"
+" will send its ips to Alice to perform the negotiation in the other "
+"direction. Note that the link is still not secure, so Bob will send the ips "
+"through the DHT in an encrypted message. If the second negotiation fails, "
+"the TURN will be used as a fallback."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:55
 msgid ""
 "Now that the bidirectionnal TCP link is here, the next step will be to "
 "negotiate a TLS 1.3 (generally a (TLS1.3)-(DHE-FFDHE8192)-(RSA-PSS-RSAE-"
-"SHA384)-(AES-256-GCM) when I write these lines) between Alice an Bob, "
-"then Alice will start to transfer the file."
+"SHA384)-(AES-256-GCM) when I write these lines) between Alice an Bob, then "
+"Alice will start to transfer the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:57
 msgid ""
-"The first part will be a small header to describe the content of the "
-"file. Then, after Bob accepts the transfer, the full file will be "
-"transmitted."
+"The first part will be a small header to describe the content of the file. "
+"Then, after Bob accepts the transfer, the full file will be transmitted."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:59
@@ -3371,11 +3365,11 @@ msgstr ""
 #: ../../../developer/file-transfer.md:65
 msgid ""
 "1\\. A client will call `DataTransferFacade::sendFile()`. "
-"`DataTransferFacade` is the class corresponding to the API exposed for "
-"the clients. It is used to manage a view of the file transfers (the "
+"`DataTransferFacade` is the class corresponding to the API exposed for the "
+"clients. It is used to manage a view of the file transfers (the "
 "corresponding classes are `DataTransfer`, `IncomingFileTransfer`, "
-"`OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will "
-"ask the linked `JamiAccount` to request a connection."
+"`OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will ask "
+"the linked `JamiAccount` to request a connection."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:67
@@ -3387,57 +3381,58 @@ msgstr ""
 #: ../../../developer/file-transfer.md:69
 msgid ""
 "2\\. The method `DhtPeerConnector: requestConnection()` is triggered and "
-"creates a connection between all connected devices of the peer (found on "
-"the DHT). `DhtPeerConnector` is used to manage the main event loop which "
-"manage connections. When a device is found, the *event loop* will create "
-"a `ClientConnector` (which manage the connection for one device) and "
-"launch the `process()` method."
+"creates a connection between all connected devices of the peer (found on the"
+" DHT). `DhtPeerConnector` is used to manage the main event loop which manage"
+" connections. When a device is found, the *event loop* will create a "
+"`ClientConnector` (which manage the connection for one device) and launch "
+"the `process()` method."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:71
 msgid ""
 "3\\. This method is used to initialize the ICE transport and put a "
-"*PeerConnectionMsg* (which contains the SDP message, see below) on the "
-"DHT and waits for a response (`DhtPeerConnector::Impl::onResponseMsg`)."
+"*PeerConnectionMsg* (which contains the SDP message, see below) on the DHT "
+"and waits for a response (`DhtPeerConnector::Impl::onResponseMsg`)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:73
 msgid ""
 "4\\. Then a response is received from the DHT, which contains public "
-"addresses of the peer device. We can now negotiate a TLS link (directly "
-"via ICE, or via TURN as a fallback). This `TlsSocketEndpoint` is given to"
-" the `PeerConnection` object as an output and the transfer can start."
+"addresses of the peer device. We can now negotiate a TLS link (directly via "
+"ICE, or via TURN as a fallback). This `TlsSocketEndpoint` is given to the "
+"`PeerConnection` object as an output and the transfer can start."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:75
 msgid ""
 "5.\\ When the TLS socket is ready, the callback "
 "`DataTransferFacade::Impl::onConnectionRequestReply` is called, and a "
-"`OutgoingFileTransfer` is linked to the `PeerConnection` as an input. "
-"This `OutgoingFileTransfer` contains a list of `SubOutgoingFileTransfer` "
-"(one per device) where each sub transfer is a transfer to one device. We "
-"do that to be able to furnish the most optimistic view of the transfer "
-"(if a contact as 3 devices, where the contact cancel the transfer on one "
-"device, but accepted the transfer on the two others, the most advanced "
-"transfer will be shown)."
+"`OutgoingFileTransfer` is linked to the `PeerConnection` as an input. This "
+"`OutgoingFileTransfer` contains a list of `SubOutgoingFileTransfer` (one per"
+" device) where each sub transfer is a transfer to one device. We do that to "
+"be able to furnish the most optimistic view of the transfer (if a contact as"
+" 3 devices, where the contact cancel the transfer on one device, but "
+"accepted the transfer on the two others, the most advanced transfer will be "
+"shown)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:77
 msgid ""
 "6\\. The `SubOutgoingFileTransfer` will first transfer the header of the "
-"file, wait the peer acceptance (A \"GO\\n\" message on the socket) and "
-"then will send the file."
+"file, wait the peer acceptance (A \"GO\\n\" message on the socket) and then "
+"will send the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:79
 msgid ""
 "7\\. If a cancel is received from the peer or the client or if the file "
-"transfer finish, the connection will be closed via a `CANCEL` message on "
-"the `DhtPeerConnector::eventLoop()` and the resources will be released."
+"transfer finish, the connection will be closed via a `CANCEL` message on the"
+" `DhtPeerConnector::eventLoop()` and the resources will be released."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:81
-msgid "![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
+msgid ""
+"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:81
@@ -3449,13 +3444,14 @@ msgid "Receiving a file"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:86
-msgid "The same structure is used to receive files, but the method changes a bit:"
+msgid ""
+"The same structure is used to receive files, but the method changes a bit:"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:88
 msgid ""
-"The `JamiAccount` class is used to receives messages from the DHT, "
-"because the first thing received will be the DHT request."
+"The `JamiAccount` class is used to receives messages from the DHT, because "
+"the first thing received will be the DHT request."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:89
@@ -3467,14 +3463,14 @@ msgstr ""
 #: ../../../developer/file-transfer.md:90
 msgid ""
 "The `DhtPeerConnector::Impl::answerToRequest` will try to connect to the "
-"TURN server (if not connected) and initialize the ICE transport. This "
-"method open 2 control connections to a TURN server (one to authorize IPv4"
-" peers, another one for IPv6 peers, due to **RFC 6156**) if it's not "
-"already open and permit Peer public addresses to connect. Then, if the "
-"SDP received doesn't contains ICE candidates, will use the TURN and craft"
-" the SDP answer to wait for the peer. If the SDP contains ICE candidates,"
-" the method will try to negotiate the link (or fallback on the TURN) and "
-"then answer the SDP (with ICE candidates or not)."
+"TURN server (if not connected) and initialize the ICE transport. This method"
+" open 2 control connections to a TURN server (one to authorize IPv4 peers, "
+"another one for IPv6 peers, due to **RFC 6156**) if it's not already open "
+"and permit Peer public addresses to connect. Then, if the SDP received "
+"doesn't contains ICE candidates, will use the TURN and craft the SDP answer "
+"to wait for the peer. If the SDP contains ICE candidates, the method will "
+"try to negotiate the link (or fallback on the TURN) and then answer the SDP "
+"(with ICE candidates or not)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:91
@@ -3491,31 +3487,31 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:95
 msgid ""
-"As specified in {ref}`developer/swarm:Other mime types`, the data-"
-"transfer interactions are now synced and stored into conversations. So, a"
-" device can easily detects if a file was downloaded or not. If not, it "
-"can asks all members in the conversation to transmits the file again."
+"As specified in {ref}`developer/swarm:Other mime types`, the data-transfer "
+"interactions are now synced and stored into conversations. So, a device can "
+"easily detects if a file was downloaded or not. If not, it can asks all "
+"members in the conversation to transmits the file again."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:97
 msgid ""
-"To do this, the device will send a json with the mime-type: `application"
-"/data-transfer-request+json` containing `conversation` (the "
+"To do this, the device will send a json with the mime-type: "
+"`application/data-transfer-request+json` containing `conversation` (the "
 "conversation's id), `interaction` (related interaction), `deviceId` the "
 "device receiving the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:99
 msgid ""
-"The sender now checks if the device is a device from the announced peer "
-"and that the device is a member of the conversation, and can sends the "
-"file via a classic file transfer."
+"The sender now checks if the device is a device from the announced peer and "
+"that the device is a member of the conversation, and can sends the file via "
+"a classic file transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:101
 msgid ""
-"The receiver can now accepts the first incoming transfer, download the "
-"file and verify that the sha3sum is correct."
+"The receiver can now accepts the first incoming transfer, download the file "
+"and verify that the sha3sum is correct."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:103
@@ -3538,12 +3534,11 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:123
 msgid ""
-"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password"
-" of the ICE session. `2130706431` and `1694498815` are the priority of "
-"the candidates. `192.168.0.126 42751 typ host tcptype passive` is a "
-"passive host candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype "
-"passive` a passive host reflecting the public ip (mapped via UPnP for "
-"example)."
+"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password of"
+" the ICE session. `2130706431` and `1694498815` are the priority of the "
+"candidates. `192.168.0.126 42751 typ host tcptype passive` is a passive host"
+" candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype passive` a "
+"passive host reflecting the public ip (mapped via UPnP for example)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:125
@@ -3589,10 +3584,10 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:153
 msgid ""
-"The first approach was to send a request through the DHT to all devices "
-"and the first devices which answers get the file to transfer. This is bad"
-" for your contact because they will not know which device will receives "
-"will get the transfer."
+"The first approach was to send a request through the DHT to all devices and "
+"the first devices which answers get the file to transfer. This is bad for "
+"your contact because they will not know which device will receives will get "
+"the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:158
@@ -3610,25 +3605,25 @@ msgstr ""
 #: ../../../developer/file-transfer.md:165
 msgid ""
 "Now (since <https://gerrit-ring.savoirfairelinux.com/#/c/9327/>), when a "
-"user send a file, it will request a *PeerConnection* with all peer "
-"devices. And for all connections, we attach a new input stream to have "
-"the ability to accept/refuse/cancel each transfer separately."
+"user send a file, it will request a *PeerConnection* with all peer devices. "
+"And for all connections, we attach a new input stream to have the ability to"
+" accept/refuse/cancel each transfer separately."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:170
 msgid ""
-"In *data\\_transfer.cpp* we define the *OptimisticMetaOutgoingInfo* class"
-" which represent the optimistic view to show to the client. It's "
-"optimistic because if a contact accept a transfer on one device and "
-"refuse on others, this class will show the ongoing file transfer. And it "
-"will only show an error if all devices refuse the transfer."
+"In *data\\_transfer.cpp* we define the *OptimisticMetaOutgoingInfo* class "
+"which represent the optimistic view to show to the client. It's optimistic "
+"because if a contact accept a transfer on one device and refuse on others, "
+"this class will show the ongoing file transfer. And it will only show an "
+"error if all devices refuse the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:176
 msgid ""
-"This class is linked to *SubOutgoingFileTransfer* which represent the "
-"state of a transfer with one device. Clients will have the ability to "
-"show a sub transfer instead the optimistic later (see TODO list)."
+"This class is linked to *SubOutgoingFileTransfer* which represent the state "
+"of a transfer with one device. Clients will have the ability to show a sub "
+"transfer instead the optimistic later (see TODO list)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:180
@@ -3637,8 +3632,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:182
 msgid ""
-"Actually the default TURN server is *turn.ring.cx*. But you can host your"
-" own TURN server. For example by running a "
+"Actually the default TURN server is *turn.ring.cx*. But you can host your "
+"own TURN server. For example by running a "
 "[coturn](https://github.com/coturn/coturn) server."
 msgstr ""
 
@@ -3647,32 +3642,32 @@ msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:188
-msgid "Then, you can configure the TURN server in the advanced settings of RING."
+msgid ""
+"Then, you can configure the TURN server in the advanced settings of RING."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:191
 msgid ""
-"Note: this needs some technical knowledges. Moreover, the TURN server "
-"should see the same ip address of your node as the destination node or "
-"the peer connection will fail (because the authorization will be "
-"incorrect)"
+"Note: this needs some technical knowledges. Moreover, the TURN server should"
+" see the same ip address of your node as the destination node or the peer "
+"connection will fail (because the authorization will be incorrect)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:199
 msgid ""
-"For now, if a file transfer fails when ongoing, the sender can't resume "
-"the transfer and must relaunch the whole transfer. In the future, there "
-"will be a retry button for resuming the transfer."
+"For now, if a file transfer fails when ongoing, the sender can't resume the "
+"transfer and must relaunch the whole transfer. In the future, there will be "
+"a retry button for resuming the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:203
 msgid ""
 "Finally, because Ring do not support text conferences (just video "
-"conferences, where there is one master merging slaves SIP calls), there "
-"is no real file transfer in conferences. For now, when you are in a "
-"conference on the gnome client for example: A master, B and C slave. B "
-"will be able to send a file to A the master (C same) A will be able to "
-"send a file to B or to C (just have to select the correct conversation)."
+"conferences, where there is one master merging slaves SIP calls), there is "
+"no real file transfer in conferences. For now, when you are in a conference "
+"on the gnome client for example: A master, B and C slave. B will be able to "
+"send a file to A the master (C same) A will be able to send a file to B or "
+"to C (just have to select the correct conversation)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:210
@@ -3697,7 +3692,7 @@ msgstr ""
 
 #: ../../../developer/important-rfcs.md:4
 msgid "SIP"
-msgstr ""
+msgstr "SIP"
 
 #: ../../../developer/important-rfcs.md:6
 msgid "Reference: <http://tools.ietf.org/html/rfc3261>"
@@ -3731,8 +3726,8 @@ msgstr ""
 
 #: ../../../developer/important-rfcs.md:20
 msgid ""
-"How to use SDP: <http://tools.ietf.org/html/rfc3264> Valuable updates and"
-" extensions:"
+"How to use SDP: <http://tools.ietf.org/html/rfc3264> Valuable updates and "
+"extensions:"
 msgstr ""
 
 #: ../../../developer/important-rfcs.md:23
@@ -3792,17 +3787,16 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:8
-#, python-format
 msgid ""
-"There is about 30 unit-tests and 26% coverage. Due to Jami high demand to"
-" give new functionalities to user quickly, they are not maintained by the"
-" developers or by a QA dept."
+"There is about 30 unit-tests and 26% coverage. Due to Jami high demand to "
+"give new functionalities to user quickly, they are not maintained by the "
+"developers or by a QA dept."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:10
 msgid ""
-"We use lcov for the coverage, you can find the lcov’s configuration in "
-"the daemon’s Makefile.am. Also, the coverage can be found at "
+"We use lcov for the coverage, you can find the lcov’s configuration in the "
+"daemon’s Makefile.am. Also, the coverage can be found at "
 "https://docs.jami.net/coverage/"
 msgstr ""
 
@@ -3814,8 +3808,8 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:14
 msgid ""
-"You can launch them by doing ‘make check’ in the daemon folder or "
-"separately in the unit-test folder with gdb: ‘gdb ut_media_encoder’"
+"You can launch them by doing ‘make check’ in the daemon folder or separately"
+" in the unit-test folder with gdb: ‘gdb ut_media_encoder’"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:16
@@ -3830,20 +3824,21 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:20
 msgid ""
-"You can find framework tests in the daemon’s Makefile.am and lunch it "
-"with ‘make integration’. This calls jami_test.py script in the "
-"tools/dringctrl folder. It uses dringctrl.py and controller.py which let "
-"you control Jami through bash."
+"You can find framework tests in the daemon’s Makefile.am and lunch it with "
+"‘make integration’. This calls jami_test.py script in the tools/dringctrl "
+"folder. It uses dringctrl.py and controller.py which let you control Jami "
+"through bash."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:22
-msgid "This makes a series of calls to assure jami’s opendht network is stable."
+msgid ""
+"This makes a series of calls to assure jami’s opendht network is stable."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:24
 msgid ""
-"Other framework tests need to be implemented in the future to tests "
-"Jami’s functionalities as a whole."
+"Other framework tests need to be implemented in the future to tests Jami’s "
+"functionalities as a whole."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:26
@@ -3852,24 +3847,24 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:28
 msgid ""
-"Each commit goes through integration tests in dockers on the build "
-"machines you can find the details at: jenkins.jami.net"
+"Each commit goes through integration tests in dockers on the build machines "
+"you can find the details at: jenkins.jami.net"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:30
 msgid ""
-"Code-review is made by a fellow developer, sometimes the code is reviewed"
-" by the same developer, this should be avoided to emphasize Linus’ law. "
-"The ‘Jenkins verified’ label is sometimes discarded and replaced by +1 "
-"from a developer, this should also be avoided."
+"Code-review is made by a fellow developer, sometimes the code is reviewed by"
+" the same developer, this should be avoided to emphasize Linus’ law. The "
+"‘Jenkins verified’ label is sometimes discarded and replaced by +1 from a "
+"developer, this should also be avoided."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:32
 msgid ""
-"Sonarqube lets Jenkins build Jami and verify linting. You can find "
-"filters and results at: sonar- jami.savoirfairelinux.net Sonar uses "
-"clang-tidy as a preprocessor linting compilator, you can find clang’s "
-"filters in .clang-tidy file in the daemon folder."
+"Sonarqube lets Jenkins build Jami and verify linting. You can find filters "
+"and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a "
+"preprocessor linting compilator, you can find clang’s filters in .clang-tidy"
+" file in the daemon folder."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:34
@@ -3897,10 +3892,10 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:44
 msgid ""
 "A script is called every 30 minutes on a virtual machine jami-"
-"monitorpeervm-01. You can find it on sflvault service s#7209 and is "
-"calling an other client viratual jami- monitorpeer-02 (service s#7224). A"
-" series of calls is being made and it returns the failure rate. You can "
-"find all the details at https://wiki.savoirfairelinux.com/wiki/Jami-"
+"monitorpeervm-01. You can find it on sflvault service s#7209 and is calling "
+"an other client viratual jami- monitorpeer-02 (service s#7224). A series of "
+"calls is being made and it returns the failure rate. You can find all the "
+"details at https://wiki.savoirfairelinux.com/wiki/Jami-"
 "monitorpeervm-01.mtl.sfl."
 msgstr ""
 
@@ -3913,8 +3908,7 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:48
 msgid ""
 "It traces a real time point by point graph on "
-"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host"
-"=jami-"
+"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-"
 "monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1"
 msgstr ""
 
@@ -3932,15 +3926,14 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:57
 msgid ""
-"They are reviewed by QA dpt. before sending it to the developers if "
-"needed."
+"They are reviewed by QA dpt. before sending it to the developers if needed."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:59
 msgid ""
-"If a release contains a network commit that has been merged, the QA dept."
-" Should be able to automate the different connectivity tests (as descibed"
-" below in Calls configurations)"
+"If a release contains a network commit that has been merged, the QA dept. "
+"Should be able to automate the different connectivity tests (as descibed "
+"below in Calls configurations)"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:61
@@ -3953,14 +3946,14 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:65
 msgid ""
-"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both"
-" sides."
+"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both "
+"sides."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:67
 msgid ""
-"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be "
-"only local."
+"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only "
+"local."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:69
@@ -3990,14 +3983,14 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:79
 msgid ""
 "Each major functionality should be tested as whole by adding a framework "
-"test (i.e. making sure a message was received, the call was ended well on"
-" both side, etc...)"
+"test (i.e. making sure a message was received, the call was ended well on "
+"both side, etc...)"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:81
 msgid ""
-"Each new functionality should be tested on each platform before merging "
-"it to reduce regression"
+"Each new functionality should be tested on each platform before merging it "
+"to reduce regression"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:83
@@ -4019,15 +4012,15 @@ msgstr ""
 #: ../../../developer/index.rst:5
 msgid ""
 "The Jami developer manual is a reference for Jami developers and "
-"contributors, documenting the various aspects of hacking on and "
-"developing Jami, including in-depth explanations of how Jami is designed "
-"and how its various parts work together."
+"contributors, documenting the various aspects of hacking on and developing "
+"Jami, including in-depth explanations of how Jami is designed and how its "
+"various parts work together."
 msgstr ""
 
 #: ../../../developer/introduction.md:4
 msgid ""
-"Greetings!  In the developer manual of Jami, you will learn about how "
-"Jami works from the high level, to the low, with some examples."
+"Greetings!  In the developer manual of Jami, you will learn about how Jami "
+"works from the high level, to the low, with some examples."
 msgstr ""
 
 #: ../../../developer/introduction.md:7
@@ -4068,7 +4061,7 @@ msgstr ""
 
 #: ../../../developer/introduction.md:18
 msgid "Advanced features"
-msgstr ""
+msgstr "ویژگی‌های پیشرفته"
 
 #: ../../../developer/introduction.md:19
 msgid "Manage audio/videos"
@@ -4076,13 +4069,13 @@ msgstr ""
 
 #: ../../../developer/introduction.md:20
 msgid "Call recording"
-msgstr ""
+msgstr "ضبط تماس"
 
 #: ../../../developer/introduction.md:21
 msgid ""
 "[The push notifications "
-"system](https://github.com/savoirfairelinux/opendht/wiki/Push-"
-"notifications-support)"
+"system](https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
+"support)"
 msgstr ""
 
 #: ../../../developer/introduction.md:22
@@ -4155,9 +4148,9 @@ msgstr ""
 
 #: ../../../developer/introduction.md:45
 msgid ""
-"If you are reading this, chances are you'd either like to contribute to "
-"one of Jami's components/projects, or to implement your own client. There"
-" are three main layers in this project:"
+"If you are reading this, chances are you'd either like to contribute to one "
+"of Jami's components/projects, or to implement your own client. There are "
+"three main layers in this project:"
 msgstr ""
 
 #: ../../../developer/introduction.md:49
@@ -4170,11 +4163,11 @@ msgstr ""
 
 #: ../../../developer/introduction.md:54
 msgid ""
-"The daemon, which is the main part.  It's the part which does all the "
-"logic for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other "
-"libraries, and implements the whole protocol.  If you'd like to do create"
-" a new Jami client, we recommend implementing it on top of this daemon, "
-"using one of its many APIs (REST, DBus, libwrap, or JNI)."
+"The daemon, which is the main part.  It's the part which does all the logic "
+"for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other libraries,"
+" and implements the whole protocol.  If you'd like to do create a new Jami "
+"client, we recommend implementing it on top of this daemon, using one of its"
+" many APIs (REST, DBus, libwrap, or JNI)."
 msgstr ""
 
 #: ../../../developer/introduction.md:61
@@ -4183,8 +4176,8 @@ msgstr ""
 
 #: ../../../developer/introduction.md:63
 msgid ""
-"The developer manual of Jami will explain the different features from all"
-" of these layers."
+"The developer manual of Jami will explain the different features from all of"
+" these layers."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:1
@@ -4194,8 +4187,8 @@ msgstr ""
 #: ../../../developer/jami-identifiers.md:4
 msgid ""
 "There are many identifiers in Jami. We need to unify the naming of these "
-"identifiers between all implementations. This page reference various kind"
-" of identifiers used in Jami with relevant examples."
+"identifiers between all implementations. This page reference various kind of"
+" identifiers used in Jami with relevant examples."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:8
@@ -4215,17 +4208,17 @@ msgid ""
 "**URI** : a Jami or SIP URI such as "
 "`ring:3d1112ab2bb089370c0744a44bbbb0786418d40b` or `ring:jeandupont` or "
 "`<sip:nnnnn@host:5060>`. Must be compliant with "
-"[rfc3986](https://tools.ietf.org/html/rfc3986). If it's a SIP URI, it "
-"must be compliant with "
+"[rfc3986](https://tools.ietf.org/html/rfc3986). If it's a SIP URI, it must "
+"be compliant with "
 "[rfc3261#19.1](https://tools.ietf.org/html/rfc3261#section-19.1)."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:15
 msgid ""
 "**Canonical URI** : `ring:3d1112ab2bb089370c0744a44bbbb0786418d40b` or "
-"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered "
-"name must be resolved, doesn't include <> brackets or display name. "
-"Prefixed with the scheme (`ring:` or `sip:` or `sips:`)."
+"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered name "
+"must be resolved, doesn't include <> brackets or display name. Prefixed with"
+" the scheme (`ring:` or `sip:` or `sips:`)."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:16
@@ -4236,8 +4229,8 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:17
 msgid ""
-"**Display name** or **Profile name** : an editable user-defined profile "
-"name such as `Jean Dupont`."
+"**Display name** or **Profile name** : an editable user-defined profile name"
+" such as `Jean Dupont`."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:20
@@ -4254,9 +4247,9 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:31
 msgid ""
-"If no photo is available and a registered name (ring) or display name "
-"(sip) is available, the first letter of this name can be used to generate"
-" a placeholder. Otherwise a generic placeholder is used."
+"If no photo is available and a registered name (ring) or display name (sip) "
+"is available, the first letter of this name can be used to generate a "
+"placeholder. Otherwise a generic placeholder is used."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:32
@@ -4267,8 +4260,7 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:57
 msgid ""
-"Color values are from the material palette: "
-"https://material.io/tools/color"
+"Color values are from the material palette: https://material.io/tools/color"
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:60
@@ -4281,8 +4273,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:1
 msgid ""
-"**NOTE: this page describes what is a Jami Plugin and how to install and "
-"use them.**"
+"**NOTE: this page describes what is a Jami Plugin and how to install and use"
+" them.**"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:3
@@ -4291,23 +4283,23 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:4
 msgid ""
-"As from September of 2020, Jami team has added plugins as a call and chat"
-" feature for Linux, Windows, and Android users. This meaning that now you"
-" can personalize your call/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!"
+"As from September of 2020, Jami team has added plugins as a call and chat "
+"feature for Linux, Windows, and Android users. This meaning that now you can"
+" personalize your call/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!"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:8
 msgid ""
-"To properly setup a plugin you must follow the steps in [#How to use it"
-"?](#how-to-use-it)."
+"To properly setup a plugin you must follow the steps in [#How to use "
+"it?](#how-to-use-it)."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:9
 msgid ""
-"To build a available plugin, please refer to [#How to build?](#how-to-"
-"build) instructions."
+"To build a available plugin, please refer to [#How to build?](#how-to-build)"
+" instructions."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:10
@@ -4323,50 +4315,48 @@ msgstr ""
 #: ../../../developer/jami-plugins.md:13
 msgid ""
 "Jami can be break down to three main components that interact together: "
-"Daemon, LRC and clients. Daemon is the core of Jami, and although it does"
-" not interact with users, it is involved in every command. Therefore, "
-"Daemon has a `JamiPluginManager` class that among other actions perfoms "
-"install/uninstall, load/unload, edit preferences and control plugins' "
-"usage. Despite Daemon importance, what a plugin effectivelly does to a "
-"call video/audio or to a chat message is unknown to it the same way "
-"Daemon does not know what is effectivelly done by LRC or the clients "
-"interfaces. Plugins then can be seen as a forth interacting component in "
-"Jami."
+"Daemon, LRC and clients. Daemon is the core of Jami, and although it does "
+"not interact with users, it is involved in every command. Therefore, Daemon "
+"has a `JamiPluginManager` class that among other actions perfoms "
+"install/uninstall, load/unload, edit preferences and control plugins' usage."
+" Despite Daemon importance, what a plugin effectivelly does to a call "
+"video/audio or to a chat message is unknown to it the same way Daemon does "
+"not know what is effectivelly done by LRC or the clients interfaces. Plugins"
+" then can be seen as a forth interacting component in Jami."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:19
 msgid ""
-"The plugin system inside Jami exposes different APIs that can be used by "
-"the plugins. For instance, the ChatHandler and the Media Handler API. The"
-" latter enables the plugins to modify audio and video streams from Jami "
-"calls and is used by our GreenScreen plugin but could also be used to "
-"build a YouTube streaming system, various instagram-style filters, a real"
-" time translation service, etc."
+"The plugin system inside Jami exposes different APIs that can be used by the"
+" plugins. For instance, the ChatHandler and the Media Handler API. The "
+"latter enables the plugins to modify audio and video streams from Jami calls"
+" and is used by our GreenScreen plugin but could also be used to build a "
+"YouTube streaming system, various instagram-style filters, a real time "
+"translation service, etc."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:21
 msgid ""
-"Plugins can be composed by one or multiple media and chat handlers that "
-"are responsible for attaching/detaching a data stream from Jami and a "
-"data process. Each handler represents a functionality that can be totally"
-" different between them or can be a modified versions of the same core "
+"Plugins can be composed by one or multiple media and chat handlers that are "
+"responsible for attaching/detaching a data stream from Jami and a data "
+"process. Each handler represents a functionality that can be totally "
+"different between them or can be a modified versions of the same core "
 "process. In our example, we have only one functionality, it being, the "
-"GreenScreen plugin has one media handler which data process is "
-"responsible for segmenting the foreground from a video frame and applying"
-" another image to the background, just like it is done with the green "
-"screens in movies!"
+"GreenScreen plugin has one media handler which data process is responsible "
+"for segmenting the foreground from a video frame and applying another image "
+"to the background, just like it is done with the green screens in movies!"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:23
 msgid ""
 "To use one custom functionality, it is necessary that Jami knows all "
-"plugins' handlers, which one is going to be used and the data that should"
-" be processed. Plugin's handlers are created once a plugin is loaded and "
-"are shared with Daemon's Plugin Manager. The data is inside Jami flow "
-"(for a call plugin, in the event of a new call, Jami creates and stores "
-"the corresponding media stream subjects). Finally, once a user puts a "
-"plugin functionality in action Jami tells this handler to attach the "
-"available data. When deactivated, Jami tells the handler to dettach."
+"plugins' handlers, which one is going to be used and the data that should be"
+" processed. Plugin's handlers are created once a plugin is loaded and are "
+"shared with Daemon's Plugin Manager. The data is inside Jami flow (for a "
+"call plugin, in the event of a new call, Jami creates and stores the "
+"corresponding media stream subjects). Finally, once a user puts a plugin "
+"functionality in action Jami tells this handler to attach the available "
+"data. When deactivated, Jami tells the handler to dettach."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:27
@@ -4375,26 +4365,26 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:28
 msgid ""
-"A Jami plugin is a `pluginname.jpl` file, and it must be installed to "
-"your Jami. Once installed, Jami will add your new plugin to the available"
-" plugins list but they will not be ready for use yet. Plugins are "
-"libraries and must be loaded if you want to expose them. Moreover, plugin"
-" may have preferences and besides install/uninstall and load/unload "
-"actions, it is possible to modify those preferences. For example, our "
-"GreenScreen plugin allows the user to change the background image "
-"displayed."
+"A Jami plugin is a `pluginname.jpl` file, and it must be installed to your "
+"Jami. Once installed, Jami will add your new plugin to the available plugins"
+" list but they will not be ready for use yet. Plugins are libraries and must"
+" be loaded if you want to expose them. Moreover, plugin may have preferences"
+" and besides install/uninstall and load/unload actions, it is possible to "
+"modify those preferences. For example, our GreenScreen plugin allows the "
+"user to change the background image displayed."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:33
 msgid ""
-"To setup a plugin for Android you must go under Setting, enable plugins "
-"if they are disabled, and select a plugin file from your phone. After "
-"installed it is automaticaly loaded. Optionally, you can manually perform"
-" load/unload using the checkbox button on the plugin list."
+"To setup a plugin for Android you must go under Setting, enable plugins if "
+"they are disabled, and select a plugin file from your phone. After installed"
+" it is automaticaly loaded. Optionally, you can manually perform load/unload"
+" using the checkbox button on the plugin list."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:37
-msgid "![client-android-install](images/jami-plugins-client-android-install.gif)"
+msgid ""
+"![client-android-install](images/jami-plugins-client-android-install.gif)"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:37
@@ -4403,10 +4393,10 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:39
 msgid ""
-"For Android uninstall, you must click on the plugin and a uninstall "
-"option will appear allong with the preferences and a reset preferences "
-"option. In order to a preference modification can take effect the plugin "
-"has to be reloaded."
+"For Android uninstall, you must click on the plugin and a uninstall option "
+"will appear allong with the preferences and a reset preferences option. In "
+"order to a preference modification can take effect the plugin has to be "
+"reloaded."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:42
@@ -4435,14 +4425,14 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:49
 msgid ""
-"Client-gnome: a load/unload button and a uninstall button; For client-"
-"gnome it is not possible to change plugin's preferences."
+"Client-gnome: a load/unload button and a uninstall button; For client-gnome "
+"it is not possible to change plugin's preferences."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:52
 msgid ""
-"![client-qt-install](images/jami-plugins-client-qt-install.gif) ![client-"
-"qt-prefs](images/jami-plugins-client-qt-prefs.gif)"
+"![client-qt-install](images/jami-plugins-client-qt-install.gif) ![client-qt-"
+"prefs](images/jami-plugins-client-qt-prefs.gif)"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:52
@@ -4459,9 +4449,9 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:56
 msgid ""
-"A media handler functionality only takes place if you turn them on during"
-" a call. For either Android, Linux or Windows you can do so by clicking "
-"on the plugins icon on your call screen."
+"A media handler functionality only takes place if you turn them on during a "
+"call. For either Android, Linux or Windows you can do so by clicking on the "
+"plugins icon on your call screen."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:59
@@ -4480,8 +4470,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:62
 msgid ""
-"Similarly, for chat handler functionality, you will see a plugin icon in "
-"the chat window as in the images bellow."
+"Similarly, for chat handler functionality, you will see a plugin icon in the"
+" chat window as in the images bellow."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:64
@@ -4490,10 +4480,10 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:65
 msgid ""
-"If you want to make something with your video call, it is possible that "
-"you will do so with OpenCV and/or deep learning models (Tensorflow, "
-"PyTorch, etc). So, before going to the plugin, it is necessary to build "
-"plugin's dependencies."
+"If you want to make something with your video call, it is possible that you "
+"will do so with OpenCV and/or deep learning models (Tensorflow, PyTorch, "
+"etc). So, before going to the plugin, it is necessary to build plugin's "
+"dependencies."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:68
@@ -4523,7 +4513,8 @@ msgid ""
 "instructions."
 msgstr ""
 
-#: ../../../developer/jami-plugins.md:76 ../../../developer/jami-plugins.md:215
+#: ../../../developer/jami-plugins.md:76
+#: ../../../developer/jami-plugins.md:215
 #: ../../../developer/jami-plugins.md:283
 #: ../../../developer/tensorflow-plugin.md:51
 msgid "Windows"
@@ -4553,14 +4544,14 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:145
 msgid ""
-"A difficulty for a lot of people working with deep learning models is how"
-" to deploy them. With that in mind we provide the user the possibility of"
-" using onnxruntime. There are several development libraries to train and "
-"test but, they are usually too heavy to deploy. Tensorflow with cuda "
-"support, for instance, can easily surpass 400MB. In our GreenScreen "
-"plugin We chose to use onnxruntime because it's lighter (library size of "
-"140Mb for cuda support) and supports model convertion from several "
-"development libraries (Tensorflow, PyTorch, Caffe, etc.)."
+"A difficulty for a lot of people working with deep learning models is how to"
+" deploy them. With that in mind we provide the user the possibility of using"
+" onnxruntime. There are several development libraries to train and test but,"
+" they are usually too heavy to deploy. Tensorflow with cuda support, for "
+"instance, can easily surpass 400MB. In our GreenScreen plugin We chose to "
+"use onnxruntime because it's lighter (library size of 140Mb for cuda "
+"support) and supports model convertion from several development libraries "
+"(Tensorflow, PyTorch, Caffe, etc.)."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:149
@@ -4573,16 +4564,16 @@ msgstr ""
 #: ../../../developer/jami-plugins.md:151
 msgid ""
 "To build onnxruntime based plugins for Linux and Android, we strongly "
-"recommend using docker files available under `<plugins>/docker/`. We "
-"don't offer Windows docker, but here we carefully guide you through the "
-"proper build of this library for our three supported platforms."
+"recommend using docker files available under `<plugins>/docker/`. We don't "
+"offer Windows docker, but here we carefully guide you through the proper "
+"build of this library for our three supported platforms."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:153
 msgid ""
-"If you want to build onnxruntime with Nvidia GPU suport, be sure to have "
-"a CUDA capable GPU and that you have followed all installation steps for "
-"the Nvidia drivers, CUDA Toolkit, CUDNN, and that their versions match."
+"If you want to build onnxruntime with Nvidia GPU suport, be sure to have a "
+"CUDA capable GPU and that you have followed all installation steps for the "
+"Nvidia drivers, CUDA Toolkit, CUDNN, and that their versions match."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:157
@@ -4617,8 +4608,8 @@ msgstr ""
 msgid ""
 "We kindly added onnxruntime as a contrib in "
 "[daemon](https://git.jami.net/savoirfairelinux/jami-"
-"daemon/tree/master/contrib). This way you can easily build onnxruntime "
-"for Android, and Linux."
+"daemon/tree/master/contrib). This way you can easily build onnxruntime for "
+"Android, and Linux."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:167
@@ -4661,8 +4652,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:254
 msgid ""
-"To exemplify a plugin build, we will use the GreenScreen plugin available"
-" {gitlab-project}`here <jami-plugins>`."
+"To exemplify a plugin build, we will use the GreenScreen plugin available "
+"{gitlab-project}`here <jami-plugins>`."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:256
@@ -4671,8 +4662,7 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:257
 msgid ""
-"First you need to go to the plugins repository in your cloned ring-"
-"project:"
+"First you need to go to the plugins repository in your cloned ring-project:"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:263
@@ -4700,8 +4690,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:284
 msgid ""
-"Windows build of plugins are linked with the daemon repository and its "
-"build scripts. So to build our example plugins you have to:"
+"Windows build of plugins are linked with the daemon repository and its build"
+" scripts. So to build our example plugins you have to:"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:296
@@ -4718,8 +4708,8 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:8
 msgid ""
-"Lrc (Libringclient) is an interface between the clients and the daemon. "
-"It ensures to get the same behaviour for all client using it. "
+"Lrc (Libringclient) is an interface between the clients and the daemon. It "
+"ensures to get the same behaviour for all client using it. "
 "![Introduction](https://git.jami.net/savoirfairelinux/jami-"
 "project/uploads/01896b43f2a29d29e5148ad60e608846/Introduction.png)"
 msgstr ""
@@ -4734,8 +4724,8 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:17
 msgid ""
-"this class is an interface between lrc and the sqlite database. This "
-"class should not be called directly from the client."
+"this class is an interface between lrc and the sqlite database. This class "
+"should not be called directly from the client."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:20
@@ -4758,20 +4748,20 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:28
 msgid ""
-"When we need information about calls, members functions from the model "
-"can return NewCall::Info."
+"When we need information about calls, members functions from the model can "
+"return NewCall::Info."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:33
 msgid ""
-"When we need to perform some operation on a call, we pass it callId to "
-"the delegate performing the operation."
+"When we need to perform some operation on a call, we pass it callId to the "
+"delegate performing the operation."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:38
 msgid ""
-"note about the name : we are using New as prefix to avoid conflict with "
-"the current CallModel and Call objects."
+"note about the name : we are using New as prefix to avoid conflict with the "
+"current CallModel and Call objects."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:41
@@ -4794,14 +4784,14 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:49
 msgid ""
-"When we need information about contact(s), members functions from the "
-"model can return Contact::Info"
+"When we need information about contact(s), members functions from the model "
+"can return Contact::Info"
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:54
 msgid ""
-"When we need to perform some operation on a contact, we pass it uri to "
-"the delegate performing the operation."
+"When we need to perform some operation on a contact, we pass it uri to the "
+"delegate performing the operation."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:57
@@ -4820,27 +4810,25 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:61
 msgid ""
-"ConversationModel is an interface used to manage conversations and "
-"messages."
+"ConversationModel is an interface used to manage conversations and messages."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:66
 msgid ""
-"When we need information about some conversation(s), members functions "
-"from the model can return Conversation::Info. Conversation::Info contains"
-" Messages."
+"When we need information about some conversation(s), members functions from "
+"the model can return Conversation::Info. Conversation::Info contains "
+"Messages."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:72
 msgid ""
-"note about Message : so far, we didn't need a MessageModel, but this "
-"could be come soon."
+"note about Message : so far, we didn't need a MessageModel, but this could "
+"be come soon."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:75
 msgid ""
-"![Conversationmodel_conversation_message](https://git.jami.net/savoirfairelinux"
-"/jami-"
+"![Conversationmodel_conversation_message](https://git.jami.net/savoirfairelinux/jami-"
 "project/uploads/1b1ad190ef65b5aa088bbcb785645099/Conversationmodel_conversation_message.png)"
 msgstr ""
 
@@ -4870,8 +4858,8 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:4
 msgid ""
-"Every client generally must be able to show what peer read what message "
-"and get how many unread messages there is."
+"Every client generally must be able to show what peer read what message and "
+"get how many unread messages there is."
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:6
@@ -4888,19 +4876,20 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:46
 msgid ""
-"to set a message as displayed. Should be done when the interaction is "
-"shown and the conversation selected."
+"to set a message as displayed. Should be done when the interaction is shown "
+"and the conversation selected."
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:48
-msgid "This sends a SIP messages to connected peers with the following format:"
+msgid ""
+"This sends a SIP messages to connected peers with the following format:"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:66
 msgid ""
-"Then the peer will know this via `onMessageDisplayed` and emit a signal "
-"to the client (`DRing::ConfigurationSignal::AccountMessageStatusChanged` "
-"with status 3 (`DRing::Account::MessageStates::DISPLAYED`))"
+"Then the peer will know this via `onMessageDisplayed` and emit a signal to "
+"the client (`DRing::ConfigurationSignal::AccountMessageStatusChanged` with "
+"status 3 (`DRing::Account::MessageStates::DISPLAYED`))"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:68
@@ -4910,9 +4899,9 @@ msgstr ""
 #: ../../../developer/message-displayed-status.md:70
 msgid ""
 "By knowing the lastDisplayedMessage for our account, we can use this "
-"informations and `ConfigrationManager::countInteractionsSince` which "
-"count interaction since last message to a given message (typically last "
-"displayed interaction)"
+"informations and `ConfigrationManager::countInteractionsSince` which count "
+"interaction since last message to a given message (typically last displayed "
+"interaction)"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:72
@@ -4928,9 +4917,9 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:76
 msgid ""
-"In `src/jamidht/conversation.cpp` each conversation store the last "
-"displayed messages in a map<string, string> (uri, interactionId) and this"
-" structure is serialized in "
+"In `src/jamidht/conversation.cpp` each conversation store the last displayed"
+" messages in a map<string, string> (uri, interactionId) and this structure "
+"is serialized in "
 "`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
 msgstr ""
 
@@ -4940,253 +4929,260 @@ msgstr ""
 
 #: ../../../developer/name-server-protocol.md:4
 msgid ""
-"The protocol used by Jami to query and register a name is based on an "
-"HTTP "
-"[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API"
-" answering requests with JSON documents and regular HTTP status codes."
+"The protocol used by Jami to query and register a name is based on an HTTP "
+"[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API "
+"answering requests with JSON documents and regular HTTP status codes."
 msgstr ""
 
 #: ../../../developer/name-server-protocol.md:10
 msgid ""
-"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as"
-" its backend.  Another implementation could use any other database or "
+"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as "
+"its backend.  Another implementation could use any other database or "
 "directory service making the nameserver protocol reusable."
 msgstr ""
 
 #: ../../../developer/name-server-protocol.md:14
+msgid ""
+"If you run your own nameserver, looking up a username in the form of "
+"`username@example.com` will look up the name `username` with the nameserver "
+"at `example.com`.  (There is no need to add `@ns.jami.net` to use the "
+"default nameserver.)"
+msgstr ""
+
+#: ../../../developer/name-server-protocol.md:19
 msgid "Rules on name formatting"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:17
-msgid "Usernames are checked by a regex to ensure some rules about their format:"
+#: ../../../developer/name-server-protocol.md:22
+msgid ""
+"Usernames are checked by a regex to ensure some rules about their format:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:20
+#: ../../../developer/name-server-protocol.md:25
 msgid "Length must be between 3 and 32 characters"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:21
+#: ../../../developer/name-server-protocol.md:26
 msgid ""
 "Those characters must be alphanumerical with underscore `_` being also "
 "accepted."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:24
+#: ../../../developer/name-server-protocol.md:29
 msgid "Querying a name"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:27
+#: ../../../developer/name-server-protocol.md:32
 msgid ""
-"This is the main service provided by a name server.  It enables getting "
-"the Jami ID corresponding to a username."
+"This is the main service provided by a name server.  It enables getting the "
+"Jami ID corresponding to a username."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:30
-#: ../../../developer/name-server-protocol.md:78
-#: ../../../developer/name-server-protocol.md:126
+#: ../../../developer/name-server-protocol.md:35
+#: ../../../developer/name-server-protocol.md:83
+#: ../../../developer/name-server-protocol.md:131
 msgid "Request"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:32
+#: ../../../developer/name-server-protocol.md:37
 msgid ""
-"A request for the name `foobar` is a `GET` request with "
-"`/name/`*`foobar`* as the URI."
+"A request for the name `foobar` is a `GET` request with `/name/`*`foobar`* "
+"as the URI."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:35
-#: ../../../developer/name-server-protocol.md:84
-#: ../../../developer/name-server-protocol.md:145
+#: ../../../developer/name-server-protocol.md:40
+#: ../../../developer/name-server-protocol.md:89
+#: ../../../developer/name-server-protocol.md:150
 msgid "Response (Success)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:37
+#: ../../../developer/name-server-protocol.md:42
 msgid ""
-"If the name is found, a response with status code `200` `OK` must be sent"
-" to the client with a `Content-type` field set as `application/json`."
+"If the name is found, a response with status code `200` `OK` must be sent to"
+" the client with a `Content-type` field set as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:41
+#: ../../../developer/name-server-protocol.md:46
 msgid ""
-"The body is a JSON documents with 2 string attributes : `name` and "
-"`addr`.  `name` is equal to the one requested and `addr` is an "
-"hexadecimal representation of the Jami ID prefixed with `0x`."
+"The body is a JSON documents with 2 string attributes : `name` and `addr`.  "
+"`name` is equal to the one requested and `addr` is an hexadecimal "
+"representation of the Jami ID prefixed with `0x`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:45
-#: ../../../developer/name-server-protocol.md:93
+#: ../../../developer/name-server-protocol.md:50
+#: ../../../developer/name-server-protocol.md:98
 msgid "In our example, the JSON answer would be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:54
-#: ../../../developer/name-server-protocol.md:101
+#: ../../../developer/name-server-protocol.md:59
+#: ../../../developer/name-server-protocol.md:106
 msgid "Response (Not found)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:56
+#: ../../../developer/name-server-protocol.md:61
 msgid ""
-"If the name is not found, a response with status code `404` `Not` `Found`"
-" must be sent to the client with a `Content-type` field set as "
+"If the name is not found, a response with status code `404` `Not` `Found` "
+"must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:60
-#: ../../../developer/name-server-protocol.md:107
+#: ../../../developer/name-server-protocol.md:65
+#: ../../../developer/name-server-protocol.md:112
 msgid ""
 "The body is a JSON documents with 1 string attribute : `error`.  This "
-"attribute is filled with an error message that explains the error (and "
-"could be displayed in the client in the future)."
+"attribute is filled with an error message that explains the error (and could"
+" be displayed in the client in the future)."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:64
-#: ../../../developer/name-server-protocol.md:111
+#: ../../../developer/name-server-protocol.md:69
+#: ../../../developer/name-server-protocol.md:116
 msgid "On the reference implementation, the returned document is:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:72
+#: ../../../developer/name-server-protocol.md:77
 msgid "Querying an address"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:75
+#: ../../../developer/name-server-protocol.md:80
 msgid ""
-"This service is a reverse lookup.  You query for an address and a "
-"username is returned if one is registered on the name server."
+"This service is a reverse lookup.  You query for an address and a username "
+"is returned if one is registered on the name server."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:80
+#: ../../../developer/name-server-protocol.md:85
 msgid ""
-"A request for the ID `ring:29347542eb07159f316577e1ae16243d152f6b7b` is a"
-" `GET` request with `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* "
-"as the URI."
+"A request for the ID `ring:29347542eb07159f316577e1ae16243d152f6b7b` is a "
+"`GET` request with `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* as "
+"the URI."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:86
+#: ../../../developer/name-server-protocol.md:91
 msgid ""
-"If the address corresponds to a username, a response with status code "
-"`200` `OK` must be sent to the client with a `Content-type` field set as "
+"If the address corresponds to a username, a response with status code `200` "
+"`OK` must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:90
+#: ../../../developer/name-server-protocol.md:95
 msgid ""
-"The body is a JSON documents with 1 string attribute : `name`.  The value"
-" of this field is the name registered to this address"
+"The body is a JSON documents with 1 string attribute : `name`.  The value of"
+" this field is the name registered to this address"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:103
+#: ../../../developer/name-server-protocol.md:108
 msgid ""
-"If the address is not found, a response with status code `404` `Not` "
-"`Found` must be sent to the client with a `Content-type` field set as "
+"If the address is not found, a response with status code `404` `Not` `Found`"
+" must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:119
+#: ../../../developer/name-server-protocol.md:124
 msgid "Registering a name"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:122
+#: ../../../developer/name-server-protocol.md:127
 msgid ""
-"This part of the protocol is used to register a new name/address pair. It"
-" is used on the main public registry but may be optional in a custom "
+"This part of the protocol is used to register a new name/address pair. It is"
+" used on the main public registry but may be optional in a custom "
 "implementation."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:128
+#: ../../../developer/name-server-protocol.md:133
 msgid ""
 "A request for registering the name `foobar` is a `POST` request with "
-"`/name/`*`foobar`* as the URI. The header attribute `Content-type` must "
-"be set to `application/json`."
+"`/name/`*`foobar`* as the URI. The header attribute `Content-type` must be "
+"set to `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:132
+#: ../../../developer/name-server-protocol.md:137
 msgid ""
-"The body of the request is a JSON document with 2 string attributes: "
-"`addr` and `owner`.  `addr` contains the Jami ID prefixed with `0x` and "
-"`owner` is the name to be registered."
+"The body of the request is a JSON document with 2 string attributes: `addr` "
+"and `owner`.  `addr` contains the Jami ID prefixed with `0x` and `owner` is "
+"the name to be registered."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:136
+#: ../../../developer/name-server-protocol.md:141
 msgid "An example for `foobar` could be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:147
+#: ../../../developer/name-server-protocol.md:152
 msgid ""
-"If the name/address pair is successfully registered, a response with "
-"status code `200` `OK` must be sent to the client with a `Content-type` "
-"field set as `application/json`."
+"If the name/address pair is successfully registered, a response with status "
+"code `200` `OK` must be sent to the client with a `Content-type` field set "
+"as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:151
+#: ../../../developer/name-server-protocol.md:156
 msgid ""
-"The body contain a JSON document with 1 boolean attribute `success` set "
-"to `true`."
+"The body contain a JSON document with 1 boolean attribute `success` set to "
+"`true`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:154
+#: ../../../developer/name-server-protocol.md:159
 msgid "As an example:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:162
+#: ../../../developer/name-server-protocol.md:167
 msgid ""
-"Further attempts to query the name or the address should then be "
-"successful."
+"Further attempts to query the name or the address should then be successful."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:165
+#: ../../../developer/name-server-protocol.md:170
 msgid "Response (Bad request)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:167
+#: ../../../developer/name-server-protocol.md:172
 msgid ""
-"If the registration cannot be achieved because of an error in the request"
-" (formatting, missing attribute, etc.), a response with status code `400`"
-" `Bad` `Request` must be sent to the client with a `Content-type` field "
-"set as `application/json`."
+"If the registration cannot be achieved because of an error in the request "
+"(formatting, missing attribute, etc.), a response with status code `400` "
+"`Bad` `Request` must be sent to the client with a `Content-type` field set "
+"as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:172
+#: ../../../developer/name-server-protocol.md:177
 msgid ""
-"The body is a JSON documents with 2 attributes: `success` which is a "
-"boolean and `error` which is a string.  `success` is set to `false` and "
-"`error` is filled with an error message that explains the error (and "
-"could be displayed in the client in the future)."
+"The body is a JSON documents with 2 attributes: `success` which is a boolean"
+" and `error` which is a string.  `success` is set to `false` and `error` is "
+"filled with an error message that explains the error (and could be displayed"
+" in the client in the future)."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:177
+#: ../../../developer/name-server-protocol.md:182
 msgid "For an invalid formatting of the username, the body could be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:186
+#: ../../../developer/name-server-protocol.md:191
 msgid "Response (Forbidden)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:188
+#: ../../../developer/name-server-protocol.md:193
 msgid ""
-"If the registration cannot be achieved because the name is already taken,"
-" a response with status code `403` `Forbidden` must be sent to the client"
-" with a `Content-type` field set as `application/json`."
+"If the registration cannot be achieved because the name is already taken, a "
+"response with status code `403` `Forbidden` must be sent to the client with "
+"a `Content-type` field set as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:192
+#: ../../../developer/name-server-protocol.md:197
 msgid ""
-"The body is a JSON documents with 3 attributes: `success` which is a "
-"boolean set to `false`, `name` and `addr` which are both strings "
-"replicated from the original request."
+"The body is a JSON documents with 3 attributes: `success` which is a boolean"
+" set to `false`, `name` and `addr` which are both strings replicated from "
+"the original request."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:196
+#: ../../../developer/name-server-protocol.md:201
 msgid ""
-"Registering `foobar`, with it being already registered, would lead to the"
-" following response:"
+"Registering `foobar`, with it being already registered, would lead to the "
+"following response:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:207
+#: ../../../developer/name-server-protocol.md:212
 msgid "Some links"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:210
+#: ../../../developer/name-server-protocol.md:215
 msgid ""
-"{gitlab-project}`jami-nameservice`: reference NodeJS implementation used "
-"by `ns.jami.net` and querying an Ethereum node."
+"{gitlab-project}`jami-nameservice`: reference NodeJS implementation used by "
+"`ns.jami.net` and querying an Ethereum node."
 msgstr ""
 
 #: ../../../developer/protocol.md:1 ../../../developer/swarm.md:378
@@ -5199,20 +5195,20 @@ msgstr ""
 
 #: ../../../developer/protocol.md:7
 msgid ""
-"A **Ring account** is defined by an **RSA key pair** with a key length of"
-" at least 4096 bits."
+"A **Ring account** is defined by an **RSA key pair** with a key length of at"
+" least 4096 bits."
 msgstr ""
 
 #: ../../../developer/protocol.md:10
 msgid ""
-"The standard x509 160-bits fingerprint of the account public key is "
-"called the **RingID**."
+"The standard x509 160-bits fingerprint of the account public key is called "
+"the **RingID**."
 msgstr ""
 
 #: ../../../developer/protocol.md:13
 msgid ""
-"The account public key is used as the subject of an x509 certificate that"
-" must be valid, have the Certificate Authority flag set, and can be self-"
+"The account public key is used as the subject of an x509 certificate that "
+"must be valid, have the Certificate Authority flag set, and can be self-"
 "signed. This certificate is called the **Ring account certificate**."
 msgstr ""
 
@@ -5236,8 +5232,8 @@ msgstr ""
 #: ../../../developer/protocol.md:27
 msgid ""
 "Access to a saved Ring account private key must be authenticated and "
-"authorized. Authentication and authorization method to access the account"
-" private key is implementation defined."
+"authorized. Authentication and authorization method to access the account "
+"private key is implementation defined."
 msgstr ""
 
 #: ../../../developer/protocol.md:31
@@ -5256,18 +5252,17 @@ msgstr ""
 
 #: ../../../developer/protocol.md:38
 msgid ""
-"A **device certificate** is defined as an x509 certificate whose subject "
-"is a device public key, signed with an account private key. The "
-"certificate MUST be valid. The issuer UID field MUST be the hexadecimal "
-"form of the account public key fingerprint."
+"A **device certificate** is defined as an x509 certificate whose subject is "
+"a device public key, signed with an account private key. The certificate "
+"MUST be valid. The issuer UID field MUST be the hexadecimal form of the "
+"account public key fingerprint."
 msgstr ""
 
 #: ../../../developer/protocol.md:43
 msgid ""
-"Persisting a device private key and certificate is implementation "
-"defined. Access to a saved device private key should be authenticated. "
-"Authentication method to access the device private key is implementation "
-"defined."
+"Persisting a device private key and certificate is implementation defined. "
+"Access to a saved device private key should be authenticated. Authentication"
+" method to access the device private key is implementation defined."
 msgstr ""
 
 #: ../../../developer/protocol.md:48
@@ -5276,11 +5271,11 @@ msgstr ""
 
 #: ../../../developer/protocol.md:50
 msgid ""
-"A device can be \"removed\" from a Ring account through revocation of the"
-" device certificate. Revoked device certificates are added to one or more"
-" standard x509 Certificate Revocation List (CRL). CRLs for revoked device"
-" must be valid and signed with the corresponding CA key, which is the "
-"Ring account private key."
+"A device can be \"removed\" from a Ring account through revocation of the "
+"device certificate. Revoked device certificates are added to one or more "
+"standard x509 Certificate Revocation List (CRL). CRLs for revoked device "
+"must be valid and signed with the corresponding CA key, which is the Ring "
+"account private key."
 msgstr ""
 
 #: ../../../developer/protocol.md:56
@@ -5289,9 +5284,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:58
 msgid ""
-"The **account archive format** defines how to serialize an account "
-"private key for transmission, for instance to sign a new device "
-"certificate."
+"The **account archive format** defines how to serialize an account private "
+"key for transmission, for instance to sign a new device certificate."
 msgstr ""
 
 #: ../../../developer/protocol.md:62
@@ -5313,8 +5307,8 @@ msgstr ""
 #: ../../../developer/protocol.md:83
 msgid ""
 "Where PIN is a random 32bits number in hexadecimal form, \"+\" is string "
-"concatenation, timestamp is the current UNIX timestamp divided by 1200 "
-"(20 minutes) and password is a user-chosen password."
+"concatenation, timestamp is the current UNIX timestamp divided by 1200 (20 "
+"minutes) and password is a user-chosen password."
 msgstr ""
 
 #: ../../../developer/protocol.md:87
@@ -5337,8 +5331,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:97
 msgid ""
-"A device listens for incoming call by performing a listen OpenDHT "
-"operation on"
+"A device listens for incoming call by performing a listen OpenDHT operation "
+"on"
 msgstr ""
 
 #: ../../../developer/protocol.md:100
@@ -5353,10 +5347,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:105
 msgid ""
-"Received OpenDHT values that are not encrypted or not properly signed "
-"must be dropped. The value must be encrypted with the called device "
-"public key and signed with the calling device private key according to "
-"OpenDHT specifications."
+"Received OpenDHT values that are not encrypted or not properly signed must "
+"be dropped. The value must be encrypted with the called device public key "
+"and signed with the calling device private key according to OpenDHT "
+"specifications."
 msgstr ""
 
 #: ../../../developer/protocol.md:110
@@ -5369,28 +5363,27 @@ msgstr ""
 
 #: ../../../developer/protocol.md:114
 msgid ""
-"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol"
-" for NAT traversal."
+"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
+"for NAT traversal."
 msgstr ""
 
 #: ../../../developer/protocol.md:117
 msgid ""
-"ICE is used in Ring to establish a peer-to-peer communication between two"
-" devices."
+"ICE is used in Ring to establish a peer-to-peer communication between two "
+"devices."
 msgstr ""
 
 #: ../../../developer/protocol.md:120
 msgid ""
-"The calling device gathers candidates and build an Initial Offer "
-"according to the ICE specifications and starts the ICE negotiation "
-"process."
+"The calling device gathers candidates and build an Initial Offer according "
+"to the ICE specifications and starts the ICE negotiation process."
 msgstr ""
 
 #: ../../../developer/protocol.md:124
 msgid ""
-"The calling device puts the encrypted ICE offer (the Initial Offer) on "
-"the DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form "
-"of the called deviceID."
+"The calling device puts the encrypted ICE offer (the Initial Offer) on the "
+"DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form of the "
+"called deviceID."
 msgstr ""
 
 #: ../../../developer/protocol.md:128
@@ -5406,14 +5399,14 @@ msgstr ""
 
 #: ../../../developer/protocol.md:134
 msgid ""
-"This protocol is a compound of msgpack values, successively packed in "
-"this order:"
+"This protocol is a compound of msgpack values, successively packed in this "
+"order:"
 msgstr ""
 
 #: ../../../developer/protocol.md:138
 msgid ""
-"an integer giving the version of ICE message format protocol used for the"
-" rest of the data. Current defined protocol version is **1**."
+"an integer giving the version of ICE message format protocol used for the "
+"rest of the data. Current defined protocol version is **1**."
 msgstr ""
 
 #: ../../../developer/protocol.md:139
@@ -5429,8 +5422,8 @@ msgstr ""
 #: ../../../developer/protocol.md:141
 msgid ""
 "an array of string, of the previous number entries, where each string "
-"describe the ICE candidate, formated as an \"a=\" line (without the "
-"\"a=\" header) described in [rfc5245, section "
+"describe the ICE candidate, formated as an \"a=\" line (without the \"a=\" "
+"header) described in [rfc5245, section "
 "4.3](https://tools.ietf.org/html/rfc5245#page-26)"
 msgstr ""
 
@@ -5440,27 +5433,27 @@ msgstr ""
 
 #: ../../../developer/protocol.md:145
 msgid ""
-"Upon reception of the encrypted and signed Initial ICE Offer (through the"
-" listen operation), a called device should perform authorization checks "
-"of the calling device, identified as the Initial Offer signer. "
-"Authorization rules are implementation defined, but a typical "
-"implementation would authorize known or trusted contacts."
+"Upon reception of the encrypted and signed Initial ICE Offer (through the "
+"listen operation), a called device should perform authorization checks of "
+"the calling device, identified as the Initial Offer signer. Authorization "
+"rules are implementation defined, but a typical implementation would "
+"authorize known or trusted contacts."
 msgstr ""
 
 #: ../../../developer/protocol.md:151
 #: ../../../developer/technical-overview.md:227
 msgid ""
-"If the calling device is not authorized or if for any implementation "
-"defined reason the called device refuses the incoming connection request,"
-" the called device must ignore the Initial Offer and may log the event."
+"If the calling device is not authorized or if for any implementation defined"
+" reason the called device refuses the incoming connection request, the "
+"called device must ignore the Initial Offer and may log the event."
 msgstr ""
 
 #: ../../../developer/protocol.md:156
 #: ../../../developer/technical-overview.md:231
 msgid ""
-"If the called device authorizes the caller and wish to accept the "
-"connection it must build an ICE answer, start the ICE negotiation process"
-" and send the encrypted and signed ICE answer at the same DHT key."
+"If the called device authorizes the caller and wish to accept the connection"
+" it must build an ICE answer, start the ICE negotiation process and send the"
+" encrypted and signed ICE answer at the same DHT key."
 msgstr ""
 
 #: ../../../developer/protocol.md:161
@@ -5470,10 +5463,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:163
 msgid ""
-"Once a peer-to-peer communication channel has been established, the "
-"called device listens on it for incoming DTLS connections (acting as a "
-"DTLS server) while the caller initiates an outgoing DTLS connection "
-"(acting as a DTLS client)."
+"Once a peer-to-peer communication channel has been established, the called "
+"device listens on it for incoming DTLS connections (acting as a DTLS server)"
+" while the caller initiates an outgoing DTLS connection (acting as a DTLS "
+"client)."
 msgstr ""
 
 #: ../../../developer/protocol.md:168
@@ -5485,15 +5478,15 @@ msgstr ""
 #: ../../../developer/protocol.md:171
 msgid ""
 "Peers must only support PFS cypher suites. The set of supported cypher "
-"suites is implementation defined but should include at least ECDHE-AES-"
-"GCM (TODO: specify the exact suites recommended to support)."
+"suites is implementation defined but should include at least ECDHE-AES-GCM "
+"(TODO: specify the exact suites recommended to support)."
 msgstr ""
 
 #: ../../../developer/protocol.md:175
 msgid ""
-"During the DTLS handshake, both peers must provide their respective "
-"device certificate chain and must authenticate the other peer, checking "
-"that its public key is the same used during the DHT ICE exchange."
+"During the DTLS handshake, both peers must provide their respective device "
+"certificate chain and must authenticate the other peer, checking that its "
+"public key is the same used during the DHT ICE exchange."
 msgstr ""
 
 #: ../../../developer/protocol.md:179
@@ -5506,10 +5499,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:183
 msgid ""
-"Once an encrypted and authenticated peer-to-peer communication channel is"
-" available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) "
-"must be used to place a call and send messages. The caller might send a "
-"SIP INVITE as soon as the DTLS channel is established."
+"Once an encrypted and authenticated peer-to-peer communication channel is "
+"available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) must be"
+" used to place a call and send messages. The caller might send a SIP INVITE "
+"as soon as the DTLS channel is established."
 msgstr ""
 
 #: ../../../developer/protocol.md:188
@@ -5519,16 +5512,16 @@ msgstr ""
 
 #: ../../../developer/protocol.md:190
 msgid ""
-"Supported codecs are implementation defined, but Ring clients should "
-"support the Opus audio coded and the H264 video codec."
+"Supported codecs are implementation defined, but Ring clients should support"
+" the Opus audio coded and the H264 video codec."
 msgstr ""
 
 #: ../../../developer/protocol.md:193
 #: ../../../developer/technical-overview.md:275
 msgid ""
-"SRTP must be used when negotiating media with SIP, using a new random key"
-" for each media and each negotiation. ICE should be used when negotiating"
-" media with SIP."
+"SRTP must be used when negotiating media with SIP, using a new random key "
+"for each media and each negotiation. ICE should be used when negotiating "
+"media with SIP."
 msgstr ""
 
 #: ../../../developer/protocol.md:197
@@ -5547,8 +5540,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:205
 msgid ""
-"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = "
-"2\\^16 (64 MiB), mono-threaded, to generate a 512 bits hash."
+"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = 2\\^16"
+" (64 MiB), mono-threaded, to generate a 512 bits hash."
 msgstr ""
 
 #: ../../../developer/protocol.md:208
@@ -5567,8 +5560,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:215
 msgid ""
-"Encryption uses standard AES-GCM as implemented by Nettle using a random "
-"IV for each encryption."
+"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
+"for each encryption."
 msgstr ""
 
 #: ../../../developer/protocol.md:218
@@ -5577,8 +5570,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:220
 msgid ""
-"The password is stretched to generate a 256 bits key and a random salt of"
-" 128 bits."
+"The password is stretched to generate a 256 bits key and a random salt of "
+"128 bits."
 msgstr ""
 
 #: ../../../developer/protocol.md:223
@@ -5592,11 +5585,13 @@ msgid "During a call"
 msgstr ""
 
 #: ../../../developer/protocol.md:228
-msgid "Audio/video data are exchanged using encrypted RTP channels between peers."
+msgid ""
+"Audio/video data are exchanged using encrypted RTP channels between peers."
 msgstr ""
 
 #: ../../../developer/protocol.md:231
-msgid "The protocol is a classic SRTP, with following supported crypto suites:"
+msgid ""
+"The protocol is a classic SRTP, with following supported crypto suites:"
 msgstr ""
 
 #: ../../../developer/protocol.md:233
@@ -5604,9 +5599,7 @@ msgid "Ring account force AES\\_CM\\_128\\_HMAC\\_SHA1\\_80"
 msgstr ""
 
 #: ../../../developer/protocol.md:234
-msgid ""
-"SIP can use AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 or "
-"AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
+msgid "SIP can use AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 or AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
 msgstr ""
 
 #: ../../../developer/protocol.md:237
@@ -5617,11 +5610,11 @@ msgstr ""
 
 #: ../../../developer/protocol.md:240
 msgid ""
-"The keys are exchanged using SDES method: keys are written into the SIP "
-"SDP messages during the SIP INVITE negotiation. When SDES is used, Ring "
-"forces the underlaying transport to be secure (encrypted) to not disclose"
-" these keys. Ring supports DTLS natively for SIP and Ring accounts for "
-"such. The call cannot be done if this condition is not fulfilled."
+"The keys are exchanged using SDES method: keys are written into the SIP SDP "
+"messages during the SIP INVITE negotiation. When SDES is used, Ring forces "
+"the underlaying transport to be secure (encrypted) to not disclose these "
+"keys. Ring supports DTLS natively for SIP and Ring accounts for such. The "
+"call cannot be done if this condition is not fulfilled."
 msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:1
@@ -5638,10 +5631,10 @@ msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:6
 msgid ""
-"Both signals and slots should use camelCase. A signal should use the "
-"simple past tense or past participle of some verb, likely prefixed by a "
-"short subject. A corresponding slot should be the signal prefixed with "
-"the word \"on\" and not the word \"slot\". Here are some examples:"
+"Both signals and slots should use camelCase. A signal should use the simple "
+"past tense or past participle of some verb, likely prefixed by a short "
+"subject. A corresponding slot should be the signal prefixed with the word "
+"\"on\" and not the word \"slot\". Here are some examples:"
 msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:29
@@ -5656,11 +5649,11 @@ msgstr ""
 #: ../../../developer/qt-qml-coding-style.md:31
 msgid ""
 "The Qt 5.15.0 version of qmlformat has some issues dealing with comment "
-"sections and currently does not discriminate against max columns, so we "
-"will continue to format using these guidelines for now. The following is "
-"a comprehensive sample component, adapted from https://doc.qt.io/qt-5"
-"/qml-codingconventions.html, that attempts to illustrate the ideally "
-"formatted component."
+"sections and currently does not discriminate against max columns, so we will"
+" continue to format using these guidelines for now. The following is a "
+"comprehensive sample component, adapted from https://doc.qt.io/qt-5/qml-"
+"codingconventions.html, that attempts to illustrate the ideally formatted "
+"component."
 msgstr ""
 
 #: ../../../developer/qt-qml-testing-tools.md:1
@@ -5714,75 +5707,74 @@ msgstr ""
 
 #: ../../../developer/release-process.md:8
 msgid ""
-"Having a unique revision is not a solution in this situation. The "
-"retained idea is having a global \"state\" and **various updates per "
-"module**."
+"Having a unique revision is not a solution in this situation. The retained "
+"idea is having a global \"state\" and **various updates per module**."
 msgstr ""
 
 #: ../../../developer/release-process.md:12
 msgid ""
 "For consistency, **each Ring module has to follow the same process** as "
-"described in following points. But not all modules have to be modified in"
-" same time."
+"described in following points. But not all modules have to be modified in "
+"same time."
 msgstr ""
 
 #: ../../../developer/release-process.md:18
 msgid "**PROCESS FLOW:**"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "1"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "2"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "3"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "4"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "5"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "6"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:26
 msgid "Redmine Ticket"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:33
 msgid "Repository Preparation"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:38
 msgid "Testing"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:54
 msgid "Push tags"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:178
 msgid "Advertisement"
 msgstr ""
 
 #: ../../../developer/release-process.md:29
 msgid ""
-"Create a new Task on redmine attached to the release story, for the right"
-" sub-module. Set the title to \"Release Major.Minor.Micro\", with the "
+"Create a new Task on redmine attached to the release story, for the right "
+"sub-module. Set the title to \"Release Major.Minor.Micro\", with the "
 "appropriate version number."
 msgstr ""
 
@@ -5796,8 +5788,8 @@ msgstr ""
 
 #: ../../../developer/release-process.md:42
 msgid ""
-"Start with clean git tree by running `git clean -d -f -x` from the top "
-"level directory of the project."
+"Start with clean git tree by running `git clean -d -f -x` from the top level"
+" directory of the project."
 msgstr ""
 
 #: ../../../developer/release-process.md:44
@@ -5820,14 +5812,14 @@ msgstr ""
 
 #: ../../../developer/release-process.md:49
 msgid ""
-"Try making calls between Ring and other free softphones (Ekiga, "
-"Linphone), as well as hardware VoIP phones."
+"Try making calls between Ring and other free softphones (Ekiga, Linphone), "
+"as well as hardware VoIP phones."
 msgstr ""
 
 #: ../../../developer/release-process.md:51
 msgid ""
-"To catch uninitialized values being used, memory leaks, invalid frees, "
-"etc. run `valgrind --track-origins=yes --db-attach=yes ./bin/dring`"
+"To catch uninitialized values being used, memory leaks, invalid frees, etc. "
+"run `valgrind --track-origins=yes --db-attach=yes ./bin/dring`"
 msgstr ""
 
 #: ../../../developer/release-process.md:57
@@ -5852,8 +5844,8 @@ msgstr ""
 #: ../../../developer/release-process.md:100
 #: ../../../developer/release-process.md:165
 msgid ""
-"You just have to launch release script. This script launch build, "
-"download and update files and repositories..."
+"You just have to launch release script. This script launch build, download "
+"and update files and repositories..."
 msgstr ""
 
 #: ../../../developer/release-process.md:121
@@ -5876,8 +5868,8 @@ msgstr ""
 
 #: ../../../developer/release-process.md:186
 msgid ""
-"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring"
-" Major.Minor.Patch released\""
+"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring "
+"Major.Minor.Patch released\""
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:1
@@ -5899,10 +5891,10 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:11
 msgid ""
-"In this guide, we will setup a [coturn](https://github.com/coturn/coturn)"
-" server. There are other TURN/STUN server implementations available under"
-" a free license, such as [TurnServer](http://turnserver.sourceforge.net/)"
-" and [Restund](http://www.creytiv.com/restund.html)."
+"In this guide, we will setup a [coturn](https://github.com/coturn/coturn) "
+"server. There are other TURN/STUN server implementations available under a "
+"free license, such as [TurnServer](http://turnserver.sourceforge.net/) and "
+"[Restund](http://www.creytiv.com/restund.html)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:17
@@ -5911,8 +5903,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:19
 msgid ""
-"COTURN is available in most Linux distributions. On Debian, install it "
-"with the following command:"
+"COTURN is available in most Linux distributions. On Debian, install it with "
+"the following command:"
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:25
@@ -5925,8 +5917,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:38
 msgid ""
-"This also will function as a STUN server. The STUN server does not "
-"require a username and password (STUN uses very little bandwidth)."
+"This also will function as a STUN server. The STUN server does not require a"
+" username and password (STUN uses very little bandwidth)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:41
@@ -5935,8 +5927,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:43
 msgid ""
-"To create users on your TURN server, use the `turnadmin` binary (this "
-"might require superuser permissions)."
+"To create users on your TURN server, use the `turnadmin` binary (this might "
+"require superuser permissions)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:50
@@ -5949,63 +5941,63 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:58
 msgid ""
-"You can configure Jami to use your TURN server from the advanced section "
-"of your account settings:"
+"You can configure Jami to use your TURN server from the advanced section of "
+"your account settings:"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Field"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Value"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**server url**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "host and port of your server"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "0.0.0.0:10000"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**username**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "username"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "bob"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**password**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "password"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "secretpassword"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**realm**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "realm"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "sfl"
 msgstr ""
 
@@ -6027,8 +6019,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:11
 msgid ""
-"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create "
-"the Review>`"
+"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the "
+"Review>`"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:13
@@ -6045,8 +6037,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:22
 msgid ""
-"Your identification has been saved in `jami_gerrit_review_rsa`. Your "
-"public key has been saved in `jami_gerrit_review_rsa.pub.`"
+"Your identification has been saved in `jami_gerrit_review_rsa`. Your public "
+"key has been saved in `jami_gerrit_review_rsa.pub.`"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:25
@@ -6080,14 +6072,15 @@ msgid "Your Repository"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:35
-msgid "This *assumes* you have moved any existing project clone out of the way."
+msgid ""
+"This *assumes* you have moved any existing project clone out of the way."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:37
 msgid ""
 "Clone a (fresh) copy of the project. `git clone "
-"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. "
-"`git clone ssh://foo@review.jami.net:29420/jami-project.git`."
+"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. `git "
+"clone ssh://foo@review.jami.net:29420/jami-project.git`."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:38
@@ -6104,8 +6097,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:45
 msgid ""
-"The script creates a unique Change_Id:hash for each commit made from your"
-" repository."
+"The script creates a unique Change_Id:hash for each commit made from your "
+"repository."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:48
@@ -6116,8 +6109,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:51
 msgid ""
-"Gerrit will also present a secure copy (scp) string. Use *that* to "
-"download a copy of .git/hooks/commit-msg."
+"Gerrit will also present a secure copy (scp) string. Use *that* to download "
+"a copy of .git/hooks/commit-msg."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:55
@@ -6151,11 +6144,11 @@ msgstr ""
 #: ../../../developer/swarm.md:7
 msgid ""
 "A *swarm* is a group able to discuss without any central authority in a "
-"resilient way. Indeed, if two person doesn't have any connectivity with "
-"the rest of the group (ie Internet outage) but they can contact each "
-"other (in a LAN for example or in a subnetwork), they will be able to "
-"send messages to each other and then, will be able to sync with the rest "
-"of the group when it's possible."
+"resilient way. Indeed, if two person doesn't have any connectivity with the "
+"rest of the group (ie Internet outage) but they can contact each other (in a"
+" LAN for example or in a subnetwork), they will be able to send messages to "
+"each other and then, will be able to sync with the rest of the group when "
+"it's possible."
 msgstr ""
 
 #: ../../../developer/swarm.md:9
@@ -6168,8 +6161,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:11
 msgid ""
-"Syncing of the history. Anyone must be able to send a message to the "
-"whole group."
+"Syncing of the history. Anyone must be able to send a message to the whole "
+"group."
 msgstr ""
 
 #: ../../../developer/swarm.md:12
@@ -6178,8 +6171,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:13
 msgid ""
-"Non-repudiation. Devices must be able to verify old messages' validity "
-"and to replay the whole history."
+"Non-repudiation. Devices must be able to verify old messages' validity and "
+"to replay the whole history."
 msgstr ""
 
 #: ../../../developer/swarm.md:14
@@ -6187,7 +6180,8 @@ msgid "PFS on the transport. Storage is managed by the device."
 msgstr ""
 
 #: ../../../developer/swarm.md:16
-msgid "The main idea is to get a synchronized Merkle tree with the participants."
+msgid ""
+"The main idea is to get a synchronized Merkle tree with the participants."
 msgstr ""
 
 #: ../../../developer/swarm.md:18
@@ -6252,9 +6246,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:36
 msgid ""
-"Bob announces to his other devices that he creates a new conversation. "
-"This is done via an invite to join the swarm sent through the DHT to "
-"other devices linked to that account."
+"Bob announces to his other devices that he creates a new conversation. This "
+"is done via an invite to join the swarm sent through the DHT to other "
+"devices linked to that account."
 msgstr ""
 
 #: ../../../developer/swarm.md:38
@@ -6301,8 +6295,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:53
 msgid ""
-"Alice pull the git repo of Bob. **WARNING this means that messages need a"
-" connection, not from the DHT like today**"
+"Alice pull the git repo of Bob. **WARNING this means that messages need a "
+"connection, not from the DHT like today**"
 msgstr ""
 
 #: ../../../developer/swarm.md:54
@@ -6311,16 +6305,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:55
 msgid ""
-"To validate that Alice is a member, she removes the invite from "
-"`/invited` directory, then adds her certificate into the `/members` "
-"directory"
+"To validate that Alice is a member, she removes the invite from `/invited` "
+"directory, then adds her certificate into the `/members` directory"
 msgstr ""
 
 #: ../../../developer/swarm.md:56
 msgid ""
-"Once all commits validated and on her device, other members of the group "
-"are discovered by Alice. with these peers, she will construct the **DRT**"
-" (explained below) with Bob as a bootstrap."
+"Once all commits validated and on her device, other members of the group are"
+" discovered by Alice. with these peers, she will construct the **DRT** "
+"(explained below) with Bob as a bootstrap."
 msgstr ""
 
 #: ../../../developer/swarm.md:58
@@ -6345,18 +6338,18 @@ msgstr ""
 msgid ""
 "and adds her device and CRL to the repository if missing (others must be "
 "able to verify the commit). Merge conflicts are avoided because we are "
-"mostly based on commit messages, not files (unless CRLS + certificates "
-"but they are located). then she announces the new commit via the **DRT** "
-"with a service message (explained later) and pings the DHT for mobile "
-"devices (they must receive a push notification)."
+"mostly based on commit messages, not files (unless CRLS + certificates but "
+"they are located). then she announces the new commit via the **DRT** with a "
+"service message (explained later) and pings the DHT for mobile devices (they"
+" must receive a push notification)."
 msgstr ""
 
 #: ../../../developer/swarm.md:68
 msgid ""
-"For pinging other devices, the sender sends to other members a SIP "
-"message with mimetype = \"application/im-gitmessage-id\" containing a "
-"JSON with the \"deviceId\" which sends the message, the \"id\" of the "
-"conversation related, and the \"commit\""
+"For pinging other devices, the sender sends to other members a SIP message "
+"with mimetype = \"application/im-gitmessage-id\" containing a JSON with the "
+"\"deviceId\" which sends the message, the \"id\" of the conversation "
+"related, and the \"commit\""
 msgstr ""
 
 #: ../../../developer/swarm.md:70
@@ -6383,8 +6376,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:77
 msgid ""
-"If all commits are not valid, pull is canceled. *Alice* must reestablish "
-"her state to a correct state. **TODO process*"
+"If all commits are not valid, pull is canceled. *Alice* must reestablish her"
+" state to a correct state. **TODO process*"
 msgstr ""
 
 #: ../../../developer/swarm.md:79
@@ -6394,28 +6387,28 @@ msgstr ""
 #: ../../../developer/swarm.md:81
 msgid ""
 "To avoid users pushing some unwanted commits (with conflicts, false "
-"messages, etc), this is how each commit (from the oldest to the newest "
-"one) MUST be validated before merging a remote branch:"
+"messages, etc), this is how each commit (from the oldest to the newest one) "
+"MUST be validated before merging a remote branch:"
 msgstr ""
 
 #: ../../../developer/swarm.md:83
 msgid ""
-"Note: if the validation fails, the fetch is ignored and we do not merge "
-"the branch (and remove the data), and the user should be notified Note2: "
-"If a fetch is too big, it's not done (**TODO**)"
+"Note: if the validation fails, the fetch is ignored and we do not merge the "
+"branch (and remove the data), and the user should be notified Note2: If a "
+"fetch is too big, it's not done (**TODO**)"
 msgstr ""
 
 #: ../../../developer/swarm.md:86
 msgid ""
 "For each commits, check that the device that tries to send the commit is "
-"authorized at this moment and that the certificates are present (in "
-"/devices for the device, and in /members or /admins for the issuer)."
+"authorized at this moment and that the certificates are present (in /devices"
+" for the device, and in /members or /admins for the issuer)."
 msgstr ""
 
 #: ../../../developer/swarm.md:87
 msgid ""
-"3 cases. The commit has 2 parents, so it's a merge, nothing more to "
-"validate here"
+"3 cases. The commit has 2 parents, so it's a merge, nothing more to validate"
+" here"
 msgstr ""
 
 #: ../../../developer/swarm.md:88
@@ -6533,8 +6526,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:120
 msgid ""
-"else fail. Notify the user that they may be with an old version or that "
-"peer tried to submit unwanted commits"
+"else fail. Notify the user that they may be with an old version or that peer"
+" tried to submit unwanted commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:123
@@ -6547,8 +6540,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:127
 msgid ""
-"This is one of the most difficult scenarios in our context. Without "
-"central authority we can't trust:"
+"This is one of the most difficult scenarios in our context. Without central "
+"authority we can't trust:"
 msgstr ""
 
 #: ../../../developer/swarm.md:129
@@ -6557,24 +6550,24 @@ msgstr ""
 
 #: ../../../developer/swarm.md:130
 msgid ""
-"Conflicts with banned devices. If multiple admin devices are present and "
-"if Alice can speak with Bob but not Denys and Carla; Carla can speak with"
-" Denys; Denys bans Alice, Alice bans Denys, what will be the state when "
-"the 4 members will merge the conversations."
+"Conflicts with banned devices. If multiple admin devices are present and if "
+"Alice can speak with Bob but not Denys and Carla; Carla can speak with "
+"Denys; Denys bans Alice, Alice bans Denys, what will be the state when the 4"
+" members will merge the conversations."
 msgstr ""
 
 #: ../../../developer/swarm.md:131
 msgid ""
-"A device can be compromised, stolen or its certificate can expire. We "
-"should be able to ban a device and avoid that it lies about its "
-"expiration or send messages in the past (by changing its certificate or "
-"the timestamp of its commit)."
+"A device can be compromised, stolen or its certificate can expire. We should"
+" be able to ban a device and avoid that it lies about its expiration or send"
+" messages in the past (by changing its certificate or the timestamp of its "
+"commit)."
 msgstr ""
 
 #: ../../../developer/swarm.md:133
 msgid ""
-"Similar systems (with distributed group systems) are not so much, but "
-"these are some examples:"
+"Similar systems (with distributed group systems) are not so much, but these "
+"are some examples:"
 msgstr ""
 
 #: ../../../developer/swarm.md:135
@@ -6591,9 +6584,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:138
 msgid ""
-"This voting system needs a human action to ban someone or must be based "
-"on the CRLs info from the repository (because we can't trust external "
-"CRLs)"
+"This voting system needs a human action to ban someone or must be based on "
+"the CRLs info from the repository (because we can't trust external CRLs)"
 msgstr ""
 
 #: ../../../developer/swarm.md:140
@@ -6603,15 +6595,15 @@ msgstr ""
 #: ../../../developer/swarm.md:142
 msgid ""
 "This is the only part that MUST have a consensus to avoid conversation's "
-"split, like if two members kick each other from the conversation, what "
-"will see the third one?"
+"split, like if two members kick each other from the conversation, what will "
+"see the third one?"
 msgstr ""
 
 #: ../../../developer/swarm.md:144
 msgid ""
-"This is needed to detect revoked devices, or simply avoid getting "
-"unwanted people present in a public room. The process is pretty similar "
-"between a member and a device:"
+"This is needed to detect revoked devices, or simply avoid getting unwanted "
+"people present in a public room. The process is pretty similar between a "
+"member and a device:"
 msgstr ""
 
 #: ../../../developer/swarm.md:146
@@ -6625,24 +6617,23 @@ msgstr ""
 #: ../../../developer/swarm.md:150
 msgid ""
 "First, she votes for banning Bob. To do that, she creates the file in "
-"/votes/ban/members/uri_bob/uri_alice (members can be replaced by devices "
-"for a device, or invited for invites or admins for admins) and commits"
+"/votes/ban/members/uri_bob/uri_alice (members can be replaced by devices for"
+" a device, or invited for invites or admins for admins) and commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:151 ../../../developer/swarm.md:157
-#, python-format
 msgid ""
-"Then she checks if the vote is resolved. This means that >50% of the "
-"admins agree to ban Bob (if she is alone, it's sure it's more than 50%)."
+"Then she checks if the vote is resolved. This means that >50% of the admins "
+"agree to ban Bob (if she is alone, it's sure it's more than 50%)."
 msgstr ""
 
 #: ../../../developer/swarm.md:152
 msgid ""
-"If the vote is resolved, files into /votes/ban can be removed, all files "
-"for Bob in /members, /admins, /invited, /CRLs, /devices can be removed "
-"(or only in /devices if it's a device that is banned) and Bob's "
-"certificate can be placed into /banned/members/bob_uri.crt (or "
-"/banned/devices/uri.crt if a device is banned) and committed to the repo"
+"If the vote is resolved, files into /votes/ban can be removed, all files for"
+" Bob in /members, /admins, /invited, /CRLs, /devices can be removed (or only"
+" in /devices if it's a device that is banned) and Bob's certificate can be "
+"placed into /banned/members/bob_uri.crt (or /banned/devices/uri.crt if a "
+"device is banned) and committed to the repo"
 msgstr ""
 
 #: ../../../developer/swarm.md:153
@@ -6656,17 +6647,15 @@ msgstr ""
 #: ../../../developer/swarm.md:156
 msgid ""
 "Fir she votes for unbanning Bob. To do that, she creates the file in "
-"/votes/unban/members/uri_bob/uri_alice (members can be replaced by "
-"devices for a device, or invited for invites or admins for admins) and "
-"commits"
+"/votes/unban/members/uri_bob/uri_alice (members can be replaced by devices "
+"for a device, or invited for invites or admins for admins) and commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:158
 msgid ""
-"If the vote is resolved, files into /votes/unban can be removed, all "
-"files for Bob in /members, /admins, /invited, /CRLs, can be re-added (or "
-"only in /devices if it's a device that is unbanned) and committed to the "
-"repo"
+"If the vote is resolved, files into /votes/unban can be removed, all files "
+"for Bob in /members, /admins, /invited, /CRLs, can be re-added (or only in "
+"/devices if it's a device that is unbanned) and committed to the repo"
 msgstr ""
 
 #: ../../../developer/swarm.md:160
@@ -6675,9 +6664,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:162
 msgid ""
-"Save in convInfos removed=time::now() (like removeContact saves in "
-"contacts) that the conversation is removed and sync with other user's "
-"devices"
+"Save in convInfos removed=time::now() (like removeContact saves in contacts)"
+" that the conversation is removed and sync with other user's devices"
 msgstr ""
 
 #: ../../../developer/swarm.md:163
@@ -6686,29 +6674,28 @@ msgstr ""
 
 #: ../../../developer/swarm.md:164
 msgid ""
-"Now, if Jami startup and the repo is still present, the conversation is "
-"not announced to clients"
+"Now, if Jami startup and the repo is still present, the conversation is not "
+"announced to clients"
 msgstr ""
 
 #: ../../../developer/swarm.md:165
 msgid ""
 "Two cases:  a. If no other member in the conversation we can immediately "
-"remove the repository  b. If still other members, commit that we leave "
-"the conversation, and now wait that at least another device sync this "
-"message. This avoids the fact that other members will still detect the "
-"user as a valid member and still sends new message notifications."
+"remove the repository  b. If still other members, commit that we leave the "
+"conversation, and now wait that at least another device sync this message. "
+"This avoids the fact that other members will still detect the user as a "
+"valid member and still sends new message notifications."
 msgstr ""
 
 #: ../../../developer/swarm.md:168
 msgid ""
-"When we are sure that someone is synched, remove erased=time::now() and "
-"sync with other user's devices"
+"When we are sure that someone is synched, remove erased=time::now() and sync"
+" with other user's devices"
 msgstr ""
 
 #: ../../../developer/swarm.md:169
 msgid ""
-"All devices owned by the user can now erase the repository and related "
-"files"
+"All devices owned by the user can now erase the repository and related files"
 msgstr ""
 
 #: ../../../developer/swarm.md:171
@@ -6717,15 +6704,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:173
 msgid ""
-"Modes can't be changed through time. Or it's another conversation. So, "
-"this data is stored in the initial commit message. The commit message "
-"will be the following:"
+"Modes can't be changed through time. Or it's another conversation. So, this "
+"data is stored in the initial commit message. The commit message will be the"
+" following:"
 msgstr ""
 
 #: ../../../developer/swarm.md:184
 msgid ""
-"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), "
-"2 (INVITES_ONLY), 3 (PUBLIC)"
+"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
+"(INVITES_ONLY), 3 (PUBLIC)"
 msgstr ""
 
 #: ../../../developer/swarm.md:186
@@ -6735,16 +6722,15 @@ msgstr ""
 #: ../../../developer/swarm.md:188
 msgid ""
 "The goal here is to keep the old API (addContact/removeContact, "
-"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate "
-"swarm with a peer and its contact. This still implies some changes that "
-"we cannot ignore:"
+"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate swarm "
+"with a peer and its contact. This still implies some changes that we cannot "
+"ignore:"
 msgstr ""
 
 #: ../../../developer/swarm.md:190
 msgid ""
-"The process is still the same, an account can add a contact via "
-"addContact, then send a TrustRequest via the DHT. But two changes are "
-"necessary:"
+"The process is still the same, an account can add a contact via addContact, "
+"then send a TrustRequest via the DHT. But two changes are necessary:"
 msgstr ""
 
 #: ../../../developer/swarm.md:191
@@ -6755,11 +6741,11 @@ msgstr ""
 
 #: ../../../developer/swarm.md:192
 msgid ""
-"TrustRequest are retried when contact come backs online. It's not the "
-"case today (as we don't want to generate a new TrustRequest if the peer "
-"discard the first). So, if an account receives a trust request, it will "
-"be automatically ignored if the request with a related conversation is "
-"declined (as convRequests are synched)"
+"TrustRequest are retried when contact come backs online. It's not the case "
+"today (as we don't want to generate a new TrustRequest if the peer discard "
+"the first). So, if an account receives a trust request, it will be "
+"automatically ignored if the request with a related conversation is declined"
+" (as convRequests are synched)"
 msgstr ""
 
 #: ../../../developer/swarm.md:194
@@ -6770,10 +6756,10 @@ msgstr ""
 
 #: ../../../developer/swarm.md:196
 msgid ""
-"removeContact() will remove the contact and related 1:1 conversations "
-"(with the same process as \"Remove a conversation\"). The only note here "
-"is that if we ban a contact, we don't wait for sync, we just remove all "
-"related files."
+"removeContact() will remove the contact and related 1:1 conversations (with "
+"the same process as \"Remove a conversation\"). The only note here is that "
+"if we ban a contact, we don't wait for sync, we just remove all related "
+"files."
 msgstr ""
 
 #: ../../../developer/swarm.md:198
@@ -6811,12 +6797,12 @@ msgstr ""
 #: ../../../developer/swarm.md:211
 msgid ""
 "In this case, two conversations are generated. We don't want to remove "
-"messages from users or choose one conversation here. So, sometimes two "
-"1:1 swarm between the same members will be shown. It will generate some "
-"bugs during the transition time (as we don't want to break API, the "
-"inferred conversation will be one of the two shown conversations, but for"
-" now it's \"ok-ish\", will be fixed when clients will fully handle "
-"conversationId for all APIs (calls, file transfer, etc))."
+"messages from users or choose one conversation here. So, sometimes two 1:1 "
+"swarm between the same members will be shown. It will generate some bugs "
+"during the transition time (as we don't want to break API, the inferred "
+"conversation will be one of the two shown conversations, but for now it's "
+"\"ok-ish\", will be fixed when clients will fully handle conversationId for "
+"all APIs (calls, file transfer, etc))."
 msgstr ""
 
 #: ../../../developer/swarm.md:213
@@ -6825,16 +6811,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:215
 msgid ""
-"After accepting a conversation's request, there is a time the daemon "
-"needs to retrieve the distant repository. During this time, clients MUST "
-"show a syncing view to give informations to the user. Note, while "
-"syncing:"
+"After accepting a conversation's request, there is a time the daemon needs "
+"to retrieve the distant repository. During this time, clients MUST show a "
+"syncing view to give informations to the user. Note, while syncing:"
 msgstr ""
 
 #: ../../../developer/swarm.md:218
 msgid ""
-"ConfigurationManager::getConversations() will return the conversation's "
-"id even while syncing"
+"ConfigurationManager::getConversations() will return the conversation's id "
+"even while syncing"
 msgstr ""
 
 #: ../../../developer/swarm.md:219
@@ -6845,8 +6830,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:220
 msgid ""
-"ConfigurationManager::getConversationMembers() will return a map of two "
-"URIs (the current account and the peer who sent the request)"
+"ConfigurationManager::getConversationMembers() will return a map of two URIs"
+" (the current account and the peer who sent the request)"
 msgstr ""
 
 #: ../../../developer/swarm.md:222
@@ -6855,8 +6840,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:224
 msgid ""
-"Conversations requests are represented by a **Map<String, String>** with "
-"the following keys:"
+"Conversations requests are represented by a **Map<String, String>** with the"
+" following keys:"
 msgstr ""
 
 #: ../../../developer/swarm.md:226
@@ -6890,10 +6875,10 @@ msgstr ""
 #: ../../../developer/swarm.md:235
 msgid ""
 "To be identifiable, a conversation generally needs some metadata, like a "
-"title (eg: Jami), a description (eg: some links, what is the project, "
-"etc), and an image (the logo of the project). Those metadata are optional"
-" but shared across all members, so need to be synced and incorporated in "
-"the requests."
+"title (eg: Jami), a description (eg: some links, what is the project, etc), "
+"and an image (the logo of the project). Those metadata are optional but "
+"shared across all members, so need to be synced and incorporated in the "
+"requests."
 msgstr ""
 
 #: ../../../developer/swarm.md:237
@@ -6914,10 +6899,10 @@ msgstr ""
 msgid ""
 "To update the vCard, a user with enough permissions (by default: =ADMIN) "
 "needs to edit `/profile.vcf`. and will commit the file with the mimetype "
-"`application/update-profile`. The new message is sent via the same "
-"mechanism and all peers will receive the **MessageReceived** signal from "
-"the daemon. The branch is dropped if the commit contains other files or "
-"too big or if done by a non-authorized member (by default: <ADMIN)."
+"`application/update-profile`. The new message is sent via the same mechanism"
+" and all peers will receive the **MessageReceived** signal from the daemon. "
+"The branch is dropped if the commit contains other files or too big or if "
+"done by a non-authorized member (by default: <ADMIN)."
 msgstr ""
 
 #: ../../../developer/swarm.md:253
@@ -6926,9 +6911,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:255
 msgid ""
-"In the synchronized data, each devices sends to other devices the state "
-"of the conversations. In this state, the last displayed is sent. However,"
-" because each device can have its own state for each conversation, and "
+"In the synchronized data, each devices sends to other devices the state of "
+"the conversations. In this state, the last displayed is sent. However, "
+"because each device can have its own state for each conversation, and "
 "probably without the same last commit at some point, there is several "
 "scenarios to take into account:"
 msgstr ""
@@ -6939,26 +6924,26 @@ msgstr ""
 
 #: ../../../developer/swarm.md:258
 msgid ""
-"if the last displayed sent by other devices is the same as the current "
-"one, there is nothing to do."
+"if the last displayed sent by other devices is the same as the current one, "
+"there is nothing to do."
 msgstr ""
 
 #: ../../../developer/swarm.md:259
 msgid ""
-"if there is no last displayed for the current device, the remote "
-"displayed message is used."
+"if there is no last displayed for the current device, the remote displayed "
+"message is used."
 msgstr ""
 
 #: ../../../developer/swarm.md:260
 msgid ""
-"if the remote last displayed is not present in the repo, it means that "
-"the commit will be fetched later, so cache the result"
+"if the remote last displayed is not present in the repo, it means that the "
+"commit will be fetched later, so cache the result"
 msgstr ""
 
 #: ../../../developer/swarm.md:261
 msgid ""
-"if the remote is already fetched, we check that the local last displayed "
-"is before in the history to replace it"
+"if the remote is already fetched, we check that the local last displayed is "
+"before in the history to replace it"
 msgstr ""
 
 #: ../../../developer/swarm.md:262
@@ -7012,16 +6997,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:305
 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 point). If a commit comes for a conversation not present "
-"there are two possibilities:"
+"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 "
+"point). If a commit comes for a conversation not present there are two "
+"possibilities:"
 msgstr ""
 
 #: ../../../developer/swarm.md:307
 msgid ""
-"The conversationId is there, in this case, the daemon is able to re-clone"
-" this conversation"
+"The conversationId is there, in this case, the daemon is able to re-clone "
+"this conversation"
 msgstr ""
 
 #: ../../../developer/swarm.md:308
@@ -7033,8 +7018,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:310
 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."
+"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
@@ -7066,14 +7051,15 @@ msgid "Why this choice"
 msgstr ""
 
 #: ../../../developer/swarm.md:323
-msgid "Each conversation will be a git repository. This choice is motivated by:"
+msgid ""
+"Each conversation will be a git repository. This choice is motivated by:"
 msgstr ""
 
 #: ../../../developer/swarm.md:325
 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."
+"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
@@ -7114,15 +7100,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:339
 msgid ""
-"History can't be deleted. To delete a conversation, the device has to "
-"leave the conversation and create another one."
+"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
 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)."
+"minutes) can be sent via a  special message via the DRT (like Typing or Read"
+" notifications)."
 msgstr ""
 
 #: ../../../developer/swarm.md:343
@@ -7136,19 +7122,18 @@ msgstr ""
 #: ../../../developer/swarm.md:376
 msgid ""
 "Swarm massively changes file transfer. Now, all the history is syncing, "
-"allowing all devices in the conversation to easily retrieve old files. "
-"This changes allow us to move from a logic where the sender pushed the "
-"file on other devices, via trying to connect to their devices (This was "
-"bad because not really resistant to connections changes/failures and "
-"needed a manual retry) to a logic where the sender allow other devices to"
-" download. Moreover, any device having the file can be the host for other"
-" devices, allowing to retrieve files even if the sender is not there."
+"allowing all devices in the conversation to easily retrieve old files. This "
+"changes allow us to move from a logic where the sender pushed the file on "
+"other devices, via trying to connect to their devices (This was bad because "
+"not really resistant to connections changes/failures and needed a manual "
+"retry) to a logic where the sender allow other devices to download. "
+"Moreover, any device having the file can be the host for other devices, "
+"allowing to retrieve files even if the sender is not there."
 msgstr ""
 
 #: ../../../developer/swarm.md:380
 msgid ""
-"The sender adds a new commit in the conversation with the following "
-"format:"
+"The sender adds a new commit in the conversation with the following format:"
 msgstr ""
 
 #: ../../../developer/swarm.md:390
@@ -7162,32 +7147,32 @@ msgstr ""
 msgid ""
 "Then, the receiver can now download the files by contacting the devices "
 "hosting the file by opening a channel with `name=\"data-transfer://\" + "
-"conversationId + \"/\" + currentDeviceId() + \"/\" + fileId` and store "
-"the info that the file is waiting in "
+"conversationId + \"/\" + currentDeviceId() + \"/\" + fileId` and store the "
+"info that the file is waiting in "
 "`${data_path}/conversation_data/${conversation_id}/waiting`"
 msgstr ""
 
 #: ../../../developer/swarm.md:394
 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 "
-"receiver will keep the first opened channel, close the others and write "
-"into a file (with the same path as the sender: "
-"`${data_path}/conversation_data/${conversation_id}/${file_id}`) all "
-"incoming data."
+"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 "
+"receiver will keep the first opened channel, close the others and write into"
+" a file (with the same path as the sender: "
+"`${data_path}/conversation_data/${conversation_id}/${file_id}`) all incoming"
+" data."
 msgstr ""
 
 #: ../../../developer/swarm.md:396
 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."
+"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
 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."
+"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
@@ -7204,8 +7189,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:406
 msgid ""
-"A swarm conversation can have multiple rendez-vous. A rendez-vous is "
-"defined by the following uri:"
+"A swarm conversation can have multiple rendez-vous. A rendez-vous is defined"
+" by the following uri:"
 msgstr ""
 
 #: ../../../developer/swarm.md:408
@@ -7220,8 +7205,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:412
 msgid ""
-"In the swarm metadatas. Where it's stored like the title/desc/avatar of "
-"the room"
+"In the swarm metadatas. Where it's stored like the title/desc/avatar of the "
+"room"
 msgstr ""
 
 #: ../../../developer/swarm.md:413
@@ -7230,10 +7215,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:415
 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)"
+"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
@@ -7266,9 +7250,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:430
 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."
+"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
@@ -7287,9 +7271,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:438
 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."
+"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
@@ -7325,16 +7309,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:450
 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**"
+"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
 msgid ""
 "[*Maximizing the Coverage of Roadmap Graph for Optimal Motion "
-"Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). "
-"But need calculations"
+"Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). But "
+"need calculations"
 msgstr ""
 
 #: ../../../developer/swarm.md:452
@@ -7347,8 +7331,8 @@ msgstr ""
 msgid ""
 "Note: to optimize the socket numbers, a socket will be given by a "
 "**ConnectionManager** to get multiplexed sockets with a given hash. This "
-"means that if we need to transmit several files and chat with someone, "
-"only one socket will be used."
+"means that if we need to transmit several files and chat with someone, only "
+"one socket will be used."
 msgstr ""
 
 #: ../../../developer/swarm.md:456
@@ -7375,16 +7359,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:467
 msgid ""
-"Two possibilities for sending the message  a. If not connected, via the "
-"DHT  b. Else, Alice sends on the SIP channel"
+"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
 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 must not know if Bob just ignored or blocked Alice. The only way "
-"is to regenerate a new invite via a new message (cf next scenario)"
+"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 "
+"must not know if Bob just ignored or blocked Alice. The only way is to "
+"regenerate a new invite via a new message (cf next scenario)"
 msgstr ""
 
 #: ../../../developer/swarm.md:474
@@ -7415,12 +7399,12 @@ msgstr ""
 #: ../../../developer/swarm.md:483
 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 from Alice and announce new messages  c. Bob doesn't know that "
-"conversation. Ask through the DHT to get an invite first to be able to "
-"accept that conversation ({\"application/invite\", conversationId})  d. "
-"Bob is disconnected (no network, or just closed). He will not receive the"
-" new message but will try to sync when the next connection will occur"
+"trusts Alice, ask for a new connection and go to b.  b. If connected, fetch "
+"from Alice and announce new messages  c. Bob doesn't know that conversation."
+" Ask through the DHT to get an invite first to be able to accept that "
+"conversation ({\"application/invite\", conversationId})  d. Bob is "
+"disconnected (no network, or just closed). He will not receive the new "
+"message but will try to sync when the next connection will occur"
 msgstr ""
 
 #: ../../../developer/swarm.md:492
@@ -7436,7 +7420,8 @@ msgid "**!! OLD DRAFT !!**"
 msgstr ""
 
 #: ../../../developer/swarm.md:497
-msgid "Note: Following notes are not organized yet. Just some line of thoughts."
+msgid ""
+"Note: Following notes are not organized yet. Just some line of thoughts."
 msgstr ""
 
 #: ../../../developer/swarm.md:499
@@ -7446,15 +7431,14 @@ msgstr ""
 #: ../../../developer/swarm.md:501
 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 conversation, the conversation can be decrypted. Maybe we need to go to"
-" something like **Double ratchet**."
+"current design, if a certificate is stolen as the previous DHT values of a "
+"conversation, the conversation can be decrypted. Maybe we need to go to "
+"something like **Double ratchet**."
 msgstr ""
 
 #: ../../../developer/swarm.md:503
 msgid ""
-"Note: a lib might exist to implement group conversations. TODO, "
-"investigate."
+"Note: a lib might exist to implement group conversations. TODO, investigate."
 msgstr ""
 
 #: ../../../developer/swarm.md:505
@@ -7471,8 +7455,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:513
 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 "
+"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 ""
 
@@ -7490,8 +7474,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:520
 msgid ""
-"A certificate for a group that sign user with a flag for a role. Adding "
-"or revoking can also be done."
+"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
@@ -7522,8 +7506,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:531
 msgid ""
-"Forward secrecy: if any key from the group is compromised, previous "
-"messages should remain confidential (as much as possible)"
+"Forward secrecy: if any key from the group is compromised, previous messages"
+" should remain confidential (as much as possible)"
 msgstr ""
 
 #: ../../../developer/swarm.md:533
@@ -7538,14 +7522,13 @@ msgstr ""
 
 #: ../../../developer/swarm.md:535
 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 node must re-put the value on the DHT every 10 minutes. Another"
-" way to do when the node is offline is to let nodes re-put the data. But,"
-" if after 10 minutes, 8 nodes are still here, they will do 64 requests "
-"(and it's exponential). The current way to avoid spamming for that is "
-"queried. This will still do 64 requests but limit the max redundancy to 8"
-" nodes."
+"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 "
+"node must re-put the value on the DHT every 10 minutes. Another way to do "
+"when the node is offline is to let nodes re-put the data. But, if after 10 "
+"minutes, 8 nodes are still here, they will do 64 requests (and it's "
+"exponential). The current way to avoid spamming for that is queried. This "
+"will still do 64 requests but limit the max redundancy to 8 nodes."
 msgstr ""
 
 #: ../../../developer/swarm.md:537
@@ -7570,8 +7553,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:545
 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:"
+"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
@@ -7582,8 +7565,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:548
 msgid ""
-"If nobody is connected, the synchronization can't be done, and the person"
-" will never see the conversation"
+"If nobody is connected, the synchronization can't be done, and the person "
+"will never see the conversation"
 msgstr ""
 
 #: ../../../developer/swarm.md:550
@@ -7596,16 +7579,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:556
 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 "
-"first need a p2p implement for the file transfer. Implement the RFC for "
-"p2p transfer."
+"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 "
+"first need a p2p implement for the file transfer. Implement the RFC for p2p "
+"transfer."
 msgstr ""
 
 #: ../../../developer/swarm.md:558
 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)"
+"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
@@ -7629,15 +7612,15 @@ msgstr ""
 #: ../../../developer/synchronization-protocol.md:4
 msgid ""
 "The swarm chat provides new possibilities for every device. Now, it's "
-"possible to sync history between devices by sharing the related "
-"repository. Devices sync needs to be redefined to follow those changes."
+"possible to sync history between devices by sharing the related repository. "
+"Devices sync needs to be redefined to follow those changes."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:6
 msgid ""
-"A lot of scenarios are defined in the {doc}`Swarm design document "
-"<swarm>`, however, this doesn't imply for syncing conversations between "
-"devices for the same user. Some new scenarios must be written."
+"A lot of scenarios are defined in the {doc}`Swarm design document <swarm>`, "
+"however, this doesn't imply for syncing conversations between devices for "
+"the same user. Some new scenarios must be written."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:8
@@ -7646,9 +7629,9 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:10
 msgid ""
-"Device sync were done via the DHT. Because every value MUST NOT exceed "
-"64k, conversations were not sent in device sync, nor member profiles, "
-"because it's too heavy. This is a problem and MUST be improved."
+"Device sync were done via the DHT. Because every value MUST NOT exceed 64k, "
+"conversations were not sent in device sync, nor member profiles, because "
+"it's too heavy. This is a problem and MUST be improved."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:12
@@ -7670,9 +7653,9 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:18
 msgid ""
-"Since Jami has the {doc}`ConnectionManager <connection-manager>`, using "
-"p2p socket is possible to perform sync quickly with big values (cause the"
-" socket is not limited in data)"
+"Since Jami has the {doc}`ConnectionManager <connection-manager>`, using p2p "
+"socket is possible to perform sync quickly with big values (cause the socket"
+" is not limited in data)"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:20
@@ -7689,15 +7672,15 @@ msgstr ""
 msgid ""
 "Other devices (*!A*) will detect that announce and will ask this device "
 "through the **ConnectionManager** to open a new channel named "
-"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other "
-"devices, so it will asks for sync channels too)."
+"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other devices, "
+"so it will asks for sync channels too)."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:24
 msgid ""
-"As soon as this channel is opened, the device which is asking this "
-"channel will send a **DeviceSync** (cf next part) value containing its "
-"known conversations and contacts."
+"As soon as this channel is opened, the device which is asking this channel "
+"will send a **DeviceSync** (cf next part) value containing its known "
+"conversations and contacts."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:25
@@ -7733,8 +7716,8 @@ msgstr ""
 #: ../../../developer/synchronization-protocol.md:33
 msgid ""
 "Note: If *A* detects new conversations, it will asks the device which "
-"announced that conversation to clone the repository through a git channel"
-" (so like described in {doc}`Swarm chat design <swarm>`)"
+"announced that conversation to clone the repository through a git channel "
+"(so like described in {doc}`Swarm chat design <swarm>`)"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:35
@@ -7793,8 +7776,8 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:74
 msgid ""
-"The other device should receives and sync the conversation created on one"
-" of the devices"
+"The other device should receives and sync the conversation created on one of"
+" the devices"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:76
@@ -7857,11 +7840,10 @@ msgstr ""
 #: ../../../developer/synchronizing-profiles.md:3
 msgid ""
 "There is two types of profiles. The one for the current account, and the "
-"ones from contacts. As this vcard contains infos, such as the avatar and "
-"the display name, it should be synced as soon as possible. But, it must "
-"be sent only when needed, to avoid un-necessary data transmissions. The "
-"format used to store the profiles is a "
-"[vCard](https://en.wikipedia.org/wiki/VCard) "
+"ones from contacts. As this vcard contains infos, such as the avatar and the"
+" display name, it should be synced as soon as possible. But, it must be sent"
+" only when needed, to avoid un-necessary data transmissions. The format used"
+" to store the profiles is a [vCard](https://en.wikipedia.org/wiki/VCard) "
 "(https://datatracker.ietf.org/doc/html/rfc6350)"
 msgstr ""
 
@@ -7885,8 +7867,8 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:13
 msgid ""
-"Because this logic is still managed per client, it depends on the client."
-" However, on Desktop, this is unified and stored into: "
+"Because this logic is still managed per client, it depends on the client. "
+"However, on Desktop, this is unified and stored into: "
 "`${idPath_}/profiles/${base64(uri)}.vcf`"
 msgstr ""
 
@@ -7896,9 +7878,8 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:21
 msgid ""
-"At the beginning of a call, generally client sends the vCard. However, "
-"this method should be removed in favor of the other located in the "
-"daemon."
+"At the beginning of a call, generally client sends the vCard. However, this "
+"method should be removed in favor of the other located in the daemon."
 msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:23
@@ -7907,15 +7888,14 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:25
 msgid ""
-"When connecting to a new devices, a SIP or a sync channel is done. When "
-"this channel is ready, we check if we need to send the profile. To do "
-"this, the hash of the profile is compared to the one in the cache "
-"(`${cacheDir}/${accId}/vcard/sha3` like "
-"`~/.cache/jami/xxxxx/vcard/sha3`on GNU/Linux), and the file "
-"`${cacheDir}/${accId}/vcard/deviceId` is checked). cf "
-"`JamiAccount::needToSendProfile()`. If not present, the profile of the "
-"account is sent. Typically, the name of the channel will be "
-"\"vcard://xxx\" where the issuer is the one sending the profile."
+"When connecting to a new devices, a SIP or a sync channel is done. When this"
+" channel is ready, we check if we need to send the profile. To do this, the "
+"hash of the profile is compared to the one in the cache "
+"(`${cacheDir}/${accId}/vcard/sha3` like `~/.cache/jami/xxxxx/vcard/sha3`on "
+"GNU/Linux), and the file `${cacheDir}/${accId}/vcard/deviceId` is checked). "
+"cf `JamiAccount::needToSendProfile()`. If not present, the profile of the "
+"account is sent. Typically, the name of the channel will be \"vcard://xxx\" "
+"where the issuer is the one sending the profile."
 msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:27
@@ -7925,9 +7905,9 @@ msgstr ""
 #: ../../../developer/synchronizing-profiles.md:29
 msgid ""
 "If the profile is sent and the device is from the same account, "
-"conversations are checked and we send profiles of all members. The "
-"channel name will be \"${conversationId}/profile/${memberUri}.vcf\". "
-"Behavior tested in `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
+"conversations are checked and we send profiles of all members. The channel "
+"name will be \"${conversationId}/profile/${memberUri}.vcf\". Behavior tested"
+" in `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:1
@@ -7987,8 +7967,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:25
 msgid ""
-"The issuer UID field must be the hexadecimal form of the issuer public "
-"key fingerprint (CA)."
+"The issuer UID field must be the hexadecimal form of the issuer public key "
+"fingerprint (CA)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:27
@@ -8025,8 +8005,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:37
 msgid ""
-"The issuer UID field must be the hexadecimal form of the issuer public "
-"key fingerprint (JamiId)."
+"The issuer UID field must be the hexadecimal form of the issuer public key "
+"fingerprint (JamiId)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:40
@@ -8039,9 +8019,9 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:43
 msgid ""
-"It's the DHT key where the list of account devices are published and "
-"where all devices listen to synchronize on account changes (i.e. adding "
-"or revoke a device)."
+"It's the DHT key where the list of account devices are published and where "
+"all devices listen to synchronize on account changes (i.e. adding or revoke "
+"a device)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:46
@@ -8058,14 +8038,14 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:50
 msgid ""
-"public key to encrypt messages (this is done by the message issuer using "
-"the receiver public key)."
+"public key to encrypt messages (this is done by the message issuer using the"
+" receiver public key)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:52
 msgid ""
-"A device can be \"removed\" from a Jami account through revocation of the"
-" device certificate:"
+"A device can be \"removed\" from a Jami account through revocation of the "
+"device certificate:"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:54
@@ -8076,8 +8056,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:56
 msgid ""
-"CRLs for revoked device must be valid and signed with the corresponding "
-"CA key, which is the Jami account private key."
+"CRLs for revoked device must be valid and signed with the corresponding CA "
+"key, which is the Jami account private key."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:59
@@ -8090,21 +8070,21 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:65
 msgid ""
-"Jami needs to load certificates and key-pairs each time the application "
-"is started."
+"Jami needs to load certificates and key-pairs each time the application is "
+"started."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:67
 msgid ""
-"When Jami creates a new device, these information are also needed, shared"
-" from another trusted device in a secure way."
+"When Jami creates a new device, these information are also needed, shared "
+"from another trusted device in a secure way."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:69
 msgid ""
-"All platforms doesn't provide secure way to store data, Jami supports "
-"this fact by encrypting data stored outside the memory (i.e. on a file-"
-"system) using a user defined password during the account creation."
+"All platforms doesn't provide secure way to store data, Jami supports this "
+"fact by encrypting data stored outside the memory (i.e. on a file-system) "
+"using a user defined password during the account creation."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:76
@@ -8151,15 +8131,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:107
 msgid ""
-"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with"
-" a 256-bits key."
+"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with a "
+"256-bits key."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:109
 msgid ""
-"This key is derived from the user provided password, a PIN and a "
-"timestamp, using [Argon2](https://github.com/P-H-C/phc-winner-argon2) (a "
-"password stretching and normalizer) as follow:"
+"This key is derived from the user provided password, a PIN and a timestamp, "
+"using [Argon2](https://github.com/P-H-C/phc-winner-argon2) (a password "
+"stretching and normalizer) as follow:"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:124
@@ -8171,10 +8151,10 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:127
 msgid ""
-"NOTE: when exporting a file on the DHT or anywhere else, the daemon "
-"update the archive first, to write latest contacts. This is the reason "
-"why the password is needed when exporting (it's not just a copy of the "
-"archive somewhere else)"
+"NOTE: when exporting a file on the DHT or anywhere else, the daemon update "
+"the archive first, to write latest contacts. This is the reason why the "
+"password is needed when exporting (it's not just a copy of the archive "
+"somewhere else)"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:129
@@ -8217,8 +8197,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:146
 msgid ""
-"Dedicated [ Jami distributed network](Ring_distributed_network "
-"\"wikilink\") page."
+"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
+" page."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:149
@@ -8255,14 +8235,14 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:165
 msgid ""
-"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE "
-"(Interactive Connectivity Establishment), a protocol for NAT traversal."
+"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE (Interactive "
+"Connectivity Establishment), a protocol for NAT traversal."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:168
 msgid ""
-"ICE is used in Jami to establish a peer-to-peer communication between two"
-" devices."
+"ICE is used in Jami to establish a peer-to-peer communication between two "
+"devices."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:171
@@ -8277,10 +8257,9 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:175
 msgid ""
-"The calling device puts the encrypted ICE offer (the *Initial Offer*) on "
-"the DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where "
-"*h* is SHA1, *+* is the string concatenation, *DeviceID* is in "
-"hexadecimal form."
+"The calling device puts the encrypted ICE offer (the *Initial Offer*) on the"
+" DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is "
+"SHA1, *+* is the string concatenation, *DeviceID* is in hexadecimal form."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:180
@@ -8290,7 +8269,8 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/technical-overview.md:182
-msgid "At peer answer reception, the calling device starts the ICE negotiation."
+msgid ""
+"At peer answer reception, the calling device starts the ICE negotiation."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:184
@@ -8305,16 +8285,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:189
 msgid ""
-"A device listens for incoming calls by performing a listen OpenDHT "
-"operation on `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where "
-"*h* is SHA1, *+* is the string concatenation and *DeviceID* is in "
-"hexadecimal form."
+"A device listens for incoming calls by performing a listen OpenDHT operation"
+" on `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is SHA1, "
+"*+* is the string concatenation and *DeviceID* is in hexadecimal form."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:193
 msgid ""
-"At ICE *Initial Offer* reception, the called device **must** do a "
-"security validation of the peer (see below)."
+"At ICE *Initial Offer* reception, the called device **must** do a security "
+"validation of the peer (see below)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:195
@@ -8331,8 +8310,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:200
 msgid ""
-"*Note: OpenDHT drops values that are not properly encrypted or signed, as"
-" specified by OpenDHT protocol.*"
+"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
+"specified by OpenDHT protocol.*"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:203
@@ -8361,23 +8340,23 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:221
 msgid ""
-"Upon reception of the encrypted and signed Initial ICE Offer (through the"
-" listen operation), a called device should perform authorization checks "
-"of the calling device, identified as the Initial Offer signer."
+"Upon reception of the encrypted and signed Initial ICE Offer (through the "
+"listen operation), a called device should perform authorization checks of "
+"the calling device, identified as the Initial Offer signer."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:225
 msgid ""
-"Authorization rules are implementation defined, but a typical "
-"implementation would authorize known or trusted contacts."
+"Authorization rules are implementation defined, but a typical implementation"
+" would authorize known or trusted contacts."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:238
 msgid ""
 "Once a peer-to-peer communication channel has been established by ICE "
 "protocol, the called device starts a server-side DTLS session on the ICE "
-"socket, while the caller starts a client-side DTLS session on the other "
-"side of the ICE socket."
+"socket, while the caller starts a client-side DTLS session on the other side"
+" of the ICE socket."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:242
@@ -8400,8 +8379,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:250
 msgid ""
-"A second handshake in **certificate mode**, over the first one, to prove "
-"the identity of peers."
+"A second handshake in **certificate mode**, over the first one, to prove the"
+" identity of peers."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:253
@@ -8420,8 +8399,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:257
 msgid ""
-"anonymous step: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-"
-"TLS-ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
+"anonymous step: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-TLS-"
+"ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:259
@@ -8436,15 +8415,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:264
 msgid ""
-"Used over the DTLS session to signaling the call (vcard, media "
-"negotiation, hangup, instant messaging, ...)"
+"Used over the DTLS session to signaling the call (vcard, media negotiation, "
+"hangup, instant messaging, ...)"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:266
 msgid ""
-"Once an encrypted and authenticated peer-to-peer communication channel is"
-" available, the [SIP protocol](https://tools.ietf.org/html/rfc3261) must "
-"be used to place a call and send messages."
+"Once an encrypted and authenticated peer-to-peer communication channel is "
+"available, the [SIP protocol](https://tools.ietf.org/html/rfc3261) must be "
+"used to place a call and send messages."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:270
@@ -8455,8 +8434,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:273
 msgid ""
-"Supported codecs are implementation defined, but Jami clients should "
-"support the Opus audio coded and the H264 video codec."
+"Supported codecs are implementation defined, but Jami clients should support"
+" the Opus audio coded and the H264 video codec."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:279
@@ -8469,10 +8448,10 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:286
 msgid ""
-"Jami provides perfect forward secrecy for calls and in call text messages"
-" with different Eliptic Curve Diffie-Hellman key negociation at every "
-"call. For out of call messaging single RSA-4096 is used. The cryptography"
-" library used is GNUTLS"
+"Jami provides perfect forward secrecy for calls and in call text messages "
+"with different Eliptic Curve Diffie-Hellman key negociation at every call. "
+"For out of call messaging single RSA-4096 is used. The cryptography library "
+"used is GNUTLS"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:291
@@ -8481,8 +8460,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:293
 msgid ""
-"[Technical overview](technical/Technical-overview) of concepts and "
-"protocols inside Jami"
+"[Technical overview](technical/Technical-overview) of concepts and protocols"
+" inside Jami"
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:1
@@ -8491,8 +8470,8 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:4
 msgid ""
-"**NOTE: this page describes to build Tensorflow and TensorflowLite C++ "
-"API for Linux Android and Windows.**"
+"**NOTE: this page describes to build Tensorflow and TensorflowLite C++ API "
+"for Linux Android and Windows.**"
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:6
@@ -8501,16 +8480,16 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:7
 msgid ""
-"A difficulty for a lot of people working with tensorflow is how to "
-"properly build it. With that in mind we created docker images with cuda "
-"and tensorflow libraries available for GNU/Linux builds "
-"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-"
-"cuda) and for Android builds "
+"A difficulty for a lot of people working with tensorflow is how to properly "
+"build it. With that in mind we created docker images with cuda and "
+"tensorflow libraries available for GNU/Linux builds "
+"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-cuda)"
+" and for Android builds "
 "[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflowlite)."
-" These docker can be used to build plugins for Linux and Android, however"
-" they cannot handle Windows. Here we carefully guide you through the "
-"proper build of tensorflow LITE Native and Tensorflow C++ API for our "
-"three supported platforms."
+" These docker can be used to build plugins for Linux and Android, however "
+"they cannot handle Windows. Here we carefully guide you through the proper "
+"build of tensorflow LITE Native and Tensorflow C++ API for our three "
+"supported platforms."
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:11
@@ -8531,8 +8510,8 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:22
 msgid ""
-"We assembled Tensorflow headers needed to build plugins, to access them "
-"you only have to extract `libs.tar.gz` file found under `jami-"
+"We assembled Tensorflow headers needed to build plugins, to access them you "
+"only have to extract `libs.tar.gz` file found under `jami-"
 "project/plugins/contrib`. However, if you are using another tensorflow "
 "version or you want to do it by yourself, you can follow the assemble "
 "instructions for Tensorflow LITE Native and C++ API are available under "
@@ -8549,11 +8528,10 @@ msgstr ""
 #: ../../../developer/tensorflow-plugin.md:27
 #: ../../../developer/tensorflow-plugin.md:54
 msgid ""
-"If you want to build Tensorflow C++ API with GPU suport, be sure to have "
-"a CUDA capable GPU and that you have  followed all installation steps for"
-" the Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions"
-"  matches and that they are correct for the Tensorflow version you want "
-"to build."
+"If you want to build Tensorflow C++ API with GPU suport, be sure to have a "
+"CUDA capable GPU and that you have  followed all installation steps for the "
+"Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions  matches"
+" and that they are correct for the Tensorflow version you want to build."
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:33
@@ -8582,9 +8560,9 @@ msgstr ""
 #: ../../../developer/tensorflow-plugin.md:77
 msgid ""
 "There may be some missign references while compilling a plugin with "
-"Tensorflow C++ API. If that happens you have to rebuild you tensorflow "
-"and explicitly export the missing symbols. Fortunatelly Tensorflow now "
-"has a easy workaround to do so, you only have to feed "
+"Tensorflow C++ API. If that happens you have to rebuild you tensorflow and "
+"explicitly export the missing symbols. Fortunatelly Tensorflow now has a "
+"easy workaround to do so, you only have to feed "
 "[this](\"https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/tools/def_file_filter/def_file_filter.py.tpl\")"
 " file with the desired symbols."
 msgstr ""
@@ -8633,8 +8611,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:7
 msgid ""
-"User documentation: <https://review.jami.net/Documentation/intro-"
-"user.html>"
+"User documentation: <https://review.jami.net/Documentation/intro-user.html>"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:8
@@ -8648,8 +8625,8 @@ msgstr ""
 #: ../../../developer/working-with-gerrit.md:11
 msgid ""
 "You'll also need to [upload an SSH "
-"key](https://review.jami.net/settings/#SSHKeys) to be able to commit "
-"changes for review."
+"key](https://review.jami.net/settings/#SSHKeys) to be able to commit changes"
+" for review."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:12
@@ -8658,8 +8635,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:13
 msgid ""
-"Finally, the email address specified in your git config must match one "
-"the email address registered with your Gerrit account."
+"Finally, the email address specified in your git config must match one the "
+"email address registered with your Gerrit account."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:15
@@ -8682,8 +8659,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:23
 msgid ""
-"To check that your SSH access is properly setup, run the following "
-"command:"
+"To check that your SSH access is properly setup, run the following command:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:25
@@ -8710,8 +8686,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:50
 msgid ""
-"You must update your remote information to use now the Gerrit repository."
-" To do that, update your origin url:"
+"You must update your remote information to use now the Gerrit repository. To"
+" do that, update your origin url:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:52
@@ -8748,8 +8724,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:66
 msgid ""
-"When pushing to this magic branch, a review will automatically be created"
-" on Gerrit."
+"When pushing to this magic branch, a review will automatically be created on"
+" Gerrit."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:68
@@ -8758,8 +8734,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:70
 msgid ""
-"If you configured the default to refs/for/master as described above, "
-"simply"
+"If you configured the default to refs/for/master as described above, simply"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:72
@@ -8768,9 +8743,9 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:74
 msgid ""
-"If HEAD currently points to the branch with the commits you'd like to "
-"push. Ideally, you should work in a feature/bug branch for the issue at "
-"hand. Then you can do:"
+"If HEAD currently points to the branch with the commits you'd like to push. "
+"Ideally, you should work in a feature/bug branch for the issue at hand. Then"
+" you can do:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:76
@@ -8779,11 +8754,11 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:78
 msgid ""
-"If this is the first time you've pushed, you will be prompted to install "
-"a post-commit Hook to insert a Change-ID in your commit message. Gerrit "
-"needs this to track patchsets and will reject pushes until you install "
-"it. Simply copy paste the command to install the hook as instructed by "
-"Gerrit, and amend your commits."
+"If this is the first time you've pushed, you will be prompted to install a "
+"post-commit Hook to insert a Change-ID in your commit message. Gerrit needs "
+"this to track patchsets and will reject pushes until you install it. Simply "
+"copy paste the command to install the hook as instructed by Gerrit, and "
+"amend your commits."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:80
@@ -8813,7 +8788,6 @@ msgstr ""
 #: ../../../developer/working-with-gerrit.md:97
 msgid ""
 "Private work the same way as patchsets, except they are not visible to "
-"others by default and don't trigger any Jenkins builds. A draft can then "
-"be shared or published."
+"others by default and don't trigger any Jenkins builds. A draft can then be "
+"shared or published."
 msgstr ""
-
diff --git a/locales/fa/LC_MESSAGES/index.po b/locales/fa/LC_MESSAGES/index.po
index 0986d745e3a595739d7ad468467ab3ed01b54f31..b71523c5d1f8cd9d6199a2b30665d7d85325b9af 100644
--- a/locales/fa/LC_MESSAGES/index.po
+++ b/locales/fa/LC_MESSAGES/index.po
@@ -1,28 +1,31 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# Mohammad Amin Sameti <mamins1376@gmail.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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../index.rst:2
 msgid "Home"
-msgstr ""
+msgstr "خانه"
 
-#: ../../../index.rst:-1
+#: ../../../index.rst-1
 msgid "Jami logo"
 msgstr ""
 
@@ -47,17 +50,17 @@ msgstr ""
 
 #: ../../../index.rst:18
 msgid ""
-"Jami is an official GNU package and you can redistribute it and/or modify"
-" it under the terms of the `GNU General Public License "
-"<https://www.gnu.org/licenses/gpl.html>`_ as published by the Free "
-"Software Foundation, either version 3 of the License, or (at your option)"
-" any later version.  The Jami team :doc:`uses Gerrit for development "
-"<developer/working-with-gerrit>` and code reviews, and issues and feature"
-" requests are :doc:`tracked on the Jami GitLab <user/bug-report-guide>`."
-"  The development of Jami is led by `Savoir-faire Linux "
+"Jami is an official GNU package and you can redistribute it and/or modify it"
+" under the terms of the `GNU General Public License "
+"<https://www.gnu.org/licenses/gpl.html>`_ as published by the Free Software "
+"Foundation, either version 3 of the License, or (at your option) any later "
+"version.  The Jami team :doc:`uses Gerrit for development "
+"<developer/working-with-gerrit>` and code reviews, and issues and feature "
+"requests are :doc:`tracked on the Jami GitLab <user/bug-report-guide>`.  The"
+" development of Jami is led by `Savoir-faire Linux "
 "<https://savoirfairelinux.com/en>`_ --- a Canadian GNU/Linux consulting "
-"company based in Montréal --- and is supported by a growing global "
-"community of users and contributors."
+"company based in Montréal --- and is supported by a growing global community"
+" of users and contributors."
 msgstr ""
 
 #: ../../../index.rst:30
@@ -71,8 +74,8 @@ msgid ""
 "You may also be interested in the Jami `daemon "
 "<https://docs.jami.net/doxygen/daemon/>`_ or `libclient "
 "<https://docs.jami.net/doxygen/lrc/>`_'s technical documentation, the "
-"daemon's `code coverage <https://docs.jami.net/coverage/>`_, or the "
-"`OpenDHT wiki <https://github.com/savoirfairelinux/opendht/wiki>`_."
+"daemon's `code coverage <https://docs.jami.net/coverage/>`_, or the `OpenDHT"
+" wiki <https://github.com/savoirfairelinux/opendht/wiki>`_."
 msgstr ""
 
 #: ../../../index.rst:42
@@ -81,8 +84,8 @@ msgstr ""
 
 #: ../../../index.rst:44
 msgid ""
-"Here are the documentation manuals of Jami and details on how to "
-"contribute to Jami:"
+"Here are the documentation manuals of Jami and details on how to contribute "
+"to Jami:"
 msgstr ""
 
 #: ../../../index.rst:56
@@ -91,8 +94,8 @@ msgstr ""
 
 #: ../../../index.rst:58
 msgid ""
-"You can reach the Jami developers and community of users at the following"
-" public places:"
+"You can reach the Jami developers and community of users at the following "
+"public places:"
 msgstr ""
 
 #: ../../../index.rst:61
@@ -130,8 +133,7 @@ msgstr ""
 
 #: ../../../index.rst:74
 msgid ""
-"You can also contact the Jami team at Savoir-faire Linux directly via "
-"email, at contact@jami.net.  Additionally, Savoir-faire Linux offers "
-"commercial support for Jami via https://jami.biz."
+"You can also contact the Jami team at Savoir-faire Linux directly via email,"
+" at contact@jami.net.  Additionally, Savoir-faire Linux offers commercial "
+"support for Jami via https://jami.biz."
 msgstr ""
-
diff --git a/locales/fa/LC_MESSAGES/sphinx.po b/locales/fa/LC_MESSAGES/sphinx.po
index 1cfe5f09b865efe76a139bd7d696d01d321be905..1bbf6fb74a704a291346bc15f8df32ab8e0251e2 100644
--- a/locales/fa/LC_MESSAGES/sphinx.po
+++ b/locales/fa/LC_MESSAGES/sphinx.po
@@ -1,30 +1,27 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
 #, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../_templates/footer.html:41
-#, python-format
 msgid "<p><a href=\"%(path)s\">Copyright</a> &#169; %(copyright)s</p>"
 msgstr ""
 
 #: ../../../_templates/footer.html:43
-#, python-format
 msgid "<p>Copyright &#169; %(copyright)s</p>"
 msgstr ""
 
@@ -37,7 +34,5 @@ msgid "Revision"
 msgstr ""
 
 #: ../../../_templates/footer.html:64
-#, python-format
 msgid "Last updated on %(last_updated)s."
 msgstr ""
-
diff --git a/locales/fa/LC_MESSAGES/user.po b/locales/fa/LC_MESSAGES/user.po
index ca6e66bba463c2e8724385ef31335ed98e155e7a..8c0e06f46ce09498cdbcbd43bd19c6aa3f0ed03d 100644
--- a/locales/fa/LC_MESSAGES/user.po
+++ b/locales/fa/LC_MESSAGES/user.po
@@ -1,22 +1,34 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# 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
+# Amin Mahmudian, 2022
+# Amir H. Firouzian, 2022
+# 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../../../user/all-features-by-client.md:1
 msgid "All features by client"
@@ -44,297 +56,297 @@ msgstr ""
 
 #: ../../../user/all-features-by-client.md:11
 msgid "Text messaging"
-msgstr ""
+msgstr "پیغامدهی متنی"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "**Client**"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Linux"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Windows"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Android"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Android TV"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "iOS"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "macOS"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Text Messaging"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Group chat"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "E"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "X"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Clear History"
-msgstr ""
+msgstr "پاک کردن تاریخچه"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Chat history shared across devices"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Send Files"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto accept images"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Custom download location"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Typing indicator"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Read status"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:25
 msgid "Calling"
-msgstr ""
+msgstr "در حال تماس"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Audio Calling"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Video Calling"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Host call conference"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto bitrate"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Change video quality"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Custom ringtones"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Select camera"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Video call recording"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Leave audio message"
-msgstr ""
+msgstr "یک پیام صوتی بگذارید"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Leave video message"
-msgstr ""
+msgstr "یک پیام تصویری بگذارید"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Screen sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓(1)"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Window sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Media sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Hardware encoding *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Hardware decoding *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Mute sound"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Texting while on call"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Remote recording notif"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Rendez-vous mode"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Conference Layout"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Multistream"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Videosplit"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Audio Processor \\*\\*"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓(2)"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:54
 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
 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"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:61
 msgid "Account settings"
-msgstr ""
+msgstr "تنظیمات حساب کاربری"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Profile avatar"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Disable account"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Delete account"
-msgstr ""
+msgstr "حذف حساب"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Contact availability"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Register username"
-msgstr ""
+msgstr "ثبت نام کاربری"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Delete Contacts"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Block Contacts"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Link new device via DHT"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Link new device via archive"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto answer"
-msgstr ""
+msgstr "پاسخ خودکار"
 
 #: ../../../user/all-features-by-client.md:77
 msgid "Other features"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Scan QR Code"
-msgstr ""
+msgstr "اسکن کد QR"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Display QR Code"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Ban contact"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "System notifications"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Supported languages *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "98"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Contacts shared across devices"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Multi account"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "SIP account"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "SIP transferring"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Dark theme support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "JAMS support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Plugin support"
 msgstr ""
 
@@ -344,34 +356,34 @@ msgstr ""
 
 #: ../../../user/all-features-by-client.md:96
 msgid "Advanced settings"
-msgstr ""
+msgstr "تنظیمات پیشرفته"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "DHT Proxy support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Push notification"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "N/A"
-msgstr ""
+msgstr "قابل اجرا نیست"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "UPnP"
-msgstr ""
+msgstr "UPnP"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "TURN configuration"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:1
 msgid ""
-"**Note: We are currently a small number of developers active on the "
-"project.  As such, we cannot answer and tag all of the opened issues "
-"immediately, but we do notice and read them.  Good bug reports provide us"
-" important feedback, which we thank you for and always appreciate.**"
+"**Note: We are currently a small number of developers active on the project."
+"  As such, we cannot answer and tag all of the opened issues immediately, "
+"but we do notice and read them.  Good bug reports provide us important "
+"feedback, which we thank you for and always appreciate.**"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:6
@@ -380,8 +392,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:9
 msgid ""
-"This guide includes step-by-step instructions for reporting bugs and "
-"issues you encounter in Jami."
+"This guide includes step-by-step instructions for reporting bugs and issues "
+"you encounter in Jami."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:12
@@ -390,15 +402,15 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:15
 msgid ""
-"Be ready for data loss.  Back up your account and link your account to as"
-" many devices as possible."
+"Be ready for data loss.  Back up your account and link your account to as "
+"many devices as possible."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:17
 msgid ""
 "Install the latest version (or even a beta version) of Jami. Reporting "
-"bugs/issues against older versions is less useful, and there is a "
-"likelihood of it already having been fixed in newer versions."
+"bugs/issues against older versions is less useful, and there is a likelihood"
+" of it already having been fixed in newer versions."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:22
@@ -407,9 +419,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:25
 msgid ""
-"Create an account on the [Jami "
-"GitLab](https://git.jami.net/users/sign_up) if you don't have one "
-"already."
+"Create an account on the [Jami GitLab](https://git.jami.net/users/sign_up) "
+"if you don't have one already."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:29
@@ -426,8 +437,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:33
 msgid ""
-"{gitlab-project}`The GNOME/GTK client <jami-client-gnome>` (deprecated by"
-" {gitlab-project}`the Qt client <jami-client-qt>`)"
+"{gitlab-project}`The GNOME/GTK client <jami-client-gnome>` (deprecated by "
+"{gitlab-project}`the Qt client <jami-client-qt>`)"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:35
@@ -442,8 +453,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:38
 msgid ""
-"{gitlab-project}`The Jami project in general (or if you are not sure) "
-"<jami-project>`"
+"{gitlab-project}`The Jami project in general (or if you are not sure) <jami-"
+"project>`"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:40
@@ -454,14 +465,14 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:43
 msgid ""
-"If you have multiple issues, please file separate bug reports. It will be"
-" much easier to keep track of them that way."
+"If you have multiple issues, please file separate bug reports. It will be "
+"much easier to keep track of them that way."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:46
 msgid ""
-"The title is an explicit summary of the bug (e.g.: header bar is too big "
-"due to icon size)"
+"The title is an explicit summary of the bug (e.g.: header bar is too big due"
+" to icon size)"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:49
@@ -476,16 +487,16 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:53
 msgid ""
-"If you can reproduce occasionally, but not after following specific "
-"steps, please provide additional information about the issue to help "
-"others understand and try to reproduce it."
+"If you can reproduce occasionally, but not after following specific steps, "
+"please provide additional information about the issue to help others "
+"understand and try to reproduce it."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:56
 msgid ""
-"If you can't reproduce the problem, there may be little chance of it "
-"being reasonably fixable.  If you do report it, please try your best to "
-"provide as much information/clues about its occurrence as possible."
+"If you can't reproduce the problem, there may be little chance of it being "
+"reasonably fixable.  If you do report it, please try your best to provide as"
+" much information/clues about its occurrence as possible."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:61
@@ -519,16 +530,16 @@ msgstr ""
 #: ../../../user/bug-report-guide.md:72
 msgid ""
 "what build you are using (F-Droid, Play Store, App Store, from "
-"`dl.jami.net`, your own build, etc.).  If you have built your own version"
-" of Jami, please specify the exact Jami Daemon version and client version"
-" (you can obtain it using `jamid -v` and `jami-gnome -v` or `jami-qt -v`;"
-" but note that our packages are updated quite often) and the Git commit."
+"`dl.jami.net`, your own build, etc.).  If you have built your own version of"
+" Jami, please specify the exact Jami Daemon version and client version (you "
+"can obtain it using `jamid -v` and `jami-gnome -v` or `jami-qt -v`; but note"
+" that our packages are updated quite often) and the Git commit."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:78
 msgid ""
-"network conditions: are both devices on the same local network? Different"
-" networks?  Is one or both behind NAT? Are you using LTE?  Are you using "
+"network conditions: are both devices on the same local network? Different "
+"networks?  Is one or both behind NAT? Are you using LTE?  Are you using "
 "WiFi?"
 msgstr ""
 
@@ -548,8 +559,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:89
 msgid ""
-"A good summary should quickly and uniquely identify a bug report. It "
-"should explain the problem, not your suggested solution."
+"A good summary should quickly and uniquely identify a bug report. It should "
+"explain the problem, not your suggested solution."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:102
@@ -563,11 +574,11 @@ msgstr ""
 #: ../../../user/bug-report-guide.md:107
 msgid ""
 "Steps to reproduce are the most important part of any bug report. If a "
-"developer is able to reproduce the bug, the bug is very likely to be "
-"fixed.  If the steps are unclear, it might not even be possible to know "
-"whether the bug has been fixed.  We are totally aware that some bugs may "
-"look obvious to you, but they are probably related to your environment.  "
-"The more precise you are, the quicker the bug can be fixed."
+"developer is able to reproduce the bug, the bug is very likely to be fixed."
+"  If the steps are unclear, it might not even be possible to know whether "
+"the bug has been fixed.  We are totally aware that some bugs may look "
+"obvious to you, but they are probably related to your environment.  The more"
+" precise you are, the quicker the bug can be fixed."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:115
@@ -576,9 +587,9 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:117
 msgid ""
-"Indicate whether you can reproduce the bug at will, occasionally, or not "
-"at all.  Describe your method of interacting with Jami in addition to the"
-" intent of each step.  After your steps, precisely describe the observed "
+"Indicate whether you can reproduce the bug at will, occasionally, or not at "
+"all.  Describe your method of interacting with Jami in addition to the "
+"intent of each step.  After your steps, precisely describe the observed "
 "(actual) result and the expected result. Clearly separate facts "
 "(observations) from speculations."
 msgstr ""
@@ -625,8 +636,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:160
 msgid ""
-"The following information is requested for most bug reports.  You can "
-"save time by providing this information below the Expected results."
+"The following information is requested for most bug reports.  You can save "
+"time by providing this information below the Expected results."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:163
@@ -639,10 +650,10 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:167
 msgid ""
-"Go to the General settings.  In the Troubleshoot section, you can click "
-"on \"Open logs\", where you will be able to get statistics (\"Show "
-"stats\") or start recording information via \"Receive logs\". Then you "
-"can just copy the result and explain your scenario."
+"Go to the General settings.  In the Troubleshoot section, you can click on "
+"\"Open logs\", where you will be able to get statistics (\"Show stats\") or "
+"start recording information via \"Receive logs\". Then you can just copy the"
+" result and explain your scenario."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:172
@@ -655,15 +666,15 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:180
 msgid ""
-"Full log: Since the Jami client (GUI) and daemon are separated processes,"
-" the easiest way to get logs from both is to start them one at a time, "
+"Full log: Since the Jami client (GUI) and daemon are separated processes, "
+"the easiest way to get logs from both is to start them one at a time, "
 "manually."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:185
 msgid ""
-"Ensure that no Jami client or daemon instances are running: check by "
-"running `ps aux | grep jami` in a terminal."
+"Ensure that no Jami client or daemon instances are running: check by running"
+" `ps aux | grep jami` in a terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:187
@@ -673,7 +684,8 @@ msgid ""
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:189
-msgid "If either client or daemon are running, terminate them using `kill PID`."
+msgid ""
+"If either client or daemon are running, terminate them using `kill PID`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:191
@@ -689,8 +701,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:196
 msgid ""
-"In another terminal, start the client, using e.g. `jami-gnome -d` or "
-"`jami-qt -d`."
+"In another terminal, start the client, using e.g. `jami-gnome -d` or `jami-"
+"qt -d`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:199
@@ -699,16 +711,14 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:201
 msgid ""
-"`gdb -ex run jami-qt`, or `gdb -ex run jami-gnome`, or `gdb -ex run "
-"--args /usr/libexec/jamid -cd`, depending on the component you need to "
-"debug."
+"`gdb -ex run jami-qt`, or `gdb -ex run jami-gnome`, or `gdb -ex run --args "
+"/usr/libexec/jamid -cd`, depending on the component you need to debug."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:205
 msgid ""
-"When it crashes, you can type `bt` (or even better, `thread apply all "
-"bt`) then press *Enter*. Then copy the backtrace and paste it in the "
-"issue."
+"When it crashes, you can type `bt` (or even better, `thread apply all bt`) "
+"then press *Enter*. Then copy the backtrace and paste it in the issue."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:209
@@ -720,7 +730,8 @@ msgid "Navigate to `/Applications/Jami.app/Contents/MacOS/`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:212
-msgid "Double click Jami.  It will launch Jami and print the log to the terminal."
+msgid ""
+"Double click Jami.  It will launch Jami and print the log to the terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:214
@@ -729,8 +740,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:216
 msgid ""
-"Alternatively, you could run `/<path to "
-"Jami>/Jami.app/Contents/MacOS/Jami -d` from the terminal."
+"Alternatively, you could run `/<path to Jami>/Jami.app/Contents/MacOS/Jami "
+"-d` from the terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:219
@@ -771,8 +782,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:232
 msgid ""
-"```adb logcat *:D | grep `adb shell ps | egrep 'cx.ring' | cut -c10-15` >"
-" logring.txt```"
+"```adb logcat *:D | grep `adb shell ps | egrep 'cx.ring' | cut -c10-15` > "
+"logring.txt```"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:233
@@ -784,7 +795,8 @@ msgid "For Windows"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:237
-msgid "Open a terminal (cmd.exe) and launch Jami.exe with the following options:"
+msgid ""
+"Open a terminal (cmd.exe) and launch Jami.exe with the following options:"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:240
@@ -792,7 +804,6 @@ msgid "`-d` to open a separate console window to receive logs"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:241
-#, python-format
 msgid "`-f` to write logs to `%localappdata%\\jami\\jami.log`"
 msgstr ""
 
@@ -812,8 +823,8 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:8
 msgid ""
-"Android (FR) [creer-compte-jami-android-fr.pdf](creer-compte-jami-"
-"android-fr.pdf)"
+"Android (FR) [creer-compte-jami-android-fr.pdf](creer-compte-jami-android-"
+"fr.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:10
@@ -824,12 +835,12 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:12
 msgid ""
-"macOS (FR) [creer-compte-jami-macos-fr.pdf](creer-compte-jami-macos-"
-"fr.pdf)"
+"macOS (FR) [creer-compte-jami-macos-fr.pdf](creer-compte-jami-macos-fr.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:14
-msgid "iOS (EN) [create-jami-account-ios-en.pdf](create-jami-account-ios-en.pdf)"
+msgid ""
+"iOS (EN) [create-jami-account-ios-en.pdf](create-jami-account-ios-en.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:16
@@ -838,8 +849,8 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:18
 msgid ""
-"Windows (FR) [creer-compte-jami-windows-fr.pdf](creer-compte-jami-"
-"windows-fr.pdf)"
+"Windows (FR) [creer-compte-jami-windows-fr.pdf](creer-compte-jami-windows-"
+"fr.pdf)"
 msgstr ""
 
 #: ../../../user/faq.rst:2
@@ -870,11 +881,11 @@ msgstr ""
 
 #: ../../../user/faq.rst:23
 msgid ""
-"The choice of the name Jami was inspired by the Swahili word `jamii` "
-"which means `community` as a noun and `together` as an adverb.  It was "
-"chosen as it reflects the vision for the project: a free/libre program "
-"available to all that helps bring communities together, is community "
-"supported, and respects the freedom and privacy of the users."
+"The choice of the name Jami was inspired by the Swahili word `jamii` which "
+"means `community` as a noun and `together` as an adverb.  It was chosen as "
+"it reflects the vision for the project: a free/libre program available to "
+"all that helps bring communities together, is community supported, and "
+"respects the freedom and privacy of the users."
 msgstr ""
 
 #: ../../../user/faq.rst:30
@@ -895,16 +906,16 @@ msgid ""
 "*distributed*:"
 msgstr ""
 
-#: ../../../user/faq.rst:-1
+#: ../../../user/faq.rst-1
 msgid "Centralized, Decentralized, and Distributed network topology"
 msgstr ""
 
 #: ../../../user/faq.rst:43
 msgid ""
-"Some of the consequences may seem surprising.  For instance, since "
-"accounts are stored on your device, passwords are optional.  However, the"
-" most significant practical differences are that you have more *freedom* "
-"and *privacy*."
+"Some of the consequences may seem surprising.  For instance, since accounts "
+"are stored on your device, passwords are optional.  However, the most "
+"significant practical differences are that you have more *freedom* and "
+"*privacy*."
 msgstr ""
 
 #: ../../../user/faq.rst:52
@@ -919,18 +930,16 @@ msgstr ""
 
 #: ../../../user/faq.rst:57
 msgid ""
-"On other contacts, a red circle means that they are not online, and a "
-"green circle means they are online and you should be able to message "
-"them."
+"On other contacts, a red circle means that they are not online, and a green "
+"circle means they are online and you should be able to message them."
 msgstr ""
 
 #: ../../../user/faq.rst:61
 msgid ""
 "Note that a green circle only means that the contact has announced their "
 "presence on the DHT.  It does not indicate a direct connection to their "
-"device.  In some cases, a contact may be able to send and receive "
-"messages but cannot make calls or file transfers because of their "
-"firewall."
+"device.  In some cases, a contact may be able to send and receive messages "
+"but cannot make calls or file transfers because of their firewall."
 msgstr ""
 
 #: ../../../user/faq.rst:68
@@ -954,8 +963,8 @@ msgstr ""
 #: ../../../user/faq.rst:79
 msgid ""
 "You can enable or disable read receipts on Android. Other platforms may "
-"still be working on this feature.  Please see :doc:`All Features by "
-"Client <all-features-by-client>` for the current status."
+"still be working on this feature.  Please see :doc:`All Features by Client "
+"<all-features-by-client>` for the current status."
 msgstr ""
 
 #: ../../../user/faq.rst:84
@@ -964,8 +973,8 @@ msgstr ""
 
 #: ../../../user/faq.rst:86
 msgid ""
-"Most of the client support sending and receiving typing notifications. "
-"You can enable/disable them in the general settings."
+"Most of the client support sending and receiving typing notifications. You "
+"can enable/disable them in the general settings."
 msgstr ""
 
 #: ../../../user/faq.rst:90
@@ -994,8 +1003,8 @@ msgstr ""
 
 #: ../../../user/faq.rst:105
 msgid ""
-"Yes, Jami now has :doc:`../developer/swarm` group chats.  However, they "
-"are currently experimental and must be manually enabled from application "
+"Yes, Jami now has :doc:`../developer/swarm` group chats.  However, they are "
+"currently experimental and must be manually enabled from application "
 "settings.  Also, group chats are currently limited to 8 participants (so "
 "that bugs and issues could be more easily found and fixed in smaller "
 "scenarios, and hopefully lift this limit in the future)."
@@ -1009,26 +1018,26 @@ msgstr ""
 msgid ""
 "Before :doc:`../developer/swarm`, an account's devices would receive the "
 "same messages from contacts if the device was online at the time of the "
-"message being sent, but *sent* messages would not show up on devices "
-"other than the one sending the message."
+"message being sent, but *sent* messages would not show up on devices other "
+"than the one sending the message."
 msgstr ""
 
 #: ../../../user/faq.rst:120
 msgid ""
 "With the introduction of Swarm, conversation histories of new Swarm "
-"conversations (including one-on-one conversations) are fully synchronized"
-" between all of an account's linked devices.  If you are using an older "
-"version of Jami, please upgrade to the latest version with Swarm support."
-"  The latest version of Jami is always available from the Download page "
-"of the Jami website, at https://jami.net/download/."
+"conversations (including one-on-one conversations) are fully synchronized "
+"between all of an account's linked devices.  If you are using an older "
+"version of Jami, please upgrade to the latest version with Swarm support.  "
+"The latest version of Jami is always available from the Download page of the"
+" Jami website, at https://jami.net/download/."
 msgstr ""
 
 #: ../../../user/faq.rst:128
 msgid ""
 "To learn more about Swarm, you can read our blog post `Synchronizing "
 "conversation history with Swarm <https://jami.net/synchronizing-"
-"conversation-history-with-swarm/>`_ and see the :doc:`../developer/swarm`"
-" page of the Jami developer manual."
+"conversation-history-with-swarm/>`_ and see the :doc:`../developer/swarm` "
+"page of the Jami developer manual."
 msgstr ""
 
 #: ../../../user/faq.rst:135
@@ -1037,30 +1046,30 @@ msgstr ""
 
 #: ../../../user/faq.rst:137
 msgid ""
-"With :doc:`../developer/swarm` conversations, every device stores all a "
-"copy of all of the messages in that conversation.  If a device (whether "
-"your own, or another participant's) is not available/online when a "
-"message is sent, when it comes back online again it will try to fetch any"
-" new messages from other online devices/peers and synchronize message "
-"history.  This can be done whenever at least one other device that has a "
-"copy of the new messages is also online."
+"With :doc:`../developer/swarm` conversations, every device stores all a copy"
+" of all of the messages in that conversation.  If a device (whether your "
+"own, or another participant's) is not available/online when a message is "
+"sent, when it comes back online again it will try to fetch any new messages "
+"from other online devices/peers and synchronize message history.  This can "
+"be done whenever at least one other device that has a copy of the new "
+"messages is also online."
 msgstr ""
 
 #: ../../../user/faq.rst:145
 msgid ""
-"You can read more about how Swarm conversations are synchronized in our "
-"blog post `Synchronizing conversation history with Swarm "
+"You can read more about how Swarm conversations are synchronized in our blog"
+" post `Synchronizing conversation history with Swarm "
 "<https://jami.net/synchronizing-conversation-history-with-swarm/>`_."
 msgstr ""
 
 #: ../../../user/faq.rst:150
 msgid ""
-"If the participants in a conversation are often not online at the same "
-"time (for instance, due to timezone differences), one of them might "
-"choose to set up Jami on an often-online device that would receive the "
-"messages from each participant and relay it to the other(s) whenever they"
-" come online.  Thus, acting similarly to a \"server\", all the while Jami"
-" remains distributed by nature."
+"If the participants in a conversation are often not online at the same time "
+"(for instance, due to timezone differences), one of them might choose to set"
+" up Jami on an often-online device that would receive the messages from each"
+" participant and relay it to the other(s) whenever they come online.  Thus, "
+"acting similarly to a \"server\", all the while Jami remains distributed by "
+"nature."
 msgstr ""
 
 #: ../../../user/faq.rst:160
@@ -1069,31 +1078,30 @@ msgstr ""
 
 #: ../../../user/faq.rst:162
 msgid ""
-"Jami saves its configuration (account, certificates, history) at "
-"different locations depending on the platform."
+"Jami saves its configuration (account, certificates, history) at different "
+"locations depending on the platform."
 msgstr ""
 
 #: ../../../user/faq.rst:165
 msgid ""
-"**GNU/Linux**: global configuration is under "
-"``~/.config/jami/dring.yml``, and account-specific files are under "
-"``~/.local/share/jami/``.  Finally, there is a cache directory at "
-"``~/.cache/jami/``."
+"**GNU/Linux**: global configuration is under ``~/.config/jami/dring.yml``, "
+"and account-specific files are under ``~/.local/share/jami/``.  Finally, "
+"there is a cache directory at ``~/.cache/jami/``."
 msgstr ""
 
 #: ../../../user/faq.rst:170
 msgid ""
 "**macOS**: the full configuration is under ``~/Library/Application "
-"Support/Jami/`` if installed via https://jami.net.  The app store version"
-" uses "
+"Support/Jami/`` if installed via https://jami.net.  The app store version "
+"uses "
 "``~/Library/Containers/com.savoirfairelinux.ring.macos/Data/Library/Application"
 " Support/jami/``."
 msgstr ""
 
 #: ../../../user/faq.rst:175
 msgid ""
-"**Android**: the full configuration is under ``/data/data/cx.ring/`` (may"
-" require root privileges to view or change from outside Jami)."
+"**Android**: the full configuration is under ``/data/data/cx.ring/`` (may "
+"require root privileges to view or change from outside Jami)."
 msgstr ""
 
 #: ../../../user/faq.rst:178
@@ -1106,15 +1114,14 @@ msgstr ""
 
 #: ../../../user/faq.rst:183
 msgid ""
-"Note: audio and video messages are recorded in the local-data in the "
-"folder: ``sent_data``"
+"Note: audio and video messages are recorded in the local-data in the folder:"
+" ``sent_data``"
 msgstr ""
 
 #: ../../../user/faq.rst:186
 msgid ""
-"For files, if a file is saved (right click on the file, then Save) it "
-"will be added to the directory you configured in the application "
-"settings."
+"For files, if a file is saved (right click on the file, then Save) it will "
+"be added to the directory you configured in the application settings."
 msgstr ""
 
 #: ../../../user/faq.rst:191
@@ -1123,37 +1130,37 @@ msgstr ""
 
 #: ../../../user/faq.rst:193
 msgid ""
-"For audio calls, Jami uses about 100 Kbps.  For a video call, you need "
-"about 2 Mbit/s for medium quality.  If your connection is slower, the "
-"bitrate will be automatically reduced."
+"For audio calls, Jami uses about 100 Kbps.  For a video call, you need about"
+" 2 Mbit/s for medium quality.  If your connection is slower, the bitrate "
+"will be automatically reduced."
 msgstr ""
 
 #: ../../../user/faq.rst:197
 msgid ""
 "If you are hosting a video conference, you will approximately need an "
-"additional 2 Mbps per participant.  So, for example for a conference with"
-" 10 participants, each participant will need 2 Mbps up & down and the "
-"host will need 20 Mbps up and down."
+"additional 2 Mbps per participant.  So, for example for a conference with 10"
+" participants, each participant will need 2 Mbps up & down and the host will"
+" need 20 Mbps up and down."
 msgstr ""
 
 #: ../../../user/faq.rst:202
 msgid ""
 "Jami also uses an algorithm to change the consumption depending of the "
-"quality of the link. So, the bitrate can have a minimum of 200 Kbit/s and"
-" maximum of 6 Mbit/s."
+"quality of the link. So, the bitrate can have a minimum of 200 Kbit/s and "
+"maximum of 6 Mbit/s."
 msgstr ""
 
 #: ../../../user/faq.rst:207
 msgid ""
-"How can SFL afford to give Jami away for free?  How does/will SFL make "
-"money off Jami?"
+"How can SFL afford to give Jami away for free?  How does/will SFL make money"
+" off Jami?"
 msgstr ""
 
 #: ../../../user/faq.rst:209
 msgid ""
 "Summary: ethical company, they will make money supporting managed Jami "
-"solutions for organizations; their main source of income is elsewhere; "
-"all Jami code is GPLv3+; etc. etc."
+"solutions for organizations; their main source of income is elsewhere; all "
+"Jami code is GPLv3+; etc. etc."
 msgstr ""
 
 #: ../../../user/faq.rst:215
@@ -1167,10 +1174,9 @@ msgstr ""
 #: ../../../user/faq.rst:220
 msgid ""
 "A Jami account is an `asymmetric encryption key "
-"<https://en.wikipedia.org/wiki/Public-key_cryptography>`_. Your account "
-"is identified by a Jami ID, which is a `fingerprint "
-"<https://en.wikipedia.org/wiki/Public_key_fingerprint>`_ of your public "
-"key."
+"<https://en.wikipedia.org/wiki/Public-key_cryptography>`_. Your account is "
+"identified by a Jami ID, which is a `fingerprint "
+"<https://en.wikipedia.org/wiki/Public_key_fingerprint>`_ of your public key."
 msgstr ""
 
 #: ../../../user/faq.rst:227
@@ -1179,12 +1185,13 @@ msgstr ""
 
 #: ../../../user/faq.rst:229
 msgid ""
-"When you create a new Jami account, you don't have to provide any private"
-" information like an email, address, or phone number."
+"When you create a new Jami account, you don't have to provide any private "
+"information like an email, address, or phone number."
 msgstr ""
 
 #: ../../../user/faq.rst:232
-msgid "This is the information you can provide if you choose (it's all optional):"
+msgid ""
+"This is the information you can provide if you choose (it's all optional):"
 msgstr ""
 
 #: ../../../user/faq.rst:235
@@ -1200,14 +1207,14 @@ msgstr ""
 #: ../../../user/faq.rst:238
 msgid ""
 "An optional username, which is a unique identifier that is directly "
-"associated with your Jami ID.  This username->Jami ID mapping is stored "
-"on a server (``ns.jami.net`` by default, but you can host your own)."
+"associated with your Jami ID.  This username->Jami ID mapping is stored on a"
+" server (``ns.jami.net`` by default, but you can host your own)."
 msgstr ""
 
 #: ../../../user/faq.rst:242
 msgid ""
-"A password.  This password is used to protect the account archive in your"
-" device."
+"A password.  This password is used to protect the account archive in your "
+"device."
 msgstr ""
 
 #: ../../../user/faq.rst:245
@@ -1222,8 +1229,8 @@ msgstr ""
 
 #: ../../../user/faq.rst:251
 msgid ""
-"Your Jami ID should be displayed prominently in whichever app you're "
-"using.  It looks like a long string of letters and numbers; for example: "
+"Your Jami ID should be displayed prominently in whichever app you're using."
+"  It looks like a long string of letters and numbers; for example: "
 "``f2c815f5554bcc22689ce84d45aefdda1bce9146``."
 msgstr ""
 
@@ -1235,23 +1242,23 @@ msgstr ""
 msgid ""
 "You are not forced to have a password on your account.  On a centralized "
 "system you would use your password to authenticate with a public server "
-"where your account is stored.  Someone who knows your password could "
-"steal your identity."
+"where your account is stored.  Someone who knows your password could steal "
+"your identity."
 msgstr ""
 
 #: ../../../user/faq.rst:263
 msgid ""
-"With Jami, your account is stored in a :ref:`folder <user/faq:Where are "
-"the configuration files located?>` on your device.  **The password is "
-"only used to encrypt your account in order to protect you from someone "
-"who has physical access to your device.**"
+"With Jami, your account is stored in a :ref:`folder <user/faq:Where are the "
+"configuration files located?>` on your device.  **The password is only used "
+"to encrypt your account in order to protect you from someone who has "
+"physical access to your device.**"
 msgstr ""
 
 #: ../../../user/faq.rst:268
 msgid ""
-"If your device is encrypted, you may not want or need to use a password, "
-"and indeed recent versions of Jami don't ask for an account encryption "
-"password by default when creating new accounts."
+"If your device is encrypted, you may not want or need to use a password, and"
+" indeed recent versions of Jami don't ask for an account encryption password"
+" by default when creating new accounts."
 msgstr ""
 
 #: ../../../user/faq.rst:273
@@ -1260,731 +1267,724 @@ msgstr ""
 
 #: ../../../user/faq.rst:275
 msgid ""
-"The most permanent, secure identifier is your :ref:`Jami ID "
-"<user/faq:Where is my Jami ID?>`, but since these are difficult to use "
-"for some people, you also have the option of registering a username. "
-"Username registration requires a name server, such as Jami's default one "
-"at ``ns.jami.net``."
+"The most permanent, secure identifier is your :ref:`Jami ID <user/faq:Where "
+"is my Jami ID?>`, but since these are difficult to use for some people, you "
+"also have the option of registering a username. Username registration "
+"requires a name server, such as Jami's default one at ``ns.jami.net``."
 msgstr ""
 
 #: ../../../user/faq.rst:281
 msgid ""
-"If you don't register a username, you can still choose to register one "
-"later at any time."
+"If you don't register a username, you can still choose to register one later"
+" at any time."
 msgstr ""
 
-#: ../../../user/faq.rst:285
+#: ../../../user/faq.rst:284
+msgid ""
+"If you host your own nameserver at ``example.com``, usernames registered "
+"there can be looked up by searching for ``username@example.com``."
+msgstr ""
+
+#: ../../../user/faq.rst:288
 msgid "Can I change my username?"
 msgstr ""
 
-#: ../../../user/faq.rst:287
+#: ../../../user/faq.rst:290
 msgid ""
 "With the default nameserver (``ns.jami.net``) you cannot change your "
 "username."
 msgstr ""
 
-#: ../../../user/faq.rst:291
+#: ../../../user/faq.rst:294
 msgid "What is the difference between a username and a display name?"
 msgstr ""
 
-#: ../../../user/faq.rst:293
+#: ../../../user/faq.rst:296
 msgid ""
 "You can use your username as an identifier.  The username points to your "
 ":ref:`Jami ID <user/faq:Where is my Jami ID?>`, which is your permanent, "
 "secure identifier.  Two people cannot have the same username."
 msgstr ""
 
-#: ../../../user/faq.rst:298
+#: ../../../user/faq.rst:301
 msgid ""
-"A display name allows you to choose another name that identifies you to "
-"your contacts.  Display names can be edited or changed at any time and "
-"only your contacts can see them."
+"A display name allows you to choose another name that identifies you to your"
+" contacts.  Display names can be edited or changed at any time and only your"
+" contacts can see them."
 msgstr ""
 
-#: ../../../user/faq.rst:303
+#: ../../../user/faq.rst:306
 msgid "How can I back up my account?"
 msgstr ""
 
-#: ../../../user/faq.rst:305
+#: ../../../user/faq.rst:308
 msgid "There are two ways to back up your account:"
 msgstr ""
 
-#: ../../../user/faq.rst:307
+#: ../../../user/faq.rst:310
 msgid ""
-"Link another device to your account so your account will be on two "
-"devices.  You can find this option in the account settings page."
+"Link another device to your account so your account will be on two devices."
+"  You can find this option in the account settings page."
 msgstr ""
 
-#: ../../../user/faq.rst:309
+#: ../../../user/faq.rst:312
 msgid ""
-"Back up the :ref:`account archive <developer/technical-overview:Jami "
-"archive (export.gz)>`.  This file can be found in the account files "
-":ref:`folder <user/faq:Where are the configuration files located?>`.  In "
-"some clients, you can export this archive from the account settings."
+"Back up the :ref:`account archive <developer/technical-overview:Jami archive"
+" (export.gz)>`.  This file can be found in the account files :ref:`folder "
+"<user/faq:Where are the configuration files located?>`.  In some clients, "
+"you can export this archive from the account settings."
 msgstr ""
 
-#: ../../../user/faq.rst:316
+#: ../../../user/faq.rst:319
 msgid "Can I retrieve my username without my keys?"
 msgstr ""
 
-#: ../../../user/faq.rst:318
+#: ../../../user/faq.rst:321
 msgid ""
-"If you used the default name server at ``ns.jami.net``, **you can't**. "
-"There is no way to prove it's your username without your key."
+"If you used the default name server at ``ns.jami.net``, **you can't**. There"
+" is no way to prove it's your username without your key."
 msgstr ""
 
-#: ../../../user/faq.rst:321
+#: ../../../user/faq.rst:324
 msgid ""
-"If you use a different name server, there may be a way to move a username"
-" to a new Jami ID at the discretion of the administrator of that name "
-"server."
+"If you use a different name server, there may be a way to move a username to"
+" a new Jami ID at the discretion of the administrator of that name server."
 msgstr ""
 
-#: ../../../user/faq.rst:325
+#: ../../../user/faq.rst:328
 msgid ""
-"For more information about name servers, see :doc:`../developer/name-"
-"server-protocol`."
+"For more information about name servers, see :doc:`../developer/name-server-"
+"protocol`."
 msgstr ""
 
-#: ../../../user/faq.rst:329
+#: ../../../user/faq.rst:332
 msgid "Can I recover my account if I forget my password?"
 msgstr ""
 
-#: ../../../user/faq.rst:331
+#: ../../../user/faq.rst:334
 msgid ""
-"No.  There can't be a traditional account recovery process; you are the "
-"only person with access to your data.  If you are worried about "
-"forgetting your password, please use a password manager."
+"No.  There can't be a traditional account recovery process; you are the only"
+" person with access to your data.  If you are worried about forgetting your "
+"password, please use a password manager."
 msgstr ""
 
-#: ../../../user/faq.rst:336
+#: ../../../user/faq.rst:339
 msgid "What happens when I delete my account?"
 msgstr ""
 
-#: ../../../user/faq.rst:338
+#: ../../../user/faq.rst:341
 msgid ""
-"Your account is only stored on your own devices.  If you delete your "
-"account from each device, the account is gone and you cannot get it back "
-"(unless you already made a backup of it earlier).  Nobody else can use "
-"your account after that."
+"Your account is only stored on your own devices.  If you delete your account"
+" from each device, the account is gone and you cannot get it back (unless "
+"you already made a backup of it earlier).  Nobody else can use your account "
+"after that."
 msgstr ""
 
-#: ../../../user/faq.rst:343
+#: ../../../user/faq.rst:346
 msgid ""
 "Your contacts will still have the messages you sent them, but all public "
-"record of your account on the DHT will eventually disappear due to "
-"absence and lack of activity."
+"record of your account on the DHT will eventually disappear due to absence "
+"and lack of activity."
 msgstr ""
 
-#: ../../../user/faq.rst:347
+#: ../../../user/faq.rst:350
 msgid ""
-"The default ``ns.jami.net`` name server **does not** delete any "
-"registered usernames -- other name servers might (not recommended), at "
-"their administrator's discretion.  So, if you have an account with a "
-"username registered on the default name server and you delete or lose "
-"your account, and did not back up your account earlier, nobody (including"
-" you) will be able to register a new account with that username again, "
-"thus nobody can reach you at that username anymore."
+"The default ``ns.jami.net`` name server **does not** delete any registered "
+"usernames -- other name servers might (not recommended), at their "
+"administrator's discretion.  So, if you have an account with a username "
+"registered on the default name server and you delete or lose your account, "
+"and did not back up your account earlier, nobody (including you) will be "
+"able to register a new account with that username again, thus nobody can "
+"reach you at that username anymore."
 msgstr ""
 
-#: ../../../user/faq.rst:356
+#: ../../../user/faq.rst:359
 msgid ""
-"To avoid losing your account **please** :ref:`back it up <user/faq:How "
-"can I back up my account?>`!"
+"To avoid losing your account **please** :ref:`back it up <user/faq:How can I"
+" back up my account?>`!"
 msgstr ""
 
-#: ../../../user/faq.rst:360
+#: ../../../user/faq.rst:363
 msgid "What happens when I link a new device?"
 msgstr ""
 
-#: ../../../user/faq.rst:362
+#: ../../../user/faq.rst:365
 msgid ""
 "When you link a device to your account, your :ref:`account archive "
-"<developer/technical-overview:Jami archive (export.gz)>` is put on the "
-"Jami network for a few minutes.  It is protected by a password Jami gives"
-" you."
+"<developer/technical-overview:Jami archive (export.gz)>` is put on the Jami "
+"network for a few minutes.  It is protected by a password Jami gives you."
 msgstr ""
 
-#: ../../../user/faq.rst:367
+#: ../../../user/faq.rst:370
 msgid ""
-"The new device receives your full account certificate with the master RSA"
-" keys, but it generates a new device key for signing/encrypting messages."
+"The new device receives your full account certificate with the master RSA "
+"keys, but it generates a new device key for signing/encrypting messages."
 msgstr ""
 
-#: ../../../user/faq.rst:373
+#: ../../../user/faq.rst:376
 msgid "Advanced"
-msgstr ""
+msgstr "پیشرفته"
 
-#: ../../../user/faq.rst:376
+#: ../../../user/faq.rst:379
 msgid "What protocol does Jami use for the end-to-end encryption?"
 msgstr ""
 
-#: ../../../user/faq.rst:378
+#: ../../../user/faq.rst:381
 msgid ""
-"We use TLS 1.3 with a perfect forward secrecy requirement for the "
-"negotiated ciphers for calls and file transfers.  Messages are encrypted "
-"with an RSA key."
+"We use TLS 1.3 with a perfect forward secrecy requirement for the negotiated"
+" ciphers for calls and file transfers.  Messages are encrypted with an RSA "
+"key."
 msgstr ""
 
-#: ../../../user/faq.rst:384
+#: ../../../user/faq.rst:387
 msgid ""
-"What data passes through my machine when I participate in the Jami "
-"network?"
+"What data passes through my machine when I participate in the Jami network?"
 msgstr ""
 
-#: ../../../user/faq.rst:386
+#: ../../../user/faq.rst:389
 msgid "**All these data are encrypted**.  There is:"
 msgstr ""
 
-#: ../../../user/faq.rst:388
+#: ../../../user/faq.rst:391
 msgid ""
 "ICE descriptors of other Jami users (ICE is a protocol that helps "
 "establishing communication between two computers);"
 msgstr ""
 
-#: ../../../user/faq.rst:390
+#: ../../../user/faq.rst:393
 msgid "certain text messages; and"
 msgstr ""
 
-#: ../../../user/faq.rst:391
+#: ../../../user/faq.rst:394
 msgid "accounts currently being linked to a new device, as explained above."
 msgstr ""
 
-#: ../../../user/faq.rst:393
+#: ../../../user/faq.rst:396
 msgid ""
-"Audio/video streams and some text messages pass through the VOIP "
-"protocol.  Text messages can be sent either via VOIP or DHT (the "
-"distributed network) depending on whether a VOIP communication channel is"
-" already open or not."
+"Audio/video streams and some text messages pass through the VOIP protocol.  "
+"Text messages can be sent either via VOIP or DHT (the distributed network) "
+"depending on whether a VOIP communication channel is already open or not."
 msgstr ""
 
-#: ../../../user/faq.rst:399
+#: ../../../user/faq.rst:402
 msgid "Why am I able to communicate with myself?"
 msgstr ""
 
-#: ../../../user/faq.rst:401
+#: ../../../user/faq.rst:404
 msgid "Many users use Jami to transfer data from one machine to another."
 msgstr ""
 
-#: ../../../user/faq.rst:404
+#: ../../../user/faq.rst:407
 msgid "Should I enable push notifications?"
 msgstr ""
 
-#: ../../../user/faq.rst:406
+#: ../../../user/faq.rst:409
 msgid ""
 "Push notifications allow Jami to operate in a way more adapted to the "
 "context of mobility (energy consumption, data, ...).  However, for the "
-"moment, notifications go through Google's servers, via the Firebase "
-"service.  Only one identifier is transferred and it is unusable for "
-"anyone who does not have access to your account."
+"moment, notifications go through Google's servers, via the Firebase service."
+"  Only one identifier is transferred and it is unusable for anyone who does "
+"not have access to your account."
 msgstr ""
 
-#: ../../../user/faq.rst:413
+#: ../../../user/faq.rst:416
 msgid "What is a bootstrap server?"
 msgstr ""
 
-#: ../../../user/faq.rst:415
+#: ../../../user/faq.rst:418
 msgid ""
-"A bootstrap server is the entry point of the distributed network. To "
-"enter in a network, Jami must know one other node.  This is the role of "
-"the bootstrap. It can be any node in the network, but, bootstrap nodes "
-"are generally always up and available. The default one in Jami is "
+"A bootstrap server is the entry point of the distributed network. To enter "
+"in a network, Jami must know one other node.  This is the role of the "
+"bootstrap. It can be any node in the network, but, bootstrap nodes are "
+"generally always up and available. The default one in Jami is "
 "``bootstrap.jami.net``."
 msgstr ""
 
-#: ../../../user/faq.rst:422
+#: ../../../user/faq.rst:425
 msgid "What is a TURN server?  What is STUN?"
 msgstr ""
 
-#: ../../../user/faq.rst:424
+#: ../../../user/faq.rst:427
 msgid ""
-"A TURN server is a relay, and is generally used when two peers can't "
-"contact to each other due to some firewall restriction, have NAT without "
-"any opened port, and no IPv6."
+"A TURN server is a relay, and is generally used when two peers can't contact"
+" to each other due to some firewall restriction, have NAT without any opened"
+" port, and no IPv6."
 msgstr ""
 
-#: ../../../user/faq.rst:428
+#: ../../../user/faq.rst:431
 msgid ""
-"A STUN server is only used for SIP accounts, and is generally used to get"
-" your public IP.  For Jami accounts, the DHT already gives this "
-"information."
+"A STUN server is only used for SIP accounts, and is generally used to get "
+"your public IP.  For Jami accounts, the DHT already gives this information."
 msgstr ""
 
-#: ../../../user/faq.rst:433
+#: ../../../user/faq.rst:436
 msgid "What is DHT proxy?"
 msgstr ""
 
-#: ../../../user/faq.rst:435
+#: ../../../user/faq.rst:438
 msgid ""
-"The DHT proxy is a server that registers on the DHT for you and relays "
-"your information to you.  Thus, it is the server that will be active on "
-"the DHT and will participate in the network, and no longer the target "
-"device.  Multiple devices can register on the same DHT proxy."
+"The DHT proxy is a server that registers on the DHT for you and relays your "
+"information to you.  Thus, it is the server that will be active on the DHT "
+"and will participate in the network, and no longer the target device.  "
+"Multiple devices can register on the same DHT proxy."
 msgstr ""
 
-#: ../../../user/faq.rst:441
+#: ../../../user/faq.rst:444
 msgid "How does the username registration service work?"
 msgstr ""
 
-#: ../../../user/faq.rst:443
+#: ../../../user/faq.rst:446
 msgid ""
-"With the default name server (``ns.jami.net``), the usernames are "
-"registered on an Ethereum blockchain.  If you are a developer, you can "
-"build your own name server with the underlying data storage technology of"
-" your choice (e.g. you could use a SQL database rather than using a "
-"blockchain)."
+"With the default name server (``ns.jami.net``), the usernames are registered"
+" on an Ethereum blockchain.  If you are a developer, you can build your own "
+"name server with the underlying data storage technology of your choice (e.g."
+" you could use a SQL database rather than using a blockchain)."
 msgstr ""
 
-#: ../../../user/faq.rst:449
+#: ../../../user/faq.rst:452
 msgid ""
 "With the default name server, you can look up usernames at "
-"``https://ns.jami.net/name/test``, where ``test`` is a username for which"
-" we are looking for a matching :doc:`Infohash <../developer/jami-"
-"identifiers>`.  Once registered, this name server **does not** provide "
-"any way to remove the mapping."
+"``https://ns.jami.net/name/test``, where ``test`` is a username for which we"
+" are looking for a matching :doc:`Infohash <../developer/jami-identifiers>`."
+"  Once registered, this name server **does not** provide any way to remove "
+"the mapping."
 msgstr ""
 
-#: ../../../user/faq.rst:455
+#: ../../../user/faq.rst:458
 msgid "Read more about the Jami :doc:`../developer/name-server-protocol`."
 msgstr ""
 
-#: ../../../user/faq.rst:458
+#: ../../../user/faq.rst:461
 msgid "How can I change the timeout for a call?"
 msgstr ""
 
-#: ../../../user/faq.rst:460
+#: ../../../user/faq.rst:463
 msgid ""
-"In the ``dring.yml`` file (see :ref:`user/faq:Where are the configuration"
-" files located?`), you can change the ``ringingTimeout`` (in seconds)."
+"In the ``dring.yml`` file (see :ref:`user/faq:Where are the configuration "
+"files located?`), you can change the ``ringingTimeout`` (in seconds)."
 msgstr ""
 
-#: ../../../user/faq.rst:465
+#: ../../../user/faq.rst:468
 msgid "How to back up and reimport conversations and accounts"
 msgstr ""
 
-#: ../../../user/faq.rst:467
+#: ../../../user/faq.rst:470
 msgid "This is only for clients based on LRC (desktop ones)."
 msgstr ""
 
-#: ../../../user/faq.rst:469
+#: ../../../user/faq.rst:472
 msgid ""
-"First you will need to export all your accounts (For GNU/Linux: "
-"``Settings`` => ``Account`` => ``Export account``).  Then you will need "
-"to copy the database (in ``~/.local/share/jami/`` for example)."
+"First you will need to export all your accounts (For GNU/Linux: ``Settings``"
+" => ``Account`` => ``Export account``).  Then you will need to copy the "
+"database (in ``~/.local/share/jami/`` for example)."
 msgstr ""
 
-#: ../../../user/faq.rst:473
+#: ../../../user/faq.rst:476
 msgid ""
-"Then on the new device, when you will open Jami for the first time, you "
-"have to re-import your accounts via the archive previously saved.  This "
-"will re-import your settings and contacts (with empty conversations). "
-"Then close the client and replace the database with the one previously "
-"saved.  That's all!"
+"Then on the new device, when you will open Jami for the first time, you have"
+" to re-import your accounts via the archive previously saved.  This will re-"
+"import your settings and contacts (with empty conversations). Then close the"
+" client and replace the database with the one previously saved.  That's all!"
 msgstr ""
 
-#: ../../../user/faq.rst:480
+#: ../../../user/faq.rst:483
 msgid "How secure are you?"
 msgstr ""
 
-#: ../../../user/faq.rst:482
+#: ../../../user/faq.rst:485
 msgid ""
 "**We use TLS/SRTP to secure connection and communications over the "
 "network.**"
 msgstr ""
 
-#: ../../../user/faq.rst:485
+#: ../../../user/faq.rst:488
 msgid ""
-"We implement SRTP over SIP using recommendations described in the "
-"following two RFCs:"
+"We implement SRTP over SIP using recommendations described in the following "
+"two RFCs:"
 msgstr ""
 
-#: ../../../user/faq.rst:488
+#: ../../../user/faq.rst:491
 msgid "`RFC 3711 <https://tools.ietf.org/html/rfc3711>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:489
+#: ../../../user/faq.rst:492
 msgid "`RFC 4568 <https://tools.ietf.org/html/rfc4568>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:491
+#: ../../../user/faq.rst:494
 msgid ""
-"Typically 2 kinds of sockets are negotiated.  One for the control socket,"
-" the other for the media sockets."
+"Typically 2 kinds of sockets are negotiated.  One for the control socket, "
+"the other for the media sockets."
 msgstr ""
 
-#: ../../../user/faq.rst:494
+#: ../../../user/faq.rst:497
 msgid "Typical control session will use the following cipher suite::"
 msgstr ""
 
-#: ../../../user/faq.rst:499
+#: ../../../user/faq.rst:502
 msgid "DTLS (fallback) supported::"
 msgstr ""
 
-#: ../../../user/faq.rst:503
+#: ../../../user/faq.rst:506
 msgid "TLS::"
 msgstr ""
 
-#: ../../../user/faq.rst:507
+#: ../../../user/faq.rst:510
 msgid "Supported crypto suite for the media session are:"
 msgstr ""
 
-#: ../../../user/faq.rst:509
+#: ../../../user/faq.rst:512
 msgid "``AES_CM_128_HMAC_SHA1_80 / SRTP_AES128_CM_HMAC_SHA1_80``"
 msgstr ""
 
-#: ../../../user/faq.rst:510
+#: ../../../user/faq.rst:513
 msgid "``AES_CM_128_HMAC_SHA1_32 / SRTP_AES128_CM_HMAC_SHA1_32``"
 msgstr ""
 
-#: ../../../user/faq.rst:513
+#: ../../../user/faq.rst:516
 msgid "When do public IPs get exposed?"
 msgstr ""
 
-#: ../../../user/faq.rst:515
+#: ../../../user/faq.rst:518
 msgid ""
 "We can consider three main connectivity scenarios: (1) a classic "
-"configuration, (2) behind a VPN, (3) via Tor.  As Jami is a p2p "
-"application, the reader would probably know that (2) or (3) is a bit "
-"mandatory to avoid IP leaking."
+"configuration, (2) behind a VPN, (3) via Tor.  As Jami is a p2p application,"
+" the reader would probably know that (2) or (3) is a bit mandatory to avoid "
+"IP leaking."
 msgstr ""
 
-#: ../../../user/faq.rst:520
+#: ../../../user/faq.rst:523
 msgid ""
-"Moreover, even if it's my answer, you can choose to not trust my answer "
-"and check the code, or use wireshark or other tools. Generally, I (and as"
-" far as I know most other Jami developers) use the first scenario "
-"(sometimes the second one), and we surely can't test all the possible "
-"networks configurations we would like to, so if you discover a bug, "
-"please :doc:`open an issue <bug-report-guide>`."
+"Moreover, even if it's my answer, you can choose to not trust my answer and "
+"check the code, or use wireshark or other tools. Generally, I (and as far as"
+" I know most other Jami developers) use the first scenario (sometimes the "
+"second one), and we surely can't test all the possible networks "
+"configurations we would like to, so if you discover a bug, please :doc:`open"
+" an issue <bug-report-guide>`."
 msgstr ""
 
-#: ../../../user/faq.rst:527
+#: ../../../user/faq.rst:530
 msgid "Anyway, in these 3 scenarios, there are 3 main actions:"
 msgstr ""
 
-#: ../../../user/faq.rst:529
+#: ../../../user/faq.rst:532
 msgid "sending a message (this will use the DHT);"
 msgstr ""
 
-#: ../../../user/faq.rst:530
+#: ../../../user/faq.rst:533
 msgid ""
-"sending a file (TCP ICE connection as described here: :doc:`../developer"
-"/file-transfer`; and"
+"sending a file (TCP ICE connection as described here: "
+":doc:`../developer/file-transfer`; and"
 msgstr ""
 
-#: ../../../user/faq.rst:532
+#: ../../../user/faq.rst:535
 msgid ""
 "placing a call (TCP + UDP ICE connection as described here: "
 ":doc:`../developer/calls`)."
 msgstr ""
 
-#: ../../../user/faq.rst:536
+#: ../../../user/faq.rst:539
 msgid "Classic config"
 msgstr ""
 
-#: ../../../user/faq.rst:538 ../../../user/faq.rst:564
-#: ../../../user/faq.rst:598
+#: ../../../user/faq.rst:541 ../../../user/faq.rst:567
+#: ../../../user/faq.rst:601
 msgid "Send a message"
-msgstr ""
+msgstr "ارسال پیام"
 
-#: ../../../user/faq.rst:540
+#: ../../../user/faq.rst:543
 msgid ""
 "The Jami application is running a DHT (https://opendht.net) node on your "
-"device. So every operations on the DHT will use your ips. This is why "
-"Jami has the option to use a dhtproxy (eg dhtproxy.jami.net), this will "
-"avoid to use your node, but will use another node on the network (which "
-"will see your ip). Note that your message is not sent directly to the "
-"other device. In fact your message is sent on some nodes of the DHT and "
-"your contact will retrieve the message on this node. So, your contact "
-"don't see your IP at this step, but the node who get the message will (or"
-" they will see the IP of the proxy)."
-msgstr ""
-
-#: ../../../user/faq.rst:550 ../../../user/faq.rst:584
-#: ../../../user/faq.rst:604
+"device. So every operations on the DHT will use your ips. This is why Jami "
+"has the option to use a dhtproxy (eg dhtproxy.jami.net), this will avoid to "
+"use your node, but will use another node on the network (which will see your"
+" ip). Note that your message is not sent directly to the other device. In "
+"fact your message is sent on some nodes of the DHT and your contact will "
+"retrieve the message on this node. So, your contact don't see your IP at "
+"this step, but the node who get the message will (or they will see the IP of"
+" the proxy)."
+msgstr ""
+
+#: ../../../user/faq.rst:553 ../../../user/faq.rst:587
+#: ../../../user/faq.rst:607
 msgid "Send a file"
-msgstr ""
+msgstr "ارسال فایل"
 
-#: ../../../user/faq.rst:552
+#: ../../../user/faq.rst:555
 msgid ""
-"As described in the docs, you will send a message with all the IP you "
-"know that your peer can contact in an encrypted packet. So, if your peer "
-"send you a file or you send a file, your addresses will appear in the ICE"
-" message."
+"As described in the docs, you will send a message with all the IP you know "
+"that your peer can contact in an encrypted packet. So, if your peer send you"
+" a file or you send a file, your addresses will appear in the ICE message."
 msgstr ""
 
-#: ../../../user/faq.rst:557
+#: ../../../user/faq.rst:560
 msgid "Calls"
-msgstr ""
+msgstr "تماس‌ها"
 
-#: ../../../user/faq.rst:559
+#: ../../../user/faq.rst:562
 msgid "Same as above, the IP is present in the ICE."
 msgstr ""
 
-#: ../../../user/faq.rst:562
+#: ../../../user/faq.rst:565
 msgid "Behind a VPN"
 msgstr ""
 
-#: ../../../user/faq.rst:566
+#: ../../../user/faq.rst:569
 msgid ""
-"The IP of your VPN will be used by the DHT node. If you want a proof, you"
-" can compile dhtnode and run the ``la`` command to get your public "
-"detected address. This is what I got:"
+"The IP of your VPN will be used by the DHT node. If you want a proof, you "
+"can compile dhtnode and run the ``la`` command to get your public detected "
+"address. This is what I got:"
 msgstr ""
 
-#: ../../../user/faq.rst:581
+#: ../../../user/faq.rst:584
 msgid ""
-"So, if you don't use a proxy, your VPN addresses will be used for using "
-"the DHT. If you use a dhtproxy, the dhtproxy will see your VPN addresses"
+"So, if you don't use a proxy, your VPN addresses will be used for using the "
+"DHT. If you use a dhtproxy, the dhtproxy will see your VPN addresses"
 msgstr ""
 
-#: ../../../user/faq.rst:586
+#: ../../../user/faq.rst:589
 msgid ""
 "Same as above, the ICE will contains: + addresses from your LAN + public "
 "address of your VPN + TURN address if TURN is enabled"
 msgstr ""
 
-#: ../../../user/faq.rst:589 ../../../user/faq.rst:627
+#: ../../../user/faq.rst:592 ../../../user/faq.rst:630
 msgid "Do a call"
 msgstr ""
 
-#: ../../../user/faq.rst:591
+#: ../../../user/faq.rst:594
 msgid ""
-"Same as above, your public address is replaced by your VPN address. You "
-"can see it in the logs from daemon. See :ref:`user/bug-report-"
-"guide:logs`."
+"Same as above, your public address is replaced by your VPN address. You can "
+"see it in the logs from daemon. See :ref:`user/bug-report-guide:logs`."
 msgstr ""
 
-#: ../../../user/faq.rst:596
+#: ../../../user/faq.rst:599
 msgid "Tor"
 msgstr ""
 
-#: ../../../user/faq.rst:600
+#: ../../../user/faq.rst:603
 msgid ""
-"Tor basically doesn't supports UDP. This means that you can't use your "
-"DHT node locally, you MUST use a DHTProxy. That proxy will see the Exit "
-"node."
+"Tor basically doesn't supports UDP. This means that you can't use your DHT "
+"node locally, you MUST use a DHTProxy. That proxy will see the Exit node."
 msgstr ""
 
-#: ../../../user/faq.rst:606
+#: ../../../user/faq.rst:609
 msgid ""
-"I prefer a proof that any description. So, I did a file transfer with "
-"Jami + TOR. This is what I see in the logs for the remote:"
+"I prefer a proof that any description. So, I did a file transfer with Jami +"
+" TOR. This is what I see in the logs for the remote:"
 msgstr ""
 
-#: ../../../user/faq.rst:618
+#: ../../../user/faq.rst:621
 msgid ""
-"The first ones are some 192.168.x.x so we don't care. 51.254.39.157 is "
-"the TURN address in France (my device is in the Canada). 185.220.101.24 "
-"is the Tor exit node:"
+"The first ones are some 192.168.x.x so we don't care. 51.254.39.157 is the "
+"TURN address in France (my device is in the Canada). 185.220.101.24 is the "
+"Tor exit node:"
 msgstr ""
 
-#: ../../../user/faq.rst:629
+#: ../../../user/faq.rst:632
 msgid ""
 "This will not work (actually, you can create the SIP control connection "
-"because it's a TCP connection), but medias are negotiated in UDP, so this"
-" will fail."
+"because it's a TCP connection), but medias are negotiated in UDP, so this "
+"will fail."
 msgstr ""
 
-#: ../../../user/faq.rst:634
+#: ../../../user/faq.rst:637
 msgid "What ports does Jami use?"
 msgstr ""
 
-#: ../../../user/faq.rst:636
+#: ../../../user/faq.rst:639
 msgid ""
 "Jami works as a server and gets new ports for each connections (randomly "
 "bound). These are the ranges that can be used for each component:"
 msgstr ""
 
-#: ../../../user/faq.rst:639
+#: ../../../user/faq.rst:642
 msgid "dht: UDP [4000, 8888]"
 msgstr ""
 
-#: ../../../user/faq.rst:640
+#: ../../../user/faq.rst:643
 msgid "audio: UDP [16384-32766]"
 msgstr ""
 
-#: ../../../user/faq.rst:641
+#: ../../../user/faq.rst:644
 msgid "video: UDP [49152-65534]"
 msgstr ""
 
-#: ../../../user/faq.rst:642
+#: ../../../user/faq.rst:645
 msgid "SIP Control: UDP/TCP randomly bound"
 msgstr ""
 
-#: ../../../user/faq.rst:644
+#: ../../../user/faq.rst:647
 msgid ""
 "Note: if UDP is blocked, a dhtproxy can be used to use TCP instead. Note "
 "that medias will not work cause it only supports UDP."
 msgstr ""
 
-#: ../../../user/faq.rst:647
+#: ../../../user/faq.rst:650
 msgid "So for ufw, we recommend running ``sudo ufw default allow outgoing``."
 msgstr ""
 
-#: ../../../user/faq.rst:649
+#: ../../../user/faq.rst:652
 msgid ""
-"For now, you can't specify a specific range to configure ports used by "
-"Jami. The inbound traffic can be controlled without issue, Jami should "
-"work and can use a TURN server if needed."
+"For now, you can't specify a specific range to configure ports used by Jami."
+" The inbound traffic can be controlled without issue, Jami should work and "
+"can use a TURN server if needed."
 msgstr ""
 
-#: ../../../user/faq.rst:653
+#: ../../../user/faq.rst:656
 msgid "If you run your own proxy or nameserver:"
 msgstr ""
 
-#: ../../../user/faq.rst:655
+#: ../../../user/faq.rst:658
 msgid "dhtproxy, nameserver: TCP [80-100], 443"
 msgstr ""
 
-#: ../../../user/faq.rst:657
+#: ../../../user/faq.rst:660
 msgid "If you run your own TURN server:"
 msgstr ""
 
-#: ../../../user/faq.rst:659
+#: ../../../user/faq.rst:662
 msgid "TURN/STUN: TCP+UDP 3478, 5349"
 msgstr ""
 
-#: ../../../user/faq.rst:662
+#: ../../../user/faq.rst:665
 msgid "Can I use Jami in a local network (LAN) without internet access?"
 msgstr ""
 
-#: ../../../user/faq.rst:664
+#: ../../../user/faq.rst:667
 msgid ""
-"Yes!  Thanks to Jami's architecture, Jami users on a local/private "
-"network can communicate among themselves using Jami, without requiring "
-"any outside connectivity such as the internet."
+"Yes!  Thanks to Jami's architecture, Jami users on a local/private network "
+"can communicate among themselves using Jami, without requiring any outside "
+"connectivity such as the internet."
 msgstr ""
 
-#: ../../../user/faq.rst:668
+#: ../../../user/faq.rst:671
 msgid ""
 "To do so, from Jami's ``Account`` settings open ``Advanced account "
 "settings``.  There, enable the ``Enable local peer discovery`` setting.  "
-"Additionally, you may want to manually set the ``bootstrap`` node's "
-"address (default: ``bootstrap.jami.net``) to the IP address of another "
-"device on your network that also runs Jami and/or an OpenDHT node."
+"Additionally, you may want to manually set the ``bootstrap`` node's address "
+"(default: ``bootstrap.jami.net``) to the IP address of another device on "
+"your network that also runs Jami and/or an OpenDHT node."
 msgstr ""
 
-#: ../../../user/faq.rst:675
+#: ../../../user/faq.rst:678
 msgid ""
 "If you will use this Jami account for communicating only with only with "
-"other devices on the same local/private network, you can disable TURN if "
-"you wish.  If you do so, and later you decide to use this account also "
-"for communicating with other Jami devices outside your network, don't "
-"forget to enable TURN again, as it helps Jami work around issues with "
-"some overly restrictive firewalls."
+"other devices on the same local/private network, you can disable TURN if you"
+" wish.  If you do so, and later you decide to use this account also for "
+"communicating with other Jami devices outside your network, don't forget to "
+"enable TURN again, as it helps Jami work around issues with some overly "
+"restrictive firewalls."
 msgstr ""
 
-#: ../../../user/faq.rst:684
+#: ../../../user/faq.rst:687
 msgid "How can I configure the codecs even more?"
 msgstr ""
 
-#: ../../../user/faq.rst:686
+#: ../../../user/faq.rst:689
 msgid ""
-"Codecs can be configured via a file. In the configurations files, you can"
-" create a file called ``encoder.json`` like this:"
+"Codecs can be configured via a file. In the configurations files, you can "
+"create a file called ``encoder.json`` like this:"
 msgstr ""
 
-#: ../../../user/faq.rst:706
+#: ../../../user/faq.rst:709
 msgid "or:"
 msgstr ""
 
-#: ../../../user/faq.rst:716
+#: ../../../user/faq.rst:719
 msgid ""
 "This file is :ref:`located in the same directory <user/faq:Where are the "
 "configuration files located?>` as ``dring.yml``."
 msgstr ""
 
-#: ../../../user/faq.rst:719
+#: ../../../user/faq.rst:722
 msgid ""
 "To check which options are supported, use the command ``ffmpeg -h "
-"encoder=[encoder_name]``, where ``encoder_name`` can be any of "
-"``libx264``, ``libvpx``, ``mpeg4``, ``h263``, ``libopus``, ``libspeex``, "
-"``g722``, ``pcm_alaw``, or ``pcm_mulaw`` (the FFmpeg names for all of "
-"Jami's supported encoders)."
+"encoder=[encoder_name]``, where ``encoder_name`` can be any of ``libx264``, "
+"``libvpx``, ``mpeg4``, ``h263``, ``libopus``, ``libspeex``, ``g722``, "
+"``pcm_alaw``, or ``pcm_mulaw`` (the FFmpeg names for all of Jami's supported"
+" encoders)."
 msgstr ""
 
-#: ../../../user/faq.rst:726
+#: ../../../user/faq.rst:729
 msgid "How can I configure the audio processor?"
 msgstr ""
 
-#: ../../../user/faq.rst:728
+#: ../../../user/faq.rst:731
 msgid ""
 "An audio processor allows Jami to clean up and process your microphone's "
 "audio. It can remove echo, reduce noise, and equalize your microphone's "
 "volume. Additionally, it can detect when you're speaking and send this "
-"information to participants in your call. The audio processor settings "
-"can be set in your ``dring.yml`` file. See :ref:`this section to find "
-"where this file is located <config-file-location>`."
+"information to participants in your call. The audio processor settings can "
+"be set in your ``dring.yml`` file. See :ref:`this section to find where this"
+" file is located <config-file-location>`."
 msgstr ""
 
-#: ../../../user/faq.rst:734
+#: ../../../user/faq.rst:737
 msgid "The relevant preference keys are:"
 msgstr ""
 
-#: ../../../user/faq.rst:736
+#: ../../../user/faq.rst:739
 msgid ""
-"``audioProcessor``, which configures which audio processor to use. The "
-"valid options are:"
+"``audioProcessor``, which configures which audio processor to use. The valid"
+" options are:"
 msgstr ""
 
-#: ../../../user/faq.rst:738
+#: ../../../user/faq.rst:741
 msgid ""
 "``webrtc``: the `WebRTC Audio Processing library "
-"<https://www.freedesktop.org/software/pulseaudio/webrtc-audio-"
-"processing/>`_"
+"<https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:739
+#: ../../../user/faq.rst:742
 msgid ""
-"``speex``: the `Speex DSP library "
-"<https://gitlab.xiph.org/xiph/speexdsp>`_"
+"``speex``: the `Speex DSP library <https://gitlab.xiph.org/xiph/speexdsp>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:740
+#: ../../../user/faq.rst:743
 msgid ""
-"``null``: disables audio processing (though your system echo canceller "
-"may still be used, see below)"
+"``null``: disables audio processing (though your system echo canceller may "
+"still be used, see below)"
 msgstr ""
 
-#: ../../../user/faq.rst:742
+#: ../../../user/faq.rst:745
 msgid ""
 "``echoCancel``, which configures how echo cancelling should be done. The "
 "valid options are:"
 msgstr ""
 
-#: ../../../user/faq.rst:744
+#: ../../../user/faq.rst:747
 msgid ""
-"``auto``: try to use your operating system's echo canceller (if it "
-"exists), otherwise fall back to the chosen audio processor's echo "
-"canceller"
+"``auto``: try to use your operating system's echo canceller (if it exists), "
+"otherwise fall back to the chosen audio processor's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:745
-msgid "``audioProcessor``: only use the chosen audio processor's echo canceller"
+#: ../../../user/faq.rst:748
+msgid ""
+"``audioProcessor``: only use the chosen audio processor's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:746
+#: ../../../user/faq.rst:749
 msgid "``system``: only use your operating system's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:747
+#: ../../../user/faq.rst:750
 msgid "``null``: don't do any echo cancelling"
 msgstr ""
 
-#: ../../../user/faq.rst:749
+#: ../../../user/faq.rst:752
 msgid ""
 "``noiseReduce``, ``true``/``false`` to set noise reduction on the audio "
 "processor"
 msgstr ""
 
-#: ../../../user/faq.rst:750
+#: ../../../user/faq.rst:753
 msgid ""
-"``automaticGainControl``, ``true``/``false`` to set automatic gain "
-"control on the audio processor"
+"``automaticGainControl``, ``true``/``false`` to set automatic gain control "
+"on the audio processor"
 msgstr ""
 
-#: ../../../user/faq.rst:751
+#: ../../../user/faq.rst:754
 msgid ""
 "``voiceActivityDetection``, ``true``/``false`` to set voice activity "
 "detection on the audio processor"
@@ -1996,19 +1996,18 @@ msgstr ""
 
 #: ../../../user/index.rst:5
 msgid ""
-"The Jami user manual introduces Jami and its features, provides "
-"additional information on methods of installing Jami, answers users' most"
-" common questions in the FAQ (frequently asked questions), and includes "
-"various user guides and tutorials for users, such as the :doc:`bug-"
-"report-guide` with step-by-step instructions for reporting bugs and "
-"issues."
+"The Jami user manual introduces Jami and its features, provides additional "
+"information on methods of installing Jami, answers users' most common "
+"questions in the FAQ (frequently asked questions), and includes various user"
+" guides and tutorials for users, such as the :doc:`bug-report-guide` with "
+"step-by-step instructions for reporting bugs and issues."
 msgstr ""
 
 #: ../../../user/introduction.rst:2
 msgid "Introduction"
 msgstr ""
 
-#: ../../../user/introduction.rst:-1
+#: ../../../user/introduction.rst-1
 msgid "Jami logo"
 msgstr ""
 
@@ -2020,16 +2019,16 @@ msgstr ""
 
 #: ../../../user/introduction.rst:10
 msgid ""
-"Jami's features include: text chats, voice and video calls, screen "
-"sharing, file sharing, conference calls, and :doc:`group chats "
-"<../developer/swarm>`.  Jami can also function as a regular SIP client."
+"Jami's features include: text chats, voice and video calls, screen sharing, "
+"file sharing, conference calls, and :doc:`group chats <../developer/swarm>`."
+"  Jami can also function as a regular SIP client."
 msgstr ""
 
 #: ../../../user/introduction.rst:15
 msgid ""
-"Jami works on GNU/Linux, Windows, macOS, iOS, and Android.  Multiple "
-"devices can be linked to a Jami account, and no personal information is "
-"required to create an account."
+"Jami works on GNU/Linux, Windows, macOS, iOS, and Android.  Multiple devices"
+" can be linked to a Jami account, and no personal information is required to"
+" create an account."
 msgstr ""
 
 #: ../../../user/introduction.rst:20
@@ -2039,25 +2038,24 @@ msgstr ""
 #: ../../../user/introduction.rst:22
 msgid ""
 "Jami uses a `distributed hash table "
-"<https://en.wikipedia.org/wiki/Distributed_hash_table>`_ (DHT) to connect"
-" peers.  Jami accounts are asymmetric `X.509 certificates "
-"<https://en.wikipedia.org/wiki/X.509>`_ generated by the GnuTLS library."
-"  Calls are made over the `Session Initiation Protocol "
-"<https://en.wikipedia.org/wiki/Session_Initiation_Protocol>`_ (SIP) after"
-" negotiating a `TLS "
-"<https://en.wikipedia.org/wiki/Transport_Layer_Security>`_-encrypted "
-"secure connection, performing `Secure Real-time Transport Protocol "
-"<https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol>`_ "
-"(SRTP) communication which carries the media streams."
+"<https://en.wikipedia.org/wiki/Distributed_hash_table>`_ (DHT) to connect "
+"peers.  Jami accounts are asymmetric `X.509 certificates "
+"<https://en.wikipedia.org/wiki/X.509>`_ generated by the GnuTLS library.  "
+"Calls are made over the `Session Initiation Protocol "
+"<https://en.wikipedia.org/wiki/Session_Initiation_Protocol>`_ (SIP) after "
+"negotiating a `TLS "
+"<https://en.wikipedia.org/wiki/Transport_Layer_Security>`_-encrypted secure "
+"connection, performing `Secure Real-time Transport Protocol "
+"<https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol>`_ (SRTP)"
+" communication which carries the media streams."
 msgstr ""
 
 #: ../../../user/introduction.rst:34
 msgid ""
 "For more on how Jami works, see the `Jami and how it empowers users "
-"<https://kelar.org/~bandali/talks/jami-empowers-users.html>`_ talk by "
-"`Amin Bandali <https://kelar.org/~bandali/>`_, as well as the "
-":doc:`Technical Overview <../developer/technical-overview>` for more in-"
-"depth information."
+"<https://kelar.org/~bandali/talks/jami-empowers-users.html>`_ talk by `Amin "
+"Bandali <https://kelar.org/~bandali/>`_, as well as the :doc:`Technical "
+"Overview <../developer/technical-overview>` for more in-depth information."
 msgstr ""
 
 #: ../../../user/introduction.rst:41
@@ -2067,16 +2065,16 @@ msgstr ""
 #: ../../../user/introduction.rst:43
 msgid ""
 "The Jami project is led by `Savoir-faire Linux "
-"<https://www.savoirfairelinux.com/en/>`_ -- a Canadian/Québécois "
-"GNU/Linux consulting company -- and is supported by a global community of"
-" free software enthusiasts, users, and contributors."
+"<https://www.savoirfairelinux.com/en/>`_ -- a Canadian/Québécois GNU/Linux "
+"consulting company -- and is supported by a global community of free "
+"software enthusiasts, users, and contributors."
 msgstr ""
 
 #: ../../../user/introduction.rst:48
 msgid ""
-"Jami is `free software <https://www.gnu.org/philosophy/free-sw.html>`_ "
-"and an official GNU package, developed and distributed under the `GNU "
-"GPLv3+ <https://www.gnu.org/licenses/gpl-3.0.html>`_ license."
+"Jami is `free software <https://www.gnu.org/philosophy/free-sw.html>`_ and "
+"an official GNU package, developed and distributed under the `GNU GPLv3+ "
+"<https://www.gnu.org/licenses/gpl-3.0.html>`_ license."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:1
@@ -2085,13 +2083,12 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:4
 msgid "Connectivity"
-msgstr ""
+msgstr "اتصال"
 
 #: ../../../user/jami-distributed-network.md:6
 msgid ""
-"Jami relies on a [distributed network](tutorials/Jami-distributed-"
-"network), that brings multiple advantages when compared to federated "
-"networks:"
+"Jami relies on a [distributed network](tutorials/Jami-distributed-network), "
+"that brings multiple advantages when compared to federated networks:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:10
@@ -2126,8 +2123,8 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:19
 msgid ""
-"The core problem of distributed communication systems is peer "
-"connectivity, Jami achieves it through two elements:"
+"The core problem of distributed communication systems is peer connectivity, "
+"Jami achieves it through two elements:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:22
@@ -2160,30 +2157,30 @@ msgstr ""
 msgid ""
 "See "
 "[<https://github.com/savoirfairelinux/opendht>](https://github.com/savoirfairelinux/opendht)"
-" for more information about OpenDHT, which provides a distributed key-"
-"value datastore for connectivity establishment (with ICE) and message "
-"distribution in Jami."
+" for more information about OpenDHT, which provides a distributed key-value "
+"datastore for connectivity establishment (with ICE) and message distribution"
+" in Jami."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:40
 msgid ""
-"An OpenDHT network can be joined by knowing about any node already "
-"connected to the network. This node will then share its knowledge about "
-"other nodes on the network."
+"An OpenDHT network can be joined by knowing about any node already connected"
+" to the network. This node will then share its knowledge about other nodes "
+"on the network."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:44
 msgid ""
-"Jami clients use a persistent node cache to reconnect to the network "
-"after a first session. A configurable, known, stable \"bootstrap\" node "
-"is used for the first connection or if cached nodes don't answer."
+"Jami clients use a persistent node cache to reconnect to the network after a"
+" first session. A configurable, known, stable \"bootstrap\" node is used for"
+" the first connection or if cached nodes don't answer."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:48
 msgid ""
 "Jami clients currently use bootstrap.jami.net:4222 as the default "
-"(configurable) bootstrap node and network ID 0 (the default, public "
-"OpenDHT network)."
+"(configurable) bootstrap node and network ID 0 (the default, public OpenDHT "
+"network)."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:52
@@ -2198,24 +2195,24 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:57
 msgid ""
-"Jami users can have full independence by running their own stable OpenDHT"
-" node and configure it as a bootstrap node in Jami, while helping to "
-"improve stability, robustness and resilience for every user of the public"
-" OpenDHT network."
+"Jami users can have full independence by running their own stable OpenDHT "
+"node and configure it as a bootstrap node in Jami, while helping to improve "
+"stability, robustness and resilience for every user of the public OpenDHT "
+"network."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:62
 msgid ""
 "A standalone node can be run using the [dhtnode "
 "utility](https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-"
-"with-dhtnode) included with OpenDHT. dhtnode doesn't persist any data and"
-" has a default in-memory storage limit of 8 MiB."
+"with-dhtnode) included with OpenDHT. dhtnode doesn't persist any data and "
+"has a default in-memory storage limit of 8 MiB."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:67
 msgid ""
-"Stable community-run DHT nodes will be added to the default bootstrap "
-"list at the request of their owner, as more bootstrap nodes means a more "
+"Stable community-run DHT nodes will be added to the default bootstrap list "
+"at the request of their owner, as more bootstrap nodes means a more "
 "resilient, independent network."
 msgstr ""
 
@@ -2225,16 +2222,16 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:74
 msgid ""
-"The JamiNS blockchain is experimental and its architecture is expected to"
-" evolve."
+"The JamiNS blockchain is experimental and its architecture is expected to "
+"evolve."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:77
 msgid ""
-"Jami clients don't run blockchain nodes themselves but rather communicate"
-" with a JamiNS server using HTTP for name registration and query, with a "
-"REST API. This is because the resources needed to run a blockchain node "
-"are too high for most end-users."
+"Jami clients don't run blockchain nodes themselves but rather communicate "
+"with a JamiNS server using HTTP for name registration and query, with a REST"
+" API. This is because the resources needed to run a blockchain node are too "
+"high for most end-users."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:82
@@ -2251,15 +2248,15 @@ msgstr ""
 msgid ""
 "The default Jami name service is ns.jami.net, provided by Savoir-faire "
 "Linux, connected to an Ethereum blockchain node; the goal being to give "
-"everyone the possibility (if they which so) to run their own blockchain "
-"node and HTTP service, mine some Ether, and use it to pay the transaction"
-" fee needed to register their username in Jami."
+"everyone the possibility (if they which so) to run their own blockchain node"
+" and HTTP service, mine some Ether, and use it to pay the transaction fee "
+"needed to register their username in Jami."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:93
 msgid ""
-"Code of the Ethereum contract, the blockchain genesis file, and the "
-"NodeJS module (HTTP server) can be found here : "
+"Code of the Ethereum contract, the blockchain genesis file, and the NodeJS "
+"module (HTTP server) can be found here : "
 "[1](https://github.com/savoirfairelinux/ring-nameservice)"
 msgstr ""
 
@@ -2272,7 +2269,8 @@ msgid "Pre-requisites:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:100
-msgid "Geth 1.8.23+ (download from [HERE](https://geth.ethereum.org/downloads/))"
+msgid ""
+"Geth 1.8.23+ (download from [HERE](https://geth.ethereum.org/downloads/))"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:101
@@ -2288,9 +2286,9 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:106
 msgid ""
-"The process of joining the Jami network is similar to the process of "
-"joining a regular ethereum network with the difference that the genesis "
-"file is used to initialize the data directory."
+"The process of joining the Jami network is similar to the process of joining"
+" a regular ethereum network with the difference that the genesis file is "
+"used to initialize the data directory."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:108
@@ -2317,19 +2315,18 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:113
 msgid ""
-"Use geth to initialize the directory you created in (2) by running "
-"```./geth --datadir /home/username/jamichain  init genes is.json ```"
+"Use geth to initialize the directory you created in (2) by running ```./geth"
+" --datadir /home/username/jamichain  init genes is.json ```"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:114
 msgid ""
-"You can now start geth with the command-line options you need and "
-"specifying one of Jami's bootnodes as follows:"
+"You can now start geth with the command-line options you need and specifying"
+" one of Jami's bootnodes as follows:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:119
 msgid ""
-"This will start a geth daemon with an attached console which is now "
-"syncing with Jami's network."
+"This will start a geth daemon with an attached console which is now syncing "
+"with Jami's network."
 msgstr ""
-
diff --git a/locales/fr/LC_MESSAGES/build.po b/locales/fr/LC_MESSAGES/build.po
index 5c4c018112cba7dba0abb63918704f59453a3b5b..6a431834a652edf603ed9fd7479fea1228d73471 100644
--- a/locales/fr/LC_MESSAGES/build.po
+++ b/locales/fr/LC_MESSAGES/build.po
@@ -1,45 +1,44 @@
 # 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 documentation.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
-#
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
+"POT-Creation-Date: 2022-10-26 17:49+0000\n"
+"PO-Revision-Date: 2022-09-14 17:46+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
-
-#: ../../../build/building.rst:2
-msgid "Building"
-msgstr ""
-
-#: ../../../build/building.rst:4 ../../../build/packaging.rst:4
-msgid "TODO"
-msgstr ""
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../build/dependencies.rst:2
 msgid "Dependencies"
-msgstr ""
+msgstr "Dépendances"
 
 #: ../../../build/dependencies.rst:4
 msgid ""
 "Jami is a large and complex piece of software, and depends on several "
-"external free software libraries.  Here we outline these dependencies and"
-" how to install them with a few popular package systems."
+"external free software libraries.  Here we outline these dependencies and "
+"how to install them with a few popular package systems."
 msgstr ""
+"Jami est un logiciel vaste et complexe, qui dépend de plusieurs "
+"bibliothèques externes de logiciels libres. Nous décrivons ici ces "
+"dépendances et comment les installer avec quelques systèmes de paquets "
+"populaires."
 
 #: ../../../build/dependencies.rst:16 ../../../build/dependencies.rst:107
 msgid "jami-daemon"
-msgstr ""
+msgstr "jami-daemon"
 
 #: ../../../build/dependencies.rst:18
 msgid ""
@@ -226,23 +225,22 @@ msgstr ""
 #: ../../../build/dependencies.rst:66 ../../../build/dependencies.rst:136
 msgid ""
 "On dpkg/deb-based GNU/Linux distributions such as Debian, Trisquel, and "
-"Ubuntu you can install these using packages using ``apt-get`` or ``apt`` "
-"as follows::"
+"Ubuntu you can install these using packages using ``apt-get`` or ``apt`` as "
+"follows::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:80
 msgid ""
-"On rpm-based distributions like Fedora and openSUSE the dependencies can "
-"be installed using ``dnf``, ``yum``, or ``zypper`` like so::"
+"On rpm-based distributions like Fedora and openSUSE the dependencies can be "
+"installed using ``dnf``, ``yum``, or ``zypper`` like so::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:94
 msgid ""
-"We will do our best to keep the above list up-to-date, but in case you "
-"face any issues with missing dependencies you can always check the "
-"package definitions for Jami packages distributed via dl.jami.net, as "
-"well as the ``build.py`` script, available in the ``jami-project`` "
-"repository."
+"We will do our best to keep the above list up-to-date, but in case you face "
+"any issues with missing dependencies you can always check the package "
+"definitions for Jami packages distributed via dl.jami.net, as well as the "
+"``build.py`` script, available in the ``jami-project`` repository."
 msgstr ""
 
 #: ../../../build/dependencies.rst:102
@@ -268,7 +266,8 @@ msgid "libqrencode"
 msgstr ""
 
 #: ../../../build/dependencies.rst:111
-msgid "libayatana-appindicator or libappindicator (optional, for notifications)"
+msgid ""
+"libayatana-appindicator or libappindicator (optional, for notifications)"
 msgstr ""
 
 #: ../../../build/dependencies.rst:113
@@ -307,19 +306,32 @@ msgstr ""
 
 #: ../../../build/dependencies.rst:123
 msgid ""
-"The libqt-jami and jami-libqt packages from dl.jami.net provide the "
-"needed Qt 6 dependencies on supported dpkg/deb-based and rpm-based "
-"GNU/Linux distributions respectively.  This is especially useful for "
-"building Jami on slightly older versions of these distributions where Qt "
-"6 was not yet packaged in the distribution's official repositories. To "
-"install this package providing the Qt 6 dependencies on a supported "
-"distribution, first add the respective dl.jami.net repository by "
-"following the instructions on the `Download Jami for GNU/Linux "
-"<https://jami.net/download-jami-linux/>`_ page of the Jami website, then "
-"install the package using a command like ``sudo apt-get install libqt-"
-"jami`` (for dpkg/deb-based GNU/Linux distributions) and ``sudo dnf "
-"install jami-libqt`` (for rpm-based GNU/Linux distributions)."
-msgstr ""
+"The libqt-jami and jami-libqt packages from dl.jami.net provide the needed "
+"Qt 6 dependencies on supported dpkg/deb-based and rpm-based GNU/Linux "
+"distributions respectively.  This is especially useful for building Jami on "
+"slightly older versions of these distributions where Qt 6 was not yet "
+"packaged in the distribution's official repositories. To install this "
+"package providing the Qt 6 dependencies on a supported distribution, first "
+"add the respective dl.jami.net repository by following the instructions on "
+"the `Download Jami for GNU/Linux <https://jami.net/download-jami-linux/>`_ "
+"page of the Jami website, then install the package using a command like "
+"``sudo apt-get install libqt-jami`` (for dpkg/deb-based GNU/Linux "
+"distributions) and ``sudo dnf install jami-libqt`` (for rpm-based GNU/Linux "
+"distributions)."
+msgstr ""
+"Les paquets libqt-jami et jami-libqt de dl.jami.net fournissent les "
+"dépendances Qt 6 nécessaires aux distributions GNU/Linux basées sur dpkg/deb"
+" et rpm respectivement. Ceci est particulièrement utile pour construire Jami"
+" sur des versions légèrement plus anciennes de ces distributions où Qt 6 "
+"n'était pas encore empaqueté dans les dépôts officiels de la distribution. "
+"Pour installer ce paquetage fournissant les dépendances Qt 6 sur une "
+"distribution supportée, ajoutez d'abord le dépôt dl.jami.net respectif en "
+"suivant les instructions sur le site `Download Jami for GNU/Linux "
+"<https://jami. net/download-jami-linux/>`_ du site web de Jami, puis "
+"installez le paquet en utilisant une commande comme ``sudo apt-get install "
+"libqt-jami`` (pour les distributions GNU/Linux basées sur dpkg/deb) et "
+"``sudo dnf install jami-libqt`` (pour les distributions GNU/Linux basées sur"
+" rpm)."
 
 #: ../../../build/dependencies.rst:153 ../../../build/dependencies.rst:167
 msgid "And for the optional Qt WebEngine dependencies::"
@@ -327,34 +339,49 @@ msgstr ""
 
 #: ../../../build/dependencies.rst:160
 msgid ""
-"On rpm-based distributions like Fedora and openSUSE the dependencies can "
-"be installed using ``dnf`` or ``zypper`` like so::"
+"On rpm-based distributions like Fedora and openSUSE the dependencies can be "
+"installed using ``dnf`` or ``zypper`` like so::"
 msgstr ""
 
 #: ../../../build/dependencies.rst:171
 msgid ""
-"Given the newness of Qt 6, it may not be fully (or at all) packaged in "
-"the official repositories of your GNU/Linux distribution of choice yet.  "
-"In that case, the easiest approach would be to install the libqt-jami or "
-"jami-libqt package on your supported dpkg/deb-based and rpm-based "
-"GNU/Linux distribution respectively, to get all of the needed Qt 6 "
-"dependencies of Jami."
-msgstr ""
+"Given the newness of Qt 6, it may not be fully (or at all) packaged in the "
+"official repositories of your GNU/Linux distribution of choice yet.  In that"
+" case, the easiest approach would be to install the libqt-jami or jami-libqt"
+" package on your supported dpkg/deb-based and rpm-based GNU/Linux "
+"distribution respectively, to get all of the needed Qt 6 dependencies of "
+"Jami."
+msgstr ""
+"Étant donné la nouveauté de Qt 6, il se peut qu'il ne soit pas encore "
+"complètement (ou pas du tout) empaqueté dans les dépôts officiels de la "
+"distribution GNU/Linux de votre choix. Dans ce cas, l'approche la plus "
+"simple serait d'installer le paquet libqt-jami ou jami-libqt sur votre "
+"distribution GNU/Linux basée sur dpkg/deb et rpm respectivement, pour "
+"obtenir toutes les dépendances Qt 6 nécessaires à Jami."
 
 #: ../../../build/index.rst:3
 msgid "Build manual"
-msgstr ""
+msgstr "Manuel de construction"
 
 #: ../../../build/index.rst:5
 msgid ""
-"The Jami build manual documents the various aspects of building Jami from"
-" source, as well as packaging Jami for various package systems. This "
-"manual is aimed at those looking to build Jami from source -- for "
-"instance to hack on Jami and contribute to its development, or to try "
-"recently-added unreleased features -- as well as package maintainers and "
-"contributors to GNU/Linux distributions looking to package or help "
-"maintain a Jami package for their distribution's repositories."
-msgstr ""
+"The Jami build manual documents the various aspects of building Jami from "
+"source, as well as packaging Jami for various package systems. This manual "
+"is aimed at those looking to build Jami from source -- for instance to hack "
+"on Jami and contribute to its development, or to try recently-added "
+"unreleased features -- as well as package maintainers and contributors to "
+"GNU/Linux distributions looking to package or help maintain a Jami package "
+"for their distribution's repositories."
+msgstr ""
+"Le manuel de construction de Jami documente les différents aspects de la "
+"construction de Jami à partir des sources, ainsi que l'empaquetage de Jami "
+"pour différents systèmes de paquets. Ce manuel s'adresse à ceux qui "
+"cherchent à construire Jami à partir des sources - par exemple pour "
+"bidouiller sur Jami et contribuer à son développement, ou pour essayer des "
+"fonctionnalités inédites récemment ajoutées - ainsi qu'aux mainteneurs de "
+"paquets et aux contributeurs aux distributions GNU/Linux qui cherchent à "
+"empaqueter ou à aider à maintenir un paquetage de Jami pour les dépôts de "
+"leur distribution."
 
 #: ../../../build/introduction.rst:2
 msgid "Introduction"
@@ -374,61 +401,56 @@ msgstr ""
 
 #: ../../../build/introduction.rst:9
 msgid ""
-"To use Jami, the Jami daemon/library is always needed, since it is the "
-"core of Jami and contains all of the connectivity, communication, "
-"cryptography, and media logic.  It uses libraries such as OpenDHT, PJSIP,"
-" GnuTLS, and FFmpeg, and has several APIs including DBus, libwrap (shared"
-" library), JNI, and REST.  These APIs make it possible to interact with "
-"Jami without going through a graphical user interface (especially useful "
-"for using Jami in a headless/server setting), build automation "
-"tools/scripts around Jami, and build custom user interfaces for Jami."
+"To use Jami, the Jami daemon/library is always needed, since it is the core "
+"of Jami and contains all of the connectivity, communication, cryptography, "
+"and media logic.  It uses libraries such as OpenDHT, PJSIP, GnuTLS, and "
+"FFmpeg, and has several APIs including DBus, libwrap (shared library), JNI, "
+"and REST.  These APIs make it possible to interact with Jami without going "
+"through a graphical user interface (especially useful for using Jami in a "
+"headless/server setting), build automation tools/scripts around Jami, and "
+"build custom user interfaces for Jami."
 msgstr ""
 
 #: ../../../build/introduction.rst:19
 msgid ""
-"The client (i.e. user interface) may vary depending on the operating "
-"system and/or platform being used.  For example, on Android/Replicant "
-"systems this would be jami-client-android, and on GNU/Linux, Windows, and"
-" macOS this would be the jami-client-qt.  There also used to be a GTK-"
-"based jami-client-gnome for GNU/Linux and a jami-client-macos for macOS, "
-"both of which were deprecated in favour of the newer cross-platform jami-"
-"client-qt based on the Qt framework."
+"The client (i.e. user interface) may vary depending on the operating system "
+"and/or platform being used.  For example, on Android/Replicant systems this "
+"would be jami-client-android, and on GNU/Linux, Windows, and macOS this "
+"would be the jami-client-qt.  There also used to be a GTK-based jami-client-"
+"gnome for GNU/Linux and a jami-client-macos for macOS, both of which were "
+"deprecated in favour of the newer cross-platform jami-client-qt based on the"
+" Qt framework."
 msgstr ""
 
 #: ../../../build/introduction.rst:27
 msgid ""
-"On GNU/Linux systems, jami-client-qt can be configured and built to use "
-"one of two main APIs for communicating with the Jami daemon/library:"
+"On GNU/Linux systems, jami-client-qt can be configured and built to use one "
+"of two main APIs for communicating with the Jami daemon/library:"
 msgstr ""
 
 #: ../../../build/introduction.rst:31
 msgid ""
-"libwrap: when jami-client-qt is configured to use libwrap (which is "
-"always the case on macOS and Windows), it will use Jami daemon's shared "
-"library API, and there will be no separate daemon process. This has the "
-"advantage of things being somewhat more efficient than with the DBus API "
-"mentioned below, in exchange for less flexibility (not being able to "
-"interact with Jami via DBus when using libwrap)."
+"libwrap: when jami-client-qt is configured to use libwrap (which is always "
+"the case on macOS and Windows), it will use Jami daemon's shared library "
+"API, and there will be no separate daemon process. This has the advantage of"
+" things being somewhat more efficient than with the DBus API mentioned "
+"below, in exchange for less flexibility (not being able to interact with "
+"Jami via DBus when using libwrap)."
 msgstr ""
 
 #: ../../../build/introduction.rst:38
 msgid ""
-"The Jami packages distributed via dl.jami.net are currently all "
-"configured to use the libwrap API."
+"The Jami packages distributed via dl.jami.net are currently all configured "
+"to use the libwrap API."
 msgstr ""
 
 #: ../../../build/introduction.rst:41
 msgid ""
 "DBus: when jami-client-qt is configured to use DBus, it will communicate "
-"with the Jami daemon via its DBus API, and the daemon will be running as "
-"a separate process by itself.  This is greatly flexible for communicating"
-" with and controlling the daemon through other means (for example small "
-"utility scripts) simultaneously while the Jami Qt client also uses and "
-"interacts with it. The associated cost of this added flexibility is the "
-"overhead of using DBus."
+"with the Jami daemon via its DBus API, and the daemon will be running as a "
+"separate process by itself.  This is greatly flexible for communicating with"
+" and controlling the daemon through other means (for example small utility "
+"scripts) simultaneously while the Jami Qt client also uses and interacts "
+"with it. The associated cost of this added flexibility is the overhead of "
+"using DBus."
 msgstr ""
-
-#: ../../../build/packaging.rst:2
-msgid "Packaging"
-msgstr ""
-
diff --git a/locales/fr/LC_MESSAGES/contribute.po b/locales/fr/LC_MESSAGES/contribute.po
index f76bf8c00417ca2c85810c4d82c285d6f47cfe20..8d568dd8c78c11e4219d371ddb05c44652218c92 100644
--- a/locales/fr/LC_MESSAGES/contribute.po
+++ b/locales/fr/LC_MESSAGES/contribute.po
@@ -1,239 +1,310 @@
 # 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 documentation.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
-#
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
+"POT-Creation-Date: 2022-10-26 17:49+0000\n"
+"PO-Revision-Date: 2022-09-14 17:52+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../contribute.rst:3
 msgid "Contribute to Jami"
-msgstr ""
+msgstr "Contribuer à Jami"
 
 #: ../../../contribute.rst:5
 msgid ""
-"Contributions to Jami are always welcome and are much appreciated. There "
-"are many ways to contribute to Jami, including reporting bugs and issues,"
-" contributing code, helping package and maintain Jami for your GNU/Linux "
+"Contributions to Jami are always welcome and are much appreciated. There are"
+" many ways to contribute to Jami, including reporting bugs and issues, "
+"contributing code, helping package and maintain Jami for your GNU/Linux "
 "distribution or other operating system, as well as contributing to these "
 "very docs themselves."
 msgstr ""
+"Les contributions à Jami sont toujours les bienvenues et sont très "
+"appréciées. Il existe de nombreuses façons de contribuer à Jami, notamment "
+"en signalant les bogues et les problèmes, en contribuant au code, en aidant "
+"à empaqueter et à maintenir Jami pour votre distribution GNU/Linux ou tout "
+"autre système d'exploitation, ainsi qu'en contribuant à cette documentation "
+"elle-même."
 
 #: ../../../contribute.rst:11
 msgid "Please see below for how to get started contributing to Jami!"
-msgstr ""
+msgstr "Veuillez lire ci-dessous pour commencer à contribuer à Jami !"
 
 #: ../../../contribute.rst:18
 msgid "Reporting bugs and issues"
-msgstr ""
+msgstr "Signaler les bogues et les problèmes."
 
 #: ../../../contribute.rst:20
 msgid ""
-"Please see the :doc:`user/bug-report-guide` for step-by-step instructions"
-" on how to report bugs and issues you encounter in Jami."
+"Please see the :doc:`user/bug-report-guide` for step-by-step instructions on"
+" how to report bugs and issues you encounter in Jami."
 msgstr ""
+"Veuillez consulter le :doc:`user/bug-report-guide` pour obtenir des "
+"instructions étape par étape sur la manière de signaler les bogues et les "
+"problèmes que vous rencontrez dans Jami."
 
 #: ../../../contribute.rst:24
 msgid "Contributing code"
-msgstr ""
+msgstr "Contribuer au code"
 
 #: ../../../contribute.rst:26 ../../../contribute.rst:31
 msgid "TODO"
-msgstr ""
+msgstr "À FAIRE"
 
 #: ../../../contribute.rst:29
 msgid "Packaging Jami"
-msgstr ""
+msgstr "Faire des paquets Jami"
 
 #: ../../../contribute.rst:34
 msgid "Contributing to this documentation"
-msgstr ""
+msgstr "Contribuer à la documentation"
 
 #: ../../../contribute.rst:36
 msgid ""
-"Contributions to these docs are always welcome and appreciated, from "
-"small corrections to whole new chapters."
+"Contributions to these docs are always welcome and appreciated, from small "
+"corrections to whole new chapters."
 msgstr ""
+"Les contributions à ces documents sont toujours les bienvenues et "
+"appréciées, qu'il s'agisse de petites corrections ou de nouveaux chapitres "
+"entiers."
 
 #: ../../../contribute.rst:39
 msgid ""
 "This page will walk through the steps to create a new page or submit a "
 "correction.  The patch review process is the same as :doc:`for any other "
-"Jami project <how-to-submit-a-patch>`, so we will not explain every "
-"command."
+"Jami project <how-to-submit-a-patch>`, so we will not explain every command."
 msgstr ""
+"Cette page vous explique les étapes à suivre pour créer une nouvelle page ou"
+" soumettre une correction. Le processus de révision des correctifs est le "
+"même que :doc:`pour tout autre projet Jami `<how-to-submit-a-patch>, nous "
+"n'expliquerons donc pas chaque commande."
 
 #: ../../../contribute.rst:44
 msgid ""
-"By contributing to this documentation, you agree to make your "
-"contributions available under the :doc:`fdl`, Version 1.3 or any later "
-"version published by the Free Software Foundation; with no Invariant "
-"Sections, no Front-Cover Texts, and no Back-Cover Texts."
+"By contributing to this documentation, you agree to make your contributions "
+"available under the :doc:`fdl`, Version 1.3 or any later version published "
+"by the Free Software Foundation; with no Invariant Sections, no Front-Cover "
+"Texts, and no Back-Cover Texts."
 msgstr ""
+"En contribuant à cette documentation, vous acceptez de mettre vos "
+"contributions à disposition sous la licence :doc:`fdl`, version 1.3 ou toute"
+" autre version ultérieure publiée par la Free Software Foundation ; sans "
+"sections invariantes, sans textes de première de couverture et sans textes "
+"de quatrième de couverture."
 
 #: ../../../contribute.rst:50
 msgid ""
-"You are also promising that you are the author of your changes, or that "
-"you copied them from a work in the public domain or a work released under"
-" a free license that is compatible with the :doc:`fdl`.  DO NOT SUBMIT "
-"COPYRIGHTED WORK WITHOUT PERMISSION."
+"You are also promising that you are the author of your changes, or that you "
+"copied them from a work in the public domain or a work released under a free"
+" license that is compatible with the :doc:`fdl`.  DO NOT SUBMIT COPYRIGHTED "
+"WORK WITHOUT PERMISSION."
 msgstr ""
+"Vous promettez également que vous êtes l'auteur de vos modifications, ou que"
+" vous les avez copiées à partir d'une œuvre du domaine public ou d'une œuvre"
+" publiée sous une licence libre compatible avec le :doc:`fdl`. NE SOUMETTEZ "
+"PAS DE TRAVAUX PROTÉGÉS PAR LE DROIT D'AUTEUR SANS AUTORISATION."
 
 #: ../../../contribute.rst:56
 msgid "**TODO: internationalization**"
-msgstr ""
+msgstr "**À FAIRE : localisation**"
 
 #: ../../../contribute.rst:59
 msgid "Dependencies"
-msgstr ""
+msgstr "Dépendances"
 
 #: ../../../contribute.rst:61
 msgid ""
-"You will need Git installed and configured to use your SSH keypair, and "
-"an account on the `Jami Gerrit <https://review.jami.net>`_, where you "
-"would send your patches for review.  If you need help with this, see "
-":doc:`the beginning of our patch submission guide <how-to-"
-"submit-a-patch>` (TODO)."
+"You will need Git installed and configured to use your SSH keypair, and an "
+"account on the `Jami Gerrit <https://review.jami.net>`_, where you would "
+"send your patches for review.  If you need help with this, see :doc:`the "
+"beginning of our patch submission guide <how-to-submit-a-patch>` (TODO)."
 msgstr ""
+"Vous aurez besoin de Git installé et configuré pour utiliser votre paire de "
+"clés SSH, et un compte sur le `Jami Gerrit <https://review.jami.net>`_, où "
+"vous enverrez vos patchs pour révision. Si vous avez besoin d'aide pour "
+"cela, consultez :doc:`le début de notre guide de soumission de patchs<how-"
+"to-submit-a-patch> ` (À FAIRE)."
 
 #: ../../../contribute.rst:67
 msgid ""
-"If you want to preview your changes locally in your web browser, you need"
-" to install `Sphinx <https://www.sphinx-doc.org>`_, the `Read the Docs "
-"Sphinx theme <https://sphinx-rtd-theme.readthedocs.io/en/stable/>`_, and "
-"the `MyST Markdown parser <https://myst-"
-"parser.readthedocs.io/en/latest/index.html>`_."
+"If you want to preview your changes locally in your web browser, you need to"
+" install `Sphinx <https://www.sphinx-doc.org>`_, the `Read the Docs Sphinx "
+"theme <https://sphinx-rtd-theme.readthedocs.io/en/stable/>`_, and the `MyST "
+"Markdown parser <https://myst-parser.readthedocs.io/en/latest/index.html>`_."
 msgstr ""
+"Si vous voulez prévisualiser vos modifications localement dans votre "
+"navigateur web, vous devez installer `Sphinx <https://www.sphinx-doc.org>`_,"
+" le thème `Read the Docs Sphinx <https://sphinx-rtd-"
+"theme.readthedocs.io/en/stable/>`_, et le parseur Markdown `MyST "
+"<https://myst-parser.readthedocs.io/en/latest/index.html>`_."
 
 #: ../../../contribute.rst:78
 msgid ""
 "If you want to use the auto-build and auto-refresh feature, also install "
-"`sphinx-autobuild <https://github.com/executablebooks/sphinx-"
-"autobuild>`_."
+"`sphinx-autobuild <https://github.com/executablebooks/sphinx-autobuild>`_."
 msgstr ""
+"Si vous voulez utiliser la fonction de construction automatique et de "
+"rafraîchissement automatique, installez également `sphinx-autobuild "
+"<https://github.com/executablebooks/sphinx-autobuild>`_."
 
 #: ../../../contribute.rst:86
 msgid "Cloning the repository"
-msgstr ""
+msgstr "Cloner le référentiel"
 
 #: ../../../contribute.rst:88
 msgid "Clone the repository and configure the push settings like this:"
-msgstr ""
+msgstr "Clonez le dépôt et configurez les paramètres de poussée comme ceci :"
 
 #: ../../../contribute.rst:96
 msgid ""
-"You may want to checkout a new branch for each contribution/change before"
-" you make any change to the files, so that you could easily ``git pull`` "
-"any future changes from upstream into your main local branch:"
+"You may want to checkout a new branch for each contribution/change before "
+"you make any change to the files, so that you could easily ``git pull`` any "
+"future changes from upstream into your main local branch:"
 msgstr ""
+"Vous pouvez vouloir vérifier une nouvelle branche pour chaque "
+"contribution/changement avant d'effectuer tout changement dans les fichiers,"
+" de sorte que vous puissiez facilement ``git pull`` tout changement futur "
+"depuis l'amont dans votre branche locale principale :"
 
 #: ../../../contribute.rst:106
 msgid "Editing a page"
-msgstr ""
+msgstr "Éditer une page"
 
 #: ../../../contribute.rst:108
 msgid ""
-"Pages are written in either markdown or `reStructuredText <https://www"
-".sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_. You can "
-"click \"View page source\" at the top of any page to open the raw source "
-"of the page and see how it was written."
+"Pages are written in either markdown or `reStructuredText "
+"<https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_."
+" You can click \"View page source\" at the top of any page to open the raw "
+"source of the page and see how it was written."
 msgstr ""
+"Les pages sont écrites soit en markdown soit en `reStructuredText "
+"<https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_."
+" Vous pouvez cliquer sur \"View page source\" en haut de n'importe quelle "
+"page pour ouvrir la source brute de la page et voir comment elle a été "
+"écrite."
 
 #: ../../../contribute.rst:113
 msgid "Go ahead and make your changes to the ``.rst`` or ``.md`` files."
 msgstr ""
+"Allez-y et faites vos changements dans les fichiers ``.rst`` ou ``.md``."
 
 #: ../../../contribute.rst:116
 msgid "Previewing your work"
-msgstr ""
+msgstr "Prévisualisation de votre travail"
 
 #: ../../../contribute.rst:118
 msgid "From the base of the repository, run:"
-msgstr ""
+msgstr "Depuis la base du référentiel, exécutez :"
 
 #: ../../../contribute.rst:124
 msgid ""
-"You should now be able to view the documentation in your web browser.  "
-"The homepage is at ``_build/html/index.html``."
+"You should now be able to view the documentation in your web browser.  The "
+"homepage is at ``_build/html/index.html``."
 msgstr ""
+"Vous devriez maintenant être en mesure de visualiser la documentation dans "
+"votre navigateur web. La page d'accueil est à ``_build/html/index.html``."
 
 #: ../../../contribute.rst:127
 msgid ""
 "To automatically build the documentation and refresh your web browser "
 "whenever you save changes, run:"
 msgstr ""
+"Pour construire automatiquement la documentation et rafraîchir votre "
+"navigateur web à chaque fois que vous enregistrez des modifications, "
+"exécutez :"
 
 #: ../../../contribute.rst:134
 msgid ""
-"Keep this running in the background, then navigate to "
-"http://127.0.0.1:8000 (*not* the local .html file)."
+"Keep this running in the background, then navigate to http://127.0.0.1:8000 "
+"(*not* the local .html file)."
 msgstr ""
+"Laissez le système fonctionner en arrière-plan, puis accédez à "
+"http://127.0.0.1:8000 (*pas* le fichier .html local)."
 
 #: ../../../contribute.rst:138
 msgid "Saving your work"
-msgstr ""
+msgstr "Sauvegarder votre travail"
 
 #: ../../../contribute.rst:145
 msgid "Your commit message should look something like this:"
-msgstr ""
+msgstr "Votre message de commit devrait ressembler à ceci :"
 
 #: ../../../contribute.rst:155
 msgid "For example:"
-msgstr ""
+msgstr "Par exemple :"
 
 #: ../../../contribute.rst:168
 msgid "Submitting a change"
-msgstr ""
+msgstr "Soumettre un changement"
 
 #: ../../../contribute.rst:170
 msgid ""
-"The first time you try to push your changes, Gerrit will complain that "
-"you don't have a Change-Id in your commit, and provide an ``scp`` command"
-" to install the commit hook.  After running the command, you should be "
-"able to recommit and push your change:"
+"The first time you try to push your changes, Gerrit will complain that you "
+"don't have a Change-Id in your commit, and provide an ``scp`` command to "
+"install the commit hook.  After running the command, you should be able to "
+"recommit and push your change:"
 msgstr ""
+"La première fois que vous essayez de pousser vos changements, Gerrit se "
+"plaindra que vous n'avez pas de Change-Id dans votre commit, et fournira une"
+" commande ``scp`` pour installer le commit hook. Après avoir exécuté la "
+"commande, vous devriez être capable de recommencer et de pousser votre "
+"changement :"
 
 #: ../../../contribute.rst:182
 msgid "Modifying your work"
-msgstr ""
+msgstr "Modifier votre travail"
 
 #: ../../../contribute.rst:184
 msgid ""
 "A reviewer may ask you to make changes to your patch before merging it.  "
 "This is no problem!  Simply make the changes, ``git add`` them, and run "
-"``git commit --amend`` to modify the patch.  Note the ``--amend`` switch,"
-" which is needed to tell git to *amend*/tweak the existing newest commit "
+"``git commit --amend`` to modify the patch.  Note the ``--amend`` switch, "
+"which is needed to tell git to *amend*/tweak the existing newest commit "
 "rather than making a new commit.  This is the workflow for updating a "
 "proposed change when using Gerrit."
 msgstr ""
+"Un réviseur peut vous demander d'apporter des modifications à votre patch "
+"avant de le fusionner. Ce n'est pas un problème ! Faites simplement les "
+"changements, ``git add``, et lancez ``git commit --amend`` pour modifier le "
+"patch. Notez le commutateur ``--amend``, qui est nécessaire pour dire à git "
+"de *amender*/tweak le dernier commit existant plutôt que de faire un nouveau"
+" commit. C'est le flux de travail pour mettre à jour une proposition de "
+"changement quand on utilise Gerrit."
 
 #: ../../../contribute.rst:192
 msgid "Adding a page"
-msgstr ""
+msgstr "Ajouter une page"
 
 #: ../../../contribute.rst:194
 msgid ""
-"If you decide to add a whole new page to the documentation, you must also"
-" add it to the ``toctree`` directive of that chapter."
+"If you decide to add a whole new page to the documentation, you must also "
+"add it to the ``toctree`` directive of that chapter."
 msgstr ""
+"Si vous décidez d'ajouter une toute nouvelle page à la documentation, vous "
+"devez également l'ajouter à la directive ``toctree`` de ce chapitre."
 
 #: ../../../contribute.rst:197
 msgid ""
 "For instance, if you added a new page called ``hosting-jams-on-aws-"
-"guide.md`` to the Jami user manual in the ``user`` folder, you should add"
-" it in the ``toctree`` directive of ``user/index.rst``, *without* the "
-"file extension:"
-msgstr ""
-
+"guide.md`` to the Jami user manual in the ``user`` folder, you should add it"
+" in the ``toctree`` directive of ``user/index.rst``, *without* the file "
+"extension:"
+msgstr ""
+"Par exemple, si vous avez ajouté une nouvelle page appelée ``hosting-jams-"
+"on-aws-guide.md`` au manuel de l'utilisateur de Jami dans le dossier "
+"``user``, vous devez l'ajouter dans la directive ``toctree`` de "
+"``user/index.rst``, *sans* l'extension du fichier :"
diff --git a/locales/fr/LC_MESSAGES/developer.po b/locales/fr/LC_MESSAGES/developer.po
index d3c6413561e89b2b8aef1ed40c5dc4cbf92d02cb..6cce3c815e2ed6173fa7cb2af1d8de2e3cc22d5f 100644
--- a/locales/fr/LC_MESSAGES/developer.po
+++ b/locales/fr/LC_MESSAGES/developer.po
@@ -1,96 +1,106 @@
 # 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 documentation.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
-#
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# Alexandre Lision, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
+"POT-Creation-Date: 2022-10-26 17:49+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../developer/account-management.md:1
 msgid "Account management"
-msgstr ""
+msgstr "Gestion du compte"
 
 #: ../../../developer/account-management.md:4
 msgid ""
-"In this part, we will learn how to manage a Ring account. This means, how"
-" to create a Ring account, modify the basic settings and delete the "
-"account. This part will *NOT* explain what all the settings mean or how "
-"we can use the account to do any action like adding a contact."
+"In this part, we will learn how to manage a Ring account. This means, how to"
+" create a Ring account, modify the basic settings and delete the account. "
+"This part will *NOT* explain what all the settings mean or how we can use "
+"the account to do any action like adding a contact."
 msgstr ""
+"Dans cette section, nous allons apprendre à gérer un compte Ring, sa création, suppression, en passant par sa modification.\n"
+"Cette section ne vous expliquera pas en détail tous les paramètres, ni comment utiliser votre compte."
 
 #: ../../../developer/account-management.md:6
 msgid "Create a new account"
-msgstr ""
+msgstr "Création d'un nouveau compte"
 
 #: ../../../developer/account-management.md:8
 #: ../../../developer/account-management.md:99
 msgid "Client side"
-msgstr ""
+msgstr "Client side"
 
 #: ../../../developer/account-management.md:10
 #: ../../../developer/account-management.md:101
 #: ../../../developer/file-transfer.md:10
 #: ../../../developer/release-process.md:111
 msgid "Gnome"
-msgstr ""
+msgstr "Gnome"
 
 #: ../../../developer/account-management.md:12
 msgid ""
-"The code related to this feature is located in "
-"`src/accountcreationwizard.*`"
+"The code related to this feature is located in `src/accountcreationwizard.*`"
 msgstr ""
+"Le code concernant cette fonctionnalité se situe dans "
+"`src/accountcreationwizard.*`"
 
 #: ../../../developer/account-management.md:14
 #: ../../../developer/account-management.md:105
 #: ../../../developer/apis-of-jami.md:243
 msgid "LRC"
-msgstr ""
+msgstr "LRC"
 
 #: ../../../developer/account-management.md:16
 msgid ""
 "The account creation is mainly managed by the *NewAccountModel* in "
 "`src/api/newaccountmodel.h` and `src/newaccountmodel.cpp`"
 msgstr ""
+"La création de compte est principalement gérée par *NewAccountModel* dans "
+"`src/api/newaccountmodel.h` et `src/newaccountmodel.cpp`"
 
 #: ../../../developer/account-management.md:18
 #: ../../../developer/account-management.md:109 ../../../developer/calls.md:8
 msgid "Daemon side"
-msgstr ""
+msgstr "Daemon side"
 
 #: ../../../developer/account-management.md:20
 #: ../../../developer/account-management.md:111
 msgid "API"
-msgstr ""
+msgstr "API"
 
 #: ../../../developer/account-management.md:22
 #: ../../../developer/account-management.md:113
 msgid "In cx.ring.Ring.ConfigurationManager:"
-msgstr ""
+msgstr "Dans cx.ring.Ring.ConfigurationManager:"
 
 #: ../../../developer/account-management.md:45
 msgid ""
-"The details can be retrieven from the method `getAccountTemplate(type)` "
-"with `type=RING` or `type=SIP`. For example, this is the following code "
-"used in LRC."
+"The details can be retrieven from the method `getAccountTemplate(type)` with"
+" `type=RING` or `type=SIP`. For example, this is the following code used in "
+"LRC."
 msgstr ""
 
 #: ../../../developer/account-management.md:72
 msgid ""
-"When a new account is added, the signal `accountsChanged` will be "
-"emitted. The client should update its internal structure after this "
-"signal with other methods in ConfigurationManager."
+"When a new account is added, the signal `accountsChanged` will be emitted. "
+"The client should update its internal structure after this signal with other"
+" methods in ConfigurationManager."
 msgstr ""
 
 #: ../../../developer/account-management.md:74
@@ -111,11 +121,11 @@ msgstr ""
 #: ../../../developer/account-management.md:80
 msgid ""
 "A Ring account is in fact represented by some files stored in a gzip "
-"archive. If a password is provided during the account creation, the "
-"archive will be encrypted as following: `dht::crypto::aesEncrypt(archive,"
-" password)` (`dht::crypto::aesEncrypt` is defined in OpenDHT and use "
-"`nettle/{aes,gcm}`). This is what the archive will contain a big JSON "
-"file with:"
+"archive. If a password is provided during the account creation, the archive "
+"will be encrypted as following: `dht::crypto::aesEncrypt(archive, password)`"
+" (`dht::crypto::aesEncrypt` is defined in OpenDHT and use "
+"`nettle/{aes,gcm}`). This is what the archive will contain a big JSON file "
+"with:"
 msgstr ""
 
 #: ../../../developer/account-management.md:82
@@ -134,8 +144,8 @@ msgstr ""
 
 #: ../../../developer/account-management.md:85
 msgid ""
-"The ethereum private key `ethKey` for the device. It's only used when you"
-" register your name on `ns.ring.cx`. Not mandatory."
+"The ethereum private key `ethKey` for the device. It's only used when you "
+"register your name on `ns.ring.cx`. Not mandatory."
 msgstr ""
 
 #: ../../../developer/account-management.md:86
@@ -163,38 +173,36 @@ msgstr ""
 
 #: ../../../developer/account-management.md:97
 msgid ""
-"Deleting a Ring account is pretty simple. Because the keys are only on "
-"the device, if the keys are deleted... the account is deleted! The only "
-"thing outside the device is the username, on the nameserver. To remove "
-"this info, it depends how the nameserver work. For example, it's not "
-"possible with https://ns.ring.cx"
+"Deleting a Ring account is pretty simple. Because the keys are only on the "
+"device, if the keys are deleted... the account is deleted! The only thing "
+"outside the device is the username, on the nameserver. To remove this info, "
+"it depends how the nameserver work. For example, it's not possible with "
+"https://ns.ring.cx"
 msgstr ""
 
 #: ../../../developer/account-management.md:103
 msgid ""
-"The code related to this feature is located in "
-"`newaccountsettingsview.cpp`"
+"The code related to this feature is located in `newaccountsettingsview.cpp`"
 msgstr ""
 
 #: ../../../developer/account-management.md:107
 msgid ""
 "The account deletion is in the *NewAccountModel* in "
-"`src/api/newaccountmodel.h` and `src/newaccountmodel.cpp` "
-"(`removeAccount`)"
+"`src/api/newaccountmodel.h` and `src/newaccountmodel.cpp` (`removeAccount`)"
 msgstr ""
 
 #: ../../../developer/account-management.md:128
 msgid ""
-"When the account is deleted, the signal `accountsChanged` will be "
-"emitted. The client should update its internal structure after this "
-"signal with other methods in ConfigurationManager."
+"When the account is deleted, the signal `accountsChanged` will be emitted. "
+"The client should update its internal structure after this signal with other"
+" methods in ConfigurationManager."
 msgstr ""
 
 #: ../../../developer/account-management.md:132
 msgid ""
-"The main logic to create a new account is located in `src/manager.cpp`, "
-"in `Manager::removeAccount`. It removes the accounts files and update the"
-" config (`dring.yml`)."
+"The main logic to create a new account is located in `src/manager.cpp`, in "
+"`Manager::removeAccount`. It removes the accounts files and update the "
+"config (`dring.yml`)."
 msgstr ""
 
 #: ../../../developer/account-management.md:134
@@ -216,8 +224,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:6
 msgid ""
 "The documentation related to the API of OpenDHT is "
-"[here](https://github.com/savoirfairelinux/opendht/wiki/API-Overview) and"
-" will not be detailed in the following part."
+"[here](https://github.com/savoirfairelinux/opendht/wiki/API-Overview) and "
+"will not be detailed in the following part."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:8
@@ -229,16 +237,17 @@ msgid "The managers"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:12
-msgid "The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
+msgid ""
+"The API of the daemon is decomposed between 5 Managers + 1 Instance file:"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:13
 msgid ""
-"The **CallManager** interface is used to manage call and conference "
-"related actions. Since the Jami daemon supports multiple "
-"incoming/outgoing calls, any actions involving a specific call must "
-"address the method by the means of a unique callID.  Jami daemon will "
-"generate a unique callID for outgoing and incoming calls."
+"The **CallManager** interface is used to manage call and conference related "
+"actions. Since the Jami daemon supports multiple incoming/outgoing calls, "
+"any actions involving a specific call must address the method by the means "
+"of a unique callID.  Jami daemon will generate a unique callID for outgoing "
+"and incoming calls."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:14
@@ -257,9 +266,9 @@ msgstr ""
 
 #: ../../../developer/apis-of-jami.md:17
 msgid ""
-"The **Instance** is used to count the number of clients actually "
-"registered to the core. When initializing your client, you need to "
-"register it against the core by using this interface."
+"The **Instance** is used to count the number of clients actually registered "
+"to the core. When initializing your client, you need to register it against "
+"the core by using this interface."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:19
@@ -363,8 +372,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:50
 msgid ""
 "All the documentation and code for the Node JS API is located in `jami-"
-"daemon/bin/nodejs`. This API is not used in any known project and maybe "
-"is not up-to-date."
+"daemon/bin/nodejs`. This API is not used in any known project and maybe is "
+"not up-to-date."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:52
@@ -374,8 +383,8 @@ msgstr ""
 #: ../../../developer/apis-of-jami.md:54
 msgid ""
 "All the documentation and code for the REST API is located in `jami-"
-"daemon/bin/restcpp`. This API is not used in any known project and maybe "
-"is not up-to-date."
+"daemon/bin/restcpp`. This API is not used in any known project and maybe is "
+"not up-to-date."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:56
@@ -384,14 +393,14 @@ msgstr ""
 
 #: ../../../developer/apis-of-jami.md:58
 msgid ""
-"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This "
-"wrapper uses DBus."
+"A Python wrapper is available in `jami-daemon/tools/jamictrl`. This wrapper "
+"uses DBus."
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:60
 msgid ""
-"This is, for example a quick and dirty IRC bot to interact with Jami made"
-" with this API:"
+"This is, for example a quick and dirty IRC bot to interact with Jami made "
+"with this API:"
 msgstr ""
 
 #: ../../../developer/apis-of-jami.md:62
@@ -434,8 +443,8 @@ msgstr ""
 
 #: ../../../developer/banned-contacts.md:4
 msgid ""
-"Following information are here for development purposes and may not "
-"reflect the current state of any Ring client."
+"Following information are here for development purposes and may not reflect "
+"the current state of any Ring client."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:7
@@ -448,13 +457,13 @@ msgstr ""
 
 #: ../../../developer/banned-contacts.md:12
 msgid ""
-"Alice and Jessica are friends, and like all good friends do, they use "
-"Ring to communicate. They are both Ring contact of each other, so Alice "
-"is a contact of Jessica and Jessica is a contact of Alice. Some day "
-"however, Jessica does something really bad to Alice and Alice doesn't "
-"want to hear from her anymore. Instead of removing Jessica from her Ring "
-"contacts -- which would still allow Jessica to send her contact requests,"
-" Alice *bans* Jessica."
+"Alice and Jessica are friends, and like all good friends do, they use Ring "
+"to communicate. They are both Ring contact of each other, so Alice is a "
+"contact of Jessica and Jessica is a contact of Alice. Some day however, "
+"Jessica does something really bad to Alice and Alice doesn't want to hear "
+"from her anymore. Instead of removing Jessica from her Ring contacts -- "
+"which would still allow Jessica to send her contact requests, Alice *bans* "
+"Jessica."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:20
@@ -473,8 +482,8 @@ msgstr ""
 msgid ""
 "As a *banned contact* of Alice, Jessica *won't be allowed to contact her "
 "anymore*, in any way. Text messages, voice or video calls won't be "
-"acknowledged or answered in any way. Alice won't even be aware that "
-"Jessica tried to contact her."
+"acknowledged or answered in any way. Alice won't even be aware that Jessica "
+"tried to contact her."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:32
@@ -489,13 +498,14 @@ msgstr ""
 msgid ""
 "As long as Jessica is a banned contact, the conversation with Jessica "
 "doesn't appears in the conversations list. The conversation history, "
-"however, is not deleted. Jessica appears in Alice' account banned contact"
-" list. Alice might also find/open the conversation by performing an exact"
-" search for Jessica' username."
+"however, is not deleted. Jessica appears in Alice' account banned contact "
+"list. Alice might also find/open the conversation by performing an exact "
+"search for Jessica' username."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:43
-msgid "Alice can un-ban Jessica from the conversation or the banned contact list."
+msgid ""
+"Alice can un-ban Jessica from the conversation or the banned contact list."
 msgstr ""
 
 #: ../../../developer/banned-contacts.md:46
@@ -514,12 +524,12 @@ msgstr ""
 #: ../../../developer/calls.md:1
 #: ../../../developer/synchronizing-profiles.md:19
 msgid "Calls"
-msgstr ""
+msgstr "Appels"
 
 #: ../../../developer/calls.md:4
 msgid ""
-"**NOTE: this page detail the principle for Jami accounts. For SIP "
-"accounts, the SIP protocol is used.**"
+"**NOTE: this page detail the principle for Jami accounts. For SIP accounts, "
+"the SIP protocol is used.**"
 msgstr ""
 
 #: ../../../developer/calls.md:6
@@ -536,8 +546,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:12
 msgid ""
-"Search the contact presence on the DHT (for more details, see {doc"
-"}`contact-management`)"
+"Search the contact presence on the DHT (for more details, see {doc}`contact-"
+"management`)"
 msgstr ""
 
 #: ../../../developer/calls.md:13
@@ -555,8 +565,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:15
 msgid ""
-"Negotiate the socket via ICE. In fact, two ICE sessions are negotiated. "
-"One (preferred) in TCP, one in UDP (as a fallback)."
+"Negotiate the socket via ICE. In fact, two ICE sessions are negotiated. One "
+"(preferred) in TCP, one in UDP (as a fallback)."
 msgstr ""
 
 #: ../../../developer/calls.md:16
@@ -565,9 +575,9 @@ msgstr ""
 
 #: ../../../developer/calls.md:17
 msgid ""
-"The contact is now able to accept or decline the call. When they accept, "
-"a ICE transport (UDP only for now) is negotiated to create 4 new sockets "
-"for the medias (2 for audio, 2 for video)."
+"The contact is now able to accept or decline the call. When they accept, a "
+"ICE transport (UDP only for now) is negotiated to create 4 new sockets for "
+"the medias (2 for audio, 2 for video)."
 msgstr ""
 
 #: ../../../developer/calls.md:18
@@ -581,33 +591,33 @@ msgstr ""
 #: ../../../developer/calls.md:22
 msgid ""
 "Everything really starts in `jamiaccount.cpp` "
-"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and "
-"when the contact is found via the DHT, the call request for the contact "
-"is crafted. This request contains all the informations necessary for the "
-"remote ICE session defined by:"
+"(`JamiAccount::startOutgoingCall`). Once both ICE objects are ready and when"
+" the contact is found via the DHT, the call request for the contact is "
+"crafted. This request contains all the informations necessary for the remote"
+" ICE session defined by:"
 msgstr ""
 
 #: ../../../developer/calls.md:28
 msgid ""
 "where `callvid` is a random number used to identify the call and blob "
 "contains two concatened ICE messages (`IceTransport::packIceMsg` in "
-"`ice_transport.cpp`) containing the password of the session, the *ufrag* "
-"and ICE candidates.) like:"
+"`ice_transport.cpp`) containing the password of the session, the *ufrag* and"
+" ICE candidates.) like:"
 msgstr ""
 
 #: ../../../developer/calls.md:48
 msgid ""
 "and is sent via the DHT in an encrypted message for the device to "
-"`hash(callto:xxxxxx)` where `xxxxxx` is the device id. The peer will "
-"answer at the exact same place (but encrypted for the sender device) its "
-"own `dht::IceCandidates`. See `JamiAccount::replyToIncomingIceMsg` for "
-"more details."
+"`hash(callto:xxxxxx)` where `xxxxxx` is the device id. The peer will answer "
+"at the exact same place (but encrypted for the sender device) its own "
+"`dht::IceCandidates`. See `JamiAccount::replyToIncomingIceMsg` for more "
+"details."
 msgstr ""
 
 #: ../../../developer/calls.md:50
 msgid ""
-"The ICE session is created both side when they have all the candidates "
-"(so for the sender, when the reply from the contact is received)."
+"The ICE session is created both side when they have all the candidates (so "
+"for the sender, when the reply from the contact is received)."
 msgstr ""
 
 #: ../../../developer/calls.md:52
@@ -616,13 +626,13 @@ msgstr ""
 
 #: ../../../developer/calls.md:54
 msgid ""
-"Pending calls are managed by `JamiAccount::handlePendingCallList()`, "
-"which first wait that the TCP negotiation finish (and if it fails, wait "
-"for the UDP one). The code for the ICE negotiation is mainly managed by "
+"Pending calls are managed by `JamiAccount::handlePendingCallList()`, which "
+"first wait that the TCP negotiation finish (and if it fails, wait for the "
+"UDP one). The code for the ICE negotiation is mainly managed by "
 "[pjproject](https://github.com/pjsip/pjproject) but for Jami, the "
-"interesting part is located in `ice_transport.cpp`. Moreover, we add some"
-" important patches/features on top of *pjproject* not merged upstream for"
-" now (for example, ICE over TCP). These patches are present in "
+"interesting part is located in `ice_transport.cpp`. Moreover, we add some "
+"important patches/features on top of *pjproject* not merged upstream for now"
+" (for example, ICE over TCP). These patches are present in "
 "`contrib/src/pjproject`."
 msgstr ""
 
@@ -632,13 +642,12 @@ msgstr ""
 
 #: ../../../developer/calls.md:58
 msgid ""
-"Once the socket is created and managed by an **IceTransport** instance, "
-"it is then wrapped in a **SipTransport** corresponding to a "
-"*TlsIceTransport*. The main code is located into "
-"`JamiAccount::handlePendingCall()` and the wrapping is done into "
-"`SipTransportBroker::getTlsIceTransport`. Finally, our session is managed"
-" by **TlsSession** in `daemon/src/security/tls_session.cpp` and uses the "
-"GnuTLS library."
+"Once the socket is created and managed by an **IceTransport** instance, it "
+"is then wrapped in a **SipTransport** corresponding to a *TlsIceTransport*. "
+"The main code is located into `JamiAccount::handlePendingCall()` and the "
+"wrapping is done into `SipTransportBroker::getTlsIceTransport`. Finally, our"
+" session is managed by **TlsSession** in "
+"`daemon/src/security/tls_session.cpp` and uses the GnuTLS library."
 msgstr ""
 
 #: ../../../developer/calls.md:60
@@ -653,8 +662,8 @@ msgstr ""
 #: ../../../developer/calls.md:62
 msgid ""
 "The control socket is used to transmit SIP packets, like invites, custom "
-"messages (Jami sends the VCard of your profile on this socket at the "
-"start of the call, or the rotation of the camera), text messages."
+"messages (Jami sends the VCard of your profile on this socket at the start "
+"of the call, or the rotation of the camera), text messages."
 msgstr ""
 
 #: ../../../developer/calls.md:64 ../../../developer/jami-plugins.md:294
@@ -675,8 +684,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:71
 msgid ""
-"Media sockets are SRTP sockets where the key is negotiated through the "
-"TLS Session previously created. **TODO**"
+"Media sockets are SRTP sockets where the key is negotiated through the TLS "
+"Session previously created. **TODO**"
 msgstr ""
 
 #: ../../../developer/calls.md:74
@@ -704,16 +713,15 @@ msgstr ""
 
 #: ../../../developer/calls.md:88
 msgid ""
-"The first part is to negotiate enough media streams.  In fact, every "
-"media stream uses 2 UDP sockets.  We consider three scenarios:"
+"The first part is to negotiate enough media streams.  In fact, every media "
+"stream uses 2 UDP sockets.  We consider three scenarios:"
 msgstr ""
 
 #: ../../../developer/calls.md:91
 msgid ""
-"If it's the host of a conference who wants to add media, there is nothing"
-" more to negotiate, because we already mix the videos into one stream.  "
-"So, we add the new media directly to the video-mixer without "
-"negotiations."
+"If it's the host of a conference who wants to add media, there is nothing "
+"more to negotiate, because we already mix the videos into one stream.  So, "
+"we add the new media directly to the video-mixer without negotiations."
 msgstr ""
 
 #: ../../../developer/calls.md:96
@@ -729,8 +737,8 @@ msgstr ""
 #: ../../../developer/calls.md:101
 msgid ""
 "To make pjsip able to generate more sockets per ICE session, "
-"`PJ_ICE_COMP_BITS` was modified to `5` (which corresponds to `2^5`, so 32"
-" streams)."
+"`PJ_ICE_COMP_BITS` was modified to `5` (which corresponds to `2^5`, so 32 "
+"streams)."
 msgstr ""
 
 #: ../../../developer/calls.md:105
@@ -753,8 +761,8 @@ msgstr ""
 
 #: ../../../developer/calls.md:159
 msgid ""
-"If a call is done with a peer where the daemon's version is < 13.3.0, "
-"multi-stream is not enabled and the old behavior is used (1 video only)."
+"If a call is done with a peer where the daemon's version is < 13.3.0, multi-"
+"stream is not enabled and the old behavior is used (1 video only)."
 msgstr ""
 
 #: ../../../developer/calls.md:163
@@ -763,9 +771,9 @@ msgstr ""
 
 #: ../../../developer/calls.md:165
 msgid ""
-"Because there can be multiple streams now, every media stream is "
-"identified by its identifier, and the format is \"<type>_<idx>\"; for "
-"example: \"audio_0\", \"video_2\", etc."
+"Because there can be multiple streams now, every media stream is identified "
+"by its identifier, and the format is \"<type>_<idx>\"; for example: "
+"\"audio_0\", \"video_2\", etc."
 msgstr ""
 
 #: ../../../developer/calls.md:169
@@ -787,7 +795,7 @@ msgstr ""
 
 #: ../../../developer/calls.md:215
 msgid "Conference"
-msgstr ""
+msgstr "Conférence"
 
 #: ../../../developer/calls.md:217
 msgid "Reflected changes are documented {doc}`here <conference-protocol>`."
@@ -799,17 +807,17 @@ msgstr ""
 
 #: ../../../developer/calls.md:221
 msgid ""
-"Even if the back-end supports up to 32 media at the same time, except for"
-" custom clients we currently recommend only giving the ability to share "
-"one camera and one video at the same time.  The camera is controlled via "
-"the camera button, and the other media via the \"Share\" button."
+"Even if the back-end supports up to 32 media at the same time, except for "
+"custom clients we currently recommend only giving the ability to share one "
+"camera and one video at the same time.  The camera is controlled via the "
+"camera button, and the other media via the \"Share\" button."
 msgstr ""
 
 #: ../../../developer/calls.md:227
 msgid ""
 "In client-qt, the interesting part is in `AvAdapter` (methods like "
-"`isCapturing`, `shareAllScreens`, `stopSharing`).  In the library's "
-"logic, `addMedia` and `removeMedia` in the `callModel` directly use the "
+"`isCapturing`, `shareAllScreens`, `stopSharing`).  In the library's logic, "
+"`addMedia` and `removeMedia` in the `callModel` directly use the "
 "`requestMediaChange` and can be used as a design reference."
 msgstr ""
 
@@ -823,16 +831,15 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:6
 msgid ""
-"This page aims to describe how call will works with groups. This method "
-"will allow clients to provides call for multiple participants with a "
-"shared text history. The protocol must be flexible, keep compatibility "
-"with the SIP stack, adn must work in a distributed environment. This "
-"distributed environment also brings some challenges, such as possible "
-"race conditions (where multiple parties can start a call at the same "
-"time). Finally, because the Swarm can be with members only using mobiles,"
-" or by companies with dedicated servers to mix the video, it should also "
-"be able to work with the best experience possible on heterogeneous "
-"environment."
+"This page aims to describe how call will works with groups. This method will"
+" allow clients to provides call for multiple participants with a shared text"
+" history. The protocol must be flexible, keep compatibility with the SIP "
+"stack, adn must work in a distributed environment. This distributed "
+"environment also brings some challenges, such as possible race conditions "
+"(where multiple parties can start a call at the same time). Finally, because"
+" the Swarm can be with members only using mobiles, or by companies with "
+"dedicated servers to mix the video, it should also be able to work with the "
+"best experience possible on heterogeneous environment."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:8
@@ -841,7 +848,8 @@ msgid "Definitions"
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:10
-msgid "a **Rendezvous** will mix all authorized incoming calls in a conference."
+msgid ""
+"a **Rendezvous** will mix all authorized incoming calls in a conference."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:11
@@ -870,8 +878,8 @@ msgstr ""
 #: ../../../developer/calls-in-swarm.md:17
 msgid ""
 "Note: those two URIs allow the client to place a call in order to join a "
-"*Rendezvous* or to init a call to a swarm, resulting in the logic "
-"described in the next section."
+"*Rendezvous* or to init a call to a swarm, resulting in the logic described "
+"in the next section."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:19
@@ -931,10 +939,10 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:38
 msgid ""
-"When receiving a new incoming call, the URI MUST be parsed. If the "
-"incoming call is for a *Rendezvous* which is currently hosted by the "
-"device and the caller is authorized to join, the call MUST be answered "
-"and added to the current *Rendezvous*"
+"When receiving a new incoming call, the URI MUST be parsed. If the incoming "
+"call is for a *Rendezvous* which is currently hosted by the device and the "
+"caller is authorized to join, the call MUST be answered and added to the "
+"current *Rendezvous*"
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:41
@@ -943,11 +951,11 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:43
 msgid ""
-"To define a default URI, the member who wants to be the host should "
-"update the profile of the conversation, and this will be synced and "
-"validated by peers. However, the host MUST be able to accept or not to be"
-" the host and a member with enough permissions SHOULD be able to ask a "
-"device to be the host. This process is not decided for now."
+"To define a default URI, the member who wants to be the host should update "
+"the profile of the conversation, and this will be synced and validated by "
+"peers. However, the host MUST be able to accept or not to be the host and a "
+"member with enough permissions SHOULD be able to ask a device to be the "
+"host. This process is not decided for now."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:45
@@ -966,8 +974,8 @@ msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:51
 msgid ""
-"Members of the swarm that aren't in a call SHOULD be able to know who is "
-"in the active calls."
+"Members of the swarm that aren't in a call SHOULD be able to know who is in "
+"the active calls."
 msgstr ""
 
 #: ../../../developer/calls-in-swarm.md:53
@@ -977,8 +985,8 @@ msgstr ""
 #: ../../../developer/calls-in-swarm.md:55
 msgid ""
 "Because conferences are still mixed SIP calls, a SIP bridge is still "
-"possible. In the *Swarm's profile* it should be possible to add a SIP "
-"entry, like some popular VoIP systems)"
+"possible. In the *Swarm's profile* it should be possible to add a SIP entry,"
+" like some popular VoIP systems)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:1
@@ -1002,9 +1010,9 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:8
 msgid ""
-"It is not necessary to aim for an optimal quality (CRF < 20) because "
-"beyond that, the visual perception is almost similar while the data flow "
-"(bitrate) required is much higher."
+"It is not necessary to aim for an optimal quality (CRF < 20) because beyond "
+"that, the visual perception is almost similar while the data flow (bitrate) "
+"required is much higher."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:10
@@ -1013,8 +1021,8 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:11
 msgid ""
-"The purpose of this document is to verify the impact of a change in video"
-" quality with the CRF parameter of the encoder."
+"The purpose of this document is to verify the impact of a change in video "
+"quality with the CRF parameter of the encoder."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:13
@@ -1067,16 +1075,16 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:29
 msgid ""
-"Thanks to this test we can estimate the bitrate that will be emitted in "
-"Jami according to the chosen parameters. We also have an overview of the "
-"visual quality."
+"Thanks to this test we can estimate the bitrate that will be emitted in Jami"
+" according to the chosen parameters. We also have an overview of the visual "
+"quality."
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:33
 msgid ""
 "1080p / 300 kbit/s / CRF28 ![image](images/choosing-crf-1080p-300kbps-"
-"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-crf-1080p-"
-"300kbps-crf38.png)"
+"crf28.png) 1080p / 300 kbit/s / CRF38 ![image](images/choosing-"
+"crf-1080p-300kbps-crf38.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:33
@@ -1098,8 +1106,8 @@ msgstr ""
 #: ../../../developer/choosing-crf-value-for-encoder.md:40
 msgid ""
 "1080p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-1080p-1.5mbps-"
-"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-"
-"1080p-1.5mbps-crf30.png)"
+"crf22.png) 1080p / 1.5 Mbit/s / CRF30 ![image](images/choosing-"
+"crf-1080p-1.5mbps-crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:45
@@ -1110,9 +1118,8 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:47
 msgid ""
-"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-"
-"crf17.png)  1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-"
-"6mbps-crf23.png)"
+"1080p / 6 Mbps / CRF17 ![image](images/choosing-crf-1080p-6mbps-crf17.png)  "
+"1080p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-1080p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:52
@@ -1121,23 +1128,22 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:56
 msgid ""
-"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-"
-"crf28.png) 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-"
-"300kbps-crf38.png) Visual comparison (CRF28 left / CRF38 right)"
+"720p / 300 kbps / CRF28 ![image](images/choosing-crf-720p-300kbps-crf28.png)"
+" 720p / 300 kbit/s / CRF38 ![image](images/choosing-crf-720p-300kbps-"
+"crf38.png) Visual comparison (CRF28 left / CRF38 right)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:62
 msgid ""
-"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-"
-"crf22.png) 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) "
-"![image](images/choosing-crf-720p-1.5mbps-crf30.png)"
+"720p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-720p-1.5mbps-crf22.png)"
+" 720p / 1.5 Mbit/s / CRF30 (Test with reduced CRF) ![image](images/choosing-"
+"crf-720p-1.5mbps-crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:69
 msgid ""
 "720p / 6 Mbps / CRF17 ![image](images/choosing-crf-720p-6mbps-crf17.png) "
-"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-"
-"crf23.png)"
+"720p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-720p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:74
@@ -1147,9 +1153,9 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:78
 msgid ""
-"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-"
-"crf28.png) 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-"
-"300kbps-crf38.png)"
+"436p / 300 kbps / CRF28 ![image](images/choosing-crf-436p-300kbps-crf28.png)"
+" 436p / 300 kbit/s / CRF38 ![image](images/choosing-crf-436p-300kbps-"
+"crf38.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:83
@@ -1158,16 +1164,15 @@ msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:85
 msgid ""
-"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-"
-"crf22.png) 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1"
-".5mbps-crf30.png)"
+"436p / 1.5 Mbps / CRF22 ![image](images/choosing-crf-436p-1.5mbps-crf22.png)"
+" 436p / 1.5 Mbit/s / CRF30 ![image](images/choosing-crf-436p-1.5mbps-"
+"crf30.png)"
 msgstr ""
 
 #: ../../../developer/choosing-crf-value-for-encoder.md:92
 msgid ""
 "436p / 6 Mbps / CRF17 ![image](images/choosing-crf-436p-6mbps-crf17.png) "
-"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-"
-"crf23.png)"
+"436p / 6 Mbit/s / CRF23 ![image](images/choosing-crf-436p-6mbps-crf23.png)"
 msgstr ""
 
 #: ../../../developer/coding-style.md:1
@@ -1183,8 +1188,7 @@ msgstr ""
 #: ../../../developer/coding-style.md:7
 msgid ""
 "C++ format rules are defined by this clang-format file: "
-"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-"
-"format"
+"https://git.jami.net/savoirfairelinux/jami-daemon/blob/master/.clang-format"
 msgstr ""
 
 #: ../../../developer/coding-style.md:10
@@ -1201,10 +1205,10 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:3
 msgid ""
 "This document aims to describe the evolutions we will do for managing "
-"conferences (audio/video). The goal is to improve the current "
-"implementation which simply merges SIP calls and provide a grid view, to "
-"a view where participants are listed, can be muted independently, or the "
-"video layout changed (to show only one participant)"
+"conferences (audio/video). The goal is to improve the current implementation"
+" which simply merges SIP calls and provide a grid view, to a view where "
+"participants are listed, can be muted independently, or the video layout "
+"changed (to show only one participant)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:7
@@ -1222,8 +1226,8 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:12
 msgid ""
 "This document only describes the first steps for now. This means the "
-"identification of participants and position in the video mixer sent to "
-"all participants."
+"identification of participants and position in the video mixer sent to all "
+"participants."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:14
@@ -1235,7 +1239,8 @@ msgid "GRID: Every member is shown with the same height/width"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:17
-msgid "ONE_BIG_WITH_SMALL: One member is zoomed and the other preview is shown"
+msgid ""
+"ONE_BIG_WITH_SMALL: One member is zoomed and the other preview is shown"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:18
@@ -1249,15 +1254,16 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:38
-#: ../../../developer/conference-protocol.md:95 ../../../developer/swarm.md:490
+#: ../../../developer/conference-protocol.md:95
+#: ../../../developer/swarm.md:490
 msgid "Implementation"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:40
 msgid ""
 "The implementation is pretty straightforward. Everything is managed by "
-"`conference.cpp` (to link participant to sources) and `video_mixer.cpp` "
-"(to render the wanted layout)."
+"`conference.cpp` (to link participant to sources) and `video_mixer.cpp` (to "
+"render the wanted layout)."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:43
@@ -1267,22 +1273,22 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:45
 msgid ""
 "Note: Actually, the word participant is used for callId mixed in a "
-"conference. This can lead at first to some problems for the API and must "
-"be fixed in the future"
+"conference. This can lead at first to some problems for the API and must be "
+"fixed in the future"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:47
 msgid ""
 "The goal is to notify all participants of the metadata of the rendered "
-"video. This means what participant is in the conference and where the "
-"video is located."
+"video. This means what participant is in the conference and where the video "
+"is located."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:49
 msgid ""
-"If a participant is itself a conference, its incoming layout info should "
-"be merged when sent to other participants. Layout info must not be merged"
-" when sent back to a conference."
+"If a participant is itself a conference, its incoming layout info should be "
+"merged when sent to other participants. Layout info must not be merged when "
+"sent back to a conference."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:51
@@ -1291,8 +1297,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:53
 msgid ""
-"The Layout is stored as a VectorMapStringString for clients and "
-"internally with a vector<ParticipantInfo> with the following format:"
+"The Layout is stored as a VectorMapStringString for clients and internally "
+"with a vector<ParticipantInfo> with the following format:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:67
@@ -1365,16 +1371,16 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:87
 msgid ""
-"A new method (in CallManager) and a new signal to respectively get "
-"current conference infos and updates are available:"
+"A new method (in CallManager) and a new signal to respectively get current "
+"conference infos and updates are available:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:97
 msgid ""
-"The `Conference` Object (which only exists if we mix calls, this means "
-"that we are the master) manages the information for the whole conference,"
-" based on the LayoutInfos of each `Call` object. The getConferenceInfos "
-"will retrieve info directly from this object."
+"The `Conference` Object (which only exists if we mix calls, this means that "
+"we are the master) manages the information for the whole conference, based "
+"on the LayoutInfos of each `Call` object. The getConferenceInfos will "
+"retrieve info directly from this object."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:99
@@ -1385,14 +1391,14 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:101
 msgid ""
-"The master of a conference sends its info via the SIP channel as a "
-"message with the following MIME type: `application/confInfo+json`"
+"The master of a conference sends its info via the SIP channel as a message "
+"with the following MIME type: `application/confInfo+json`"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:104
 msgid ""
-"So, if a call receives some confInfo, we know that this call is a member "
-"of a conference."
+"So, if a call receives some confInfo, we know that this call is a member of "
+"a conference."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:106
@@ -1417,8 +1423,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:114
 msgid ""
-"It should handle orders at multiple levels. In fact for a conference the "
-"is 3 levels to define a participant:"
+"It should handle orders at multiple levels. In fact for a conference the is "
+"3 levels to define a participant:"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:115
@@ -1431,12 +1437,13 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:117
 msgid ""
-"Medias, because there can be multiple videos by devices (eg 1 camera and "
-"1 screen sharing)"
+"Medias, because there can be multiple videos by devices (eg 1 camera and 1 "
+"screen sharing)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:119
-msgid "To save bandwidth, clients should be able to send multiple orders at once."
+msgid ""
+"To save bandwidth, clients should be able to send multiple orders at once."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:121
@@ -1446,8 +1453,8 @@ msgstr ""
 #: ../../../developer/conference-protocol.md:123
 msgid ""
 "To change a layout, the moderator can send a payload with "
-"\"application/confOrder+json\" as type: where **0** is a grid, **1** is "
-"one user in big, others in small, **2** is one in big"
+"\"application/confOrder+json\" as type: where **0** is a grid, **1** is one "
+"user in big, others in small, **2** is one in big"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:126
@@ -1456,8 +1463,8 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:128
 msgid ""
-"For now, there is no action supported, however, in the future `moderator:"
-" true/false` should be handled to change a moderator."
+"For now, there is no action supported, however, in the future `moderator: "
+"true/false` should be handled to change a moderator."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:130
@@ -1465,13 +1472,14 @@ msgid "Device's actions"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:132
-msgid "`hangup: true` to hangup a device from the conference (only moderators)"
+msgid ""
+"`hangup: true` to hangup a device from the conference (only moderators)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:133
 msgid ""
-"`raisehand: true/false` to change the raise hand's status. Only doable by"
-" the device itself, else dropped."
+"`raisehand: true/false` to change the raise hand's status. Only doable by "
+"the device itself, else dropped."
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:135
@@ -1479,7 +1487,8 @@ msgid "Media's actions"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:137
-msgid "`muteAudio` only doable by moderators to mute the audio of a participant"
+msgid ""
+"`muteAudio` only doable by moderators to mute the audio of a participant"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:138
@@ -1492,12 +1501,12 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:140
 msgid ""
-"`voiceActivity` to indiciate a media stream's voice activity status (only"
-" relevant for audio)"
+"`voiceActivity` to indiciate a media stream's voice activity status (only "
+"relevant for audio)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:142
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Example"
 msgstr ""
 
@@ -1507,9 +1516,9 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:169
 msgid ""
-"Note: the type of the media should be included in conferences "
-"informations and can be used for the client to improve display (e.g. do "
-"not crop screen sharing)"
+"Note: the type of the media should be included in conferences informations "
+"and can be used for the client to improve display (e.g. do not crop screen "
+"sharing)"
 msgstr ""
 
 #: ../../../developer/conference-protocol.md:172
@@ -1548,9 +1557,9 @@ msgstr ""
 
 #: ../../../developer/conference-protocol.md:186
 msgid ""
-"It's likely that the protocol will evolve for future needs. I believe "
-"it's best if we have a \"version\" field. The older version will be "
-"recognized if this field is missing."
+"It's likely that the protocol will evolve for future needs. I believe it's "
+"best if we have a \"version\" field. The older version will be recognized if"
+" this field is missing."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:1
@@ -1566,21 +1575,20 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:6
 msgid ""
-"The connection manager is the first piece of the group chat features. "
-"This class manages connections to peers and offer to the user multiplexed"
-" sockets to devices they want to connect. For example, if Alice wants to "
-"be connected to one of Bob's device to transfer 2 files, she will ask the"
-" ConnectionManager to open 2 channels (one per file) to Bob. This will "
-"give:"
+"The connection manager is the first piece of the group chat features. This "
+"class manages connections to peers and offer to the user multiplexed sockets"
+" to devices they want to connect. For example, if Alice wants to be "
+"connected to one of Bob's device to transfer 2 files, she will ask the "
+"ConnectionManager to open 2 channels (one per file) to Bob. This will give:"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:24
 msgid ""
-"Behind that, the ConnectionManager will first connect to Bob's device via"
-" the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a "
-"channel, and when the channel is ready, inform Alice via a callback. For "
-"the second file, it will use the first socket and will just open a new "
-"channel (only needs 2 TLS packet, so it's fast)"
+"Behind that, the ConnectionManager will first connect to Bob's device via "
+"the DHT (via ICE) and setup a TLS Socket. Then, it will ask for a channel, "
+"and when the channel is ready, inform Alice via a callback. For the second "
+"file, it will use the first socket and will just open a new channel (only "
+"needs 2 TLS packet, so it's fast)"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:26
@@ -1595,8 +1603,8 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:30
 msgid ""
-"However, when a side receives a new ICE request, the callback set by ` "
-"void onICERequest(onICERequestCallback&& cb);` is triggered."
+"However, when a side receives a new ICE request, the callback set by ` void "
+"onICERequest(onICERequestCallback&& cb);` is triggered."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:32
@@ -1605,15 +1613,14 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:34
 msgid ""
-"A channel is defined by an id (unique) and a uri (not unique). For "
-"example (1, 'git://*')"
+"A channel is defined by an id (unique) and a uri (not unique). For example "
+"(1, 'git://*')"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:36
 msgid ""
-"When ready, the ConnectionManager considers that the channel 0 exists. "
-"This channel is called the *CONTROL* channel and is used to ask for new "
-"channels."
+"When ready, the ConnectionManager considers that the channel 0 exists. This "
+"channel is called the *CONTROL* channel and is used to ask for new channels."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:38
@@ -1638,15 +1645,14 @@ msgstr ""
 
 #: ../../../developer/connection-manager.md:46
 msgid ""
-"To ask for a new channel, the ConnectionManager will send a "
-"`ChannelRequest` object (msgpack is used to serialize the struct) in the "
-"channel 0 to send the id and the name of the new channel to the peer "
-"(with `isAnswer = false`). The peer will call the callback given with ̀"
-"    void onChannelRequest(ChannelRequestCallBack&& cb);` and will refuse "
-"or accept the request. If accepted, the peer will answer with a "
-"ChannelRequest with the same data (and ̀`isAnswer = true`) and then both "
-"peers callbacks will be triggered to inform that the ChannelSock is "
-"usable."
+"To ask for a new channel, the ConnectionManager will send a `ChannelRequest`"
+" object (msgpack is used to serialize the struct) in the channel 0 to send "
+"the id and the name of the new channel to the peer (with `isAnswer = "
+"false`). The peer will call the callback given with ̀    void "
+"onChannelRequest(ChannelRequestCallBack&& cb);` and will refuse or accept "
+"the request. If accepted, the peer will answer with a ChannelRequest with "
+"the same data (and ̀`isAnswer = true`) and then both peers callbacks will be"
+" triggered to inform that the ChannelSock is usable."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:48
@@ -1654,7 +1660,8 @@ msgid "Closing a channel"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:50
-msgid "A *EOF* is transmitted for a channel if the length of the content is 0."
+msgid ""
+"A *EOF* is transmitted for a channel if the length of the content is 0."
 msgstr ""
 
 #: ../../../developer/connection-manager.md:52
@@ -1676,7 +1683,8 @@ msgid "The ConnectionManager owns MultiplexedSockets and ICE objects"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:58
-msgid "MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
+msgid ""
+"MultiplexedSockets owns the TLS transport and the ChannelSocket objects"
 msgstr ""
 
 #: ../../../developer/connection-manager.md:59
@@ -1717,10 +1725,9 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:4
 msgid ""
-"This section will present how to find and add a contact from the DHT to "
-"the client. The usage of a name server will not be explained here.  If "
-"you'd like more details about that, please read {doc}`name-server-"
-"protocol`."
+"This section will present how to find and add a contact from the DHT to the "
+"client. The usage of a name server will not be explained here.  If you'd "
+"like more details about that, please read {doc}`name-server-protocol`."
 msgstr ""
 
 #: ../../../developer/contact-management.md:6
@@ -1733,22 +1740,21 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:10
 msgid ""
-"The presence is pretty simple to announce on the DHT. In fact, it's just "
-"a value containing the device hash (see the previous section, {doc"
-"}`account-management`) on the hash corresponding to the fingerprint of "
-"the key. So, if we have the account "
-"`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the device "
-"`62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined value "
-"will be sent over the DHT:"
+"The presence is pretty simple to announce on the DHT. In fact, it's just a "
+"value containing the device hash (see the previous section, {doc}`account-"
+"management`) on the hash corresponding to the fingerprint of the key. So, if"
+" we have the account `bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` with the "
+"device `62fbdff0ce86f368c7d3c2682539e5ba9e06404f`, the following defined "
+"value will be sent over the DHT:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:29
 msgid ""
 "(This value can be put with `dht_.put(h, VALUE, dht::DoneCallback{}, {}, "
 "true);`, as a permanent put). If the device is announced, the device is "
-"present. For now, there is no way to delete or edit a value on the DHT "
-"(this will come when OpenDHT will supports ECC). So, the presence always "
-"have a delay for now (mean delay: expire-time/2, so 2min30 for now)."
+"present. For now, there is no way to delete or edit a value on the DHT (this"
+" will come when OpenDHT will supports ECC). So, the presence always have a "
+"delay for now (mean delay: expire-time/2, so 2min30 for now)."
 msgstr ""
 
 #: ../../../developer/contact-management.md:31
@@ -1757,13 +1763,13 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:33
 msgid ""
-"Now our presence on the network, it's time to get if somebody is present "
-"on the DHT. With the previous section, it's easy to do the reverse "
-"process. To know if somebody is present on the DHT (ex: "
+"Now our presence on the network, it's time to get if somebody is present on "
+"the DHT. With the previous section, it's easy to do the reverse process. To "
+"know if somebody is present on the DHT (ex: "
 "`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9`), we have to get value at "
 "`bf5f1e21d3eb2c1246946aa49d5dcf3e5b9cb1b9` and retrieve the "
-"`DeviceAnnouncement` on this hash. The related code in the ring daemon is"
-" in `ringaccount.cpp`:"
+"`DeviceAnnouncement` on this hash. The related code in the ring daemon is in"
+" `ringaccount.cpp`:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:66
@@ -1784,8 +1790,8 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:74
 msgid ""
-"Finally, once the trust request is crafted, we can push the request to "
-"the following hash: `InfoHash(\"inbox:\" + deviceId)`"
+"Finally, once the trust request is crafted, we can push the request to the "
+"following hash: `InfoHash(\"inbox:\" + deviceId)`"
 msgstr ""
 
 #: ../../../developer/contact-management.md:76
@@ -1812,14 +1818,14 @@ msgstr ""
 
 #: ../../../developer/contact-management.md:120
 msgid ""
-"All methods and signals used to manage trust requests and contacts are in"
-" the `ConfigurationManager` such as:"
+"All methods and signals used to manage trust requests and contacts are in "
+"the `ConfigurationManager` such as:"
 msgstr ""
 
 #: ../../../developer/contact-management.md:212
 msgid ""
-"If you want some examples, these methods are used into `contactmodel.cpp`"
-" in LRC."
+"If you want some examples, these methods are used into `contactmodel.cpp` in"
+" LRC."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:1
@@ -1836,8 +1842,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:7
 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 "
+"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!"
@@ -1855,8 +1861,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:14
 msgid ""
-"An example of how to create your own base plugin with our SDK - [#Create "
-"my first plugin](#create-my-first-plugin)."
+"An example of how to create your own base plugin with our SDK - [#Create my "
+"first plugin](#create-my-first-plugin)."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:16
@@ -1865,18 +1871,18 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:17
 msgid ""
-"We developped a Plugin System for Jami and we have a few plugins "
-"available to be used. However as an open source project, we now desire "
-"users to be able to create, use, and distribute their own plugins. To "
-"achieve that goal, we also developped a Jami Plugins SDK. This kit is "
-"fully writen in python, and can be invoked running [pluginMainSDK.py]('')"
-" from `<plugins>` folder. To get started you must:"
+"We developped a Plugin System for Jami and we have a few plugins available "
+"to be used. However as an open source project, we now desire users to be "
+"able to create, use, and distribute their own plugins. To achieve that goal,"
+" we also developped a Jami Plugins SDK. This kit is fully writen in python, "
+"and can be invoked running [pluginMainSDK.py]('') from `<plugins>` folder. "
+"To get started you must:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:32
 msgid ""
-"You will notice that this script will generate a Jami Plugins SDK shell "
-"that allows users to:"
+"You will notice that this script will generate a Jami Plugins SDK shell that"
+" allows users to:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:34
@@ -1930,8 +1936,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:48
 msgid ""
-"This option performs a sequence of actions to properly create all base "
-"files needed to start a plugin development. The steps are:"
+"This option performs a sequence of actions to properly create all base files"
+" needed to start a plugin development. The steps are:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:50
@@ -1964,13 +1970,13 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:58
 msgid ""
-"If all is completed successfully, the plugin may be build, installed, and"
-" loaded. Also the functionallities may be toggled, however, since their "
-"data processes are not implemented, they will perform no action. In our "
+"If all is completed successfully, the plugin may be build, installed, and "
+"loaded. Also the functionallities may be toggled, however, since their data "
+"processes are not implemented, they will perform no action. In our "
 "`HelloWorld` plugin, we implement a simple process using **OpenCV**. For "
 "more complex options, you can refer to our available plugins at {gitlab-"
-"project}`jami-plugins`. Feel free to implement any ideas you may have, "
-"but you should respect those constrains:"
+"project}`jami-plugins`. Feel free to implement any ideas you may have, but "
+"you should respect those constrains:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:59
@@ -1995,17 +2001,16 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:64
 msgid ""
-"if you need other libraries, check if we support it's build with jami-"
-"daemon project, otherwise, you will have to build it and ensure correct "
-"link to the plugin libraries."
+"if you need other libraries, check if we support it's build with jami-daemon"
+" project, otherwise, you will have to build it and ensure correct link to "
+"the plugin libraries."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:67
 msgid ""
 "To fully create a basic plugin with pre-implementation of desired "
-"functionalities APIs, preferences, package, manifest, main file, and "
-"basic build related files, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"functionalities APIs, preferences, package, manifest, main file, and basic "
+"build related files, from inside Jami Plugins SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:72
@@ -2015,8 +2020,7 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:215
 #: ../../../developer/creating-jami-plugins.md:263
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task."
+"The SDK will ask other informations needed to correctly accomplish the task."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:74
@@ -2025,18 +2029,18 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:75
 msgid ""
-"Every plugin must have a manifest. This file contains the official name, "
-"a description, and carries the plugin build version as in the example "
-"bellow. Without it, the plugin system will not be able to find the plugin"
-" library it should load. Due to it's importance, every time Jami Plugin "
-"SDK is told to create files to a non existing plugin or to a plugin with "
-"no manifest, it will first create a new manifest."
+"Every plugin must have a manifest. This file contains the official name, a "
+"description, and carries the plugin build version as in the example bellow. "
+"Without it, the plugin system will not be able to find the plugin library it"
+" should load. Due to it's importance, every time Jami Plugin SDK is told to "
+"create files to a non existing plugin or to a plugin with no manifest, it "
+"will first create a new manifest."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:85
 msgid ""
-"To create/modify (or to delete) a manifest.json, from inside Jami Plugins"
-" SDK shell, the user must call:"
+"To create/modify (or to delete) a manifest.json, from inside Jami Plugins "
+"SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:92
@@ -2045,11 +2049,11 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:93
 msgid ""
-"Jami currently supports plugins for GNU/Linux, Android and Windows. For "
-"the latter, the build system used is the same as for Jami, it is, we call"
-" the plugin build using a python script. This script will look for a "
-"`package.json` file to aquire build informations and commands. Without "
-"this file our build pipeline for Windows will not work."
+"Jami currently supports plugins for GNU/Linux, Android and Windows. For the "
+"latter, the build system used is the same as for Jami, it is, we call the "
+"plugin build using a python script. This script will look for a "
+"`package.json` file to aquire build informations and commands. Without this "
+"file our build pipeline for Windows will not work."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:95
@@ -2066,30 +2070,28 @@ msgstr ""
 msgid ""
 "`extractLibs` indicates to the build system if the files under `<jami-"
 "plugins>/contrib/libs.tar.gz` will be used. This archive contains header "
-"files for **Tensorflow**. Thus, you only need to set `extractLibs` to "
-"true if you plan to use this library."
+"files for **Tensorflow**. Thus, you only need to set `extractLibs` to true "
+"if you plan to use this library."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:98
 msgid ""
 "To play with audio or video, the plugin is dependent of **ffmpeg**. By "
 "adding it to `deps`, the build system will automatically compile this "
-"library from `<jami-daemon>/contrib` if needed. We also provide "
-"**OpenCV** build from inside `<jami-daemon>/contrib` ! If you want to use"
-" Tensorflow, we provide built libraries for GNU/Linux and Android with "
-"our docker images "
-"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-"
-"cuda) and "
+"library from `<jami-daemon>/contrib` if needed. We also provide **OpenCV** "
+"build from inside `<jami-daemon>/contrib` ! If you want to use Tensorflow, "
+"we provide built libraries for GNU/Linux and Android with our docker images "
+"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-cuda)"
+" and "
 "[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflowlite)."
 " For more information about OpenCV and Tensorflow build, please refer to "
-"{doc}`jami-plugins` technical documentation. There we have a step-by-"
-"step!"
+"{doc}`jami-plugins` technical documentation. There we have a step-by-step!"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:101
 msgid ""
-"If you're using cmake, your can set configuration definition in `defines`"
-" property. Exemple: if your configuration line is of the form `cmake "
+"If you're using cmake, your can set configuration definition in `defines` "
+"property. Exemple: if your configuration line is of the form `cmake "
 "-DCPU=TRUE ..` you may set `\"defines\": [\"CPU=TRUE\"]`."
 msgstr ""
 
@@ -2099,21 +2101,21 @@ msgid ""
 "`custom_scripts`. Bellow we create the build folder to with the plugins "
 "project will be configured with `mkdir msvc` and we also set the build "
 "command as `cmake --build ./msvc --config Release`. Our example "
-"CMakeLists.txt may have pre and post build instruction that are not "
-"listed here."
+"CMakeLists.txt may have pre and post build instruction that are not listed "
+"here."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:125
 msgid ""
-"To create a package.json, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"To create a package.json, from inside Jami Plugins SDK shell, the user must "
+"call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:130
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. After the base package.json creation, the user must add or modify "
-"any information not previewed by the SDK process."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" After the base package.json creation, the user must add or modify any "
+"information not previewed by the SDK process."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:132
@@ -2122,37 +2124,36 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:133
 msgid ""
-"A preference is a internal variable that will be used upon loading or "
-"while running the plugin. There is limited types of preferences supported"
-" by the plugin system and each of them must contain generic and specific "
-"informations. Those informations must be placed under a certain structure"
-" that will form one preference and each preference must be listed inside "
-"a `preference.json` file."
+"A preference is a internal variable that will be used upon loading or while "
+"running the plugin. There is limited types of preferences supported by the "
+"plugin system and each of them must contain generic and specific "
+"informations. Those informations must be placed under a certain structure "
+"that will form one preference and each preference must be listed inside a "
+"`preference.json` file."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:136
 msgid ""
 "The generic properties of a preference are those that must be set by any "
 "type of preference: `category`, `type`, `key`, `title`, `summary`, "
-"`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 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 from `entries` to be shown as 'names' for each "
-"one of these `entryValues`. Then you can call '0' and '1' as 'sent' and "
-"'received'. The UI will show these names that are more user friendly! It "
-"is important to note that `entries` and `entryValues` must have the same "
-"number of items."
+"`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 "
+"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"
+" from `entries` to be shown as 'names' for each one of these `entryValues`. "
+"Then you can call '0' and '1' as 'sent' and 'received'. The UI will show "
+"these names that are more user friendly! It is important to note that "
+"`entries` and `entryValues` must have the same number of items."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:145
 msgid ""
-"Another important point to be noted for the preferences is that their "
-"values could be modified during runtime if, and only if, two conditions "
-"are satisfied:"
+"Another important point to be noted for the preferences is that their values"
+" could be modified during runtime if, and only if, two conditions are "
+"satisfied:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:147
@@ -2167,31 +2168,29 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:150
 msgid ""
-"To better explain, we have to detail what is a scope and how a preference"
-" changement is implemented inside the plugin."
+"To better explain, we have to detail what is a scope and how a preference "
+"changement is implemented inside the plugin."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:152
 msgid ""
-"**Scope**: A scope is a list of functionalities that can modify a "
-"preference value even if the functionality is under use. It is, imagine "
-"you have a functionality called \"Circle\" that prints a colored circle "
-"to your video. Consider also that the color of that circle is set by a "
-"preference and that this preference lists \"Circle\" as one of it's "
-"scopes. In that scenario \"Circle\" will be able to modify the default "
-"circle color to another one."
+"**Scope**: A scope is a list of functionalities that can modify a preference"
+" value even if the functionality is under use. It is, imagine you have a "
+"functionality called \"Circle\" that prints a colored circle to your video. "
+"Consider also that the color of that circle is set by a preference and that "
+"this preference lists \"Circle\" as one of it's scopes. In that scenario "
+"\"Circle\" will be able to modify the default circle color to another one."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:153
 msgid ""
-"**Code implementation**: Continuing our example above, \"Circle\" also is"
-" the implementation of an abstract API class from Daemon (for more "
-"details check [#Create functionality](#create-functionality). When a user"
-" changes a preference value, the plugin system will call the "
-"`setPreferenceAttribute` implementation for each of the functionalities "
-"listed by the preference's scope. By it's turn, this function will match "
-"the preference unique `key` and call an internal function to apply the "
-"new value."
+"**Code implementation**: Continuing our example above, \"Circle\" also is "
+"the implementation of an abstract API class from Daemon (for more details "
+"check [#Create functionality](#create-functionality). When a user changes a "
+"preference value, the plugin system will call the `setPreferenceAttribute` "
+"implementation for each of the functionalities listed by the preference's "
+"scope. By it's turn, this function will match the preference unique `key` "
+"and call an internal function to apply the new value."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:155
@@ -2201,25 +2200,25 @@ msgid ""
 "[pluginMediaHandler.cpp](https://git.jami.net/savoirfairelinux/jami-"
 "plugins/blob/master/GreenScreen/pluginMediaHandler.cpp) and [preferences-"
 "onnx.json](https://git.jami.net/savoirfairelinux/jami-"
-"plugins/blob/master/GreenScreen/preferences-onnx.json). This plugin has "
-"both `LIST` and `PATH` preferences and also has one preference that can "
-"be modified during runtime. Can you tell wich one?"
+"plugins/blob/master/GreenScreen/preferences-onnx.json). This plugin has both"
+" `LIST` and `PATH` preferences and also has one preference that can be "
+"modified during runtime. Can you tell wich one?"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:157
 msgid ""
-"To create (or delete) a preference, from inside Jami Plugins SDK shell, "
-"the user must call:"
+"To create (or delete) a preference, from inside Jami Plugins SDK shell, the "
+"user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:162
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. If a preference is created from outside a functionality creation "
-"pipeline, any API implementation will not be changed in order to avoid "
-"overwrittings. Thus, if you want to allow values changement during "
-"runtime, you may need to manually modify your functionality "
-"implementation to fit running time changements conditions."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" If a preference is created from outside a functionality creation pipeline, "
+"any API implementation will not be changed in order to avoid overwrittings. "
+"Thus, if you want to allow values changement during runtime, you may need to"
+" manually modify your functionality implementation to fit running time "
+"changements conditions."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:164
@@ -2229,28 +2228,27 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:165
 msgid ""
 "A Jami plugin may wrap one or multiple functionalities. It is, the same "
-"plugins may have a functionality to change background and to draw a "
-"circle to a video for example. Each functionality must implement an "
-"abstract API class defined by Jami plugins System. That way, we can say "
-"that one functionality is one implementation of an API. Currently we have"
-" the `MediaHandler` which allows access to audio or video frames and we "
-"have `ChatHandler` which allows acces to messages exchanged in a "
-"conversation."
+"plugins may have a functionality to change background and to draw a circle "
+"to a video for example. Each functionality must implement an abstract API "
+"class defined by Jami plugins System. That way, we can say that one "
+"functionality is one implementation of an API. Currently we have the "
+"`MediaHandler` which allows access to audio or video frames and we have "
+"`ChatHandler` which allows acces to messages exchanged in a conversation."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:169
 msgid ""
-"When defining a new a functionality, the SDK will create basic header and"
-" cpp files for you work on. However, your new functionality can not be "
-"added to the scopes of a previously existing preference. For more "
-"information, please refer to [Create or delete a preference](#create-or-"
-"delete-a-preference)."
+"When defining a new a functionality, the SDK will create basic header and "
+"cpp files for you work on. However, your new functionality can not be added "
+"to the scopes of a previously existing preference. For more information, "
+"please refer to [Create or delete a preference](#create-or-delete-a-"
+"preference)."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:172
 msgid ""
-"To create a functionality, from inside Jami Plugins SDK shell, the user "
-"must call:"
+"To create a functionality, from inside Jami Plugins SDK shell, the user must"
+" call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:179
@@ -2259,9 +2257,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:180
 msgid ""
-"This option create plugin's `main.cpp`. A file that implements the plugin"
-" external loading function that Jami Plugin System will call to "
-"initialize and register all functionalities for latter use."
+"This option create plugin's `main.cpp`. A file that implements the plugin "
+"external loading function that Jami Plugin System will call to initialize "
+"and register all functionalities for latter use."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:183
@@ -2273,8 +2271,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:186
 msgid ""
-"To create a `main.cpp`, from inside Jami Plugins SDK shell, the user must"
-" call:"
+"To create a `main.cpp`, from inside Jami Plugins SDK shell, the user must "
+"call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:193
@@ -2284,9 +2282,9 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:194
 msgid ""
 "The final plugin file is an archive compressed to a `JPL` format. This "
-"archive contains libraries, manifest.json, preferences.json, icons and "
-"other custom important files for your plugin. OBS.: files added by the "
-"developper must be organized under the `data/` folder."
+"archive contains libraries, manifest.json, preferences.json, icons and other"
+" custom important files for your plugin. OBS.: files added by the developper"
+" must be organized under the `data/` folder."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:197
@@ -2295,25 +2293,24 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:199
 msgid ""
-"it creates a build folder and copies there all files that will be "
-"compressed to the final plugin archive. For linux host: "
-"`<plugins>/<HelloWorld>/build-local/jpl/` and for a windows host: "
-"`<plugins>/<HelloWorld>/msvc/jpl/`;"
+"it creates a build folder and copies there all files that will be compressed"
+" to the final plugin archive. For linux host: `<plugins>/<HelloWorld>/build-"
+"local/jpl/` and for a windows host: `<plugins>/<HelloWorld>/msvc/jpl/`;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:200
 msgid ""
-"it compresses all files inside the build folder to the jpl archive wich "
-"is output under `<plugins>/build`."
+"it compresses all files inside the build folder to the jpl archive wich is "
+"output under `<plugins>/build`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:202
 msgid ""
-"Both process should be called from inside the CMakeLists.txt as "
-"POST_BUILD and PRE_BUILD commands, respectively. Also, the build.sh "
-"script should call them. For more information about CMakeLists.txt and "
-"build.sh files, please refere to [build](#build) and to our available "
-"plugins at {gitlab-project}`jami-plugins`."
+"Both process should be called from inside the CMakeLists.txt as POST_BUILD "
+"and PRE_BUILD commands, respectively. Also, the build.sh script should call "
+"them. For more information about CMakeLists.txt and build.sh files, please "
+"refere to [build](#build) and to our available plugins at {gitlab-"
+"project}`jami-plugins`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:205
@@ -2348,29 +2345,29 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:223
 msgid ""
-"A description of thes CMakeLists.txt and buils.sh files are found further"
-" in this section."
+"A description of thes CMakeLists.txt and buils.sh files are found further in"
+" this section."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:225
 msgid ""
-"To create basic CMakeLists.txt and buils.sh files, from inside Jami "
-"Plugins SDK shell, the user must call:"
+"To create basic CMakeLists.txt and buils.sh files, from inside Jami Plugins "
+"SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:230
 msgid ""
-"To build plugin library with default configuration, from inside Jami "
-"Plugins SDK shell, the user must call:"
+"To build plugin library with default configuration, from inside Jami Plugins"
+" SDK shell, the user must call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:235
 msgid ""
-"The SDK will ask other informations needed to correctly accomplish the "
-"task. For the moment, the build option does not support cross-compilation"
-" neither non default builds. If you have build variables to be set "
-"differently than the default option, please directly use the `<plugins"
-">/build-plugin.py` script."
+"The SDK will ask other informations needed to correctly accomplish the task."
+" For the moment, the build option does not support cross-compilation neither"
+" non default builds. If you have build variables to be set differently than "
+"the default option, please directly use the `<plugins>/build-plugin.py` "
+"script."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:237
@@ -2383,25 +2380,24 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:240
 msgid ""
-"If you need to pass any defines to cmake generation, your definitions can"
-" be in `package.json` as explained in the package section. The "
-"package.json created specifies the default configuration that calling the"
-" build from Jami Plugins SDK will consider. If you want to build with no "
-"default configuration, you can: directly use the script mentioned above "
-"and pass non-default definitions as an argument or; you also can manually"
-" change your package.json file. For examples, you can refer to our "
-"available plugins at {gitlab-project}`jami-plugins`."
+"If you need to pass any defines to cmake generation, your definitions can be"
+" in `package.json` as explained in the package section. The package.json "
+"created specifies the default configuration that calling the build from Jami"
+" Plugins SDK will consider. If you want to build with no default "
+"configuration, you can: directly use the script mentioned above and pass "
+"non-default definitions as an argument or; you also can manually change your"
+" package.json file. For examples, you can refer to our available plugins at "
+"{gitlab-project}`jami-plugins`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:243
 msgid ""
 "Another important information about CMakeLists.txt is that it has to add "
-"custom commands. For PRE_BUILD, it must call the pre-assemble "
-"functionality process. For POST_BUILD, it must copy the built library to "
-"the build folder and call the assemble functionality process. In the end,"
-" your jpl archive may be found under `<plugins>/build`. The "
-"CMakeLists.txt file automatically created by our SDK, already respects "
-"these constraints."
+"custom commands. For PRE_BUILD, it must call the pre-assemble functionality "
+"process. For POST_BUILD, it must copy the built library to the build folder "
+"and call the assemble functionality process. In the end, your jpl archive "
+"may be found under `<plugins>/build`. The CMakeLists.txt file automatically "
+"created by our SDK, already respects these constraints."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:245
@@ -2416,26 +2412,26 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:248
 msgid ""
-"The basic script consider the environment variable `DAEMON` that must "
-"point to the jami-daemon folder. Besides, you can pass an argument for "
-"the platform used like `-t android` if you want to cross-compile for "
-"Android. Further custom definitions and environment variables should be "
-"handled by the plugin developper. If you want to build with no default "
-"configuration, you can modify the environment variables values and then "
-"call the build. Ie: for android, you can set which ABI you want to build "
-"with `export ANDROID_ABI=\"arm64-v8a armeabi-v7a`. For other examples, "
-"you can refer to our {doc}`technical documentation <jami-plugins>` and to"
-" our {gitlab-project}`available plugins <jami-plugins>`."
+"The basic script consider the environment variable `DAEMON` that must point "
+"to the jami-daemon folder. Besides, you can pass an argument for the "
+"platform used like `-t android` if you want to cross-compile for Android. "
+"Further custom definitions and environment variables should be handled by "
+"the plugin developper. If you want to build with no default configuration, "
+"you can modify the environment variables values and then call the build. Ie:"
+" for android, you can set which ABI you want to build with `export "
+"ANDROID_ABI=\"arm64-v8a armeabi-v7a`. For other examples, you can refer to "
+"our {doc}`technical documentation <jami-plugins>` and to our {gitlab-"
+"project}`available plugins <jami-plugins>`."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:253
 msgid ""
-"Another important information about build.sh is that it has to call pre "
-"and post assemble. Before the build, it must call the pre-assemble "
-"functionality process. After it, it must copy the built library to the "
-"build folder and call the assemble functionality process. In the end, "
-"your jpl archive may be found under `<plugins>/build`. The build.sh file "
-"automatically created by our SDK, already respects these constraints."
+"Another important information about build.sh is that it has to call pre and "
+"post assemble. Before the build, it must call the pre-assemble functionality"
+" process. After it, it must copy the built library to the build folder and "
+"call the assemble functionality process. In the end, your jpl archive may be"
+" found under `<plugins>/build`. The build.sh file automatically created by "
+"our SDK, already respects these constraints."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:255
@@ -2447,16 +2443,16 @@ msgid ""
 "If you have more than one jpl archives, like one build for Android and "
 "anothe for GNU/Linux platforms, you can merge them into one to easy it's "
 "distribution. However, you should know that merging two or more jpls may "
-"inccur orverwritting some of the files inside them if they are not equal "
-"for all archives. The only files that may not present conflicting "
-"contents are the ones that do not repeate themselves. If conflicts occur,"
-" files from the first jpl in the arguments will prevail over the others."
+"inccur orverwritting some of the files inside them if they are not equal for"
+" all archives. The only files that may not present conflicting contents are "
+"the ones that do not repeate themselves. If conflicts occur, files from the "
+"first jpl in the arguments will prevail over the others."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:258
 msgid ""
-"To merge two or more jpls, from inside Jami Plugins SDK shell, the user "
-"must simple call:"
+"To merge two or more jpls, from inside Jami Plugins SDK shell, the user must"
+" simple call:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:265
@@ -2466,16 +2462,16 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:266
 msgid ""
 "Through this section we will present a step-by-step construction of a "
-"`HelloWorld` plugin using our SDK. Our goal is to print a coloured circle"
-" in the midle of the video frames using **OpenCV**. The color of that "
-"circle will be defined by a preference which will be changeable during "
-"runtime. Also we can set a stream preferece to define if the plugin will "
-"modify the video sent or the one received, this time we don't want to "
-"allow a changement during runtime. We can define a second functionality "
-"that will aways draw a circle in the right top corner, with the color "
-"defined by the same preference as the previous functionality but that "
-"cannot be changed during runtime. At the end we will exemplify how to "
-"build your plugin with and without the SDK."
+"`HelloWorld` plugin using our SDK. Our goal is to print a coloured circle in"
+" the midle of the video frames using **OpenCV**. The color of that circle "
+"will be defined by a preference which will be changeable during runtime. "
+"Also we can set a stream preferece to define if the plugin will modify the "
+"video sent or the one received, this time we don't want to allow a "
+"changement during runtime. We can define a second functionality that will "
+"aways draw a circle in the right top corner, with the color defined by the "
+"same preference as the previous functionality but that cannot be changed "
+"during runtime. At the end we will exemplify how to build your plugin with "
+"and without the SDK."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:273
@@ -2545,14 +2541,13 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:311
 msgid ""
-"Tell us a description: HelloWorld draws a circle in the center of a "
-"call's video"
+"Tell us a description: HelloWorld draws a circle in the center of a call's "
+"video"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:313
 msgid ""
-"Version must be of the form X.Y.Z Set plugin version (default 0.0.0): "
-"1.0.0"
+"Version must be of the form X.Y.Z Set plugin version (default 0.0.0): 1.0.0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:316
@@ -2567,8 +2562,8 @@ msgstr ""
 #: ../../../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."
+"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
@@ -2586,15 +2581,16 @@ msgid "Would you like to add a preference? [y/n] y"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:332
-msgid "Your preferences options available are:  (0) List; (1) Path; (2) EditText;"
+msgid ""
+"Your preferences options available are:  (0) List; (1) Path; (2) EditText;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:337
 msgid ""
 "Which preference type do you choose: 0 Type a value for category: stream "
-"Type a value for key: videostream Type a value for title: Video stream "
-"Type a value for summary: select a video direction Type a value for "
-"defaultValue: 0"
+"Type a value for key: videostream Type a value for title: Video stream Type "
+"a value for summary: select a video direction Type a value for defaultValue:"
+" 0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:344
@@ -2611,19 +2607,20 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:352
 msgid ""
-"Do you want to add a new entry Value? [y/n] n Type an entry name for '0':"
-" sent Type an entry name for '1': received"
+"Do you want to add a new entry Value? [y/n] n Type an entry name for '0': "
+"sent Type an entry name for '1': received"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:358
-msgid "Your preferences options available are:  (0) List; (1) Path; (3) EditText;"
+msgid ""
+"Your preferences options available are:  (0) List; (1) Path; (3) EditText;"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:363
 msgid ""
-"Which preference type do you choose: 0 Type a value for category: color "
-"Type a value for key: color Type a value for title: Circle color Type a "
-"value for summary: select a color Type a value for defaultValue: ##00FF00"
+"Which preference type do you choose: 0 Type a value for category: color Type"
+" a value for key: color Type a value for title: Circle color Type a value "
+"for summary: select a color Type a value for defaultValue: ##00FF00"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:370
@@ -2639,22 +2636,25 @@ msgid "Which scope do you choose: 0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:377
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #0000FF"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #0000FF"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:380
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #00FF00"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #00FF00"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:383
-msgid "Do you want to add a new entry Value? [y/n] y Type one new entry: #FF0000"
+msgid ""
+"Do you want to add a new entry Value? [y/n] y Type one new entry: #FF0000"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:386
 msgid ""
 "Do you want to add a new entry Value? [y/n] n Type an entry name for "
-"'#0000FF': blue Type an entry name for '#00FF00': green Type an entry "
-"name for '#FF0000': red"
+"'#0000FF': blue Type an entry name for '#00FF00': green Type an entry name "
+"for '#FF0000': red"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:391
@@ -2700,13 +2700,14 @@ msgstr ""
 #: ../../../developer/creating-jami-plugins.md:408
 msgid ""
 "Before building the HelloWorld, you should compile ffmpeg and OpenCV "
-"dependencies. This can be achieved by following the build instructions "
-"for OpenCV {doc}`here <jami-plugins>`. Ffmpeg will be automatically build"
-" if you follow those instructions. To build you plugin, you can either:"
+"dependencies. This can be achieved by following the build instructions for "
+"OpenCV {doc}`here <jami-plugins>`. Ffmpeg will be automatically build if you"
+" follow those instructions. To build you plugin, you can either:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:410
-msgid "Call the build from Jami Plugins SDK (works for GNU/Linux and Windows):"
+msgid ""
+"Call the build from Jami Plugins SDK (works for GNU/Linux and Windows):"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:415
@@ -2722,7 +2723,8 @@ msgid "DAEMON not provided, building with ./../../daemon"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:423
-msgid "Call plugin-build.py script (works for GNU/Linux, Windows and Android):"
+msgid ""
+"Call plugin-build.py script (works for GNU/Linux, Windows and Android):"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:424
@@ -2744,9 +2746,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:430
 msgid ""
-"OBS: For Android, you can set `ANDROID_ABI` environment variable to the "
-"ABI you want to build. Currently Jami supports `x86_64`, `armeabi-v7a`, "
-"and `arm64-v8a`. Plugins will be build for the three options by default."
+"OBS: For Android, you can set `ANDROID_ABI` environment variable to the ABI "
+"you want to build. Currently Jami supports `x86_64`, `armeabi-v7a`, and "
+"`arm64-v8a`. Plugins will be build for the three options by default."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:432
@@ -2755,8 +2757,8 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:433
 msgid ""
-"Now that you tested and your HelloWorld is working, you can try to do add"
-" another functionality to it."
+"Now that you tested and your HelloWorld is working, you can try to do add "
+"another functionality to it."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:438
@@ -2790,15 +2792,16 @@ msgid "Optionally, you can change your plugin version and description:"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:476
-msgid "(Jami Plugins SDK) manifest Leave Empty or Press 'q' to quit this option."
+msgid ""
+"(Jami Plugins SDK) manifest Leave Empty or Press 'q' to quit this option."
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:479
 msgid ""
-"Plugin to be modified or created: HelloWorld New description for your "
-"plugin (ignore to keep previous description): HelloWorld can draw a "
-"circle at the center or at the top-left of a call's video New plugin "
-"version (ignore to keep previous version): 2.0"
+"Plugin to be modified or created: HelloWorld New description for your plugin"
+" (ignore to keep previous description): HelloWorld can draw a circle at the "
+"center or at the top-left of a call's video New plugin version (ignore to "
+"keep previous version): 2.0"
 msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:483
@@ -2807,9 +2810,9 @@ msgstr ""
 
 #: ../../../developer/creating-jami-plugins.md:486
 msgid ""
-"Now you can start your own creations! Do not forget to tag Jami or "
-"Savoir-Faire Linux in your repository, this way we can get to know how "
-"the community is developping their own plugins!"
+"Now you can start your own creations! Do not forget to tag Jami or Savoir-"
+"Faire Linux in your repository, this way we can get to know how the "
+"community is developping their own plugins!"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:1
@@ -2818,9 +2821,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:4
 msgid ""
-"This page exists to classify feature requests per users' feedback, to "
-"avoid leaving tickets open for years.  Under construction, will sort the "
-"tickets."
+"This page exists to classify feature requests per users' feedback, to avoid "
+"leaving tickets open for years.  Under construction, will sort the tickets."
 msgstr ""
 
 #: ../../../developer/feature-requests.md:8
@@ -2829,8 +2831,8 @@ 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"
+"{daemon-issue}`Implement pipewire <13> to support screen sharing on Wayland`"
+" -> Contact #Jami (Adrien, Sébastien, etc.) / hard"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:12
@@ -2850,7 +2852,8 @@ msgid "Add unit-tests / probably easy"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:16
-msgid "Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard"
+msgid ""
+"Investigate: SIP/XMPP bridge -> Contact #Jami (Adrien, Sébastien) / hard"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:18
@@ -2910,8 +2913,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:33
 msgid ""
-"{client-qt-issue}`Live closed captions (multiple languages) <576>` "
-"(Whisper OpenAI, Google Speech API or similar) / probably easy"
+"{client-qt-issue}`Live closed captions (multiple languages) <576>` (Whisper "
+"OpenAI, Google Speech API or similar) / probably easy"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:35
@@ -2930,9 +2933,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:40
 msgid ""
-"Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a "
-"dedicated library (can be shared with OpenDHT) / medium difficulty & long"
-" term project"
+"Separate connectivity (ICE/TCP/TLS/UPNP/connection manager) in a dedicated "
+"library (can be shared with OpenDHT) / medium difficulty & long term project"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:43
@@ -2951,8 +2953,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:47
 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)"
+"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:49
@@ -2967,8 +2969,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:51
 msgid ""
-"{daemon-issue}`Support message edition/deletion <316>` (Contact #Jami - "
-"easy but long)"
+"{daemon-issue}`Support message edition/deletion <316>` (Contact #Jami - easy"
+" but long)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:53
@@ -2981,14 +2983,13 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:57
 msgid ""
-"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact "
-"Rennes"
+"Improve Jami on Yocto (some codecs problems/lag on i.MX 6) -> Contact Rennes"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:59
 msgid ""
-"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-"
-"client-qt/-/issues) -> Contact #Jami (Andreas)"
+"[Qt/QML Improve client](https://git.jami.net/savoirfairelinux/jami-client-"
+"qt/-/issues) -> Contact #Jami (Andreas)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:61
@@ -3005,9 +3006,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:64
 msgid ""
-"{gerrit-project}`jami-web`; because installing an app can be boring. "
-"Joining a conference via a link can be cool.  For now, nobody is working "
-"on it."
+"{gerrit-project}`jami-web`; because installing an app can be boring. Joining"
+" a conference via a link can be cool.  For now, nobody is working on it."
 msgstr ""
 
 #: ../../../developer/feature-requests.md:68
@@ -3027,14 +3027,14 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:74
 msgid ""
-"{project-issue}`add possibility to show \"reachable at the following "
-"times\" (contact details) <1261>`"
+"{project-issue}`add possibility to show \"reachable at the following times\""
+" (contact details) <1261>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:76
 msgid ""
-"{project-issue}`Preferences per contact (allow calls, file transfer, "
-"custom ringtone) <1280>`"
+"{project-issue}`Preferences per contact (allow calls, file transfer, custom "
+"ringtone) <1280>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:78
@@ -3096,8 +3096,8 @@ msgstr ""
 
 #: ../../../developer/feature-requests.md:95
 msgid ""
-"{project-issue}`Emoticon/emoji message reactions <1034>` (need to wait "
-"for group chat)"
+"{project-issue}`Emoticon/emoji message reactions <1034>` (need to wait for "
+"group chat)"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:98
@@ -3105,7 +3105,7 @@ msgid "Depends on mass changes"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:102
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:59
 msgid "Packaging"
 msgstr ""
@@ -3139,7 +3139,8 @@ msgid "{project-issue}`Sound safety <441>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:113
-msgid "{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
+msgid ""
+"{client-gnome-issue}`Ability to see multiple chats at the same time <909>`"
 msgstr ""
 
 #: ../../../developer/feature-requests.md:115
@@ -3209,8 +3210,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:12
 msgid ""
-"For sending a file on gnome, in a conversation you need to click to the "
-"send file icon at the bottom right of the conversation:"
+"For sending a file on gnome, in a conversation you need to click to the send"
+" file icon at the bottom right of the conversation:"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:15
@@ -3225,8 +3226,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:17
 msgid ""
-"Then you will see your image as soon as the transfer is finished (and "
-"show images is activated)"
+"Then you will see your image as soon as the transfer is finished (and show "
+"images is activated)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:20
@@ -3271,11 +3272,12 @@ msgstr ""
 msgid "Gnome_ongoing"
 msgstr ""
 
-#: ../../../developer/file-transfer.md:32 ../../../developer/jami-plugins.md:32
+#: ../../../developer/file-transfer.md:32
+#: ../../../developer/jami-plugins.md:32
 #: ../../../developer/jami-plugins.md:110
 #: ../../../developer/jami-plugins.md:269
 msgid "Android"
-msgstr ""
+msgstr "Android"
 
 #: ../../../developer/file-transfer.md:34
 msgid ""
@@ -3295,8 +3297,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:39
 msgid ""
-"Note: when you send a file, the other has to accept it. At this moment "
-"you will see 'awaiting peer':"
+"Note: when you send a file, the other has to accept it. At this moment you "
+"will see 'awaiting peer':"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:42
@@ -3320,40 +3322,38 @@ msgstr ""
 #: ../../../developer/file-transfer.md:51
 msgid ""
 "Jami is a distributed application and has to work without any internet "
-"connectivity. So, file transfer too! Basically, we use the same method to"
-" perform file transfer and calls, but in TCP. To summarize how it works, "
-"we can imagine a situation where Alice (A) wants to transfer a file to "
-"Bob (B)."
+"connectivity. So, file transfer too! Basically, we use the same method to "
+"perform file transfer and calls, but in TCP. To summarize how it works, we "
+"can imagine a situation where Alice (A) wants to transfer a file to Bob (B)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:53
 msgid ""
-"First, Alice will request a connection to Bob. To do that, Jami is using "
-"ICE (RFC 6544), a protocol used to negotiate links between peers. Alice "
-"will send, into an encrypted packet via the DHT the ip of its device. So,"
-" when Bob receives the ips of Alice, they will be able to negotiate a "
-"transport where Bob will be able to send packets to Alice. The "
-"negotiation can be successful, but if it fails, a TURN server will be "
-"used (the one configured into the settings) to perform the transfer. If "
-"the negotiation succeeds, Bob will send its ips to Alice to perform the "
-"negotiation in the other direction. Note that the link is still not "
-"secure, so Bob will send the ips through the DHT in an encrypted message."
-" If the second negotiation fails, the TURN will be used as a fallback."
+"First, Alice will request a connection to Bob. To do that, Jami is using ICE"
+" (RFC 6544), a protocol used to negotiate links between peers. Alice will "
+"send, into an encrypted packet via the DHT the ip of its device. So, when "
+"Bob receives the ips of Alice, they will be able to negotiate a transport "
+"where Bob will be able to send packets to Alice. The negotiation can be "
+"successful, but if it fails, a TURN server will be used (the one configured "
+"into the settings) to perform the transfer. If the negotiation succeeds, Bob"
+" will send its ips to Alice to perform the negotiation in the other "
+"direction. Note that the link is still not secure, so Bob will send the ips "
+"through the DHT in an encrypted message. If the second negotiation fails, "
+"the TURN will be used as a fallback."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:55
 msgid ""
 "Now that the bidirectionnal TCP link is here, the next step will be to "
 "negotiate a TLS 1.3 (generally a (TLS1.3)-(DHE-FFDHE8192)-(RSA-PSS-RSAE-"
-"SHA384)-(AES-256-GCM) when I write these lines) between Alice an Bob, "
-"then Alice will start to transfer the file."
+"SHA384)-(AES-256-GCM) when I write these lines) between Alice an Bob, then "
+"Alice will start to transfer the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:57
 msgid ""
-"The first part will be a small header to describe the content of the "
-"file. Then, after Bob accepts the transfer, the full file will be "
-"transmitted."
+"The first part will be a small header to describe the content of the file. "
+"Then, after Bob accepts the transfer, the full file will be transmitted."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:59
@@ -3371,11 +3371,11 @@ msgstr ""
 #: ../../../developer/file-transfer.md:65
 msgid ""
 "1\\. A client will call `DataTransferFacade::sendFile()`. "
-"`DataTransferFacade` is the class corresponding to the API exposed for "
-"the clients. It is used to manage a view of the file transfers (the "
+"`DataTransferFacade` is the class corresponding to the API exposed for the "
+"clients. It is used to manage a view of the file transfers (the "
 "corresponding classes are `DataTransfer`, `IncomingFileTransfer`, "
-"`OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will "
-"ask the linked `JamiAccount` to request a connection."
+"`OutgoingFileTransfer` and `SubOutgoingFileTransfer`). This method will ask "
+"the linked `JamiAccount` to request a connection."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:67
@@ -3387,57 +3387,58 @@ msgstr ""
 #: ../../../developer/file-transfer.md:69
 msgid ""
 "2\\. The method `DhtPeerConnector: requestConnection()` is triggered and "
-"creates a connection between all connected devices of the peer (found on "
-"the DHT). `DhtPeerConnector` is used to manage the main event loop which "
-"manage connections. When a device is found, the *event loop* will create "
-"a `ClientConnector` (which manage the connection for one device) and "
-"launch the `process()` method."
+"creates a connection between all connected devices of the peer (found on the"
+" DHT). `DhtPeerConnector` is used to manage the main event loop which manage"
+" connections. When a device is found, the *event loop* will create a "
+"`ClientConnector` (which manage the connection for one device) and launch "
+"the `process()` method."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:71
 msgid ""
 "3\\. This method is used to initialize the ICE transport and put a "
-"*PeerConnectionMsg* (which contains the SDP message, see below) on the "
-"DHT and waits for a response (`DhtPeerConnector::Impl::onResponseMsg`)."
+"*PeerConnectionMsg* (which contains the SDP message, see below) on the DHT "
+"and waits for a response (`DhtPeerConnector::Impl::onResponseMsg`)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:73
 msgid ""
 "4\\. Then a response is received from the DHT, which contains public "
-"addresses of the peer device. We can now negotiate a TLS link (directly "
-"via ICE, or via TURN as a fallback). This `TlsSocketEndpoint` is given to"
-" the `PeerConnection` object as an output and the transfer can start."
+"addresses of the peer device. We can now negotiate a TLS link (directly via "
+"ICE, or via TURN as a fallback). This `TlsSocketEndpoint` is given to the "
+"`PeerConnection` object as an output and the transfer can start."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:75
 msgid ""
 "5.\\ When the TLS socket is ready, the callback "
 "`DataTransferFacade::Impl::onConnectionRequestReply` is called, and a "
-"`OutgoingFileTransfer` is linked to the `PeerConnection` as an input. "
-"This `OutgoingFileTransfer` contains a list of `SubOutgoingFileTransfer` "
-"(one per device) where each sub transfer is a transfer to one device. We "
-"do that to be able to furnish the most optimistic view of the transfer "
-"(if a contact as 3 devices, where the contact cancel the transfer on one "
-"device, but accepted the transfer on the two others, the most advanced "
-"transfer will be shown)."
+"`OutgoingFileTransfer` is linked to the `PeerConnection` as an input. This "
+"`OutgoingFileTransfer` contains a list of `SubOutgoingFileTransfer` (one per"
+" device) where each sub transfer is a transfer to one device. We do that to "
+"be able to furnish the most optimistic view of the transfer (if a contact as"
+" 3 devices, where the contact cancel the transfer on one device, but "
+"accepted the transfer on the two others, the most advanced transfer will be "
+"shown)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:77
 msgid ""
 "6\\. The `SubOutgoingFileTransfer` will first transfer the header of the "
-"file, wait the peer acceptance (A \"GO\\n\" message on the socket) and "
-"then will send the file."
+"file, wait the peer acceptance (A \"GO\\n\" message on the socket) and then "
+"will send the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:79
 msgid ""
 "7\\. If a cancel is received from the peer or the client or if the file "
-"transfer finish, the connection will be closed via a `CANCEL` message on "
-"the `DhtPeerConnector::eventLoop()` and the resources will be released."
+"transfer finish, the connection will be closed via a `CANCEL` message on the"
+" `DhtPeerConnector::eventLoop()` and the resources will be released."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:81
-msgid "![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
+msgid ""
+"![TLSsocketEndpoint](images/file-transfer-tlssocketendpoint-diagram.png)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:81
@@ -3449,13 +3450,14 @@ msgid "Receiving a file"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:86
-msgid "The same structure is used to receive files, but the method changes a bit:"
+msgid ""
+"The same structure is used to receive files, but the method changes a bit:"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:88
 msgid ""
-"The `JamiAccount` class is used to receives messages from the DHT, "
-"because the first thing received will be the DHT request."
+"The `JamiAccount` class is used to receives messages from the DHT, because "
+"the first thing received will be the DHT request."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:89
@@ -3467,14 +3469,14 @@ msgstr ""
 #: ../../../developer/file-transfer.md:90
 msgid ""
 "The `DhtPeerConnector::Impl::answerToRequest` will try to connect to the "
-"TURN server (if not connected) and initialize the ICE transport. This "
-"method open 2 control connections to a TURN server (one to authorize IPv4"
-" peers, another one for IPv6 peers, due to **RFC 6156**) if it's not "
-"already open and permit Peer public addresses to connect. Then, if the "
-"SDP received doesn't contains ICE candidates, will use the TURN and craft"
-" the SDP answer to wait for the peer. If the SDP contains ICE candidates,"
-" the method will try to negotiate the link (or fallback on the TURN) and "
-"then answer the SDP (with ICE candidates or not)."
+"TURN server (if not connected) and initialize the ICE transport. This method"
+" open 2 control connections to a TURN server (one to authorize IPv4 peers, "
+"another one for IPv6 peers, due to **RFC 6156**) if it's not already open "
+"and permit Peer public addresses to connect. Then, if the SDP received "
+"doesn't contains ICE candidates, will use the TURN and craft the SDP answer "
+"to wait for the peer. If the SDP contains ICE candidates, the method will "
+"try to negotiate the link (or fallback on the TURN) and then answer the SDP "
+"(with ICE candidates or not)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:91
@@ -3491,31 +3493,31 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:95
 msgid ""
-"As specified in {ref}`developer/swarm:Other mime types`, the data-"
-"transfer interactions are now synced and stored into conversations. So, a"
-" device can easily detects if a file was downloaded or not. If not, it "
-"can asks all members in the conversation to transmits the file again."
+"As specified in {ref}`developer/swarm:Other mime types`, the data-transfer "
+"interactions are now synced and stored into conversations. So, a device can "
+"easily detects if a file was downloaded or not. If not, it can asks all "
+"members in the conversation to transmits the file again."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:97
 msgid ""
-"To do this, the device will send a json with the mime-type: `application"
-"/data-transfer-request+json` containing `conversation` (the "
+"To do this, the device will send a json with the mime-type: "
+"`application/data-transfer-request+json` containing `conversation` (the "
 "conversation's id), `interaction` (related interaction), `deviceId` the "
 "device receiving the file."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:99
 msgid ""
-"The sender now checks if the device is a device from the announced peer "
-"and that the device is a member of the conversation, and can sends the "
-"file via a classic file transfer."
+"The sender now checks if the device is a device from the announced peer and "
+"that the device is a member of the conversation, and can sends the file via "
+"a classic file transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:101
 msgid ""
-"The receiver can now accepts the first incoming transfer, download the "
-"file and verify that the sha3sum is correct."
+"The receiver can now accepts the first incoming transfer, download the file "
+"and verify that the sha3sum is correct."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:103
@@ -3538,12 +3540,11 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:123
 msgid ""
-"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password"
-" of the ICE session. `2130706431` and `1694498815` are the priority of "
-"the candidates. `192.168.0.126 42751 typ host tcptype passive` is a "
-"passive host candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype "
-"passive` a passive host reflecting the public ip (mapped via UPnP for "
-"example)."
+"Where `0d04b932` is the ufrag and `7c33834e7cf944bf0e367b47` the password of"
+" the ICE session. `2130706431` and `1694498815` are the priority of the "
+"candidates. `192.168.0.126 42751 typ host tcptype passive` is a passive host"
+" candidate and `1694498815 X.X.X.X 42751 typ srflx tcptype passive` a "
+"passive host reflecting the public ip (mapped via UPnP for example)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:125
@@ -3589,10 +3590,10 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:153
 msgid ""
-"The first approach was to send a request through the DHT to all devices "
-"and the first devices which answers get the file to transfer. This is bad"
-" for your contact because they will not know which device will receives "
-"will get the transfer."
+"The first approach was to send a request through the DHT to all devices and "
+"the first devices which answers get the file to transfer. This is bad for "
+"your contact because they will not know which device will receives will get "
+"the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:158
@@ -3610,25 +3611,25 @@ msgstr ""
 #: ../../../developer/file-transfer.md:165
 msgid ""
 "Now (since <https://gerrit-ring.savoirfairelinux.com/#/c/9327/>), when a "
-"user send a file, it will request a *PeerConnection* with all peer "
-"devices. And for all connections, we attach a new input stream to have "
-"the ability to accept/refuse/cancel each transfer separately."
+"user send a file, it will request a *PeerConnection* with all peer devices. "
+"And for all connections, we attach a new input stream to have the ability to"
+" accept/refuse/cancel each transfer separately."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:170
 msgid ""
-"In *data\\_transfer.cpp* we define the *OptimisticMetaOutgoingInfo* class"
-" which represent the optimistic view to show to the client. It's "
-"optimistic because if a contact accept a transfer on one device and "
-"refuse on others, this class will show the ongoing file transfer. And it "
-"will only show an error if all devices refuse the transfer."
+"In *data\\_transfer.cpp* we define the *OptimisticMetaOutgoingInfo* class "
+"which represent the optimistic view to show to the client. It's optimistic "
+"because if a contact accept a transfer on one device and refuse on others, "
+"this class will show the ongoing file transfer. And it will only show an "
+"error if all devices refuse the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:176
 msgid ""
-"This class is linked to *SubOutgoingFileTransfer* which represent the "
-"state of a transfer with one device. Clients will have the ability to "
-"show a sub transfer instead the optimistic later (see TODO list)."
+"This class is linked to *SubOutgoingFileTransfer* which represent the state "
+"of a transfer with one device. Clients will have the ability to show a sub "
+"transfer instead the optimistic later (see TODO list)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:180
@@ -3637,8 +3638,8 @@ msgstr ""
 
 #: ../../../developer/file-transfer.md:182
 msgid ""
-"Actually the default TURN server is *turn.ring.cx*. But you can host your"
-" own TURN server. For example by running a "
+"Actually the default TURN server is *turn.ring.cx*. But you can host your "
+"own TURN server. For example by running a "
 "[coturn](https://github.com/coturn/coturn) server."
 msgstr ""
 
@@ -3647,32 +3648,32 @@ msgid "`sudo turnserver -a -v -n -u user:password -r \"realm\"`"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:188
-msgid "Then, you can configure the TURN server in the advanced settings of RING."
+msgid ""
+"Then, you can configure the TURN server in the advanced settings of RING."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:191
 msgid ""
-"Note: this needs some technical knowledges. Moreover, the TURN server "
-"should see the same ip address of your node as the destination node or "
-"the peer connection will fail (because the authorization will be "
-"incorrect)"
+"Note: this needs some technical knowledges. Moreover, the TURN server should"
+" see the same ip address of your node as the destination node or the peer "
+"connection will fail (because the authorization will be incorrect)"
 msgstr ""
 
 #: ../../../developer/file-transfer.md:199
 msgid ""
-"For now, if a file transfer fails when ongoing, the sender can't resume "
-"the transfer and must relaunch the whole transfer. In the future, there "
-"will be a retry button for resuming the transfer."
+"For now, if a file transfer fails when ongoing, the sender can't resume the "
+"transfer and must relaunch the whole transfer. In the future, there will be "
+"a retry button for resuming the transfer."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:203
 msgid ""
 "Finally, because Ring do not support text conferences (just video "
-"conferences, where there is one master merging slaves SIP calls), there "
-"is no real file transfer in conferences. For now, when you are in a "
-"conference on the gnome client for example: A master, B and C slave. B "
-"will be able to send a file to A the master (C same) A will be able to "
-"send a file to B or to C (just have to select the correct conversation)."
+"conferences, where there is one master merging slaves SIP calls), there is "
+"no real file transfer in conferences. For now, when you are in a conference "
+"on the gnome client for example: A master, B and C slave. B will be able to "
+"send a file to A the master (C same) A will be able to send a file to B or "
+"to C (just have to select the correct conversation)."
 msgstr ""
 
 #: ../../../developer/file-transfer.md:210
@@ -3697,7 +3698,7 @@ msgstr ""
 
 #: ../../../developer/important-rfcs.md:4
 msgid "SIP"
-msgstr ""
+msgstr "SIP"
 
 #: ../../../developer/important-rfcs.md:6
 msgid "Reference: <http://tools.ietf.org/html/rfc3261>"
@@ -3731,8 +3732,8 @@ msgstr ""
 
 #: ../../../developer/important-rfcs.md:20
 msgid ""
-"How to use SDP: <http://tools.ietf.org/html/rfc3264> Valuable updates and"
-" extensions:"
+"How to use SDP: <http://tools.ietf.org/html/rfc3264> Valuable updates and "
+"extensions:"
 msgstr ""
 
 #: ../../../developer/important-rfcs.md:23
@@ -3792,17 +3793,16 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:8
-#, python-format
 msgid ""
-"There is about 30 unit-tests and 26% coverage. Due to Jami high demand to"
-" give new functionalities to user quickly, they are not maintained by the"
-" developers or by a QA dept."
+"There is about 30 unit-tests and 26% coverage. Due to Jami high demand to "
+"give new functionalities to user quickly, they are not maintained by the "
+"developers or by a QA dept."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:10
 msgid ""
-"We use lcov for the coverage, you can find the lcov’s configuration in "
-"the daemon’s Makefile.am. Also, the coverage can be found at "
+"We use lcov for the coverage, you can find the lcov’s configuration in the "
+"daemon’s Makefile.am. Also, the coverage can be found at "
 "https://docs.jami.net/coverage/"
 msgstr ""
 
@@ -3814,8 +3814,8 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:14
 msgid ""
-"You can launch them by doing ‘make check’ in the daemon folder or "
-"separately in the unit-test folder with gdb: ‘gdb ut_media_encoder’"
+"You can launch them by doing ‘make check’ in the daemon folder or separately"
+" in the unit-test folder with gdb: ‘gdb ut_media_encoder’"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:16
@@ -3830,20 +3830,21 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:20
 msgid ""
-"You can find framework tests in the daemon’s Makefile.am and lunch it "
-"with ‘make integration’. This calls jami_test.py script in the "
-"tools/dringctrl folder. It uses dringctrl.py and controller.py which let "
-"you control Jami through bash."
+"You can find framework tests in the daemon’s Makefile.am and lunch it with "
+"‘make integration’. This calls jami_test.py script in the tools/dringctrl "
+"folder. It uses dringctrl.py and controller.py which let you control Jami "
+"through bash."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:22
-msgid "This makes a series of calls to assure jami’s opendht network is stable."
+msgid ""
+"This makes a series of calls to assure jami’s opendht network is stable."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:24
 msgid ""
-"Other framework tests need to be implemented in the future to tests "
-"Jami’s functionalities as a whole."
+"Other framework tests need to be implemented in the future to tests Jami’s "
+"functionalities as a whole."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:26
@@ -3852,24 +3853,24 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:28
 msgid ""
-"Each commit goes through integration tests in dockers on the build "
-"machines you can find the details at: jenkins.jami.net"
+"Each commit goes through integration tests in dockers on the build machines "
+"you can find the details at: jenkins.jami.net"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:30
 msgid ""
-"Code-review is made by a fellow developer, sometimes the code is reviewed"
-" by the same developer, this should be avoided to emphasize Linus’ law. "
-"The ‘Jenkins verified’ label is sometimes discarded and replaced by +1 "
-"from a developer, this should also be avoided."
+"Code-review is made by a fellow developer, sometimes the code is reviewed by"
+" the same developer, this should be avoided to emphasize Linus’ law. The "
+"‘Jenkins verified’ label is sometimes discarded and replaced by +1 from a "
+"developer, this should also be avoided."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:32
 msgid ""
-"Sonarqube lets Jenkins build Jami and verify linting. You can find "
-"filters and results at: sonar- jami.savoirfairelinux.net Sonar uses "
-"clang-tidy as a preprocessor linting compilator, you can find clang’s "
-"filters in .clang-tidy file in the daemon folder."
+"Sonarqube lets Jenkins build Jami and verify linting. You can find filters "
+"and results at: sonar- jami.savoirfairelinux.net Sonar uses clang-tidy as a "
+"preprocessor linting compilator, you can find clang’s filters in .clang-tidy"
+" file in the daemon folder."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:34
@@ -3897,10 +3898,10 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:44
 msgid ""
 "A script is called every 30 minutes on a virtual machine jami-"
-"monitorpeervm-01. You can find it on sflvault service s#7209 and is "
-"calling an other client viratual jami- monitorpeer-02 (service s#7224). A"
-" series of calls is being made and it returns the failure rate. You can "
-"find all the details at https://wiki.savoirfairelinux.com/wiki/Jami-"
+"monitorpeervm-01. You can find it on sflvault service s#7209 and is calling "
+"an other client viratual jami- monitorpeer-02 (service s#7224). A series of "
+"calls is being made and it returns the failure rate. You can find all the "
+"details at https://wiki.savoirfairelinux.com/wiki/Jami-"
 "monitorpeervm-01.mtl.sfl."
 msgstr ""
 
@@ -3913,8 +3914,7 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:48
 msgid ""
 "It traces a real time point by point graph on "
-"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host"
-"=jami-"
+"https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-"
 "monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1"
 msgstr ""
 
@@ -3932,15 +3932,14 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:57
 msgid ""
-"They are reviewed by QA dpt. before sending it to the developers if "
-"needed."
+"They are reviewed by QA dpt. before sending it to the developers if needed."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:59
 msgid ""
-"If a release contains a network commit that has been merged, the QA dept."
-" Should be able to automate the different connectivity tests (as descibed"
-" below in Calls configurations)"
+"If a release contains a network commit that has been merged, the QA dept. "
+"Should be able to automate the different connectivity tests (as descibed "
+"below in Calls configurations)"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:61
@@ -3953,14 +3952,14 @@ msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:65
 msgid ""
-"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both"
-" sides."
+"(IPv4 | IPv6) + (TURN | !TURN) + (STUN | !STUN) + (UPnP | !UPnP) for both "
+"sides."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:67
 msgid ""
-"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be "
-"only local."
+"If both sides are IPv4 only without TURN/STUN/UPnP, the call should be only "
+"local."
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:69
@@ -3990,14 +3989,14 @@ msgstr ""
 #: ../../../developer/improving-quality-of-jami.md:79
 msgid ""
 "Each major functionality should be tested as whole by adding a framework "
-"test (i.e. making sure a message was received, the call was ended well on"
-" both side, etc...)"
+"test (i.e. making sure a message was received, the call was ended well on "
+"both side, etc...)"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:81
 msgid ""
-"Each new functionality should be tested on each platform before merging "
-"it to reduce regression"
+"Each new functionality should be tested on each platform before merging it "
+"to reduce regression"
 msgstr ""
 
 #: ../../../developer/improving-quality-of-jami.md:83
@@ -4019,15 +4018,15 @@ msgstr ""
 #: ../../../developer/index.rst:5
 msgid ""
 "The Jami developer manual is a reference for Jami developers and "
-"contributors, documenting the various aspects of hacking on and "
-"developing Jami, including in-depth explanations of how Jami is designed "
-"and how its various parts work together."
+"contributors, documenting the various aspects of hacking on and developing "
+"Jami, including in-depth explanations of how Jami is designed and how its "
+"various parts work together."
 msgstr ""
 
 #: ../../../developer/introduction.md:4
 msgid ""
-"Greetings!  In the developer manual of Jami, you will learn about how "
-"Jami works from the high level, to the low, with some examples."
+"Greetings!  In the developer manual of Jami, you will learn about how Jami "
+"works from the high level, to the low, with some examples."
 msgstr ""
 
 #: ../../../developer/introduction.md:7
@@ -4068,7 +4067,7 @@ msgstr ""
 
 #: ../../../developer/introduction.md:18
 msgid "Advanced features"
-msgstr ""
+msgstr "Fonctionnalités avancées"
 
 #: ../../../developer/introduction.md:19
 msgid "Manage audio/videos"
@@ -4076,13 +4075,13 @@ msgstr ""
 
 #: ../../../developer/introduction.md:20
 msgid "Call recording"
-msgstr ""
+msgstr "Enregistrement d'appel"
 
 #: ../../../developer/introduction.md:21
 msgid ""
 "[The push notifications "
-"system](https://github.com/savoirfairelinux/opendht/wiki/Push-"
-"notifications-support)"
+"system](https://github.com/savoirfairelinux/opendht/wiki/Push-notifications-"
+"support)"
 msgstr ""
 
 #: ../../../developer/introduction.md:22
@@ -4155,9 +4154,9 @@ msgstr ""
 
 #: ../../../developer/introduction.md:45
 msgid ""
-"If you are reading this, chances are you'd either like to contribute to "
-"one of Jami's components/projects, or to implement your own client. There"
-" are three main layers in this project:"
+"If you are reading this, chances are you'd either like to contribute to one "
+"of Jami's components/projects, or to implement your own client. There are "
+"three main layers in this project:"
 msgstr ""
 
 #: ../../../developer/introduction.md:49
@@ -4170,11 +4169,11 @@ msgstr ""
 
 #: ../../../developer/introduction.md:54
 msgid ""
-"The daemon, which is the main part.  It's the part which does all the "
-"logic for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other "
-"libraries, and implements the whole protocol.  If you'd like to do create"
-" a new Jami client, we recommend implementing it on top of this daemon, "
-"using one of its many APIs (REST, DBus, libwrap, or JNI)."
+"The daemon, which is the main part.  It's the part which does all the logic "
+"for Jami and interacts with OpenDHT, pjsip, FFmpeg, and the other libraries,"
+" and implements the whole protocol.  If you'd like to do create a new Jami "
+"client, we recommend implementing it on top of this daemon, using one of its"
+" many APIs (REST, DBus, libwrap, or JNI)."
 msgstr ""
 
 #: ../../../developer/introduction.md:61
@@ -4183,8 +4182,8 @@ msgstr ""
 
 #: ../../../developer/introduction.md:63
 msgid ""
-"The developer manual of Jami will explain the different features from all"
-" of these layers."
+"The developer manual of Jami will explain the different features from all of"
+" these layers."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:1
@@ -4194,8 +4193,8 @@ msgstr ""
 #: ../../../developer/jami-identifiers.md:4
 msgid ""
 "There are many identifiers in Jami. We need to unify the naming of these "
-"identifiers between all implementations. This page reference various kind"
-" of identifiers used in Jami with relevant examples."
+"identifiers between all implementations. This page reference various kind of"
+" identifiers used in Jami with relevant examples."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:8
@@ -4215,17 +4214,17 @@ msgid ""
 "**URI** : a Jami or SIP URI such as "
 "`ring:3d1112ab2bb089370c0744a44bbbb0786418d40b` or `ring:jeandupont` or "
 "`<sip:nnnnn@host:5060>`. Must be compliant with "
-"[rfc3986](https://tools.ietf.org/html/rfc3986). If it's a SIP URI, it "
-"must be compliant with "
+"[rfc3986](https://tools.ietf.org/html/rfc3986). If it's a SIP URI, it must "
+"be compliant with "
 "[rfc3261#19.1](https://tools.ietf.org/html/rfc3261#section-19.1)."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:15
 msgid ""
 "**Canonical URI** : `ring:3d1112ab2bb089370c0744a44bbbb0786418d40b` or "
-"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered "
-"name must be resolved, doesn't include <> brackets or display name. "
-"Prefixed with the scheme (`ring:` or `sip:` or `sips:`)."
+"`sip:nnnnn@host:5060`. The most simplified form of the URI. Registered name "
+"must be resolved, doesn't include <> brackets or display name. Prefixed with"
+" the scheme (`ring:` or `sip:` or `sips:`)."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:16
@@ -4236,8 +4235,8 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:17
 msgid ""
-"**Display name** or **Profile name** : an editable user-defined profile "
-"name such as `Jean Dupont`."
+"**Display name** or **Profile name** : an editable user-defined profile name"
+" such as `Jean Dupont`."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:20
@@ -4254,9 +4253,9 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:31
 msgid ""
-"If no photo is available and a registered name (ring) or display name "
-"(sip) is available, the first letter of this name can be used to generate"
-" a placeholder. Otherwise a generic placeholder is used."
+"If no photo is available and a registered name (ring) or display name (sip) "
+"is available, the first letter of this name can be used to generate a "
+"placeholder. Otherwise a generic placeholder is used."
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:32
@@ -4267,8 +4266,7 @@ msgstr ""
 
 #: ../../../developer/jami-identifiers.md:57
 msgid ""
-"Color values are from the material palette: "
-"https://material.io/tools/color"
+"Color values are from the material palette: https://material.io/tools/color"
 msgstr ""
 
 #: ../../../developer/jami-identifiers.md:60
@@ -4281,8 +4279,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:1
 msgid ""
-"**NOTE: this page describes what is a Jami Plugin and how to install and "
-"use them.**"
+"**NOTE: this page describes what is a Jami Plugin and how to install and use"
+" them.**"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:3
@@ -4291,23 +4289,23 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:4
 msgid ""
-"As from September of 2020, Jami team has added plugins as a call and chat"
-" feature for Linux, Windows, and Android users. This meaning that now you"
-" can personalize your call/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!"
+"As from September of 2020, Jami team has added plugins as a call and chat "
+"feature for Linux, Windows, and Android users. This meaning that now you can"
+" personalize your call/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!"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:8
 msgid ""
-"To properly setup a plugin you must follow the steps in [#How to use it"
-"?](#how-to-use-it)."
+"To properly setup a plugin you must follow the steps in [#How to use "
+"it?](#how-to-use-it)."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:9
 msgid ""
-"To build a available plugin, please refer to [#How to build?](#how-to-"
-"build) instructions."
+"To build a available plugin, please refer to [#How to build?](#how-to-build)"
+" instructions."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:10
@@ -4323,50 +4321,48 @@ msgstr ""
 #: ../../../developer/jami-plugins.md:13
 msgid ""
 "Jami can be break down to three main components that interact together: "
-"Daemon, LRC and clients. Daemon is the core of Jami, and although it does"
-" not interact with users, it is involved in every command. Therefore, "
-"Daemon has a `JamiPluginManager` class that among other actions perfoms "
-"install/uninstall, load/unload, edit preferences and control plugins' "
-"usage. Despite Daemon importance, what a plugin effectivelly does to a "
-"call video/audio or to a chat message is unknown to it the same way "
-"Daemon does not know what is effectivelly done by LRC or the clients "
-"interfaces. Plugins then can be seen as a forth interacting component in "
-"Jami."
+"Daemon, LRC and clients. Daemon is the core of Jami, and although it does "
+"not interact with users, it is involved in every command. Therefore, Daemon "
+"has a `JamiPluginManager` class that among other actions perfoms "
+"install/uninstall, load/unload, edit preferences and control plugins' usage."
+" Despite Daemon importance, what a plugin effectivelly does to a call "
+"video/audio or to a chat message is unknown to it the same way Daemon does "
+"not know what is effectivelly done by LRC or the clients interfaces. Plugins"
+" then can be seen as a forth interacting component in Jami."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:19
 msgid ""
-"The plugin system inside Jami exposes different APIs that can be used by "
-"the plugins. For instance, the ChatHandler and the Media Handler API. The"
-" latter enables the plugins to modify audio and video streams from Jami "
-"calls and is used by our GreenScreen plugin but could also be used to "
-"build a YouTube streaming system, various instagram-style filters, a real"
-" time translation service, etc."
+"The plugin system inside Jami exposes different APIs that can be used by the"
+" plugins. For instance, the ChatHandler and the Media Handler API. The "
+"latter enables the plugins to modify audio and video streams from Jami calls"
+" and is used by our GreenScreen plugin but could also be used to build a "
+"YouTube streaming system, various instagram-style filters, a real time "
+"translation service, etc."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:21
 msgid ""
-"Plugins can be composed by one or multiple media and chat handlers that "
-"are responsible for attaching/detaching a data stream from Jami and a "
-"data process. Each handler represents a functionality that can be totally"
-" different between them or can be a modified versions of the same core "
+"Plugins can be composed by one or multiple media and chat handlers that are "
+"responsible for attaching/detaching a data stream from Jami and a data "
+"process. Each handler represents a functionality that can be totally "
+"different between them or can be a modified versions of the same core "
 "process. In our example, we have only one functionality, it being, the "
-"GreenScreen plugin has one media handler which data process is "
-"responsible for segmenting the foreground from a video frame and applying"
-" another image to the background, just like it is done with the green "
-"screens in movies!"
+"GreenScreen plugin has one media handler which data process is responsible "
+"for segmenting the foreground from a video frame and applying another image "
+"to the background, just like it is done with the green screens in movies!"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:23
 msgid ""
 "To use one custom functionality, it is necessary that Jami knows all "
-"plugins' handlers, which one is going to be used and the data that should"
-" be processed. Plugin's handlers are created once a plugin is loaded and "
-"are shared with Daemon's Plugin Manager. The data is inside Jami flow "
-"(for a call plugin, in the event of a new call, Jami creates and stores "
-"the corresponding media stream subjects). Finally, once a user puts a "
-"plugin functionality in action Jami tells this handler to attach the "
-"available data. When deactivated, Jami tells the handler to dettach."
+"plugins' handlers, which one is going to be used and the data that should be"
+" processed. Plugin's handlers are created once a plugin is loaded and are "
+"shared with Daemon's Plugin Manager. The data is inside Jami flow (for a "
+"call plugin, in the event of a new call, Jami creates and stores the "
+"corresponding media stream subjects). Finally, once a user puts a plugin "
+"functionality in action Jami tells this handler to attach the available "
+"data. When deactivated, Jami tells the handler to dettach."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:27
@@ -4375,26 +4371,26 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:28
 msgid ""
-"A Jami plugin is a `pluginname.jpl` file, and it must be installed to "
-"your Jami. Once installed, Jami will add your new plugin to the available"
-" plugins list but they will not be ready for use yet. Plugins are "
-"libraries and must be loaded if you want to expose them. Moreover, plugin"
-" may have preferences and besides install/uninstall and load/unload "
-"actions, it is possible to modify those preferences. For example, our "
-"GreenScreen plugin allows the user to change the background image "
-"displayed."
+"A Jami plugin is a `pluginname.jpl` file, and it must be installed to your "
+"Jami. Once installed, Jami will add your new plugin to the available plugins"
+" list but they will not be ready for use yet. Plugins are libraries and must"
+" be loaded if you want to expose them. Moreover, plugin may have preferences"
+" and besides install/uninstall and load/unload actions, it is possible to "
+"modify those preferences. For example, our GreenScreen plugin allows the "
+"user to change the background image displayed."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:33
 msgid ""
-"To setup a plugin for Android you must go under Setting, enable plugins "
-"if they are disabled, and select a plugin file from your phone. After "
-"installed it is automaticaly loaded. Optionally, you can manually perform"
-" load/unload using the checkbox button on the plugin list."
+"To setup a plugin for Android you must go under Setting, enable plugins if "
+"they are disabled, and select a plugin file from your phone. After installed"
+" it is automaticaly loaded. Optionally, you can manually perform load/unload"
+" using the checkbox button on the plugin list."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:37
-msgid "![client-android-install](images/jami-plugins-client-android-install.gif)"
+msgid ""
+"![client-android-install](images/jami-plugins-client-android-install.gif)"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:37
@@ -4403,10 +4399,10 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:39
 msgid ""
-"For Android uninstall, you must click on the plugin and a uninstall "
-"option will appear allong with the preferences and a reset preferences "
-"option. In order to a preference modification can take effect the plugin "
-"has to be reloaded."
+"For Android uninstall, you must click on the plugin and a uninstall option "
+"will appear allong with the preferences and a reset preferences option. In "
+"order to a preference modification can take effect the plugin has to be "
+"reloaded."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:42
@@ -4435,14 +4431,14 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:49
 msgid ""
-"Client-gnome: a load/unload button and a uninstall button; For client-"
-"gnome it is not possible to change plugin's preferences."
+"Client-gnome: a load/unload button and a uninstall button; For client-gnome "
+"it is not possible to change plugin's preferences."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:52
 msgid ""
-"![client-qt-install](images/jami-plugins-client-qt-install.gif) ![client-"
-"qt-prefs](images/jami-plugins-client-qt-prefs.gif)"
+"![client-qt-install](images/jami-plugins-client-qt-install.gif) ![client-qt-"
+"prefs](images/jami-plugins-client-qt-prefs.gif)"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:52
@@ -4459,9 +4455,9 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:56
 msgid ""
-"A media handler functionality only takes place if you turn them on during"
-" a call. For either Android, Linux or Windows you can do so by clicking "
-"on the plugins icon on your call screen."
+"A media handler functionality only takes place if you turn them on during a "
+"call. For either Android, Linux or Windows you can do so by clicking on the "
+"plugins icon on your call screen."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:59
@@ -4480,8 +4476,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:62
 msgid ""
-"Similarly, for chat handler functionality, you will see a plugin icon in "
-"the chat window as in the images bellow."
+"Similarly, for chat handler functionality, you will see a plugin icon in the"
+" chat window as in the images bellow."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:64
@@ -4490,15 +4486,15 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:65
 msgid ""
-"If you want to make something with your video call, it is possible that "
-"you will do so with OpenCV and/or deep learning models (Tensorflow, "
-"PyTorch, etc). So, before going to the plugin, it is necessary to build "
-"plugin's dependencies."
+"If you want to make something with your video call, it is possible that you "
+"will do so with OpenCV and/or deep learning models (Tensorflow, PyTorch, "
+"etc). So, before going to the plugin, it is necessary to build plugin's "
+"dependencies."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:68
 msgid "Dependencies"
-msgstr ""
+msgstr "Dépendances"
 
 #: ../../../developer/jami-plugins.md:69
 msgid ""
@@ -4523,7 +4519,8 @@ msgid ""
 "instructions."
 msgstr ""
 
-#: ../../../developer/jami-plugins.md:76 ../../../developer/jami-plugins.md:215
+#: ../../../developer/jami-plugins.md:76
+#: ../../../developer/jami-plugins.md:215
 #: ../../../developer/jami-plugins.md:283
 #: ../../../developer/tensorflow-plugin.md:51
 msgid "Windows"
@@ -4553,14 +4550,14 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:145
 msgid ""
-"A difficulty for a lot of people working with deep learning models is how"
-" to deploy them. With that in mind we provide the user the possibility of"
-" using onnxruntime. There are several development libraries to train and "
-"test but, they are usually too heavy to deploy. Tensorflow with cuda "
-"support, for instance, can easily surpass 400MB. In our GreenScreen "
-"plugin We chose to use onnxruntime because it's lighter (library size of "
-"140Mb for cuda support) and supports model convertion from several "
-"development libraries (Tensorflow, PyTorch, Caffe, etc.)."
+"A difficulty for a lot of people working with deep learning models is how to"
+" deploy them. With that in mind we provide the user the possibility of using"
+" onnxruntime. There are several development libraries to train and test but,"
+" they are usually too heavy to deploy. Tensorflow with cuda support, for "
+"instance, can easily surpass 400MB. In our GreenScreen plugin We chose to "
+"use onnxruntime because it's lighter (library size of 140Mb for cuda "
+"support) and supports model convertion from several development libraries "
+"(Tensorflow, PyTorch, Caffe, etc.)."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:149
@@ -4573,16 +4570,16 @@ msgstr ""
 #: ../../../developer/jami-plugins.md:151
 msgid ""
 "To build onnxruntime based plugins for Linux and Android, we strongly "
-"recommend using docker files available under `<plugins>/docker/`. We "
-"don't offer Windows docker, but here we carefully guide you through the "
-"proper build of this library for our three supported platforms."
+"recommend using docker files available under `<plugins>/docker/`. We don't "
+"offer Windows docker, but here we carefully guide you through the proper "
+"build of this library for our three supported platforms."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:153
 msgid ""
-"If you want to build onnxruntime with Nvidia GPU suport, be sure to have "
-"a CUDA capable GPU and that you have followed all installation steps for "
-"the Nvidia drivers, CUDA Toolkit, CUDNN, and that their versions match."
+"If you want to build onnxruntime with Nvidia GPU suport, be sure to have a "
+"CUDA capable GPU and that you have followed all installation steps for the "
+"Nvidia drivers, CUDA Toolkit, CUDNN, and that their versions match."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:157
@@ -4617,8 +4614,8 @@ msgstr ""
 msgid ""
 "We kindly added onnxruntime as a contrib in "
 "[daemon](https://git.jami.net/savoirfairelinux/jami-"
-"daemon/tree/master/contrib). This way you can easily build onnxruntime "
-"for Android, and Linux."
+"daemon/tree/master/contrib). This way you can easily build onnxruntime for "
+"Android, and Linux."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:167
@@ -4661,8 +4658,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:254
 msgid ""
-"To exemplify a plugin build, we will use the GreenScreen plugin available"
-" {gitlab-project}`here <jami-plugins>`."
+"To exemplify a plugin build, we will use the GreenScreen plugin available "
+"{gitlab-project}`here <jami-plugins>`."
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:256
@@ -4671,8 +4668,7 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:257
 msgid ""
-"First you need to go to the plugins repository in your cloned ring-"
-"project:"
+"First you need to go to the plugins repository in your cloned ring-project:"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:263
@@ -4700,8 +4696,8 @@ msgstr ""
 
 #: ../../../developer/jami-plugins.md:284
 msgid ""
-"Windows build of plugins are linked with the daemon repository and its "
-"build scripts. So to build our example plugins you have to:"
+"Windows build of plugins are linked with the daemon repository and its build"
+" scripts. So to build our example plugins you have to:"
 msgstr ""
 
 #: ../../../developer/jami-plugins.md:296
@@ -4718,8 +4714,8 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:8
 msgid ""
-"Lrc (Libringclient) is an interface between the clients and the daemon. "
-"It ensures to get the same behaviour for all client using it. "
+"Lrc (Libringclient) is an interface between the clients and the daemon. It "
+"ensures to get the same behaviour for all client using it. "
 "![Introduction](https://git.jami.net/savoirfairelinux/jami-"
 "project/uploads/01896b43f2a29d29e5148ad60e608846/Introduction.png)"
 msgstr ""
@@ -4734,8 +4730,8 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:17
 msgid ""
-"this class is an interface between lrc and the sqlite database. This "
-"class should not be called directly from the client."
+"this class is an interface between lrc and the sqlite database. This class "
+"should not be called directly from the client."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:20
@@ -4758,20 +4754,20 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:28
 msgid ""
-"When we need information about calls, members functions from the model "
-"can return NewCall::Info."
+"When we need information about calls, members functions from the model can "
+"return NewCall::Info."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:33
 msgid ""
-"When we need to perform some operation on a call, we pass it callId to "
-"the delegate performing the operation."
+"When we need to perform some operation on a call, we pass it callId to the "
+"delegate performing the operation."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:38
 msgid ""
-"note about the name : we are using New as prefix to avoid conflict with "
-"the current CallModel and Call objects."
+"note about the name : we are using New as prefix to avoid conflict with the "
+"current CallModel and Call objects."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:41
@@ -4794,14 +4790,14 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:49
 msgid ""
-"When we need information about contact(s), members functions from the "
-"model can return Contact::Info"
+"When we need information about contact(s), members functions from the model "
+"can return Contact::Info"
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:54
 msgid ""
-"When we need to perform some operation on a contact, we pass it uri to "
-"the delegate performing the operation."
+"When we need to perform some operation on a contact, we pass it uri to the "
+"delegate performing the operation."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:57
@@ -4820,27 +4816,25 @@ msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:61
 msgid ""
-"ConversationModel is an interface used to manage conversations and "
-"messages."
+"ConversationModel is an interface used to manage conversations and messages."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:66
 msgid ""
-"When we need information about some conversation(s), members functions "
-"from the model can return Conversation::Info. Conversation::Info contains"
-" Messages."
+"When we need information about some conversation(s), members functions from "
+"the model can return Conversation::Info. Conversation::Info contains "
+"Messages."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:72
 msgid ""
-"note about Message : so far, we didn't need a MessageModel, but this "
-"could be come soon."
+"note about Message : so far, we didn't need a MessageModel, but this could "
+"be come soon."
 msgstr ""
 
 #: ../../../developer/libjamiclient-documentation.md:75
 msgid ""
-"![Conversationmodel_conversation_message](https://git.jami.net/savoirfairelinux"
-"/jami-"
+"![Conversationmodel_conversation_message](https://git.jami.net/savoirfairelinux/jami-"
 "project/uploads/1b1ad190ef65b5aa088bbcb785645099/Conversationmodel_conversation_message.png)"
 msgstr ""
 
@@ -4870,8 +4864,8 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:4
 msgid ""
-"Every client generally must be able to show what peer read what message "
-"and get how many unread messages there is."
+"Every client generally must be able to show what peer read what message and "
+"get how many unread messages there is."
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:6
@@ -4888,19 +4882,20 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:46
 msgid ""
-"to set a message as displayed. Should be done when the interaction is "
-"shown and the conversation selected."
+"to set a message as displayed. Should be done when the interaction is shown "
+"and the conversation selected."
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:48
-msgid "This sends a SIP messages to connected peers with the following format:"
+msgid ""
+"This sends a SIP messages to connected peers with the following format:"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:66
 msgid ""
-"Then the peer will know this via `onMessageDisplayed` and emit a signal "
-"to the client (`DRing::ConfigurationSignal::AccountMessageStatusChanged` "
-"with status 3 (`DRing::Account::MessageStates::DISPLAYED`))"
+"Then the peer will know this via `onMessageDisplayed` and emit a signal to "
+"the client (`DRing::ConfigurationSignal::AccountMessageStatusChanged` with "
+"status 3 (`DRing::Account::MessageStates::DISPLAYED`))"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:68
@@ -4910,9 +4905,9 @@ msgstr ""
 #: ../../../developer/message-displayed-status.md:70
 msgid ""
 "By knowing the lastDisplayedMessage for our account, we can use this "
-"informations and `ConfigrationManager::countInteractionsSince` which "
-"count interaction since last message to a given message (typically last "
-"displayed interaction)"
+"informations and `ConfigrationManager::countInteractionsSince` which count "
+"interaction since last message to a given message (typically last displayed "
+"interaction)"
 msgstr ""
 
 #: ../../../developer/message-displayed-status.md:72
@@ -4928,9 +4923,9 @@ msgstr ""
 
 #: ../../../developer/message-displayed-status.md:76
 msgid ""
-"In `src/jamidht/conversation.cpp` each conversation store the last "
-"displayed messages in a map<string, string> (uri, interactionId) and this"
-" structure is serialized in "
+"In `src/jamidht/conversation.cpp` each conversation store the last displayed"
+" messages in a map<string, string> (uri, interactionId) and this structure "
+"is serialized in "
 "`fileutils::get_data_dir()/getAccountID()/conversation_data/repository_->id()/lastDisplayed`"
 msgstr ""
 
@@ -4940,253 +4935,260 @@ msgstr ""
 
 #: ../../../developer/name-server-protocol.md:4
 msgid ""
-"The protocol used by Jami to query and register a name is based on an "
-"HTTP "
-"[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API"
-" answering requests with JSON documents and regular HTTP status codes."
+"The protocol used by Jami to query and register a name is based on an HTTP "
+"[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API "
+"answering requests with JSON documents and regular HTTP status codes."
 msgstr ""
 
 #: ../../../developer/name-server-protocol.md:10
 msgid ""
-"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as"
-" its backend.  Another implementation could use any other database or "
+"The public nameserver is hosted at `ns.jami.net` and uses a blockchain as "
+"its backend.  Another implementation could use any other database or "
 "directory service making the nameserver protocol reusable."
 msgstr ""
 
 #: ../../../developer/name-server-protocol.md:14
+msgid ""
+"If you run your own nameserver, looking up a username in the form of "
+"`username@example.com` will look up the name `username` with the nameserver "
+"at `example.com`.  (There is no need to add `@ns.jami.net` to use the "
+"default nameserver.)"
+msgstr ""
+
+#: ../../../developer/name-server-protocol.md:19
 msgid "Rules on name formatting"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:17
-msgid "Usernames are checked by a regex to ensure some rules about their format:"
+#: ../../../developer/name-server-protocol.md:22
+msgid ""
+"Usernames are checked by a regex to ensure some rules about their format:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:20
+#: ../../../developer/name-server-protocol.md:25
 msgid "Length must be between 3 and 32 characters"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:21
+#: ../../../developer/name-server-protocol.md:26
 msgid ""
 "Those characters must be alphanumerical with underscore `_` being also "
 "accepted."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:24
+#: ../../../developer/name-server-protocol.md:29
 msgid "Querying a name"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:27
+#: ../../../developer/name-server-protocol.md:32
 msgid ""
-"This is the main service provided by a name server.  It enables getting "
-"the Jami ID corresponding to a username."
+"This is the main service provided by a name server.  It enables getting the "
+"Jami ID corresponding to a username."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:30
-#: ../../../developer/name-server-protocol.md:78
-#: ../../../developer/name-server-protocol.md:126
+#: ../../../developer/name-server-protocol.md:35
+#: ../../../developer/name-server-protocol.md:83
+#: ../../../developer/name-server-protocol.md:131
 msgid "Request"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:32
+#: ../../../developer/name-server-protocol.md:37
 msgid ""
-"A request for the name `foobar` is a `GET` request with "
-"`/name/`*`foobar`* as the URI."
+"A request for the name `foobar` is a `GET` request with `/name/`*`foobar`* "
+"as the URI."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:35
-#: ../../../developer/name-server-protocol.md:84
-#: ../../../developer/name-server-protocol.md:145
+#: ../../../developer/name-server-protocol.md:40
+#: ../../../developer/name-server-protocol.md:89
+#: ../../../developer/name-server-protocol.md:150
 msgid "Response (Success)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:37
+#: ../../../developer/name-server-protocol.md:42
 msgid ""
-"If the name is found, a response with status code `200` `OK` must be sent"
-" to the client with a `Content-type` field set as `application/json`."
+"If the name is found, a response with status code `200` `OK` must be sent to"
+" the client with a `Content-type` field set as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:41
+#: ../../../developer/name-server-protocol.md:46
 msgid ""
-"The body is a JSON documents with 2 string attributes : `name` and "
-"`addr`.  `name` is equal to the one requested and `addr` is an "
-"hexadecimal representation of the Jami ID prefixed with `0x`."
+"The body is a JSON documents with 2 string attributes : `name` and `addr`.  "
+"`name` is equal to the one requested and `addr` is an hexadecimal "
+"representation of the Jami ID prefixed with `0x`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:45
-#: ../../../developer/name-server-protocol.md:93
+#: ../../../developer/name-server-protocol.md:50
+#: ../../../developer/name-server-protocol.md:98
 msgid "In our example, the JSON answer would be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:54
-#: ../../../developer/name-server-protocol.md:101
+#: ../../../developer/name-server-protocol.md:59
+#: ../../../developer/name-server-protocol.md:106
 msgid "Response (Not found)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:56
+#: ../../../developer/name-server-protocol.md:61
 msgid ""
-"If the name is not found, a response with status code `404` `Not` `Found`"
-" must be sent to the client with a `Content-type` field set as "
+"If the name is not found, a response with status code `404` `Not` `Found` "
+"must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:60
-#: ../../../developer/name-server-protocol.md:107
+#: ../../../developer/name-server-protocol.md:65
+#: ../../../developer/name-server-protocol.md:112
 msgid ""
 "The body is a JSON documents with 1 string attribute : `error`.  This "
-"attribute is filled with an error message that explains the error (and "
-"could be displayed in the client in the future)."
+"attribute is filled with an error message that explains the error (and could"
+" be displayed in the client in the future)."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:64
-#: ../../../developer/name-server-protocol.md:111
+#: ../../../developer/name-server-protocol.md:69
+#: ../../../developer/name-server-protocol.md:116
 msgid "On the reference implementation, the returned document is:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:72
+#: ../../../developer/name-server-protocol.md:77
 msgid "Querying an address"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:75
+#: ../../../developer/name-server-protocol.md:80
 msgid ""
-"This service is a reverse lookup.  You query for an address and a "
-"username is returned if one is registered on the name server."
+"This service is a reverse lookup.  You query for an address and a username "
+"is returned if one is registered on the name server."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:80
+#: ../../../developer/name-server-protocol.md:85
 msgid ""
-"A request for the ID `ring:29347542eb07159f316577e1ae16243d152f6b7b` is a"
-" `GET` request with `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* "
-"as the URI."
+"A request for the ID `ring:29347542eb07159f316577e1ae16243d152f6b7b` is a "
+"`GET` request with `/addr/`*`29347542eb07159f316577e1ae16243d152f6b7b`* as "
+"the URI."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:86
+#: ../../../developer/name-server-protocol.md:91
 msgid ""
-"If the address corresponds to a username, a response with status code "
-"`200` `OK` must be sent to the client with a `Content-type` field set as "
+"If the address corresponds to a username, a response with status code `200` "
+"`OK` must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:90
+#: ../../../developer/name-server-protocol.md:95
 msgid ""
-"The body is a JSON documents with 1 string attribute : `name`.  The value"
-" of this field is the name registered to this address"
+"The body is a JSON documents with 1 string attribute : `name`.  The value of"
+" this field is the name registered to this address"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:103
+#: ../../../developer/name-server-protocol.md:108
 msgid ""
-"If the address is not found, a response with status code `404` `Not` "
-"`Found` must be sent to the client with a `Content-type` field set as "
+"If the address is not found, a response with status code `404` `Not` `Found`"
+" must be sent to the client with a `Content-type` field set as "
 "`application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:119
+#: ../../../developer/name-server-protocol.md:124
 msgid "Registering a name"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:122
+#: ../../../developer/name-server-protocol.md:127
 msgid ""
-"This part of the protocol is used to register a new name/address pair. It"
-" is used on the main public registry but may be optional in a custom "
+"This part of the protocol is used to register a new name/address pair. It is"
+" used on the main public registry but may be optional in a custom "
 "implementation."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:128
+#: ../../../developer/name-server-protocol.md:133
 msgid ""
 "A request for registering the name `foobar` is a `POST` request with "
-"`/name/`*`foobar`* as the URI. The header attribute `Content-type` must "
-"be set to `application/json`."
+"`/name/`*`foobar`* as the URI. The header attribute `Content-type` must be "
+"set to `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:132
+#: ../../../developer/name-server-protocol.md:137
 msgid ""
-"The body of the request is a JSON document with 2 string attributes: "
-"`addr` and `owner`.  `addr` contains the Jami ID prefixed with `0x` and "
-"`owner` is the name to be registered."
+"The body of the request is a JSON document with 2 string attributes: `addr` "
+"and `owner`.  `addr` contains the Jami ID prefixed with `0x` and `owner` is "
+"the name to be registered."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:136
+#: ../../../developer/name-server-protocol.md:141
 msgid "An example for `foobar` could be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:147
+#: ../../../developer/name-server-protocol.md:152
 msgid ""
-"If the name/address pair is successfully registered, a response with "
-"status code `200` `OK` must be sent to the client with a `Content-type` "
-"field set as `application/json`."
+"If the name/address pair is successfully registered, a response with status "
+"code `200` `OK` must be sent to the client with a `Content-type` field set "
+"as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:151
+#: ../../../developer/name-server-protocol.md:156
 msgid ""
-"The body contain a JSON document with 1 boolean attribute `success` set "
-"to `true`."
+"The body contain a JSON document with 1 boolean attribute `success` set to "
+"`true`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:154
+#: ../../../developer/name-server-protocol.md:159
 msgid "As an example:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:162
+#: ../../../developer/name-server-protocol.md:167
 msgid ""
-"Further attempts to query the name or the address should then be "
-"successful."
+"Further attempts to query the name or the address should then be successful."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:165
+#: ../../../developer/name-server-protocol.md:170
 msgid "Response (Bad request)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:167
+#: ../../../developer/name-server-protocol.md:172
 msgid ""
-"If the registration cannot be achieved because of an error in the request"
-" (formatting, missing attribute, etc.), a response with status code `400`"
-" `Bad` `Request` must be sent to the client with a `Content-type` field "
-"set as `application/json`."
+"If the registration cannot be achieved because of an error in the request "
+"(formatting, missing attribute, etc.), a response with status code `400` "
+"`Bad` `Request` must be sent to the client with a `Content-type` field set "
+"as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:172
+#: ../../../developer/name-server-protocol.md:177
 msgid ""
-"The body is a JSON documents with 2 attributes: `success` which is a "
-"boolean and `error` which is a string.  `success` is set to `false` and "
-"`error` is filled with an error message that explains the error (and "
-"could be displayed in the client in the future)."
+"The body is a JSON documents with 2 attributes: `success` which is a boolean"
+" and `error` which is a string.  `success` is set to `false` and `error` is "
+"filled with an error message that explains the error (and could be displayed"
+" in the client in the future)."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:177
+#: ../../../developer/name-server-protocol.md:182
 msgid "For an invalid formatting of the username, the body could be:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:186
+#: ../../../developer/name-server-protocol.md:191
 msgid "Response (Forbidden)"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:188
+#: ../../../developer/name-server-protocol.md:193
 msgid ""
-"If the registration cannot be achieved because the name is already taken,"
-" a response with status code `403` `Forbidden` must be sent to the client"
-" with a `Content-type` field set as `application/json`."
+"If the registration cannot be achieved because the name is already taken, a "
+"response with status code `403` `Forbidden` must be sent to the client with "
+"a `Content-type` field set as `application/json`."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:192
+#: ../../../developer/name-server-protocol.md:197
 msgid ""
-"The body is a JSON documents with 3 attributes: `success` which is a "
-"boolean set to `false`, `name` and `addr` which are both strings "
-"replicated from the original request."
+"The body is a JSON documents with 3 attributes: `success` which is a boolean"
+" set to `false`, `name` and `addr` which are both strings replicated from "
+"the original request."
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:196
+#: ../../../developer/name-server-protocol.md:201
 msgid ""
-"Registering `foobar`, with it being already registered, would lead to the"
-" following response:"
+"Registering `foobar`, with it being already registered, would lead to the "
+"following response:"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:207
+#: ../../../developer/name-server-protocol.md:212
 msgid "Some links"
 msgstr ""
 
-#: ../../../developer/name-server-protocol.md:210
+#: ../../../developer/name-server-protocol.md:215
 msgid ""
-"{gitlab-project}`jami-nameservice`: reference NodeJS implementation used "
-"by `ns.jami.net` and querying an Ethereum node."
+"{gitlab-project}`jami-nameservice`: reference NodeJS implementation used by "
+"`ns.jami.net` and querying an Ethereum node."
 msgstr ""
 
 #: ../../../developer/protocol.md:1 ../../../developer/swarm.md:378
@@ -5199,20 +5201,20 @@ msgstr ""
 
 #: ../../../developer/protocol.md:7
 msgid ""
-"A **Ring account** is defined by an **RSA key pair** with a key length of"
-" at least 4096 bits."
+"A **Ring account** is defined by an **RSA key pair** with a key length of at"
+" least 4096 bits."
 msgstr ""
 
 #: ../../../developer/protocol.md:10
 msgid ""
-"The standard x509 160-bits fingerprint of the account public key is "
-"called the **RingID**."
+"The standard x509 160-bits fingerprint of the account public key is called "
+"the **RingID**."
 msgstr ""
 
 #: ../../../developer/protocol.md:13
 msgid ""
-"The account public key is used as the subject of an x509 certificate that"
-" must be valid, have the Certificate Authority flag set, and can be self-"
+"The account public key is used as the subject of an x509 certificate that "
+"must be valid, have the Certificate Authority flag set, and can be self-"
 "signed. This certificate is called the **Ring account certificate**."
 msgstr ""
 
@@ -5236,8 +5238,8 @@ msgstr ""
 #: ../../../developer/protocol.md:27
 msgid ""
 "Access to a saved Ring account private key must be authenticated and "
-"authorized. Authentication and authorization method to access the account"
-" private key is implementation defined."
+"authorized. Authentication and authorization method to access the account "
+"private key is implementation defined."
 msgstr ""
 
 #: ../../../developer/protocol.md:31
@@ -5256,18 +5258,17 @@ msgstr ""
 
 #: ../../../developer/protocol.md:38
 msgid ""
-"A **device certificate** is defined as an x509 certificate whose subject "
-"is a device public key, signed with an account private key. The "
-"certificate MUST be valid. The issuer UID field MUST be the hexadecimal "
-"form of the account public key fingerprint."
+"A **device certificate** is defined as an x509 certificate whose subject is "
+"a device public key, signed with an account private key. The certificate "
+"MUST be valid. The issuer UID field MUST be the hexadecimal form of the "
+"account public key fingerprint."
 msgstr ""
 
 #: ../../../developer/protocol.md:43
 msgid ""
-"Persisting a device private key and certificate is implementation "
-"defined. Access to a saved device private key should be authenticated. "
-"Authentication method to access the device private key is implementation "
-"defined."
+"Persisting a device private key and certificate is implementation defined. "
+"Access to a saved device private key should be authenticated. Authentication"
+" method to access the device private key is implementation defined."
 msgstr ""
 
 #: ../../../developer/protocol.md:48
@@ -5276,11 +5277,11 @@ msgstr ""
 
 #: ../../../developer/protocol.md:50
 msgid ""
-"A device can be \"removed\" from a Ring account through revocation of the"
-" device certificate. Revoked device certificates are added to one or more"
-" standard x509 Certificate Revocation List (CRL). CRLs for revoked device"
-" must be valid and signed with the corresponding CA key, which is the "
-"Ring account private key."
+"A device can be \"removed\" from a Ring account through revocation of the "
+"device certificate. Revoked device certificates are added to one or more "
+"standard x509 Certificate Revocation List (CRL). CRLs for revoked device "
+"must be valid and signed with the corresponding CA key, which is the Ring "
+"account private key."
 msgstr ""
 
 #: ../../../developer/protocol.md:56
@@ -5289,9 +5290,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:58
 msgid ""
-"The **account archive format** defines how to serialize an account "
-"private key for transmission, for instance to sign a new device "
-"certificate."
+"The **account archive format** defines how to serialize an account private "
+"key for transmission, for instance to sign a new device certificate."
 msgstr ""
 
 #: ../../../developer/protocol.md:62
@@ -5313,8 +5313,8 @@ msgstr ""
 #: ../../../developer/protocol.md:83
 msgid ""
 "Where PIN is a random 32bits number in hexadecimal form, \"+\" is string "
-"concatenation, timestamp is the current UNIX timestamp divided by 1200 "
-"(20 minutes) and password is a user-chosen password."
+"concatenation, timestamp is the current UNIX timestamp divided by 1200 (20 "
+"minutes) and password is a user-chosen password."
 msgstr ""
 
 #: ../../../developer/protocol.md:87
@@ -5337,8 +5337,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:97
 msgid ""
-"A device listens for incoming call by performing a listen OpenDHT "
-"operation on"
+"A device listens for incoming call by performing a listen OpenDHT operation "
+"on"
 msgstr ""
 
 #: ../../../developer/protocol.md:100
@@ -5353,10 +5353,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:105
 msgid ""
-"Received OpenDHT values that are not encrypted or not properly signed "
-"must be dropped. The value must be encrypted with the called device "
-"public key and signed with the calling device private key according to "
-"OpenDHT specifications."
+"Received OpenDHT values that are not encrypted or not properly signed must "
+"be dropped. The value must be encrypted with the called device public key "
+"and signed with the calling device private key according to OpenDHT "
+"specifications."
 msgstr ""
 
 #: ../../../developer/protocol.md:110
@@ -5369,28 +5369,27 @@ msgstr ""
 
 #: ../../../developer/protocol.md:114
 msgid ""
-"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol"
-" for NAT traversal."
+"RFC 5245 defines ICE (Interactive Connectivity Establishment), a protocol "
+"for NAT traversal."
 msgstr ""
 
 #: ../../../developer/protocol.md:117
 msgid ""
-"ICE is used in Ring to establish a peer-to-peer communication between two"
-" devices."
+"ICE is used in Ring to establish a peer-to-peer communication between two "
+"devices."
 msgstr ""
 
 #: ../../../developer/protocol.md:120
 msgid ""
-"The calling device gathers candidates and build an Initial Offer "
-"according to the ICE specifications and starts the ICE negotiation "
-"process."
+"The calling device gathers candidates and build an Initial Offer according "
+"to the ICE specifications and starts the ICE negotiation process."
 msgstr ""
 
 #: ../../../developer/protocol.md:124
 msgid ""
-"The calling device puts the encrypted ICE offer (the Initial Offer) on "
-"the DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form "
-"of the called deviceID."
+"The calling device puts the encrypted ICE offer (the Initial Offer) on the "
+"DHT at h(\"callto\"+deviceID) where deviceID is the hexadecimal form of the "
+"called deviceID."
 msgstr ""
 
 #: ../../../developer/protocol.md:128
@@ -5406,14 +5405,14 @@ msgstr ""
 
 #: ../../../developer/protocol.md:134
 msgid ""
-"This protocol is a compound of msgpack values, successively packed in "
-"this order:"
+"This protocol is a compound of msgpack values, successively packed in this "
+"order:"
 msgstr ""
 
 #: ../../../developer/protocol.md:138
 msgid ""
-"an integer giving the version of ICE message format protocol used for the"
-" rest of the data. Current defined protocol version is **1**."
+"an integer giving the version of ICE message format protocol used for the "
+"rest of the data. Current defined protocol version is **1**."
 msgstr ""
 
 #: ../../../developer/protocol.md:139
@@ -5429,8 +5428,8 @@ msgstr ""
 #: ../../../developer/protocol.md:141
 msgid ""
 "an array of string, of the previous number entries, where each string "
-"describe the ICE candidate, formated as an \"a=\" line (without the "
-"\"a=\" header) described in [rfc5245, section "
+"describe the ICE candidate, formated as an \"a=\" line (without the \"a=\" "
+"header) described in [rfc5245, section "
 "4.3](https://tools.ietf.org/html/rfc5245#page-26)"
 msgstr ""
 
@@ -5440,27 +5439,27 @@ msgstr ""
 
 #: ../../../developer/protocol.md:145
 msgid ""
-"Upon reception of the encrypted and signed Initial ICE Offer (through the"
-" listen operation), a called device should perform authorization checks "
-"of the calling device, identified as the Initial Offer signer. "
-"Authorization rules are implementation defined, but a typical "
-"implementation would authorize known or trusted contacts."
+"Upon reception of the encrypted and signed Initial ICE Offer (through the "
+"listen operation), a called device should perform authorization checks of "
+"the calling device, identified as the Initial Offer signer. Authorization "
+"rules are implementation defined, but a typical implementation would "
+"authorize known or trusted contacts."
 msgstr ""
 
 #: ../../../developer/protocol.md:151
 #: ../../../developer/technical-overview.md:227
 msgid ""
-"If the calling device is not authorized or if for any implementation "
-"defined reason the called device refuses the incoming connection request,"
-" the called device must ignore the Initial Offer and may log the event."
+"If the calling device is not authorized or if for any implementation defined"
+" reason the called device refuses the incoming connection request, the "
+"called device must ignore the Initial Offer and may log the event."
 msgstr ""
 
 #: ../../../developer/protocol.md:156
 #: ../../../developer/technical-overview.md:231
 msgid ""
-"If the called device authorizes the caller and wish to accept the "
-"connection it must build an ICE answer, start the ICE negotiation process"
-" and send the encrypted and signed ICE answer at the same DHT key."
+"If the called device authorizes the caller and wish to accept the connection"
+" it must build an ICE answer, start the ICE negotiation process and send the"
+" encrypted and signed ICE answer at the same DHT key."
 msgstr ""
 
 #: ../../../developer/protocol.md:161
@@ -5470,10 +5469,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:163
 msgid ""
-"Once a peer-to-peer communication channel has been established, the "
-"called device listens on it for incoming DTLS connections (acting as a "
-"DTLS server) while the caller initiates an outgoing DTLS connection "
-"(acting as a DTLS client)."
+"Once a peer-to-peer communication channel has been established, the called "
+"device listens on it for incoming DTLS connections (acting as a DTLS server)"
+" while the caller initiates an outgoing DTLS connection (acting as a DTLS "
+"client)."
 msgstr ""
 
 #: ../../../developer/protocol.md:168
@@ -5485,15 +5484,15 @@ msgstr ""
 #: ../../../developer/protocol.md:171
 msgid ""
 "Peers must only support PFS cypher suites. The set of supported cypher "
-"suites is implementation defined but should include at least ECDHE-AES-"
-"GCM (TODO: specify the exact suites recommended to support)."
+"suites is implementation defined but should include at least ECDHE-AES-GCM "
+"(TODO: specify the exact suites recommended to support)."
 msgstr ""
 
 #: ../../../developer/protocol.md:175
 msgid ""
-"During the DTLS handshake, both peers must provide their respective "
-"device certificate chain and must authenticate the other peer, checking "
-"that its public key is the same used during the DHT ICE exchange."
+"During the DTLS handshake, both peers must provide their respective device "
+"certificate chain and must authenticate the other peer, checking that its "
+"public key is the same used during the DHT ICE exchange."
 msgstr ""
 
 #: ../../../developer/protocol.md:179
@@ -5506,10 +5505,10 @@ msgstr ""
 
 #: ../../../developer/protocol.md:183
 msgid ""
-"Once an encrypted and authenticated peer-to-peer communication channel is"
-" available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) "
-"must be used to place a call and send messages. The caller might send a "
-"SIP INVITE as soon as the DTLS channel is established."
+"Once an encrypted and authenticated peer-to-peer communication channel is "
+"available, the SIP protocol [2](https://tools.ietf.org/html/rfc3261) must be"
+" used to place a call and send messages. The caller might send a SIP INVITE "
+"as soon as the DTLS channel is established."
 msgstr ""
 
 #: ../../../developer/protocol.md:188
@@ -5519,16 +5518,16 @@ msgstr ""
 
 #: ../../../developer/protocol.md:190
 msgid ""
-"Supported codecs are implementation defined, but Ring clients should "
-"support the Opus audio coded and the H264 video codec."
+"Supported codecs are implementation defined, but Ring clients should support"
+" the Opus audio coded and the H264 video codec."
 msgstr ""
 
 #: ../../../developer/protocol.md:193
 #: ../../../developer/technical-overview.md:275
 msgid ""
-"SRTP must be used when negotiating media with SIP, using a new random key"
-" for each media and each negotiation. ICE should be used when negotiating"
-" media with SIP."
+"SRTP must be used when negotiating media with SIP, using a new random key "
+"for each media and each negotiation. ICE should be used when negotiating "
+"media with SIP."
 msgstr ""
 
 #: ../../../developer/protocol.md:197
@@ -5547,8 +5546,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:205
 msgid ""
-"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = "
-"2\\^16 (64 MiB), mono-threaded, to generate a 512 bits hash."
+"Passwords are stretched using argon2i using t\\_cost = 16, m\\_cost = 2\\^16"
+" (64 MiB), mono-threaded, to generate a 512 bits hash."
 msgstr ""
 
 #: ../../../developer/protocol.md:208
@@ -5567,8 +5566,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:215
 msgid ""
-"Encryption uses standard AES-GCM as implemented by Nettle using a random "
-"IV for each encryption."
+"Encryption uses standard AES-GCM as implemented by Nettle using a random IV "
+"for each encryption."
 msgstr ""
 
 #: ../../../developer/protocol.md:218
@@ -5577,8 +5576,8 @@ msgstr ""
 
 #: ../../../developer/protocol.md:220
 msgid ""
-"The password is stretched to generate a 256 bits key and a random salt of"
-" 128 bits."
+"The password is stretched to generate a 256 bits key and a random salt of "
+"128 bits."
 msgstr ""
 
 #: ../../../developer/protocol.md:223
@@ -5592,11 +5591,13 @@ msgid "During a call"
 msgstr ""
 
 #: ../../../developer/protocol.md:228
-msgid "Audio/video data are exchanged using encrypted RTP channels between peers."
+msgid ""
+"Audio/video data are exchanged using encrypted RTP channels between peers."
 msgstr ""
 
 #: ../../../developer/protocol.md:231
-msgid "The protocol is a classic SRTP, with following supported crypto suites:"
+msgid ""
+"The protocol is a classic SRTP, with following supported crypto suites:"
 msgstr ""
 
 #: ../../../developer/protocol.md:233
@@ -5604,9 +5605,7 @@ msgid "Ring account force AES\\_CM\\_128\\_HMAC\\_SHA1\\_80"
 msgstr ""
 
 #: ../../../developer/protocol.md:234
-msgid ""
-"SIP can use AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 or "
-"AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
+msgid "SIP can use AES\\_CM\\_128\\_HMAC\\_SHA1\\_80 or AES\\_CM\\_128\\_HMAC\\_SHA1\\_32"
 msgstr ""
 
 #: ../../../developer/protocol.md:237
@@ -5617,11 +5616,11 @@ msgstr ""
 
 #: ../../../developer/protocol.md:240
 msgid ""
-"The keys are exchanged using SDES method: keys are written into the SIP "
-"SDP messages during the SIP INVITE negotiation. When SDES is used, Ring "
-"forces the underlaying transport to be secure (encrypted) to not disclose"
-" these keys. Ring supports DTLS natively for SIP and Ring accounts for "
-"such. The call cannot be done if this condition is not fulfilled."
+"The keys are exchanged using SDES method: keys are written into the SIP SDP "
+"messages during the SIP INVITE negotiation. When SDES is used, Ring forces "
+"the underlaying transport to be secure (encrypted) to not disclose these "
+"keys. Ring supports DTLS natively for SIP and Ring accounts for such. The "
+"call cannot be done if this condition is not fulfilled."
 msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:1
@@ -5638,10 +5637,10 @@ msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:6
 msgid ""
-"Both signals and slots should use camelCase. A signal should use the "
-"simple past tense or past participle of some verb, likely prefixed by a "
-"short subject. A corresponding slot should be the signal prefixed with "
-"the word \"on\" and not the word \"slot\". Here are some examples:"
+"Both signals and slots should use camelCase. A signal should use the simple "
+"past tense or past participle of some verb, likely prefixed by a short "
+"subject. A corresponding slot should be the signal prefixed with the word "
+"\"on\" and not the word \"slot\". Here are some examples:"
 msgstr ""
 
 #: ../../../developer/qt-qml-coding-style.md:29
@@ -5656,11 +5655,11 @@ msgstr ""
 #: ../../../developer/qt-qml-coding-style.md:31
 msgid ""
 "The Qt 5.15.0 version of qmlformat has some issues dealing with comment "
-"sections and currently does not discriminate against max columns, so we "
-"will continue to format using these guidelines for now. The following is "
-"a comprehensive sample component, adapted from https://doc.qt.io/qt-5"
-"/qml-codingconventions.html, that attempts to illustrate the ideally "
-"formatted component."
+"sections and currently does not discriminate against max columns, so we will"
+" continue to format using these guidelines for now. The following is a "
+"comprehensive sample component, adapted from https://doc.qt.io/qt-5/qml-"
+"codingconventions.html, that attempts to illustrate the ideally formatted "
+"component."
 msgstr ""
 
 #: ../../../developer/qt-qml-testing-tools.md:1
@@ -5714,75 +5713,74 @@ msgstr ""
 
 #: ../../../developer/release-process.md:8
 msgid ""
-"Having a unique revision is not a solution in this situation. The "
-"retained idea is having a global \"state\" and **various updates per "
-"module**."
+"Having a unique revision is not a solution in this situation. The retained "
+"idea is having a global \"state\" and **various updates per module**."
 msgstr ""
 
 #: ../../../developer/release-process.md:12
 msgid ""
 "For consistency, **each Ring module has to follow the same process** as "
-"described in following points. But not all modules have to be modified in"
-" same time."
+"described in following points. But not all modules have to be modified in "
+"same time."
 msgstr ""
 
 #: ../../../developer/release-process.md:18
 msgid "**PROCESS FLOW:**"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "1"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "2"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "3"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "4"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "5"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 msgid "6"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:26
 msgid "Redmine Ticket"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:33
 msgid "Repository Preparation"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:38
 msgid "Testing"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:54
 msgid "Push tags"
 msgstr ""
 
-#: ../../../developer/release-process.md
+#: ../../../developer/release-process.md:0
 #: ../../../developer/release-process.md:178
 msgid "Advertisement"
 msgstr ""
 
 #: ../../../developer/release-process.md:29
 msgid ""
-"Create a new Task on redmine attached to the release story, for the right"
-" sub-module. Set the title to \"Release Major.Minor.Micro\", with the "
+"Create a new Task on redmine attached to the release story, for the right "
+"sub-module. Set the title to \"Release Major.Minor.Micro\", with the "
 "appropriate version number."
 msgstr ""
 
@@ -5796,8 +5794,8 @@ msgstr ""
 
 #: ../../../developer/release-process.md:42
 msgid ""
-"Start with clean git tree by running `git clean -d -f -x` from the top "
-"level directory of the project."
+"Start with clean git tree by running `git clean -d -f -x` from the top level"
+" directory of the project."
 msgstr ""
 
 #: ../../../developer/release-process.md:44
@@ -5820,14 +5818,14 @@ msgstr ""
 
 #: ../../../developer/release-process.md:49
 msgid ""
-"Try making calls between Ring and other free softphones (Ekiga, "
-"Linphone), as well as hardware VoIP phones."
+"Try making calls between Ring and other free softphones (Ekiga, Linphone), "
+"as well as hardware VoIP phones."
 msgstr ""
 
 #: ../../../developer/release-process.md:51
 msgid ""
-"To catch uninitialized values being used, memory leaks, invalid frees, "
-"etc. run `valgrind --track-origins=yes --db-attach=yes ./bin/dring`"
+"To catch uninitialized values being used, memory leaks, invalid frees, etc. "
+"run `valgrind --track-origins=yes --db-attach=yes ./bin/dring`"
 msgstr ""
 
 #: ../../../developer/release-process.md:57
@@ -5852,8 +5850,8 @@ msgstr ""
 #: ../../../developer/release-process.md:100
 #: ../../../developer/release-process.md:165
 msgid ""
-"You just have to launch release script. This script launch build, "
-"download and update files and repositories..."
+"You just have to launch release script. This script launch build, download "
+"and update files and repositories..."
 msgstr ""
 
 #: ../../../developer/release-process.md:121
@@ -5876,8 +5874,8 @@ msgstr ""
 
 #: ../../../developer/release-process.md:186
 msgid ""
-"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring"
-" Major.Minor.Patch released\""
+"by email to ring@lists.savoirfairelinux.net with the subject line: \"Ring "
+"Major.Minor.Patch released\""
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:1
@@ -5899,10 +5897,10 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:11
 msgid ""
-"In this guide, we will setup a [coturn](https://github.com/coturn/coturn)"
-" server. There are other TURN/STUN server implementations available under"
-" a free license, such as [TurnServer](http://turnserver.sourceforge.net/)"
-" and [Restund](http://www.creytiv.com/restund.html)."
+"In this guide, we will setup a [coturn](https://github.com/coturn/coturn) "
+"server. There are other TURN/STUN server implementations available under a "
+"free license, such as [TurnServer](http://turnserver.sourceforge.net/) and "
+"[Restund](http://www.creytiv.com/restund.html)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:17
@@ -5911,8 +5909,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:19
 msgid ""
-"COTURN is available in most Linux distributions. On Debian, install it "
-"with the following command:"
+"COTURN is available in most Linux distributions. On Debian, install it with "
+"the following command:"
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:25
@@ -5925,8 +5923,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:38
 msgid ""
-"This also will function as a STUN server. The STUN server does not "
-"require a username and password (STUN uses very little bandwidth)."
+"This also will function as a STUN server. The STUN server does not require a"
+" username and password (STUN uses very little bandwidth)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:41
@@ -5935,8 +5933,8 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:43
 msgid ""
-"To create users on your TURN server, use the `turnadmin` binary (this "
-"might require superuser permissions)."
+"To create users on your TURN server, use the `turnadmin` binary (this might "
+"require superuser permissions)."
 msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:50
@@ -5949,63 +5947,63 @@ msgstr ""
 
 #: ../../../developer/setting-up-your-own-turn-server.md:58
 msgid ""
-"You can configure Jami to use your TURN server from the advanced section "
-"of your account settings:"
+"You can configure Jami to use your TURN server from the advanced section of "
+"your account settings:"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Field"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "Value"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**server url**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "host and port of your server"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "0.0.0.0:10000"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**username**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "username"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "bob"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**password**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "password"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "secretpassword"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "**realm**"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "realm"
 msgstr ""
 
-#: ../../../developer/setting-up-your-own-turn-server.md
+#: ../../../developer/setting-up-your-own-turn-server.md:0
 msgid "sfl"
 msgstr ""
 
@@ -6027,8 +6025,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:11
 msgid ""
-"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create "
-"the Review>`"
+"{ref}`Creating a gerrit review <developer/working-with-gerrit:To Create the "
+"Review>`"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:13
@@ -6045,8 +6043,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:22
 msgid ""
-"Your identification has been saved in `jami_gerrit_review_rsa`. Your "
-"public key has been saved in `jami_gerrit_review_rsa.pub.`"
+"Your identification has been saved in `jami_gerrit_review_rsa`. Your public "
+"key has been saved in `jami_gerrit_review_rsa.pub.`"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:25
@@ -6080,14 +6078,15 @@ msgid "Your Repository"
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:35
-msgid "This *assumes* you have moved any existing project clone out of the way."
+msgid ""
+"This *assumes* you have moved any existing project clone out of the way."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:37
 msgid ""
 "Clone a (fresh) copy of the project. `git clone "
-"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. "
-"`git clone ssh://foo@review.jami.net:29420/jami-project.git`."
+"ssh://USERNAME@review.jami.net:29420/PROJECT_NAME_GOES_HERE.git`; e.g. `git "
+"clone ssh://foo@review.jami.net:29420/jami-project.git`."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:38
@@ -6104,8 +6103,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:45
 msgid ""
-"The script creates a unique Change_Id:hash for each commit made from your"
-" repository."
+"The script creates a unique Change_Id:hash for each commit made from your "
+"repository."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:48
@@ -6116,8 +6115,8 @@ msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:51
 msgid ""
-"Gerrit will also present a secure copy (scp) string. Use *that* to "
-"download a copy of .git/hooks/commit-msg."
+"Gerrit will also present a secure copy (scp) string. Use *that* to download "
+"a copy of .git/hooks/commit-msg."
 msgstr ""
 
 #: ../../../developer/submitting-your-first-patch.md:55
@@ -6151,11 +6150,11 @@ msgstr ""
 #: ../../../developer/swarm.md:7
 msgid ""
 "A *swarm* is a group able to discuss without any central authority in a "
-"resilient way. Indeed, if two person doesn't have any connectivity with "
-"the rest of the group (ie Internet outage) but they can contact each "
-"other (in a LAN for example or in a subnetwork), they will be able to "
-"send messages to each other and then, will be able to sync with the rest "
-"of the group when it's possible."
+"resilient way. Indeed, if two person doesn't have any connectivity with the "
+"rest of the group (ie Internet outage) but they can contact each other (in a"
+" LAN for example or in a subnetwork), they will be able to send messages to "
+"each other and then, will be able to sync with the rest of the group when "
+"it's possible."
 msgstr ""
 
 #: ../../../developer/swarm.md:9
@@ -6168,8 +6167,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:11
 msgid ""
-"Syncing of the history. Anyone must be able to send a message to the "
-"whole group."
+"Syncing of the history. Anyone must be able to send a message to the whole "
+"group."
 msgstr ""
 
 #: ../../../developer/swarm.md:12
@@ -6178,8 +6177,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:13
 msgid ""
-"Non-repudiation. Devices must be able to verify old messages' validity "
-"and to replay the whole history."
+"Non-repudiation. Devices must be able to verify old messages' validity and "
+"to replay the whole history."
 msgstr ""
 
 #: ../../../developer/swarm.md:14
@@ -6187,7 +6186,8 @@ msgid "PFS on the transport. Storage is managed by the device."
 msgstr ""
 
 #: ../../../developer/swarm.md:16
-msgid "The main idea is to get a synchronized Merkle tree with the participants."
+msgid ""
+"The main idea is to get a synchronized Merkle tree with the participants."
 msgstr ""
 
 #: ../../../developer/swarm.md:18
@@ -6252,9 +6252,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:36
 msgid ""
-"Bob announces to his other devices that he creates a new conversation. "
-"This is done via an invite to join the swarm sent through the DHT to "
-"other devices linked to that account."
+"Bob announces to his other devices that he creates a new conversation. This "
+"is done via an invite to join the swarm sent through the DHT to other "
+"devices linked to that account."
 msgstr ""
 
 #: ../../../developer/swarm.md:38
@@ -6301,8 +6301,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:53
 msgid ""
-"Alice pull the git repo of Bob. **WARNING this means that messages need a"
-" connection, not from the DHT like today**"
+"Alice pull the git repo of Bob. **WARNING this means that messages need a "
+"connection, not from the DHT like today**"
 msgstr ""
 
 #: ../../../developer/swarm.md:54
@@ -6311,16 +6311,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:55
 msgid ""
-"To validate that Alice is a member, she removes the invite from "
-"`/invited` directory, then adds her certificate into the `/members` "
-"directory"
+"To validate that Alice is a member, she removes the invite from `/invited` "
+"directory, then adds her certificate into the `/members` directory"
 msgstr ""
 
 #: ../../../developer/swarm.md:56
 msgid ""
-"Once all commits validated and on her device, other members of the group "
-"are discovered by Alice. with these peers, she will construct the **DRT**"
-" (explained below) with Bob as a bootstrap."
+"Once all commits validated and on her device, other members of the group are"
+" discovered by Alice. with these peers, she will construct the **DRT** "
+"(explained below) with Bob as a bootstrap."
 msgstr ""
 
 #: ../../../developer/swarm.md:58
@@ -6345,18 +6344,18 @@ msgstr ""
 msgid ""
 "and adds her device and CRL to the repository if missing (others must be "
 "able to verify the commit). Merge conflicts are avoided because we are "
-"mostly based on commit messages, not files (unless CRLS + certificates "
-"but they are located). then she announces the new commit via the **DRT** "
-"with a service message (explained later) and pings the DHT for mobile "
-"devices (they must receive a push notification)."
+"mostly based on commit messages, not files (unless CRLS + certificates but "
+"they are located). then she announces the new commit via the **DRT** with a "
+"service message (explained later) and pings the DHT for mobile devices (they"
+" must receive a push notification)."
 msgstr ""
 
 #: ../../../developer/swarm.md:68
 msgid ""
-"For pinging other devices, the sender sends to other members a SIP "
-"message with mimetype = \"application/im-gitmessage-id\" containing a "
-"JSON with the \"deviceId\" which sends the message, the \"id\" of the "
-"conversation related, and the \"commit\""
+"For pinging other devices, the sender sends to other members a SIP message "
+"with mimetype = \"application/im-gitmessage-id\" containing a JSON with the "
+"\"deviceId\" which sends the message, the \"id\" of the conversation "
+"related, and the \"commit\""
 msgstr ""
 
 #: ../../../developer/swarm.md:70
@@ -6383,8 +6382,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:77
 msgid ""
-"If all commits are not valid, pull is canceled. *Alice* must reestablish "
-"her state to a correct state. **TODO process*"
+"If all commits are not valid, pull is canceled. *Alice* must reestablish her"
+" state to a correct state. **TODO process*"
 msgstr ""
 
 #: ../../../developer/swarm.md:79
@@ -6394,28 +6393,28 @@ msgstr ""
 #: ../../../developer/swarm.md:81
 msgid ""
 "To avoid users pushing some unwanted commits (with conflicts, false "
-"messages, etc), this is how each commit (from the oldest to the newest "
-"one) MUST be validated before merging a remote branch:"
+"messages, etc), this is how each commit (from the oldest to the newest one) "
+"MUST be validated before merging a remote branch:"
 msgstr ""
 
 #: ../../../developer/swarm.md:83
 msgid ""
-"Note: if the validation fails, the fetch is ignored and we do not merge "
-"the branch (and remove the data), and the user should be notified Note2: "
-"If a fetch is too big, it's not done (**TODO**)"
+"Note: if the validation fails, the fetch is ignored and we do not merge the "
+"branch (and remove the data), and the user should be notified Note2: If a "
+"fetch is too big, it's not done (**TODO**)"
 msgstr ""
 
 #: ../../../developer/swarm.md:86
 msgid ""
 "For each commits, check that the device that tries to send the commit is "
-"authorized at this moment and that the certificates are present (in "
-"/devices for the device, and in /members or /admins for the issuer)."
+"authorized at this moment and that the certificates are present (in /devices"
+" for the device, and in /members or /admins for the issuer)."
 msgstr ""
 
 #: ../../../developer/swarm.md:87
 msgid ""
-"3 cases. The commit has 2 parents, so it's a merge, nothing more to "
-"validate here"
+"3 cases. The commit has 2 parents, so it's a merge, nothing more to validate"
+" here"
 msgstr ""
 
 #: ../../../developer/swarm.md:88
@@ -6533,8 +6532,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:120
 msgid ""
-"else fail. Notify the user that they may be with an old version or that "
-"peer tried to submit unwanted commits"
+"else fail. Notify the user that they may be with an old version or that peer"
+" tried to submit unwanted commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:123
@@ -6547,8 +6546,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:127
 msgid ""
-"This is one of the most difficult scenarios in our context. Without "
-"central authority we can't trust:"
+"This is one of the most difficult scenarios in our context. Without central "
+"authority we can't trust:"
 msgstr ""
 
 #: ../../../developer/swarm.md:129
@@ -6557,24 +6556,24 @@ msgstr ""
 
 #: ../../../developer/swarm.md:130
 msgid ""
-"Conflicts with banned devices. If multiple admin devices are present and "
-"if Alice can speak with Bob but not Denys and Carla; Carla can speak with"
-" Denys; Denys bans Alice, Alice bans Denys, what will be the state when "
-"the 4 members will merge the conversations."
+"Conflicts with banned devices. If multiple admin devices are present and if "
+"Alice can speak with Bob but not Denys and Carla; Carla can speak with "
+"Denys; Denys bans Alice, Alice bans Denys, what will be the state when the 4"
+" members will merge the conversations."
 msgstr ""
 
 #: ../../../developer/swarm.md:131
 msgid ""
-"A device can be compromised, stolen or its certificate can expire. We "
-"should be able to ban a device and avoid that it lies about its "
-"expiration or send messages in the past (by changing its certificate or "
-"the timestamp of its commit)."
+"A device can be compromised, stolen or its certificate can expire. We should"
+" be able to ban a device and avoid that it lies about its expiration or send"
+" messages in the past (by changing its certificate or the timestamp of its "
+"commit)."
 msgstr ""
 
 #: ../../../developer/swarm.md:133
 msgid ""
-"Similar systems (with distributed group systems) are not so much, but "
-"these are some examples:"
+"Similar systems (with distributed group systems) are not so much, but these "
+"are some examples:"
 msgstr ""
 
 #: ../../../developer/swarm.md:135
@@ -6591,9 +6590,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:138
 msgid ""
-"This voting system needs a human action to ban someone or must be based "
-"on the CRLs info from the repository (because we can't trust external "
-"CRLs)"
+"This voting system needs a human action to ban someone or must be based on "
+"the CRLs info from the repository (because we can't trust external CRLs)"
 msgstr ""
 
 #: ../../../developer/swarm.md:140
@@ -6603,15 +6601,15 @@ msgstr ""
 #: ../../../developer/swarm.md:142
 msgid ""
 "This is the only part that MUST have a consensus to avoid conversation's "
-"split, like if two members kick each other from the conversation, what "
-"will see the third one?"
+"split, like if two members kick each other from the conversation, what will "
+"see the third one?"
 msgstr ""
 
 #: ../../../developer/swarm.md:144
 msgid ""
-"This is needed to detect revoked devices, or simply avoid getting "
-"unwanted people present in a public room. The process is pretty similar "
-"between a member and a device:"
+"This is needed to detect revoked devices, or simply avoid getting unwanted "
+"people present in a public room. The process is pretty similar between a "
+"member and a device:"
 msgstr ""
 
 #: ../../../developer/swarm.md:146
@@ -6625,24 +6623,23 @@ msgstr ""
 #: ../../../developer/swarm.md:150
 msgid ""
 "First, she votes for banning Bob. To do that, she creates the file in "
-"/votes/ban/members/uri_bob/uri_alice (members can be replaced by devices "
-"for a device, or invited for invites or admins for admins) and commits"
+"/votes/ban/members/uri_bob/uri_alice (members can be replaced by devices for"
+" a device, or invited for invites or admins for admins) and commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:151 ../../../developer/swarm.md:157
-#, python-format
 msgid ""
-"Then she checks if the vote is resolved. This means that >50% of the "
-"admins agree to ban Bob (if she is alone, it's sure it's more than 50%)."
+"Then she checks if the vote is resolved. This means that >50% of the admins "
+"agree to ban Bob (if she is alone, it's sure it's more than 50%)."
 msgstr ""
 
 #: ../../../developer/swarm.md:152
 msgid ""
-"If the vote is resolved, files into /votes/ban can be removed, all files "
-"for Bob in /members, /admins, /invited, /CRLs, /devices can be removed "
-"(or only in /devices if it's a device that is banned) and Bob's "
-"certificate can be placed into /banned/members/bob_uri.crt (or "
-"/banned/devices/uri.crt if a device is banned) and committed to the repo"
+"If the vote is resolved, files into /votes/ban can be removed, all files for"
+" Bob in /members, /admins, /invited, /CRLs, /devices can be removed (or only"
+" in /devices if it's a device that is banned) and Bob's certificate can be "
+"placed into /banned/members/bob_uri.crt (or /banned/devices/uri.crt if a "
+"device is banned) and committed to the repo"
 msgstr ""
 
 #: ../../../developer/swarm.md:153
@@ -6656,17 +6653,15 @@ msgstr ""
 #: ../../../developer/swarm.md:156
 msgid ""
 "Fir she votes for unbanning Bob. To do that, she creates the file in "
-"/votes/unban/members/uri_bob/uri_alice (members can be replaced by "
-"devices for a device, or invited for invites or admins for admins) and "
-"commits"
+"/votes/unban/members/uri_bob/uri_alice (members can be replaced by devices "
+"for a device, or invited for invites or admins for admins) and commits"
 msgstr ""
 
 #: ../../../developer/swarm.md:158
 msgid ""
-"If the vote is resolved, files into /votes/unban can be removed, all "
-"files for Bob in /members, /admins, /invited, /CRLs, can be re-added (or "
-"only in /devices if it's a device that is unbanned) and committed to the "
-"repo"
+"If the vote is resolved, files into /votes/unban can be removed, all files "
+"for Bob in /members, /admins, /invited, /CRLs, can be re-added (or only in "
+"/devices if it's a device that is unbanned) and committed to the repo"
 msgstr ""
 
 #: ../../../developer/swarm.md:160
@@ -6675,9 +6670,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:162
 msgid ""
-"Save in convInfos removed=time::now() (like removeContact saves in "
-"contacts) that the conversation is removed and sync with other user's "
-"devices"
+"Save in convInfos removed=time::now() (like removeContact saves in contacts)"
+" that the conversation is removed and sync with other user's devices"
 msgstr ""
 
 #: ../../../developer/swarm.md:163
@@ -6686,29 +6680,28 @@ msgstr ""
 
 #: ../../../developer/swarm.md:164
 msgid ""
-"Now, if Jami startup and the repo is still present, the conversation is "
-"not announced to clients"
+"Now, if Jami startup and the repo is still present, the conversation is not "
+"announced to clients"
 msgstr ""
 
 #: ../../../developer/swarm.md:165
 msgid ""
 "Two cases:  a. If no other member in the conversation we can immediately "
-"remove the repository  b. If still other members, commit that we leave "
-"the conversation, and now wait that at least another device sync this "
-"message. This avoids the fact that other members will still detect the "
-"user as a valid member and still sends new message notifications."
+"remove the repository  b. If still other members, commit that we leave the "
+"conversation, and now wait that at least another device sync this message. "
+"This avoids the fact that other members will still detect the user as a "
+"valid member and still sends new message notifications."
 msgstr ""
 
 #: ../../../developer/swarm.md:168
 msgid ""
-"When we are sure that someone is synched, remove erased=time::now() and "
-"sync with other user's devices"
+"When we are sure that someone is synched, remove erased=time::now() and sync"
+" with other user's devices"
 msgstr ""
 
 #: ../../../developer/swarm.md:169
 msgid ""
-"All devices owned by the user can now erase the repository and related "
-"files"
+"All devices owned by the user can now erase the repository and related files"
 msgstr ""
 
 #: ../../../developer/swarm.md:171
@@ -6717,15 +6710,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:173
 msgid ""
-"Modes can't be changed through time. Or it's another conversation. So, "
-"this data is stored in the initial commit message. The commit message "
-"will be the following:"
+"Modes can't be changed through time. Or it's another conversation. So, this "
+"data is stored in the initial commit message. The commit message will be the"
+" following:"
 msgstr ""
 
 #: ../../../developer/swarm.md:184
 msgid ""
-"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), "
-"2 (INVITES_ONLY), 3 (PUBLIC)"
+"For now, \"mode\" accepts values 0 (ONE_TO_ONE), 1 (ADMIN_INVITES_ONLY), 2 "
+"(INVITES_ONLY), 3 (PUBLIC)"
 msgstr ""
 
 #: ../../../developer/swarm.md:186
@@ -6735,16 +6728,15 @@ msgstr ""
 #: ../../../developer/swarm.md:188
 msgid ""
 "The goal here is to keep the old API (addContact/removeContact, "
-"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate "
-"swarm with a peer and its contact. This still implies some changes that "
-"we cannot ignore:"
+"sendTrustRequest/acceptTrustRequest/discardTrustRequest) to generate swarm "
+"with a peer and its contact. This still implies some changes that we cannot "
+"ignore:"
 msgstr ""
 
 #: ../../../developer/swarm.md:190
 msgid ""
-"The process is still the same, an account can add a contact via "
-"addContact, then send a TrustRequest via the DHT. But two changes are "
-"necessary:"
+"The process is still the same, an account can add a contact via addContact, "
+"then send a TrustRequest via the DHT. But two changes are necessary:"
 msgstr ""
 
 #: ../../../developer/swarm.md:191
@@ -6755,11 +6747,11 @@ msgstr ""
 
 #: ../../../developer/swarm.md:192
 msgid ""
-"TrustRequest are retried when contact come backs online. It's not the "
-"case today (as we don't want to generate a new TrustRequest if the peer "
-"discard the first). So, if an account receives a trust request, it will "
-"be automatically ignored if the request with a related conversation is "
-"declined (as convRequests are synched)"
+"TrustRequest are retried when contact come backs online. It's not the case "
+"today (as we don't want to generate a new TrustRequest if the peer discard "
+"the first). So, if an account receives a trust request, it will be "
+"automatically ignored if the request with a related conversation is declined"
+" (as convRequests are synched)"
 msgstr ""
 
 #: ../../../developer/swarm.md:194
@@ -6770,10 +6762,10 @@ msgstr ""
 
 #: ../../../developer/swarm.md:196
 msgid ""
-"removeContact() will remove the contact and related 1:1 conversations "
-"(with the same process as \"Remove a conversation\"). The only note here "
-"is that if we ban a contact, we don't wait for sync, we just remove all "
-"related files."
+"removeContact() will remove the contact and related 1:1 conversations (with "
+"the same process as \"Remove a conversation\"). The only note here is that "
+"if we ban a contact, we don't wait for sync, we just remove all related "
+"files."
 msgstr ""
 
 #: ../../../developer/swarm.md:198
@@ -6811,12 +6803,12 @@ msgstr ""
 #: ../../../developer/swarm.md:211
 msgid ""
 "In this case, two conversations are generated. We don't want to remove "
-"messages from users or choose one conversation here. So, sometimes two "
-"1:1 swarm between the same members will be shown. It will generate some "
-"bugs during the transition time (as we don't want to break API, the "
-"inferred conversation will be one of the two shown conversations, but for"
-" now it's \"ok-ish\", will be fixed when clients will fully handle "
-"conversationId for all APIs (calls, file transfer, etc))."
+"messages from users or choose one conversation here. So, sometimes two 1:1 "
+"swarm between the same members will be shown. It will generate some bugs "
+"during the transition time (as we don't want to break API, the inferred "
+"conversation will be one of the two shown conversations, but for now it's "
+"\"ok-ish\", will be fixed when clients will fully handle conversationId for "
+"all APIs (calls, file transfer, etc))."
 msgstr ""
 
 #: ../../../developer/swarm.md:213
@@ -6825,16 +6817,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:215
 msgid ""
-"After accepting a conversation's request, there is a time the daemon "
-"needs to retrieve the distant repository. During this time, clients MUST "
-"show a syncing view to give informations to the user. Note, while "
-"syncing:"
+"After accepting a conversation's request, there is a time the daemon needs "
+"to retrieve the distant repository. During this time, clients MUST show a "
+"syncing view to give informations to the user. Note, while syncing:"
 msgstr ""
 
 #: ../../../developer/swarm.md:218
 msgid ""
-"ConfigurationManager::getConversations() will return the conversation's "
-"id even while syncing"
+"ConfigurationManager::getConversations() will return the conversation's id "
+"even while syncing"
 msgstr ""
 
 #: ../../../developer/swarm.md:219
@@ -6845,8 +6836,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:220
 msgid ""
-"ConfigurationManager::getConversationMembers() will return a map of two "
-"URIs (the current account and the peer who sent the request)"
+"ConfigurationManager::getConversationMembers() will return a map of two URIs"
+" (the current account and the peer who sent the request)"
 msgstr ""
 
 #: ../../../developer/swarm.md:222
@@ -6855,8 +6846,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:224
 msgid ""
-"Conversations requests are represented by a **Map<String, String>** with "
-"the following keys:"
+"Conversations requests are represented by a **Map<String, String>** with the"
+" following keys:"
 msgstr ""
 
 #: ../../../developer/swarm.md:226
@@ -6890,10 +6881,10 @@ msgstr ""
 #: ../../../developer/swarm.md:235
 msgid ""
 "To be identifiable, a conversation generally needs some metadata, like a "
-"title (eg: Jami), a description (eg: some links, what is the project, "
-"etc), and an image (the logo of the project). Those metadata are optional"
-" but shared across all members, so need to be synced and incorporated in "
-"the requests."
+"title (eg: Jami), a description (eg: some links, what is the project, etc), "
+"and an image (the logo of the project). Those metadata are optional but "
+"shared across all members, so need to be synced and incorporated in the "
+"requests."
 msgstr ""
 
 #: ../../../developer/swarm.md:237
@@ -6914,10 +6905,10 @@ msgstr ""
 msgid ""
 "To update the vCard, a user with enough permissions (by default: =ADMIN) "
 "needs to edit `/profile.vcf`. and will commit the file with the mimetype "
-"`application/update-profile`. The new message is sent via the same "
-"mechanism and all peers will receive the **MessageReceived** signal from "
-"the daemon. The branch is dropped if the commit contains other files or "
-"too big or if done by a non-authorized member (by default: <ADMIN)."
+"`application/update-profile`. The new message is sent via the same mechanism"
+" and all peers will receive the **MessageReceived** signal from the daemon. "
+"The branch is dropped if the commit contains other files or too big or if "
+"done by a non-authorized member (by default: <ADMIN)."
 msgstr ""
 
 #: ../../../developer/swarm.md:253
@@ -6926,9 +6917,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:255
 msgid ""
-"In the synchronized data, each devices sends to other devices the state "
-"of the conversations. In this state, the last displayed is sent. However,"
-" because each device can have its own state for each conversation, and "
+"In the synchronized data, each devices sends to other devices the state of "
+"the conversations. In this state, the last displayed is sent. However, "
+"because each device can have its own state for each conversation, and "
 "probably without the same last commit at some point, there is several "
 "scenarios to take into account:"
 msgstr ""
@@ -6939,26 +6930,26 @@ msgstr ""
 
 #: ../../../developer/swarm.md:258
 msgid ""
-"if the last displayed sent by other devices is the same as the current "
-"one, there is nothing to do."
+"if the last displayed sent by other devices is the same as the current one, "
+"there is nothing to do."
 msgstr ""
 
 #: ../../../developer/swarm.md:259
 msgid ""
-"if there is no last displayed for the current device, the remote "
-"displayed message is used."
+"if there is no last displayed for the current device, the remote displayed "
+"message is used."
 msgstr ""
 
 #: ../../../developer/swarm.md:260
 msgid ""
-"if the remote last displayed is not present in the repo, it means that "
-"the commit will be fetched later, so cache the result"
+"if the remote last displayed is not present in the repo, it means that the "
+"commit will be fetched later, so cache the result"
 msgstr ""
 
 #: ../../../developer/swarm.md:261
 msgid ""
-"if the remote is already fetched, we check that the local last displayed "
-"is before in the history to replace it"
+"if the remote is already fetched, we check that the local last displayed is "
+"before in the history to replace it"
 msgstr ""
 
 #: ../../../developer/swarm.md:262
@@ -7012,16 +7003,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:305
 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 point). If a commit comes for a conversation not present "
-"there are two possibilities:"
+"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 "
+"point). If a commit comes for a conversation not present there are two "
+"possibilities:"
 msgstr ""
 
 #: ../../../developer/swarm.md:307
 msgid ""
-"The conversationId is there, in this case, the daemon is able to re-clone"
-" this conversation"
+"The conversationId is there, in this case, the daemon is able to re-clone "
+"this conversation"
 msgstr ""
 
 #: ../../../developer/swarm.md:308
@@ -7033,8 +7024,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:310
 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."
+"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
@@ -7066,14 +7057,15 @@ msgid "Why this choice"
 msgstr ""
 
 #: ../../../developer/swarm.md:323
-msgid "Each conversation will be a git repository. This choice is motivated by:"
+msgid ""
+"Each conversation will be a git repository. This choice is motivated by:"
 msgstr ""
 
 #: ../../../developer/swarm.md:325
 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."
+"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
@@ -7114,15 +7106,15 @@ msgstr ""
 
 #: ../../../developer/swarm.md:339
 msgid ""
-"History can't be deleted. To delete a conversation, the device has to "
-"leave the conversation and create another one."
+"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
 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)."
+"minutes) can be sent via a  special message via the DRT (like Typing or Read"
+" notifications)."
 msgstr ""
 
 #: ../../../developer/swarm.md:343
@@ -7136,19 +7128,18 @@ msgstr ""
 #: ../../../developer/swarm.md:376
 msgid ""
 "Swarm massively changes file transfer. Now, all the history is syncing, "
-"allowing all devices in the conversation to easily retrieve old files. "
-"This changes allow us to move from a logic where the sender pushed the "
-"file on other devices, via trying to connect to their devices (This was "
-"bad because not really resistant to connections changes/failures and "
-"needed a manual retry) to a logic where the sender allow other devices to"
-" download. Moreover, any device having the file can be the host for other"
-" devices, allowing to retrieve files even if the sender is not there."
+"allowing all devices in the conversation to easily retrieve old files. This "
+"changes allow us to move from a logic where the sender pushed the file on "
+"other devices, via trying to connect to their devices (This was bad because "
+"not really resistant to connections changes/failures and needed a manual "
+"retry) to a logic where the sender allow other devices to download. "
+"Moreover, any device having the file can be the host for other devices, "
+"allowing to retrieve files even if the sender is not there."
 msgstr ""
 
 #: ../../../developer/swarm.md:380
 msgid ""
-"The sender adds a new commit in the conversation with the following "
-"format:"
+"The sender adds a new commit in the conversation with the following format:"
 msgstr ""
 
 #: ../../../developer/swarm.md:390
@@ -7162,32 +7153,32 @@ msgstr ""
 msgid ""
 "Then, the receiver can now download the files by contacting the devices "
 "hosting the file by opening a channel with `name=\"data-transfer://\" + "
-"conversationId + \"/\" + currentDeviceId() + \"/\" + fileId` and store "
-"the info that the file is waiting in "
+"conversationId + \"/\" + currentDeviceId() + \"/\" + fileId` and store the "
+"info that the file is waiting in "
 "`${data_path}/conversation_data/${conversation_id}/waiting`"
 msgstr ""
 
 #: ../../../developer/swarm.md:394
 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 "
-"receiver will keep the first opened channel, close the others and write "
-"into a file (with the same path as the sender: "
-"`${data_path}/conversation_data/${conversation_id}/${file_id}`) all "
-"incoming data."
+"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 "
+"receiver will keep the first opened channel, close the others and write into"
+" a file (with the same path as the sender: "
+"`${data_path}/conversation_data/${conversation_id}/${file_id}`) all incoming"
+" data."
 msgstr ""
 
 #: ../../../developer/swarm.md:396
 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."
+"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
 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."
+"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
@@ -7204,8 +7195,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:406
 msgid ""
-"A swarm conversation can have multiple rendez-vous. A rendez-vous is "
-"defined by the following uri:"
+"A swarm conversation can have multiple rendez-vous. A rendez-vous is defined"
+" by the following uri:"
 msgstr ""
 
 #: ../../../developer/swarm.md:408
@@ -7220,8 +7211,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:412
 msgid ""
-"In the swarm metadatas. Where it's stored like the title/desc/avatar of "
-"the room"
+"In the swarm metadatas. Where it's stored like the title/desc/avatar of the "
+"room"
 msgstr ""
 
 #: ../../../developer/swarm.md:413
@@ -7230,10 +7221,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:415
 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)"
+"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
@@ -7266,9 +7256,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:430
 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."
+"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
@@ -7287,9 +7277,9 @@ msgstr ""
 
 #: ../../../developer/swarm.md:438
 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."
+"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
@@ -7325,16 +7315,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:450
 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**"
+"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
 msgid ""
 "[*Maximizing the Coverage of Roadmap Graph for Optimal Motion "
-"Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). "
-"But need calculations"
+"Planning*](https://www.hindawi.com/journals/complexity/2018/9104720/). But "
+"need calculations"
 msgstr ""
 
 #: ../../../developer/swarm.md:452
@@ -7347,8 +7337,8 @@ msgstr ""
 msgid ""
 "Note: to optimize the socket numbers, a socket will be given by a "
 "**ConnectionManager** to get multiplexed sockets with a given hash. This "
-"means that if we need to transmit several files and chat with someone, "
-"only one socket will be used."
+"means that if we need to transmit several files and chat with someone, only "
+"one socket will be used."
 msgstr ""
 
 #: ../../../developer/swarm.md:456
@@ -7375,16 +7365,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:467
 msgid ""
-"Two possibilities for sending the message  a. If not connected, via the "
-"DHT  b. Else, Alice sends on the SIP channel"
+"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
 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 must not know if Bob just ignored or blocked Alice. The only way "
-"is to regenerate a new invite via a new message (cf next scenario)"
+"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 "
+"must not know if Bob just ignored or blocked Alice. The only way is to "
+"regenerate a new invite via a new message (cf next scenario)"
 msgstr ""
 
 #: ../../../developer/swarm.md:474
@@ -7415,12 +7405,12 @@ msgstr ""
 #: ../../../developer/swarm.md:483
 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 from Alice and announce new messages  c. Bob doesn't know that "
-"conversation. Ask through the DHT to get an invite first to be able to "
-"accept that conversation ({\"application/invite\", conversationId})  d. "
-"Bob is disconnected (no network, or just closed). He will not receive the"
-" new message but will try to sync when the next connection will occur"
+"trusts Alice, ask for a new connection and go to b.  b. If connected, fetch "
+"from Alice and announce new messages  c. Bob doesn't know that conversation."
+" Ask through the DHT to get an invite first to be able to accept that "
+"conversation ({\"application/invite\", conversationId})  d. Bob is "
+"disconnected (no network, or just closed). He will not receive the new "
+"message but will try to sync when the next connection will occur"
 msgstr ""
 
 #: ../../../developer/swarm.md:492
@@ -7436,7 +7426,8 @@ msgid "**!! OLD DRAFT !!**"
 msgstr ""
 
 #: ../../../developer/swarm.md:497
-msgid "Note: Following notes are not organized yet. Just some line of thoughts."
+msgid ""
+"Note: Following notes are not organized yet. Just some line of thoughts."
 msgstr ""
 
 #: ../../../developer/swarm.md:499
@@ -7446,15 +7437,14 @@ msgstr ""
 #: ../../../developer/swarm.md:501
 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 conversation, the conversation can be decrypted. Maybe we need to go to"
-" something like **Double ratchet**."
+"current design, if a certificate is stolen as the previous DHT values of a "
+"conversation, the conversation can be decrypted. Maybe we need to go to "
+"something like **Double ratchet**."
 msgstr ""
 
 #: ../../../developer/swarm.md:503
 msgid ""
-"Note: a lib might exist to implement group conversations. TODO, "
-"investigate."
+"Note: a lib might exist to implement group conversations. TODO, investigate."
 msgstr ""
 
 #: ../../../developer/swarm.md:505
@@ -7471,8 +7461,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:513
 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 "
+"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 ""
 
@@ -7490,8 +7480,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:520
 msgid ""
-"A certificate for a group that sign user with a flag for a role. Adding "
-"or revoking can also be done."
+"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
@@ -7522,8 +7512,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:531
 msgid ""
-"Forward secrecy: if any key from the group is compromised, previous "
-"messages should remain confidential (as much as possible)"
+"Forward secrecy: if any key from the group is compromised, previous messages"
+" should remain confidential (as much as possible)"
 msgstr ""
 
 #: ../../../developer/swarm.md:533
@@ -7538,14 +7528,13 @@ msgstr ""
 
 #: ../../../developer/swarm.md:535
 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 node must re-put the value on the DHT every 10 minutes. Another"
-" way to do when the node is offline is to let nodes re-put the data. But,"
-" if after 10 minutes, 8 nodes are still here, they will do 64 requests "
-"(and it's exponential). The current way to avoid spamming for that is "
-"queried. This will still do 64 requests but limit the max redundancy to 8"
-" nodes."
+"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 "
+"node must re-put the value on the DHT every 10 minutes. Another way to do "
+"when the node is offline is to let nodes re-put the data. But, if after 10 "
+"minutes, 8 nodes are still here, they will do 64 requests (and it's "
+"exponential). The current way to avoid spamming for that is queried. This "
+"will still do 64 requests but limit the max redundancy to 8 nodes."
 msgstr ""
 
 #: ../../../developer/swarm.md:537
@@ -7570,8 +7559,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:545
 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:"
+"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
@@ -7582,8 +7571,8 @@ msgstr ""
 
 #: ../../../developer/swarm.md:548
 msgid ""
-"If nobody is connected, the synchronization can't be done, and the person"
-" will never see the conversation"
+"If nobody is connected, the synchronization can't be done, and the person "
+"will never see the conversation"
 msgstr ""
 
 #: ../../../developer/swarm.md:550
@@ -7596,16 +7585,16 @@ msgstr ""
 
 #: ../../../developer/swarm.md:556
 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 "
-"first need a p2p implement for the file transfer. Implement the RFC for "
-"p2p transfer."
+"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 "
+"first need a p2p implement for the file transfer. Implement the RFC for p2p "
+"transfer."
 msgstr ""
 
 #: ../../../developer/swarm.md:558
 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)"
+"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
@@ -7629,15 +7618,15 @@ msgstr ""
 #: ../../../developer/synchronization-protocol.md:4
 msgid ""
 "The swarm chat provides new possibilities for every device. Now, it's "
-"possible to sync history between devices by sharing the related "
-"repository. Devices sync needs to be redefined to follow those changes."
+"possible to sync history between devices by sharing the related repository. "
+"Devices sync needs to be redefined to follow those changes."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:6
 msgid ""
-"A lot of scenarios are defined in the {doc}`Swarm design document "
-"<swarm>`, however, this doesn't imply for syncing conversations between "
-"devices for the same user. Some new scenarios must be written."
+"A lot of scenarios are defined in the {doc}`Swarm design document <swarm>`, "
+"however, this doesn't imply for syncing conversations between devices for "
+"the same user. Some new scenarios must be written."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:8
@@ -7646,9 +7635,9 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:10
 msgid ""
-"Device sync were done via the DHT. Because every value MUST NOT exceed "
-"64k, conversations were not sent in device sync, nor member profiles, "
-"because it's too heavy. This is a problem and MUST be improved."
+"Device sync were done via the DHT. Because every value MUST NOT exceed 64k, "
+"conversations were not sent in device sync, nor member profiles, because "
+"it's too heavy. This is a problem and MUST be improved."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:12
@@ -7670,9 +7659,9 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:18
 msgid ""
-"Since Jami has the {doc}`ConnectionManager <connection-manager>`, using "
-"p2p socket is possible to perform sync quickly with big values (cause the"
-" socket is not limited in data)"
+"Since Jami has the {doc}`ConnectionManager <connection-manager>`, using p2p "
+"socket is possible to perform sync quickly with big values (cause the socket"
+" is not limited in data)"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:20
@@ -7689,15 +7678,15 @@ msgstr ""
 msgid ""
 "Other devices (*!A*) will detect that announce and will ask this device "
 "through the **ConnectionManager** to open a new channel named "
-"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other "
-"devices, so it will asks for sync channels too)."
+"\"sync://DEVICE_ID_A\". (Note: A will get announcement from other devices, "
+"so it will asks for sync channels too)."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:24
 msgid ""
-"As soon as this channel is opened, the device which is asking this "
-"channel will send a **DeviceSync** (cf next part) value containing its "
-"known conversations and contacts."
+"As soon as this channel is opened, the device which is asking this channel "
+"will send a **DeviceSync** (cf next part) value containing its known "
+"conversations and contacts."
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:25
@@ -7733,8 +7722,8 @@ msgstr ""
 #: ../../../developer/synchronization-protocol.md:33
 msgid ""
 "Note: If *A* detects new conversations, it will asks the device which "
-"announced that conversation to clone the repository through a git channel"
-" (so like described in {doc}`Swarm chat design <swarm>`)"
+"announced that conversation to clone the repository through a git channel "
+"(so like described in {doc}`Swarm chat design <swarm>`)"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:35
@@ -7793,8 +7782,8 @@ msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:74
 msgid ""
-"The other device should receives and sync the conversation created on one"
-" of the devices"
+"The other device should receives and sync the conversation created on one of"
+" the devices"
 msgstr ""
 
 #: ../../../developer/synchronization-protocol.md:76
@@ -7857,11 +7846,10 @@ msgstr ""
 #: ../../../developer/synchronizing-profiles.md:3
 msgid ""
 "There is two types of profiles. The one for the current account, and the "
-"ones from contacts. As this vcard contains infos, such as the avatar and "
-"the display name, it should be synced as soon as possible. But, it must "
-"be sent only when needed, to avoid un-necessary data transmissions. The "
-"format used to store the profiles is a "
-"[vCard](https://en.wikipedia.org/wiki/VCard) "
+"ones from contacts. As this vcard contains infos, such as the avatar and the"
+" display name, it should be synced as soon as possible. But, it must be sent"
+" only when needed, to avoid un-necessary data transmissions. The format used"
+" to store the profiles is a [vCard](https://en.wikipedia.org/wiki/VCard) "
 "(https://datatracker.ietf.org/doc/html/rfc6350)"
 msgstr ""
 
@@ -7885,8 +7873,8 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:13
 msgid ""
-"Because this logic is still managed per client, it depends on the client."
-" However, on Desktop, this is unified and stored into: "
+"Because this logic is still managed per client, it depends on the client. "
+"However, on Desktop, this is unified and stored into: "
 "`${idPath_}/profiles/${base64(uri)}.vcf`"
 msgstr ""
 
@@ -7896,9 +7884,8 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:21
 msgid ""
-"At the beginning of a call, generally client sends the vCard. However, "
-"this method should be removed in favor of the other located in the "
-"daemon."
+"At the beginning of a call, generally client sends the vCard. However, this "
+"method should be removed in favor of the other located in the daemon."
 msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:23
@@ -7907,15 +7894,14 @@ msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:25
 msgid ""
-"When connecting to a new devices, a SIP or a sync channel is done. When "
-"this channel is ready, we check if we need to send the profile. To do "
-"this, the hash of the profile is compared to the one in the cache "
-"(`${cacheDir}/${accId}/vcard/sha3` like "
-"`~/.cache/jami/xxxxx/vcard/sha3`on GNU/Linux), and the file "
-"`${cacheDir}/${accId}/vcard/deviceId` is checked). cf "
-"`JamiAccount::needToSendProfile()`. If not present, the profile of the "
-"account is sent. Typically, the name of the channel will be "
-"\"vcard://xxx\" where the issuer is the one sending the profile."
+"When connecting to a new devices, a SIP or a sync channel is done. When this"
+" channel is ready, we check if we need to send the profile. To do this, the "
+"hash of the profile is compared to the one in the cache "
+"(`${cacheDir}/${accId}/vcard/sha3` like `~/.cache/jami/xxxxx/vcard/sha3`on "
+"GNU/Linux), and the file `${cacheDir}/${accId}/vcard/deviceId` is checked). "
+"cf `JamiAccount::needToSendProfile()`. If not present, the profile of the "
+"account is sent. Typically, the name of the channel will be \"vcard://xxx\" "
+"where the issuer is the one sending the profile."
 msgstr ""
 
 #: ../../../developer/synchronizing-profiles.md:27
@@ -7925,9 +7911,9 @@ msgstr ""
 #: ../../../developer/synchronizing-profiles.md:29
 msgid ""
 "If the profile is sent and the device is from the same account, "
-"conversations are checked and we send profiles of all members. The "
-"channel name will be \"${conversationId}/profile/${memberUri}.vcf\". "
-"Behavior tested in `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
+"conversations are checked and we send profiles of all members. The channel "
+"name will be \"${conversationId}/profile/${memberUri}.vcf\". Behavior tested"
+" in `daemon/test/unitTest/syncHistory/syncHistory.cpp`"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:1
@@ -7987,8 +7973,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:25
 msgid ""
-"The issuer UID field must be the hexadecimal form of the issuer public "
-"key fingerprint (CA)."
+"The issuer UID field must be the hexadecimal form of the issuer public key "
+"fingerprint (CA)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:27
@@ -8025,8 +8011,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:37
 msgid ""
-"The issuer UID field must be the hexadecimal form of the issuer public "
-"key fingerprint (JamiId)."
+"The issuer UID field must be the hexadecimal form of the issuer public key "
+"fingerprint (JamiId)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:40
@@ -8039,9 +8025,9 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:43
 msgid ""
-"It's the DHT key where the list of account devices are published and "
-"where all devices listen to synchronize on account changes (i.e. adding "
-"or revoke a device)."
+"It's the DHT key where the list of account devices are published and where "
+"all devices listen to synchronize on account changes (i.e. adding or revoke "
+"a device)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:46
@@ -8058,14 +8044,14 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:50
 msgid ""
-"public key to encrypt messages (this is done by the message issuer using "
-"the receiver public key)."
+"public key to encrypt messages (this is done by the message issuer using the"
+" receiver public key)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:52
 msgid ""
-"A device can be \"removed\" from a Jami account through revocation of the"
-" device certificate:"
+"A device can be \"removed\" from a Jami account through revocation of the "
+"device certificate:"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:54
@@ -8076,8 +8062,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:56
 msgid ""
-"CRLs for revoked device must be valid and signed with the corresponding "
-"CA key, which is the Jami account private key."
+"CRLs for revoked device must be valid and signed with the corresponding CA "
+"key, which is the Jami account private key."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:59
@@ -8090,21 +8076,21 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:65
 msgid ""
-"Jami needs to load certificates and key-pairs each time the application "
-"is started."
+"Jami needs to load certificates and key-pairs each time the application is "
+"started."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:67
 msgid ""
-"When Jami creates a new device, these information are also needed, shared"
-" from another trusted device in a secure way."
+"When Jami creates a new device, these information are also needed, shared "
+"from another trusted device in a secure way."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:69
 msgid ""
-"All platforms doesn't provide secure way to store data, Jami supports "
-"this fact by encrypting data stored outside the memory (i.e. on a file-"
-"system) using a user defined password during the account creation."
+"All platforms doesn't provide secure way to store data, Jami supports this "
+"fact by encrypting data stored outside the memory (i.e. on a file-system) "
+"using a user defined password during the account creation."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:76
@@ -8151,15 +8137,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:107
 msgid ""
-"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with"
-" a 256-bits key."
+"Then the gzip-stream is encrypted using AES-GCM-256 symmetric cipher with a "
+"256-bits key."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:109
 msgid ""
-"This key is derived from the user provided password, a PIN and a "
-"timestamp, using [Argon2](https://github.com/P-H-C/phc-winner-argon2) (a "
-"password stretching and normalizer) as follow:"
+"This key is derived from the user provided password, a PIN and a timestamp, "
+"using [Argon2](https://github.com/P-H-C/phc-winner-argon2) (a password "
+"stretching and normalizer) as follow:"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:124
@@ -8171,10 +8157,10 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:127
 msgid ""
-"NOTE: when exporting a file on the DHT or anywhere else, the daemon "
-"update the archive first, to write latest contacts. This is the reason "
-"why the password is needed when exporting (it's not just a copy of the "
-"archive somewhere else)"
+"NOTE: when exporting a file on the DHT or anywhere else, the daemon update "
+"the archive first, to write latest contacts. This is the reason why the "
+"password is needed when exporting (it's not just a copy of the archive "
+"somewhere else)"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:129
@@ -8217,8 +8203,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:146
 msgid ""
-"Dedicated [ Jami distributed network](Ring_distributed_network "
-"\"wikilink\") page."
+"Dedicated [ Jami distributed network](Ring_distributed_network \"wikilink\")"
+" page."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:149
@@ -8255,14 +8241,14 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:165
 msgid ""
-"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE "
-"(Interactive Connectivity Establishment), a protocol for NAT traversal."
+"*[RFC 5245](https://tools.ietf.org/html/rfc5245)* defines ICE (Interactive "
+"Connectivity Establishment), a protocol for NAT traversal."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:168
 msgid ""
-"ICE is used in Jami to establish a peer-to-peer communication between two"
-" devices."
+"ICE is used in Jami to establish a peer-to-peer communication between two "
+"devices."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:171
@@ -8277,10 +8263,9 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:175
 msgid ""
-"The calling device puts the encrypted ICE offer (the *Initial Offer*) on "
-"the DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where "
-"*h* is SHA1, *+* is the string concatenation, *DeviceID* is in "
-"hexadecimal form."
+"The calling device puts the encrypted ICE offer (the *Initial Offer*) on the"
+" DHT at: `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is "
+"SHA1, *+* is the string concatenation, *DeviceID* is in hexadecimal form."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:180
@@ -8290,7 +8275,8 @@ msgid ""
 msgstr ""
 
 #: ../../../developer/technical-overview.md:182
-msgid "At peer answer reception, the calling device starts the ICE negotiation."
+msgid ""
+"At peer answer reception, the calling device starts the ICE negotiation."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:184
@@ -8305,16 +8291,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:189
 msgid ""
-"A device listens for incoming calls by performing a listen OpenDHT "
-"operation on `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where "
-"*h* is SHA1, *+* is the string concatenation and *DeviceID* is in "
-"hexadecimal form."
+"A device listens for incoming calls by performing a listen OpenDHT operation"
+" on `h(\"`[`callto:\"+DeviceID`](callto:%22+DeviceID)`)` where *h* is SHA1, "
+"*+* is the string concatenation and *DeviceID* is in hexadecimal form."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:193
 msgid ""
-"At ICE *Initial Offer* reception, the called device **must** do a "
-"security validation of the peer (see below)."
+"At ICE *Initial Offer* reception, the called device **must** do a security "
+"validation of the peer (see below)."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:195
@@ -8331,8 +8316,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:200
 msgid ""
-"*Note: OpenDHT drops values that are not properly encrypted or signed, as"
-" specified by OpenDHT protocol.*"
+"*Note: OpenDHT drops values that are not properly encrypted or signed, as "
+"specified by OpenDHT protocol.*"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:203
@@ -8361,23 +8346,23 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:221
 msgid ""
-"Upon reception of the encrypted and signed Initial ICE Offer (through the"
-" listen operation), a called device should perform authorization checks "
-"of the calling device, identified as the Initial Offer signer."
+"Upon reception of the encrypted and signed Initial ICE Offer (through the "
+"listen operation), a called device should perform authorization checks of "
+"the calling device, identified as the Initial Offer signer."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:225
 msgid ""
-"Authorization rules are implementation defined, but a typical "
-"implementation would authorize known or trusted contacts."
+"Authorization rules are implementation defined, but a typical implementation"
+" would authorize known or trusted contacts."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:238
 msgid ""
 "Once a peer-to-peer communication channel has been established by ICE "
 "protocol, the called device starts a server-side DTLS session on the ICE "
-"socket, while the caller starts a client-side DTLS session on the other "
-"side of the ICE socket."
+"socket, while the caller starts a client-side DTLS session on the other side"
+" of the ICE socket."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:242
@@ -8400,8 +8385,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:250
 msgid ""
-"A second handshake in **certificate mode**, over the first one, to prove "
-"the identity of peers."
+"A second handshake in **certificate mode**, over the first one, to prove the"
+" identity of peers."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:253
@@ -8420,8 +8405,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:257
 msgid ""
-"anonymous step: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-"
-"TLS-ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
+"anonymous step: `SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-TLS-"
+"ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION`"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:259
@@ -8436,15 +8421,15 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:264
 msgid ""
-"Used over the DTLS session to signaling the call (vcard, media "
-"negotiation, hangup, instant messaging, ...)"
+"Used over the DTLS session to signaling the call (vcard, media negotiation, "
+"hangup, instant messaging, ...)"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:266
 msgid ""
-"Once an encrypted and authenticated peer-to-peer communication channel is"
-" available, the [SIP protocol](https://tools.ietf.org/html/rfc3261) must "
-"be used to place a call and send messages."
+"Once an encrypted and authenticated peer-to-peer communication channel is "
+"available, the [SIP protocol](https://tools.ietf.org/html/rfc3261) must be "
+"used to place a call and send messages."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:270
@@ -8455,8 +8440,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:273
 msgid ""
-"Supported codecs are implementation defined, but Jami clients should "
-"support the Opus audio coded and the H264 video codec."
+"Supported codecs are implementation defined, but Jami clients should support"
+" the Opus audio coded and the H264 video codec."
 msgstr ""
 
 #: ../../../developer/technical-overview.md:279
@@ -8469,10 +8454,10 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:286
 msgid ""
-"Jami provides perfect forward secrecy for calls and in call text messages"
-" with different Eliptic Curve Diffie-Hellman key negociation at every "
-"call. For out of call messaging single RSA-4096 is used. The cryptography"
-" library used is GNUTLS"
+"Jami provides perfect forward secrecy for calls and in call text messages "
+"with different Eliptic Curve Diffie-Hellman key negociation at every call. "
+"For out of call messaging single RSA-4096 is used. The cryptography library "
+"used is GNUTLS"
 msgstr ""
 
 #: ../../../developer/technical-overview.md:291
@@ -8481,8 +8466,8 @@ msgstr ""
 
 #: ../../../developer/technical-overview.md:293
 msgid ""
-"[Technical overview](technical/Technical-overview) of concepts and "
-"protocols inside Jami"
+"[Technical overview](technical/Technical-overview) of concepts and protocols"
+" inside Jami"
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:1
@@ -8491,8 +8476,8 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:4
 msgid ""
-"**NOTE: this page describes to build Tensorflow and TensorflowLite C++ "
-"API for Linux Android and Windows.**"
+"**NOTE: this page describes to build Tensorflow and TensorflowLite C++ API "
+"for Linux Android and Windows.**"
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:6
@@ -8501,16 +8486,16 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:7
 msgid ""
-"A difficulty for a lot of people working with tensorflow is how to "
-"properly build it. With that in mind we created docker images with cuda "
-"and tensorflow libraries available for GNU/Linux builds "
-"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-"
-"cuda) and for Android builds "
+"A difficulty for a lot of people working with tensorflow is how to properly "
+"build it. With that in mind we created docker images with cuda and "
+"tensorflow libraries available for GNU/Linux builds "
+"[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflow-cuda)"
+" and for Android builds "
 "[here](https://hub.docker.com/repository/docker/sflagsantos/tensorflowlite)."
-" These docker can be used to build plugins for Linux and Android, however"
-" they cannot handle Windows. Here we carefully guide you through the "
-"proper build of tensorflow LITE Native and Tensorflow C++ API for our "
-"three supported platforms."
+" These docker can be used to build plugins for Linux and Android, however "
+"they cannot handle Windows. Here we carefully guide you through the proper "
+"build of tensorflow LITE Native and Tensorflow C++ API for our three "
+"supported platforms."
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:11
@@ -8531,8 +8516,8 @@ msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:22
 msgid ""
-"We assembled Tensorflow headers needed to build plugins, to access them "
-"you only have to extract `libs.tar.gz` file found under `jami-"
+"We assembled Tensorflow headers needed to build plugins, to access them you "
+"only have to extract `libs.tar.gz` file found under `jami-"
 "project/plugins/contrib`. However, if you are using another tensorflow "
 "version or you want to do it by yourself, you can follow the assemble "
 "instructions for Tensorflow LITE Native and C++ API are available under "
@@ -8549,11 +8534,10 @@ msgstr ""
 #: ../../../developer/tensorflow-plugin.md:27
 #: ../../../developer/tensorflow-plugin.md:54
 msgid ""
-"If you want to build Tensorflow C++ API with GPU suport, be sure to have "
-"a CUDA capable GPU and that you have  followed all installation steps for"
-" the Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions"
-"  matches and that they are correct for the Tensorflow version you want "
-"to build."
+"If you want to build Tensorflow C++ API with GPU suport, be sure to have a "
+"CUDA capable GPU and that you have  followed all installation steps for the "
+"Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions  matches"
+" and that they are correct for the Tensorflow version you want to build."
 msgstr ""
 
 #: ../../../developer/tensorflow-plugin.md:33
@@ -8582,9 +8566,9 @@ msgstr ""
 #: ../../../developer/tensorflow-plugin.md:77
 msgid ""
 "There may be some missign references while compilling a plugin with "
-"Tensorflow C++ API. If that happens you have to rebuild you tensorflow "
-"and explicitly export the missing symbols. Fortunatelly Tensorflow now "
-"has a easy workaround to do so, you only have to feed "
+"Tensorflow C++ API. If that happens you have to rebuild you tensorflow and "
+"explicitly export the missing symbols. Fortunatelly Tensorflow now has a "
+"easy workaround to do so, you only have to feed "
 "[this](\"https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/tools/def_file_filter/def_file_filter.py.tpl\")"
 " file with the desired symbols."
 msgstr ""
@@ -8633,8 +8617,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:7
 msgid ""
-"User documentation: <https://review.jami.net/Documentation/intro-"
-"user.html>"
+"User documentation: <https://review.jami.net/Documentation/intro-user.html>"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:8
@@ -8648,8 +8631,8 @@ msgstr ""
 #: ../../../developer/working-with-gerrit.md:11
 msgid ""
 "You'll also need to [upload an SSH "
-"key](https://review.jami.net/settings/#SSHKeys) to be able to commit "
-"changes for review."
+"key](https://review.jami.net/settings/#SSHKeys) to be able to commit changes"
+" for review."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:12
@@ -8658,8 +8641,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:13
 msgid ""
-"Finally, the email address specified in your git config must match one "
-"the email address registered with your Gerrit account."
+"Finally, the email address specified in your git config must match one the "
+"email address registered with your Gerrit account."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:15
@@ -8682,8 +8665,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:23
 msgid ""
-"To check that your SSH access is properly setup, run the following "
-"command:"
+"To check that your SSH access is properly setup, run the following command:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:25
@@ -8710,8 +8692,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:50
 msgid ""
-"You must update your remote information to use now the Gerrit repository."
-" To do that, update your origin url:"
+"You must update your remote information to use now the Gerrit repository. To"
+" do that, update your origin url:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:52
@@ -8748,8 +8730,8 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:66
 msgid ""
-"When pushing to this magic branch, a review will automatically be created"
-" on Gerrit."
+"When pushing to this magic branch, a review will automatically be created on"
+" Gerrit."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:68
@@ -8758,8 +8740,7 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:70
 msgid ""
-"If you configured the default to refs/for/master as described above, "
-"simply"
+"If you configured the default to refs/for/master as described above, simply"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:72
@@ -8768,9 +8749,9 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:74
 msgid ""
-"If HEAD currently points to the branch with the commits you'd like to "
-"push. Ideally, you should work in a feature/bug branch for the issue at "
-"hand. Then you can do:"
+"If HEAD currently points to the branch with the commits you'd like to push. "
+"Ideally, you should work in a feature/bug branch for the issue at hand. Then"
+" you can do:"
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:76
@@ -8779,11 +8760,11 @@ msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:78
 msgid ""
-"If this is the first time you've pushed, you will be prompted to install "
-"a post-commit Hook to insert a Change-ID in your commit message. Gerrit "
-"needs this to track patchsets and will reject pushes until you install "
-"it. Simply copy paste the command to install the hook as instructed by "
-"Gerrit, and amend your commits."
+"If this is the first time you've pushed, you will be prompted to install a "
+"post-commit Hook to insert a Change-ID in your commit message. Gerrit needs "
+"this to track patchsets and will reject pushes until you install it. Simply "
+"copy paste the command to install the hook as instructed by Gerrit, and "
+"amend your commits."
 msgstr ""
 
 #: ../../../developer/working-with-gerrit.md:80
@@ -8813,7 +8794,6 @@ msgstr ""
 #: ../../../developer/working-with-gerrit.md:97
 msgid ""
 "Private work the same way as patchsets, except they are not visible to "
-"others by default and don't trigger any Jenkins builds. A draft can then "
-"be shared or published."
+"others by default and don't trigger any Jenkins builds. A draft can then be "
+"shared or published."
 msgstr ""
-
diff --git a/locales/fr/LC_MESSAGES/index.po b/locales/fr/LC_MESSAGES/index.po
index 0986d745e3a595739d7ad468467ab3ed01b54f31..b0e742f4decfe33e5f62f4a4b8a0229ac12c9573 100644
--- a/locales/fr/LC_MESSAGES/index.po
+++ b/locales/fr/LC_MESSAGES/index.po
@@ -1,30 +1,34 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# savoirfairelinux <support@savoirfairelinux.com>, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../index.rst:2
 msgid "Home"
-msgstr ""
+msgstr "Accueil"
 
-#: ../../../index.rst:-1
+#: ../../../index.rst-1
 msgid "Jami logo"
-msgstr ""
+msgstr "Logo Jami"
 
 #: ../../../index.rst:7
 msgid ""
@@ -34,82 +38,116 @@ msgid ""
 "operating systems and platforms including GNU/Linux, macOS, Windows, "
 "Android/Replicant, and iOS."
 msgstr ""
+"Ceci est la documentation de `Jami <https://jami.net>`_, un logiciel "
+"libre/libre pour :doc:`la communication universelle <user/introduction>` qui"
+" respecte la liberté et la vie privée de ses utilisateurs. Jami est "
+"disponible sur tous les systèmes d'exploitation et toutes les plateformes, "
+"notamment GNU/Linux, macOS, Windows, Android/Replicant et iOS."
 
 #: ../../../index.rst:13
 msgid "Translations"
-msgstr ""
+msgstr "Traductions"
 
 #: ../../../index.rst:15
 msgid ""
 "This documentation is available in `English </>`_, `French </fr/>`_, and "
 "`Persian (Farsi) </fa/>`_."
 msgstr ""
+"La documentation est disponible en  `Anglais </>`_, `Français </fr/>`_, et "
+"`Perse (Farsi) </fa/>`_."
 
 #: ../../../index.rst:18
 msgid ""
-"Jami is an official GNU package and you can redistribute it and/or modify"
-" it under the terms of the `GNU General Public License "
-"<https://www.gnu.org/licenses/gpl.html>`_ as published by the Free "
-"Software Foundation, either version 3 of the License, or (at your option)"
-" any later version.  The Jami team :doc:`uses Gerrit for development "
-"<developer/working-with-gerrit>` and code reviews, and issues and feature"
-" requests are :doc:`tracked on the Jami GitLab <user/bug-report-guide>`."
-"  The development of Jami is led by `Savoir-faire Linux "
+"Jami is an official GNU package and you can redistribute it and/or modify it"
+" under the terms of the `GNU General Public License "
+"<https://www.gnu.org/licenses/gpl.html>`_ as published by the Free Software "
+"Foundation, either version 3 of the License, or (at your option) any later "
+"version.  The Jami team :doc:`uses Gerrit for development "
+"<developer/working-with-gerrit>` and code reviews, and issues and feature "
+"requests are :doc:`tracked on the Jami GitLab <user/bug-report-guide>`.  The"
+" development of Jami is led by `Savoir-faire Linux "
 "<https://savoirfairelinux.com/en>`_ --- a Canadian GNU/Linux consulting "
-"company based in Montréal --- and is supported by a growing global "
-"community of users and contributors."
-msgstr ""
+"company based in Montréal --- and is supported by a growing global community"
+" of users and contributors."
+msgstr ""
+"Jami est un paquet officiel GNU et vous pouvez le redistribuer et/ou le "
+"modifier selon les termes de la `GNU General Public License "
+"<https://www.gnu.org/licenses/gpl.html>`_ telle que publiée par la Free "
+"Software Foundation, soit la version 3 de la licence, soit (à votre choix) "
+"toute version ultérieure. L'équipe de Jami :doc:` utilise Gerrit pour le "
+"développement <developer/working-with-gerrit>` et les revues de code, et les"
+" problèmes et les demandes de fonctionnalités sont :doc:` suivis sur le "
+"GitLab de Jami <user/bug-report-guide>`. Le développement de Jami est dirigé"
+" par `Savoir-faire Linux <https://savoirfairelinux.com/en>`_ --- une "
+"compagnie canadienne de conseil en logiciel libre basée à Montréal --- et "
+"est soutenu par une communauté mondiale croissante d'utilisateurs et de "
+"contributeurs."
 
 #: ../../../index.rst:30
 msgid ""
 "This documentation is community-driven and :ref:`anyone can contribute "
 "<contribute:Contributing to this documentation>`!"
 msgstr ""
+"Cette documentation est gérée par la communauté et :ref:`toute personne peut"
+" y contribuer.<contribute:Contributing to this documentation> `!"
 
 #: ../../../index.rst:33
 msgid ""
 "You may also be interested in the Jami `daemon "
 "<https://docs.jami.net/doxygen/daemon/>`_ or `libclient "
 "<https://docs.jami.net/doxygen/lrc/>`_'s technical documentation, the "
-"daemon's `code coverage <https://docs.jami.net/coverage/>`_, or the "
-"`OpenDHT wiki <https://github.com/savoirfairelinux/opendht/wiki>`_."
+"daemon's `code coverage <https://docs.jami.net/coverage/>`_, or the `OpenDHT"
+" wiki <https://github.com/savoirfairelinux/opendht/wiki>`_."
 msgstr ""
+"Vous pouvez également être intéressé par la documentation technique du "
+"`daemon <https://docs.jami.net/doxygen/daemon/>`_ ou du `libclient "
+"<https://docs.jami.net/doxygen/lrc/>`_ de Jami, la `couverture de code "
+"<https://docs.jami.net/coverage/>`_ du daemon, ou le wiki `OpenDHT "
+"<https://github.com/savoirfairelinux/opendht/wiki>`_."
 
 #: ../../../index.rst:42
 msgid "Documentation manuals"
-msgstr ""
+msgstr "Manuels de documentation"
 
 #: ../../../index.rst:44
 msgid ""
-"Here are the documentation manuals of Jami and details on how to "
-"contribute to Jami:"
+"Here are the documentation manuals of Jami and details on how to contribute "
+"to Jami:"
 msgstr ""
+"Voici les manuels de documentation de Jami et les détails sur la façon de "
+"contribuer à Jami :"
 
 #: ../../../index.rst:56
 msgid "Community and support"
-msgstr ""
+msgstr "Communauté et support"
 
 #: ../../../index.rst:58
 msgid ""
-"You can reach the Jami developers and community of users at the following"
-" public places:"
+"You can reach the Jami developers and community of users at the following "
+"public places:"
 msgstr ""
+"Vous pouvez joindre les développeurs et la communauté d'utilisateurs de Jami"
+" dans les lieux publics suivants :"
 
 #: ../../../index.rst:61
 msgid "Jami's forum: https://forum.jami.net"
-msgstr ""
+msgstr "Forum de Jami : https://forum.jami.net"
 
 #: ../../../index.rst:62
 msgid ""
 "Jami's GNU mailing list: `jami@gnu.org "
 "<https://lists.gnu.org/mailman/listinfo/jami>`_"
 msgstr ""
+"La liste de diffusion GNU de Jami : `jami@gnu.org "
+"<https://lists.gnu.org/mailman/listinfo/jami>`_"
 
 #: ../../../index.rst:64
 msgid ""
 "Jami's IRC channel on the Libera.Chat network: `#jami "
 "<https://web.libera.chat/#jami>`_"
 msgstr ""
+"Le canal IRC de Jami sur le réseau Libera.Chat : `#jami "
+"<https://web.libera.chat/#jami>`_"
 
 #: ../../../index.rst:66
 msgid ""
@@ -117,21 +155,28 @@ msgid ""
 "<https://matrix.to/#/#jami:matrix.org>`_ (bridged with the above IRC "
 "channel)"
 msgstr ""
+"La salle Matrix de Jami : `#jami:matrix.org "
+"<https://matrix.to/#/#jami:matrix.org>`_ (ponté avec le canal IRC ci-dessus)"
 
 #: ../../../index.rst:69
 msgid ""
 "Jami's social media: `@jami_social <https://nitter.net/jami_social>`_ "
 "(Twitter) and `@Jami@mstdn.io <https://mstdn.io/@Jami>`_ (Fediverse)"
 msgstr ""
+"Les médias sociaux de Jami : `@jami_social "
+"<https://nitter.net/jami_social>`_ (Twitter) et `@Jami@mstdn.io "
+"<https://mstdn.io/@Jami>`_ (Fediverse)"
 
 #: ../../../index.rst:72
 msgid "Jami's subreddit: `/r/jami <https://old.reddit.com/r/jami>`_"
-msgstr ""
+msgstr "Le subreddit de Jami : `/r/jami <https://old.reddit.com/r/jami>`_"
 
 #: ../../../index.rst:74
 msgid ""
-"You can also contact the Jami team at Savoir-faire Linux directly via "
-"email, at contact@jami.net.  Additionally, Savoir-faire Linux offers "
-"commercial support for Jami via https://jami.biz."
+"You can also contact the Jami team at Savoir-faire Linux directly via email,"
+" at contact@jami.net.  Additionally, Savoir-faire Linux offers commercial "
+"support for Jami via https://jami.biz."
 msgstr ""
-
+"Vous pouvez également contacter l'équipe Jami de Savoir-faire Linux "
+"directement par courriel, à contact@jami.net. De plus, Savoir-faire Linux "
+"offre un support commercial pour Jami via https://jami.biz."
diff --git a/locales/fr/LC_MESSAGES/sphinx.po b/locales/fr/LC_MESSAGES/sphinx.po
index 1cfe5f09b865efe76a139bd7d696d01d321be905..54acd4b0a220080396eb87c371bb8c11dfa04001 100644
--- a/locales/fr/LC_MESSAGES/sphinx.po
+++ b/locales/fr/LC_MESSAGES/sphinx.po
@@ -1,30 +1,27 @@
-# LANGUAGE translation of FILENAME.pot
+# SOME DESCRIPTIVE TITLE.
 # 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>, 2022.
-#
+# This file is distributed under the same license as the Jami package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
 #, 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-10-19 12:03+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"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../_templates/footer.html:41
-#, python-format
 msgid "<p><a href=\"%(path)s\">Copyright</a> &#169; %(copyright)s</p>"
 msgstr ""
 
 #: ../../../_templates/footer.html:43
-#, python-format
 msgid "<p>Copyright &#169; %(copyright)s</p>"
 msgstr ""
 
@@ -37,7 +34,5 @@ msgid "Revision"
 msgstr ""
 
 #: ../../../_templates/footer.html:64
-#, python-format
 msgid "Last updated on %(last_updated)s."
 msgstr ""
-
diff --git a/locales/fr/LC_MESSAGES/user.po b/locales/fr/LC_MESSAGES/user.po
index ca6e66bba463c2e8724385ef31335ed98e155e7a..c825cf5fa8f39a6bc910bf0e2f20dee834249a41 100644
--- a/locales/fr/LC_MESSAGES/user.po
+++ b/locales/fr/LC_MESSAGES/user.po
@@ -1,42 +1,55 @@
 # 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 documentation.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
-#
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+# Translators:
+# savoirfairelinux <support@savoirfairelinux.com>, 2022
+# Ecko <edric.milaret@gmail.com>, 2022
+# Alexandre Lision, 2022
+# Laura Galita <laura.galita@savoirfairelinux.com>, 2022
+# Cindy Marchi <cindy.marchi-prat@savoirfairelinux.com>, 2022
+# Emeric Robert <emericrobert@gmail.com>, 2022
+# 17373e25dc4e21ad6338b9498621c066, 2022
+# Adrien Béraud <adrien.beraud@savoirfairelinux.com>, 2022
+# 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-10-13 10:43-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"Project-Id-Version: Jami\n"
+"Report-Msgid-Bugs-To: https://git.jami.net/savoirfairelinux/jami-docs/-/issues\n"
+"POT-Creation-Date: 2022-10-26 17:49+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"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
 
 #: ../../../user/all-features-by-client.md:1
 msgid "All features by client"
-msgstr ""
+msgstr "Fonctionnalités par plateforme"
 
 #: ../../../user/all-features-by-client.md:4
 msgid "Legend:"
-msgstr ""
+msgstr "Légende :"
 
 #: ../../../user/all-features-by-client.md:6
 msgid "✓ : available"
-msgstr ""
+msgstr "✓ : disponible"
 
 #: ../../../user/all-features-by-client.md:7
 msgid "E : experimental"
-msgstr ""
+msgstr "E : Expérimentale"
 
 #: ../../../user/all-features-by-client.md:8
 msgid "X : not available yet"
-msgstr ""
+msgstr "X : non disponible pour le moment "
 
 #: ../../../user/all-features-by-client.md:9
 msgid "N/A : not applicable for this client"
@@ -44,297 +57,297 @@ msgstr ""
 
 #: ../../../user/all-features-by-client.md:11
 msgid "Text messaging"
-msgstr ""
+msgstr "Messagerie texte"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "**Client**"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Linux"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Windows"
-msgstr ""
+msgstr "Les fenêtres"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Android"
-msgstr ""
+msgstr "Android"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Android TV"
-msgstr ""
+msgstr "Android TV"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "iOS"
-msgstr ""
+msgstr "iOS"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "macOS"
-msgstr ""
+msgstr "macOS"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Text Messaging"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓"
-msgstr ""
+msgstr "✓"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Group chat"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "E"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "X"
-msgstr ""
+msgstr "X"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Clear History"
-msgstr ""
+msgstr "Effacer l'historique"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Chat history shared across devices"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Send Files"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto accept images"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Custom download location"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Typing indicator"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Read status"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:25
 msgid "Calling"
-msgstr ""
+msgstr "Appel en cours"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Audio Calling"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Video Calling"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Host call conference"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto bitrate"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Change video quality"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Custom ringtones"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Select camera"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Video call recording"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Leave audio message"
-msgstr ""
+msgstr "Envoyer un message vocal"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Leave video message"
-msgstr ""
+msgstr "Envoyer un message vidéo"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Screen sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓(1)"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Window sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Media sharing"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Hardware encoding *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Hardware decoding *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Mute sound"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Texting while on call"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Remote recording notif"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Rendez-vous mode"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Conference Layout"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Multistream"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Videosplit"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Audio Processor \\*\\*"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "✓(2)"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:54
 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
 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"
 msgstr ""
 
 #: ../../../user/all-features-by-client.md:61
 msgid "Account settings"
-msgstr ""
+msgstr "Paramètres du compte"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Profile avatar"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Disable account"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Delete account"
-msgstr ""
+msgstr "Supprimer le compte"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Contact availability"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Register username"
-msgstr ""
+msgstr "Enregistrer le nom d'utilisateur"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Delete Contacts"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Block Contacts"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Link new device via DHT"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Link new device via archive"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Auto answer"
-msgstr ""
+msgstr "Décrocher automatiquement"
 
 #: ../../../user/all-features-by-client.md:77
 msgid "Other features"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Scan QR Code"
-msgstr ""
+msgstr "Scanner un code QR"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Display QR Code"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Ban contact"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "System notifications"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Supported languages *"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "98"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Contacts shared across devices"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Multi account"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "SIP account"
-msgstr ""
+msgstr "Compte SIP"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "SIP transferring"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Dark theme support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "JAMS support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Plugin support"
 msgstr ""
 
@@ -344,34 +357,34 @@ msgstr ""
 
 #: ../../../user/all-features-by-client.md:96
 msgid "Advanced settings"
-msgstr ""
+msgstr "Réglages avancés"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "DHT Proxy support"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "Push notification"
 msgstr ""
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "N/A"
-msgstr ""
+msgstr "Pas de réponse"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "UPnP"
-msgstr ""
+msgstr "UPnP"
 
-#: ../../../user/all-features-by-client.md
+#: ../../../user/all-features-by-client.md:0
 msgid "TURN configuration"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:1
 msgid ""
-"**Note: We are currently a small number of developers active on the "
-"project.  As such, we cannot answer and tag all of the opened issues "
-"immediately, but we do notice and read them.  Good bug reports provide us"
-" important feedback, which we thank you for and always appreciate.**"
+"**Note: We are currently a small number of developers active on the project."
+"  As such, we cannot answer and tag all of the opened issues immediately, "
+"but we do notice and read them.  Good bug reports provide us important "
+"feedback, which we thank you for and always appreciate.**"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:6
@@ -380,8 +393,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:9
 msgid ""
-"This guide includes step-by-step instructions for reporting bugs and "
-"issues you encounter in Jami."
+"This guide includes step-by-step instructions for reporting bugs and issues "
+"you encounter in Jami."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:12
@@ -390,15 +403,15 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:15
 msgid ""
-"Be ready for data loss.  Back up your account and link your account to as"
-" many devices as possible."
+"Be ready for data loss.  Back up your account and link your account to as "
+"many devices as possible."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:17
 msgid ""
 "Install the latest version (or even a beta version) of Jami. Reporting "
-"bugs/issues against older versions is less useful, and there is a "
-"likelihood of it already having been fixed in newer versions."
+"bugs/issues against older versions is less useful, and there is a likelihood"
+" of it already having been fixed in newer versions."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:22
@@ -407,9 +420,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:25
 msgid ""
-"Create an account on the [Jami "
-"GitLab](https://git.jami.net/users/sign_up) if you don't have one "
-"already."
+"Create an account on the [Jami GitLab](https://git.jami.net/users/sign_up) "
+"if you don't have one already."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:29
@@ -426,8 +438,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:33
 msgid ""
-"{gitlab-project}`The GNOME/GTK client <jami-client-gnome>` (deprecated by"
-" {gitlab-project}`the Qt client <jami-client-qt>`)"
+"{gitlab-project}`The GNOME/GTK client <jami-client-gnome>` (deprecated by "
+"{gitlab-project}`the Qt client <jami-client-qt>`)"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:35
@@ -442,8 +454,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:38
 msgid ""
-"{gitlab-project}`The Jami project in general (or if you are not sure) "
-"<jami-project>`"
+"{gitlab-project}`The Jami project in general (or if you are not sure) <jami-"
+"project>`"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:40
@@ -454,14 +466,14 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:43
 msgid ""
-"If you have multiple issues, please file separate bug reports. It will be"
-" much easier to keep track of them that way."
+"If you have multiple issues, please file separate bug reports. It will be "
+"much easier to keep track of them that way."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:46
 msgid ""
-"The title is an explicit summary of the bug (e.g.: header bar is too big "
-"due to icon size)"
+"The title is an explicit summary of the bug (e.g.: header bar is too big due"
+" to icon size)"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:49
@@ -476,16 +488,16 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:53
 msgid ""
-"If you can reproduce occasionally, but not after following specific "
-"steps, please provide additional information about the issue to help "
-"others understand and try to reproduce it."
+"If you can reproduce occasionally, but not after following specific steps, "
+"please provide additional information about the issue to help others "
+"understand and try to reproduce it."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:56
 msgid ""
-"If you can't reproduce the problem, there may be little chance of it "
-"being reasonably fixable.  If you do report it, please try your best to "
-"provide as much information/clues about its occurrence as possible."
+"If you can't reproduce the problem, there may be little chance of it being "
+"reasonably fixable.  If you do report it, please try your best to provide as"
+" much information/clues about its occurrence as possible."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:61
@@ -519,16 +531,16 @@ msgstr ""
 #: ../../../user/bug-report-guide.md:72
 msgid ""
 "what build you are using (F-Droid, Play Store, App Store, from "
-"`dl.jami.net`, your own build, etc.).  If you have built your own version"
-" of Jami, please specify the exact Jami Daemon version and client version"
-" (you can obtain it using `jamid -v` and `jami-gnome -v` or `jami-qt -v`;"
-" but note that our packages are updated quite often) and the Git commit."
+"`dl.jami.net`, your own build, etc.).  If you have built your own version of"
+" Jami, please specify the exact Jami Daemon version and client version (you "
+"can obtain it using `jamid -v` and `jami-gnome -v` or `jami-qt -v`; but note"
+" that our packages are updated quite often) and the Git commit."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:78
 msgid ""
-"network conditions: are both devices on the same local network? Different"
-" networks?  Is one or both behind NAT? Are you using LTE?  Are you using "
+"network conditions: are both devices on the same local network? Different "
+"networks?  Is one or both behind NAT? Are you using LTE?  Are you using "
 "WiFi?"
 msgstr ""
 
@@ -548,8 +560,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:89
 msgid ""
-"A good summary should quickly and uniquely identify a bug report. It "
-"should explain the problem, not your suggested solution."
+"A good summary should quickly and uniquely identify a bug report. It should "
+"explain the problem, not your suggested solution."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:102
@@ -563,11 +575,11 @@ msgstr ""
 #: ../../../user/bug-report-guide.md:107
 msgid ""
 "Steps to reproduce are the most important part of any bug report. If a "
-"developer is able to reproduce the bug, the bug is very likely to be "
-"fixed.  If the steps are unclear, it might not even be possible to know "
-"whether the bug has been fixed.  We are totally aware that some bugs may "
-"look obvious to you, but they are probably related to your environment.  "
-"The more precise you are, the quicker the bug can be fixed."
+"developer is able to reproduce the bug, the bug is very likely to be fixed."
+"  If the steps are unclear, it might not even be possible to know whether "
+"the bug has been fixed.  We are totally aware that some bugs may look "
+"obvious to you, but they are probably related to your environment.  The more"
+" precise you are, the quicker the bug can be fixed."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:115
@@ -576,9 +588,9 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:117
 msgid ""
-"Indicate whether you can reproduce the bug at will, occasionally, or not "
-"at all.  Describe your method of interacting with Jami in addition to the"
-" intent of each step.  After your steps, precisely describe the observed "
+"Indicate whether you can reproduce the bug at will, occasionally, or not at "
+"all.  Describe your method of interacting with Jami in addition to the "
+"intent of each step.  After your steps, precisely describe the observed "
 "(actual) result and the expected result. Clearly separate facts "
 "(observations) from speculations."
 msgstr ""
@@ -625,8 +637,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:160
 msgid ""
-"The following information is requested for most bug reports.  You can "
-"save time by providing this information below the Expected results."
+"The following information is requested for most bug reports.  You can save "
+"time by providing this information below the Expected results."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:163
@@ -639,10 +651,10 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:167
 msgid ""
-"Go to the General settings.  In the Troubleshoot section, you can click "
-"on \"Open logs\", where you will be able to get statistics (\"Show "
-"stats\") or start recording information via \"Receive logs\". Then you "
-"can just copy the result and explain your scenario."
+"Go to the General settings.  In the Troubleshoot section, you can click on "
+"\"Open logs\", where you will be able to get statistics (\"Show stats\") or "
+"start recording information via \"Receive logs\". Then you can just copy the"
+" result and explain your scenario."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:172
@@ -655,15 +667,15 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:180
 msgid ""
-"Full log: Since the Jami client (GUI) and daemon are separated processes,"
-" the easiest way to get logs from both is to start them one at a time, "
+"Full log: Since the Jami client (GUI) and daemon are separated processes, "
+"the easiest way to get logs from both is to start them one at a time, "
 "manually."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:185
 msgid ""
-"Ensure that no Jami client or daemon instances are running: check by "
-"running `ps aux | grep jami` in a terminal."
+"Ensure that no Jami client or daemon instances are running: check by running"
+" `ps aux | grep jami` in a terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:187
@@ -673,7 +685,8 @@ msgid ""
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:189
-msgid "If either client or daemon are running, terminate them using `kill PID`."
+msgid ""
+"If either client or daemon are running, terminate them using `kill PID`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:191
@@ -689,8 +702,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:196
 msgid ""
-"In another terminal, start the client, using e.g. `jami-gnome -d` or "
-"`jami-qt -d`."
+"In another terminal, start the client, using e.g. `jami-gnome -d` or `jami-"
+"qt -d`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:199
@@ -699,16 +712,14 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:201
 msgid ""
-"`gdb -ex run jami-qt`, or `gdb -ex run jami-gnome`, or `gdb -ex run "
-"--args /usr/libexec/jamid -cd`, depending on the component you need to "
-"debug."
+"`gdb -ex run jami-qt`, or `gdb -ex run jami-gnome`, or `gdb -ex run --args "
+"/usr/libexec/jamid -cd`, depending on the component you need to debug."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:205
 msgid ""
-"When it crashes, you can type `bt` (or even better, `thread apply all "
-"bt`) then press *Enter*. Then copy the backtrace and paste it in the "
-"issue."
+"When it crashes, you can type `bt` (or even better, `thread apply all bt`) "
+"then press *Enter*. Then copy the backtrace and paste it in the issue."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:209
@@ -720,7 +731,8 @@ msgid "Navigate to `/Applications/Jami.app/Contents/MacOS/`."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:212
-msgid "Double click Jami.  It will launch Jami and print the log to the terminal."
+msgid ""
+"Double click Jami.  It will launch Jami and print the log to the terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:214
@@ -729,8 +741,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:216
 msgid ""
-"Alternatively, you could run `/<path to "
-"Jami>/Jami.app/Contents/MacOS/Jami -d` from the terminal."
+"Alternatively, you could run `/<path to Jami>/Jami.app/Contents/MacOS/Jami "
+"-d` from the terminal."
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:219
@@ -771,8 +783,8 @@ msgstr ""
 
 #: ../../../user/bug-report-guide.md:232
 msgid ""
-"```adb logcat *:D | grep `adb shell ps | egrep 'cx.ring' | cut -c10-15` >"
-" logring.txt```"
+"```adb logcat *:D | grep `adb shell ps | egrep 'cx.ring' | cut -c10-15` > "
+"logring.txt```"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:233
@@ -784,7 +796,8 @@ msgid "For Windows"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:237
-msgid "Open a terminal (cmd.exe) and launch Jami.exe with the following options:"
+msgid ""
+"Open a terminal (cmd.exe) and launch Jami.exe with the following options:"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:240
@@ -792,13 +805,12 @@ msgid "`-d` to open a separate console window to receive logs"
 msgstr ""
 
 #: ../../../user/bug-report-guide.md:241
-#, python-format
 msgid "`-f` to write logs to `%localappdata%\\jami\\jami.log`"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:1
 msgid "Create Jami account"
-msgstr ""
+msgstr "Créer un compte Jami"
 
 #: ../../../user/create-jami-account.md:4
 msgid "CREATE A JAMI ACCOUNT ON:"
@@ -812,8 +824,8 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:8
 msgid ""
-"Android (FR) [creer-compte-jami-android-fr.pdf](creer-compte-jami-"
-"android-fr.pdf)"
+"Android (FR) [creer-compte-jami-android-fr.pdf](creer-compte-jami-android-"
+"fr.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:10
@@ -824,12 +836,12 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:12
 msgid ""
-"macOS (FR) [creer-compte-jami-macos-fr.pdf](creer-compte-jami-macos-"
-"fr.pdf)"
+"macOS (FR) [creer-compte-jami-macos-fr.pdf](creer-compte-jami-macos-fr.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:14
-msgid "iOS (EN) [create-jami-account-ios-en.pdf](create-jami-account-ios-en.pdf)"
+msgid ""
+"iOS (EN) [create-jami-account-ios-en.pdf](create-jami-account-ios-en.pdf)"
 msgstr ""
 
 #: ../../../user/create-jami-account.md:16
@@ -838,8 +850,8 @@ msgstr ""
 
 #: ../../../user/create-jami-account.md:18
 msgid ""
-"Windows (FR) [creer-compte-jami-windows-fr.pdf](creer-compte-jami-"
-"windows-fr.pdf)"
+"Windows (FR) [creer-compte-jami-windows-fr.pdf](creer-compte-jami-windows-"
+"fr.pdf)"
 msgstr ""
 
 #: ../../../user/faq.rst:2
@@ -866,15 +878,15 @@ msgstr ""
 
 #: ../../../user/faq.rst:21
 msgid "What does Jami mean?"
-msgstr ""
+msgstr "Que veut dire Jami ?"
 
 #: ../../../user/faq.rst:23
 msgid ""
-"The choice of the name Jami was inspired by the Swahili word `jamii` "
-"which means `community` as a noun and `together` as an adverb.  It was "
-"chosen as it reflects the vision for the project: a free/libre program "
-"available to all that helps bring communities together, is community "
-"supported, and respects the freedom and privacy of the users."
+"The choice of the name Jami was inspired by the Swahili word `jamii` which "
+"means `community` as a noun and `together` as an adverb.  It was chosen as "
+"it reflects the vision for the project: a free/libre program available to "
+"all that helps bring communities together, is community supported, and "
+"respects the freedom and privacy of the users."
 msgstr ""
 
 #: ../../../user/faq.rst:30
@@ -895,16 +907,16 @@ msgid ""
 "*distributed*:"
 msgstr ""
 
-#: ../../../user/faq.rst:-1
+#: ../../../user/faq.rst-1
 msgid "Centralized, Decentralized, and Distributed network topology"
 msgstr ""
 
 #: ../../../user/faq.rst:43
 msgid ""
-"Some of the consequences may seem surprising.  For instance, since "
-"accounts are stored on your device, passwords are optional.  However, the"
-" most significant practical differences are that you have more *freedom* "
-"and *privacy*."
+"Some of the consequences may seem surprising.  For instance, since accounts "
+"are stored on your device, passwords are optional.  However, the most "
+"significant practical differences are that you have more *freedom* and "
+"*privacy*."
 msgstr ""
 
 #: ../../../user/faq.rst:52
@@ -919,18 +931,16 @@ msgstr ""
 
 #: ../../../user/faq.rst:57
 msgid ""
-"On other contacts, a red circle means that they are not online, and a "
-"green circle means they are online and you should be able to message "
-"them."
+"On other contacts, a red circle means that they are not online, and a green "
+"circle means they are online and you should be able to message them."
 msgstr ""
 
 #: ../../../user/faq.rst:61
 msgid ""
 "Note that a green circle only means that the contact has announced their "
 "presence on the DHT.  It does not indicate a direct connection to their "
-"device.  In some cases, a contact may be able to send and receive "
-"messages but cannot make calls or file transfers because of their "
-"firewall."
+"device.  In some cases, a contact may be able to send and receive messages "
+"but cannot make calls or file transfers because of their firewall."
 msgstr ""
 
 #: ../../../user/faq.rst:68
@@ -954,8 +964,8 @@ msgstr ""
 #: ../../../user/faq.rst:79
 msgid ""
 "You can enable or disable read receipts on Android. Other platforms may "
-"still be working on this feature.  Please see :doc:`All Features by "
-"Client <all-features-by-client>` for the current status."
+"still be working on this feature.  Please see :doc:`All Features by Client "
+"<all-features-by-client>` for the current status."
 msgstr ""
 
 #: ../../../user/faq.rst:84
@@ -964,8 +974,8 @@ msgstr ""
 
 #: ../../../user/faq.rst:86
 msgid ""
-"Most of the client support sending and receiving typing notifications. "
-"You can enable/disable them in the general settings."
+"Most of the client support sending and receiving typing notifications. You "
+"can enable/disable them in the general settings."
 msgstr ""
 
 #: ../../../user/faq.rst:90
@@ -990,12 +1000,12 @@ msgstr ""
 
 #: ../../../user/faq.rst:103
 msgid "Does Jami have group chats?"
-msgstr ""
+msgstr "Est-ce que Jami a des discussions de groupe ?"
 
 #: ../../../user/faq.rst:105
 msgid ""
-"Yes, Jami now has :doc:`../developer/swarm` group chats.  However, they "
-"are currently experimental and must be manually enabled from application "
+"Yes, Jami now has :doc:`../developer/swarm` group chats.  However, they are "
+"currently experimental and must be manually enabled from application "
 "settings.  Also, group chats are currently limited to 8 participants (so "
 "that bugs and issues could be more easily found and fixed in smaller "
 "scenarios, and hopefully lift this limit in the future)."
@@ -1009,26 +1019,26 @@ msgstr ""
 msgid ""
 "Before :doc:`../developer/swarm`, an account's devices would receive the "
 "same messages from contacts if the device was online at the time of the "
-"message being sent, but *sent* messages would not show up on devices "
-"other than the one sending the message."
+"message being sent, but *sent* messages would not show up on devices other "
+"than the one sending the message."
 msgstr ""
 
 #: ../../../user/faq.rst:120
 msgid ""
 "With the introduction of Swarm, conversation histories of new Swarm "
-"conversations (including one-on-one conversations) are fully synchronized"
-" between all of an account's linked devices.  If you are using an older "
-"version of Jami, please upgrade to the latest version with Swarm support."
-"  The latest version of Jami is always available from the Download page "
-"of the Jami website, at https://jami.net/download/."
+"conversations (including one-on-one conversations) are fully synchronized "
+"between all of an account's linked devices.  If you are using an older "
+"version of Jami, please upgrade to the latest version with Swarm support.  "
+"The latest version of Jami is always available from the Download page of the"
+" Jami website, at https://jami.net/download/."
 msgstr ""
 
 #: ../../../user/faq.rst:128
 msgid ""
 "To learn more about Swarm, you can read our blog post `Synchronizing "
 "conversation history with Swarm <https://jami.net/synchronizing-"
-"conversation-history-with-swarm/>`_ and see the :doc:`../developer/swarm`"
-" page of the Jami developer manual."
+"conversation-history-with-swarm/>`_ and see the :doc:`../developer/swarm` "
+"page of the Jami developer manual."
 msgstr ""
 
 #: ../../../user/faq.rst:135
@@ -1037,30 +1047,30 @@ msgstr ""
 
 #: ../../../user/faq.rst:137
 msgid ""
-"With :doc:`../developer/swarm` conversations, every device stores all a "
-"copy of all of the messages in that conversation.  If a device (whether "
-"your own, or another participant's) is not available/online when a "
-"message is sent, when it comes back online again it will try to fetch any"
-" new messages from other online devices/peers and synchronize message "
-"history.  This can be done whenever at least one other device that has a "
-"copy of the new messages is also online."
+"With :doc:`../developer/swarm` conversations, every device stores all a copy"
+" of all of the messages in that conversation.  If a device (whether your "
+"own, or another participant's) is not available/online when a message is "
+"sent, when it comes back online again it will try to fetch any new messages "
+"from other online devices/peers and synchronize message history.  This can "
+"be done whenever at least one other device that has a copy of the new "
+"messages is also online."
 msgstr ""
 
 #: ../../../user/faq.rst:145
 msgid ""
-"You can read more about how Swarm conversations are synchronized in our "
-"blog post `Synchronizing conversation history with Swarm "
+"You can read more about how Swarm conversations are synchronized in our blog"
+" post `Synchronizing conversation history with Swarm "
 "<https://jami.net/synchronizing-conversation-history-with-swarm/>`_."
 msgstr ""
 
 #: ../../../user/faq.rst:150
 msgid ""
-"If the participants in a conversation are often not online at the same "
-"time (for instance, due to timezone differences), one of them might "
-"choose to set up Jami on an often-online device that would receive the "
-"messages from each participant and relay it to the other(s) whenever they"
-" come online.  Thus, acting similarly to a \"server\", all the while Jami"
-" remains distributed by nature."
+"If the participants in a conversation are often not online at the same time "
+"(for instance, due to timezone differences), one of them might choose to set"
+" up Jami on an often-online device that would receive the messages from each"
+" participant and relay it to the other(s) whenever they come online.  Thus, "
+"acting similarly to a \"server\", all the while Jami remains distributed by "
+"nature."
 msgstr ""
 
 #: ../../../user/faq.rst:160
@@ -1069,31 +1079,30 @@ msgstr ""
 
 #: ../../../user/faq.rst:162
 msgid ""
-"Jami saves its configuration (account, certificates, history) at "
-"different locations depending on the platform."
+"Jami saves its configuration (account, certificates, history) at different "
+"locations depending on the platform."
 msgstr ""
 
 #: ../../../user/faq.rst:165
 msgid ""
-"**GNU/Linux**: global configuration is under "
-"``~/.config/jami/dring.yml``, and account-specific files are under "
-"``~/.local/share/jami/``.  Finally, there is a cache directory at "
-"``~/.cache/jami/``."
+"**GNU/Linux**: global configuration is under ``~/.config/jami/dring.yml``, "
+"and account-specific files are under ``~/.local/share/jami/``.  Finally, "
+"there is a cache directory at ``~/.cache/jami/``."
 msgstr ""
 
 #: ../../../user/faq.rst:170
 msgid ""
 "**macOS**: the full configuration is under ``~/Library/Application "
-"Support/Jami/`` if installed via https://jami.net.  The app store version"
-" uses "
+"Support/Jami/`` if installed via https://jami.net.  The app store version "
+"uses "
 "``~/Library/Containers/com.savoirfairelinux.ring.macos/Data/Library/Application"
 " Support/jami/``."
 msgstr ""
 
 #: ../../../user/faq.rst:175
 msgid ""
-"**Android**: the full configuration is under ``/data/data/cx.ring/`` (may"
-" require root privileges to view or change from outside Jami)."
+"**Android**: the full configuration is under ``/data/data/cx.ring/`` (may "
+"require root privileges to view or change from outside Jami)."
 msgstr ""
 
 #: ../../../user/faq.rst:178
@@ -1106,15 +1115,14 @@ msgstr ""
 
 #: ../../../user/faq.rst:183
 msgid ""
-"Note: audio and video messages are recorded in the local-data in the "
-"folder: ``sent_data``"
+"Note: audio and video messages are recorded in the local-data in the folder:"
+" ``sent_data``"
 msgstr ""
 
 #: ../../../user/faq.rst:186
 msgid ""
-"For files, if a file is saved (right click on the file, then Save) it "
-"will be added to the directory you configured in the application "
-"settings."
+"For files, if a file is saved (right click on the file, then Save) it will "
+"be added to the directory you configured in the application settings."
 msgstr ""
 
 #: ../../../user/faq.rst:191
@@ -1123,68 +1131,68 @@ msgstr ""
 
 #: ../../../user/faq.rst:193
 msgid ""
-"For audio calls, Jami uses about 100 Kbps.  For a video call, you need "
-"about 2 Mbit/s for medium quality.  If your connection is slower, the "
-"bitrate will be automatically reduced."
+"For audio calls, Jami uses about 100 Kbps.  For a video call, you need about"
+" 2 Mbit/s for medium quality.  If your connection is slower, the bitrate "
+"will be automatically reduced."
 msgstr ""
 
 #: ../../../user/faq.rst:197
 msgid ""
 "If you are hosting a video conference, you will approximately need an "
-"additional 2 Mbps per participant.  So, for example for a conference with"
-" 10 participants, each participant will need 2 Mbps up & down and the "
-"host will need 20 Mbps up and down."
+"additional 2 Mbps per participant.  So, for example for a conference with 10"
+" participants, each participant will need 2 Mbps up & down and the host will"
+" need 20 Mbps up and down."
 msgstr ""
 
 #: ../../../user/faq.rst:202
 msgid ""
 "Jami also uses an algorithm to change the consumption depending of the "
-"quality of the link. So, the bitrate can have a minimum of 200 Kbit/s and"
-" maximum of 6 Mbit/s."
+"quality of the link. So, the bitrate can have a minimum of 200 Kbit/s and "
+"maximum of 6 Mbit/s."
 msgstr ""
 
 #: ../../../user/faq.rst:207
 msgid ""
-"How can SFL afford to give Jami away for free?  How does/will SFL make "
-"money off Jami?"
+"How can SFL afford to give Jami away for free?  How does/will SFL make money"
+" off Jami?"
 msgstr ""
 
 #: ../../../user/faq.rst:209
 msgid ""
 "Summary: ethical company, they will make money supporting managed Jami "
-"solutions for organizations; their main source of income is elsewhere; "
-"all Jami code is GPLv3+; etc. etc."
+"solutions for organizations; their main source of income is elsewhere; all "
+"Jami code is GPLv3+; etc. etc."
 msgstr ""
 
 #: ../../../user/faq.rst:215
 msgid "Account management"
-msgstr ""
+msgstr "Gestion du compte"
 
 #: ../../../user/faq.rst:218
 msgid "What is a Jami account?"
-msgstr ""
+msgstr "Qu'est-ce qu'un compte Jami ?"
 
 #: ../../../user/faq.rst:220
 msgid ""
 "A Jami account is an `asymmetric encryption key "
-"<https://en.wikipedia.org/wiki/Public-key_cryptography>`_. Your account "
-"is identified by a Jami ID, which is a `fingerprint "
-"<https://en.wikipedia.org/wiki/Public_key_fingerprint>`_ of your public "
-"key."
+"<https://en.wikipedia.org/wiki/Public-key_cryptography>`_. Your account is "
+"identified by a Jami ID, which is a `fingerprint "
+"<https://en.wikipedia.org/wiki/Public_key_fingerprint>`_ of your public key."
 msgstr ""
 
 #: ../../../user/faq.rst:227
 msgid "What information do I need to provide to create a Jami account?"
-msgstr ""
+msgstr "Quelles informations dois-je fournir pour créer un compte Jami ?"
 
 #: ../../../user/faq.rst:229
 msgid ""
-"When you create a new Jami account, you don't have to provide any private"
-" information like an email, address, or phone number."
+"When you create a new Jami account, you don't have to provide any private "
+"information like an email, address, or phone number."
 msgstr ""
 
 #: ../../../user/faq.rst:232
-msgid "This is the information you can provide if you choose (it's all optional):"
+msgid ""
+"This is the information you can provide if you choose (it's all optional):"
 msgstr ""
 
 #: ../../../user/faq.rst:235
@@ -1200,14 +1208,14 @@ msgstr ""
 #: ../../../user/faq.rst:238
 msgid ""
 "An optional username, which is a unique identifier that is directly "
-"associated with your Jami ID.  This username->Jami ID mapping is stored "
-"on a server (``ns.jami.net`` by default, but you can host your own)."
+"associated with your Jami ID.  This username->Jami ID mapping is stored on a"
+" server (``ns.jami.net`` by default, but you can host your own)."
 msgstr ""
 
 #: ../../../user/faq.rst:242
 msgid ""
-"A password.  This password is used to protect the account archive in your"
-" device."
+"A password.  This password is used to protect the account archive in your "
+"device."
 msgstr ""
 
 #: ../../../user/faq.rst:245
@@ -1222,769 +1230,762 @@ msgstr ""
 
 #: ../../../user/faq.rst:251
 msgid ""
-"Your Jami ID should be displayed prominently in whichever app you're "
-"using.  It looks like a long string of letters and numbers; for example: "
+"Your Jami ID should be displayed prominently in whichever app you're using."
+"  It looks like a long string of letters and numbers; for example: "
 "``f2c815f5554bcc22689ce84d45aefdda1bce9146``."
 msgstr ""
 
 #: ../../../user/faq.rst:256
 msgid "Why don't I have to use a password?"
-msgstr ""
+msgstr "Pourquoi n'ai-je pas besoin d'utiliser un mot de passe ?"
 
 #: ../../../user/faq.rst:258
 msgid ""
 "You are not forced to have a password on your account.  On a centralized "
 "system you would use your password to authenticate with a public server "
-"where your account is stored.  Someone who knows your password could "
-"steal your identity."
+"where your account is stored.  Someone who knows your password could steal "
+"your identity."
 msgstr ""
 
 #: ../../../user/faq.rst:263
 msgid ""
-"With Jami, your account is stored in a :ref:`folder <user/faq:Where are "
-"the configuration files located?>` on your device.  **The password is "
-"only used to encrypt your account in order to protect you from someone "
-"who has physical access to your device.**"
+"With Jami, your account is stored in a :ref:`folder <user/faq:Where are the "
+"configuration files located?>` on your device.  **The password is only used "
+"to encrypt your account in order to protect you from someone who has "
+"physical access to your device.**"
 msgstr ""
 
 #: ../../../user/faq.rst:268
 msgid ""
-"If your device is encrypted, you may not want or need to use a password, "
-"and indeed recent versions of Jami don't ask for an account encryption "
-"password by default when creating new accounts."
+"If your device is encrypted, you may not want or need to use a password, and"
+" indeed recent versions of Jami don't ask for an account encryption password"
+" by default when creating new accounts."
 msgstr ""
 
 #: ../../../user/faq.rst:273
 msgid "Why don't I have to register a username?"
-msgstr ""
+msgstr "Pourquoi je n'ai pas besoin d'enregistrer un nom d'utilisateur ?"
 
 #: ../../../user/faq.rst:275
 msgid ""
-"The most permanent, secure identifier is your :ref:`Jami ID "
-"<user/faq:Where is my Jami ID?>`, but since these are difficult to use "
-"for some people, you also have the option of registering a username. "
-"Username registration requires a name server, such as Jami's default one "
-"at ``ns.jami.net``."
+"The most permanent, secure identifier is your :ref:`Jami ID <user/faq:Where "
+"is my Jami ID?>`, but since these are difficult to use for some people, you "
+"also have the option of registering a username. Username registration "
+"requires a name server, such as Jami's default one at ``ns.jami.net``."
 msgstr ""
 
 #: ../../../user/faq.rst:281
 msgid ""
-"If you don't register a username, you can still choose to register one "
-"later at any time."
+"If you don't register a username, you can still choose to register one later"
+" at any time."
+msgstr ""
+
+#: ../../../user/faq.rst:284
+msgid ""
+"If you host your own nameserver at ``example.com``, usernames registered "
+"there can be looked up by searching for ``username@example.com``."
 msgstr ""
 
-#: ../../../user/faq.rst:285
+#: ../../../user/faq.rst:288
 msgid "Can I change my username?"
 msgstr ""
 
-#: ../../../user/faq.rst:287
+#: ../../../user/faq.rst:290
 msgid ""
 "With the default nameserver (``ns.jami.net``) you cannot change your "
 "username."
 msgstr ""
 
-#: ../../../user/faq.rst:291
+#: ../../../user/faq.rst:294
 msgid "What is the difference between a username and a display name?"
 msgstr ""
 
-#: ../../../user/faq.rst:293
+#: ../../../user/faq.rst:296
 msgid ""
 "You can use your username as an identifier.  The username points to your "
 ":ref:`Jami ID <user/faq:Where is my Jami ID?>`, which is your permanent, "
 "secure identifier.  Two people cannot have the same username."
 msgstr ""
 
-#: ../../../user/faq.rst:298
+#: ../../../user/faq.rst:301
 msgid ""
-"A display name allows you to choose another name that identifies you to "
-"your contacts.  Display names can be edited or changed at any time and "
-"only your contacts can see them."
+"A display name allows you to choose another name that identifies you to your"
+" contacts.  Display names can be edited or changed at any time and only your"
+" contacts can see them."
 msgstr ""
 
-#: ../../../user/faq.rst:303
+#: ../../../user/faq.rst:306
 msgid "How can I back up my account?"
-msgstr ""
+msgstr "Comment faire pour sauvegarder mon compte ?"
 
-#: ../../../user/faq.rst:305
+#: ../../../user/faq.rst:308
 msgid "There are two ways to back up your account:"
 msgstr ""
 
-#: ../../../user/faq.rst:307
+#: ../../../user/faq.rst:310
 msgid ""
-"Link another device to your account so your account will be on two "
-"devices.  You can find this option in the account settings page."
+"Link another device to your account so your account will be on two devices."
+"  You can find this option in the account settings page."
 msgstr ""
 
-#: ../../../user/faq.rst:309
+#: ../../../user/faq.rst:312
 msgid ""
-"Back up the :ref:`account archive <developer/technical-overview:Jami "
-"archive (export.gz)>`.  This file can be found in the account files "
-":ref:`folder <user/faq:Where are the configuration files located?>`.  In "
-"some clients, you can export this archive from the account settings."
+"Back up the :ref:`account archive <developer/technical-overview:Jami archive"
+" (export.gz)>`.  This file can be found in the account files :ref:`folder "
+"<user/faq:Where are the configuration files located?>`.  In some clients, "
+"you can export this archive from the account settings."
 msgstr ""
 
-#: ../../../user/faq.rst:316
+#: ../../../user/faq.rst:319
 msgid "Can I retrieve my username without my keys?"
 msgstr ""
 
-#: ../../../user/faq.rst:318
+#: ../../../user/faq.rst:321
 msgid ""
-"If you used the default name server at ``ns.jami.net``, **you can't**. "
-"There is no way to prove it's your username without your key."
+"If you used the default name server at ``ns.jami.net``, **you can't**. There"
+" is no way to prove it's your username without your key."
 msgstr ""
 
-#: ../../../user/faq.rst:321
+#: ../../../user/faq.rst:324
 msgid ""
-"If you use a different name server, there may be a way to move a username"
-" to a new Jami ID at the discretion of the administrator of that name "
-"server."
+"If you use a different name server, there may be a way to move a username to"
+" a new Jami ID at the discretion of the administrator of that name server."
 msgstr ""
 
-#: ../../../user/faq.rst:325
+#: ../../../user/faq.rst:328
 msgid ""
-"For more information about name servers, see :doc:`../developer/name-"
-"server-protocol`."
+"For more information about name servers, see :doc:`../developer/name-server-"
+"protocol`."
 msgstr ""
 
-#: ../../../user/faq.rst:329
+#: ../../../user/faq.rst:332
 msgid "Can I recover my account if I forget my password?"
 msgstr ""
 
-#: ../../../user/faq.rst:331
+#: ../../../user/faq.rst:334
 msgid ""
-"No.  There can't be a traditional account recovery process; you are the "
-"only person with access to your data.  If you are worried about "
-"forgetting your password, please use a password manager."
+"No.  There can't be a traditional account recovery process; you are the only"
+" person with access to your data.  If you are worried about forgetting your "
+"password, please use a password manager."
 msgstr ""
 
-#: ../../../user/faq.rst:336
+#: ../../../user/faq.rst:339
 msgid "What happens when I delete my account?"
-msgstr ""
+msgstr "Que se passe-t-il si je supprime mon compte ?"
 
-#: ../../../user/faq.rst:338
+#: ../../../user/faq.rst:341
 msgid ""
-"Your account is only stored on your own devices.  If you delete your "
-"account from each device, the account is gone and you cannot get it back "
-"(unless you already made a backup of it earlier).  Nobody else can use "
-"your account after that."
+"Your account is only stored on your own devices.  If you delete your account"
+" from each device, the account is gone and you cannot get it back (unless "
+"you already made a backup of it earlier).  Nobody else can use your account "
+"after that."
 msgstr ""
 
-#: ../../../user/faq.rst:343
+#: ../../../user/faq.rst:346
 msgid ""
 "Your contacts will still have the messages you sent them, but all public "
-"record of your account on the DHT will eventually disappear due to "
-"absence and lack of activity."
+"record of your account on the DHT will eventually disappear due to absence "
+"and lack of activity."
 msgstr ""
 
-#: ../../../user/faq.rst:347
+#: ../../../user/faq.rst:350
 msgid ""
-"The default ``ns.jami.net`` name server **does not** delete any "
-"registered usernames -- other name servers might (not recommended), at "
-"their administrator's discretion.  So, if you have an account with a "
-"username registered on the default name server and you delete or lose "
-"your account, and did not back up your account earlier, nobody (including"
-" you) will be able to register a new account with that username again, "
-"thus nobody can reach you at that username anymore."
+"The default ``ns.jami.net`` name server **does not** delete any registered "
+"usernames -- other name servers might (not recommended), at their "
+"administrator's discretion.  So, if you have an account with a username "
+"registered on the default name server and you delete or lose your account, "
+"and did not back up your account earlier, nobody (including you) will be "
+"able to register a new account with that username again, thus nobody can "
+"reach you at that username anymore."
 msgstr ""
 
-#: ../../../user/faq.rst:356
+#: ../../../user/faq.rst:359
 msgid ""
-"To avoid losing your account **please** :ref:`back it up <user/faq:How "
-"can I back up my account?>`!"
+"To avoid losing your account **please** :ref:`back it up <user/faq:How can I"
+" back up my account?>`!"
 msgstr ""
 
-#: ../../../user/faq.rst:360
+#: ../../../user/faq.rst:363
 msgid "What happens when I link a new device?"
 msgstr ""
 
-#: ../../../user/faq.rst:362
+#: ../../../user/faq.rst:365
 msgid ""
 "When you link a device to your account, your :ref:`account archive "
-"<developer/technical-overview:Jami archive (export.gz)>` is put on the "
-"Jami network for a few minutes.  It is protected by a password Jami gives"
-" you."
+"<developer/technical-overview:Jami archive (export.gz)>` is put on the Jami "
+"network for a few minutes.  It is protected by a password Jami gives you."
 msgstr ""
 
-#: ../../../user/faq.rst:367
+#: ../../../user/faq.rst:370
 msgid ""
-"The new device receives your full account certificate with the master RSA"
-" keys, but it generates a new device key for signing/encrypting messages."
+"The new device receives your full account certificate with the master RSA "
+"keys, but it generates a new device key for signing/encrypting messages."
 msgstr ""
 
-#: ../../../user/faq.rst:373
+#: ../../../user/faq.rst:376
 msgid "Advanced"
-msgstr ""
+msgstr "Avancé"
 
-#: ../../../user/faq.rst:376
+#: ../../../user/faq.rst:379
 msgid "What protocol does Jami use for the end-to-end encryption?"
 msgstr ""
 
-#: ../../../user/faq.rst:378
+#: ../../../user/faq.rst:381
 msgid ""
-"We use TLS 1.3 with a perfect forward secrecy requirement for the "
-"negotiated ciphers for calls and file transfers.  Messages are encrypted "
-"with an RSA key."
+"We use TLS 1.3 with a perfect forward secrecy requirement for the negotiated"
+" ciphers for calls and file transfers.  Messages are encrypted with an RSA "
+"key."
 msgstr ""
 
-#: ../../../user/faq.rst:384
+#: ../../../user/faq.rst:387
 msgid ""
-"What data passes through my machine when I participate in the Jami "
-"network?"
+"What data passes through my machine when I participate in the Jami network?"
 msgstr ""
 
-#: ../../../user/faq.rst:386
+#: ../../../user/faq.rst:389
 msgid "**All these data are encrypted**.  There is:"
 msgstr ""
 
-#: ../../../user/faq.rst:388
+#: ../../../user/faq.rst:391
 msgid ""
 "ICE descriptors of other Jami users (ICE is a protocol that helps "
 "establishing communication between two computers);"
 msgstr ""
 
-#: ../../../user/faq.rst:390
+#: ../../../user/faq.rst:393
 msgid "certain text messages; and"
 msgstr ""
 
-#: ../../../user/faq.rst:391
+#: ../../../user/faq.rst:394
 msgid "accounts currently being linked to a new device, as explained above."
 msgstr ""
 
-#: ../../../user/faq.rst:393
+#: ../../../user/faq.rst:396
 msgid ""
-"Audio/video streams and some text messages pass through the VOIP "
-"protocol.  Text messages can be sent either via VOIP or DHT (the "
-"distributed network) depending on whether a VOIP communication channel is"
-" already open or not."
+"Audio/video streams and some text messages pass through the VOIP protocol.  "
+"Text messages can be sent either via VOIP or DHT (the distributed network) "
+"depending on whether a VOIP communication channel is already open or not."
 msgstr ""
 
-#: ../../../user/faq.rst:399
+#: ../../../user/faq.rst:402
 msgid "Why am I able to communicate with myself?"
 msgstr ""
 
-#: ../../../user/faq.rst:401
+#: ../../../user/faq.rst:404
 msgid "Many users use Jami to transfer data from one machine to another."
 msgstr ""
 
-#: ../../../user/faq.rst:404
+#: ../../../user/faq.rst:407
 msgid "Should I enable push notifications?"
 msgstr ""
 
-#: ../../../user/faq.rst:406
+#: ../../../user/faq.rst:409
 msgid ""
 "Push notifications allow Jami to operate in a way more adapted to the "
 "context of mobility (energy consumption, data, ...).  However, for the "
-"moment, notifications go through Google's servers, via the Firebase "
-"service.  Only one identifier is transferred and it is unusable for "
-"anyone who does not have access to your account."
+"moment, notifications go through Google's servers, via the Firebase service."
+"  Only one identifier is transferred and it is unusable for anyone who does "
+"not have access to your account."
 msgstr ""
 
-#: ../../../user/faq.rst:413
+#: ../../../user/faq.rst:416
 msgid "What is a bootstrap server?"
 msgstr ""
 
-#: ../../../user/faq.rst:415
+#: ../../../user/faq.rst:418
 msgid ""
-"A bootstrap server is the entry point of the distributed network. To "
-"enter in a network, Jami must know one other node.  This is the role of "
-"the bootstrap. It can be any node in the network, but, bootstrap nodes "
-"are generally always up and available. The default one in Jami is "
+"A bootstrap server is the entry point of the distributed network. To enter "
+"in a network, Jami must know one other node.  This is the role of the "
+"bootstrap. It can be any node in the network, but, bootstrap nodes are "
+"generally always up and available. The default one in Jami is "
 "``bootstrap.jami.net``."
 msgstr ""
 
-#: ../../../user/faq.rst:422
+#: ../../../user/faq.rst:425
 msgid "What is a TURN server?  What is STUN?"
 msgstr ""
 
-#: ../../../user/faq.rst:424
+#: ../../../user/faq.rst:427
 msgid ""
-"A TURN server is a relay, and is generally used when two peers can't "
-"contact to each other due to some firewall restriction, have NAT without "
-"any opened port, and no IPv6."
+"A TURN server is a relay, and is generally used when two peers can't contact"
+" to each other due to some firewall restriction, have NAT without any opened"
+" port, and no IPv6."
 msgstr ""
 
-#: ../../../user/faq.rst:428
+#: ../../../user/faq.rst:431
 msgid ""
-"A STUN server is only used for SIP accounts, and is generally used to get"
-" your public IP.  For Jami accounts, the DHT already gives this "
-"information."
+"A STUN server is only used for SIP accounts, and is generally used to get "
+"your public IP.  For Jami accounts, the DHT already gives this information."
 msgstr ""
 
-#: ../../../user/faq.rst:433
+#: ../../../user/faq.rst:436
 msgid "What is DHT proxy?"
 msgstr ""
 
-#: ../../../user/faq.rst:435
+#: ../../../user/faq.rst:438
 msgid ""
-"The DHT proxy is a server that registers on the DHT for you and relays "
-"your information to you.  Thus, it is the server that will be active on "
-"the DHT and will participate in the network, and no longer the target "
-"device.  Multiple devices can register on the same DHT proxy."
+"The DHT proxy is a server that registers on the DHT for you and relays your "
+"information to you.  Thus, it is the server that will be active on the DHT "
+"and will participate in the network, and no longer the target device.  "
+"Multiple devices can register on the same DHT proxy."
 msgstr ""
 
-#: ../../../user/faq.rst:441
+#: ../../../user/faq.rst:444
 msgid "How does the username registration service work?"
 msgstr ""
 
-#: ../../../user/faq.rst:443
+#: ../../../user/faq.rst:446
 msgid ""
-"With the default name server (``ns.jami.net``), the usernames are "
-"registered on an Ethereum blockchain.  If you are a developer, you can "
-"build your own name server with the underlying data storage technology of"
-" your choice (e.g. you could use a SQL database rather than using a "
-"blockchain)."
+"With the default name server (``ns.jami.net``), the usernames are registered"
+" on an Ethereum blockchain.  If you are a developer, you can build your own "
+"name server with the underlying data storage technology of your choice (e.g."
+" you could use a SQL database rather than using a blockchain)."
 msgstr ""
 
-#: ../../../user/faq.rst:449
+#: ../../../user/faq.rst:452
 msgid ""
 "With the default name server, you can look up usernames at "
-"``https://ns.jami.net/name/test``, where ``test`` is a username for which"
-" we are looking for a matching :doc:`Infohash <../developer/jami-"
-"identifiers>`.  Once registered, this name server **does not** provide "
-"any way to remove the mapping."
+"``https://ns.jami.net/name/test``, where ``test`` is a username for which we"
+" are looking for a matching :doc:`Infohash <../developer/jami-identifiers>`."
+"  Once registered, this name server **does not** provide any way to remove "
+"the mapping."
 msgstr ""
 
-#: ../../../user/faq.rst:455
+#: ../../../user/faq.rst:458
 msgid "Read more about the Jami :doc:`../developer/name-server-protocol`."
 msgstr ""
 
-#: ../../../user/faq.rst:458
+#: ../../../user/faq.rst:461
 msgid "How can I change the timeout for a call?"
 msgstr ""
 
-#: ../../../user/faq.rst:460
+#: ../../../user/faq.rst:463
 msgid ""
-"In the ``dring.yml`` file (see :ref:`user/faq:Where are the configuration"
-" files located?`), you can change the ``ringingTimeout`` (in seconds)."
+"In the ``dring.yml`` file (see :ref:`user/faq:Where are the configuration "
+"files located?`), you can change the ``ringingTimeout`` (in seconds)."
 msgstr ""
 
-#: ../../../user/faq.rst:465
+#: ../../../user/faq.rst:468
 msgid "How to back up and reimport conversations and accounts"
 msgstr ""
 
-#: ../../../user/faq.rst:467
+#: ../../../user/faq.rst:470
 msgid "This is only for clients based on LRC (desktop ones)."
 msgstr ""
 
-#: ../../../user/faq.rst:469
+#: ../../../user/faq.rst:472
 msgid ""
-"First you will need to export all your accounts (For GNU/Linux: "
-"``Settings`` => ``Account`` => ``Export account``).  Then you will need "
-"to copy the database (in ``~/.local/share/jami/`` for example)."
+"First you will need to export all your accounts (For GNU/Linux: ``Settings``"
+" => ``Account`` => ``Export account``).  Then you will need to copy the "
+"database (in ``~/.local/share/jami/`` for example)."
 msgstr ""
 
-#: ../../../user/faq.rst:473
+#: ../../../user/faq.rst:476
 msgid ""
-"Then on the new device, when you will open Jami for the first time, you "
-"have to re-import your accounts via the archive previously saved.  This "
-"will re-import your settings and contacts (with empty conversations). "
-"Then close the client and replace the database with the one previously "
-"saved.  That's all!"
+"Then on the new device, when you will open Jami for the first time, you have"
+" to re-import your accounts via the archive previously saved.  This will re-"
+"import your settings and contacts (with empty conversations). Then close the"
+" client and replace the database with the one previously saved.  That's all!"
 msgstr ""
 
-#: ../../../user/faq.rst:480
+#: ../../../user/faq.rst:483
 msgid "How secure are you?"
 msgstr ""
 
-#: ../../../user/faq.rst:482
+#: ../../../user/faq.rst:485
 msgid ""
 "**We use TLS/SRTP to secure connection and communications over the "
 "network.**"
 msgstr ""
 
-#: ../../../user/faq.rst:485
+#: ../../../user/faq.rst:488
 msgid ""
-"We implement SRTP over SIP using recommendations described in the "
-"following two RFCs:"
+"We implement SRTP over SIP using recommendations described in the following "
+"two RFCs:"
 msgstr ""
 
-#: ../../../user/faq.rst:488
+#: ../../../user/faq.rst:491
 msgid "`RFC 3711 <https://tools.ietf.org/html/rfc3711>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:489
+#: ../../../user/faq.rst:492
 msgid "`RFC 4568 <https://tools.ietf.org/html/rfc4568>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:491
+#: ../../../user/faq.rst:494
 msgid ""
-"Typically 2 kinds of sockets are negotiated.  One for the control socket,"
-" the other for the media sockets."
+"Typically 2 kinds of sockets are negotiated.  One for the control socket, "
+"the other for the media sockets."
 msgstr ""
 
-#: ../../../user/faq.rst:494
+#: ../../../user/faq.rst:497
 msgid "Typical control session will use the following cipher suite::"
 msgstr ""
 
-#: ../../../user/faq.rst:499
+#: ../../../user/faq.rst:502
 msgid "DTLS (fallback) supported::"
 msgstr ""
 
-#: ../../../user/faq.rst:503
+#: ../../../user/faq.rst:506
 msgid "TLS::"
 msgstr ""
 
-#: ../../../user/faq.rst:507
+#: ../../../user/faq.rst:510
 msgid "Supported crypto suite for the media session are:"
 msgstr ""
 
-#: ../../../user/faq.rst:509
+#: ../../../user/faq.rst:512
 msgid "``AES_CM_128_HMAC_SHA1_80 / SRTP_AES128_CM_HMAC_SHA1_80``"
 msgstr ""
 
-#: ../../../user/faq.rst:510
+#: ../../../user/faq.rst:513
 msgid "``AES_CM_128_HMAC_SHA1_32 / SRTP_AES128_CM_HMAC_SHA1_32``"
 msgstr ""
 
-#: ../../../user/faq.rst:513
+#: ../../../user/faq.rst:516
 msgid "When do public IPs get exposed?"
 msgstr ""
 
-#: ../../../user/faq.rst:515
+#: ../../../user/faq.rst:518
 msgid ""
 "We can consider three main connectivity scenarios: (1) a classic "
-"configuration, (2) behind a VPN, (3) via Tor.  As Jami is a p2p "
-"application, the reader would probably know that (2) or (3) is a bit "
-"mandatory to avoid IP leaking."
+"configuration, (2) behind a VPN, (3) via Tor.  As Jami is a p2p application,"
+" the reader would probably know that (2) or (3) is a bit mandatory to avoid "
+"IP leaking."
 msgstr ""
 
-#: ../../../user/faq.rst:520
+#: ../../../user/faq.rst:523
 msgid ""
-"Moreover, even if it's my answer, you can choose to not trust my answer "
-"and check the code, or use wireshark or other tools. Generally, I (and as"
-" far as I know most other Jami developers) use the first scenario "
-"(sometimes the second one), and we surely can't test all the possible "
-"networks configurations we would like to, so if you discover a bug, "
-"please :doc:`open an issue <bug-report-guide>`."
+"Moreover, even if it's my answer, you can choose to not trust my answer and "
+"check the code, or use wireshark or other tools. Generally, I (and as far as"
+" I know most other Jami developers) use the first scenario (sometimes the "
+"second one), and we surely can't test all the possible networks "
+"configurations we would like to, so if you discover a bug, please :doc:`open"
+" an issue <bug-report-guide>`."
 msgstr ""
 
-#: ../../../user/faq.rst:527
+#: ../../../user/faq.rst:530
 msgid "Anyway, in these 3 scenarios, there are 3 main actions:"
 msgstr ""
 
-#: ../../../user/faq.rst:529
+#: ../../../user/faq.rst:532
 msgid "sending a message (this will use the DHT);"
 msgstr ""
 
-#: ../../../user/faq.rst:530
+#: ../../../user/faq.rst:533
 msgid ""
-"sending a file (TCP ICE connection as described here: :doc:`../developer"
-"/file-transfer`; and"
+"sending a file (TCP ICE connection as described here: "
+":doc:`../developer/file-transfer`; and"
 msgstr ""
 
-#: ../../../user/faq.rst:532
+#: ../../../user/faq.rst:535
 msgid ""
 "placing a call (TCP + UDP ICE connection as described here: "
 ":doc:`../developer/calls`)."
 msgstr ""
 
-#: ../../../user/faq.rst:536
+#: ../../../user/faq.rst:539
 msgid "Classic config"
 msgstr ""
 
-#: ../../../user/faq.rst:538 ../../../user/faq.rst:564
-#: ../../../user/faq.rst:598
+#: ../../../user/faq.rst:541 ../../../user/faq.rst:567
+#: ../../../user/faq.rst:601
 msgid "Send a message"
-msgstr ""
+msgstr "Envoyer un message"
 
-#: ../../../user/faq.rst:540
+#: ../../../user/faq.rst:543
 msgid ""
 "The Jami application is running a DHT (https://opendht.net) node on your "
-"device. So every operations on the DHT will use your ips. This is why "
-"Jami has the option to use a dhtproxy (eg dhtproxy.jami.net), this will "
-"avoid to use your node, but will use another node on the network (which "
-"will see your ip). Note that your message is not sent directly to the "
-"other device. In fact your message is sent on some nodes of the DHT and "
-"your contact will retrieve the message on this node. So, your contact "
-"don't see your IP at this step, but the node who get the message will (or"
-" they will see the IP of the proxy)."
-msgstr ""
-
-#: ../../../user/faq.rst:550 ../../../user/faq.rst:584
-#: ../../../user/faq.rst:604
+"device. So every operations on the DHT will use your ips. This is why Jami "
+"has the option to use a dhtproxy (eg dhtproxy.jami.net), this will avoid to "
+"use your node, but will use another node on the network (which will see your"
+" ip). Note that your message is not sent directly to the other device. In "
+"fact your message is sent on some nodes of the DHT and your contact will "
+"retrieve the message on this node. So, your contact don't see your IP at "
+"this step, but the node who get the message will (or they will see the IP of"
+" the proxy)."
+msgstr ""
+
+#: ../../../user/faq.rst:553 ../../../user/faq.rst:587
+#: ../../../user/faq.rst:607
 msgid "Send a file"
-msgstr ""
+msgstr "Envoyez un fichier"
 
-#: ../../../user/faq.rst:552
+#: ../../../user/faq.rst:555
 msgid ""
-"As described in the docs, you will send a message with all the IP you "
-"know that your peer can contact in an encrypted packet. So, if your peer "
-"send you a file or you send a file, your addresses will appear in the ICE"
-" message."
+"As described in the docs, you will send a message with all the IP you know "
+"that your peer can contact in an encrypted packet. So, if your peer send you"
+" a file or you send a file, your addresses will appear in the ICE message."
 msgstr ""
 
-#: ../../../user/faq.rst:557
+#: ../../../user/faq.rst:560
 msgid "Calls"
-msgstr ""
+msgstr "Appels"
 
-#: ../../../user/faq.rst:559
+#: ../../../user/faq.rst:562
 msgid "Same as above, the IP is present in the ICE."
 msgstr ""
 
-#: ../../../user/faq.rst:562
+#: ../../../user/faq.rst:565
 msgid "Behind a VPN"
 msgstr ""
 
-#: ../../../user/faq.rst:566
+#: ../../../user/faq.rst:569
 msgid ""
-"The IP of your VPN will be used by the DHT node. If you want a proof, you"
-" can compile dhtnode and run the ``la`` command to get your public "
-"detected address. This is what I got:"
+"The IP of your VPN will be used by the DHT node. If you want a proof, you "
+"can compile dhtnode and run the ``la`` command to get your public detected "
+"address. This is what I got:"
 msgstr ""
 
-#: ../../../user/faq.rst:581
+#: ../../../user/faq.rst:584
 msgid ""
-"So, if you don't use a proxy, your VPN addresses will be used for using "
-"the DHT. If you use a dhtproxy, the dhtproxy will see your VPN addresses"
+"So, if you don't use a proxy, your VPN addresses will be used for using the "
+"DHT. If you use a dhtproxy, the dhtproxy will see your VPN addresses"
 msgstr ""
 
-#: ../../../user/faq.rst:586
+#: ../../../user/faq.rst:589
 msgid ""
 "Same as above, the ICE will contains: + addresses from your LAN + public "
 "address of your VPN + TURN address if TURN is enabled"
 msgstr ""
 
-#: ../../../user/faq.rst:589 ../../../user/faq.rst:627
+#: ../../../user/faq.rst:592 ../../../user/faq.rst:630
 msgid "Do a call"
 msgstr ""
 
-#: ../../../user/faq.rst:591
+#: ../../../user/faq.rst:594
 msgid ""
-"Same as above, your public address is replaced by your VPN address. You "
-"can see it in the logs from daemon. See :ref:`user/bug-report-"
-"guide:logs`."
+"Same as above, your public address is replaced by your VPN address. You can "
+"see it in the logs from daemon. See :ref:`user/bug-report-guide:logs`."
 msgstr ""
 
-#: ../../../user/faq.rst:596
+#: ../../../user/faq.rst:599
 msgid "Tor"
 msgstr ""
 
-#: ../../../user/faq.rst:600
+#: ../../../user/faq.rst:603
 msgid ""
-"Tor basically doesn't supports UDP. This means that you can't use your "
-"DHT node locally, you MUST use a DHTProxy. That proxy will see the Exit "
-"node."
+"Tor basically doesn't supports UDP. This means that you can't use your DHT "
+"node locally, you MUST use a DHTProxy. That proxy will see the Exit node."
 msgstr ""
 
-#: ../../../user/faq.rst:606
+#: ../../../user/faq.rst:609
 msgid ""
-"I prefer a proof that any description. So, I did a file transfer with "
-"Jami + TOR. This is what I see in the logs for the remote:"
+"I prefer a proof that any description. So, I did a file transfer with Jami +"
+" TOR. This is what I see in the logs for the remote:"
 msgstr ""
 
-#: ../../../user/faq.rst:618
+#: ../../../user/faq.rst:621
 msgid ""
-"The first ones are some 192.168.x.x so we don't care. 51.254.39.157 is "
-"the TURN address in France (my device is in the Canada). 185.220.101.24 "
-"is the Tor exit node:"
+"The first ones are some 192.168.x.x so we don't care. 51.254.39.157 is the "
+"TURN address in France (my device is in the Canada). 185.220.101.24 is the "
+"Tor exit node:"
 msgstr ""
 
-#: ../../../user/faq.rst:629
+#: ../../../user/faq.rst:632
 msgid ""
 "This will not work (actually, you can create the SIP control connection "
-"because it's a TCP connection), but medias are negotiated in UDP, so this"
-" will fail."
+"because it's a TCP connection), but medias are negotiated in UDP, so this "
+"will fail."
 msgstr ""
 
-#: ../../../user/faq.rst:634
+#: ../../../user/faq.rst:637
 msgid "What ports does Jami use?"
 msgstr ""
 
-#: ../../../user/faq.rst:636
+#: ../../../user/faq.rst:639
 msgid ""
 "Jami works as a server and gets new ports for each connections (randomly "
 "bound). These are the ranges that can be used for each component:"
 msgstr ""
 
-#: ../../../user/faq.rst:639
+#: ../../../user/faq.rst:642
 msgid "dht: UDP [4000, 8888]"
 msgstr ""
 
-#: ../../../user/faq.rst:640
+#: ../../../user/faq.rst:643
 msgid "audio: UDP [16384-32766]"
 msgstr ""
 
-#: ../../../user/faq.rst:641
+#: ../../../user/faq.rst:644
 msgid "video: UDP [49152-65534]"
 msgstr ""
 
-#: ../../../user/faq.rst:642
+#: ../../../user/faq.rst:645
 msgid "SIP Control: UDP/TCP randomly bound"
 msgstr ""
 
-#: ../../../user/faq.rst:644
+#: ../../../user/faq.rst:647
 msgid ""
 "Note: if UDP is blocked, a dhtproxy can be used to use TCP instead. Note "
 "that medias will not work cause it only supports UDP."
 msgstr ""
 
-#: ../../../user/faq.rst:647
+#: ../../../user/faq.rst:650
 msgid "So for ufw, we recommend running ``sudo ufw default allow outgoing``."
 msgstr ""
 
-#: ../../../user/faq.rst:649
+#: ../../../user/faq.rst:652
 msgid ""
-"For now, you can't specify a specific range to configure ports used by "
-"Jami. The inbound traffic can be controlled without issue, Jami should "
-"work and can use a TURN server if needed."
+"For now, you can't specify a specific range to configure ports used by Jami."
+" The inbound traffic can be controlled without issue, Jami should work and "
+"can use a TURN server if needed."
 msgstr ""
 
-#: ../../../user/faq.rst:653
+#: ../../../user/faq.rst:656
 msgid "If you run your own proxy or nameserver:"
 msgstr ""
 
-#: ../../../user/faq.rst:655
+#: ../../../user/faq.rst:658
 msgid "dhtproxy, nameserver: TCP [80-100], 443"
 msgstr ""
 
-#: ../../../user/faq.rst:657
+#: ../../../user/faq.rst:660
 msgid "If you run your own TURN server:"
 msgstr ""
 
-#: ../../../user/faq.rst:659
+#: ../../../user/faq.rst:662
 msgid "TURN/STUN: TCP+UDP 3478, 5349"
 msgstr ""
 
-#: ../../../user/faq.rst:662
+#: ../../../user/faq.rst:665
 msgid "Can I use Jami in a local network (LAN) without internet access?"
 msgstr ""
 
-#: ../../../user/faq.rst:664
+#: ../../../user/faq.rst:667
 msgid ""
-"Yes!  Thanks to Jami's architecture, Jami users on a local/private "
-"network can communicate among themselves using Jami, without requiring "
-"any outside connectivity such as the internet."
+"Yes!  Thanks to Jami's architecture, Jami users on a local/private network "
+"can communicate among themselves using Jami, without requiring any outside "
+"connectivity such as the internet."
 msgstr ""
 
-#: ../../../user/faq.rst:668
+#: ../../../user/faq.rst:671
 msgid ""
 "To do so, from Jami's ``Account`` settings open ``Advanced account "
 "settings``.  There, enable the ``Enable local peer discovery`` setting.  "
-"Additionally, you may want to manually set the ``bootstrap`` node's "
-"address (default: ``bootstrap.jami.net``) to the IP address of another "
-"device on your network that also runs Jami and/or an OpenDHT node."
+"Additionally, you may want to manually set the ``bootstrap`` node's address "
+"(default: ``bootstrap.jami.net``) to the IP address of another device on "
+"your network that also runs Jami and/or an OpenDHT node."
 msgstr ""
 
-#: ../../../user/faq.rst:675
+#: ../../../user/faq.rst:678
 msgid ""
 "If you will use this Jami account for communicating only with only with "
-"other devices on the same local/private network, you can disable TURN if "
-"you wish.  If you do so, and later you decide to use this account also "
-"for communicating with other Jami devices outside your network, don't "
-"forget to enable TURN again, as it helps Jami work around issues with "
-"some overly restrictive firewalls."
+"other devices on the same local/private network, you can disable TURN if you"
+" wish.  If you do so, and later you decide to use this account also for "
+"communicating with other Jami devices outside your network, don't forget to "
+"enable TURN again, as it helps Jami work around issues with some overly "
+"restrictive firewalls."
 msgstr ""
 
-#: ../../../user/faq.rst:684
+#: ../../../user/faq.rst:687
 msgid "How can I configure the codecs even more?"
 msgstr ""
 
-#: ../../../user/faq.rst:686
+#: ../../../user/faq.rst:689
 msgid ""
-"Codecs can be configured via a file. In the configurations files, you can"
-" create a file called ``encoder.json`` like this:"
+"Codecs can be configured via a file. In the configurations files, you can "
+"create a file called ``encoder.json`` like this:"
 msgstr ""
 
-#: ../../../user/faq.rst:706
+#: ../../../user/faq.rst:709
 msgid "or:"
 msgstr ""
 
-#: ../../../user/faq.rst:716
+#: ../../../user/faq.rst:719
 msgid ""
 "This file is :ref:`located in the same directory <user/faq:Where are the "
 "configuration files located?>` as ``dring.yml``."
 msgstr ""
 
-#: ../../../user/faq.rst:719
+#: ../../../user/faq.rst:722
 msgid ""
 "To check which options are supported, use the command ``ffmpeg -h "
-"encoder=[encoder_name]``, where ``encoder_name`` can be any of "
-"``libx264``, ``libvpx``, ``mpeg4``, ``h263``, ``libopus``, ``libspeex``, "
-"``g722``, ``pcm_alaw``, or ``pcm_mulaw`` (the FFmpeg names for all of "
-"Jami's supported encoders)."
+"encoder=[encoder_name]``, where ``encoder_name`` can be any of ``libx264``, "
+"``libvpx``, ``mpeg4``, ``h263``, ``libopus``, ``libspeex``, ``g722``, "
+"``pcm_alaw``, or ``pcm_mulaw`` (the FFmpeg names for all of Jami's supported"
+" encoders)."
 msgstr ""
 
-#: ../../../user/faq.rst:726
+#: ../../../user/faq.rst:729
 msgid "How can I configure the audio processor?"
 msgstr ""
 
-#: ../../../user/faq.rst:728
+#: ../../../user/faq.rst:731
 msgid ""
 "An audio processor allows Jami to clean up and process your microphone's "
 "audio. It can remove echo, reduce noise, and equalize your microphone's "
 "volume. Additionally, it can detect when you're speaking and send this "
-"information to participants in your call. The audio processor settings "
-"can be set in your ``dring.yml`` file. See :ref:`this section to find "
-"where this file is located <config-file-location>`."
+"information to participants in your call. The audio processor settings can "
+"be set in your ``dring.yml`` file. See :ref:`this section to find where this"
+" file is located <config-file-location>`."
 msgstr ""
 
-#: ../../../user/faq.rst:734
+#: ../../../user/faq.rst:737
 msgid "The relevant preference keys are:"
 msgstr ""
 
-#: ../../../user/faq.rst:736
+#: ../../../user/faq.rst:739
 msgid ""
-"``audioProcessor``, which configures which audio processor to use. The "
-"valid options are:"
+"``audioProcessor``, which configures which audio processor to use. The valid"
+" options are:"
 msgstr ""
 
-#: ../../../user/faq.rst:738
+#: ../../../user/faq.rst:741
 msgid ""
 "``webrtc``: the `WebRTC Audio Processing library "
-"<https://www.freedesktop.org/software/pulseaudio/webrtc-audio-"
-"processing/>`_"
+"<https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:739
+#: ../../../user/faq.rst:742
 msgid ""
-"``speex``: the `Speex DSP library "
-"<https://gitlab.xiph.org/xiph/speexdsp>`_"
+"``speex``: the `Speex DSP library <https://gitlab.xiph.org/xiph/speexdsp>`_"
 msgstr ""
 
-#: ../../../user/faq.rst:740
+#: ../../../user/faq.rst:743
 msgid ""
-"``null``: disables audio processing (though your system echo canceller "
-"may still be used, see below)"
+"``null``: disables audio processing (though your system echo canceller may "
+"still be used, see below)"
 msgstr ""
 
-#: ../../../user/faq.rst:742
+#: ../../../user/faq.rst:745
 msgid ""
 "``echoCancel``, which configures how echo cancelling should be done. The "
 "valid options are:"
 msgstr ""
 
-#: ../../../user/faq.rst:744
+#: ../../../user/faq.rst:747
 msgid ""
-"``auto``: try to use your operating system's echo canceller (if it "
-"exists), otherwise fall back to the chosen audio processor's echo "
-"canceller"
+"``auto``: try to use your operating system's echo canceller (if it exists), "
+"otherwise fall back to the chosen audio processor's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:745
-msgid "``audioProcessor``: only use the chosen audio processor's echo canceller"
+#: ../../../user/faq.rst:748
+msgid ""
+"``audioProcessor``: only use the chosen audio processor's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:746
+#: ../../../user/faq.rst:749
 msgid "``system``: only use your operating system's echo canceller"
 msgstr ""
 
-#: ../../../user/faq.rst:747
+#: ../../../user/faq.rst:750
 msgid "``null``: don't do any echo cancelling"
 msgstr ""
 
-#: ../../../user/faq.rst:749
+#: ../../../user/faq.rst:752
 msgid ""
 "``noiseReduce``, ``true``/``false`` to set noise reduction on the audio "
 "processor"
 msgstr ""
 
-#: ../../../user/faq.rst:750
+#: ../../../user/faq.rst:753
 msgid ""
-"``automaticGainControl``, ``true``/``false`` to set automatic gain "
-"control on the audio processor"
+"``automaticGainControl``, ``true``/``false`` to set automatic gain control "
+"on the audio processor"
 msgstr ""
 
-#: ../../../user/faq.rst:751
+#: ../../../user/faq.rst:754
 msgid ""
 "``voiceActivityDetection``, ``true``/``false`` to set voice activity "
 "detection on the audio processor"
@@ -1996,21 +1997,20 @@ msgstr ""
 
 #: ../../../user/index.rst:5
 msgid ""
-"The Jami user manual introduces Jami and its features, provides "
-"additional information on methods of installing Jami, answers users' most"
-" common questions in the FAQ (frequently asked questions), and includes "
-"various user guides and tutorials for users, such as the :doc:`bug-"
-"report-guide` with step-by-step instructions for reporting bugs and "
-"issues."
+"The Jami user manual introduces Jami and its features, provides additional "
+"information on methods of installing Jami, answers users' most common "
+"questions in the FAQ (frequently asked questions), and includes various user"
+" guides and tutorials for users, such as the :doc:`bug-report-guide` with "
+"step-by-step instructions for reporting bugs and issues."
 msgstr ""
 
 #: ../../../user/introduction.rst:2
 msgid "Introduction"
 msgstr ""
 
-#: ../../../user/introduction.rst:-1
+#: ../../../user/introduction.rst-1
 msgid "Jami logo"
-msgstr ""
+msgstr "Logo Jami"
 
 #: ../../../user/introduction.rst:7
 msgid ""
@@ -2020,16 +2020,16 @@ msgstr ""
 
 #: ../../../user/introduction.rst:10
 msgid ""
-"Jami's features include: text chats, voice and video calls, screen "
-"sharing, file sharing, conference calls, and :doc:`group chats "
-"<../developer/swarm>`.  Jami can also function as a regular SIP client."
+"Jami's features include: text chats, voice and video calls, screen sharing, "
+"file sharing, conference calls, and :doc:`group chats <../developer/swarm>`."
+"  Jami can also function as a regular SIP client."
 msgstr ""
 
 #: ../../../user/introduction.rst:15
 msgid ""
-"Jami works on GNU/Linux, Windows, macOS, iOS, and Android.  Multiple "
-"devices can be linked to a Jami account, and no personal information is "
-"required to create an account."
+"Jami works on GNU/Linux, Windows, macOS, iOS, and Android.  Multiple devices"
+" can be linked to a Jami account, and no personal information is required to"
+" create an account."
 msgstr ""
 
 #: ../../../user/introduction.rst:20
@@ -2039,25 +2039,24 @@ msgstr ""
 #: ../../../user/introduction.rst:22
 msgid ""
 "Jami uses a `distributed hash table "
-"<https://en.wikipedia.org/wiki/Distributed_hash_table>`_ (DHT) to connect"
-" peers.  Jami accounts are asymmetric `X.509 certificates "
-"<https://en.wikipedia.org/wiki/X.509>`_ generated by the GnuTLS library."
-"  Calls are made over the `Session Initiation Protocol "
-"<https://en.wikipedia.org/wiki/Session_Initiation_Protocol>`_ (SIP) after"
-" negotiating a `TLS "
-"<https://en.wikipedia.org/wiki/Transport_Layer_Security>`_-encrypted "
-"secure connection, performing `Secure Real-time Transport Protocol "
-"<https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol>`_ "
-"(SRTP) communication which carries the media streams."
+"<https://en.wikipedia.org/wiki/Distributed_hash_table>`_ (DHT) to connect "
+"peers.  Jami accounts are asymmetric `X.509 certificates "
+"<https://en.wikipedia.org/wiki/X.509>`_ generated by the GnuTLS library.  "
+"Calls are made over the `Session Initiation Protocol "
+"<https://en.wikipedia.org/wiki/Session_Initiation_Protocol>`_ (SIP) after "
+"negotiating a `TLS "
+"<https://en.wikipedia.org/wiki/Transport_Layer_Security>`_-encrypted secure "
+"connection, performing `Secure Real-time Transport Protocol "
+"<https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol>`_ (SRTP)"
+" communication which carries the media streams."
 msgstr ""
 
 #: ../../../user/introduction.rst:34
 msgid ""
 "For more on how Jami works, see the `Jami and how it empowers users "
-"<https://kelar.org/~bandali/talks/jami-empowers-users.html>`_ talk by "
-"`Amin Bandali <https://kelar.org/~bandali/>`_, as well as the "
-":doc:`Technical Overview <../developer/technical-overview>` for more in-"
-"depth information."
+"<https://kelar.org/~bandali/talks/jami-empowers-users.html>`_ talk by `Amin "
+"Bandali <https://kelar.org/~bandali/>`_, as well as the :doc:`Technical "
+"Overview <../developer/technical-overview>` for more in-depth information."
 msgstr ""
 
 #: ../../../user/introduction.rst:41
@@ -2067,16 +2066,16 @@ msgstr ""
 #: ../../../user/introduction.rst:43
 msgid ""
 "The Jami project is led by `Savoir-faire Linux "
-"<https://www.savoirfairelinux.com/en/>`_ -- a Canadian/Québécois "
-"GNU/Linux consulting company -- and is supported by a global community of"
-" free software enthusiasts, users, and contributors."
+"<https://www.savoirfairelinux.com/en/>`_ -- a Canadian/Québécois GNU/Linux "
+"consulting company -- and is supported by a global community of free "
+"software enthusiasts, users, and contributors."
 msgstr ""
 
 #: ../../../user/introduction.rst:48
 msgid ""
-"Jami is `free software <https://www.gnu.org/philosophy/free-sw.html>`_ "
-"and an official GNU package, developed and distributed under the `GNU "
-"GPLv3+ <https://www.gnu.org/licenses/gpl-3.0.html>`_ license."
+"Jami is `free software <https://www.gnu.org/philosophy/free-sw.html>`_ and "
+"an official GNU package, developed and distributed under the `GNU GPLv3+ "
+"<https://www.gnu.org/licenses/gpl-3.0.html>`_ license."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:1
@@ -2085,13 +2084,12 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:4
 msgid "Connectivity"
-msgstr ""
+msgstr "Connectivité"
 
 #: ../../../user/jami-distributed-network.md:6
 msgid ""
-"Jami relies on a [distributed network](tutorials/Jami-distributed-"
-"network), that brings multiple advantages when compared to federated "
-"networks:"
+"Jami relies on a [distributed network](tutorials/Jami-distributed-network), "
+"that brings multiple advantages when compared to federated networks:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:10
@@ -2126,8 +2124,8 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:19
 msgid ""
-"The core problem of distributed communication systems is peer "
-"connectivity, Jami achieves it through two elements:"
+"The core problem of distributed communication systems is peer connectivity, "
+"Jami achieves it through two elements:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:22
@@ -2160,30 +2158,30 @@ msgstr ""
 msgid ""
 "See "
 "[<https://github.com/savoirfairelinux/opendht>](https://github.com/savoirfairelinux/opendht)"
-" for more information about OpenDHT, which provides a distributed key-"
-"value datastore for connectivity establishment (with ICE) and message "
-"distribution in Jami."
+" for more information about OpenDHT, which provides a distributed key-value "
+"datastore for connectivity establishment (with ICE) and message distribution"
+" in Jami."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:40
 msgid ""
-"An OpenDHT network can be joined by knowing about any node already "
-"connected to the network. This node will then share its knowledge about "
-"other nodes on the network."
+"An OpenDHT network can be joined by knowing about any node already connected"
+" to the network. This node will then share its knowledge about other nodes "
+"on the network."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:44
 msgid ""
-"Jami clients use a persistent node cache to reconnect to the network "
-"after a first session. A configurable, known, stable \"bootstrap\" node "
-"is used for the first connection or if cached nodes don't answer."
+"Jami clients use a persistent node cache to reconnect to the network after a"
+" first session. A configurable, known, stable \"bootstrap\" node is used for"
+" the first connection or if cached nodes don't answer."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:48
 msgid ""
 "Jami clients currently use bootstrap.jami.net:4222 as the default "
-"(configurable) bootstrap node and network ID 0 (the default, public "
-"OpenDHT network)."
+"(configurable) bootstrap node and network ID 0 (the default, public OpenDHT "
+"network)."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:52
@@ -2198,24 +2196,24 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:57
 msgid ""
-"Jami users can have full independence by running their own stable OpenDHT"
-" node and configure it as a bootstrap node in Jami, while helping to "
-"improve stability, robustness and resilience for every user of the public"
-" OpenDHT network."
+"Jami users can have full independence by running their own stable OpenDHT "
+"node and configure it as a bootstrap node in Jami, while helping to improve "
+"stability, robustness and resilience for every user of the public OpenDHT "
+"network."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:62
 msgid ""
 "A standalone node can be run using the [dhtnode "
 "utility](https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-"
-"with-dhtnode) included with OpenDHT. dhtnode doesn't persist any data and"
-" has a default in-memory storage limit of 8 MiB."
+"with-dhtnode) included with OpenDHT. dhtnode doesn't persist any data and "
+"has a default in-memory storage limit of 8 MiB."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:67
 msgid ""
-"Stable community-run DHT nodes will be added to the default bootstrap "
-"list at the request of their owner, as more bootstrap nodes means a more "
+"Stable community-run DHT nodes will be added to the default bootstrap list "
+"at the request of their owner, as more bootstrap nodes means a more "
 "resilient, independent network."
 msgstr ""
 
@@ -2225,16 +2223,16 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:74
 msgid ""
-"The JamiNS blockchain is experimental and its architecture is expected to"
-" evolve."
+"The JamiNS blockchain is experimental and its architecture is expected to "
+"evolve."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:77
 msgid ""
-"Jami clients don't run blockchain nodes themselves but rather communicate"
-" with a JamiNS server using HTTP for name registration and query, with a "
-"REST API. This is because the resources needed to run a blockchain node "
-"are too high for most end-users."
+"Jami clients don't run blockchain nodes themselves but rather communicate "
+"with a JamiNS server using HTTP for name registration and query, with a REST"
+" API. This is because the resources needed to run a blockchain node are too "
+"high for most end-users."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:82
@@ -2251,15 +2249,15 @@ msgstr ""
 msgid ""
 "The default Jami name service is ns.jami.net, provided by Savoir-faire "
 "Linux, connected to an Ethereum blockchain node; the goal being to give "
-"everyone the possibility (if they which so) to run their own blockchain "
-"node and HTTP service, mine some Ether, and use it to pay the transaction"
-" fee needed to register their username in Jami."
+"everyone the possibility (if they which so) to run their own blockchain node"
+" and HTTP service, mine some Ether, and use it to pay the transaction fee "
+"needed to register their username in Jami."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:93
 msgid ""
-"Code of the Ethereum contract, the blockchain genesis file, and the "
-"NodeJS module (HTTP server) can be found here : "
+"Code of the Ethereum contract, the blockchain genesis file, and the NodeJS "
+"module (HTTP server) can be found here : "
 "[1](https://github.com/savoirfairelinux/ring-nameservice)"
 msgstr ""
 
@@ -2272,7 +2270,8 @@ msgid "Pre-requisites:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:100
-msgid "Geth 1.8.23+ (download from [HERE](https://geth.ethereum.org/downloads/))"
+msgid ""
+"Geth 1.8.23+ (download from [HERE](https://geth.ethereum.org/downloads/))"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:101
@@ -2288,9 +2287,9 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:106
 msgid ""
-"The process of joining the Jami network is similar to the process of "
-"joining a regular ethereum network with the difference that the genesis "
-"file is used to initialize the data directory."
+"The process of joining the Jami network is similar to the process of joining"
+" a regular ethereum network with the difference that the genesis file is "
+"used to initialize the data directory."
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:108
@@ -2317,19 +2316,18 @@ msgstr ""
 
 #: ../../../user/jami-distributed-network.md:113
 msgid ""
-"Use geth to initialize the directory you created in (2) by running "
-"```./geth --datadir /home/username/jamichain  init genes is.json ```"
+"Use geth to initialize the directory you created in (2) by running ```./geth"
+" --datadir /home/username/jamichain  init genes is.json ```"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:114
 msgid ""
-"You can now start geth with the command-line options you need and "
-"specifying one of Jami's bootnodes as follows:"
+"You can now start geth with the command-line options you need and specifying"
+" one of Jami's bootnodes as follows:"
 msgstr ""
 
 #: ../../../user/jami-distributed-network.md:119
 msgid ""
-"This will start a geth daemon with an attached console which is now "
-"syncing with Jami's network."
+"This will start a geth daemon with an attached console which is now syncing "
+"with Jami's network."
 msgstr ""
-