changeset 3569:828fc830633a

i18n: extraction update
author Goffi <goffi@goffi.org>
date Mon, 14 Jun 2021 18:37:25 +0200
parents 04283582966f
children de2dd6aaed31
files i18n/sat.pot
diffstat 1 files changed, 6597 insertions(+), 2855 deletions(-) [+]
line wrap: on
line diff
--- a/i18n/sat.pot	Mon Jun 14 18:35:12 2021 +0200
+++ b/i18n/sat.pot	Mon Jun 14 18:37:25 2021 +0200
@@ -1,2201 +1,1003 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Translations template for Libervia.
+# Copyright (C) 2021 ORGANIZATION
+# This file is distributed under the same license as the Libervia project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-03-06 21:21+0100\n"
+"Project-Id-Version: Libervia VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2021-06-15 10:11+0200\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"
-"Language: \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"
-
-#: frontends/src/bridge/dbus_bridge.py:78
-#: src/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py:227
-#: src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py:78
-#: src/bridge/bridge_constructor/generated/dbus_bridge.py:78
-#: src/bridge/dbus_bridge.py:578
+"Generated-By: Babel 2.9.0\n"
+
+#: sat/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py:273
+#: sat/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py:85
+#: sat/bridge/bridge_constructor/generated/dbus_bridge.py:85
+#: sat/bridge/dbus_bridge.py:747 sat_frontends/bridge/dbus_bridge.py:85
 msgid ""
 "D-Bus is not launched, please see README to see instructions on how to "
 "launch it"
 msgstr ""
 
-#: frontends/src/bridge/dbus_bridge.py:91
-#: src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py:91
-#: src/bridge/bridge_constructor/generated/dbus_bridge.py:91
+#: sat/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py:99
+#: sat/bridge/bridge_constructor/generated/dbus_bridge.py:99
+#: sat_frontends/bridge/dbus_bridge.py:99
 msgid "Unknown interface"
 msgstr ""
 
-#: frontends/src/jp/base.py:115
-msgid ""
-"ProgressBar not available, please download it at http://pypi.python.org/pypi/"
-"progressbar"
-msgstr ""
-
-#: frontends/src/jp/base.py:116
-msgid ""
-"Progress bar deactivated\n"
-"--\n"
-msgstr ""
-
-#: frontends/src/jp/base.py:173
-msgid "Available commands"
-msgstr ""
-
-#: frontends/src/jp/base.py:188 frontends/src/quick_frontend/quick_app.py:299
-msgid "Can't connect to SàT backend, are you sure it's launched ?"
-msgstr ""
-
-#: frontends/src/jp/base.py:190 frontends/src/quick_frontend/quick_app.py:302
-msgid "Can't init bridge"
-msgstr ""
-
-#: frontends/src/jp/base.py:192 frontends/src/quick_frontend/quick_app.py:305
-msgid "Error while initialising bridge: {}"
-msgstr ""
-
-#: frontends/src/jp/base.py:291
-#, python-format
-msgid "Use PROFILE profile key (default: %(default)s)"
-msgstr ""
-
-#: frontends/src/jp/base.py:292
-msgid "Password used to connect profile, if necessary"
-msgstr ""
-
-#: frontends/src/jp/base.py:296
-msgid "Connect the profile before doing anything else"
-msgstr ""
-
-#: frontends/src/jp/base.py:301
-msgid "Start a profile session without connecting"
-msgstr ""
-
-#: frontends/src/jp/base.py:305
-msgid "Show progress bar"
-msgstr ""
-
-#: frontends/src/jp/base.py:308
-msgid "Add a verbosity level (can be used multiple times)"
-msgstr ""
-
-#: frontends/src/jp/base.py:336
-msgid "Can't import {} plugin, ignoring it"
-msgstr ""
-
-#: frontends/src/jp/base.py:340
-#, python-brace-format
-msgid "Missing module for plugin {name}: {missing}"
-msgstr ""
-
-#: frontends/src/jp/base.py:354
-#, python-brace-format
-msgid "Invalid plugin module [{type}] {module}"
-msgstr ""
-
-#: frontends/src/jp/base.py:368
-msgid "User interruption: good bye"
-msgstr ""
-
-#: frontends/src/jp/base.py:437
-#, python-format
-msgid "%s is not a valid JID !"
-msgstr ""
-
-#: frontends/src/jp/base.py:461
-#, python-brace-format
-msgid "Can't connect profile: {reason}"
-msgstr ""
-
-#: frontends/src/jp/base.py:465
-#, python-brace-format
-msgid "Can't start {profile}'s session: {reason}"
-msgstr ""
-
-#: frontends/src/jp/base.py:471
-#, python-brace-format
-msgid "The profile [{profile}] doesn't exist"
-msgstr ""
-
-#: frontends/src/jp/base.py:485
-#, python-brace-format
-msgid ""
-"Session for [{profile}] is not started, please start it before using jp, or "
-"use either --start-session or --connect option"
-msgstr ""
-
-#: frontends/src/jp/base.py:501
-#, python-brace-format
-msgid ""
-"Profile [{profile}] is not connected, please connect it before using jp, or "
-"use --connect option"
-msgstr ""
-
-#: frontends/src/jp/base.py:582
-msgid "select output format (default: {})"
-msgstr ""
-
-#: frontends/src/jp/base.py:583
-msgid "output specific option"
-msgstr ""
-
-#: frontends/src/jp/base.py:667
-msgid "file size is not known, we can't show a progress bar"
-msgstr ""
-
-#: frontends/src/jp/base.py:672
-msgid "Progress: "
-msgstr ""
-
-#: frontends/src/jp/base.py:696
-msgid "Operation started"
-msgstr ""
-
-#: frontends/src/jp/base.py:712
-msgid "Operation successfully finished"
-msgstr ""
-
-#: frontends/src/jp/base.py:719
-msgid "Error while doing operation: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:30
-msgid "Remote control a software"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:33
-msgid "Software name"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:34
-msgid "Jids allowed to use the command"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:35
-msgid "Groups allowed to use the command"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:36
-msgid "Groups that are *NOT* allowed to use the command"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:37
-msgid "Jids that are *NOT* allowed to use the command"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:38
-msgid "Loop on the commands"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:52
-msgid "No bus name found"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:54
-#, python-format
-msgid "Bus name found: [%s]"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:57
-#, python-format
-msgid "Command found: (path:%(path)s, iface: %(iface)s) [%(command)s]"
-msgstr ""
-
-#: frontends/src/jp/cmd_adhoc.py:66
-msgid "Ad-hoc commands"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:36
-msgid "set avatar of the profile"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:40
-msgid "path to the image to upload"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:46 frontends/src/jp/cmd_file.py:82
-#: frontends/src/jp/cmd_file.py:264
-msgid "file [{}] doesn't exist !"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:52
-msgid "avatar has been set"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:56
-#, python-brace-format
-msgid "error while uploading avatar: {msg}"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:63
-msgid "retrieve avatar of an entity"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:67
-msgid "entity"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:68
-msgid "show avatar"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:90
-msgid "No avatar found."
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:100
-#, python-brace-format
-msgid "error while getting avatar: {msg}"
-msgstr ""
-
-#: frontends/src/jp/cmd_avatar.py:111
-msgid "avatar uploading/retrieving"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:197
-msgid "get blog item(s)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:201
-msgid "PubSub node to request"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:203
-msgid "item(s) id(s) to get (default: request all items)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:204
-msgid "maximum number of items to get ({} to get all items)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:207
-msgid "microblog data key(s) to display (default: depend of verbosity)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:209
-msgid "JID of the PubSub service (default: request profile own blog)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:369
-msgid "edit an existing or new blog post"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:373
-msgid "URL of the item to edit, or keyword"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:374
-msgid "launch a blog preview in parallel"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:375
-msgid "title of the item"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:376
-msgid "tag (category) of your item"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:377
-msgid "disable comments"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:633
-msgid "preview a blog content"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:637
-msgid "use inotify to handle preview"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:638
-msgid "path to the content file"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:775
-msgid "import an external blog"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:779
-msgid "importer name, nothing to display importers list"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:780
-msgid "original blog host"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:781
-msgid "do *NOT* upload images (default: do upload images)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:782
-msgid "do not upload images from this host (default: upload all images)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:783
-msgid "ignore invalide TLS certificate for uploads"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:785
-msgid "importer specific options (see importer description)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:787
-msgid "PubSub service where the items must be uploaded (default: server)"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:789
-msgid ""
-"importer data location (see importer description), nothing to show importer "
-"description"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:792
-msgid "Blog upload started"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:795
-msgid "Blog uploaded successfully"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:805
-#, python-brace-format
-msgid ""
-"\n"
-"To redirect old URLs to new ones, put the following lines in your sat.conf "
-"file, in [libervia] section:\n"
-"\n"
-"{conf}"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:808
-msgid "Error while uploading blog: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:811
-#, python-brace-format
-msgid "Error while trying to upload a blog: {reason}"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:818
-#, python-brace-format
-msgid "{name} argument can't be used without location argument"
-msgstr ""
-
-#: frontends/src/jp/cmd_blog.py:854
-msgid "blog/microblog management"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:32
-#, python-format
-msgid "storage location (default: %(default)s)"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:33
-#, python-format
-msgid "bookmarks type (default: %(default)s)"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:42
-msgid "list bookmarks"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:70
-msgid "remove a bookmark"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:75 frontends/src/jp/cmd_bookmarks.py:89
-msgid "jid (for muc bookmark) or url of to remove"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:84 src/plugins/plugin_xep_0048.py:252
-msgid "add a bookmark"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:90
-msgid "bookmark name"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:91
-msgid "MUC specific options"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:92
-msgid "nickname"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:93
-msgid "join room on profile connection"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:98
-msgid "You can't use --autojoin or --nick with --type url"
-msgstr ""
-
-#: frontends/src/jp/cmd_bookmarks.py:114
-msgid "manage bookmarks"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:49
-msgid "call a bridge method"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:54
-msgid "name of the method to execute"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:55
-msgid "argument of the method"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:63
-msgid "Error while executing {}: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:76
-msgid "bad arguments"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:82
-msgid "send a fake signal from backend"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:86
-msgid "name of the signal to send"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:87
-msgid "argument of the signal"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:101
-msgid "bridge s(t)imulation"
-msgstr ""
-
-#: frontends/src/jp/cmd_debug.py:108
-msgid "debugging tools"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:38
-msgid "Send a file to a contact"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:42
-msgid "a list of file"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:43 frontends/src/jp/cmd_message.py:44
-#: frontends/src/jp/cmd_pipe.py:42
-msgid "the destination jid"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:44
-msgid "make a bzip2 tarball"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:51 frontends/src/jp/cmd_file.py:121
-msgid "File copy started"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:54
-msgid "File sent successfully"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:57
-msgid "Error while sending file: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:66
-#, python-brace-format
-msgid "File request sent to {jid}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:71
-#, python-brace-format
-msgid "Can't send file to {jid}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:75
-#, python-brace-format
-msgid "Error while trying to send a file: {reason}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:85
-msgid "[{}] is a dir ! Please send files inside or use compression"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:93
-msgid "bz2 is an experimental option, use with caution"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:95
-msgid "Starting compression, please wait..."
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:100
-msgid "Adding {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:103
-msgid "Done !"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:115
-msgid "Wait for a file to be sent by a contact"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:124
-msgid "File received successfully"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:127
-#, python-brace-format
-msgid "hash checked: {algo}:{checksum}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:132
-msgid "hash is checked but hash value is missing"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:134
-msgid "hash can't be verified"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:137
-msgid "Error while receiving file: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:146 frontends/src/jp/cmd_pipe.py:73
-msgid "Action has no XMLUI"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:151 frontends/src/jp/cmd_pipe.py:78
-msgid "Invalid XMLUI received"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:161 frontends/src/jp/cmd_pipe.py:88
-msgid "Ignoring action without from_jid data"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:166 frontends/src/jp/cmd_file.py:185
-msgid "ignoring action without progress id"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:171
-msgid "File refused because overwrite is needed"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:187
-msgid "Overwriting needed"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:191
-msgid "Overwrite accepted"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:193
-msgid "Refused to overwrite"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:200
-msgid "JIDs accepted (accept everything if none is specified)"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:201
-msgid "accept multiple files (you'll have to stop manually)"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:202
-msgid "force overwritting of existing files (/!\\ name is choosed by sended)"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:203
-msgid "destination path (default: working directory)"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:209
-msgid "Given path is not a directory !"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:213
-msgid "waiting for incoming file request"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:219
-msgid "Upload a file"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:223
-msgid "file to upload"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:224
-msgid "jid of upload component (nothing to autodetect)"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:225
-msgid "ignore invalide TLS certificate"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:228
-msgid "File upload started"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:231
-msgid "File uploaded successfully"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:237
-msgid "URL to retrieve the file:"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:242
-msgid "Error while uploading file: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:254
-msgid "Can't upload file"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:258
-#, python-brace-format
-msgid "Error while trying to upload a file: {reason}"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:267
-msgid "[{}] is a dir! Can't upload a dir"
-msgstr ""
-
-#: frontends/src/jp/cmd_file.py:283
-msgid "File sending/receiving"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:30
-msgid "service discovery"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:34
-msgid "entity to discover"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:35
-msgid "node to use"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:43
-#, python-format
-msgid "Error while doing discovery [%s]"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:90
-#, python-brace-format
-msgid ""
-"Features:\n"
-"\n"
-"{features}"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:92
-#, python-brace-format
-msgid ""
-"Identities:\n"
-"\n"
-"{identities}"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:94
-#, python-brace-format
-msgid ""
-"Extensions:\n"
-"\n"
-"{extensions}"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:96
-#, python-brace-format
-msgid ""
-"Items:\n"
-"\n"
-"{items}"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:109
-msgid "running session"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:113
-msgid "Entity to request"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:121
-#, python-format
-msgid "Error while trying to get version [%s]"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:128 src/plugins/plugin_xep_0092.py:107
-#, python-format
-msgid "Client name: %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:130 src/plugins/plugin_xep_0092.py:109
-#, python-format
-msgid "Client version: %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:132
-#, python-format
-msgid "Operating System: %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:141
-msgid "client version"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:155
-msgid "Error getting session infos: {}"
-msgstr ""
-
-#: frontends/src/jp/cmd_info.py:163
-msgid "Get various pieces of information on entities"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:32
-msgid "send a message to a contact"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:35
-msgid "language of the message"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:36
-msgid ""
-"separate xmpp messages: send one message per line instead of one message "
-"alone."
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:37
-msgid "add a new line at the beginning of the input (usefull for ascii art ;))"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:38
-msgid "subject of the message"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:39
-msgid "language of subject"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:40
-msgid "type of the message"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:42
-msgid "XHTML body"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:43
-msgid "rich body"
-msgstr ""
-
-#: frontends/src/jp/cmd_message.py:91
-msgid "messages handling"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:29
-msgid "Get a parameter value"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:32 frontends/src/jp/cmd_param.py:64
-msgid "Category of the parameter"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:33 frontends/src/jp/cmd_param.py:65
-#: frontends/src/jp/cmd_param.py:66
-msgid "Name of the parameter"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:34
-msgid "Name of the attribute to get"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:35 frontends/src/jp/cmd_param.py:67
-msgid "Security limit"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:61
-msgid "Set a parameter value"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:78
-msgid "Save parameters template to xml file"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:81
-msgid "Output file"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:86
-#, python-format
-msgid "Parameters saved to file %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:88
-#, python-format
-msgid "Can't save parameters to file %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:94
-msgid "Load parameters template from xml file"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:97
-msgid "Input file"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:102
-#, python-format
-msgid "Parameters loaded from file %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:104
-#, python-format
-msgid "Can't load parameters from file %s"
-msgstr ""
-
-#: frontends/src/jp/cmd_param.py:111
-msgid "Save/load parameters template"
-msgstr ""
-
-#: frontends/src/jp/cmd_pipe.py:38
-msgid "send a pipe a stream"
-msgstr ""
-
-#: frontends/src/jp/cmd_pipe.py:60
-msgid "receive a pipe stream"
-msgstr ""
-
-#: frontends/src/jp/cmd_pipe.py:64
-msgid "Jids accepted (none means \"accept everything\")"
-msgstr ""
-
-#: frontends/src/jp/cmd_pipe.py:111
-msgid "stream piping through XMPP"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:30
-msgid "The name of the profile"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:62
-msgid "delete profile without confirmation"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:72
-msgid "Profile deletion cancelled"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:80
-msgid "get information about a profile"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:82 src/plugins/plugin_xep_0048.py:256
-msgid "jid"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:87
-msgid "show the XMPP password IN CLEAR TEXT"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:103
-msgid "XMPP password"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:113
-msgid "the password of the profile"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:139
-msgid "set to component import name (entry point) if this is a component"
-msgstr ""
-
-#: frontends/src/jp/cmd_profile.py:171
-msgid "set as default profile"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:35
-msgid "Purge the roster from its contacts with no subscription"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:39
-msgid "Also purge contacts with no 'from' subscription"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:40
-msgid "Also purge contacts with no 'to' subscription"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:46 frontends/src/jp/cmd_roster.py:110
-#: frontends/src/jp/cmd_roster.py:181
-#, python-format
-msgid "Error while retrieving the contacts [%s]"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:100
-msgid "Show statistics about a roster"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:169
-msgid "Retrieve the roster contacts"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:173
-msgid "Show the contacts' subscriptions"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:174
-msgid "Show the contacts' groups"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:175
-msgid "Show the contacts' names"
-msgstr ""
-
-#: frontends/src/jp/cmd_roster.py:214
-msgid "Manage an entity's roster"
-msgstr ""
-
-#: frontends/src/jp/output_template.py:100
-msgid ""
-"Browser opening requested.\n"
-"Temporary files are put in the following directory, you'll have to delete it "
-"yourself once finished viewing: {}"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:37
-msgid "{} occupants"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:346
-msgid "Game"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:429
-#, python-brace-format
-msgid "<= {nick} has left the room ({count})"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:431
-#, python-brace-format
-msgid "<=> {nick} re-entered the room ({count})"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:466
-#, python-brace-format
-msgid "You have been mentioned by {nick} in {room}"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:473
-#, python-brace-format
-msgid "{entity} is talking to you"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:560
-msgid "Results for searching the globbing pattern: {}"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:561
-msgid "Type ':history <lines>' to reset the chat history"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:591
-#, python-format
-msgid "Primitivus: %s is talking to you"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:593
-#, python-format
-msgid "Primitivus: %(user)s mentioned you in room '%(room)s'"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:599
-msgid "Can't start game"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:599
-msgid "You need to be exactly 4 peoples in the room to start a Tarot game"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:623
-msgid "Change title"
-msgstr ""
-
-#: frontends/src/primitivus/chat.py:624
-msgid "Enter the new title"
-msgstr ""
-
-#: frontends/src/primitivus/contact_list.py:47
-#: frontends/src/primitivus/primitivus:533 src/plugins/plugin_xep_0055.py:80
-#: src/stdui/ui_contact_list.py:36 src/stdui/ui_contact_list.py:37
-#: src/stdui/ui_contact_list.py:38
-msgid "Contacts"
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:267
-msgid "Please choose your contrat"
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:283
-#: src/plugins/plugin_misc_tarot.py:244
-msgid "Draw game"
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:285
-msgid "You win \\o/"
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:285
-msgid "You loose :("
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:297
-msgid "Cards played are invalid !"
-msgstr ""
-
-#: frontends/src/primitivus/game_tarot.py:330
-msgid "Do you put these cards in chien ?"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:91
-msgid "Error while sending message ({})"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:136
-msgid "Please specify the globbing pattern to search for"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:371
-msgid "Configuration Error"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:371
-msgid ""
-"Something went wrong while reading the configuration, please check :messages"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:498
-msgid "Pleeeeasse, I can't even breathe !"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:527 src/memory/params.py:81
-msgid "General"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:528
-#: frontends/src/primitivus/profile_manager.py:53
-msgid "Connect"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:529 src/plugins/plugin_xep_0050.py:59
-msgid "Disconnect"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:530
-msgid "Parameters"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:531
-#: frontends/src/primitivus/primitivus:821
-msgid "About"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:532
-msgid "Exit"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:534 src/plugins/plugin_xep_0048.py:61
-msgid "Groups"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:536
-msgid "Join room"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:541
-msgid "Main menu"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:636
-#, python-brace-format
-msgid "{app}: a new event has just happened{entity}"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:706
-msgid "Chat menu"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:760
-#: frontends/src/primitivus/primitivus:801
-#: frontends/src/quick_frontend/quick_profile_manager.py:130
-#: src/plugins/plugin_misc_account.py:495
-#: src/plugins/plugin_misc_account.py:538
-#: src/plugins/plugin_misc_account.py:595
-msgid "Error"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:760
-msgid "Unmanaged action"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:771
-msgid "unkown"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:801
-#, python-format
-msgid "Can't get parameters (%s)"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:816
-msgid "Entering a MUC room"
-msgstr ""
-
-#: frontends/src/primitivus/primitivus:816
-msgid "Please enter MUC's JID"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:36
-msgid "Login:"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:37
-msgid "Password:"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:45
-msgid "New"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:46
-msgid "Delete"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:58
-msgid "Profile Manager"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:108
-msgid "Can't create profile"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:115
-msgid "New profile"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:115
-msgid "Please enter a new profile name"
-msgstr ""
-
-#: frontends/src/primitivus/profile_manager.py:120
-msgid "Are you sure you want to delete the profile {} ?"
-msgstr ""
-
-#: frontends/src/primitivus/progress.py:37
-msgid "Clear progress list"
-msgstr ""
-
-#: frontends/src/primitivus/status.py:46
-msgid "Set your presence"
-msgstr ""
-
-#: frontends/src/primitivus/status.py:52
-msgid "Set your status"
-msgstr ""
-
-#: frontends/src/primitivus/status.py:52
-msgid "New status"
-msgstr ""
-
-#: frontends/src/primitivus/xmlui.py:81
-msgid "Unknown div_char"
-msgstr ""
-
-#: frontends/src/primitivus/xmlui.py:405
-msgid "Submit"
-msgstr ""
-
-#: frontends/src/primitivus/xmlui.py:407 frontends/src/primitivus/xmlui.py:418
-msgid "Cancel"
-msgstr ""
-
-#: frontends/src/primitivus/xmlui.py:409
-msgid "OK"
-msgstr ""
-
-#: frontends/src/primitivus/xmlui.py:417 src/plugins/plugin_xep_0048.py:263
-msgid "Save"
-msgstr ""
-
-#: frontends/src/quick_frontend/constants.py:27
-#: src/plugins/plugin_xep_0050.py:54
-msgid "Online"
-msgstr ""
-
-#: frontends/src/quick_frontend/constants.py:28
-#: src/plugins/plugin_xep_0050.py:56
-msgid "Free for chat"
-msgstr ""
-
-#: frontends/src/quick_frontend/constants.py:29
-msgid "Away from keyboard"
-msgstr ""
-
-#: frontends/src/quick_frontend/constants.py:30
-#: src/plugins/plugin_xep_0050.py:57
-msgid "Do not disturb"
-msgstr ""
-
-#: frontends/src/quick_frontend/constants.py:31
-msgid "Extended away"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:81
-msgid "Error while trying to get autodisconnect param, ignoring: {}"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:174
-#, python-brace-format
-msgid "Can't get profile parameter: {msg}"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:453
-#, python-format
-msgid "Can't connect profile [%s]"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:510
-msgid "Connected"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:517
-msgid "Disconnected"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:574
-#, python-format
-msgid ""
-"presence update for %(entity)s (show=%(show)s, priority=%(priority)s, "
-"statuses=%(statuses)s) [profile:%(profile)s]"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:783
-#, python-format
-msgid "The contact %s has accepted your subscription"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:783
-#: frontends/src/quick_frontend/quick_app.py:790
-msgid "Subscription confirmation"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:786
-#, python-format
-msgid "The contact %s has refused your subscription"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:786
-msgid "Subscription refusal"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:790
-#, python-format
-msgid ""
-"The contact %s wants to subscribe to your presence.\n"
-"Do you accept ?"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:813
-#, python-format
-msgid "param update: [%(namespace)s] %(name)s = %(value)s"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_app.py:815
-#, python-format
-msgid "Changing JID to %s"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_chat.py:434
-msgid "now we print the history"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_chat.py:436
-msgid " ({} messages)"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_chat.py:478
-msgid "Can't get history: {}"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_contact_list.py:495
-msgid "Trying to delete an unknow entity [{}]"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_contact_list.py:536
-msgid "received presence from entity without resource: {}"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_contact_management.py:71
-msgid "Trying to get attribute for an unknown contact"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_contact_management.py:87
-msgid "INTERNAL ERROR: Key log.error"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_contact_management.py:99
-#, python-format
-msgid "Trying to update an unknown contact: %s"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_games.py:74
-#, python-brace-format
-msgid ""
-"A {game} activity between {players} has been started, but you couldn't take "
-"part because your client doesn't support it."
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_games.py:75
-#, python-brace-format
-msgid "{game} Game"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:116
-msgid "Trying to plug an unknown profile key ({})"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:118
-msgid "Profile plugging in error"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:130
-msgid "Can't get profile parameter"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:141
-msgid "A profile with this name already exists"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:143
-msgid "Profile creation cancelled by backend"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:145
-msgid "You profile name is not valid"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:147
-msgid "Can't create profile ({})"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:163
-#: src/stdui/ui_profile_manager.py:65
-msgid "Internal error"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:163
-msgid "You can't connect manually and automatically at the same time"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:168
-msgid "No profile selected"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_profile_manager.py:168
-msgid "You need to create and select at least one profile before connecting"
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_utils.py:38
-msgid ""
-"\n"
-"    %prog [options]\n"
-"\n"
-"    %prog --help for options list\n"
-"    "
-msgstr ""
-
-#: frontends/src/quick_frontend/quick_utils.py:45
-msgid "Select the profile to use"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:193
-msgid "Nothing to submit"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:337
-msgid "XMLUI can have only one main container"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:385
-#, python-format
-msgid "Unknown container [%s], using default one"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:394
-msgid "Internal Error, container has not _xmluiAppend method"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:472
-#, python-format
-msgid "FIXME FIXME FIXME: widget type [%s] is not implemented"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:473
-#, python-format
-msgid "FIXME FIXME FIXME: type [%s] is not implemented"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:481
-#, python-format
-msgid "No change listener on [%s]"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:498
-#, python-format
-msgid "Unknown tag [%s]"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:548
-msgid "No callback_id found"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:580
-#, python-format
-msgid "FIXME: XMLUI internal action [%s] is not implemented"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:667 frontends/src/tools/xmlui.py:677
-msgid "The form data is not sent back, the type is not managed properly"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:672
-msgid "Cancelling form"
-msgstr ""
-
-#: frontends/src/tools/xmlui.py:778
-msgid "You must register classes with registerClass before creating a XMLUI"
-msgstr ""
-
-#: src/core/sat_main.py:149
+#: sat/core/sat_main.py:212
 msgid "Memory initialised"
 msgstr ""
 
-#: src/core/sat_main.py:154
+#: sat/core/sat_main.py:219
+msgid "Could not initialize backend: {reason}"
+msgstr ""
+
+#: sat/core/sat_main.py:227
 msgid "Backend is ready"
 msgstr ""
 
-#: src/core/sat_main.py:189
-#, python-brace-format
+#: sat/core/sat_main.py:238
+msgid "Following profiles will be connected automatically: {profiles}"
+msgstr ""
+
+#: sat/core/sat_main.py:251
+msgid "Can't autoconnect profile {profile}: {reason}"
+msgstr ""
+
+#: sat/core/sat_main.py:321
 msgid ""
 "Can't import plugin [{path}]:\n"
 "{error}"
 msgstr ""
 
-#: src/core/sat_main.py:202
-#, python-brace-format
+#: sat/core/sat_main.py:340
 msgid "{type} type must be used with {mode} mode, ignoring plugin"
 msgstr ""
 
-#: src/core/sat_main.py:208
-#, python-brace-format
-msgid ""
-"Name conflict for import name [{import_name}], can't import plugin [{name}]"
-msgstr ""
-
-#: src/core/sat_main.py:234
+#: sat/core/sat_main.py:349
+msgid ""
+"Name conflict for import name [{import_name}], can't import plugin "
+"[{name}]"
+msgstr ""
+
+#: sat/core/sat_main.py:385
 msgid "Recommended plugin not found: {}"
 msgstr ""
 
-#: src/core/sat_main.py:248
-#, python-brace-format
+#: sat/core/sat_main.py:406
 msgid "Can't import plugin {name}: {error}"
 msgstr ""
 
-#: src/core/sat_main.py:311
+#: sat/core/sat_main.py:478
 msgid "already connected !"
 msgstr ""
 
-#: src/core/sat_main.py:331
+#: sat/core/sat_main.py:495
 msgid "not connected !"
 msgstr ""
 
-#: src/core/sat_main.py:406
+#: sat/core/sat_main.py:591
 msgid "Trying to remove reference to a client not referenced"
 msgstr ""
 
-#: src/core/sat_main.py:418
+#: sat/core/sat_main.py:604
 msgid "running app"
 msgstr ""
 
-#: src/core/sat_main.py:422
+#: sat/core/sat_main.py:608
 msgid "stopping app"
 msgstr ""
 
-#: src/core/sat_main.py:482
-msgid "Unexpected error: {}"
-msgstr ""
-
-#: src/core/sat_main.py:498
+#: sat/core/sat_main.py:646
+msgid "profile_key must not be empty"
+msgstr ""
+
+#: sat/core/sat_main.py:666
+msgid "Unexpected error: {failure_}"
+msgstr ""
+
+#: sat/core/sat_main.py:921
 msgid "asking connection status for a non-existant profile"
 msgstr ""
 
-#: src/core/sat_main.py:538
+#: sat/core/sat_main.py:1020
 #, python-format
 msgid "subsciption request [%(subs_type)s] for %(jid)s"
 msgstr ""
 
-#: src/core/sat_main.py:654
+#: sat/core/sat_main.py:1162
+msgid "Can't find features for service {service_jid}, ignoring"
+msgstr ""
+
+#: sat/core/sat_main.py:1221
+msgid "Can't retrieve {full_jid} infos, ignoring"
+msgstr ""
+
+#: sat/core/sat_main.py:1292
 msgid "Trying to remove an unknow progress callback"
 msgstr ""
 
-#: src/core/sat_main.py:738
+#: sat/core/sat_main.py:1382
 msgid "id already registered"
 msgstr ""
 
-#: src/core/sat_main.py:776
+#: sat/core/sat_main.py:1424
 msgid "trying to launch action with a non-existant profile"
 msgstr ""
 
-#: src/core/sat_main.py:858
+#: sat/core/sat_main.py:1520
 msgid "A menu with the same path and type already exists"
 msgstr ""
 
-#: src/core/xmpp.py:120
+#: sat/core/sat_main.py:1619
+msgid "help_string"
+msgstr ""
+
+#: sat/core/xmpp.py:196
 msgid "Can't parse port value, using default value"
 msgstr ""
 
-#: src/core/xmpp.py:141
+#: sat/core/xmpp.py:223
+msgid "We'll use the stable resource {resource}"
+msgstr ""
+
+#: sat/core/xmpp.py:255
 msgid "setting plugins parents"
 msgstr ""
 
-#: src/core/xmpp.py:160
+#: sat/core/xmpp.py:275
 msgid "Plugins initialisation error"
 msgstr ""
 
-#: src/core/xmpp.py:177
+#: sat/core/xmpp.py:297
 msgid "Error while disconnecting: {}"
 msgstr ""
 
-#: src/core/xmpp.py:191
-#, python-format
-msgid "********** [%s] CONNECTED **********"
-msgstr ""
-
-#: src/core/xmpp.py:200
+#: sat/core/xmpp.py:301
+msgid "{profile} identified"
+msgstr ""
+
+#: sat/core/xmpp.py:309
 msgid "XML stream is initialized"
 msgstr ""
 
-#: src/core/xmpp.py:216
-#, python-format
-msgid "ERROR: XMPP connection failed for profile '%(profile)s': %(reason)s"
-msgstr ""
-
-#: src/core/xmpp.py:230
-msgid "No keep_alife"
-msgstr ""
-
-#: src/core/xmpp.py:235
-#, python-format
-msgid "********** [%s] DISCONNECTED **********"
-msgstr ""
-
-#: src/core/xmpp.py:257
+#: sat/core/xmpp.py:317
+msgid "********** [{profile}] CONNECTED **********"
+msgstr ""
+
+#: sat/core/xmpp.py:343
+#, python-format
+msgid "ERROR: XMPP connection failed for profile '%(profile)s': %(reason)sprofile"
+msgstr ""
+
+#: sat/core/xmpp.py:398
+msgid "stopping connection because of network disabled"
+msgstr ""
+
+#: sat/core/xmpp.py:421
+msgid "network is available, trying to connect"
+msgstr ""
+
+#: sat/core/xmpp.py:445
+msgid "********** [{profile}] DISCONNECTED **********"
+msgstr ""
+
+#: sat/core/xmpp.py:464
+msgid ""
+"Your server certificate is not valid (its identity can't be checked).\n"
+"\n"
+"This should never happen and may indicate that somebody is trying to spy "
+"on you.\n"
+"Please contact your server administrator."
+msgstr ""
+
+#: sat/core/xmpp.py:515
 msgid "Disconnecting..."
 msgstr ""
 
-#: src/core/xmpp.py:401
-#, python-brace-format
+#: sat/core/xmpp.py:688
 msgid "Sending message (type {type}, to {to})"
 msgstr ""
 
-#: src/core/xmpp.py:407
-msgid ""
-"Triggers, storage and echo have been inhibited by the 'send_only' parameter"
-msgstr ""
-
-#: src/core/xmpp.py:447
+#: sat/core/xmpp.py:696
+msgid ""
+"Triggers, storage and echo have been inhibited by the 'send_only' "
+"parameter"
+msgstr ""
+
+#: sat/core/xmpp.py:762
 msgid "No message found"
 msgstr ""
 
-#: src/core/xmpp.py:581
-#, python-brace-format
+#: sat/core/xmpp.py:814
+msgid "invalid data used for host: {data}"
+msgstr ""
+
+#: sat/core/xmpp.py:839
+msgid ""
+"Certificate validation is deactivated, this is unsecure and somebody may "
+"be spying on you. If you have no good reason to disable certificate "
+"validation, please activate \"Check certificate\" in your settings in "
+"\"Connection\" tab."
+msgstr ""
+
+#: sat/core/xmpp.py:843
+msgid "Security notice"
+msgstr ""
+
+#: sat/core/xmpp.py:978
 msgid "The requested entry point ({entry_point}) is not available"
 msgstr ""
 
-#: src/core/xmpp.py:615
-#, python-brace-format
-msgid ""
-"Plugin {current_name} if needed for {entry_name}, but it doesn't handle "
+#: sat/core/xmpp.py:1016
+msgid ""
+"Plugin {current_name} is needed for {entry_name}, but it doesn't handle "
 "component mode"
 msgstr ""
 
-#: src/core/xmpp.py:619
+#: sat/core/xmpp.py:1024
 msgid "invalid plugin mode"
 msgstr ""
 
-#: src/core/xmpp.py:717
-#, python-brace-format
+#: sat/core/xmpp.py:1128
+msgid "parseMessage used with a non <message/> stanza, ignoring: {xml}"
+msgstr ""
+
+#: sat/core/xmpp.py:1140
+msgid "received <message> with a wrong namespace: {xml}"
+msgstr ""
+
+#: sat/core/xmpp.py:1226
 msgid "got message from: {from_}"
 msgstr ""
 
-#: src/core/xmpp.py:793
+#: sat/core/xmpp.py:1341
 msgid "There's no subscription between you and [{}]!"
 msgstr ""
 
-#: src/core/xmpp.py:795
+#: sat/core/xmpp.py:1346
 msgid "You are not subscribed to [{}]!"
 msgstr ""
 
-#: src/core/xmpp.py:797
+#: sat/core/xmpp.py:1348
 msgid "[{}] is not subscribed to you!"
 msgstr ""
 
-#: src/core/xmpp.py:954
-#, python-format
-msgid ""
-"presence update for [%(entity)s] (available, show=%(show)s statuses="
-"%(statuses)s priority=%(priority)d)"
-msgstr ""
-
-#: src/core/xmpp.py:975
+#: sat/core/xmpp.py:1384
+msgid "our server support roster versioning, we use it"
+msgstr ""
+
+#: sat/core/xmpp.py:1390
+msgid "no roster in cache, we start fresh"
+msgstr ""
+
+#: sat/core/xmpp.py:1394
+msgid "We have roster v{version} in cache"
+msgstr ""
+
+#: sat/core/xmpp.py:1405
+msgid "our server doesn't support roster versioning"
+msgstr ""
+
+#: sat/core/xmpp.py:1462
+msgid "adding {entity} to roster"
+msgstr ""
+
+#: sat/core/xmpp.py:1486
+msgid "removing {entity} from roster"
+msgstr ""
+
+#: sat/core/xmpp.py:1640
 #, python-format
 msgid "presence update for [%(entity)s] (unavailable, statuses=%(statuses)s)"
 msgstr ""
 
-#: src/core/xmpp.py:1038
+#: sat/core/xmpp.py:1724
 msgid "sending automatic \"from\" subscription request"
 msgstr ""
 
-#: src/core/xmpp.py:1046
+#: sat/core/xmpp.py:1732
 #, python-format
 msgid "subscription approved for [%s]"
 msgstr ""
 
-#: src/core/xmpp.py:1050
+#: sat/core/xmpp.py:1736
 #, python-format
 msgid "unsubscription confirmed for [%s]"
 msgstr ""
 
-#: src/core/xmpp.py:1055
+#: sat/core/xmpp.py:1741
 #, python-format
 msgid "subscription request from [%s]"
 msgstr ""
 
-#: src/core/xmpp.py:1060
+#: sat/core/xmpp.py:1747
 msgid "sending automatic subscription acceptance"
 msgstr ""
 
-#: src/core/xmpp.py:1068
+#: sat/core/xmpp.py:1759
 #, python-format
 msgid "unsubscription asked for [%s]"
 msgstr ""
 
-#: src/core/xmpp.py:1072
+#: sat/core/xmpp.py:1763
 msgid "automatic contact deletion"
 msgstr ""
 
-#: src/core/xmpp.py:1104
-#, python-format
-msgid "Registration asked for %(user)s@%(host)s"
-msgstr ""
-
-#: src/core/xmpp.py:1107
-#, python-format
-msgid "Connection made with %s"
-msgstr ""
-
-#: src/core/xmpp.py:1125
-#, python-format
-msgid "Registration answer: %s"
-msgstr ""
-
-#: src/core/xmpp.py:1129 src/plugins/plugin_xep_0077.py:87
-#: src/plugins/plugin_xep_0077.py:97
-#, python-format
-msgid "Registration failure: %s"
-msgstr ""
-
-#: src/memory/disco.py:219
+#: sat/memory/cache.py:69
+msgid "Can't read metadata file at {path}"
+msgstr ""
+
+#: sat/memory/cache.py:80
+msgid "Invalid cache metadata at {path}"
+msgstr ""
+
+#: sat/memory/cache.py:87
+msgid "cache {cache_file!r} references an inexisting file: {filepath!r}"
+msgstr ""
+
+#: sat/memory/cache.py:102
+msgid "following file is missing while purging cache: {path}"
+msgstr ""
+
+#: sat/memory/cache.py:200
+msgid "missing filename for cache {uid!r}"
+msgstr ""
+
+#: sat/memory/cache.py:207
+msgid "missing file referenced in cache {uid!r}: {filename}"
+msgstr ""
+
+#: sat/memory/disco.py:95
+msgid ""
+"no feature/identity found in disco element (hash: {cap_hash}), ignoring: "
+"{xml}"
+msgstr ""
+
+#: sat/memory/disco.py:274
 #, python-format
 msgid "Error while requesting [%(jid)s]: %(error)s"
 msgstr ""
 
-#: src/memory/disco.py:307
-#, python-format
-msgid "Capability hash generated: [%s]"
-msgstr ""
-
-#: src/memory/disco.py:348
+#: sat/memory/disco.py:338
+msgid "received an item without jid"
+msgstr ""
+
+#: sat/memory/disco.py:410
+msgid "Capability hash generated: [{cap_hash}]"
+msgstr ""
+
+#: sat/memory/disco.py:459
 msgid "invalid item (no jid)"
 msgstr ""
 
-#: src/memory/memory.py:219
-msgid ""
-"A database has been found in the default local_dir for previous versions (< "
-"0.5)"
-msgstr ""
-
-#: src/memory/memory.py:227
+#: sat/memory/encryption.py:71
+msgid "Could not restart {namespace!r} encryption with {entity}: {err}"
+msgstr ""
+
+#: sat/memory/encryption.py:74
+msgid "encryption sessions restored"
+msgstr ""
+
+#: sat/memory/encryption.py:116
+msgid "Encryption plugin registered: {name}"
+msgstr ""
+
+#: sat/memory/encryption.py:127
+msgid "Can't find requested encryption plugin: {namespace}"
+msgstr ""
+
+#: sat/memory/encryption.py:148
+msgid "Can't find a plugin with the name \"{name}\"."
+msgstr ""
+
+#: sat/memory/encryption.py:213
+msgid "No encryption plugin is registered, an encryption session can't be started"
+msgstr ""
+
+#: sat/memory/encryption.py:226
+msgid "Session with {bare_jid} is already encrypted with {name}. Nothing to do."
+msgstr ""
+
+#: sat/memory/encryption.py:237
+msgid ""
+"Session with {bare_jid} is already encrypted with {name}. Please stop "
+"encryption session before changing algorithm."
+msgstr ""
+
+#: sat/memory/encryption.py:249
+msgid "No resource found for {destinee}, can't encrypt with {name}"
+msgstr ""
+
+#: sat/memory/encryption.py:251
+msgid "No resource specified to encrypt with {name}, using {destinee}."
+msgstr ""
+
+#: sat/memory/encryption.py:257
+msgid "{name} encryption must be used with bare jids."
+msgstr ""
+
+#: sat/memory/encryption.py:261
+msgid "Encryption session has been set for {entity_jid} with {encryption_name}"
+msgstr ""
+
+#: sat/memory/encryption.py:268
+msgid ""
+"Encryption session started: your messages with {destinee} are now end to "
+"end encrypted using {name} algorithm."
+msgstr ""
+
+#: sat/memory/encryption.py:273
+msgid "Message are encrypted only for {nb_devices} device(s): {devices_list}."
+msgstr ""
+
+#: sat/memory/encryption.py:291
+msgid "There is no encryption session with this entity."
+msgstr ""
+
+#: sat/memory/encryption.py:295
+msgid ""
+"The encryption session is not run with the expected plugin: encrypted "
+"with {current_name} and was expecting {expected_name}"
+msgstr ""
+
+#: sat/memory/encryption.py:304
+msgid ""
+"There is a session for the whole entity (i.e. all devices of the entity),"
+" not a directed one. Please use bare jid if you want to stop the whole "
+"encryption with this entity."
+msgstr ""
+
+#: sat/memory/encryption.py:312
+msgid "There is no directed session with this entity."
+msgstr ""
+
+#: sat/memory/encryption.py:327
+msgid "encryption session stopped with entity {entity}"
+msgstr ""
+
+#: sat/memory/encryption.py:335
+msgid ""
+"Encryption session finished: your messages with {destinee} are NOT end to"
+" end encrypted anymore.\n"
+"Your server administrators or {destinee} server administrators will be "
+"able to read them."
+msgstr ""
+
+#: sat/memory/encryption.py:389 sat/memory/encryption.py:397
+#: sat/memory/encryption.py:404
+msgid "Encryption"
+msgstr ""
+
+#: sat/memory/encryption.py:389
+msgid "unencrypted (plain text)"
+msgstr ""
+
+#: sat/memory/encryption.py:392
+msgid "End encrypted session"
+msgstr ""
+
+#: sat/memory/encryption.py:400
+msgid "Start {name} session"
+msgstr ""
+
+#: sat/memory/encryption.py:404
+msgid "⛨ {name} trust"
+msgstr ""
+
+#: sat/memory/encryption.py:407
+msgid "Manage {name} trust"
+msgstr ""
+
+#: sat/memory/encryption.py:470
+msgid "Starting e2e session with {peer_jid} as we receive encrypted messages"
+msgstr ""
+
+#: sat/memory/memory.py:230
 msgid "Memory manager init"
 msgstr ""
 
-#: src/memory/memory.py:244
+#: sat/memory/memory.py:249
 msgid "Loading default params template"
 msgstr ""
 
-#: src/memory/memory.py:276
+#: sat/memory/memory.py:281
 #, python-format
 msgid "Parameters loaded from file: %s"
 msgstr ""
 
-#: src/memory/memory.py:279
+#: sat/memory/memory.py:284
 #, python-format
 msgid "Can't load parameters from file: %s"
 msgstr ""
 
-#: src/memory/memory.py:294
+#: sat/memory/memory.py:299
 #, python-format
 msgid "Parameters saved to file: %s"
 msgstr ""
 
-#: src/memory/memory.py:297
+#: sat/memory/memory.py:302
 #, python-format
 msgid "Can't save parameters to file: %s"
 msgstr ""
 
-#: src/memory/memory.py:426
+#: sat/memory/memory.py:404
+msgid "Authentication failure of profile {profile}"
+msgstr ""
+
+#: sat/memory/memory.py:431
 #, python-format
 msgid "[%s] Profile session purge"
 msgstr ""
 
-#: src/memory/memory.py:431
+#: sat/memory/memory.py:437
 #, python-format
 msgid "Trying to purge roster status cache for a profile not in memory: [%s]"
 msgstr ""
 
-#: src/memory/memory.py:441
+#: sat/memory/memory.py:451
 msgid "requesting no profiles at all"
 msgstr ""
 
-#: src/memory/memory.py:496
-#, python-brace-format
+#: sat/memory/memory.py:508
 msgid "Can't find component {component} entry point"
 msgstr ""
 
-#: src/memory/memory.py:740
-msgid "Trying to get entity data for a non-existant profile"
-msgstr ""
-
-#: src/memory/memory.py:929
+#: sat/memory/memory.py:996
 msgid "Need a bare jid to delete all resources"
 msgstr ""
 
-#: src/memory/memory.py:954
+#: sat/memory/memory.py:1028
 #, python-format
 msgid "Trying to encrypt a value for %s while the personal key is undefined!"
 msgstr ""
 
-#: src/memory/memory.py:969
+#: sat/memory/memory.py:1048
 #, python-format
 msgid "Trying to decrypt a value for %s while the personal key is undefined!"
 msgstr ""
 
-#: src/memory/memory.py:992
+#: sat/memory/memory.py:1069
 #, python-format
 msgid "Personal data (%(ns)s, %(key)s) has been successfuly encrypted"
 msgstr ""
 
-#: src/memory/memory.py:1019
+#: sat/memory/memory.py:1097
 msgid "Asking waiting subscriptions for a non-existant profile"
 msgstr ""
 
-#: src/memory/params.py:82
+#: sat/memory/memory.py:1218
+msgid "invalid permission"
+msgstr ""
+
+#: sat/memory/memory.py:1249
+msgid "unknown access type: {type}"
+msgstr ""
+
+#: sat/memory/memory.py:1284
+msgid "You can't use path and parent at the same time"
+msgstr ""
+
+#: sat/memory/memory.py:1288
+msgid "\"..\" or \".\" can't be used in path"
+msgstr ""
+
+#: sat/memory/memory.py:1307
+msgid "Several directories found, this should not happen"
+msgstr ""
+
+#: sat/memory/memory.py:1766
+msgid "Can't delete directory, it is not empty"
+msgstr ""
+
+#: sat/memory/memory.py:1778
+msgid "deleting file {name} with hash {file_hash}"
+msgstr ""
+
+#: sat/memory/memory.py:1787
+msgid "no reference left to {file_path}, deleting"
+msgstr ""
+
+#: sat/memory/params.py:85 sat_frontends/primitivus/base.py:533
+msgid "General"
+msgstr ""
+
+#: sat/memory/params.py:86
 msgid "Connection"
 msgstr ""
 
-#: src/memory/params.py:84
+#: sat/memory/params.py:88
 msgid "Chat history limit"
 msgstr ""
 
-#: src/memory/params.py:86
+#: sat/memory/params.py:90
 msgid "Show offline contacts"
 msgstr ""
 
-#: src/memory/params.py:88
+#: sat/memory/params.py:92
 msgid "Show empty groups"
 msgstr ""
 
-#: src/memory/params.py:91 src/plugins/plugin_misc_register_account.py:74
-msgid "Register new account"
-msgstr ""
-
-#: src/memory/params.py:92
+#: sat/memory/params.py:95
+msgid "Connect on backend startup"
+msgstr ""
+
+#: sat/memory/params.py:96
 msgid "Connect on frontend startup"
 msgstr ""
 
-#: src/memory/params.py:93
+#: sat/memory/params.py:97
 msgid "Disconnect on frontend closure"
 msgstr ""
 
-#: src/memory/params.py:154
+#: sat/memory/params.py:98
+msgid "Check certificate (don't uncheck if unsure)"
+msgstr ""
+
+#: sat/memory/params.py:163
 #, python-format
 msgid "Trying to purge cache of a profile not in memory: [%s]"
 msgstr ""
 
-#: src/memory/params.py:178
+#: sat/memory/params.py:188
 msgid "The profile name already exists"
 msgstr ""
 
-#: src/memory/params.py:193
+#: sat/memory/params.py:203
 msgid "Trying to delete an unknown profile"
 msgstr ""
 
-#: src/memory/params.py:199
+#: sat/memory/params.py:209
 msgid "Trying to delete a connected profile"
 msgstr ""
 
-#: src/memory/params.py:217
+#: sat/memory/params.py:228
 msgid "No default profile, returning first one"
 msgstr ""
 
-#: src/memory/params.py:221
+#: sat/memory/params.py:234
 msgid "No profile exist yet"
 msgstr ""
 
-#: src/memory/params.py:229
+#: sat/memory/params.py:244
 #, python-format
 msgid "Trying to access an unknown profile (%s)"
 msgstr ""
 
-#: src/memory/params.py:314
+#: sat/memory/params.py:338
 msgid "Trying to register frontends parameters with no specified app: aborted"
 msgstr ""
 
-#: src/memory/params.py:319
-#, python-format
-msgid "Trying to register twice frontends parameters for %(app)s: aborted"
-msgstr ""
-
-#: src/memory/params.py:330
+#: sat/memory/params.py:347
+#, python-format
+msgid "Trying to register twice frontends parameters for %(app)s: abortedapp"
+msgstr ""
+
+#: sat/memory/params.py:363
 #, python-format
 msgid "Can't determine default value for [%(category)s/%(name)s]: %(reason)s"
 msgstr ""
 
-#: src/memory/params.py:346 src/memory/params.py:478 src/memory/params.py:523
+#: sat/memory/params.py:385 sat/memory/params.py:563 sat/memory/params.py:624
 #, python-format
 msgid "Requested param [%(name)s] in category [%(category)s] doesn't exist !"
 msgstr ""
 
-#: src/memory/params.py:381
+#: sat/memory/params.py:440
 #, python-format
 msgid ""
 "Unset parameter (%(cat)s, %(param)s) of type list will use the default "
 "option '%(value)s'"
 msgstr ""
 
-#: src/memory/params.py:385
+#: sat/memory/params.py:448
 #, python-format
 msgid "Parameter (%(cat)s, %(param)s) of type list has no default option!"
 msgstr ""
 
-#: src/memory/params.py:387
-#, python-format
-msgid ""
-"Parameter (%(cat)s, %(param)s) of type list has more than one default option!"
-msgstr ""
-
-#: src/memory/params.py:444
-msgid "The stored password could not be decrypted!"
-msgstr ""
-
-#: src/memory/params.py:494
+#: sat/memory/params.py:455
+#, python-format
+msgid ""
+"Parameter (%(cat)s, %(param)s) of type list has more than one default "
+"option!"
+msgstr ""
+
+#: sat/memory/params.py:585
 msgid "Requesting a param for an non-existant profile"
 msgstr ""
 
-#: src/memory/params.py:498
+#: sat/memory/params.py:589
 msgid "Requesting synchronous param for not connected profile"
 msgstr ""
 
-#: src/memory/params.py:527
+#: sat/memory/params.py:633
 #, python-format
 msgid ""
 "Trying to get parameter '%(param)s' in category '%(cat)s' without "
-"authorization!!!"
-msgstr ""
-
-#: src/memory/params.py:539
+"authorization!!!param"
+msgstr ""
+
+#: sat/memory/params.py:649
 msgid "Requesting a param for a non-existant profile"
 msgstr ""
 
-#: src/memory/params.py:564 src/memory/params.py:742 src/memory/params.py:759
-msgid "Asking params for inexistant profile"
-msgstr ""
-
-#: src/memory/params.py:817
+#: sat/memory/params.py:962
 msgid "Trying to set parameter for an unknown profile"
 msgstr ""
 
-#: src/memory/params.py:822
+#: sat/memory/params.py:968
 #, python-format
 msgid "Requesting an unknown parameter (%(category)s/%(name)s)"
 msgstr ""
 
-#: src/memory/params.py:827
-#, python-format
-msgid ""
-"Trying to set parameter '%(param)s' in category '%(cat)s' without "
-"authorization!!!"
-msgstr ""
-
-#: src/memory/params.py:839
-#, python-format
-msgid ""
-"Trying to set parameter '%(param)s' in category '%(cat)s' with an non-"
-"integer value"
-msgstr ""
-
-#: src/memory/params.py:851
+#: sat/memory/params.py:974
+msgid ""
+"{profile!r} is trying to set parameter {name!r} in category {category!r} "
+"without authorization!!!"
+msgstr ""
+
+#: sat/memory/params.py:992
+msgid ""
+"Trying to set parameter {name} in category {category} withan non-integer "
+"value"
+msgstr ""
+
+#: sat/memory/params.py:1011
 #, python-format
 msgid "Setting parameter (%(category)s, %(name)s) = %(value)s"
 msgstr ""
 
-#: src/memory/params.py:873
+#: sat/memory/params.py:1043
 msgid "Trying to encrypt a password while the personal key is undefined!"
 msgstr ""
 
-#: src/memory/persistent.py:39
+#: sat/memory/persistent.py:45
 msgid "PersistentDict can't be used before memory initialisation"
 msgstr ""
 
-#: src/memory/sqlite.py:127
+#: sat/memory/persistent.py:175
+msgid "Calling load on LazyPersistentBinaryDict while it's not needed"
+msgstr ""
+
+#: sat/memory/sqlite.py:163
+msgid ""
+"too many db tries, we abandon! Error message: {msg}\n"
+"query was {query}"
+msgstr ""
+
+#: sat/memory/sqlite.py:166
+msgid "exception while running query, retrying ({try_}): {msg}"
+msgstr ""
+
+#: sat/memory/sqlite.py:188
+msgid ""
+"too many interaction tries, we abandon! Error message: {msg}\n"
+"interaction method was: {interaction}\n"
+"interaction arguments were: {args}"
+msgstr ""
+
+#: sat/memory/sqlite.py:191
+msgid "exception while running interaction, retrying ({try_}): {msg}"
+msgstr ""
+
+#: sat/memory/sqlite.py:210
 msgid "Connecting database"
 msgstr ""
 
-#: src/memory/sqlite.py:139
-msgid "Can't activate foreign keys"
-msgstr ""
-
-#: src/memory/sqlite.py:142
+#: sat/memory/sqlite.py:223
 msgid "The database is new, creating the tables"
 msgstr ""
 
-#: src/memory/sqlite.py:251
+#: sat/memory/sqlite.py:337
 #, python-format
 msgid "Can't delete profile [%s]"
 msgstr ""
 
-#: src/memory/sqlite.py:269
+#: sat/memory/sqlite.py:354
 #, python-format
 msgid "Profile [%s] deleted"
 msgstr ""
 
-#: src/memory/sqlite.py:285
+#: sat/memory/sqlite.py:370
 msgid "loading general parameters from database"
 msgstr ""
 
-#: src/memory/sqlite.py:300
+#: sat/memory/sqlite.py:385
 msgid "loading individual parameters from database"
 msgstr ""
 
-#: src/memory/sqlite.py:324
-#, python-format
-msgid "Can't set general parameter (%(category)s/%(name)s) in database"
-msgstr ""
-
-#: src/memory/sqlite.py:337
-#, python-format
-msgid ""
-"Can't set individual parameter (%(category)s/%(name)s) for [%(profile)s] in "
-"database"
-msgstr ""
-
-#: src/memory/sqlite.py:350
-#, python-brace-format
-msgid ""
-"Can't save following {key} in history (uid: {uid}, lang:{lang}): {value}"
-msgstr ""
-
-#: src/memory/sqlite.py:360
-#, python-brace-format
-msgid ""
-"Can't save following thread in history (uid: {uid}): thread:{thread}), "
+#: sat/memory/sqlite.py:426
+#, python-format
+msgid "Can't set general parameter (%(category)s/%(name)s) in databasecategory"
+msgstr ""
+
+#: sat/memory/sqlite.py:439
+#, python-format
+msgid ""
+"Can't set individual parameter (%(category)s/%(name)s) for [%(profile)s] "
+"in databasecategory"
+msgstr ""
+
+#: sat/memory/sqlite.py:459
+msgid "Can't save following {key} in history (uid: {uid}, lang:{lang}): {value}"
+msgstr ""
+
+#: sat/memory/sqlite.py:473
+msgid ""
+"Can't save following thread in history (uid: {uid}): thread: {thread}), "
 "parent:{parent}"
 msgstr ""
 
-#: src/memory/sqlite.py:379
-#, python-brace-format
+#: sat/memory/sqlite.py:498
 msgid ""
 "Can't save following message in history: from [{from_jid}] to [{to_jid}] "
 "(uid: {uid})"
 msgstr ""
 
-#: src/memory/sqlite.py:535
-#, python-format
-msgid "loading general private values [namespace: %s] from database"
-msgstr ""
-
-#: src/memory/sqlite.py:537 src/memory/sqlite.py:555
-#, python-format
-msgid "No data present in database for namespace %s"
-msgstr ""
-
-#: src/memory/sqlite.py:552
-#, python-format
-msgid "loading individual private values [namespace: %s] from database"
-msgstr ""
-
-#: src/memory/sqlite.py:566
-#, python-format
-msgid ""
-"Can't set general private value (%(key)s) [namespace:%(namespace)s] in "
-"database"
-msgstr ""
-
-#: src/memory/sqlite.py:580
-#, python-format
-msgid ""
-"Can't set individual private value (%(key)s) [namespace: %(namespace)s] for "
-"[%(profile)s] in database"
-msgstr ""
-
-#: src/memory/sqlite.py:592
-#, python-format
-msgid ""
-"Can't delete general private value (%(key)s) [namespace:%(namespace)s] in "
-"database"
-msgstr ""
-
-#: src/memory/sqlite.py:605
-#, python-format
-msgid ""
-"Can't delete individual private value (%(key)s) [namespace: %(namespace)s] "
-"for [%(profile)s] in database"
-msgstr ""
-
-#: src/memory/sqlite.py:621
-#, python-format
-msgid "loading general private binary values [namespace: %s] from database"
-msgstr ""
-
-#: src/memory/sqlite.py:623 src/memory/sqlite.py:641
-#, python-format
-msgid "No binary data present in database for namespace %s"
-msgstr ""
-
-#: src/memory/sqlite.py:638
-#, python-format
-msgid "loading individual private binary values [namespace: %s] from database"
-msgstr ""
-
-#: src/memory/sqlite.py:652
-#, python-format
-msgid ""
-"Can't set general private binary value (%(key)s) [namespace:%(namespace)s] "
-"in database"
-msgstr ""
-
-#: src/memory/sqlite.py:666
-#, python-format
-msgid ""
-"Can't set individual binary private value (%(key)s) [namespace: "
-"%(namespace)s] for [%(profile)s] in database"
-msgstr ""
-
-#: src/memory/sqlite.py:678
-#, python-format
-msgid ""
-"Can't delete general private binary value (%(key)s) [namespace:"
-"%(namespace)s] in database"
-msgstr ""
-
-#: src/memory/sqlite.py:691
-#, python-format
-msgid ""
-"Can't delete individual private binary value (%(key)s) [namespace: "
-"%(namespace)s] for [%(profile)s] in database"
-msgstr ""
-
-#: src/memory/sqlite.py:761
-msgid ""
-"Your local schema is up-to-date, but database versions mismatch, fixing it..."
-msgstr ""
-
-#: src/memory/sqlite.py:771
-msgid ""
-"There is a schema mismatch, but as we are on a dev version, database will be "
-"updated"
-msgstr ""
-
-#: src/memory/sqlite.py:775
-msgid ""
-"schema version is up-to-date, but local schema differ from expected current "
-"schema"
-msgstr ""
-
-#: src/memory/sqlite.py:778
-#, python-format
-msgid ""
-"Here are the commands that should fix the situation, use at your own risk "
-"(do a backup before modifying database), you can go to SàT's MUC room at "
-"sat@chat.jabberfr.org for help\n"
+#: sat/memory/sqlite.py:701
+msgid ""
+"Can't {operation} data in database for namespace "
+"{namespace}{and_key}{for_profile}: {msg}"
+msgstr ""
+
+#: sat/memory/sqlite.py:752
+msgid ""
+"getting {type}{binary} private values from database for namespace "
+"{namespace}{keys}"
+msgstr ""
+
+#: sat/memory/sqlite.py:986
+msgid "Can't save file metadata for [{profile}]: {reason}"
+msgstr ""
+
+#: sat/memory/sqlite.py:1025
+msgid "table not updated, probably due to race condition, trying again ({tries})"
+msgstr ""
+
+#: sat/memory/sqlite.py:1027
+msgid "Can't update file table"
+msgstr ""
+
+#: sat/memory/sqlite.py:1132
+msgid ""
+"Your local schema is up-to-date, but database versions mismatch, fixing "
+"it..."
+msgstr ""
+
+#: sat/memory/sqlite.py:1142
+msgid ""
+"There is a schema mismatch, but as we are on a dev version, database will"
+" be updated"
+msgstr ""
+
+#: sat/memory/sqlite.py:1146
+msgid ""
+"schema version is up-to-date, but local schema differ from expected "
+"current schema"
+msgstr ""
+
+#: sat/memory/sqlite.py:1149
+#, python-format
+msgid ""
+"Here are the commands that should fix the situation, use at your own risk"
+" (do a backup before modifying database), you can go to SàT's MUC room at"
+" sat@chat.jabberfr.org for help\n"
 "### SQL###\n"
 "%s\n"
 "### END SQL ###\n"
 msgstr ""
 
-#: src/memory/sqlite.py:783
-msgid ""
-"Database content needs a specific processing, local database will be updated"
-msgstr ""
-
-#: src/memory/sqlite.py:785
+#: sat/memory/sqlite.py:1153
+msgid ""
+"You database version is higher than the one used in this SàT version, are"
+" you using several version at the same time? We can't run SàT with this "
+"database."
+msgstr ""
+
+#: sat/memory/sqlite.py:1161
+msgid ""
+"Database content needs a specific processing, local database will be "
+"updated"
+msgstr ""
+
+#: sat/memory/sqlite.py:1163
 msgid "Database schema has changed, local database will be updated"
 msgstr ""
 
-#: src/plugins/plugin_adhoc_dbus.py:53
+#: sat/plugins/plugin_adhoc_dbus.py:91
 msgid "Add D-Bus management to Ad-Hoc commands"
 msgstr ""
 
-#: src/plugins/plugin_adhoc_dbus.py:60
+#: sat/plugins/plugin_adhoc_dbus.py:98
 msgid "plugin Ad-Hoc D-Bus initialization"
 msgstr ""
 
-#: src/plugins/plugin_adhoc_dbus.py:169
+#: sat/plugins/plugin_adhoc_dbus.py:127
+msgid "Media Players"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:255
 msgid "Command selection"
 msgstr ""
 
-#: src/plugins/plugin_adhoc_dbus.py:206 src/plugins/plugin_xep_0050.py:439
+#: sat/plugins/plugin_adhoc_dbus.py:298
 msgid "Updated"
 msgstr ""
 
-#: src/plugins/plugin_adhoc_dbus.py:210
+#: sat/plugins/plugin_adhoc_dbus.py:302
 msgid "Command sent"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:52
+#: sat/plugins/plugin_adhoc_dbus.py:367
+msgid "Can't retrieve remote controllers on {device_jid}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:405
+msgid "No media player found."
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:409 sat/plugins/plugin_adhoc_dbus.py:451
+msgid "Media Player Selection"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:414
+msgid "Ignoring MPRIS bus without suffix"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:428
+msgid "missing media_player value"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:431
+msgid ""
+"Media player ad-hoc command trying to use non MPRIS bus. Hack attempt? "
+"Refused bus: {bus_name}"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:434
+msgid "Invalid player name."
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:440
+msgid "Can't get D-Bus proxy: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:441
+msgid "Media player is not available anymore"
+msgstr ""
+
+#: sat/plugins/plugin_adhoc_dbus.py:460
+msgid "Can't retrieve attribute {name}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_blog_import.py:45
+msgid ""
+"Blog import management:\n"
+"This plugin manage the different blog importers which can register to it,"
+" and handle generic importing tasks."
+msgstr ""
+
+#: sat/plugins/plugin_blog_import.py:64
+msgid "plugin Blog Import initialization"
+msgstr ""
+
+#: sat/plugins/plugin_blog_import_dokuwiki.py:58
 msgid "Blog importer for Dokuwiki blog engine."
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:55
+#: sat/plugins/plugin_blog_import_dokuwiki.py:61
 msgid "import posts from Dokuwiki blog engine"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:57
+#: sat/plugins/plugin_blog_import_dokuwiki.py:63
 msgid ""
 "This importer handle Dokuwiki blog engine.\n"
 "\n"
@@ -2236,168 +1038,512 @@
 "pointing to http://media.diekulturvermittlung.at.\n"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:341
+#: sat/plugins/plugin_blog_import_dokuwiki.py:351
 msgid "plugin Dokuwiki Import initialization"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:371
-#, python-brace-format
+#: sat/plugins/plugin_blog_import_dokuwiki.py:383
 msgid ""
 "DokuWiki media files will be *downloaded* to {temp_dir} - to finish the "
 "import you have to upload them *manually* to {media_repo}"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dokuwiki.py:375
-msgid ""
-"DokuWiki media files will be *uploaded* to the XMPP server. Hyperlinks to "
-"these media may not been updated though."
-msgstr ""
-
-#: src/plugins/plugin_blog_import_dokuwiki.py:377
-#, python-brace-format
+#: sat/plugins/plugin_blog_import_dokuwiki.py:389
+msgid ""
+"DokuWiki media files will be *uploaded* to the XMPP server. Hyperlinks to"
+" these media may not been updated though."
+msgstr ""
+
+#: sat/plugins/plugin_blog_import_dokuwiki.py:393
 msgid ""
 "DokuWiki media files will *stay* on {location} - some of them may be "
 "protected by DokuWiki ACL and will not be accessible."
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dotclear.py:41
+#: sat/plugins/plugin_blog_import_dotclear.py:42
 msgid "Blog importer for Dotclear blog engine."
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dotclear.py:44
+#: sat/plugins/plugin_blog_import_dotclear.py:45
 msgid "import posts from Dotclear blog engine"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dotclear.py:46
+#: sat/plugins/plugin_blog_import_dotclear.py:47
 msgid ""
 "This importer handle Dotclear blog engine.\n"
 "\n"
 "To use it, you'll need to export your blog to a flat file.\n"
 "You must go in your admin interface and select Plugins/Maintenance then "
 "Backup.\n"
-"Export only one blog if you have many, i.e. select \"Download database of "
-"current blog\"\n"
-"Depending on your configuration, your may need to use Import/Export plugin "
-"and export as a flat file.\n"
+"Export only one blog if you have many, i.e. select \"Download database of"
+" current blog\"\n"
+"Depending on your configuration, your may need to use Import/Export "
+"plugin and export as a flat file.\n"
 "\n"
 "location: you must use the absolute path to your backup for the location "
 "parameter\n"
 msgstr ""
 
-#: src/plugins/plugin_blog_import_dotclear.py:242
+#: sat/plugins/plugin_blog_import_dotclear.py:266
 msgid "plugin Dotclear Import initialization"
 msgstr ""
 
-#: src/plugins/plugin_blog_import.py:44
-msgid ""
-"Blog import management:\n"
-"This plugin manage the different blog importers which can register to it, "
-"and handler generic importing tasks."
-msgstr ""
-
-#: src/plugins/plugin_blog_import.py:62
-msgid "plugin Blog Import initialization"
-msgstr ""
-
-#: src/plugins/plugin_comp_ep_test.py:36 src/plugins/plugin_exp_parrot.py:38
-msgid "Implementation of parrot mode (repeat messages between 2 entities)"
-msgstr ""
-
-#: src/plugins/plugin_comp_ep_test.py:44
-msgid "Plugin Test initialization"
-msgstr ""
-
-#: src/plugins/plugin_exp_command_export.py:38
+#: sat/plugins/plugin_comp_file_sharing.py:69
+msgid "Component hosting and sharing files"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:79
+msgid ""
+"You are over quota, your maximum allowed size is {quota} and you are "
+"already using {used_space}, you can't upload {file_size} more."
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:350
+msgid "File Sharing initialization"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:431
+#: sat/plugins/plugin_comp_file_sharing_management.py:422
+msgid "Can't create thumbnail: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:454
+msgid "Reusing already generated hash"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:485
+msgid "Can't get thumbnail for {final_path}: {e}"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:574
+msgid "{peer_jid} is trying to access an unauthorized file: {name}"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing.py:582
+msgid "no matching file found ({file_data})"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:43
+msgid ""
+"Experimental handling of file management for file sharing. This plugins "
+"allows to change permissions of stored files/directories or remove them."
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:72
+msgid "File Sharing Management plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:185
+msgid "file not found"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:187
+#: sat/plugins/plugin_comp_file_sharing_management.py:192
+#: sat/plugins/plugin_comp_file_sharing_management.py:474
+msgid "forbidden"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:191
+msgid "Only owner can manage files"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:258
+msgid "Please select permissions for this directory"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:260
+msgid "Please select permissions for this file"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:305
+msgid "Can't use read_allowed values: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:332
+msgid "management session done"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:358
+msgid ""
+"Are you sure to delete directory {name} and all files and directories "
+"under it?"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:362
+msgid "Are you sure to delete file {name}?"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:387
+msgid "file deleted"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:465
+msgid "thumbnails generated"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:481
+msgid "You are currently using {size_used} on {size_quota}"
+msgstr ""
+
+#: sat/plugins/plugin_comp_file_sharing_management.py:484
+msgid "unlimited quota"
+msgstr ""
+
+#: sat/plugins/plugin_dbg_manhole.py:39
+msgid "Debug plugin to have a telnet server"
+msgstr ""
+
+#: sat/plugins/plugin_dbg_manhole.py:53
+msgid ""
+"/!\\ Manhole debug server activated, be sure to not use it in production,"
+" this is dangerous /!\\"
+msgstr ""
+
+#: sat/plugins/plugin_dbg_manhole.py:55
+msgid "You can connect to manhole server using telnet on port {port}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_command_export.py:39
 msgid "Implementation of command export"
 msgstr ""
 
-#: src/plugins/plugin_exp_command_export.py:89
+#: sat/plugins/plugin_exp_command_export.py:92
 msgid "Plugin command export initialization"
 msgstr ""
 
-#: src/plugins/plugin_exp_lang_detect.py:42
+#: sat/plugins/plugin_exp_events.py:50
+msgid "Experimental implementation of XMPP events management"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:60
+msgid "Event plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:177
+msgid "no src found for image"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:187
+msgid "no {uri_type} element found!"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:189
+msgid "incomplete {uri_type} element"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:191
+msgid "bad {uri_type} element"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:231
+msgid "No event element has been found"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:233
+msgid "No event with this id has been found"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:290
+msgid "event_id must be set"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:333
+msgid "The given URI is not valid: {uri}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:354
+#: sat/plugins/plugin_exp_list_of_interest.py:100
+msgid "requested node already exists"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:373
+msgid "missing node"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:426
+msgid "No event found in item {item_id}, ignoring"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:519
+msgid "no data found for {item_id} (service: {service}, node: {node})"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:542 sat/plugins/plugin_exp_events.py:623
+msgid "\"XEP-0277\" (blog) plugin is needed for this feature"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:548
+msgid "got event data"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:579
+msgid "affiliation set on blog and comments nodes"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:619
+msgid "\"Invitations\" plugin is needed for this feature"
+msgstr ""
+
+#: sat/plugins/plugin_exp_events.py:632
+msgid "invitation created"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:44
+msgid "Experimental handling of invitations"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:57
+msgid "Invitation plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:251
+msgid "Can't get item linked with invitation: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:256
+msgid "Invitation was linking to a non existing item"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:262
+msgid "Can't retrieve namespace of invitation: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:281
+msgid "Bad invitation, ignoring"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation.py:321
+msgid "No handler for namespace \"{namespace}\", invitation ignored"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_file.py:39
+msgid "Experimental handling of invitations for file sharing"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_file.py:46
+msgid "File Sharing Invitation plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_file.py:85
+#: sat/plugins/plugin_exp_invitation_file.py:92
+msgid "file sharing"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_file.py:87
+msgid "photo album"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_file.py:93
+msgid ""
+"{profile} has received an invitation for a files repository "
+"({type_human}) with namespace {sharing_ns!r} at path [{path}]"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_pubsub.py:42
+msgid "Invitations for pubsub based features"
+msgstr ""
+
+#: sat/plugins/plugin_exp_invitation_pubsub.py:49
+msgid "Pubsub Invitation plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:52
+msgid "Jingle Stream plugin"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:55
+msgid "{peer} wants to send you a stream, do you accept ?"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:56
+msgid "Stream Request"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:123
+msgid "stream can't be used with multiple consumers"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:170
+msgid "No client connected, can't send data"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:180
+msgid "Plugin Stream initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_jingle_stream.py:270
+msgid "given port is invalid"
+msgstr ""
+
+#: sat/plugins/plugin_exp_lang_detect.py:45
 msgid "Detect and set message language when unknown"
 msgstr ""
 
-#: src/plugins/plugin_exp_lang_detect.py:45
-#: src/plugins/plugin_misc_watched.py:40 src/plugins/plugin_xep_0249.py:73
+#: sat/plugins/plugin_exp_lang_detect.py:48
+#: sat/plugins/plugin_misc_watched.py:43 sat/plugins/plugin_xep_0249.py:73
 msgid "Misc"
 msgstr ""
 
-#: src/plugins/plugin_exp_lang_detect.py:47
+#: sat/plugins/plugin_exp_lang_detect.py:50
 msgid "language detection"
 msgstr ""
 
-#: src/plugins/plugin_exp_lang_detect.py:65
+#: sat/plugins/plugin_exp_lang_detect.py:66
 msgid "Language detection plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_exp_parrot.py:51
+#: sat/plugins/plugin_exp_list_of_interest.py:46
+msgid "Experimental handling of interesting XMPP locations"
+msgstr ""
+
+#: sat/plugins/plugin_exp_list_of_interest.py:56
+msgid "List of Interest plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_list_of_interest.py:287
+msgid "Missing interest element: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_parrot.py:40
+msgid "Implementation of parrot mode (repeat messages between 2 entities)"
+msgstr ""
+
+#: sat/plugins/plugin_exp_parrot.py:56
 msgid "Plugin Parrot initialization"
 msgstr ""
 
-#: src/plugins/plugin_exp_parrot.py:58 src/plugins/plugin_xep_0045.py:99
-#: src/plugins/plugin_xep_0048.py:73 src/plugins/plugin_xep_0092.py:54
-#: src/plugins/plugin_xep_0249.py:89
+#: sat/plugins/plugin_exp_parrot.py:63 sat/plugins/plugin_xep_0045.py:150
+#: sat/plugins/plugin_xep_0048.py:102 sat/plugins/plugin_xep_0092.py:61
+#: sat/plugins/plugin_xep_0199.py:56 sat/plugins/plugin_xep_0249.py:95
+#: sat/plugins/plugin_xep_0384.py:476
 msgid "Text commands not available"
 msgstr ""
 
-#: src/plugins/plugin_exp_pipe.py:40
-msgid "Jingle Pipe Transfer experimental plugin"
-msgstr ""
-
-#: src/plugins/plugin_exp_pipe.py:43
-#, python-brace-format
-msgid "{peer} wants to send you a pipe stream, do you accept ?"
-msgstr ""
-
-#: src/plugins/plugin_exp_pipe.py:44
-msgid "Pipe stream"
-msgstr ""
-
-#: src/plugins/plugin_exp_pipe.py:50
-msgid "Plugin Pipe initialization"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:48
-msgid "SàT account creation"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:105
-msgid "Prosody command succeed"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:108
-#, python-format
-msgid "Can't complete Prosody command (error code: %(code)d): %(message)s"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:135
-msgid "Plugin Account initialization"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:145
-#, python-format
-msgid "Can't find %s"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:148
-#, python-format
-msgid "Prosody path found: %s"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:314
-msgid "New Libervia account created"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:326
-#, python-brace-format
+#: sat/plugins/plugin_exp_pubsub_admin.py:40
+msgid ""
+"\\Implementation of Pubsub Administrator\n"
+"This allows a pubsub administrator to overwrite completly items, "
+"including publisher.\n"
+"Specially useful when importing a node."
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:40
+msgid "Experimental plugin to launch on action on Pubsub notifications"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:56
+msgid "PubSub Hook initialization"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:93
+msgid "node manager already set for {node}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:101
+msgid "node manager installed on {node}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:107
+msgid "trying to remove a {node} without hook"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:112
+msgid "hook removed"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:114
+msgid "node still needed for an other hook"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:119
+msgid "{hook_type} is not handled"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:123
+#: sat/plugins/plugin_exp_pubsub_hook.py:167
+msgid "{hook_type} hook type not implemented yet"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:139
+msgid "{persistent} hook installed on {node} for {profile}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:140
+msgid "persistent"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:140
+msgid "temporary"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:173
+msgid "Can't load Pubsub hook at node {node}, it will be removed: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_exp_pubsub_hook.py:185
+msgid "Error while running Pubsub hook for node {node}: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:41
+msgid "Generic import plugin, base for specialized importers"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:49
+msgid "plugin Import initialization"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:67
+msgid "initializing {name} import handler"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:158
+msgid "invalid json option: {option}"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:296
+msgid "uploading subitems"
+msgstr ""
+
+#: sat/plugins/plugin_import.py:327
+msgid "An {handler_name} importer with the name {name} already exist"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:37
+msgid "Merge request handler for Mercurial"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:40
+msgid "handle Mercurial repository"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:71
+msgid "Mercurial merge request handler initialization"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:75
+msgid "Mercurial executable (hg) not found, can't use Mercurial handler"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:116
+msgid "invalid changeset signature"
+msgstr ""
+
+#: sat/plugins/plugin_merge_req_mercurial.py:136
+msgid "unexpected time data: {data}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:50
+msgid "Libervia account creation"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:75
 msgid ""
 "Welcome to Libervia, the web interface of Salut à Toi.\n"
 "\n"
-"Your account on {domain} has been successfully created. This is a "
-"demonstration version to show you the current status of the project. It is "
-"still under development, please keep it in mind!\n"
+"Your account on {domain} has been successfully created.\n"
+"This is a demonstration version to show you the current status of the "
+"project.\n"
+"It is still under development, please keep it in mind!\n"
 "\n"
 "Here is your connection information:\n"
 "\n"
@@ -2405,232 +1551,430 @@
 "Jabber ID (JID): {jid}\n"
 "Your password has been chosen by yourself during registration.\n"
 "\n"
-"In the beginning, you have nobody to talk to. To find some contacts, you may "
-"use the users' directory:\n"
+"In the beginning, you have nobody to talk to. To find some contacts, you "
+"may use the users' directory:\n"
 "    - make yourself visible in \"Service / Directory subscription\".\n"
 "    - search for people with \"Contacts\" / Search directory\".\n"
 "\n"
 "Any feedback welcome. Thank you!\n"
 "\n"
 "Salut à Toi association\n"
-"http://www.salut-a-toi.org\n"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:346
-msgid "Libervia account created"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:372
+"https://www.salut-a-toi.org\n"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:109
+msgid "Plugin Account initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:294
+msgid "Failed to send account creation confirmation to {email}: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:313
+msgid "New Libervia account created"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:339
+msgid "Your Libervia account has been created"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:363
+msgid "xmpp_domain needs to be set in sat.conf. Using \"{default}\" meanwhile"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:379
 msgid "Manage your account"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:375
+#: sat/plugins/plugin_misc_account.py:385
 msgid "Change your password"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:376
+#: sat/plugins/plugin_misc_account.py:387
 msgid "Current profile password"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:378
+#: sat/plugins/plugin_misc_account.py:389
 msgid "New password"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:380
+#: sat/plugins/plugin_misc_account.py:391
 msgid "New password (again)"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:418 src/stdui/ui_profile_manager.py:62
+#: sat/plugins/plugin_misc_account.py:431 sat/stdui/ui_profile_manager.py:73
 msgid "The provided profile password doesn't match."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:419
+#: sat/plugins/plugin_misc_account.py:432
 msgid "Attempt failure"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:462
+#: sat/plugins/plugin_misc_account.py:477
 msgid "The values entered for the new password are not equal."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:474
+#: sat/plugins/plugin_misc_account.py:495
 msgid "Change your password?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:475
+#: sat/plugins/plugin_misc_account.py:500
 msgid ""
 "Note for advanced users: this will actually change both your SàT profile "
 "password AND your XMPP account password."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:476
+#: sat/plugins/plugin_misc_account.py:504
 msgid "Continue with changing the password?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:490
-#: src/plugins/plugin_misc_register_account.py:108
+#: sat/plugins/plugin_misc_account.py:528
+#: sat/plugins/plugin_misc_register_account.py:133
 msgid "Confirmation"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:491
+#: sat/plugins/plugin_misc_account.py:529
 msgid "Your password has been changed."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:496
+#: sat/plugins/plugin_misc_account.py:533
+#: sat/plugins/plugin_misc_account.py:606
+#: sat/plugins/plugin_misc_account.py:716 sat_frontends/primitivus/base.py:790
+#: sat_frontends/primitivus/base.py:831
+#: sat_frontends/quick_frontend/quick_profile_manager.py:133
+msgid "Error"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:535
 #, python-format
 msgid "Your password could not be changed: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:507
+#: sat/plugins/plugin_misc_account.py:548
 msgid "Delete your account?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:508
+#: sat/plugins/plugin_misc_account.py:551
 msgid ""
 "If you confirm this dialog, you will be disconnected and then your XMPP "
 "account AND your SàT profile will both be DELETED."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:509
+#: sat/plugins/plugin_misc_account.py:555
+msgid "contact list, messages history, blog posts and commentsGROUPBLOG"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:558
 msgid "contact list and messages history"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:509
-msgid "contact list, messages history, blog posts and comments"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:510
-#, python-format
-msgid ""
-"All your data stored on %(server)s, including your %(target)s will be erased."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:511
-#: src/plugins/plugin_misc_account.py:558
-#: src/plugins/plugin_misc_account.py:562
-#: src/plugins/plugin_misc_account.py:566
-msgid ""
-"There is no other confirmation dialog, this is the very last one! Are you "
-"sure?"
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:539
+#: sat/plugins/plugin_misc_account.py:561
+#, python-format
+msgid ""
+"All your data stored on %(server)s, including your %(target)s will be "
+"erased."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:567
+#: sat/plugins/plugin_misc_account.py:642
+#: sat/plugins/plugin_misc_account.py:658
+#: sat/plugins/plugin_misc_account.py:674
+msgid ""
+"There is no other confirmation dialog, this is the very last one! Are you"
+" sure?"
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:608
 #, python-format
 msgid "Your XMPP account could not be deleted: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:555
+#: sat/plugins/plugin_misc_account.py:628
 msgid "Delete all your (micro-)blog posts and comments?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:556
-msgid ""
-"If you confirm this dialog, all the (micro-)blog data you submitted will be "
-"erased."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:557
-msgid ""
-"These are the public and private posts and comments you sent to any group."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:560
+#: sat/plugins/plugin_misc_account.py:632
+msgid ""
+"If you confirm this dialog, all the (micro-)blog data you submitted will "
+"be erased."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:637
+msgid "These are the public and private posts and comments you sent to any group."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:649
 msgid "Delete all your (micro-)blog posts?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:561
-msgid ""
-"If you confirm this dialog, all the public and private posts you sent to any "
-"group will be erased."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:564
+#: sat/plugins/plugin_misc_account.py:653
+msgid ""
+"If you confirm this dialog, all the public and private posts you sent to "
+"any group will be erased."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:665
 msgid "Delete all your (micro-)blog comments?"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:565
-msgid ""
-"If you confirm this dialog, all the public and private comments you made on "
-"other people's posts will be erased."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:578
+#: sat/plugins/plugin_misc_account.py:669
+msgid ""
+"If you confirm this dialog, all the public and private comments you made "
+"on other people's posts will be erased."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:689
 msgid "blog posts and comments"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:581
+#: sat/plugins/plugin_misc_account.py:694
 msgid "blog posts"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:584
+#: sat/plugins/plugin_misc_account.py:699
 msgid "comments"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:588
+#: sat/plugins/plugin_misc_account.py:705
 msgid "Deletion confirmation"
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:590
+#: sat/plugins/plugin_misc_account.py:707
 #, python-format
 msgid "Your %(target)s have been deleted."
 msgstr ""
 
-#: src/plugins/plugin_misc_account.py:591
-msgid ""
-"Known issue of the demo version: you need to refresh the page to make the "
-"deleted posts actually disappear."
-msgstr ""
-
-#: src/plugins/plugin_misc_account.py:596
+#: sat/plugins/plugin_misc_account.py:709
+msgid ""
+"Known issue of the demo version: you need to refresh the page to make the"
+" deleted posts actually disappear."
+msgstr ""
+
+#: sat/plugins/plugin_misc_account.py:718
 #, python-format
 msgid "Your %(target)s could not be deleted: %(message)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_android.py:35
+#: sat/plugins/plugin_misc_android.py:50
 msgid "Manage Android platform specificities, like pause or notifications"
 msgstr ""
 
-#: src/plugins/plugin_misc_android.py:45
+#: sat/plugins/plugin_misc_android.py:92
+msgid "sound on notifications"
+msgstr ""
+
+#: sat/plugins/plugin_misc_android.py:94
+msgid "Normal"
+msgstr ""
+
+#: sat/plugins/plugin_misc_android.py:95 sat/plugins/plugin_misc_android.py:103
+msgid "Never"
+msgstr ""
+
+#: sat/plugins/plugin_misc_android.py:99
 msgid "Vibrate on notifications"
 msgstr ""
 
-#: src/plugins/plugin_misc_android.py:65
+#: sat/plugins/plugin_misc_android.py:101
+msgid "Always"
+msgstr ""
+
+#: sat/plugins/plugin_misc_android.py:102
+msgid "In vibrate mode"
+msgstr ""
+
+#: sat/plugins/plugin_misc_android.py:243
 msgid "plugin Android initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_debug.py:34
+#: sat/plugins/plugin_misc_android.py:362
+msgid "new message from {contact}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_app_manager.py:64
+msgid ""
+"Applications Manager\n"
+"\n"
+"Manage external applications using packagers, OS "
+"virtualization/containers or other\n"
+"software management tools.\n"
+msgstr ""
+
+#: sat/plugins/plugin_misc_app_manager.py:80
+msgid "plugin Applications Manager initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_app_manager.py:166
+msgid ""
+"No value found for \"public_url\", using \"example.org\" for now, please "
+"set the proper value in libervia.conf"
+msgstr ""
+
+#: sat/plugins/plugin_misc_app_manager.py:170
+msgid ""
+"invalid value for \"public_url\" ({value}), it musts not start with "
+"schema (\"http\"), ignoring it and using \"example.org\" instead"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:43
+msgid "Attachments handler"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:53
+msgid "plugin Attach initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:109
+msgid "Can't resize attachment of unknown type: {attachment}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:125
+msgid "Attachment {path!r} has been resized at {new_path!r}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:129
+msgid "Can't resize attachment of type {main_type!r}: {attachment}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:143
+msgid "No plugin can handle attachment with {destinee}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_attach.py:210
+msgid "certificate check disabled for upload, this is dangerous!"
+msgstr ""
+
+#: sat/plugins/plugin_misc_debug.py:35
 msgid "Set of method to make development and debugging easier"
 msgstr ""
 
-#: src/plugins/plugin_misc_debug.py:41
+#: sat/plugins/plugin_misc_debug.py:41
 msgid "Plugin Debug initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_extra_pep.py:37
+#: sat/plugins/plugin_misc_download.py:43
+msgid "File download management"
+msgstr ""
+
+#: sat/plugins/plugin_misc_download.py:50
+msgid "plugin Download initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_download.py:95
+msgid "Can't download file: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_download.py:99 sat_frontends/jp/cmd_file.py:498
+msgid "Can't download file"
+msgstr ""
+
+#: sat/plugins/plugin_misc_download.py:176
+msgid "certificate check disabled for download, this is dangerous!"
+msgstr ""
+
+#: sat/plugins/plugin_misc_download.py:187
+msgid "Can't download URI {uri}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:44
+msgid "invitation of people without XMPP account"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:59
+msgid "You have been invited by {host_name} to {app_name}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:60
+msgid ""
+"Hello {name}!\n"
+"\n"
+"You have received an invitation from {host_name} to participate to "
+"\"{app_name}\".\n"
+"To join, you just have to click on the following URL:\n"
+"{url}\n"
+"\n"
+"Please note that this URL should not be shared with anybody!\n"
+"If you want more details on {app_name}, you can check {app_url}.\n"
+"\n"
+"Welcome!\n"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:76
+msgid "plugin Invitations initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:105
+msgid "You can't use following key(s) in extra, they are reserved: {}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:198
+msgid "You can't use following key(s) in both args and extra: {}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:207
+msgid "You need to provide a main email address before using emails_extra"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:213
+msgid "You need to provide url_template if you use default message body"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:216
+msgid "creating an invitation"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:237
+msgid "You need to specify xmpp_domain in sat.conf"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:251
+msgid "Can't create XMPP account"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:254
+msgid "requested jid already exists, trying with {}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:265
+msgid "account {jid_} created"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:317
+msgid "somebody"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:345
+msgid "Not all arguments have been consumed: {}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_email_invitation.py:443
+msgid "Skipping reserved key {key}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_extra_pep.py:38
 msgid "Display messages from extra PEP services"
 msgstr ""
 
-#: src/plugins/plugin_misc_extra_pep.py:68
+#: sat/plugins/plugin_misc_extra_pep.py:69
 msgid "Plugin Extra PEP initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:39
+#: sat/plugins/plugin_misc_file.py:45
 msgid ""
 "File Tansfer Management:\n"
-"This plugin manage the various ways of sending a file, and choose the best "
-"one."
-msgstr ""
-
-#: src/plugins/plugin_misc_file.py:44
-#, python-brace-format
+"This plugin manage the various ways of sending a file, and choose the "
+"best one."
+msgstr ""
+
+#: sat/plugins/plugin_misc_file.py:52
 msgid "Please select a file to send to {peer}"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:45
+#: sat/plugins/plugin_misc_file.py:53
 msgid "File sending"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:46
-#, python-brace-format
+#: sat/plugins/plugin_misc_file.py:54
 msgid ""
 "{peer} wants to send the file \"{name}\" to you:\n"
 "{desc}\n"
@@ -2640,421 +1984,599 @@
 "Do you accept ?"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:47
+#: sat/plugins/plugin_misc_file.py:58
 msgid "Confirm file transfer"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:48
+#: sat/plugins/plugin_misc_file.py:59
 msgid "File {} already exists, are you sure you want to overwrite ?"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:49
+#: sat/plugins/plugin_misc_file.py:60
 msgid "File exists"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:194
+#: sat/plugins/plugin_misc_file.py:70
 msgid "plugin File initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:198
+#: sat/plugins/plugin_misc_file.py:82
 msgid "Action"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:198
+#: sat/plugins/plugin_misc_file.py:82
 msgid "send file"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:198
+#: sat/plugins/plugin_misc_file.py:85
 msgid "Send a file"
 msgstr ""
 
-#: src/plugins/plugin_misc_file.py:244 src/plugins/plugin_xep_0100.py:77
+#: sat/plugins/plugin_misc_file.py:121
+msgid "{name} method will be used to send the file"
+msgstr ""
+
+#: sat/plugins/plugin_misc_file.py:132
+msgid "Can't send {filepath} to {peer_jid} with {method_name}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_file.py:166 sat/plugins/plugin_xep_0100.py:101
 msgid "Invalid JID"
 msgstr ""
 
-#: src/plugins/plugin_misc_groupblog.py:51
+#: sat/plugins/plugin_misc_forums.py:36
+msgid "forums management"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:43
+msgid "forums management plugin"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:54
+msgid "forums plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:97
+msgid "forums arguments must be a list of forums"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:109
+msgid "A forum item must be a dictionary"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:114
+msgid "following forum name is not unique: {name}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:116
+msgid "creating missing forum node"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:130
+msgid "Unknown forum attribute: {key}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:136
+msgid "forum need a title or a name"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:138
+msgid "forum need uri or sub-forums"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:154
+msgid "missing <forums> element"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:160
+msgid "Unexpected element: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:168
+msgid "Following attributes are unknown: {unknown}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:176
+msgid "invalid forum, ignoring: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_forums.py:180
+msgid "unkown forums sub element: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_groupblog.py:53
 msgid "Implementation of microblogging fine permissions"
 msgstr ""
 
-#: src/plugins/plugin_misc_groupblog.py:59
+#: sat/plugins/plugin_misc_groupblog.py:61
 msgid "Group blog plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_groupblog.py:77
-msgid ""
-"Server is not able to manage item-access pubsub, we can't use group blog"
-msgstr ""
-
-#: src/plugins/plugin_misc_groupblog.py:80
+#: sat/plugins/plugin_misc_groupblog.py:80
+msgid "Server is not able to manage item-access pubsub, we can't use group blog"
+msgstr ""
+
+#: sat/plugins/plugin_misc_groupblog.py:86
 msgid "Server can manage group blogs"
 msgstr ""
 
-#: src/plugins/plugin_misc_imap.py:44
-msgid ""
-"Create an Imap server that you can use to read your \"normal\" type messages"
-msgstr ""
-
-#: src/plugins/plugin_misc_imap.py:62
-msgid "Plugin Imap Server initialization"
-msgstr ""
-
-#: src/plugins/plugin_misc_imap.py:69
-#, python-format
-msgid "Launching IMAP server on port %d"
-msgstr ""
-
-#: src/plugins/plugin_misc_imap.py:437
-msgid "IMAP server connection started"
-msgstr ""
-
-#: src/plugins/plugin_misc_imap.py:440
-#, python-format
-msgid "IMAP server connection lost (reason: %s)"
-msgstr ""
-
-#: src/plugins/plugin_misc_ip.py:52
+#: sat/plugins/plugin_misc_identity.py:49
+msgid "Identity manager"
+msgstr ""
+
+#: sat/plugins/plugin_misc_identity.py:58
+msgid "Plugin Identity initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_identity.py:293
+#: sat/plugins/plugin_misc_identity.py:365
+msgid "No callback registered for {metadata_name}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_identity.py:316
+msgid "Error while trying to get {metadata_name} with {callback}: {e}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_identity.py:376
+msgid "Error while trying to set {metadata_name} with {callback}: {e}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_identity.py:691
+msgid "Can't set metadata {metadata_name!r}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_ip.py:57
 msgid "This plugin help to discover our external IP address."
 msgstr ""
 
-#: src/plugins/plugin_misc_ip.py:57
+#: sat/plugins/plugin_misc_ip.py:64
 msgid "Allow external get IP"
 msgstr ""
 
-#: src/plugins/plugin_misc_ip.py:60
+#: sat/plugins/plugin_misc_ip.py:67
 msgid "Confirm external site request"
 msgstr ""
 
-#: src/plugins/plugin_misc_ip.py:61
-#, python-brace-format
+#: sat/plugins/plugin_misc_ip.py:68
 msgid ""
 "To facilitate data transfer, we need to contact a website.\n"
 "A request will be done on {page}\n"
 "That means that administrators of {domain} can know that you use "
 "\"{app_name}\" and your IP Address.\n"
 "\n"
-"IP address is an identifier to locate you on Internet (similar to a phone "
-"number).\n"
+"IP address is an identifier to locate you on Internet (similar to a phone"
+" number).\n"
 "\n"
 "Do you agree to do this request ?\n"
 msgstr ""
 
-#: src/plugins/plugin_misc_ip.py:90
+#: sat/plugins/plugin_misc_ip.py:100
 msgid "plugin IP discovery initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_maildir.py:42
-msgid "Intercept \"normal\" type messages, and put them in a Maildir type box"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:46
-msgid "Mail Server"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:47
-msgid "Block \"normal\" messages propagation"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:71
-msgid "Plugin Maildir initialization"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:141
-msgid "Trying to remove an mailboxUser not referenced"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:142
-#: src/plugins/plugin_misc_maildir.py:161
-#: src/plugins/plugin_misc_maildir.py:300
-#: src/plugins/plugin_misc_maildir.py:304
-#: src/plugins/plugin_misc_maildir.py:308
-msgid "INTERNAL ERROR: "
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:160
-msgid "Boxname doesn't exist in internal data"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:299
-msgid "Trying to remove an observer for an inexistant mailbox"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:303
-msgid "Trying to remove an inexistant observer, no observer for this signal"
-msgstr ""
-
-#: src/plugins/plugin_misc_maildir.py:307
-msgid "Trying to remove an inexistant observer"
-msgstr ""
-
-#: src/plugins/plugin_misc_nat-port.py:42
+#: sat/plugins/plugin_misc_lists.py:39
+msgid "Pubsub Lists"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:47
+msgid "Pubsub lists management plugin"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:52
+msgid "TODO List"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:63 sat/plugins/plugin_misc_lists.py:113
+#: sat/plugins/plugin_misc_lists.py:156
+msgid "status"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:67
+msgid "to do"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:71
+msgid "in progress"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:75
+msgid "done"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:83 sat/plugins/plugin_misc_lists.py:180
+msgid "priority"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:87 sat/plugins/plugin_misc_lists.py:184
+msgid "major"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:91 sat/plugins/plugin_misc_lists.py:188
+msgid "normal"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:95 sat/plugins/plugin_misc_lists.py:192
+msgid "minor"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:106
+msgid "Grocery List"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:109 sat_frontends/jp/cmd_info.py:69
+#: sat_frontends/jp/cmd_info.py:111
+msgid "name"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:110
+msgid "quantity"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:117
+msgid "to buy"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:121
+msgid "bought"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:130
+msgid "Tickets"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:140 sat_frontends/jp/cmd_info.py:69
+msgid "type"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:144
+msgid "bug"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:148
+msgid "feature request"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:160
+msgid "queued"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:164
+msgid "started"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:168
+msgid "review"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:172
+msgid "closed"
+msgstr ""
+
+#: sat/plugins/plugin_misc_lists.py:208
+msgid "Pubsub lists plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:35
+msgid "Merge requests management"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:42
+msgid "Merge requests management plugin"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:69
+msgid "Merge requests plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:121
+msgid "a handler with name {name} already exists!"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:134
+msgid ""
+"merge requests of type {type} are already handled by {old_handler}, "
+"ignoring {new_handler}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:241
+msgid "repository must be specified"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:244
+msgid "{field} is set by backend, you must not set it in frontend"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:253
+msgid "{name} handler will be used"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:256
+msgid "repository {path} can't be handled by any installed handler"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:259
+msgid "no handler for this repository has been found"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:265
+msgid "No handler of this name found"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:269
+msgid "export data is empty, do you have any change to send?"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:312
+msgid "No handler can handle data type \"{type}\""
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:348
+msgid "No handler found to import {data_type}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_merge_requests.py:350
+msgid "Importing patch [{item_id}] using {name} handler"
+msgstr ""
+
+#: sat/plugins/plugin_misc_nat_port.py:45
 msgid "Automatic NAT port mapping using UPnP"
 msgstr ""
 
-#: src/plugins/plugin_misc_nat-port.py:57
+#: sat/plugins/plugin_misc_nat_port.py:62
 msgid "plugin NAT Port initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_quiz.py:41
+#: sat/plugins/plugin_misc_nat_port.py:177
+msgid "addportmapping error: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_nat_port.py:215
+msgid "error while trying to map ports: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_quiz.py:42
 msgid "Implementation of Quiz game"
 msgstr ""
 
-#: src/plugins/plugin_misc_quiz.py:53
+#: sat/plugins/plugin_misc_quiz.py:55
 msgid "Plugin Quiz initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_quiz.py:253
-msgid ""
-"Bienvenue dans cette partie rapide de quizz, le premier à atteindre le score "
-"de 9 remporte le jeu\n"
+#: sat/plugins/plugin_misc_quiz.py:345
+msgid ""
+"Bienvenue dans cette partie rapide de quizz, le premier à atteindre le "
+"score de 9 remporte le jeu\n"
 "\n"
 "Attention, tu es prêt ?"
 msgstr ""
 
-#: src/plugins/plugin_misc_quiz.py:282 src/plugins/plugin_misc_tarot.py:507
+#: sat/plugins/plugin_misc_quiz.py:380 sat/plugins/plugin_misc_tarot.py:664
 #, python-format
 msgid "Player %(player)s is ready to start [status: %(status)s]"
 msgstr ""
 
-#: src/plugins/plugin_misc_quiz.py:330 src/plugins/plugin_misc_radiocol.py:252
+#: sat/plugins/plugin_misc_quiz.py:456 sat/plugins/plugin_misc_radiocol.py:353
 #, python-format
 msgid "Unmanaged game element: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:53
+#: sat/plugins/plugin_misc_radiocol.py:57
 msgid "Implementation of radio collective"
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:71
+#: sat/plugins/plugin_misc_radiocol.py:76
 msgid "Radio collective initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:127
+#: sat/plugins/plugin_misc_radiocol.py:180
 msgid ""
 "The uploaded file has been rejected, only Ogg Vorbis and MP3 songs are "
 "accepted."
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:146
+#: sat/plugins/plugin_misc_radiocol.py:210
 msgid "No more participants in the radiocol: cleaning data"
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:182
+#: sat/plugins/plugin_misc_radiocol.py:249
 msgid "INTERNAL ERROR: can't find full path of the song to delete"
 msgstr ""
 
-#: src/plugins/plugin_misc_radiocol.py:189
+#: sat/plugins/plugin_misc_radiocol.py:258
 #, python-format
 msgid "INTERNAL ERROR: can't find %s on the file system"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:42
+#: sat/plugins/plugin_misc_register_account.py:41
 msgid "Register XMPP account"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:49
+#: sat/plugins/plugin_misc_register_account.py:49
 msgid "Plugin Register Account initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:67
+#: sat/plugins/plugin_misc_register_account.py:76
 msgid "Missing values"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:68
+#: sat/plugins/plugin_misc_register_account.py:78
 msgid "No user JID or password given: can't register new account."
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:75
-#, python-format
-msgid ""
-"Do you want to register a new XMPP account [%(user)s] on server %(server)s ?"
-msgstr ""
-
-#: src/plugins/plugin_misc_register_account.py:109
+#: sat/plugins/plugin_misc_register_account.py:87
+msgid "Register new account"
+msgstr ""
+
+#: sat/plugins/plugin_misc_register_account.py:92
+msgid "Do you want to register a new XMPP account {jid}?"
+msgstr ""
+
+#: sat/plugins/plugin_misc_register_account.py:134
 msgid "Registration successful."
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:113
+#: sat/plugins/plugin_misc_register_account.py:138
 msgid "Failure"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:114
+#: sat/plugins/plugin_misc_register_account.py:139
 #, python-format
 msgid "Registration failed: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_register_account.py:117
+#: sat/plugins/plugin_misc_register_account.py:143
 msgid "Username already exists, please choose an other one."
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:47
+#: sat/plugins/plugin_misc_room_game.py:49
 msgid "Base class for MUC games"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:212
+#: sat/plugins/plugin_misc_room_game.py:221
 #, python-format
 msgid "%(user)s not allowed to join the game %(game)s in %(room)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:348
+#: sat/plugins/plugin_misc_room_game.py:380
 #, python-format
 msgid "%(user)s not allowed to invite for the game %(game)s in %(room)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:394
-#, python-format
-msgid ""
-"Still waiting for %(users)s before starting the game %(game)s in %(room)s"
-msgstr ""
-
-#: src/plugins/plugin_misc_room_game.py:423
+#: sat/plugins/plugin_misc_room_game.py:433
+#, python-format
+msgid "Still waiting for %(users)s before starting the game %(game)s in %(room)s"
+msgstr ""
+
+#: sat/plugins/plugin_misc_room_game.py:472
 #, python-format
 msgid "Preparing room for %s game"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:426
+#: sat/plugins/plugin_misc_room_game.py:475
 msgid "Unknown profile"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:521
+#: sat/plugins/plugin_misc_room_game.py:583
 #, python-format
 msgid "%(game)s game already created in room %(room)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:524
+#: sat/plugins/plugin_misc_room_game.py:589
 #, python-format
 msgid "%(game)s game in room %(room)s can only be created by %(user)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:542
+#: sat/plugins/plugin_misc_room_game.py:610
 #, python-format
 msgid "Creating %(game)s game in room %(room)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:545
-#: src/plugins/plugin_misc_room_game.py:574
-#: src/plugins/plugin_misc_tarot.py:438
+#: sat/plugins/plugin_misc_room_game.py:615
+#: sat/plugins/plugin_misc_room_game.py:646
+#: sat/plugins/plugin_misc_tarot.py:581
 #, python-format
 msgid "profile %s is unknown"
 msgstr ""
 
-#: src/plugins/plugin_misc_room_game.py:589
+#: sat/plugins/plugin_misc_room_game.py:661
 #, python-format
 msgid "new round for %s game"
 msgstr ""
 
-#: src/plugins/plugin_misc_smtp.py:45
-msgid ""
-"Create a SMTP server that you can use to send your \"normal\" type messages"
-msgstr ""
-
-#: src/plugins/plugin_misc_smtp.py:62
-msgid "Plugin SMTP Server initialization"
-msgstr ""
-
-#: src/plugins/plugin_misc_smtp.py:69
-#, python-format
-msgid "Launching SMTP server on port %d"
-msgstr ""
-
-#: src/plugins/plugin_misc_smtp.py:95
-#, python-format
-msgid "Can't send message: %s"
-msgstr ""
-
-#: src/plugins/plugin_misc_smtp.py:200
-msgid "SMTP server connection started"
-msgstr ""
-
-#: src/plugins/plugin_misc_smtp.py:204
-#, python-format
-msgid "SMTP server connection lost (reason: %s)"
-msgstr ""
-
-#: src/plugins/plugin_misc_static_blog.py:41
+#: sat/plugins/plugin_misc_static_blog.py:44
 msgid "Plugin for static blogs"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:62
+#: sat/plugins/plugin_misc_static_blog.py:66
 msgid "Page title"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:64
+#: sat/plugins/plugin_misc_static_blog.py:68
 msgid "Banner URL"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:66
+#: sat/plugins/plugin_misc_static_blog.py:70
+msgid "Background image URL"
+msgstr ""
+
+#: sat/plugins/plugin_misc_static_blog.py:72
 msgid "Keywords"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:68
+#: sat/plugins/plugin_misc_static_blog.py:74
 msgid "Description"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:91 src/plugins/plugin_sec_otr.py:290
-#: src/plugins/plugin_sec_otr.py:316 src/plugins/plugin_sec_otr.py:339
-#: src/plugins/plugin_sec_otr.py:418
+#: sat/plugins/plugin_misc_static_blog.py:97 sat/plugins/plugin_sec_otr.py:508
+#: sat/plugins/plugin_sec_otr.py:542 sat/plugins/plugin_sec_otr.py:568
+#: sat/plugins/plugin_sec_otr.py:592
 msgid "jid key is not present !"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:96
+#: sat/plugins/plugin_misc_static_blog.py:102
 msgid "Not available"
 msgstr ""
 
-#: src/plugins/plugin_misc_static_blog.py:97
+#: sat/plugins/plugin_misc_static_blog.py:104
 msgid "Retrieving a blog from an external domain is not implemented yet."
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:46
+#: sat/plugins/plugin_misc_tarot.py:47
 msgid "Implementation of Tarot card game"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:58
+#: sat/plugins/plugin_misc_tarot.py:60
 msgid "Plugin Tarot initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:64
+#: sat/plugins/plugin_misc_tarot.py:78
 msgid "Passe"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:64
+#: sat/plugins/plugin_misc_tarot.py:79
 msgid "Petite"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:64
+#: sat/plugins/plugin_misc_tarot.py:80
 msgid "Garde"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:64
+#: sat/plugins/plugin_misc_tarot.py:81
 msgid "Garde Sans"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:64
+#: sat/plugins/plugin_misc_tarot.py:82
 msgid "Garde Contre"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:107
+#: sat/plugins/plugin_misc_tarot.py:171
 msgid "contrat selection"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:120
+#: sat/plugins/plugin_misc_tarot.py:189
 msgid "scores"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:201 src/plugins/plugin_misc_tarot.py:232
+#: sat/plugins/plugin_misc_tarot.py:273 sat/plugins/plugin_misc_tarot.py:313
 #, python-format
 msgid ""
 "Player %(excuse_owner)s give %(card_waited)s to %(player_waiting)s for "
 "Excuse compensation"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:237
+#: sat/plugins/plugin_misc_tarot.py:327
 #, python-format
 msgid ""
 "%(excuse_owner)s keep the Excuse but has not card to give, %(winner)s is "
 "waiting for one"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:247 src/plugins/plugin_misc_tarot.py:319
+#: sat/plugins/plugin_misc_tarot.py:338
+#: sat_frontends/primitivus/game_tarot.py:309
+msgid "Draw game"
+msgstr ""
+
+#: sat/plugins/plugin_misc_tarot.py:341 sat/plugins/plugin_misc_tarot.py:436
 #, python-format
 msgid ""
 "\n"
@@ -3064,207 +2586,236 @@
 "total score ==> %(total_score)i"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:297
+#: sat/plugins/plugin_misc_tarot.py:397
 msgid "INTERNAL ERROR: contrat not managed (mispelled ?)"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:316
+#: sat/plugins/plugin_misc_tarot.py:422
 #, python-format
 msgid ""
 "The attacker (%(attaquant)s) makes %(points)i and needs to make "
-"%(point_limit)i (%(nb_bouts)s oulder%(plural)s%(separator)s%(bouts)s): (s)he "
-"%(victory)s"
-msgstr ""
-
-#: src/plugins/plugin_misc_tarot.py:377
+"%(point_limit)i (%(nb_bouts)s oulder%(plural)s%(separator)s%(bouts)s): "
+"(s)he %(victory)s"
+msgstr ""
+
+#: sat/plugins/plugin_misc_tarot.py:507
 msgid "Internal error: unmanaged game stage"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:396 src/plugins/plugin_misc_tarot.py:419
+#: sat/plugins/plugin_misc_tarot.py:530 sat/plugins/plugin_misc_tarot.py:562
 msgid "session id doesn't exist, session has probably expired"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:405
+#: sat/plugins/plugin_misc_tarot.py:540
 #, python-format
 msgid "contrat [%(contrat)s] choosed by %(profile)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:440
+#: sat/plugins/plugin_misc_tarot.py:584
 #, python-format
 msgid "Cards played by %(profile)s: [%(cards)s]"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:542
+#: sat/plugins/plugin_misc_tarot.py:709
 msgid "Everybody is passing, round ended"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:549
+#: sat/plugins/plugin_misc_tarot.py:723
 #, python-format
 msgid "%(player)s win the bid with %(contrat)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:570
+#: sat/plugins/plugin_misc_tarot.py:751
 msgid "tarot: chien received"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:621
+#: sat/plugins/plugin_misc_tarot.py:828
 #, python-format
 msgid "The winner of this trick is %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:667
+#: sat/plugins/plugin_misc_tarot.py:896
 #, python-format
 msgid "Unmanaged error type: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_tarot.py:669
+#: sat/plugins/plugin_misc_tarot.py:898
 #, python-format
 msgid "Unmanaged card game element: %s"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:38
+#: sat/plugins/plugin_misc_text_commands.py:40
 msgid "IRC like text commands"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:57
-msgid ""
-"Type '/help' to get a list of the available commands. If you didn't want to "
-"use a command, please start your message with '//' to escape the slash."
-msgstr ""
-
-#: src/plugins/plugin_misc_text_commands.py:60
+#: sat/plugins/plugin_misc_text_commands.py:60
+msgid ""
+"Type '/help' to get a list of the available commands. If you didn't want "
+"to use a command, please start your message with '//' to escape the "
+"slash."
+msgstr ""
+
+#: sat/plugins/plugin_misc_text_commands.py:66
 msgid "Text commands initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:143
+#: sat/plugins/plugin_misc_text_commands.py:162
 #, python-format
 msgid "Skipping not callable [%s] attribute"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:147
+#: sat/plugins/plugin_misc_text_commands.py:166
 msgid "Skipping cmd_ method"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:153
-#, python-brace-format
+#: sat/plugins/plugin_misc_text_commands.py:173
 msgid "Conflict for command [{old_name}], renaming it to [{new_name}]"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:157
+#: sat/plugins/plugin_misc_text_commands.py:180
 #, python-format
 msgid "Registered text command [%s]"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:236
+#: sat/plugins/plugin_misc_text_commands.py:244
+#, python-format
+msgid "Invalid command /%s. "
+msgstr ""
+
+#: sat/plugins/plugin_misc_text_commands.py:277
 #, python-format
 msgid "Unknown command /%s. "
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:242
+#: sat/plugins/plugin_misc_text_commands.py:286
 msgid "group discussions"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:242
+#: sat/plugins/plugin_misc_text_commands.py:288
 msgid "one to one discussions"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:243
-#, python-brace-format
+#: sat/plugins/plugin_misc_text_commands.py:290
 msgid "/{command} command only applies in {context}."
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:322
+#: sat/plugins/plugin_misc_text_commands.py:374
 msgid "Invalid jid, can't whois"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:328
+#: sat/plugins/plugin_misc_text_commands.py:380
 #, python-format
 msgid "whois for %(jid)s"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:379
+#: sat/plugins/plugin_misc_text_commands.py:436
 msgid "Invalid command name [{}]\n"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:397
+#: sat/plugins/plugin_misc_text_commands.py:457
 #, python-format
 msgid ""
 "Text commands available:\n"
 "%s"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:402
-#, python-brace-format
+#: sat/plugins/plugin_misc_text_commands.py:462
 msgid ""
 "/{name}: {short_help}\n"
 "{syntax}{args_help}"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_commands.py:405
-msgid " "
-msgstr ""
-
-#: src/plugins/plugin_misc_text_syntaxes.py:37 src/test/constants.py:44
+#: sat/plugins/plugin_misc_text_commands.py:465
+msgid " syntax: {}\n"
+msgstr ""
+
+#: sat/plugins/plugin_misc_text_syntaxes.py:43 sat/test/constants.py:56
 msgid "Composition"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_syntaxes.py:63
+#: sat/plugins/plugin_misc_text_syntaxes.py:142
 msgid "Management of various text syntaxes (XHTML-IM, Markdown, etc)"
 msgstr ""
 
-#: src/plugins/plugin_misc_text_syntaxes.py:102
+#: sat/plugins/plugin_misc_text_syntaxes.py:184
 msgid "Text syntaxes plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_upload.py:38
+#: sat/plugins/plugin_misc_upload.py:41
 msgid "File upload management"
 msgstr ""
 
-#: src/plugins/plugin_misc_upload.py:42
+#: sat/plugins/plugin_misc_upload.py:45
 msgid "Please select a file to upload"
 msgstr ""
 
-#: src/plugins/plugin_misc_upload.py:43
+#: sat/plugins/plugin_misc_upload.py:46
 msgid "File upload"
 msgstr ""
 
-#: src/plugins/plugin_misc_upload.py:51
+#: sat/plugins/plugin_misc_upload.py:53
 msgid "plugin Upload initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_watched.py:36
+#: sat/plugins/plugin_misc_upload.py:92
+msgid "Can't upload file: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_misc_upload.py:96 sat_frontends/jp/cmd_file.py:586
+msgid "Can't upload file"
+msgstr ""
+
+#: sat/plugins/plugin_misc_uri_finder.py:32
+msgid "URI finder"
+msgstr ""
+
+#: sat/plugins/plugin_misc_uri_finder.py:39
+msgid ""
+"    Plugin to find URIs in well know location.\n"
+"    This allows to retrieve settings to work with a project (e.g. pubsub "
+"node used for merge-requests).\n"
+"    "
+msgstr ""
+
+#: sat/plugins/plugin_misc_uri_finder.py:52
+msgid "URI finder plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_misc_uri_finder.py:87
+msgid "Ignoring already found uri for key \"{key}\""
+msgstr ""
+
+#: sat/plugins/plugin_misc_watched.py:37
 msgid "Watch for entities presence, and send notification accordingly"
 msgstr ""
 
-#: src/plugins/plugin_misc_watched.py:42
-#, python-brace-format
+#: sat/plugins/plugin_misc_watched.py:45
 msgid "Watched entity {entity} is connected"
 msgstr ""
 
-#: src/plugins/plugin_misc_watched.py:61
+#: sat/plugins/plugin_misc_watched.py:62
 msgid "Watched initialisation"
 msgstr ""
 
-#: src/plugins/plugin_misc_welcome.py:33
-msgid ""
-"Plugin which manage welcome message and things to to on first connection."
-msgstr ""
-
-#: src/plugins/plugin_misc_welcome.py:39
+#: sat/plugins/plugin_misc_welcome.py:34
+msgid "Plugin which manage welcome message and things to to on first connection."
+msgstr ""
+
+#: sat/plugins/plugin_misc_welcome.py:42
 msgid "Display welcome message"
 msgstr ""
 
-#: src/plugins/plugin_misc_welcome.py:40
+#: sat/plugins/plugin_misc_welcome.py:43
 msgid "Welcome to Libervia/Salut à Toi"
 msgstr ""
 
-#: src/plugins/plugin_misc_welcome.py:43
+#: sat/plugins/plugin_misc_welcome.py:46
 msgid ""
 "Welcome to a free (as in freedom) network!\n"
 "\n"
-"If you have any trouble, or you want to help us for the bug hunting, you can "
-"contact us in real time chat by using the “Help / Official chat room”  "
-"menu.\n"
+"If you have any trouble, or you want to help us for the bug hunting, you "
+"can contact us in real time chat by using the “Help / Official chat room”"
+"  menu.\n"
 "\n"
 "To use Libervia, you'll need to add contacts, either people you know, or "
 "people you discover by using the “Contacts / Search directory” menu.\n"
@@ -3274,138 +2825,120 @@
 "The Libervia/Salut à Toi Team\n"
 msgstr ""
 
-#: src/plugins/plugin_misc_welcome.py:69
+#: sat/plugins/plugin_misc_welcome.py:75
 msgid "plugin Welcome initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_xmllog.py:35
+#: sat/plugins/plugin_misc_xmllog.py:36
 msgid "Send raw XML logs to bridge"
 msgstr ""
 
-#: src/plugins/plugin_misc_xmllog.py:48
-msgid "INTERNAL ERROR: Unmanaged XML type"
-msgstr ""
-
-#: src/plugins/plugin_misc_xmllog.py:69
+#: sat/plugins/plugin_misc_xmllog.py:51
 msgid "Activate XML log"
 msgstr ""
 
-#: src/plugins/plugin_misc_xmllog.py:72
+#: sat/plugins/plugin_misc_xmllog.py:55
 msgid "Plugin XML Log initialization"
 msgstr ""
 
-#: src/plugins/plugin_misc_xmllog.py:83
+#: sat/plugins/plugin_misc_xmllog.py:69
 msgid "XML log activated"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:47
+#: sat/plugins/plugin_misc_xmllog.py:81
+msgid "INTERNAL ERROR: Unmanaged XML type"
+msgstr ""
+
+#: sat/plugins/plugin_sec_aesgcm.py:48
+msgid ""
+"    Implementation of AES-GCM scheme, a way to encrypt files (not "
+"official XMPP standard).\n"
+"    See https://xmpp.org/extensions/inbox/omemo-media-sharing.html for "
+"details\n"
+"    "
+msgstr ""
+
+#: sat/plugins/plugin_sec_aesgcm.py:63
+msgid "AESGCM plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:50
 msgid "Implementation of OTR"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:52
+#: sat/plugins/plugin_sec_otr.py:55
 msgid "OTR"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:53
-msgid ""
-"To authenticate your correspondent, you need to give your below fingerprint "
-"*BY AN EXTERNAL CANAL* (i.e. not in this chat), and check that the one he "
-"gives you is the same as below. If there is a mismatch, there can be a spy "
-"between you!"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:54
-msgid ""
-"You private key is used to encrypt messages for your correspondent, nobody "
-"except you must know it, if you are in doubt, you should drop it!\n"
+#: sat/plugins/plugin_sec_otr.py:56
+msgid ""
+"To authenticate your correspondent, you need to give your below "
+"fingerprint *BY AN EXTERNAL CANAL* (i.e. not in this chat), and check "
+"that the one he gives you is the same as below. If there is a mismatch, "
+"there can be a spy between you!"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:61
+msgid ""
+"You private key is used to encrypt messages for your correspondent, "
+"nobody except you must know it, if you are in doubt, you should drop it!"
+"\n"
 "\n"
 "Are you sure you want to drop your private key?"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:56
+#: sat/plugins/plugin_sec_otr.py:67
 msgid "Some of advanced features are disabled !"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:120
+#: sat/plugins/plugin_sec_otr.py:169
 #, python-format
 msgid "/!\\ conversation with %(other_jid)s is now UNENCRYPTED"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:127
+#: sat/plugins/plugin_sec_otr.py:182
 msgid "trusted"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:127
+#: sat/plugins/plugin_sec_otr.py:182
 msgid "untrusted"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:130
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:185
 msgid "{trusted} OTR conversation with {other_jid} REFRESHED"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:134
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:189
 msgid ""
 "{trusted} encrypted OTR conversation started with {other_jid}\n"
 "{extra_info}"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:140
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:201
 msgid "OTR conversation with {other_jid} is FINISHED"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:143
+#: sat/plugins/plugin_sec_otr.py:209
 msgid "Unknown OTR state"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:178
+#: sat/plugins/plugin_sec_otr.py:249
 msgid "Save is called but privkey is None !"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:230
+#: sat/plugins/plugin_sec_otr.py:308
 msgid "OTR plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:241
-msgid "Start/Refresh"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:241
-msgid "Start or refresh an OTR session"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:242
-msgid "End session"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:242
-msgid "Finish an OTR session"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:243
-msgid "Authenticate"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:243
-msgid "Authenticate user/see your fingerprint"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:244
-msgid "Drop private key"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:355
+#: sat/plugins/plugin_sec_otr.py:418
 msgid "You have no private key yet, start an OTR conversation to have one"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:358
+#: sat/plugins/plugin_sec_otr.py:424
 msgid "No private key"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:368
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:436
 msgid ""
 "Your fingerprint is:\n"
 "{fingerprint}\n"
@@ -3413,1530 +2946,5739 @@
 "Start an OTR conversation to have your correspondent one."
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:371
+#: sat/plugins/plugin_sec_otr.py:442 sat/plugins/plugin_xep_0384.py:687
 msgid "Fingerprint"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:380
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:453
 msgid "Your correspondent {correspondent} is now TRUSTED"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:384
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:459
 msgid "Your correspondent {correspondent} is now UNTRUSTED"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:395
-#, python-format
-msgid "Authentication (%s)"
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:398
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:477
+msgid "Authentication ({entity_jid})"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:483
 msgid ""
 "Your own fingerprint is:\n"
 "{fingerprint}"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:399
-#, python-brace-format
+#: sat/plugins/plugin_sec_otr.py:486
 msgid ""
 "Your correspondent fingerprint should be:\n"
 "{fingerprint}"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:402
+#: sat/plugins/plugin_sec_otr.py:492
 msgid "Is your correspondent fingerprint the same as here ?"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:403
+#: sat/plugins/plugin_sec_otr.py:494
 msgid "yes"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:403
+#: sat/plugins/plugin_sec_otr.py:494
 msgid "no"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:423
+#: sat/plugins/plugin_sec_otr.py:520
+msgid ""
+"Can't start an OTR session, there is already an encrypted session with "
+"{name}"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:598
 msgid "You don't have a private key yet !"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:432
+#: sat/plugins/plugin_sec_otr.py:611
 msgid "Your private key has been dropped"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:437
+#: sat/plugins/plugin_sec_otr.py:620
 msgid "Confirm private key drop"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:454
+#: sat/plugins/plugin_sec_otr.py:649
 msgid "WARNING: received unencrypted data in a supposedly encrypted context"
 msgstr ""
 
-#: src/plugins/plugin_sec_otr.py:531
-msgid ""
-"Your message was not sent because your correspondent closed the encrypted "
-"conversation on his/her side. Either close your own side, or refresh the "
-"session."
-msgstr ""
-
-#: src/plugins/plugin_sec_otr.py:533
+#: sat/plugins/plugin_sec_otr.py:656
+msgid "WARNING: received OTR encrypted data in an unencrypted context"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:662
+msgid "WARNING: received OTR error message: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:668
+msgid "Error while trying de decrypt OTR message: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:780
+msgid ""
+"Your message was not sent because your correspondent closed the encrypted"
+" conversation on his/her side. Either close your own side, or refresh the"
+" session."
+msgstr ""
+
+#: sat/plugins/plugin_sec_otr.py:785
 msgid "Message discarded because closed encryption channel"
 msgstr ""
 
-#: src/plugins/plugin_syntax_wiki_dotclear.py:39
+#: sat/plugins/plugin_syntax_wiki_dotclear.py:40
 msgid "Implementation of Dotclear wiki syntax"
 msgstr ""
 
-#: src/plugins/plugin_syntax_wiki_dotclear.py:635
+#: sat/plugins/plugin_syntax_wiki_dotclear.py:664
 msgid "Dotclear wiki syntax plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_tmp_directory_subscription.py:36
+#: sat/plugins/plugin_tickets_import.py:38
+msgid ""
+"Tickets import management:\n"
+"This plugin manage the different tickets importers which can register to "
+"it, and handle generic importing tasks."
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import.py:57
+msgid "plugin Tickets Import initialization"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import.py:111
+msgid "comments_uri key will be generated and must not be used by importer"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import.py:115
+msgid "{key} must be a list"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import.py:174
+msgid "mapping option must be a dictionary"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import.py:179
+msgid "keys and values of mapping must be sources and destinations ticket fields"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import_bugzilla.py:41
+msgid "Tickets importer for Bugzilla"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import_bugzilla.py:44
+msgid "import tickets from Bugzilla xml export file"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import_bugzilla.py:46
+msgid ""
+"This importer handle Bugzilla xml export file.\n"
+"\n"
+"To use it, you'll need to export tickets using XML.\n"
+"Tickets will be uploaded with the same ID as for Bugzilla, any existing "
+"ticket with this ID will be replaced.\n"
+"\n"
+"location: you must use the absolute path to your .xml file\n"
+msgstr ""
+
+#: sat/plugins/plugin_tickets_import_bugzilla.py:128
+msgid "Bugilla Import plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_tmp_directory_subscription.py:37
 msgid "Implementation of directory subscription"
 msgstr ""
 
-#: src/plugins/plugin_tmp_directory_subscription.py:47
+#: sat/plugins/plugin_tmp_directory_subscription.py:47
 msgid "Directory subscription plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_tmp_directory_subscription.py:49
-#: src/plugins/plugin_xep_0050.py:222 src/plugins/plugin_xep_0100.py:66
+#: sat/plugins/plugin_tmp_directory_subscription.py:50
+#: sat/plugins/plugin_xep_0050.py:315 sat/plugins/plugin_xep_0100.py:84
 msgid "Service"
 msgstr ""
 
-#: src/plugins/plugin_tmp_directory_subscription.py:49
+#: sat/plugins/plugin_tmp_directory_subscription.py:50
 msgid "Directory subscription"
 msgstr ""
 
-#: src/plugins/plugin_tmp_directory_subscription.py:49
+#: sat/plugins/plugin_tmp_directory_subscription.py:53
 msgid "User directory subscription"
 msgstr ""
 
-#: src/plugins/plugin_xep_0020.py:45
+#: sat/plugins/plugin_xep_0020.py:46
 msgid "Implementation of Feature Negotiation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0020.py:52
+#: sat/plugins/plugin_xep_0020.py:52
 msgid "Plugin XEP_0020 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0020.py:103
+#: sat/plugins/plugin_xep_0020.py:104
 msgid "More than one value choosed for {}, keeping the first one"
 msgstr ""
 
-#: src/plugins/plugin_xep_0033.py:64
+#: sat/plugins/plugin_xep_0033.py:66
 msgid "Implementation of Extended Stanza Addressing"
 msgstr ""
 
-#: src/plugins/plugin_xep_0033.py:73
+#: sat/plugins/plugin_xep_0033.py:76
 msgid "Extended Stanza Addressing plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0033.py:89
+#: sat/plugins/plugin_xep_0033.py:97
 msgid "XEP-0033 is being used but the server doesn't support it!"
 msgstr ""
 
-#: src/plugins/plugin_xep_0033.py:92
+#: sat/plugins/plugin_xep_0033.py:103
 msgid " or "
 msgstr ""
 
-#: src/plugins/plugin_xep_0033.py:93
-#, python-format
-msgid ""
-"Stanzas using XEP-0033 should be addressed to %(expected)s, not %(current)s!"
-msgstr ""
-
-#: src/plugins/plugin_xep_0033.py:94
-msgid ""
-"TODO: addressing has been fixed by the backend... fix it in the frontend!"
-msgstr ""
-
-#: src/plugins/plugin_xep_0045.py:52
+#: sat/plugins/plugin_xep_0033.py:105
+#, python-format
+msgid ""
+"Stanzas using XEP-0033 should be addressed to %(expected)s, not "
+"%(current)s!"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0033.py:111
+msgid "TODO: addressing has been fixed by the backend... fix it in the frontend!"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:56
 msgid "Implementation of Multi-User Chat"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:78
+#: sat/plugins/plugin_xep_0045.py:89
 msgid "Plugin XEP_0045 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:95
+#: sat/plugins/plugin_xep_0045.py:145
 msgid "MUC"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:95
+#: sat/plugins/plugin_xep_0045.py:145
 msgid "configure"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:95
+#: sat/plugins/plugin_xep_0045.py:146
 msgid "Configure Multi-User Chat room"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:135 src/plugins/plugin_xep_0045.py:728
+#: sat/plugins/plugin_xep_0045.py:194
+msgid ""
+"Received non delayed message in a room before its initialisation: "
+"state={state}, msg={msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:216 sat/plugins/plugin_xep_0045.py:224
+#: sat/plugins/plugin_xep_0045.py:880
 msgid "This room has not been joined"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:168
+#: sat/plugins/plugin_xep_0045.py:283
 msgid "Room joining cancelled by user"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:173
+#: sat/plugins/plugin_xep_0045.py:288
 msgid "Rooms in {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:188
+#: sat/plugins/plugin_xep_0045.py:303
 msgid "room locked !"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:190
-msgid "Error while configuring the room"
-msgstr ""
-
-#: src/plugins/plugin_xep_0045.py:206
+#: sat/plugins/plugin_xep_0045.py:306
+msgid "Error while configuring the room: {failure_}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:322
 msgid "Room {} is restricted"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:207
+#: sat/plugins/plugin_xep_0045.py:323
 msgid "This room is restricted, please enter the password"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:215
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:332
 msgid "Error while joining the room {room}{suffix}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:218
+#: sat/plugins/plugin_xep_0045.py:334
 msgid "Group chat error"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:307
+#: sat/plugins/plugin_xep_0045.py:401
 msgid "room_jid key is not present !"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:340 src/plugins/plugin_xep_0045.py:342
+#: sat/plugins/plugin_xep_0045.py:406
+msgid "No configuration available for this room"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:440 sat/plugins/plugin_xep_0045.py:442
 msgid "Session ID doesn't exist, session has probably expired."
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:341
+#: sat/plugins/plugin_xep_0045.py:441
 msgid "Room configuration failed"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:347
+#: sat/plugins/plugin_xep_0045.py:447
 msgid "Room configuration succeed"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:348
+#: sat/plugins/plugin_xep_0045.py:448
 msgid "The new settings have been saved."
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:395
+#: sat/plugins/plugin_xep_0045.py:509
 msgid "No MUC service found on main server"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:424
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:538
 msgid ""
 "Invalid room identifier: {room_id}'. Please give a room short or full "
 "identifier like 'room' or 'room@{muc_service}'."
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:449
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:558
 msgid "{profile} is already in room {room_jid}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:451
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:561
 msgid "[{profile}] is joining room {room} with nick {nick}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:590
+#: sat/plugins/plugin_xep_0045.py:729
 msgid "You must provide a member's nick to kick."
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:597
+#: sat/plugins/plugin_xep_0045.py:738
 msgid "You have kicked {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:599 src/plugins/plugin_xep_0045.py:628
-msgid " for the following reason: {}"
-msgstr ""
-
-#: src/plugins/plugin_xep_0045.py:619
+#: sat/plugins/plugin_xep_0045.py:740 sat/plugins/plugin_xep_0045.py:776
+msgid " for the following reason: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:763
 msgid "You must provide a valid JID to ban, like in '/ban contact@example.net'"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:626
+#: sat/plugins/plugin_xep_0045.py:774
 msgid "You have banned {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:652
+#: sat/plugins/plugin_xep_0045.py:802
 msgid ""
 "You must provide a valid JID to affiliate, like in '/affiliate "
 "contact@example.net member'"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:658
+#: sat/plugins/plugin_xep_0045.py:808
 #, python-format
 msgid "You must provide a valid affiliation: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:665
-#, python-format
-msgid "New affiliation for %(entity)s: %(affiliation)s"
-msgstr ""
-
-#: src/plugins/plugin_xep_0045.py:711
-msgid "No known default MUC service"
-msgstr ""
-
-#: src/plugins/plugin_xep_0045.py:715
+#: sat/plugins/plugin_xep_0045.py:815
+msgid "New affiliation for {entity}: {affiliation}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:862
+msgid "No known default MUC service {unparsed}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:867
 msgid "{} is not a valid JID!"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:733
+#: sat/plugins/plugin_xep_0045.py:885
 #, python-format
 msgid "Nickname: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:735
+#: sat/plugins/plugin_xep_0045.py:887
 #, python-format
 msgid "Entity: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:737
+#: sat/plugins/plugin_xep_0045.py:889
 #, python-format
 msgid "Affiliation: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:739
+#: sat/plugins/plugin_xep_0045.py:891
 #, python-format
 msgid "Role: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:741
+#: sat/plugins/plugin_xep_0045.py:893
 #, python-format
 msgid "Status: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:743
+#: sat/plugins/plugin_xep_0045.py:895
 #, python-format
 msgid "Show: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:868
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:960
+msgid ""
+"room {room} is not in expected state: room is in state {current_state} "
+"while we were expecting {expected_state}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1093
+msgid "No message received while offline in {room_jid}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1097
+msgid "We have received {num_mess} message(s) in {room_jid} while offline."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1141
+msgid "missing nick in presence: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1217
 msgid "user {nick} has joined room {room_id}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:883
+#: sat/plugins/plugin_xep_0045.py:1234
 msgid "=> {} has joined the room"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:899
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:1253
 msgid "Room ({room}) left ({profile})"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:910
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:1267
 msgid "user {nick} left room {room_id}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:922
+#: sat/plugins/plugin_xep_0045.py:1279
 msgid "<= {} has left the room"
 msgstr ""
 
-#: src/plugins/plugin_xep_0045.py:1034
-#, python-brace-format
+#: sat/plugins/plugin_xep_0045.py:1342
+msgid "received history in unexpected state in room {room} (state: {state})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1350
+msgid "storing the unexpected message anyway, to avoid loss"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0045.py:1437
 msgid "New subject for room ({room_id}): {subject}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:60
+#: sat/plugins/plugin_xep_0047.py:62
 msgid "Implementation of In-Band Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:69
+#: sat/plugins/plugin_xep_0047.py:71
 msgid "In-Band Bytestreams plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:158
+#: sat/plugins/plugin_xep_0047.py:162
 msgid "IBB stream opening"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:168
+#: sat/plugins/plugin_xep_0047.py:171
 #, python-format
 msgid "Ignoring unexpected IBB transfer: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:172
+#: sat/plugins/plugin_xep_0047.py:176
 msgid "sended jid inconsistency (man in the middle attack attempt ?)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:201
+#: sat/plugins/plugin_xep_0047.py:206
 msgid "IBB stream closing"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:225
+#: sat/plugins/plugin_xep_0047.py:228
 msgid "Received data for an unknown session id"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:232
-#, python-brace-format
+#: sat/plugins/plugin_xep_0047.py:236
 msgid ""
 "sended jid inconsistency (man in the middle attack attempt ?)\n"
 "initial={initial}\n"
 "given={given}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:239
+#: sat/plugins/plugin_xep_0047.py:246
 msgid "Sequence error"
 msgstr ""
 
-#: src/plugins/plugin_xep_0047.py:254
+#: sat/plugins/plugin_xep_0047.py:261
 msgid "Invalid base64 data"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:44
+#: sat/plugins/plugin_xep_0048.py:45
 msgid "Implementation of bookmarks"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:57
+#: sat/plugins/plugin_xep_0048.py:58
 msgid "Bookmarks plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:61
+#: sat/plugins/plugin_xep_0048.py:63 sat_frontends/primitivus/base.py:540
+msgid "Groups"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0048.py:63
 msgid "Bookmarks"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:61
+#: sat/plugins/plugin_xep_0048.py:66
 msgid "Use and manage bookmarks"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:109
+#: sat/plugins/plugin_xep_0048.py:147
 msgid "Private XML storage not available"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:218
+#: sat/plugins/plugin_xep_0048.py:260
 msgid "No room jid selected"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:236
+#: sat/plugins/plugin_xep_0048.py:280
 msgid "Bookmarks manager"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:254
+#: sat/plugins/plugin_xep_0048.py:310 sat_frontends/jp/cmd_bookmarks.py:126
+msgid "add a bookmark"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0048.py:312
 msgid "Name"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:258
+#: sat/plugins/plugin_xep_0048.py:314 sat_frontends/jp/cmd_profile.py:175
+msgid "jid"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0048.py:316
 msgid "Nickname"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:260
+#: sat/plugins/plugin_xep_0048.py:318
 msgid "Autojoin"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:307
+#: sat/plugins/plugin_xep_0048.py:321 sat_frontends/primitivus/xmlui.py:470
+msgid "Save"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0048.py:367
 msgid "Bookmarks will be local only"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:308
+#: sat/plugins/plugin_xep_0048.py:368
 #, python-format
 msgid "Type selected for \"auto\" storage: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:431
+#: sat/plugins/plugin_xep_0048.py:500
 msgid "Bad arguments"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:438
+#: sat/plugins/plugin_xep_0048.py:509
 #, python-format
 msgid "All [%s] bookmarks are being removed"
 msgstr ""
 
-#: src/plugins/plugin_xep_0048.py:446
+#: sat/plugins/plugin_xep_0048.py:520
 msgid "Bookmark added"
 msgstr ""
 
-#: src/plugins/plugin_xep_0049.py:37
+#: sat/plugins/plugin_xep_0049.py:37
 msgid "Implementation of private XML storage"
 msgstr ""
 
-#: src/plugins/plugin_xep_0049.py:45
+#: sat/plugins/plugin_xep_0049.py:45
 msgid "Plugin XEP-0049 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:55
+#: sat/plugins/plugin_xep_0050.py:51
+#: sat_frontends/quick_frontend/constants.py:29
+msgid "Online"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:52
 msgid "Away"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:58
+#: sat/plugins/plugin_xep_0050.py:53
+#: sat_frontends/quick_frontend/constants.py:30
+msgid "Free for chat"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:54
+#: sat_frontends/quick_frontend/constants.py:32
+msgid "Do not disturb"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:55
 msgid "Left"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:68
+#: sat/plugins/plugin_xep_0050.py:56 sat_frontends/primitivus/base.py:535
+msgid "Disconnect"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:67
 msgid "Implementation of Ad-Hoc Commands"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:110
-#, python-format
-msgid "The groups [%(group)s] is unknown for profile [%(profile)s])"
-msgstr ""
-
-#: src/plugins/plugin_xep_0050.py:214
+#: sat/plugins/plugin_xep_0050.py:126
+msgid "The groups [{group}] is unknown for profile [{profile}])"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:284
 msgid "plugin XEP-0050 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:222
+#: sat/plugins/plugin_xep_0050.py:315
 msgid "Commands"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:222
+#: sat/plugins/plugin_xep_0050.py:318
 msgid "Execute ad-hoc commands"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:228
+#: sat/plugins/plugin_xep_0050.py:329
 msgid "Status"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:241
+#: sat/plugins/plugin_xep_0050.py:364
+msgid "Missing command element"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0050.py:379
 msgid "Please select a command"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:259
+#: sat/plugins/plugin_xep_0050.py:397
 #, python-format
 msgid "Invalid note type [%s], using info"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:269
+#: sat/plugins/plugin_xep_0050.py:408
 msgid "WARNING"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:270
+#: sat/plugins/plugin_xep_0050.py:409
 msgid "ERROR"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:302
+#: sat/plugins/plugin_xep_0050.py:457
 msgid "No known payload found in ad-hoc command result, aborting"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:306
+#: sat/plugins/plugin_xep_0050.py:464
 msgid "No payload found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:401
+#: sat/plugins/plugin_xep_0050.py:574
 msgid "Please enter target jid"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:415
+#: sat/plugins/plugin_xep_0050.py:588
 msgid "status selection"
 msgstr ""
 
-#: src/plugins/plugin_xep_0050.py:443
+#: sat/plugins/plugin_xep_0050.py:618
 msgid "Status updated"
 msgstr ""
 
-#: src/plugins/plugin_xep_0054.py:73
+#: sat/plugins/plugin_xep_0054.py:64
 msgid "Implementation of vcard-temp"
 msgstr ""
 
-#: src/plugins/plugin_xep_0054.py:83
+#: sat/plugins/plugin_xep_0054.py:84
 msgid "Plugin XEP_0054 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0054.py:234
+#: sat/plugins/plugin_xep_0054.py:99
+msgid "No avatar in cache for {profile}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0054.py:137
 msgid "Decoding binary"
 msgstr ""
 
-#: src/plugins/plugin_xep_0054.py:294
+#: sat/plugins/plugin_xep_0054.py:242
+msgid "vCard element not found for {entity_jid}: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0054.py:287
+msgid "Can't get vCard for {entity_jid}: {e}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0054.py:291
 msgid "VCard found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:51
+#: sat/plugins/plugin_xep_0055.py:53
 msgid "Implementation of Jabber Search"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:66
+#: sat/plugins/plugin_xep_0055.py:70
 msgid "Jabber search plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:80
+#: sat/plugins/plugin_xep_0055.py:100 sat/stdui/ui_contact_list.py:39
+#: sat/stdui/ui_contact_list.py:45 sat/stdui/ui_contact_list.py:51
+#: sat_frontends/primitivus/base.py:539
+#: sat_frontends/primitivus/contact_list.py:50
+msgid "Contacts"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0055.py:100
 msgid "Search directory"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:80
+#: sat/plugins/plugin_xep_0055.py:103
 msgid "Search user directory"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:118
+#: sat/plugins/plugin_xep_0055.py:143
 msgid "Search users"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:139
+#: sat/plugins/plugin_xep_0055.py:174
 msgid "Search for"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:141
+#: sat/plugins/plugin_xep_0055.py:181
 msgid "Simple search"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:149 src/plugins/plugin_xep_0055.py:249
+#: sat/plugins/plugin_xep_0055.py:191 sat/plugins/plugin_xep_0055.py:305
 msgid "Search"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:178
+#: sat/plugins/plugin_xep_0055.py:226
 msgid "Advanced search"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:196
+#: sat/plugins/plugin_xep_0055.py:246
 msgid "Search on"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:198
+#: sat/plugins/plugin_xep_0055.py:248
 msgid "Other service"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:205
+#: sat/plugins/plugin_xep_0055.py:256
 msgid "Refresh fields"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:208
+#: sat/plugins/plugin_xep_0055.py:260
 msgid "Displaying the search form for"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:281
+#: sat/plugins/plugin_xep_0055.py:341
 msgid "Search results"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:286
+#: sat/plugins/plugin_xep_0055.py:346
 msgid "The search gave no result"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:328 src/plugins/plugin_xep_0055.py:429
+#: sat/plugins/plugin_xep_0055.py:386 sat/plugins/plugin_xep_0055.py:493
 msgid "No query element found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:333 src/plugins/plugin_xep_0055.py:434
+#: sat/plugins/plugin_xep_0055.py:391 sat/plugins/plugin_xep_0055.py:498
 msgid "No data form found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:343
+#: sat/plugins/plugin_xep_0055.py:403
 #, python-format
 msgid "Fields request failure: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:415
+#: sat/plugins/plugin_xep_0055.py:478
 msgid "The search could not be performed"
 msgstr ""
 
-#: src/plugins/plugin_xep_0055.py:444
+#: sat/plugins/plugin_xep_0055.py:510
 #, python-format
 msgid "Search request failure: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0059.py:41
+#: sat/plugins/plugin_xep_0059.py:42
 msgid "Implementation of Result Set Management"
 msgstr ""
 
-#: src/plugins/plugin_xep_0059.py:49
+#: sat/plugins/plugin_xep_0059.py:52
 msgid "Result Set Management plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0060.py:53
+#: sat/plugins/plugin_xep_0059.py:65
+msgid "rsm_max can't be negative"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:56
 msgid "Implementation of PubSub Protocol"
 msgstr ""
 
-#: src/plugins/plugin_xep_0060.py:83
+#: sat/plugins/plugin_xep_0060.py:95
 msgid "PubSub plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0065.py:95
+#: sat/plugins/plugin_xep_0060.py:323
+msgid "Can't retrieve pubsub_service from conf, we'll use first one that we find"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:487
+msgid "Can't parse items: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:556
+msgid "Invalid item: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:572
+msgid ""
+"Can't use publish-options ({options}) on node {node}, re-publishing "
+"without them: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:905 sat/plugins/plugin_xep_0060.py:948
+msgid "Invalid result: missing <affiliations> element: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:916 sat/plugins/plugin_xep_0060.py:961
+msgid "Invalid result: bad <affiliation> element: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:1284
+msgid "Invalid result: missing <subscriptions> element: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:1289
+msgid "Invalid result: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0060.py:1299
+msgid "Invalid result: bad <subscription> element: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0065.py:90
 msgid "Implementation of SOCKS5 Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0065.py:515
+#: sat/plugins/plugin_xep_0065.py:528
 msgid "File transfer completed, closing connection"
 msgstr ""
 
-#: src/plugins/plugin_xep_0065.py:667
+#: sat/plugins/plugin_xep_0065.py:695
 #, python-format
 msgid "Socks 5 client connection lost (reason: %s)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0065.py:695
+#: sat/plugins/plugin_xep_0065.py:723
 msgid "Plugin XEP_0065 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0065.py:750
+#: sat/plugins/plugin_xep_0065.py:781
 msgid "Socks5 Stream server launched on port {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:54
+#: sat/plugins/plugin_xep_0070.py:56
 msgid "Implementation of HTTP Requests via XMPP"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:64
+#: sat/plugins/plugin_xep_0070.py:66
 msgid "Plugin XEP_0070 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:77
+#: sat/plugins/plugin_xep_0070.py:79
 msgid "XEP-0070 Verifying HTTP Requests via XMPP (iq)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:86
+#: sat/plugins/plugin_xep_0070.py:88
 msgid "XEP-0070 Verifying HTTP Requests via XMPP (message)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:97
+#: sat/plugins/plugin_xep_0070.py:98
 msgid "Auth confirmation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:98
-msgid "{} needs to validate your identity, do you agree ?"
-msgstr ""
-
-#: src/plugins/plugin_xep_0070.py:99
-msgid "Validation code : {}"
-msgstr ""
-
-#: src/plugins/plugin_xep_0070.py:100
-msgid "Please check that this code is the same as on {}"
-msgstr ""
-
-#: src/plugins/plugin_xep_0070.py:102
-msgid "Submit to authorize, cancel otherwise."
-msgstr ""
-
-#: src/plugins/plugin_xep_0070.py:131
+#: sat/plugins/plugin_xep_0070.py:99
+msgid ""
+"{auth_url} needs to validate your identity, do you agree?\n"
+"Validation code : {auth_id}\n"
+"\n"
+"Please check that this code is the same as on {auth_url}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0070.py:117
 msgid "XEP-0070 reply iq"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:136
+#: sat/plugins/plugin_xep_0070.py:122
 msgid "XEP-0070 reply message"
 msgstr ""
 
-#: src/plugins/plugin_xep_0070.py:141
+#: sat/plugins/plugin_xep_0070.py:127
 msgid "XEP-0070 reply error"
 msgstr ""
 
-#: src/plugins/plugin_xep_0071.py:51
+#: sat/plugins/plugin_xep_0071.py:55
 msgid "Implementation of XHTML-IM"
 msgstr ""
 
-#: src/plugins/plugin_xep_0071.py:79
+#: sat/plugins/plugin_xep_0071.py:94
 msgid "XHTML-IM plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0071.py:196
+#: sat/plugins/plugin_xep_0071.py:223
 msgid "Can't have XHTML and rich content at the same time"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:40
+#: sat/plugins/plugin_xep_0077.py:41
 msgid "Implementation of in-band registration"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:47
+#: sat/plugins/plugin_xep_0077.py:54
+msgid "Registration asked for {jid}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0077.py:79
+msgid "Stream started with {server}, now registering"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0077.py:85
+msgid "Registration answer: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0077.py:89
+msgid "Registration failure: {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0077.py:116
 msgid "Plugin XEP_0077 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:65
+#: sat/plugins/plugin_xep_0077.py:176
 msgid "Can't find data form"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:66
+#: sat/plugins/plugin_xep_0077.py:178
 msgid "This gateway can't be managed by SàT, sorry :("
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:91
+#: sat/plugins/plugin_xep_0077.py:202 sat/plugins/plugin_xep_0077.py:212
+#, python-format
+msgid "Registration failure: %s"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0077.py:206
 #, python-format
 msgid "registration answer: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:99
+#: sat/plugins/plugin_xep_0077.py:215
 msgid "Username already exists, please choose an other one"
 msgstr ""
 
-#: src/plugins/plugin_xep_0077.py:108
-#, python-format
-msgid "Asking registration for [%s]"
-msgstr ""
-
-#: src/plugins/plugin_xep_0085.py:53
+#: sat/plugins/plugin_xep_0077.py:229
+msgid "Asking registration for {}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0085.py:55
 msgid "Implementation of Chat State Notifications Protocol"
 msgstr ""
 
-#: src/plugins/plugin_xep_0085.py:93
+#: sat/plugins/plugin_xep_0085.py:97
 msgid "Enable chat state notifications"
 msgstr ""
 
-#: src/plugins/plugin_xep_0085.py:97
+#: sat/plugins/plugin_xep_0085.py:101
 msgid "Chat State Notifications plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0092.py:41
+#: sat/plugins/plugin_xep_0092.py:42
 msgid "Implementation of Software Version"
 msgstr ""
 
-#: src/plugins/plugin_xep_0092.py:48
+#: sat/plugins/plugin_xep_0092.py:48
 msgid "Plugin XEP_0092 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0092.py:111
+#: sat/plugins/plugin_xep_0092.py:119
+#, python-format
+msgid "Client name: %s"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0092.py:121
+#, python-format
+msgid "Client version: %s"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0092.py:123
 #, python-format
 msgid "Operating system: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0092.py:115
+#: sat/plugins/plugin_xep_0092.py:128
 msgid "Software version not available"
 msgstr ""
 
-#: src/plugins/plugin_xep_0092.py:117
+#: sat/plugins/plugin_xep_0092.py:130
 msgid "Client software version request timeout"
 msgstr ""
 
-#: src/plugins/plugin_xep_0095.py:40
+#: sat/plugins/plugin_xep_0095.py:41
 msgid "Implementation of Stream Initiation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0095.py:54
+#: sat/plugins/plugin_xep_0095.py:54
 msgid "Plugin XEP_0095 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0095.py:80
+#: sat/plugins/plugin_xep_0095.py:84
 msgid "XEP-0095 Stream initiation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0095.py:122
+#: sat/plugins/plugin_xep_0095.py:127
 msgid "sending stream initiation accept answer"
 msgstr ""
 
-#: src/plugins/plugin_xep_0095.py:159
+#: sat/plugins/plugin_xep_0095.py:168
 #, python-format
 msgid "Stream Session ID: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:45
+#: sat/plugins/plugin_xep_0096.py:48
 msgid "Implementation of SI File Transfer"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:53
+#: sat/plugins/plugin_xep_0096.py:55
+msgid "Stream Initiation"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0096.py:58
 msgid "Plugin XEP_0096 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:119
+#: sat/plugins/plugin_xep_0096.py:129
 msgid "XEP-0096 file transfer requested"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:337
+#: sat/plugins/plugin_xep_0096.py:377
 msgid "The contact {} has refused your file"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:338
+#: sat/plugins/plugin_xep_0096.py:378
 msgid "File refused"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:341
+#: sat/plugins/plugin_xep_0096.py:381
 msgid "Error during file transfer"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:342
-#, python-brace-format
+#: sat/plugins/plugin_xep_0096.py:382
 msgid ""
 "Something went wrong during the file transfer session initialisation: "
 "{reason}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:343
+#: sat/plugins/plugin_xep_0096.py:385
 msgid "File transfer error"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:351
-#, python-brace-format
+#: sat/plugins/plugin_xep_0096.py:394
 msgid "transfer {sid} successfuly finished [{profile}]"
 msgstr ""
 
-#: src/plugins/plugin_xep_0096.py:357
-#, python-brace-format
+#: sat/plugins/plugin_xep_0096.py:402
 msgid "transfer {sid} failed [{profile}]: {reason}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:36
+#: sat/plugins/plugin_xep_0100.py:37
 msgid "Implementation of Gateways protocol"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:39
-msgid ""
-"Be careful ! Gateways allow you to use an external IM (legacy IM), so you "
-"can see your contact as XMPP contacts.\n"
-"But when you do this, all your messages go throught the external legacy IM "
-"server, it is a huge privacy issue (i.e.: all your messages throught the "
-"gateway can be monitored, recorded, analysed by the external server, most of "
-"time a private company)."
-msgstr ""
-
-#: src/plugins/plugin_xep_0100.py:44
+#: sat/plugins/plugin_xep_0100.py:40
+msgid ""
+"Be careful ! Gateways allow you to use an external IM (legacy IM), so you"
+" can see your contact as XMPP contacts.\n"
+"But when you do this, all your messages go throught the external legacy "
+"IM server, it is a huge privacy issue (i.e.: all your messages throught "
+"the gateway can be monitored, recorded, analysed by the external server, "
+"most of time a private company)."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0100.py:48
 msgid "Internet Relay Chat"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:45
+#: sat/plugins/plugin_xep_0100.py:49
 msgid "XMPP"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:46
+#: sat/plugins/plugin_xep_0100.py:50
 msgid "Tencent QQ"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:47
+#: sat/plugins/plugin_xep_0100.py:51
 msgid "SIP/SIMPLE"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:48
+#: sat/plugins/plugin_xep_0100.py:52
 msgid "ICQ"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:49
+#: sat/plugins/plugin_xep_0100.py:53
 msgid "Yahoo! Messenger"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:50
+#: sat/plugins/plugin_xep_0100.py:54
 msgid "Gadu-Gadu"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:51
+#: sat/plugins/plugin_xep_0100.py:55
 msgid "AOL Instant Messenger"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:52
+#: sat/plugins/plugin_xep_0100.py:56
 msgid "Windows Live Messenger"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:59
+#: sat/plugins/plugin_xep_0100.py:62
 msgid "Gateways plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:66
+#: sat/plugins/plugin_xep_0100.py:84
 msgid "Gateways"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:66
+#: sat/plugins/plugin_xep_0100.py:87
 msgid "Find gateways"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:84
+#: sat/plugins/plugin_xep_0100.py:108
 #, python-format
 msgid "Gateways manager (%s)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:92
+#: sat/plugins/plugin_xep_0100.py:121
 #, python-format
 msgid "Failed (%s)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:105
+#: sat/plugins/plugin_xep_0100.py:134
 msgid "Use external XMPP server"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:107
+#: sat/plugins/plugin_xep_0100.py:136
 msgid "Go !"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:114
+#: sat/plugins/plugin_xep_0100.py:143
 msgid "No gateway index selected"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:128
+#: sat/plugins/plugin_xep_0100.py:158
 #, python-format
 msgid ""
 "INTERNAL ERROR: identity category should always be \"gateway\" in "
 "_getTypeString, got \"%s\""
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:132
+#: sat/plugins/plugin_xep_0100.py:166
 msgid "Unknown IM"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:136
+#: sat/plugins/plugin_xep_0100.py:170
 msgid "Registration successful, doing the rest"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:159
+#: sat/plugins/plugin_xep_0100.py:195
 msgid "Timeout"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:170
+#: sat/plugins/plugin_xep_0100.py:211
 #, python-format
 msgid "Found gateway [%(jid)s]: %(identity_name)s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:173
+#: sat/plugins/plugin_xep_0100.py:222
 #, python-format
 msgid "Skipping [%(jid)s] which is not a gateway"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:180
+#: sat/plugins/plugin_xep_0100.py:231
 msgid "No gateway found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:185
+#: sat/plugins/plugin_xep_0100.py:236
 #, python-format
 msgid "item found: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0100.py:206
+#: sat/plugins/plugin_xep_0100.py:260
 #, python-format
 msgid "find gateways (target = %(target)s, profile = %(profile)s)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:48
+#: sat/plugins/plugin_xep_0106.py:38
+msgid "(Un)escape JID to use disallowed chars in local parts"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0115.py:50
 msgid "Implementation of entity capabilities"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:56
+#: sat/plugins/plugin_xep_0115.py:58
 msgid "Plugin XEP_0115 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:73
+#: sat/plugins/plugin_xep_0115.py:73
 msgid "Caps optimisation enabled"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:76
+#: sat/plugins/plugin_xep_0115.py:76
 msgid "Caps optimisation not available"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:143
+#: sat/plugins/plugin_xep_0115.py:154
 #, python-format
 msgid "Received invalid capabilities tag: %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0115.py:153
-#, python-format
-msgid ""
-"Unknown hash method for entity capabilities: [%(hash_method)s] (entity: "
-"%(jid)s, node: %(node)s)"
-msgstr ""
-
-#: src/plugins/plugin_xep_0115.py:158
-#, python-format
+#: sat/plugins/plugin_xep_0115.py:170
+msgid ""
+"Unknown hash method for entity capabilities: [{hash_method}] (entity: "
+"{entity_jid}, node: {node})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0115.py:183
 msgid ""
 "Computed hash differ from given hash:\n"
-"given: [%(given_hash)s]\n"
-"computed: [%(computed_hash)s]\n"
-"(entity: %(jid)s, node: %(node)s)"
-msgstr ""
-
-#: src/plugins/plugin_xep_0115.py:164
-#, python-brace-format
+"given: [{given}]\n"
+"computed: [{computed}]\n"
+"(entity: {entity_jid}, node: {node})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0115.py:205
 msgid "Couldn't retrieve disco info for {jid}: {error}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:40
+#: sat/plugins/plugin_xep_0163.py:42
 msgid "Implementation of Personal Eventing Protocol"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:47
+#: sat/plugins/plugin_xep_0163.py:48
 msgid "PEP plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:114
+#: sat/plugins/plugin_xep_0163.py:131
 #, python-format
 msgid "Trying to send personal event with an unknown profile key [%s]"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:117
+#: sat/plugins/plugin_xep_0163.py:136
 msgid "Trying to send personal event for an unknown type"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:123
+#: sat/plugins/plugin_xep_0163.py:142
 msgid "No item found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:128
+#: sat/plugins/plugin_xep_0163.py:149
 msgid "Can't find mood element in mood event"
 msgstr ""
 
-#: src/plugins/plugin_xep_0163.py:132
+#: sat/plugins/plugin_xep_0163.py:153
 msgid "No mood found"
 msgstr ""
 
-#: src/plugins/plugin_xep_0166.py:48
-#, python-brace-format
+#: sat/plugins/plugin_xep_0166.py:50
 msgid "{entity} want to start a jingle session with you, do you accept ?"
 msgstr ""
 
-#: src/plugins/plugin_xep_0166.py:57
+#: sat/plugins/plugin_xep_0166.py:60
 msgid "Implementation of Jingle"
 msgstr ""
 
-#: src/plugins/plugin_xep_0166.py:91
+#: sat/plugins/plugin_xep_0166.py:98
 msgid "plugin Jingle initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0166.py:429
+#: sat/plugins/plugin_xep_0166.py:156
+msgid "Error while terminating session: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0166.py:395
+msgid "You can't do a jingle session with yourself"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0166.py:511
 msgid "Confirm Jingle session"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:61
+#: sat/plugins/plugin_xep_0184.py:71
 msgid "Implementation of Message Delivery Receipts"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:85
+#: sat/plugins/plugin_xep_0184.py:96
 msgid "Enable message delivery receipts"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:89
+#: sat/plugins/plugin_xep_0184.py:100
 msgid "Plugin XEP_0184 (message delivery receipts) initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:114
+#: sat/plugins/plugin_xep_0184.py:136
 msgid "[XEP-0184] Request acknowledgment for message id {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:147
+#: sat/plugins/plugin_xep_0184.py:180
 msgid "[XEP-0184] Receive acknowledgment for message id {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0184.py:154
+#: sat/plugins/plugin_xep_0184.py:190
 msgid "[XEP-0184] Delete waiting acknowledgment for message id {}"
 msgstr ""
 
-#: src/plugins/plugin_xep_0203.py:43
+#: sat/plugins/plugin_xep_0198.py:46
+msgid "Implementation of Stream Management"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:134
+msgid "Plugin Stream Management initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:144
+msgid "Invalid ack_timeout value, please check your configuration"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:147
+msgid "Ack timeout disabled"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:149
+msgid "Ack timeout set to {timeout}s"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:171
+msgid ""
+"Your server doesn't support stream management ({namespace}), this is used"
+" to improve connection problems detection (like network outages). Please "
+"ask your server administrator to enable this feature."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:302
+msgid ""
+"Connection failed using location given by server (host: {host}, port: "
+"{port}), switching to normal host and port (host: {normal_host}, port: "
+"{normal_port})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:317
+msgid "Incorrect <enabled/> element received, no \"id\" attribute"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:319
+msgid ""
+"You're server doesn't support session resuming with stream management, "
+"please contact your server administrator to enable it"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:341
+msgid "Invalid location received: {location}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:359
+msgid "Invalid \"max\" attribute"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:361
+msgid "Using default session max value ({max_s} s)."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:363
+msgid "Stream Management enabled"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:367
+msgid "Stream Management enabled, with a resumption time of {res_m:.2f} min"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:382
+msgid ""
+"Stream session resumed (disconnected for {d_time} s, {count} stanza(s) "
+"resent)"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:395
+msgid "Can't use stream management"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:399
+msgid "{msg}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:408
+msgid "stream resumption not possible, restarting full session"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:495
+msgid "Server returned invalid ack element, disabling stream management: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:501
+msgid "Server acked more stanzas than we have sent, disabling stream management."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0198.py:511
+msgid "Ack was not received in time, aborting connection"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0199.py:39
+msgid "Implementation of XMPP Ping"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0199.py:49
+msgid "XMPP Ping plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0199.py:109
+msgid "ping error ({err_msg}). Response time: {time} s"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0199.py:123
+msgid "Invalid jid: \"{entity_jid}\""
+msgstr ""
+
+#: sat/plugins/plugin_xep_0199.py:134
+msgid "XMPP PING received from {from_jid} [{profile}]"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0203.py:45
 msgid "Implementation of Delayed Delivery"
 msgstr ""
 
-#: src/plugins/plugin_xep_0203.py:50
+#: sat/plugins/plugin_xep_0203.py:51
 msgid "Delayed Delivery plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0231.py:39
+#: sat/plugins/plugin_xep_0231.py:48
 msgid "Implementation of bits of binary (used for small images/files)"
 msgstr ""
 
-#: src/plugins/plugin_xep_0231.py:48
+#: sat/plugins/plugin_xep_0231.py:59
 msgid "plugin Bits of Binary initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0234.py:48
+#: sat/plugins/plugin_xep_0234.py:54
 msgid "Implementation of Jingle File Transfer"
 msgstr ""
 
-#: src/plugins/plugin_xep_0234.py:57
+#: sat/plugins/plugin_xep_0234.py:67
+msgid "file transfer"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0234.py:70
 msgid "plugin Jingle File Transfer initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:55
+#: sat/plugins/plugin_xep_0234.py:380
+msgid "hash_algo must be set if file_hash is set"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0234.py:385
+msgid "file_hash must be set if hash_algo is set"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0234.py:419
+msgid "only the following keys are allowed in extra: {keys}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0234.py:454
+msgid "you need to provide at least name or file hash"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0234.py:524
+msgid "File continue is not implemented yet"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0249.py:55
 msgid "Implementation of Direct MUC Invitations"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:75
+#: sat/plugins/plugin_xep_0249.py:75
 msgid "Auto-join MUC on invitation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:82
+#: sat/plugins/plugin_xep_0249.py:86
 msgid "Plugin XEP_0249 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:131
+#: sat/plugins/plugin_xep_0249.py:140
 #, python-format
 msgid "Invitation accepted for room %(room)s [%(profile)s]"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:144
+#: sat/plugins/plugin_xep_0249.py:155
+msgid "invalid invitation received: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0249.py:159
 #, python-format
 msgid "Invitation received for room %(room)s [%(profile)s]"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:146
-msgid "Error while parsing invitation"
-msgstr ""
-
-#: src/plugins/plugin_xep_0249.py:155
+#: sat/plugins/plugin_xep_0249.py:170
 msgid "Invitation silently discarded because user is already in the room."
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:163
+#: sat/plugins/plugin_xep_0249.py:181
 #, python-format
 msgid ""
 "An invitation from %(user)s to join the room %(room)s has been declined "
 "according to your personal settings."
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:164 src/plugins/plugin_xep_0249.py:168
+#: sat/plugins/plugin_xep_0249.py:185 sat/plugins/plugin_xep_0249.py:192
 msgid "MUC invitation"
 msgstr ""
 
-#: src/plugins/plugin_xep_0249.py:167
-#, python-format
-msgid ""
-"You have been invited by %(user)s to join the room %(room)s. Do you accept?"
-msgstr ""
-
-#: src/plugins/plugin_xep_0249.py:187
-#, python-brace-format
-msgid ""
-"You must provide a valid JID to invite, like in '/invite contact@{host}'"
-msgstr ""
-
-#: src/plugins/plugin_xep_0260.py:49
+#: sat/plugins/plugin_xep_0249.py:188
+#, python-format
+msgid ""
+"You have been invited by %(user)s to join the room %(room)s. Do you "
+"accept?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0249.py:215
+msgid "You must provide a valid JID to invite, like in '/invite contact@{host}'"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0260.py:51
 msgid "Implementation of Jingle SOCKS5 Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0260.py:63
+#: sat/plugins/plugin_xep_0260.py:64
 msgid "plugin Jingle SOCKS5 Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0261.py:45
+#: sat/plugins/plugin_xep_0261.py:47
 msgid "Implementation of Jingle In-Band Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0261.py:53
+#: sat/plugins/plugin_xep_0261.py:55
 msgid "plugin Jingle In-Band Bytestreams"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:57
+#: sat/plugins/plugin_xep_0264.py:67
+msgid "Thumbnails handling"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0264.py:79
+msgid "Plugin XEP_0264 initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0277.py:71
 msgid "Implementation of microblogging Protocol"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:69
+#: sat/plugins/plugin_xep_0277.py:83
 msgid "Microblogging plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:171
+#: sat/plugins/plugin_xep_0277.py:286
 msgid "Content of type XHTML must declare its namespace!"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:360
+#: sat/plugins/plugin_xep_0277.py:557
 msgid "Can't have xhtml and rich content at the same time"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:636
-msgid "Can't find profile's jid"
-msgstr ""
-
-#: src/plugins/plugin_xep_0277.py:642
+#: sat/plugins/plugin_xep_0277.py:1041
 #, python-format
 msgid "Microblog node has now access %s"
 msgstr ""
 
-#: src/plugins/plugin_xep_0277.py:646
+#: sat/plugins/plugin_xep_0277.py:1045
 msgid "Can't set microblog access"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:38
+#: sat/plugins/plugin_xep_0280.py:39
 msgid "Message carbons"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:49
+#: sat/plugins/plugin_xep_0280.py:50
 msgid "Implementation of Message Carbons"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:74
+#: sat/plugins/plugin_xep_0280.py:75
 msgid "Plugin XEP_0280 initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:99
+#: sat/plugins/plugin_xep_0280.py:102
 msgid "Not activating message carbons as requested in params"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:104
+#: sat/plugins/plugin_xep_0280.py:107
 msgid "server doesn't handle message carbons"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:106
+#: sat/plugins/plugin_xep_0280.py:109
 msgid "message carbons available, enabling it"
 msgstr ""
 
-#: src/plugins/plugin_xep_0280.py:114
+#: sat/plugins/plugin_xep_0280.py:117
 msgid "message carbons activated"
 msgstr ""
 
-#: src/plugins/plugin_xep_0297.py:44
+#: sat/plugins/plugin_xep_0297.py:44
 msgid "Implementation of Stanza Forwarding"
 msgstr ""
 
-#: src/plugins/plugin_xep_0297.py:52
+#: sat/plugins/plugin_xep_0297.py:52
 msgid "Stanza Forwarding plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0300.py:42
+#: sat/plugins/plugin_xep_0300.py:45
 msgid "Management of cryptographic hashes"
 msgstr ""
 
-#: src/plugins/plugin_xep_0300.py:60
+#: sat/plugins/plugin_xep_0300.py:66
 msgid "plugin Hashes initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0313.py:48
+#: sat/plugins/plugin_xep_0313.py:51
 msgid "Implementation of Message Archive Management"
 msgstr ""
 
-#: src/plugins/plugin_xep_0313.py:55
+#: sat/plugins/plugin_xep_0313.py:64
 msgid "Message Archive Management plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0334.py:44
+#: sat/plugins/plugin_xep_0313.py:92
+msgid "It seems that we have no MAM history yet"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0313.py:126
+msgid "missing \"to\" attribute in forwarded message"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0313.py:137
+msgid "missing \"from\" attribute in forwarded message"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0313.py:140
+msgid ""
+"was expecting a message sent by our jid, but this one if from {from_jid},"
+" ignoring\n"
+"{xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0313.py:158
+msgid "We have received no message while offline"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0313.py:160
+msgid "We have received {num_mess} message(s) while offline."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:50
+msgid "Implementation of File Information Sharing"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:86
+msgid "path change chars found in name [{name}], hack attempt?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:107
+msgid "path can only be set on path nodes"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:141
+msgid "a node can't have several parents"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:210
+msgid ""
+"parent dir (\"..\") found in path, hack attempt? path is {path} "
+"[{profile}]"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:271
+msgid "File Information Sharing initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:394
+msgid "invalid path: {path}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:428
+msgid "{peer_jid} requested a file (s)he can't access [{profile}]"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:461
+msgid "error while retrieving files: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:513
+msgid "ignoring invalid unicode name ({name}): {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:534
+msgid "unexpected type: {type}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:573
+msgid "unknown node type: {type}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:711
+msgid "unexpected element, ignoring: {elt}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:1184
+msgid "This path doesn't exist!"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:1186
+msgid "A path need to be specified"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:1188
+msgid "access must be a dict"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:1200
+msgid "Can't find a proper name"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0329.py:1211
+msgid ""
+"A directory with this name is already shared, renamed to {new_name} "
+"[{profile}]"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0334.py:43
 msgid "Implementation of Message Processing Hints"
 msgstr ""
 
-#: src/plugins/plugin_xep_0334.py:45
-msgid ""
-"             Frontends can use HINT_* constants in mess_data['extra'] in a "
-"serialized 'hints' dict.\n"
-"             Internal plugins can use directly addHint([HINT_* constant]).\n"
+#: sat/plugins/plugin_xep_0334.py:45
+msgid ""
+"             Frontends can use HINT_* constants in mess_data['extra'] in "
+"a serialized 'hints' dict.\n"
+"             Internal plugins can use directly addHint([HINT_* "
+"constant]).\n"
 "             Will set mess_data['extra']['history'] to 'skipped' when no "
 "store is requested and message is not saved in history."
 msgstr ""
 
-#: src/plugins/plugin_xep_0334.py:63
+#: sat/plugins/plugin_xep_0334.py:65
 msgid "Message Processing Hints plugin initialization"
 msgstr ""
 
-#: src/plugins/plugin_xep_0363.py:52
+#: sat/plugins/plugin_xep_0346.py:54
+msgid "Handle Pubsub data schemas"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:60
+msgid "PubSub Schema initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:208
+msgid "unspecified schema, we need to request it"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:212
+msgid ""
+"no schema specified, and this node has no schema either, we can't "
+"construct the data form"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:233
+msgid "Invalid Schema: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:246
+msgid "nodeIndentifier needs to be set"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:310
+msgid "empty node is not allowed"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:354
+msgid "default_node must be set if nodeIdentifier is not set"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:457
+msgid "field {name} doesn't exist, ignoring it"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:551
+msgid "Can't parse date field: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:652
+msgid "Can't get previous item, update ignored: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:661
+msgid "Can't parse previous item, update ignored: data form not found"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:719
+msgid "default_node must be set if node is not set"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0346.py:728
+msgid "if extra[\"update\"] is set, item_id must be set too"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0352.py:35
+msgid ""
+"Notify server when frontend is not actively used, to limit traffic and "
+"save bandwidth and battery life"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0352.py:45
+msgid "Client State Indication plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0352.py:63
+msgid "Client State Indication is available on this server"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0352.py:67
+msgid ""
+"Client State Indication is not available on this server, some bandwidth "
+"optimisations can't be used."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:46
+msgid "Implementation of Jingle Message Initiation"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:53
+msgid "plugin {name} initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:122
+msgid "Message initiation with {peer_jid} timed out"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:166
+msgid ""
+"Somebody not in your contact list ({peer_jid}) wants to do a "
+"\"{human_name}\" session with you, this would leak your presence and "
+"possibly you IP (internet localisation), do you accept?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:171
+msgid "Invitation from an unknown contact"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0353.py:211
+msgid "no pending session found with id {session_id}, did it timed out?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0359.py:40
+msgid "Implementation of Unique and Stable Stanza IDs"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0359.py:49
+msgid "Unique and Stable Stanza IDs plugin initialization"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0363.py:51
 msgid "Implementation of HTTP File Upload"
 msgstr ""
 
-#: src/plugins/plugin_xep_0363.py:91
+#: sat/plugins/plugin_xep_0363.py:83
 msgid "plugin HTTP File Upload initialization"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:36 src/stdui/ui_contact_list.py:165
-#: src/stdui/ui_contact_list.py:239
+#: sat/plugins/plugin_xep_0363.py:200
+msgid "Can't get upload slot: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0363.py:265
+msgid "upload failed: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0363.py:349
+msgid "Invalid header element: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0363.py:355
+msgid "Ignoring unauthorised header \"{name}\": {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0363.py:400
+msgid "no service can handle HTTP Upload request: {elt}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0380.py:35
+msgid "Implementation of Explicit Message Encryption"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0380.py:94
+msgid ""
+"Message from {sender} is encrypted with {algorithm} and we can't decrypt "
+"it."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0380.py:96
+msgid ""
+"User {sender} sent you an encrypted message (encrypted with {algorithm}),"
+" and we can't decrypt it."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:62
+msgid "Implementation of OMEMO"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:440
+msgid "Security"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:442
+msgid "OMEMO default trust policy"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:443
+msgid "Manual trust (more secure)"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:445
+msgid "Blind Trust Before Verification (more user friendly)"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:449
+msgid "OMEMO plugin initialization (omemo module v{version})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:453
+msgid ""
+"Your version of omemo module is too old: {v[0]}.{v[1]}.{v[2]} is minimum "
+"required, please update."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:488
+msgid "You need to have OMEMO encryption activated to reset the session"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:503
+msgid "OMEMO session has been reset"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:551
+msgid "device {device} from {peer_jid} is not an auto-trusted device anymore"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:612
+msgid "Can't find bundle for device {device_id} of user {bare_jid}, ignoring"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:642
+msgid "OMEMO trust management"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:645
+msgid ""
+"This is OMEMO trusting system. You'll see below the devices of your "
+"contacts, and a checkbox to trust them or not. A trusted device can read "
+"your messages in plain text, so be sure to only validate devices that you"
+" are sure are belonging to your contact. It's better to do this when you "
+"are next to your contact and her/his device, so you can check the "
+"\"fingerprint\" (the number next to the device) yourself. Do *not* "
+"validate a device if the fingerprint is wrong!"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:655
+msgid "This device ID"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:657
+msgid "This device fingerprint"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:669
+msgid "Automatically trust new devices?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:683
+msgid "Contact"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:685
+msgid "Device ID"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:691
+msgid "Trust this device?"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:696
+msgid "(automatically trusted)"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:724
+msgid "We have no identity for this device yet, let's generate one"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:749
+msgid "Saving public bundle for this device ({device_id})"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:770
+msgid "OMEMO devices list is stored in more that one items, this is not expected"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:776
+msgid "no list element found in OMEMO devices list"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:782
+msgid "device element is missing \"id\" attribute: {elt}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:785
+msgid "invalid device id: {device_id}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:804
+msgid "there is no node to handle OMEMO devices"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:826
+msgid "Can't set devices: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:850
+msgid "Bundle missing for device {device_id}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:855
+msgid "Can't get bundle for device {device_id}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:859
+msgid ""
+"no item found in node {node}, can't get public bundle for device "
+"{device_id}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:864
+msgid "more than one item found in {node}, this is not expected"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:878
+msgid "invalid bundle for device {device_id}, ignoring"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:902
+msgid "error while decoding key for device {device_id}: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:916
+msgid "updating bundle for {device_id}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:949
+msgid "Can't set bundle: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:969
+msgid "Our own device is missing from devices list, fixing it"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:988
+msgid ""
+"Not all destination devices are trusted, unknown devices will be blind "
+"trusted due to the OMEMO Blind Trust Before Verification policy. If you "
+"want a more secure workflow, please activate \"manual\" OMEMO policy in "
+"settings' \"Security\" tab.\n"
+"Following fingerprint have been automatically trusted:\n"
+"{devices}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1010
+msgid ""
+"Not all destination devices are trusted, we can't encrypt message in such"
+" a situation. Please indicate if you trust those devices or not in the "
+"trust manager before we can send this message"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1053
+msgid "discarding untrusted device {device_id} with key {device_key} for {entity}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1095
+msgid ""
+"Can't retrieve bundle for device(s) {devices} of entity {peer}, the "
+"message will not be readable on this/those device(s)"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1100
+msgid ""
+"You're destinee {peer} has missing encryption data on some of his/her "
+"device(s) (bundle on device {devices}), the message won't  be readable on"
+" this/those device."
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1151
+msgid "Too many iterations in encryption loop"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1180
+msgid "Can't encrypt message for {entities}: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1270
+msgid "Invalid OMEMO encrypted stanza, ignoring: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1276
+msgid "Invalid OMEMO encrypted stanza, missing sender device ID, ignoring: {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1284
+msgid ""
+"This OMEMO encrypted stanza has not been encrypted for our device "
+"(device_id: {device_id}, fingerprint: {fingerprint}): {xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1290
+msgid ""
+"An OMEMO message from {sender} has not been encrypted for our device, we "
+"can't decrypt it"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1297
+msgid "Invalid recipient ID: {msg}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1330
+msgid ""
+"Can't decrypt message: {reason}\n"
+"{xml}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1332
+msgid "An OMEMO message from {sender} can't be decrypted: {reason}"
+msgstr ""
+
+#: sat/plugins/plugin_xep_0384.py:1364
+msgid ""
+"Our message with UID {uid} has not been received in time, it has probably"
+" been lost. The message was: {msg!r}"
+msgstr ""
+
+#: sat/plugins/plugin_app_manager_docker/__init__.py:38
+msgid "Applications Manager for Docker"
+msgstr ""
+
+#: sat/plugins/plugin_app_manager_docker/__init__.py:48
+msgid "Docker App Manager initialization"
+msgstr ""
+
+#: sat/stdui/ui_contact_list.py:39 sat/stdui/ui_contact_list.py:42
+#: sat/stdui/ui_contact_list.py:190 sat/stdui/ui_contact_list.py:276
 msgid "Add contact"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:37 src/stdui/ui_contact_list.py:183
+#: sat/stdui/ui_contact_list.py:45 sat/stdui/ui_contact_list.py:48
+#: sat/stdui/ui_contact_list.py:209
 msgid "Update contact"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:38
+#: sat/stdui/ui_contact_list.py:51 sat/stdui/ui_contact_list.py:54
 msgid "Remove contact"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:135
+#: sat/stdui/ui_contact_list.py:157
 msgid "Select in which groups your contact is:"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:148
+#: sat/stdui/ui_contact_list.py:172
 msgid "Add group"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:150
+#: sat/stdui/ui_contact_list.py:174
 msgid "Add"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:166
+#: sat/stdui/ui_contact_list.py:191
 msgid "New contact identifier (JID):"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:178
+#: sat/stdui/ui_contact_list.py:203
 msgid "Nothing to update"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:179 src/stdui/ui_contact_list.py:197
+#: sat/stdui/ui_contact_list.py:204 sat/stdui/ui_contact_list.py:223
 msgid "Your contact list is empty."
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:184
+#: sat/stdui/ui_contact_list.py:210
 msgid "Which contact do you want to update?"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:196
+#: sat/stdui/ui_contact_list.py:222
 msgid "Nothing to delete"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:200
+#: sat/stdui/ui_contact_list.py:228
 msgid "Who do you want to remove from your contacts?"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:219
+#: sat/stdui/ui_contact_list.py:251
 msgid "Delete contact"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:220
+#: sat/stdui/ui_contact_list.py:253
 #, python-format
 msgid "Are you sure you want to remove %s from your contact list?"
 msgstr ""
 
-#: src/stdui/ui_contact_list.py:240
+#: sat/stdui/ui_contact_list.py:277
 #, python-format
 msgid "Please enter a valid JID (like \"contact@%s\"):"
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:52
+#: sat/stdui/ui_profile_manager.py:62
 msgid "Profile password for {}"
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:61 src/stdui/ui_profile_manager.py:98
+#: sat/stdui/ui_profile_manager.py:72 sat/stdui/ui_profile_manager.py:119
 msgid "Connection error"
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:66
+#: sat/stdui/ui_profile_manager.py:76
+#: sat_frontends/quick_frontend/quick_profile_manager.py:171
+msgid "Internal error"
+msgstr ""
+
+#: sat/stdui/ui_profile_manager.py:77
 msgid "Internal error: {}"
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:99
+#: sat/stdui/ui_profile_manager.py:121
 #, python-format
 msgid "Can't connect to %s. Please check your connection details."
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:103
+#: sat/stdui/ui_profile_manager.py:127
 #, python-format
 msgid "XMPP password for %(profile)s%(counter)s"
 msgstr ""
 
-#: src/stdui/ui_profile_manager.py:105
+#: sat/stdui/ui_profile_manager.py:135
 #, python-format
 msgid ""
 "Can't connect to %s. Please check your connection details or try with "
 "another password."
 msgstr ""
 
-#: src/test/constants.py:45
+#: sat/test/constants.py:57
 msgid "Enable unibox"
 msgstr ""
 
-#: src/test/constants.py:46
+#: sat/test/constants.py:58
 msgid "'Wysiwyg' edition"
 msgstr ""
 
-#: src/test/test_plugin_misc_room_game.py:43
+#: sat/test/test_plugin_misc_room_game.py:43
 msgid "Dummy plugin to test room game"
 msgstr ""
 
-#: src/tools/config.py:51
+#: sat/tools/config.py:53
 #, python-format
 msgid "Testing file %s"
 msgstr ""
 
-#: src/tools/config.py:68
-#, python-format
-msgid ""
-"Config auto-update: %(option)s set to %(value)s in the file %(config_file)s"
-msgstr ""
-
-#: src/tools/config.py:77
-msgid "Can't read main config !"
-msgstr ""
-
-#: src/tools/trigger.py:63
+#: sat/tools/config.py:72
+msgid "Config auto-update: {option} set to {value} in the file {config_file}."
+msgstr ""
+
+#: sat/tools/config.py:86
+msgid "Can't read main config: {msg}"
+msgstr ""
+
+#: sat/tools/config.py:91
+msgid "Configuration was read from: {filenames}"
+msgstr ""
+
+#: sat/tools/config.py:95
+msgid "No configuration file found, using default settings"
+msgstr ""
+
+#: sat/tools/image.py:35
+msgid "SVG support not available, please install cairosvg: {e}"
+msgstr ""
+
+#: sat/tools/trigger.py:66
 #, python-format
 msgid "There is already a bound priority [%s]"
 msgstr ""
 
-#: src/tools/trigger.py:65
+#: sat/tools/trigger.py:69
 #, python-format
 msgid "There is already a trigger with the same priority [%s]"
 msgstr ""
 
-#: src/tools/xml_tools.py:60
+#: sat/tools/video.py:38
+msgid "ffmpeg executable not found, video thumbnails won't be available"
+msgstr ""
+
+#: sat/tools/video.py:56
+msgid "ffmpeg executable is not available, can't generate video thumbnail"
+msgstr ""
+
+#: sat/tools/xml_tools.py:86
 msgid "Fixed field has neither value nor label, ignoring it"
 msgstr ""
 
-#: src/tools/xml_tools.py:296
+#: sat/tools/xml_tools.py:485
 msgid "INTERNAL ERROR: parameters xml not valid"
 msgstr ""
 
-#: src/tools/xml_tools.py:305
+#: sat/tools/xml_tools.py:495
 msgid "INTERNAL ERROR: params categories must have a name"
 msgstr ""
 
-#: src/tools/xml_tools.py:314
+#: sat/tools/xml_tools.py:505
 msgid "INTERNAL ERROR: params must have a name"
 msgstr ""
 
-#: src/tools/xml_tools.py:357
+#: sat/tools/xml_tools.py:557
 msgid "The 'options' tag is not allowed in parameter of type 'list'!"
 msgstr ""
 
-#: src/tools/xml_tools.py:433
+#: sat/tools/xml_tools.py:655
 msgid "TabElement must be a child of TabsContainer"
 msgstr ""
 
-#: src/tools/xml_tools.py:532
+#: sat/tools/xml_tools.py:760
 msgid "Can't set row index if auto_index is True"
 msgstr ""
 
-#: src/tools/xml_tools.py:645
+#: sat/tools/xml_tools.py:893
 msgid "either items or columns need do be filled"
 msgstr ""
 
-#: src/tools/xml_tools.py:658
+#: sat/tools/xml_tools.py:907
 msgid "Headers lenght doesn't correspond to columns"
 msgstr ""
 
-#: src/tools/xml_tools.py:704
+#: sat/tools/xml_tools.py:954
 msgid "Incorrect number of items in list"
 msgstr ""
 
-#: src/tools/xml_tools.py:862
+#: sat/tools/xml_tools.py:978
+msgid "A widget with the name \"{name}\" already exists."
+msgstr ""
+
+#: sat/tools/xml_tools.py:1171
 msgid "Value must be an integer"
 msgstr ""
 
-#: src/tools/xml_tools.py:877
+#: sat/tools/xml_tools.py:1186
 msgid "Value must be 0, 1, false or true"
 msgstr ""
 
-#: src/tools/xml_tools.py:927
+#: sat/tools/xml_tools.py:1249
+msgid ""
+"\"multi\" flag and \"selected\" option are not compatible with "
+"\"noselect\" flag"
+msgstr ""
+
+#: sat/tools/xml_tools.py:1258
 msgid "empty \"options\" list"
 msgstr ""
 
-#: src/tools/xml_tools.py:929 src/tools/xml_tools.py:963
+#: sat/tools/xml_tools.py:1277 sat/tools/xml_tools.py:1311
 msgid "invalid styles"
 msgstr ""
 
-#: src/tools/xml_tools.py:985
+#: sat/tools/xml_tools.py:1335
 msgid "DialogElement must be a direct child of TopElement"
 msgstr ""
 
-#: src/tools/xml_tools.py:997
+#: sat/tools/xml_tools.py:1350
 msgid "MessageElement must be a direct child of DialogElement"
 msgstr ""
 
-#: src/tools/xml_tools.py:1009
+#: sat/tools/xml_tools.py:1365
 msgid "ButtonsElement must be a direct child of DialogElement"
 msgstr ""
 
-#: src/tools/xml_tools.py:1020
+#: sat/tools/xml_tools.py:1379
 msgid "FileElement must be a direct child of DialogElement"
 msgstr ""
 
-#: src/tools/xml_tools.py:1076
+#: sat/tools/xml_tools.py:1458
 #, python-format
 msgid "Unknown panel type [%s]"
 msgstr ""
 
-#: src/tools/xml_tools.py:1078
+#: sat/tools/xml_tools.py:1460
 msgid "form XMLUI need a submit_id"
 msgstr ""
 
-#: src/tools/xml_tools.py:1080
+#: sat/tools/xml_tools.py:1462
 msgid "container argument must be a string"
 msgstr ""
 
-#: src/tools/xml_tools.py:1082
+#: sat/tools/xml_tools.py:1465
 msgid "dialog_opt can only be used with dialog panels"
 msgstr ""
 
-#: src/tools/xml_tools.py:1124
-msgid "addXXX can't be used with dialogs"
-msgstr ""
-
-#: src/tools/xml_tools.py:1182
+#: sat/tools/xml_tools.py:1492
+msgid "createWidget can't be used with dialogs"
+msgstr ""
+
+#: sat/tools/xml_tools.py:1590
 msgid "Submit ID must be filled for this kind of dialog"
 msgstr ""
 
-#: src/tools/xml_tools.py:1209
+#: sat/tools/xml_tools.py:1618
 #, python-format
 msgid "Unknown container type [%s]"
 msgstr ""
 
-#: src/tools/xml_tools.py:1229
-#, python-format
-msgid "Invalid type [%s]"
-msgstr ""
-
-#: src/twisted/plugins/sat_plugin.py:58
-#, python-format
-msgid "%s XMPP client backend"
-msgstr ""
+#: sat/tools/xml_tools.py:1648
+msgid "Invalid type [{type_}]"
+msgstr ""
+
+#: sat/tools/common/async_process.py:86
+msgid ""
+"Can't complete {name} command (error code: {code}):\n"
+"stderr:\n"
+"{stderr}\n"
+"{stdout}\n"
+msgstr ""
+
+#: sat/tools/common/date_utils.py:76
+msgid "You can't use a direction (+ or -) and \"ago\" at the same time"
+msgstr ""
+
+#: sat/tools/common/template.py:149
+msgid "{site} can't be used as site name, it's reserved."
+msgstr ""
+
+#: sat/tools/common/template.py:157
+msgid "{theme} contain forbidden char. Following chars are forbidden: {reserved}"
+msgstr ""
+
+#: sat/tools/common/template.py:212
+msgid "Unregistered site requested: {site_to_check}"
+msgstr ""
+
+#: sat/tools/common/template.py:241
+msgid ""
+"Absolute template used while unsecure is disabled, hack attempt? "
+"Template: {template}"
+msgstr ""
+
+#: sat/tools/common/template.py:314
+msgid "Invalid attribute, please use one of \"defer\", \"async\" or \"\""
+msgstr ""
+
+#: sat/tools/common/template.py:332
+msgid "Can't find {libary} javascript library"
+msgstr ""
+
+#: sat/tools/common/template.py:389
+msgid ""
+"Can't add \"{name}\" site, it contains forbidden characters. Forbidden "
+"characters are {forbidden}."
+msgstr ""
+
+#: sat/tools/common/template.py:395
+msgid "Can't add \"{name}\" site, it should map to an absolute path"
+msgstr ""
+
+#: sat/tools/common/template.py:416
+msgid "Can't load theme settings at {path}: {e}"
+msgstr ""
+
+#: sat/tools/common/template.py:523
+msgid "Can't find template translation at {path}"
+msgstr ""
+
+#: sat/tools/common/template.py:526
+msgid "{site}Invalid locale name: {msg}"
+msgstr ""
+
+#: sat/tools/common/template.py:529
+msgid "{site}loaded {lang} templates translations"
+msgstr ""
+
+#: sat/tools/common/template.py:560
+msgid "invalid locale value: {msg}"
+msgstr ""
+
+#: sat/tools/common/template.py:569
+msgid "Can't find locale {locale}"
+msgstr ""
+
+#: sat/tools/common/template.py:574
+msgid "Switched to {lang}"
+msgstr ""
+
+#: sat/tools/common/template.py:774 sat_frontends/jp/cmd_event.py:134
+msgid "Can't parse date: {msg}"
+msgstr ""
+
+#: sat/tools/common/template.py:801
+msgid "ignoring field \"{name}\": it doesn't exists"
+msgstr ""
+
+#: sat_frontends/jp/arg_tools.py:88
+msgid "ignoring {name}={value}, not corresponding to any argument (in USE)"
+msgstr ""
+
+#: sat_frontends/jp/arg_tools.py:95
+msgid "arg {name}={value} (in USE)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:64
+msgid ""
+"ProgressBar not available, please download it at "
+"http://pypi.python.org/pypi/progressbar\n"
+"Progress bar deactivated\n"
+"--\n"
+msgstr ""
+
+#: sat_frontends/jp/base.py:155
+msgid ""
+"Invalid value set for \"background\" ({background}), please check your "
+"settings in libervia.conf"
+msgstr ""
+
+#: sat_frontends/jp/base.py:178
+msgid "Available commands"
+msgstr ""
+
+#: sat_frontends/jp/base.py:287
+#, python-format
+msgid "Use PROFILE profile key (default: %(default)s)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:290
+msgid "Password used to connect profile, if necessary"
+msgstr ""
+
+#: sat_frontends/jp/base.py:297
+msgid "Connect the profile before doing anything else"
+msgstr ""
+
+#: sat_frontends/jp/base.py:307
+msgid "Start a profile session without connecting"
+msgstr ""
+
+#: sat_frontends/jp/base.py:313
+msgid "Show progress bar"
+msgstr ""
+
+#: sat_frontends/jp/base.py:318
+msgid "Add a verbosity level (can be used multiple times)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:323
+msgid "be quiet (only output machine readable data)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:326
+msgid "draft handling"
+msgstr ""
+
+#: sat_frontends/jp/base.py:328
+msgid "load current draft"
+msgstr ""
+
+#: sat_frontends/jp/base.py:330
+msgid "path to a draft file to retrieve"
+msgstr ""
+
+#: sat_frontends/jp/base.py:346
+msgid "Pubsub URL (xmpp or http)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:348
+msgid "JID of the PubSub service"
+msgstr ""
+
+#: sat_frontends/jp/base.py:350
+msgid "PEP service"
+msgstr ""
+
+#: sat_frontends/jp/base.py:352 sat_frontends/jp/base.py:360
+#: sat_frontends/jp/base.py:368
+msgid " (DEFAULT: {default})"
+msgstr ""
+
+#: sat_frontends/jp/base.py:356
+msgid "node to request"
+msgstr ""
+
+#: sat_frontends/jp/base.py:358
+msgid "standard node"
+msgstr ""
+
+#: sat_frontends/jp/base.py:366
+msgid "last item"
+msgstr ""
+
+#: sat_frontends/jp/base.py:372
+msgid "retrieve last item"
+msgstr ""
+
+#: sat_frontends/jp/base.py:378
+msgid "items to retrieve (DEFAULT: all)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:385
+msgid "maximum number of items to get ({no_limit} to get all items)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:391
+msgid "maximum number of items to get per page (DEFAULT: 10)"
+msgstr ""
+
+#: sat_frontends/jp/base.py:398 sat_frontends/jp/cmd_message.py:217
+msgid "find page after this item"
+msgstr ""
+
+#: sat_frontends/jp/base.py:401 sat_frontends/jp/cmd_message.py:220
+msgid "find page before this item"
+msgstr ""
+
+#: sat_frontends/jp/base.py:404 sat_frontends/jp/cmd_message.py:223
+msgid "index of the page to retrieve"
+msgstr ""
+
+#: sat_frontends/jp/base.py:411
+msgid "MAM filters to use"
+msgstr ""
+
+#: sat_frontends/jp/base.py:424
+msgid "how items should be ordered"
+msgstr ""
+
+#: sat_frontends/jp/base.py:454
+msgid "there is already a default output for {type}, ignoring new one"
+msgstr ""
+
+#: sat_frontends/jp/base.py:475
+msgid "The following output options are invalid: {invalid_options}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:499
+msgid "Can't import {module_path} plugin, ignoring it: {e}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:505
+msgid "Missing module for plugin {name}: {missing}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:520
+msgid "Invalid plugin module [{type}] {module}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:552
+msgid "Can't parse HTML page : {msg}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:558
+msgid ""
+"Could not find alternate \"xmpp:\" URI, can't find associated XMPP PubSub"
+" node/item"
+msgstr ""
+
+#: sat_frontends/jp/base.py:576
+msgid "invalid XMPP URL: {url}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:596
+msgid "item specified in URL but not needed in command, ignoring it"
+msgstr ""
+
+#: sat_frontends/jp/base.py:612
+msgid "XMPP URL is not a pubsub one: {url}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:618
+msgid "argument -s/--service is required"
+msgstr ""
+
+#: sat_frontends/jp/base.py:620
+msgid "argument -n/--node is required"
+msgstr ""
+
+#: sat_frontends/jp/base.py:622
+msgid "argument -i/--item is required"
+msgstr ""
+
+#: sat_frontends/jp/base.py:629
+msgid "--item and --item-last can't be used at the same time"
+msgstr ""
+
+#: sat_frontends/jp/base.py:659 sat_frontends/quick_frontend/quick_app.py:370
+msgid "Can't connect to SàT backend, are you sure it's launched ?"
+msgstr ""
+
+#: sat_frontends/jp/base.py:662 sat_frontends/quick_frontend/quick_app.py:373
+msgid "Can't init bridge"
+msgstr ""
+
+#: sat_frontends/jp/base.py:666
+msgid "Error while initialising bridge: {e}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:714
+msgid "action cancelled by user"
+msgstr ""
+
+#: sat_frontends/jp/base.py:785
+#, python-format
+msgid "%s is not a valid JID !"
+msgstr ""
+
+#: sat_frontends/jp/base.py:837
+msgid "invalid password"
+msgstr ""
+
+#: sat_frontends/jp/base.py:839
+msgid "please enter profile password:"
+msgstr ""
+
+#: sat_frontends/jp/base.py:859
+msgid "The profile [{profile}] doesn't exist"
+msgstr ""
+
+#: sat_frontends/jp/base.py:881
+msgid ""
+"Session for [{profile}] is not started, please start it before using jp, "
+"or use either --start-session or --connect option"
+msgstr ""
+
+#: sat_frontends/jp/base.py:901
+msgid ""
+"Profile [{profile}] is not connected, please connect it before using jp, "
+"or use --connect option"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1002
+msgid "select output format (default: {})"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1005
+msgid "output specific option"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1111
+msgid "file size is not known, we can't show a progress bar"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1126 sat_frontends/jp/cmd_list.py:304
+msgid "Progress: "
+msgstr ""
+
+#: sat_frontends/jp/base.py:1156
+msgid "Operation started"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1172
+msgid "Operation successfully finished"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1179
+msgid "Error while doing operation: {e}"
+msgstr ""
+
+#: sat_frontends/jp/base.py:1189
+msgid "trying to use output when use_output has not been set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:42
+msgid "create a XMPP account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:47
+msgid "jid to create"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:50
+msgid "password of the account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:55
+msgid "create a profile to use this account (default: don't create profile)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:63
+msgid "email (usage depends of XMPP server)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:69
+msgid "server host (IP address or domain, default: use localhost)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:76
+msgid "server port (default: {port})"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:107
+msgid "XMPP account created"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:113
+msgid "creating profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:129
+msgid "Can't create profile {profile} to associate with jid {jid}: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:142
+msgid "profile created"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:183
+msgid "change password for XMPP account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:188
+msgid "new XMPP password"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:207
+msgid "delete a XMPP account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:215
+msgid "delete account without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_account.py:236
+msgid "Account deletion cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:34
+msgid "remote control a software"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:38
+msgid "software name"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:44
+msgid "jids allowed to use the command"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:51
+msgid "groups allowed to use the command"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:57
+msgid "groups that are *NOT* allowed to use the command"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:63
+msgid "jids that are *NOT* allowed to use the command"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:66
+msgid "loop on the commands"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:93
+msgid "No bus name found"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:96
+#, python-format
+msgid "Bus name found: [%s]"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:100
+msgid "Command found: (path:{path}, iface: {iface}) [{command}]"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:112
+msgid "run an Ad-Hoc command"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:120 sat_frontends/jp/cmd_message.py:200
+msgid "jid of the service (default: profile's server"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:128
+msgid "submit form/page"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:137
+msgid "field value"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:143
+msgid "node of the command (default: list commands)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:171
+msgid "list Ad-Hoc commands of a service"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:179
+msgid "jid of the service (default: profile's server)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_adhoc.py:202
+msgid "Ad-hoc commands"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:33
+msgid "list available applications"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:45
+msgid "show applications with this status"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:72
+msgid "start an application"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:78
+msgid "name of the application to start"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:98
+msgid "stop a running application"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:106
+msgid "name of the application to stop"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:111
+msgid "identifier of the instance to stop"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:142
+msgid "show data exposed by a running application"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:150
+msgid "name of the application to check"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:155
+msgid "identifier of the instance to check"
+msgstr ""
+
+#: sat_frontends/jp/cmd_application.py:189
+msgid "manage applications"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:38
+msgid "retrieve avatar of an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:43 sat_frontends/jp/cmd_identity.py:42
+msgid "do no use cached values"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:46
+msgid "show avatar"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:48 sat_frontends/jp/cmd_info.py:111
+msgid "entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:87
+msgid "No avatar found."
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:103
+msgid "set avatar of the profile or an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:108
+msgid "entity whose avatar must be changed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:110
+msgid "path to the image to upload"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:116
+msgid "file {path} doesn't exist!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:125
+msgid "avatar has been set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_avatar.py:134
+msgid "avatar uploading/retrieving"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:129
+msgid "unknown syntax requested ({syntax})"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:138
+msgid "title of the item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:143
+msgid "tag (category) of your item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:148
+msgid "language of the item (ISO 639 code)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:158
+msgid ""
+"enable comments (default: comments not enabled except if they already "
+"exist)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:168
+msgid "disable comments (will remove comments node if it exist)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:174
+msgid "syntax to use (default: get profile's default syntax)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:211
+msgid "publish a new blog item or update an existing one"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:257
+msgid "get blog item(s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:267
+msgid "microblog data key(s) to display (default: depend of verbosity)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:462
+msgid "edit an existing or new blog post"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:473
+msgid "launch a blog preview in parallel"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:478
+msgid "add \"publish: False\" to metadata"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:628
+msgid "You need lxml to edit pretty XHTML"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:662
+msgid "rename an blog item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:666 sat_frontends/jp/cmd_pubsub.py:996
+msgid "new item id to use"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:690
+msgid "preview a blog content"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:700
+msgid "use inotify to handle preview"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:706
+msgid "path to the content file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:810
+msgid "File \"{file}\" doesn't exist!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:898
+msgid "import an external blog"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:905 sat_frontends/jp/cmd_list.py:207
+msgid "importer name, nothing to display importers list"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:907
+msgid "original blog host"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:911
+msgid "do *NOT* upload images (default: do upload images)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:915
+msgid "do not upload images from this host (default: upload all images)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:920
+msgid "ignore invalide TLS certificate for uploads"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:929 sat_frontends/jp/cmd_list.py:216
+msgid "importer specific options (see importer description)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:934 sat_frontends/jp/cmd_list.py:250
+msgid ""
+"importer data location (see importer description), nothing to show "
+"importer description"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:941
+msgid "Blog upload started"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:944
+msgid "Blog uploaded successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:965
+msgid ""
+"\n"
+"To redirect old URLs to new ones, put the following lines in your "
+"sat.conf file, in [libervia] section:\n"
+"\n"
+"{conf}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:973
+msgid "Error while uploading blog: {error_msg}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:982 sat_frontends/jp/cmd_list.py:274
+msgid "{name} argument can't be used without location argument"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:1037
+msgid "Error while trying to import a blog: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_blog.py:1050
+msgid "blog/microblog management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:40
+#, python-format
+msgid "storage location (default: %(default)s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:48
+#, python-format
+msgid "bookmarks type (default: %(default)s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:54
+msgid "list bookmarks"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:94
+msgid "remove a bookmark"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:99 sat_frontends/jp/cmd_bookmarks.py:131
+msgid "jid (for muc bookmark) or url of to remove"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:105
+msgid "delete bookmark without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:110
+msgid "Are you sure to delete this bookmark?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:117
+msgid "can't delete bookmark: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:120
+msgid "bookmark deleted"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:133
+msgid "bookmark name"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:134
+msgid "MUC specific options"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:135
+msgid "nickname"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:140
+msgid "join room on profile connection"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:145
+msgid "You can't use --autojoin or --nick with --type url"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:165
+msgid "bookmark successfully added"
+msgstr ""
+
+#: sat_frontends/jp/cmd_bookmarks.py:174
+msgid "manage bookmarks"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:49
+msgid "call a bridge method"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:54
+msgid "name of the method to execute"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:56
+msgid "argument of the method"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:79
+msgid "Error while executing {method}: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:94
+msgid "send a fake signal from backend"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:99
+msgid "name of the signal to send"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:100
+msgid "argument of the signal"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:112
+msgid "Can't send fake signal: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:123
+msgid "bridge s(t)imulation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:135
+msgid "monitor XML stream"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:144
+msgid "stream direction filter"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:195
+msgid "print colours used with your background"
+msgstr ""
+
+#: sat_frontends/jp/cmd_debug.py:226
+msgid "debugging tools"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:38
+msgid "show available encryption algorithms"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:45
+msgid "No encryption plugin registered!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:47
+msgid "Following encryption algorithms are available: {algos}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:68
+msgid "get encryption session data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:73
+msgid "jid of the entity to check"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:99
+msgid "start encrypted session with an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:105 sat_frontends/jp/cmd_message.py:77
+msgid "don't replace encryption algorithm if an other one is already used"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:108
+msgid "algorithm name (DEFAULT: choose automatically)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:111
+msgid "algorithm namespace (DEFAULT: choose automatically)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:114
+#: sat_frontends/jp/cmd_encryption.py:153
+#: sat_frontends/jp/cmd_encryption.py:178
+msgid "jid of the entity to stop encrypted session with"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:148
+msgid "stop encrypted session with an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:173
+msgid "get UI to manage trust"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:182
+msgid "algorithm name (DEFAULT: current algorithm)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:185
+msgid "algorithm namespace (DEFAULT: current algorithm)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:220
+msgid "trust manangement"
+msgstr ""
+
+#: sat_frontends/jp/cmd_encryption.py:230
+msgid "encryption sessions handling"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:47
+msgid "get list of registered events"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:78
+msgid "get event data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:108
+msgid "ID of the PubSub Item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:110
+msgid "date of the event"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:118 sat_frontends/jp/cmd_event.py:257
+#: sat_frontends/jp/cmd_pubsub.py:129
+msgid "configuration field to set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:150
+msgid "create or replace event"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:170
+msgid "Event created successfuly on node {node}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:181
+msgid "modify an existing event"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:214 sat_frontends/jp/cmd_event.py:288
+msgid "get event attendance"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:219
+msgid "bare jid of the invitee"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:246
+msgid "set event attendance"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:296
+msgid "show missing people (invited but no R.S.V.P. so far)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:302
+msgid "don't show people which gave R.S.V.P."
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:371
+msgid "Attendees: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:374
+msgid " ("
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:376
+msgid "yes: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:379
+msgid ", maybe: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:383
+msgid "no: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:390
+msgid "confirmed guests: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:395
+msgid "unconfirmed guests: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:401
+msgid "total: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:408
+msgid "missing people (no reply): "
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:416
+msgid "you need to use --missing if you use --no-rsvp"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:489
+msgid "invite someone to the event through email"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:568
+msgid "manage invities"
+msgstr ""
+
+#: sat_frontends/jp/cmd_event.py:577
+msgid "event management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:50
+msgid "send a file to a contact"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:55
+msgid "a list of file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:57 sat_frontends/jp/cmd_file.py:191
+#: sat_frontends/jp/cmd_message.py:82 sat_frontends/jp/cmd_pipe.py:42
+msgid "the destination jid"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:59
+msgid "make a bzip2 tarball"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:79 sat_frontends/jp/cmd_file.py:236
+#: sat_frontends/jp/cmd_file.py:330
+msgid "File copy started"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:82
+msgid "File sent successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:86
+msgid "The file has been refused by your contact"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:88
+msgid "Error while sending file: {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:97
+msgid "File request sent to {jid}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:102
+msgid "Can't send file to {jid}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:109
+msgid "file {file_} doesn't exist!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:114
+msgid "{file_} is a dir! Please send files inside or use compression"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:129
+msgid "bz2 is an experimental option, use with caution"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:131
+msgid "Starting compression, please wait..."
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:138
+msgid "Adding {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:141
+msgid "Done !"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:183
+msgid "request a file from a contact"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:195
+msgid ""
+"destination path where the file will be saved (default: "
+"[current_dir]/[name|hash])"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:204
+msgid "name of the file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:210
+msgid "hash of the file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:216
+msgid "hash algorithm use for --hash (default: sha-256)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:232 sat_frontends/jp/cmd_file.py:476
+msgid "overwrite existing file without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:239 sat_frontends/jp/cmd_file.py:333
+msgid "File received successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:243
+msgid "The file request has been refused"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:245
+msgid "Error while requesting file: {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:249
+msgid "at least one of --name or --hash must be provided"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:258 sat_frontends/jp/cmd_file.py:510
+msgid "File {path} already exists! Do you want to overwrite?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:261
+msgid "file request cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:280
+msgid "can't request file: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:293
+msgid "wait for a file to be sent by a contact"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:306
+msgid "jids accepted (accept everything if none is specified)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:312
+msgid "accept multiple files (you'll have to stop manually)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:318
+msgid "force overwritting of existing files (/!\\ name is choosed by sender)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:326
+msgid "destination path (default: working directory)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:337
+msgid "hash checked: {metadata['hash_algo']}:{metadata['hash']}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:340
+msgid "hash is checked but hash value is missing"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:342
+msgid "hash can't be verified"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:345
+msgid "Error while receiving file: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:354 sat_frontends/jp/cmd_pipe.py:111
+msgid "Action has no XMLUI"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:359 sat_frontends/jp/cmd_pipe.py:115
+msgid "Invalid XMLUI received"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:369 sat_frontends/jp/cmd_pipe.py:126
+msgid "Ignoring action without from_jid data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:374 sat_frontends/jp/cmd_file.py:395
+msgid "ignoring action without progress id"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:379
+msgid "File refused because overwrite is needed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:397
+msgid "Overwriting needed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:401
+msgid "Overwrite accepted"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:403
+msgid "Refused to overwrite"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:417
+msgid "invalid \"from_jid\" value received, ignoring: {value}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:424
+msgid "ignoring action without \"from_jid\" value"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:426
+msgid "Confirmation needed for request from an entity not in roster"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:431
+msgid "Sender confirmed because she or he is explicitly expected"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:439
+msgid "Session refused for {from_jid}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:446
+msgid "Given path is not a directory !"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:450
+msgid "waiting for incoming file request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:461
+msgid "download a file from URI"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:470
+msgid "destination file (DEFAULT: filename from URL)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:478
+msgid "URI of the file to retrieve"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:481
+msgid "File download started"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:484
+msgid "File downloaded successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:487
+msgid "Error while downloading file: {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:513
+msgid "file download cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:534
+msgid "upload a file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:542
+msgid "encrypt file using AES-GCM"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:544
+msgid "file to upload"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:548
+msgid "jid of upload component (nothing to autodetect)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:553
+msgid "ignore invalide TLS certificate (/!\\ Dangerous /!\\)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:557
+msgid "File upload started"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:560
+msgid "File uploaded successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:566
+msgid "URL to retrieve the file:"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:571
+msgid "Error while uploading file: {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:593
+msgid "file {file_} doesn't exist !"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:597
+msgid "{file_} is a dir! Can't upload a dir"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:633
+msgid "set affiliations for a shared file/directory"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:641 sat_frontends/jp/cmd_file.py:695
+#: sat_frontends/jp/cmd_file.py:747 sat_frontends/jp/cmd_file.py:801
+#: sat_frontends/jp/cmd_file.py:1002
+msgid "namespace of the repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:647 sat_frontends/jp/cmd_file.py:701
+#: sat_frontends/jp/cmd_file.py:753 sat_frontends/jp/cmd_file.py:807
+#: sat_frontends/jp/cmd_file.py:1007
+msgid "path to the repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:657 sat_frontends/jp/cmd_pubsub.py:453
+msgid "entity/affiliation couple(s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:661 sat_frontends/jp/cmd_file.py:767
+msgid "jid of file sharing entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:687
+msgid "retrieve affiliations of a shared file/directory"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:705 sat_frontends/jp/cmd_file.py:811
+msgid "jid of sharing entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:729
+msgid "affiliations management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:739
+msgid "set configuration for a shared file/directory"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:763 sat_frontends/jp/cmd_pubsub.py:282
+msgid "configuration field to set (required)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:793
+msgid "retrieve configuration of a shared file/directory"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:838
+msgid "file sharing node configuration"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:850
+msgid "retrieve files shared by an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:859
+msgid "path to the directory containing the files"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:865
+msgid "jid of sharing entity (nothing to check our own jid)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:874
+msgid "unknown file type: {type}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:923
+msgid "share a file or directory"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:931
+msgid "virtual name to use (default: use directory/file name)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:941
+msgid "jid of contacts allowed to retrieve the files"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:946
+msgid "share publicly the file(s) (/!\\ *everybody* will be able to access them)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:953
+msgid "path to a file or directory to share"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:978
+msgid "{path} shared under the name \"{name}\""
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:988
+msgid "send invitation for a shared repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:996
+msgid "name of the repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1014
+msgid "type of the repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1019
+msgid "https URL of a image to use as thumbnail"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1023
+msgid "jid of the file sharing service hosting the repository"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1027
+msgid "jid of the person to invite"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1035
+msgid "only http(s) links are allowed with --thumbnail"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1053
+msgid "invitation sent to {jid}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1068
+msgid "files sharing management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_file.py:1077
+msgid "files sending/receiving/management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:45
+msgid "edit forums"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:54 sat_frontends/jp/cmd_forums.py:123
+msgid "forum key (DEFAULT: default forums)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:74
+msgid "forums have been edited"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:115
+msgid "get forums structure"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:168 sat_frontends/jp/cmd_pubsub.py:733
+msgid "no schema found"
+msgstr ""
+
+#: sat_frontends/jp/cmd_forums.py:180
+msgid "Forums structure edition"
+msgstr ""
+
+#: sat_frontends/jp/cmd_identity.py:37
+msgid "get identity data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_identity.py:45
+msgid "entity to check"
+msgstr ""
+
+#: sat_frontends/jp/cmd_identity.py:68
+msgid "update identity data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_identity.py:77
+msgid "nicknames of the entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_identity.py:101
+msgid "identity management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:38
+msgid "service discovery"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:42
+msgid "entity to discover"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:49
+msgid "type of data to discover"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:51
+msgid "node to use"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:57
+msgid "ignore cache"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:69
+msgid "category"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:111
+msgid "node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:116
+msgid "Features"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:118
+msgid "Identities"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:120
+msgid "Extensions"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:122
+msgid "Items"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:151 sat_frontends/jp/cmd_info.py:166
+msgid "error while doing discovery: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:190
+msgid "software version"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:193 sat_frontends/jp/cmd_info.py:258
+msgid "Entity to request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:201
+msgid "error while trying to get version: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:207
+msgid "Software name: {name}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:209
+msgid "Software version: {version}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:211
+msgid "Operating System: {os}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:225
+msgid "running session"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:243
+msgid "Error getting session infos: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:253
+msgid "devices of an entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:267
+msgid "Error getting devices infos: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_info.py:283
+msgid "Get various pieces of information on entities"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:61
+msgid "encoding of the input data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:69
+msgid "standard input"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:77
+msgid "short option"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:85
+msgid "long option"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:93
+msgid "positional argument"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:101
+msgid "ignore value"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:107
+msgid "don't actually run commands but echo what would be launched"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:110
+msgid "log stdout to FILE"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:113
+msgid "log stderr to FILE"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:128 sat_frontends/jp/cmd_input.py:193
+msgid "arguments in input data and in arguments sequence don't match"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:155 sat_frontends/jp/cmd_input.py:207
+msgid "values: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:161
+msgid "**SKIPPING**\n"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:184
+msgid "Invalid argument, an option type is expected, got {type_}:{name}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:199
+msgid "command {idx}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:252 sat_frontends/primitivus/xmlui.py:461
+msgid "OK"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:254
+msgid "FAILED"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:274
+msgid "comma-separated values"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:283
+msgid "starting row (previous ones will be ignored)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:291
+msgid "split value in several options"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:299
+msgid "action to do on empty value ({choices})"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:314
+msgid "--empty value must be one of {choices}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_input.py:349
+msgid "launch command with external input"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:38
+msgid "create and send an invitation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:127
+msgid "you need to specify an email address to send email invitation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:161
+msgid "get invitation data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:165
+#: sat_frontends/jp/cmd_invitation.py:225
+#: sat_frontends/jp/cmd_invitation.py:289
+msgid "invitation UUID"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:170
+msgid "start profile session and retrieve jid"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:185
+msgid "can't get invitation data: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:198
+msgid "can't start session: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:208
+msgid "can't retrieve jid: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:221
+msgid "delete guest account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:233
+msgid "can't delete guest account: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:242
+msgid "modify existing invitation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:299
+msgid "you can't set {arg_name} in both optional argument and extra"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:314
+msgid "invitations have been modified successfuly"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:328
+msgid "list invitations data"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:346
+msgid "return only invitations linked to this profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_invitation.py:370
+msgid "invitation of user(s) without XMPP account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:43 sat_frontends/jp/cmd_list.py:81
+#: sat_frontends/jp/cmd_list.py:150 sat_frontends/jp/cmd_merge_request.py:39
+#: sat_frontends/jp/cmd_merge_request.py:124
+#: sat_frontends/jp/cmd_merge_request.py:169
+msgid "auto"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:45
+msgid "get lists"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:82
+msgid "set a list item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:94
+msgid "field(s) to set (required)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:101
+msgid "update existing item instead of replacing it (DEFAULT: auto)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:107
+msgid "id, URL of the item to update, or nothing for new item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:151
+msgid "delete a list item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:156 sat_frontends/jp/cmd_pubsub.py:884
+#: sat_frontends/jp/cmd_roster.py:135
+msgid "delete without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:159 sat_frontends/jp/cmd_pubsub.py:887
+msgid "notify deletion"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:163
+msgid "id of the item to delete"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:169
+msgid "You need to specify a list item to delete"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:171
+msgid "Are you sure to delete list item {item_id} ?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:174 sat_frontends/jp/cmd_pubsub.py:897
+msgid "item deletion cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:184 sat_frontends/jp/cmd_pubsub.py:907
+msgid "can't delete item: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:187 sat_frontends/jp/cmd_pubsub.py:910
+msgid "item {item} has been deleted"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:200
+msgid "import tickets from external software/dataset"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:225
+msgid ""
+"specified field in import data will be put in dest field (default: use "
+"same field name, or ignore if it doesn't exist)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:235
+msgid "PubSub service where the items must be uploaded (default: server)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:242
+msgid "PubSub node where the items must be uploaded (default: tickets' defaults)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:257
+msgid "Tickets upload started"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:260
+msgid "Tickets uploaded successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:264
+msgid "Error while uploading tickets: {error_msg}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:319
+msgid ""
+"fields_map must be specified either preencoded in --option or using "
+"--map, but not both at the same time"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:337
+msgid "Error while trying to import tickets: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_list.py:350
+msgid "pubsub lists handling"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:40
+msgid "publish or update a merge request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:48
+msgid "id or URL of the request to update, or nothing for a new one"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:55
+#: sat_frontends/jp/cmd_merge_request.py:179
+msgid "path of the repository (DEFAULT: current directory)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:61
+msgid "publish merge request without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:68
+msgid "labels to categorize your request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:75
+msgid ""
+"You are going to publish your changes to service [{service}], are you "
+"sure ?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:80
+msgid "merge request publication cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:105
+msgid "Merge request published at {published_id}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:110
+msgid "Merge request published"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:125
+msgid "get a merge request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:170
+msgid "import a merge request"
+msgstr ""
+
+#: sat_frontends/jp/cmd_merge_request.py:209
+msgid "merge-request management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:34
+msgid "send a message to a contact"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:38
+msgid "language of the message"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:44
+msgid ""
+"separate xmpp messages: send one message per line instead of one message "
+"alone."
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:53
+msgid "add a new line at the beginning of the input (usefull for ascii art ;))"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:60
+msgid "subject of the message"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:63
+msgid "language of subject"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:70
+msgid "type of the message"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:73
+msgid "encrypt message using given algorithm"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:79
+msgid "XHTML body"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:80
+msgid "rich body"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:195
+msgid "query archives using MAM"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:203
+msgid "start fetching archive from this date (default: from the beginning)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:207
+msgid "end fetching archive after this date (default: no limit)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:210
+msgid "retrieve only archives with this jid"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:213
+msgid "maximum number of items to retrieve, using RSM (default: 20))"
+msgstr ""
+
+#: sat_frontends/jp/cmd_message.py:276
+msgid "messages handling"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:32
+msgid "get a parameter value"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:37 sat_frontends/jp/cmd_param.py:94
+msgid "category of the parameter"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:39 sat_frontends/jp/cmd_param.py:95
+#: sat_frontends/jp/cmd_param.py:96
+msgid "name of the parameter"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:45
+msgid "name of the attribute to get"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:48 sat_frontends/jp/cmd_param.py:98
+msgid "security limit"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:62
+msgid "can't find requested parameters: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:79
+msgid "can't find requested parameter: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:90
+msgid "set a parameter value"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:111
+msgid "can't set requested parameter: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:125
+msgid "save parameters template to xml file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:129
+msgid "output file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:136
+msgid "can't save parameters to file: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:140
+msgid "parameters saved to file {filename}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:155
+msgid "load parameters template from xml file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:159
+msgid "input file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:166
+msgid "can't load parameters from file: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:170
+msgid "parameters loaded from file {filename}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_param.py:182
+msgid "Save/load parameters template"
+msgstr ""
+
+#: sat_frontends/jp/cmd_ping.py:29
+msgid "ping XMPP entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_ping.py:32
+msgid "jid to ping"
+msgstr ""
+
+#: sat_frontends/jp/cmd_ping.py:34
+msgid "output delay only (in s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_ping.py:41
+msgid "can't do the ping: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pipe.py:38
+msgid "send a pipe a stream"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pipe.py:97
+msgid "receive a pipe stream"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pipe.py:104
+msgid "Jids accepted (none means \"accept everything\")"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pipe.py:159
+msgid "stream piping through XMPP"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:33
+msgid "The name of the profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:51
+msgid "You need to use either --connect or --start-session"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:78
+msgid "the name of the profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:81
+msgid "the password of the profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:83 sat_frontends/jp/cmd_profile.py:238
+msgid "the jid of the profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:86
+msgid "the password of the XMPP account (use profile password if not specified)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:93 sat_frontends/jp/cmd_profile.py:247
+msgid "connect this profile automatically when backend starts"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:97
+msgid "set to component import name (entry point) if this is a component"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:154
+msgid "delete profile without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:174
+msgid "get information about a profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:180
+msgid "show the XMPP password IN CLEAR TEXT"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:184
+msgid "XMPP password"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:185
+msgid "autoconnect (backend)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:209
+msgid "get clients profiles only"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:229
+msgid "modify an existing profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:234
+msgid "change the password of the profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:237
+msgid "disable profile password (dangerous!)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:240
+msgid "change the password of the XMPP account"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:243
+msgid "set as default profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_profile.py:280
+msgid "profile commands"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:59
+msgid "retrieve node configuration"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:68
+msgid "data key to filter"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:116
+msgid "create a node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:135 sat_frontends/jp/cmd_pubsub.py:288
+msgid "don't prepend \"pubsub#\" prefix to field names"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:158
+msgid "can't create node: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:162
+msgid "node created successfully: "
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:176
+msgid "purge a node (i.e. remove all items from it)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:184
+msgid "purge node without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:190
+msgid ""
+"Are you sure to purge PEP node [{node}]? This will delete ALL items from "
+"it!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:195
+msgid ""
+"Are you sure to delete node [{node}] on service [{service}]? This will "
+"delete ALL items from it!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:199
+msgid "node purge cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:208
+msgid "can't purge node: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:211
+msgid "node [{node}] purged successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:223
+msgid "delete a node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:231
+msgid "delete node without confirmation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:237
+msgid "Are you sure to delete PEP node [{node}] ?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:241
+msgid "Are you sure to delete node [{node}] on service [{service}]?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:244
+msgid "node deletion cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:256
+msgid "node [{node}] deleted successfully"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:270
+msgid "set node configuration"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:309
+msgid "node configuration successful"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:320
+msgid "import raw XML to a node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:327 sat_frontends/jp/cmd_pubsub.py:1608
+msgid "do a pubsub admin request, needed to change publisher"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:332
+msgid ""
+"path to the XML file with data to import. The file must contain whole XML"
+" of each item to import."
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:359
+msgid "You are not using list of pubsub items, we can't import this file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:370
+msgid "Items are imported without using admin mode, publisher can't be changed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:391
+msgid "items published with id(s) {items_ids}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:396 sat_frontends/jp/cmd_pubsub.py:1641
+msgid "items published"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:409
+msgid "retrieve node affiliations (for node owner)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:439
+msgid "set affiliations (for node owner)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:469
+msgid "affiliations have been set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:481
+msgid "set or retrieve node affiliations"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:494
+msgid "retrieve node subscriptions (for node owner)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:532
+msgid "subscription must be one of {}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:548
+msgid "set/modify subscriptions (for node owner)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:563
+msgid "entity/subscription couple(s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:578
+msgid "subscriptions have been set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:590
+msgid "get or modify node subscriptions"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:603
+msgid "set/replace a schema"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:607
+msgid "schema to set (must be XML)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:621 sat_frontends/jp/cmd_pubsub.py:656
+msgid "schema has been set"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:637
+msgid "edit a schema"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:709
+msgid "get schema"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:742
+msgid "data schema manipulation"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:761
+msgid "node handling"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:774
+msgid "publish a new item or update an existing one"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:783
+msgid "id, URL of the item to update, keyword, or nothing for new item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:805
+msgid "can't send item: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:827
+msgid "get pubsub item(s)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:835
+msgid "subscription id"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:879
+msgid "delete an item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:892
+msgid "You need to specify an item to delete"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:894
+msgid "Are you sure to delete item {item_id} ?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:924
+msgid "edit an existing or new pubsub item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:968
+msgid "Item has not payload"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:992
+msgid "rename a pubsub item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1024
+msgid "subscribe to a node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1039
+msgid "can't subscribe to node: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1042
+msgid "subscription done"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1044
+msgid "subscription id: {sub_id}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1059
+msgid "unsubscribe from a node"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1073
+msgid "can't unsubscribe from node: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1076
+msgid "subscription removed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1088
+msgid "retrieve all subscriptions on a service"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1102
+msgid "can't retrieve subscriptions: {e}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1117
+msgid "retrieve all affiliations on a service"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1160
+msgid "search items corresponding to filters"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1185
+msgid "maximum depth of recursion (will search linked nodes if > 0, DEFAULT: 0)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1197
+msgid "maximum number of items to get per node ({} to get all items, DEFAULT: 30)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1207
+msgid "namespace to use for xpath"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1216
+msgid "filters"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1217
+msgid "only items corresponding to following filters will be kept"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1226
+msgid "full text filter, item must contain this string (XML included)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1235
+msgid "like --text but using a regular expression"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1244
+msgid "filter items which has elements matching this xpath"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1253
+msgid ""
+"Python expression which much return a bool (True to keep item, False to "
+"reject it). \"item\" is raw text item, \"item_xml\" is lxml's "
+"etree.Element"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1266
+msgid "filters flags"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1267
+msgid "filters modifiers (change behaviour of following filters)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1278
+msgid "(don't) ignore case in following filters (DEFAULT: case sensitive)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1289
+msgid "(don't) invert effect of following filters (DEFAULT: don't invert)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1300
+msgid "(don't) use DOTALL option for regex (DEFAULT: don't use)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1311
+msgid "keep only the matching part of the item"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1320
+msgid "action to do on found items (DEFAULT: print)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1383
+msgid ""
+"item doesn't looks like XML, you have probably used --only-matching "
+"somewhere before and we have no more XML"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1420
+msgid "--only-matching used with fixed --text string, are you sure?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1441
+msgid "can't use xpath: {reason}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1476
+msgid "unknown filter type {type}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1534
+msgid "executed command failed with exit code {ret}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1566
+msgid "Command can only be used with {actions} actions"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1572
+msgid "you need to specify a command to execute"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1575
+msgid "empty node is not handled yet"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1596
+msgid "modify items of a node using an external command/script"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1603
+msgid "apply transformation (DEFAULT: do a dry run)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1614
+msgid "if command return a non zero exit code, ignore the item and continue"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1622
+msgid "get all items by looping over all pages using RSM"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1626
+msgid ""
+"path to the command to use. Will be called repetitivly with an item as "
+"input. Output (full item XML) will be used as new one. Return \"DELETE\" "
+"string to delete the item, and \"SKIP\" to ignore it"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1636
+msgid "items published with ids {item_ids}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1659
+msgid "Can't retrieve all items, RSM metadata not available"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1664
+msgid "Can't retrieve all items, bad RSM metadata: {msg}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1670
+msgid "All items transformed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1674
+msgid "Retrieving next page ({page_idx}/{page_total})"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1712
+msgid "Duplicate found on item {item_id}, we have probably handled all items."
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1749
+msgid "Deleting item {item_id}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1766
+msgid "Skipping item {item_id}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1860 sat_frontends/jp/cmd_uri.py:53
+msgid "build URI"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1868
+msgid "profile (used when no server is specified)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1908
+msgid "create a Pubsub hook"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1917
+msgid "hook type"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1923
+msgid "make hook persistent across restarts"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1927
+msgid "argument of the hook (depend of the type)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1936
+msgid "{path} is not a file"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1965
+msgid "delete a Pubsub hook"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1974
+msgid "hook type to remove, empty to remove all (DEFAULT: remove all)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:1981
+msgid "argument of the hook to remove, empty to remove all (DEFAULT: remove all)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:2001
+msgid "{nb_deleted} hook(s) have been deleted"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:2013
+msgid "list hooks of a profile"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:2029
+msgid "No hook found."
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:2043
+msgid "trigger action on Pubsub notifications"
+msgstr ""
+
+#: sat_frontends/jp/cmd_pubsub.py:2067
+msgid "PubSub nodes/items management"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:36
+msgid "retrieve the roster entities"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:89
+msgid "set metadata for a roster entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:93
+msgid "name to use for this entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:96
+msgid "groups for this entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:99
+msgid "replace all metadata instead of adding them"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:101 sat_frontends/jp/cmd_roster.py:138
+msgid "jid of the roster entity"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:131
+msgid "remove an entity from roster"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:142
+msgid "Are you sure to delete {entity} fril your roster?"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:145
+msgid "entity deletion cancelled"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:158
+msgid "Show statistics about a roster"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:226
+msgid "purge the roster from its contacts with no subscription"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:231
+msgid "also purge contacts with no 'from' subscription"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:234
+msgid "also purge contacts with no 'to' subscription"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:306
+msgid "do a full resynchronisation of roster with server"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:318
+msgid "Roster resynchronized"
+msgstr ""
+
+#: sat_frontends/jp/cmd_roster.py:327
+msgid "Manage an entity's roster"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:33
+msgid ""
+"Welcome to {app_name} shell, the Salut à Toi shell !\n"
+"\n"
+"This enrironment helps you using several {app_name} commands with similar"
+" parameters.\n"
+"\n"
+"To quit, just enter \"quit\" or press C-d.\n"
+"Enter \"help\" or \"?\" to know what to do\n"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:48
+msgid "launch jp in shell (REPL) mode"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:63
+msgid "bad command path"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:104
+msgid "COMMAND {external}=> {args}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:105
+msgid "(external) "
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:149
+msgid "Shell commands:"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:152
+msgid "Action commands:"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:172
+msgid "verbose mode is {status}"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:173
+msgid "ENABLED"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:173
+msgid "DISABLED"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:214
+msgid "arg profile={profile} (logged profile)"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:236
+msgid "no argument in USE"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:238
+msgid "arguments in USE:"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:274
+msgid "argument {name} not found"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:280
+msgid "argument {name} removed"
+msgstr ""
+
+#: sat_frontends/jp/cmd_shell.py:288
+msgid "good bye!"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:37
+msgid "parse URI"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:42
+msgid "XMPP URI to parse"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:57
+msgid "URI type"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:58
+msgid "URI path"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:66
+msgid "URI fields"
+msgstr ""
+
+#: sat_frontends/jp/cmd_uri.py:80
+msgid "XMPP URI parsing/generation"
+msgstr ""
+
+#: sat_frontends/jp/common.py:437
+msgid "no item found at all, we create a new one"
+msgstr ""
+
+#: sat_frontends/jp/common.py:440
+msgid "item \"{item}\" not found, we create a new item withthis id"
+msgstr ""
+
+#: sat_frontends/jp/common.py:458
+msgid "item \"{item}\" found, we edit it"
+msgstr ""
+
+#: sat_frontends/jp/common.py:785
+msgid "No {key} URI specified for this project, please specify service and node"
+msgstr ""
+
+#: sat_frontends/jp/common.py:821
+msgid "Invalid URI found: {uri}"
+msgstr ""
+
+#: sat_frontends/jp/loops.py:28
+msgid "User interruption: good bye"
+msgstr ""
+
+#: sat_frontends/jp/output_template.py:53
+msgid "Can't find requested template: {template_path}"
+msgstr ""
+
+#: sat_frontends/jp/output_template.py:74
+msgid ""
+"no default template set for this command, you need to specify a template "
+"using --oo template=[path/to/template.html]"
+msgstr ""
+
+#: sat_frontends/jp/output_template.py:89
+msgid "Can't parse template, please check its syntax"
+msgstr ""
+
+#: sat_frontends/jp/output_template.py:109
+msgid ""
+"Browser opening requested.\n"
+"Temporary files are put in the following directory, you'll have to delete"
+" it yourself once finished viewing: {}"
+msgstr ""
+
+#: sat_frontends/jp/output_xml.py:56
+msgid ""
+"Pygments is not available, syntax highlighting is not possible. Please "
+"install if from http://pygments.org or with pip install pygments"
+msgstr ""
+
+#: sat_frontends/jp/xml_tools.py:50
+msgid "Can't parse the payload XML in input: {msg}"
+msgstr ""
+
+#: sat_frontends/jp/xml_tools.py:62
+msgid "<item> can only have one child element (the payload)"
+msgstr ""
+
+#: sat_frontends/jp/xmlui_manager.py:224
+msgid "(enter: {value})"
+msgstr ""
+
+#: sat_frontends/jp/xmlui_manager.py:318
+msgid "your choice (0-{limit_max}): "
+msgstr ""
+
+#: sat_frontends/jp/xmlui_manager.py:348
+msgid "your choice (0,1): "
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:90
+msgid "Error while sending message ({})"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:135
+msgid "Please specify the globbing pattern to search for"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:377
+msgid "Configuration Error"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:377
+msgid ""
+"Something went wrong while reading the configuration, please check "
+":messages"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:504
+msgid "Pleeeeasse, I can't even breathe !"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:534
+#: sat_frontends/primitivus/profile_manager.py:64
+msgid "Connect"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:536
+msgid "Parameters"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:537 sat_frontends/primitivus/base.py:851
+msgid "About"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:538
+msgid "Exit"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:542
+msgid "Join room"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:547
+msgid "Main menu"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:658
+msgid "{app}: a new event has just happened{entity}"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:736
+msgid "Chat menu"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:790
+msgid "Unmanaged action"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:801
+msgid "unkown"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:831
+#, python-format
+msgid "Can't get parameters (%s)"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:846
+msgid "Entering a MUC room"
+msgstr ""
+
+#: sat_frontends/primitivus/base.py:846
+msgid "Please enter MUC's JID"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:40
+msgid "{} occupants"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:381
+msgid "Game"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:502
+msgid "You have been mentioned by {nick} in {room}"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:513
+msgid "{entity} is talking to you"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:612
+msgid "Results for searching the globbing pattern: {}"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:618
+msgid "Type ':history <lines>' to reset the chat history"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:652
+#, python-format
+msgid "Primitivus: %s is talking to you"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:656
+#, python-format
+msgid "Primitivus: %(user)s mentioned you in room '%(room)s'"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:666
+msgid "Can't start game"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:667
+msgid "You need to be exactly 4 peoples in the room to start a Tarot game"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:698
+msgid "Change title"
+msgstr ""
+
+#: sat_frontends/primitivus/chat.py:699
+msgid "Enter the new title"
+msgstr ""
+
+#: sat_frontends/primitivus/game_tarot.py:290
+msgid "Please choose your contrat"
+msgstr ""
+
+#: sat_frontends/primitivus/game_tarot.py:311
+msgid "You win \\o/"
+msgstr ""
+
+#: sat_frontends/primitivus/game_tarot.py:311
+msgid "You loose :("
+msgstr ""
+
+#: sat_frontends/primitivus/game_tarot.py:331
+msgid "Cards played are invalid !"
+msgstr ""
+
+#: sat_frontends/primitivus/game_tarot.py:369
+msgid "Do you put these cards in chien ?"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:36
+msgid "Login:"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:37
+msgid "Password:"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:48
+msgid "New"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:49
+msgid "Delete"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:81
+msgid "Profile Manager"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:142
+msgid "Can't create profile"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:150
+msgid "New profile"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:151
+msgid "Please enter a new profile name"
+msgstr ""
+
+#: sat_frontends/primitivus/profile_manager.py:160
+msgid "Are you sure you want to delete the profile {} ?"
+msgstr ""
+
+#: sat_frontends/primitivus/progress.py:37
+msgid "Clear progress list"
+msgstr ""
+
+#: sat_frontends/primitivus/status.py:57
+msgid "Set your presence"
+msgstr ""
+
+#: sat_frontends/primitivus/status.py:67
+msgid "Set your status"
+msgstr ""
+
+#: sat_frontends/primitivus/status.py:68
+msgid "New status"
+msgstr ""
+
+#: sat_frontends/primitivus/xmlui.py:78
+msgid "Unknown div_char"
+msgstr ""
+
+#: sat_frontends/primitivus/xmlui.py:456
+msgid "Submit"
+msgstr ""
+
+#: sat_frontends/primitivus/xmlui.py:458 sat_frontends/primitivus/xmlui.py:473
+msgid "Cancel"
+msgstr ""
+
+#: sat_frontends/quick_frontend/constants.py:31
+msgid "Away from keyboard"
+msgstr ""
+
+#: sat_frontends/quick_frontend/constants.py:33
+msgid "Extended away"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:85
+msgid "Error while trying to get autodisconnect param, ignoring: {}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:200
+msgid "Can't get profile parameter: {msg}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:324
+msgid "Can't get namespaces map: {msg}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:330
+msgid "Can't retrieve encryption plugins: {msg}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:376
+msgid "Error while initialising bridge: {}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:662
+#, python-format
+msgid "Can't connect profile [%s]"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:723
+msgid "Connected"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:739
+msgid "Disconnected"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1154
+msgid "The contact {contact} has accepted your subscription"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1157
+#: sat_frontends/quick_frontend/quick_app.py:1176
+msgid "Subscription confirmation"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1162
+msgid "The contact {contact} has refused your subscription"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1165
+msgid "Subscription refusal"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1172
+msgid ""
+"The contact {contact} wants to subscribe to your presence.\n"
+"Do you accept ?"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1229
+#, python-format
+msgid "param update: [%(namespace)s] %(name)s = %(value)s"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_app.py:1233
+#, python-format
+msgid "Changing JID to %s"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:624
+msgid "now we print the history"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:626
+msgid " ({} messages)"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:683
+msgid "Can't get history: {}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:705
+msgid "Can't get encryption state: {reason}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:775
+msgid "message encryption started with {target} using {encryption}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:780
+msgid "message encryption stopped with {target} (was using {encryption})"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:833
+msgid "<= {nick} has left the room ({count})"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_chat.py:837
+msgid "<=> {nick} re-entered the room ({count})"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_contact_list.py:611
+msgid "Trying to delete an unknow entity [{}]"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_contact_list.py:664
+msgid "received presence from entity without resource: {}"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_contact_management.py:73
+msgid "Trying to get attribute for an unknown contact"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_contact_management.py:89
+msgid "INTERNAL ERROR: Key log.error"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_contact_management.py:101
+#, python-format
+msgid "Trying to update an unknown contact: %s"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_games.py:84
+msgid ""
+"A {game} activity between {players} has been started, but you couldn't "
+"take part because your client doesn't support it."
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_games.py:87
+msgid "{game} Game"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:116
+msgid "Trying to plug an unknown profile key ({})"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:118
+msgid "Profile plugging in error"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:133
+msgid "Can't get profile parameter"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:144
+msgid "A profile with this name already exists"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:146
+msgid "Profile creation cancelled by backend"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:148
+msgid "You profile name is not valid"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:152
+msgid "Can't create profile ({})"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:172
+msgid "You can't connect manually and automatically at the same time"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:180
+msgid "No profile selected"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_profile_manager.py:181
+msgid "You need to create and select at least one profile before connecting"
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_utils.py:40
+msgid ""
+"\n"
+"    %prog [options]\n"
+"\n"
+"    %prog --help for options list\n"
+"    "
+msgstr ""
+
+#: sat_frontends/quick_frontend/quick_utils.py:49
+msgid "Select the profile to use"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:233
+msgid "Nothing to submit"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:449
+msgid "XMLUI can have only one main container"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:514
+#, python-format
+msgid "Unknown container [%s], using default one"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:527
+msgid "Internal Error, container has not _xmluiAppend method"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:674
+#, python-format
+msgid "FIXME FIXME FIXME: widget type [%s] is not implemented"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:678
+#, python-format
+msgid "FIXME FIXME FIXME: type [%s] is not implemented"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:696
+#, python-format
+msgid "No change listener on [%s]"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:722
+#, python-format
+msgid "Unknown tag [%s]"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:780
+msgid "No callback_id found"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:813
+#, python-format
+msgid "FIXME: XMLUI internal action [%s] is not implemented"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:909 sat_frontends/tools/xmlui.py:921
+#: sat_frontends/tools/xmlui.py:971 sat_frontends/tools/xmlui.py:983
+msgid "The form data is not sent back, the type is not managed properly"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:915 sat_frontends/tools/xmlui.py:977
+msgid "Cancelling form"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:1096
+msgid "XMLUI class already registered for {type_}, ignoring"
+msgstr ""
+
+#: sat_frontends/tools/xmlui.py:1135
+msgid "You must register classes with registerClass before creating a XMLUI"
+msgstr ""
+