Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2012-04-13 00:07:30 +0400
committerYann Leboulanger <asterix@lagaule.org>2012-04-13 00:07:30 +0400
commit0c36f50196c2a0220fbe27f49b06425f576360e6 (patch)
tree3a40e855bbd72489e7e6c6ac3834f637837cd35e
parent66df7c30ca8a655a078708d3dbd0623e292a69dd (diff)
parent73899b95d3ac90ed094a2a9f7e70417c36b25d2b (diff)
merge from trunk
-rw-r--r--ChangeLog3
-rw-r--r--README.html7
-rwxr-xr-xautogen.sh10
-rw-r--r--configure.ac4
-rw-r--r--data/gui/accounts_window.ui2
-rw-r--r--data/gui/advanced_configuration_window.ui58
-rw-r--r--data/gui/chat_control.ui2
-rw-r--r--data/gui/groupchat_control.ui2
-rw-r--r--data/gui/roster_window.ui2
-rw-r--r--data/sounds/attention.wavbin0 -> 146674 bytes
-rw-r--r--debian/README.Debian2
-rw-r--r--debian/changelog4
-rw-r--r--debian/control8
-rw-r--r--debian/copyright2
-rw-r--r--gajim.nsi138
-rw-r--r--plugins/dbus_plugin/plugin.py2
-rwxr-xr-xplugins/snarl_notifications/PySnarl.py772
-rw-r--r--plugins/snarl_notifications/__init__.py1
-rw-r--r--plugins/snarl_notifications/manifest.ini11
-rw-r--r--plugins/snarl_notifications/plugin.py71
-rw-r--r--po/POTFILES.skip3
-rw-r--r--po/fr.po3513
-rw-r--r--po/ja.po3254
-rw-r--r--po/ru.po2262
-rw-r--r--po/uk.po2574
-rw-r--r--setup_win32.py2
-rw-r--r--src/adhoc_commands.py6
-rw-r--r--src/advanced_configuration_window.py57
-rw-r--r--src/atom_window.py2
-rw-r--r--src/cell_renderer_image.py2
-rw-r--r--src/chat_control.py195
-rw-r--r--src/command_system/implementation/standard.py24
-rw-r--r--src/common/atom.py2
-rw-r--r--src/common/caps_cache.py2
-rw-r--r--src/common/check_X509.py178
-rw-r--r--src/common/check_paths.py2
-rw-r--r--src/common/commands.py20
-rw-r--r--src/common/config.py117
-rw-r--r--src/common/configpaths.py2
-rw-r--r--src/common/connection.py89
-rw-r--r--src/common/connection_handlers.py12
-rw-r--r--src/common/connection_handlers_events.py60
-rw-r--r--src/common/contacts.py2
-rw-r--r--src/common/dataforms.py2
-rw-r--r--src/common/dbus_support.py2
-rw-r--r--src/common/defs.py7
-rw-r--r--src/common/demandimport.py30
-rw-r--r--src/common/dh.py2
-rw-r--r--src/common/events.py4
-rw-r--r--src/common/exceptions.py2
-rwxr-xr-xsrc/common/fuzzyclock.py2
-rw-r--r--src/common/gajim.py12
-rw-r--r--src/common/ged.py6
-rw-r--r--src/common/gnupg.py2
-rw-r--r--src/common/gpg.py2
-rw-r--r--src/common/helpers.py10
-rw-r--r--src/common/i18n.py2
-rw-r--r--src/common/jingle.py2
-rw-r--r--src/common/jingle_rtp.py79
-rw-r--r--src/common/jingle_transport.py32
-rw-r--r--src/common/latex.py19
-rw-r--r--src/common/location_listener.py2
-rw-r--r--src/common/logger.py51
-rw-r--r--src/common/optparser.py5
-rw-r--r--src/common/passwords.py4
-rw-r--r--src/common/pep.py2
-rw-r--r--src/common/protocol/bytestream.py2
-rw-r--r--src/common/proxy65_manager.py2
-rw-r--r--src/common/pubsub.py2
-rw-r--r--src/common/rst_xhtml_generator.py2
-rw-r--r--src/common/sleepy.py2
-rw-r--r--src/common/socks5.py2
-rw-r--r--src/common/stanza_session.py4
-rw-r--r--src/common/xmpp/auth_nb.py13
-rw-r--r--src/common/xmpp/client_nb.py1
-rw-r--r--src/common/xmpp/protocol.py1
-rw-r--r--src/common/xmpp/smacks.py2
-rw-r--r--src/common/xmpp/stringprepare.py2
-rw-r--r--src/common/xmpp/tls_nb.py2
-rw-r--r--src/common/zeroconf/client_zeroconf.py12
-rw-r--r--src/common/zeroconf/connection_zeroconf.py11
-rw-r--r--src/config.py25
-rw-r--r--src/conversation_textview.py8
-rw-r--r--src/dataforms_widget.py2
-rw-r--r--src/dialogs.py45
-rw-r--r--src/disco.py2
-rw-r--r--src/features_window.py21
-rw-r--r--src/filetransfers_window.py2
-rw-r--r--src/gajim-remote.py2
-rw-r--r--src/gajim.py14
-rw-r--r--src/gajim_themes_window.py2
-rw-r--r--src/groupchat_control.py12
-rw-r--r--src/groups.py2
-rw-r--r--src/gtkexcepthook.py2
-rw-r--r--src/gtkgui_helpers.py2
-rw-r--r--src/gui_interface.py17
-rw-r--r--src/gui_menu_builder.py7
-rw-r--r--src/history_manager.py2
-rw-r--r--src/history_window.py2
-rw-r--r--src/htmltextview.py2
-rw-r--r--src/ipython_view.py174
-rw-r--r--src/message_control.py2
-rw-r--r--src/message_textview.py2
-rw-r--r--src/message_window.py3
-rw-r--r--src/music_track_listener.py2
-rw-r--r--src/negotiation.py2
-rw-r--r--src/network_manager_listener.py2
-rw-r--r--src/notify.py33
-rw-r--r--src/plugins/pluginmanager.py5
-rw-r--r--src/profile_window.py2
-rw-r--r--src/remote_control.py4
-rw-r--r--src/roster_window.py315
-rw-r--r--src/search_window.py2
-rw-r--r--src/session.py6
-rw-r--r--src/statusicon.py2
-rw-r--r--src/tooltips.py7
-rw-r--r--src/upower_listener.py2
-rw-r--r--src/vcard.py14
118 files changed, 7749 insertions, 6823 deletions
diff --git a/ChangeLog b/ChangeLog
index fd3d30f63..e07512b7a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Gajim 0.15 (XX XX 2011)
+Gajim 0.15 (18 March 2012)
* Plugin system
* Whiteboard (via a plugin)
@@ -9,6 +9,7 @@ Gajim 0.15 (XX XX 2011)
* Roster filtrering
* UPower support
* GPG support for windows
+ * Spell checking support for windows
Gajim 0.14.4 (22 July 2011)
diff --git a/README.html b/README.html
index df3362337..7cb2f7aea 100644
--- a/README.html
+++ b/README.html
@@ -15,12 +15,13 @@
<h2>Runtime Requirements</h2>
<ul>
<li>python2.5 or higher</li>
-<li>pygtk2.16 or higher</li>
+<li>pygtk2.22 or higher</li>
</ul>
<h2>Optional Runtime Requirements</h2>
<ul>
-<li><a href="http://pyopenssl.sourceforge.net/">PyOpenSSL</a> (python-pyopenssl package in Debian) (>=0.9) for <em>secure</em> SSL/TLS. Python's default SSL is insecure, so this package is highly recommended!</li>
+<li><a href="http://pyopenssl.sourceforge.net/">PyOpenSSL</a> (python-pyopenssl package in Debian) (>=0.12) for <em>secure</em> SSL/TLS. Python's default SSL is insecure, so this package is highly recommended!</li>
+<li>python-pyasn1 to check SSL/TLS certificate</li>
<li>python-crypto to enable End to end encryption</li>
<li>For idle module, libxss library</li>
<li>For zeroconf (bonjour), the "enable link-local messaging" checkbox, you need dbus-glib, python-avahi</li>
@@ -111,7 +112,7 @@ Wiki can be found at <a href="http://trac.gajim.org/wiki">http://trac.gajim.org/
<br/>
<br/>
<br/>
-(C) 2003-2011<br/>
+(C) 2003-2012<br/>
The Gajim Team<br/>
http://gajim.org<br/>
<br/>
diff --git a/autogen.sh b/autogen.sh
index b2e46611a..62aa7fe8b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
- gajimversion="0.15-beta2"
+ gajimversion="0.15"
if [ -d ".hg" ]; then
node=$(hg tip --template "{node}")
hgversion="-${node:0:12}"
@@ -20,8 +20,12 @@
&& for p in `ls data/gui/*.ui`; do echo "[type: gettext/glade]$p" >> \
po/POTFILES.in; done \
&& ls -1 data/gajim.desktop.in.in \
- src/*py src/common/*py src/common/zeroconf/*.py src/plugins/*.py| grep -v ipython_view.py >> \
- po/POTFILES.in || exit 1
+ src/*.py src/common/*.py src/command_system/implementation/*.py src/common/zeroconf/*.py src/plugins/*.py | grep -v ipython_view.py >> \
+ po/POTFILES.in \
+ && echo -e "data/gajim.desktop.in\nsrc/ipython_view.py" > po/POTFILES.skip || exit 1
+ if [ $(find plugins/ -name '*.py' | wc -l) -gt 0 ];then
+ ls -1 plugins/*/*.py plugins/*/*.ui >> po/POTFILES.skip
+ fi
if test -z `which pkg-config 2>/dev/null`;then
echo "***Error: pkg-config not found***"
echo "See README.html for build requirements."
diff --git a/configure.ac b/configure.ac
index d9ce3bf06..11f6c2771 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,12 +47,12 @@ AC_ARG_ENABLE(site-packages,
instead of DATADIR/gajim/src.])]
,
AC_SUBST([gajim_srcdir], [\${pkgpythondir}])
-AC_SUBST([gajim_pluginsdir], [\${pkgpythondir}])
,
AC_SUBST([gajim_srcdir], [\${datadir}/\${PACKAGE}/src])
-AC_SUBST([gajim_pluginsdir], [\${datadir}/\${PACKAGE}/plugins])
)
+AC_SUBST([gajim_pluginsdir], [\${datadir}/\${PACKAGE}/plugins])
+
AS_AC_EXPAND(GAJIM_SRCDIR, "${gajim_srcdir}")
AS_AC_EXPAND(PKGDATADIR, "${datadir}/${PACKAGE}")
AS_AC_EXPAND(DOCDIR, "${docdir}")
diff --git a/data/gui/accounts_window.ui b/data/gui/accounts_window.ui
index de088497e..8eb28ff1b 100644
--- a/data/gui/accounts_window.ui
+++ b/data/gui/accounts_window.ui
@@ -308,7 +308,7 @@
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="synchronise_contacts_button1">
- <property name="label" translatable="yes">Synchronise contacts</property>
+ <property name="label" translatable="yes">Synchronize contacts</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
diff --git a/data/gui/advanced_configuration_window.ui b/data/gui/advanced_configuration_window.ui
index db5b1e9cb..52df66599 100644
--- a/data/gui/advanced_configuration_window.ui
+++ b/data/gui/advanced_configuration_window.ui
@@ -1,24 +1,25 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.16"/>
- <!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="advanced_configuration_window">
+ <property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes">Advanced Configuration Editor</property>
<property name="role">ace</property>
<property name="default_width">650</property>
<property name="default_height">540</property>
<property name="type_hint">dialog</property>
- <signal name="destroy" handler="on_advanced_configuration_window_destroy"/>
+ <signal name="destroy" handler="on_advanced_configuration_window_destroy" swapped="no"/>
<child>
<object class="GtkVBox" id="vbox70">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">6</property>
- <property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkTable" id="table26">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="n_rows">2</property>
<property name="n_columns">2</property>
<property name="column_spacing">12</property>
@@ -26,6 +27,7 @@
<child>
<object class="GtkLabel" id="label248">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Filter:</property>
</object>
@@ -38,7 +40,7 @@
<object class="GtkEntry" id="advanced_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <signal name="changed" handler="on_advanced_entry_changed"/>
+ <signal name="changed" handler="on_advanced_entry_changed" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
@@ -51,14 +53,16 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
- <property name="vscrollbar_policy">automatic</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="advanced_treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="rules_hint">True</property>
- <signal name="row_activated" handler="on_advanced_treeview_row_activated"/>
+ <signal name="row-activated" handler="on_advanced_treeview_row_activated" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
</object>
</child>
</object>
@@ -71,23 +75,28 @@
</child>
</object>
<packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="frame36">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">3</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkAlignment" id="alignment90">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="left_padding">12</property>
<child>
<object class="GtkLabel" id="advanced_desc_label">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="wrap">True</property>
</object>
@@ -97,6 +106,7 @@
<child type="label">
<object class="GtkLabel" id="label357">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Description&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
@@ -104,11 +114,13 @@
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="restart_label">
+ <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;NOTE:&lt;/b&gt; You should restart Gajim for some settings to take effect</property>
<property name="use_markup">True</property>
@@ -123,27 +135,50 @@
<child>
<object class="GtkHButtonBox" id="hbuttonbox18">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="layout_style">end</property>
<child>
+ <object class="GtkButton" id="reset_button">
+ <property name="label" translatable="yes">_Reset to default</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ <property name="image">image1</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="on_reset_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkButton" id="advanced_close_button">
<property name="label">gtk-close</property>
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
- <signal name="clicked" handler="on_advanced_close_button_clicked"/>
+ <signal name="clicked" handler="on_advanced_close_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
<property name="padding">6</property>
<property name="position">3</property>
</packing>
@@ -151,4 +186,9 @@
</object>
</child>
</object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-undo</property>
+ </object>
</interface>
diff --git a/data/gui/chat_control.ui b/data/gui/chat_control.ui
index cd71b42e4..e1ea08927 100644
--- a/data/gui/chat_control.ui
+++ b/data/gui/chat_control.ui
@@ -60,7 +60,7 @@
<object class="GtkLabel" id="banner_label">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">label</property>
+ <property name="label">label</property>
<property name="use_markup">True</property>
<property name="selectable">True</property>
<signal name="populate_popup" handler="on_banner_label_populate_popup"/>
diff --git a/data/gui/groupchat_control.ui b/data/gui/groupchat_control.ui
index 9ae689e69..4dd48771a 100644
--- a/data/gui/groupchat_control.ui
+++ b/data/gui/groupchat_control.ui
@@ -54,7 +54,7 @@
<object class="GtkLabel" id="banner_label">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">label</property>
+ <property name="label">label</property>
<property name="use_markup">True</property>
<property name="selectable">True</property>
</object>
diff --git a/data/gui/roster_window.ui b/data/gui/roster_window.ui
index 1d222779a..3a4ced776 100644
--- a/data/gui/roster_window.ui
+++ b/data/gui/roster_window.ui
@@ -202,7 +202,7 @@
<child>
<object class="GtkCheckMenuItem" id="show_transports_menuitem">
<property name="visible">True</property>
- <property name="label" translatable="yes">Show T_rans_ports</property>
+ <property name="label" translatable="yes">Show T_ransports</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_show_transports_menuitem_activate"/>
</object>
diff --git a/data/sounds/attention.wav b/data/sounds/attention.wav
new file mode 100644
index 000000000..16c221182
--- /dev/null
+++ b/data/sounds/attention.wav
Binary files differ
diff --git a/debian/README.Debian b/debian/README.Debian
index f94442643..ef6dcef69 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -1,7 +1,7 @@
gajim for Debian
----------------
-For video chat support, you have to install python-farsight.
+For video chat support, you have to install python-farstream.
-- Yann Le Boulanger <asterix@lagaule.org>, Mon, 20 Jun 2005 12:02:31 +0200
-- Julien Valroff <julien@debian.org> Sat, 07 May 2011 13:50:27 +0200
diff --git a/debian/changelog b/debian/changelog
index fe9ca177c..34541378e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,11 @@
-gajim (0.15~alpha1-1) unstable; urgency=low
+gajim (0.15-1) unstable; urgency=low
* New upstream release.
* remove 00_debian-copying.diff because upstream doesn't install it anymore
* remove 01_configure-ac.diff because upstream changed configure dependencies
* remove python-gnupginterface from recommands list, it's no more used
- -- Yann Leboulanger <asterix@lagaule.org> Fri, 26 Aug 2011 12:13:51 +0200
+ -- Yann Leboulanger <asterix@lagaule.org> Sat, 18 Mar 2012 10:32:38 +0100
gajim (0.14.4-1) unstable; urgency=low
diff --git a/debian/control b/debian/control
index 0bd63d2fc..4aa683f0b 100644
--- a/debian/control
+++ b/debian/control
@@ -3,16 +3,16 @@ Section: net
Priority: optional
Maintainer: Yann Leboulanger <asterix@lagaule.org>
Build-Depends: debhelper (>= 7.0.50~), python (>= 2.6.6-3~), gettext (>= 0.17-4), intltool (>= 0.40.1), imagemagick, libglib2.0-dev
-Standards-Version: 3.9.2
+Standards-Version: 3.9.3
Homepage: http://www.gajim.org
Vcs-Hg: http://hg.gajim.org/gajim/
Vcs-Browser: http://hg.gajim.org/gajim/file
Package: gajim
Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}, python-gtk2 (>= 2.16.0), dnsutils
-Recommends: dbus, python-dbus, notification-daemon, python-openssl (>= 0.9), python-crypto
-Suggests: python-gconf, python-gnome2, nautilus-sendto, avahi-daemon, python-avahi, network-manager, libgtkspell0, aspell-en, python-gnomekeyring, gnome-keyring, python-kerberos (>= 1.1), texlive-latex-base, dvipng, python-farsight, gstreamer0.10-plugins-ugly
+Depends: ${misc:Depends}, ${python:Depends}, python-gtk2 (>= 2.22.0), dnsutils
+Recommends: dbus, python-dbus, notification-daemon, python-openssl (>= 0.12), python-crypto, python-pyasn1
+Suggests: python-gconf, python-gnome2, nautilus-sendto, avahi-daemon, python-avahi, network-manager, libgtkspell0, aspell-en, python-gnomekeyring, gnome-keyring, python-kerberos (>= 1.1), texlive-latex-base, dvipng, python-farstream, gstreamer0.10-plugins-ugly, python-pycurl, python-gupnp-igd
Description: Jabber client written in PyGTK
Gajim is a Jabber client. It has a tabbed user interface with normal chats,
group chats, and has many features such as, TLS, GPG, SSL, multiple accounts,
diff --git a/debian/copyright b/debian/copyright
index 09a3c30c7..5cd17083b 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -9,7 +9,7 @@ Upstream Authors:
- Yann Leboulanger <asterix@lagaule.org>
-Copyright: (c) 2003-2011 Gajim Team
+Copyright: (c) 2003-2012 Gajim Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/gajim.nsi b/gajim.nsi
index 25df14534..ffbd294ef 100644
--- a/gajim.nsi
+++ b/gajim.nsi
@@ -224,18 +224,8 @@ Section "Gtk+ 2" SecGtk
SetOutPath "$INSTDIR\bin\gtk"
File /r "bin\gtk\bin"
File /r "bin\gtk\etc"
- SetOutPath "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0"
- File /r "bin\gtk\lib\gtk-2.0\2.10.0\loaders"
- SetOutPath "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines"
- File "bin\gtk\lib\gtk-2.0\2.10.0\engines\libclearlooks.dll"
- File "bin\gtk\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
- File "bin\gtk\lib\gtk-2.0\2.10.0\engines\libsvg.dll"
- SetOutPath "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0"
- SetOutPath "$INSTDIR\bin\gtk\lib"
- File "bin\gtk\lib\charset.alias"
- SetOutPath "$INSTDIR\bin\gtk\share"
- File /r "bin\gtk\share\gtkthemeselector"
- File /r "bin\gtk\share\xml"
+ File /r "bin\gtk\lib"
+ File /r "bin\gtk\share"
SectionEnd
Section "Plugins" SecPlugins
@@ -527,128 +517,8 @@ SectionEnd
Section "Uninstall"
RMDir /r "$INSTDIR\bin\gtk\bin"
RMDir /r "$INSTDIR\bin\gtk\etc"
- RMDir /r "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\loaders"
- Delete "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines\libclearlooks.dll"
- Delete "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines\libpixmap.dll"
- Delete "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines\libsvg.dll"
- Delete "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines\libwimp.dll"
- RMDir "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0\engines"
- RMDir "$INSTDIR\bin\gtk\lib\gtk-2.0\2.10.0"
- RMDir "$INSTDIR\bin\gtk\lib\gtk-2.0"
- Delete "$INSTDIR\bin\gtk\lib\charset.alias"
- RMDir "$INSTDIR\bin\gtk\lib"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\de"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\en_GB"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\es"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\fr"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\it"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ru"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\af"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\am"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ang"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ar"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\as"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\az"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\az_IR"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\be"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\be@latin"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\bg"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\bn"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\bn_IN"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\br"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\bs"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ca"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ca@valencia"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\cs"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\cy"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\da"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\dz"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\el"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\en_CA"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\eo"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\et"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\eu"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\fa"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\fi"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ga"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\gl"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\gu"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\he"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\hi"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\hr"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\hu"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\hy"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ia"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\id"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\io"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\is"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ja"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ka"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\kn"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ko"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ku"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\li"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\lt"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\lv"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mai"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mg"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mi"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mk"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ml"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mn"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\mr"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ms"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\nb"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ne"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\nl"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\nn"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\nso"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\oc"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\or"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\pa"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\pl"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ps"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\pt"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\pt_BR"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ro"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\rw"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\si"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sk"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sl"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sq"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sr"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sr@ije"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sr@latin"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\sv"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ta"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\te"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\th"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\tk"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\tl"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\tr"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\tt"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ug"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\uk"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\ur"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\uz"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\uz@cyrillic"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\vi"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\wa"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\xh"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\yi"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\zh_CN"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\zh_HK"
- RMDir /r "$INSTDIR\bin\gtk\share\locale\zh_TW"
- RMDir "$INSTDIR\bin\gtk\share\locale"
- RMDir /r "$INSTDIR\bin\gtk\share\themes\Clearlooks"
- RMDir /r "$INSTDIR\bin\gtk\share\themes\Default"
- RMDir /r "$INSTDIR\bin\gtk\share\themes\Glossy"
- RMDir /r "$INSTDIR\bin\gtk\share\themes\Glossy-js"
- RMDir /r "$INSTDIR\bin\gtk\share\themes\MS-Windows"
- RMDir "$INSTDIR\bin\gtk\share\themes"
- RMDir /r "$INSTDIR\bin\gtk\share\gtkthemeselector"
- RMDir /r "$INSTDIR\bin\gtk\share\xml"
- RMDir "$INSTDIR\bin\gtk\share"
+ RMDir /r "$INSTDIR\bin\gtk\lib"
+ RMDir /r "$INSTDIR\bin\gtk\share"
RMDir "$INSTDIR\bin\gtk"
Delete "$INSTDIR\bin\_bsddb.pyd"
Delete "$INSTDIR\bin\_ctypes.pyd"
diff --git a/plugins/dbus_plugin/plugin.py b/plugins/dbus_plugin/plugin.py
index 3a583a7cf..95d3b1760 100644
--- a/plugins/dbus_plugin/plugin.py
+++ b/plugins/dbus_plugin/plugin.py
@@ -501,7 +501,7 @@ if dbus_support.supported:
for node in path:
key += node + '#'
key += name
- prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value[1])
+ prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value)
gajim.config.foreach(get_prefs)
return prefs_dict
diff --git a/plugins/snarl_notifications/PySnarl.py b/plugins/snarl_notifications/PySnarl.py
deleted file mode 100755
index c3c657e56..000000000
--- a/plugins/snarl_notifications/PySnarl.py
+++ /dev/null
@@ -1,772 +0,0 @@
-"""
-A python version of the main functions to use Snarl
-(http://www.fullphat.net/snarl)
-
-Version 1.0
-
-This module can be used in two ways. One is the normal way
-the other snarl interfaces work. This means you can call snShowMessage
-and get an ID back for manipulations.
-
-The other way is there is a class this module exposes called SnarlMessage.
-This allows you to keep track of the message as a python object. If you
-use the send without specifying False as the argument it will set the ID
-to what the return of the last SendMessage was. This is of course only
-useful for the SHOW message.
-
-Requires one of:
- pywin32 extensions from http://pywin32.sourceforge.net
- ctypes (included in Python 2.5, downloadable for earlier versions)
-
-Creator: Sam Listopad II (samlii@users.sourceforge.net)
-
-Copyright 2006-2008 Samuel Listopad II
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not
-use this file except in compliance with the License. You may obtain a copy
-of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-by applicable law or agreed to in writing, software distributed under the
-License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, either express or implied. See the License for the specific
-language governing permissions and limitations under the License.
-"""
-
-import array, struct
-
-def LOWORD(dword):
- """Return the low WORD of the passed in integer"""
- return dword & 0x0000ffff
-#get the hi word
-def HIWORD(dword):
- """Return the high WORD of the passed in integer"""
- return dword >> 16
-
-class Win32FuncException(Exception):
- def __init__(self, value):
- self.value = value
-
- def __str__(self):
- return repr(self.value)
-
-class Win32Funcs:
- """Just a little class to hide the details of finding and using the
-correct win32 functions. The functions may throw a UnicodeEncodeError if
-there is not a unicode version and it is sent a unicode string that cannot
-be converted to ASCII."""
- WM_USER = 0x400
- WM_COPYDATA = 0x4a
- #Type of String the functions are expecting.
- #Used like function(myWin32Funcs.strType(param)).
- __strType = str
- #FindWindow function to use
- __FindWindow = None
- #FindWindow function to use
- __FindWindowEx = None
- #SendMessage function to use
- __SendMessage = None
- #SendMessageTimeout function to use
- __SendMessageTimeout = None
- #IsWindow function to use
- __IsWindow = None
- #RegisterWindowMessage to use
- __RegisterWindowMessage = None
- #GetWindowText to use
- __GetWindowText = None
-
- def FindWindow(self, lpClassName, lpWindowName):
- """Wraps the windows API call of FindWindow"""
- if lpClassName is not None:
- lpClassName = self.__strType(lpClassName)
- if lpWindowName is not None:
- lpWindowName = self.__strType(lpWindowName)
- return self.__FindWindow(lpClassName, lpWindowName)
-
- def FindWindowEx(self, hwndParent, hwndChildAfter, lpClassName, lpWindowName):
- """Wraps the windows API call of FindWindow"""
- if lpClassName is not None:
- lpClassName = self.__strType(lpClassName)
- if lpWindowName is not None:
- lpWindowName = self.__strType(lpWindowName)
- return self.__FindWindowEx(hwndParent, hwndChildAfter, lpClassName, lpWindowName)
-
- def SendMessage(self, hWnd, Msg, wParam, lParam):
- """Wraps the windows API call of SendMessage"""
- return self.__SendMessage(hWnd, Msg, wParam, lParam)
-
- def SendMessageTimeout(self, hWnd, Msg,
- wParam, lParam, fuFlags,
- uTimeout, lpdwResult = None):
- """Wraps the windows API call of SendMessageTimeout"""
- idToRet = None
- try:
- idFromMsg = array.array('I', [0])
- result = idFromMsg.buffer_info()[0]
- response = self.__SendMessageTimeout(hWnd, Msg, wParam,
- lParam, fuFlags,
- uTimeout, result)
- if response == 0:
- raise Win32FuncException, "SendMessageTimeout TimedOut"
-
- idToRet = idFromMsg[0]
- except TypeError:
- idToRet = self.__SendMessageTimeout(hWnd, Msg, wParam,
- lParam, fuFlags,
- uTimeout)
-
- if lpdwResult is not None and lpdwResult.typecode == 'I':
- lpdwResult[0] = idToRet
-
- return idToRet
-
- def IsWindow(self, hWnd):
- """Wraps the windows API call of IsWindow"""
- return self.__IsWindow(hWnd)
-
- def RegisterWindowMessage(self, lpString):
- """Wraps the windows API call of RegisterWindowMessage"""
- return self.__RegisterWindowMessage(self.__strType(lpString))
-
- def GetWindowText(self, hWnd, lpString = None, nMaxCount = None):
- """Wraps the windows API call of SendMessageTimeout"""
- text = ''
- if hWnd == 0:
- return text
-
- if nMaxCount is None:
- nMaxCount = 1025
-
- try:
- arrayType = 'c'
- if self.__strType == unicode:
- arrayType = 'u'
- path_string = array.array(arrayType, self.__strType('\x00') * nMaxCount)
- path_buffer = path_string.buffer_info()[0]
- result = self.__GetWindowText(hWnd,
- path_buffer,
- nMaxCount)
- if result > 0:
- if self.__strType == unicode:
- text = path_string[0:result].tounicode()
- else:
- text = path_string[0:result].tostring()
- except TypeError:
- text = self.__GetWindowText(hWnd)
-
- if lpString is not None and lpString.typecode == 'c':
- lpdwResult[0:len(text)] = array.array('c', str(text));
-
- if lpString is not None and lpString.typecode == 'u':
- lpdwResult[0:len(text)] = array.array('u', unicode(text));
-
- return text
-
- def __init__(self):
- """Load up my needed functions"""
- # First see if they already have win32gui imported. If so use it.
- # This has to be checked first since the auto check looks for ctypes
- # first.
- try:
- self.__FindWindow = win32gui.FindWindow
- self.__FindWindowEx = win32gui.FindWindowEx
- self.__GetWindowText = win32gui.GetWindowText
- self.__IsWindow = win32gui.IsWindow
- self.__SendMessage = win32gui.SendMessage
- self.__SendMessageTimeout = win32gui.SendMessageTimeout
- self.__RegisterWindowMessage = win32gui.RegisterWindowMessage
- self.__strType = unicode
-
- #Something threw a NameError, most likely the win32gui lines
- #so do auto check
- except NameError:
- try:
- from ctypes import windll
- self.__FindWindow = windll.user32.FindWindowW
- self.__FindWindowEx = windll.user32.FindWindowExW
- self.__GetWindowText = windll.user32.GetWindowTextW
- self.__IsWindow = windll.user32.IsWindow
- self.__SendMessage = windll.user32.SendMessageW
- self.__SendMessageTimeout = windll.user32.SendMessageTimeoutW
- self.__RegisterWindowMessage = windll.user32.RegisterWindowMessageW
- self.__strType = unicode
-
- #FindWindowW wasn't found, look for FindWindowA
- except AttributeError:
- try:
- self.__FindWindow = windll.user32.FindWindowA
- self.__FindWindowEx = windll.user32.FindWindowExA
- self.__GetWindowText = windll.user32.GetWindowTextA
- self.__IsWindow = windll.user32.IsWindow
- self.__SendMessage = windll.user32.SendMessageA
- self.__SendMessageTimeout = windll.user32.SendMessageTimeoutA
- self.__RegisterWindowMessage = windll.user32.RegisterWindowMessageA
- # Couldn't find either so Die and tell user why.
- except AttributeError:
- import sys
- sys.stderr.write("Your Windows TM setup seems to be corrupt."+
- " No FindWindow found in user32.\n")
- sys.stderr.flush()
- sys.exit(3)
-
- except ImportError:
- try:
- import win32gui
- self.__FindWindow = win32gui.FindWindow
- self.__FindWindowEx = win32gui.FindWindowEx
- self.__GetWindowText = win32gui.GetWindowText
- self.__IsWindow = win32gui.IsWindow
- self.__SendMessage = win32gui.SendMessage
- self.__SendMessageTimeout = win32gui.SendMessageTimeout
- self.__RegisterWindowMessage = win32gui.RegisterWindowMessage
- self.__strType = unicode
-
- except ImportError:
- import sys
- sys.stderr.write("You need to have either"+
- " ctypes or pywin32 installed.\n")
- sys.stderr.flush()
- #sys.exit(2)
-
-
-myWin32Funcs = Win32Funcs()
-
-
-SHOW = 1
-HIDE = 2
-UPDATE = 3
-IS_VISIBLE = 4
-GET_VERSION = 5
-REGISTER_CONFIG_WINDOW = 6
-REVOKE_CONFIG_WINDOW = 7
-REGISTER_ALERT = 8
-REVOKE_ALERT = 9
-REGISTER_CONFIG_WINDOW_2 = 10
-GET_VERSION_EX = 11
-SET_TIMEOUT = 12
-
-EX_SHOW = 32
-
-GLOBAL_MESSAGE = "SnarlGlobalMessage"
-GLOBAL_MSG = "SnarlGlobalEvent"
-
-#Messages That may be received from Snarl
-SNARL_LAUNCHED = 1
-SNARL_QUIT = 2
-SNARL_ASK_APPLET_VER = 3
-SNARL_SHOW_APP_UI = 4
-
-SNARL_NOTIFICATION_CLICKED = 32 #notification was right-clicked by user
-SNARL_NOTIFICATION_CANCELLED = SNARL_NOTIFICATION_CLICKED #Name clarified
-SNARL_NOTIFICATION_TIMED_OUT = 33
-SNARL_NOTIFICATION_ACK = 34 #notification was left-clicked by user
-
-#Snarl Test Message
-WM_SNARLTEST = myWin32Funcs.WM_USER + 237
-
-M_ABORTED = 0x80000007L
-M_ACCESS_DENIED = 0x80000009L
-M_ALREADY_EXISTS = 0x8000000CL
-M_BAD_HANDLE = 0x80000006L
-M_BAD_POINTER = 0x80000005L
-M_FAILED = 0x80000008L
-M_INVALID_ARGS = 0x80000003L
-M_NO_INTERFACE = 0x80000004L
-M_NOT_FOUND = 0x8000000BL
-M_NOT_IMPLEMENTED = 0x80000001L
-M_OK = 0x00000000L
-M_OUT_OF_MEMORY = 0x80000002L
-M_TIMED_OUT = 0x8000000AL
-
-ErrorCodeRev = {
- 0x80000007L : "M_ABORTED",
- 0x80000009L : "M_ACCESS_DENIED",
- 0x8000000CL : "M_ALREADY_EXISTS",
- 0x80000006L : "M_BAD_HANDLE",
- 0x80000005L : "M_BAD_POINTER",
- 0x80000008L : "M_FAILED",
- 0x80000003L : "M_INVALID_ARGS",
- 0x80000004L : "M_NO_INTERFACE",
- 0x8000000BL : "M_NOT_FOUND",
- 0x80000001L : "M_NOT_IMPLEMENTED",
- 0x00000000L : "M_OK",
- 0x80000002L : "M_OUT_OF_MEMORY",
- 0x8000000AL : "M_TIMED_OUT"
- }
-
-class SnarlMessage(object):
- """The main Snarl interface object.
-
- ID = Snarl Message ID for most operations. See SDK for more info
- as to other values to put here.
- type = Snarl Message Type. Valid values are : SHOW, HIDE, UPDATE,
- IS_VISIBLE, GET_VERSION, REGISTER_CONFIG_WINDOW, REVOKE_CONFIG_WINDOW
- all which are constants in the PySnarl module.
- timeout = Timeout in seconds for the Snarl Message
- data = Snarl Message data. This is dependant upon message type. See SDK
- title = Snarl Message title.
- text = Snarl Message text.
- icon = Path to the icon to display in the Snarl Message.
- """
- __msgType = 0
- __msgID = 0
- __msgTimeout = 0
- __msgData = 0
- __msgTitle = ""
- __msgText = ""
- __msgIcon = ""
- __msgClass = ""
- __msgExtra = ""
- __msgExtra2 = ""
- __msgRsvd1 = 0
- __msgRsvd2 = 0
- __msgHWnd = 0
-
- lastKnownHWnd = 0
-
- def getType(self):
- """Type Attribute getter."""
- return self.__msgType
- def setType(self, value):
- """Type Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgType = value
- type = property(getType, setType, doc="The Snarl Message Type")
-
- def getID(self):
- """ID Attribute getter."""
- return self.__msgID
- def setID(self, value):
- """ID Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgID = value
- ID = property(getID, setID, doc="The Snarl Message ID")
-
- def getTimeout(self):
- """Timeout Attribute getter."""
- return self.__msgTimeout
- def updateTimeout(self, value):
- """Timeout Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgTimeout = value
- timeout = property(getTimeout, updateTimeout,
- doc="The Snarl Message Timeout")
-
- def getData(self):
- """Data Attribute getter."""
- return self.__msgData
- def setData(self, value):
- """Data Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgData = value
- data = property(getData, setData, doc="The Snarl Message Data")
-
- def getTitle(self):
- """Title Attribute getter."""
- return self.__msgTitle
- def setTitle(self, value):
- """Title Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgTitle = value
- title = property(getTitle, setTitle, doc="The Snarl Message Title")
-
- def getText(self):
- """Text Attribute getter."""
- return self.__msgText
- def setText(self, value):
- """Text Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgText = value
- text = property(getText, setText, doc="The Snarl Message Text")
-
- def getIcon(self):
- """Icon Attribute getter."""
- return self.__msgIcon
- def setIcon(self, value):
- """Icon Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgIcon = value
- icon = property(getIcon, setIcon, doc="The Snarl Message Icon")
-
- def getClass(self):
- """Class Attribute getter."""
- return self.__msgClass
- def setClass(self, value):
- """Class Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgClass = value
- msgclass = property(getClass, setClass, doc="The Snarl Message Class")
-
- def getExtra(self):
- """Extra Attribute getter."""
- return self.__msgExtra
- def setExtra(self, value):
- """Extra Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgExtra = value
- extra = property(getExtra, setExtra, doc="Extra Info for the Snarl Message")
-
- def getExtra2(self):
- """Extra2 Attribute getter."""
- return self.__msgExtra2
- def setExtra2(self, value):
- """Extra2 Attribute setter."""
- if( isinstance(value, basestring) ):
- self.__msgExtra2 = value
- extra2 = property(getExtra2, setExtra2,
- doc="More Extra Info for the Snarl Message")
-
- def getRsvd1(self):
- """Rsvd1 Attribute getter."""
- return self.__msgRsvd1
- def setRsvd1(self, value):
- """Rsvd1 Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgRsvd1 = value
- rsvd1 = property(getRsvd1, setRsvd1, doc="The Snarl Message Field Rsvd1")
-
- def getRsvd2(self):
- """Rsvd2 Attribute getter."""
- return self.__msgRsvd2
- def setRsvd2(self, value):
- """Rsvd2 Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgRsvd2 = value
- rsvd2 = property(getRsvd2, setRsvd2, doc="The Snarl Message Field Rsvd2")
-
- def getHwnd(self):
- """hWnd Attribute getter."""
- return self.__msgHWnd
- def setHwnd(self, value):
- """hWnd Attribute setter."""
- if( isinstance(value, (int, long)) ):
- self.__msgHWnd = value
-
- hWnd = property(getHwnd, setHwnd, doc="The hWnd of the window this message is being sent from")
-
-
- def __init__(self, title="", text="", icon="", msg_type=1, msg_id=0):
- self.__msgTimeout = 0
- self.__msgData = 0
- self.__msgClass = ""
- self.__msgExtra = ""
- self.__msgExtra2 = ""
- self.__msgRsvd1 = 0
- self.__msgRsvd2 = 0
- self.__msgType = msg_type
- self.__msgText = text
- self.__msgTitle = title
- self.__msgIcon = icon
- self.__msgID = msg_id
-
- def createCopyStruct(self):
- """Creates the struct to send as the copyData in the message."""
- return struct.pack("ILLL1024s1024s1024s1024s1024s1024sLL",
- self.__msgType,
- self.__msgID,
- self.__msgTimeout,
- self.__msgData,
- self.__msgTitle.encode('utf-8'),
- self.__msgText.encode('utf-8'),
- self.__msgIcon.encode('utf-8'),
- self.__msgClass.encode('utf-8'),
- self.__msgExtra.encode('utf-8'),
- self.__msgExtra2.encode('utf-8'),
- self.__msgRsvd1,
- self.__msgRsvd2
- )
- __lpData = None
- __cds = None
-
- def packData(self, dwData):
- """This packs the data in the necessary format for a
-WM_COPYDATA message."""
- self.__lpData = None
- self.__cds = None
- item = self.createCopyStruct()
- self.__lpData = array.array('c', item)
- lpData_ad = self.__lpData.buffer_info()[0]
- cbData = self.__lpData.buffer_info()[1]
- self.__cds = array.array('c',
- struct.pack("IIP",
- dwData,
- cbData,
- lpData_ad)
- )
- cds_ad = self.__cds.buffer_info()[0]
- return cds_ad
-
- def reset(self):
- """Reset this SnarlMessage to the default state."""
- self.__msgType = 0
- self.__msgID = 0
- self.__msgTimeout = 0
- self.__msgData = 0
- self.__msgTitle = ""
- self.__msgText = ""
- self.__msgIcon = ""
- self.__msgClass = ""
- self.__msgExtra = ""
- self.__msgExtra2 = ""
- self.__msgRsvd1 = 0
- self.__msgRsvd2 = 0
-
-
- def send(self, setid=True):
- """Send this SnarlMessage to the Snarl window.
-Args:
- setid - Boolean defining whether or not to set the ID
- of this SnarlMessage to the return value of
- the SendMessage call. Default is True to
- make simple case of SHOW easy.
- """
- hwnd = myWin32Funcs.FindWindow(None, "Snarl")
- if myWin32Funcs.IsWindow(hwnd):
- if self.type == REGISTER_CONFIG_WINDOW or self.type == REGISTER_CONFIG_WINDOW_2:
- self.hWnd = self.data
- try:
- response = myWin32Funcs.SendMessageTimeout(hwnd,
- myWin32Funcs.WM_COPYDATA,
- self.hWnd, self.packData(2),
- 2, 500)
- except Win32FuncException:
- return False
-
- idFromMsg = response
- if setid:
- self.ID = idFromMsg
- return True
- else:
- return idFromMsg
- print "No snarl window found"
- return False
-
- def hide(self):
- """Hide this message. Type will revert to type before calling hide
-to allow for better reuse of object."""
- oldType = self.__msgType
- self.__msgType = HIDE
- retVal = bool(self.send(False))
- self.__msgType = oldType
- return retVal
-
- def isVisible(self):
- """Is this message visible. Type will revert to type before calling
-hide to allow for better reuse of object."""
- oldType = self.__msgType
- self.__msgType = IS_VISIBLE
- retVal = bool(self.send(False))
- self.__msgType = oldType
- return retVal
-
- def update(self, title=None, text=None, icon=None):
- """Update this message with given title and text. Type will revert
-to type before calling hide to allow for better reuse of object."""
- oldType = self.__msgType
- self.__msgType = UPDATE
- if text:
- self.__msgText = text
- if title:
- self.__msgTitle = title
- if icon:
- self.__msgIcon = icon
- retVal = self.send(False)
- self.__msgType = oldType
- return retVal
-
- def setTimeout(self, timeout):
- """Set the timeout in seconds of the message"""
- oldType = self.__msgType
- oldData = self.__msgData
- self.__msgType = SET_TIMEOUT
- #self.timeout = timeout
- #self.__msgData = self.__msgTimeout
- self.__msgData = timeout
- retVal = self.send(False)
- self.__msgType = oldType
- self.__msgData = oldData
- return retVal
-
- def show(self, timeout=None, title=None,
- text=None, icon=None,
- replyWindow=None, replyMsg=None, msgclass=None, soundPath=None):
- """Show a message"""
- oldType = self.__msgType
- oldTimeout = self.__msgTimeout
- self.__msgType = SHOW
- if text:
- self.__msgText = text
- if title:
- self.__msgTitle = title
- if timeout:
- self.__msgTimeout = timeout
- if icon:
- self.__msgIcon = icon
- if replyWindow:
- self.__msgID = replyMsg
- if replyMsg:
- self.__msgData = replyWindow
- if soundPath:
- self.__msgExtra = soundPath
- if msgclass:
- self.__msgClass = msgclass
-
- if ((self.__msgClass and self.__msgClass != "") or
- (self.__msgExtra and self.__msgExtra != "")):
- self.__msgType = EX_SHOW
-
-
- retVal = bool(self.send())
- self.__msgType = oldType
- self.__msgTimeout = oldTimeout
- return retVal
-
-
-def snGetVersion():
- """ Get the version of Snarl that is running as a tuple. (Major, Minor)
-
-If Snarl is not running or there was an error it will
-return False."""
- msg = SnarlMessage(msg_type=GET_VERSION)
- version = msg.send(False)
- if not version:
- return False
- return (HIWORD(version), LOWORD(version))
-
-def snGetVersionEx():
- """ Get the internal version of Snarl that is running.
-
-If Snarl is not running or there was an error it will
-return False."""
- sm = SnarlMessage(msg_type=GET_VERSION_EX)
- verNum = sm.send(False)
- if not verNum:
- return False
- return verNum
-
-def snGetGlobalMessage():
- """Get the Snarl global message id from windows."""
- return myWin32Funcs.RegisterWindowMessage(GLOBAL_MSG)
-
-def snShowMessage(title, text, timeout=0, iconPath="",
- replyWindow=0, replyMsg=0):
- """Show a message using Snarl and return its ID. See SDK for arguments."""
- sm = SnarlMessage( title, text, iconPath, msg_id=replyMsg)
- sm.data = replyWindow
- if sm.show(timeout):
- return sm.ID
- else:
- return False
-
-def snShowMessageEx(msgClass, title, text, timeout=0, iconPath="",
- replyWindow=0, replyMsg=0, soundFile=None, hWndFrom=None):
- """Show a message using Snarl and return its ID. See SDK for arguments.
- One added argument is hWndFrom that allows one to make the messages appear
- to come from a specific window. This window should be the one you registered
- earlier with RegisterConfig"""
- sm = SnarlMessage( title, text, iconPath, msg_id=replyMsg)
- sm.data = replyWindow
- if hWndFrom is not None:
- sm.hWnd = hWndFrom
- else:
- sm.hWnd = SnarlMessage.lastKnownHWnd
- if sm.show(timeout, msgclass=msgClass, soundPath=soundFile):
- return sm.ID
- else:
- return False
-
-def snUpdateMessage(msgId, msgTitle, msgText, icon=None):
- """Update a message"""
- sm = SnarlMessage(msg_id=msgId)
- if icon:
- sm.icon = icon
- return sm.update(msgTitle, msgText)
-
-def snHideMessage(msgId):
- """Hide a message"""
- return SnarlMessage(msg_id=msgId).hide()
-
-def snSetTimeout(msgId, timeout):
- """Update the timeout of a message already shown."""
- sm = SnarlMessage(msg_id=msgId)
- return sm.setTimeout(timeout)
-
-def snIsMessageVisible(msgId):
- """Returns True if the message is visible False otherwise."""
- return SnarlMessage(msg_id=msgId).isVisible()
-
-def snRegisterConfig(replyWnd, appName, replyMsg):
- """Register a config window. See SDK for more info."""
- global lastRegisteredSnarlMsg
- sm = SnarlMessage(msg_type=REGISTER_CONFIG_WINDOW,
- title=appName,
- msg_id=replyMsg)
- sm.data = replyWnd
- SnarlMessage.lastKnownHWnd = replyWnd
-
- return sm.send(False)
-
-def snRegisterConfig2(replyWnd, appName, replyMsg, icon):
- """Register a config window. See SDK for more info."""
- global lastRegisteredSnarlMsg
- sm = SnarlMessage(msg_type=REGISTER_CONFIG_WINDOW_2,
- title=appName,
- msg_id=replyMsg,
- icon=icon)
- sm.data = replyWnd
- SnarlMessage.lastKnownHWnd = replyWnd
- return sm.send(False)
-
-def snRegisterAlert(appName, classStr) :
- """Register an alert for an already registered config. See SDK for more info."""
- sm = SnarlMessage(msg_type=REGISTER_ALERT,
- title=appName,
- text=classStr)
- return sm.send(False)
-
-def snRevokeConfig(replyWnd):
- """Revoke a config window"""
- sm = SnarlMessage(msg_type=REVOKE_CONFIG_WINDOW)
- sm.data = replyWnd
- if replyWnd == SnarlMessage.lastKnownHWnd:
- SnarlMessage.lastKnownHWnd = 0
- return sm.send(False)
-
-def snGetSnarlWindow():
- """Returns the hWnd of the snarl window"""
- return myWin32Funcs.FindWindow(None, "Snarl")
-
-def snGetAppPath():
- """Returns the application path of the currently running snarl window"""
- app_path = None
- snarl_handle = snGetSnarlWindow()
- if snarl_handle != 0:
- pathwin_handle = myWin32Funcs.FindWindowEx(snarl_handle,
- 0,
- "static",
- None)
- if pathwin_handle != 0:
- try:
- result = myWin32Funcs.GetWindowText(pathwin_handle)
- app_path = result
- except Win32FuncException:
- pass
-
-
- return app_path
-
-def snGetIconsPath():
- """Returns the path to the icons of the program"""
- s = snGetAppPath()
- if s is None:
- return ""
- else:
- return s + "etc\\icons\\"
-
-def snSendTestMessage(data=None):
- """Sends a test message to Snarl. Used to make sure the
-api is connecting"""
- param = 0
- command = 0
- if data:
- param = struct.pack("I", data)
- command = 1
- myWin32Funcs.SendMessage(snGetSnarlWindow(), WM_SNARLTEST, command, param)
diff --git a/plugins/snarl_notifications/__init__.py b/plugins/snarl_notifications/__init__.py
deleted file mode 100644
index b504dfd50..000000000
--- a/plugins/snarl_notifications/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from plugin import SnarlNotificationsPlugin
diff --git a/plugins/snarl_notifications/manifest.ini b/plugins/snarl_notifications/manifest.ini
deleted file mode 100644
index 45597bfc0..000000000
--- a/plugins/snarl_notifications/manifest.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[info]
-name: Snarl Notifications
-short_name: snarl_notifications
-version: 0.1
-description: Shows events notification using Snarl (http://www.fullphat.net/) under Windows. Snarl needs to be installed in system.
- PySnarl bindings are used (http://code.google.com/p/pysnarl/).
-authors = Mateusz Biliński <mateusz@bilinski.it>
-homepage = http://blog.bilinski.it
-
-
-
diff --git a/plugins/snarl_notifications/plugin.py b/plugins/snarl_notifications/plugin.py
deleted file mode 100644
index 82247c5e6..000000000
--- a/plugins/snarl_notifications/plugin.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: utf-8 -*-
-##
-## This file is part of Gajim.
-##
-## Gajim is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published
-## by the Free Software Foundation; version 3 only.
-##
-## Gajim is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
-##
-'''
-Events notifications using Snarl
-
-Fancy events notifications under Windows using Snarl infrastructure.
-
-:note: plugin is at proof-of-concept state.
-
-:author: Mateusz Biliński <mateusz@bilinski.it>
-:since: 15th August 2008
-:copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it>
-:license: GPL
-'''
-
-import new
-from pprint import pformat
-
-#import PySnarl
-
-from common import gajim
-from plugins import GajimPlugin
-from plugins.helpers import log_calls, log
-from common import ged
-
-class SnarlNotificationsPlugin(GajimPlugin):
-
- @log_calls('SnarlNotificationsPlugin')
- def init(self):
- self.description = _('Shows events notification using Snarl '
- '(http://www.fullphat.net/) under Windows. '
- 'Snarl needs to be installed in system.\n'
- 'PySnarl bindings are used (http://code.google.com/p/pysnarl/).')
- self.config_dialog = None
- #self.gui_extension_points = {}
- #self.config_default_values = {}
-
- self.events_handlers = {'notification' : (ged.POSTCORE, self.notif)}
-
- @log_calls('SnarlNotificationsPlugin')
- def activate(self):
- pass
-
- @log_calls('SnarlNotificationsPlugin')
- def deactivate(self):
- pass
-
- @log_calls('SnarlNotificationsPlugin')
- def notif(self, obj):
- print "Event '%s' occured.\n\n===\n" % obj.popup_event_type
-
- #if PySnarl.snGetVersion() != False:
- #(major, minor) = PySnarl.snGetVersion()
- #print "Found Snarl version",str(major)+"."+str(minor),"running."
- #PySnarl.snShowMessage(obj.popup_title, obj.popup_text)
- #else:
- #print "Sorry Snarl does not appear to be running"
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
deleted file mode 100644
index 26c1c02d1..000000000
--- a/po/POTFILES.skip
+++ /dev/null
@@ -1,3 +0,0 @@
-data/gajim.desktop.in
-src/eggtrayicon.c
-src/ipython_view.py
diff --git a/po/fr.po b/po/fr.po
index d743565db..3d060cab9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gajim 0.12 svn\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-19 00:05+0200\n"
+"POT-Creation-Date: 2012-03-18 12:14+0100\n"
"PO-Revision-Date: 2011-05-30 08:28+0100\n"
"Last-Translator: Florent Le Coz <louizatakk@fedoraproject.org>\n"
"Language-Team: <>\n"
@@ -31,7 +31,7 @@ msgstr "_Rejoindre un _salon de discussion..."
msgid "_Add Contact..."
msgstr "_Ajouter un contact..."
-#: ../data/gui/account_context_menu.ui.h:3 ../data/gui/roster_window.ui.h:20
+#: ../data/gui/account_context_menu.ui.h:3 ../data/gui/roster_window.ui.h:19
msgid "_Discover Services"
msgstr "_Découvrir les services"
@@ -51,7 +51,7 @@ msgstr "_Accéder au compte Gmail"
msgid "_Personal Events"
msgstr "Évènements P_ersonnels"
-#: ../data/gui/account_context_menu.ui.h:8 ../data/gui/roster_window.ui.h:25
+#: ../data/gui/account_context_menu.ui.h:8 ../data/gui/roster_window.ui.h:24
msgid "_Start Chat..."
msgstr "Commencer une _discussion..."
@@ -111,7 +111,7 @@ msgid "I want to _register for a new account"
msgstr "Je veux _créer un nouveau compte"
#: ../data/gui/account_creation_wizard_window.ui.h:15
-#: ../data/gui/accounts_window.ui.h:28
+#: ../data/gui/accounts_window.ui.h:30
msgid "If checked, Gajim will remember the password for this account"
msgstr ""
"Si cette case est cochée, Gajim va retenir le mot de passe pour ce compte"
@@ -121,13 +121,14 @@ msgid "Manage..."
msgstr "Gérer..."
#: ../data/gui/account_creation_wizard_window.ui.h:17
-#: ../data/gui/accounts_window.ui.h:39 ../data/gui/change_mood_dialog.ui.h:3
-#: ../src/config.py:1289 ../src/config.py:1392 ../src/config.py:1703
-#: ../src/config.py:1708 ../src/config.py:2274 ../src/config.py:2353
-#: ../src/config.py:2366 ../src/config.py:3644 ../src/config.py:3719
+#: ../data/gui/accounts_window.ui.h:41 ../data/gui/change_mood_dialog.ui.h:3
+#: ../src/config.py:1265 ../src/config.py:1279 ../src/config.py:1284
+#: ../src/config.py:1332 ../src/config.py:1435 ../src/config.py:1746
+#: ../src/config.py:1751 ../src/config.py:2327 ../src/config.py:2406
+#: ../src/config.py:2419 ../src/config.py:3703 ../src/config.py:3778
#: ../src/dialogs.py:311 ../src/dialogs.py:313 ../src/dialogs.py:519
-#: ../src/dialogs.py:532 ../src/roster_window.py:3096
-#: ../src/roster_window.py:3102 ../src/roster_window.py:3107
+#: ../src/dialogs.py:532 ../src/roster_window.py:3133
+#: ../src/roster_window.py:3139 ../src/roster_window.py:3144
msgid "None"
msgstr "Aucun"
@@ -136,7 +137,7 @@ msgid "Prox_y:"
msgstr "Prox_y :"
#: ../data/gui/account_creation_wizard_window.ui.h:19
-#: ../data/gui/accounts_window.ui.h:48
+#: ../data/gui/accounts_window.ui.h:50
msgid "Save pass_word"
msgstr "Sauver le mot de _passe"
@@ -157,7 +158,7 @@ msgstr ""
"au réseau Jabber."
#: ../data/gui/account_creation_wizard_window.ui.h:24
-#: ../data/gui/roster_window.ui.h:18
+#: ../data/gui/roster_window.ui.h:17
msgid "_Advanced"
msgstr "_Avancées"
@@ -170,12 +171,12 @@ msgid "_Hostname:"
msgstr "Nom d'_Hôte :"
#: ../data/gui/account_creation_wizard_window.ui.h:27
-#: ../data/gui/accounts_window.ui.h:62
+#: ../data/gui/accounts_window.ui.h:63
msgid "_Jabber ID:"
msgstr "Identifiant _Jabber : "
#: ../data/gui/account_creation_wizard_window.ui.h:28
-#: ../data/gui/accounts_window.ui.h:64
+#: ../data/gui/accounts_window.ui.h:65
#: ../data/gui/manage_bookmarks_window.ui.h:8
msgid "_Password:"
msgstr "Mot de _passe : "
@@ -217,31 +218,41 @@ msgstr "Compte"
msgid "Accounts"
msgstr "Comptes"
-#: ../data/gui/accounts_window.ui.h:8
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:8 ../src/dialogs.py:3387
+#: ../src/dialogs.py:3433
+msgid "Add"
+msgstr "Ajouter"
+
+#: ../data/gui/accounts_window.ui.h:9
msgid "Administration operations"
msgstr "Opérations d'administration"
-#: ../data/gui/accounts_window.ui.h:9
+#: ../data/gui/accounts_window.ui.h:10
msgid "Anonymous authentication"
msgstr "Authentification anonyme"
-#: ../data/gui/accounts_window.ui.h:10
+#: ../data/gui/accounts_window.ui.h:11
msgid "Auto-reconnect when connection is lost"
msgstr "Reconnexion automatique quand la connexion est perdue"
-#: ../data/gui/accounts_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:12
msgid "Browse..."
msgstr "_Parcourir..."
-#: ../data/gui/accounts_window.ui.h:12
+#: ../data/gui/accounts_window.ui.h:13
msgid "C_onnect on Gajim startup"
msgstr "C_onnexion au démarrage"
-#: ../data/gui/accounts_window.ui.h:13
+#: ../data/gui/accounts_window.ui.h:14
+msgid "Certificate is e_ncrypted"
+msgstr "Le certificat est chiffré"
+
+#: ../data/gui/accounts_window.ui.h:15
msgid "Chan_ge Password"
msgstr "Chan_ger le mot de passe"
-#: ../data/gui/accounts_window.ui.h:14
+#: ../data/gui/accounts_window.ui.h:16
msgid ""
"Check this so Gajim will ask you before sending your password over an "
"insecure connection."
@@ -249,50 +260,52 @@ msgstr ""
"Cochez cette case pour que Gajim vous demande avant d'envoyer votre mot de "
"passe via une connexion non-sécurisée"
-#: ../data/gui/accounts_window.ui.h:15
-msgid "Choose Client Cert"
-msgstr "Choisissez le certificat client"
-
-#: ../data/gui/accounts_window.ui.h:16
+#: ../data/gui/accounts_window.ui.h:17
msgid "Choose _Key..."
msgstr "Choisissez une _clé..."
-#: ../data/gui/accounts_window.ui.h:17
+#: ../data/gui/accounts_window.ui.h:18
msgid "Click to change account's password"
msgstr "Cliquez pour changer le mot de passe du compte"
-#: ../data/gui/accounts_window.ui.h:18
+#: ../data/gui/accounts_window.ui.h:19
msgid "Click to request authorization to all contacts of another account"
msgstr ""
"Cliquez pour demander l'autorisation à tous les contacts d'un autre compte"
-#: ../data/gui/accounts_window.ui.h:19
+#: ../data/gui/accounts_window.ui.h:20
msgid "Client certificate"
msgstr "Certificat client"
-#: ../data/gui/accounts_window.ui.h:20
+#: ../data/gui/accounts_window.ui.h:21
msgid "Co_nnect on Gajim startup"
msgstr "C_onnexion au démarrage de Gajim"
-#: ../data/gui/accounts_window.ui.h:21
+#: ../data/gui/accounts_window.ui.h:22
msgid "Connection"
msgstr "Connexion"
-#: ../data/gui/accounts_window.ui.h:22
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:23 ../src/dialogs.py:3391
+#: ../src/dialogs.py:3488
+msgid "Delete"
+msgstr "Supprimer"
+
+#: ../data/gui/accounts_window.ui.h:24
#: ../data/gui/zeroconf_information_window.ui.h:2
msgid "E-Mail:"
msgstr "Courriel :"
-#: ../data/gui/accounts_window.ui.h:23
+#: ../data/gui/accounts_window.ui.h:25
#: ../data/gui/zeroconf_information_window.ui.h:3
msgid "First Name:"
msgstr "Prénom :"
#. No configured account
-#: ../data/gui/accounts_window.ui.h:24 ../data/gui/roster_window.ui.h:5
-#: ../src/common/helpers.py:1148 ../src/common/helpers.py:1160
-#: ../src/notify.py:474 ../src/notify.py:497 ../src/notify.py:546
-#: ../src/notify.py:562
+#: ../data/gui/accounts_window.ui.h:26 ../data/gui/roster_window.ui.h:5
+#: ../src/common/helpers.py:1168 ../src/common/helpers.py:1180
+#: ../src/notify.py:314 ../src/notify.py:337 ../src/notify.py:387
+#: ../src/notify.py:403
msgid "Gajim"
msgstr "Gajim"
@@ -300,13 +313,14 @@ msgstr "Gajim"
#. FIXME: Ugly workaround.
#. Maybe we haven't been in any group (defaults to General)
#. General group cannot be changed
-#: ../data/gui/accounts_window.ui.h:25 ../data/gui/preferences_window.ui.h:56
-#: ../src/common/contacts.py:141 ../src/dialogs.py:112 ../src/dialogs.py:124
-#: ../src/roster_window.py:3038 ../src/roster_window.py:5643
+#: ../data/gui/accounts_window.ui.h:27 ../data/gui/preferences_window.ui.h:57
+#: ../src/common/contacts.py:132 ../src/dialogs.py:112 ../src/dialogs.py:124
+#: ../src/roster_window.py:3075 ../src/roster_window.py:4142
+#: ../src/roster_window.py:5732
msgid "General"
msgstr "Général"
-#: ../data/gui/accounts_window.ui.h:26
+#: ../data/gui/accounts_window.ui.h:28
msgid ""
"If checked, Gajim will also broadcast some more IPs except from just your "
"IP, so file transfer has higher chances of working."
@@ -314,13 +328,13 @@ msgstr ""
"Si cette case est cochée, Gajim va diffuser des adresses IP en plus de la "
"vôtre, les transferts de fichiers ont ainsi plus de chance de fonctionner."
-#: ../data/gui/accounts_window.ui.h:27
+#: ../data/gui/accounts_window.ui.h:29
msgid "If checked, Gajim will get the password from a GPG agent like seahorse"
msgstr ""
"Si cette case est cochée, Gajim obtiendra le mot de passe depuis un agent "
"GPG comme seahorse"
-#: ../data/gui/accounts_window.ui.h:29
+#: ../data/gui/accounts_window.ui.h:31
msgid ""
"If checked, Gajim will send keep-alive packets to prevent connection timeout "
"which results in disconnection"
@@ -328,7 +342,7 @@ msgstr ""
"Si coché, Gajim enverra des paquets de maintien de connection pour prévenir "
"des temps de latence pouvant entraîner des déconnexions"
-#: ../data/gui/accounts_window.ui.h:30
+#: ../data/gui/accounts_window.ui.h:32
msgid ""
"If checked, Gajim, when launched, will automatically connect to jabber using "
"this account"
@@ -336,7 +350,7 @@ msgstr ""
"Si cette case est cochée, au démarrage, Gajim se connectera automatiquement "
"à jabber en utilisant ce compte"
-#: ../data/gui/accounts_window.ui.h:31
+#: ../data/gui/accounts_window.ui.h:33
msgid ""
"If checked, any change to the global status (handled by the combobox at the "
"bottom of the roster window) will change the status of this account "
@@ -346,7 +360,7 @@ msgstr ""
"l'aide du bouton en bas de la fenêtre principale) sera répercutée sur l'état "
"de ce compte"
-#: ../data/gui/accounts_window.ui.h:32
+#: ../data/gui/accounts_window.ui.h:34
msgid ""
"If the default port that is used for incoming messages is unfitting for your "
"setup you can select another one here.\n"
@@ -357,39 +371,39 @@ msgstr ""
"Vous devriez considérer modifier les paramètres de votre pare-feu si vous en "
"avez un."
-#: ../data/gui/accounts_window.ui.h:34
+#: ../data/gui/accounts_window.ui.h:36
msgid "Information about you, as stored in the server"
msgstr "Les informations vous concernant, stockées sur le serveur"
-#: ../data/gui/accounts_window.ui.h:35
-#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1826
+#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1869
#: ../src/dialogs.py:837
msgid "Jabber ID:"
msgstr "Identifiant Jabber :"
-#: ../data/gui/accounts_window.ui.h:36
+#: ../data/gui/accounts_window.ui.h:38
#: ../data/gui/zeroconf_information_window.ui.h:5
msgid "Last Name:"
msgstr "Nom :"
-#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/accounts_window.ui.h:39
msgid "Mer_ge accounts"
msgstr "_Regrouper les comptes"
-#: ../data/gui/accounts_window.ui.h:38 ../src/config.py:1799
-#: ../src/config.py:2367
+#: ../data/gui/accounts_window.ui.h:40 ../src/config.py:1842
+#: ../src/config.py:2420
msgid "No key selected"
msgstr "Pas de clé sélectionnée"
-#: ../data/gui/accounts_window.ui.h:40 ../data/gui/profile_window.ui.h:35
+#: ../data/gui/accounts_window.ui.h:42 ../data/gui/profile_window.ui.h:35
msgid "Personal Information"
msgstr "Informations personnelles"
-#: ../data/gui/accounts_window.ui.h:41
+#: ../data/gui/accounts_window.ui.h:43
msgid "Priori_ty:"
msgstr "Priori_té :"
-#: ../data/gui/accounts_window.ui.h:42
+#: ../data/gui/accounts_window.ui.h:44
msgid ""
"Priority is used in Jabber to determine who gets the events from the jabber "
"server when two or more clients are connected using the same account; The "
@@ -399,20 +413,20 @@ msgstr ""
"événements du serveur quand plusieurs clients sont connectés avec le même "
"compte. Le client ayant la plus haute priorité recevra les messages"
-#: ../data/gui/accounts_window.ui.h:43
+#: ../data/gui/accounts_window.ui.h:45
msgid "Priority will change automatically according to your status."
msgstr "La priorité va changer automatiquement selon votre état."
#. Rename
-#: ../data/gui/accounts_window.ui.h:44 ../src/roster_window.py:5593
+#: ../data/gui/accounts_window.ui.h:46 ../src/roster_window.py:5682
msgid "Re_name"
msgstr "Re_nommer"
-#: ../data/gui/accounts_window.ui.h:45
+#: ../data/gui/accounts_window.ui.h:47
msgid "Resour_ce:"
msgstr "Ressour_ce: "
-#: ../data/gui/accounts_window.ui.h:46
+#: ../data/gui/accounts_window.ui.h:48
msgid ""
"Resource is sent to the Jabber server in order to separate the same JID in "
"two or more parts depending on the number of the clients connected in the "
@@ -426,77 +440,72 @@ msgstr ""
"en même temps. La ressource avec la plus haute priorité recevra les messages "
"(voir plus bas)."
-#: ../data/gui/accounts_window.ui.h:47
+#: ../data/gui/accounts_window.ui.h:49
msgid "Save conversation _logs for all contacts"
msgstr "Garder l'_historique des conversations pour tous les contacts"
-#: ../data/gui/accounts_window.ui.h:49
+#: ../data/gui/accounts_window.ui.h:51
msgid "Send _keep-alive packets"
msgstr "Envoi des pa_quets de maintien de connexion"
-#: ../data/gui/accounts_window.ui.h:50
+#: ../data/gui/accounts_window.ui.h:52
msgid "Synch_ronize account status with global status"
msgstr "S_ynchroniser l'état du compte avec l'état global"
-#: ../data/gui/accounts_window.ui.h:51
+#: ../data/gui/accounts_window.ui.h:53
msgid "Synchroni_ze account status with global status"
msgstr "S_ynchroniser l'état du compte avec l'état global"
-#: ../data/gui/accounts_window.ui.h:52
-#: ../data/gui/synchronise_select_account_dialog.ui.h:2
-msgid "Synchronise contacts"
+#: ../data/gui/accounts_window.ui.h:54
+msgid "Synchronize contacts"
msgstr "Synchroniser les contacts"
-#: ../data/gui/accounts_window.ui.h:53
-msgid "The path to the client certificate and key in PKCS#12 format"
-msgstr "Chemin vers le certificat client et la clé au format PKCS#12"
-
-#: ../data/gui/accounts_window.ui.h:54
+#: ../data/gui/accounts_window.ui.h:55
msgid "Use G_PG Agent"
msgstr "Utiliser un Agent G_PG"
-#: ../data/gui/accounts_window.ui.h:55
+#: ../data/gui/accounts_window.ui.h:56
msgid "Use cust_om hostname/port"
msgstr "Utiliser un nom d'hôte/port personnalisé"
-#: ../data/gui/accounts_window.ui.h:56
+#: ../data/gui/accounts_window.ui.h:57
msgid "Use cust_om port:"
msgstr "Utiliser un port pers_onnalisé :"
-#: ../data/gui/accounts_window.ui.h:57
+#: ../data/gui/accounts_window.ui.h:58
msgid "Use file transfer proxies"
msgstr "Utiliser les proxies pour les transferts de fichiers"
-#: ../data/gui/accounts_window.ui.h:58
+#: ../data/gui/accounts_window.ui.h:59
msgid "_Client Cert File:"
msgstr "Fichier du _certificat client:"
-#: ../data/gui/accounts_window.ui.h:59
+#: ../data/gui/accounts_window.ui.h:60
msgid "_Edit Personal Information..."
msgstr "_Éditer les informations personnelles…"
#. XML Console enable checkbutton
-#: ../data/gui/accounts_window.ui.h:60 ../data/gui/xml_console_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:61 ../data/gui/xml_console_window.ui.h:11
msgid "_Enable"
msgstr "Activ_er"
-#: ../data/gui/accounts_window.ui.h:61
+#: ../data/gui/accounts_window.ui.h:62
msgid "_Hostname: "
msgstr "Nom d'_Hôte :"
-#: ../data/gui/accounts_window.ui.h:63
+#: ../data/gui/accounts_window.ui.h:64 ../data/gui/preferences_window.ui.h:133
msgid "_Manage..."
msgstr "_Gérer..."
-#: ../data/gui/accounts_window.ui.h:65
+#: ../data/gui/accounts_window.ui.h:66
msgid "_Port: "
msgstr "_Port :"
-#: ../data/gui/accounts_window.ui.h:66
+#: ../data/gui/accounts_window.ui.h:67
msgid "_Warn before using an insecure connection"
msgstr "_Prévenir avant d'utiliser une connexion non sécurisée"
-#: ../data/gui/accounts_window.ui.h:67
+#: ../data/gui/accounts_window.ui.h:68
msgid "_use HTTP__PROXY environment variable"
msgstr "_utiliser la variable d'environnement HTTP__PROXY"
@@ -512,7 +521,7 @@ msgstr "_Autoriser ce contact à voir mon état"
msgid "Add New Contact"
msgstr "Ajouter un nouveau contact"
-#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1339
+#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1359
msgid "I would like to add you to my contact list."
msgstr "Je souhaiterais vous ajouter à ma liste de contacts."
@@ -569,7 +578,8 @@ msgstr "<b>Une erreur est survenue :</b>"
msgid "<b>Choose command to execute:</b>"
msgstr "<b>Commande à exécuter :</b>"
-#: ../data/gui/adhoc_commands_window.ui.h:3
+#. displaying the window
+#: ../data/gui/adhoc_commands_window.ui.h:3 ../src/adhoc_commands.py:102
msgid "Ad-hoc Commands - Gajim"
msgstr "Commandes Ad-hoc - Gajim"
@@ -682,9 +692,8 @@ msgid "<i>Method Manual</i>"
msgstr "<i>Méthode manuelle</i>"
#: ../data/gui/archiving_preferences_window.ui.h:4
-#, fuzzy
msgid "Auto"
-msgstr "Rejoindre automatiquement"
+msgstr "Auto"
#: ../data/gui/archiving_preferences_window.ui.h:5
msgid "Concede"
@@ -699,9 +708,8 @@ msgid "No"
msgstr "Non"
#: ../data/gui/archiving_preferences_window.ui.h:8
-#, fuzzy
msgid "Prefer"
-msgstr "Préférences"
+msgstr "Préfère"
#: ../data/gui/archiving_preferences_window.ui.h:9
msgid "Yes"
@@ -733,8 +741,8 @@ msgstr "Contacts Bloqués"
#: ../data/gui/blocked_contacts_window.ui.h:2
#: ../data/gui/contact_context_menu.ui.h:25
-#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5612
-#: ../src/roster_window.py:5739 ../src/roster_window.py:5872
+#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5701
+#: ../src/roster_window.py:5828 ../src/roster_window.py:5961
msgid "_Unblock"
msgstr "_Débloquer"
@@ -795,7 +803,7 @@ msgid "Join _Group Chat"
msgstr "Rejoindre un _salon de discussion"
#: ../data/gui/chat_context_menu.ui.h:2
-#: ../data/gui/contact_context_menu.ui.h:16
+#: ../data/gui/contact_context_menu.ui.h:17
msgid "_Add to Roster..."
msgstr "_Ajouter à la liste de contacts..."
@@ -898,23 +906,21 @@ msgid "Show the contact's profile (Ctrl+I)"
msgstr "Afficher le profil du contact (Ctrl+I)"
#: ../data/gui/chat_control.ui.h:20
+#: ../src/command_system/implementation/standard.py:214
msgid "Toggle audio session"
msgstr "Démarrer/arrêter une session audio"
#: ../data/gui/chat_control.ui.h:21
+#: ../src/command_system/implementation/standard.py:224
msgid "Toggle video session"
msgstr "Démarrer/arrêter une session vidéo"
#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)
#: ../data/gui/chat_control.ui.h:23 ../data/gui/groupchat_control.ui.h:9
-#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:275
+#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:277
msgid "_Send"
msgstr "En_voyer"
-#: ../data/gui/chat_control.ui.h:24 ../data/gui/groupchat_control.ui.h:10
-msgid "label"
-msgstr ""
-
#: ../data/gui/chat_to_muc_window.ui.h:1
msgid "In_vite"
msgstr "In_viter"
@@ -962,8 +968,8 @@ msgstr "Éditer les _groupes..."
#. Invite to
#. Invite to Groupchat
#: ../data/gui/contact_context_menu.ui.h:6
-#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5548
-#: ../src/roster_window.py:5707
+#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5637
+#: ../src/roster_window.py:5796
msgid "In_vite to"
msgstr "In_viter à"
@@ -972,67 +978,67 @@ msgid "Invite _Contacts"
msgstr "Inviter des _Contacts"
#: ../data/gui/contact_context_menu.ui.h:8
+msgid "M_anage Contact"
+msgstr "_Gérer le Contact"
+
+#: ../data/gui/contact_context_menu.ui.h:9
msgid "Remo_ve"
msgstr "Suppri_mer"
-#: ../data/gui/contact_context_menu.ui.h:9 ../src/roster_window.py:5558
-#: ../src/roster_window.py:5796
+#: ../data/gui/contact_context_menu.ui.h:10 ../src/roster_window.py:5647
+#: ../src/roster_window.py:5885
msgid "Send Cus_tom Status"
msgstr "Envoyer un Statut Personnalisé"
-#: ../data/gui/contact_context_menu.ui.h:10 ../data/gui/roster_window.ui.h:10
+#: ../data/gui/contact_context_menu.ui.h:11 ../data/gui/roster_window.ui.h:10
msgid "Send Single _Message..."
msgstr "Envoyer un _message simple..."
-#: ../data/gui/contact_context_menu.ui.h:11
+#: ../data/gui/contact_context_menu.ui.h:12
msgid "Send _File..."
msgstr "Envoyer un _fichier..."
-#: ../data/gui/contact_context_menu.ui.h:12
+#: ../data/gui/contact_context_menu.ui.h:13
msgid "Set Custom _Avatar..."
msgstr "Définir un _Avatar personnalisé..."
-#: ../data/gui/contact_context_menu.ui.h:13
+#: ../data/gui/contact_context_menu.ui.h:14
msgid "Start _Chat"
msgstr "Commencer une _discussion"
-#: ../data/gui/contact_context_menu.ui.h:14
+#: ../data/gui/contact_context_menu.ui.h:15
msgid "Toggle End to End Encryption"
msgstr "Activer le chiffrement de bout en bout"
-#: ../data/gui/contact_context_menu.ui.h:15
+#: ../data/gui/contact_context_menu.ui.h:16
msgid "Toggle Open_PGP Encryption"
msgstr "Activer le chiffrement _GPG"
-#: ../data/gui/contact_context_menu.ui.h:17
+#: ../data/gui/contact_context_menu.ui.h:18
msgid "_Allow him/her to see my status"
msgstr "L'autoriser à voir mon état"
-#: ../data/gui/contact_context_menu.ui.h:18
-#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5620
-#: ../src/roster_window.py:5745 ../src/roster_window.py:5875
+#: ../data/gui/contact_context_menu.ui.h:19
+#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5709
+#: ../src/roster_window.py:5834 ../src/roster_window.py:5964
msgid "_Block"
msgstr "_Bloquer"
-#: ../data/gui/contact_context_menu.ui.h:19
+#: ../data/gui/contact_context_menu.ui.h:20
msgid "_Forbid him/her to see my status"
msgstr "Interdire de voir mon état"
-#: ../data/gui/contact_context_menu.ui.h:20
+#: ../data/gui/contact_context_menu.ui.h:21
#: ../data/gui/gc_control_popup_menu.ui.h:6
-#: ../data/gui/gc_occupants_menu.ui.h:9 ../data/gui/roster_window.ui.h:24
-#: ../src/roster_window.py:5946
+#: ../data/gui/gc_occupants_menu.ui.h:9 ../data/gui/roster_window.ui.h:23
+#: ../src/roster_window.py:6035
msgid "_History"
msgstr "_Historique"
-#: ../data/gui/contact_context_menu.ui.h:21
+#: ../data/gui/contact_context_menu.ui.h:22
msgid "_Ignore"
msgstr "_Ignorer"
-#: ../data/gui/contact_context_menu.ui.h:22
-msgid "_Manage Contact"
-msgstr "_Gérer le Contact"
-
#: ../data/gui/contact_context_menu.ui.h:23
msgid "_Rename..."
msgstr "_Renommer..."
@@ -1129,7 +1135,7 @@ msgstr ""
"Quand le transfert de fichier est terminé, montrer une fenêtre de "
"notification"
-#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:798
+#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:808
msgid "_Continue"
msgstr "_Continuer"
@@ -1137,7 +1143,8 @@ msgstr "_Continuer"
msgid "_Notify me when a file transfer is complete"
msgstr "Me _signaler quand un transfert de fichier est terminé"
-#: ../data/gui/filetransfers.ui.h:15 ../src/filetransfers_window.py:205
+#: ../data/gui/filetransfers.ui.h:15 ../src/chat_control.py:3236
+#: ../src/filetransfers_window.py:206
msgid "_Open Containing Folder"
msgstr "_Ouvrir le répertoire de destination"
@@ -1157,13 +1164,13 @@ msgstr "<b>Couleurs des Onglets</b>"
msgid "Account row"
msgstr "Ligne de compte"
-#: ../data/gui/gajim_themes_window.ui.h:3 ../src/chat_control.py:1029
+#: ../data/gui/gajim_themes_window.ui.h:3 ../src/chat_control.py:1040
msgid "Bold"
msgstr "Gras"
#: ../data/gui/gajim_themes_window.ui.h:4
msgid "Chat Banner"
-msgstr ""
+msgstr "Bannière"
#: ../data/gui/gajim_themes_window.ui.h:5
msgid "Composing"
@@ -1193,7 +1200,7 @@ msgstr "Ligne de groupe"
msgid "Inactive"
msgstr "Inactif"
-#: ../data/gui/gajim_themes_window.ui.h:12 ../src/chat_control.py:1030
+#: ../data/gui/gajim_themes_window.ui.h:12 ../src/chat_control.py:1041
msgid "Italic"
msgstr "Italique"
@@ -1259,9 +1266,8 @@ msgid "_Minimize on close"
msgstr "_Minimiser à la fermeture"
#: ../data/gui/gc_control_popup_menu.ui.h:9
-#, fuzzy
msgid "_Request Voice"
-msgstr "_S'exprimer"
+msgstr "_Demander la parole"
#: ../data/gui/gc_occupants_menu.ui.h:2
msgid "Mo_derator"
@@ -1380,7 +1386,7 @@ msgstr "_Rechercher dans la base de données"
msgid "All Chat Histories"
msgstr "Tous les historiques"
-#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:323
+#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:324
msgid "Conversation History"
msgstr "Historique de conversation"
@@ -1397,13 +1403,21 @@ msgid "Search:"
msgstr "Chercher :"
#: ../data/gui/history_window.ui.h:6
+msgid "_In date search"
+msgstr "Chercher à cette date"
+
+#: ../data/gui/history_window.ui.h:7
#: ../data/gui/zeroconf_information_window.ui.h:10
msgid "_Log conversation history"
msgstr "_Historique de conversation"
+#: ../data/gui/history_window.ui.h:8
+msgid "searching only in the selected day "
+msgstr "cherche uniquement à la date sélectionnée "
+
#: ../data/gui/item_archiving_preferences_window.ui.h:1
msgid "approve"
-msgstr ""
+msgstr "approuver"
#: ../data/gui/item_archiving_preferences_window.ui.h:2
msgid "body"
@@ -1411,11 +1425,11 @@ msgstr "corps"
#: ../data/gui/item_archiving_preferences_window.ui.h:3
msgid "concede"
-msgstr ""
+msgstr "concéder"
#: ../data/gui/item_archiving_preferences_window.ui.h:4
msgid "expire"
-msgstr ""
+msgstr "expirer"
#: ../data/gui/item_archiving_preferences_window.ui.h:5
msgid "false"
@@ -1439,7 +1453,7 @@ msgstr "message"
#: ../data/gui/item_archiving_preferences_window.ui.h:9
msgid "oppose"
-msgstr ""
+msgstr "opposer"
#: ../data/gui/item_archiving_preferences_window.ui.h:10
msgid "otr"
@@ -1447,11 +1461,11 @@ msgstr "otr"
#: ../data/gui/item_archiving_preferences_window.ui.h:11
msgid "prefer"
-msgstr ""
+msgstr "préfère"
#: ../data/gui/item_archiving_preferences_window.ui.h:12
msgid "require"
-msgstr ""
+msgstr "nécessite"
#: ../data/gui/item_archiving_preferences_window.ui.h:13
msgid "save"
@@ -1465,7 +1479,7 @@ msgstr "flux"
msgid "Bro_wse Rooms"
msgstr "_Parcourir les salons"
-#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2298
+#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2337
msgid "Join Group Chat"
msgstr "Rejoindre un salon de discussion"
@@ -1489,7 +1503,7 @@ msgstr "Récemment :"
msgid "Room:"
msgstr "Salon de discussion :"
-#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1816
+#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1859
msgid "Server:"
msgstr "Serveur :"
@@ -1515,21 +1529,20 @@ msgid "Manage Bookmarks"
msgstr "Gérer les marque-pages"
#: ../data/gui/manage_bookmarks_window.ui.h:4
-#, fuzzy
msgid "Minimi_ze on Auto Join"
-msgstr "Minimiser automatiquement"
+msgstr "_Minimiser automatiquement"
#: ../data/gui/manage_bookmarks_window.ui.h:5
msgid "Pr_int status:"
-msgstr "Afficher l'état :"
+msgstr "_Afficher l'état :"
#: ../data/gui/manage_bookmarks_window.ui.h:6
msgid "Roo_m:"
-msgstr ""
+msgstr "_Salon:"
#: ../data/gui/manage_bookmarks_window.ui.h:10
msgid "_Title:"
-msgstr "Titre :"
+msgstr "_Titre :"
#: ../data/gui/manage_pep_services_window.ui.h:1
msgid "PEP Service Configuration"
@@ -1616,34 +1629,26 @@ msgid "Authors:"
msgstr "Auteurs :"
#: ../data/gui/plugins_window.ui.h:4
-msgid "Available"
-msgstr "Disponible"
-
-#: ../data/gui/plugins_window.ui.h:5
msgid "Configure"
msgstr "Configurer"
-#: ../data/gui/plugins_window.ui.h:6
+#: ../data/gui/plugins_window.ui.h:5
msgid "Description:"
msgstr "Description :"
-#: ../data/gui/plugins_window.ui.h:7
-msgid "Descrition:"
-msgstr "Description :"
-
-#: ../data/gui/plugins_window.ui.h:8
+#: ../data/gui/plugins_window.ui.h:6
msgid "Homepage:"
msgstr "Site perso :"
-#: ../data/gui/plugins_window.ui.h:9
-msgid "Install"
-msgstr "Installer"
+#: ../data/gui/plugins_window.ui.h:7
+msgid "Install from zip"
+msgstr "Installer d'un zip"
-#: ../data/gui/plugins_window.ui.h:10
+#: ../data/gui/plugins_window.ui.h:8
msgid "Installed"
msgstr "Installé"
-#: ../data/gui/plugins_window.ui.h:11
+#: ../data/gui/plugins_window.ui.h:9
msgid ""
"Plug-in decription should be displayed here. This text will be erased during "
"PluginsWindow initialization."
@@ -1651,32 +1656,27 @@ msgstr ""
"La description du plugin doit se trouver ici. Ce teste sera effacé lors de "
"l'initialisation de la fenêtre de plugins."
-#: ../data/gui/plugins_window.ui.h:12
+#: ../data/gui/plugins_window.ui.h:10
msgid "Plugins"
-msgstr ""
+msgstr "Plugins"
-#: ../data/gui/plugins_window.ui.h:13
+#: ../data/gui/plugins_window.ui.h:11
msgid "Uninstall"
msgstr "Désintaller"
-#: ../data/gui/plugins_window.ui.h:14
+#: ../data/gui/plugins_window.ui.h:12
msgid "Version:"
msgstr "Version :"
-#: ../data/gui/plugins_window.ui.h:15
-msgid "button"
-msgstr "bouton"
-
-#: ../data/gui/plugins_window.ui.h:16
+#: ../data/gui/plugins_window.ui.h:13
msgid "homepage url"
-msgstr ""
+msgstr "url de la page d'accueil"
#: ../data/gui/popup_notification_window.ui.h:1
msgid "Event Type"
msgstr "Type d'événement"
#: ../data/gui/popup_notification_window.ui.h:2
-#, fuzzy
msgid "Event desc"
msgstr "Événement"
@@ -1759,133 +1759,137 @@ msgstr "<b>Notifications visuelles</b>"
#: ../data/gui/preferences_window.ui.h:22
msgid "<i>(example: stunserver.org)</i>"
-msgstr "<i>(exemple: stunserver.org)>/i>"
+msgstr "<i>(exemple: stunserver.org)</i>"
#: ../data/gui/preferences_window.ui.h:23
msgid "Advanced"
msgstr "Avancées"
#: ../data/gui/preferences_window.ui.h:24
-#, fuzzy
msgid "All chat states"
msgstr "Tous les états"
#: ../data/gui/preferences_window.ui.h:25
-msgid "Allow _OS information to be sent"
-msgstr "Envoyer des informations concernant votre _système d'exploitation"
+msgid "Allow client / _OS information to be sent"
+msgstr ""
+"Envoyer des informations concernant votre client / _système d'exploitation"
#: ../data/gui/preferences_window.ui.h:26
+msgid "Allow local system time information to be sent"
+msgstr "Envoyer des informations concernant l'heure de votre système"
+
+#: ../data/gui/preferences_window.ui.h:27
msgid "Allow my _idle time to be sent"
msgstr "Envoyer mon temps d'inactivité"
-#: ../data/gui/preferences_window.ui.h:27
+#: ../data/gui/preferences_window.ui.h:28
msgid "Allow popup/notifications when I'm _away/na/busy/invisible"
msgstr ""
"Autoriser les _notifications lorsque je suis absent(e)/indisponible/occupé"
"(e)/invisible"
-#: ../data/gui/preferences_window.ui.h:28
+#: ../data/gui/preferences_window.ui.h:29
msgid "Allow sound when I'm _busy"
msgstr "Autoriser les sons quand je suis _occupé(e)"
-#: ../data/gui/preferences_window.ui.h:29
+#: ../data/gui/preferences_window.ui.h:30
msgid "Always"
msgstr "Toujours"
-#: ../data/gui/preferences_window.ui.h:30
+#: ../data/gui/preferences_window.ui.h:31
msgid "Ask status message when I:"
msgstr "Demander le message d'état lorsque je me : "
-#: ../data/gui/preferences_window.ui.h:31 ../src/features_window.py:106
+#: ../data/gui/preferences_window.ui.h:32 ../src/features_window.py:106
msgid "Audio / Video"
msgstr "Audio / Vidéo"
-#: ../data/gui/preferences_window.ui.h:32
+#: ../data/gui/preferences_window.ui.h:33
msgid "Audio input device"
msgstr "Périphérique audio d'entrée"
-#: ../data/gui/preferences_window.ui.h:33
+#: ../data/gui/preferences_window.ui.h:34
msgid "Audio output device"
msgstr "Périphérique audio de sortie"
-#: ../data/gui/preferences_window.ui.h:34
+#: ../data/gui/preferences_window.ui.h:35
msgid "Chat message:"
msgstr "Message de conversation :"
-#: ../data/gui/preferences_window.ui.h:35
+#: ../data/gui/preferences_window.ui.h:36
msgid "Check on startup if Gajim is the _default Jabber client"
msgstr "Vérifier que Gajim est le client Jabber par _défaut au démarrage"
-#: ../data/gui/preferences_window.ui.h:36
+#: ../data/gui/preferences_window.ui.h:37
msgid "Composing only"
msgstr "Seulement en train d'écrire"
-#: ../data/gui/preferences_window.ui.h:37
+#: ../data/gui/preferences_window.ui.h:38
msgid "Configure color and font of the interface"
msgstr "Paramétrer la couleur et la police de texte de l'interface"
-#: ../data/gui/preferences_window.ui.h:38
+#: ../data/gui/preferences_window.ui.h:39
msgid "Contact's message:"
msgstr "Le message du contact :"
-#: ../data/gui/preferences_window.ui.h:39
+#: ../data/gui/preferences_window.ui.h:40
msgid "Contact's nickname:"
msgstr "Le pseudo du contact :"
-#: ../data/gui/preferences_window.ui.h:40
+#: ../data/gui/preferences_window.ui.h:41
msgid "Custom"
msgstr "Personnalisé"
-#: ../data/gui/preferences_window.ui.h:41
+#: ../data/gui/preferences_window.ui.h:42
msgid "Detached roster with chat grouped by account"
-msgstr ""
+msgstr "Liste des contacts détachée avec conversations groupées par compte"
-#: ../data/gui/preferences_window.ui.h:42
+#: ../data/gui/preferences_window.ui.h:43
msgid "Detached roster with chat grouped by type"
-msgstr ""
+msgstr "Liste des contacts détachée avec conversations groupées par type"
-#: ../data/gui/preferences_window.ui.h:43
+#: ../data/gui/preferences_window.ui.h:44
msgid "Detached roster with detached chats"
-msgstr ""
+msgstr "Liste des contacts détachée avec conversations détachéee"
-#: ../data/gui/preferences_window.ui.h:44
+#: ../data/gui/preferences_window.ui.h:45
msgid "Detached roster with single chat"
-msgstr ""
+msgstr "Liste des contacts détachée avec conversations groupées"
-#: ../data/gui/preferences_window.ui.h:45 ../src/config.py:170
-#: ../src/config.py:672
+#: ../data/gui/preferences_window.ui.h:46 ../src/config.py:171
+#: ../src/config.py:683
msgid "Disabled"
msgstr "Désactivé"
-#: ../data/gui/preferences_window.ui.h:46
+#: ../data/gui/preferences_window.ui.h:47
msgid "Display _activity of contacts in roster"
msgstr "Afficher l'_activité des contacts dans la liste des contacts"
-#: ../data/gui/preferences_window.ui.h:47
+#: ../data/gui/preferences_window.ui.h:48
msgid "Display _extra email details"
msgstr "Afficher des informations détaillées de courriels"
-#: ../data/gui/preferences_window.ui.h:48
+#: ../data/gui/preferences_window.ui.h:49
msgid "Display _location of contacts in roster"
msgstr "Afficher la localisation des contacts dans la liste"
-#: ../data/gui/preferences_window.ui.h:49
+#: ../data/gui/preferences_window.ui.h:50
msgid "Display _tunes of contacts in roster"
msgstr "Afficher ce que mes contacts écoutent"
-#: ../data/gui/preferences_window.ui.h:50
+#: ../data/gui/preferences_window.ui.h:51
msgid "Display a_vatars of contacts in roster"
msgstr "Afficher l'a_vatar des contacts dans la liste des contacts"
-#: ../data/gui/preferences_window.ui.h:51
+#: ../data/gui/preferences_window.ui.h:52
msgid "Display m_ood of contacts in roster"
msgstr "Afficher l'humeur des contacts dans la liste des contacts"
-#: ../data/gui/preferences_window.ui.h:52
+#: ../data/gui/preferences_window.ui.h:53
msgid "Display status _messages of contacts in roster"
msgstr "Afficher les _messages d'état des contacts dans la liste des contacts"
-#: ../data/gui/preferences_window.ui.h:53
+#: ../data/gui/preferences_window.ui.h:54
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1895,7 +1899,7 @@ msgstr ""
"conversations que vous pouvez avoir avec un contact. Vous pouvez ici "
"spécifier quels états de conversation vous voulez envoyer à vos contacts."
-#: ../data/gui/preferences_window.ui.h:54
+#: ../data/gui/preferences_window.ui.h:55
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1905,7 +1909,7 @@ msgstr ""
"conversations que vous pouvez avoir avec un contact. Vous pouvez ici "
"spécifier quel état de conversation vous voulez envoyer à vos contacts."
-#: ../data/gui/preferences_window.ui.h:55
+#: ../data/gui/preferences_window.ui.h:56
msgid ""
"Gajim will notify you via a popup window in the bottom right of the screen "
"about contacts that just signed out"
@@ -1913,11 +1917,15 @@ msgstr ""
"Gajim vous signalera par une fenêtre de notification en bas à droite de "
"l'écran qu'un contact s'est déconnecté"
-#: ../data/gui/preferences_window.ui.h:57
+#: ../data/gui/preferences_window.ui.h:58
+msgid "Global proxy:"
+msgstr "Proxy global :"
+
+#: ../data/gui/preferences_window.ui.h:59
msgid "Hide all buttons in chat windows"
msgstr "Cacher tous les boutons dans les fenêtres de conversations"
-#: ../data/gui/preferences_window.ui.h:58
+#: ../data/gui/preferences_window.ui.h:60
msgid ""
"If checked, Gajim will allow others to detect the operation system you are "
"using"
@@ -1925,7 +1933,13 @@ msgstr ""
"Si cette case est cochée, Gajim autorisera les autres à détecter le système "
"d'exploitation que vous utilisez"
-#: ../data/gui/preferences_window.ui.h:59
+#: ../data/gui/preferences_window.ui.h:61
+msgid "If checked, Gajim will allow others to detect the time on your system"
+msgstr ""
+"Si cette case est cochée, Gajim autorisera les autres à détecter l'heure de "
+"votre système"
+
+#: ../data/gui/preferences_window.ui.h:62
msgid ""
"If checked, Gajim will also include information about the sender of the new "
"emails"
@@ -1933,14 +1947,14 @@ msgstr ""
"Si cette case est cochée, Gajim affichera également des informations à "
"propos de l'expéditeur des nouveaux courriels"
-#: ../data/gui/preferences_window.ui.h:60
+#: ../data/gui/preferences_window.ui.h:63
msgid ""
"If checked, Gajim will change status to Away when the computer is unused."
msgstr ""
"Si cette case est cochée, Gajim changera votre statut en Absent(e) quand "
"l'ordinateur est inutilisé."
-#: ../data/gui/preferences_window.ui.h:61
+#: ../data/gui/preferences_window.ui.h:64
msgid ""
"If checked, Gajim will change status to Not Available when the computer has "
"not been used even longer"
@@ -1948,7 +1962,7 @@ msgstr ""
"Si cette case est cochée, Gajim changera votre statut en Non disponible "
"quand l'ordinateur n'a pas été utilisé pendant une plus longue période"
-#: ../data/gui/preferences_window.ui.h:62
+#: ../data/gui/preferences_window.ui.h:65
msgid ""
"If checked, Gajim will display avatars of contacts in roster window and in "
"group chats"
@@ -1956,7 +1970,7 @@ msgstr ""
"Si cette case est cochée, Gajim affichera l'avatar de chaque contact dans la "
"fenêtre principale et les salons"
-#: ../data/gui/preferences_window.ui.h:63
+#: ../data/gui/preferences_window.ui.h:66
msgid ""
"If checked, Gajim will display status messages of contacts under the contact "
"name in roster window and in group chats"
@@ -1964,35 +1978,35 @@ msgstr ""
"Si cette case est cochée, Gajim affichera le message d'état, sous le nom de "
"chaque contact dans la fenêtre principale et les salons"
-#: ../data/gui/preferences_window.ui.h:64
+#: ../data/gui/preferences_window.ui.h:67
msgid ""
"If checked, Gajim will display the activity of contacts in the roster window"
msgstr ""
"Si cette case est cochée, Gajim affichera l'activité des contacts dans votre "
"liste des contacts"
-#: ../data/gui/preferences_window.ui.h:65
+#: ../data/gui/preferences_window.ui.h:68
msgid ""
"If checked, Gajim will display the location of contacts in the roster window"
msgstr ""
"Si cette case est cochée, Gajim affichera la localisation de chaque contact "
"dans votre liste de contacts"
-#: ../data/gui/preferences_window.ui.h:66
+#: ../data/gui/preferences_window.ui.h:69
msgid ""
"If checked, Gajim will display the mood of contacts in the roster window"
msgstr ""
"Si cette case est cochée, Gajim affichera l'humeur de chaque contact dans "
"votre roster"
-#: ../data/gui/preferences_window.ui.h:67
+#: ../data/gui/preferences_window.ui.h:70
msgid ""
"If checked, Gajim will display the tunes of contacts in the roster window"
msgstr ""
"Si cette case est cochée, Gajim affichera ce que chaque contact écoute dans "
"votre roster"
-#: ../data/gui/preferences_window.ui.h:68
+#: ../data/gui/preferences_window.ui.h:71
msgid ""
"If checked, Gajim will highlight spelling errors in input fields of chat "
"windows. If no language is explicitly set via right click on the input "
@@ -2003,7 +2017,7 @@ msgstr ""
"définie explicitement par clique droit sur le champ de saisie, la langue par "
"défaut sera utilisée pour ce contact ou ce salon."
-#: ../data/gui/preferences_window.ui.h:69
+#: ../data/gui/preferences_window.ui.h:72
msgid ""
"If checked, Gajim will ignore incoming events from unauthorized contacts. "
"Use with caution, because it blocks all messages from any contact that is "
@@ -2013,7 +2027,7 @@ msgstr ""
"contacts non autorisés. Utilisez avec précaution car cela bloque tous les "
"messages provenant des contacts qui ne sont pas dans votre liste"
-#: ../data/gui/preferences_window.ui.h:70
+#: ../data/gui/preferences_window.ui.h:73
msgid ""
"If checked, Gajim will keep logs for encrypted messages. Please note that "
"when using E2E encryption the remote party has to agree on logging, else the "
@@ -2023,7 +2037,7 @@ msgstr ""
"Veuillez noter qu'en utilisant une encryption E2E, l'utilisateur distant "
"doit l'accepter, sinon les messages ne seront pas archivés."
-#: ../data/gui/preferences_window.ui.h:71
+#: ../data/gui/preferences_window.ui.h:74
msgid ""
"If checked, Gajim will show a notification when a new e-mail is received via "
"GMail"
@@ -2031,7 +2045,7 @@ msgstr ""
"Si cette case est cochée, Gajim affichera une notification quand un nouveau "
"courriel GMail est reçu"
-#: ../data/gui/preferences_window.ui.h:72
+#: ../data/gui/preferences_window.ui.h:75
msgid ""
"If checked, Gajim will use protocol-specific status icons. (eg. A contact "
"from MSN will have the equivalent msn icon for status online, away, busy, "
@@ -2041,7 +2055,7 @@ msgstr ""
"protocoles. (Par ex. un contact MSN aura les icônes de MSN pour les états "
"disponible, absent(e), occupé(e), etc.)"
-#: ../data/gui/preferences_window.ui.h:73
+#: ../data/gui/preferences_window.ui.h:76
msgid ""
"If enabled, Gajim will not ask for a status message. The specified default "
"message will be used instead."
@@ -2049,7 +2063,7 @@ msgstr ""
"Si cette case est cochée, Gajim ne demandera pas de message de statut. Le "
"message par défaut sera utilisé à la place."
-#: ../data/gui/preferences_window.ui.h:74
+#: ../data/gui/preferences_window.ui.h:77
msgid ""
"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent "
"animated or static graphical emoticons"
@@ -2057,67 +2071,67 @@ msgstr ""
"Si cette case n'est pas décochée, Gajim va remplacer les émoticônes ASCII "
"comme « :) » par un équivalent graphique statique ou dynamique"
-#: ../data/gui/preferences_window.ui.h:75
+#: ../data/gui/preferences_window.ui.h:78
msgid "Last state"
msgstr "Dernier état"
-#: ../data/gui/preferences_window.ui.h:76
+#: ../data/gui/preferences_window.ui.h:79
msgid "Log _encrypted chat session"
msgstr "Archiver les conversations _chiffrées"
-#: ../data/gui/preferences_window.ui.h:77
+#: ../data/gui/preferences_window.ui.h:80
msgid "Ma_ke message windows compact"
msgstr "Rendre les fenêtres de conversation _compactes"
-#: ../data/gui/preferences_window.ui.h:78
+#: ../data/gui/preferences_window.ui.h:81
msgid "Ma_nage..."
msgstr "_Gérer..."
-#: ../data/gui/preferences_window.ui.h:79
+#: ../data/gui/preferences_window.ui.h:82
msgid "Never"
msgstr "Jamais"
-#: ../data/gui/preferences_window.ui.h:80
+#: ../data/gui/preferences_window.ui.h:83
msgid "Notifications"
msgstr "Notifications"
-#: ../data/gui/preferences_window.ui.h:81
+#: ../data/gui/preferences_window.ui.h:84
msgid "Notify me about contacts that sign _in"
msgstr "Me signaler les contacts qui se _connectent"
-#: ../data/gui/preferences_window.ui.h:82
+#: ../data/gui/preferences_window.ui.h:85
msgid "Notify me about contacts that sign _out"
msgstr "Me signaler les contacts qui se _déconnectent"
-#: ../data/gui/preferences_window.ui.h:83
+#: ../data/gui/preferences_window.ui.h:86
msgid "Notify me about it"
msgstr "Me le signaler"
-#: ../data/gui/preferences_window.ui.h:84
+#: ../data/gui/preferences_window.ui.h:87
msgid "Notify on new _GMail email"
msgstr "M'avertir lors de l'arrivée d'un courrier électronique _Gmail"
-#: ../data/gui/preferences_window.ui.h:85
+#: ../data/gui/preferences_window.ui.h:88
msgid "Only when pending events"
msgstr "Seulement lorsqu'il y a des évènements en attente"
-#: ../data/gui/preferences_window.ui.h:86
+#: ../data/gui/preferences_window.ui.h:89
msgid "Personal Events"
msgstr "Événements Personnels"
-#: ../data/gui/preferences_window.ui.h:87
+#: ../data/gui/preferences_window.ui.h:90
msgid "Play _sounds"
msgstr "_Jouer les sons"
-#: ../data/gui/preferences_window.ui.h:88
+#: ../data/gui/preferences_window.ui.h:91
msgid "Pop it up"
msgstr "Faire surgir un pop up"
-#: ../data/gui/preferences_window.ui.h:89
+#: ../data/gui/preferences_window.ui.h:92
msgid "Preferences"
msgstr "Préférences"
-#: ../data/gui/preferences_window.ui.h:90
+#: ../data/gui/preferences_window.ui.h:93
msgid ""
"STUN server hostname. If none given, Gajim will try\n"
"to discover one from server."
@@ -2125,31 +2139,31 @@ msgstr ""
"Nom d'hote du serveur STUN. Si rien n'est rempli, Gajim va tenter\n"
" de le découvrir à partir du serveur."
-#: ../data/gui/preferences_window.ui.h:92
+#: ../data/gui/preferences_window.ui.h:95
msgid "STUN server:"
msgstr "Serveur STUN :"
-#: ../data/gui/preferences_window.ui.h:93
+#: ../data/gui/preferences_window.ui.h:96
msgid "Show notification area icon:"
msgstr "Montrer l'icone de la zone de notification :"
-#: ../data/gui/preferences_window.ui.h:94
+#: ../data/gui/preferences_window.ui.h:97
msgid "Show only in roster"
msgstr "Ne le montrer que dans la liste"
-#: ../data/gui/preferences_window.ui.h:95
+#: ../data/gui/preferences_window.ui.h:98
msgid "Sign _in"
msgstr "_connecte"
-#: ../data/gui/preferences_window.ui.h:96
+#: ../data/gui/preferences_window.ui.h:99
msgid "Sign _out"
msgstr "_déconnecte"
-#: ../data/gui/preferences_window.ui.h:97
+#: ../data/gui/preferences_window.ui.h:100
msgid "Single window for everything"
msgstr "Une seule fenêtre pour tout"
-#: ../data/gui/preferences_window.ui.h:98
+#: ../data/gui/preferences_window.ui.h:101
msgid ""
"Some messages may include rich content (formatting, colors etc). If checked, "
"Gajim will just display the raw message text."
@@ -2157,27 +2171,27 @@ msgstr ""
"Certains messages peuvent contenir du texte complexe (formatage, couleurs, "
"etc.). Si activé, Gajim l'affichera seulement en tant que texte non formaté. "
-#: ../data/gui/preferences_window.ui.h:99
+#: ../data/gui/preferences_window.ui.h:102
msgid "Sort contacts by status"
msgstr "Trier les contacts par état"
-#: ../data/gui/preferences_window.ui.h:100 ../src/config.py:400
+#: ../data/gui/preferences_window.ui.h:103 ../src/config.py:401
msgid "Status"
msgstr "État"
-#: ../data/gui/preferences_window.ui.h:101
+#: ../data/gui/preferences_window.ui.h:104
msgid "Status _iconset:"
msgstr "_Icônes d'état :"
-#: ../data/gui/preferences_window.ui.h:102
+#: ../data/gui/preferences_window.ui.h:105
msgid "Style"
msgstr "Style"
-#: ../data/gui/preferences_window.ui.h:103
+#: ../data/gui/preferences_window.ui.h:106
msgid "T_heme:"
msgstr "T_hème :"
-#: ../data/gui/preferences_window.ui.h:104
+#: ../data/gui/preferences_window.ui.h:107
msgid ""
"The auto away status message. If empty, Gajim will not change the current "
"status message\n"
@@ -2189,7 +2203,7 @@ msgstr ""
"$S sera remplacé par l'ancien message de statut\n"
"$T sera remplacé par le temps d'absence"
-#: ../data/gui/preferences_window.ui.h:107
+#: ../data/gui/preferences_window.ui.h:110
msgid ""
"The auto not available status message. If empty, Gajim will not change the "
"current status message\n"
@@ -2201,127 +2215,127 @@ msgstr ""
"$S sera remplacé par l'ancien message de statut\n"
"$T sera remplacé par le temps de non-activité"
-#: ../data/gui/preferences_window.ui.h:110
+#: ../data/gui/preferences_window.ui.h:113
msgid "Use _transports icons"
msgstr "Utiliser les icônes des passere_lles"
-#: ../data/gui/preferences_window.ui.h:111
+#: ../data/gui/preferences_window.ui.h:114
msgid "Use default applications"
msgstr "Toujours utiliser les applications par défaut."
-#: ../data/gui/preferences_window.ui.h:112
+#: ../data/gui/preferences_window.ui.h:115
msgid "Use system _default"
msgstr "Utiliser la valeur par _défaut"
-#: ../data/gui/preferences_window.ui.h:113
+#: ../data/gui/preferences_window.ui.h:116
msgid "Video framerate"
msgstr "Images par seconde"
-#: ../data/gui/preferences_window.ui.h:114
+#: ../data/gui/preferences_window.ui.h:117
msgid "Video input device"
msgstr "Périphérique d'entrée vidéo."
-#: ../data/gui/preferences_window.ui.h:115
+#: ../data/gui/preferences_window.ui.h:118
msgid "Video output device"
msgstr "Périphérique vidéo de sortie"
-#: ../data/gui/preferences_window.ui.h:116
+#: ../data/gui/preferences_window.ui.h:119
msgid "Video size"
msgstr "Taille de la vidéo"
-#: ../data/gui/preferences_window.ui.h:117
+#: ../data/gui/preferences_window.ui.h:120
msgid "When new event is received:"
msgstr "Quand un nouvel événement est reçu :"
-#: ../data/gui/preferences_window.ui.h:118
+#: ../data/gui/preferences_window.ui.h:121
msgid "Your message:"
msgstr "Votre message :"
-#: ../data/gui/preferences_window.ui.h:119
+#: ../data/gui/preferences_window.ui.h:122
msgid "Your nickname:"
msgstr "Votre pseudo :"
-#: ../data/gui/preferences_window.ui.h:120
+#: ../data/gui/preferences_window.ui.h:123
msgid "_Away after:"
msgstr "Passer _Absent(e) après :"
-#: ../data/gui/preferences_window.ui.h:121
+#: ../data/gui/preferences_window.ui.h:124
msgid "_Browser:"
msgstr "_Navigateur :"
-#: ../data/gui/preferences_window.ui.h:122
+#: ../data/gui/preferences_window.ui.h:125
msgid "_Display chat state notifications:"
msgstr "_Afficher les notifications d'état :"
-#: ../data/gui/preferences_window.ui.h:123
+#: ../data/gui/preferences_window.ui.h:126
msgid "_Emoticons:"
msgstr "É_moticônes :"
-#: ../data/gui/preferences_window.ui.h:124
+#: ../data/gui/preferences_window.ui.h:127
msgid "_File manager:"
msgstr "Gestionnaire de _fichiers :"
-#: ../data/gui/preferences_window.ui.h:125
+#: ../data/gui/preferences_window.ui.h:128
msgid "_Highlight misspelled words"
msgstr "_Souligner les fautes d'orthographe"
-#: ../data/gui/preferences_window.ui.h:126
+#: ../data/gui/preferences_window.ui.h:129
msgid "_Ignore events from contacts not in the roster"
msgstr "_Ignorer les messages des contacts qui ne sont pas dans votre liste"
-#: ../data/gui/preferences_window.ui.h:127
+#: ../data/gui/preferences_window.ui.h:130
msgid "_Ignore rich content in incoming messages"
msgstr "_Ignorer le formatage complexe du texte dans les messages entrants"
-#: ../data/gui/preferences_window.ui.h:128
+#: ../data/gui/preferences_window.ui.h:131
msgid "_Log status changes of contacts"
msgstr "Inscrire dans l'_historique les changements d'état des contacts"
-#: ../data/gui/preferences_window.ui.h:129
+#: ../data/gui/preferences_window.ui.h:132
msgid "_Mail client:"
msgstr "Logiciel de courriel :"
-#: ../data/gui/preferences_window.ui.h:130
+#: ../data/gui/preferences_window.ui.h:134
msgid "_Not available after:"
msgstr "Passer _indisponible après :"
-#: ../data/gui/preferences_window.ui.h:131
+#: ../data/gui/preferences_window.ui.h:135
msgid "_Open..."
msgstr "_Ouvrir..."
-#: ../data/gui/preferences_window.ui.h:132
+#: ../data/gui/preferences_window.ui.h:136
msgid "_Reset to Default Colors"
msgstr "Utilise_r les couleurs par défaut"
-#: ../data/gui/preferences_window.ui.h:133
+#: ../data/gui/preferences_window.ui.h:137
msgid "_Send chat state notifications:"
msgstr "_Envoyer les notifications d'état :"
-#: ../data/gui/preferences_window.ui.h:134
+#: ../data/gui/preferences_window.ui.h:138
msgid "_Show roster on startup:"
msgstr "Montrer la _liste au démarrage:"
-#: ../data/gui/preferences_window.ui.h:135
+#: ../data/gui/preferences_window.ui.h:139
msgid "_Status message:"
msgstr "Message d'état :"
-#: ../data/gui/preferences_window.ui.h:136
+#: ../data/gui/preferences_window.ui.h:140
msgid "_URL highlight:"
msgstr "Mise à valeur des _URL :"
-#: ../data/gui/preferences_window.ui.h:137
+#: ../data/gui/preferences_window.ui.h:141
msgid "_Window behavior:"
msgstr "Comportement de la _fenêtre :"
-#: ../data/gui/preferences_window.ui.h:138
+#: ../data/gui/preferences_window.ui.h:142
msgid "in _group chats"
msgstr "dans les _salons de discussion"
-#: ../data/gui/preferences_window.ui.h:139
+#: ../data/gui/preferences_window.ui.h:143
msgid "in _roster"
msgstr "dans le _roster"
-#: ../data/gui/preferences_window.ui.h:140
+#: ../data/gui/preferences_window.ui.h:144
msgid "minutes"
msgstr "minutes"
@@ -2373,7 +2387,7 @@ msgstr "Identifiant Jabber :"
msgid "Order:"
msgstr "Ordre :"
-#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3936
+#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3982
msgid "Privacy List"
msgstr "Liste privée"
@@ -2580,8 +2594,8 @@ msgstr "Supprimer le compte de Gajim et du _serveur"
#. Remove group
#. Remove
-#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5630
-#: ../src/roster_window.py:5755 ../src/roster_window.py:5885
+#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5719
+#: ../src/roster_window.py:5844 ../src/roster_window.py:5974
msgid "_Remove"
msgstr "_Supprimer"
@@ -2628,7 +2642,7 @@ msgstr "Aide en ligne"
#: ../data/gui/roster_window.ui.h:8
msgid "P_lugins"
-msgstr ""
+msgstr "P_lugins"
#: ../data/gui/roster_window.ui.h:9
msgid "Profile, A_vatar"
@@ -2639,49 +2653,44 @@ msgid "Show Only _Active Contacts"
msgstr "Afficher seulement les contacts _Actifs"
#: ../data/gui/roster_window.ui.h:12
-#, fuzzy
-msgid "Show Roster Fi_lter"
-msgstr "Montrer le filtre de _liste de contacts"
+msgid "Show T_ransports"
+msgstr "Afficher les _Passerelles"
#: ../data/gui/roster_window.ui.h:13
-msgid "Show Trans_ports"
-msgstr "Afficher les Passerelles"
-
-#: ../data/gui/roster_window.ui.h:14
msgid "Show _Offline Contacts"
msgstr "Afficher les Contacts _déconnectés"
-#: ../data/gui/roster_window.ui.h:15 ../src/statusicon.py:346
+#: ../data/gui/roster_window.ui.h:14 ../src/statusicon.py:346
msgid "Show _Roster"
msgstr "Montrer la _liste de contacts"
-#: ../data/gui/roster_window.ui.h:16
+#: ../data/gui/roster_window.ui.h:15
msgid "_Accounts"
msgstr "_Comptes"
#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)
-#: ../data/gui/roster_window.ui.h:17
+#: ../data/gui/roster_window.ui.h:16
#: ../data/gui/subscription_request_window.ui.h:6
msgid "_Actions"
msgstr "Act_ions"
-#: ../data/gui/roster_window.ui.h:19
+#: ../data/gui/roster_window.ui.h:18
msgid "_Contents"
msgstr "_Sommaire"
-#: ../data/gui/roster_window.ui.h:21 ../src/disco.py:1520
+#: ../data/gui/roster_window.ui.h:20 ../src/disco.py:1520
msgid "_Edit"
msgstr "É_dition"
-#: ../data/gui/roster_window.ui.h:22
+#: ../data/gui/roster_window.ui.h:21
msgid "_FAQ"
msgstr "_FAQ"
-#: ../data/gui/roster_window.ui.h:23
+#: ../data/gui/roster_window.ui.h:22
msgid "_Help"
msgstr "Aid_e"
-#: ../data/gui/roster_window.ui.h:26
+#: ../data/gui/roster_window.ui.h:25
msgid "_View"
msgstr "_Affichage"
@@ -2698,7 +2707,7 @@ msgid "_Add contact"
msgstr "_Ajouter un contact"
#. Information
-#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5897
+#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5986
msgid "_Information"
msgstr "Information"
@@ -2778,6 +2787,10 @@ msgstr "_Refuser"
msgid "Select the account with which you want to synchronise"
msgstr "Sélectionnez le compte avec lequel vous voulez vous synchroniser"
+#: ../data/gui/synchronise_select_account_dialog.ui.h:2
+msgid "Synchronise contacts"
+msgstr "Synchroniser les contacts"
+
#: ../data/gui/synchronise_select_contacts_dialog.ui.h:1
msgid "Select the contacts you want to synchronise"
msgstr "Sélectionnez les contacts que vous voulez synchroniser"
@@ -2879,23 +2892,23 @@ msgstr "<b>Entrée XML</b>"
#: ../data/gui/xml_console_window.ui.h:4
msgid "Hide IN stanzas"
-msgstr ""
+msgstr "Cacher les stanzas entrantes"
#: ../data/gui/xml_console_window.ui.h:5
msgid "Hide IQ stanzas"
-msgstr ""
+msgstr "Cacher les stanzas de type iq"
#: ../data/gui/xml_console_window.ui.h:6
msgid "Hide Message stanzas"
-msgstr ""
+msgstr "Cacher les stanzas de type message"
#: ../data/gui/xml_console_window.ui.h:7
msgid "Hide OUT stanzas"
-msgstr ""
+msgstr "Cacher les stanzas sortantes"
#: ../data/gui/xml_console_window.ui.h:8
msgid "Hide Presence stanzas"
-msgstr ""
+msgstr "Cacher les stanzas de type presence"
#: ../data/gui/xml_console_window.ui.h:9
msgid "Info/Query"
@@ -2973,6 +2986,11 @@ msgstr "Le service a envoyé des données mal-formées"
msgid "Service changed the session identifier."
msgstr "Le service a modifié l'identifiant de la session."
+#: ../src/adhoc_commands.py:418
+#, python-format
+msgid "%s - Ad-hoc Commands - Gajim"
+msgstr "%s - Commandes Ad-hoc - Gajim"
+
#. when stanza doesn't have error description
#: ../src/adhoc_commands.py:513
msgid "Service returned an error."
@@ -2999,7 +3017,7 @@ msgstr "Entier"
msgid "Text"
msgstr "Texte"
-#: ../src/advanced_configuration_window.py:96 ../src/chat_control.py:1049
+#: ../src/advanced_configuration_window.py:96 ../src/chat_control.py:1060
msgid "Color"
msgstr "Couleur"
@@ -3036,205 +3054,205 @@ msgstr[1] "Vous avez reçu de nouvelles entrées (et %d non-affichées) :"
#. #!/bin/sh
#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done)
#. echo "{_('en'):'en'",$LANG"}"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "English"
msgstr "Anglais"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Belarusian"
msgstr "Biélorusse"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Bulgarian"
msgstr "Bulgare"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Breton"
msgstr "Breton"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Czech"
msgstr "Tchèque"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "German"
msgstr "Allemand"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Greek"
msgstr "Grec"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "British"
msgstr "Anglais (Britannique)"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Esperanto"
msgstr "Esperanto"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Spanish"
msgstr "Espagnol"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Basque"
msgstr "Basque"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "French"
msgstr "Français"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Croatian"
msgstr "Croate"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Italian"
msgstr "Italien"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Norwegian (b)"
msgstr "Norvégien"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Dutch"
msgstr "Hollandais"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Norwegian"
msgstr "Norvégien"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Polish"
msgstr "Polonais"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Portuguese"
msgstr "Portugais"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Brazilian Portuguese"
msgstr "Portugais brésilien"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Russian"
msgstr "Russe"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Serbian"
msgstr "Serbe"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Slovak"
msgstr "Slovaque"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Swedish"
msgstr "Suédois"
-#: ../src/chat_control.py:83
+#: ../src/chat_control.py:85
msgid "Chinese (Ch)"
msgstr "Chinois"
-#: ../src/chat_control.py:226
+#: ../src/chat_control.py:228
msgid "Ping?"
msgstr "Ping ?"
-#: ../src/chat_control.py:231
+#: ../src/chat_control.py:233
#, python-format
msgid "Pong! (%s s.)"
msgstr "Pong ! (%s s.)"
-#: ../src/chat_control.py:236
+#: ../src/chat_control.py:238
msgid "Error."
msgstr "Erreur."
-#: ../src/chat_control.py:561
+#: ../src/chat_control.py:573
msgid "Spelling language"
msgstr "Langue du correcteur orthographique"
#. we are not connected
-#: ../src/chat_control.py:593 ../src/chat_control.py:809
+#: ../src/chat_control.py:605 ../src/chat_control.py:821
msgid "A connection is not available"
msgstr "Aucune connexion disponible"
-#: ../src/chat_control.py:594 ../src/chat_control.py:810
+#: ../src/chat_control.py:606 ../src/chat_control.py:822
msgid "Your message can not be sent until you are connected."
msgstr "Votre message ne peut être envoyé tant que vous n'êtes pas connecté."
-#: ../src/chat_control.py:1031
+#: ../src/chat_control.py:1042
msgid "Underline"
msgstr "Souligné"
-#: ../src/chat_control.py:1032
+#: ../src/chat_control.py:1043
msgid "Strike"
msgstr "Barré"
-#: ../src/chat_control.py:1055
+#: ../src/chat_control.py:1066
msgid "Font"
msgstr "Police"
-#: ../src/chat_control.py:1064
+#: ../src/chat_control.py:1075
msgid "Clear formating"
msgstr "Style par défaut"
-#: ../src/chat_control.py:1141
+#: ../src/chat_control.py:1152
msgid "Really send file?"
msgstr "Êtes vous sûr de vouloir envoyer le fichier ?"
-#: ../src/chat_control.py:1142
+#: ../src/chat_control.py:1153
#, python-format
msgid "If you send a file to %s, he/she will know your real Jabber ID."
msgstr ""
"Si vous envoyez un fichier à %s, il/elle connaîtra votre véritable "
"identifiant Jabber."
-#: ../src/chat_control.py:1622 ../src/chat_control.py:2144
+#: ../src/chat_control.py:1636 ../src/chat_control.py:2170
msgid "GPG encryption enabled"
msgstr "Chiffrement GPG activé"
-#: ../src/chat_control.py:1643 ../src/chat_control.py:1646
+#: ../src/chat_control.py:1657 ../src/chat_control.py:1660
msgid "Requires python-farsight."
msgstr "Nécessite python-farsight."
#. Add to roster
-#: ../src/chat_control.py:1672 ../src/common/contacts.py:158
-#: ../src/common/contacts.py:277 ../src/common/helpers.py:60
-#: ../src/common/helpers.py:254 ../src/dialogs.py:1099 ../src/dialogs.py:2192
-#: ../src/dialogs.py:2221 ../src/gui_interface.py:505
-#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:404
-#: ../src/roster_window.py:1649 ../src/roster_window.py:1651
-#: ../src/roster_window.py:1984 ../src/roster_window.py:3507
-#: ../src/roster_window.py:3534
+#: ../src/chat_control.py:1700 ../src/common/contacts.py:149
+#: ../src/common/contacts.py:270 ../src/common/helpers.py:67
+#: ../src/common/helpers.py:261 ../src/dialogs.py:1099 ../src/dialogs.py:2231
+#: ../src/dialogs.py:2260 ../src/gui_interface.py:482
+#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:405
+#: ../src/roster_window.py:767 ../src/roster_window.py:1664
+#: ../src/roster_window.py:1666 ../src/roster_window.py:2011
+#: ../src/roster_window.py:3551 ../src/roster_window.py:3578
msgid "Not in Roster"
msgstr "Absent de la liste"
-#: ../src/chat_control.py:1702
+#: ../src/chat_control.py:1732
msgid "This contact does not support file transfer."
msgstr "Ce contact ne prend pas en charge les transferts de fichier."
-#: ../src/chat_control.py:1705
+#: ../src/chat_control.py:1735
msgid "You need to know the real JID of the contact to send him or her a file."
msgstr ""
"Vous avez besoin de connaître le vrai JID du contact pour lui envoyer un "
"fichier."
-#: ../src/chat_control.py:1812
+#: ../src/chat_control.py:1849
#, python-format
msgid "%(type)s state : %(state)s, reason: %(reason)s"
msgstr "État %(type)s : %(state)s, raison : %(reason)s"
-#: ../src/chat_control.py:2003
+#: ../src/chat_control.py:2040
#, python-format
msgid "%(nickname)s from group chat %(room_name)s"
msgstr "%(nickname)s du salon de discussion %(room_name)s"
#. No key assigned nor a key is used by remote contact
-#: ../src/chat_control.py:2124 ../src/dialogs.py:4997
+#: ../src/chat_control.py:2150 ../src/dialogs.py:5043
msgid "No GPG key assigned"
msgstr "Aucune clef GPG assignée"
-#: ../src/chat_control.py:2125
+#: ../src/chat_control.py:2151
msgid ""
"No GPG key is assigned to this contact. So you cannot encrypt messages with "
"GPG."
@@ -3242,50 +3260,50 @@ msgstr ""
"Aucune clef GPG n'est assignée à ce contact. Vous ne pouvez donc pas "
"chiffrer les messages avec GPG."
-#: ../src/chat_control.py:2134
+#: ../src/chat_control.py:2160
msgid "GPG encryption disabled"
msgstr "Chiffrement GPG désactivé"
-#: ../src/chat_control.py:2160
+#: ../src/chat_control.py:2186
msgid "Session WILL be logged"
msgstr "La session SERA archivée"
-#: ../src/chat_control.py:2162
+#: ../src/chat_control.py:2188
msgid "Session WILL NOT be logged"
msgstr "La session ne sera PAS archivée"
#. encryption %s active
-#: ../src/chat_control.py:2179
+#: ../src/chat_control.py:2205
msgid "is"
msgstr "est"
-#: ../src/chat_control.py:2179
+#: ../src/chat_control.py:2205
msgid "is NOT"
msgstr "N'est PAS"
#. chat session %s be logged
-#: ../src/chat_control.py:2181
+#: ../src/chat_control.py:2207
msgid "will"
msgstr "sera"
-#: ../src/chat_control.py:2181
+#: ../src/chat_control.py:2207
msgid "will NOT"
msgstr "NE sera PAS"
#. About encrypted chat session
-#: ../src/chat_control.py:2185
+#: ../src/chat_control.py:2211
msgid "and authenticated"
msgstr "et authentifiée"
#. About encrypted chat session
-#: ../src/chat_control.py:2189
+#: ../src/chat_control.py:2215
msgid "and NOT authenticated"
msgstr "et NON authentifiée"
#. status will become 'is' or 'is not', authentificaed will become
#. 'and authentificated' or 'and not authentificated', logged will become
#. 'will' or 'will not'
-#: ../src/chat_control.py:2196
+#: ../src/chat_control.py:2222
#, python-format
msgid ""
"%(type)s encryption %(status)s active %(authenticated)s.\n"
@@ -3294,31 +3312,31 @@ msgstr ""
"Chiffrement %(type)s %(status)s actif %(authenticated)s.\n"
"Votre discussion %(logged)s archivée."
-#: ../src/chat_control.py:2357
+#: ../src/chat_control.py:2349
msgid "Session negotiation cancelled"
msgstr "Négociation annulée"
-#: ../src/chat_control.py:2367
+#: ../src/chat_control.py:2359
msgid "This session WILL be archived on server"
msgstr "Cette session sera archivée sur le serveur"
-#: ../src/chat_control.py:2369
+#: ../src/chat_control.py:2361
msgid "This session WILL NOT be archived on server"
msgstr "La session ne sera PAS archivée sur le serveur"
-#: ../src/chat_control.py:2378
+#: ../src/chat_control.py:2370
msgid "This session is encrypted"
msgstr "Cette session est chiffrée"
-#: ../src/chat_control.py:2381
+#: ../src/chat_control.py:2373
msgid " and WILL be logged"
msgstr " et SERA archivée"
-#: ../src/chat_control.py:2383
+#: ../src/chat_control.py:2375
msgid " and WILL NOT be logged"
msgstr " et NE SERA PAS archivée"
-#: ../src/chat_control.py:2388
+#: ../src/chat_control.py:2380
msgid ""
"Remote contact's identity not verified. Click the shield button for more "
"details."
@@ -3326,25 +3344,25 @@ msgstr ""
"Identité du contact non vérifiée. Cliquez sur le bouton bouclier pour plus "
"de détails."
-#: ../src/chat_control.py:2390
+#: ../src/chat_control.py:2382
msgid "E2E encryption disabled"
msgstr "Chiffrement E2E désactivé"
-#: ../src/chat_control.py:2434 ../src/chat_control.py:2447
+#: ../src/chat_control.py:2430 ../src/chat_control.py:2444
msgid "The following message was NOT encrypted"
msgstr "Le message suivant n'a PAS été chiffré"
-#: ../src/chat_control.py:2440
+#: ../src/chat_control.py:2436
msgid "The following message was encrypted"
msgstr "Le message suivant n'a été chiffré"
#. %s is being replaced in the code with JID
-#: ../src/chat_control.py:2731
+#: ../src/chat_control.py:2707
#, python-format
msgid "You just received a new message from \"%s\""
msgstr "Vous venez de recevoir un nouveau message de \"%s\""
-#: ../src/chat_control.py:2732
+#: ../src/chat_control.py:2708
msgid ""
"If you close this tab and you have history disabled, this message will be "
"lost."
@@ -3352,15 +3370,14 @@ msgstr ""
"Si vous fermez cette fenêtre et que l'historique n'est pas activé, ce "
"message sera perdu."
-#: ../src/chat_control.py:2899 ../src/common/connection_handlers_events.py:871
-#: ../src/common/connection_handlers.py:945
-#: ../src/common/connection_handlers.py:1046
-#: ../src/common/connection_handlers.py:1703 ../src/common/connection.py:462
-#: ../src/common/logger.py:1126 ../src/gajim.py:203 ../src/session.py:97
+#: ../src/chat_control.py:2875 ../src/common/connection_handlers_events.py:887
+#: ../src/common/connection_handlers.py:948
+#: ../src/common/connection_handlers.py:1060 ../src/common/connection.py:456
+#: ../src/common/logger.py:1144 ../src/gajim.py:210 ../src/session.py:100
msgid "Database Error"
msgstr "Erreur de base de données"
-#: ../src/chat_control.py:2900
+#: ../src/chat_control.py:2876
#, python-format
msgid ""
"The database file (%s) cannot be read. Try to repair it or remove it (all "
@@ -3369,7 +3386,7 @@ msgstr ""
"Le fichier de base de données (%s) ne peut être lu. Essayez de le réparer ou "
"supprimez le (toutes les archives seront perdues)."
-#: ../src/chat_control.py:3136 ../src/gui_interface.py:1057
+#: ../src/chat_control.py:3112 ../src/gui_interface.py:1071
#, python-format
msgid ""
"Unable to decrypt message from %s\n"
@@ -3378,11 +3395,254 @@ msgstr ""
"Impossible de déchiffrer le message de %s\n"
"Il a peut-être été manipulé."
-#: ../src/chat_control.py:3169
+#: ../src/chat_control.py:3145
#, python-format
msgid "%(name)s is now %(status)s"
msgstr "%(name)s est maintenant %(status)s"
+#: ../src/chat_control.py:3204
+msgid "File transfer"
+msgstr "Transfert de fichiers"
+
+#: ../src/chat_control.py:3207
+msgid "Size"
+msgstr "Taille"
+
+#: ../src/chat_control.py:3209
+msgid "_Accept"
+msgstr "_Accepter"
+
+#: ../src/chat_control.py:3232 ../src/filetransfers_window.py:204
+msgid "File transfer completed"
+msgstr "Transfert de fichier terminé"
+
+#: ../src/chat_control.py:3260 ../src/gui_interface.py:942
+#: ../src/roster_window.py:1923
+msgid "Remote contact stopped transfer"
+msgstr "Le contact distant à stoppé le transfert"
+
+#: ../src/chat_control.py:3262 ../src/gui_interface.py:945
+#: ../src/roster_window.py:1925
+msgid "Error opening file"
+msgstr "Erreur à l'ouverture du fichier"
+
+#: ../src/chat_control.py:3264 ../src/filetransfers_window.py:240
+msgid "File transfer stopped"
+msgstr "Transfert de fichier interrompu"
+
+#: ../src/chat_control.py:3267 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:226
+msgid "File transfer cancelled"
+msgstr "Transfert de fichier annulé"
+
+#: ../src/chat_control.py:3268 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:227
+msgid "Connection with peer cannot be established."
+msgstr "La connexion avec le contact ne peut être établie."
+
+#: ../src/command_system/implementation/custom.py:105
+msgid "The same as using a doc-string, except it supports translation"
+msgstr "Pareil qu'utiliser une doc-string, mais supporte la traduction"
+
+#: ../src/command_system/implementation/execute.py:53
+msgid "Execute expression inside a shell, show output"
+msgstr "Éxecute une expression dans un shell, montre la sortie"
+
+#: ../src/command_system/implementation/execute.py:109
+msgid "Execute expression inside a shell, send output"
+msgstr "Éxecute une expression dans un shell, envoie la sortie"
+
+#: ../src/command_system/implementation/standard.py:50
+msgid "Hide the chat buttons"
+msgstr "Cache les boutons de discussion."
+
+#: ../src/command_system/implementation/standard.py:56
+msgid ""
+"Show help on a given command or a list of available commands if -a is given"
+msgstr ""
+"Montre l'aide sur une commande donnée ou une listre des commandes possibles "
+"si -a est ajouté"
+
+#: ../src/command_system/implementation/standard.py:83
+msgid "Send a message to the contact"
+msgstr "Envoie un message a un contact"
+
+#: ../src/command_system/implementation/standard.py:88
+msgid "Send action (in the third person) to the current chat"
+msgstr "Envoie une action (à la troisième personne) à la conversation actuelle"
+
+#: ../src/command_system/implementation/standard.py:93
+msgid "Show logged messages which mention given text"
+msgstr "Montre les messages enregistrés qui mentionnent le texte donné"
+
+#: ../src/command_system/implementation/standard.py:99
+#, python-format
+msgid "%s: Nothing found"
+msgstr "%s : rien de trouvé"
+
+#: ../src/command_system/implementation/standard.py:105
+msgid "Limit must be an integer"
+msgstr "La limite doit être un entier"
+
+#: ../src/command_system/implementation/standard.py:129
+msgid ""
+"\n"
+" Set the current the status\n"
+"\n"
+" Status can be given as one of the following values: online, away,\n"
+" chat, xa, dnd.\n"
+" "
+msgstr ""
+"\n"
+" Fixe l'état actuel\n"
+"\n"
+" L'état doit être l'une des valeurs suivates : online, away, chat, xa, "
+"dnd.\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:147
+msgid "Set the current status to away"
+msgstr "Fixe l'état actuel à away"
+
+#: ../src/command_system/implementation/standard.py:150
+#: ../src/common/commands.py:109 ../src/common/helpers.py:249
+#: ../src/tooltips.py:194
+msgid "Away"
+msgstr "Absent(e)"
+
+#: ../src/command_system/implementation/standard.py:161
+msgid "Set the current status to online"
+msgstr "Fixe l'état actuel à online"
+
+#: ../src/command_system/implementation/standard.py:164
+msgid "Available"
+msgstr "Disponible"
+
+#: ../src/command_system/implementation/standard.py:184
+#: ../src/command_system/implementation/standard.py:261
+msgid "Clear the text window"
+msgstr "Nettoie la fenêtre de conversation"
+
+#: ../src/command_system/implementation/standard.py:189
+msgid "Toggle the GPG encryption"
+msgstr "Basculer le chiffrement GPG"
+
+#: ../src/command_system/implementation/standard.py:194
+msgid "Send a ping to the contact"
+msgstr "Envoie un ping au contact"
+
+#: ../src/command_system/implementation/standard.py:197
+msgid "Command is not supported for zeroconf accounts"
+msgstr "Commande non prise en charge pour les comptes zeroconf"
+
+#: ../src/command_system/implementation/standard.py:201
+msgid "Send DTMF sequence through an open audio session"
+msgstr "Envoie une séquence DTMF dans une session audio ouverte"
+
+#: ../src/command_system/implementation/standard.py:204
+msgid "No open audio sessions with the contact"
+msgstr "Pas de session audio ouverte avec le contact"
+
+#: ../src/command_system/implementation/standard.py:207
+#, python-format
+msgid "%s is not a valid tone"
+msgstr "%s n'est pas un ton valide"
+
+#: ../src/command_system/implementation/standard.py:217
+msgid "Audio sessions are not available"
+msgstr "Les sessions audio ne sont pas disponibles"
+
+#: ../src/command_system/implementation/standard.py:227
+msgid "Video sessions are not available"
+msgstr "Les sessions video ne sont pas disponibles"
+
+#: ../src/command_system/implementation/standard.py:268
+msgid "Change your nickname in a group chat"
+msgstr "Changer votre surnom dans un salon de discussion"
+
+#. invalid char
+#: ../src/command_system/implementation/standard.py:273 ../src/config.py:3392
+#: ../src/dialogs.py:2078
+msgid "Invalid nickname"
+msgstr "Nom d'utilisateur invalide"
+
+#: ../src/command_system/implementation/standard.py:278
+msgid "Open a private chat window with a specified occupant"
+msgstr ""
+"Ouvre une fenêtre de conversation privée avec l'occupant(e) spécifié(e)"
+
+#: ../src/command_system/implementation/standard.py:284
+#: ../src/command_system/implementation/standard.py:293
+#: ../src/command_system/implementation/standard.py:347
+msgid "Nickname not found"
+msgstr "Surnom introuvable : %s"
+
+#: ../src/command_system/implementation/standard.py:287
+msgid ""
+"Open a private chat window with a specified occupant and send him a message"
+msgstr ""
+"Ouvre une fenêtre de conversation privée avec l'occupant(e) spécifié(e) et "
+"lui envoyer un mesage"
+
+#: ../src/command_system/implementation/standard.py:296
+msgid "Display or change a group chat topic"
+msgstr "Affiche ou modifie le sujet d'un salon de discussion"
+
+#: ../src/command_system/implementation/standard.py:304
+msgid "Invite a user to a room for a reason"
+msgstr "Invite un contact à un salon de discussion pour une raison"
+
+#: ../src/command_system/implementation/standard.py:307
+#, python-format
+msgid "Invited %s to %s"
+msgstr "Invité %s à %s"
+
+#: ../src/command_system/implementation/standard.py:310
+msgid "Join a group chat given by a jid, optionally using given nickname"
+msgstr ""
+"Rejoindre un salon de discussion donné par son jid, éventuellement en "
+"utilisant le surnom donné"
+
+#: ../src/command_system/implementation/standard.py:327
+msgid ""
+"Leave the groupchat, optionally giving a reason, and close tab or window"
+msgstr ""
+"Quitte le salon de discussion, éventuellement en donnant une raison, et "
+"ferme l'onglet ou la fneêtre"
+
+#: ../src/command_system/implementation/standard.py:332
+msgid ""
+"\n"
+" Ban user by a nick or a jid from a groupchat\n"
+"\n"
+" If given nickname is not found it will be treated as a jid.\n"
+" "
+msgstr ""
+"\n"
+" Bannir un utilisateur par son surnom ou son jid d'un salon de "
+"discussion\n"
+"\n"
+" Si le surnom donné n'existe pas, il sera traité comme un jid.\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:344
+msgid "Kick user by a nick from a groupchat"
+msgstr "Éjecter un utilisateur par son surnom d'un salon de discussion"
+
+#: ../src/command_system/implementation/standard.py:351
+msgid "Display names of all group chat occupants"
+msgstr "Affiche les noms des occupants du salon"
+
+#: ../src/command_system/implementation/standard.py:373
+msgid "Forbid an occupant to send you public or private messages"
+msgstr ""
+"Interdir un(e) occupant(e) de vous envoyer des messages publics ou privés"
+
+#: ../src/command_system/implementation/standard.py:378
+msgid "Allow an occupant to send you public or private messages"
+msgstr ""
+"Autoriser un(e) occupant(e) de vous envoyer des messages publics ou privés"
+
#: ../src/common/check_paths.py:38
msgid "creating logs database"
msgstr "création de la base de donnée de l'historique"
@@ -3417,89 +3677,84 @@ msgstr "%s est un répertoire mais devrait être un fichier"
msgid "creating %s directory"
msgstr "crée le répertoire %s"
-#: ../src/common/commands.py:82
+#: ../src/common/commands.py:85
msgid "Change status information"
msgstr "Modifier les informations du statut"
-#: ../src/common/commands.py:97
+#: ../src/common/commands.py:100
msgid "Change status"
msgstr "Modifier le statut"
-#: ../src/common/commands.py:98
+#: ../src/common/commands.py:101
msgid "Set the presence type and description"
msgstr "Choisissez le type de présence et la description"
-#: ../src/common/commands.py:104
+#: ../src/common/commands.py:107
msgid "Free for chat"
msgstr "Disponible pour Discuter"
-#: ../src/common/commands.py:105
+#: ../src/common/commands.py:108
msgid "Online"
msgstr "Connecté"
-#: ../src/common/commands.py:106 ../src/common/helpers.py:242
-#: ../src/tooltips.py:193
-msgid "Away"
-msgstr "Absent(e)"
-
-#: ../src/common/commands.py:107
+#: ../src/common/commands.py:110
msgid "Extended away"
msgstr "Longue absence"
-#: ../src/common/commands.py:108
+#: ../src/common/commands.py:111
msgid "Do not disturb"
msgstr "Ne pas déranger"
-#: ../src/common/commands.py:109
+#: ../src/common/commands.py:112
msgid "Offline - disconnect"
msgstr "Hors-ligne - Déconnecté(e)"
-#: ../src/common/commands.py:114
+#: ../src/common/commands.py:117
msgid "Presence description:"
msgstr "Description de la présence :"
-#: ../src/common/commands.py:149 ../src/common/commands.py:317
+#: ../src/common/commands.py:152 ../src/common/commands.py:320
msgid "The status has been changed."
msgstr "L'état a été changé."
-#: ../src/common/commands.py:181 ../src/common/commands.py:207
+#: ../src/common/commands.py:184 ../src/common/commands.py:210
msgid "Leave Groupchats"
msgstr "Quitter des Groupes de Discussion"
-#: ../src/common/commands.py:197
+#: ../src/common/commands.py:200
#, python-format
msgid "%(nickname)s on %(room_jid)s"
msgstr "%(nickname)s dans %(room_jid)s"
-#: ../src/common/commands.py:201
+#: ../src/common/commands.py:204
msgid "You have not joined a groupchat."
msgstr "Vous n'avez pas joint de groupe de discussion."
-#: ../src/common/commands.py:208
+#: ../src/common/commands.py:211
msgid "Choose the groupchats you want to leave"
msgstr "Choisissez les groupes de discussion que vous voulez quitter"
#. Make special context menu if group is Groupchats
-#: ../src/common/commands.py:212 ../src/common/contacts.py:137
-#: ../src/common/helpers.py:60 ../src/roster_window.py:817
-#: ../src/roster_window.py:1653 ../src/roster_window.py:1655
-#: ../src/roster_window.py:2513 ../src/roster_window.py:5515
+#: ../src/common/commands.py:215 ../src/common/contacts.py:128
+#: ../src/common/helpers.py:67 ../src/roster_window.py:820
+#: ../src/roster_window.py:1668 ../src/roster_window.py:1670
+#: ../src/roster_window.py:2546 ../src/roster_window.py:5604
msgid "Groupchats"
msgstr "Salons de discussion"
-#: ../src/common/commands.py:253
+#: ../src/common/commands.py:256
msgid "You left the following groupchats:"
msgstr "Vous avez quitté les groupes de discussion suivants :"
-#: ../src/common/commands.py:265
+#: ../src/common/commands.py:268
msgid "Forward unread messages"
msgstr "Transférer les messages non-lus"
-#: ../src/common/commands.py:287
+#: ../src/common/commands.py:290
msgid "All unread messages have been forwarded."
msgstr "Tous les messages non-lus ont été transmis."
-#: ../src/common/commands.py:295
+#: ../src/common/commands.py:298
msgid "Forward unread message then disconnect"
msgstr "Transférer les messages non-lus et se déconnecter"
@@ -3551,47 +3806,53 @@ msgstr ""
"\" (jamais), \"on_event\" (lorsqu'il y a un évènement en attente) ou \"always"
"\" (toujours)"
-#: ../src/common/config.py:94
+#: ../src/common/config.py:90
+msgid "Allow to hide the roster window even if the tray icon is not shown."
+msgstr ""
+"Autoriser à cacher la liste des contacts même si l'icône de notification "
+"n'est pas affiché."
+
+#: ../src/common/config.py:95
msgid "Incoming nickname color."
msgstr "Couleur des pseudos entrants"
-#: ../src/common/config.py:95
+#: ../src/common/config.py:96
msgid "Outgoing nickname color."
msgstr "Couleur du pseudo sortant."
-#: ../src/common/config.py:96
+#: ../src/common/config.py:97
msgid "Incoming text color."
msgstr "Couleur du texte entrant."
-#: ../src/common/config.py:97
+#: ../src/common/config.py:98
msgid "Outgoing text color."
msgstr "Couleur du texte sortant."
-#: ../src/common/config.py:98
+#: ../src/common/config.py:99
msgid "Status message text color."
msgstr "Colour des messages de statut"
-#: ../src/common/config.py:101
+#: ../src/common/config.py:102
msgid "Incoming nickname font."
msgstr "Police des pseudos entrants."
-#: ../src/common/config.py:102
+#: ../src/common/config.py:103
msgid "Outgoing nickname font."
msgstr "Police des pseudos sortants."
-#: ../src/common/config.py:103
+#: ../src/common/config.py:104
msgid "Incoming text font."
msgstr "Police du texte entrant."
-#: ../src/common/config.py:104
+#: ../src/common/config.py:105
msgid "Outgoing text font."
msgstr "Police du texte sortant."
-#: ../src/common/config.py:105
+#: ../src/common/config.py:106
msgid "Status message text font."
msgstr "Police du message de statut"
-#: ../src/common/config.py:106
+#: ../src/common/config.py:107
msgid ""
"List (space separated) of rows (accounts and groups) that are collapsed."
msgstr ""
@@ -3599,17 +3860,17 @@ msgstr ""
"repliés."
#. sorted alphanum
-#: ../src/common/config.py:107 ../src/common/config.py:494
-#: ../src/common/optparser.py:294 ../src/common/optparser.py:490
-#: ../src/common/optparser.py:524 ../src/gui_interface.py:2657
+#: ../src/common/config.py:108 ../src/common/config.py:504
+#: ../src/common/optparser.py:296 ../src/common/optparser.py:492
+#: ../src/common/optparser.py:526 ../src/gui_interface.py:2679
msgid "default"
msgstr "Par défaut"
-#: ../src/common/config.py:113
+#: ../src/common/config.py:114
msgid "Language used by speller"
msgstr "Langue utilisée par le vérificateur orthographique"
-#: ../src/common/config.py:114
+#: ../src/common/config.py:115
msgid ""
"'always' - print time for every message.\n"
"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n"
@@ -3620,7 +3881,7 @@ msgstr ""
"minute.\n"
"'never' - ne jamais afficher l'heure."
-#: ../src/common/config.py:115
+#: ../src/common/config.py:116
msgid ""
"Print time in chats using Fuzzy Clock. Value of fuzziness from 1 to 4, or 0 "
"to disable fuzzyclock. 1 is the most precise clock, 4 the least precise one. "
@@ -3632,19 +3893,19 @@ msgstr ""
"valeur 0. Ceci est utilisé seulement lorsque la valeur de print_time est "
"'sometimes'."
-#: ../src/common/config.py:118
+#: ../src/common/config.py:119
msgid "Treat * / _ pairs as possible formatting characters."
msgstr ""
"Traiter les paires de * / _ comme des éventuels caractères de formatage."
-#: ../src/common/config.py:119
+#: ../src/common/config.py:120
msgid ""
"If True, do not remove */_ . So *abc* will be bold but with * * not removed."
msgstr ""
"Si vrai ne supprime pas */_ . Donc *abc* sera en gras mais sans supprimer "
"les * *"
-#: ../src/common/config.py:122
+#: ../src/common/config.py:123
msgid ""
"Uses ReStructured text markup to send HTML, plus ascii formatting if "
"selected. For syntax, see http://docutils.sourceforge.net/docs/ref/rst/"
@@ -3654,7 +3915,7 @@ msgstr ""
"Pour la syntaxe voir http://docutils.sourceforge.net/docs/ref/rst/"
"restructuredtext.html (si vous voulez utiliser cela, installez docutils)"
-#: ../src/common/config.py:131
+#: ../src/common/config.py:132
msgid ""
"Character to add after nickname when using nick completion (tab) in group "
"chat."
@@ -3662,7 +3923,7 @@ msgstr ""
"Caractère à ajouter après un surnom en utilisant la complétion automatique "
"(tab) dans un salon de discussion."
-#: ../src/common/config.py:132
+#: ../src/common/config.py:133
msgid ""
"Character to propose to add after desired nickname when desired nickname is "
"used by someone else in group chat."
@@ -3670,7 +3931,7 @@ msgstr ""
"Caractère ajouté automatiquement après un surnom s'il est déjà utilisé dans "
"un salon de discussion."
-#: ../src/common/config.py:150
+#: ../src/common/config.py:151
msgid ""
"If true, Gajim will save roster position when hiding roster, and restore it "
"when showing roster."
@@ -3678,7 +3939,7 @@ msgstr ""
"Si vrai, Gajim sauvera la position de la liste de contacts avant de la "
"cacher et la restaurera en la faisant réapparaître"
-#: ../src/common/config.py:161
+#: ../src/common/config.py:162
msgid ""
"This option let you customize timestamp that is printed in conversation. For "
"exemple \"[%H:%M] \" will show \"[hour:minute] \". See python doc on "
@@ -3689,26 +3950,26 @@ msgstr ""
"documentation python de strftime pour une documentation complète : http://"
"docs.python.org/lib/module-time.html"
-#: ../src/common/config.py:162
+#: ../src/common/config.py:163
msgid "Characters that are printed before the nickname in conversations"
msgstr "Caractères affichés avant le surnom dans les conversations"
-#: ../src/common/config.py:163
+#: ../src/common/config.py:164
msgid "Characters that are printed after the nickname in conversations"
msgstr "Caractères affichés après le surnom dans les conversations"
-#: ../src/common/config.py:166
+#: ../src/common/config.py:167
msgid ""
"Specify the command to run when new mail arrives, e.g.: /usr/bin/getmail -q"
msgstr ""
"Spécifie la commande a exécuter quand un nouveau courriel arrive, ex : /usr/"
"bin/getmail -q"
-#: ../src/common/config.py:168
+#: ../src/common/config.py:169
msgid "Add * and [n] in roster title?"
msgstr "Ajouter * et [n] au titre de la liste des contacts ?"
-#: ../src/common/config.py:169
+#: ../src/common/config.py:170
msgid ""
"How many lines to remember from previous conversation when a chat tab/window "
"is reopened."
@@ -3716,20 +3977,20 @@ msgstr ""
"Nombre de lignes de l'historique à afficher lorsque l'onglet ou la fenêtre "
"de discussion est ouvert à nouveau."
-#: ../src/common/config.py:170
+#: ../src/common/config.py:171
msgid "How many minutes should last lines from previous conversation last."
msgstr ""
"Durée de vie en minutes des dernières lignes des conversations précédentes."
-#: ../src/common/config.py:171
+#: ../src/common/config.py:172
msgid ""
-"How many lines to request to server when entering a groupchat. -1 means no "
+"How many lines to request from server when entering a groupchat. -1 means no "
"limit"
msgstr ""
"Le nombre de lignes d'archives qui seront demandées en entrant dans un "
"salon. -1 signifie \"pas de limitation\""
-#: ../src/common/config.py:172
+#: ../src/common/config.py:173
msgid ""
"How many minutes back to request logs when a entering a groupchat. -1 means "
"no limit"
@@ -3737,7 +3998,7 @@ msgstr ""
"Le nombre de minutes d'archives qui seront demandées en entrant dans un "
"salon. -1 signifie \"pas de limitation\""
-#: ../src/common/config.py:173
+#: ../src/common/config.py:174
msgid ""
"How many seconds to wait before trying to autorejoin to a conference you are "
"being disconnected from. Set to 0 to disable autorejoining."
@@ -3746,12 +4007,14 @@ msgstr ""
"automatiquement à un salon dont vous avez été déconnecté. Mettre à 0 pour "
"désactiver."
-#: ../src/common/config.py:174
+#: ../src/common/config.py:175
msgid ""
"Should autorejoin be activated when we are being kicked from a conference?"
msgstr ""
+"La reconnexion automatique doit-elle être activée lorsque l'on est éjecté "
+"d'un salon de discussion ?"
-#: ../src/common/config.py:175
+#: ../src/common/config.py:176
msgid ""
"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ "
"Client default behaviour)."
@@ -3759,13 +4022,13 @@ msgstr ""
"Envoyer le message avec Ctrl+Entrée et aller à la ligne avec Entrée "
"(comportement par défaut du client ICQ de Mirabilis)."
-#: ../src/common/config.py:177
+#: ../src/common/config.py:178
msgid "How many lines to store for Ctrl+KeyUP."
msgstr ""
"Nombre de lignes à stocker pour le rappel des lignes précédentes (avec Ctrl"
"+flèche vers le haut)."
-#: ../src/common/config.py:180
+#: ../src/common/config.py:181
#, python-format
msgid ""
"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' "
@@ -3774,13 +4037,13 @@ msgstr ""
"Soit une url personnalisée contenant %s où %s est le mot/la phrase, soit "
"\"WIKTIONARY\", ce qui signifie l'utilisation de wikitionary."
-#: ../src/common/config.py:183
+#: ../src/common/config.py:184
msgid "If checked, Gajim can be controlled remotely using gajim-remote."
msgstr ""
"Si cette case est cochée, Gajim pourra être contrôlé à distance via gajim-"
"remote."
-#: ../src/common/config.py:184
+#: ../src/common/config.py:185
msgid ""
"If True, listen to D-Bus signals from NetworkManager and change the status "
"of accounts (provided they do not have listen_to_network_manager set to "
@@ -3791,13 +4054,13 @@ msgstr ""
"automatiquement l'état des comptes (en autant que listen_to_network_manager "
"n'est pas désactivé et qu'ils soient synchronisés à l'état global)."
-#: ../src/common/config.py:185
+#: ../src/common/config.py:186
msgid ""
"Sent chat state notifications. Can be one of all, composing_only, disabled."
msgstr ""
"Notifications d'états envoyées. Peut être all, composing_only ou disabled."
-#: ../src/common/config.py:186
+#: ../src/common/config.py:187
msgid ""
"Displayed chat state notifications in chat windows. Can be one of all, "
"composing_only, disabled."
@@ -3805,7 +4068,7 @@ msgstr ""
"Notifications d'états affichées dans les fenêtres de conversations. Peut "
"être all, composing_only ou disabled."
-#: ../src/common/config.py:188
+#: ../src/common/config.py:189
msgid ""
"When not printing time for every message (print_time==sometimes), print it "
"every x minutes."
@@ -3813,12 +4076,12 @@ msgstr ""
"Au lieu d'afficher l'heure à chaque message (print_time==sometimes), "
"l'afficher toutes les x minutes."
-#: ../src/common/config.py:189
+#: ../src/common/config.py:190
msgid "Ask before closing a group chat tab/window."
msgstr ""
"Demander avant de fermer un onglet ou une fenêtre de discussion de salon."
-#: ../src/common/config.py:190
+#: ../src/common/config.py:191
msgid ""
"Always ask before closing group chat tab/window in this space separated list "
"of group chat jids."
@@ -3826,7 +4089,7 @@ msgstr ""
"Toujours demander avant de fermer les onglets/fenêtres de salons de cette "
"liste séparés par des espaces."
-#: ../src/common/config.py:191
+#: ../src/common/config.py:192
msgid ""
"Never ask before closing group chat tab/window in this space separated list "
"of group chat jids."
@@ -3834,7 +4097,7 @@ msgstr ""
"Ne jamais demander avant de fermer onglets/fenêtres des salons de cette "
"liste séparées par des espaces."
-#: ../src/common/config.py:192
+#: ../src/common/config.py:193
msgid ""
"Ask before closing tabbed chat window if there are control that can loose "
"data (chat, private chat, groupchat that will not be minimized)"
@@ -3843,7 +4106,7 @@ msgstr ""
"peuvent être perdues (conversations, conversations privées, salons qui se "
"seront pas minimisés)"
-#: ../src/common/config.py:195
+#: ../src/common/config.py:196
msgid ""
"Comma separated list of hosts that we send, in addition of local interfaces, "
"for File Transfer in case of address translation/port forwarding."
@@ -3852,27 +4115,27 @@ msgstr ""
"interfaces locales, pour les transferts de fichiers dans le cas de "
"traduction d'adresse / redirection de port."
-#: ../src/common/config.py:197
+#: ../src/common/config.py:198
msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes."
msgstr "D'après le standard IEC, KiB = 1024 bytes, KB = 1000 bytes."
-#: ../src/common/config.py:199
+#: ../src/common/config.py:200
msgid "Notify of events in the notification area."
msgstr "M'alerter à l'aide de l'icône dans la zone de notifications."
-#: ../src/common/config.py:205
+#: ../src/common/config.py:206
msgid "Show tab when only one conversation?"
msgstr "Montrer l'onglet quand il n'y a qu'une discussion ?"
-#: ../src/common/config.py:206
+#: ../src/common/config.py:207
msgid "Show tabbed notebook border in chat windows?"
msgstr "Afficher la bordure fenêtres de discussion à onglets ?"
-#: ../src/common/config.py:207
+#: ../src/common/config.py:208
msgid "Show close button in tab?"
msgstr "Afficher le bouton fermer sur l'onglet ?"
-#: ../src/common/config.py:208
+#: ../src/common/config.py:209
msgid ""
"A list of modp groups to use in a Diffie-Hellman, highest preference first, "
"separated by commas. Valid groups are 1, 2, 5, 14, 15, 16, 17 and 18. Higher "
@@ -3885,18 +4148,18 @@ msgstr ""
"sécurisés, mais prennent plus de temps pour le calcul quand vous commencez "
"une session."
-#: ../src/common/config.py:217
+#: ../src/common/config.py:218
msgid "Preview new messages in notification popup?"
msgstr "Aperçu des nouveaux messages dans un popup ?"
-#: ../src/common/config.py:222
+#: ../src/common/config.py:223
msgid ""
"A semicolon-separated list of words that will be highlighted in group chats."
msgstr ""
"Une liste de mots séparés par des points-virgules qui seront mis en "
"surbrillance dans les salons."
-#: ../src/common/config.py:223
+#: ../src/common/config.py:224
msgid ""
"If True, quits Gajim when X button of Window Manager is clicked. This "
"setting is taken into account only if notification icon is used."
@@ -3905,14 +4168,14 @@ msgstr ""
"fenêtre. Cette option n'est prise en compte que si l'icône dans la barre de "
"notification est utilisée."
-#: ../src/common/config.py:224
+#: ../src/common/config.py:225
msgid ""
"If True, Gajim will check if it's the default jabber client on each startup."
msgstr ""
"Si vrai, Gajim vérifiera qu'il est le client Jabber par défaut à chaque "
"démarrage."
-#: ../src/common/config.py:225
+#: ../src/common/config.py:226
msgid ""
"If True, Gajim will display an icon on each tab containing unread messages. "
"Depending on the theme, this icon may be animated."
@@ -3920,7 +4183,7 @@ msgstr ""
"Si vrai, Gajim affichera dans chaque onglet une icône contenant les messages "
"non lus. En fonction du thème, cette icône peut être animée."
-#: ../src/common/config.py:226
+#: ../src/common/config.py:227
msgid ""
"If True, Gajim will display the status message, if not empty, for every "
"contact under the contact name in roster window."
@@ -3928,13 +4191,13 @@ msgstr ""
"Si Vrai, Gajim affichera le message d'état, s'il n'est pas vide, sous le nom "
"de chaque contact dans la liste des contacts."
-#: ../src/common/config.py:232
+#: ../src/common/config.py:233
msgid "Define the position of the avatar in roster. Can be left or right"
msgstr ""
"Définir la position de l'avatar dans le roster. Peut être à droite (right) "
"ou à gauche (left)."
-#: ../src/common/config.py:233
+#: ../src/common/config.py:234
msgid ""
"If True, Gajim will ask for avatar each contact that did not have an avatar "
"last time or has one cached that is too old."
@@ -3942,7 +4205,7 @@ msgstr ""
"Si Vrai demandera son avatar à chaque contact qui n'en avait pas la fois "
"précédente ou dont la version en cache a expiré."
-#: ../src/common/config.py:234
+#: ../src/common/config.py:235
msgid ""
"If False, Gajim will no longer print status line in chats when a contact "
"changes his or her status and/or his or her status message."
@@ -3950,7 +4213,7 @@ msgstr ""
"Si Faux, vous ne verrez plus les lignes d'état dans les conversations quand "
"un contact modifie son état et/ou son message d'état."
-#: ../src/common/config.py:235
+#: ../src/common/config.py:236
msgid ""
"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no "
"longer print status line in groupchats when a member changes his or her "
@@ -3965,36 +4228,36 @@ msgstr ""
"affichera seulement « TRUC vient de rejoindre/quitter le groupe de "
"discussion »."
-#: ../src/common/config.py:237
+#: ../src/common/config.py:238
msgid "Log XHTML messages instead of plain text messages."
-msgstr ""
+msgstr "Enregistrer les messages XHTML au lieu des messages en texte simple."
-#: ../src/common/config.py:238
+#: ../src/common/config.py:239
msgid "Background color of contacts when they just signed in."
msgstr ""
"Couleur d'arrière-plan des contacts lorsqu'ils viennent de se connecter."
-#: ../src/common/config.py:239
+#: ../src/common/config.py:240
msgid "Background color of contacts when they just signed out."
msgstr ""
"Couleur d'arrière-plan des contacts lorsqu'ils viennent de se déconnecter."
-#: ../src/common/config.py:241
+#: ../src/common/config.py:242
msgid ""
"If True, restored messages will use a smaller font than the default one."
msgstr ""
"Si Vrai, les messages restaurés utiliseront une police de texte plus petite "
"que la normale."
-#: ../src/common/config.py:242
+#: ../src/common/config.py:243
msgid "Don't show avatar for the transport itself."
msgstr "Ne pas afficher d'avatars particuliers pour les passerelles."
-#: ../src/common/config.py:243
+#: ../src/common/config.py:244
msgid "Don't show roster in the system taskbar."
msgstr "Ne pas afficher d'icône dans la barre des tâches."
-#: ../src/common/config.py:244
+#: ../src/common/config.py:245
msgid ""
"If True and installed GTK+ and PyGTK versions are at least 2.8, make the "
"window flash (the default behaviour in most Window Managers) when holding "
@@ -4004,7 +4267,7 @@ msgstr ""
"clignoter (comportement par défaut dans la plupart des gestionnaires de "
"fenêtres) la fenêtre quand elle contient des événements non lus."
-#: ../src/common/config.py:246
+#: ../src/common/config.py:247
msgid ""
"Jabberd1.4 does not like sha info when one join a password protected group "
"chat. Turn this option to False to stop sending sha info in group chat "
@@ -4015,7 +4278,7 @@ msgstr ""
"l'information sha dans les salons."
#. always, never, peracct, pertype should not be translated
-#: ../src/common/config.py:249
+#: ../src/common/config.py:250
msgid ""
"Controls the window where new messages are placed.\n"
"'always' - All messages are sent to a single window.\n"
@@ -4034,7 +4297,7 @@ msgstr ""
"'pertype' - Toutes les conversations d'un même type (discussion, salon) dans "
"la même fenêtre."
-#: ../src/common/config.py:250
+#: ../src/common/config.py:251
msgid ""
"Show roster on startup.\n"
"'always' - Always show roster.\n"
@@ -4046,36 +4309,36 @@ msgstr ""
"'never' - Jamais montrer.\n"
"'last_state' - Restaurer le dernier état."
-#: ../src/common/config.py:251
+#: ../src/common/config.py:252
msgid "If False, you will no longer see the avatar in the chat window."
msgstr ""
"Si Faux, vous ne verrez plus les avatars dans les fenêtres de conversation."
-#: ../src/common/config.py:252
+#: ../src/common/config.py:253
msgid "If True, pressing the escape key closes a tab/window."
msgstr ""
"Si Vrai, appuyer sur la touche d'échappement fermera l'onglet ou la fenêtre "
"de conversation."
-#: ../src/common/config.py:253
+#: ../src/common/config.py:254
msgid "Hides the buttons in chat windows."
msgstr "Cacher les boutons dans les fenêtres de conversations."
-#: ../src/common/config.py:254
+#: ../src/common/config.py:255
msgid "Hides the banner in a group chat window"
msgstr "Cacher les boutons dans la fenêtre de discussion"
-#: ../src/common/config.py:255
+#: ../src/common/config.py:256
msgid "Hides the banner in two persons chat window"
msgstr "Cache la bannière dans les fenêtres de discussions"
-#: ../src/common/config.py:256
+#: ../src/common/config.py:257
msgid "Hides the group chat occupants list in group chat window."
msgstr ""
"Cache la liste des occupants du salon dans les fenêtres des salons de "
"discussion."
-#: ../src/common/config.py:257
+#: ../src/common/config.py:258
msgid ""
"In a chat, show the nickname at the beginning of a line only when it's not "
"the same person talking than in previous message."
@@ -4083,15 +4346,15 @@ msgstr ""
"Dans une conversation, affiche le surnom au début d'une ligne seulement "
"lorsque ce n'est pas la même personne qui a écrit le dernier message."
-#: ../src/common/config.py:258
+#: ../src/common/config.py:259
msgid "Indentation when using merge consecutive nickname."
msgstr "Indentation lors du fusionnement d'un surnom répété."
-#: ../src/common/config.py:259
+#: ../src/common/config.py:260
msgid "Smooth scroll message in conversation window"
msgstr "Défilement doux dans la fenêtre de conversation"
-#: ../src/common/config.py:260
+#: ../src/common/config.py:261
msgid ""
"List of colors, separated by \":\", that will be used to color nicknames in "
"group chats."
@@ -4099,13 +4362,13 @@ msgstr ""
"Liste des couleurs, séparées par « : », qui seront utilisées pour colorier "
"les surnoms dans les salons de discussion."
-#: ../src/common/config.py:261
+#: ../src/common/config.py:262
msgid "Ctrl-Tab go to next composing tab when none is unread."
msgstr ""
"Ctrl-Tab pour basculer au prochain onglet lorsqu'aucun d'entre eux n'a de "
"nouveaux messages non lus."
-#: ../src/common/config.py:262
+#: ../src/common/config.py:263
msgid ""
"Should we show the confirm metacontacts creation dialog or not? Empty string "
"means we never show the dialog."
@@ -4114,7 +4377,7 @@ msgstr ""
"métacontacts ? Une valeur vide fera en sorte que le dialogue ne soit jamais "
"affiché."
-#: ../src/common/config.py:263
+#: ../src/common/config.py:264
msgid ""
"Should we show the confirm block contact dialog or not? Empty string means "
"we never show the dialog."
@@ -4122,7 +4385,7 @@ msgstr ""
"Doit-on afficher le dialogue de confirmation de bloquage d'un contact ? Une "
"valeur vide fera en sorte que le dialogue ne soit jamais affiché."
-#: ../src/common/config.py:264
+#: ../src/common/config.py:265
msgid ""
"Should we show the confirm custom status dialog or not? Empty string means "
"we never show the dialog."
@@ -4131,7 +4394,7 @@ msgstr ""
"personnalisé ? Une valeur vide fera en sorte que le dialogue ne soit jamais "
"affiché."
-#: ../src/common/config.py:265
+#: ../src/common/config.py:266
msgid ""
"If True, you will be able to set a negative priority to your account in "
"account modification window. BE CAREFUL, when you are logged in with a "
@@ -4142,7 +4405,7 @@ msgstr ""
"connecté avec une priorité négative, vous ne recevrez AUCUN message en "
"provenance de votre serveur."
-#: ../src/common/config.py:266
+#: ../src/common/config.py:267
msgid ""
"If True, Gajim will use Gnome Keyring (if available) to store account "
"passwords."
@@ -4150,7 +4413,7 @@ msgstr ""
"Si vrai, Gajim va utiliser Gnome Keyring (s'il est disponible) pour stocker "
"les mots de passe des comptes."
-#: ../src/common/config.py:267
+#: ../src/common/config.py:268
msgid ""
"If True, Gajim will use KDE Wallet (if kwalletcli is available) to store "
"account passwords."
@@ -4158,7 +4421,7 @@ msgstr ""
"Si vrai, Gajim va utiliser KDE Wallet (si kwalletcli est disponible) pour "
"stocker les mots de passe des comptes."
-#: ../src/common/config.py:268
+#: ../src/common/config.py:269
msgid ""
"If True, Gajim will show number of online and total contacts in account and "
"group rows."
@@ -4166,7 +4429,7 @@ msgstr ""
"Si vrai, Gajim montrera le nombre de contacts connectés et totaux sur les "
"lignes de groupe et de compte"
-#: ../src/common/config.py:269
+#: ../src/common/config.py:270
msgid ""
"Can be empty, 'chat' or 'normal'. If not empty, treat all incoming messages "
"as if they were of this type"
@@ -4174,7 +4437,7 @@ msgstr ""
"Peut être vide, 'chat' ou 'normal'. Si non vide, traite tous les messages "
"entrant comme des messages de ce type"
-#: ../src/common/config.py:270
+#: ../src/common/config.py:271
msgid ""
"If True, Gajim will scroll and select the contact who sent you the last "
"message, if chat window is not already opened."
@@ -4182,7 +4445,7 @@ msgstr ""
"Si Activé, Gajim scrollera et sélectionnera le contact qui vous a envoyé le "
"dernier message, si la fenêtre de conversation n'est pas déjà ouverte."
-#: ../src/common/config.py:271
+#: ../src/common/config.py:272
msgid ""
"If True, Gajim will convert string between $$ and $$ to an image using dvips "
"and convert before insterting it in chat window."
@@ -4191,13 +4454,13 @@ msgstr ""
"image, en utilisant dvips et convert avant de l'insérer dans la fenêtre de "
"conversation."
-#: ../src/common/config.py:272
+#: ../src/common/config.py:273
msgid "Time of inactivity needed before the change status window closes down."
msgstr ""
"Temps d'inactivité nécessaire pour que la fenêtre de changement de statut se "
"faire."
-#: ../src/common/config.py:273
+#: ../src/common/config.py:274
msgid ""
"Maximum number of lines that are printed in conversations. Oldest lines are "
"cleared."
@@ -4205,7 +4468,7 @@ msgstr ""
"Nombre maximum de lignes affichées dans les conversations. Les lignes les "
"plus vieilles sont effacées."
-#: ../src/common/config.py:274
+#: ../src/common/config.py:275
msgid ""
"If True, notification windows from notification-daemon will be attached to "
"notification icon."
@@ -4213,12 +4476,12 @@ msgstr ""
"Si Activé, les fenêtres de notification du notification-daemon seront "
"attachées à l'icône du Tray."
-#: ../src/common/config.py:275
+#: ../src/common/config.py:276
msgid "Choose interval between 2 checks of idleness."
msgstr ""
"Choisissez l'intervalle en secondes entre deux vérifications de l'inactivité."
-#: ../src/common/config.py:276
+#: ../src/common/config.py:277
msgid ""
"Change the value to change the size of latex formulas displayed. The higher "
"is larger."
@@ -4226,7 +4489,7 @@ msgstr ""
"Modifiez la valeur pour changer la taille des formules latex affichées. Plus "
"la valeur est grande, plus la taille l'est."
-#: ../src/common/config.py:277
+#: ../src/common/config.py:278
msgid ""
"Valid uri schemes. Only schemes in this list will be accepted as \"real\" "
"uri. (mailto and xmpp are handled separately)"
@@ -4234,7 +4497,7 @@ msgstr ""
"Schémas d'uri valides. Seuls les schémas dans cette liste seront acceptés "
"comment « vraies » uri. (mailto et xmpp sont gérés séparément)"
-#: ../src/common/config.py:278
+#: ../src/common/config.py:279
msgid ""
"Ask offline status message to all offline contacts when connection to an "
"accoutn is established. WARNING: This causes a lot of requests to be sent!"
@@ -4243,12 +4506,12 @@ msgstr ""
"connexion à un compte est établie. ATTENTION : cela provoque l'envoie de "
"nombreuses requêtes !"
-#: ../src/common/config.py:279
+#: ../src/common/config.py:280
msgid "If True, completion in groupchats will be like a shell auto-completion"
msgstr ""
"Si Vrai, la complétion dans les salons sera similaire à celle d'un shell"
-#: ../src/common/config.py:280
+#: ../src/common/config.py:281
msgid ""
"When is self contact row displayed. Can be \"always\", \"when_other_resource"
"\" or \"never\""
@@ -4257,15 +4520,18 @@ msgstr ""
"» (toujours), « when_other_resource » (quand d'autres ressources sont "
"connectées) ou « never » (jamais)"
-#: ../src/common/config.py:285
+#: ../src/common/config.py:286
msgid "Optionally fix jingle output video framerate. Example: 10/1 or 25/2"
msgstr ""
+"Fixe éventuellement le nombre d'image par seconde pour la sortie video "
+"jingle. Exemple : 10/1 ou 25/2"
-#: ../src/common/config.py:286
+#: ../src/common/config.py:287
msgid "Optionally resize jingle output video. Example: 320x240"
msgstr ""
+"Redimenssionne éventuellement la sortie video jingle. Exemple : 320x240"
-#: ../src/common/config.py:289
+#: ../src/common/config.py:290
msgid ""
"If True, Gajim will try to use a STUN server when using jingle. The one in "
"\"stun_server\" option, or the one given by the jabber server."
@@ -4274,17 +4540,27 @@ msgstr ""
"jingle. Celui défini dans l'option \"stun_server\", ou celui donné par le "
"serveur jabber."
-#: ../src/common/config.py:290
+#: ../src/common/config.py:291
msgid "STUN server to use when using jingle"
msgstr "Serveur STUN a utiliser avec jingle"
-#: ../src/common/config.py:291
+#: ../src/common/config.py:292
msgid ""
"If True, Gajim will show affiliation of groupchat occupants by adding a "
"colored square to the status icon"
msgstr ""
+"si vrai, Gajim affichera l'affiliation des occupant(e)s des salons de "
+"discussions en ajoutant un carré coloré a l'icône d'état"
+
+#: ../src/common/config.py:293
+msgid ""
+"Proxy used for all outgoing connections if the account does not have a "
+"specific proxy configured"
+msgstr ""
+"Proxy utilisé pour toutes les connexions sortantes si le compte n'a pas de "
+"proxy spécifique configuré"
-#: ../src/common/config.py:304
+#: ../src/common/config.py:307
msgid ""
"Priority will change automatically according to your status. Priorities are "
"defined in autopriority_* options."
@@ -4292,7 +4568,7 @@ msgstr ""
"La priorité va changer automatiquement selon votre état. Les priorités sont "
"définies dans les options autopriority_*."
-#: ../src/common/config.py:312
+#: ../src/common/config.py:315
msgid ""
"Status used to autoconnect as. Can be online, chat, away, xa, dnd, "
"invisible. NOTE: this option is used only if restore_last_status is disabled"
@@ -4302,41 +4578,41 @@ msgstr ""
"(indisponible), dnd (Occupé(e)) ou Invisible. NOTE : cette option n'est "
"utilisée que si l'option restore_last_status est désactivée"
-#: ../src/common/config.py:313
+#: ../src/common/config.py:316
msgid "If enabled, restore the last status that was used."
msgstr "Si activé, restaure le dernier statut qui était utilisé."
-#: ../src/common/config.py:315
+#: ../src/common/config.py:318
msgid ""
"If True, Contacts requesting authorization will be automatically accepted."
msgstr ""
"Si Vrai, les demandes d'autorisation de contact seront automatiquement "
"acceptées."
-#: ../src/common/config.py:316
+#: ../src/common/config.py:319
msgid ""
"If False, this account will be disabled and will not appear in roster window."
msgstr ""
"Si Faux, ce compte sera désactivé et n'apparaîtra plus dans votre roster."
-#: ../src/common/config.py:319
+#: ../src/common/config.py:322
msgid ""
"If disabled, don't sign presences with GPG key, even if GPG is configured."
msgstr ""
"Si désactivé, ne pas signaler les présences avec une clef GPG, même si GPG "
"est configuré."
-#: ../src/common/config.py:321
+#: ../src/common/config.py:324
msgid "Enable ESessions encryption for this account."
msgstr "Activer le chiffrage ESessions pour ce compte."
-#: ../src/common/config.py:322
+#: ../src/common/config.py:325
msgid "Should Gajim automatically start an encrypted session when possible?"
msgstr ""
"Gajim doit-il commencer automatiquement une discussion chiffrée quand cela "
"est possible ?"
-#: ../src/common/config.py:323
+#: ../src/common/config.py:326
msgid ""
"Ordered list (space separated) of connection type to try. Can contain tls, "
"ssl or plain"
@@ -4344,40 +4620,58 @@ msgstr ""
"Liste ordonnée de types de connexion, séparés par des virgules, à essayer. "
"Peut contenir tls, ssl ou plain."
-#: ../src/common/config.py:324
+#: ../src/common/config.py:327
msgid ""
-"Show a warning dialog before sending password on an plaintext connection."
+"Show a warning dialog before sending password on an plaintext connection. "
+"Can be 'warn', 'connect', 'disconnect'"
msgstr ""
"Afficher un message d'avertissement avant d'envoyer un mot de passe via une "
-"connexion non-chiffrée."
+"connexion non-chiffrée. Peut prendre les valeurs 'warn', 'connect', "
+"'disconnect'"
-#: ../src/common/config.py:325
+#: ../src/common/config.py:328
msgid "Show a warning dialog before using standard SSL library."
msgstr ""
"Afficher un message d'avertissement avant d'utiliser la librairie SSL "
"standard."
-#: ../src/common/config.py:326
-#, fuzzy
+#: ../src/common/config.py:329
msgid ""
"Show a warning dialog before sending PLAIN password over a plain connection."
msgstr ""
-"Afficher un message d'avertissement avant d'envoyer un mot de passe via une "
-"connexion non-chiffrée."
+"Afficher un message d'avertissement avant d'envoyer un mot de passe non-"
+"chiffré via une connexion non-chiffrée."
-#: ../src/common/config.py:328
+#: ../src/common/config.py:331
msgid "Space separated list of ssl errors to ignore."
msgstr "Liste d'erreurs ssl, séparées par une virgule, à ignorer."
#: ../src/common/config.py:337
+msgid ""
+"Space separated list of JIDs for which you do not want to store logs. You "
+"can also add account name to log nothing for this account."
+msgstr ""
+"Liste de jid, séparée par un espace, pour lesquels vous ne voulez pas "
+"enregistrer les conversations. Vous pouvez également ajouter le nom d'un "
+"compte pour ne rien enregistrer pour ce compte."
+
+#: ../src/common/config.py:338
+msgid ""
+"Space separated list of JIDs for which you accept to not log conversations "
+"if he does not want to."
+msgstr ""
+"Liste de jid, séparée par un espace, pour lesquels vous accepter de ne pas "
+"enregistrer les conversations s'il ne veut pas."
+
+#: ../src/common/config.py:341
msgid "Whitespace sent after inactivity"
msgstr "Espace envoyée après inactivité"
-#: ../src/common/config.py:338
+#: ../src/common/config.py:342
msgid "XMPP ping sent after inactivity"
msgstr "ping XMPP envoyé après inactivité"
-#: ../src/common/config.py:342
+#: ../src/common/config.py:346
msgid ""
"How many seconds to wait for the answer of ping alive packet before we try "
"to reconnect."
@@ -4386,11 +4680,11 @@ msgstr ""
"Connexion avant de tenter de se connecter."
#. yes, no, ask
-#: ../src/common/config.py:346
+#: ../src/common/config.py:350
msgid "Jabberd2 workaround"
msgstr "Contournement de bug de jabberd2"
-#: ../src/common/config.py:349
+#: ../src/common/config.py:353
msgid ""
"If checked, Gajim will use your IP and proxies defined in "
"file_transfer_proxies option for file transfer."
@@ -4398,26 +4692,35 @@ msgstr ""
"Si cette case est cochée, Gajim utilisera votre IP et les proxies définis "
"dans l'option file_transfer_proxies pour les transferts de fichiers."
-#: ../src/common/config.py:363
+#: ../src/common/config.py:354
+msgid ""
+"If True, Gajim will test file transfer proxies on startup to be sure it "
+"works. Openfire's proxies are known to fail this test even if they work."
+msgstr ""
+"Si vrai, Gajim testera les proxys de transfert de fichiers au démarrage pour "
+"être sûr qu'ils fonctionnent. Les proxys de Openfire sont connus pour "
+"échouer à ce test, même s'ils fonctionnent"
+
+#: ../src/common/config.py:368
msgid "Answer to receipt requests"
msgstr "Répondre aux demandes d'accusés de réception"
-#: ../src/common/config.py:364
+#: ../src/common/config.py:369
msgid "Sent receipt requests"
msgstr "Envoyer des demandes d'accusés de réception"
-#: ../src/common/config.py:373
+#: ../src/common/config.py:378
msgid ""
"Allow Gajim to send information about the operating system you are running."
msgstr ""
"Si cette case est cochée, Gajim autorisera les autres à détecter le système "
"d'exploitation que vous utilisez"
-#: ../src/common/config.py:374
+#: ../src/common/config.py:379
msgid "Allow Gajim to send your local time."
msgstr "Autorise Gajim à envoyer votre heure."
-#: ../src/common/config.py:375
+#: ../src/common/config.py:380
msgid ""
"When negotiating an encrypted session, should Gajim assume you want your "
"messages to be logged?"
@@ -4425,19 +4728,47 @@ msgstr ""
"Durant la négociation d'une session chiffrée, Gajim doit-il partir du "
"principe que vous voulez archiver vos conversations ?"
-#: ../src/common/config.py:378
+#: ../src/common/config.py:383
msgid "Message that is sent to contacts you want to add"
msgstr "Message à envoyer aux contacts que vous souhaitez ajouter"
-#: ../src/common/config.py:379
+#: ../src/common/config.py:384
msgid "Last time we syncronized with logs from server."
msgstr "Date de la dernière synchronisation des logs avec le serveur."
-#: ../src/common/config.py:441
+#: ../src/common/config.py:385
+msgid ""
+"If enabled and if server supports this feature, Gajim will receive messages "
+"sent and received by other resources."
+msgstr ""
+"Si activé et si le serveur supporte cette fonctionnalité, Gajim recevra les "
+"messages envoyés et reçus par les autres resources."
+
+#: ../src/common/config.py:386
+msgid ""
+"If enabled, Gajim will send your local IPs so your contact can connect to "
+"your machine to transfer files."
+msgstr ""
+"Si activé, Gajim enverra vos IPs publiques pour que vos contacts puissent se "
+"connecter à votre machine pour les transfert de fichiers."
+
+#: ../src/common/config.py:387
+msgid "Latest token for Oauth2 authentication."
+msgstr "Dernier jeton pour l'authentification Oauth2."
+
+#: ../src/common/config.py:388
+msgid "client_id for Oauth2 authentication."
+msgstr "client_id pour l'authentification Oauth2."
+
+#: ../src/common/config.py:389
+msgid "redirect_url for Oauth2 authentication."
+msgstr "redirect_url pour l'authentification Oauth2."
+
+#: ../src/common/config.py:451
msgid "Is OpenPGP enabled for this contact?"
msgstr "Est-ce que OpenPGP est activé pour ce contact ?"
-#: ../src/common/config.py:442
+#: ../src/common/config.py:452
msgid ""
"Should Gajim automatically start an encrypted session with this contact when "
"possible?"
@@ -4445,94 +4776,97 @@ msgstr ""
"Gajim doit-il commencer automatiquement une discussion chiffrée avec ce "
"contact quand cela est possible ?"
-#: ../src/common/config.py:443 ../src/common/config.py:446
+#: ../src/common/config.py:453 ../src/common/config.py:456
msgid "Language for which we want to check misspelled words"
msgstr "Langue dans laquelle faire la vérification orthographique"
-#: ../src/common/config.py:449
+#: ../src/common/config.py:459
msgid ""
-"State whether plugins should be activated on exit (this is saved on Gajim "
+"State whether plugins should be activated on startup (this is saved on Gajim "
"exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI "
"instead."
msgstr ""
+"Statue si le plugin doit être activée au démarrage (sauvegardé quand Gajim "
+"s'eteint). Cette option NE DEVRAIT PAS être utilisée pour (dés)activer un "
+"plugin. Utiliser l'interface graphique pour cela."
-#: ../src/common/config.py:454 ../src/common/pep.py:157
+#: ../src/common/config.py:464 ../src/common/pep.py:157
msgid "Sleeping"
msgstr "Dort"
-#: ../src/common/config.py:455
+#: ../src/common/config.py:465
msgid "Back soon"
msgstr "Bientôt de retour"
-#: ../src/common/config.py:455
+#: ../src/common/config.py:465
msgid "Back in some minutes."
msgstr "De retour dans quelques minutes."
-#: ../src/common/config.py:456 ../src/common/pep.py:127
+#: ../src/common/config.py:466 ../src/common/pep.py:127
msgid "Eating"
msgstr "Mange"
-#: ../src/common/config.py:456
+#: ../src/common/config.py:466
msgid "I'm eating, so leave me a message."
msgstr "Je mange, donc laissez moi un message."
-#: ../src/common/config.py:457
+#: ../src/common/config.py:467
msgid "Movie"
msgstr "Film"
-#: ../src/common/config.py:457
+#: ../src/common/config.py:467
msgid "I'm watching a movie."
msgstr "Je regarde un film."
-#: ../src/common/config.py:458 ../src/common/pep.py:186
+#: ../src/common/config.py:468 ../src/common/pep.py:186
msgid "Working"
msgstr "Travaille"
-#: ../src/common/config.py:458
+#: ../src/common/config.py:468
msgid "I'm working."
msgstr "Je travaille."
-#: ../src/common/config.py:459
+#: ../src/common/config.py:469
msgid "Phone"
msgstr "Téléphone"
-#: ../src/common/config.py:459
+#: ../src/common/config.py:469
msgid "I'm on the phone."
msgstr "Je suis au téléphone."
-#: ../src/common/config.py:460
+#: ../src/common/config.py:470
msgid "Out"
msgstr "Dehors"
-#: ../src/common/config.py:460
+#: ../src/common/config.py:470
msgid "I'm out enjoying life."
msgstr "Je suis sorti profiter de la vie."
-#: ../src/common/config.py:471
+#: ../src/common/config.py:481
msgid "I'm available."
msgstr "Disponible"
-#: ../src/common/config.py:472
+#: ../src/common/config.py:482
msgid "I'm free for chat."
msgstr "Disponible pour discuter"
-#: ../src/common/config.py:473 ../src/config.py:1609
+#: ../src/common/config.py:483 ../src/config.py:1652
msgid "Be right back."
msgstr "Revient de suite."
-#: ../src/common/config.py:474
+#: ../src/common/config.py:484
msgid "I'm not available."
msgstr "Non disponible"
-#: ../src/common/config.py:475
+#: ../src/common/config.py:485
msgid "Do not disturb."
msgstr "Ne pas déranger."
-#: ../src/common/config.py:476 ../src/common/config.py:477
+#: ../src/common/config.py:486 ../src/common/config.py:487
msgid "Bye!"
msgstr "Au revoir !"
-#: ../src/common/config.py:487
+#: ../src/common/config.py:497
msgid ""
"Sound to play when a group chat message contains one of the words in "
"muc_highlight_words, or when a group chat message contains your nickname."
@@ -4540,27 +4874,31 @@ msgstr ""
"Son à jouer lorsqu'un message de salon contient un des mots de "
"muc_highlight_words, ou lorsqu'un message de salon contient votre surnom."
-#: ../src/common/config.py:488
+#: ../src/common/config.py:498
msgid "Sound to play when any MUC message arrives."
msgstr "Son émis lors de l'arrivée d'un message de salon de discussion."
-#: ../src/common/config.py:497 ../src/common/optparser.py:308
+#: ../src/common/config.py:507 ../src/common/optparser.py:310
msgid "green"
msgstr "vert"
-#: ../src/common/config.py:501 ../src/common/optparser.py:294
+#: ../src/common/config.py:511 ../src/common/optparser.py:296
msgid "grocery"
msgstr "épicerie"
-#: ../src/common/config.py:505
+#: ../src/common/config.py:515
msgid "human"
msgstr "Humain"
-#: ../src/common/config.py:509
+#: ../src/common/config.py:519
msgid "marine"
msgstr "Marine"
-#: ../src/common/connection_handlers_events.py:355
+#: ../src/common/config.py:526
+msgid "Tor"
+msgstr "Tor"
+
+#: ../src/common/connection_handlers_events.py:367
#, python-format
msgid ""
"JID %s is not RFC compliant. It will not be added to your roster. Use roster "
@@ -4570,25 +4908,23 @@ msgstr ""
"à votre liste de contacts. Utilisez un outil de gestion de liste de contact "
"tel que http://jru.jabberstudio.org pour le supprimer"
-#: ../src/common/connection_handlers_events.py:784
+#: ../src/common/connection_handlers_events.py:799
#, python-format
msgid "unsubscribe request from %s"
msgstr "Requête de désinscription de la part de %s"
-#: ../src/common/connection_handlers_events.py:868
-#: ../src/common/connection_handlers.py:339
-#: ../src/common/connection_handlers.py:943
-#: ../src/common/connection_handlers.py:1044
-#: ../src/common/connection_handlers.py:1701 ../src/common/connection.py:459
-#: ../src/common/logger.py:1124 ../src/gajim.py:385
+#: ../src/common/connection_handlers_events.py:884
+#: ../src/common/connection_handlers.py:334
+#: ../src/common/connection_handlers.py:946
+#: ../src/common/connection_handlers.py:1058 ../src/common/connection.py:453
+#: ../src/common/logger.py:1142 ../src/gajim.py:392 ../src/session.py:97
msgid "Disk Write Error"
msgstr "Erreur d'Écriture du disque"
-#: ../src/common/connection_handlers_events.py:872
-#: ../src/common/connection_handlers.py:946
-#: ../src/common/connection_handlers.py:1047
-#: ../src/common/connection_handlers.py:1704 ../src/common/connection.py:463
-#: ../src/common/logger.py:1127 ../src/gajim.py:204 ../src/session.py:98
+#: ../src/common/connection_handlers_events.py:888
+#: ../src/common/connection_handlers.py:949
+#: ../src/common/connection_handlers.py:1061 ../src/common/connection.py:457
+#: ../src/common/logger.py:1145 ../src/gajim.py:211 ../src/session.py:101
#, python-format
msgid ""
"The database file (%s) cannot be read. Try to repair it (see http://trac."
@@ -4600,100 +4936,144 @@ msgstr ""
#. Room has been destroyed. see
#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom
-#: ../src/common/connection_handlers_events.py:893
+#: ../src/common/connection_handlers_events.py:909
msgid "Room has been destroyed"
msgstr "Le salon de discussion a été détruit"
-#: ../src/common/connection_handlers_events.py:901
+#: ../src/common/connection_handlers_events.py:917
#, python-format
msgid "You can join this room instead: %s"
msgstr "Vous pouvez rejoindre le salon %s à la place"
-#: ../src/common/connection_handlers_events.py:974
-#: ../src/common/connection.py:258 ../src/config.py:2102 ../src/config.py:2111
-#: ../src/config.py:2179 ../src/config.py:3608 ../src/dataforms_widget.py:623
-#: ../src/dialogs.py:3049
+#: ../src/common/connection_handlers_events.py:1001
+#: ../src/common/connection_handlers_events.py:1038
+#: ../src/common/connection.py:263 ../src/config.py:2149 ../src/config.py:2158
+#: ../src/config.py:2226 ../src/config.py:3667 ../src/dataforms_widget.py:623
+#: ../src/dialogs.py:3095
msgid "Invalid Jabber ID"
msgstr "Identifiant Jabber invalide"
-#: ../src/common/connection_handlers_events.py:975
+#: ../src/common/connection_handlers_events.py:1002
+#: ../src/common/connection_handlers_events.py:1039
msgid "A message from a non-valid JID arrived, it has been ignored."
msgstr "Un message d'un JID invalide a été reçu, il a été ignoré."
-#: ../src/common/connection_handlers_events.py:1423
+#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
+#: ../src/common/connection_handlers_events.py:1064
+#: ../src/gui_interface.py:430 ../src/gui_interface.py:444
+#, python-format
+msgid "error while sending %(message)s ( %(error)s )"
+msgstr "erreur en envoyant %(message)s ( %(error)s )"
+
+#: ../src/common/connection_handlers_events.py:1498
#, python-format
msgid "Unknown SSL error: %d"
msgstr "Erreur SSL inconnue : %d"
-#. single message
-#: ../src/common/connection_handlers_events.py:1947 ../src/dialogs.py:2741
-#: ../src/notify.py:194 ../src/notify.py:423
+#: ../src/common/connection_handlers_events.py:2030 ../src/dialogs.py:2782
+#: ../src/notify.py:263
msgid "New Single Message"
msgstr "Nouveau message simple"
-#: ../src/common/connection_handlers_events.py:1949 ../src/notify.py:196
+#: ../src/common/connection_handlers_events.py:2032
#, python-format
msgid "New Single Message from %(nickname)s"
msgstr "Nouveau message simple de %(nickname)s"
-#. private message
-#: ../src/common/connection_handlers_events.py:1952 ../src/dialogs.py:2742
-#: ../src/notify.py:200 ../src/notify.py:424
+#: ../src/common/connection_handlers_events.py:2036 ../src/dialogs.py:2783
+#: ../src/notify.py:264
msgid "New Private Message"
msgstr "Nouveau message privé"
-#: ../src/common/connection_handlers_events.py:1954 ../src/notify.py:203
+#: ../src/common/connection_handlers_events.py:2038
#, python-format
msgid "New Private Message from group chat %s"
msgstr "Nouveau message privé dans le salon %s"
-#: ../src/common/connection_handlers_events.py:1957 ../src/notify.py:205
+#: ../src/common/connection_handlers_events.py:2041
#, python-format
msgid "%(nickname)s: %(message)s"
msgstr "%(nickname)s : %(message)s"
-#: ../src/common/connection_handlers_events.py:1960 ../src/notify.py:208
+#: ../src/common/connection_handlers_events.py:2044
#, python-format
msgid "Messaged by %(nickname)s"
msgstr "Message de %(nickname)s"
-#. chat message
-#: ../src/common/connection_handlers_events.py:1963 ../src/dialogs.py:2741
-#: ../src/notify.py:212 ../src/notify.py:423
+#: ../src/common/connection_handlers_events.py:2048 ../src/dialogs.py:2782
+#: ../src/notify.py:263
msgid "New Message"
msgstr "Nouveau message"
-#: ../src/common/connection_handlers_events.py:1965 ../src/notify.py:214
+#: ../src/common/connection_handlers_events.py:2050
#, python-format
msgid "New Message from %(nickname)s"
msgstr "Nouveau message de %(nickname)s"
-#: ../src/common/connection_handlers.py:95
+#: ../src/common/connection_handlers_events.py:2179
+#, python-format
+msgid "%(nick)s Changed Status"
+msgstr "%(nick)s a changé d'état"
+
+#: ../src/common/connection_handlers_events.py:2181
+#: ../src/groupchat_control.py:205 ../src/groupchat_control.py:1765
+#: ../src/history_window.py:448
+#, python-format
+msgid "%(nick)s is now %(status)s"
+msgstr "%(nick)s est maintenant %(status)s"
+
+#: ../src/common/connection_handlers_events.py:2186 ../src/dialogs.py:2794
+#: ../src/notify.py:277
+msgid "Contact Changed Status"
+msgstr "Le contact a changé d'état"
+
+#: ../src/common/connection_handlers_events.py:2188
+#, python-format
+msgid "%(nickname)s Signed In"
+msgstr "%(nickname)s s'est connecté(e)"
+
+#. default value
+#: ../src/common/connection_handlers_events.py:2193 ../src/dialogs.py:2778
+#: ../src/notify.py:259
+msgid "Contact Signed In"
+msgstr "Contact connecté"
+
+#: ../src/common/connection_handlers_events.py:2195
+#, python-format
+msgid "%(nickname)s Signed Out"
+msgstr "%(nickname)s s'est déconnecté(e)"
+
+#: ../src/common/connection_handlers_events.py:2200 ../src/dialogs.py:2780
+#: ../src/notify.py:261
+msgid "Contact Signed Out"
+msgstr "Contact déconnecté"
+
+#: ../src/common/connection_handlers.py:88
#: ../src/common/zeroconf/connection_handlers_zeroconf.py:54
msgid "Unable to load idle module"
msgstr "Impossible de charger le module d'inactivité"
-#: ../src/common/connection_handlers.py:128
+#: ../src/common/connection_handlers.py:121
#, python-format
msgid "Registration information for transport %s has not arrived in time"
msgstr ""
"L'information d'enregistrement pour la passerelle %s n'est pas arrivée à "
"temps"
-#: ../src/common/connection_handlers.py:135
+#: ../src/common/connection_handlers.py:129
msgid "Registration succeeded"
msgstr "L'inscription a réussi"
-#: ../src/common/connection_handlers.py:136
+#: ../src/common/connection_handlers.py:130
#, python-format
msgid "Registration with agent %s succeeded"
msgstr "Enregistrement avec l'agent %s réussi"
-#: ../src/common/connection_handlers.py:144
+#: ../src/common/connection_handlers.py:139
msgid "Registration failed"
msgstr "L'inscription a échoué"
-#: ../src/common/connection_handlers.py:144
+#: ../src/common/connection_handlers.py:140
#, python-format
msgid ""
"Registration with agent %(agent)s failed with error %(error)s: %(error_msg)s"
@@ -4701,170 +5081,169 @@ msgstr ""
"L'enregistrement avec l'agent %(agent)s a échoué avec l'erreur %(error)s : "
"%(error_msg)s"
-#: ../src/common/connection_handlers.py:564 ../src/common/connection.py:1520
+#: ../src/common/connection_handlers.py:571 ../src/common/connection.py:1547
msgid "Invisibility not supported"
msgstr "Invisibilité non-supportée"
-#: ../src/common/connection_handlers.py:565 ../src/common/connection.py:1521
+#: ../src/common/connection_handlers.py:572 ../src/common/connection.py:1548
#, python-format
msgid "Account %s doesn't support invisibility."
msgstr "Le compte %s ne supporte pas l'invisibilité."
-#: ../src/common/connection_handlers.py:1746
+#: ../src/common/connection_handlers.py:1720
msgid "I would like to add you to my roster."
msgstr "Je souhaiterais vous ajouter à ma liste de contacts."
-#: ../src/common/connection.py:68
+#: ../src/common/connection.py:70
msgid "Unable to get issuer certificate"
msgstr "Impossible d'obtenir le certificat de l'émetteur "
-#: ../src/common/connection.py:69
+#: ../src/common/connection.py:71
msgid "Unable to get certificate CRL"
msgstr "Impossible d'obtenir un certificat CRL"
-#: ../src/common/connection.py:70
+#: ../src/common/connection.py:72
msgid "Unable to decrypt certificate's signature"
msgstr "Impossible de déchiffrer la signature du certificat"
-#: ../src/common/connection.py:71
+#: ../src/common/connection.py:73
msgid "Unable to decrypt CRL's signature"
msgstr "Impossible de déchiffrer la signature du CRL"
-#: ../src/common/connection.py:72
+#: ../src/common/connection.py:74
msgid "Unable to decode issuer public key"
msgstr "Impossible de déchiffrer la clef public de l'émetteur"
-#: ../src/common/connection.py:73
+#: ../src/common/connection.py:75
msgid "Certificate signature failure"
msgstr "Échec de la signature du certificat"
-#: ../src/common/connection.py:74
+#: ../src/common/connection.py:76
msgid "CRL signature failure"
msgstr "Échec de la signature CRL"
-#: ../src/common/connection.py:75
+#: ../src/common/connection.py:77
msgid "Certificate is not yet valid"
msgstr "Le certificat n'est pas encore valide"
-#: ../src/common/connection.py:76
+#: ../src/common/connection.py:78
msgid "Certificate has expired"
msgstr "Le certificat a expiré"
-#: ../src/common/connection.py:77
+#: ../src/common/connection.py:79
msgid "CRL is not yet valid"
msgstr "CRL n'est pas encore valide"
-#: ../src/common/connection.py:78
+#: ../src/common/connection.py:80
msgid "CRL has expired"
msgstr "CRL a expiré"
-#: ../src/common/connection.py:79
+#: ../src/common/connection.py:81
msgid "Format error in certificate's notBefore field"
msgstr "Erreur de format dans le champ notBefore du certificat"
-#: ../src/common/connection.py:80
+#: ../src/common/connection.py:82
msgid "Format error in certificate's notAfter field"
msgstr "Erreur de format dans le champ notAfter du certificat"
-#: ../src/common/connection.py:81
+#: ../src/common/connection.py:83
msgid "Format error in CRL's lastUpdate field"
msgstr "Erreur de format dans le champ lastUpdate du CRL"
-#: ../src/common/connection.py:82
+#: ../src/common/connection.py:84
msgid "Format error in CRL's nextUpdate field"
msgstr "Erreur de format dans le champ nextUpdate du CRL"
-#: ../src/common/connection.py:83
+#: ../src/common/connection.py:85
msgid "Out of memory"
msgstr "Mémoire insuffisante"
-#: ../src/common/connection.py:84
+#: ../src/common/connection.py:86
msgid "Self signed certificate"
msgstr "Certificat auto-signé"
-#: ../src/common/connection.py:85
+#: ../src/common/connection.py:87
msgid "Self signed certificate in certificate chain"
msgstr "Certificat auto-signé dans la chaîne de certificat"
-#: ../src/common/connection.py:86
+#: ../src/common/connection.py:88
msgid "Unable to get local issuer certificate"
msgstr "Impossible de récupérer le certificat de l'émeteur local"
-#: ../src/common/connection.py:87
+#: ../src/common/connection.py:89
msgid "Unable to verify the first certificate"
msgstr "Impossible de vérifier le premier certificat"
-#: ../src/common/connection.py:88
+#: ../src/common/connection.py:90
msgid "Certificate chain too long"
msgstr "Chaîne du certificat trop longue"
-#: ../src/common/connection.py:89
+#: ../src/common/connection.py:91
msgid "Certificate revoked"
msgstr "Certificat révoqué"
-#: ../src/common/connection.py:90
+#: ../src/common/connection.py:92
msgid "Invalid CA certificate"
msgstr "Certificat CA invalide"
-#: ../src/common/connection.py:91
+#: ../src/common/connection.py:93
msgid "Path length constraint exceeded"
msgstr "Longueur du chemin dépassée"
-#: ../src/common/connection.py:92
+#: ../src/common/connection.py:94
msgid "Unsupported certificate purpose"
msgstr "Objet du certificat non-supporté"
-#: ../src/common/connection.py:93
+#: ../src/common/connection.py:95
msgid "Certificate not trusted"
msgstr "Certificat non approuvé"
-#: ../src/common/connection.py:94
+#: ../src/common/connection.py:96
msgid "Certificate rejected"
msgstr "Certificat refusé"
-#: ../src/common/connection.py:95
+#: ../src/common/connection.py:97
msgid "Subject issuer mismatch"
msgstr "Décalage du sujet de l'émetteur"
-#: ../src/common/connection.py:96
+#: ../src/common/connection.py:98
msgid "Authority and subject key identifier mismatch"
msgstr "Décalage dans les clés d'identification de l'authorité et du sujet"
-#: ../src/common/connection.py:97
+#: ../src/common/connection.py:99
msgid "Authority and issuer serial number mismatch"
msgstr "Décalage dans les numéros de série de l'authorité et du sujet"
-#: ../src/common/connection.py:98
+#: ../src/common/connection.py:100
msgid "Key usage does not include certificate signing"
msgstr "L'utilisation de la clé n'inclut pas la signature d'un certificat"
-#: ../src/common/connection.py:99
+#: ../src/common/connection.py:101
msgid "Application verification failure"
msgstr "Echec de la vérification de l'application"
-#: ../src/common/connection.py:259 ../src/dialogs.py:3050
+#: ../src/common/connection.py:264 ../src/dialogs.py:3096
#, python-format
msgid "It is not possible to send a message to %s, this JID is not valid."
msgstr ""
"Il n'est pas possible d'envoyer un message à %s, ce JID n'est pas valide."
-#: ../src/common/connection.py:281
+#: ../src/common/connection.py:286
msgid "Neither the remote presence is signed, nor a key was assigned."
msgstr "Le présence distante n'est pas signée et aucune clef n'a été assignée."
-#: ../src/common/connection.py:284
+#: ../src/common/connection.py:289
#, python-format
msgid "The contact's key (%s) does not match the key assigned in Gajim."
msgstr ""
"La clef du contact (%s) ne correspond pas à la clef assignée dans Gajim."
-#. we're not english
-#. one in locale and one en
-#: ../src/common/connection.py:337
+#. we're not english: one in locale and one en
+#: ../src/common/connection.py:342
msgid "[This message is *encrypted* (See :XEP:`27`]"
msgstr "[Ce message est *chiffré* (Voir : XEP:`27`]"
-#: ../src/common/connection.py:446
+#: ../src/common/connection.py:440
#, python-format
msgid ""
"Subject: %(subject)s\n"
@@ -4873,79 +5252,78 @@ msgstr ""
"Sujet : %(subject)s\n"
"%(message)s"
-#: ../src/common/connection.py:839
+#: ../src/common/connection.py:854
#, python-format
msgid "Connection with account \"%s\" has been lost"
msgstr "La connexion du compte \"%s\" a été perdue"
-#: ../src/common/connection.py:840
+#: ../src/common/connection.py:855
msgid "Reconnect manually."
msgstr "Reconnecter manuellement."
#. it's a new account
#. wrong answer
-#: ../src/common/connection.py:851
+#: ../src/common/connection.py:866
#, python-format
msgid "Server %(name)s answered wrongly to register request: %(error)s"
msgstr ""
"Le serveur %(name)s a mal répondu à la requête d'enregistrement : %(error)s"
#. requested config has changed since first connection
-#: ../src/common/connection.py:893
+#: ../src/common/connection.py:908
#, python-format
msgid "Server %s provided a different registration form"
msgstr "Le serveur %s a fourni une forme d'inscription différente"
-#. wrong answer
-#: ../src/common/connection.py:909
+#: ../src/common/connection.py:925
msgid "Invalid answer"
msgstr "Réponse non valide"
-#: ../src/common/connection.py:910
+#: ../src/common/connection.py:926
#, python-format
msgid "Transport %(name)s answered wrongly to register request: %(error)s"
msgstr ""
"La passerelle %(name)s a mal répondu à la requête d'enregistrement : "
"%(error)s"
-#: ../src/common/connection.py:1198 ../src/common/connection.py:1332
-#: ../src/common/connection.py:1941
-#: ../src/common/zeroconf/connection_zeroconf.py:203
+#: ../src/common/connection.py:1201 ../src/common/connection.py:1356
+#: ../src/common/connection.py:1983
+#: ../src/common/zeroconf/connection_zeroconf.py:205
#, python-format
msgid "Could not connect to \"%s\""
msgstr "Impossible de se connecter à \"%s\""
-#: ../src/common/connection.py:1199 ../src/gui_interface.py:562
+#: ../src/common/connection.py:1202 ../src/gui_interface.py:539
msgid "Check your connection or try again later."
msgstr "Vérifiez votre connexion ou réessayez plus tard."
-#: ../src/common/connection.py:1204
+#: ../src/common/connection.py:1207
#, python-format
msgid "Server replied: %s"
msgstr "le serveur a répondu : %s"
-#: ../src/common/connection.py:1217
+#: ../src/common/connection.py:1222
msgid "Connection to proxy failed"
msgstr "La connexion au proxy a échoué"
-#: ../src/common/connection.py:1249 ../src/common/connection.py:1311
+#: ../src/common/connection.py:1260 ../src/common/connection.py:1332
#, python-format
msgid "Could not connect to account %s"
msgstr "Impossible de se connecter au compte %s"
-#: ../src/common/connection.py:1250 ../src/common/connection.py:1312
+#: ../src/common/connection.py:1261 ../src/common/connection.py:1333
#, python-format
msgid "Connection with account %s has been lost. Retry connecting."
msgstr ""
"La connexion avec le compte %s a été perdue. Essayez de vous connecter à "
"nouveau."
-#: ../src/common/connection.py:1275
+#: ../src/common/connection.py:1286
#, python-format
msgid "The authenticity of the %s certificate could be invalid."
msgstr "L'authentification du certificat %s peut être invalide."
-#: ../src/common/connection.py:1278
+#: ../src/common/connection.py:1289
#, python-format
msgid ""
"\n"
@@ -4954,7 +5332,7 @@ msgstr ""
"\n"
"Erreur SSL : <b>%s</b>"
-#: ../src/common/connection.py:1280
+#: ../src/common/connection.py:1291
#, python-format
msgid ""
"\n"
@@ -4963,24 +5341,33 @@ msgstr ""
"\n"
"Erreur SSL inconnue : %d"
-#: ../src/common/connection.py:1333
+#: ../src/common/connection.py:1314
+#, python-format
+msgid ""
+"The authenticity of the %s certificate could be invalid.\n"
+"The certificate does not cover this domain."
+msgstr ""
+"L'authentification du certificat %s peut être invalide.\n"
+"Le certificat ne couvre pas ce domaine."
+
+#: ../src/common/connection.py:1357
msgid "Check your connection or try again later"
msgstr "Vérifiez votre connexion ou réessayer plus tard"
-#: ../src/common/connection.py:1367
+#: ../src/common/connection.py:1392
#, python-format
msgid "Authentication failed with \"%s\""
msgstr "Echec de l'authentification avec \"%s\""
-#: ../src/common/connection.py:1369
+#: ../src/common/connection.py:1393
msgid "Please check your login and password for correctness."
msgstr "Vérifiez si votre identifiant et votre mot de passe sont corrects."
-#: ../src/common/connection.py:1442
+#: ../src/common/connection.py:1468
msgid "Error while removing privacy list"
msgstr "Une erreur s'est produite pendant la suppression de la liste privée"
-#: ../src/common/connection.py:1443
+#: ../src/common/connection.py:1469
#, python-format
msgid ""
"Privacy list %s has not been removed. It is maybe active in one of your "
@@ -4989,43 +5376,43 @@ msgstr ""
"La liste privée %s n'a pas été supprimée. Elle est peut-être active dans une "
"des ressources connectées. Désactivez la et réessayez."
-#: ../src/common/connection.py:1808
+#: ../src/common/connection.py:1850
#, python-format
msgid "Sent contact: \"%s\" (%s)"
msgstr "Contact envoyé : « %s » (%s)"
-#: ../src/common/connection.py:1811
+#: ../src/common/connection.py:1853
msgid "Sent contacts:"
msgstr "Contacts envoyés :"
-#: ../src/common/connection.py:1958 ../src/common/connection.py:1981
+#: ../src/common/connection.py:2000 ../src/common/connection.py:2023
msgid "Not fetched because of invisible status"
msgstr "Non récupéré à cause du statut invisible"
-#: ../src/common/connection.py:2511
+#: ../src/common/connection.py:2583
msgid "Unregister failed"
msgstr "La désinscription a échoué"
-#: ../src/common/connection.py:2512
+#: ../src/common/connection.py:2584
#, python-format
msgid "Unregistration with server %(server)s failed: %(error)s"
msgstr "Le désabonnement du server %(server)s a échoué : %(error)s"
-#: ../src/common/contacts.py:135 ../src/common/helpers.py:60
-#: ../src/gui_interface.py:505
+#: ../src/common/contacts.py:126 ../src/common/helpers.py:67
+#: ../src/gui_interface.py:482
msgid "Observers"
msgstr "Observateurs"
-#: ../src/common/contacts.py:139 ../src/common/contacts.py:366
-#: ../src/common/helpers.py:60 ../src/disco.py:120 ../src/disco.py:121
-#: ../src/disco.py:1517 ../src/roster_window.py:856
-#: ../src/roster_window.py:1557 ../src/roster_window.py:1645
-#: ../src/roster_window.py:1647 ../src/roster_window.py:1809
-#: ../src/roster_window.py:2490
+#: ../src/common/contacts.py:130 ../src/common/contacts.py:358
+#: ../src/common/helpers.py:67 ../src/disco.py:120 ../src/disco.py:121
+#: ../src/disco.py:1517 ../src/roster_window.py:859
+#: ../src/roster_window.py:1556 ../src/roster_window.py:1660
+#: ../src/roster_window.py:1662 ../src/roster_window.py:1824
+#: ../src/roster_window.py:2514
msgid "Transports"
msgstr "Passerelles"
-#: ../src/common/contacts.py:374
+#: ../src/common/contacts.py:366
msgid "Not in roster"
msgstr "Pas dans la liste"
@@ -5250,273 +5637,290 @@ msgstr "Fin de la semaine"
msgid "Weekend!"
msgstr "Fin de semaine !"
-#: ../src/common/helpers.py:151
+#: ../src/common/helpers.py:158
msgid "Username must be between 1 and 1023 chars"
msgstr "Le nom d'utilisateur doit comprendre entre 1 et 1023 caractères"
-#: ../src/common/helpers.py:156
+#: ../src/common/helpers.py:163
msgid "Invalid character in username."
msgstr "Caractère non valide dans le nom d'utilisateur."
-#: ../src/common/helpers.py:162
+#: ../src/common/helpers.py:169
msgid "Server must be between 1 and 1023 chars"
msgstr "Le nom de serveur doit comprendre entre 1 et 1023 caractères"
-#: ../src/common/helpers.py:167
+#: ../src/common/helpers.py:174
msgid "Invalid character in hostname."
msgstr "Caractère non valide dans le nom d'hôte."
-#: ../src/common/helpers.py:169
+#: ../src/common/helpers.py:176
msgid "Server address required."
msgstr "Adresse du serveur requise."
-#: ../src/common/helpers.py:173
+#: ../src/common/helpers.py:180
msgid "Resource must be between 1 and 1023 chars"
msgstr "La ressource doit comprendre entre 1 et 1023 caractères"
-#: ../src/common/helpers.py:178
+#: ../src/common/helpers.py:185
msgid "Invalid character in resource."
msgstr "Caractère non valide dans la ressource."
-#: ../src/common/helpers.py:218
+#: ../src/common/helpers.py:225
msgid "_Busy"
msgstr "O_ccupé(e)"
-#: ../src/common/helpers.py:220 ../src/tooltips.py:195
+#: ../src/common/helpers.py:227 ../src/tooltips.py:196
msgid "Busy"
msgstr "Occupé(e)"
-#: ../src/common/helpers.py:223
+#: ../src/common/helpers.py:230
msgid "_Not Available"
msgstr "_Non disponible"
-#: ../src/common/helpers.py:225 ../src/tooltips.py:197
+#: ../src/common/helpers.py:232 ../src/tooltips.py:198
msgid "Not Available"
msgstr "Non disponible"
-#: ../src/common/helpers.py:228
+#: ../src/common/helpers.py:235
msgid "_Free for Chat"
msgstr "Dis_ponible pour discuter"
-#: ../src/common/helpers.py:230 ../src/tooltips.py:191
+#: ../src/common/helpers.py:237 ../src/tooltips.py:192
msgid "Free for Chat"
msgstr "Disponible pour discuter"
-#: ../src/common/helpers.py:233
+#: ../src/common/helpers.py:240
msgid "?user status:_Available"
msgstr "?user status:_Disponible"
-#: ../src/common/helpers.py:235 ../src/tooltips.py:189
+#: ../src/common/helpers.py:242 ../src/tooltips.py:190
msgid "?user status:Available"
msgstr "?user status:Disponible"
-#: ../src/common/helpers.py:237
+#: ../src/common/helpers.py:244
msgid "Connecting"
msgstr "Connexion"
-#: ../src/common/helpers.py:240
+#: ../src/common/helpers.py:247
msgid "A_way"
msgstr "_Absent(e)"
-#: ../src/common/helpers.py:245
+#: ../src/common/helpers.py:252
msgid "_Offline"
msgstr "Déc_onnecté(e)"
-#: ../src/common/helpers.py:247 ../src/tooltips.py:199
+#: ../src/common/helpers.py:254 ../src/tooltips.py:200
msgid "Offline"
msgstr "Déconnecté(e)"
-#: ../src/common/helpers.py:250
+#: ../src/common/helpers.py:257
msgid "_Invisible"
msgstr "_Invisible"
-#: ../src/common/helpers.py:252
+#: ../src/common/helpers.py:259
msgid "Invisible"
msgstr "Invisible"
-#: ../src/common/helpers.py:256
+#: ../src/common/helpers.py:263
msgid "?contact has status:Unknown"
msgstr "Inconnu"
-#: ../src/common/helpers.py:258
+#: ../src/common/helpers.py:265
msgid "?contact has status:Has errors"
msgstr "en erreur"
-#: ../src/common/helpers.py:263
+#: ../src/common/helpers.py:270
msgid "?Subscription we already have:None"
msgstr "Aucune"
-#: ../src/common/helpers.py:265
+#: ../src/common/helpers.py:272
msgid "To"
msgstr "À"
-#: ../src/common/helpers.py:267
+#: ../src/common/helpers.py:274
msgid "From"
msgstr "De"
-#: ../src/common/helpers.py:269
+#: ../src/common/helpers.py:276
msgid "Both"
msgstr "Les deux"
-#: ../src/common/helpers.py:277
+#: ../src/common/helpers.py:284
msgid "?Ask (for Subscription):None"
msgstr "Aucune"
-#: ../src/common/helpers.py:279
+#: ../src/common/helpers.py:286
msgid "Subscribe"
msgstr "S'inscrire"
-#: ../src/common/helpers.py:288
+#: ../src/common/helpers.py:295
msgid "?Group Chat Contact Role:None"
msgstr "Aucun"
-#: ../src/common/helpers.py:291
+#: ../src/common/helpers.py:298
msgid "Moderators"
msgstr "Modérateurs"
-#: ../src/common/helpers.py:293
+#: ../src/common/helpers.py:300
msgid "Moderator"
msgstr "Modérateur"
-#: ../src/common/helpers.py:296
+#: ../src/common/helpers.py:303
msgid "Participants"
msgstr "Participants"
-#: ../src/common/helpers.py:298
+#: ../src/common/helpers.py:305
msgid "Participant"
msgstr "Participant"
-#: ../src/common/helpers.py:301
+#: ../src/common/helpers.py:308
msgid "Visitors"
msgstr "Visiteurs"
-#: ../src/common/helpers.py:303
+#: ../src/common/helpers.py:310
msgid "Visitor"
msgstr "Visiteur"
-#: ../src/common/helpers.py:309 ../src/tooltips.py:210
+#: ../src/common/helpers.py:316 ../src/tooltips.py:211
msgid "?Group Chat Contact Affiliation:None"
msgstr "?Group Chat Contact Affiliation:Aucune"
-#: ../src/common/helpers.py:311 ../src/tooltips.py:216
+#: ../src/common/helpers.py:318 ../src/tooltips.py:217
msgid "Owner"
msgstr "Propriétaire"
-#: ../src/common/helpers.py:313 ../src/tooltips.py:214
+#: ../src/common/helpers.py:320 ../src/tooltips.py:215
msgid "Administrator"
msgstr "Administrateur"
-#: ../src/common/helpers.py:315 ../src/tooltips.py:212
+#: ../src/common/helpers.py:322 ../src/tooltips.py:213
msgid "Member"
msgstr "Membre"
-#: ../src/common/helpers.py:354
+#: ../src/common/helpers.py:361
msgid "is paying attention to the conversation"
msgstr "prête attention à la conversation"
-#: ../src/common/helpers.py:356
+#: ../src/common/helpers.py:363
msgid "is doing something else"
msgstr "fait quelque chose d'autre"
-#: ../src/common/helpers.py:358
+#: ../src/common/helpers.py:365
msgid "is composing a message..."
msgstr "écrit un message..."
#. paused means he or she was composing but has stopped for a while
-#: ../src/common/helpers.py:361
+#: ../src/common/helpers.py:368
msgid "paused composing a message"
msgstr "a arrêté d'écrire un message"
-#: ../src/common/helpers.py:363
+#: ../src/common/helpers.py:370
msgid "has closed the chat window or tab"
msgstr "a fermé la fenêtre ou l'onglet de discussion"
#. GiB means gibibyte
-#: ../src/common/helpers.py:628
+#: ../src/common/helpers.py:648
#, python-format
msgid "%s GiB"
msgstr "%s Gio"
#. GB means gigabyte
-#: ../src/common/helpers.py:631
+#: ../src/common/helpers.py:651
#, python-format
msgid "%s GB"
msgstr "%s Go"
#. MiB means mibibyte
-#: ../src/common/helpers.py:635
+#: ../src/common/helpers.py:655
#, python-format
msgid "%s MiB"
msgstr "%s Mio"
#. MB means megabyte
-#: ../src/common/helpers.py:638
+#: ../src/common/helpers.py:658
#, python-format
msgid "%s MB"
msgstr "%s Mo"
#. KiB means kibibyte
-#: ../src/common/helpers.py:642
+#: ../src/common/helpers.py:662
#, python-format
msgid "%s KiB"
msgstr "%s Kio"
#. KB means kilo bytes
-#: ../src/common/helpers.py:645
+#: ../src/common/helpers.py:665
#, python-format
msgid "%s KB"
msgstr "%s Ko"
#. B means bytes
-#: ../src/common/helpers.py:648
+#: ../src/common/helpers.py:668
#, python-format
msgid "%s B"
msgstr "%s o"
-#: ../src/common/helpers.py:1099 ../src/common/helpers.py:1106
+#: ../src/common/helpers.py:1119 ../src/common/helpers.py:1126
#, python-format
msgid "%d message pending"
msgid_plural "%d messages pending"
msgstr[0] "%d message en attente"
msgstr[1] "%d messages en attente"
-#: ../src/common/helpers.py:1112
+#: ../src/common/helpers.py:1132
#, python-format
msgid " from room %s"
msgstr " du salon %s"
-#: ../src/common/helpers.py:1115 ../src/common/helpers.py:1132
+#: ../src/common/helpers.py:1135 ../src/common/helpers.py:1152
#, python-format
msgid " from user %s"
msgstr "de l'utilisateur %s"
-#: ../src/common/helpers.py:1117
+#: ../src/common/helpers.py:1137
#, python-format
msgid " from %s"
msgstr "de %s"
-#: ../src/common/helpers.py:1124 ../src/common/helpers.py:1130
+#: ../src/common/helpers.py:1144 ../src/common/helpers.py:1150
#, python-format
msgid "%d event pending"
msgid_plural "%d events pending"
msgstr[0] "%d évènement en attente"
msgstr[1] "%d événements en attente"
-#: ../src/common/helpers.py:1162
+#: ../src/common/helpers.py:1182
#, python-format
msgid "Gajim - %s"
msgstr "Gajim - %s"
-#: ../src/common/helpers.py:1341
+#: ../src/common/helpers.py:1361
msgid "Hello, I am $name."
msgstr "Bonjour, je m'appelle $name."
-#: ../src/common/jingle_rtp.py:107
+#: ../src/common/helpers.py:1471 ../src/common/helpers.py:1480
+#: ../src/common/helpers.py:1534
+msgid "Timeout loading image"
+msgstr "Délai du chargement de l'image dépassé"
+
+#: ../src/common/helpers.py:1490 ../src/common/helpers.py:1532
+msgid "Image is too big"
+msgstr "L'image est trop grande"
+
+#: ../src/common/helpers.py:1500
+msgid "PyCURL is not installed"
+msgstr "PyCURL n'est pas installé"
+
+#: ../src/common/helpers.py:1536
+msgid "Error loading image"
+msgstr "Erreur lors du chargement de l'image"
+
+#: ../src/common/jingle_rtp.py:109
#, python-format
msgid "%s configuration error"
msgstr "%s erreur de configuration"
-#: ../src/common/jingle_rtp.py:108
+#: ../src/common/jingle_rtp.py:110
#, python-format
msgid ""
"Couldn't setup %s. Check your configuration.\n"
@@ -5535,11 +5939,11 @@ msgstr ""
"L'error était :\n"
"%s"
-#: ../src/common/jingle_rtp.py:205
+#: ../src/common/jingle_rtp.py:208
msgid "GStreamer error"
msgstr "Erreur GStreamer"
-#: ../src/common/jingle_rtp.py:206
+#: ../src/common/jingle_rtp.py:208
#, python-format
msgid ""
"Error: %s\n"
@@ -5548,19 +5952,19 @@ msgstr ""
"Message d'erreur : %s\n"
"Debug : %s"
-#: ../src/common/jingle_rtp.py:335
+#: ../src/common/jingle_rtp.py:338
msgid "audio input"
msgstr "Entrée audio"
-#: ../src/common/jingle_rtp.py:338
+#: ../src/common/jingle_rtp.py:341
msgid "audio output"
msgstr "Sortie audio"
-#: ../src/common/jingle_rtp.py:381
+#: ../src/common/jingle_rtp.py:384
msgid "video input"
msgstr "Entrée vidéo"
-#: ../src/common/jingle_rtp.py:390
+#: ../src/common/jingle_rtp.py:393
msgid "video output"
msgstr "Sortie audio"
@@ -5614,7 +6018,7 @@ msgstr "Pulse : %s"
#: ../src/common/multimedia_helpers.py:77
#: ../src/common/multimedia_helpers.py:105
msgid "Fake audio output"
-msgstr ""
+msgstr "Sortie audio feinte"
#. Test src
#: ../src/common/multimedia_helpers.py:90
@@ -5638,16 +6042,18 @@ msgid "X Window System (without Xv)"
msgstr "X Window System (without Xv)"
#. we talk about a file
-#: ../src/common/optparser.py:53
+#. we talk about file
+#: ../src/common/optparser.py:53 ../src/gtkgui_helpers.py:203
+#: ../src/gtkgui_helpers.py:219
#, python-format
-msgid "error: cannot open %s for reading"
-msgstr "erreur : impossible d'ouvrir %s en lecture"
+msgid "Error: cannot open %s for reading"
+msgstr "Erreur : impossible d'ouvrir %s en lecture"
-#: ../src/common/optparser.py:303 ../src/common/optparser.py:304
+#: ../src/common/optparser.py:305 ../src/common/optparser.py:306
msgid "cyan"
msgstr "cyan"
-#: ../src/common/optparser.py:383
+#: ../src/common/optparser.py:385
msgid "migrating logs database to indices"
msgstr "migration de la base de données de l'historique vers des index"
@@ -6328,11 +6734,11 @@ msgstr ""
"[Ceci fait partie d'une session chiffrée. Si vous voyez ce message, un "
"problème a eu lieu.]"
-#: ../src/common/zeroconf/connection_zeroconf.py:191
+#: ../src/common/zeroconf/connection_zeroconf.py:193
msgid "Avahi error"
msgstr "Erreur d'Avahi"
-#: ../src/common/zeroconf/connection_zeroconf.py:192
+#: ../src/common/zeroconf/connection_zeroconf.py:193
#, python-format
msgid ""
"%s\n"
@@ -6341,43 +6747,45 @@ msgstr ""
"%s\n"
"La messagerie en « link-local » pourrait ne pas fonctionner correctement."
-#: ../src/common/zeroconf/connection_zeroconf.py:204
+#: ../src/common/zeroconf/connection_zeroconf.py:206
msgid "Please check if Avahi or Bonjour is installed."
msgstr "Veuillez vérifier si Avahi ou Bonjour sont installés."
-#: ../src/common/zeroconf/connection_zeroconf.py:214
-#: ../src/common/zeroconf/connection_zeroconf.py:218
+#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:220
msgid "Could not start local service"
msgstr "Impossible de lancer le service local"
-#: ../src/common/zeroconf/connection_zeroconf.py:215
+#: ../src/common/zeroconf/connection_zeroconf.py:217
#, python-format
msgid "Unable to bind to port %d."
msgstr "Impossible de débloquer le port %d."
-#: ../src/common/zeroconf/connection_zeroconf.py:219
-#: ../src/common/zeroconf/connection_zeroconf.py:303
-#: ../src/common/zeroconf/connection_zeroconf.py:316
-#: ../src/common/zeroconf/connection_zeroconf.py:332
+#: ../src/common/zeroconf/connection_zeroconf.py:221
+#: ../src/common/zeroconf/connection_zeroconf.py:305
+#: ../src/common/zeroconf/connection_zeroconf.py:318
+#: ../src/common/zeroconf/connection_zeroconf.py:334
msgid "Please check if avahi-daemon is running."
msgstr "Vérifiez si avahi-daemon est actif."
-#: ../src/common/zeroconf/connection_zeroconf.py:302
-#: ../src/common/zeroconf/connection_zeroconf.py:315
-#: ../src/common/zeroconf/connection_zeroconf.py:331
+#: ../src/common/zeroconf/connection_zeroconf.py:304
+#: ../src/common/zeroconf/connection_zeroconf.py:317
+#: ../src/common/zeroconf/connection_zeroconf.py:333
#, python-format
msgid "Could not change status of account \"%s\""
msgstr "Impossible de changer l'état du compte « %s »"
-#: ../src/common/zeroconf/connection_zeroconf.py:353
+#: ../src/common/zeroconf/connection_zeroconf.py:352
+#: ../src/common/zeroconf/connection_zeroconf.py:392
msgid "Your message could not be sent."
msgstr "Votre message n'a pas pu être envoyé."
-#: ../src/common/zeroconf/connection_zeroconf.py:367
+#: ../src/common/zeroconf/connection_zeroconf.py:366
+#: ../src/common/zeroconf/connection_zeroconf.py:406
msgid "Contact is offline. Your message could not be sent."
msgstr "Le destinataire est déconnecté. Votre message n'a pas pu être envoyé."
-#: ../src/common/zeroconf/connection_zeroconf.py:395
+#: ../src/common/zeroconf/connection_zeroconf.py:433
msgid ""
"Connection to host could not be established: Timeout while sending data."
msgstr ""
@@ -6390,24 +6798,24 @@ msgstr ""
msgid "Error while adding service. %s"
msgstr "Erreur en ajoutant le service. %s"
-#: ../src/config.py:406
+#: ../src/config.py:407
msgid "Default Message"
msgstr "Message par défaut"
-#: ../src/config.py:415
+#: ../src/config.py:416
msgid "Enabled"
msgstr "Activé"
-#: ../src/config.py:468 ../src/config.py:472 ../src/config.py:3105
+#: ../src/config.py:469 ../src/config.py:473 ../src/config.py:3159
msgid "Default"
msgstr "Par défaut"
-#: ../src/config.py:746 ../src/dialogs.py:1493
+#: ../src/config.py:757 ../src/dialogs.py:1493
#, python-format
msgid "Dictionary for lang %s not available"
msgstr "Le dictionnaire pour la langue %s est indisponible"
-#: ../src/config.py:747
+#: ../src/config.py:758
#, python-format
msgid ""
"You have to install %s dictionary to use spellchecking, or choose another "
@@ -6416,215 +6824,215 @@ msgstr ""
"Vous devez installer le dictionnaire %s pour la vérification orthographique, "
"ou choisir un autre langage en paramétrant l'option speller_language."
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message title"
msgstr "titre du message d'état"
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message text"
msgstr "texte du message d'état :"
#. Name column
-#: ../src/config.py:1523 ../src/dialogs.py:2498 ../src/dialogs.py:2565
-#: ../src/dialogs.py:3352 ../src/disco.py:886 ../src/disco.py:1744
-#: ../src/disco.py:2046 ../src/history_window.py:90
+#: ../src/config.py:1566 ../src/dialogs.py:2539 ../src/dialogs.py:2606
+#: ../src/dialogs.py:3398 ../src/disco.py:886 ../src/disco.py:1744
+#: ../src/disco.py:2046 ../src/history_window.py:91
msgid "Name"
msgstr "Nom"
-#: ../src/config.py:1618
+#: ../src/config.py:1661
msgid "Relogin now?"
msgstr "Reconnecter maintenant ?"
-#: ../src/config.py:1619
+#: ../src/config.py:1662
msgid "If you want all the changes to apply instantly, you must relogin."
msgstr ""
"Si vous voulez que vos changements soit appliqués immédiatement, vous devez "
"vous reconnecter."
-#: ../src/config.py:1773 ../src/config.py:1902
+#: ../src/config.py:1816 ../src/config.py:1949
msgid "OpenPGP is not usable on this computer"
msgstr "OpenPGP n'est pas utilisable sur cet ordinateur"
-#: ../src/config.py:1942 ../src/config.py:1989
+#: ../src/config.py:1989 ../src/config.py:2036
msgid "Unread events"
msgstr "Événements non lus"
-#: ../src/config.py:1943
+#: ../src/config.py:1990
msgid "Read all pending events before removing this account."
msgstr "Lisez tous les événements avant de supprimer ce compte."
-#: ../src/config.py:1972
+#: ../src/config.py:2019
#, python-format
msgid "You have opened chat in account %s"
msgstr "Vous avez une conversation ouverte dans le compte %s"
-#: ../src/config.py:1973
+#: ../src/config.py:2020
msgid "All chat and groupchat windows will be closed. Do you want to continue?"
msgstr ""
"Toutes les fenêtres de conversation et de salons de discussion seront "
"fermées. Voulez-vous continuer ?"
-#: ../src/config.py:1985 ../src/config.py:2521 ../src/config.py:2557
+#: ../src/config.py:2032 ../src/config.py:2574 ../src/config.py:2611
msgid "You are currently connected to the server"
msgstr "Vous êtes actuellement connecté au serveur"
-#: ../src/config.py:1986
+#: ../src/config.py:2033
msgid "To change the account name, you must be disconnected."
msgstr "Pour changer le nom du compte, vous devez être déconnecté."
-#: ../src/config.py:1990
+#: ../src/config.py:2037
msgid "To change the account name, you must read all pending events."
msgstr "Pour changer le nom du compte, vous devez lire tous ses événements."
-#: ../src/config.py:1996
+#: ../src/config.py:2043
msgid "Account Name Already Used"
msgstr "Nom de Compte déjà utilisé"
-#: ../src/config.py:1997
+#: ../src/config.py:2044
msgid ""
"This name is already used by another of your accounts. Please choose another "
"name."
msgstr ""
"Ce nom est déjà utilisé par un autre de vos comptes. Choisissez un autre nom."
-#: ../src/config.py:2001 ../src/config.py:2005
+#: ../src/config.py:2048 ../src/config.py:2052
msgid "Invalid account name"
msgstr "Nom de compte invalide"
-#: ../src/config.py:2002
+#: ../src/config.py:2049
msgid "Account name cannot be empty."
msgstr "Le nom du compte ne peut pas être vide."
-#: ../src/config.py:2006
+#: ../src/config.py:2053
msgid "Account name cannot contain spaces."
msgstr "Le nom du compte ne peut pas contenir d'espaces."
-#: ../src/config.py:2083
+#: ../src/config.py:2130
msgid "Rename Account"
msgstr "Renommer le compte"
-#: ../src/config.py:2084
+#: ../src/config.py:2131
#, python-format
msgid "Enter a new name for account %s"
msgstr "Entrez un nouveau nom pour le compte %s"
-#: ../src/config.py:2112
+#: ../src/config.py:2159
msgid "A Jabber ID must be in the form \"user@servername\"."
msgstr "Un Identifiant Jabber doit être de la forme \"user@servername\"."
-#: ../src/config.py:2329 ../src/config.py:3654
+#: ../src/config.py:2382 ../src/config.py:3713
msgid "Invalid entry"
msgstr "Entrée invalide"
-#: ../src/config.py:2330 ../src/config.py:3655
+#: ../src/config.py:2383 ../src/config.py:3714
msgid "Custom port must be a port number."
msgstr "Le port personnalisé doit être un numéro de port"
-#: ../src/config.py:2351
+#: ../src/config.py:2404
msgid "Failed to get secret keys"
msgstr "Erreur en récupérant les clés secrètes"
-#: ../src/config.py:2352
+#: ../src/config.py:2405
msgid "There is no OpenPGP secret key available."
msgstr "Aucune clef OpenPGP disponible."
-#: ../src/config.py:2386
+#: ../src/config.py:2439
msgid "OpenPGP Key Selection"
msgstr "Sélection d'une clé OpenPGP"
-#: ../src/config.py:2387
+#: ../src/config.py:2440
msgid "Choose your OpenPGP key"
msgstr "Choisissez votre clé OpenPGP"
-#: ../src/config.py:2394
+#: ../src/config.py:2447
msgid "No such account available"
msgstr "Compte non disponible"
-#: ../src/config.py:2395
+#: ../src/config.py:2448
msgid "You must create your account before editing your personal information."
msgstr "Vous devez d'abord créer votre compte avant d'éditer vos informations."
-#: ../src/config.py:2402 ../src/dialogs.py:2251 ../src/dialogs.py:2487
-#: ../src/dialogs.py:2675 ../src/disco.py:515 ../src/profile_window.py:361
+#: ../src/config.py:2455 ../src/dialogs.py:2290 ../src/dialogs.py:2528
+#: ../src/dialogs.py:2716 ../src/disco.py:515 ../src/profile_window.py:361
msgid "You are not connected to the server"
msgstr "Vous n'êtes pas connecté au serveur"
-#: ../src/config.py:2403
+#: ../src/config.py:2456
msgid "Without a connection, you can not edit your personal information."
msgstr "Vous devez être connecté pour éditer vos informations."
-#: ../src/config.py:2407
+#: ../src/config.py:2460
msgid "Your server doesn't support Vcard"
msgstr "Votre serveur ne supporte pas les Vcard"
-#: ../src/config.py:2408
+#: ../src/config.py:2461
msgid "Your server can't save your personal information."
msgstr "Votre serveur ne peut enregistrer d'informations personnelles."
-#: ../src/config.py:2522 ../src/config.py:2558
+#: ../src/config.py:2575 ../src/config.py:2612
msgid "To disable the account, you must be disconnected."
msgstr "Afin de désactiver un compte vous devez être déconnecté."
-#: ../src/config.py:2527
+#: ../src/config.py:2581
msgid "Account Local already exists."
msgstr "Ce compte existe déjà localement."
-#: ../src/config.py:2528
+#: ../src/config.py:2582
msgid "Please rename or remove it before enabling link-local messaging."
msgstr ""
"Veuillez le renommer et l'enlever avant d'activer la messagerie link-local."
-#: ../src/config.py:2685
+#: ../src/config.py:2739
#, python-format
msgid "Edit %s"
msgstr "_Éditer %s"
-#: ../src/config.py:2687
+#: ../src/config.py:2741
#, python-format
msgid "Register to %s"
msgstr "S'enregistrer à %s"
#. list at the beginning
-#: ../src/config.py:2723
+#: ../src/config.py:2777
msgid "Ban List"
msgstr "Liste des bannis"
-#: ../src/config.py:2724
+#: ../src/config.py:2778
msgid "Member List"
msgstr "Liste des membres"
-#: ../src/config.py:2724
+#: ../src/config.py:2778
msgid "Owner List"
msgstr "Liste des propriétaires"
-#: ../src/config.py:2725
+#: ../src/config.py:2779
msgid "Administrator List"
msgstr "Liste des administrateurs"
#. Address column
#. holds JID (who said this)
-#: ../src/config.py:2789 ../src/disco.py:893 ../src/history_manager.py:207
+#: ../src/config.py:2843 ../src/disco.py:893 ../src/history_manager.py:207
msgid "JID"
msgstr "Identifiant Jabber"
-#: ../src/config.py:2799
+#: ../src/config.py:2853
msgid "Reason"
msgstr "Raison"
-#: ../src/config.py:2806
+#: ../src/config.py:2860
msgid "Nick"
msgstr "Pseudonyme"
-#: ../src/config.py:2812
+#: ../src/config.py:2866
msgid "Role"
msgstr "Rôle"
-#: ../src/config.py:2839
+#: ../src/config.py:2893
msgid "Banning..."
msgstr "Bannissement de ..."
#. You can move '\n' before user@domain if that line is TOO BIG
-#: ../src/config.py:2841
+#: ../src/config.py:2895
msgid ""
"<b>Whom do you want to ban?</b>\n"
"\n"
@@ -6632,11 +7040,11 @@ msgstr ""
"<b>Qui voulez-vous bannir ?</b>\n"
"\n"
-#: ../src/config.py:2843
+#: ../src/config.py:2897
msgid "Adding Member..."
msgstr "Ajout d'un Membre ..."
-#: ../src/config.py:2844
+#: ../src/config.py:2898
msgid ""
"<b>Whom do you want to make a member?</b>\n"
"\n"
@@ -6644,11 +7052,11 @@ msgstr ""
"<b>De qui voulez-vous faire un membre ?</b>\n"
"\n"
-#: ../src/config.py:2846
+#: ../src/config.py:2900
msgid "Adding Owner..."
msgstr "Ajout d'un Propriétaire ..."
-#: ../src/config.py:2847
+#: ../src/config.py:2901
msgid ""
"<b>Whom do you want to make an owner?</b>\n"
"\n"
@@ -6656,11 +7064,11 @@ msgstr ""
"<b>De qui voulez-vous faire un possesseur ?</b>\n"
"\n"
-#: ../src/config.py:2849
+#: ../src/config.py:2903
msgid "Adding Administrator..."
msgstr "Ajout d'un Administrateur ..."
-#: ../src/config.py:2850
+#: ../src/config.py:2904
msgid ""
"<b>Whom do you want to make an administrator?</b>\n"
"\n"
@@ -6668,7 +7076,7 @@ msgstr ""
"<b>De qui voulez-vous faire un administrateur ?</b>\n"
"\n"
-#: ../src/config.py:2851
+#: ../src/config.py:2905
msgid ""
"Can be one of the following:\n"
"1. user@domain/resource (only that resource matches).\n"
@@ -6685,109 +7093,104 @@ msgstr ""
"pseudo@domaine,\n"
"domaine/ressource, ou les adresses comprenant un sous-domaine)."
-#: ../src/config.py:2952
+#: ../src/config.py:3006
#, python-format
msgid "Removing %s account"
msgstr "Supprimer le compte %s"
-#: ../src/config.py:2967
+#: ../src/config.py:3021
msgid "Account is disabled"
msgstr "Compte désactivé"
-#: ../src/config.py:2968
+#: ../src/config.py:3022
msgid "To unregister from a server, account must be enabled."
msgstr "Pour se désinscrire d'un serveur, le compte doit être activé."
-#: ../src/config.py:2981 ../src/gui_interface.py:269
-#: ../src/gui_interface.py:721
+#: ../src/config.py:3035 ../src/gui_interface.py:283
+#: ../src/gui_interface.py:711
msgid "Password Required"
msgstr "Mot de passe requis"
-#: ../src/config.py:2982 ../src/gui_interface.py:701
+#: ../src/config.py:3036 ../src/gui_interface.py:691
#, python-format
msgid "Enter your password for account %s"
msgstr "Entrez votre mot de passe pour le compte %s"
-#: ../src/config.py:2983 ../src/gui_interface.py:721
+#: ../src/config.py:3037 ../src/gui_interface.py:711
msgid "Save password"
msgstr "Enregistrer le mot de passe"
-#: ../src/config.py:2993
+#: ../src/config.py:3047
#, python-format
msgid "Account \"%s\" is connected to the server"
msgstr "Le compte \"%s\" est connecté au serveur"
-#: ../src/config.py:2994
+#: ../src/config.py:3048
msgid "If you remove it, the connection will be lost."
msgstr "Si vous l'enlevez, la connection sera perdue."
-#: ../src/config.py:3008
+#: ../src/config.py:3062
#, python-format
msgid "Connection to server %s failed"
msgstr "La connexion au serveur %s a échoué"
-#: ../src/config.py:3009
+#: ../src/config.py:3063
msgid "What would you like to do?"
msgstr "Que voulez vous faire ?"
-#: ../src/config.py:3010
+#: ../src/config.py:3064
msgid "Remove only from Gajim"
msgstr "Supprimer le compte de Gajim _uniquement"
-#: ../src/config.py:3011
+#: ../src/config.py:3065
msgid "Don't remove anything. I'll try again later"
msgstr "Ne rien supprimer. Je réessaierai plus tard."
-#: ../src/config.py:3105
+#: ../src/config.py:3159
msgid "?print_status:All"
msgstr "?print_status:Tout"
-#: ../src/config.py:3106
+#: ../src/config.py:3160
msgid "Enter and leave only"
msgstr "Entrées et sorties seulement"
-#: ../src/config.py:3107
+#: ../src/config.py:3161
msgid "?print_status:None"
msgstr "Aucun"
-#: ../src/config.py:3179
+#: ../src/config.py:3233
msgid "New Group Chat"
msgstr "Créer un salon de discussion"
-#: ../src/config.py:3212
+#: ../src/config.py:3266
msgid "This bookmark has invalid data"
msgstr "Ce marque-page contient des données invalides"
-#: ../src/config.py:3213
+#: ../src/config.py:3267
msgid ""
"Please be sure to fill out server and room fields or remove this bookmark."
msgstr ""
"Assurez-vous de remplir les champs serveur et salon ou enlevez ce marque-page"
-#. invalid char
-#: ../src/config.py:3338 ../src/dialogs.py:2040
-msgid "Invalid nickname"
-msgstr "Nom d'utilisateur invalide"
-
-#: ../src/config.py:3339 ../src/config.py:3350 ../src/config.py:3359
-#: ../src/config.py:3370 ../src/config.py:3378
+#: ../src/config.py:3393 ../src/config.py:3404 ../src/config.py:3413
+#: ../src/config.py:3424 ../src/config.py:3432
msgid "Character not allowed"
msgstr "Caractère non-autorisé"
-#: ../src/config.py:3350 ../src/config.py:3358 ../src/config.py:3370
-#: ../src/config.py:3630
+#: ../src/config.py:3404 ../src/config.py:3412 ../src/config.py:3424
+#: ../src/config.py:3689
msgid "Invalid server"
msgstr "Serveur invalide"
-#: ../src/config.py:3377
+#: ../src/config.py:3431
msgid "Invalid room"
msgstr "Salon invalide"
-#: ../src/config.py:3546
+#: ../src/config.py:3601
msgid "Account has been added successfully"
msgstr "Compte ajouté avec succès"
-#: ../src/config.py:3547 ../src/config.py:3553
+#: ../src/config.py:3602 ../src/config.py:3608
msgid ""
"You can set advanced account options by pressing the Advanced button, or "
"later by choosing the Accounts menu item under the Edit menu from the main "
@@ -6797,32 +7200,32 @@ msgstr ""
"Avancé, ou plus tard en cliquant sur Comptes dans le menu Éditer de la "
"fenêtre principale."
-#: ../src/config.py:3552
+#: ../src/config.py:3607
msgid "Your new account has been created successfully"
msgstr "Votre nouveau compte a été créé avec succès"
-#: ../src/config.py:3591
+#: ../src/config.py:3646
msgid "Invalid username"
msgstr "Nom d'utilisateur non valide"
-#: ../src/config.py:3593
+#: ../src/config.py:3648
msgid "You must provide a username to configure this account."
msgstr "Vous devez entrer un nom d'utilisateur pour configurer ce compte."
-#: ../src/config.py:3631
+#: ../src/config.py:3690
msgid "Please provide a server on which you want to register."
msgstr "Saisissez un serveur sur lequel vous voulez vous enregistrer."
-#: ../src/config.py:3687 ../src/gui_interface.py:1199
+#: ../src/config.py:3746 ../src/gui_interface.py:1213
msgid "Certificate Already in File"
msgstr "Certificat déjà dans un Fichier"
-#: ../src/config.py:3688 ../src/gui_interface.py:1200
+#: ../src/config.py:3747 ../src/gui_interface.py:1214
#, python-format
msgid "This certificate is already in file %s, so it's not added again."
msgstr "Ce certificat est déjà dans le fichier %s, il n'a donc pas été ajouté."
-#: ../src/config.py:3765
+#: ../src/config.py:3835
#, python-format
msgid ""
"<b>Security Warning</b>\n"
@@ -6837,7 +7240,7 @@ msgstr ""
"Erreur SSL  %(error)s\n"
"Voulez vous toujours vous connecter au serveur ?"
-#: ../src/config.py:3771 ../src/gui_interface.py:1228
+#: ../src/config.py:3841 ../src/gui_interface.py:1242
#, python-format
msgid ""
"Add this certificate to the list of trusted certificates.\n"
@@ -6848,73 +7251,73 @@ msgstr ""
"Empreinte digitale SHA1 du certificat :\n"
"%s"
-#: ../src/config.py:3803 ../src/config.py:3837
+#: ../src/config.py:3873 ../src/config.py:3907
msgid "An error occurred during account creation"
msgstr "Une erreur est survenue lors de la création du compte"
-#: ../src/config.py:3902
+#: ../src/config.py:3972
msgid "Account name is in use"
msgstr "Le nom du compte est utilisé"
-#: ../src/config.py:3903
+#: ../src/config.py:3973
msgid "You already have an account using this name."
msgstr "Vous avez déjà un compte avec ce nom."
-#: ../src/config.py:4033
+#: ../src/config.py:4103
msgid "PEP node was not removed"
msgstr "Le nœud PEP n'a pas été supprimé"
-#: ../src/config.py:4034
+#: ../src/config.py:4104
#, python-format
msgid "PEP node %(node)s was not removed: %(message)s"
msgstr "Le nœud PEP %(node)s n'a pas été supprimé : %(message)s"
-#: ../src/config.py:4062
+#: ../src/config.py:4132
#, python-format
msgid "Configure %s"
msgstr "Configurer %s"
-#: ../src/config.py:4078 ../src/plugins/gui.py:73
+#: ../src/config.py:4148 ../src/plugins/gui.py:74
msgid "Active"
msgstr "Actif"
-#: ../src/config.py:4086
+#: ../src/config.py:4156
msgid "Event"
msgstr "Événement"
-#: ../src/config.py:4121
+#: ../src/config.py:4191
msgid "First Message Received"
msgstr "Premier message reçu"
-#: ../src/config.py:4122
+#: ../src/config.py:4192
msgid "Next Message Received Focused"
msgstr "Message Reçu Suivant Avec le Focus."
-#: ../src/config.py:4124
+#: ../src/config.py:4194
msgid "Next Message Received Unfocused"
msgstr "Message Reçu Suivant Sans le Focus"
-#: ../src/config.py:4125
+#: ../src/config.py:4195
msgid "Contact Connected"
msgstr "Contact connecté"
-#: ../src/config.py:4126
+#: ../src/config.py:4196
msgid "Contact Disconnected"
msgstr "Contact déconnecté"
-#: ../src/config.py:4127
+#: ../src/config.py:4197
msgid "Message Sent"
msgstr "Message envoyé"
-#: ../src/config.py:4128
+#: ../src/config.py:4198
msgid "Group Chat Message Highlight"
msgstr "Message d'un salon mis en surbrillance"
-#: ../src/config.py:4129
+#: ../src/config.py:4199
msgid "Group Chat Message Received"
msgstr "Message reçu dans un salon"
-#: ../src/config.py:4130
+#: ../src/config.py:4200
msgid "GMail Email Received"
msgstr "Courriel Gmail reçu"
@@ -6974,15 +7377,15 @@ msgid "Open as _Link"
msgstr "Ouvrir en tant que _lien"
#. %i is day in year (1-365)
-#: ../src/conversation_textview.py:1309
+#: ../src/conversation_textview.py:1323
#, python-format
msgid "Yesterday"
msgid_plural "%(nb_days)i days ago"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Hier"
+msgstr[1] "il y a %(nb_days)i jours"
#. if we have subject, show it too!
-#: ../src/conversation_textview.py:1358 ../src/history_window.py:480
+#: ../src/conversation_textview.py:1372 ../src/history_window.py:481
#, python-format
msgid "Subject: %s\n"
msgstr "Sujet : %s\n"
@@ -7106,7 +7509,7 @@ msgid "Please fill in the data of the contact you want to add"
msgstr "Remplissez les informations sur le contact à ajouter"
#: ../src/dialogs.py:1074 ../src/dialogs.py:1080 ../src/dialogs.py:1085
-#: ../src/dialogs.py:3585
+#: ../src/dialogs.py:3631
msgid "Invalid User ID"
msgstr "Identifiant utilisateur non valide"
@@ -7131,8 +7534,8 @@ msgid "User ID:"
msgstr "Identifiant :"
#: ../src/dialogs.py:1273
-msgid "A GTK+ jabber client"
-msgstr "Un client Jabber en GTK+"
+msgid "A GTK+ Jabber/XMPP client"
+msgstr "Un client Jabber/XMPP en GTK+"
#: ../src/dialogs.py:1274
msgid "GTK+ Version:"
@@ -7181,114 +7584,114 @@ msgstr ""
"\n"
"Le soulignement des fautes d'orthographe ne sera pas utilisé"
-#: ../src/dialogs.py:1842
+#: ../src/dialogs.py:1877
msgid "_Resume"
msgstr "Reprendre"
-#: ../src/dialogs.py:1850
+#: ../src/dialogs.py:1885
msgid "Re_place"
msgstr "Remplacer"
-#: ../src/dialogs.py:2041 ../src/dialogs.py:2440
+#: ../src/dialogs.py:2079 ../src/dialogs.py:2480
msgid "The nickname has not allowed characters."
msgstr "Le pseudonyme contient des caractères non autorisés."
-#: ../src/dialogs.py:2159
+#: ../src/dialogs.py:2198
#, python-format
msgid "Subscription request for account %(account)s from %(jid)s"
msgstr "Requête d'inscription pour le compte %(account)s de la part de %(jid)s"
-#: ../src/dialogs.py:2162
+#: ../src/dialogs.py:2201
#, python-format
msgid "Subscription request from %s"
msgstr "Requête d'inscription de la part de %s"
-#: ../src/dialogs.py:2246 ../src/gui_interface.py:1948
+#: ../src/dialogs.py:2285 ../src/gui_interface.py:1970
#, python-format
msgid "You are already in group chat %s"
msgstr "Vous êtes déjà dans le salon %s"
-#: ../src/dialogs.py:2252
+#: ../src/dialogs.py:2291
msgid "You can not join a group chat unless you are connected."
msgstr ""
"Vous ne pouvez joindre un salon de discussion tant que vous n'êtes pas "
"connecté."
-#: ../src/dialogs.py:2296
+#: ../src/dialogs.py:2335
#, python-format
msgid "Join Group Chat with account %s"
msgstr "Rejoindre un salon de discussion en tant que %s"
-#: ../src/dialogs.py:2427
+#: ../src/dialogs.py:2466
msgid "Invalid Account"
msgstr "Compte invalide"
-#: ../src/dialogs.py:2428
+#: ../src/dialogs.py:2467
msgid ""
"You have to choose an account from which you want to join the groupchat."
msgstr ""
"Vous devez choisir un compte depuis lequel vous souhaitez rejoindre le salon "
"de discussion."
-#: ../src/dialogs.py:2439
+#: ../src/dialogs.py:2479
msgid "Invalid Nickname"
msgstr "Nom d'utilisateur invalide"
-#: ../src/dialogs.py:2444 ../src/dialogs.py:2450
-#: ../src/groupchat_control.py:2087
+#: ../src/dialogs.py:2484 ../src/dialogs.py:2490
+#: ../src/groupchat_control.py:2091
msgid "Invalid group chat Jabber ID"
msgstr "Identifiant Jabber de salon invalide"
-#: ../src/dialogs.py:2445
+#: ../src/dialogs.py:2485
msgid "Please enter the group chat Jabber ID as room@server."
msgstr "Veuillez entrer l'identifiant Jabber du salon, comme salon@serveur"
-#: ../src/dialogs.py:2451 ../src/groupchat_control.py:2088
+#: ../src/dialogs.py:2491 ../src/groupchat_control.py:2092
msgid "The group chat Jabber ID has not allowed characters."
msgstr ""
"L'identifiant jabber du salon de discussion contient des caractères "
"interdits."
-#: ../src/dialogs.py:2455 ../src/gui_interface.py:1930
+#: ../src/dialogs.py:2496 ../src/gui_interface.py:1952
msgid "This is not a group chat"
msgstr "Ceci n'est pas une conversation multi-utilisateurs"
-#: ../src/dialogs.py:2456 ../src/gui_interface.py:1931
+#: ../src/dialogs.py:2497 ../src/gui_interface.py:1953
#, python-format
msgid "%s is not the name of a group chat."
msgstr "%s n'est pas un nom de salon de discussion valide"
-#: ../src/dialogs.py:2488
+#: ../src/dialogs.py:2529
msgid "Without a connection, you can not synchronise your contacts."
msgstr "Sans connexion, vous ne pouvez pas synchroniser vos contacts."
-#: ../src/dialogs.py:2501
+#: ../src/dialogs.py:2542
msgid "Server"
msgstr "Serveur"
-#: ../src/dialogs.py:2537
+#: ../src/dialogs.py:2578
msgid "This account is not connected to the server"
msgstr "Ce compte est connecté au serveur"
-#: ../src/dialogs.py:2538
+#: ../src/dialogs.py:2579
msgid "You cannot synchronize with an account unless it is connected."
msgstr ""
"Vous ne pouvez pas vous synchroniser avec un compte sauf s'il est connecté."
-#: ../src/dialogs.py:2563
+#: ../src/dialogs.py:2604
msgid "Synchronise"
msgstr "Synchroniser"
-#: ../src/dialogs.py:2624
+#: ../src/dialogs.py:2665
#, python-format
msgid "Start Chat with account %s"
msgstr "Commencer une discussion avec le compte %s"
-#: ../src/dialogs.py:2626
+#: ../src/dialogs.py:2667
msgid "Start Chat"
msgstr "Commencer une discussion"
-#: ../src/dialogs.py:2627
+#: ../src/dialogs.py:2668
msgid ""
"Fill in the nickname or the Jabber ID of the contact you would like\n"
"to send a chat message to:"
@@ -7297,150 +7700,137 @@ msgstr ""
"envoyer un message :"
#. if offline or connecting
-#: ../src/dialogs.py:2654 ../src/dialogs.py:3035 ../src/dialogs.py:3265
+#: ../src/dialogs.py:2695 ../src/dialogs.py:3076 ../src/dialogs.py:3311
msgid "Connection not available"
msgstr "Connexion non disponible"
-#: ../src/dialogs.py:2655 ../src/dialogs.py:3036 ../src/dialogs.py:3266
+#: ../src/dialogs.py:2696 ../src/dialogs.py:3077 ../src/dialogs.py:3312
#, python-format
msgid "Please make sure you are connected with \"%s\"."
msgstr "Vérifiez que vous êtes connecté avec \"%s\"."
-#: ../src/dialogs.py:2664 ../src/dialogs.py:2667
+#: ../src/dialogs.py:2705 ../src/dialogs.py:2708
msgid "Invalid JID"
msgstr "Identifiant Jabber invalide"
-#: ../src/dialogs.py:2667
+#: ../src/dialogs.py:2708
#, python-format
msgid "Unable to parse \"%s\"."
msgstr "Impossible d'interpréter \"%s\"."
-#: ../src/dialogs.py:2676
+#: ../src/dialogs.py:2717
msgid "Without a connection, you can not change your password."
msgstr "Vous devez être connecté pour changer votre mot de passe."
-#: ../src/dialogs.py:2695
+#: ../src/dialogs.py:2736
msgid "Invalid password"
msgstr "Mot de passe invalide"
-#: ../src/dialogs.py:2695
+#: ../src/dialogs.py:2736
msgid "You must enter a password."
msgstr "Vous devez entrer un mot de passe."
-#: ../src/dialogs.py:2699
+#: ../src/dialogs.py:2740
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"
-#: ../src/dialogs.py:2700
+#: ../src/dialogs.py:2741
msgid "The passwords typed in both fields must be identical."
msgstr "Les mots de passe tapés dans chaque champs doivent être identiques."
-#. default value
-#: ../src/dialogs.py:2737 ../src/notify.py:182 ../src/notify.py:419
-msgid "Contact Signed In"
-msgstr "Contact connecté"
-
-#: ../src/dialogs.py:2739 ../src/notify.py:190 ../src/notify.py:421
-msgid "Contact Signed Out"
-msgstr "Contact déconnecté"
-
-#: ../src/dialogs.py:2742 ../src/gui_interface.py:838 ../src/notify.py:433
+#: ../src/dialogs.py:2783 ../src/gui_interface.py:852 ../src/notify.py:273
msgid "New E-mail"
msgstr "Nouveau courrier électronique"
-#: ../src/dialogs.py:2744 ../src/gui_interface.py:893 ../src/notify.py:426
+#: ../src/dialogs.py:2785 ../src/gui_interface.py:907 ../src/notify.py:266
msgid "File Transfer Request"
msgstr "Requête de transfert de fichier"
-#: ../src/dialogs.py:2746 ../src/gui_interface.py:800
-#: ../src/gui_interface.py:864 ../src/notify.py:428
+#: ../src/dialogs.py:2787 ../src/gui_interface.py:814
+#: ../src/gui_interface.py:878 ../src/notify.py:268
msgid "File Transfer Error"
msgstr "Erreur de Transfert de fichier"
-#: ../src/dialogs.py:2748 ../src/gui_interface.py:939
-#: ../src/gui_interface.py:962 ../src/gui_interface.py:979
-#: ../src/notify.py:430
+#: ../src/dialogs.py:2789 ../src/gui_interface.py:953
+#: ../src/gui_interface.py:976 ../src/gui_interface.py:993
+#: ../src/notify.py:270
msgid "File Transfer Completed"
msgstr "Transfert de fichier terminé"
-#: ../src/dialogs.py:2749 ../src/gui_interface.py:942 ../src/notify.py:431
+#: ../src/dialogs.py:2790 ../src/gui_interface.py:956 ../src/notify.py:271
msgid "File Transfer Stopped"
msgstr "Transfert de fichier interrompu"
-#: ../src/dialogs.py:2751 ../src/gui_interface.py:647 ../src/notify.py:435
+#: ../src/dialogs.py:2792 ../src/gui_interface.py:624 ../src/notify.py:275
msgid "Groupchat Invitation"
msgstr "Invitation à un salon"
-#: ../src/dialogs.py:2753 ../src/notify.py:174 ../src/notify.py:437
-msgid "Contact Changed Status"
-msgstr "Le contact a changé d'état"
-
-#: ../src/dialogs.py:2954
+#: ../src/dialogs.py:2995
#, python-format
msgid "Single Message using account %s"
msgstr "Message simple en tant que %s"
-#: ../src/dialogs.py:2956
+#: ../src/dialogs.py:2997
#, python-format
msgid "Single Message in account %s"
msgstr "Message simple dans le compte %s"
-#: ../src/dialogs.py:2958
+#: ../src/dialogs.py:2999
msgid "Single Message"
msgstr "Message simple"
#. prepare UI for Sending
-#: ../src/dialogs.py:2961
+#: ../src/dialogs.py:3002
#, python-format
msgid "Send %s"
msgstr "Envoyer %s"
#. prepare UI for Receiving
-#: ../src/dialogs.py:2984
+#: ../src/dialogs.py:3025
#, python-format
msgid "Received %s"
msgstr "%s Reçu"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3007
+#: ../src/dialogs.py:3048
#, python-format
msgid "Form %s"
msgstr "De %s"
#. we create a new blank window to send and we preset RE: and to jid
-#: ../src/dialogs.py:3086
+#: ../src/dialogs.py:3132
#, python-format
msgid "RE: %s"
msgstr "RE: %s"
-#: ../src/dialogs.py:3087
+#: ../src/dialogs.py:3133
#, python-format
msgid "%s wrote:\n"
msgstr "%s a écrit :\n"
-#: ../src/dialogs.py:3146
+#: ../src/dialogs.py:3192
#, python-format
msgid "XML Console for %s"
msgstr "Console XML pour %s"
-#: ../src/dialogs.py:3148
+#: ../src/dialogs.py:3194
msgid "XML Console"
msgstr "Console XML"
#. Action that can be done with an incoming list of contacts
-#: ../src/dialogs.py:3295
+#: ../src/dialogs.py:3341
msgid "add"
msgstr "Ajouter"
-#: ../src/dialogs.py:3295
+#: ../src/dialogs.py:3341
msgid "modify"
msgstr "Modifier"
-#: ../src/dialogs.py:3296
+#: ../src/dialogs.py:3342
msgid "remove"
msgstr "Supprimer"
-#: ../src/dialogs.py:3325
+#: ../src/dialogs.py:3371
#, python-format
msgid ""
"<b>%(jid)s</b> would like you to <b>%(action)s</b> some contacts in your "
@@ -7450,184 +7840,172 @@ msgstr ""
"votre liste."
#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3341 ../src/dialogs.py:3387
-msgid "Add"
-msgstr "Ajouter"
-
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3343 ../src/dialogs.py:3418
+#: ../src/dialogs.py:3389 ../src/dialogs.py:3464
msgid "Modify"
msgstr "Modifier"
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3345 ../src/dialogs.py:3442
-msgid "Delete"
-msgstr "Supprimer"
-
-#: ../src/dialogs.py:3349
+#: ../src/dialogs.py:3395
msgid "Jabber ID"
msgstr "Identifiant Jabber"
-#: ../src/dialogs.py:3355
+#: ../src/dialogs.py:3401
msgid "Groups"
msgstr "Groupes"
#. it is selected
#. remote_jid = model[iter_][1].decode('utf-8')
-#: ../src/dialogs.py:3463
+#: ../src/dialogs.py:3509
#, python-format
msgid "%s suggested me to add you in my roster."
msgstr "%s m'a conseillé de vous ajouter à mes contacts."
-#: ../src/dialogs.py:3477
+#: ../src/dialogs.py:3523
#, python-format
msgid "Added %s contacts"
msgstr "%s contacts ajoutés"
-#: ../src/dialogs.py:3514
+#: ../src/dialogs.py:3560
#, python-format
msgid "Removed %s contacts"
msgstr "Enlever %s contacts"
-#: ../src/dialogs.py:3554 ../src/dialogs.py:3731
+#: ../src/dialogs.py:3600 ../src/dialogs.py:3777
#, python-format
msgid "Archiving Preferences for %s"
msgstr "Sauvegarde des préférences pour %s"
-#: ../src/dialogs.py:3594
+#: ../src/dialogs.py:3640
msgid "Invalid expire value"
-msgstr ""
+msgstr "Valeur d'expiration non valide"
-#: ../src/dialogs.py:3595
+#: ../src/dialogs.py:3641
msgid "Expire must be a valid positive integer."
-msgstr ""
+msgstr "La valeur d'expiration doit être un nombre positif."
-#: ../src/dialogs.py:3642
+#: ../src/dialogs.py:3688
msgid "There is an error with the form"
-msgstr ""
+msgstr "Il y a une erreur dans le formulaire"
-#: ../src/dialogs.py:3862
+#: ../src/dialogs.py:3908
msgid "There is an error"
msgstr "Le service a renvoyé une erreur."
-#: ../src/dialogs.py:3930
+#: ../src/dialogs.py:3976
#, python-format
msgid "Privacy List <b><i>%s</i></b>"
msgstr "Liste privée <b><i>%s</i></b>"
-#: ../src/dialogs.py:3934
+#: ../src/dialogs.py:3980
#, python-format
msgid "Privacy List for %s"
msgstr "Liste privée pour %s"
-#: ../src/dialogs.py:4001
+#: ../src/dialogs.py:4047
#, python-format
msgid "Order: %(order)s, action: %(action)s, type: %(type)s, value: %(value)s"
msgstr ""
"Ordre : %(order)s, action : %(action)s, type : %(type)s, valeur : %(value)s"
-#: ../src/dialogs.py:4006
+#: ../src/dialogs.py:4052
#, python-format
msgid "Order: %(order)s, action: %(action)s"
msgstr "Ordre : %(order)s, action: %(action)s"
-#: ../src/dialogs.py:4057
+#: ../src/dialogs.py:4103
msgid "<b>Edit a rule</b>"
msgstr "<b>Modifier une règle</b>"
-#: ../src/dialogs.py:4168
+#: ../src/dialogs.py:4214
msgid "<b>Add a rule</b>"
msgstr "<b>Ajouter une règle</b>"
-#: ../src/dialogs.py:4267
+#: ../src/dialogs.py:4313
#, python-format
msgid "Privacy Lists for %s"
msgstr "Listes privées pour %s"
-#: ../src/dialogs.py:4269
+#: ../src/dialogs.py:4315
msgid "Privacy Lists"
msgstr "Listes privées"
-#: ../src/dialogs.py:4358
+#: ../src/dialogs.py:4404
msgid "Invalid List Name"
msgstr "Nom de liste invalide"
-#: ../src/dialogs.py:4359
+#: ../src/dialogs.py:4405
msgid "You must enter a name to create a privacy list."
msgstr "Vous devez entrer un nom pour créer une liste privée."
-#: ../src/dialogs.py:4391
+#: ../src/dialogs.py:4437
msgid "You are invited to a groupchat"
msgstr "Vous êtes invité(e) dans un groupe de discussion"
-#: ../src/dialogs.py:4394
+#: ../src/dialogs.py:4440
msgid "$Contact has invited you to join a discussion"
msgstr "$Contact vous a invité dans un salon de discussion"
-#: ../src/dialogs.py:4396
+#: ../src/dialogs.py:4442
#, python-format
msgid "$Contact has invited you to group chat %(room_jid)s"
msgstr "$Contact vous a invité dans le salon de discussion %(room_jid)s"
-#: ../src/dialogs.py:4404
+#: ../src/dialogs.py:4450
#, python-format
msgid "Comment: %s"
msgstr "Commentaire : %s"
-#: ../src/dialogs.py:4406
+#: ../src/dialogs.py:4452
msgid "Do you want to accept the invitation?"
msgstr "Voulez-vous accepter l'invitation ?"
-#: ../src/dialogs.py:4468
+#: ../src/dialogs.py:4514
msgid "Choose Client Cert #PCKS12"
-msgstr ""
+msgstr "Choisissez le certificat client #PCKS12"
-#: ../src/dialogs.py:4478 ../src/dialogs.py:4520 ../src/dialogs.py:4576
-#: ../src/dialogs.py:4664
+#: ../src/dialogs.py:4524 ../src/dialogs.py:4566 ../src/dialogs.py:4622
+#: ../src/dialogs.py:4710
msgid "All files"
msgstr "Tous les fichiers"
-#: ../src/dialogs.py:4483
+#: ../src/dialogs.py:4529
msgid "PKCS12 Files"
msgstr "Fichier PKCS12"
-#: ../src/dialogs.py:4510
+#: ../src/dialogs.py:4556
msgid "Choose Sound"
msgstr "Choisissez un son"
-#: ../src/dialogs.py:4525
+#: ../src/dialogs.py:4571
msgid "Wav Sounds"
msgstr "Sons wav"
-#: ../src/dialogs.py:4563
+#: ../src/dialogs.py:4609
msgid "Choose Image"
msgstr "Choisissez une Image"
-#: ../src/dialogs.py:4581
+#: ../src/dialogs.py:4627
msgid "Images"
msgstr "Images"
-#: ../src/dialogs.py:4651
-#, fuzzy
+#: ../src/dialogs.py:4697
msgid "Choose Archive"
-msgstr "Choisissez une Image"
+msgstr "Choisissez une Archive"
-#: ../src/dialogs.py:4669
-#, fuzzy
+#: ../src/dialogs.py:4715
msgid "Zip files"
-msgstr "Tous les fichiers"
+msgstr "fichiers Zip"
-#: ../src/dialogs.py:4695
+#: ../src/dialogs.py:4741
#, python-format
msgid "When %s becomes:"
msgstr "Quand %s devient :"
-#: ../src/dialogs.py:4697
+#: ../src/dialogs.py:4743
#, python-format
msgid "Adding Special Notification for %s"
msgstr "Ajout de notifications spéciales pour %s"
-#: ../src/dialogs.py:4917
+#: ../src/dialogs.py:4963
#, python-format
msgid ""
"Your chat session with <b>%(jid)s</b> is encrypted.\n"
@@ -7638,19 +8016,19 @@ msgstr ""
"\n"
"La Short Authentication String cette session est <b>%(sas)s</b>."
-#: ../src/dialogs.py:4920
+#: ../src/dialogs.py:4966
msgid "You have already verified this contact's identity."
msgstr "Vous avez déjà vérifié l'identité de ce contact."
-#: ../src/dialogs.py:4926 ../src/dialogs.py:5010
+#: ../src/dialogs.py:4972 ../src/dialogs.py:5056
msgid "Contact's identity verified"
msgstr "Identité du contact vérifiée"
-#: ../src/dialogs.py:4932
+#: ../src/dialogs.py:4978
msgid "Verify again..."
msgstr "Vérifier à nouveau..."
-#: ../src/dialogs.py:4937
+#: ../src/dialogs.py:4983
msgid ""
"To be certain that <b>only</b> the expected person can read your messages or "
"send you messages, you need to verify their identity by clicking the button "
@@ -7660,19 +8038,19 @@ msgstr ""
"messages et vous en envoyer, vous devez vérifier son identité en cliquant "
"sur le bouton en-dessous."
-#: ../src/dialogs.py:4940 ../src/dialogs.py:4991 ../src/dialogs.py:5004
+#: ../src/dialogs.py:4986 ../src/dialogs.py:5037 ../src/dialogs.py:5050
msgid "Contact's identity NOT verified"
msgstr "Identité du contact NON vérifiée"
-#: ../src/dialogs.py:4945
+#: ../src/dialogs.py:4991
msgid "Verify..."
msgstr "Vérifier..."
-#: ../src/dialogs.py:4956
+#: ../src/dialogs.py:5002
msgid "Have you verified the contact's identity?"
msgstr "Avez-vous vérifié l'identité du contact ?"
-#: ../src/dialogs.py:4957
+#: ../src/dialogs.py:5003
#, python-format
msgid ""
"To prevent talking to an unknown person, you should speak to <b>%(jid)s</b> "
@@ -7687,24 +8065,24 @@ msgstr ""
"\n"
"La Short Authentication String de cette session est : <b>%(sas)s</b>."
-#: ../src/dialogs.py:4958
+#: ../src/dialogs.py:5004
msgid "Did you talk to the remote contact and verify the SAS?"
msgstr "Avec vous parlé au contact et vérifié la SAS ?"
-#: ../src/dialogs.py:4992
+#: ../src/dialogs.py:5038
#, python-format
msgid "The contact's key (%s) <b>does not match</b> the key assigned in Gajim."
msgstr ""
"La clef du contact (%s) <b>ne correspond pas</b> à la clef assignée dans "
"Gajim."
-#: ../src/dialogs.py:4998
+#: ../src/dialogs.py:5044
msgid "No GPG key is assigned to this contact. So you cannot encrypt messages."
msgstr ""
"Aucune clef GPG n'est assignée à ce contact. Vous ne pouvez donc pas "
"chiffrer les messages."
-#: ../src/dialogs.py:5005
+#: ../src/dialogs.py:5051
msgid ""
"GPG key is assigned to this contact, but <b>you do not trust his key</b>, so "
"message <b>cannot</b> be encrypted. Use your GPG client to trust this key."
@@ -7713,7 +8091,7 @@ msgstr ""
"sa clef</b>, les messages <b>ne peuvent</b> donc <b>pas</b> être chiffrés. "
"Utilisez votre client GPG pour avoir confiance en cette clef."
-#: ../src/dialogs.py:5011
+#: ../src/dialogs.py:5057
msgid ""
"GPG Key is assigned to this contact, and you trust his key, so messages will "
"be encrypted."
@@ -7721,19 +8099,19 @@ msgstr ""
"Une clef GPG est assignée à ce contact, et vous avez confiance en sa clef, "
"les messages seront donc chiffrés."
-#: ../src/dialogs.py:5076
+#: ../src/dialogs.py:5122
msgid "an audio and video"
msgstr "audio et vidéo"
-#: ../src/dialogs.py:5078
+#: ../src/dialogs.py:5124
msgid "an audio"
msgstr "audio"
-#: ../src/dialogs.py:5080
+#: ../src/dialogs.py:5126
msgid "a video"
msgstr "vidéo"
-#: ../src/dialogs.py:5084
+#: ../src/dialogs.py:5130
#, python-format
msgid ""
"%(contact)s wants to start %(type)s session with you. Do you want to answer "
@@ -7742,12 +8120,12 @@ msgstr ""
"%(contact)s veut démarrer un session %(type)s avec vous. Voulez-vous "
"répondre à son appel ?"
-#: ../src/dialogs.py:5152
+#: ../src/dialogs.py:5199
#, python-format
msgid "Certificate for account %s"
msgstr "Certificat pour le compte %s"
-#: ../src/dialogs.py:5152
+#: ../src/dialogs.py:5199
#, python-format
msgid ""
"<b>Issued to:</b>\n"
@@ -7768,8 +8146,25 @@ msgid ""
"<b>Fingerprint</b>\n"
"SHA1 Fingerprint: %(sha1)s"
msgstr ""
+"<b>Délivré à :</b>\n"
+"Nom commun (CN) : %(scn)s\n"
+"Organisation (O) : %(sorg)s\n"
+"Unité de l'organisation (OU) : %(sou)s\n"
+"Numéro de série : %(sn)s\n"
+"\n"
+"<b>Délivré par :</b>\n"
+"Nom commun (CN) : %(icn)s\n"
+"Organisation (O) : %(iorg)s\n"
+"Unité de l'organisation (OU): %(iou)s\n"
+"\n"
+"<b>Validité :</b>\n"
+"Délivré le : %(io)s\n"
+"Éxpire le : %(eo)s\n"
+"\n"
+"<b>Empreinte</b>\n"
+"Empreinte SHA1 : %(sha1)s"
-#: ../src/dialogs.py:5186 ../src/dialogs.py:5203
+#: ../src/dialogs.py:5233 ../src/dialogs.py:5250
msgid "View cert..."
msgstr "Voir cert..."
@@ -7861,20 +8256,20 @@ msgstr "Description"
msgid "Id"
msgstr "Id"
-#: ../src/disco.py:1835 ../src/gui_interface.py:2466
+#: ../src/disco.py:1835 ../src/gui_interface.py:2488
msgid "Bookmark already set"
msgstr "Marque-page déjà spécifié"
-#: ../src/disco.py:1836 ../src/gui_interface.py:2467
+#: ../src/disco.py:1836 ../src/gui_interface.py:2489
#, python-format
msgid "Group Chat \"%s\" is already in your bookmarks."
msgstr "Le salon \"%s\" est déjà dans vos marque-pages."
-#: ../src/disco.py:1845 ../src/gui_interface.py:2481
+#: ../src/disco.py:1845 ../src/gui_interface.py:2503
msgid "Bookmark has been added successfully"
msgstr "Marque-page ajouté avec succès"
-#: ../src/disco.py:1846 ../src/gui_interface.py:2482
+#: ../src/disco.py:1846 ../src/gui_interface.py:2504
msgid "You can manage your bookmarks via Actions menu in your roster."
msgstr ""
"Vous pouvez gérer vos marque-pages par le menu Actions de votre liste de "
@@ -7912,8 +8307,8 @@ msgstr ""
"d'assurer une connexion sécurisée."
#: ../src/features_window.py:52 ../src/features_window.py:53
-msgid "Requires python-pyopenssl."
-msgstr "Nécessite python-pyopenssl."
+msgid "Requires python-pyopenssl > 0.12 and pyasn1."
+msgstr "Nécessite python-pyopenssl > 0.12 et pyasn1."
#: ../src/features_window.py:54
msgid "Bonjour / Zeroconf"
@@ -7930,8 +8325,12 @@ msgid "Requires python-avahi."
msgstr "Nécessite python-avahi"
#: ../src/features_window.py:57
-msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
-msgstr "Nécessite pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+msgid ""
+"Requires pybonjour and bonjour SDK running (http://developer.apple.com/"
+"opensource/)."
+msgstr ""
+"Nécessite pybonjour et le SDK de bonjour lancé (http://developer.apple.com/"
+"opensource/)."
#: ../src/features_window.py:58
msgid "Command line"
@@ -7947,8 +8346,8 @@ msgstr "Nécessite python-dbus."
#: ../src/features_window.py:61 ../src/features_window.py:69
#: ../src/features_window.py:73 ../src/features_window.py:77
-#: ../src/features_window.py:85 ../src/features_window.py:89
-#: ../src/features_window.py:109
+#: ../src/features_window.py:89 ../src/features_window.py:109
+#: ../src/features_window.py:113 ../src/features_window.py:117
msgid "Feature not available under Windows."
msgstr "Fonctionnalité indisponible sous Windows."
@@ -7963,6 +8362,7 @@ msgstr "Chiffrement des messages avec des clefs GPG."
#: ../src/features_window.py:64
msgid "Requires gpg and python-gnupg (http://code.google.com/p/python-gnupg/)."
msgstr ""
+"Nécessite gpg et python-gnupg (http://code.google.com/p/python-gnupg/)."
#: ../src/features_window.py:65
msgid "Requires gpg.exe in PATH."
@@ -8037,6 +8437,10 @@ msgstr "Vérification ortohgraphique des messages composés."
msgid "Requires libgtkspell."
msgstr "Nécessite libgtkspell"
+#: ../src/features_window.py:85
+msgid "Requires libgtkspell and libenchant."
+msgstr "Nécessite libgtkspell et libenchant."
+
#: ../src/features_window.py:86
msgid "Notification"
msgstr "Notification"
@@ -8132,11 +8536,39 @@ msgstr "Possibilité de démarrer une conversation audio et vidéo."
msgid "Requires python-farsight and gstreamer-plugins-bad."
msgstr "Nécessite python-farsight et gstreamer-plugins-bad."
+#: ../src/features_window.py:110
+msgid "UPnP-IGD"
+msgstr "UPnP-IGD"
+
+#: ../src/features_window.py:111
+msgid "Ability to request your router to forward port for file transfer."
+msgstr ""
+"Possibilité de demander à votre routeur de transférer le port pour le "
+"transfert de fichiers."
+
+#: ../src/features_window.py:112
+msgid "Requires python-gupnp-igd."
+msgstr "Nécessite python-gupnp-igd."
+
+#: ../src/features_window.py:114
+msgid "UPower"
+msgstr "UPower"
+
+#: ../src/features_window.py:115
+msgid "Ability to disconnect properly just before suspending the machine."
+msgstr ""
+"Possibilité de se déconnecter proprement juste avant de mettre votre machine "
+"en veille."
+
#: ../src/features_window.py:116
+msgid "Requires upower and python-dbus."
+msgstr "Nécessite upower et python-dbus."
+
+#: ../src/features_window.py:124
msgid "?features:Available"
msgstr "?features:Disponible"
-#: ../src/features_window.py:123
+#: ../src/features_window.py:131
msgid "Feature"
msgstr "Fonctionnalité"
@@ -8152,106 +8584,70 @@ msgstr "Durée"
msgid "Progress"
msgstr "Progression"
-#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:234
+#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:235
#, python-format
msgid "Filename: %s"
msgstr "Nom du Fichier : %s"
-#: ../src/filetransfers_window.py:179 ../src/filetransfers_window.py:333
+#: ../src/filetransfers_window.py:180 ../src/filetransfers_window.py:400
#, python-format
msgid "Size: %s"
msgstr "Taille : %s"
#. You is a reply of who sent a file
#. You is a reply of who received a file
-#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:198
+#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:199
#: ../src/history_manager.py:541
msgid "You"
msgstr "Vous"
-#: ../src/filetransfers_window.py:189
+#: ../src/filetransfers_window.py:190
#, python-format
msgid "Sender: %s"
msgstr "Expéditeur : %s"
-#: ../src/filetransfers_window.py:190 ../src/filetransfers_window.py:627
-#: ../src/tooltips.py:742
+#: ../src/filetransfers_window.py:191 ../src/filetransfers_window.py:637
+#: ../src/tooltips.py:748
msgid "Recipient: "
msgstr "Destinataire : "
-#: ../src/filetransfers_window.py:201
+#: ../src/filetransfers_window.py:202
#, python-format
msgid "Saved in: %s"
msgstr "Enregistré dans : %s"
-#: ../src/filetransfers_window.py:203
-msgid "File transfer completed"
-msgstr "Transfert de fichier terminé"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:225
-msgid "File transfer cancelled"
-msgstr "Transfert de fichier annulé"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:226
-msgid "Connection with peer cannot be established."
-msgstr "La connexion avec le contact ne peut être établie."
-
-#: ../src/filetransfers_window.py:235
+#: ../src/filetransfers_window.py:237
#, python-format
msgid "Recipient: %s"
msgstr "Destinataire : %s"
-#: ../src/filetransfers_window.py:237
+#: ../src/filetransfers_window.py:239
#, python-format
msgid "Error message: %s"
msgstr "Message d'erreur : %s"
-#: ../src/filetransfers_window.py:238
-msgid "File transfer stopped"
-msgstr "Transfert de fichier interrompu"
-
-#: ../src/filetransfers_window.py:266
+#: ../src/filetransfers_window.py:268
msgid "Choose File to Send..."
msgstr "Choisissez un fichier à envoyer..."
-#: ../src/filetransfers_window.py:282 ../src/tooltips.py:780
+#: ../src/filetransfers_window.py:284 ../src/tooltips.py:786
msgid "Description: "
msgstr "Description :"
-#: ../src/filetransfers_window.py:295
+#: ../src/filetransfers_window.py:297
msgid "Gajim cannot access this file"
msgstr "Gajim ne peut accéder à ce fichier"
-#: ../src/filetransfers_window.py:296
+#: ../src/filetransfers_window.py:298
msgid "This file is being used by another process."
msgstr "Ce fichier est utilisé par un autre processus."
-#: ../src/filetransfers_window.py:330
-#, python-format
-msgid "File: %s"
-msgstr "Fichier : %s"
-
-#: ../src/filetransfers_window.py:336
-#, python-format
-msgid "Type: %s"
-msgstr "Type : %s"
-
-#: ../src/filetransfers_window.py:338
-#, python-format
-msgid "Description: %s"
-msgstr "Description : %s"
-
-#: ../src/filetransfers_window.py:339
-#, python-format
-msgid "%s wants to send you a file:"
-msgstr "%s souhaite vous envoyer un fichier :"
-
-#: ../src/filetransfers_window.py:352 ../src/gtkgui_helpers.py:850
+#: ../src/filetransfers_window.py:336 ../src/gtkgui_helpers.py:850
#, python-format
msgid "Cannot overwrite existing file \"%s\""
msgstr "Impossible de remplacer le fichier existant \"%s\""
-#: ../src/filetransfers_window.py:353 ../src/gtkgui_helpers.py:851
+#: ../src/filetransfers_window.py:337 ../src/gtkgui_helpers.py:851
msgid ""
"A file with this name already exists and you do not have permission to "
"overwrite it."
@@ -8259,33 +8655,54 @@ msgstr ""
"Un fichier du même nom existe déjà et vous n'avez pas la permission de "
"l'écraser."
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "This file already exists"
msgstr "Ce fichier existe déjà"
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "What do you want to do?"
msgstr "Que voulez vous faire ?"
-#. read-only bit is used to mark special folder under windows,
-#. not to mark that a folder is read-only. See ticket #3587
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:862
+#. read-only bit is used to mark special folder under
+#. windows, not to mark that a folder is read-only.
+#. See ticket #3587
+#: ../src/filetransfers_window.py:365 ../src/gtkgui_helpers.py:862
#, python-format
msgid "Directory \"%s\" is not writable"
msgstr "Le dossier \"%s\" n'est pas accessible en écriture"
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:863
+#: ../src/filetransfers_window.py:366 ../src/gtkgui_helpers.py:863
msgid "You do not have permission to create files in this directory."
msgstr "Vous n'avez pas les permissions de créer des fichiers dans ce dossier."
-#: ../src/filetransfers_window.py:389
+#: ../src/filetransfers_window.py:377
msgid "Save File as..."
msgstr "Enregistrer le Fichier sous..."
+#: ../src/filetransfers_window.py:397
+#, python-format
+msgid "File: %s"
+msgstr "Fichier : %s"
+
+#: ../src/filetransfers_window.py:403
+#, python-format
+msgid "Type: %s"
+msgstr "Type : %s"
+
+#: ../src/filetransfers_window.py:405
+#, python-format
+msgid "Description: %s"
+msgstr "Description : %s"
+
+#: ../src/filetransfers_window.py:406
+#, python-format
+msgid "%s wants to send you a file:"
+msgstr "%s souhaite vous envoyer un fichier :"
+
#. Print remaining time in format 00:00:00
#. You can change the places of (hours), (minutes), (seconds) -
#. they are not translatable.
-#: ../src/filetransfers_window.py:459
+#: ../src/filetransfers_window.py:469
#, python-format
msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
@@ -8293,66 +8710,66 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
#. This should make the string Kb/s,
#. where 'Kb' part is taken from %s.
#. Only the 's' after / (which means second) should be translated.
-#: ../src/filetransfers_window.py:552
+#: ../src/filetransfers_window.py:562
#, python-format
msgid "(%(filesize_unit)s/s)"
msgstr "(%(filesize_unit)s/s)"
-#: ../src/filetransfers_window.py:595 ../src/filetransfers_window.py:598
+#: ../src/filetransfers_window.py:605 ../src/filetransfers_window.py:608
msgid "Invalid File"
msgstr "Fichier non valide"
-#: ../src/filetransfers_window.py:595
+#: ../src/filetransfers_window.py:605
msgid "File: "
msgstr "Fichier : "
-#: ../src/filetransfers_window.py:599
+#: ../src/filetransfers_window.py:609
msgid "It is not possible to send empty files"
msgstr "Il n'est pas possible d'envoyer un fichier vide"
-#: ../src/filetransfers_window.py:623 ../src/tooltips.py:732
+#: ../src/filetransfers_window.py:633 ../src/tooltips.py:738
msgid "Name: "
msgstr "Nom : "
-#: ../src/filetransfers_window.py:625 ../src/tooltips.py:736
+#: ../src/filetransfers_window.py:635 ../src/tooltips.py:742
msgid "Sender: "
msgstr "Expéditeur : "
-#: ../src/filetransfers_window.py:787
+#: ../src/filetransfers_window.py:797
msgid "Pause"
msgstr "Pause"
-#: ../src/gajim.py:186
+#: ../src/gajim.py:194
msgid "Gajim needs X server to run. Quiting..."
msgstr "Gajim a besoin d'un serveur X pour démarrer. Fermeture..."
-#: ../src/gajim.py:188
+#: ../src/gajim.py:196
#, python-format
msgid "importing PyGTK failed: %s"
msgstr "l'import de PyGTK a échoué : %s"
-#: ../src/gajim.py:230
+#: ../src/gajim.py:237
msgid "Gajim needs PyGTK 2.16 or above"
msgstr "Gajim a besoin de PyGTK 2.16 pour s'exécuter"
-#: ../src/gajim.py:231
+#: ../src/gajim.py:238
msgid "Gajim needs PyGTK 2.16 or above to run. Quiting..."
msgstr ""
"Gajim a besoin de PyGTK 2.16 ou supérieur pour s'exécuter. Fermeture..."
-#: ../src/gajim.py:233
+#: ../src/gajim.py:240
msgid "Gajim needs GTK 2.16 or above"
msgstr "Gajim a besoin de GTK 2.16 ou supérieur"
-#: ../src/gajim.py:234
+#: ../src/gajim.py:241
msgid "Gajim needs GTK 2.16 or above to run. Quiting..."
msgstr "Gajim a besoin de GTK 2.16 ou supérieur pour s'exécuter. Fermeture..."
-#: ../src/gajim.py:243
+#: ../src/gajim.py:250
msgid "Gajim needs pywin32 to run"
msgstr "Gajim a besoin de pywin32 pour s'exécuter"
-#: ../src/gajim.py:244
+#: ../src/gajim.py:251
#, python-format
msgid ""
"Please make sure that Pywin32 is installed on your system. You can get it at "
@@ -8360,11 +8777,11 @@ msgid ""
msgstr "Assurez-vous que Pywin32 est installé. Vous pouvez l'obtenir ici : %s"
#. set the icon to all newly opened wind
-#: ../src/gajim.py:360
+#: ../src/gajim.py:367
msgid "Gajim is already running"
msgstr "Gajim est déjà en cours d'exécution"
-#: ../src/gajim.py:361
+#: ../src/gajim.py:368
msgid ""
"Another instance of Gajim seems to be running\n"
"Run anyway?"
@@ -8809,7 +9226,7 @@ msgstr ""
#: ../src/gajim-remote.py:539
msgid "No uri given"
-msgstr ""
+msgstr "Pas d'uri donnée"
#: ../src/gajim-remote.py:541
msgid "Wrong uri"
@@ -8841,29 +9258,23 @@ msgid "Please first choose another for your current theme."
msgstr ""
"Veuillez tout d'abord appliquer un autre thème avant de supprimer celui-ci."
-#: ../src/groupchat_control.py:176 ../src/groupchat_control.py:1562
+#: ../src/groupchat_control.py:179 ../src/groupchat_control.py:1567
#, python-format
msgid "%(nick)s is now known as %(new_nick)s"
msgstr "%(nick)s est maintenant connu en tant que %(new_nick)s"
-#: ../src/groupchat_control.py:202 ../src/groupchat_control.py:1760
-#: ../src/history_window.py:447 ../src/notify.py:169
-#, python-format
-msgid "%(nick)s is now %(status)s"
-msgstr "%(nick)s est maintenant %(status)s"
-
-#: ../src/groupchat_control.py:230
+#: ../src/groupchat_control.py:233
msgid "Sending private message failed"
msgstr "L'envoi du message privé a échoué"
#. in second %s code replaces with nickname
-#: ../src/groupchat_control.py:232
+#: ../src/groupchat_control.py:235
#, python-format
msgid "You are no longer in group chat \"%(room)s\" or \"%(nick)s\" has left."
msgstr ""
"Vous n'êtes plus dans le salon « %(room)s » ou « %(nick)s » l'a quitté."
-#: ../src/groupchat_control.py:561
+#: ../src/groupchat_control.py:563
msgid "Insert Nickname"
msgstr "Insérer un surnom"
@@ -8875,182 +9286,182 @@ msgstr "Conversation avec "
msgid "Continued conversation"
msgstr "Conversation continuée"
-#: ../src/groupchat_control.py:1228
+#: ../src/groupchat_control.py:1225
#, python-format
msgid "%(nick)s has set the subject to %(subject)s"
msgstr "%(nick)s a changé le sujet en %(subject)s"
#. Can be a presence (see chg_contact_status in groupchat_control.py)
-#: ../src/groupchat_control.py:1246 ../src/groupchat_control.py:1505
+#: ../src/groupchat_control.py:1243 ../src/groupchat_control.py:1509
msgid "Any occupant is allowed to see your full JID"
msgstr ""
"N'importe quel occupant est autorisé à voir votre identifiant Jabber complet"
-#: ../src/groupchat_control.py:1249
+#: ../src/groupchat_control.py:1246
msgid "Room now shows unavailable member"
msgstr "Le salon affiche dorénavant les membres non-disponibles"
-#: ../src/groupchat_control.py:1251
+#: ../src/groupchat_control.py:1248
msgid "room now does not show unavailable members"
msgstr "Le salon n'affiche plus les membres non-disponibles"
-#: ../src/groupchat_control.py:1253
+#: ../src/groupchat_control.py:1250
msgid "A non-privacy-related room configuration change has occurred"
msgstr ""
"Un changement de la configuration du salon relatif à la vie-privée a eu lieu"
#. Can be a presence (see chg_contact_status in groupchat_control.py)
-#: ../src/groupchat_control.py:1257
+#: ../src/groupchat_control.py:1254
msgid "Room logging is now enabled"
msgstr "L'enregistrement des conversations du salon est maintenant activé"
-#: ../src/groupchat_control.py:1259
+#: ../src/groupchat_control.py:1256
msgid "Room logging is now disabled"
msgstr "L'enregistrement des conversations du salon est maintenant désactivé"
-#: ../src/groupchat_control.py:1261
+#: ../src/groupchat_control.py:1258
msgid "Room is now non-anonymous"
msgstr "Le salon n'est plus anonyme"
-#: ../src/groupchat_control.py:1264
+#: ../src/groupchat_control.py:1261
msgid "Room is now semi-anonymous"
msgstr "Le salon est maintenant sami-anonyme"
-#: ../src/groupchat_control.py:1267
+#: ../src/groupchat_control.py:1264
msgid "Room is now fully-anonymous"
msgstr "Le salon est maintenant totalement anonyme"
#. Can be a message (see handle_event_gc_config_change in
#. gajim.py)
-#: ../src/groupchat_control.py:1509
+#: ../src/groupchat_control.py:1514
msgid "Room logging is enabled"
msgstr "L'enregistrement des conversations du salon est activé"
-#: ../src/groupchat_control.py:1511
+#: ../src/groupchat_control.py:1516
msgid "A new room has been created"
msgstr "Un nouveau salon a été créé"
-#: ../src/groupchat_control.py:1514
+#: ../src/groupchat_control.py:1519
msgid "The server has assigned or modified your roomnick"
msgstr "Le serveur à défini ou midifié votre Surnom de salon"
#. do not print 'kicked by None'
-#: ../src/groupchat_control.py:1520
+#: ../src/groupchat_control.py:1525
#, python-format
msgid "%(nick)s has been kicked: %(reason)s"
msgstr "%(nick)s a été éjecté : %(reason)s"
-#: ../src/groupchat_control.py:1523
+#: ../src/groupchat_control.py:1528
#, python-format
msgid "%(nick)s has been kicked by %(who)s: %(reason)s"
msgstr "%(nick)s a été éjecté par %(who)s : %(reason)s"
#. do not print 'banned by None'
-#: ../src/groupchat_control.py:1532
+#: ../src/groupchat_control.py:1537
#, python-format
msgid "%(nick)s has been banned: %(reason)s"
msgstr "%(nick)s a été banni : %(reason)s"
-#: ../src/groupchat_control.py:1535
+#: ../src/groupchat_control.py:1540
#, python-format
msgid "%(nick)s has been banned by %(who)s: %(reason)s"
msgstr "%(nick)s a été banni par %(who)s : %(reason)s"
-#: ../src/groupchat_control.py:1546 ../src/groupchat_control.py:1650
+#: ../src/groupchat_control.py:1551 ../src/groupchat_control.py:1655
#, python-format
msgid "You are now known as %s"
msgstr "Vous êtes désormais connu sous le nom de %s"
-#: ../src/groupchat_control.py:1604 ../src/groupchat_control.py:1609
-#: ../src/groupchat_control.py:1615
+#: ../src/groupchat_control.py:1609 ../src/groupchat_control.py:1614
+#: ../src/groupchat_control.py:1620
#, python-format
msgid "%(nick)s has been removed from the room (%(reason)s)"
msgstr "%(nick)s a été éjecté du salon (%(reason)s)"
-#: ../src/groupchat_control.py:1606
+#: ../src/groupchat_control.py:1611
msgid "affiliation changed"
msgstr "Changement d'affiliation"
-#: ../src/groupchat_control.py:1611
+#: ../src/groupchat_control.py:1616
msgid "room configuration changed to members-only"
msgstr "La configuration du salon a changé pour « membres seulement »"
-#: ../src/groupchat_control.py:1617
+#: ../src/groupchat_control.py:1622
msgid "system shutdown"
msgstr "Extinction du système"
-#: ../src/groupchat_control.py:1700
+#: ../src/groupchat_control.py:1705
#, python-format
msgid "** Affiliation of %(nick)s has been set to %(affiliation)s by %(actor)s"
msgstr ""
"** L'affiliation de %(nick)s a été définie à %(affiliation)s par %(actor)s"
-#: ../src/groupchat_control.py:1704
+#: ../src/groupchat_control.py:1709
#, python-format
msgid "** Affiliation of %(nick)s has been set to %(affiliation)s"
msgstr "** L'affiliation de %(nick)s a été définie à %(affiliation)s"
-#: ../src/groupchat_control.py:1719
+#: ../src/groupchat_control.py:1724
#, python-format
msgid "** Role of %(nick)s has been set to %(role)s by %(actor)s"
msgstr "** Le rôle de %(nick)s a été défini à %(role)s par %(actor)s"
-#: ../src/groupchat_control.py:1723
+#: ../src/groupchat_control.py:1728
#, python-format
msgid "** Role of %(nick)s has been set to %(role)s"
msgstr "** Le rôle de %(nick)s a été défini à %(role)s"
-#: ../src/groupchat_control.py:1753
+#: ../src/groupchat_control.py:1758
#, python-format
msgid "%s has left"
msgstr "%s est parti"
-#: ../src/groupchat_control.py:1758
+#: ../src/groupchat_control.py:1763
#, python-format
msgid "%s has joined the group chat"
msgstr "%s a rejoint le salon de discussion"
-#: ../src/groupchat_control.py:2014
+#: ../src/groupchat_control.py:2018
#, python-format
msgid "Are you sure you want to leave group chat \"%s\"?"
msgstr "Êtes-vous sûr de vouloir quitter le salon \"%s\" ?"
-#: ../src/groupchat_control.py:2016
+#: ../src/groupchat_control.py:2020
msgid ""
"If you close this window, you will be disconnected from this group chat."
msgstr "Si vous fermez cette fenêtre, vous serez déconnecté(e) de ce salon."
-#: ../src/groupchat_control.py:2020 ../src/gui_interface.py:693
-#: ../src/gui_interface.py:1302 ../src/gui_interface.py:1342
-#: ../src/gui_interface.py:1383 ../src/message_window.py:224
-#: ../src/roster_window.py:2946 ../src/roster_window.py:3617
-#: ../src/roster_window.py:4380
+#: ../src/groupchat_control.py:2024 ../src/gui_interface.py:683
+#: ../src/gui_interface.py:1321 ../src/gui_interface.py:1361
+#: ../src/gui_interface.py:1402 ../src/message_window.py:224
+#: ../src/roster_window.py:2983 ../src/roster_window.py:3661
+#: ../src/roster_window.py:4467
msgid "_Do not ask me again"
msgstr "_Ne plus me poser la question"
-#: ../src/groupchat_control.py:2054
+#: ../src/groupchat_control.py:2058
msgid "Changing Subject"
msgstr "Changement de Sujet"
-#: ../src/groupchat_control.py:2055
+#: ../src/groupchat_control.py:2059
msgid "Please specify the new subject:"
msgstr "Saisissez le nouveau sujet :"
-#: ../src/groupchat_control.py:2062
+#: ../src/groupchat_control.py:2066
msgid "Changing Nickname"
msgstr "Changement de Surnom"
-#: ../src/groupchat_control.py:2063
+#: ../src/groupchat_control.py:2067
msgid "Please specify the new nickname you want to use:"
msgstr "Saisissez le nouveau surnom que vous souhaitez utiliser :"
#. Ask for a reason
-#: ../src/groupchat_control.py:2094
+#: ../src/groupchat_control.py:2098
#, python-format
msgid "Destroying %s"
msgstr "Destruction de %s"
-#: ../src/groupchat_control.py:2095
+#: ../src/groupchat_control.py:2099
msgid ""
"You are going to definitively destroy this room.\n"
"You may specify a reason below:"
@@ -9058,22 +9469,22 @@ msgstr ""
"Vous êtes sur le point de supprimer définitivement ce salon.\n"
"Vous pouvez spécifier une raison ci-dessous :"
-#: ../src/groupchat_control.py:2097
+#: ../src/groupchat_control.py:2101
msgid "You may also enter an alternate venue:"
msgstr "Vous pouvez également entrer une juridiction alternative :"
#. ask for reason
-#: ../src/groupchat_control.py:2292
+#: ../src/groupchat_control.py:2296
#, python-format
msgid "Kicking %s"
msgstr "Exclusion de %s"
-#: ../src/groupchat_control.py:2293 ../src/groupchat_control.py:2630
+#: ../src/groupchat_control.py:2297 ../src/groupchat_control.py:2629
msgid "You may specify a reason below:"
msgstr "Vous pouvez saisir une raison ci-dessous :"
#. ask for reason
-#: ../src/groupchat_control.py:2629
+#: ../src/groupchat_control.py:2628
#, python-format
msgid "Banning %s"
msgstr "Bannissement de %s"
@@ -9098,12 +9509,6 @@ msgstr "_Rapporter l'anomalie"
msgid "Details"
msgstr "Détails"
-#. we talk about file
-#: ../src/gtkgui_helpers.py:203 ../src/gtkgui_helpers.py:219
-#, python-format
-msgid "Error: cannot open %s for reading"
-msgstr "Erreur : impossible d'ouvrir %s en lecture"
-
#: ../src/gtkgui_helpers.py:348
msgid "Error reading file:"
msgstr "Erreur de lecture du fichier :"
@@ -9150,14 +9555,14 @@ msgstr "Enregistrer l'image sous..."
#. we are banned
#. group chat does not exist
-#: ../src/gui_interface.py:126 ../src/gui_interface.py:281
-#: ../src/gui_interface.py:290 ../src/gui_interface.py:295
-#: ../src/gui_interface.py:298 ../src/gui_interface.py:301
-#: ../src/gui_interface.py:306
+#: ../src/gui_interface.py:131 ../src/gui_interface.py:295
+#: ../src/gui_interface.py:304 ../src/gui_interface.py:310
+#: ../src/gui_interface.py:313 ../src/gui_interface.py:316
+#: ../src/gui_interface.py:321
msgid "Unable to join group chat"
msgstr "Impossible de rejoindre le salon"
-#: ../src/gui_interface.py:127
+#: ../src/gui_interface.py:132
#, python-format
msgid ""
"Your desired nickname in group chat %s is in use or registered by another "
@@ -9168,93 +9573,87 @@ msgstr ""
"utilisé ou enregistré par un autre occupant.\n"
"Veuillez entrer un autre surnom ci-dessous :"
-#: ../src/gui_interface.py:130
+#: ../src/gui_interface.py:135
msgid "Always use this nickname when there is a conflict"
msgstr "Toujours utiliser ce pseudo en cas de conflit"
-#: ../src/gui_interface.py:147
+#: ../src/gui_interface.py:152
msgid "Do you accept this request?"
msgstr "Acceptez vous sa requête ?"
-#: ../src/gui_interface.py:149
+#: ../src/gui_interface.py:154
#, python-format
msgid "Do you accept this request on account %s?"
msgstr "Acceptez vous cette requête sur le compte %s ?"
-#: ../src/gui_interface.py:152
+#: ../src/gui_interface.py:157
#, python-format
msgid "HTTP (%(method)s) Authorization for %(url)s (id: %(id)s)"
msgstr "Autorisation HTTP (%(method)s) pour %(url)s (id : %(id)s)"
-#: ../src/gui_interface.py:195 ../src/notify.py:439
+#: ../src/gui_interface.py:200 ../src/notify.py:279
msgid "Connection Failed"
msgstr "La connexion a échoué"
-#: ../src/gui_interface.py:270
+#: ../src/gui_interface.py:284
#, python-format
msgid "A Password is required to join the room %s. Please type it."
msgstr ""
"Un mot de passe est requis pour rejoindre le salon %s. Veuillez le taper."
-#: ../src/gui_interface.py:282
+#: ../src/gui_interface.py:296
#, python-format
-msgid "Maximum number of users for %s has been reached"
-msgstr "Le nombre maximal d'utilisateurs pour %s a été atteint"
+msgid "Maximum number of users for <b>%s</b> has been reached"
+msgstr "Le nombre maximal d'utilisateurs pour <b>%s</b> a été atteint"
-#: ../src/gui_interface.py:291
+#: ../src/gui_interface.py:305
#, python-format
-msgid "You are banned from group chat %s."
-msgstr "Vous êtes banni du salon %s."
+msgid "You are banned from group chat <b>%s</b>."
+msgstr "Vous êtes banni du salon <b>%s</b>."
-#: ../src/gui_interface.py:296
+#: ../src/gui_interface.py:311
#, python-format
-msgid "Group chat %s does not exist."
-msgstr "Le salon %s n'existe pas."
+msgid "Group chat <b>%s</b> does not exist."
+msgstr "Le salon <b>%s</b> n'existe pas."
-#: ../src/gui_interface.py:299
+#: ../src/gui_interface.py:314
msgid "Group chat creation is restricted."
msgstr "La création de salon est réservée aux administrateurs."
-#: ../src/gui_interface.py:302
+#: ../src/gui_interface.py:317
#, python-format
-msgid "Your registered nickname must be used in group chat %s."
-msgstr "Votre pseudonyme enregistré doit être utilisé dans le salon %s."
+msgid "Your registered nickname must be used in group chat <b>%s</b>."
+msgstr "Votre pseudonyme enregistré doit être utilisé dans le salon <b>%s</b>."
-#: ../src/gui_interface.py:307
+#: ../src/gui_interface.py:322
#, python-format
msgid "You are not in the members list in groupchat %s."
msgstr "Vous n'êtes pas dans la liste des membres du salon %s."
-#: ../src/gui_interface.py:438 ../src/gui_interface.py:442
+#: ../src/gui_interface.py:415 ../src/gui_interface.py:419
#, python-format
msgid "Error %(code)s: %(msg)s"
msgstr "Erreur %(code)s : %(msg)s"
-#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
-#: ../src/gui_interface.py:453 ../src/gui_interface.py:467
-#, python-format
-msgid "error while sending %(message)s ( %(error)s )"
-msgstr "erreur en envoyant %(message)s ( %(error)s )"
-
-#: ../src/gui_interface.py:494 ../src/notify.py:441
+#: ../src/gui_interface.py:471 ../src/notify.py:281
msgid "Subscription request"
msgstr "Requête d'Inscription"
-#: ../src/gui_interface.py:519
+#: ../src/gui_interface.py:496
msgid "Authorization accepted"
msgstr "Autorisation acceptée"
-#: ../src/gui_interface.py:520
+#: ../src/gui_interface.py:497
#, python-format
msgid "The contact \"%s\" has authorized you to see his or her status."
msgstr "Le contact \"%s\" vous a autorisé à voir son état."
-#: ../src/gui_interface.py:528
+#: ../src/gui_interface.py:505
#, python-format
msgid "Contact \"%s\" removed subscription from you"
msgstr "Le contact \"%s\" a cessé de vous souscrire à sa présence"
-#: ../src/gui_interface.py:529
+#: ../src/gui_interface.py:506
msgid ""
"You will always see him or her as offline.\n"
"Do you want to remove him or her from your contact list?"
@@ -9262,16 +9661,16 @@ msgstr ""
"Vous le/la verrez toujours hors-ligne.\n"
"Voulez vous le/la supprimer de votre liste de contacts ?"
-#: ../src/gui_interface.py:550 ../src/notify.py:443
+#: ../src/gui_interface.py:527 ../src/notify.py:283
msgid "Unsubscribed"
msgstr "Désinscrit(e)"
-#: ../src/gui_interface.py:561
+#: ../src/gui_interface.py:538
#, python-format
msgid "Contact with \"%s\" cannot be established"
msgstr "Le contact avec \"%s\" ne peut être établi"
-#: ../src/gui_interface.py:659
+#: ../src/gui_interface.py:636
msgid ""
"You configured Gajim to use GPG agent, but there is no GPG agent running or "
"it returned a wrong passphrase.\n"
@@ -9279,23 +9678,32 @@ msgstr ""
"Vous avez configuré Gajim pour qu'il utilise un agent GPG, mais aucun agent "
"GPG n'est lancé ou il a renvoyé un mauvais mot de passe.\n"
-#: ../src/gui_interface.py:661 ../src/gui_interface.py:669
+#: ../src/gui_interface.py:638 ../src/gui_interface.py:646
msgid "You are currently connected without your OpenPGP key."
msgstr "Vous êtes actuellement connecté sans clé OpenPGP."
-#: ../src/gui_interface.py:663
+#: ../src/gui_interface.py:640
msgid "Your passphrase is incorrect"
msgstr "Votre mot de passe est incorrect"
-#: ../src/gui_interface.py:668
+#: ../src/gui_interface.py:645
msgid "OpenGPG Passphrase Incorrect"
msgstr "Mot de passe OpenGPG est incorrect"
-#: ../src/gui_interface.py:691
+#: ../src/gui_interface.py:658
+msgid "Certificate Passphrase Required"
+msgstr "Mot de passe du certificat requis"
+
+#: ../src/gui_interface.py:659
+#, python-format
+msgid "Enter the passphrase for the certificate for account %s"
+msgstr "Entrez votre mot de passe pour le certificat pour le compte %s"
+
+#: ../src/gui_interface.py:681
msgid "GPG key not trusted"
msgstr "la clef GPG n'est pas une clef de confiance"
-#: ../src/gui_interface.py:691
+#: ../src/gui_interface.py:681
msgid ""
"The GPG key used to encrypt this chat is not trusted. Do you really want to "
"encrypt this message?"
@@ -9303,28 +9711,39 @@ msgstr ""
"La clef GPG utilisé pour chiffrer cette conversation n'est pas une clef de "
"confiance. Voulez-vous vraiment chiffrer ce message ?"
-#: ../src/gui_interface.py:704
-#, fuzzy
+#: ../src/gui_interface.py:694
msgid ""
-"Gnome Keyring is installed but not correctly started "
-"(environment variable probably not correctly set)"
+"Gnome Keyring is installed but not correctly started (environment variable "
+"probably not correctly set)"
msgstr ""
-"Gnome Keyring est installé mais pas \t\t\t\tcorrectement démarré (variable "
-"d'environnement probablement \t\t\t\tmal configurée)"
+"Gnome Keyring est installé mais pas correctement démarré (variable "
+"d'environnement probablement mal configurée)"
-#: ../src/gui_interface.py:811
+#: ../src/gui_interface.py:732
+msgid ""
+"Please copy / paste the refresh token from the website that has just been "
+"opened."
+msgstr ""
+"Copiez / Collez le jeton de rafraichissement du site web qui vient d'être "
+"ouvert."
+
+#: ../src/gui_interface.py:735
+msgid "Oauth2 Credentials"
+msgstr "Certificat Oauth2"
+
+#: ../src/gui_interface.py:825
#, python-format
msgid "New mail on %(gmail_mail_address)s"
msgstr "Nouveau courriel sur %(gmail_mail_address)s"
-#: ../src/gui_interface.py:813
+#: ../src/gui_interface.py:827
#, python-format
msgid "You have %d new mail conversation"
msgid_plural "You have %d new mail conversations"
msgstr[0] "Vous avez %d nouveau courrier électronique"
msgstr[1] "Vous avez %d nouveaux courriers électroniques"
-#: ../src/gui_interface.py:826
+#: ../src/gui_interface.py:840
#, python-format
msgid ""
"\n"
@@ -9339,59 +9758,51 @@ msgstr ""
"Sujet : %(subject)s\n"
"%(snippet)s"
-#: ../src/gui_interface.py:891
+#: ../src/gui_interface.py:905
#, python-format
msgid "%s wants to send you a file."
msgstr "%s souhaite vous envoyer un fichier."
-#: ../src/gui_interface.py:928 ../src/roster_window.py:1896
-msgid "Remote contact stopped transfer"
-msgstr "Le contact distant à stoppé le transfert"
-
-#: ../src/gui_interface.py:931 ../src/roster_window.py:1898
-msgid "Error opening file"
-msgstr "Erreur à l'ouverture du fichier"
-
-#: ../src/gui_interface.py:963
+#: ../src/gui_interface.py:977
#, python-format
msgid "You successfully received %(filename)s from %(name)s."
msgstr "Vous avez bien reçu %(filename)s de la part de %(name)s."
#. ft stopped
-#: ../src/gui_interface.py:967
+#: ../src/gui_interface.py:981
#, python-format
msgid "File transfer of %(filename)s from %(name)s stopped."
msgstr ""
"Le transfert du fichier %(filename)s de la part de %(name)s est arrêté."
-#: ../src/gui_interface.py:980
+#: ../src/gui_interface.py:994
#, python-format
msgid "You successfully sent %(filename)s to %(name)s."
msgstr "Vous avez bien envoyé %(filename)s à %(name)s."
#. ft stopped
-#: ../src/gui_interface.py:984
+#: ../src/gui_interface.py:998
#, python-format
msgid "File transfer of %(filename)s to %(name)s stopped."
msgstr "Le transfert du fichier %(filename)s à %(name)s est arrêté."
-#: ../src/gui_interface.py:1059
+#: ../src/gui_interface.py:1073
msgid "Unable to decrypt message"
msgstr "Impossible de déchiffrer le message"
-#: ../src/gui_interface.py:1071
+#: ../src/gui_interface.py:1085
msgid "Username Conflict"
msgstr "Conflit de nom d'utilisateur"
-#: ../src/gui_interface.py:1072
+#: ../src/gui_interface.py:1086
msgid "Please type a new username for your local account"
msgstr "Veuillez entrer un nouveau surnom pour votre compte local"
-#: ../src/gui_interface.py:1087
+#: ../src/gui_interface.py:1101
msgid "Resource Conflict"
msgstr "Conflit de ressource"
-#: ../src/gui_interface.py:1088
+#: ../src/gui_interface.py:1102
msgid ""
"You are already connected to this account with the same resource. Please "
"type a new one"
@@ -9400,20 +9811,20 @@ msgstr ""
"entrer une nouvelle"
#. TODO: we should use another pixmap ;-)
-#: ../src/gui_interface.py:1133
+#: ../src/gui_interface.py:1147
#, python-format
msgid "%s wants to start a voice chat."
msgstr "%s souhaite vous envoyer un fichier."
-#: ../src/gui_interface.py:1136
+#: ../src/gui_interface.py:1150
msgid "Voice Chat Request"
msgstr "Requête de transfert de fichier"
-#: ../src/gui_interface.py:1223
+#: ../src/gui_interface.py:1237
msgid "Error verifying SSL certificate"
msgstr "Erreur durant la vérification du certificat SSL"
-#: ../src/gui_interface.py:1224
+#: ../src/gui_interface.py:1238
#, python-format
msgid ""
"There was an error verifying the SSL certificate of your jabber server: "
@@ -9424,15 +9835,15 @@ msgstr ""
"serveur Jabber : %(error)s\n"
"Voulez-vous toujours vous connecter à ce serveur ?"
-#: ../src/gui_interface.py:1233
+#: ../src/gui_interface.py:1247
msgid "Ignore this error for this certificate."
msgstr "Ignorer cette erreur pour ce certificat."
-#: ../src/gui_interface.py:1258
+#: ../src/gui_interface.py:1272
msgid "SSL certificate error"
msgstr "Erreur de certificat SSL"
-#: ../src/gui_interface.py:1259
+#: ../src/gui_interface.py:1273
#, python-format
msgid ""
"It seems the SSL certificate of account %(account)s has changed or your "
@@ -9450,28 +9861,34 @@ msgstr ""
"Voulez vous toujours vous connecter et mettre à jour l'empreinte digitale du "
"certificat ?"
-#: ../src/gui_interface.py:1295 ../src/gui_interface.py:1337
-#: ../src/gui_interface.py:1379
+#: ../src/gui_interface.py:1312 ../src/gui_interface.py:1356
+#: ../src/gui_interface.py:1398
msgid "Insecure connection"
msgstr "Connexion non-sécurisée"
-#: ../src/gui_interface.py:1296
+#: ../src/gui_interface.py:1313
#, python-format
msgid ""
"You are about to connect to the account %(account)s (%(server)s) with an "
"insecure connection. This means all your conversations will be exchanged "
-"unencrypted. Are you sure you want to do that?"
+"unencrypted. This type of connection is really discouraged.\n"
+"Are you sure you want to do that?"
msgstr ""
"Vous êtes sur le point de vous connecter au compte %(account)s (%(server)s) "
"avec une connexion non-sécurisée. Cela signifie que toutes vos conversations "
-"ne seront pas chiffrées. Êtes vous sûr de vouloir faire cela ?"
+"ne seront pas chiffrées. Ce type de connexion est vraiment déconseillé.\n"
+"Êtes vous sûr de vouloir faire cela ?"
-#: ../src/gui_interface.py:1301 ../src/gui_interface.py:1341
-#: ../src/gui_interface.py:1382
+#: ../src/gui_interface.py:1319 ../src/gui_interface.py:1360
+#: ../src/gui_interface.py:1401
msgid "Yes, I really want to connect insecurely"
msgstr "Oui, je veux vraiment me connecter de façon non-sécurisée"
-#: ../src/gui_interface.py:1338
+#: ../src/gui_interface.py:1320
+msgid "Gajim will NOT connect unless you check this box"
+msgstr "Gajim ne se connectera pas si vous ne cochez pas cette case."
+
+#: ../src/gui_interface.py:1357
msgid ""
"You are about to send your password on an insecure connection. You should "
"install PyOpenSSL to prevent that. Are you sure you want to do that?"
@@ -9480,7 +9897,7 @@ msgstr ""
"sécurisée. Vous devriez installer PyOpenSSL pour empêcher cela. Êtes-vous "
"sûr de vouloir le faire ?"
-#: ../src/gui_interface.py:1380
+#: ../src/gui_interface.py:1399
msgid ""
"You are about to send your password unencrypted on an insecure connection. "
"Are you sure you want to do that?"
@@ -9489,11 +9906,11 @@ msgstr ""
"chiffrée. Êtes vous sûr de vouloir le faire ?"
#. theme doesn't exist, disable emoticons
-#: ../src/gui_interface.py:1887 ../src/gui_interface.py:1910
+#: ../src/gui_interface.py:1909 ../src/gui_interface.py:1932
msgid "Emoticons disabled"
msgstr "Émoticônes désactivées"
-#: ../src/gui_interface.py:1888
+#: ../src/gui_interface.py:1910
msgid ""
"Your configured emoticons theme has not been found, so emoticons have been "
"disabled."
@@ -9501,7 +9918,7 @@ msgstr ""
"Votre thème d'émoticônes n'a pu être trouvé, les émoticônes sont donc "
"désactivées."
-#: ../src/gui_interface.py:1911
+#: ../src/gui_interface.py:1933
msgid ""
"Your configured emoticons theme cannot been loaded. You maybe need to update "
"the format of emoticons.py file. See http://trac.gajim.org/wiki/Emoticons "
@@ -9511,7 +9928,7 @@ msgstr ""
"mettre à jour le format du fichier emoticons.py. Voir http://trac.gajim.org/"
"wiki/Emoticons pour plus de détails."
-#: ../src/gui_interface.py:1955 ../src/roster_window.py:3784
+#: ../src/gui_interface.py:1977 ../src/roster_window.py:3828
msgid "You cannot join a group chat while you are invisible"
msgstr ""
"Vous ne pouvez pas joindre un salon de discussion tant que vous êtes "
@@ -9519,35 +9936,35 @@ msgstr ""
#. it is good to notify the user
#. in case he or she cannot see the output of the console
-#: ../src/gui_interface.py:2342
+#: ../src/gui_interface.py:2364
msgid "Could not save your settings and preferences"
msgstr "Impossible d'enregistrer vos informations de configuration"
-#: ../src/gui_interface.py:2889
+#: ../src/gui_interface.py:2926
msgid "Passphrase Required"
msgstr "Mot de Passe Requis"
-#: ../src/gui_interface.py:2890
+#: ../src/gui_interface.py:2927
#, python-format
msgid "Enter GPG key passphrase for key %(keyid)s (account %(account)s)."
msgstr ""
"Entrez votre mot de passe GPG pour la clé %(keyid)s (compte %(account)s)."
-#: ../src/gui_interface.py:2904
+#: ../src/gui_interface.py:2941
msgid "GPG key expired"
msgstr "Clef GPG expirée"
-#: ../src/gui_interface.py:2905
+#: ../src/gui_interface.py:2942
#, python-format
msgid "Your GPG key has expired, you will be connected to %s without OpenPGP."
msgstr "Votre clef GPG a expiré, vous serez connecté(e) à %s sans OpenPGP."
#. ask again
-#: ../src/gui_interface.py:2914
+#: ../src/gui_interface.py:2951
msgid "Wrong Passphrase"
msgstr "Mot de passe erroné"
-#: ../src/gui_interface.py:2915
+#: ../src/gui_interface.py:2952
msgid "Please retype your GPG passphrase or press Cancel."
msgstr "Ressaisissez votre mot de passe GPG ou appuyez sur Annuler."
@@ -9555,7 +9972,7 @@ msgstr "Ressaisissez votre mot de passe GPG ou appuyez sur Annuler."
msgid "_New Group Chat"
msgstr "_Nouveau Salon de Discussion"
-#: ../src/gui_menu_builder.py:419
+#: ../src/gui_menu_builder.py:420
msgid "I would like to add you to my roster"
msgstr "Je souhaiterais vous ajouter à ma liste de contacts"
@@ -9570,7 +9987,7 @@ msgstr "Contacts"
#. holds time
#: ../src/history_manager.py:169 ../src/history_manager.py:213
-#: ../src/history_window.py:98
+#: ../src/history_window.py:99
msgid "Date"
msgstr "Date"
@@ -9581,7 +9998,7 @@ msgstr "Pseudonyme"
#. holds message
#: ../src/history_manager.py:185 ../src/history_manager.py:220
-#: ../src/history_window.py:106
+#: ../src/history_window.py:107
msgid "Message"
msgstr "Message"
@@ -9613,9 +10030,8 @@ msgstr ""
"Si vous choisissez OUI, patientez..."
#: ../src/history_manager.py:259
-#, fuzzy
msgid "Database Cleanup"
-msgstr "Erreur de base de données"
+msgstr "Nettoyage de la base de données"
#: ../src/history_manager.py:477
msgid "Exporting History Logs..."
@@ -9640,9 +10056,8 @@ msgid "This is an irreversible operation."
msgstr "Ceci est une opération irréversible."
#: ../src/history_manager.py:600 ../src/history_manager.py:639
-#, fuzzy
msgid "Deletion Confirmation"
-msgstr "Annuler la confirmation"
+msgstr "Confirmation de la suppression"
#: ../src/history_manager.py:634
msgid "Do you really want to delete the selected message?"
@@ -9650,48 +10065,40 @@ msgid_plural "Do you really want to delete the selected messages?"
msgstr[0] "Voulez-vous vraiment supprimer le message sélectionné ?"
msgstr[1] "Voulez-vous vraiment supprimer les messages sélectionnés ?"
-#: ../src/history_window.py:305
+#: ../src/history_window.py:306
#, python-format
msgid "Conversation History with %s"
msgstr "Historique de conversation avec %s"
-#: ../src/history_window.py:355
+#: ../src/history_window.py:356
msgid "Disk Error"
msgstr "Erreur du disque"
-#: ../src/history_window.py:443
+#: ../src/history_window.py:444
#, python-format
msgid "%(nick)s is now %(status)s: %(status_msg)s"
msgstr "%(nick)s est maintenant %(status)s : %(status_msg)s"
-#: ../src/history_window.py:454
+#: ../src/history_window.py:455
#, python-format
msgid "Error: %s"
msgstr "Erreur : %s"
-#: ../src/history_window.py:456
+#: ../src/history_window.py:457
msgid "Error"
msgstr "Erreur"
-#: ../src/history_window.py:458
+#: ../src/history_window.py:459
#, python-format
msgid "Status is now: %(status)s: %(status_msg)s"
msgstr "L'état est maintenant : %(status)s : %(status_msg)s"
-#: ../src/history_window.py:461
+#: ../src/history_window.py:462
#, python-format
msgid "Status is now: %(status)s"
msgstr "L'état est maintenant : %(status)s"
-#: ../src/htmltextview.py:518 ../src/htmltextview.py:528
-msgid "Timeout loading image"
-msgstr "Délai du chargement de l'image dépassé"
-
-#: ../src/htmltextview.py:538
-msgid "Image is too big"
-msgstr "L'image est trop grande"
-
-#: ../src/htmltextview.py:571
+#: ../src/htmltextview.py:522
msgid "Loading"
msgstr "Chargement"
@@ -9703,19 +10110,19 @@ msgstr "Vous êtes sur le point de fermer plusieurs onglets"
msgid "Do you really want to close them all?"
msgstr "Voulez-vous vraiment tous les fermer ?"
-#: ../src/message_window.py:497
+#: ../src/message_window.py:496
msgid "Chats"
msgstr "Discussions"
-#: ../src/message_window.py:499
+#: ../src/message_window.py:498
msgid "Group Chats"
msgstr "Salons de discussion"
-#: ../src/message_window.py:501
+#: ../src/message_window.py:500
msgid "Private Chats"
msgstr "Conversations privées"
-#: ../src/message_window.py:507
+#: ../src/message_window.py:506
msgid "Messages"
msgstr "Messages"
@@ -9727,86 +10134,67 @@ msgstr "- les messages seront archivés"
msgid "- messages will not be logged"
msgstr "- les messages ne seront pas archivés"
-#: ../src/notify.py:167
-#, python-format
-msgid "%(nick)s Changed Status"
-msgstr "%(nick)s a changé d'état"
-
-#: ../src/notify.py:177
-#, python-format
-msgid "%(nickname)s Signed In"
-msgstr "%(nickname)s s'est connecté(e)"
-
-#: ../src/notify.py:185
-#, python-format
-msgid "%(nickname)s Signed Out"
-msgstr "%(nickname)s s'est déconnecté(e)"
-
-#: ../src/notify.py:482
+#: ../src/notify.py:322
msgid "Ignore"
msgstr "Ignorer"
-#: ../src/plugins/gui.py:67
+#: ../src/plugins/gui.py:68
msgid "Plugin"
-msgstr ""
+msgstr "Plugin"
-#: ../src/plugins/gui.py:160
-#, fuzzy
+#: ../src/plugins/gui.py:162
msgid "Plugin failed"
-msgstr "L'inscription a échoué"
+msgstr "Plugin échoué"
-#: ../src/plugins/gui.py:204
+#: ../src/plugins/gui.py:206
msgid "Unable to properly remove the plugin"
msgstr "Impossible de supprimer le plugin proprement"
#. members not safe
-#: ../src/plugins/gui.py:212 ../src/plugins/pluginmanager.py:495
-#: ../src/plugins/pluginmanager.py:503
-#, fuzzy
+#: ../src/plugins/gui.py:214 ../src/plugins/pluginmanager.py:519
+#: ../src/plugins/pluginmanager.py:527
msgid "Archive is malformed"
-msgstr "Le service a envoyé des données mal-formées"
+msgstr "L'archive est mal-formée"
-#: ../src/plugins/gui.py:235 ../src/plugins/gui.py:243
-#: ../src/plugins/pluginmanager.py:511
+#: ../src/plugins/gui.py:237 ../src/plugins/gui.py:245
+#: ../src/plugins/pluginmanager.py:535
msgid "Plugin already exists"
msgstr "Le plugin existe déjà"
-#: ../src/plugins/gui.py:235
+#: ../src/plugins/gui.py:237
msgid "Overwrite?"
msgstr "Remplacer ?"
-#: ../src/plugins/gui.py:264
-#, fuzzy
+#: ../src/plugins/gui.py:266
msgid "Configuration"
-msgstr "Configuration du salon de discussion"
+msgstr "Configuration"
#. it is not zip file
#. CRC error
-#: ../src/plugins/pluginmanager.py:481 ../src/plugins/pluginmanager.py:487
+#: ../src/plugins/pluginmanager.py:505 ../src/plugins/pluginmanager.py:511
msgid "Archive corrupted"
msgstr "Archive corrompue"
-#: ../src/plugins/pluginmanager.py:483
-#, fuzzy
+#: ../src/plugins/pluginmanager.py:507
msgid "Archive empty"
-msgstr "Le fichier est vide"
+msgstr "L'archive est vide"
#: ../src/profile_window.py:60
msgid "Retrieving profile..."
msgstr "Récupération du profil..."
-#: ../src/profile_window.py:125 ../src/roster_window.py:3141
+#: ../src/profile_window.py:125 ../src/roster_window.py:3178
msgid "File is empty"
msgstr "Le fichier est vide"
-#: ../src/profile_window.py:128 ../src/roster_window.py:3144
+#: ../src/profile_window.py:128 ../src/roster_window.py:3181
msgid "File does not exist"
msgstr "Le fichier n'existe pas"
#. keep identation
#. unknown format
#: ../src/profile_window.py:142 ../src/profile_window.py:158
-#: ../src/roster_window.py:3146 ../src/roster_window.py:3157
+#: ../src/roster_window.py:3183 ../src/roster_window.py:3194
msgid "Could not load image"
msgstr "Impossible de charger l'image"
@@ -9846,51 +10234,51 @@ msgstr ""
"Une erreur s'est produite lors de la publication de vos informations "
"personnelles, veuillez réessayer plus tard."
-#: ../src/roster_window.py:240 ../src/roster_window.py:1028
+#: ../src/roster_window.py:240 ../src/roster_window.py:1031
msgid "Merged accounts"
msgstr "Comptes regroupés"
-#: ../src/roster_window.py:1961
+#: ../src/roster_window.py:1988
msgid "Authorization has been sent"
msgstr "L'Autorisation a été envoyée"
-#: ../src/roster_window.py:1962
+#: ../src/roster_window.py:1989
#, python-format
msgid "Now \"%s\" will know your status."
msgstr "Désormais \"%s\" connaîtra votre état."
-#: ../src/roster_window.py:1985
+#: ../src/roster_window.py:2012
msgid "Subscription request has been sent"
msgstr "La requête d'inscription a été envoyée"
-#: ../src/roster_window.py:1986
+#: ../src/roster_window.py:2013
#, python-format
msgid "If \"%s\" accepts this request you will know his or her status."
msgstr "Si \"%s\" accepte cette requête, vous connaîtrez son état."
-#: ../src/roster_window.py:2000
+#: ../src/roster_window.py:2027
msgid "Authorization has been removed"
msgstr "L'Autorisation a été supprimée"
-#: ../src/roster_window.py:2001
+#: ../src/roster_window.py:2028
#, python-format
msgid "Now \"%s\" will always see you as offline."
msgstr "Dorénavant, \"%s\" vous verra toujours déconnecté(e)."
-#: ../src/roster_window.py:2028
+#: ../src/roster_window.py:2055
msgid "GPG is not usable"
msgstr "GPG n'est pas utilisable"
-#: ../src/roster_window.py:2029
+#: ../src/roster_window.py:2056
#, python-format
msgid "You will be connected to %s without OpenPGP."
msgstr "Vous serez connecté à %s sans OpenPGP."
-#: ../src/roster_window.py:2241 ../src/roster_window.py:3714
+#: ../src/roster_window.py:2263 ../src/roster_window.py:3758
msgid "You are participating in one or more group chats"
msgstr "Vous participez à un ou plusieurs salons"
-#: ../src/roster_window.py:2242 ../src/roster_window.py:3715
+#: ../src/roster_window.py:2264 ../src/roster_window.py:3759
msgid ""
"Changing your status to invisible will result in disconnection from those "
"group chats. Are you sure you want to go invisible?"
@@ -9898,27 +10286,27 @@ msgstr ""
"Basculer en état invisible entraînera votre déconnexion ces salons. Êtes-"
"vous sûr de vouloir être invisible ?"
-#: ../src/roster_window.py:2268
+#: ../src/roster_window.py:2290
msgid "desync'ed"
msgstr "désynchronisé"
-#: ../src/roster_window.py:2334
+#: ../src/roster_window.py:2356
msgid "Really quit Gajim?"
msgstr "Vraiment quitter Gajim ?"
-#: ../src/roster_window.py:2335
+#: ../src/roster_window.py:2357
msgid "Are you sure you want to quit Gajim?"
msgstr "Êtes-vous sûr de vouloir quitter Gajim ?"
-#: ../src/roster_window.py:2336
+#: ../src/roster_window.py:2358
msgid "Always close Gajim"
msgstr "Toujours fermer Gajim"
-#: ../src/roster_window.py:2420
+#: ../src/roster_window.py:2444
msgid "You have running file transfers"
msgstr "Vous des transferts de fichiers en cours"
-#: ../src/roster_window.py:2421
+#: ../src/roster_window.py:2445
msgid ""
"If you quit now, the file(s) being transferred will be stopped. Do you still "
"want to quit?"
@@ -9926,11 +10314,11 @@ msgstr ""
"Si vous quittez maintenant, le transfert de fichier(s) sera arrêté. Voulez-"
"vous toujours quitter ?"
-#: ../src/roster_window.py:2452 ../src/roster_window.py:2860
+#: ../src/roster_window.py:2476 ../src/roster_window.py:2897
msgid "You have unread messages"
msgstr "Vous avez des messages non lus"
-#: ../src/roster_window.py:2453
+#: ../src/roster_window.py:2477
msgid ""
"Messages will only be available for reading them later if you have history "
"enabled and contact is in your roster."
@@ -9938,16 +10326,16 @@ msgstr ""
"Les messages seront disponibles pour une lecture ultérieure si l'archivage "
"de l'historique est actif et si le contact est dans votre liste."
-#: ../src/roster_window.py:2861
+#: ../src/roster_window.py:2898
msgid "You must read them before removing this transport."
msgstr "Vous devez les lire avant de supprimer ce compte."
-#: ../src/roster_window.py:2864
+#: ../src/roster_window.py:2901
#, python-format
msgid "Transport \"%s\" will be removed"
msgstr "La passerelle \"%s\" sera enlevée"
-#: ../src/roster_window.py:2865
+#: ../src/roster_window.py:2902
msgid ""
"You will no longer be able to send and receive messages from contacts using "
"this transport."
@@ -9955,11 +10343,11 @@ msgstr ""
"Vous ne pourrez plus envoyer et recevoir de messages des contacts de cette "
"passerelle."
-#: ../src/roster_window.py:2868
+#: ../src/roster_window.py:2905
msgid "Transports will be removed"
msgstr "Les passerelles seront enlevées"
-#: ../src/roster_window.py:2873
+#: ../src/roster_window.py:2910
#, python-format
msgid ""
"You will no longer be able to send and receive messages to contacts from "
@@ -9968,13 +10356,13 @@ msgstr ""
"Vous ne pourrez plus envoyer et recevoir de messages aux contacts de ces "
"passerelles : %s"
-#: ../src/roster_window.py:2941
+#: ../src/roster_window.py:2978
msgid "You are about to block a contact. Are you sure you want to continue?"
msgstr ""
"Vous êtes sur le point de bloquer un contact. Êtes-vous sûr de vouloir "
"continuer ?"
-#: ../src/roster_window.py:2943
+#: ../src/roster_window.py:2980
msgid ""
"This contact will see you offline and you will not receive messages he will "
"send you."
@@ -9983,58 +10371,58 @@ msgstr ""
"vous enverra."
#. it's jid
-#: ../src/roster_window.py:3033
+#: ../src/roster_window.py:3070
msgid "Rename Contact"
msgstr "Renommer le contact"
-#: ../src/roster_window.py:3034
+#: ../src/roster_window.py:3071
#, python-format
msgid "Enter a new nickname for contact %s"
msgstr "Entrez un nouveau surnom pour le contact %s."
-#: ../src/roster_window.py:3041
+#: ../src/roster_window.py:3078
msgid "Rename Group"
msgstr "_Renommer le Groupe"
-#: ../src/roster_window.py:3042
+#: ../src/roster_window.py:3079
#, python-format
msgid "Enter a new name for group %s"
msgstr "Entrez un nouveau nom pour le groupe %s."
-#: ../src/roster_window.py:3087
+#: ../src/roster_window.py:3124
msgid "Remove Group"
msgstr "_Supprimer le Groupe"
-#: ../src/roster_window.py:3088
+#: ../src/roster_window.py:3125
#, python-format
msgid "Do you want to remove group %s from the roster?"
msgstr "Voulez-vous enlever le groupe %s de la liste de contacts ?"
-#: ../src/roster_window.py:3089
+#: ../src/roster_window.py:3126
msgid "Also remove all contacts in this group from your roster"
msgstr ""
"Supprimer également de votre roster tous les contacts appartenant à ce groupe"
-#: ../src/roster_window.py:3128
+#: ../src/roster_window.py:3165
msgid "Assign OpenPGP Key"
msgstr "Assigner une clé OpenPGP"
-#: ../src/roster_window.py:3129
+#: ../src/roster_window.py:3166
msgid "Select a key to apply to the contact"
msgstr "Choisissez la clé correspondant au contact"
-#: ../src/roster_window.py:3524
+#: ../src/roster_window.py:3568
#, python-format
msgid "Contact \"%s\" will be removed from your roster"
msgstr "Le contact \"%s\" sera enlevé de la liste de contacts"
-#: ../src/roster_window.py:3526
+#: ../src/roster_window.py:3570
#, python-format
msgid "You are about to remove \"%(name)s\" (%(jid)s) from your roster.\n"
msgstr ""
"Vous êtes sur le point de supprimer « %(name)s » (%(jid)s) de votre roster.\n"
-#: ../src/roster_window.py:3531
+#: ../src/roster_window.py:3575
msgid ""
"By removing this contact you also remove authorization resulting in him or "
"her always seeing you as offline."
@@ -10043,11 +10431,11 @@ msgstr ""
"verra donc toujours déconnecté(e)."
#. Contact is not in roster
-#: ../src/roster_window.py:3537
+#: ../src/roster_window.py:3581
msgid "Do you want to continue?"
msgstr "Voulez vous continuer ?"
-#: ../src/roster_window.py:3541
+#: ../src/roster_window.py:3585
msgid ""
"By removing this contact you also by default remove authorization resulting "
"in him or her always seeing you as offline."
@@ -10055,16 +10443,16 @@ msgstr ""
"En supprimant ce contact, vous supprimez également son autorisation. Il/Elle "
"vous verra donc toujours déconnecté(e)."
-#: ../src/roster_window.py:3544
+#: ../src/roster_window.py:3588
msgid "I want this contact to know my status after removal"
msgstr "Autoriser ce contact à connaître mon état après la suppression"
#. several contact to remove at the same time
-#: ../src/roster_window.py:3548
+#: ../src/roster_window.py:3592
msgid "Contacts will be removed from your roster"
msgstr "Les contacts seront enlevés de la liste de contacts"
-#: ../src/roster_window.py:3553
+#: ../src/roster_window.py:3597
#, python-format
msgid ""
"By removing these contacts:%s\n"
@@ -10074,14 +10462,14 @@ msgstr ""
"vous enlevez aussi leurs autorisations. Ces contacts vous verront donc "
"toujours déconnecté(e)."
-#: ../src/roster_window.py:3611
+#: ../src/roster_window.py:3655
msgid ""
"You are about to send a custom status. Are you sure you want to continue?"
msgstr ""
"Vous êtes sur le point d'envoyer un statut personnalisé. Êtes-vous sûr de "
"vouloir continuer ?"
-#: ../src/roster_window.py:3613
+#: ../src/roster_window.py:3657
#, python-format
msgid ""
"This contact will temporarily see you as %(status)s, but only until you "
@@ -10090,20 +10478,20 @@ msgstr ""
"Ce contact vous verra %(status)s, mais seulement jusqu'à ce que vous "
"changiez votre statut. Il verra alors votre statut global."
-#: ../src/roster_window.py:3632
+#: ../src/roster_window.py:3676
msgid "No account available"
msgstr "Aucun compte disponible"
-#: ../src/roster_window.py:3633
+#: ../src/roster_window.py:3677
msgid "You must create an account before you can chat with other contacts."
msgstr ""
"Vous devez créer un compte avant de pouvoir discuter avec d'autres contacts."
-#: ../src/roster_window.py:4280
+#: ../src/roster_window.py:4367
msgid "Metacontacts storage not supported by your server"
msgstr "Le stockage des métacontacts n'est pas supporté par votre serveur"
-#: ../src/roster_window.py:4282
+#: ../src/roster_window.py:4369
msgid ""
"Your server does not support storing metacontacts information. So those "
"information will not be saved on next reconnection."
@@ -10112,14 +10500,14 @@ msgstr ""
"métacontacts. Par conséquent, ces informations ne seront pas enregistrées "
"lors de la prochaine connexion."
-#: ../src/roster_window.py:4374
+#: ../src/roster_window.py:4461
msgid ""
"You are about to create a metacontact. Are you sure you want to continue?"
msgstr ""
"Vous êtes sur le point de créer un métacontact. Êtes-vous sûr de vouloir "
"continuer ?"
-#: ../src/roster_window.py:4376
+#: ../src/roster_window.py:4463
msgid ""
"Metacontacts are a way to regroup several contacts in one line. Generally it "
"is used when the same person has several Jabber accounts or transport "
@@ -10129,28 +10517,28 @@ msgstr ""
"Généralement, cela est utile lorsqu'une même personne possède plusieurs "
"comptes Jabber ou des comptes de transport."
-#: ../src/roster_window.py:4497
+#: ../src/roster_window.py:4584
msgid "Invalid file URI:"
msgstr "Url de fichier invalide :"
-#: ../src/roster_window.py:4509
+#: ../src/roster_window.py:4596
#, python-format
msgid "Do you want to send this file to %s:"
msgid_plural "Do you want to send these files to %s:"
msgstr[0] "Voulez vous envoyer ce fichier à %s :"
msgstr[1] "Voulez vous envoyer ces fichiers à %s :"
-#: ../src/roster_window.py:4644
+#: ../src/roster_window.py:4731
#, python-format
msgid "Send %s to %s"
msgstr "Envoyer %s à %s"
-#: ../src/roster_window.py:4655
-#, fuzzy, python-format
+#: ../src/roster_window.py:4742
+#, python-format
msgid "Make %s first contact"
-msgstr "Faire de %s et %s des métacontacts"
+msgstr "Faire de %s le premier contact"
-#: ../src/roster_window.py:4658
+#: ../src/roster_window.py:4745
#, python-format
msgid "Make %s and %s metacontacts"
msgstr "Faire de %s et %s des métacontacts"
@@ -10160,129 +10548,129 @@ msgstr "Faire de %s et %s des métacontacts"
#. for chat_with
#. for single message
#. join gc
-#: ../src/roster_window.py:5098 ../src/roster_window.py:5152
-#: ../src/roster_window.py:5161 ../src/statusicon.py:264
+#: ../src/roster_window.py:5184 ../src/roster_window.py:5238
+#: ../src/roster_window.py:5247 ../src/statusicon.py:264
#: ../src/statusicon.py:311 ../src/statusicon.py:317
#, python-format
msgid "using account %s"
msgstr "du compte %s"
#. add
-#: ../src/roster_window.py:5168
+#: ../src/roster_window.py:5254
#, python-format
msgid "to %s account"
msgstr "au compte %s"
#. disco
-#: ../src/roster_window.py:5173
+#: ../src/roster_window.py:5259
#, python-format
msgid "using %s account"
msgstr "pour le compte %s"
-#: ../src/roster_window.py:5212 ../src/statusicon.py:327
+#: ../src/roster_window.py:5298 ../src/statusicon.py:327
msgid "_Manage Bookmarks..."
msgstr "Gérer les marque-pages..."
#. profile, avatar
-#: ../src/roster_window.py:5232
+#: ../src/roster_window.py:5318
#, python-format
msgid "of account %s"
msgstr "du compte %s"
-#: ../src/roster_window.py:5273
+#: ../src/roster_window.py:5359
#, python-format
msgid "for account %s"
msgstr "pour le compte %s"
-#: ../src/roster_window.py:5333 ../src/roster_window.py:5438
+#: ../src/roster_window.py:5419 ../src/roster_window.py:5527
msgid "_Change Status Message"
msgstr "_Changer le message d'état"
-#: ../src/roster_window.py:5366
+#: ../src/roster_window.py:5452
msgid "Publish Tune"
msgstr "Publier ce que j'écoute"
-#: ../src/roster_window.py:5368
+#: ../src/roster_window.py:5454
msgid "Publish Location"
msgstr "Publier la localisation"
-#: ../src/roster_window.py:5371
+#: ../src/roster_window.py:5457
msgid "Configure Services..."
msgstr "Configurer les Services..."
-#: ../src/roster_window.py:5516
+#: ../src/roster_window.py:5605
msgid "_Maximize All"
msgstr "Tout _maximiser"
-#: ../src/roster_window.py:5526 ../src/roster_window.py:5699
+#: ../src/roster_window.py:5615 ../src/roster_window.py:5788
msgid "Send Group M_essage"
msgstr "_Envoyer un message de groupe"
-#: ../src/roster_window.py:5534
+#: ../src/roster_window.py:5623
msgid "To all users"
msgstr "À tous les utilisateurs"
-#: ../src/roster_window.py:5538
+#: ../src/roster_window.py:5627
msgid "To all online users"
msgstr "À tous les utilisateurs connectés"
#. Manage Transport submenu
-#: ../src/roster_window.py:5719
+#: ../src/roster_window.py:5808
msgid "_Manage Contacts"
msgstr "_Gérer les Contacts"
#. Edit Groups
-#: ../src/roster_window.py:5728
+#: ../src/roster_window.py:5817
msgid "Edit _Groups"
msgstr "Éditer les _groupes"
#. Send single message
-#: ../src/roster_window.py:5783
+#: ../src/roster_window.py:5872
msgid "Send Single Message"
msgstr "Envoyer un message Simple"
#. Execute Command
-#: ../src/roster_window.py:5830
+#: ../src/roster_window.py:5919
msgid "Execute Command..."
msgstr "Exécuter une commande..."
#. Manage Transport submenu
-#: ../src/roster_window.py:5840
+#: ../src/roster_window.py:5929
msgid "_Manage Transport"
msgstr "_Gérer les Passerelles"
#. Modify Transport
-#: ../src/roster_window.py:5849
+#: ../src/roster_window.py:5938
msgid "_Modify Transport"
msgstr "_Modifier la Passerelle"
#. Rename
-#: ../src/roster_window.py:5859
+#: ../src/roster_window.py:5948
msgid "_Rename"
msgstr "_Renommer"
-#: ../src/roster_window.py:5919
+#: ../src/roster_window.py:6008
msgid "_Maximize"
msgstr "_Maximiser"
-#: ../src/roster_window.py:5928
+#: ../src/roster_window.py:6017
msgid "_Reconnect"
msgstr "_Reconnecter"
-#: ../src/roster_window.py:5935
+#: ../src/roster_window.py:6024
msgid "_Disconnect"
msgstr "_Déconnecter"
#. History manager
-#: ../src/roster_window.py:6024
+#: ../src/roster_window.py:6113
msgid "History Manager"
msgstr "Gestionnaire d'historique"
-#: ../src/roster_window.py:6035
+#: ../src/roster_window.py:6124
msgid "_Join New Group Chat"
msgstr "_Joindre un salon de discussion"
-#: ../src/roster_window.py:6254
+#: ../src/roster_window.py:6343
msgid "Change Status Message..."
msgstr "Changer le message d'état..."
@@ -10299,19 +10687,14 @@ msgstr "Erreur dans la forme des données reçues"
msgid "No result"
msgstr "Aucun résultat."
-#: ../src/session.py:95
-msgid "Disk WriteError"
-msgstr "Erreur d'écriture du disque"
-
-#: ../src/session.py:431 ../src/session.py:475
+#: ../src/session.py:411 ../src/session.py:470
msgid "Confirm these session options"
msgstr "Confirmer ces options de session"
-#: ../src/session.py:432
+#: ../src/session.py:413
#, python-format
msgid ""
-"The remote client wants '\n"
-" 'to negotiate an session with these features:\n"
+"The remote client wants to negotiate a session with these features:\n"
"\n"
"%s\n"
"\n"
@@ -10319,11 +10702,11 @@ msgid ""
msgstr ""
"Le client distant veut négocier une session avec ces fonctionnalités :\n"
"\n"
-"\t%s\n"
+"%s\n"
"\n"
-"\tCes options sont-elles acceptables ?"
+"Ces options sont-elles acceptables ?"
-#: ../src/session.py:476
+#: ../src/session.py:472
#, python-format
msgid ""
"The remote client selected these options:\n"
@@ -10338,6 +10721,10 @@ msgstr ""
"\n"
"Continuer la session ?"
+#: ../src/session.py:475
+msgid "Always accept for this contact"
+msgstr "Toujours accepter pour ce contact"
+
#: ../src/statusicon.py:228
msgid "_Change Status Message..."
msgstr "_Changer le message d'état..."
@@ -10350,134 +10737,134 @@ msgstr "Cacher la liste de contacts"
msgid "Hide this menu"
msgstr "Cacher ce menu"
-#: ../src/tooltips.py:392 ../src/tooltips.py:604
+#: ../src/tooltips.py:393 ../src/tooltips.py:610
msgid "Jabber ID: "
msgstr "Identifiant Jabber :"
-#: ../src/tooltips.py:395 ../src/tooltips.py:608
+#: ../src/tooltips.py:396 ../src/tooltips.py:614
msgid "Resource: "
msgstr "Ressource : "
-#: ../src/tooltips.py:401
+#: ../src/tooltips.py:402
#, python-format
msgid "%(owner_or_admin_or_member)s of this group chat"
msgstr "%(owner_or_admin_or_member)s de ce salon"
-#: ../src/tooltips.py:502
+#: ../src/tooltips.py:508
msgid " [blocked]"
msgstr " [bloqué]"
-#: ../src/tooltips.py:506
+#: ../src/tooltips.py:512
msgid " [minimized]"
msgstr " [minimisé]"
-#: ../src/tooltips.py:521 ../src/tooltips.py:777
+#: ../src/tooltips.py:527 ../src/tooltips.py:783
msgid "Status: "
msgstr "État : "
-#: ../src/tooltips.py:565
+#: ../src/tooltips.py:571
#, python-format
msgid "Last status: %s"
msgstr "Dernier état : %s"
-#: ../src/tooltips.py:567
+#: ../src/tooltips.py:573
#, python-format
msgid " since %s"
msgstr " depuis %s"
-#: ../src/tooltips.py:585
+#: ../src/tooltips.py:591
msgid "Connected"
msgstr "Connecté"
-#: ../src/tooltips.py:587
+#: ../src/tooltips.py:593
msgid "Disconnected"
msgstr "Déconnecté(e)"
#. ('both' is the normal sub so we don't show it)
-#: ../src/tooltips.py:615
+#: ../src/tooltips.py:621
msgid "Subscription: "
msgstr "Inscription : "
-#: ../src/tooltips.py:625
+#: ../src/tooltips.py:631
msgid "OpenPGP: "
msgstr "OpenPGP : "
-#: ../src/tooltips.py:646
+#: ../src/tooltips.py:652
#, python-format
msgid "Idle since %s"
msgstr "Inactif depuis %s"
-#: ../src/tooltips.py:647
+#: ../src/tooltips.py:653
#, python-format
msgid "Idle for %s"
msgstr "Inactif pour %s"
-#: ../src/tooltips.py:698
+#: ../src/tooltips.py:704
#, python-format
msgid "Mood: %s"
msgstr "Humeur : %s"
-#: ../src/tooltips.py:702
+#: ../src/tooltips.py:708
#, python-format
msgid "Activity: %s"
msgstr "Activité : %s"
-#: ../src/tooltips.py:706
+#: ../src/tooltips.py:712
#, python-format
msgid "Tune: %s"
msgstr "Ton : %s"
-#: ../src/tooltips.py:710
+#: ../src/tooltips.py:716
#, python-format
msgid "Location: %s"
msgstr "Localisation : %s"
-#: ../src/tooltips.py:735
+#: ../src/tooltips.py:741
msgid "Download"
msgstr "Télécharger"
-#: ../src/tooltips.py:741
+#: ../src/tooltips.py:747
msgid "Upload"
msgstr "Envoyer"
-#: ../src/tooltips.py:748
+#: ../src/tooltips.py:754
msgid "Type: "
msgstr "Type : "
-#: ../src/tooltips.py:752
+#: ../src/tooltips.py:758
msgid "Transferred: "
msgstr "Transféré : "
-#: ../src/tooltips.py:755 ../src/tooltips.py:776
+#: ../src/tooltips.py:761 ../src/tooltips.py:782
msgid "Not started"
msgstr "Non commencé"
-#: ../src/tooltips.py:759
+#: ../src/tooltips.py:765
msgid "Stopped"
msgstr "Arrêté"
-#: ../src/tooltips.py:761 ../src/tooltips.py:764
+#: ../src/tooltips.py:767 ../src/tooltips.py:770
msgid "Completed"
msgstr "Terminé"
-#: ../src/tooltips.py:768
+#: ../src/tooltips.py:774
msgid "?transfer status:Paused"
msgstr "?transfer status:En pause"
#. stalled is not paused. it is like 'frozen' it stopped alone
-#: ../src/tooltips.py:772
+#: ../src/tooltips.py:778
msgid "Stalled"
msgstr "Calé"
-#: ../src/tooltips.py:774
+#: ../src/tooltips.py:780
msgid "Transferring"
msgstr "En train de transférer"
-#: ../src/tooltips.py:812
+#: ../src/tooltips.py:818
msgid "This service has not yet responded with detailed information"
msgstr "Ce service n'a pas encore renvoyé d'informations détaillées"
-#: ../src/tooltips.py:815
+#: ../src/tooltips.py:821
msgid ""
"This service could not respond with detailed information.\n"
"It is most likely legacy or broken"
@@ -10485,39 +10872,43 @@ msgstr ""
"Ce service n'a pas renvoyé d'informations détaillées.\n"
"Il est probablement défectueux ou cassé"
-#: ../src/vcard.py:285
+#: ../src/upower_listener.py:31
+msgid "Machine going to sleep"
+msgstr "La machine se met en veille"
+
+#: ../src/vcard.py:289
msgid "?Client:Unknown"
msgstr "Inconnu"
-#: ../src/vcard.py:287
+#: ../src/vcard.py:291
msgid "?OS:Unknown"
msgstr "Inconnu"
-#: ../src/vcard.py:310
+#: ../src/vcard.py:316
msgid "?Time:Unknown"
msgstr "?Date:Inconnue"
-#: ../src/vcard.py:334 ../src/vcard.py:344 ../src/vcard.py:552
+#: ../src/vcard.py:340 ../src/vcard.py:350 ../src/vcard.py:558
#, python-format
msgid "since %s"
msgstr "depuis %s"
-#: ../src/vcard.py:367
+#: ../src/vcard.py:373
msgid "?Role in Group Chat:<b>Role:</b>"
-msgstr ""
+msgstr "<b>Role :</b>"
-#: ../src/vcard.py:371
+#: ../src/vcard.py:377
msgid "<b>Affiliation:</b>"
msgstr "<b>Affiliation :</b>"
-#: ../src/vcard.py:379
+#: ../src/vcard.py:385
msgid ""
"This contact is interested in your presence information, but you are not "
"interested in his/her presence"
msgstr ""
"Ce contact s'intéresse à votre état mais vous ne vous intéressez pas au sien"
-#: ../src/vcard.py:381
+#: ../src/vcard.py:387
msgid ""
"You are interested in the contact's presence information, but he/she is not "
"interested in yours"
@@ -10525,12 +10916,12 @@ msgstr ""
"Vous vous intéressez à l'état de ce contact mais il ne s'intéresse pas au "
"vôtre"
-#: ../src/vcard.py:383
+#: ../src/vcard.py:389
msgid "You and the contact are interested in each other's presence information"
msgstr "Vous et ce contact vous intéressez à vos états réciproques"
#. None
-#: ../src/vcard.py:385
+#: ../src/vcard.py:391
msgid ""
"You are not interested in the contact's presence, and neither he/she is "
"interested in yours"
@@ -10538,19 +10929,49 @@ msgstr ""
"Vous n'êtes pas intéressé par l'état de ce contact et il ne s'intéresse pas "
"au vôtre"
-#: ../src/vcard.py:392
+#: ../src/vcard.py:398
msgid "You are waiting contact's answer about your subscription request"
msgstr ""
"Vous attendez la réponse de ce contact pour votre demande de voir son état"
-#: ../src/vcard.py:394
+#: ../src/vcard.py:400
msgid "There is no pending subscription request."
msgstr "Il n'y a aucune requête d'inscription en attente."
-#: ../src/vcard.py:399 ../src/vcard.py:453 ../src/vcard.py:575
+#: ../src/vcard.py:405 ../src/vcard.py:459 ../src/vcard.py:581
msgid " resource with priority "
msgstr " ressource avec la priorité "
+#~ msgid "label"
+#~ msgstr "label"
+
+#~ msgid "Choose Client Cert"
+#~ msgstr "Choisissez le certificat client"
+
+#~ msgid "The path to the client certificate and key in PKCS#12 format"
+#~ msgstr "Chemin vers le certificat client et la clé au format PKCS#12"
+
+#~ msgid "Descrition:"
+#~ msgstr "Description :"
+
+#~ msgid "button"
+#~ msgstr "bouton"
+
+#~ msgid "Show Roster Fi_lter"
+#~ msgstr "Montrer le filtre de _liste de contacts"
+
+#~ msgid "error: cannot open %s for reading"
+#~ msgstr "erreur : impossible d'ouvrir %s en lecture"
+
+#~ msgid "A GTK+ jabber client"
+#~ msgstr "Un client Jabber en GTK+"
+
+#~ msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+#~ msgstr "Nécessite pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+
+#~ msgid "Disk WriteError"
+#~ msgstr "Erreur d'écriture du disque"
+
#~ msgid " a window/tab opened with that contact "
#~ msgstr "une fenêtre ou un onglet ouvert avec ce contact "
@@ -10696,11 +11117,9 @@ msgstr " ressource avec la priorité "
#~ msgid "Requires gpg and python-GnuPGInterface."
#~ msgstr "Nécessite gpg et python-GnuPGInterface."
-#, fuzzy
#~ msgid "one of: offline, online, chat, away, xa, dnd, invisible "
#~ msgstr "un parmi : offline, online, chat, away, xa, dnd, invisible "
-#, fuzzy
#~ msgid ""
#~ "Returns current status message(the global one unless account is specified)"
#~ msgstr ""
@@ -10714,7 +11133,6 @@ msgstr " ressource avec la priorité "
#~ "Usage: %s %s %s \n"
#~ "\t %s"
-#, fuzzy
#~ msgid ""
#~ "Too many arguments. \n"
#~ "Type \"%s help %s\" for more info"
@@ -10722,7 +11140,6 @@ msgstr " ressource avec la priorité "
#~ "Trop d'arguments.\n"
#~ "Tapez \"%(basename)s help %(command)s\" pour plus d'informations"
-#, fuzzy
#~ msgid ""
#~ "Argument \"%s\" is not specified. \n"
#~ "Type \"%s help %s\" for more info"
@@ -11038,18 +11455,9 @@ msgstr " ressource avec la priorité "
#~ msgid "Assign Open_PGP Key"
#~ msgstr "Assigner une clé Open_PGP"
-#~ msgid "Command not supported for zeroconf account."
-#~ msgstr "Commande non prise en charge pour les comptes zeroconf."
-
#~ msgid "Commands: %s"
#~ msgstr "Commandes : %s"
-#~ msgid "Usage: /%s, clears the text window."
-#~ msgstr "Usage : /%s, nettoie la fenêtre."
-
-#~ msgid "Usage: /%s, hide the chat buttons."
-#~ msgstr "Usage: /%s, cache les boutons de discussion."
-
#~ msgid ""
#~ "Usage: /%(command)s <action>, sends action to the current group chat. Use "
#~ "third person. (e.g. /%(command)s explodes.)"
@@ -11057,12 +11465,6 @@ msgstr " ressource avec la priorité "
#~ "Utilisation : /%(command)s <action>, envoie l'action au salon actuel. "
#~ "Utilise la troisième personne. (ex : /%(command)s explose.)"
-#~ msgid "Usage: /%s, sends a ping to the contact"
-#~ msgstr "Utilisation : /%s, envoie un ping au contact"
-
-#~ msgid "Usage: /%s, send the message to the contact"
-#~ msgstr "Usage: /%s, envoie le message au contact"
-
#~ msgid "No help info for /%s"
#~ msgstr "Pas d'aide disponible pour /%s"
@@ -11079,9 +11481,6 @@ msgstr " ressource avec la priorité "
#~ msgstr ""
#~ "Contact %(contact_jid)s invité dans le salon de discussion %(room_jid)s."
-#~ msgid "Nickname not found"
-#~ msgstr "Surnom introuvable : %s"
-
#~ msgid ""
#~ "Usage: /%s <nickname|JID> [reason], bans the JID from the group chat. The "
#~ "nickname of an occupant may be substituted, but not if it contains \"@\". "
@@ -11094,13 +11493,6 @@ msgstr " ressource avec la priorité "
#~ "le surnom."
#~ msgid ""
-#~ "Usage: /%s <nickname>, opens a private chat window with the specified "
-#~ "occupant."
-#~ msgstr ""
-#~ "Usage : /%s <surnom>, ouvre une fenêtre de conversation privée avec "
-#~ "l'occupant(e) spécifié(e)."
-
-#~ msgid ""
#~ "Usage: /%s [reason], closes the current window or tab, displaying reason "
#~ "if specified."
#~ msgstr ""
@@ -11139,9 +11531,6 @@ msgstr " ressource avec la priorité "
#~ msgid "Usage: /%s <nickname>, changes your nickname in current group chat."
#~ msgstr "Utilisation : /%s <surnom>, change votre surnom dans ce salon."
-#~ msgid "Usage: /%s , display the names of group chat occupants."
-#~ msgstr "Utilisation : /%s , affiche les noms des occupants du salon."
-
#~ msgid ""
#~ "Usage: /%s [topic], displays or updates the current group chat topic."
#~ msgstr ""
@@ -11323,15 +11712,9 @@ msgstr " ressource avec la priorité "
#~ msgid "Authenticate contact"
#~ msgstr "Renommer le contact"
-#~ msgid "Click to see past conversations with this contact"
-#~ msgstr "Cliquez ici pour voir les précédentes conversations avec ce contact"
-
#~ msgid "Click to see past conversation in this room"
#~ msgstr "Cliquez ici pour voir les précédentes conversations de ce salon"
-#~ msgid "Accept"
-#~ msgstr "Accepter"
-
#~ msgid "Invitation Received"
#~ msgstr "Invitation reçue"
diff --git a/po/ja.po b/po/ja.po
index ed8e4d64f..248820dc6 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Gajim 0.15 ja\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-09-02 18:31+0900\n"
-"PO-Revision-Date: 2011-09-02 19:09+0900\n"
+"POT-Creation-Date: 2012-01-22 18:48+0100\n"
+"PO-Revision-Date: 2012-01-22 21:59+0900\n"
"Last-Translator: Mako N <mako@pasero.net>\n"
"Language-Team: Japanese\n"
"Language: ja\n"
@@ -104,7 +104,7 @@ msgid "I want to _register for a new account"
msgstr "新しいアカウントを作成する (_r)"
#: ../data/gui/account_creation_wizard_window.ui.h:15
-#: ../data/gui/accounts_window.ui.h:28
+#: ../data/gui/accounts_window.ui.h:30
msgid "If checked, Gajim will remember the password for this account"
msgstr "チェックをつけると、Gajim はこのアカウントのパスワードを記憶します"
@@ -113,13 +113,14 @@ msgid "Manage..."
msgstr "管理..."
#: ../data/gui/account_creation_wizard_window.ui.h:17
-#: ../data/gui/accounts_window.ui.h:39 ../data/gui/change_mood_dialog.ui.h:3
-#: ../src/config.py:1289 ../src/config.py:1392 ../src/config.py:1703
-#: ../src/config.py:1708 ../src/config.py:2284 ../src/config.py:2363
-#: ../src/config.py:2376 ../src/config.py:3655 ../src/config.py:3730
+#: ../data/gui/accounts_window.ui.h:41 ../data/gui/change_mood_dialog.ui.h:3
+#: ../src/config.py:1265 ../src/config.py:1279 ../src/config.py:1284
+#: ../src/config.py:1332 ../src/config.py:1435 ../src/config.py:1746
+#: ../src/config.py:1751 ../src/config.py:2327 ../src/config.py:2406
+#: ../src/config.py:2419 ../src/config.py:3699 ../src/config.py:3774
#: ../src/dialogs.py:311 ../src/dialogs.py:313 ../src/dialogs.py:519
-#: ../src/dialogs.py:532 ../src/roster_window.py:3092
-#: ../src/roster_window.py:3098 ../src/roster_window.py:3103
+#: ../src/dialogs.py:532 ../src/roster_window.py:3139
+#: ../src/roster_window.py:3145 ../src/roster_window.py:3150
msgid "None"
msgstr "なし"
@@ -128,7 +129,7 @@ msgid "Prox_y:"
msgstr "プロキシ (_y)"
#: ../data/gui/account_creation_wizard_window.ui.h:19
-#: ../data/gui/accounts_window.ui.h:48
+#: ../data/gui/accounts_window.ui.h:50
msgid "Save pass_word"
msgstr "パスワードを保存する"
@@ -160,12 +161,12 @@ msgid "_Hostname:"
msgstr "ホスト名 (_H):"
#: ../data/gui/account_creation_wizard_window.ui.h:27
-#: ../data/gui/accounts_window.ui.h:61
+#: ../data/gui/accounts_window.ui.h:63
msgid "_Jabber ID:"
msgstr "Jabber ID (_J):"
#: ../data/gui/account_creation_wizard_window.ui.h:28
-#: ../data/gui/accounts_window.ui.h:63
+#: ../data/gui/accounts_window.ui.h:65
#: ../data/gui/manage_bookmarks_window.ui.h:8
msgid "_Password:"
msgstr "パスワード (_P):"
@@ -207,36 +208,41 @@ msgstr "アカウント"
msgid "Accounts"
msgstr "アカウント"
-#: ../data/gui/accounts_window.ui.h:8
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:8 ../src/dialogs.py:3384
+#: ../src/dialogs.py:3430
+msgid "Add"
+msgstr "追加"
+
+#: ../data/gui/accounts_window.ui.h:9
msgid "Administration operations"
msgstr "管理の操作"
-#: ../data/gui/accounts_window.ui.h:9
+#: ../data/gui/accounts_window.ui.h:10
msgid "Anonymous authentication"
msgstr "匿名の認証"
-#: ../data/gui/accounts_window.ui.h:10
+#: ../data/gui/accounts_window.ui.h:11
msgid "Auto-reconnect when connection is lost"
msgstr "切断したら自動で再接続する"
-#: ../data/gui/accounts_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:12
msgid "Browse..."
msgstr "参照..."
-#: ../data/gui/accounts_window.ui.h:12
+#: ../data/gui/accounts_window.ui.h:13
msgid "C_onnect on Gajim startup"
msgstr "Gajim 起動時に接続する (_o)"
-#: ../data/gui/accounts_window.ui.h:13
-#, fuzzy
+#: ../data/gui/accounts_window.ui.h:14
msgid "Certificate is e_ncrypted"
-msgstr "証明書は暗号化される (_e)"
+msgstr "証明書は暗号化されている (_n)"
-#: ../data/gui/accounts_window.ui.h:14
+#: ../data/gui/accounts_window.ui.h:15
msgid "Chan_ge Password"
msgstr "パスワードを変更する (_g)"
-#: ../data/gui/accounts_window.ui.h:15
+#: ../data/gui/accounts_window.ui.h:16
msgid ""
"Check this so Gajim will ask you before sending your password over an "
"insecure connection."
@@ -244,45 +250,51 @@ msgstr ""
"チェックをつけると、安全でない接続の前にパスワードを聞いてくるようになりま"
"す。"
-#: ../data/gui/accounts_window.ui.h:16
+#: ../data/gui/accounts_window.ui.h:17
msgid "Choose _Key..."
msgstr "鍵の選択 (_K)..."
-#: ../data/gui/accounts_window.ui.h:17
+#: ../data/gui/accounts_window.ui.h:18
msgid "Click to change account's password"
msgstr "アカウントのパスワードを変更するにはクリック"
-#: ../data/gui/accounts_window.ui.h:18
+#: ../data/gui/accounts_window.ui.h:19
msgid "Click to request authorization to all contacts of another account"
msgstr "別アカウントのすべての相手先に承認を求めるにはクリック"
-#: ../data/gui/accounts_window.ui.h:19
+#: ../data/gui/accounts_window.ui.h:20
msgid "Client certificate"
msgstr "クライアントの証明書"
-#: ../data/gui/accounts_window.ui.h:20
+#: ../data/gui/accounts_window.ui.h:21
msgid "Co_nnect on Gajim startup"
msgstr "Gajim 起動時に接続する (_n)"
-#: ../data/gui/accounts_window.ui.h:21
+#: ../data/gui/accounts_window.ui.h:22
msgid "Connection"
msgstr "接続"
-#: ../data/gui/accounts_window.ui.h:22
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:23 ../src/dialogs.py:3388
+#: ../src/dialogs.py:3485
+msgid "Delete"
+msgstr "削除"
+
+#: ../data/gui/accounts_window.ui.h:24
#: ../data/gui/zeroconf_information_window.ui.h:2
msgid "E-Mail:"
msgstr "E-メール:"
-#: ../data/gui/accounts_window.ui.h:23
+#: ../data/gui/accounts_window.ui.h:25
#: ../data/gui/zeroconf_information_window.ui.h:3
msgid "First Name:"
msgstr "名:"
#. No configured account
-#: ../data/gui/accounts_window.ui.h:24 ../data/gui/roster_window.ui.h:5
-#: ../src/common/helpers.py:1148 ../src/common/helpers.py:1160
-#: ../src/notify.py:311 ../src/notify.py:334 ../src/notify.py:383
-#: ../src/notify.py:399
+#: ../data/gui/accounts_window.ui.h:26 ../data/gui/roster_window.ui.h:5
+#: ../src/common/helpers.py:1168 ../src/common/helpers.py:1180
+#: ../src/notify.py:314 ../src/notify.py:337 ../src/notify.py:387
+#: ../src/notify.py:403
msgid "Gajim"
msgstr "Gajim"
@@ -290,14 +302,15 @@ msgstr "Gajim"
#. FIXME: Ugly workaround.
#. Maybe we haven't been in any group (defaults to General)
#. General group cannot be changed
-#: ../data/gui/accounts_window.ui.h:25 ../data/gui/preferences_window.ui.h:56
+#: ../data/gui/accounts_window.ui.h:27 ../data/gui/preferences_window.ui.h:57
#: ../src/common/contacts.py:132 ../src/dialogs.py:112 ../src/dialogs.py:124
-#: ../src/roster_window.py:3034 ../src/roster_window.py:5652
+#: ../src/roster_window.py:3081 ../src/roster_window.py:4148
+#: ../src/roster_window.py:5738
msgid "General"
msgstr "全般"
# (Mako)broadcast 困った。ここは「同報」で
-#: ../data/gui/accounts_window.ui.h:26
+#: ../data/gui/accounts_window.ui.h:28
msgid ""
"If checked, Gajim will also broadcast some more IPs except from just your "
"IP, so file transfer has higher chances of working."
@@ -305,13 +318,13 @@ msgstr ""
"チェックをつけると、Gajim はあなたの IP を除くいくつかの IP に同報します。そ"
"れによってファイル転送はうまくいく可能性が高くなります。"
-#: ../data/gui/accounts_window.ui.h:27
+#: ../data/gui/accounts_window.ui.h:29
msgid "If checked, Gajim will get the password from a GPG agent like seahorse"
msgstr ""
"チェックをつけると、Gajim は seahorse など GPG エージェントからパスワードを受"
"け取ります"
-#: ../data/gui/accounts_window.ui.h:29
+#: ../data/gui/accounts_window.ui.h:31
msgid ""
"If checked, Gajim will send keep-alive packets to prevent connection timeout "
"which results in disconnection"
@@ -319,7 +332,7 @@ msgstr ""
"チェックをつけると、Gajim はタイムアウトで接続が切れてしまうのを防ぐために生"
"存パケットを流すようになります"
-#: ../data/gui/accounts_window.ui.h:30
+#: ../data/gui/accounts_window.ui.h:32
msgid ""
"If checked, Gajim, when launched, will automatically connect to jabber using "
"this account"
@@ -327,7 +340,7 @@ msgstr ""
"チェックをつけると、Gajim は起動時に、このアカウントを使って jabber に自動的"
"に接続します"
-#: ../data/gui/accounts_window.ui.h:31
+#: ../data/gui/accounts_window.ui.h:33
msgid ""
"If checked, any change to the global status (handled by the combobox at the "
"bottom of the roster window) will change the status of this account "
@@ -336,7 +349,7 @@ msgstr ""
"チェックをつけると、(名簿ウィンドウの最下段の選択肢による)全体の在席状況の変"
"更がこのアカウントの在席状況の変更に反映されます。"
-#: ../data/gui/accounts_window.ui.h:32
+#: ../data/gui/accounts_window.ui.h:34
msgid ""
"If the default port that is used for incoming messages is unfitting for your "
"setup you can select another one here.\n"
@@ -346,39 +359,39 @@ msgstr ""
"ポートを指定できます。\n"
"ファイアーウォールの設定を考慮しましょう。"
-#: ../data/gui/accounts_window.ui.h:34
+#: ../data/gui/accounts_window.ui.h:36
msgid "Information about you, as stored in the server"
msgstr "サーバに格納する、あなたに関する情報です"
-#: ../data/gui/accounts_window.ui.h:35
-#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1826
+#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1869
#: ../src/dialogs.py:837
msgid "Jabber ID:"
msgstr "Jabber ID:"
-#: ../data/gui/accounts_window.ui.h:36
+#: ../data/gui/accounts_window.ui.h:38
#: ../data/gui/zeroconf_information_window.ui.h:5
msgid "Last Name:"
msgstr "姓:"
-#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/accounts_window.ui.h:39
msgid "Mer_ge accounts"
-msgstr "アカウントの統合 (_g)"
+msgstr "アカウントを統合 (_g)"
-#: ../data/gui/accounts_window.ui.h:38 ../src/config.py:1799
-#: ../src/config.py:2377
+#: ../data/gui/accounts_window.ui.h:40 ../src/config.py:1842
+#: ../src/config.py:2420
msgid "No key selected"
msgstr "鍵が選択されていません"
-#: ../data/gui/accounts_window.ui.h:40 ../data/gui/profile_window.ui.h:35
+#: ../data/gui/accounts_window.ui.h:42 ../data/gui/profile_window.ui.h:35
msgid "Personal Information"
msgstr "個人情報"
-#: ../data/gui/accounts_window.ui.h:41
+#: ../data/gui/accounts_window.ui.h:43
msgid "Priori_ty:"
msgstr "優先順位 (_t):"
-#: ../data/gui/accounts_window.ui.h:42
+#: ../data/gui/accounts_window.ui.h:44
msgid ""
"Priority is used in Jabber to determine who gets the events from the jabber "
"server when two or more clients are connected using the same account; The "
@@ -388,20 +401,20 @@ msgstr ""
"jabber サーバーからのイベントの受け取り先を決定するのに使われます。最も高い優"
"先順位のクライアントがイベントを受け取ります"
-#: ../data/gui/accounts_window.ui.h:43
+#: ../data/gui/accounts_window.ui.h:45
msgid "Priority will change automatically according to your status."
msgstr "優先順位は、在席状況に応じて自動的に変わります。"
#. Rename
-#: ../data/gui/accounts_window.ui.h:44 ../src/roster_window.py:5602
+#: ../data/gui/accounts_window.ui.h:46 ../src/roster_window.py:5688
msgid "Re_name"
msgstr "名前の変更 (_n)"
-#: ../data/gui/accounts_window.ui.h:45
+#: ../data/gui/accounts_window.ui.h:47
msgid "Resour_ce:"
msgstr "リソース (_c):"
-#: ../data/gui/accounts_window.ui.h:46
+#: ../data/gui/accounts_window.ui.h:48
msgid ""
"Resource is sent to the Jabber server in order to separate the same JID in "
"two or more parts depending on the number of the clients connected in the "
@@ -414,73 +427,73 @@ msgstr ""
"ソースを 'Home' と 'Work' として同時に接続しているかもしれません。最も優先順"
"位の高いリソースがイベントを受け取ります(下記参照)。"
-#: ../data/gui/accounts_window.ui.h:47
+#: ../data/gui/accounts_window.ui.h:49
msgid "Save conversation _logs for all contacts"
msgstr "すべての相手先の会話記録を保存する (_l)"
-#: ../data/gui/accounts_window.ui.h:49
+#: ../data/gui/accounts_window.ui.h:51
msgid "Send _keep-alive packets"
msgstr "生存パケットを送信する (_k)"
-#: ../data/gui/accounts_window.ui.h:50
+#: ../data/gui/accounts_window.ui.h:52
msgid "Synch_ronize account status with global status"
msgstr "アカウントの在席状況を全体の在席状況に合わせる (_r)"
-#: ../data/gui/accounts_window.ui.h:51
+#: ../data/gui/accounts_window.ui.h:53
msgid "Synchroni_ze account status with global status"
msgstr "アカウントの在席状況を全体の在席状況に合わせる (_z)"
-#: ../data/gui/accounts_window.ui.h:52
+#: ../data/gui/accounts_window.ui.h:54
#: ../data/gui/synchronise_select_account_dialog.ui.h:2
msgid "Synchronise contacts"
msgstr "相手先を合わせる"
-#: ../data/gui/accounts_window.ui.h:53
+#: ../data/gui/accounts_window.ui.h:55
msgid "Use G_PG Agent"
msgstr "GPG エージェントを使う (_P)"
-#: ../data/gui/accounts_window.ui.h:54
+#: ../data/gui/accounts_window.ui.h:56
msgid "Use cust_om hostname/port"
msgstr "別のホスト名/ポート番号を使う (_o)"
-#: ../data/gui/accounts_window.ui.h:55
+#: ../data/gui/accounts_window.ui.h:57
msgid "Use cust_om port:"
msgstr "別のポート番号を使う (_o):"
-#: ../data/gui/accounts_window.ui.h:56
+#: ../data/gui/accounts_window.ui.h:58
msgid "Use file transfer proxies"
msgstr "ファイル転送のプロキシを使う"
-#: ../data/gui/accounts_window.ui.h:57
+#: ../data/gui/accounts_window.ui.h:59
msgid "_Client Cert File:"
msgstr "クライアントの証明書ファイル (_C):"
-#: ../data/gui/accounts_window.ui.h:58
+#: ../data/gui/accounts_window.ui.h:60
msgid "_Edit Personal Information..."
msgstr "個人情報を編集する (_E)..."
#. XML Console enable checkbutton
-#: ../data/gui/accounts_window.ui.h:59 ../data/gui/xml_console_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:61 ../data/gui/xml_console_window.ui.h:11
msgid "_Enable"
msgstr "有効 (_E)"
-#: ../data/gui/accounts_window.ui.h:60
+#: ../data/gui/accounts_window.ui.h:62
msgid "_Hostname: "
msgstr "ホスト名 (_H):"
-#: ../data/gui/accounts_window.ui.h:62
+#: ../data/gui/accounts_window.ui.h:64 ../data/gui/preferences_window.ui.h:133
msgid "_Manage..."
msgstr "管理 (_M)..."
-#: ../data/gui/accounts_window.ui.h:64
+#: ../data/gui/accounts_window.ui.h:66
msgid "_Port: "
msgstr "ポート番号 (_P):"
-#: ../data/gui/accounts_window.ui.h:65
+#: ../data/gui/accounts_window.ui.h:67
msgid "_Warn before using an insecure connection"
msgstr "安全でない接続の前には警告する (_W)"
-#: ../data/gui/accounts_window.ui.h:66
+#: ../data/gui/accounts_window.ui.h:68
msgid "_use HTTP__PROXY environment variable"
msgstr "環境変数 HTTP__PROXY を使う (_u)"
@@ -496,7 +509,7 @@ msgstr "この相手先に自分の在席状況を見ることを許可する (_
msgid "Add New Contact"
msgstr "新しい相手先を追加する"
-#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1339
+#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1359
msgid "I would like to add you to my contact list."
msgstr "あなたを私の相手先リストに追加したいと思います。"
@@ -716,8 +729,8 @@ msgstr "遮断している相手先"
#: ../data/gui/blocked_contacts_window.ui.h:2
#: ../data/gui/contact_context_menu.ui.h:25
-#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5621
-#: ../src/roster_window.py:5748 ../src/roster_window.py:5881
+#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5707
+#: ../src/roster_window.py:5834 ../src/roster_window.py:5967
msgid "_Unblock"
msgstr "遮断の解除 (_U)"
@@ -778,7 +791,7 @@ msgid "Join _Group Chat"
msgstr "グループチャットに参加する (_G)"
#: ../data/gui/chat_context_menu.ui.h:2
-#: ../data/gui/contact_context_menu.ui.h:16
+#: ../data/gui/contact_context_menu.ui.h:17
msgid "_Add to Roster..."
msgstr "名簿に追加 (_A)..."
@@ -802,7 +815,7 @@ msgstr "リンク先をブラウザで開く (_O)"
#: ../data/gui/subscription_request_popup_menu.ui.h:1
#: ../data/gui/systray_context_menu.ui.h:6
msgid "_Start Chat"
-msgstr "チャットの開始 (_S)"
+msgstr "チャットを開始 (_S)"
#: ../data/gui/chat_control.ui.h:1
msgid "#"
@@ -881,16 +894,18 @@ msgid "Show the contact's profile (Ctrl+I)"
msgstr "相手先のプロフィールを表示する (Ctrl+I)"
#: ../data/gui/chat_control.ui.h:20
+#: ../src/command_system/implementation/standard.py:208
msgid "Toggle audio session"
msgstr "音声セッションにする/しない"
#: ../data/gui/chat_control.ui.h:21
+#: ../src/command_system/implementation/standard.py:218
msgid "Toggle video session"
msgstr "ビデオセッションにする/しない"
#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)
#: ../data/gui/chat_control.ui.h:23 ../data/gui/groupchat_control.ui.h:9
-#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:275
+#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:277
msgid "_Send"
msgstr "送信 (_S)"
@@ -936,17 +951,17 @@ msgstr "Open_PGP 鍵の割り当て..."
#: ../data/gui/contact_context_menu.ui.h:4
msgid "E_xecute Command..."
-msgstr "コマンドの実行 (_x)..."
+msgstr "コマンドを実行 (_x)..."
#: ../data/gui/contact_context_menu.ui.h:5
msgid "Edit _Groups..."
-msgstr "グループの変更 (_G)..."
+msgstr "グループを変更 (_G)..."
#. Invite to
#. Invite to Groupchat
#: ../data/gui/contact_context_menu.ui.h:6
-#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5557
-#: ../src/roster_window.py:5716
+#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5643
+#: ../src/roster_window.py:5802
msgid "In_vite to"
msgstr "招待 (_v)"
@@ -955,70 +970,70 @@ msgid "Invite _Contacts"
msgstr "相手先を招待 (_C)"
#: ../data/gui/contact_context_menu.ui.h:8
+msgid "M_anage Contact"
+msgstr "相手先を管理 (_a)"
+
+#: ../data/gui/contact_context_menu.ui.h:9
msgid "Remo_ve"
msgstr "削除 (_v)"
-#: ../data/gui/contact_context_menu.ui.h:9 ../src/roster_window.py:5567
-#: ../src/roster_window.py:5805
+#: ../data/gui/contact_context_menu.ui.h:10 ../src/roster_window.py:5653
+#: ../src/roster_window.py:5891
msgid "Send Cus_tom Status"
-msgstr "個別の在席状況の送信 (_t)"
+msgstr "個別の在席状況を送信 (_t)"
-#: ../data/gui/contact_context_menu.ui.h:10 ../data/gui/roster_window.ui.h:10
+#: ../data/gui/contact_context_menu.ui.h:11 ../data/gui/roster_window.ui.h:10
msgid "Send Single _Message..."
-msgstr "単発メッセージの送信 (_M)..."
+msgstr "単発メッセージを送信 (_M)..."
-#: ../data/gui/contact_context_menu.ui.h:11
+#: ../data/gui/contact_context_menu.ui.h:12
msgid "Send _File..."
-msgstr "ファイルの送信 (_S)..."
+msgstr "ファイルを送信 (_S)..."
-#: ../data/gui/contact_context_menu.ui.h:12
+#: ../data/gui/contact_context_menu.ui.h:13
msgid "Set Custom _Avatar..."
-msgstr "独自アバターの設定 (_A)..."
+msgstr "独自アバターを設定 (_A)..."
-#: ../data/gui/contact_context_menu.ui.h:13
+#: ../data/gui/contact_context_menu.ui.h:14
msgid "Start _Chat"
-msgstr "チャットの開始 (_C)"
+msgstr "チャットを開始 (_C)"
-#: ../data/gui/contact_context_menu.ui.h:14
+#: ../data/gui/contact_context_menu.ui.h:15
msgid "Toggle End to End Encryption"
msgstr "全線暗号化(E2EE) (トグル)"
-#: ../data/gui/contact_context_menu.ui.h:15
+#: ../data/gui/contact_context_menu.ui.h:16
msgid "Toggle Open_PGP Encryption"
msgstr "Open_PGP 暗号化 (トグル)"
-#: ../data/gui/contact_context_menu.ui.h:17
+#: ../data/gui/contact_context_menu.ui.h:18
msgid "_Allow him/her to see my status"
msgstr "自分の在席状況を見られることを許可する (_A)"
-#: ../data/gui/contact_context_menu.ui.h:18
-#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5629
-#: ../src/roster_window.py:5754 ../src/roster_window.py:5884
+#: ../data/gui/contact_context_menu.ui.h:19
+#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5715
+#: ../src/roster_window.py:5840 ../src/roster_window.py:5970
msgid "_Block"
msgstr "遮断 (_B)"
-#: ../data/gui/contact_context_menu.ui.h:19
+#: ../data/gui/contact_context_menu.ui.h:20
msgid "_Forbid him/her to see my status"
msgstr "自分の在席状況を見られることを禁止する (_F)"
-#: ../data/gui/contact_context_menu.ui.h:20
+#: ../data/gui/contact_context_menu.ui.h:21
#: ../data/gui/gc_control_popup_menu.ui.h:6
#: ../data/gui/gc_occupants_menu.ui.h:9 ../data/gui/roster_window.ui.h:23
-#: ../src/roster_window.py:5955
+#: ../src/roster_window.py:6041
msgid "_History"
msgstr "履歴 (_H)"
-#: ../data/gui/contact_context_menu.ui.h:21
+#: ../data/gui/contact_context_menu.ui.h:22
msgid "_Ignore"
msgstr "無視 (_I)"
-#: ../data/gui/contact_context_menu.ui.h:22
-msgid "_Manage Contact"
-msgstr "相手先の管理 (_M)"
-
#: ../data/gui/contact_context_menu.ui.h:23
msgid "_Rename..."
-msgstr "名前の変更 (_R)..."
+msgstr "名前を変更 (_R)..."
#: ../data/gui/contact_context_menu.ui.h:24
msgid "_Subscription"
@@ -1109,7 +1124,7 @@ msgstr ""
msgid "When a file transfer is complete show a popup notification"
msgstr "ファイル転送が完了したら、ポップアップで知らせる"
-#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:798
+#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:808
msgid "_Continue"
msgstr "続ける (_C)"
@@ -1118,7 +1133,8 @@ msgid "_Notify me when a file transfer is complete"
msgstr "ファイル転送が完了したら知らせる (_N)"
# #(Mako)Containing をどうする
-#: ../data/gui/filetransfers.ui.h:15 ../src/filetransfers_window.py:205
+#: ../data/gui/filetransfers.ui.h:15 ../src/chat_control.py:3236
+#: ../src/filetransfers_window.py:206
msgid "_Open Containing Folder"
msgstr "フォルダを開く (_O)"
@@ -1138,7 +1154,7 @@ msgstr "<b>チャット状態のタブの色</b>"
msgid "Account row"
msgstr "アカウントの行"
-#: ../data/gui/gajim_themes_window.ui.h:3 ../src/chat_control.py:1030
+#: ../data/gui/gajim_themes_window.ui.h:3 ../src/chat_control.py:1042
msgid "Bold"
msgstr "太字にする"
@@ -1174,7 +1190,7 @@ msgstr "グループの行"
msgid "Inactive"
msgstr "停止中"
-#: ../data/gui/gajim_themes_window.ui.h:12 ../src/chat_control.py:1031
+#: ../data/gui/gajim_themes_window.ui.h:12 ../src/chat_control.py:1043
msgid "Italic"
msgstr "イタリック"
@@ -1212,15 +1228,15 @@ msgstr "背景色 (_B):"
#: ../data/gui/gc_control_popup_menu.ui.h:1
msgid "Change _Nickname..."
-msgstr "ニックネームの変更 (_N)..."
+msgstr "ニックネームを変更 (_N)..."
#: ../data/gui/gc_control_popup_menu.ui.h:2
msgid "Change _Subject..."
-msgstr "談話室の題の変更 (_S)..."
+msgstr "談話室の題を変更 (_S)..."
#: ../data/gui/gc_control_popup_menu.ui.h:3
msgid "Configure _Room..."
-msgstr "談話室の調整 (_R)..."
+msgstr "談話室を調整 (_R)..."
#: ../data/gui/gc_control_popup_menu.ui.h:4 ../src/disco.py:1800
msgid "_Bookmark"
@@ -1228,11 +1244,11 @@ msgstr "ブックマーク (_B)"
#: ../data/gui/gc_control_popup_menu.ui.h:5
msgid "_Destroy Room"
-msgstr "談話室の閉鎖 (_D)"
+msgstr "談話室を閉鎖 (_D)"
#: ../data/gui/gc_control_popup_menu.ui.h:7
msgid "_Manage Room"
-msgstr "談話室の管理 (_M)"
+msgstr "談話室を管理 (_M)"
#: ../data/gui/gc_control_popup_menu.ui.h:8
msgid "_Minimize on close"
@@ -1252,7 +1268,7 @@ msgstr "在室者の操作"
#: ../data/gui/gc_occupants_menu.ui.h:4
msgid "Send _File"
-msgstr "ファイルの送信 (_F)"
+msgstr "ファイルを送信 (_F)"
#: ../data/gui/gc_occupants_menu.ui.h:5
msgid "_Add to Roster"
@@ -1351,13 +1367,13 @@ msgstr ""
#: ../data/gui/history_manager.ui.h:9
msgid "_Search Database"
-msgstr "データベースの検索 (_S)"
+msgstr "データベースを検索 (_S)"
#: ../data/gui/history_window.ui.h:1
msgid "All Chat Histories"
msgstr "すべてのチャットの履歴"
-#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:323
+#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:324
msgid "Conversation History"
msgstr "会話の履歴"
@@ -1374,10 +1390,18 @@ msgid "Search:"
msgstr "検索:"
#: ../data/gui/history_window.ui.h:6
+msgid "_In date search"
+msgstr "ある日の中で検索 (_I)"
+
+#: ../data/gui/history_window.ui.h:7
#: ../data/gui/zeroconf_information_window.ui.h:10
msgid "_Log conversation history"
msgstr "会話の履歴を記録 (_L)"
+#: ../data/gui/history_window.ui.h:8
+msgid "searching only in the selected day "
+msgstr "選択した日の中だけでの検索 "
+
#: ../data/gui/item_archiving_preferences_window.ui.h:1
msgid "approve"
msgstr ""
@@ -1442,7 +1466,7 @@ msgstr ""
msgid "Bro_wse Rooms"
msgstr "談話室を一覧 (_w)"
-#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2328
+#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2334
msgid "Join Group Chat"
msgstr "グループチャットに参加"
@@ -1466,7 +1490,7 @@ msgstr "最近使った:"
msgid "Room:"
msgstr "談話室:"
-#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1816
+#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1859
msgid "Server:"
msgstr "サーバー:"
@@ -1489,7 +1513,7 @@ msgstr "チェックをつけると、スタート時にこのグループチャ
#: ../data/gui/manage_bookmarks_window.ui.h:3
msgid "Manage Bookmarks"
-msgstr "ブックマークの管理"
+msgstr "ブックマークを管理"
#: ../data/gui/manage_bookmarks_window.ui.h:4
msgid "Minimi_ze on Auto Join"
@@ -1534,7 +1558,7 @@ msgstr "HTTP 接続"
#: ../data/gui/manage_proxies_window.ui.h:5
msgid "Manage Proxy Profiles"
-msgstr "プロクシの設定"
+msgstr "プロキシの設定"
#: ../data/gui/manage_proxies_window.ui.h:6
msgid "Pass_word:"
@@ -1558,7 +1582,7 @@ msgstr "HTTP プロキシを利用する (_y)"
#: ../data/gui/manage_proxies_window.ui.h:11
msgid "Use proxy auth_entication"
-msgstr "プロクシの認証を使用する (_e)"
+msgstr "プロキシの認証を使用する (_e)"
#: ../data/gui/manage_proxies_window.ui.h:12
msgid "_BOSH URL:"
@@ -1734,120 +1758,124 @@ msgid "All chat states"
msgstr "すべてのチャット状態"
#: ../data/gui/preferences_window.ui.h:25
-msgid "Allow _OS information to be sent"
-msgstr "OS 情報の送信を許可する (_O)"
+msgid "Allow client / _OS information to be sent"
+msgstr "クライアントや OS 情報の送信を許可する (_O)"
#: ../data/gui/preferences_window.ui.h:26
+msgid "Allow local system time information to be sent"
+msgstr "ローカルのシステムの時刻情報の送信を許可する (_O)"
+
+#: ../data/gui/preferences_window.ui.h:27
msgid "Allow my _idle time to be sent"
msgstr "操作しない時間の送信を許可する (_i)"
-#: ../data/gui/preferences_window.ui.h:27
+#: ../data/gui/preferences_window.ui.h:28
msgid "Allow popup/notifications when I'm _away/na/busy/invisible"
msgstr "離席/不在/取り込み中/隠れ中のポップアップ/通知を許可する (_a)"
-#: ../data/gui/preferences_window.ui.h:28
+#: ../data/gui/preferences_window.ui.h:29
msgid "Allow sound when I'm _busy"
msgstr "取り込み中でもサウンドを鳴らす (_b)"
-#: ../data/gui/preferences_window.ui.h:29
+#: ../data/gui/preferences_window.ui.h:30
msgid "Always"
msgstr "常に"
# (Mako)語順が難しい
-#: ../data/gui/preferences_window.ui.h:30
+#: ../data/gui/preferences_window.ui.h:31
msgid "Ask status message when I:"
msgstr "状況メッセージを求めるのは、私が "
-#: ../data/gui/preferences_window.ui.h:31 ../src/features_window.py:106
+#: ../data/gui/preferences_window.ui.h:32 ../src/features_window.py:106
msgid "Audio / Video"
msgstr "音声/ビデオ"
-#: ../data/gui/preferences_window.ui.h:32
+#: ../data/gui/preferences_window.ui.h:33
msgid "Audio input device"
msgstr "音声入力デバイス"
-#: ../data/gui/preferences_window.ui.h:33
+#: ../data/gui/preferences_window.ui.h:34
msgid "Audio output device"
msgstr "音声出力デバイス"
-#: ../data/gui/preferences_window.ui.h:34
+#: ../data/gui/preferences_window.ui.h:35
msgid "Chat message:"
msgstr "チャットメッセージ:"
-#: ../data/gui/preferences_window.ui.h:35
+#: ../data/gui/preferences_window.ui.h:36
msgid "Check on startup if Gajim is the _default Jabber client"
msgstr "起動時に、Gajim がデフォルトの Jabber クライアントかを調べる (_d)"
-#: ../data/gui/preferences_window.ui.h:36
+#: ../data/gui/preferences_window.ui.h:37
msgid "Composing only"
msgstr "入力中のみ"
-#: ../data/gui/preferences_window.ui.h:37
+#: ../data/gui/preferences_window.ui.h:38
msgid "Configure color and font of the interface"
msgstr "色とフォントの調整"
-#: ../data/gui/preferences_window.ui.h:38
+#: ../data/gui/preferences_window.ui.h:39
msgid "Contact's message:"
msgstr "相手先のメッセージ:"
-#: ../data/gui/preferences_window.ui.h:39
+#: ../data/gui/preferences_window.ui.h:40
msgid "Contact's nickname:"
msgstr "相手先のニックネーム:"
-#: ../data/gui/preferences_window.ui.h:40
+#: ../data/gui/preferences_window.ui.h:41
msgid "Custom"
msgstr "カスタム"
-#: ../data/gui/preferences_window.ui.h:41
+#: ../data/gui/preferences_window.ui.h:42
msgid "Detached roster with chat grouped by account"
msgstr "名簿は別ウィンドウ、チャットはアカウントでまとめたウィンドウ"
-#: ../data/gui/preferences_window.ui.h:42
+#: ../data/gui/preferences_window.ui.h:43
msgid "Detached roster with chat grouped by type"
msgstr "名簿は別ウィンドウ、チャットは種類でまとめたウィンドウ"
-#: ../data/gui/preferences_window.ui.h:43
+#: ../data/gui/preferences_window.ui.h:44
msgid "Detached roster with detached chats"
msgstr "名簿は別ウィンドウ、チャットは個々のウィンドウ"
-#: ../data/gui/preferences_window.ui.h:44
+#: ../data/gui/preferences_window.ui.h:45
msgid "Detached roster with single chat"
msgstr "名簿は別ウィンドウ、チャットはひとつにまとめたウィンドウ"
-#: ../data/gui/preferences_window.ui.h:45 ../src/config.py:170
-#: ../src/config.py:672
+#: ../data/gui/preferences_window.ui.h:46 ../src/config.py:171
+#: ../src/config.py:683
msgid "Disabled"
msgstr "無効"
-#: ../data/gui/preferences_window.ui.h:46
+#: ../data/gui/preferences_window.ui.h:47
msgid "Display _activity of contacts in roster"
msgstr "名簿に相手先の動向を表示する (_a)"
-#: ../data/gui/preferences_window.ui.h:47
+#: ../data/gui/preferences_window.ui.h:48
msgid "Display _extra email details"
msgstr "メールの詳細を表示する (_e)"
-#: ../data/gui/preferences_window.ui.h:48
+#: ../data/gui/preferences_window.ui.h:49
msgid "Display _location of contacts in roster"
msgstr "名簿に相手先の位置を表示する (_l)"
-#: ../data/gui/preferences_window.ui.h:49
+#: ../data/gui/preferences_window.ui.h:50
msgid "Display _tunes of contacts in roster"
msgstr "名簿に相手先の聴いている楽曲を表示する (_t)"
-#: ../data/gui/preferences_window.ui.h:50
+#: ../data/gui/preferences_window.ui.h:51
msgid "Display a_vatars of contacts in roster"
msgstr "名簿に相手先のアバターを表示する"
-#: ../data/gui/preferences_window.ui.h:51
+#: ../data/gui/preferences_window.ui.h:52
msgid "Display m_ood of contacts in roster"
msgstr "名簿に相手先の気分を表示する (_o)"
-#: ../data/gui/preferences_window.ui.h:52
+#: ../data/gui/preferences_window.ui.h:53
msgid "Display status _messages of contacts in roster"
msgstr "名簿に相手先の状況メッセージを表示する"
-#: ../data/gui/preferences_window.ui.h:53
+#: ../data/gui/preferences_window.ui.h:54
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1856,7 +1884,7 @@ msgstr ""
"Gajim は、相手先との会話に関連するメタ情報の送受信ができます。ここでは、"
"チャットウィンドウへのチャット状態の表示について指定します。"
-#: ../data/gui/preferences_window.ui.h:54
+#: ../data/gui/preferences_window.ui.h:55
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1865,7 +1893,7 @@ msgstr ""
"Gajim は、相手先との会話に関連するメタ情報の送受信ができます。ここでは、"
"チャット状態の他人への送信について指定します。"
-#: ../data/gui/preferences_window.ui.h:55
+#: ../data/gui/preferences_window.ui.h:56
msgid ""
"Gajim will notify you via a popup window in the bottom right of the screen "
"about contacts that just signed out"
@@ -1873,30 +1901,38 @@ msgstr ""
"画面の右下のポップアップウィンドウで、相手先がサインアウトしたときに通知しま"
"す"
-#: ../data/gui/preferences_window.ui.h:57
+#: ../data/gui/preferences_window.ui.h:58
+msgid "Global proxy:"
+msgstr "デフォルトのプロキシ:"
+
+#: ../data/gui/preferences_window.ui.h:59
msgid "Hide all buttons in chat windows"
msgstr "チャットウィンドウのすべてのボタンを隠します"
-#: ../data/gui/preferences_window.ui.h:58
+#: ../data/gui/preferences_window.ui.h:60
msgid ""
"If checked, Gajim will allow others to detect the operation system you are "
"using"
msgstr "チェックをつけると、Gajim は使用中の OS を知られることを許可します"
-#: ../data/gui/preferences_window.ui.h:59
+#: ../data/gui/preferences_window.ui.h:61
+msgid "If checked, Gajim will allow others to detect the time on your system"
+msgstr "チェックをつけると、Gajim はシステムの時刻を知られることを許可します"
+
+#: ../data/gui/preferences_window.ui.h:62
msgid ""
"If checked, Gajim will also include information about the sender of the new "
"emails"
msgstr "チェックをつけると、Gajim は電子メールの送信者の情報を含めます"
-#: ../data/gui/preferences_window.ui.h:60
+#: ../data/gui/preferences_window.ui.h:63
msgid ""
"If checked, Gajim will change status to Away when the computer is unused."
msgstr ""
"チェックをつけると、Gajim はコンピュータが使われていないとき、在席状況を「離"
"席中」に変更します"
-#: ../data/gui/preferences_window.ui.h:61
+#: ../data/gui/preferences_window.ui.h:64
msgid ""
"If checked, Gajim will change status to Not Available when the computer has "
"not been used even longer"
@@ -1904,7 +1940,7 @@ msgstr ""
"チェックをつけると、Gajim はコンピュータが長い間使われていないとき、在席状況"
"を「不在」に変更します"
-#: ../data/gui/preferences_window.ui.h:62
+#: ../data/gui/preferences_window.ui.h:65
msgid ""
"If checked, Gajim will display avatars of contacts in roster window and in "
"group chats"
@@ -1912,7 +1948,7 @@ msgstr ""
"チェックをつけると、Gajim は名簿ウィンドウとグループチャットに相手先のアバ"
"ターを表示します"
-#: ../data/gui/preferences_window.ui.h:63
+#: ../data/gui/preferences_window.ui.h:66
msgid ""
"If checked, Gajim will display status messages of contacts under the contact "
"name in roster window and in group chats"
@@ -1920,30 +1956,30 @@ msgstr ""
"チェックをつけると、Gajim は名簿ウィンドウとグループチャットの相手先名の下に"
"状況メッセージを表示します"
-#: ../data/gui/preferences_window.ui.h:64
+#: ../data/gui/preferences_window.ui.h:67
msgid ""
"If checked, Gajim will display the activity of contacts in the roster window"
msgstr "チェックをつけると、Gajim は名簿ウィンドウに相手先の動向を表示します"
-#: ../data/gui/preferences_window.ui.h:65
+#: ../data/gui/preferences_window.ui.h:68
msgid ""
"If checked, Gajim will display the location of contacts in the roster window"
msgstr ""
"チェックをつけると、Gajim は名簿ウィンドウに相手先の位置情報を表示します"
-#: ../data/gui/preferences_window.ui.h:66
+#: ../data/gui/preferences_window.ui.h:69
msgid ""
"If checked, Gajim will display the mood of contacts in the roster window"
msgstr "チェックをつけると、Gajim は名簿ウィンドウに相手先の気分を表示します"
-#: ../data/gui/preferences_window.ui.h:67
+#: ../data/gui/preferences_window.ui.h:70
msgid ""
"If checked, Gajim will display the tunes of contacts in the roster window"
msgstr ""
"チェックをつけると、Gajim は名簿ウィンドウに相手先の聴いている楽曲を表示しま"
"す"
-#: ../data/gui/preferences_window.ui.h:68
+#: ../data/gui/preferences_window.ui.h:71
msgid ""
"If checked, Gajim will highlight spelling errors in input fields of chat "
"windows. If no language is explicitly set via right click on the input "
@@ -1954,7 +1990,7 @@ msgstr ""
"ていない場合は、この相手先やグループチャットにはデフォルトの言語が適用されま"
"す。"
-#: ../data/gui/preferences_window.ui.h:69
+#: ../data/gui/preferences_window.ui.h:72
msgid ""
"If checked, Gajim will ignore incoming events from unauthorized contacts. "
"Use with caution, because it blocks all messages from any contact that is "
@@ -1963,7 +1999,7 @@ msgstr ""
"チェックをつけると、Gajim は承認していない相手先からのイベントを無視します。"
"名簿にない相手先からのすべてのメッセージを遮断しますので、注意してください。"
-#: ../data/gui/preferences_window.ui.h:70
+#: ../data/gui/preferences_window.ui.h:73
msgid ""
"If checked, Gajim will keep logs for encrypted messages. Please note that "
"when using E2E encryption the remote party has to agree on logging, else the "
@@ -1973,7 +2009,7 @@ msgstr ""
"号化 (E2EE) の場合は相手先が記録に同意していなければなりません。そうでなけれ"
"ば記録しないでください。"
-#: ../data/gui/preferences_window.ui.h:71
+#: ../data/gui/preferences_window.ui.h:74
msgid ""
"If checked, Gajim will show a notification when a new e-mail is received via "
"GMail"
@@ -1981,7 +2017,7 @@ msgstr ""
"チェックをつけると、Gajim は GMail 経由で新しいメールを受け取ったとき、通知し"
"ます"
-#: ../data/gui/preferences_window.ui.h:72
+#: ../data/gui/preferences_window.ui.h:75
msgid ""
"If checked, Gajim will use protocol-specific status icons. (eg. A contact "
"from MSN will have the equivalent msn icon for status online, away, busy, "
@@ -1991,7 +2027,7 @@ msgstr ""
"(例: MSN からの相手先にはオンライン、離席、取り込み中...などの対応する MSN の"
"アイコンがあります)"
-#: ../data/gui/preferences_window.ui.h:73
+#: ../data/gui/preferences_window.ui.h:76
msgid ""
"If enabled, Gajim will not ask for a status message. The specified default "
"message will be used instead."
@@ -1999,7 +2035,7 @@ msgstr ""
"チェックをつけると、Gajim は状況メッセージを要求しません。かわりに対応するデ"
"フォルトのメッセージが使われます。"
-#: ../data/gui/preferences_window.ui.h:74
+#: ../data/gui/preferences_window.ui.h:77
msgid ""
"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent "
"animated or static graphical emoticons"
@@ -2008,68 +2044,68 @@ msgstr ""
"ます"
# 起動時に名簿を表示するか
-#: ../data/gui/preferences_window.ui.h:75
+#: ../data/gui/preferences_window.ui.h:78
msgid "Last state"
msgstr "以前の状態"
-#: ../data/gui/preferences_window.ui.h:76
+#: ../data/gui/preferences_window.ui.h:79
msgid "Log _encrypted chat session"
msgstr "暗号化チャットを記録する (_e)"
-#: ../data/gui/preferences_window.ui.h:77
+#: ../data/gui/preferences_window.ui.h:80
msgid "Ma_ke message windows compact"
msgstr "メッセージウィンドウを簡潔にする (_k)"
-#: ../data/gui/preferences_window.ui.h:78
+#: ../data/gui/preferences_window.ui.h:81
msgid "Ma_nage..."
msgstr "設定 (_n)..."
# (Mako)systrayに表示
-#: ../data/gui/preferences_window.ui.h:79
+#: ../data/gui/preferences_window.ui.h:82
msgid "Never"
msgstr "しない"
-#: ../data/gui/preferences_window.ui.h:80
+#: ../data/gui/preferences_window.ui.h:83
msgid "Notifications"
msgstr "通知"
-#: ../data/gui/preferences_window.ui.h:81
+#: ../data/gui/preferences_window.ui.h:84
msgid "Notify me about contacts that sign _in"
msgstr "相手先のサインインを通知する (_i)"
-#: ../data/gui/preferences_window.ui.h:82
+#: ../data/gui/preferences_window.ui.h:85
msgid "Notify me about contacts that sign _out"
msgstr "相手先のサインアウトを通知する (_o)"
-#: ../data/gui/preferences_window.ui.h:83
+#: ../data/gui/preferences_window.ui.h:86
msgid "Notify me about it"
msgstr "それについて通知する"
-#: ../data/gui/preferences_window.ui.h:84
+#: ../data/gui/preferences_window.ui.h:87
msgid "Notify on new _GMail email"
msgstr "新しい GMail メールを通知する (_G)"
-#: ../data/gui/preferences_window.ui.h:85
+#: ../data/gui/preferences_window.ui.h:88
msgid "Only when pending events"
msgstr "保留イベントがあるときだけ"
-#: ../data/gui/preferences_window.ui.h:86
+#: ../data/gui/preferences_window.ui.h:89
msgid "Personal Events"
msgstr "個人イベント"
-#: ../data/gui/preferences_window.ui.h:87
+#: ../data/gui/preferences_window.ui.h:90
msgid "Play _sounds"
msgstr "サウンドを鳴らす (_s)"
-#: ../data/gui/preferences_window.ui.h:88
+#: ../data/gui/preferences_window.ui.h:91
msgid "Pop it up"
msgstr "ポップアップする"
-#: ../data/gui/preferences_window.ui.h:89
+#: ../data/gui/preferences_window.ui.h:92
msgid "Preferences"
msgstr "設定"
-#: ../data/gui/preferences_window.ui.h:90
+#: ../data/gui/preferences_window.ui.h:93
msgid ""
"STUN server hostname. If none given, Gajim will try\n"
"to discover one from server."
@@ -2077,33 +2113,33 @@ msgstr ""
"STUN サーバー。空なら、Gajim はサーバーから探索\n"
"しようとします。"
-#: ../data/gui/preferences_window.ui.h:92
+#: ../data/gui/preferences_window.ui.h:95
msgid "STUN server:"
msgstr "STUN サーバー:"
-#: ../data/gui/preferences_window.ui.h:93
+#: ../data/gui/preferences_window.ui.h:96
msgid "Show notification area icon:"
msgstr "通知エリアのアイコンの表示:"
-#: ../data/gui/preferences_window.ui.h:94
+#: ../data/gui/preferences_window.ui.h:97
msgid "Show only in roster"
msgstr "名簿にのみ表示する"
# (Mako)"Ask status message when I:" に続く語
-#: ../data/gui/preferences_window.ui.h:95
+#: ../data/gui/preferences_window.ui.h:98
msgid "Sign _in"
msgstr "サインインしたとき (_i)"
# (Mako)"Ask status message when I:" に続く語
-#: ../data/gui/preferences_window.ui.h:96
+#: ../data/gui/preferences_window.ui.h:99
msgid "Sign _out"
msgstr "サインアウトしたとき (_o)"
-#: ../data/gui/preferences_window.ui.h:97
+#: ../data/gui/preferences_window.ui.h:100
msgid "Single window for everything"
msgstr "すべてをひとつのウィンドウ"
-#: ../data/gui/preferences_window.ui.h:98
+#: ../data/gui/preferences_window.ui.h:101
msgid ""
"Some messages may include rich content (formatting, colors etc). If checked, "
"Gajim will just display the raw message text."
@@ -2111,27 +2147,27 @@ msgstr ""
"メッセージが装飾(書式や色など)を含んでいる場合があります。チェックをつける"
"と、Gajim はそのままのメッセージ文を表示します。"
-#: ../data/gui/preferences_window.ui.h:99
+#: ../data/gui/preferences_window.ui.h:102
msgid "Sort contacts by status"
msgstr "相手先を在席状況順に並べる"
-#: ../data/gui/preferences_window.ui.h:100 ../src/config.py:400
+#: ../data/gui/preferences_window.ui.h:103 ../src/config.py:401
msgid "Status"
msgstr "在席状況"
-#: ../data/gui/preferences_window.ui.h:101
+#: ../data/gui/preferences_window.ui.h:104
msgid "Status _iconset:"
msgstr "状況アイコン (_i):"
-#: ../data/gui/preferences_window.ui.h:102
+#: ../data/gui/preferences_window.ui.h:105
msgid "Style"
msgstr "スタイル"
-#: ../data/gui/preferences_window.ui.h:103
+#: ../data/gui/preferences_window.ui.h:106
msgid "T_heme:"
msgstr "テーマ (_h):"
-#: ../data/gui/preferences_window.ui.h:104
+#: ../data/gui/preferences_window.ui.h:107
msgid ""
"The auto away status message. If empty, Gajim will not change the current "
"status message\n"
@@ -2143,7 +2179,7 @@ msgstr ""
"$S は前の状況メッセージに置き換えられます\n"
"$T は自動離席の設定時間に置き換えられます"
-#: ../data/gui/preferences_window.ui.h:107
+#: ../data/gui/preferences_window.ui.h:110
msgid ""
"The auto not available status message. If empty, Gajim will not change the "
"current status message\n"
@@ -2155,131 +2191,135 @@ msgstr ""
"$S は前の状況メッセージに置き換えられます\n"
"$T は自動不在の設定時間に置き換えられます"
-#: ../data/gui/preferences_window.ui.h:110
+#: ../data/gui/preferences_window.ui.h:113
msgid "Use _transports icons"
msgstr "中継先のアイコンを使う (_t)"
-#: ../data/gui/preferences_window.ui.h:111
+#: ../data/gui/preferences_window.ui.h:114
msgid "Use default applications"
msgstr "デフォルトのアプリケーションを使う"
-#: ../data/gui/preferences_window.ui.h:112
+#: ../data/gui/preferences_window.ui.h:115
msgid "Use system _default"
msgstr "システムのデフォルトを使う (_d)"
-#: ../data/gui/preferences_window.ui.h:113
+#: ../data/gui/preferences_window.ui.h:116
msgid "Video framerate"
msgstr "ビデオのフレームレート"
-#: ../data/gui/preferences_window.ui.h:114
+#: ../data/gui/preferences_window.ui.h:117
msgid "Video input device"
msgstr "ビデオ入力デバイス"
-#: ../data/gui/preferences_window.ui.h:115
+#: ../data/gui/preferences_window.ui.h:118
msgid "Video output device"
msgstr "ビデオ出力デバイス"
-#: ../data/gui/preferences_window.ui.h:116
+#: ../data/gui/preferences_window.ui.h:119
msgid "Video size"
msgstr "ビデオの大きさ"
-#: ../data/gui/preferences_window.ui.h:117
+#: ../data/gui/preferences_window.ui.h:120
msgid "When new event is received:"
msgstr "新しいイベントを受信したとき:"
-#: ../data/gui/preferences_window.ui.h:118
+#: ../data/gui/preferences_window.ui.h:121
msgid "Your message:"
msgstr "あなたのメッセージ:"
-#: ../data/gui/preferences_window.ui.h:119
+#: ../data/gui/preferences_window.ui.h:122
msgid "Your nickname:"
msgstr "あなたのニックネーム:"
-#: ../data/gui/preferences_window.ui.h:120
+#: ../data/gui/preferences_window.ui.h:123
msgid "_Away after:"
msgstr "「離席中」にする (_A):"
-#: ../data/gui/preferences_window.ui.h:121
+#: ../data/gui/preferences_window.ui.h:124
msgid "_Browser:"
msgstr "ブラウザ (_B):"
-#: ../data/gui/preferences_window.ui.h:122
+#: ../data/gui/preferences_window.ui.h:125
msgid "_Display chat state notifications:"
msgstr "チャット状態通知を表示する (_D):"
-#: ../data/gui/preferences_window.ui.h:123
+#: ../data/gui/preferences_window.ui.h:126
msgid "_Emoticons:"
msgstr "感情アイコン (_E):"
-#: ../data/gui/preferences_window.ui.h:124
+#: ../data/gui/preferences_window.ui.h:127
msgid "_File manager:"
msgstr "ファイルマネージャ (_F):"
-#: ../data/gui/preferences_window.ui.h:125
+#: ../data/gui/preferences_window.ui.h:128
msgid "_Highlight misspelled words"
msgstr "スペル間違いを強調表示する (_H)"
-#: ../data/gui/preferences_window.ui.h:126
+#: ../data/gui/preferences_window.ui.h:129
msgid "_Ignore events from contacts not in the roster"
msgstr "名簿にない相手先からのイベントを無視する (_I)"
-#: ../data/gui/preferences_window.ui.h:127
+#: ../data/gui/preferences_window.ui.h:130
msgid "_Ignore rich content in incoming messages"
msgstr "受信したメッセージの書式を無視する (_I)"
-#: ../data/gui/preferences_window.ui.h:128
+#: ../data/gui/preferences_window.ui.h:131
msgid "_Log status changes of contacts"
msgstr "相手先の状況変更を記録する (_L)"
-#: ../data/gui/preferences_window.ui.h:129
+#: ../data/gui/preferences_window.ui.h:132
msgid "_Mail client:"
msgstr "メールクライアント (_M):"
-#: ../data/gui/preferences_window.ui.h:130
+#: ../data/gui/preferences_window.ui.h:134
msgid "_Not available after:"
msgstr "「不在」にする (_N):"
-#: ../data/gui/preferences_window.ui.h:131
+#: ../data/gui/preferences_window.ui.h:135
msgid "_Open..."
msgstr "開く (_O)..."
-#: ../data/gui/preferences_window.ui.h:132
+#: ../data/gui/preferences_window.ui.h:136
msgid "_Reset to Default Colors"
msgstr "デフォルトの色に戻す (_R)"
-#: ../data/gui/preferences_window.ui.h:133
+#: ../data/gui/preferences_window.ui.h:137
msgid "_Send chat state notifications:"
msgstr "チャット状態通知を送信する (_S):"
-#: ../data/gui/preferences_window.ui.h:134
+#: ../data/gui/preferences_window.ui.h:138
msgid "_Show roster on startup:"
msgstr "自動時に名簿を表示する (_S):"
-#: ../data/gui/preferences_window.ui.h:135
+#: ../data/gui/preferences_window.ui.h:139
msgid "_Status message:"
msgstr "状況メッセージ (_S):"
# (Mako)あえてカッコ書き
-#: ../data/gui/preferences_window.ui.h:136
+#: ../data/gui/preferences_window.ui.h:140
msgid "_URL highlight:"
msgstr "URL 強調表示 (_U):"
-#: ../data/gui/preferences_window.ui.h:137
+#: ../data/gui/preferences_window.ui.h:141
msgid "_Window behavior:"
msgstr "ウィンドウの配置 (_W):"
-#: ../data/gui/preferences_window.ui.h:138
+#: ../data/gui/preferences_window.ui.h:142
msgid "in _group chats"
msgstr "グループチャットで (_g)"
-#: ../data/gui/preferences_window.ui.h:139
+#: ../data/gui/preferences_window.ui.h:143
msgid "in _roster"
msgstr "名簿で (_r)"
-#: ../data/gui/preferences_window.ui.h:140
+#: ../data/gui/preferences_window.ui.h:144
msgid "minutes"
msgstr "分後"
+#: ../data/gui/privacy_lists_window.ui.h:1
+msgid "Privacy Lists:"
+msgstr "プライバシーリスト:"
+
#: ../data/gui/privacy_list_window.ui.h:1
msgid "<b>Add / Edit a rule</b>"
msgstr "<b>規則の追加/編集</b>"
@@ -2324,7 +2364,7 @@ msgstr "JabberID"
msgid "Order:"
msgstr "順位:"
-#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3966
+#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3979
msgid "Privacy List"
msgstr "プライバシーリスト"
@@ -2370,10 +2410,6 @@ msgstr "状況を私に送信すること"
msgid "to view my status"
msgstr "私の状況を見ること"
-#: ../data/gui/privacy_lists_window.ui.h:1
-msgid "Privacy Lists:"
-msgstr "プライバシーリスト:"
-
#: ../data/gui/profile_window.ui.h:1
#: ../data/gui/vcard_information_window.ui.h:1
msgid "<b>Address</b>"
@@ -2538,8 +2574,8 @@ msgstr "アカウントを Gajim とサーバーからも削除 (_s)"
#. Remove group
#. Remove
-#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5639
-#: ../src/roster_window.py:5764 ../src/roster_window.py:5894
+#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5725
+#: ../src/roster_window.py:5850 ../src/roster_window.py:5980
msgid "_Remove"
msgstr "削除 (_R)"
@@ -2598,8 +2634,8 @@ msgid "Show Only _Active Contacts"
msgstr "アクティブな相手先のみ表示 (_A)"
#: ../data/gui/roster_window.ui.h:12
-msgid "Show Trans_ports"
-msgstr "中継先を表示 (_p)"
+msgid "Show T_rans_ports"
+msgstr "中継先を表示 (_r)"
#: ../data/gui/roster_window.ui.h:13
msgid "Show _Offline Contacts"
@@ -2652,7 +2688,7 @@ msgid "_Add contact"
msgstr "相手先リストに追加 (_A)"
#. Information
-#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5906
+#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5992
msgid "_Information"
msgstr "情報 (_I)"
@@ -2872,7 +2908,7 @@ msgstr "_Presence"
#: ../data/gui/zeroconf_context_menu.ui.h:1
msgid "_Modify Account..."
-msgstr "アカウントの編集 (_M)"
+msgstr "アカウントを編集 (_M)"
#: ../data/gui/zeroconf_information_window.ui.h:6
msgid "Local jid:"
@@ -2953,7 +2989,7 @@ msgstr "整数型"
msgid "Text"
msgstr "文字列型"
-#: ../src/advanced_configuration_window.py:96 ../src/chat_control.py:1050
+#: ../src/advanced_configuration_window.py:96 ../src/chat_control.py:1062
msgid "Color"
msgstr "色"
@@ -2990,203 +3026,203 @@ msgstr[1] "新しいエントリーを受け取りました (%d 件が表示さ
#. #!/bin/sh
#. LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done)
#. echo "{_('en'):'en'",$LANG"}"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "English"
msgstr "英語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Belarusian"
msgstr "ベラルーシ語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Bulgarian"
msgstr "ブルガリア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Breton"
msgstr "ブルトン語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Czech"
msgstr "チェコ語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "German"
msgstr "ドイツ語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Greek"
msgstr "ギリシア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "British"
msgstr "英語 (イギリス)"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Esperanto"
msgstr "エスペラント"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Spanish"
msgstr "スペイン語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Basque"
msgstr "バスク語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "French"
msgstr "フランス語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Croatian"
msgstr "クロアチア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Italian"
msgstr "イタリア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Norwegian (b)"
msgstr "ノルウェー語 (b)"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Dutch"
msgstr "オランダ語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Norwegian"
msgstr "ノルウェー語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Polish"
msgstr "ポーランド語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Portuguese"
msgstr "ポルトガル語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Brazilian Portuguese"
msgstr "ポルトガル語 (ブラジル)"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Russian"
msgstr "ロシア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Serbian"
msgstr "セルビア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Slovak"
msgstr "スロバキア語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Swedish"
msgstr "スウェーデン語"
-#: ../src/chat_control.py:84
+#: ../src/chat_control.py:85
msgid "Chinese (Ch)"
msgstr "中国語 (Ch)"
-#: ../src/chat_control.py:227
+#: ../src/chat_control.py:228
msgid "Ping?"
msgstr "Ping?"
-#: ../src/chat_control.py:232
+#: ../src/chat_control.py:233
#, python-format
msgid "Pong! (%s s.)"
msgstr "Pong! (%s)"
-#: ../src/chat_control.py:237
+#: ../src/chat_control.py:238
msgid "Error."
msgstr "エラー"
-#: ../src/chat_control.py:562
+#: ../src/chat_control.py:574
msgid "Spelling language"
msgstr "スペルチェックの言語"
#. we are not connected
-#: ../src/chat_control.py:594 ../src/chat_control.py:810
+#: ../src/chat_control.py:606 ../src/chat_control.py:822
msgid "A connection is not available"
msgstr "接続は有効ではありません"
-#: ../src/chat_control.py:595 ../src/chat_control.py:811
+#: ../src/chat_control.py:607 ../src/chat_control.py:823
msgid "Your message can not be sent until you are connected."
msgstr "接続するまでメッセージは送信されません。"
-#: ../src/chat_control.py:1032
+#: ../src/chat_control.py:1044
msgid "Underline"
msgstr "下線"
-#: ../src/chat_control.py:1033
+#: ../src/chat_control.py:1045
msgid "Strike"
msgstr "抹消線"
-#: ../src/chat_control.py:1056
+#: ../src/chat_control.py:1068
msgid "Font"
msgstr "フォント"
-#: ../src/chat_control.py:1065
+#: ../src/chat_control.py:1077
msgid "Clear formating"
msgstr "書式のクリア"
-#: ../src/chat_control.py:1142
+#: ../src/chat_control.py:1154
msgid "Really send file?"
msgstr "ファイルを送信しますか ?"
-#: ../src/chat_control.py:1143
+#: ../src/chat_control.py:1155
#, python-format
msgid "If you send a file to %s, he/she will know your real Jabber ID."
msgstr ""
"ファイルを %s に送信すると、その相手はあなたの本当の Jabber ID を知ることにな"
"ります。"
-#: ../src/chat_control.py:1623 ../src/chat_control.py:2135
+#: ../src/chat_control.py:1638 ../src/chat_control.py:2172
msgid "GPG encryption enabled"
msgstr "GPG 暗号化は有効"
-#: ../src/chat_control.py:1644 ../src/chat_control.py:1647
+#: ../src/chat_control.py:1659 ../src/chat_control.py:1662
msgid "Requires python-farsight."
msgstr "python-farsight が必要です。"
#. Add to roster
-#: ../src/chat_control.py:1673 ../src/common/contacts.py:149
-#: ../src/common/contacts.py:270 ../src/common/helpers.py:60
-#: ../src/common/helpers.py:254 ../src/dialogs.py:1099 ../src/dialogs.py:2222
-#: ../src/dialogs.py:2251 ../src/gui_interface.py:467
-#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:404
-#: ../src/roster_window.py:1644 ../src/roster_window.py:1646
-#: ../src/roster_window.py:1979 ../src/roster_window.py:3507
-#: ../src/roster_window.py:3534
+#: ../src/chat_control.py:1702 ../src/common/contacts.py:149
+#: ../src/common/contacts.py:270 ../src/common/helpers.py:67
+#: ../src/common/helpers.py:261 ../src/dialogs.py:1099 ../src/dialogs.py:2228
+#: ../src/dialogs.py:2257 ../src/gui_interface.py:472
+#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:405
+#: ../src/roster_window.py:767 ../src/roster_window.py:1687
+#: ../src/roster_window.py:1689 ../src/roster_window.py:2022
+#: ../src/roster_window.py:3557 ../src/roster_window.py:3584
msgid "Not in Roster"
msgstr "名簿にありません"
-#: ../src/chat_control.py:1704
+#: ../src/chat_control.py:1734
msgid "This contact does not support file transfer."
msgstr "この相手先はファイル転送をサポートしていません。"
-#: ../src/chat_control.py:1707
+#: ../src/chat_control.py:1737
msgid "You need to know the real JID of the contact to send him or her a file."
msgstr "ファイル転送を行なうには、本当の JID を知っている必要があります。"
-#: ../src/chat_control.py:1814
+#: ../src/chat_control.py:1851
#, python-format
msgid "%(type)s state : %(state)s, reason: %(reason)s"
msgstr "%(type)s の状態: %(state)s 理由: %(reason)s"
-#: ../src/chat_control.py:2005
+#: ../src/chat_control.py:2042
#, python-format
msgid "%(nickname)s from group chat %(room_name)s"
msgstr "%(nickname)s さん (グループチャット %(room_name)s より)"
#. No key assigned nor a key is used by remote contact
-#: ../src/chat_control.py:2115 ../src/dialogs.py:5027
+#: ../src/chat_control.py:2152 ../src/dialogs.py:5040
msgid "No GPG key assigned"
msgstr "GPG 鍵が割り当てられていません"
-#: ../src/chat_control.py:2116
+#: ../src/chat_control.py:2153
msgid ""
"No GPG key is assigned to this contact. So you cannot encrypt messages with "
"GPG."
@@ -3194,52 +3230,52 @@ msgstr ""
"この相手先に GPG 鍵が割り当てられていないため、メッセージを GPG で暗号化する"
"ことができません。"
-#: ../src/chat_control.py:2125
+#: ../src/chat_control.py:2162
msgid "GPG encryption disabled"
msgstr "GPG 暗号化は無効"
-#: ../src/chat_control.py:2151
+#: ../src/chat_control.py:2188
msgid "Session WILL be logged"
msgstr "セッションは記録されます"
-#: ../src/chat_control.py:2153
+#: ../src/chat_control.py:2190
msgid "Session WILL NOT be logged"
msgstr "セッションは記録されません"
# (Mako)暗号化は有効 %s、
#. encryption %s active
-#: ../src/chat_control.py:2170
+#: ../src/chat_control.py:2207
msgid "is"
msgstr "で"
-#: ../src/chat_control.py:2170
+#: ../src/chat_control.py:2207
msgid "is NOT"
msgstr "でなく"
# #. チャットは記録 %s。
#. chat session %s be logged
-#: ../src/chat_control.py:2172
+#: ../src/chat_control.py:2209
msgid "will"
msgstr "記録されます"
-#: ../src/chat_control.py:2172
+#: ../src/chat_control.py:2209
msgid "will NOT"
msgstr "記録されません"
#. About encrypted chat session
-#: ../src/chat_control.py:2176
+#: ../src/chat_control.py:2213
msgid "and authenticated"
msgstr "認証されています"
#. About encrypted chat session
-#: ../src/chat_control.py:2180
+#: ../src/chat_control.py:2217
msgid "and NOT authenticated"
msgstr "認証されていません"
#. status will become 'is' or 'is not', authentificaed will become
#. 'and authentificated' or 'and not authentificated', logged will become
#. 'will' or 'will not'
-#: ../src/chat_control.py:2187
+#: ../src/chat_control.py:2224
#, python-format
msgid ""
"%(type)s encryption %(status)s active %(authenticated)s.\n"
@@ -3248,31 +3284,31 @@ msgstr ""
"%(type)s の暗号化は有効%(status)s、%(authenticated)s。\n"
"チャットは%(logged)s。"
-#: ../src/chat_control.py:2331
+#: ../src/chat_control.py:2351
msgid "Session negotiation cancelled"
msgstr "セッションの確率を中止しました"
-#: ../src/chat_control.py:2341
+#: ../src/chat_control.py:2361
msgid "This session WILL be archived on server"
msgstr "セッションはサーバーに記録されます"
-#: ../src/chat_control.py:2343
+#: ../src/chat_control.py:2363
msgid "This session WILL NOT be archived on server"
msgstr "セッションはサーバーに記録されません"
-#: ../src/chat_control.py:2352
+#: ../src/chat_control.py:2372
msgid "This session is encrypted"
msgstr "このセッションは暗号化されています"
-#: ../src/chat_control.py:2355
+#: ../src/chat_control.py:2375
msgid " and WILL be logged"
msgstr " かつ、記録されます"
-#: ../src/chat_control.py:2357
+#: ../src/chat_control.py:2377
msgid " and WILL NOT be logged"
msgstr " かつ、記録されません"
-#: ../src/chat_control.py:2362
+#: ../src/chat_control.py:2382
msgid ""
"Remote contact's identity not verified. Click the shield button for more "
"details."
@@ -3280,41 +3316,39 @@ msgstr ""
"遠くの相手先の同一性は検証されませんでした。詳しくは盾ボタンをクリックしてく"
"ださい。"
-#: ../src/chat_control.py:2364
+#: ../src/chat_control.py:2384
msgid "E2E encryption disabled"
msgstr "終端間暗号化 (E2EE) は無効"
-#: ../src/chat_control.py:2408 ../src/chat_control.py:2421
+#: ../src/chat_control.py:2432 ../src/chat_control.py:2445
msgid "The following message was NOT encrypted"
msgstr "次のメッセージは暗号化されませんでした"
-#: ../src/chat_control.py:2414
+#: ../src/chat_control.py:2438
msgid "The following message was encrypted"
msgstr "次のメッセージは暗号化されました"
#. %s is being replaced in the code with JID
-#: ../src/chat_control.py:2685
+#: ../src/chat_control.py:2707
#, python-format
msgid "You just received a new message from \"%s\""
msgstr "\"%s\" さんから新しいメッセージを受信しました"
-#: ../src/chat_control.py:2686
+#: ../src/chat_control.py:2708
msgid ""
"If you close this tab and you have history disabled, this message will be "
"lost."
msgstr ""
"このタブを閉じると、記録を残さない設定の場合、このメッセージは失われます。"
-#: ../src/chat_control.py:2853 ../src/common/connection.py:451
-#: ../src/common/connection_handlers.py:945
-#: ../src/common/connection_handlers.py:1055
-#: ../src/common/connection_handlers.py:1712
-#: ../src/common/connection_handlers_events.py:864
-#: ../src/common/logger.py:1126 ../src/gajim.py:203 ../src/session.py:97
+#: ../src/chat_control.py:2875 ../src/common/connection_handlers_events.py:887
+#: ../src/common/connection_handlers.py:942
+#: ../src/common/connection_handlers.py:1054 ../src/common/connection.py:456
+#: ../src/common/logger.py:1144 ../src/gajim.py:210 ../src/session.py:100
msgid "Database Error"
msgstr "データベースのエラー"
-#: ../src/chat_control.py:2854
+#: ../src/chat_control.py:2876
#, python-format
msgid ""
"The database file (%s) cannot be read. Try to repair it or remove it (all "
@@ -3323,7 +3357,7 @@ msgstr ""
"データベースファイル (%s) を読むことができません。修復するか、または削除(すべ"
"ての履歴は失われます)してください。"
-#: ../src/chat_control.py:3090 ../src/gui_interface.py:1032
+#: ../src/chat_control.py:3112 ../src/gui_interface.py:1061
#, python-format
msgid ""
"Unable to decrypt message from %s\n"
@@ -3332,11 +3366,248 @@ msgstr ""
"%s さんからのメッセージを復号できません\n"
"改竄の可能性があります。"
-#: ../src/chat_control.py:3123
+#: ../src/chat_control.py:3145
#, python-format
msgid "%(name)s is now %(status)s"
msgstr "%(name)s さんは現在、%(status)s"
+#: ../src/chat_control.py:3204
+msgid "File transfer"
+msgstr "ファイルの転送"
+
+#: ../src/chat_control.py:3207
+msgid "Size"
+msgstr "サイズ"
+
+#: ../src/chat_control.py:3209
+msgid "_Accept"
+msgstr "了承する (_A)"
+
+#: ../src/chat_control.py:3232 ../src/filetransfers_window.py:204
+msgid "File transfer completed"
+msgstr "ファイルの転送が完了しました"
+
+#: ../src/chat_control.py:3260 ../src/gui_interface.py:932
+#: ../src/roster_window.py:1934
+msgid "Remote contact stopped transfer"
+msgstr "遠くの相手先が転送を中止しました"
+
+#: ../src/chat_control.py:3262 ../src/gui_interface.py:935
+#: ../src/roster_window.py:1936
+msgid "Error opening file"
+msgstr "ファイルを開く際のエラー"
+
+#: ../src/chat_control.py:3264 ../src/filetransfers_window.py:240
+msgid "File transfer stopped"
+msgstr "ファイルの転送が中断しました"
+
+#: ../src/chat_control.py:3267 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:226
+msgid "File transfer cancelled"
+msgstr "ファイルの転送が中止されました"
+
+#: ../src/chat_control.py:3268 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:227
+msgid "Connection with peer cannot be established."
+msgstr "ピア接続は確立できませんでした。"
+
+#: ../src/command_system/implementation/custom.py:105
+msgid "The same as using a doc-string, except it supports translation"
+msgstr "使う文章は同じものとします (翻訳は除く)"
+
+#: ../src/command_system/implementation/execute.py:53
+msgid "Execute expression inside a shell, show output"
+msgstr "シェル内で表現を実行し、結果を表示します"
+
+#: ../src/command_system/implementation/execute.py:109
+msgid "Execute expression inside a shell, send output"
+msgstr "シェル内で表現を実行し、結果を送信します"
+
+#: ../src/command_system/implementation/standard.py:50
+msgid "Hide the chat buttons"
+msgstr "チャットボタンを隠します"
+
+#: ../src/command_system/implementation/standard.py:56
+msgid ""
+"Show help on a given command or a list of available commands if -a is given"
+msgstr "コマンドのヘルプを表示します。-a で、可能なコマンドの一覧を表示します"
+
+#: ../src/command_system/implementation/standard.py:83
+msgid "Send a message to the contact"
+msgstr "相手先にメッセージを送信します"
+
+#: ../src/command_system/implementation/standard.py:88
+msgid "Send action (in the third person) to the current chat"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:93
+msgid "Show logged messages which mention given text"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:99
+#, python-format
+msgid "%s: Nothing found"
+msgstr "%s: 見つかりません"
+
+#: ../src/command_system/implementation/standard.py:105
+msgid "Limit must be an integer"
+msgstr "制限は整数である必要があります"
+
+#: ../src/command_system/implementation/standard.py:140
+msgid ""
+"\n"
+" Set current the status\n"
+"\n"
+" Status can be given as one of the following values: online, away,\n"
+" chat, xa, dnd.\n"
+" "
+msgstr ""
+"\n"
+" 在席状況を設定します\n"
+"\n"
+" 在席状況は次のいずれかの値です: online (在席), away (離席中),\n"
+" chat (チャット可), xa (不在), dnd (取り込み中).\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:153
+msgid "Set the current status to away"
+msgstr "在席状況を「離席中」に設定します"
+
+#: ../src/command_system/implementation/standard.py:156
+#: ../src/common/commands.py:109 ../src/common/helpers.py:249
+#: ../src/tooltips.py:194
+msgid "Away"
+msgstr "離席中"
+
+#: ../src/command_system/implementation/standard.py:161
+msgid "Set the current status to online"
+msgstr "在席状況を「在席」に設定します"
+
+#: ../src/command_system/implementation/standard.py:164
+msgid "Available"
+msgstr "在席"
+
+#: ../src/command_system/implementation/standard.py:178
+#: ../src/command_system/implementation/standard.py:255
+#, fuzzy
+msgid "Clear the text window"
+msgstr "ウィンドウを閉じる"
+
+#: ../src/command_system/implementation/standard.py:183
+msgid "Toggle the GPG encryption"
+msgstr "GPGP 暗号化 (トグル)"
+
+#: ../src/command_system/implementation/standard.py:188
+msgid "Send a ping to the contact"
+msgstr "相手先に ping を送信します"
+
+#: ../src/command_system/implementation/standard.py:191
+msgid "Command is not supported for zeroconf accounts"
+msgstr "コマンドは、zeroconf アカウントには使えません"
+
+#: ../src/command_system/implementation/standard.py:195
+msgid "Send DTMF sequence through an open audio session"
+msgstr "接続している音声セッションに DTMF 手順を送信します"
+
+#: ../src/command_system/implementation/standard.py:198
+msgid "No open audio sessions with the contact"
+msgstr "この相手先と接続している音声セッションがありません"
+
+#: ../src/command_system/implementation/standard.py:201
+#, python-format
+msgid "%s is not a valid tone"
+msgstr "%s は有効なトーンではありません"
+
+#: ../src/command_system/implementation/standard.py:211
+msgid "Audio sessions are not available"
+msgstr "音声セッションは有効ではありません"
+
+#: ../src/command_system/implementation/standard.py:221
+msgid "Video sessions are not available"
+msgstr "ビデオセッションは有効ではありません"
+
+#: ../src/command_system/implementation/standard.py:262
+msgid "Change your nickname in a group chat"
+msgstr "グループチャットでニックネームを変更します"
+
+#. invalid char
+#: ../src/command_system/implementation/standard.py:267 ../src/config.py:3392
+#: ../src/dialogs.py:2075
+msgid "Invalid nickname"
+msgstr "ニックネームは有効ではありません"
+
+#: ../src/command_system/implementation/standard.py:272
+msgid "Open a private chat window with a specified occupant"
+msgstr "指定した在室者との私信のウィンドウを開きます"
+
+#: ../src/command_system/implementation/standard.py:278
+#: ../src/command_system/implementation/standard.py:287
+#: ../src/command_system/implementation/standard.py:341
+msgid "Nickname not found"
+msgstr "ニックネームは見つかりません"
+
+#: ../src/command_system/implementation/standard.py:281
+msgid ""
+"Open a private chat window with a specified occupant and send him a message"
+msgstr "指定した在室者との私信のウィンドウを開き、メッセージを送信します"
+
+#: ../src/command_system/implementation/standard.py:290
+msgid "Display or change a group chat topic"
+msgstr "グループチャットの題を表示または変更します"
+
+#: ../src/command_system/implementation/standard.py:298
+msgid "Invite a user to a room for a reason"
+msgstr "理由を添えて、談話室に招待します"
+
+#: ../src/command_system/implementation/standard.py:301
+#, python-format
+msgid "Invited %s to %s"
+msgstr "%s を %s に招待しました"
+
+#: ../src/command_system/implementation/standard.py:304
+msgid "Join a group chat given by a jid, optionally using given nickname"
+msgstr ""
+"指定する JID のグループチャットに参加します (ニックネームが指定されていればそ"
+"れを使って)"
+
+#: ../src/command_system/implementation/standard.py:321
+msgid ""
+"Leave the groupchat, optionally giving a reason, and close tab or window"
+msgstr ""
+"グループチャットから退出し (理由があればそれを送信します)、タブまたはウィンド"
+"ウを閉じます"
+
+#: ../src/command_system/implementation/standard.py:326
+msgid ""
+"\n"
+" Ban user by a nick or a jid from a groupchat\n"
+"\n"
+" If given nickname is not found it will be treated as a jid.\n"
+" "
+msgstr ""
+"\n"
+" ニックネームまたは JID で指定するユーザーをグループチャットから締め出しま"
+"す\n"
+"\n"
+" ニックネームが見つからなければ JID として扱います。\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:338
+msgid "Kick user by a nick from a groupchat"
+msgstr "ニックネームで指定するユーザーをグループチャットから蹴り出します"
+
+#: ../src/command_system/implementation/standard.py:345
+msgid "Display names of all group chat occupants"
+msgstr "グループチャットのすべての在室者の名前を表示します"
+
+#: ../src/command_system/implementation/standard.py:367
+msgid "Forbid an occupant to send you public or private messages"
+msgstr "在室者がメッセージ (私信も含む) を送ってくることを禁止します"
+
+#: ../src/command_system/implementation/standard.py:372
+msgid "Allow an occupant to send you public or private messages"
+msgstr "在室者がメッセージ (私信も含む) を送ってくることを許可します"
+
#: ../src/common/check_paths.py:38
msgid "creating logs database"
msgstr "記録データベースを作っています"
@@ -3371,89 +3642,84 @@ msgstr "%s はディレクトリです。ファイルでなければなりませ
msgid "creating %s directory"
msgstr "ディレクトリ %s を作ります"
-#: ../src/common/commands.py:82
+#: ../src/common/commands.py:85
msgid "Change status information"
msgstr "在席状況の変更"
-#: ../src/common/commands.py:97
+#: ../src/common/commands.py:100
msgid "Change status"
msgstr "在席状況を変更する"
-#: ../src/common/commands.py:98
+#: ../src/common/commands.py:101
msgid "Set the presence type and description"
msgstr "在席状況の種類と説明の設定"
-#: ../src/common/commands.py:104
+#: ../src/common/commands.py:107
msgid "Free for chat"
msgstr "チャットできます"
-#: ../src/common/commands.py:105
+#: ../src/common/commands.py:108
msgid "Online"
msgstr "オンライン"
-#: ../src/common/commands.py:106 ../src/common/helpers.py:242
-#: ../src/tooltips.py:193
-msgid "Away"
-msgstr "離席中"
-
-#: ../src/common/commands.py:107
+#: ../src/common/commands.py:110
msgid "Extended away"
msgstr "長時間不在です"
-#: ../src/common/commands.py:108
+#: ../src/common/commands.py:111
msgid "Do not disturb"
msgstr "邪魔しないでください"
-#: ../src/common/commands.py:109
+#: ../src/common/commands.py:112
msgid "Offline - disconnect"
msgstr "オフライン - 切断中"
-#: ../src/common/commands.py:114
+#: ../src/common/commands.py:117
msgid "Presence description:"
msgstr "在席状況の説明:"
-#: ../src/common/commands.py:149 ../src/common/commands.py:317
+#: ../src/common/commands.py:152 ../src/common/commands.py:320
msgid "The status has been changed."
msgstr "在席状況が変更されました。"
-#: ../src/common/commands.py:181 ../src/common/commands.py:207
+#: ../src/common/commands.py:184 ../src/common/commands.py:210
msgid "Leave Groupchats"
msgstr "グループチャットから退出"
-#: ../src/common/commands.py:197
+#: ../src/common/commands.py:200
#, python-format
msgid "%(nickname)s on %(room_jid)s"
msgstr "%(room_jid)s の %(nickname)s さん"
-#: ../src/common/commands.py:201
+#: ../src/common/commands.py:204
msgid "You have not joined a groupchat."
msgstr "グループチャットに参加していません。"
-#: ../src/common/commands.py:208
+#: ../src/common/commands.py:211
msgid "Choose the groupchats you want to leave"
msgstr "退出したいグループチャットを選択してください"
#. Make special context menu if group is Groupchats
-#: ../src/common/commands.py:212 ../src/common/contacts.py:128
-#: ../src/common/helpers.py:60 ../src/roster_window.py:817
-#: ../src/roster_window.py:1648 ../src/roster_window.py:1650
-#: ../src/roster_window.py:2512 ../src/roster_window.py:5524
+#: ../src/common/commands.py:215 ../src/common/contacts.py:128
+#: ../src/common/helpers.py:67 ../src/roster_window.py:820
+#: ../src/roster_window.py:1691 ../src/roster_window.py:1693
+#: ../src/roster_window.py:2557 ../src/roster_window.py:5610
msgid "Groupchats"
msgstr "グループチャット"
-#: ../src/common/commands.py:253
+#: ../src/common/commands.py:256
msgid "You left the following groupchats:"
msgstr "次のグループチャットから退出しました:"
-#: ../src/common/commands.py:265
+#: ../src/common/commands.py:268
msgid "Forward unread messages"
msgstr "未読メッセージの転送"
-#: ../src/common/commands.py:287
+#: ../src/common/commands.py:290
msgid "All unread messages have been forwarded."
msgstr "すべての未読メッセージが転送されました。"
-#: ../src/common/commands.py:295
+#: ../src/common/commands.py:298
msgid "Forward unread message then disconnect"
msgstr "未読メッセージを転送してから切断"
@@ -3552,9 +3818,9 @@ msgid ""
msgstr "折り畳む(アカウントやグループチャットの)行の一覧(空白で区切る)。"
#. sorted alphanum
-#: ../src/common/config.py:108 ../src/common/config.py:496
+#: ../src/common/config.py:108 ../src/common/config.py:504
#: ../src/common/optparser.py:296 ../src/common/optparser.py:492
-#: ../src/common/optparser.py:526 ../src/gui_interface.py:2634
+#: ../src/common/optparser.py:526 ../src/gui_interface.py:2668
msgid "default"
msgstr "デフォルト"
@@ -4199,7 +4465,15 @@ msgstr ""
"真なら、Gajim はグループチャットの参加者の分掌をステータスアイコンに色付き四"
"角をつけて表示します。"
-#: ../src/common/config.py:306
+#: ../src/common/config.py:293
+msgid ""
+"Proxy used for all outgoing connections if the account does not have a "
+"specific proxy configured"
+msgstr ""
+"アカウントで正しいプロキシの設定がなされていない場合に、外向きの通信に使われ"
+"るプロキシ"
+
+#: ../src/common/config.py:307
msgid ""
"Priority will change automatically according to your status. Priorities are "
"defined in autopriority_* options."
@@ -4207,7 +4481,7 @@ msgstr ""
"在席状況に応じて優先順位を自動的に変更します。優先順位は autopriority_* オプ"
"ションで定義します。"
-#: ../src/common/config.py:314
+#: ../src/common/config.py:315
msgid ""
"Status used to autoconnect as. Can be online, chat, away, xa, dnd, "
"invisible. NOTE: this option is used only if restore_last_status is disabled"
@@ -4217,82 +4491,100 @@ msgstr ""
"このオプションは restore_last_status が無効のときのみ使われます"
# (Mako) If enabled は If True であるべきだろう
-#: ../src/common/config.py:315
+#: ../src/common/config.py:316
msgid "If enabled, restore the last status that was used."
msgstr "真なら、最後に使われた在席状況を復元します。"
-#: ../src/common/config.py:317
+#: ../src/common/config.py:318
msgid ""
"If True, Contacts requesting authorization will be automatically accepted."
msgstr "真なら、相手先の承認の要求は自動的に了承されます。"
-#: ../src/common/config.py:318
+#: ../src/common/config.py:319
msgid ""
"If False, this account will be disabled and will not appear in roster window."
msgstr ""
"偽なら、このアカウントを無効にして、チャットウィンドウにアバターを表示しませ"
"ん。"
-#: ../src/common/config.py:321
+#: ../src/common/config.py:322
msgid ""
"If disabled, don't sign presences with GPG key, even if GPG is configured."
msgstr "偽なら、たとえ GPG が設定されていても、GPG 鍵による署名を行いません。"
-#: ../src/common/config.py:323
+#: ../src/common/config.py:324
msgid "Enable ESessions encryption for this account."
-msgstr "このアカウントの暗号化セッションを有効にする"
+msgstr "このアカウントの暗号化セッションを有効にします。"
-#: ../src/common/config.py:324
+#: ../src/common/config.py:325
msgid "Should Gajim automatically start an encrypted session when possible?"
msgstr "Gajim は(可能なら)自動的に暗号化セッションを始めるべきかどうか。"
-#: ../src/common/config.py:325
+#: ../src/common/config.py:326
msgid ""
"Ordered list (space separated) of connection type to try. Can contain tls, "
"ssl or plain"
msgstr "試みる接続の種類の順番(空白で区切る)。「tls」「ssl」または「plain」"
-#: ../src/common/config.py:326
+#: ../src/common/config.py:327
msgid ""
-"Show a warning dialog before sending password on an plaintext connection."
+"Show a warning dialog before sending password on an plaintext connection. "
+"Can be 'warn', 'connect', 'disconnect'"
msgstr ""
"暗号化されない接続の場合、パスワードを送る前に警告のダイアログを表示します。"
+"「warn」(警告する)「connect」(接続する)または「disconnect」(接続しない)"
-#: ../src/common/config.py:327
+#: ../src/common/config.py:328
msgid "Show a warning dialog before using standard SSL library."
msgstr "標準の SSL ライブラリを使う前に警告のダイアログを表示します。"
-#: ../src/common/config.py:328
+#: ../src/common/config.py:329
msgid ""
"Show a warning dialog before sending PLAIN password over a plain connection."
msgstr ""
"暗号化されない接続で平文でパスワードを送る前に、警告のダイアログを表示しま"
"す。"
-#: ../src/common/config.py:330
+#: ../src/common/config.py:331
msgid "Space separated list of ssl errors to ignore."
msgstr "無視すべき SSL のエラーの一覧(空白で区切って)。"
-#: ../src/common/config.py:339
+#: ../src/common/config.py:337
+msgid ""
+"Space separated list of JIDs for which you do not want to store logs. You "
+"can also add account name to log nothing for this account."
+msgstr ""
+"記録を保存しない JID の一覧(空白で区切って)。アカウント名を加えることもでき、"
+"そのアカウントについて記録を残しません。"
+
+#: ../src/common/config.py:338
+msgid ""
+"Space separated list of JIDs for which you accept to not log conversations "
+"if he does not want to."
+msgstr ""
+"相手が記録しないことを望む場合、記録しない会話を受け入れる JID の一覧(空白で"
+"区切って)。"
+
+#: ../src/common/config.py:341
msgid "Whitespace sent after inactivity"
msgstr "活動停止状態の後に送られる空白"
-#: ../src/common/config.py:340
+#: ../src/common/config.py:342
msgid "XMPP ping sent after inactivity"
msgstr "活動停止状態の後に XMPP ping を送ります"
-#: ../src/common/config.py:344
+#: ../src/common/config.py:346
msgid ""
"How many seconds to wait for the answer of ping alive packet before we try "
"to reconnect."
msgstr "生存パケットを送ってから再接続を試みるまで待機する時間(単位は秒)。"
#. yes, no, ask
-#: ../src/common/config.py:348
+#: ../src/common/config.py:350
msgid "Jabberd2 workaround"
msgstr "Jabberd2 対策"
-#: ../src/common/config.py:351
+#: ../src/common/config.py:353
msgid ""
"If checked, Gajim will use your IP and proxies defined in "
"file_transfer_proxies option for file transfer."
@@ -4300,24 +4592,33 @@ msgstr ""
"チェックをつけると、Gajim はあなたの IP とプロキシを使います。プロキシはファ"
"イル転送のために file_transfer_proxies オプションで定義します。"
-#: ../src/common/config.py:365
+#: ../src/common/config.py:354
+msgid ""
+"If True, Gajim will test file transfer proxies on startup to be sure it "
+"works. Openfire's proxies are known to fail this test even if they work."
+msgstr ""
+"真にすると、Gajim は起動時にファイル転送プロキシが正常に機能するかテストを行"
+"います。Openfire のプロキシは(正常に機能する場合でも)このテストに失敗すること"
+"がわかっています。"
+
+#: ../src/common/config.py:368
msgid "Answer to receipt requests"
msgstr "受領確認に応じる"
-#: ../src/common/config.py:366
+#: ../src/common/config.py:369
msgid "Sent receipt requests"
msgstr "受領確認を求める"
-#: ../src/common/config.py:375
+#: ../src/common/config.py:378
msgid ""
"Allow Gajim to send information about the operating system you are running."
msgstr "Gajim が使用中の OS を通知することを許可します。"
-#: ../src/common/config.py:376
+#: ../src/common/config.py:379
msgid "Allow Gajim to send your local time."
msgstr "Gajim があなたの現地時間を通知することを許可します。"
-#: ../src/common/config.py:377
+#: ../src/common/config.py:380
msgid ""
"When negotiating an encrypted session, should Gajim assume you want your "
"messages to be logged?"
@@ -4325,19 +4626,47 @@ msgstr ""
"暗号化セッションを確立しようとする際、メッセージの記録をとりたいと仮定するか"
"どうか"
-#: ../src/common/config.py:380
+#: ../src/common/config.py:383
msgid "Message that is sent to contacts you want to add"
msgstr "追加したい相手先に送られるメッセージ"
-#: ../src/common/config.py:381
+#: ../src/common/config.py:384
msgid "Last time we syncronized with logs from server."
msgstr "サーバーの履歴に同期した最後の時刻"
-#: ../src/common/config.py:443
+#: ../src/common/config.py:385
+msgid ""
+"If enabled and if server supports this feature, Gajim will receive messages "
+"sent and received by other resources."
+msgstr ""
+"真にすると(かつサーバーがこの機能をサポートしている場合)、Gajim はほかのリ"
+"ソースによって送受されたメッセージを受信します。"
+
+#: ../src/common/config.py:386
+msgid ""
+"If enabled, Gajim will send your local IPs so your contact can connect to "
+"your machine to transfer files."
+msgstr ""
+"真にすると、Gajim は相手先がファイル転送を行うためにあなたのローカル IP アド"
+"レスを送信します。"
+
+#: ../src/common/config.py:387
+msgid "Latest token for Oauth2 authentication."
+msgstr "最近の Oauth2 認証のトークン"
+
+#: ../src/common/config.py:388
+msgid "client_id for Oauth2 authentication."
+msgstr "Oauth2 認証のクライアント id"
+
+#: ../src/common/config.py:389
+msgid "redirect_url for Oauth2 authentication."
+msgstr "Oauth2 認証のリダイレクト URL"
+
+#: ../src/common/config.py:451
msgid "Is OpenPGP enabled for this contact?"
msgstr "この相手先に OpenPGP を使えるかどうか"
-#: ../src/common/config.py:444
+#: ../src/common/config.py:452
msgid ""
"Should Gajim automatically start an encrypted session with this contact when "
"possible?"
@@ -4345,11 +4674,11 @@ msgstr ""
"Gajim はこの相手先について自動的に(可能なら)暗号化セッションを始めるべきかど"
"うか"
-#: ../src/common/config.py:445 ../src/common/config.py:448
+#: ../src/common/config.py:453 ../src/common/config.py:456
msgid "Language for which we want to check misspelled words"
msgstr "スペル間違いを調べたい言語"
-#: ../src/common/config.py:451
+#: ../src/common/config.py:459
msgid ""
"State whether plugins should be activated on exit (this is saved on Gajim "
"exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI "
@@ -4359,83 +4688,83 @@ msgstr ""
"す)。このオプションをプラグインの有効化/無効化のために使用してはいけません。"
"代わりに GUI を使用してください。"
-#: ../src/common/config.py:456 ../src/common/pep.py:157
+#: ../src/common/config.py:464 ../src/common/pep.py:157
msgid "Sleeping"
msgstr "睡眠中"
-#: ../src/common/config.py:457
+#: ../src/common/config.py:465
msgid "Back soon"
msgstr "すぐに戻ります"
-#: ../src/common/config.py:457
+#: ../src/common/config.py:465
msgid "Back in some minutes."
msgstr "数分後に戻ります。"
-#: ../src/common/config.py:458 ../src/common/pep.py:127
+#: ../src/common/config.py:466 ../src/common/pep.py:127
msgid "Eating"
msgstr "食事"
-#: ../src/common/config.py:458
+#: ../src/common/config.py:466
msgid "I'm eating, so leave me a message."
msgstr "食事のため、しばらく離れます。"
-#: ../src/common/config.py:459
+#: ../src/common/config.py:467
msgid "Movie"
msgstr "映画"
-#: ../src/common/config.py:459
+#: ../src/common/config.py:467
msgid "I'm watching a movie."
msgstr "ただいま映画鑑賞中です。"
-#: ../src/common/config.py:460 ../src/common/pep.py:186
+#: ../src/common/config.py:468 ../src/common/pep.py:186
msgid "Working"
msgstr "仕事中"
-#: ../src/common/config.py:460
+#: ../src/common/config.py:468
msgid "I'm working."
msgstr "仕事中です。"
-#: ../src/common/config.py:461
+#: ../src/common/config.py:469
msgid "Phone"
msgstr "電話中"
-#: ../src/common/config.py:461
+#: ../src/common/config.py:469
msgid "I'm on the phone."
msgstr "電話中です。"
-#: ../src/common/config.py:462
+#: ../src/common/config.py:470
msgid "Out"
msgstr "外出中"
-#: ../src/common/config.py:462
+#: ../src/common/config.py:470
msgid "I'm out enjoying life."
msgstr "出かけています。"
-#: ../src/common/config.py:473
+#: ../src/common/config.py:481
msgid "I'm available."
msgstr "在席しています。"
-#: ../src/common/config.py:474
+#: ../src/common/config.py:482
msgid "I'm free for chat."
msgstr "チャットできます。"
-#: ../src/common/config.py:475 ../src/config.py:1609
+#: ../src/common/config.py:483 ../src/config.py:1652
msgid "Be right back."
msgstr "すぐ戻ります。"
-#: ../src/common/config.py:476
+#: ../src/common/config.py:484
msgid "I'm not available."
msgstr "不在です。"
-#: ../src/common/config.py:477
+#: ../src/common/config.py:485
msgid "Do not disturb."
msgstr "邪魔しないでください。"
-#: ../src/common/config.py:478 ../src/common/config.py:479
+#: ../src/common/config.py:486 ../src/common/config.py:487
msgid "Bye!"
msgstr "バイバイ !"
-#: ../src/common/config.py:489
+#: ../src/common/config.py:497
msgid ""
"Sound to play when a group chat message contains one of the words in "
"muc_highlight_words, or when a group chat message contains your nickname."
@@ -4443,184 +4772,375 @@ msgstr ""
"グループチャットのメッセージに、muc_highlight_words で設定した語、またはあな"
"たのニックネームが含まれる場合にサウンドを鳴らします。"
-#: ../src/common/config.py:490
+#: ../src/common/config.py:498
msgid "Sound to play when any MUC message arrives."
msgstr "グループチャットのメッセージがあった際にサウンドを鳴らします。"
-#: ../src/common/config.py:499 ../src/common/optparser.py:310
+#: ../src/common/config.py:507 ../src/common/optparser.py:310
msgid "green"
msgstr "green"
-#: ../src/common/config.py:503 ../src/common/optparser.py:296
+#: ../src/common/config.py:511 ../src/common/optparser.py:296
msgid "grocery"
msgstr "grocery"
-#: ../src/common/config.py:507
+#: ../src/common/config.py:515
msgid "human"
msgstr "human"
-#: ../src/common/config.py:511
+#: ../src/common/config.py:519
msgid "marine"
msgstr "marine"
-#: ../src/common/connection.py:68
+#: ../src/common/config.py:526
+msgid "Tor"
+msgstr ""
+
+#: ../src/common/connection_handlers_events.py:367
+#, python-format
+msgid ""
+"JID %s is not RFC compliant. It will not be added to your roster. Use roster "
+"management tools such as http://jru.jabberstudio.org/ to remove it"
+msgstr ""
+"JID %s は規格(RFC)に合っていません。名簿には追加されません。これを削除するに"
+"は、http://jru.jabberstudio.org/ のような名簿管理ツールを使ってください。"
+
+# (Mako) 実際に使われている場所を確認していないが、強引に訳す
+#: ../src/common/connection_handlers_events.py:799
+#, python-format
+msgid "unsubscribe request from %s"
+msgstr "%s から継読中止の要求"
+
+#: ../src/common/connection_handlers_events.py:884
+#: ../src/common/connection_handlers.py:334
+#: ../src/common/connection_handlers.py:940
+#: ../src/common/connection_handlers.py:1052 ../src/common/connection.py:453
+#: ../src/common/logger.py:1142 ../src/gajim.py:392
+msgid "Disk Write Error"
+msgstr "ディスクの書き込みエラー"
+
+#: ../src/common/connection_handlers_events.py:888
+#: ../src/common/connection_handlers.py:943
+#: ../src/common/connection_handlers.py:1055 ../src/common/connection.py:457
+#: ../src/common/logger.py:1145 ../src/gajim.py:211 ../src/session.py:101
+#, python-format
+msgid ""
+"The database file (%s) cannot be read. Try to repair it (see http://trac."
+"gajim.org/wiki/DatabaseBackup) or remove it (all history will be lost)."
+msgstr ""
+"データベースファイル (%s) の読み込みができません。修復を試みる (http://trac."
+"gajim.org/wiki/DatabaseBackup を参照のこと) か、または削除して (すべての履歴"
+"は失われます) ください。"
+
+#. Room has been destroyed. see
+#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom
+#: ../src/common/connection_handlers_events.py:909
+msgid "Room has been destroyed"
+msgstr "談話室は閉鎖されました"
+
+#: ../src/common/connection_handlers_events.py:917
+#, python-format
+msgid "You can join this room instead: %s"
+msgstr "代わりに次の談話室に参加します: %s"
+
+#: ../src/common/connection_handlers_events.py:1001
+#: ../src/common/connection_handlers_events.py:1033
+#: ../src/common/connection_handlers_events.py:1049
+#: ../src/common/connection.py:263 ../src/config.py:2149 ../src/config.py:2158
+#: ../src/config.py:2226 ../src/config.py:3663 ../src/dataforms_widget.py:623
+#: ../src/dialogs.py:3092
+msgid "Invalid Jabber ID"
+msgstr "Jabber ID が正しくありません"
+
+#: ../src/common/connection_handlers_events.py:1002
+#: ../src/common/connection_handlers_events.py:1034
+#: ../src/common/connection_handlers_events.py:1050
+msgid "A message from a non-valid JID arrived, it has been ignored."
+msgstr "正しくない JID からメッセージが届きました。無視します。"
+
+#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
+#: ../src/common/connection_handlers_events.py:1076
+#: ../src/gui_interface.py:420 ../src/gui_interface.py:434
+#, python-format
+msgid "error while sending %(message)s ( %(error)s )"
+msgstr "%(message)s を送信する際にエラー ( %(error)s )"
+
+#: ../src/common/connection_handlers_events.py:1508
+#, python-format
+msgid "Unknown SSL error: %d"
+msgstr "未知の SSL エラー: %d"
+
+#: ../src/common/connection_handlers_events.py:2040 ../src/dialogs.py:2779
+#: ../src/notify.py:263
+msgid "New Single Message"
+msgstr "新着の単発メッセージ"
+
+#: ../src/common/connection_handlers_events.py:2042
+#, python-format
+msgid "New Single Message from %(nickname)s"
+msgstr "%(nickname)s からの新しい単発メッセージ"
+
+#: ../src/common/connection_handlers_events.py:2046 ../src/dialogs.py:2780
+#: ../src/notify.py:264
+msgid "New Private Message"
+msgstr "新着の私信"
+
+#: ../src/common/connection_handlers_events.py:2048
+#, python-format
+msgid "New Private Message from group chat %s"
+msgstr "グループチャット %s からの新着の私信"
+
+#: ../src/common/connection_handlers_events.py:2051
+#, python-format
+msgid "%(nickname)s: %(message)s"
+msgstr "%(nickname)s さん: %(message)s"
+
+#: ../src/common/connection_handlers_events.py:2054
+#, python-format
+msgid "Messaged by %(nickname)s"
+msgstr "%(nickname)s さんからのメッセージ"
+
+#: ../src/common/connection_handlers_events.py:2058 ../src/dialogs.py:2779
+#: ../src/notify.py:263
+msgid "New Message"
+msgstr "新着メッセージ"
+
+#: ../src/common/connection_handlers_events.py:2060
+#, python-format
+msgid "New Message from %(nickname)s"
+msgstr "%(nickname)s さんからの新着メッセージ"
+
+#: ../src/common/connection_handlers_events.py:2189
+#, python-format
+msgid "%(nick)s Changed Status"
+msgstr "%(nick)s さんの在席状況が変わりました"
+
+#: ../src/common/connection_handlers_events.py:2191
+#: ../src/groupchat_control.py:205 ../src/groupchat_control.py:1766
+#: ../src/history_window.py:448
+#, python-format
+msgid "%(nick)s is now %(status)s"
+msgstr "%(nick)s さんは現在 %(status)s"
+
+#: ../src/common/connection_handlers_events.py:2196 ../src/dialogs.py:2791
+#: ../src/notify.py:277
+msgid "Contact Changed Status"
+msgstr "相手先が在席状況を変更"
+
+#: ../src/common/connection_handlers_events.py:2198
+#, python-format
+msgid "%(nickname)s Signed In"
+msgstr "%(nickname)s さんがサインインしました"
+
+#. default value
+#: ../src/common/connection_handlers_events.py:2203 ../src/dialogs.py:2775
+#: ../src/notify.py:259
+msgid "Contact Signed In"
+msgstr "相手先がサインインしました"
+
+#: ../src/common/connection_handlers_events.py:2205
+#, python-format
+msgid "%(nickname)s Signed Out"
+msgstr "%(nickname)s さんがサインアウトしました"
+
+#: ../src/common/connection_handlers_events.py:2210 ../src/dialogs.py:2777
+#: ../src/notify.py:261
+msgid "Contact Signed Out"
+msgstr "相手先がサインアウトしました"
+
+# (Mako) idle をどうする
+#: ../src/common/connection_handlers.py:88
+#: ../src/common/zeroconf/connection_handlers_zeroconf.py:54
+msgid "Unable to load idle module"
+msgstr "アイドルモジュールをロードできません"
+
+#: ../src/common/connection_handlers.py:121
+#, python-format
+msgid "Registration information for transport %s has not arrived in time"
+msgstr "中継先 %s の登録情報が一定時間内に到達しませんでした"
+
+#: ../src/common/connection_handlers.py:129
+msgid "Registration succeeded"
+msgstr "登録が完了しました"
+
+#: ../src/common/connection_handlers.py:130
+#, python-format
+msgid "Registration with agent %s succeeded"
+msgstr "エージェント %s の登録は成功しました"
+
+#: ../src/common/connection_handlers.py:139
+msgid "Registration failed"
+msgstr "登録が失敗しました"
+
+#: ../src/common/connection_handlers.py:140
+#, python-format
+msgid ""
+"Registration with agent %(agent)s failed with error %(error)s: %(error_msg)s"
+msgstr "%(agent)s の登録は失敗しました。%(error)s: %(error_msg)s"
+
+#: ../src/common/connection_handlers.py:571 ../src/common/connection.py:1540
+msgid "Invisibility not supported"
+msgstr "「隠れています」はサポートされていません"
+
+#: ../src/common/connection_handlers.py:572 ../src/common/connection.py:1541
+#, python-format
+msgid "Account %s doesn't support invisibility."
+msgstr "アカウント %s は「隠れています」をサポートしていません。"
+
+#: ../src/common/connection_handlers.py:1714
+msgid "I would like to add you to my roster."
+msgstr "あなたを私の名簿に追加したいと思っています。"
+
+#: ../src/common/connection.py:70
msgid "Unable to get issuer certificate"
msgstr "発行者の証明書を取得できません"
-#: ../src/common/connection.py:69
+#: ../src/common/connection.py:71
msgid "Unable to get certificate CRL"
msgstr "証明書失効リストを取得できません"
-#: ../src/common/connection.py:70
+#: ../src/common/connection.py:72
msgid "Unable to decrypt certificate's signature"
msgstr "証明書の署名を復号できません"
-#: ../src/common/connection.py:71
+#: ../src/common/connection.py:73
msgid "Unable to decrypt CRL's signature"
msgstr "証明書失効リストの署名を復号できません"
-#: ../src/common/connection.py:72
+#: ../src/common/connection.py:74
msgid "Unable to decode issuer public key"
msgstr "発行者の公開鍵を復元できません"
-#: ../src/common/connection.py:73
+#: ../src/common/connection.py:75
msgid "Certificate signature failure"
msgstr "証明書の署名の失敗"
-#: ../src/common/connection.py:74
+#: ../src/common/connection.py:76
msgid "CRL signature failure"
msgstr "証明書失効リストの署名の失敗"
-#: ../src/common/connection.py:75
+#: ../src/common/connection.py:77
msgid "Certificate is not yet valid"
msgstr "証明書は検証されていません"
-#: ../src/common/connection.py:76
+#: ../src/common/connection.py:78
msgid "Certificate has expired"
msgstr "証明書は期限切れです"
-#: ../src/common/connection.py:77
+#: ../src/common/connection.py:79
msgid "CRL is not yet valid"
msgstr "証明書失効リストは検証されていません"
-#: ../src/common/connection.py:78
+#: ../src/common/connection.py:80
msgid "CRL has expired"
msgstr "証明書失効リストは有効期限が切れています"
-#: ../src/common/connection.py:79
+#: ../src/common/connection.py:81
msgid "Format error in certificate's notBefore field"
msgstr "証明書の notBefore (有効期限の始め)の書式のエラー"
-#: ../src/common/connection.py:80
+#: ../src/common/connection.py:82
msgid "Format error in certificate's notAfter field"
msgstr "証明書の notAfter (有効期限の終わり)の書式のエラー"
-#: ../src/common/connection.py:81
+#: ../src/common/connection.py:83
msgid "Format error in CRL's lastUpdate field"
msgstr "証明書失効リストの最終更新の書式のエラー"
-#: ../src/common/connection.py:82
+#: ../src/common/connection.py:84
msgid "Format error in CRL's nextUpdate field"
msgstr "証明書失効リストの次回更新の書式のエラー"
-#: ../src/common/connection.py:83
+#: ../src/common/connection.py:85
msgid "Out of memory"
msgstr "メモリが足りません"
-#: ../src/common/connection.py:84
+#: ../src/common/connection.py:86
msgid "Self signed certificate"
msgstr "自己署名証明書"
-#: ../src/common/connection.py:85
+#: ../src/common/connection.py:87
msgid "Self signed certificate in certificate chain"
msgstr "認証パス中の自己署名証明書"
-#: ../src/common/connection.py:86
+#: ../src/common/connection.py:88
msgid "Unable to get local issuer certificate"
msgstr "ローカルの発行者の証明書を取得できません"
# (Mako)The first は root のことか?
-#: ../src/common/connection.py:87
+#: ../src/common/connection.py:89
msgid "Unable to verify the first certificate"
msgstr "ルート証明書が検証できません"
-#: ../src/common/connection.py:88
+#: ../src/common/connection.py:90
msgid "Certificate chain too long"
msgstr "認証パスが長すぎます"
-#: ../src/common/connection.py:89
+#: ../src/common/connection.py:91
msgid "Certificate revoked"
msgstr "証明書は失効しています"
-#: ../src/common/connection.py:90
+#: ../src/common/connection.py:92
msgid "Invalid CA certificate"
msgstr "検証されない認証局証明書"
-#: ../src/common/connection.py:91
+#: ../src/common/connection.py:93
msgid "Path length constraint exceeded"
msgstr "パスの長さの制限を越えています"
-#: ../src/common/connection.py:92
+#: ../src/common/connection.py:94
msgid "Unsupported certificate purpose"
msgstr "証明書の目的はサポートされていません"
-#: ../src/common/connection.py:93
+#: ../src/common/connection.py:95
msgid "Certificate not trusted"
msgstr "証明書は信頼できません"
-#: ../src/common/connection.py:94
+#: ../src/common/connection.py:96
msgid "Certificate rejected"
msgstr "証明書は却下されました"
-#: ../src/common/connection.py:95
+#: ../src/common/connection.py:97
msgid "Subject issuer mismatch"
msgstr "サブジェクトの発行者が合致しません"
-#: ../src/common/connection.py:96
+#: ../src/common/connection.py:98
msgid "Authority and subject key identifier mismatch"
msgstr "機関とサブジェクトの鍵IDが合致しません"
-#: ../src/common/connection.py:97
+#: ../src/common/connection.py:99
msgid "Authority and issuer serial number mismatch"
msgstr "機関と発行者シリアル番号が合致しません"
-#: ../src/common/connection.py:98
+#: ../src/common/connection.py:100
msgid "Key usage does not include certificate signing"
msgstr "証明書署名に鍵の使い方が含まれていません"
-#: ../src/common/connection.py:99
+#: ../src/common/connection.py:101
msgid "Application verification failure"
msgstr "アプリケーションの検証に失敗しました"
-#: ../src/common/connection.py:259
-#: ../src/common/connection_handlers_events.py:967 ../src/config.py:2106
-#: ../src/config.py:2115 ../src/config.py:2183 ../src/config.py:3619
-#: ../src/dataforms_widget.py:623 ../src/dialogs.py:3079
-msgid "Invalid Jabber ID"
-msgstr "Jabber ID が正しくありません"
-
-#: ../src/common/connection.py:260 ../src/dialogs.py:3080
+#: ../src/common/connection.py:264 ../src/dialogs.py:3093
#, python-format
msgid "It is not possible to send a message to %s, this JID is not valid."
msgstr "%s さんにメッセージを送ることができません。JID が正しくありません。"
# (Mako) ここでは presence を「相手先」と訳す
-#: ../src/common/connection.py:282
+#: ../src/common/connection.py:286
msgid "Neither the remote presence is signed, nor a key was assigned."
msgstr "相手先が署名していないか、鍵が割り当てられていません。"
-#: ../src/common/connection.py:285
+#: ../src/common/connection.py:289
#, python-format
msgid "The contact's key (%s) does not match the key assigned in Gajim."
msgstr "相手先の鍵 (%s) は、Gajim で割り当てられている鍵と合致しません。"
-#. we're not english
-#. one in locale and one en
-#: ../src/common/connection.py:337
+#. we're not english: one in locale and one en
+#: ../src/common/connection.py:342
msgid "[This message is *encrypted* (See :XEP:`27`]"
msgstr "[このメッセージは *暗号化されています* (参考 :XEP:`27`]"
-#: ../src/common/connection.py:435
+#: ../src/common/connection.py:440
#, python-format
msgid ""
"Subject: %(subject)s\n"
@@ -4629,97 +5149,73 @@ msgstr ""
"件名: %(subject)s\n"
"%(message)s"
-#: ../src/common/connection.py:448 ../src/common/connection_handlers.py:339
-#: ../src/common/connection_handlers.py:943
-#: ../src/common/connection_handlers.py:1053
-#: ../src/common/connection_handlers.py:1710
-#: ../src/common/connection_handlers_events.py:861
-#: ../src/common/logger.py:1124 ../src/gajim.py:385
-msgid "Disk Write Error"
-msgstr "ディスクの書き込みエラー"
-
-#: ../src/common/connection.py:452 ../src/common/connection_handlers.py:946
-#: ../src/common/connection_handlers.py:1056
-#: ../src/common/connection_handlers.py:1713
-#: ../src/common/connection_handlers_events.py:865
-#: ../src/common/logger.py:1127 ../src/gajim.py:204 ../src/session.py:98
-#, python-format
-msgid ""
-"The database file (%s) cannot be read. Try to repair it (see http://trac."
-"gajim.org/wiki/DatabaseBackup) or remove it (all history will be lost)."
-msgstr ""
-"データベースファイル (%s) の読み込みができません。修復を試みる (http://trac."
-"gajim.org/wiki/DatabaseBackup を参照のこと) か、または削除して (すべての履歴"
-"は失われます) ください。"
-
-#: ../src/common/connection.py:845
+#: ../src/common/connection.py:850
#, python-format
msgid "Connection with account \"%s\" has been lost"
msgstr "アカウント \"%s\" での接続が切れました"
-#: ../src/common/connection.py:846
+#: ../src/common/connection.py:851
msgid "Reconnect manually."
msgstr "手動で再接続してください。"
#. it's a new account
#. wrong answer
-#: ../src/common/connection.py:857
+#: ../src/common/connection.py:862
#, python-format
msgid "Server %(name)s answered wrongly to register request: %(error)s"
msgstr "サーバー %(name)s は登録要求に対してエラーを返しました: %(error)s"
#. requested config has changed since first connection
-#: ../src/common/connection.py:899
+#: ../src/common/connection.py:904
#, python-format
msgid "Server %s provided a different registration form"
msgstr "サーバー %s は異なる登録フォームを提供しています"
-#. wrong answer
-#: ../src/common/connection.py:915
+#: ../src/common/connection.py:921
msgid "Invalid answer"
msgstr "応答が正しくありません"
-#: ../src/common/connection.py:916
+#: ../src/common/connection.py:922
#, python-format
msgid "Transport %(name)s answered wrongly to register request: %(error)s"
msgstr "中継先 %(name)s は登録要求に対してエラーを返しました: %(error)s"
-#: ../src/common/connection.py:1224 ../src/common/connection.py:1358
-#: ../src/common/connection.py:1972
-#: ../src/common/zeroconf/connection_zeroconf.py:204
+#: ../src/common/connection.py:1197 ../src/common/connection.py:1349
+#: ../src/common/connection.py:1976
+#: ../src/common/zeroconf/connection_zeroconf.py:205
#, python-format
msgid "Could not connect to \"%s\""
msgstr "%s に接続できませんでした"
-#: ../src/common/connection.py:1225 ../src/gui_interface.py:524
+#: ../src/common/connection.py:1198 ../src/gui_interface.py:529
msgid "Check your connection or try again later."
msgstr "設定を確認するか、時間をおいて試してください。"
-#: ../src/common/connection.py:1230
+#: ../src/common/connection.py:1203
#, python-format
msgid "Server replied: %s"
msgstr "サーバの応答: %s"
-#: ../src/common/connection.py:1243
+#: ../src/common/connection.py:1218
msgid "Connection to proxy failed"
msgstr "プロキシへの接続に失敗"
-#: ../src/common/connection.py:1275 ../src/common/connection.py:1337
+#: ../src/common/connection.py:1256 ../src/common/connection.py:1328
#, python-format
msgid "Could not connect to account %s"
msgstr "アカウント %s に接続できません"
-#: ../src/common/connection.py:1276 ../src/common/connection.py:1338
+#: ../src/common/connection.py:1257 ../src/common/connection.py:1329
#, python-format
msgid "Connection with account %s has been lost. Retry connecting."
msgstr "アカウント %s での接続が切れました。再接続を試みます。"
-#: ../src/common/connection.py:1301
+#: ../src/common/connection.py:1282
#, python-format
msgid "The authenticity of the %s certificate could be invalid."
msgstr "%s の証明書の真正性は検証できませんでした。"
-#: ../src/common/connection.py:1304
+#: ../src/common/connection.py:1285
#, python-format
msgid ""
"\n"
@@ -4728,7 +5224,7 @@ msgstr ""
"\n"
"SSL エラー: <b>%s</b>"
-#: ../src/common/connection.py:1306
+#: ../src/common/connection.py:1287
#, python-format
msgid ""
"\n"
@@ -4737,230 +5233,76 @@ msgstr ""
"\n"
"未知の SSL エラー: %d"
-#: ../src/common/connection.py:1359
+#: ../src/common/connection.py:1310
+#, python-format
+msgid ""
+"The authenticity of the %s certificate could be invalid.\n"
+"The certificate does not cover this domain."
+msgstr ""
+"%s の証明書の真正性は検証できませんでした。\n"
+"この証明書はこのドメインをカバーしていません。"
+
+#: ../src/common/connection.py:1350
msgid "Check your connection or try again later"
msgstr "接続を確認するか、または後で再度試してください"
# (Mako) %s はアカウントか
-#: ../src/common/connection.py:1393
+#: ../src/common/connection.py:1385
#, python-format
msgid "Authentication failed with \"%s\""
msgstr "\"%s\" の認証に失敗しました"
-#: ../src/common/connection.py:1395
-msgid "Please check your login and password for correctness."
+#: ../src/common/connection.py:1386
+msgid "Please check your login and passwordfor correctness."
msgstr "整合性のために、ログインとパスワードを確認してください。"
-#: ../src/common/connection.py:1468
+#: ../src/common/connection.py:1461
msgid "Error while removing privacy list"
msgstr "プライバシーリストを削除する際のエラー"
-#: ../src/common/connection.py:1469
+#: ../src/common/connection.py:1462
#, python-format
msgid ""
"Privacy list %s has not been removed. It is maybe active in one of your "
-"connected resources. Deactivate it and try again."
+"connected resources. Deactivate it and tryagain."
msgstr ""
"プライバシーリスト %s は削除されませんでした。現在の接続に使用されているよう"
"です。使用をやめてから再び試してください。"
-#: ../src/common/connection.py:1546 ../src/common/connection_handlers.py:573
-msgid "Invisibility not supported"
-msgstr "「隠れています」はサポートされていません"
-
-#: ../src/common/connection.py:1547 ../src/common/connection_handlers.py:574
-#, python-format
-msgid "Account %s doesn't support invisibility."
-msgstr "アカウント %s は「隠れています」をサポートしていません。"
-
-#: ../src/common/connection.py:1839
+#: ../src/common/connection.py:1843
#, python-format
msgid "Sent contact: \"%s\" (%s)"
msgstr "送った相手先: \"%s\" (%s)"
-#: ../src/common/connection.py:1842
+#: ../src/common/connection.py:1846
msgid "Sent contacts:"
msgstr "送った相手先:"
-#: ../src/common/connection.py:1989 ../src/common/connection.py:2012
+#: ../src/common/connection.py:1993 ../src/common/connection.py:2016
msgid "Not fetched because of invisible status"
msgstr "「隠れ中」のため取得できません"
-#: ../src/common/connection.py:2542
+#: ../src/common/connection.py:2575
msgid "Unregister failed"
msgstr "登録解除に失敗"
-#: ../src/common/connection.py:2543
+#: ../src/common/connection.py:2576
#, python-format
msgid "Unregistration with server %(server)s failed: %(error)s"
msgstr "サーバー %(server)s での登録解除に失敗しました: %(error)s"
-# (Mako) idle をどうする
-#: ../src/common/connection_handlers.py:95
-#: ../src/common/zeroconf/connection_handlers_zeroconf.py:54
-msgid "Unable to load idle module"
-msgstr "アイドルモジュールをロードできません"
-
-#: ../src/common/connection_handlers.py:128
-#, python-format
-msgid "Registration information for transport %s has not arrived in time"
-msgstr "中継先 %s の登録情報が一定時間内に到達しませんでした"
-
-#: ../src/common/connection_handlers.py:135
-msgid "Registration succeeded"
-msgstr "登録が完了しました"
-
-#: ../src/common/connection_handlers.py:136
-#, python-format
-msgid "Registration with agent %s succeeded"
-msgstr "エージェント %s の登録は成功しました"
-
-#: ../src/common/connection_handlers.py:144
-msgid "Registration failed"
-msgstr "登録が失敗しました"
-
-#: ../src/common/connection_handlers.py:144
-#, python-format
-msgid ""
-"Registration with agent %(agent)s failed with error %(error)s: %(error_msg)s"
-msgstr "%(agent)s の登録は失敗しました。%(error)s: %(error_msg)s"
-
-#: ../src/common/connection_handlers.py:1755
-msgid "I would like to add you to my roster."
-msgstr "あなたを私の名簿に追加したいと思っています。"
-
-#: ../src/common/connection_handlers_events.py:345
-#, python-format
-msgid ""
-"JID %s is not RFC compliant. It will not be added to your roster. Use roster "
-"management tools such as http://jru.jabberstudio.org/ to remove it"
-msgstr ""
-"JID %s は規格(RFC)に合っていません。名簿には追加されません。これを削除するに"
-"は、http://jru.jabberstudio.org/ のような名簿管理ツールを使ってください。"
-
-# (Mako) 実際に使われている場所を確認していないが、強引に訳す
-#: ../src/common/connection_handlers_events.py:776
-#, python-format
-msgid "unsubscribe request from %s"
-msgstr "%s から継読中止の要求"
-
-#. Room has been destroyed. see
-#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom
-#: ../src/common/connection_handlers_events.py:886
-msgid "Room has been destroyed"
-msgstr "談話室は閉鎖されました"
-
-#: ../src/common/connection_handlers_events.py:894
-#, python-format
-msgid "You can join this room instead: %s"
-msgstr "代わりに次の談話室に参加します: %s"
-
-#: ../src/common/connection_handlers_events.py:968
-msgid "A message from a non-valid JID arrived, it has been ignored."
-msgstr "正しくない JID からメッセージが届きました。無視します。"
-
-#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
-#: ../src/common/connection_handlers_events.py:1005
-#: ../src/gui_interface.py:415 ../src/gui_interface.py:429
-#, python-format
-msgid "error while sending %(message)s ( %(error)s )"
-msgstr "%(message)s を送信する際にエラー ( %(error)s )"
-
-#: ../src/common/connection_handlers_events.py:1422
-#, python-format
-msgid "Unknown SSL error: %d"
-msgstr "未知の SSL エラー: %d"
-
-#: ../src/common/connection_handlers_events.py:1950 ../src/dialogs.py:2771
-#: ../src/notify.py:260
-msgid "New Single Message"
-msgstr "新着の単発メッセージ"
-
-#: ../src/common/connection_handlers_events.py:1952
-#, python-format
-msgid "New Single Message from %(nickname)s"
-msgstr "%(nickname)s からの新しい単発メッセージ"
-
-#: ../src/common/connection_handlers_events.py:1956 ../src/dialogs.py:2772
-#: ../src/notify.py:261
-msgid "New Private Message"
-msgstr "新着の私信"
-
-#: ../src/common/connection_handlers_events.py:1958
-#, python-format
-msgid "New Private Message from group chat %s"
-msgstr "グループチャット %s からの新着の私信"
-
-#: ../src/common/connection_handlers_events.py:1961
-#, python-format
-msgid "%(nickname)s: %(message)s"
-msgstr "%(nickname)s さん: %(message)s"
-
-#: ../src/common/connection_handlers_events.py:1964
-#, python-format
-msgid "Messaged by %(nickname)s"
-msgstr "%(nickname)s さんからのメッセージ"
-
-#: ../src/common/connection_handlers_events.py:1968 ../src/dialogs.py:2771
-#: ../src/notify.py:260
-msgid "New Message"
-msgstr "新着メッセージ"
-
-#: ../src/common/connection_handlers_events.py:1970
-#, python-format
-msgid "New Message from %(nickname)s"
-msgstr "%(nickname)s さんからの新着メッセージ"
-
-#: ../src/common/connection_handlers_events.py:2099
-#, python-format
-msgid "%(nick)s Changed Status"
-msgstr "%(nick)s さんの在席状況が変わりました"
-
-#: ../src/common/connection_handlers_events.py:2101
-#: ../src/groupchat_control.py:202 ../src/groupchat_control.py:1755
-#: ../src/history_window.py:447
-#, python-format
-msgid "%(nick)s is now %(status)s"
-msgstr "%(nick)s さんは現在 %(status)s"
-
-#: ../src/common/connection_handlers_events.py:2106 ../src/dialogs.py:2783
-#: ../src/notify.py:274
-msgid "Contact Changed Status"
-msgstr "相手先が在席状況を変更"
-
-#: ../src/common/connection_handlers_events.py:2108
-#, python-format
-msgid "%(nickname)s Signed In"
-msgstr "%(nickname)s さんがサインインしました"
-
-#. default value
-#: ../src/common/connection_handlers_events.py:2113 ../src/dialogs.py:2767
-#: ../src/notify.py:256
-msgid "Contact Signed In"
-msgstr "相手先がサインインしました"
-
-#: ../src/common/connection_handlers_events.py:2115
-#, python-format
-msgid "%(nickname)s Signed Out"
-msgstr "%(nickname)s さんがサインアウトしました"
-
-#: ../src/common/connection_handlers_events.py:2120 ../src/dialogs.py:2769
-#: ../src/notify.py:258
-msgid "Contact Signed Out"
-msgstr "相手先がサインアウトしました"
-
# (Mako)承認なしに名簿にある状態
-#: ../src/common/contacts.py:126 ../src/common/helpers.py:60
-#: ../src/gui_interface.py:467
+#: ../src/common/contacts.py:126 ../src/common/helpers.py:67
+#: ../src/gui_interface.py:472
msgid "Observers"
msgstr "オブザーバ"
#: ../src/common/contacts.py:130 ../src/common/contacts.py:358
-#: ../src/common/helpers.py:60 ../src/disco.py:120 ../src/disco.py:121
-#: ../src/disco.py:1517 ../src/roster_window.py:856
-#: ../src/roster_window.py:1552 ../src/roster_window.py:1640
-#: ../src/roster_window.py:1642 ../src/roster_window.py:1804
-#: ../src/roster_window.py:2480
+#: ../src/common/helpers.py:67 ../src/disco.py:120 ../src/disco.py:121
+#: ../src/disco.py:1517 ../src/roster_window.py:859
+#: ../src/roster_window.py:1579 ../src/roster_window.py:1683
+#: ../src/roster_window.py:1685 ../src/roster_window.py:1847
+#: ../src/roster_window.py:2525
msgid "Transports"
msgstr "中継先"
@@ -5189,280 +5531,297 @@ msgstr "週の終わり"
msgid "Weekend!"
msgstr "週末 !"
-#: ../src/common/helpers.py:151
+#: ../src/common/helpers.py:158
msgid "Username must be between 1 and 1023 chars"
msgstr "ユーザー名は1文字以上1023文字以下である必要があります"
-#: ../src/common/helpers.py:156
+#: ../src/common/helpers.py:163
msgid "Invalid character in username."
msgstr "ユーザー名に不正な文字が含まれています。"
-#: ../src/common/helpers.py:162
+#: ../src/common/helpers.py:169
msgid "Server must be between 1 and 1023 chars"
msgstr "サーバー名は1文字以上1023文字以下である必要があります"
-#: ../src/common/helpers.py:167
+#: ../src/common/helpers.py:174
msgid "Invalid character in hostname."
msgstr "ホスト名に不正な文字が含まれています。"
-#: ../src/common/helpers.py:169
+#: ../src/common/helpers.py:176
msgid "Server address required."
msgstr "サーバーのアドレスが必要です。"
-#: ../src/common/helpers.py:173
+#: ../src/common/helpers.py:180
msgid "Resource must be between 1 and 1023 chars"
msgstr "リソースは1文字以上1023文字以下である必要があります"
-#: ../src/common/helpers.py:178
+#: ../src/common/helpers.py:185
msgid "Invalid character in resource."
msgstr "リソースに不正な文字が含まれています。"
-#: ../src/common/helpers.py:218
+#: ../src/common/helpers.py:225
msgid "_Busy"
msgstr "取り込み中 (_B)"
-#: ../src/common/helpers.py:220 ../src/tooltips.py:195
+#: ../src/common/helpers.py:227 ../src/tooltips.py:196
msgid "Busy"
msgstr "取り込み中"
-#: ../src/common/helpers.py:223
+#: ../src/common/helpers.py:230
msgid "_Not Available"
msgstr "不在 (_N)"
-#: ../src/common/helpers.py:225 ../src/tooltips.py:197
+#: ../src/common/helpers.py:232 ../src/tooltips.py:198
msgid "Not Available"
msgstr "不在"
-#: ../src/common/helpers.py:228
+#: ../src/common/helpers.py:235
msgid "_Free for Chat"
msgstr "チャット可 (_F)"
-#: ../src/common/helpers.py:230 ../src/tooltips.py:191
+#: ../src/common/helpers.py:237 ../src/tooltips.py:192
msgid "Free for Chat"
msgstr "チャット可"
-#: ../src/common/helpers.py:233
+#: ../src/common/helpers.py:240
msgid "?user status:_Available"
msgstr "在席 (_A)"
-#: ../src/common/helpers.py:235 ../src/tooltips.py:189
+#: ../src/common/helpers.py:242 ../src/tooltips.py:190
msgid "?user status:Available"
msgstr "在席"
-#: ../src/common/helpers.py:237
+#: ../src/common/helpers.py:244
msgid "Connecting"
msgstr "接続中です"
-#: ../src/common/helpers.py:240
+#: ../src/common/helpers.py:247
msgid "A_way"
msgstr "離席中 (_w)"
-#: ../src/common/helpers.py:245
+#: ../src/common/helpers.py:252
msgid "_Offline"
msgstr "オフライン (_O)"
-#: ../src/common/helpers.py:247 ../src/tooltips.py:199
+#: ../src/common/helpers.py:254 ../src/tooltips.py:200
msgid "Offline"
msgstr "オフライン"
-#: ../src/common/helpers.py:250
+#: ../src/common/helpers.py:257
msgid "_Invisible"
msgstr "隠れ中 (_I)"
-#: ../src/common/helpers.py:252
+#: ../src/common/helpers.py:259
msgid "Invisible"
msgstr "隠れ中"
-#: ../src/common/helpers.py:256
+#: ../src/common/helpers.py:263
msgid "?contact has status:Unknown"
msgstr "不明"
-#: ../src/common/helpers.py:258
+#: ../src/common/helpers.py:265
msgid "?contact has status:Has errors"
msgstr "エラーが起こっています"
-#: ../src/common/helpers.py:263
+#: ../src/common/helpers.py:270
msgid "?Subscription we already have:None"
msgstr "なし"
# (Mako)subscription
-#: ../src/common/helpers.py:265
+#: ../src/common/helpers.py:272
msgid "To"
msgstr "相手先が承認"
# (Mako)groups_post_window.ui は、メールの「差出人」に相当
# helpers.pyは、
# 相手先の情報で、subscriptionの有無なので、「こちらが承認」としたい
-#: ../src/common/helpers.py:267
+#: ../src/common/helpers.py:274
msgid "From"
msgstr "こちらが承認"
-#: ../src/common/helpers.py:269
+#: ../src/common/helpers.py:276
msgid "Both"
msgstr "相互に承認"
-#: ../src/common/helpers.py:277
+#: ../src/common/helpers.py:284
msgid "?Ask (for Subscription):None"
msgstr "なし"
-#: ../src/common/helpers.py:279
+#: ../src/common/helpers.py:286
msgid "Subscribe"
msgstr "申し込み"
-#: ../src/common/helpers.py:288
+#: ../src/common/helpers.py:295
msgid "?Group Chat Contact Role:None"
msgstr "なし"
-#: ../src/common/helpers.py:291
+#: ../src/common/helpers.py:298
msgid "Moderators"
msgstr "司会者"
-#: ../src/common/helpers.py:293
+#: ../src/common/helpers.py:300
msgid "Moderator"
msgstr "司会者"
-#: ../src/common/helpers.py:296
+#: ../src/common/helpers.py:303
msgid "Participants"
msgstr "参加者"
-#: ../src/common/helpers.py:298
+#: ../src/common/helpers.py:305
msgid "Participant"
msgstr "参加者"
# (Mako)moderated room で、発言権(voice)を持たない者
-#: ../src/common/helpers.py:301
+#: ../src/common/helpers.py:308
msgid "Visitors"
msgstr "傍聴者"
-#: ../src/common/helpers.py:303
+#: ../src/common/helpers.py:310
msgid "Visitor"
msgstr "傍聴者"
-#: ../src/common/helpers.py:309 ../src/tooltips.py:210
+#: ../src/common/helpers.py:316 ../src/tooltips.py:211
msgid "?Group Chat Contact Affiliation:None"
msgstr "なし"
-#: ../src/common/helpers.py:311 ../src/tooltips.py:216
+#: ../src/common/helpers.py:318 ../src/tooltips.py:217
msgid "Owner"
msgstr "主宰者"
-#: ../src/common/helpers.py:313 ../src/tooltips.py:214
+#: ../src/common/helpers.py:320 ../src/tooltips.py:215
msgid "Administrator"
msgstr "管理人"
# (Mako)「会員」では排他的なニュアンスが強いのでしかたなくカタカナ語で
-#: ../src/common/helpers.py:315 ../src/tooltips.py:212
+#: ../src/common/helpers.py:322 ../src/tooltips.py:213
msgid "Member"
msgstr "メンバー"
-#: ../src/common/helpers.py:354
+#: ../src/common/helpers.py:361
msgid "is paying attention to the conversation"
msgstr "さんはこの会話に目を向けています"
-#: ../src/common/helpers.py:356
+#: ../src/common/helpers.py:363
msgid "is doing something else"
msgstr "さんは何かほかのことをしています"
-#: ../src/common/helpers.py:358
+#: ../src/common/helpers.py:365
msgid "is composing a message..."
msgstr "さんがメッセージを書いています..."
#. paused means he or she was composing but has stopped for a while
-#: ../src/common/helpers.py:361
+#: ../src/common/helpers.py:368
msgid "paused composing a message"
msgstr "さんは書く手をちょっと止めています"
-#: ../src/common/helpers.py:363
+#: ../src/common/helpers.py:370
msgid "has closed the chat window or tab"
msgstr "さんは会話ウインドウを閉じました"
#. GiB means gibibyte
-#: ../src/common/helpers.py:628
+#: ../src/common/helpers.py:648
#, python-format
msgid "%s GiB"
msgstr "%s GiB"
#. GB means gigabyte
-#: ../src/common/helpers.py:631
+#: ../src/common/helpers.py:651
#, python-format
msgid "%s GB"
msgstr "%s GB"
#. MiB means mibibyte
-#: ../src/common/helpers.py:635
+#: ../src/common/helpers.py:655
#, python-format
msgid "%s MiB"
msgstr "%s MiB"
#. MB means megabyte
-#: ../src/common/helpers.py:638
+#: ../src/common/helpers.py:658
#, python-format
msgid "%s MB"
msgstr "%s MB"
#. KiB means kibibyte
-#: ../src/common/helpers.py:642
+#: ../src/common/helpers.py:662
#, python-format
msgid "%s KiB"
msgstr "%s KiB"
#. KB means kilo bytes
-#: ../src/common/helpers.py:645
+#: ../src/common/helpers.py:665
#, python-format
msgid "%s KB"
msgstr "%s KB"
#. B means bytes
-#: ../src/common/helpers.py:648
+#: ../src/common/helpers.py:668
#, python-format
msgid "%s B"
msgstr "%s B"
# (Mako)これと、次の "from room %s" は連続して表示される
-#: ../src/common/helpers.py:1099 ../src/common/helpers.py:1106
+#: ../src/common/helpers.py:1119 ../src/common/helpers.py:1126
#, python-format
msgid "%d message pending"
msgid_plural "%d messages pending"
msgstr[0] "保留メッセージ %d 件"
msgstr[1] "保留メッセージ %d 件"
-#: ../src/common/helpers.py:1112
+#: ../src/common/helpers.py:1132
#, python-format
msgid " from room %s"
msgstr " - 談話室 \"%s\""
-#: ../src/common/helpers.py:1115 ../src/common/helpers.py:1132
+#: ../src/common/helpers.py:1135 ../src/common/helpers.py:1152
#, python-format
msgid " from user %s"
msgstr " - ユーザー %s"
-#: ../src/common/helpers.py:1117
+#: ../src/common/helpers.py:1137
#, python-format
msgid " from %s"
msgstr "- %s"
-#: ../src/common/helpers.py:1124 ../src/common/helpers.py:1130
+#: ../src/common/helpers.py:1144 ../src/common/helpers.py:1150
#, python-format
msgid "%d event pending"
msgid_plural "%d events pending"
msgstr[0] "保留イベント %d 件"
msgstr[1] "保留イベント %d 件"
-#: ../src/common/helpers.py:1162
+#: ../src/common/helpers.py:1182
#, python-format
msgid "Gajim - %s"
msgstr "Gajim - %s"
-#: ../src/common/helpers.py:1341
+#: ../src/common/helpers.py:1361
msgid "Hello, I am $name."
msgstr "こんにちは。私は $name です。"
-#: ../src/common/jingle_rtp.py:107
+#: ../src/common/helpers.py:1471 ../src/common/helpers.py:1480
+#: ../src/common/helpers.py:1534
+msgid "Timeout loading image"
+msgstr "画像の読み込みに失敗しました"
+
+#: ../src/common/helpers.py:1490 ../src/common/helpers.py:1532
+msgid "Image is too big"
+msgstr "画像が大きすぎます"
+
+#: ../src/common/helpers.py:1500
+msgid "PyCURL is not installed"
+msgstr "pyCURL がインストールされていません"
+
+#: ../src/common/helpers.py:1536
+msgid "Error loading image"
+msgstr "画像読み込みエラー"
+
+#: ../src/common/jingle_rtp.py:109
#, python-format
msgid "%s configuration error"
msgstr "%s 設定エラー"
-#: ../src/common/jingle_rtp.py:108
+#: ../src/common/jingle_rtp.py:110
#, python-format
msgid ""
"Couldn't setup %s. Check your configuration.\n"
@@ -5481,11 +5840,11 @@ msgstr ""
"エラー:\n"
"%s"
-#: ../src/common/jingle_rtp.py:205
+#: ../src/common/jingle_rtp.py:208
msgid "GStreamer error"
msgstr "GStreamer エラー"
-#: ../src/common/jingle_rtp.py:206
+#: ../src/common/jingle_rtp.py:208
#, python-format
msgid ""
"Error: %s\n"
@@ -5494,19 +5853,19 @@ msgstr ""
"エラー: %s\n"
"デバッグ: %s"
-#: ../src/common/jingle_rtp.py:335
+#: ../src/common/jingle_rtp.py:338
msgid "audio input"
msgstr "音声入力"
-#: ../src/common/jingle_rtp.py:338
+#: ../src/common/jingle_rtp.py:341
msgid "audio output"
msgstr "音声出力"
-#: ../src/common/jingle_rtp.py:381
+#: ../src/common/jingle_rtp.py:384
msgid "video input"
msgstr "ビデオ入力"
-#: ../src/common/jingle_rtp.py:390
+#: ../src/common/jingle_rtp.py:393
msgid "video output"
msgstr "ビデオ出力"
@@ -6273,7 +6632,7 @@ msgstr ""
"[暗号化セッションの途中です。このメッセージを見ているということは、何か失敗し"
"ています。]"
-#: ../src/common/zeroconf/connection_zeroconf.py:192
+#: ../src/common/zeroconf/connection_zeroconf.py:193
msgid "Avahi error"
msgstr "Avahi エラー"
@@ -6286,45 +6645,45 @@ msgstr ""
"%s\n"
"ローカルの伝送がうまく働いていないようです。"
-#: ../src/common/zeroconf/connection_zeroconf.py:205
+#: ../src/common/zeroconf/connection_zeroconf.py:206
msgid "Please check if Avahi or Bonjour is installed."
msgstr "Avahi か Bonjour がインストールされているか確認してください。"
-#: ../src/common/zeroconf/connection_zeroconf.py:215
-#: ../src/common/zeroconf/connection_zeroconf.py:219
+#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:220
msgid "Could not start local service"
msgstr "ローカルのサービスを起動できません"
-#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:217
#, python-format
msgid "Unable to bind to port %d."
msgstr "ポート %d を開けません。"
-#: ../src/common/zeroconf/connection_zeroconf.py:220
-#: ../src/common/zeroconf/connection_zeroconf.py:304
-#: ../src/common/zeroconf/connection_zeroconf.py:317
-#: ../src/common/zeroconf/connection_zeroconf.py:333
+#: ../src/common/zeroconf/connection_zeroconf.py:221
+#: ../src/common/zeroconf/connection_zeroconf.py:305
+#: ../src/common/zeroconf/connection_zeroconf.py:318
+#: ../src/common/zeroconf/connection_zeroconf.py:334
msgid "Please check if avahi-daemon is running."
msgstr "avahi-daemon が起動しているか確認してください。"
-#: ../src/common/zeroconf/connection_zeroconf.py:303
-#: ../src/common/zeroconf/connection_zeroconf.py:316
-#: ../src/common/zeroconf/connection_zeroconf.py:332
+#: ../src/common/zeroconf/connection_zeroconf.py:304
+#: ../src/common/zeroconf/connection_zeroconf.py:317
+#: ../src/common/zeroconf/connection_zeroconf.py:333
#, python-format
msgid "Could not change status of account \"%s\""
msgstr "アカウント \"%s\" の在席状況を変更できませんでした"
-#: ../src/common/zeroconf/connection_zeroconf.py:351
-#: ../src/common/zeroconf/connection_zeroconf.py:390
+#: ../src/common/zeroconf/connection_zeroconf.py:352
+#: ../src/common/zeroconf/connection_zeroconf.py:392
msgid "Your message could not be sent."
msgstr "メッセージを送信できませんでした。"
-#: ../src/common/zeroconf/connection_zeroconf.py:365
-#: ../src/common/zeroconf/connection_zeroconf.py:404
+#: ../src/common/zeroconf/connection_zeroconf.py:366
+#: ../src/common/zeroconf/connection_zeroconf.py:406
msgid "Contact is offline. Your message could not be sent."
msgstr "相手先はオフラインです。メッセージを送信できませんでした。"
-#: ../src/common/zeroconf/connection_zeroconf.py:431
+#: ../src/common/zeroconf/connection_zeroconf.py:433
msgid ""
"Connection to host could not be established: Timeout while sending data."
msgstr "ホストへの接続を確立できませんでした: データ送信中の時間切れです。"
@@ -6335,24 +6694,24 @@ msgstr "ホストへの接続を確立できませんでした: データ送信
msgid "Error while adding service. %s"
msgstr "サービスの追加中のエラーです。%s"
-#: ../src/config.py:406
+#: ../src/config.py:407
msgid "Default Message"
msgstr "デフォルトのメッセージ"
-#: ../src/config.py:415
+#: ../src/config.py:416
msgid "Enabled"
msgstr "有効"
-#: ../src/config.py:468 ../src/config.py:472 ../src/config.py:3115
+#: ../src/config.py:469 ../src/config.py:473 ../src/config.py:3159
msgid "Default"
msgstr "デフォルト"
-#: ../src/config.py:746 ../src/dialogs.py:1493
+#: ../src/config.py:757 ../src/dialogs.py:1493
#, python-format
msgid "Dictionary for lang %s not available"
msgstr "言語 %s の辞書はありません"
-#: ../src/config.py:747
+#: ../src/config.py:758
#, python-format
msgid ""
"You have to install %s dictionary to use spellchecking, or choose another "
@@ -6361,213 +6720,213 @@ msgstr ""
"スペルチェックを行なうには %s の辞書をインストールしなければなりません。ある"
"いは、speller_language オプションで別の言語を選択してください。"
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message title"
msgstr "状況メッセージのタイトル"
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message text"
msgstr "状況メッセージの文"
#. Name column
-#: ../src/config.py:1523 ../src/dialogs.py:2528 ../src/dialogs.py:2595
-#: ../src/dialogs.py:3382 ../src/disco.py:886 ../src/disco.py:1744
-#: ../src/disco.py:2046 ../src/history_window.py:90
+#: ../src/config.py:1566 ../src/dialogs.py:2536 ../src/dialogs.py:2603
+#: ../src/dialogs.py:3395 ../src/disco.py:886 ../src/disco.py:1744
+#: ../src/disco.py:2046 ../src/history_window.py:91
msgid "Name"
msgstr "名前"
-#: ../src/config.py:1618
+#: ../src/config.py:1661
msgid "Relogin now?"
msgstr "今すぐ再ログインしますか ?"
-#: ../src/config.py:1619
+#: ../src/config.py:1662
msgid "If you want all the changes to apply instantly, you must relogin."
msgstr "すべての変更を直ちに有効にするには、再ログインしてください。"
-#: ../src/config.py:1773 ../src/config.py:1906
+#: ../src/config.py:1816 ../src/config.py:1949
msgid "OpenPGP is not usable on this computer"
msgstr "OpenPGP はこのコンピュータでは使えません。"
-#: ../src/config.py:1946 ../src/config.py:1993
+#: ../src/config.py:1989 ../src/config.py:2036
msgid "Unread events"
msgstr "未読のイベント"
-#: ../src/config.py:1947
+#: ../src/config.py:1990
msgid "Read all pending events before removing this account."
msgstr "このアカウントを削除する前にすべての保留イベントを読みます。"
-#: ../src/config.py:1976
+#: ../src/config.py:2019
#, python-format
msgid "You have opened chat in account %s"
msgstr "アカウント %s でチャット中です"
-#: ../src/config.py:1977
+#: ../src/config.py:2020
msgid "All chat and groupchat windows will be closed. Do you want to continue?"
msgstr ""
"すべてのチャットとグループチャットのウィンドウを閉じます。続けてもいいです"
"か ?"
-#: ../src/config.py:1989 ../src/config.py:2531 ../src/config.py:2567
+#: ../src/config.py:2032 ../src/config.py:2574 ../src/config.py:2611
msgid "You are currently connected to the server"
msgstr "現在サーバーに接続している状態です"
-#: ../src/config.py:1990
+#: ../src/config.py:2033
msgid "To change the account name, you must be disconnected."
msgstr "アカウント名を変更するには、接続を切らなければなりません。"
-#: ../src/config.py:1994
+#: ../src/config.py:2037
msgid "To change the account name, you must read all pending events."
msgstr ""
"アカウント名を変更するには、保留されているすべてのイベントを読まなければなり"
"ません。"
-#: ../src/config.py:2000
+#: ../src/config.py:2043
msgid "Account Name Already Used"
msgstr "アカウン名は既に使われています"
-#: ../src/config.py:2001
+#: ../src/config.py:2044
msgid ""
"This name is already used by another of your accounts. Please choose another "
"name."
msgstr "この名前は別のアカウントで既に使われています。別の名前にしてください。"
-#: ../src/config.py:2005 ../src/config.py:2009
+#: ../src/config.py:2048 ../src/config.py:2052
msgid "Invalid account name"
msgstr "アカウント名が正しくありません"
-#: ../src/config.py:2006
+#: ../src/config.py:2049
msgid "Account name cannot be empty."
msgstr "アカウント名は空白にできません。"
-#: ../src/config.py:2010
+#: ../src/config.py:2053
msgid "Account name cannot contain spaces."
msgstr "アカウント名にスペースを含めることはできません。"
-#: ../src/config.py:2087
+#: ../src/config.py:2130
msgid "Rename Account"
msgstr "アカウントの変更"
-#: ../src/config.py:2088
+#: ../src/config.py:2131
#, python-format
msgid "Enter a new name for account %s"
msgstr "%s さんの新しい名前を入力してください"
-#: ../src/config.py:2116
+#: ../src/config.py:2159
msgid "A Jabber ID must be in the form \"user@servername\"."
msgstr "Jabber ID は \"user@サーバー名\" の形をしていなければなりません。"
-#: ../src/config.py:2339 ../src/config.py:3665
+#: ../src/config.py:2382 ../src/config.py:3709
msgid "Invalid entry"
msgstr "入力内容が正しくありません"
-#: ../src/config.py:2340 ../src/config.py:3666
+#: ../src/config.py:2383 ../src/config.py:3710
msgid "Custom port must be a port number."
msgstr "ポートは番号で指定しなければなりません。"
-#: ../src/config.py:2361
+#: ../src/config.py:2404
msgid "Failed to get secret keys"
msgstr "秘密鍵が見つかりません"
-#: ../src/config.py:2362
+#: ../src/config.py:2405
msgid "There is no OpenPGP secret key available."
msgstr "利用できる OpenPGP の秘密鍵がありません。"
-#: ../src/config.py:2396
+#: ../src/config.py:2439
msgid "OpenPGP Key Selection"
msgstr "OpenPGP キーの選択"
-#: ../src/config.py:2397
+#: ../src/config.py:2440
msgid "Choose your OpenPGP key"
msgstr "OpenPGP の鍵を選択してください"
-#: ../src/config.py:2404
+#: ../src/config.py:2447
msgid "No such account available"
msgstr "そのアカウントは無効です"
-#: ../src/config.py:2405
+#: ../src/config.py:2448
msgid "You must create your account before editing your personal information."
msgstr "個人情報を編集するには、その前にアカウントを作成しなければなりません。"
-#: ../src/config.py:2412 ../src/dialogs.py:2281 ../src/dialogs.py:2517
-#: ../src/dialogs.py:2705 ../src/disco.py:515 ../src/profile_window.py:361
+#: ../src/config.py:2455 ../src/dialogs.py:2287 ../src/dialogs.py:2525
+#: ../src/dialogs.py:2713 ../src/disco.py:515 ../src/profile_window.py:361
msgid "You are not connected to the server"
msgstr "サーバに接続していません"
-#: ../src/config.py:2413
+#: ../src/config.py:2456
msgid "Without a connection, you can not edit your personal information."
msgstr "接続していない状態では個人情報の編集はできません。"
-#: ../src/config.py:2417
+#: ../src/config.py:2460
msgid "Your server doesn't support Vcard"
msgstr "このサーバーは Vcard をサポートしていません"
-#: ../src/config.py:2418
+#: ../src/config.py:2461
msgid "Your server can't save your personal information."
msgstr "このサーバーは個人情報を保持できません。"
-#: ../src/config.py:2532 ../src/config.py:2568
+#: ../src/config.py:2575 ../src/config.py:2612
msgid "To disable the account, you must be disconnected."
msgstr "アカウントを無効にするには、接続を切らなければなりません。"
-#: ../src/config.py:2537
+#: ../src/config.py:2581
msgid "Account Local already exists."
msgstr "アカウント Local は既に存在しています。"
-#: ../src/config.py:2538
+#: ../src/config.py:2582
msgid "Please rename or remove it before enabling link-local messaging."
msgstr "ローカルの伝送を有効にするには、名前の変更または削除を行ってください。"
-#: ../src/config.py:2695
+#: ../src/config.py:2739
#, python-format
msgid "Edit %s"
msgstr "%s を編集"
-#: ../src/config.py:2697
+#: ../src/config.py:2741
#, python-format
msgid "Register to %s"
msgstr "%s を登録"
#. list at the beginning
-#: ../src/config.py:2733
+#: ../src/config.py:2777
msgid "Ban List"
msgstr "追放者の一覧"
-#: ../src/config.py:2734
+#: ../src/config.py:2778
msgid "Member List"
msgstr "メンバーの一覧"
-#: ../src/config.py:2734
+#: ../src/config.py:2778
msgid "Owner List"
msgstr "主宰者の一覧"
-#: ../src/config.py:2735
+#: ../src/config.py:2779
msgid "Administrator List"
msgstr "管理人の一覧"
#. Address column
#. holds JID (who said this)
-#: ../src/config.py:2799 ../src/disco.py:893 ../src/history_manager.py:207
+#: ../src/config.py:2843 ../src/disco.py:893 ../src/history_manager.py:207
msgid "JID"
msgstr "JID"
-#: ../src/config.py:2809
+#: ../src/config.py:2853
msgid "Reason"
msgstr "理由"
-#: ../src/config.py:2816
+#: ../src/config.py:2860
msgid "Nick"
msgstr "ニックネーム"
-#: ../src/config.py:2822
+#: ../src/config.py:2866
msgid "Role"
msgstr "役"
-#: ../src/config.py:2849
+#: ../src/config.py:2893
msgid "Banning..."
msgstr "締め出し中..."
#. You can move '\n' before user@domain if that line is TOO BIG
-#: ../src/config.py:2851
+#: ../src/config.py:2895
msgid ""
"<b>Whom do you want to ban?</b>\n"
"\n"
@@ -6575,11 +6934,11 @@ msgstr ""
"<b>誰を締め出したいですか ?</b>\n"
"\n"
-#: ../src/config.py:2853
+#: ../src/config.py:2897
msgid "Adding Member..."
msgstr "メンバーを追加..."
-#: ../src/config.py:2854
+#: ../src/config.py:2898
msgid ""
"<b>Whom do you want to make a member?</b>\n"
"\n"
@@ -6587,11 +6946,11 @@ msgstr ""
"<b>誰をメンバーにしたいですか ?</b>\n"
"\n"
-#: ../src/config.py:2856
+#: ../src/config.py:2900
msgid "Adding Owner..."
msgstr "主宰者を追加..."
-#: ../src/config.py:2857
+#: ../src/config.py:2901
msgid ""
"<b>Whom do you want to make an owner?</b>\n"
"\n"
@@ -6599,11 +6958,11 @@ msgstr ""
"<b>誰を主宰者にしたいですか ?</b>\n"
"\n"
-#: ../src/config.py:2859
+#: ../src/config.py:2903
msgid "Adding Administrator..."
msgstr "管理人を追加..."
-#: ../src/config.py:2860
+#: ../src/config.py:2904
msgid ""
"<b>Whom do you want to make an administrator?</b>\n"
"\n"
@@ -6611,7 +6970,7 @@ msgstr ""
"<b>誰を管理人にしたいですか ?</b>\n"
"\n"
-#: ../src/config.py:2861
+#: ../src/config.py:2905
msgid ""
"Can be one of the following:\n"
"1. user@domain/resource (only that resource matches).\n"
@@ -6627,110 +6986,105 @@ msgstr ""
"4. ドメイン (ドメインの合致。どんな user@domain や domain/resource や\n"
"サブドメインを含んでも可)"
-#: ../src/config.py:2962
+#: ../src/config.py:3006
#, python-format
msgid "Removing %s account"
msgstr "アカウント %s を削除します"
-#: ../src/config.py:2977
+#: ../src/config.py:3021
msgid "Account is disabled"
msgstr "アカウントは無効です"
-#: ../src/config.py:2978
+#: ../src/config.py:3022
msgid "To unregister from a server, account must be enabled."
msgstr ""
"サーバーから登録を解除するには、アカウントを有効にしなければなりません。"
-#: ../src/config.py:2991 ../src/gui_interface.py:278
-#: ../src/gui_interface.py:696
+#: ../src/config.py:3035 ../src/gui_interface.py:283
+#: ../src/gui_interface.py:701
msgid "Password Required"
msgstr "パスワードが必要です"
-#: ../src/config.py:2992 ../src/gui_interface.py:676
+#: ../src/config.py:3036 ../src/gui_interface.py:681
#, python-format
msgid "Enter your password for account %s"
msgstr "%s のパスワードを入力してください"
-#: ../src/config.py:2993 ../src/gui_interface.py:696
+#: ../src/config.py:3037 ../src/gui_interface.py:701
msgid "Save password"
msgstr "パスワードを保存する"
-#: ../src/config.py:3003
+#: ../src/config.py:3047
#, python-format
msgid "Account \"%s\" is connected to the server"
msgstr "アカウント \"%s\" はサーバに接続しています"
-#: ../src/config.py:3004
+#: ../src/config.py:3048
msgid "If you remove it, the connection will be lost."
msgstr "削除すると、接続が失われます。"
-#: ../src/config.py:3018
+#: ../src/config.py:3062
#, python-format
msgid "Connection to server %s failed"
msgstr "サーバー %s への接続に失敗しました"
-#: ../src/config.py:3019
+#: ../src/config.py:3063
msgid "What would you like to do?"
msgstr "何をしたいですか ?"
-#: ../src/config.py:3020
+#: ../src/config.py:3064
msgid "Remove only from Gajim"
msgstr "アカウントを Gajim からのみ削除"
-#: ../src/config.py:3021
+#: ../src/config.py:3065
msgid "Don't remove anything. I'll try again later"
msgstr "何も削除できません。あとで再び試みます"
-#: ../src/config.py:3115
+#: ../src/config.py:3159
msgid "?print_status:All"
msgstr "すべて"
-#: ../src/config.py:3116
+#: ../src/config.py:3160
msgid "Enter and leave only"
msgstr "入退室のみ"
-#: ../src/config.py:3117
+#: ../src/config.py:3161
msgid "?print_status:None"
msgstr "なし"
-#: ../src/config.py:3189
+#: ../src/config.py:3233
msgid "New Group Chat"
msgstr "新しいグループチャット"
-#: ../src/config.py:3222
+#: ../src/config.py:3266
msgid "This bookmark has invalid data"
msgstr "このブックマークは不正なデータを含んでいます"
-#: ../src/config.py:3223
+#: ../src/config.py:3267
msgid ""
"Please be sure to fill out server and room fields or remove this bookmark."
msgstr ""
"サーバーと談話室の欄を正しく入力するか、このブックマークを削除してください。"
-#. invalid char
-#: ../src/config.py:3348 ../src/dialogs.py:2070
-msgid "Invalid nickname"
-msgstr "ニックネームが正しくありません"
-
-#: ../src/config.py:3349 ../src/config.py:3360 ../src/config.py:3369
-#: ../src/config.py:3380 ../src/config.py:3388
+#: ../src/config.py:3393 ../src/config.py:3404 ../src/config.py:3413
+#: ../src/config.py:3424 ../src/config.py:3432
msgid "Character not allowed"
msgstr "使えない文字です"
-#: ../src/config.py:3360 ../src/config.py:3368 ../src/config.py:3380
-#: ../src/config.py:3641
+#: ../src/config.py:3404 ../src/config.py:3412 ../src/config.py:3424
+#: ../src/config.py:3685
msgid "Invalid server"
msgstr "サーバー名が正しくありません"
-#: ../src/config.py:3387
+#: ../src/config.py:3431
msgid "Invalid room"
msgstr "談話室名が正しくありません"
-#: ../src/config.py:3557
+#: ../src/config.py:3601
msgid "Account has been added successfully"
msgstr "アカウントは無事に追加されました"
-#: ../src/config.py:3558 ../src/config.py:3564
+#: ../src/config.py:3602 ../src/config.py:3608
msgid ""
"You can set advanced account options by pressing the Advanced button, or "
"later by choosing the Accounts menu item under the Edit menu from the main "
@@ -6739,32 +7093,32 @@ msgstr ""
"「拡張」ボタンで、詳細なオプションの設定ができます。また後で、メインウィンド"
"ウの「編集」メニューの「アカウント」を選択して設定することができます。"
-#: ../src/config.py:3563
+#: ../src/config.py:3607
msgid "Your new account has been created successfully"
msgstr "新しいアカウントは無事に作られました"
-#: ../src/config.py:3602
+#: ../src/config.py:3646
msgid "Invalid username"
msgstr "ユーザー名が正しくありません"
-#: ../src/config.py:3604
+#: ../src/config.py:3648
msgid "You must provide a username to configure this account."
msgstr "このアカウントを編集するには、ユーザー名を指定しなければなりません。"
-#: ../src/config.py:3642
+#: ../src/config.py:3686
msgid "Please provide a server on which you want to register."
msgstr "登録したいサーバーを指定してください。"
-#: ../src/config.py:3698 ../src/gui_interface.py:1174
+#: ../src/config.py:3742 ../src/gui_interface.py:1203
msgid "Certificate Already in File"
msgstr "証明書はファイルにあります"
-#: ../src/config.py:3699 ../src/gui_interface.py:1175
+#: ../src/config.py:3743 ../src/gui_interface.py:1204
#, python-format
msgid "This certificate is already in file %s, so it's not added again."
msgstr "この証明書は既にファイル %s にあります。再び追加することはできません。"
-#: ../src/config.py:3788
+#: ../src/config.py:3831
#, python-format
msgid ""
"<b>Security Warning</b>\n"
@@ -6779,7 +7133,7 @@ msgstr ""
"SSL エラー: %(error)s\n"
"それでもこのサーバーに接続しますか ?"
-#: ../src/config.py:3794 ../src/gui_interface.py:1203
+#: ../src/config.py:3837 ../src/gui_interface.py:1232
#, python-format
msgid ""
"Add this certificate to the list of trusted certificates.\n"
@@ -6790,73 +7144,73 @@ msgstr ""
"この証明書の SHA1 指紋:\n"
"%s"
-#: ../src/config.py:3826 ../src/config.py:3860
+#: ../src/config.py:3869 ../src/config.py:3903
msgid "An error occurred during account creation"
msgstr "アカウント作成時にエラーが起きました"
-#: ../src/config.py:3925
+#: ../src/config.py:3968
msgid "Account name is in use"
msgstr "アカウント名は使われています"
-#: ../src/config.py:3926
+#: ../src/config.py:3969
msgid "You already have an account using this name."
msgstr "この名前のアカウントは既に存在しています。"
-#: ../src/config.py:4056
+#: ../src/config.py:4099
msgid "PEP node was not removed"
msgstr "PEP ノードは削除されませんでした"
-#: ../src/config.py:4057
+#: ../src/config.py:4100
#, python-format
msgid "PEP node %(node)s was not removed: %(message)s"
msgstr "PEP ノード %(node)s は削除されませんでした: %(message)s"
-#: ../src/config.py:4085
+#: ../src/config.py:4128
#, fuzzy, python-format
msgid "Configure %s"
msgstr "%s を調整"
-#: ../src/config.py:4101 ../src/plugins/gui.py:73
+#: ../src/config.py:4144 ../src/plugins/gui.py:74
msgid "Active"
msgstr "有効"
-#: ../src/config.py:4109
+#: ../src/config.py:4152
msgid "Event"
msgstr "イベント"
-#: ../src/config.py:4144
+#: ../src/config.py:4187
msgid "First Message Received"
msgstr "最初のメッセージを受信した"
-#: ../src/config.py:4145
+#: ../src/config.py:4188
msgid "Next Message Received Focused"
msgstr "開いているチャットで、その次のメッセージを受信した"
-#: ../src/config.py:4147
+#: ../src/config.py:4190
msgid "Next Message Received Unfocused"
msgstr "開いていないチャットで、その次のメッセージを受信した"
-#: ../src/config.py:4148
+#: ../src/config.py:4191
msgid "Contact Connected"
msgstr "相手先が接続した"
-#: ../src/config.py:4149
+#: ../src/config.py:4192
msgid "Contact Disconnected"
msgstr "相手先が切断した"
-#: ../src/config.py:4150
+#: ../src/config.py:4193
msgid "Message Sent"
msgstr "メッセージを送信した"
-#: ../src/config.py:4151
+#: ../src/config.py:4194
msgid "Group Chat Message Highlight"
msgstr "グループチャットのメッセージの強調"
-#: ../src/config.py:4152
+#: ../src/config.py:4195
msgid "Group Chat Message Received"
msgstr "グループチャットのメッセージを受信した"
-#: ../src/config.py:4153
+#: ../src/config.py:4196
msgid "GMail Email Received"
msgstr "GMail メールを受信した"
@@ -6916,7 +7270,7 @@ msgid "Open as _Link"
msgstr "リンクとして開く (_L)"
#. %i is day in year (1-365)
-#: ../src/conversation_textview.py:1310
+#: ../src/conversation_textview.py:1319
#, python-format
msgid "Yesterday"
msgid_plural "%(nb_days)i days ago"
@@ -6924,7 +7278,7 @@ msgstr[0] "昨日"
msgstr[1] "%(nb_days)i日前"
#. if we have subject, show it too!
-#: ../src/conversation_textview.py:1359 ../src/history_window.py:480
+#: ../src/conversation_textview.py:1368 ../src/history_window.py:481
#, python-format
msgid "Subject: %s\n"
msgstr "件名: %s\n"
@@ -7048,7 +7402,7 @@ msgid "Please fill in the data of the contact you want to add"
msgstr "追加したい相手先の情報を入力してください"
#: ../src/dialogs.py:1074 ../src/dialogs.py:1080 ../src/dialogs.py:1085
-#: ../src/dialogs.py:3615
+#: ../src/dialogs.py:3628
msgid "Invalid User ID"
msgstr "ユーザー ID が正しくありません"
@@ -7120,244 +7474,244 @@ msgstr ""
"\n"
"スペル間違いの強調表示は使われません"
-#: ../src/dialogs.py:1872
+#: ../src/dialogs.py:1877
msgid "_Resume"
msgstr "残す (_R)"
-#: ../src/dialogs.py:1880
+#: ../src/dialogs.py:1885
msgid "Re_place"
msgstr "置換する (_p)"
-#: ../src/dialogs.py:2071 ../src/dialogs.py:2470
+#: ../src/dialogs.py:2076 ../src/dialogs.py:2477
msgid "The nickname has not allowed characters."
msgstr "ニックネームに使用できない文字が含まれています。"
-#: ../src/dialogs.py:2189
+#: ../src/dialogs.py:2195
#, python-format
msgid "Subscription request for account %(account)s from %(jid)s"
msgstr "アカウント %(account)s に対して、%(jid)s さんからの在席通知の申し込み"
-#: ../src/dialogs.py:2192
+#: ../src/dialogs.py:2198
#, python-format
msgid "Subscription request from %s"
msgstr "%s さんから在席通知の申し込み"
-#: ../src/dialogs.py:2276 ../src/gui_interface.py:1925
+#: ../src/dialogs.py:2282 ../src/gui_interface.py:1959
#, python-format
msgid "You are already in group chat %s"
msgstr "既にグループチャット %s に参加しています。"
-#: ../src/dialogs.py:2282
+#: ../src/dialogs.py:2288
msgid "You can not join a group chat unless you are connected."
msgstr "接続しないと、グループチャットに参加できません。"
-#: ../src/dialogs.py:2326
+#: ../src/dialogs.py:2332
#, python-format
msgid "Join Group Chat with account %s"
msgstr "アカウント %s でグループチャットに参加"
-#: ../src/dialogs.py:2457
+#: ../src/dialogs.py:2463
msgid "Invalid Account"
msgstr "アカウントが正しくありません"
-#: ../src/dialogs.py:2458
+#: ../src/dialogs.py:2464
msgid ""
"You have to choose an account from which you want to join the groupchat."
msgstr "グループチャット参加に使用するアカウントを選択してください。"
-#: ../src/dialogs.py:2469
+#: ../src/dialogs.py:2476
msgid "Invalid Nickname"
msgstr "ニックネームが正しくありません"
-#: ../src/dialogs.py:2474 ../src/dialogs.py:2480
-#: ../src/groupchat_control.py:2079
+#: ../src/dialogs.py:2481 ../src/dialogs.py:2487
+#: ../src/groupchat_control.py:2092
msgid "Invalid group chat Jabber ID"
msgstr "グループチャットの JID が正しくありません"
-#: ../src/dialogs.py:2475
+#: ../src/dialogs.py:2482
msgid "Please enter the group chat Jabber ID as room@server."
msgstr "グループチャットの JID を、room@server のように、入力してください。"
-#: ../src/dialogs.py:2481 ../src/groupchat_control.py:2080
+#: ../src/dialogs.py:2488 ../src/groupchat_control.py:2093
msgid "The group chat Jabber ID has not allowed characters."
msgstr "グループチャットの JID に使えない文字が含まれています。"
-#: ../src/dialogs.py:2485 ../src/gui_interface.py:1907
+#: ../src/dialogs.py:2493 ../src/gui_interface.py:1941
msgid "This is not a group chat"
msgstr "グループチャットではありません"
-#: ../src/dialogs.py:2486 ../src/gui_interface.py:1908
+#: ../src/dialogs.py:2494 ../src/gui_interface.py:1942
#, python-format
msgid "%s is not the name of a group chat."
msgstr "%s はグループチャット名ではありません。"
-#: ../src/dialogs.py:2518
+#: ../src/dialogs.py:2526
msgid "Without a connection, you can not synchronise your contacts."
msgstr "接続していないと、相手先を合わせることはできません。"
-#: ../src/dialogs.py:2531
+#: ../src/dialogs.py:2539
msgid "Server"
msgstr "サーバー"
-#: ../src/dialogs.py:2567
+#: ../src/dialogs.py:2575
msgid "This account is not connected to the server"
msgstr "このアカウントはサーバに接続していません"
-#: ../src/dialogs.py:2568
+#: ../src/dialogs.py:2576
msgid "You cannot synchronize with an account unless it is connected."
msgstr "接続していないと、相手先に合わせることはできません。"
-#: ../src/dialogs.py:2593
+#: ../src/dialogs.py:2601
msgid "Synchronise"
msgstr "同調"
-#: ../src/dialogs.py:2654
+#: ../src/dialogs.py:2662
#, python-format
msgid "Start Chat with account %s"
msgstr "アカウント %s でチャットを開始する"
-#: ../src/dialogs.py:2656
+#: ../src/dialogs.py:2664
msgid "Start Chat"
msgstr "チャットを開始する"
-#: ../src/dialogs.py:2657
+#: ../src/dialogs.py:2665
msgid ""
"Fill in the nickname or the Jabber ID of the contact you would like\n"
"to send a chat message to:"
msgstr "チャットしたい相手先のニックネームか Jabber ID を入力してください:"
#. if offline or connecting
-#: ../src/dialogs.py:2684 ../src/dialogs.py:3065 ../src/dialogs.py:3295
+#: ../src/dialogs.py:2692 ../src/dialogs.py:3073 ../src/dialogs.py:3308
msgid "Connection not available"
msgstr "接続していません"
-#: ../src/dialogs.py:2685 ../src/dialogs.py:3066 ../src/dialogs.py:3296
+#: ../src/dialogs.py:2693 ../src/dialogs.py:3074 ../src/dialogs.py:3309
#, python-format
msgid "Please make sure you are connected with \"%s\"."
msgstr "\"%s\" に接続していることを確認してください。"
-#: ../src/dialogs.py:2694 ../src/dialogs.py:2697
+#: ../src/dialogs.py:2702 ../src/dialogs.py:2705
msgid "Invalid JID"
msgstr "JID が正しくありません"
-#: ../src/dialogs.py:2697
+#: ../src/dialogs.py:2705
#, python-format
msgid "Unable to parse \"%s\"."
msgstr "\"%s\" を解析できません。"
-#: ../src/dialogs.py:2706
+#: ../src/dialogs.py:2714
msgid "Without a connection, you can not change your password."
msgstr "接続しないと、パスワードは変更できません。"
-#: ../src/dialogs.py:2725
+#: ../src/dialogs.py:2733
msgid "Invalid password"
msgstr "パスワードが正しくありません。"
-#: ../src/dialogs.py:2725
+#: ../src/dialogs.py:2733
msgid "You must enter a password."
msgstr "パスワードを入力してください。"
-#: ../src/dialogs.py:2729
+#: ../src/dialogs.py:2737
msgid "Passwords do not match"
msgstr "パスワードが一致しません"
-#: ../src/dialogs.py:2730
+#: ../src/dialogs.py:2738
msgid "The passwords typed in both fields must be identical."
msgstr "ふたつの欄のパスワードは同一でなければなりません。"
-#: ../src/dialogs.py:2772 ../src/gui_interface.py:813 ../src/notify.py:270
+#: ../src/dialogs.py:2780 ../src/gui_interface.py:842 ../src/notify.py:273
msgid "New E-mail"
msgstr "新着メール"
-#: ../src/dialogs.py:2774 ../src/gui_interface.py:868 ../src/notify.py:263
+#: ../src/dialogs.py:2782 ../src/gui_interface.py:897 ../src/notify.py:266
msgid "File Transfer Request"
msgstr "ファイル転送の要求"
-#: ../src/dialogs.py:2776 ../src/gui_interface.py:775
-#: ../src/gui_interface.py:839 ../src/notify.py:265
+#: ../src/dialogs.py:2784 ../src/gui_interface.py:804
+#: ../src/gui_interface.py:868 ../src/notify.py:268
msgid "File Transfer Error"
msgstr "ファイル転送のエラー"
-#: ../src/dialogs.py:2778 ../src/gui_interface.py:914
-#: ../src/gui_interface.py:937 ../src/gui_interface.py:954
-#: ../src/notify.py:267
+#: ../src/dialogs.py:2786 ../src/gui_interface.py:943
+#: ../src/gui_interface.py:966 ../src/gui_interface.py:983
+#: ../src/notify.py:270
msgid "File Transfer Completed"
msgstr "ファイルの転送の完了"
-#: ../src/dialogs.py:2779 ../src/gui_interface.py:917 ../src/notify.py:268
+#: ../src/dialogs.py:2787 ../src/gui_interface.py:946 ../src/notify.py:271
msgid "File Transfer Stopped"
msgstr "ファイルの転送の中断"
-#: ../src/dialogs.py:2781 ../src/gui_interface.py:609 ../src/notify.py:272
+#: ../src/dialogs.py:2789 ../src/gui_interface.py:614 ../src/notify.py:275
msgid "Groupchat Invitation"
msgstr "グループチャットへの招待"
-#: ../src/dialogs.py:2984
+#: ../src/dialogs.py:2992
#, python-format
msgid "Single Message using account %s"
-msgstr "account %s で単発メッセージ"
+msgstr "アカウント %s で単発メッセージ"
-#: ../src/dialogs.py:2986
+#: ../src/dialogs.py:2994
#, python-format
msgid "Single Message in account %s"
msgstr "アカウント %s での単発メッセージ"
-#: ../src/dialogs.py:2988
+#: ../src/dialogs.py:2996
msgid "Single Message"
msgstr "単発メッセージ"
#. prepare UI for Sending
-#: ../src/dialogs.py:2991
+#: ../src/dialogs.py:2999
#, python-format
msgid "Send %s"
msgstr "%s を送信する"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3014
+#: ../src/dialogs.py:3022
#, python-format
msgid "Received %s"
msgstr "%s を受信"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3037
+#: ../src/dialogs.py:3045
#, python-format
msgid "Form %s"
msgstr "フォーム %s"
#. we create a new blank window to send and we preset RE: and to jid
-#: ../src/dialogs.py:3116
+#: ../src/dialogs.py:3129
#, python-format
msgid "RE: %s"
msgstr "RE: %s"
-#: ../src/dialogs.py:3117
+#: ../src/dialogs.py:3130
#, python-format
msgid "%s wrote:\n"
msgstr "%s wrote:\n"
-#: ../src/dialogs.py:3176
+#: ../src/dialogs.py:3189
#, python-format
msgid "XML Console for %s"
msgstr "%s の XML コンソール"
-#: ../src/dialogs.py:3178
+#: ../src/dialogs.py:3191
msgid "XML Console"
msgstr "XML コンソール"
#. Action that can be done with an incoming list of contacts
-#: ../src/dialogs.py:3325
+#: ../src/dialogs.py:3338
msgid "add"
msgstr "追加"
-#: ../src/dialogs.py:3325
+#: ../src/dialogs.py:3338
msgid "modify"
msgstr "変更"
-#: ../src/dialogs.py:3326
+#: ../src/dialogs.py:3339
msgid "remove"
msgstr "削除"
-#: ../src/dialogs.py:3355
+#: ../src/dialogs.py:3368
#, python-format
msgid ""
"<b>%(jid)s</b> would like you to <b>%(action)s</b> some contacts in your "
@@ -7367,181 +7721,171 @@ msgstr ""
"b> を行うよう、求めています。"
#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3371 ../src/dialogs.py:3417
-msgid "Add"
-msgstr "追加"
-
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3373 ../src/dialogs.py:3448
+#: ../src/dialogs.py:3386 ../src/dialogs.py:3461
msgid "Modify"
msgstr "変更"
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3375 ../src/dialogs.py:3472
-msgid "Delete"
-msgstr "削除"
-
-#: ../src/dialogs.py:3379
+#: ../src/dialogs.py:3392
msgid "Jabber ID"
msgstr "Jabber ID"
-#: ../src/dialogs.py:3385
+#: ../src/dialogs.py:3398
msgid "Groups"
msgstr "グループ"
#. it is selected
#. remote_jid = model[iter_][1].decode('utf-8')
-#: ../src/dialogs.py:3493
+#: ../src/dialogs.py:3506
#, python-format
msgid "%s suggested me to add you in my roster."
msgstr "あなたを名簿に追加するよう、%s さんは私に勧めました。"
-#: ../src/dialogs.py:3507
+#: ../src/dialogs.py:3520
#, python-format
msgid "Added %s contacts"
msgstr "%s の相手先を追加しました"
-#: ../src/dialogs.py:3544
+#: ../src/dialogs.py:3557
#, python-format
msgid "Removed %s contacts"
msgstr "%s の相手先を削除しました"
-#: ../src/dialogs.py:3584 ../src/dialogs.py:3761
+#: ../src/dialogs.py:3597 ../src/dialogs.py:3774
#, python-format
msgid "Archiving Preferences for %s"
msgstr "%s の書庫の設定"
-#: ../src/dialogs.py:3624
+#: ../src/dialogs.py:3637
msgid "Invalid expire value"
msgstr "期限の値が正しくありません"
-#: ../src/dialogs.py:3625
+#: ../src/dialogs.py:3638
msgid "Expire must be a valid positive integer."
msgstr "期限は正の整数でなければなりません。"
-#: ../src/dialogs.py:3672
+#: ../src/dialogs.py:3685
msgid "There is an error with the form"
msgstr "書式に誤りがあります"
-#: ../src/dialogs.py:3892
+#: ../src/dialogs.py:3905
msgid "There is an error"
msgstr "誤りがあります"
-#: ../src/dialogs.py:3960
+#: ../src/dialogs.py:3973
#, python-format
msgid "Privacy List <b><i>%s</i></b>"
msgstr "プライバシーリスト <b><i>%s</i></b>"
-#: ../src/dialogs.py:3964
+#: ../src/dialogs.py:3977
#, python-format
msgid "Privacy List for %s"
msgstr "%s のプライバシーリスト"
-#: ../src/dialogs.py:4031
+#: ../src/dialogs.py:4044
#, python-format
msgid "Order: %(order)s, action: %(action)s, type: %(type)s, value: %(value)s"
msgstr "順位: %(order)s, 操作: %(action)s, 型: %(type)s, 値: %(value)s"
-#: ../src/dialogs.py:4036
+#: ../src/dialogs.py:4049
#, python-format
msgid "Order: %(order)s, action: %(action)s"
msgstr "順位: %(order)s, 操作: %(action)s"
-#: ../src/dialogs.py:4087
+#: ../src/dialogs.py:4100
msgid "<b>Edit a rule</b>"
msgstr "<b>規則の編集</b>"
-#: ../src/dialogs.py:4198
+#: ../src/dialogs.py:4211
msgid "<b>Add a rule</b>"
msgstr "<b>規則の追加</b>"
-#: ../src/dialogs.py:4297
+#: ../src/dialogs.py:4310
#, python-format
msgid "Privacy Lists for %s"
msgstr "%s のプライバシーリスト"
-#: ../src/dialogs.py:4299
+#: ../src/dialogs.py:4312
msgid "Privacy Lists"
msgstr "プライバシーリスト"
-#: ../src/dialogs.py:4388
+#: ../src/dialogs.py:4401
msgid "Invalid List Name"
msgstr "リスト名が正しくありません"
-#: ../src/dialogs.py:4389
+#: ../src/dialogs.py:4402
msgid "You must enter a name to create a privacy list."
msgstr "プライバシーリストを作成するには、名前を入力しなければなりません。"
-#: ../src/dialogs.py:4421
+#: ../src/dialogs.py:4434
msgid "You are invited to a groupchat"
msgstr "グループチャットへの招待を受けました"
-#: ../src/dialogs.py:4424
+#: ../src/dialogs.py:4437
msgid "$Contact has invited you to join a discussion"
msgstr "$Contact さんがあなたを議論に参加するよう招待しています"
-#: ../src/dialogs.py:4426
+#: ../src/dialogs.py:4439
#, python-format
msgid "$Contact has invited you to group chat %(room_jid)s"
msgstr "$Contact さんがあなたをグループチャット %(room_jid)s へ招待しています"
-#: ../src/dialogs.py:4434
+#: ../src/dialogs.py:4447
#, python-format
msgid "Comment: %s"
msgstr "コメント: %s"
-#: ../src/dialogs.py:4436
+#: ../src/dialogs.py:4449
msgid "Do you want to accept the invitation?"
msgstr "招待に応じますか ?"
-#: ../src/dialogs.py:4498
+#: ../src/dialogs.py:4511
msgid "Choose Client Cert #PCKS12"
msgstr "#PCKS12 形式のクライアント証明書の選択"
-#: ../src/dialogs.py:4508 ../src/dialogs.py:4550 ../src/dialogs.py:4606
-#: ../src/dialogs.py:4694
+#: ../src/dialogs.py:4521 ../src/dialogs.py:4563 ../src/dialogs.py:4619
+#: ../src/dialogs.py:4707
msgid "All files"
msgstr "すべてのファイル"
-#: ../src/dialogs.py:4513
+#: ../src/dialogs.py:4526
msgid "PKCS12 Files"
msgstr "PKCS12 形式のファイル"
-#: ../src/dialogs.py:4540
+#: ../src/dialogs.py:4553
msgid "Choose Sound"
msgstr "サウンドの選択"
-#: ../src/dialogs.py:4555
+#: ../src/dialogs.py:4568
msgid "Wav Sounds"
msgstr "WAV サウンド"
-#: ../src/dialogs.py:4593
+#: ../src/dialogs.py:4606
msgid "Choose Image"
msgstr "画像の選択"
-#: ../src/dialogs.py:4611
+#: ../src/dialogs.py:4624
msgid "Images"
msgstr "画像"
-#: ../src/dialogs.py:4681
+#: ../src/dialogs.py:4694
msgid "Choose Archive"
msgstr "書庫の選択"
-#: ../src/dialogs.py:4699
+#: ../src/dialogs.py:4712
msgid "Zip files"
msgstr "Zip ファイル"
-#: ../src/dialogs.py:4725
+#: ../src/dialogs.py:4738
#, python-format
msgid "When %s becomes:"
msgstr "%s が次のようになったとき:"
-#: ../src/dialogs.py:4727
+#: ../src/dialogs.py:4740
#, python-format
msgid "Adding Special Notification for %s"
msgstr "%s の特別通知の追加"
-#: ../src/dialogs.py:4947
+#: ../src/dialogs.py:4960
#, python-format
msgid ""
"Your chat session with <b>%(jid)s</b> is encrypted.\n"
@@ -7552,19 +7896,19 @@ msgstr ""
"\n"
"このチャットの認証文字列 (SAS)は <b>%(sas)s</b> です。"
-#: ../src/dialogs.py:4950
+#: ../src/dialogs.py:4963
msgid "You have already verified this contact's identity."
msgstr "相手先の同一性を既に確認しています。"
-#: ../src/dialogs.py:4956 ../src/dialogs.py:5040
+#: ../src/dialogs.py:4969 ../src/dialogs.py:5053
msgid "Contact's identity verified"
msgstr "相手先の同一性を確認しました"
-#: ../src/dialogs.py:4962
+#: ../src/dialogs.py:4975
msgid "Verify again..."
msgstr "再検証中..."
-#: ../src/dialogs.py:4967
+#: ../src/dialogs.py:4980
msgid ""
"To be certain that <b>only</b> the expected person can read your messages or "
"send you messages, you need to verify their identity by clicking the button "
@@ -7574,19 +7918,19 @@ msgstr ""
"を送ることができることを確実にするため、その人が本人であることを検証する必要"
"があります。次のボタンをクリックしてください。"
-#: ../src/dialogs.py:4970 ../src/dialogs.py:5021 ../src/dialogs.py:5034
+#: ../src/dialogs.py:4983 ../src/dialogs.py:5034 ../src/dialogs.py:5047
msgid "Contact's identity NOT verified"
msgstr "相手先の同一性を確認していません"
-#: ../src/dialogs.py:4975
+#: ../src/dialogs.py:4988
msgid "Verify..."
msgstr "検証中..."
-#: ../src/dialogs.py:4986
+#: ../src/dialogs.py:4999
msgid "Have you verified the contact's identity?"
msgstr "相手先の同一性を確認しましたか ?"
-#: ../src/dialogs.py:4987
+#: ../src/dialogs.py:5000
#, python-format
msgid ""
"To prevent talking to an unknown person, you should speak to <b>%(jid)s</b> "
@@ -7600,23 +7944,23 @@ msgstr ""
"\n"
"この接続の認証文字列は <b>%(sas)s</b> です。"
-#: ../src/dialogs.py:4988
+#: ../src/dialogs.py:5001
msgid "Did you talk to the remote contact and verify the SAS?"
msgstr "遠くの相手先と話して、認証文字列(SAS)を確認しましたか ?"
-#: ../src/dialogs.py:5022
+#: ../src/dialogs.py:5035
#, python-format
msgid "The contact's key (%s) <b>does not match</b> the key assigned in Gajim."
msgstr ""
"この相手先の鍵 (%s) は、Gajim で割り当てられた鍵と <b>一致しません</b>。"
-#: ../src/dialogs.py:5028
+#: ../src/dialogs.py:5041
msgid "No GPG key is assigned to this contact. So you cannot encrypt messages."
msgstr ""
"この相手先に対して GPG 鍵は割り当てられていません。そのため、メッセージは暗号"
"化されません。 "
-#: ../src/dialogs.py:5035
+#: ../src/dialogs.py:5048
msgid ""
"GPG key is assigned to this contact, but <b>you do not trust his key</b>, so "
"message <b>cannot</b> be encrypted. Use your GPG client to trust this key."
@@ -7625,7 +7969,7 @@ msgstr ""
"いません</b>。メッセージは暗号化<b>されません</b>。鍵に信頼を与えるには GPG "
"クライアントを使ってください。"
-#: ../src/dialogs.py:5041
+#: ../src/dialogs.py:5054
msgid ""
"GPG Key is assigned to this contact, and you trust his key, so messages will "
"be encrypted."
@@ -7633,19 +7977,19 @@ msgstr ""
"この相手先に対して GPG 鍵が割り当てられています。その鍵を信頼して、メッセージ"
"は暗号化されます。"
-#: ../src/dialogs.py:5106
+#: ../src/dialogs.py:5119
msgid "an audio and video"
msgstr "音声とビデオ"
-#: ../src/dialogs.py:5108
+#: ../src/dialogs.py:5121
msgid "an audio"
msgstr "音声"
-#: ../src/dialogs.py:5110
+#: ../src/dialogs.py:5123
msgid "a video"
msgstr "ビデオ"
-#: ../src/dialogs.py:5114
+#: ../src/dialogs.py:5127
#, python-format
msgid ""
"%(contact)s wants to start %(type)s session with you. Do you want to answer "
@@ -7654,12 +7998,12 @@ msgstr ""
"%(contact)s さんは、%(type)s でセッションを始めようとしています。呼び出しに応"
"えますか ?"
-#: ../src/dialogs.py:5182
+#: ../src/dialogs.py:5195
#, python-format
msgid "Certificate for account %s"
msgstr "アカウント %s の証明書"
-#: ../src/dialogs.py:5182
+#: ../src/dialogs.py:5195
#, python-format
msgid ""
"<b>Issued to:</b>\n"
@@ -7698,7 +8042,7 @@ msgstr ""
"<b>指紋</b>\n"
"SHA1 指紋: %(sha1)s"
-#: ../src/dialogs.py:5216 ../src/dialogs.py:5233
+#: ../src/dialogs.py:5229 ../src/dialogs.py:5246
msgid "View cert..."
msgstr "証明書を表示..."
@@ -7789,20 +8133,20 @@ msgstr "説明"
msgid "Id"
msgstr "Id"
-#: ../src/disco.py:1835 ../src/gui_interface.py:2443
+#: ../src/disco.py:1835 ../src/gui_interface.py:2477
msgid "Bookmark already set"
msgstr "既にブックマーク"
-#: ../src/disco.py:1836 ../src/gui_interface.py:2444
+#: ../src/disco.py:1836 ../src/gui_interface.py:2478
#, python-format
msgid "Group Chat \"%s\" is already in your bookmarks."
msgstr "グループチャット \"%s\" は既にブックマークにあります。"
-#: ../src/disco.py:1845 ../src/gui_interface.py:2458
+#: ../src/disco.py:1845 ../src/gui_interface.py:2492
msgid "Bookmark has been added successfully"
msgstr "ブックマークが追加されました"
-#: ../src/disco.py:1846 ../src/gui_interface.py:2459
+#: ../src/disco.py:1846 ../src/gui_interface.py:2493
msgid "You can manage your bookmarks via Actions menu in your roster."
msgstr "ブックマークは、名簿の「アクション」メニューから管理できます。"
@@ -7838,8 +8182,8 @@ msgstr ""
"安全な接続を確実にするために、サーバー証明書の検証に使われるライブラリ。"
#: ../src/features_window.py:52 ../src/features_window.py:53
-msgid "Requires python-pyopenssl."
-msgstr "python-pyopenssl が必要です。"
+msgid "Requires python-pyopenssl > 0.12 and pyasn1."
+msgstr "python-pyopenssl (0.12 より上) と pyasn1 が必要です。"
#: ../src/features_window.py:54
msgid "Bonjour / Zeroconf"
@@ -7848,16 +8192,20 @@ msgstr "Bonjour / Zeroconf"
#: ../src/features_window.py:55
msgid "Serverless chatting with autodetected clients in a local network."
msgstr ""
-"ローカルなネットワークで自動検出されたクライアントとサーバーなしのチャットで"
-"きます。"
+"ローカルなネットワークで自動検出されたクライアントとサーバーなしのチャットが"
+"できます。"
#: ../src/features_window.py:56
msgid "Requires python-avahi."
msgstr "python-avahi が必要です。"
#: ../src/features_window.py:57
-msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
-msgstr "pybonjour が必要です ( http://o2s.csail.mit.edu/o2s-wiki/pybonjour )。"
+msgid ""
+"Requires pybonjour and bonjour SDK running (http://developer.apple.com/"
+"opensource/)."
+msgstr ""
+"pybonjour と実行中の bonjour SDK が必要です (http://developer.apple.com/"
+"opensource/)。"
#: ../src/features_window.py:58
msgid "Command line"
@@ -7873,8 +8221,8 @@ msgstr "python-dbus が必要です。"
#: ../src/features_window.py:61 ../src/features_window.py:69
#: ../src/features_window.py:73 ../src/features_window.py:77
-#: ../src/features_window.py:85 ../src/features_window.py:89
-#: ../src/features_window.py:109 ../src/features_window.py:113
+#: ../src/features_window.py:89 ../src/features_window.py:109
+#: ../src/features_window.py:113 ../src/features_window.py:117
msgid "Feature not available under Windows."
msgstr "Windows ではこの機能は無効です。"
@@ -7959,6 +8307,10 @@ msgstr "入力するメッセージのスペルチェックをします。"
msgid "Requires libgtkspell."
msgstr "libgtkspell が必要です。"
+#: ../src/features_window.py:85
+msgid "Requires libgtkspell and libenchant."
+msgstr "libgtkspell と libenchant が必要です。"
+
#: ../src/features_window.py:86
msgid "Notification"
msgstr "通知"
@@ -8057,19 +8409,30 @@ msgid "UPnP-IGD"
msgstr "UPnP-IGD"
#: ../src/features_window.py:111
-#, fuzzy
msgid "Ability to request your router to forward port for file transfer."
-msgstr "ファイル転送のフォワードポートのためのルーターの要求の可能性。"
+msgstr "ファイル転送のフォワードポートのためのルーターの要求を可能にします。"
#: ../src/features_window.py:112
msgid "Requires python-gupnp-igd."
msgstr "python-gupnp-igd が必要です。"
-#: ../src/features_window.py:120
+#: ../src/features_window.py:114
+msgid "UPower"
+msgstr "UPower"
+
+#: ../src/features_window.py:115
+msgid "Ability to disconnect properly just before suspending the machine."
+msgstr "コンピュータをサスペンドする直前に適切に切断するか。"
+
+#: ../src/features_window.py:116
+msgid "Requires upower and python-dbus."
+msgstr "upower と python-dbus が必要です。"
+
+#: ../src/features_window.py:124
msgid "?features:Available"
msgstr "有効"
-#: ../src/features_window.py:127
+#: ../src/features_window.py:131
msgid "Feature"
msgstr "機能"
@@ -8085,139 +8448,124 @@ msgstr "時間"
msgid "Progress"
msgstr "進捗"
-#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:234
+#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:235
#, python-format
msgid "Filename: %s"
msgstr "ファイル名: %s"
-#: ../src/filetransfers_window.py:179 ../src/filetransfers_window.py:333
+#: ../src/filetransfers_window.py:180 ../src/filetransfers_window.py:400
#, python-format
msgid "Size: %s"
msgstr "サイズ: %s"
#. You is a reply of who sent a file
#. You is a reply of who received a file
-#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:198
+#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:199
#: ../src/history_manager.py:541
msgid "You"
msgstr "あなた"
-#: ../src/filetransfers_window.py:189
+#: ../src/filetransfers_window.py:190
#, python-format
msgid "Sender: %s"
msgstr "送信者: %s"
-#: ../src/filetransfers_window.py:190 ../src/filetransfers_window.py:627
-#: ../src/tooltips.py:742
+#: ../src/filetransfers_window.py:191 ../src/filetransfers_window.py:637
+#: ../src/tooltips.py:743
msgid "Recipient: "
msgstr "受取人: "
-#: ../src/filetransfers_window.py:201
+#: ../src/filetransfers_window.py:202
#, python-format
msgid "Saved in: %s"
msgstr "保存場所: %s"
-#: ../src/filetransfers_window.py:203
-msgid "File transfer completed"
-msgstr "ファイルの転送が完了しました"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:225
-msgid "File transfer cancelled"
-msgstr "ファイルの転送が中止されました"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:226
-msgid "Connection with peer cannot be established."
-msgstr "ピア接続は確立できませんでした。"
-
# (Mako) とりあえず「受取人」で
-#: ../src/filetransfers_window.py:235
+#: ../src/filetransfers_window.py:237
#, python-format
msgid "Recipient: %s"
msgstr "受取人: %s"
-#: ../src/filetransfers_window.py:237
+#: ../src/filetransfers_window.py:239
#, python-format
msgid "Error message: %s"
msgstr "エラーメッセージ: %s"
-#: ../src/filetransfers_window.py:238
-msgid "File transfer stopped"
-msgstr "ファイルの転送が中断しました"
-
-#: ../src/filetransfers_window.py:266
+#: ../src/filetransfers_window.py:268
msgid "Choose File to Send..."
msgstr "転送するファイルを選択..."
-#: ../src/filetransfers_window.py:282 ../src/tooltips.py:780
+#: ../src/filetransfers_window.py:284 ../src/tooltips.py:781
msgid "Description: "
msgstr "説明: "
-#: ../src/filetransfers_window.py:295
+#: ../src/filetransfers_window.py:297
msgid "Gajim cannot access this file"
msgstr "このファイルにアクセスできません"
-#: ../src/filetransfers_window.py:296
+#: ../src/filetransfers_window.py:298
msgid "This file is being used by another process."
msgstr "このファイルは別のプログラムが使用中です。"
-#: ../src/filetransfers_window.py:330
-#, python-format
-msgid "File: %s"
-msgstr "ファイル: %s"
-
-#: ../src/filetransfers_window.py:336
-#, python-format
-msgid "Type: %s"
-msgstr "種類: %s"
-
-#: ../src/filetransfers_window.py:338
-#, python-format
-msgid "Description: %s"
-msgstr "説明: %s"
-
-#: ../src/filetransfers_window.py:339
-#, python-format
-msgid "%s wants to send you a file:"
-msgstr "%s さんがファイルを転送したがっています:"
-
-#: ../src/filetransfers_window.py:352 ../src/gtkgui_helpers.py:850
+#: ../src/filetransfers_window.py:336 ../src/gtkgui_helpers.py:850
#, python-format
msgid "Cannot overwrite existing file \"%s\""
msgstr "既存のファイル \"%s\" に上書きできない"
-#: ../src/filetransfers_window.py:353 ../src/gtkgui_helpers.py:851
+#: ../src/filetransfers_window.py:337 ../src/gtkgui_helpers.py:851
msgid ""
"A file with this name already exists and you do not have permission to "
"overwrite it."
msgstr "この名前のファイルは既に存在し、かつ上書きの権限がありません。"
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "This file already exists"
msgstr "そのファイルは既に存在しています"
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "What do you want to do?"
msgstr "何をしたいですか ?"
-#. read-only bit is used to mark special folder under windows,
-#. not to mark that a folder is read-only. See ticket #3587
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:862
+#. read-only bit is used to mark special folder under
+#. windows, not to mark that a folder is read-only.
+#. See ticket #3587
+#: ../src/filetransfers_window.py:365 ../src/gtkgui_helpers.py:862
#, python-format
msgid "Directory \"%s\" is not writable"
msgstr "ディレクトリ \"%s\" に書き込む権限がありません"
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:863
+#: ../src/filetransfers_window.py:366 ../src/gtkgui_helpers.py:863
msgid "You do not have permission to create files in this directory."
msgstr "このディレクトリにファイルを作成する権限がありません。"
-#: ../src/filetransfers_window.py:389
+#: ../src/filetransfers_window.py:377
msgid "Save File as..."
msgstr "ファイルの保存..."
+#: ../src/filetransfers_window.py:397
+#, python-format
+msgid "File: %s"
+msgstr "ファイル: %s"
+
+#: ../src/filetransfers_window.py:403
+#, python-format
+msgid "Type: %s"
+msgstr "種類: %s"
+
+#: ../src/filetransfers_window.py:405
+#, python-format
+msgid "Description: %s"
+msgstr "説明: %s"
+
+#: ../src/filetransfers_window.py:406
+#, python-format
+msgid "%s wants to send you a file:"
+msgstr "%s さんがファイルを転送したがっています:"
+
#. Print remaining time in format 00:00:00
#. You can change the places of (hours), (minutes), (seconds) -
#. they are not translatable.
-#: ../src/filetransfers_window.py:459
+#: ../src/filetransfers_window.py:469
#, python-format
msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
@@ -8225,35 +8573,84 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
#. This should make the string Kb/s,
#. where 'Kb' part is taken from %s.
#. Only the 's' after / (which means second) should be translated.
-#: ../src/filetransfers_window.py:552
+#: ../src/filetransfers_window.py:562
#, python-format
msgid "(%(filesize_unit)s/s)"
msgstr "(%(filesize_unit)s/秒)"
-#: ../src/filetransfers_window.py:595 ../src/filetransfers_window.py:598
+#: ../src/filetransfers_window.py:605 ../src/filetransfers_window.py:608
msgid "Invalid File"
msgstr "ファイルが正しくありません"
-#: ../src/filetransfers_window.py:595
+#: ../src/filetransfers_window.py:605
msgid "File: "
msgstr "ファイル: "
-#: ../src/filetransfers_window.py:599
+#: ../src/filetransfers_window.py:609
msgid "It is not possible to send empty files"
msgstr "空のファイルを転送することはできません"
-#: ../src/filetransfers_window.py:623 ../src/tooltips.py:732
+#: ../src/filetransfers_window.py:633 ../src/tooltips.py:733
msgid "Name: "
msgstr "名前: "
-#: ../src/filetransfers_window.py:625 ../src/tooltips.py:736
+#: ../src/filetransfers_window.py:635 ../src/tooltips.py:737
msgid "Sender: "
msgstr "送信者: "
-#: ../src/filetransfers_window.py:787
+#: ../src/filetransfers_window.py:797
msgid "Pause"
msgstr "一時停止"
+#: ../src/gajim.py:194
+msgid "Gajim needs X server to run. Quiting..."
+msgstr "Gajim には X server が必要です。終了します..."
+
+#: ../src/gajim.py:196
+#, python-format
+msgid "importing PyGTK failed: %s"
+msgstr "PyGTK のインポートに失敗しました: %s"
+
+#: ../src/gajim.py:237
+msgid "Gajim needs PyGTK 2.16 or above"
+msgstr "Gajim には PyGTK 2.16 以上が必要です"
+
+#: ../src/gajim.py:238
+msgid "Gajim needs PyGTK 2.16 or above to run. Quiting..."
+msgstr "Gajim には PyGTK 2.16 またはそれ以上が必要です。終了します..."
+
+#: ../src/gajim.py:240
+msgid "Gajim needs GTK 2.16 or above"
+msgstr "Gajim には GTK 2.16 以上が必要です"
+
+#: ../src/gajim.py:241
+msgid "Gajim needs GTK 2.16 or above to run. Quiting..."
+msgstr "Gajim には GTK 2.16 またはそれ以上が必要です。終了します..."
+
+#: ../src/gajim.py:250
+msgid "Gajim needs pywin32 to run"
+msgstr "Gajim には pywin32 が必要です"
+
+#: ../src/gajim.py:251
+#, python-format
+msgid ""
+"Please make sure that Pywin32 is installed on your system. You can get it at "
+"%s"
+msgstr ""
+"システムに Pywin32 がインストールされているか確認してください。%s から入手で"
+"きます"
+
+#. set the icon to all newly opened wind
+#: ../src/gajim.py:367
+msgid "Gajim is already running"
+msgstr "Gajim は既に起動しています"
+
+#: ../src/gajim.py:368
+msgid ""
+"Another instance of Gajim seems to be running\n"
+"Run anyway?"
+msgstr "別の Gajim が既に起動しているようですそれでも起動しますか ?"
+
#: ../src/gajim-remote.py:77
msgid "Shows a help on specific command"
msgstr "指定のコマンドに対するヘルプを表示します"
@@ -8699,55 +9096,6 @@ msgstr "uri がありません"
msgid "Wrong uri"
msgstr "uri が間違っています"
-#: ../src/gajim.py:186
-msgid "Gajim needs X server to run. Quiting..."
-msgstr "Gajim には X server が必要です。終了します..."
-
-#: ../src/gajim.py:188
-#, python-format
-msgid "importing PyGTK failed: %s"
-msgstr "PyGTK のインポートに失敗しました: %s"
-
-#: ../src/gajim.py:230
-msgid "Gajim needs PyGTK 2.16 or above"
-msgstr "Gajim には PyGTK 2.16 以上が必要です"
-
-#: ../src/gajim.py:231
-msgid "Gajim needs PyGTK 2.16 or above to run. Quiting..."
-msgstr "Gajim には PyGTK 2.16 またはそれ以上が必要です。終了します..."
-
-#: ../src/gajim.py:233
-msgid "Gajim needs GTK 2.16 or above"
-msgstr "Gajim には GTK 2.16 以上が必要です"
-
-#: ../src/gajim.py:234
-msgid "Gajim needs GTK 2.16 or above to run. Quiting..."
-msgstr "Gajim には GTK 2.16 またはそれ以上が必要です。終了します..."
-
-#: ../src/gajim.py:243
-msgid "Gajim needs pywin32 to run"
-msgstr "Gajim には pywin32 が必要です"
-
-#: ../src/gajim.py:244
-#, python-format
-msgid ""
-"Please make sure that Pywin32 is installed on your system. You can get it at "
-"%s"
-msgstr ""
-"システムに Pywin32 がインストールされているか確認してください。%s から入手で"
-"きます"
-
-#. set the icon to all newly opened wind
-#: ../src/gajim.py:360
-msgid "Gajim is already running"
-msgstr "Gajim は既に起動しています"
-
-#: ../src/gajim.py:361
-msgid ""
-"Another instance of Gajim seems to be running\n"
-"Run anyway?"
-msgstr "別の Gajim が既に起動しているようですそれでも起動しますか ?"
-
#: ../src/gajim_themes_window.py:59
msgid "Theme"
msgstr "テーマ"
@@ -8773,213 +9121,213 @@ msgstr "現在のテーマを削除することはできません"
msgid "Please first choose another for your current theme."
msgstr "まず、現在のテーマとして別のものを選んでください。"
-#: ../src/groupchat_control.py:176 ../src/groupchat_control.py:1557
+#: ../src/groupchat_control.py:179 ../src/groupchat_control.py:1568
#, python-format
msgid "%(nick)s is now known as %(new_nick)s"
msgstr "%(nick)s さんは現在 %(new_nick)s さんと認識されました"
-#: ../src/groupchat_control.py:230
+#: ../src/groupchat_control.py:233
msgid "Sending private message failed"
msgstr "私信の送信に失敗しました"
#. in second %s code replaces with nickname
-#: ../src/groupchat_control.py:232
+#: ../src/groupchat_control.py:235
#, python-format
msgid "You are no longer in group chat \"%(room)s\" or \"%(nick)s\" has left."
msgstr ""
"あなたが既にグループチャット \"%(room)s\" にいないか、あるいは \"%(nick)s\" "
"さんがいません。"
-#: ../src/groupchat_control.py:560
+#: ../src/groupchat_control.py:563
msgid "Insert Nickname"
msgstr "ニックネームの挿入"
# (Mako) 語順が問題。コロンでごまかしてみる
-#: ../src/groupchat_control.py:743
+#: ../src/groupchat_control.py:746
msgid "Conversation with "
msgstr "会話中: "
-#: ../src/groupchat_control.py:745
+#: ../src/groupchat_control.py:748
msgid "Continued conversation"
msgstr "会話中"
-#: ../src/groupchat_control.py:1222
+#: ../src/groupchat_control.py:1225
#, python-format
msgid "%(nick)s has set the subject to %(subject)s"
msgstr "%(nick)s さんは題を %(subject)s に設定しました"
#. Can be a presence (see chg_contact_status in groupchat_control.py)
-#: ../src/groupchat_control.py:1240 ../src/groupchat_control.py:1499
+#: ../src/groupchat_control.py:1243 ../src/groupchat_control.py:1510
msgid "Any occupant is allowed to see your full JID"
msgstr "在室者の誰もがあなたのフルJID を知ることができます"
-#: ../src/groupchat_control.py:1243
+#: ../src/groupchat_control.py:1246
msgid "Room now shows unavailable member"
msgstr "談話室はメンバー以外にも見えます"
-#: ../src/groupchat_control.py:1245
+#: ../src/groupchat_control.py:1248
msgid "room now does not show unavailable members"
msgstr "談話室はメンバー以外には見えません"
-#: ../src/groupchat_control.py:1247
+#: ../src/groupchat_control.py:1250
msgid "A non-privacy-related room configuration change has occurred"
msgstr "談話室の構成の変更(プライバシー関連ではない)がありました"
#. Can be a presence (see chg_contact_status in groupchat_control.py)
-#: ../src/groupchat_control.py:1251
+#: ../src/groupchat_control.py:1254
msgid "Room logging is now enabled"
msgstr "談話室の記録を取りはじめます"
-#: ../src/groupchat_control.py:1253
+#: ../src/groupchat_control.py:1256
msgid "Room logging is now disabled"
msgstr "談話室の記録を止めます"
-#: ../src/groupchat_control.py:1255
+#: ../src/groupchat_control.py:1258
msgid "Room is now non-anonymous"
msgstr "談話室は非匿名です"
-#: ../src/groupchat_control.py:1258
+#: ../src/groupchat_control.py:1261
msgid "Room is now semi-anonymous"
msgstr "談話室は半匿名です"
-#: ../src/groupchat_control.py:1261
+#: ../src/groupchat_control.py:1264
msgid "Room is now fully-anonymous"
msgstr "談話室は完全匿名です"
#. Can be a message (see handle_event_gc_config_change in
#. gajim.py)
-#: ../src/groupchat_control.py:1504
+#: ../src/groupchat_control.py:1515
msgid "Room logging is enabled"
msgstr "談話室の会話は記録されています"
-#: ../src/groupchat_control.py:1506
+#: ../src/groupchat_control.py:1517
msgid "A new room has been created"
msgstr "新しい談話室が作成されました"
-#: ../src/groupchat_control.py:1509
+#: ../src/groupchat_control.py:1520
msgid "The server has assigned or modified your roomnick"
msgstr "サーバーはあなたの談話室ニックネームを割り当て(または変更し)ました"
#. do not print 'kicked by None'
-#: ../src/groupchat_control.py:1515
+#: ../src/groupchat_control.py:1526
#, python-format
msgid "%(nick)s has been kicked: %(reason)s"
msgstr "%(nick)s は蹴り出されました: %(reason)s"
-#: ../src/groupchat_control.py:1518
+#: ../src/groupchat_control.py:1529
#, python-format
msgid "%(nick)s has been kicked by %(who)s: %(reason)s"
msgstr "%(nick)s は %(who)s によって蹴り出されました: %(reason)s"
#. do not print 'banned by None'
-#: ../src/groupchat_control.py:1527
+#: ../src/groupchat_control.py:1538
#, python-format
msgid "%(nick)s has been banned: %(reason)s"
msgstr "%(nick)s は締め出されました: %(reason)s"
-#: ../src/groupchat_control.py:1530
+#: ../src/groupchat_control.py:1541
#, python-format
msgid "%(nick)s has been banned by %(who)s: %(reason)s"
msgstr "%(nick)s は %(who)s: によって締め出されました: %(reason)s"
-#: ../src/groupchat_control.py:1541 ../src/groupchat_control.py:1645
+#: ../src/groupchat_control.py:1552 ../src/groupchat_control.py:1656
#, python-format
msgid "You are now known as %s"
msgstr "あなたは %s と認識されました"
-#: ../src/groupchat_control.py:1599 ../src/groupchat_control.py:1604
-#: ../src/groupchat_control.py:1610
+#: ../src/groupchat_control.py:1610 ../src/groupchat_control.py:1615
+#: ../src/groupchat_control.py:1621
#, python-format
msgid "%(nick)s has been removed from the room (%(reason)s)"
msgstr "%(nick)s は退出しました (%(reason)s)"
-#: ../src/groupchat_control.py:1601
+#: ../src/groupchat_control.py:1612
msgid "affiliation changed"
msgstr "分掌を変更しました"
-#: ../src/groupchat_control.py:1606
+#: ../src/groupchat_control.py:1617
msgid "room configuration changed to members-only"
msgstr "談話室はメンバー制に変更されました"
-#: ../src/groupchat_control.py:1612
+#: ../src/groupchat_control.py:1623
msgid "system shutdown"
msgstr "システムのシャットダウン"
-#: ../src/groupchat_control.py:1695
+#: ../src/groupchat_control.py:1706
#, python-format
msgid "** Affiliation of %(nick)s has been set to %(affiliation)s by %(actor)s"
msgstr ""
"** %(actor)s さんによって、%(nick)s さんの分掌は %(affiliation)s に設定されま"
"した"
-#: ../src/groupchat_control.py:1699
+#: ../src/groupchat_control.py:1710
#, python-format
msgid "** Affiliation of %(nick)s has been set to %(affiliation)s"
msgstr "** %(nick)s さんの分掌は %(affiliation)s に設定されました"
# (Mako)ここでの role は「役」
-#: ../src/groupchat_control.py:1714
+#: ../src/groupchat_control.py:1725
#, python-format
msgid "** Role of %(nick)s has been set to %(role)s by %(actor)s"
msgstr ""
"** %(actor)s さんによって、%(nick)s さんの役は %(role)s に設定されました"
-#: ../src/groupchat_control.py:1718
+#: ../src/groupchat_control.py:1729
#, python-format
msgid "** Role of %(nick)s has been set to %(role)s"
msgstr "** %(nick)s さんの役は %(role)s に設定されました"
-#: ../src/groupchat_control.py:1748
+#: ../src/groupchat_control.py:1759
#, python-format
msgid "%s has left"
msgstr "%s さんが退出しました"
-#: ../src/groupchat_control.py:1753
+#: ../src/groupchat_control.py:1764
#, python-format
msgid "%s has joined the group chat"
msgstr "%s さんが参加しました"
-#: ../src/groupchat_control.py:2006
+#: ../src/groupchat_control.py:2019
#, python-format
msgid "Are you sure you want to leave group chat \"%s\"?"
msgstr "本当にグループチャット \"%s\" から退出してもいいですか ?"
-#: ../src/groupchat_control.py:2008
+#: ../src/groupchat_control.py:2021
msgid ""
"If you close this window, you will be disconnected from this group chat."
msgstr "このウィンドウを閉じると、このグループチャットから切断されます。"
-#: ../src/groupchat_control.py:2012 ../src/gui_interface.py:668
-#: ../src/gui_interface.py:1277 ../src/gui_interface.py:1317
-#: ../src/gui_interface.py:1358 ../src/message_window.py:224
-#: ../src/roster_window.py:2942 ../src/roster_window.py:3617
-#: ../src/roster_window.py:4386
+#: ../src/groupchat_control.py:2025 ../src/gui_interface.py:673
+#: ../src/gui_interface.py:1311 ../src/gui_interface.py:1351
+#: ../src/gui_interface.py:1392 ../src/message_window.py:224
+#: ../src/roster_window.py:2989 ../src/roster_window.py:3667
+#: ../src/roster_window.py:4473
msgid "_Do not ask me again"
msgstr "次回から質問しない (_D)"
-#: ../src/groupchat_control.py:2046
+#: ../src/groupchat_control.py:2059
msgid "Changing Subject"
msgstr "題の変更"
-#: ../src/groupchat_control.py:2047
+#: ../src/groupchat_control.py:2060
msgid "Please specify the new subject:"
msgstr "新しい題を入力してください:"
-#: ../src/groupchat_control.py:2054
+#: ../src/groupchat_control.py:2067
msgid "Changing Nickname"
msgstr "ニックネームの変更"
-#: ../src/groupchat_control.py:2055
+#: ../src/groupchat_control.py:2068
msgid "Please specify the new nickname you want to use:"
msgstr "使いたい新しいニックネームを入力してください:"
#. Ask for a reason
-#: ../src/groupchat_control.py:2086
+#: ../src/groupchat_control.py:2099
#, python-format
msgid "Destroying %s"
msgstr "%s の閉鎖"
-#: ../src/groupchat_control.py:2087
+#: ../src/groupchat_control.py:2100
msgid ""
"You are going to definitively destroy this room.\n"
"You may specify a reason below:"
@@ -8987,22 +9335,22 @@ msgstr ""
"この談話室を閉鎖しようとしています。\n"
"下に理由を入力できます:"
-#: ../src/groupchat_control.py:2089
+#: ../src/groupchat_control.py:2102
msgid "You may also enter an alternate venue:"
msgstr "また、代替の談話室を入力することもできます:"
#. ask for reason
-#: ../src/groupchat_control.py:2284
+#: ../src/groupchat_control.py:2297
#, python-format
msgid "Kicking %s"
msgstr "%s を蹴り出し"
-#: ../src/groupchat_control.py:2285 ../src/groupchat_control.py:2617
+#: ../src/groupchat_control.py:2298 ../src/groupchat_control.py:2630
msgid "You may specify a reason below:"
msgstr "下に理由を書くことができます:"
#. ask for reason
-#: ../src/groupchat_control.py:2616
+#: ../src/groupchat_control.py:2629
#, python-format
msgid "Banning %s"
msgstr "%s を締め出し"
@@ -9076,14 +9424,14 @@ msgstr "画像の保存..."
#. we are banned
#. group chat does not exist
-#: ../src/gui_interface.py:126 ../src/gui_interface.py:290
-#: ../src/gui_interface.py:299 ../src/gui_interface.py:305
-#: ../src/gui_interface.py:308 ../src/gui_interface.py:311
-#: ../src/gui_interface.py:316
+#: ../src/gui_interface.py:131 ../src/gui_interface.py:295
+#: ../src/gui_interface.py:304 ../src/gui_interface.py:310
+#: ../src/gui_interface.py:313 ../src/gui_interface.py:316
+#: ../src/gui_interface.py:321
msgid "Unable to join group chat"
msgstr "グループに参加できません"
-#: ../src/gui_interface.py:127
+#: ../src/gui_interface.py:132
#, python-format
msgid ""
"Your desired nickname in group chat %s is in use or registered by another "
@@ -9094,86 +9442,86 @@ msgstr ""
"す。\n"
"別のニックネームを下に入力してください:"
-#: ../src/gui_interface.py:130
+#: ../src/gui_interface.py:135
msgid "Always use this nickname when there is a conflict"
msgstr "衝突が生じたときはいつもこのニックネームを使う"
-#: ../src/gui_interface.py:147
+#: ../src/gui_interface.py:152
msgid "Do you accept this request?"
msgstr "この申し込みを承認しますか ?"
-#: ../src/gui_interface.py:149
+#: ../src/gui_interface.py:154
#, python-format
msgid "Do you accept this request on account %s?"
msgstr "アカウント %s への申し込みを承認しますか ?"
-#: ../src/gui_interface.py:152
+#: ../src/gui_interface.py:157
#, python-format
msgid "HTTP (%(method)s) Authorization for %(url)s (id: %(id)s)"
msgstr "%(url)s に対する HTTP (%(method)s) の承認 (id: %(id)s)"
-#: ../src/gui_interface.py:195 ../src/notify.py:276
+#: ../src/gui_interface.py:200 ../src/notify.py:279
msgid "Connection Failed"
msgstr "接続に失敗しました"
-#: ../src/gui_interface.py:279
+#: ../src/gui_interface.py:284
#, python-format
msgid "A Password is required to join the room %s. Please type it."
msgstr "談話室 %s に参加するにはパスワードが必要です。入力してください。"
-#: ../src/gui_interface.py:291
+#: ../src/gui_interface.py:296
#, python-format
msgid "Maximum number of users for <b>%s</b> has been reached"
msgstr "<b>%s</b> の人数の上限に達しています"
-#: ../src/gui_interface.py:300
+#: ../src/gui_interface.py:305
#, python-format
msgid "You are banned from group chat <b>%s</b>."
msgstr "グループチャット <b>%s</b> から締め出されています。"
-#: ../src/gui_interface.py:306
+#: ../src/gui_interface.py:311
#, python-format
msgid "Group chat <b>%s</b> does not exist."
msgstr "グループチャット <b>%s</b> は存在しません。"
-#: ../src/gui_interface.py:309
+#: ../src/gui_interface.py:314
msgid "Group chat creation is restricted."
msgstr "グループチャットの作成は制限されています。"
-#: ../src/gui_interface.py:312
+#: ../src/gui_interface.py:317
#, python-format
msgid "Your registered nickname must be used in group chat <b>%s</b>."
msgstr "登録したニックネームは、グループチャット <b>%s</b> で使われます。"
-#: ../src/gui_interface.py:317
+#: ../src/gui_interface.py:322
#, python-format
msgid "You are not in the members list in groupchat %s."
msgstr "あなたはグループチャット %s のメンバー一覧にありません。"
-#: ../src/gui_interface.py:400 ../src/gui_interface.py:404
+#: ../src/gui_interface.py:405 ../src/gui_interface.py:409
#, python-format
msgid "Error %(code)s: %(msg)s"
msgstr "エラー %(code)s: %(msg)s"
-#: ../src/gui_interface.py:456 ../src/notify.py:278
+#: ../src/gui_interface.py:461 ../src/notify.py:281
msgid "Subscription request"
msgstr "在席通知申込"
-#: ../src/gui_interface.py:481
+#: ../src/gui_interface.py:486
msgid "Authorization accepted"
msgstr "承認が得られました"
-#: ../src/gui_interface.py:482
+#: ../src/gui_interface.py:487
#, python-format
msgid "The contact \"%s\" has authorized you to see his or her status."
msgstr "相手先 %s さんは、あなたが在席状況を見ることを承認しました。"
-#: ../src/gui_interface.py:490
+#: ../src/gui_interface.py:495
#, python-format
msgid "Contact \"%s\" removed subscription from you"
msgstr "相手先 \"%s\" さんは、あなたからの申し込みを却下しました。"
-#: ../src/gui_interface.py:491
+#: ../src/gui_interface.py:496
msgid ""
"You will always see him or her as offline.\n"
"Do you want to remove him or her from your contact list?"
@@ -9181,16 +9529,16 @@ msgstr ""
"この相手先を常にオフラインとして見ることになります。\n"
"相手先一覧から削除しますか ?"
-#: ../src/gui_interface.py:512 ../src/notify.py:280
+#: ../src/gui_interface.py:517 ../src/notify.py:283
msgid "Unsubscribed"
msgstr "在席通知の取り消し"
-#: ../src/gui_interface.py:523
+#: ../src/gui_interface.py:528
#, python-format
msgid "Contact with \"%s\" cannot be established"
msgstr "\"%s\" との接続は確立できませんでした"
-#: ../src/gui_interface.py:621
+#: ../src/gui_interface.py:626
msgid ""
"You configured Gajim to use GPG agent, but there is no GPG agent running or "
"it returned a wrong passphrase.\n"
@@ -9198,32 +9546,32 @@ msgstr ""
"Gajim は GPG エージェントを使用するよう設定されました。しかし、GPG エージェン"
"トが起動していないか、あるいはパスフレーズが間違っています。\n"
-#: ../src/gui_interface.py:623 ../src/gui_interface.py:631
+#: ../src/gui_interface.py:628 ../src/gui_interface.py:636
msgid "You are currently connected without your OpenPGP key."
msgstr "現在、OpenPGP 鍵を使わずに接続しています。"
-#: ../src/gui_interface.py:625
+#: ../src/gui_interface.py:630
msgid "Your passphrase is incorrect"
msgstr "パスフレーズが違います"
-#: ../src/gui_interface.py:630
+#: ../src/gui_interface.py:635
msgid "OpenGPG Passphrase Incorrect"
msgstr "OpenGPG のパスフレーズが違います"
-#: ../src/gui_interface.py:643
+#: ../src/gui_interface.py:648
msgid "Certificate Passphrase Required"
msgstr "証明書のパスフレーズが必要です"
-#: ../src/gui_interface.py:644
+#: ../src/gui_interface.py:649
#, python-format
msgid "Enter the passphrase for the certificate for account %s"
msgstr "アカウント %s の証明書のパスフレーズを入力してください。"
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid "GPG key not trusted"
msgstr "GPG 鍵に信用がありません"
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid ""
"The GPG key used to encrypt this chat is not trusted. Do you really want to "
"encrypt this message?"
@@ -9231,7 +9579,7 @@ msgstr ""
"このチャットの暗号化に使った GPG 鍵には信用がありません。ほんとうにこのメッ"
"セージを暗号化したいですか ?"
-#: ../src/gui_interface.py:679
+#: ../src/gui_interface.py:684
msgid ""
"Gnome Keyring is installed but not correctly started (environment variable "
"probably not correctly set)"
@@ -9239,19 +9587,29 @@ msgstr ""
"Gnome Keyring はインストールされています。しかし、正しく起動できません(環境変"
"数が正しく設定されていないようです)。"
-#: ../src/gui_interface.py:786
+#: ../src/gui_interface.py:722
+msgid ""
+"Please copy / paste the refresh token from the website that has just been "
+"opened."
+msgstr "表示された web サイトから新しいトークンをコピー/ペーストしてください。"
+
+#: ../src/gui_interface.py:725
+msgid "Oauth2 Credentials"
+msgstr "Oauth2 信任状"
+
+#: ../src/gui_interface.py:815
#, python-format
msgid "New mail on %(gmail_mail_address)s"
msgstr "%(gmail_mail_address)s に新着メール"
-#: ../src/gui_interface.py:788
+#: ../src/gui_interface.py:817
#, python-format
msgid "You have %d new mail conversation"
msgid_plural "You have %d new mail conversations"
msgstr[0] "新着メールが %d 件あります"
msgstr[1] "新着メールが %d 件あります"
-#: ../src/gui_interface.py:801
+#: ../src/gui_interface.py:830
#, python-format
msgid ""
"\n"
@@ -9266,58 +9624,50 @@ msgstr ""
"件名: %(subject)s\n"
"%(snippet)s"
-#: ../src/gui_interface.py:866
+#: ../src/gui_interface.py:895
#, python-format
msgid "%s wants to send you a file."
msgstr "%s さんがファイルを転送したがっています。"
-#: ../src/gui_interface.py:903 ../src/roster_window.py:1891
-msgid "Remote contact stopped transfer"
-msgstr "遠くの相手先が転送を中止しました"
-
-#: ../src/gui_interface.py:906 ../src/roster_window.py:1893
-msgid "Error opening file"
-msgstr "ファイルを開く際のエラー"
-
-#: ../src/gui_interface.py:938
+#: ../src/gui_interface.py:967
#, python-format
msgid "You successfully received %(filename)s from %(name)s."
msgstr "%(name)s さんからファイル %(filename)s を受け取りました。"
#. ft stopped
-#: ../src/gui_interface.py:942
+#: ../src/gui_interface.py:971
#, python-format
msgid "File transfer of %(filename)s from %(name)s stopped."
msgstr "%(name)s さんからのファイル %(filename)s の転送を中断しました。"
-#: ../src/gui_interface.py:955
+#: ../src/gui_interface.py:984
#, python-format
msgid "You successfully sent %(filename)s to %(name)s."
msgstr "%(name)s さんへファイル %(filename)s を送りました。"
#. ft stopped
-#: ../src/gui_interface.py:959
+#: ../src/gui_interface.py:988
#, python-format
msgid "File transfer of %(filename)s to %(name)s stopped."
msgstr "%(name)s さんへのファイル %(filename)s の転送を中断しました。"
-#: ../src/gui_interface.py:1034
+#: ../src/gui_interface.py:1063
msgid "Unable to decrypt message"
msgstr "メッセージを復号できません"
-#: ../src/gui_interface.py:1046
+#: ../src/gui_interface.py:1075
msgid "Username Conflict"
msgstr "ユーザー名の重複"
-#: ../src/gui_interface.py:1047
+#: ../src/gui_interface.py:1076
msgid "Please type a new username for your local account"
msgstr "ローカルのアカウントの新しいユーザー名を入力してください"
-#: ../src/gui_interface.py:1062
+#: ../src/gui_interface.py:1091
msgid "Resource Conflict"
msgstr "リソースの衝突"
-#: ../src/gui_interface.py:1063
+#: ../src/gui_interface.py:1092
msgid ""
"You are already connected to this account with the same resource. Please "
"type a new one"
@@ -9326,20 +9676,20 @@ msgstr ""
"てください"
#. TODO: we should use another pixmap ;-)
-#: ../src/gui_interface.py:1108
+#: ../src/gui_interface.py:1137
#, python-format
msgid "%s wants to start a voice chat."
msgstr "%s さんがファイルを音声チャットを始めたがっています。"
-#: ../src/gui_interface.py:1111
+#: ../src/gui_interface.py:1140
msgid "Voice Chat Request"
msgstr "音声チャットの要求"
-#: ../src/gui_interface.py:1198
+#: ../src/gui_interface.py:1227
msgid "Error verifying SSL certificate"
msgstr "SSL 証明書の検証エラー"
-#: ../src/gui_interface.py:1199
+#: ../src/gui_interface.py:1228
#, python-format
msgid ""
"There was an error verifying the SSL certificate of your jabber server: "
@@ -9349,15 +9699,15 @@ msgstr ""
"jabber サーバーの SSL 証明書の検証にエラーがあります: %(error)s\n"
"それでもこのサーバーに接続しますか ?"
-#: ../src/gui_interface.py:1208
+#: ../src/gui_interface.py:1237
msgid "Ignore this error for this certificate."
msgstr "この証明書のこのエラーを無視します。"
-#: ../src/gui_interface.py:1233
+#: ../src/gui_interface.py:1262
msgid "SSL certificate error"
msgstr "SSL 証明書エラー"
-#: ../src/gui_interface.py:1234
+#: ../src/gui_interface.py:1263
#, python-format
msgid ""
"It seems the SSL certificate of account %(account)s has changed or your "
@@ -9374,28 +9724,34 @@ msgstr ""
"\n"
"それでも接続して、証明書の指紋を更新しますか ?"
-#: ../src/gui_interface.py:1270 ../src/gui_interface.py:1312
-#: ../src/gui_interface.py:1354
+#: ../src/gui_interface.py:1302 ../src/gui_interface.py:1346
+#: ../src/gui_interface.py:1388
msgid "Insecure connection"
msgstr "安全でない接続"
-#: ../src/gui_interface.py:1271
+#: ../src/gui_interface.py:1303
#, python-format
msgid ""
"You are about to connect to the account %(account)s (%(server)s) with an "
"insecure connection. This means all your conversations will be exchanged "
-"unencrypted. Are you sure you want to do that?"
+"unencrypted. This type of connection is really discouraged.\n"
+"Are you sure you want to do that?"
msgstr ""
"安全でない接続でアカウント %(account)s (サーバー %(server)s) に接続しようとし"
-"ています。これは、すべての会話が暗号化されずに交わされること意味します。あな"
-"たがやりたいことですか ?"
+"ています。これは、すべての会話が暗号化されずに交わされること意味します。この"
+"タイプの接続はまったくおすすめしません。\n"
+"あなたがやりたいことですか ?"
-#: ../src/gui_interface.py:1276 ../src/gui_interface.py:1316
-#: ../src/gui_interface.py:1357
+#: ../src/gui_interface.py:1309 ../src/gui_interface.py:1350
+#: ../src/gui_interface.py:1391
msgid "Yes, I really want to connect insecurely"
msgstr "はい。安全でないまま接続したいです"
-#: ../src/gui_interface.py:1313
+#: ../src/gui_interface.py:1310
+msgid "Gajim will NOT connect unless you check this box"
+msgstr "このボックスにチェックしなければ、Gajim は接続しません"
+
+#: ../src/gui_interface.py:1347
msgid ""
"You are about to send your password on an insecure connection. You should "
"install PyOpenSSL to prevent that. Are you sure you want to do that?"
@@ -9403,7 +9759,7 @@ msgstr ""
"安全でない接続でパスワードを送ろうとしています。それを避けるには PyOpenSSL を"
"インストールすべきです。あなたがやりたいことですか ?"
-#: ../src/gui_interface.py:1355
+#: ../src/gui_interface.py:1389
msgid ""
"You are about to send your password unencrypted on an insecure connection. "
"Are you sure you want to do that?"
@@ -9412,11 +9768,11 @@ msgstr ""
"りたいことですか ?"
#. theme doesn't exist, disable emoticons
-#: ../src/gui_interface.py:1864 ../src/gui_interface.py:1887
+#: ../src/gui_interface.py:1898 ../src/gui_interface.py:1921
msgid "Emoticons disabled"
msgstr "感情アイコンは無効"
-#: ../src/gui_interface.py:1865
+#: ../src/gui_interface.py:1899
msgid ""
"Your configured emoticons theme has not been found, so emoticons have been "
"disabled."
@@ -9424,7 +9780,7 @@ msgstr ""
"指定された感情アイコンのテーマは見つかりません。そのため、感情アイコンは無効"
"です。"
-#: ../src/gui_interface.py:1888
+#: ../src/gui_interface.py:1922
msgid ""
"Your configured emoticons theme cannot been loaded. You maybe need to update "
"the format of emoticons.py file. See http://trac.gajim.org/wiki/Emoticons "
@@ -9434,42 +9790,42 @@ msgstr ""
"ルの書式を更新する必要があるかも知れません。詳しくは http://trac.gajim.org/"
"wiki/Emoticons をご覧ください。"
-#: ../src/gui_interface.py:1932 ../src/roster_window.py:3784
+#: ../src/gui_interface.py:1966 ../src/roster_window.py:3834
msgid "You cannot join a group chat while you are invisible"
msgstr "隠れているあいだはグループチャットに参加できません"
#. it is good to notify the user
#. in case he or she cannot see the output of the console
-#: ../src/gui_interface.py:2319
+#: ../src/gui_interface.py:2353
msgid "Could not save your settings and preferences"
msgstr "設定を保存できませんでした"
-#: ../src/gui_interface.py:2866
+#: ../src/gui_interface.py:2915
msgid "Passphrase Required"
msgstr "パスフレーズが必要です"
-#: ../src/gui_interface.py:2867
+#: ../src/gui_interface.py:2916
#, python-format
msgid "Enter GPG key passphrase for key %(keyid)s (account %(account)s)."
msgstr ""
"鍵ID %(keyid)s (アカウント %(account)s) の GPG 鍵のパスフレーズを入力してくだ"
"さい。"
-#: ../src/gui_interface.py:2881
+#: ../src/gui_interface.py:2930
msgid "GPG key expired"
msgstr "GPG 鍵は期限切れです"
-#: ../src/gui_interface.py:2882
+#: ../src/gui_interface.py:2931
#, python-format
msgid "Your GPG key has expired, you will be connected to %s without OpenPGP."
msgstr "GPG 鍵は有効期限が切れています。OpenPGP なしに %s に接続します。"
#. ask again
-#: ../src/gui_interface.py:2891
+#: ../src/gui_interface.py:2940
msgid "Wrong Passphrase"
msgstr "パスフレーズが間違っています"
-#: ../src/gui_interface.py:2892
+#: ../src/gui_interface.py:2941
msgid "Please retype your GPG passphrase or press Cancel."
msgstr ""
"GPG のパスフレーズをもういちど入力するか、または「中止」を押してください。"
@@ -9478,7 +9834,7 @@ msgstr ""
msgid "_New Group Chat"
msgstr "新しいグループチャット (_N)"
-#: ../src/gui_menu_builder.py:419
+#: ../src/gui_menu_builder.py:420
msgid "I would like to add you to my roster"
msgstr "私はあなたを名簿に追加したいと思っています"
@@ -9493,7 +9849,7 @@ msgstr "相手先"
#. holds time
#: ../src/history_manager.py:169 ../src/history_manager.py:213
-#: ../src/history_window.py:98
+#: ../src/history_window.py:99
msgid "Date"
msgstr "日付"
@@ -9504,7 +9860,7 @@ msgstr "ニックネーム"
#. holds message
#: ../src/history_manager.py:185 ../src/history_manager.py:220
-#: ../src/history_window.py:106
+#: ../src/history_window.py:107
msgid "Message"
msgstr "メッセージ"
@@ -9562,9 +9918,8 @@ msgid "This is an irreversible operation."
msgstr "これは不可逆的な操作です。"
#: ../src/history_manager.py:600 ../src/history_manager.py:639
-#, fuzzy
msgid "Deletion Confirmation"
-msgstr "中止の確認"
+msgstr "削除の確認"
#: ../src/history_manager.py:634
msgid "Do you really want to delete the selected message?"
@@ -9572,48 +9927,40 @@ msgid_plural "Do you really want to delete the selected messages?"
msgstr[0] "本当に、選択したメッセージを削除してもいいですか ?"
msgstr[1] "本当に、選択したメッセージを削除してもいいですか ?"
-#: ../src/history_window.py:305
+#: ../src/history_window.py:306
#, python-format
msgid "Conversation History with %s"
msgstr "%s さんとの会話の履歴"
-#: ../src/history_window.py:355
+#: ../src/history_window.py:356
msgid "Disk Error"
msgstr "ディスクのエラー"
-#: ../src/history_window.py:443
+#: ../src/history_window.py:444
#, python-format
msgid "%(nick)s is now %(status)s: %(status_msg)s"
msgstr "%(nick)s さんは現在、%(status)s: %(status_msg)s"
-#: ../src/history_window.py:454
+#: ../src/history_window.py:455
#, python-format
msgid "Error: %s"
msgstr "エラー: %s"
-#: ../src/history_window.py:456
+#: ../src/history_window.py:457
msgid "Error"
msgstr "エラー"
-#: ../src/history_window.py:458
+#: ../src/history_window.py:459
#, python-format
msgid "Status is now: %(status)s: %(status_msg)s"
msgstr "現在の状況: %(status)s: %(status_msg)s"
-#: ../src/history_window.py:461
+#: ../src/history_window.py:462
#, python-format
msgid "Status is now: %(status)s"
msgstr "現在の状況: %(status)s"
-#: ../src/htmltextview.py:523 ../src/htmltextview.py:533
-msgid "Timeout loading image"
-msgstr "画像の読み込みに失敗しました"
-
-#: ../src/htmltextview.py:543
-msgid "Image is too big"
-msgstr "画像が大きすぎます"
-
-#: ../src/htmltextview.py:576
+#: ../src/htmltextview.py:522
#, fuzzy
msgid "Loading"
msgstr "読み込み中"
@@ -9650,48 +9997,48 @@ msgstr "- メッセージは記録されます"
msgid "- messages will not be logged"
msgstr "- メッセージは記録されません"
-#: ../src/notify.py:319
+#: ../src/notify.py:322
msgid "Ignore"
msgstr "無視する"
-#: ../src/plugins/gui.py:67
+#: ../src/plugins/gui.py:68
msgid "Plugin"
msgstr "プラグイン"
-#: ../src/plugins/gui.py:161
+#: ../src/plugins/gui.py:162
msgid "Plugin failed"
msgstr "プラグインに失敗しました"
-#: ../src/plugins/gui.py:205
+#: ../src/plugins/gui.py:206
msgid "Unable to properly remove the plugin"
msgstr "プラグインを正しく削除することができません"
#. members not safe
-#: ../src/plugins/gui.py:213 ../src/plugins/pluginmanager.py:499
-#: ../src/plugins/pluginmanager.py:507
+#: ../src/plugins/gui.py:214 ../src/plugins/pluginmanager.py:519
+#: ../src/plugins/pluginmanager.py:527
msgid "Archive is malformed"
-msgstr ""
+msgstr "書庫の形式が正しくありません"
-#: ../src/plugins/gui.py:236 ../src/plugins/gui.py:244
-#: ../src/plugins/pluginmanager.py:515
+#: ../src/plugins/gui.py:237 ../src/plugins/gui.py:245
+#: ../src/plugins/pluginmanager.py:535
msgid "Plugin already exists"
msgstr "プラグインは既に存在しています"
-#: ../src/plugins/gui.py:236
+#: ../src/plugins/gui.py:237
msgid "Overwrite?"
msgstr "上書きしますか ?"
-#: ../src/plugins/gui.py:265
+#: ../src/plugins/gui.py:266
msgid "Configuration"
msgstr "調整"
#. it is not zip file
#. CRC error
-#: ../src/plugins/pluginmanager.py:485 ../src/plugins/pluginmanager.py:491
+#: ../src/plugins/pluginmanager.py:505 ../src/plugins/pluginmanager.py:511
msgid "Archive corrupted"
msgstr "書庫が壊れています"
-#: ../src/plugins/pluginmanager.py:487
+#: ../src/plugins/pluginmanager.py:507
msgid "Archive empty"
msgstr "書庫が空です"
@@ -9699,18 +10046,18 @@ msgstr "書庫が空です"
msgid "Retrieving profile..."
msgstr "プロフィールを取得中..."
-#: ../src/profile_window.py:125 ../src/roster_window.py:3137
+#: ../src/profile_window.py:125 ../src/roster_window.py:3184
msgid "File is empty"
msgstr "ファイルが空です"
-#: ../src/profile_window.py:128 ../src/roster_window.py:3140
+#: ../src/profile_window.py:128 ../src/roster_window.py:3187
msgid "File does not exist"
msgstr "ファイルがありません"
#. keep identation
#. unknown format
#: ../src/profile_window.py:142 ../src/profile_window.py:158
-#: ../src/roster_window.py:3142 ../src/roster_window.py:3153
+#: ../src/roster_window.py:3189 ../src/roster_window.py:3200
msgid "Could not load image"
msgstr "画像を読み込めませんでした"
@@ -9749,52 +10096,52 @@ msgid ""
msgstr ""
"個人情報の公開する際にエラーが発生しました。時間をおいて再度試みてください。"
-#: ../src/roster_window.py:240 ../src/roster_window.py:1028
+#: ../src/roster_window.py:240 ../src/roster_window.py:1031
msgid "Merged accounts"
msgstr "統合アカウント"
-#: ../src/roster_window.py:1956
+#: ../src/roster_window.py:1999
msgid "Authorization has been sent"
msgstr "承認が送信されました"
-#: ../src/roster_window.py:1957
+#: ../src/roster_window.py:2000
#, python-format
msgid "Now \"%s\" will know your status."
msgstr "現在 \"%s\" さんはあなたの在席状況を知ることができます。"
-#: ../src/roster_window.py:1980
+#: ../src/roster_window.py:2023
msgid "Subscription request has been sent"
msgstr "在席通知の申し込みを送信しました"
-#: ../src/roster_window.py:1981
+#: ../src/roster_window.py:2024
#, python-format
msgid "If \"%s\" accepts this request you will know his or her status."
msgstr ""
"\"%s\" さんがこの申し込みを承認したら、相手先の在席状況を知ることができます。"
-#: ../src/roster_window.py:1995
+#: ../src/roster_window.py:2038
msgid "Authorization has been removed"
msgstr "承認が取り消されました"
-#: ../src/roster_window.py:1996
+#: ../src/roster_window.py:2039
#, python-format
msgid "Now \"%s\" will always see you as offline."
msgstr "\"%s\" さんは常にあなたをオフラインとして見ることになります。"
-#: ../src/roster_window.py:2023
+#: ../src/roster_window.py:2066
msgid "GPG is not usable"
msgstr "GPG は使用できません"
-#: ../src/roster_window.py:2024
+#: ../src/roster_window.py:2067
#, python-format
msgid "You will be connected to %s without OpenPGP."
msgstr "OpenPGP なしに、%s さんに接続します。"
-#: ../src/roster_window.py:2231 ../src/roster_window.py:3714
+#: ../src/roster_window.py:2274 ../src/roster_window.py:3764
msgid "You are participating in one or more group chats"
msgstr "一つ以上のグループチャットに参加中です。"
-#: ../src/roster_window.py:2232 ../src/roster_window.py:3715
+#: ../src/roster_window.py:2275 ../src/roster_window.py:3765
msgid ""
"Changing your status to invisible will result in disconnection from those "
"group chats. Are you sure you want to go invisible?"
@@ -9802,37 +10149,37 @@ msgstr ""
"在席状況を「隠れ中」にすると、グループチャットから退出することになります。ほ"
"んとうに「隠れ中」にしますか ?"
-#: ../src/roster_window.py:2258
+#: ../src/roster_window.py:2301
msgid "desync'ed"
msgstr "不揃い"
-#: ../src/roster_window.py:2324
+#: ../src/roster_window.py:2367
msgid "Really quit Gajim?"
msgstr "本当に Gajim を終了しますか ?"
-#: ../src/roster_window.py:2325
+#: ../src/roster_window.py:2368
msgid "Are you sure you want to quit Gajim?"
msgstr "本当に Gajim を終了してもいいですか ?"
-#: ../src/roster_window.py:2326
+#: ../src/roster_window.py:2369
msgid "Always close Gajim"
msgstr "常に Gajim を終了する"
-#: ../src/roster_window.py:2410
+#: ../src/roster_window.py:2455
msgid "You have running file transfers"
msgstr "ファイルの転送を実行中です"
-#: ../src/roster_window.py:2411
+#: ../src/roster_window.py:2456
msgid ""
"If you quit now, the file(s) being transferred will be stopped. Do you still "
"want to quit?"
msgstr "いま終了すると、転送中のファイルは中断されます。それでも終了しますか?"
-#: ../src/roster_window.py:2442 ../src/roster_window.py:2856
+#: ../src/roster_window.py:2487 ../src/roster_window.py:2903
msgid "You have unread messages"
msgstr "未読のメッセージがあります"
-#: ../src/roster_window.py:2443
+#: ../src/roster_window.py:2488
msgid ""
"Messages will only be available for reading them later if you have history "
"enabled and contact is in your roster."
@@ -9840,37 +10187,37 @@ msgstr ""
"履歴が有効になっていて、かつ相手先が名簿にあれば、メッセージは後で読むことが"
"できます。"
-#: ../src/roster_window.py:2857
+#: ../src/roster_window.py:2904
msgid "You must read them before removing this transport."
msgstr "この中継先を削除する前に、それらを読まなければなりません。"
-#: ../src/roster_window.py:2860
+#: ../src/roster_window.py:2907
#, python-format
msgid "Transport \"%s\" will be removed"
msgstr "中継先 \"%s\" を削除します"
-#: ../src/roster_window.py:2861
+#: ../src/roster_window.py:2908
msgid ""
"You will no longer be able to send and receive messages from contacts using "
"this transport."
msgstr "この中継先をとおして相手先にメッセージを送受信することはできません。"
-#: ../src/roster_window.py:2864
+#: ../src/roster_window.py:2911
msgid "Transports will be removed"
msgstr "中継先は削除されます"
-#: ../src/roster_window.py:2869
+#: ../src/roster_window.py:2916
#, python-format
msgid ""
"You will no longer be able to send and receive messages to contacts from "
"these transports: %s"
msgstr "もうこれらの中継先 %s から相手先とのメッセージの送受信はできません。"
-#: ../src/roster_window.py:2937
+#: ../src/roster_window.py:2984
msgid "You are about to block a contact. Are you sure you want to continue?"
msgstr "相手先を遮断しようとしています。続行してもいいですか ?"
-#: ../src/roster_window.py:2939
+#: ../src/roster_window.py:2986
msgid ""
"This contact will see you offline and you will not receive messages he will "
"send you."
@@ -9879,56 +10226,56 @@ msgstr ""
"ん。"
#. it's jid
-#: ../src/roster_window.py:3029
+#: ../src/roster_window.py:3076
msgid "Rename Contact"
msgstr "相手先の名前を変更"
-#: ../src/roster_window.py:3030
+#: ../src/roster_window.py:3077
#, python-format
msgid "Enter a new nickname for contact %s"
msgstr "相手先 %s さんの新しいニックネームを入力してください"
-#: ../src/roster_window.py:3037
+#: ../src/roster_window.py:3084
msgid "Rename Group"
msgstr "グループの名前変更"
-#: ../src/roster_window.py:3038
+#: ../src/roster_window.py:3085
#, python-format
msgid "Enter a new name for group %s"
msgstr "グループ %s の新しい名前を入力してください"
-#: ../src/roster_window.py:3083
+#: ../src/roster_window.py:3130
msgid "Remove Group"
msgstr "グループの削除"
-#: ../src/roster_window.py:3084
+#: ../src/roster_window.py:3131
#, python-format
msgid "Do you want to remove group %s from the roster?"
msgstr "名簿からグループ %s を削除しますか ?"
-#: ../src/roster_window.py:3085
+#: ../src/roster_window.py:3132
msgid "Also remove all contacts in this group from your roster"
msgstr "名簿のこのグループのすべての相手先も削除します"
-#: ../src/roster_window.py:3124
+#: ../src/roster_window.py:3171
msgid "Assign OpenPGP Key"
msgstr "OpenPGP 鍵の割り当て"
-#: ../src/roster_window.py:3125
+#: ../src/roster_window.py:3172
msgid "Select a key to apply to the contact"
msgstr "相手先に適用する鍵を選択してください"
-#: ../src/roster_window.py:3524
+#: ../src/roster_window.py:3574
#, python-format
msgid "Contact \"%s\" will be removed from your roster"
msgstr "相手先 \"%s\" さんを名簿から削除します"
-#: ../src/roster_window.py:3526
+#: ../src/roster_window.py:3576
#, python-format
msgid "You are about to remove \"%(name)s\" (%(jid)s) from your roster.\n"
msgstr "\"%(name)s\" (%(jid)s) さんを名簿から削除しようとしています。\n"
-#: ../src/roster_window.py:3531
+#: ../src/roster_window.py:3581
msgid ""
"By removing this contact you also remove authorization resulting in him or "
"her always seeing you as offline."
@@ -9937,11 +10284,11 @@ msgstr ""
"を常にオフラインとして見ることになります。"
#. Contact is not in roster
-#: ../src/roster_window.py:3537
+#: ../src/roster_window.py:3587
msgid "Do you want to continue?"
msgstr "続けますか ?"
-#: ../src/roster_window.py:3541
+#: ../src/roster_window.py:3591
msgid ""
"By removing this contact you also by default remove authorization resulting "
"in him or her always seeing you as offline."
@@ -9949,16 +10296,16 @@ msgstr ""
"この相手先を名簿から削除すると、デフォルトで在席通知の承認も取り消します。相"
"手先はあなたを常にオフラインとして見ることになります。"
-#: ../src/roster_window.py:3544
+#: ../src/roster_window.py:3594
msgid "I want this contact to know my status after removal"
msgstr "削除後も、この相手先に自分の在席状況を知らせる"
#. several contact to remove at the same time
-#: ../src/roster_window.py:3548
+#: ../src/roster_window.py:3598
msgid "Contacts will be removed from your roster"
msgstr "相手先は名簿から削除されました"
-#: ../src/roster_window.py:3553
+#: ../src/roster_window.py:3603
#, python-format
msgid ""
"By removing these contacts:%s\n"
@@ -9968,12 +10315,12 @@ msgstr ""
"を名簿から削除すると、在席通知の承認も取り消します。相手先はあなたを常にオフ"
"ラインとして見ることになります。"
-#: ../src/roster_window.py:3611
+#: ../src/roster_window.py:3661
msgid ""
"You are about to send a custom status. Are you sure you want to continue?"
msgstr "独自の在席状況を送信しようとしています。続行してもいいですか ?"
-#: ../src/roster_window.py:3613
+#: ../src/roster_window.py:3663
#, python-format
msgid ""
"This contact will temporarily see you as %(status)s, but only until you "
@@ -9983,19 +10330,19 @@ msgstr ""
"が在席状況を変更するまでの間です。その後はあなたの全体の在席状況を見ることに"
"なります。"
-#: ../src/roster_window.py:3632
+#: ../src/roster_window.py:3682
msgid "No account available"
msgstr "アカウントがありません"
-#: ../src/roster_window.py:3633
+#: ../src/roster_window.py:3683
msgid "You must create an account before you can chat with other contacts."
msgstr "相手先とチャットを開始する前に、アカウントを作成しなければなりません。"
-#: ../src/roster_window.py:4286
+#: ../src/roster_window.py:4373
msgid "Metacontacts storage not supported by your server"
msgstr "サーバーはメタ相手先の保存をサポートしていません"
-#: ../src/roster_window.py:4288
+#: ../src/roster_window.py:4375
msgid ""
"Your server does not support storing metacontacts information. So those "
"information will not be saved on next reconnection."
@@ -10003,12 +10350,12 @@ msgstr ""
"サーバーはメタ相手先の情報の保存をサポートしていません。したがってその情報は"
"次の接続の際には失われています。"
-#: ../src/roster_window.py:4380
+#: ../src/roster_window.py:4467
msgid ""
"You are about to create a metacontact. Are you sure you want to continue?"
msgstr "メタ相手先を作成しようとしています。続行してもいいですか ?"
-#: ../src/roster_window.py:4382
+#: ../src/roster_window.py:4469
msgid ""
"Metacontacts are a way to regroup several contacts in one line. Generally it "
"is used when the same person has several Jabber accounts or transport "
@@ -10018,29 +10365,29 @@ msgstr ""
"人物が複数の Jabber アカウントや中継先アカウントを持っているときに使用しま"
"す。"
-#: ../src/roster_window.py:4503
+#: ../src/roster_window.py:4590
msgid "Invalid file URI:"
msgstr "ファイルの URI が正しくありません:"
-#: ../src/roster_window.py:4515
+#: ../src/roster_window.py:4602
#, python-format
msgid "Do you want to send this file to %s:"
msgid_plural "Do you want to send these files to %s:"
msgstr[0] "このファイルを %s さんに転送しますか:"
msgstr[1] "これらのファイルを %s さんに転送しますか:"
-#: ../src/roster_window.py:4650
+#: ../src/roster_window.py:4737
#, python-format
msgid "Send %s to %s"
msgstr "%s を %s に送信"
-#: ../src/roster_window.py:4661
-#, fuzzy, python-format
+#: ../src/roster_window.py:4748
+#, python-format
msgid "Make %s first contact"
msgstr "%s を優先の相手先とする"
# (Mako) よくわからない。Make [c_source.get_shown_name()] and [c_dest.get_shown_name()] metacontacts
-#: ../src/roster_window.py:4664
+#: ../src/roster_window.py:4751
#, python-format
msgid "Make %s and %s metacontacts"
msgstr "%s と %s をメタ相手先とする"
@@ -10050,131 +10397,131 @@ msgstr "%s と %s をメタ相手先とする"
#. for chat_with
#. for single message
#. join gc
-#: ../src/roster_window.py:5104 ../src/roster_window.py:5158
-#: ../src/roster_window.py:5167 ../src/statusicon.py:264
+#: ../src/roster_window.py:5190 ../src/roster_window.py:5244
+#: ../src/roster_window.py:5253 ../src/statusicon.py:264
#: ../src/statusicon.py:311 ../src/statusicon.py:317
#, python-format
msgid "using account %s"
msgstr "アカウント %s で"
#. add
-#: ../src/roster_window.py:5174
+#: ../src/roster_window.py:5260
#, python-format
msgid "to %s account"
msgstr "アカウント %s に対して"
#. disco
-#: ../src/roster_window.py:5179
+#: ../src/roster_window.py:5265
#, python-format
msgid "using %s account"
msgstr "アカウント %s で"
-#: ../src/roster_window.py:5218 ../src/statusicon.py:327
+#: ../src/roster_window.py:5304 ../src/statusicon.py:327
msgid "_Manage Bookmarks..."
msgstr "ブックマークの管理 (_M)..."
#. profile, avatar
-#: ../src/roster_window.py:5238
+#: ../src/roster_window.py:5324
#, python-format
msgid "of account %s"
msgstr "アカウント %s の"
-#: ../src/roster_window.py:5279
+#: ../src/roster_window.py:5365
#, python-format
msgid "for account %s"
msgstr "アカウント %s について"
-#: ../src/roster_window.py:5339 ../src/roster_window.py:5447
+#: ../src/roster_window.py:5425 ../src/roster_window.py:5533
msgid "_Change Status Message"
msgstr "状況メッセージの変更 (_C)"
-#: ../src/roster_window.py:5372
+#: ../src/roster_window.py:5458
msgid "Publish Tune"
msgstr "聴いている楽曲名を公開"
-#: ../src/roster_window.py:5374
+#: ../src/roster_window.py:5460
msgid "Publish Location"
msgstr "位置情報を公開"
-#: ../src/roster_window.py:5377
+#: ../src/roster_window.py:5463
msgid "Configure Services..."
msgstr "サービスの調整..."
# (Mako)ここでは「復元」の意味か
-#: ../src/roster_window.py:5525
+#: ../src/roster_window.py:5611
msgid "_Maximize All"
msgstr "ウィンドウをすべて復元 (_M)"
-#: ../src/roster_window.py:5535 ../src/roster_window.py:5708
+#: ../src/roster_window.py:5621 ../src/roster_window.py:5794
msgid "Send Group M_essage"
msgstr "メッセージの一斉送信 (_e)"
-#: ../src/roster_window.py:5543
+#: ../src/roster_window.py:5629
msgid "To all users"
msgstr "すべてのユーザーに"
-#: ../src/roster_window.py:5547
+#: ../src/roster_window.py:5633
msgid "To all online users"
msgstr "オンラインのすべてのユーザーに"
#. Manage Transport submenu
-#: ../src/roster_window.py:5728
+#: ../src/roster_window.py:5814
msgid "_Manage Contacts"
msgstr "相手先の管理 (_M)"
#. Edit Groups
-#: ../src/roster_window.py:5737
+#: ../src/roster_window.py:5823
msgid "Edit _Groups"
msgstr "グループの編集 (_G)"
#. Send single message
-#: ../src/roster_window.py:5792
+#: ../src/roster_window.py:5878
msgid "Send Single Message"
msgstr "単発メッセージの送信"
#. Execute Command
-#: ../src/roster_window.py:5839
+#: ../src/roster_window.py:5925
msgid "Execute Command..."
msgstr "コマンドを実行する..."
#. Manage Transport submenu
-#: ../src/roster_window.py:5849
+#: ../src/roster_window.py:5935
msgid "_Manage Transport"
msgstr "中継先の管理 (_M)"
#. Modify Transport
-#: ../src/roster_window.py:5858
+#: ../src/roster_window.py:5944
msgid "_Modify Transport"
msgstr "中継先の変更 (_M)"
#. Rename
-#: ../src/roster_window.py:5868
+#: ../src/roster_window.py:5954
msgid "_Rename"
msgstr "名前の変更(_R)"
# (Mako)ここでは「復元」の意味か
-#: ../src/roster_window.py:5928
+#: ../src/roster_window.py:6014
msgid "_Maximize"
msgstr "ウィンドウの復元 (_M)"
-#: ../src/roster_window.py:5937
+#: ../src/roster_window.py:6023
msgid "_Reconnect"
msgstr "再接続 (_R)"
-#: ../src/roster_window.py:5944
+#: ../src/roster_window.py:6030
msgid "_Disconnect"
msgstr "切断 (_D)"
#. History manager
-#: ../src/roster_window.py:6033
+#: ../src/roster_window.py:6119
msgid "History Manager"
msgstr "履歴マネージャ"
-#: ../src/roster_window.py:6044
+#: ../src/roster_window.py:6130
msgid "_Join New Group Chat"
msgstr "新しいグループチャットに参加 (_J)"
-#: ../src/roster_window.py:6263
+#: ../src/roster_window.py:6349
msgid "Change Status Message..."
msgstr "状況メッセージを変更する..."
@@ -10191,32 +10538,30 @@ msgstr "ファイルを受ける際のエラー"
msgid "No result"
msgstr "見つかりません"
-#: ../src/session.py:95
+#: ../src/session.py:97
msgid "Disk WriteError"
msgstr "ディスクの書き込みエラー"
-#: ../src/session.py:406 ../src/session.py:450
+#: ../src/session.py:411 ../src/session.py:470
msgid "Confirm these session options"
msgstr "セッションのオプションを確認する"
-#: ../src/session.py:407
+#: ../src/session.py:413
#, python-format
msgid ""
-"The remote client wants '\n"
-" 'to negotiate an session with these features:\n"
+"The remote client wants to negotiate a session with these features:\n"
"\n"
"%s\n"
"\n"
"Are these options acceptable?"
msgstr ""
-"遠くのクライアントが\n"
-"次の機能とともにセッションを確立しようとしています:\n"
+"遠くのクライアントが次の機能とともにセッションを確立しようとしています:\n"
"\n"
-"\t%s\n"
+"%s\n"
"\n"
-"\tこれらのオプションを受け付けますか ?"
+"これらのオプションを受け付けますか ?"
-#: ../src/session.py:451
+#: ../src/session.py:472
#, python-format
msgid ""
"The remote client selected these options:\n"
@@ -10231,6 +10576,10 @@ msgstr ""
"\n"
"セッションを続けますか ?"
+#: ../src/session.py:475
+msgid "Always accept for this contact"
+msgstr "この相手先を常に受け入れるかどうか"
+
#: ../src/statusicon.py:228
msgid "_Change Status Message..."
msgstr "状況メッセージを変更する (_C)..."
@@ -10243,134 +10592,134 @@ msgstr "名簿を閉じる (_R)"
msgid "Hide this menu"
msgstr "このメニューを表示しない"
-#: ../src/tooltips.py:392 ../src/tooltips.py:604
+#: ../src/tooltips.py:393 ../src/tooltips.py:605
msgid "Jabber ID: "
msgstr "Jabber ID: "
-#: ../src/tooltips.py:395 ../src/tooltips.py:608
+#: ../src/tooltips.py:396 ../src/tooltips.py:609
msgid "Resource: "
msgstr "リソース: "
-#: ../src/tooltips.py:401
+#: ../src/tooltips.py:402
#, python-format
msgid "%(owner_or_admin_or_member)s of this group chat"
msgstr "このグループチャットの %(owner_or_admin_or_member)s "
-#: ../src/tooltips.py:502
+#: ../src/tooltips.py:503
msgid " [blocked]"
msgstr "遮断しています]"
-#: ../src/tooltips.py:506
+#: ../src/tooltips.py:507
msgid " [minimized]"
msgstr "[最小化しています]"
-#: ../src/tooltips.py:521 ../src/tooltips.py:777
+#: ../src/tooltips.py:522 ../src/tooltips.py:778
msgid "Status: "
msgstr "在席状況: "
-#: ../src/tooltips.py:565
+#: ../src/tooltips.py:566
#, python-format
msgid "Last status: %s"
msgstr "最近の在席状況: %s"
-#: ../src/tooltips.py:567
+#: ../src/tooltips.py:568
#, python-format
msgid " since %s"
msgstr " %s から"
-#: ../src/tooltips.py:585
+#: ../src/tooltips.py:586
msgid "Connected"
msgstr "接続中"
-#: ../src/tooltips.py:587
+#: ../src/tooltips.py:588
msgid "Disconnected"
msgstr "切断中"
#. ('both' is the normal sub so we don't show it)
-#: ../src/tooltips.py:615
+#: ../src/tooltips.py:616
msgid "Subscription: "
msgstr "在席通知の承認: "
-#: ../src/tooltips.py:625
+#: ../src/tooltips.py:626
msgid "OpenPGP: "
msgstr "OpenPGP: "
-#: ../src/tooltips.py:646
+#: ../src/tooltips.py:647
#, python-format
msgid "Idle since %s"
msgstr " %s から操作のない状態"
-#: ../src/tooltips.py:647
+#: ../src/tooltips.py:648
#, python-format
msgid "Idle for %s"
msgstr "%s 間、操作のない状態"
-#: ../src/tooltips.py:698
+#: ../src/tooltips.py:699
#, python-format
msgid "Mood: %s"
msgstr "気分: %s"
-#: ../src/tooltips.py:702
+#: ../src/tooltips.py:703
#, python-format
msgid "Activity: %s"
msgstr "動向: %s"
-#: ../src/tooltips.py:706
+#: ../src/tooltips.py:707
#, python-format
msgid "Tune: %s"
msgstr "楽曲: %s"
-#: ../src/tooltips.py:710
+#: ../src/tooltips.py:711
#, python-format
msgid "Location: %s"
msgstr "位置: %s"
-#: ../src/tooltips.py:735
+#: ../src/tooltips.py:736
msgid "Download"
msgstr "ダウンロード"
-#: ../src/tooltips.py:741
+#: ../src/tooltips.py:742
msgid "Upload"
msgstr "アップロード"
-#: ../src/tooltips.py:748
+#: ../src/tooltips.py:749
msgid "Type: "
msgstr "種類: "
-#: ../src/tooltips.py:752
+#: ../src/tooltips.py:753
msgid "Transferred: "
msgstr "転送:"
-#: ../src/tooltips.py:755 ../src/tooltips.py:776
+#: ../src/tooltips.py:756 ../src/tooltips.py:777
msgid "Not started"
msgstr "開始していません"
-#: ../src/tooltips.py:759
+#: ../src/tooltips.py:760
msgid "Stopped"
msgstr "停止しています"
-#: ../src/tooltips.py:761 ../src/tooltips.py:764
+#: ../src/tooltips.py:762 ../src/tooltips.py:765
msgid "Completed"
msgstr "完了しました"
-#: ../src/tooltips.py:768
+#: ../src/tooltips.py:769
msgid "?transfer status:Paused"
msgstr "一時停止しました"
#. stalled is not paused. it is like 'frozen' it stopped alone
-#: ../src/tooltips.py:772
+#: ../src/tooltips.py:773
msgid "Stalled"
msgstr "滞っています"
-#: ../src/tooltips.py:774
+#: ../src/tooltips.py:775
msgid "Transferring"
msgstr "転送しています"
-#: ../src/tooltips.py:812
+#: ../src/tooltips.py:813
msgid "This service has not yet responded with detailed information"
msgstr "このサービスは、詳細情報の返答がありません"
-#: ../src/tooltips.py:815
+#: ../src/tooltips.py:816
msgid ""
"This service could not respond with detailed information.\n"
"It is most likely legacy or broken"
@@ -10378,6 +10727,10 @@ msgstr ""
"このサービスは詳細情報を返答することができません。\n"
"古いか、または壊れています"
+#: ../src/upower_listener.py:31
+msgid "Machine going to sleep"
+msgstr "コンピュータを終了しています"
+
#: ../src/vcard.py:285
msgid "?Client:Unknown"
msgstr "不明"
@@ -10442,3 +10795,6 @@ msgstr "保留中の在席通知の申し込みはありません。"
msgid " resource with priority "
msgstr " リソース。優先順位は "
+#~ msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+#~ msgstr ""
+#~ "pybonjour が必要です ( http://o2s.csail.mit.edu/o2s-wiki/pybonjour )。"
diff --git a/po/ru.po b/po/ru.po
index 2ba609f69..491cf048b 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ru\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-11 00:06+0400\n"
-"PO-Revision-Date: 2011-11-15 23:22+0300\n"
+"POT-Creation-Date: 2012-03-01 11:01+0400\n"
+"PO-Revision-Date: 2012-03-01 11:08+0300\n"
"Last-Translator: Fomin Denis <fominde@mail.ru>\n"
"Language-Team: Linux Support LLC\n"
"Language: ru\n"
@@ -126,25 +126,25 @@ msgstr "Управление..."
#: ../data/gui/account_creation_wizard_window.ui.h:17
#: ../data/gui/accounts_window.ui.h:41
#: ../data/gui/change_mood_dialog.ui.h:3
-#: ../src/config.py:1264
-#: ../src/config.py:1278
-#: ../src/config.py:1283
-#: ../src/config.py:1331
-#: ../src/config.py:1434
-#: ../src/config.py:1745
-#: ../src/config.py:1750
-#: ../src/config.py:2326
-#: ../src/config.py:2405
-#: ../src/config.py:2418
-#: ../src/config.py:3697
-#: ../src/config.py:3772
+#: ../src/config.py:1265
+#: ../src/config.py:1279
+#: ../src/config.py:1284
+#: ../src/config.py:1332
+#: ../src/config.py:1435
+#: ../src/config.py:1746
+#: ../src/config.py:1751
+#: ../src/config.py:2327
+#: ../src/config.py:2406
+#: ../src/config.py:2419
+#: ../src/config.py:3699
+#: ../src/config.py:3774
#: ../src/dialogs.py:311
#: ../src/dialogs.py:313
#: ../src/dialogs.py:519
#: ../src/dialogs.py:532
-#: ../src/roster_window.py:3096
-#: ../src/roster_window.py:3102
-#: ../src/roster_window.py:3107
+#: ../src/roster_window.py:3139
+#: ../src/roster_window.py:3145
+#: ../src/roster_window.py:3150
msgid "None"
msgstr "Нет"
@@ -238,8 +238,8 @@ msgstr "Учётные записи"
#. Change label for accept_button to action name instead of 'OK'.
#: ../data/gui/accounts_window.ui.h:8
-#: ../src/dialogs.py:3382
-#: ../src/dialogs.py:3428
+#: ../src/dialogs.py:3387
+#: ../src/dialogs.py:3433
msgid "Add"
msgstr "Добавить"
@@ -302,8 +302,8 @@ msgstr "Соединение"
#. Change label for accept_button to action name instead of 'OK'.
#: ../data/gui/accounts_window.ui.h:23
-#: ../src/dialogs.py:3386
-#: ../src/dialogs.py:3483
+#: ../src/dialogs.py:3391
+#: ../src/dialogs.py:3488
msgid "Delete"
msgstr "Удалить"
@@ -320,8 +320,8 @@ msgstr "Имя:"
#. No configured account
#: ../data/gui/accounts_window.ui.h:26
#: ../data/gui/roster_window.ui.h:5
-#: ../src/common/helpers.py:1159
-#: ../src/common/helpers.py:1171
+#: ../src/common/helpers.py:1168
+#: ../src/common/helpers.py:1180
#: ../src/notify.py:314
#: ../src/notify.py:337
#: ../src/notify.py:387
@@ -338,8 +338,9 @@ msgstr "Gajim"
#: ../src/common/contacts.py:132
#: ../src/dialogs.py:112
#: ../src/dialogs.py:124
-#: ../src/roster_window.py:3038
-#: ../src/roster_window.py:5656
+#: ../src/roster_window.py:3081
+#: ../src/roster_window.py:4148
+#: ../src/roster_window.py:5738
msgid "General"
msgstr "Общие"
@@ -377,7 +378,7 @@ msgstr "Информация о вас, сохраненная на сервер
#: ../data/gui/accounts_window.ui.h:37
#: ../data/gui/zeroconf_information_window.ui.h:4
-#: ../src/config.py:1868
+#: ../src/config.py:1869
#: ../src/dialogs.py:837
msgid "Jabber ID:"
msgstr "Jabber ID:"
@@ -392,8 +393,8 @@ msgid "Mer_ge accounts"
msgstr "_Объединить учетные записи"
#: ../data/gui/accounts_window.ui.h:40
-#: ../src/config.py:1841
-#: ../src/config.py:2419
+#: ../src/config.py:1842
+#: ../src/config.py:2420
msgid "No key selected"
msgstr "Не выбран ключ"
@@ -416,7 +417,7 @@ msgstr "Изменять приоритет автоматически в соо
#. Rename
#: ../data/gui/accounts_window.ui.h:46
-#: ../src/roster_window.py:5606
+#: ../src/roster_window.py:5688
msgid "Re_name"
msgstr "П_ереименовать"
@@ -445,8 +446,8 @@ msgid "Synchroni_ze account status with global status"
msgstr "Син_хронизировать статус учетной записи с глобальным статусом"
#: ../data/gui/accounts_window.ui.h:54
-#: ../data/gui/synchronise_select_account_dialog.ui.h:2
-msgid "Synchronise contacts"
+#, fuzzy
+msgid "Synchronize contacts"
msgstr "Объединить контакты"
#: ../data/gui/accounts_window.ui.h:55
@@ -514,7 +515,7 @@ msgid "Add New Contact"
msgstr "Добавить новый контакт"
#: ../data/gui/add_new_contact_window.ui.h:4
-#: ../src/common/helpers.py:1350
+#: ../src/common/helpers.py:1359
msgid "I would like to add you to my contact list."
msgstr "Вы не возражаете, если я добавлю Вас в контакт лист?"
@@ -571,7 +572,9 @@ msgstr "<b>Произошла ошибка:</b>"
msgid "<b>Choose command to execute:</b>"
msgstr "<b>Выберите команду:</b>"
+#. displaying the window
#: ../data/gui/adhoc_commands_window.ui.h:3
+#: ../src/adhoc_commands.py:102
msgid "Ad-hoc Commands - Gajim"
msgstr "Специальные команды — Gajim"
@@ -735,9 +738,9 @@ msgstr "Заблокированные контакты"
#: ../data/gui/blocked_contacts_window.ui.h:2
#: ../data/gui/contact_context_menu.ui.h:25
#: ../data/gui/gc_occupants_menu.ui.h:14
-#: ../src/roster_window.py:5625
-#: ../src/roster_window.py:5752
-#: ../src/roster_window.py:5885
+#: ../src/roster_window.py:5707
+#: ../src/roster_window.py:5834
+#: ../src/roster_window.py:5967
msgid "_Unblock"
msgstr "_Разблокировать"
@@ -906,10 +909,12 @@ msgid "Show the contact's profile (Ctrl+I)"
msgstr "Показать информацию о контакте (Ctrl+I)"
#: ../data/gui/chat_control.ui.h:20
+#: ../src/command_system/implementation/standard.py:214
msgid "Toggle audio session"
msgstr "Переключить аудио сеанс"
#: ../data/gui/chat_control.ui.h:21
+#: ../src/command_system/implementation/standard.py:224
msgid "Toggle video session"
msgstr "Переключить видео сеанс"
@@ -974,8 +979,8 @@ msgstr "Редактировать _группы"
#. Invite to Groupchat
#: ../data/gui/contact_context_menu.ui.h:6
#: ../data/gui/gc_occupants_menu.ui.h:1
-#: ../src/roster_window.py:5561
-#: ../src/roster_window.py:5720
+#: ../src/roster_window.py:5643
+#: ../src/roster_window.py:5802
msgid "In_vite to"
msgstr "_Пригласить в"
@@ -992,8 +997,8 @@ msgid "Remo_ve"
msgstr "_Удалить"
#: ../data/gui/contact_context_menu.ui.h:10
-#: ../src/roster_window.py:5571
-#: ../src/roster_window.py:5809
+#: ../src/roster_window.py:5653
+#: ../src/roster_window.py:5891
msgid "Send Cus_tom Status"
msgstr "Установи_ть статус"
@@ -1028,9 +1033,9 @@ msgstr "_Позволить ему или ей видеть мой статус"
#: ../data/gui/contact_context_menu.ui.h:19
#: ../data/gui/gc_occupants_menu.ui.h:8
-#: ../src/roster_window.py:5633
-#: ../src/roster_window.py:5758
-#: ../src/roster_window.py:5888
+#: ../src/roster_window.py:5715
+#: ../src/roster_window.py:5840
+#: ../src/roster_window.py:5970
msgid "_Block"
msgstr "_Блокировать"
@@ -1042,7 +1047,7 @@ msgstr "_Запретить ему или ей видеть мой статус"
#: ../data/gui/gc_control_popup_menu.ui.h:6
#: ../data/gui/gc_occupants_menu.ui.h:9
#: ../data/gui/roster_window.ui.h:23
-#: ../src/roster_window.py:5959
+#: ../src/roster_window.py:6041
msgid "_History"
msgstr "_История"
@@ -1148,7 +1153,7 @@ msgid "_Notify me when a file transfer is complete"
msgstr "_Уведомить меня, когда передача файлов закончится"
#: ../data/gui/filetransfers.ui.h:15
-#: ../src/chat_control.py:3228
+#: ../src/chat_control.py:3236
#: ../src/filetransfers_window.py:206
msgid "_Open Containing Folder"
msgstr "_Открыть папку с принятым файлом"
@@ -1384,7 +1389,7 @@ msgid "All Chat Histories"
msgstr "Вся история"
#: ../data/gui/history_window.ui.h:2
-#: ../src/history_window.py:323
+#: ../src/history_window.py:324
msgid "Conversation History"
msgstr "История"
@@ -1401,10 +1406,18 @@ msgid "Search:"
msgstr "Поиск:"
#: ../data/gui/history_window.ui.h:6
+msgid "_In date search"
+msgstr ""
+
+#: ../data/gui/history_window.ui.h:7
#: ../data/gui/zeroconf_information_window.ui.h:10
msgid "_Log conversation history"
msgstr "_Сохранять историю переписки"
+#: ../data/gui/history_window.ui.h:8
+msgid "searching only in the selected day "
+msgstr ""
+
#: ../data/gui/item_archiving_preferences_window.ui.h:1
msgid "approve"
msgstr ""
@@ -1475,7 +1488,7 @@ msgid "Bro_wse Rooms"
msgstr "Просмотр конферен_ций"
#: ../data/gui/join_groupchat_window.ui.h:3
-#: ../src/dialogs.py:2333
+#: ../src/dialogs.py:2337
msgid "Join Group Chat"
msgstr "Войти в комнату"
@@ -1500,7 +1513,7 @@ msgid "Room:"
msgstr "Комната:"
#: ../data/gui/join_groupchat_window.ui.h:9
-#: ../src/config.py:1858
+#: ../src/config.py:1859
msgid "Server:"
msgstr "Сервер:"
@@ -1849,8 +1862,8 @@ msgid "Detached roster with single chat"
msgstr "Окно контактов и окно с беседами"
#: ../data/gui/preferences_window.ui.h:46
-#: ../src/config.py:170
-#: ../src/config.py:682
+#: ../src/config.py:171
+#: ../src/config.py:683
msgid "Disabled"
msgstr "Отключены"
@@ -2075,7 +2088,7 @@ msgid "Sort contacts by status"
msgstr "Сортировать контакты по статусу"
#: ../data/gui/preferences_window.ui.h:103
-#: ../src/config.py:400
+#: ../src/config.py:401
msgid "Status"
msgstr "Статус"
@@ -2284,7 +2297,7 @@ msgid "Order:"
msgstr "Номер:"
#: ../data/gui/privacy_list_window.ui.h:12
-#: ../src/dialogs.py:3977
+#: ../src/dialogs.py:3982
msgid "Privacy List"
msgstr "Список доступа"
@@ -2483,7 +2496,7 @@ msgstr "<b>Что вы хотите сделать?</b>"
#: ../data/gui/remove_account_window.ui.h:2
msgid "Remove account _only from Gajim"
-msgstr "Удалит учетную запись _только из Gajim"
+msgstr "Удалить учетную запись _только из Gajim"
#: ../data/gui/remove_account_window.ui.h:3
msgid "Remove account from Gajim and from _server"
@@ -2492,9 +2505,9 @@ msgstr "Удалить учетную запись из Gajim и с _серве
#. Remove group
#. Remove
#: ../data/gui/remove_account_window.ui.h:4
-#: ../src/roster_window.py:5643
-#: ../src/roster_window.py:5768
-#: ../src/roster_window.py:5898
+#: ../src/roster_window.py:5725
+#: ../src/roster_window.py:5850
+#: ../src/roster_window.py:5980
msgid "_Remove"
msgstr "_Удалить"
@@ -2548,8 +2561,8 @@ msgid "Show Only _Active Contacts"
msgstr "Показать _только активных"
#: ../data/gui/roster_window.ui.h:12
-msgid "Show T_rans_ports"
-msgstr "Показать Т_ранс_порты"
+msgid "Show T_ransports"
+msgstr "Показать Т_ранспорты"
#: ../data/gui/roster_window.ui.h:13
msgid "Show _Offline Contacts"
@@ -2605,7 +2618,7 @@ msgstr "Добавить _контакт"
#. Information
#: ../data/gui/search_window.ui.h:4
-#: ../src/roster_window.py:5910
+#: ../src/roster_window.py:5992
msgid "_Information"
msgstr "_Информация о контакте"
@@ -2682,6 +2695,10 @@ msgstr "_Отклонить"
msgid "Select the account with which you want to synchronise"
msgstr "Выберите учетную запись для объединения"
+#: ../data/gui/synchronise_select_account_dialog.ui.h:2
+msgid "Synchronise contacts"
+msgstr "Объединить контакты"
+
#: ../data/gui/synchronise_select_contacts_dialog.ui.h:1
msgid "Select the contacts you want to synchronise"
msgstr "Расширенные статусы"
@@ -2877,6 +2894,11 @@ msgstr "Сервис отправил недопустимые данные"
msgid "Service changed the session identifier."
msgstr "Сервис изменил идентификатор сеанса."
+#: ../src/adhoc_commands.py:418
+#, fuzzy, python-format
+msgid "%s - Ad-hoc Commands - Gajim"
+msgstr "Специальные команды — Gajim"
+
#. when stanza doesn't have error description
#: ../src/adhoc_commands.py:513
msgid "Service returned an error."
@@ -3095,33 +3117,34 @@ msgstr "Отправить файл?"
msgid "If you send a file to %s, he/she will know your real Jabber ID."
msgstr "Если вы пошлете файл %s, он/она узнает ваш настоящий Jabber ID."
-#: ../src/chat_control.py:1639
-#: ../src/chat_control.py:2165
+#: ../src/chat_control.py:1638
+#: ../src/chat_control.py:2172
msgid "GPG encryption enabled"
msgstr "GPG шифрование включено"
-#: ../src/chat_control.py:1660
-#: ../src/chat_control.py:1663
+#: ../src/chat_control.py:1659
+#: ../src/chat_control.py:1662
msgid "Requires python-farsight."
msgstr "Требует python-farsight."
#. Add to roster
-#: ../src/chat_control.py:1703
+#: ../src/chat_control.py:1702
#: ../src/common/contacts.py:149
#: ../src/common/contacts.py:270
-#: ../src/common/helpers.py:61
-#: ../src/common/helpers.py:255
+#: ../src/common/helpers.py:67
+#: ../src/common/helpers.py:261
#: ../src/dialogs.py:1099
-#: ../src/dialogs.py:2227
-#: ../src/dialogs.py:2256
-#: ../src/gui_interface.py:467
+#: ../src/dialogs.py:2231
+#: ../src/dialogs.py:2260
+#: ../src/gui_interface.py:472
#: ../src/gui_menu_builder.py:254
-#: ../src/gui_menu_builder.py:404
-#: ../src/roster_window.py:1644
-#: ../src/roster_window.py:1646
-#: ../src/roster_window.py:1979
-#: ../src/roster_window.py:3511
-#: ../src/roster_window.py:3538
+#: ../src/gui_menu_builder.py:405
+#: ../src/roster_window.py:767
+#: ../src/roster_window.py:1687
+#: ../src/roster_window.py:1689
+#: ../src/roster_window.py:2022
+#: ../src/roster_window.py:3557
+#: ../src/roster_window.py:3584
msgid "Not in Roster"
msgstr "Не в ростере"
@@ -3133,70 +3156,70 @@ msgstr "Этот контакт не поддерживает передачу
msgid "You need to know the real JID of the contact to send him or her a file."
msgstr "Необходимо знать настоящий JID контакта для того, чтобы отправить ему или ей файл."
-#: ../src/chat_control.py:1844
+#: ../src/chat_control.py:1851
#, python-format
msgid "%(type)s state : %(state)s, reason: %(reason)s"
msgstr "%(type)s состояние : %(state)s, причина: %(reason)s"
-#: ../src/chat_control.py:2035
+#: ../src/chat_control.py:2042
#, python-format
msgid "%(nickname)s from group chat %(room_name)s"
msgstr "%(nickname)s из комнаты %(room_name)s"
#. No key assigned nor a key is used by remote contact
-#: ../src/chat_control.py:2145
-#: ../src/dialogs.py:5038
+#: ../src/chat_control.py:2152
+#: ../src/dialogs.py:5043
msgid "No GPG key assigned"
msgstr "Ключ GPG не присвоен"
-#: ../src/chat_control.py:2146
+#: ../src/chat_control.py:2153
msgid "No GPG key is assigned to this contact. So you cannot encrypt messages with GPG."
msgstr "Этому контакту не присвоен ключ GPG, поэтому вы не можете зашифровать сообщения с помощью GPG."
-#: ../src/chat_control.py:2155
+#: ../src/chat_control.py:2162
msgid "GPG encryption disabled"
msgstr "GPG шифрование выключено"
-#: ../src/chat_control.py:2181
+#: ../src/chat_control.py:2188
msgid "Session WILL be logged"
msgstr "Для сеанса БУДЕТ сохранена история сообщений"
-#: ../src/chat_control.py:2183
+#: ../src/chat_control.py:2190
msgid "Session WILL NOT be logged"
msgstr "Для сеанса НЕ БУДЕТ сохранена история сообщений"
#. encryption %s active
-#: ../src/chat_control.py:2200
+#: ../src/chat_control.py:2207
msgid "is"
msgstr "было"
-#: ../src/chat_control.py:2200
+#: ../src/chat_control.py:2207
msgid "is NOT"
msgstr "НЕ"
#. chat session %s be logged
-#: ../src/chat_control.py:2202
+#: ../src/chat_control.py:2209
msgid "will"
msgstr "будет"
-#: ../src/chat_control.py:2202
+#: ../src/chat_control.py:2209
msgid "will NOT"
msgstr "НЕ будет"
#. About encrypted chat session
-#: ../src/chat_control.py:2206
+#: ../src/chat_control.py:2213
msgid "and authenticated"
msgstr "и заверено"
#. About encrypted chat session
-#: ../src/chat_control.py:2210
+#: ../src/chat_control.py:2217
msgid "and NOT authenticated"
msgstr "и НЕ заверено"
#. status will become 'is' or 'is not', authentificaed will become
#. 'and authentificated' or 'and not authentificated', logged will become
#. 'will' or 'will not'
-#: ../src/chat_control.py:2217
+#: ../src/chat_control.py:2224
#, python-format
msgid ""
"%(type)s encryption %(status)s active %(authenticated)s.\n"
@@ -3205,75 +3228,75 @@ msgstr ""
"%(type)s шифрование %(status)s включено %(authenticated)s.\n"
"Для сеанса %(logged)s сохранена история сообщений."
-#: ../src/chat_control.py:2344
+#: ../src/chat_control.py:2351
msgid "Session negotiation cancelled"
msgstr "Установление сеанса отменено"
-#: ../src/chat_control.py:2354
+#: ../src/chat_control.py:2361
msgid "This session WILL be archived on server"
msgstr "История сеанса БУДЕТ сохранена на сервере"
-#: ../src/chat_control.py:2356
+#: ../src/chat_control.py:2363
msgid "This session WILL NOT be archived on server"
msgstr "История сеанса НЕ БУДЕТ сохранена на сервере"
-#: ../src/chat_control.py:2365
+#: ../src/chat_control.py:2372
msgid "This session is encrypted"
msgstr "Сеанс зашифрован"
-#: ../src/chat_control.py:2368
+#: ../src/chat_control.py:2375
msgid " and WILL be logged"
msgstr " и БУДЕТ сохранена история сообщений"
-#: ../src/chat_control.py:2370
+#: ../src/chat_control.py:2377
msgid " and WILL NOT be logged"
msgstr " и НЕ БУДЕТ сохранена история сообщений"
-#: ../src/chat_control.py:2375
+#: ../src/chat_control.py:2382
msgid "Remote contact's identity not verified. Click the shield button for more details."
msgstr "Личность удаленного контакта не подтверждена. Нажмите на кнопке со щитом для подробностей."
-#: ../src/chat_control.py:2377
+#: ../src/chat_control.py:2384
msgid "E2E encryption disabled"
msgstr "E2E шифрование выключено"
-#: ../src/chat_control.py:2424
-#: ../src/chat_control.py:2437
+#: ../src/chat_control.py:2432
+#: ../src/chat_control.py:2445
msgid "The following message was NOT encrypted"
msgstr "Последнее сообщение НЕ БЫЛО зашифровано"
-#: ../src/chat_control.py:2430
+#: ../src/chat_control.py:2438
msgid "The following message was encrypted"
msgstr "Последнее сообщение зашифровано"
#. %s is being replaced in the code with JID
-#: ../src/chat_control.py:2699
+#: ../src/chat_control.py:2707
#, python-format
msgid "You just received a new message from \"%s\""
msgstr "Получено новое сообщение от «%s»"
-#: ../src/chat_control.py:2700
+#: ../src/chat_control.py:2708
msgid "If you close this tab and you have history disabled, this message will be lost."
msgstr "Если вы закроете эту вкладку и у вас отключена функция ведения истории сообщений, то это сообщение будет утеряно."
-#: ../src/chat_control.py:2867
+#: ../src/chat_control.py:2875
#: ../src/common/connection_handlers_events.py:887
-#: ../src/common/connection_handlers.py:938
-#: ../src/common/connection_handlers.py:1050
-#: ../src/common/connection.py:451
-#: ../src/common/logger.py:1131
-#: ../src/gajim.py:209
-#: ../src/session.py:101
+#: ../src/common/connection_handlers.py:948
+#: ../src/common/connection_handlers.py:1060
+#: ../src/common/connection.py:456
+#: ../src/common/logger.py:1144
+#: ../src/gajim.py:210
+#: ../src/session.py:100
msgid "Database Error"
msgstr "Ошибка базы данных"
-#: ../src/chat_control.py:2868
+#: ../src/chat_control.py:2876
#, python-format
msgid "The database file (%s) cannot be read. Try to repair it or remove it (all history will be lost)."
msgstr "Файл базы данных (%s) не может быть прочитан. Попробуйте восстановить его или удалить (вся история будет утеряна)."
-#: ../src/chat_control.py:3104
-#: ../src/gui_interface.py:1032
+#: ../src/chat_control.py:3112
+#: ../src/gui_interface.py:1061
#, python-format
msgid ""
"Unable to decrypt message from %s\n"
@@ -3282,57 +3305,251 @@ msgstr ""
"Не удалось расшифровать сообщение от %s\n"
"Возможно, оно было испорчено."
-#: ../src/chat_control.py:3137
+#: ../src/chat_control.py:3145
#, python-format
msgid "%(name)s is now %(status)s"
msgstr "%(name)s теперь %(status)s"
-#: ../src/chat_control.py:3196
+#: ../src/chat_control.py:3204
msgid "File transfer"
msgstr "Передача файлов"
-#: ../src/chat_control.py:3199
+#: ../src/chat_control.py:3207
msgid "Size"
msgstr "Размер"
-#: ../src/chat_control.py:3201
+#: ../src/chat_control.py:3209
msgid "_Accept"
msgstr "_Принять"
-#: ../src/chat_control.py:3224
+#: ../src/chat_control.py:3232
#: ../src/filetransfers_window.py:204
msgid "File transfer completed"
msgstr "Передача завершена"
-#: ../src/chat_control.py:3252
-#: ../src/gui_interface.py:903
-#: ../src/roster_window.py:1891
+#: ../src/chat_control.py:3260
+#: ../src/gui_interface.py:932
+#: ../src/roster_window.py:1934
msgid "Remote contact stopped transfer"
msgstr "Удаленный контакт остановил передачу"
-#: ../src/chat_control.py:3254
-#: ../src/gui_interface.py:906
-#: ../src/roster_window.py:1893
+#: ../src/chat_control.py:3262
+#: ../src/gui_interface.py:935
+#: ../src/roster_window.py:1936
msgid "Error opening file"
msgstr "Ошибка открытия файла"
-#: ../src/chat_control.py:3256
+#: ../src/chat_control.py:3264
#: ../src/filetransfers_window.py:240
msgid "File transfer stopped"
msgstr "Передача файла остановлена"
-#: ../src/chat_control.py:3259
+#: ../src/chat_control.py:3267
#: ../src/filetransfers_window.py:219
#: ../src/filetransfers_window.py:226
msgid "File transfer cancelled"
msgstr "Передача отменена"
-#: ../src/chat_control.py:3260
+#: ../src/chat_control.py:3268
#: ../src/filetransfers_window.py:219
#: ../src/filetransfers_window.py:227
msgid "Connection with peer cannot be established."
msgstr "Соединение не может быть установлено."
+#: ../src/command_system/implementation/custom.py:105
+msgid "The same as using a doc-string, except it supports translation"
+msgstr ""
+
+#: ../src/command_system/implementation/execute.py:53
+msgid "Execute expression inside a shell, show output"
+msgstr ""
+
+#: ../src/command_system/implementation/execute.py:109
+msgid "Execute expression inside a shell, send output"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:50
+#, fuzzy
+msgid "Hide the chat buttons"
+msgstr "Использование: /%s, скрывает кнопки беседы."
+
+#: ../src/command_system/implementation/standard.py:56
+msgid "Show help on a given command or a list of available commands if -a is given"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:83
+#, fuzzy
+msgid "Send a message to the contact"
+msgstr "Использование: /%s, посылает сообщение контакту"
+
+#: ../src/command_system/implementation/standard.py:88
+msgid "Send action (in the third person) to the current chat"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:93
+msgid "Show logged messages which mention given text"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:99
+#, fuzzy, python-format
+msgid "%s: Nothing found"
+msgstr "%s не найден"
+
+#: ../src/command_system/implementation/standard.py:105
+msgid "Limit must be an integer"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:129
+msgid ""
+"\n"
+" Set current the status\n"
+"\n"
+" Status can be given as one of the following values: online, away,\n"
+" chat, xa, dnd.\n"
+" "
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:147
+msgid "Set the current status to away"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:150
+#: ../src/common/commands.py:109
+#: ../src/common/helpers.py:249
+#: ../src/tooltips.py:194
+msgid "Away"
+msgstr "Ушел"
+
+#: ../src/command_system/implementation/standard.py:161
+msgid "Set the current status to online"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:164
+msgid "Available"
+msgstr "Доступен"
+
+#: ../src/command_system/implementation/standard.py:184
+#: ../src/command_system/implementation/standard.py:261
+#, fuzzy
+msgid "Clear the text window"
+msgstr "Использование: /%s, очищает текстовое окно."
+
+#: ../src/command_system/implementation/standard.py:189
+#, fuzzy
+msgid "Toggle the GPG encryption"
+msgstr "Включить Open_PGP шифрование"
+
+#: ../src/command_system/implementation/standard.py:194
+#, fuzzy
+msgid "Send a ping to the contact"
+msgstr "Использование: /%s, посылает пинг контакту"
+
+#: ../src/command_system/implementation/standard.py:197
+#, fuzzy
+msgid "Command is not supported for zeroconf accounts"
+msgstr "Команда не поддерживается учетной записью zeroconf."
+
+#: ../src/command_system/implementation/standard.py:201
+msgid "Send DTMF sequence through an open audio session"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:204
+#, fuzzy
+msgid "No open audio sessions with the contact"
+msgstr "Щелкните для просмотра последних бесед с этим человеком"
+
+#: ../src/command_system/implementation/standard.py:207
+#, fuzzy, python-format
+msgid "%s is not a valid tone"
+msgstr "%s не является допустимым loglevel"
+
+#: ../src/command_system/implementation/standard.py:217
+#, fuzzy
+msgid "Audio sessions are not available"
+msgstr "Подключение недоступно"
+
+#: ../src/command_system/implementation/standard.py:227
+#, fuzzy
+msgid "Video sessions are not available"
+msgstr "Соединение недоступно"
+
+#: ../src/command_system/implementation/standard.py:268
+#, fuzzy
+msgid "Change your nickname in a group chat"
+msgstr "Изменить ник (Ctrl+N)"
+
+#. invalid char
+#: ../src/command_system/implementation/standard.py:273
+#: ../src/config.py:3392
+#: ../src/dialogs.py:2078
+msgid "Invalid nickname"
+msgstr "Неверное имя пользователя"
+
+#: ../src/command_system/implementation/standard.py:278
+#, fuzzy
+msgid "Open a private chat window with a specified occupant"
+msgstr "Использование: /%s <ник>, открывает окно привата с указанным посетителем."
+
+#: ../src/command_system/implementation/standard.py:284
+#: ../src/command_system/implementation/standard.py:293
+#: ../src/command_system/implementation/standard.py:347
+msgid "Nickname not found"
+msgstr "Ник не обнаружен"
+
+#: ../src/command_system/implementation/standard.py:287
+#, fuzzy
+msgid "Open a private chat window with a specified occupant and send him a message"
+msgstr "Использование: /%s <ник>, открывает окно привата с указанным посетителем."
+
+#: ../src/command_system/implementation/standard.py:296
+#, fuzzy
+msgid "Display or change a group chat topic"
+msgstr "Спрашивать перед закрытием окна/вкладки комнаты."
+
+#: ../src/command_system/implementation/standard.py:304
+msgid "Invite a user to a room for a reason"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:307
+#, fuzzy, python-format
+msgid "Invited %s to %s"
+msgstr "Отправить %s контакту %s"
+
+#: ../src/command_system/implementation/standard.py:310
+msgid "Join a group chat given by a jid, optionally using given nickname"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:327
+msgid "Leave the groupchat, optionally giving a reason, and close tab or window"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:332
+msgid ""
+"\n"
+" Ban user by a nick or a jid from a groupchat\n"
+"\n"
+" If given nickname is not found it will be treated as a jid.\n"
+" "
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:344
+#, fuzzy
+msgid "Kick user by a nick from a groupchat"
+msgstr "Вы приглашены в конференцию"
+
+#: ../src/command_system/implementation/standard.py:351
+#, fuzzy
+msgid "Display names of all group chat occupants"
+msgstr "Использование: /%s, показывает список присутствующих в комнате."
+
+#: ../src/command_system/implementation/standard.py:373
+msgid "Forbid an occupant to send you public or private messages"
+msgstr ""
+
+#: ../src/command_system/implementation/standard.py:378
+msgid "Allow an occupant to send you public or private messages"
+msgstr ""
+
#: ../src/common/check_paths.py:38
msgid "creating logs database"
msgstr "создается БД истории"
@@ -3397,12 +3614,6 @@ msgstr "Готов поболтать"
msgid "Online"
msgstr "В сети"
-#: ../src/common/commands.py:109
-#: ../src/common/helpers.py:243
-#: ../src/tooltips.py:193
-msgid "Away"
-msgstr "Ушел"
-
#: ../src/common/commands.py:110
msgid "Extended away"
msgstr "Недоступен (расширенный)"
@@ -3445,12 +3656,12 @@ msgstr "Выберите конференции, которые вы хотит
#. Make special context menu if group is Groupchats
#: ../src/common/commands.py:215
#: ../src/common/contacts.py:128
-#: ../src/common/helpers.py:61
-#: ../src/roster_window.py:817
-#: ../src/roster_window.py:1648
-#: ../src/roster_window.py:1650
-#: ../src/roster_window.py:2514
-#: ../src/roster_window.py:5528
+#: ../src/common/helpers.py:67
+#: ../src/roster_window.py:820
+#: ../src/roster_window.py:1691
+#: ../src/roster_window.py:1693
+#: ../src/roster_window.py:2557
+#: ../src/roster_window.py:5610
msgid "Groupchats"
msgstr "Комнаты"
@@ -3560,11 +3771,11 @@ msgstr "Список (через пробел) строк (учётных зап
#. sorted alphanum
#: ../src/common/config.py:108
-#: ../src/common/config.py:501
+#: ../src/common/config.py:504
#: ../src/common/optparser.py:296
#: ../src/common/optparser.py:492
#: ../src/common/optparser.py:526
-#: ../src/gui_interface.py:2639
+#: ../src/gui_interface.py:2668
msgid "default"
msgstr "По_умолчанию"
@@ -4098,130 +4309,149 @@ msgstr ""
msgid "If enabled, Gajim will send your local IPs so your contact can connect to your machine to transfer files."
msgstr ""
-#: ../src/common/config.py:448
+#: ../src/common/config.py:387
+#, fuzzy
+msgid "Latest token for Oauth2 authentication."
+msgstr "Анонимная аутентификация"
+
+#: ../src/common/config.py:388
+#, fuzzy
+msgid "client_id for Oauth2 authentication."
+msgstr "Анонимная аут_ентификация"
+
+#: ../src/common/config.py:389
+msgid "redirect_url for Oauth2 authentication."
+msgstr ""
+
+#: ../src/common/config.py:451
msgid "Is OpenPGP enabled for this contact?"
msgstr "Используется ли для этого контакта OpenPGP?"
-#: ../src/common/config.py:449
+#: ../src/common/config.py:452
msgid "Should Gajim automatically start an encrypted session with this contact when possible?"
msgstr "Должен ли Gajim по возможности автоматически начинать для данного контакта зашифрованный сеанс?"
-#: ../src/common/config.py:450
#: ../src/common/config.py:453
+#: ../src/common/config.py:456
msgid "Language for which we want to check misspelled words"
msgstr "Язык, который используется при проверке правописания"
-#: ../src/common/config.py:456
+#: ../src/common/config.py:459
msgid "State whether plugins should be activated on exit (this is saved on Gajim exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI instead."
msgstr "Состояние модулей при выходе(это сохраняется при выключении Gajim). Эта опция НЕ ДОЛЖНА использоваться для включения или выключения модулей. Используйте графический интерфейс для этого."
-#: ../src/common/config.py:461
+#: ../src/common/config.py:464
#: ../src/common/pep.py:157
msgid "Sleeping"
msgstr "Сплю"
-#: ../src/common/config.py:462
+#: ../src/common/config.py:465
msgid "Back soon"
msgstr "Скоро буду"
-#: ../src/common/config.py:462
+#: ../src/common/config.py:465
msgid "Back in some minutes."
msgstr "Вернусь через несколько минут"
-#: ../src/common/config.py:463
+#: ../src/common/config.py:466
#: ../src/common/pep.py:127
msgid "Eating"
msgstr "Ем"
-#: ../src/common/config.py:463
+#: ../src/common/config.py:466
msgid "I'm eating, so leave me a message."
msgstr "Кушаю, так что оставьте сообщение секретарю."
-#: ../src/common/config.py:464
+#: ../src/common/config.py:467
msgid "Movie"
msgstr "В кино"
-#: ../src/common/config.py:464
+#: ../src/common/config.py:467
msgid "I'm watching a movie."
msgstr "Смотрю кино"
-#: ../src/common/config.py:465
+#: ../src/common/config.py:468
#: ../src/common/pep.py:186
msgid "Working"
msgstr "Работаю"
-#: ../src/common/config.py:465
+#: ../src/common/config.py:468
msgid "I'm working."
msgstr "Работаю"
-#: ../src/common/config.py:466
+#: ../src/common/config.py:469
msgid "Phone"
msgstr "Телефон"
-#: ../src/common/config.py:466
+#: ../src/common/config.py:469
msgid "I'm on the phone."
msgstr "Говорю по телефону"
-#: ../src/common/config.py:467
+#: ../src/common/config.py:470
msgid "Out"
msgstr "Вышел"
-#: ../src/common/config.py:467
+#: ../src/common/config.py:470
msgid "I'm out enjoying life."
msgstr "Наслаждаюсь жизнью, чего и вам желаю."
-#: ../src/common/config.py:478
+#: ../src/common/config.py:481
msgid "I'm available."
msgstr "Я здесь."
-#: ../src/common/config.py:479
+#: ../src/common/config.py:482
msgid "I'm free for chat."
msgstr "Я готов поболтать."
-#: ../src/common/config.py:480
-#: ../src/config.py:1651
+#: ../src/common/config.py:483
+#: ../src/config.py:1652
msgid "Be right back."
msgstr "Скоро буду."
-#: ../src/common/config.py:481
+#: ../src/common/config.py:484
msgid "I'm not available."
msgstr "Меня нет."
-#: ../src/common/config.py:482
+#: ../src/common/config.py:485
msgid "Do not disturb."
msgstr "Не беспокоить."
-#: ../src/common/config.py:483
-#: ../src/common/config.py:484
+#: ../src/common/config.py:486
+#: ../src/common/config.py:487
msgid "Bye!"
msgstr "Пока!"
-#: ../src/common/config.py:494
+#: ../src/common/config.py:497
msgid "Sound to play when a group chat message contains one of the words in muc_highlight_words, or when a group chat message contains your nickname."
msgstr "Звук, который нужно воспроизвести, когда в MUC появляется сообщение, которое содержит слово из списка muc_highlight_words, или когда сообщение содержит ваш ник."
-#: ../src/common/config.py:495
+#: ../src/common/config.py:498
msgid "Sound to play when any MUC message arrives."
msgstr "Звук, который нужно проигрывать, когда приходит любое сообщение MUC."
-#: ../src/common/config.py:504
+#: ../src/common/config.py:507
#: ../src/common/optparser.py:310
msgid "green"
msgstr "зеленый"
-#: ../src/common/config.py:508
+#: ../src/common/config.py:511
#: ../src/common/optparser.py:296
msgid "grocery"
msgstr "овощной"
-#: ../src/common/config.py:512
+#: ../src/common/config.py:515
msgid "human"
msgstr "телесный"
-#: ../src/common/config.py:516
+#: ../src/common/config.py:519
msgid "marine"
msgstr "морской"
+#: ../src/common/config.py:526
+#, fuzzy
+msgid "Tor"
+msgstr "К"
+
#: ../src/common/connection_handlers_events.py:367
#, python-format
msgid "JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it"
@@ -4233,22 +4463,23 @@ msgid "unsubscribe request from %s"
msgstr "%s хочет отменить подписку"
#: ../src/common/connection_handlers_events.py:884
-#: ../src/common/connection_handlers.py:331
-#: ../src/common/connection_handlers.py:936
-#: ../src/common/connection_handlers.py:1048
-#: ../src/common/connection.py:448
-#: ../src/common/logger.py:1129
-#: ../src/gajim.py:391
+#: ../src/common/connection_handlers.py:334
+#: ../src/common/connection_handlers.py:946
+#: ../src/common/connection_handlers.py:1058
+#: ../src/common/connection.py:453
+#: ../src/common/logger.py:1142
+#: ../src/gajim.py:392
+#: ../src/session.py:97
msgid "Disk Write Error"
msgstr "Ошибка записи на диск"
#: ../src/common/connection_handlers_events.py:888
-#: ../src/common/connection_handlers.py:939
-#: ../src/common/connection_handlers.py:1051
-#: ../src/common/connection.py:452
-#: ../src/common/logger.py:1132
-#: ../src/gajim.py:210
-#: ../src/session.py:102
+#: ../src/common/connection_handlers.py:949
+#: ../src/common/connection_handlers.py:1061
+#: ../src/common/connection.py:457
+#: ../src/common/logger.py:1145
+#: ../src/gajim.py:211
+#: ../src/session.py:101
#, python-format
msgid "The database file (%s) cannot be read. Try to repair it (see http://trac.gajim.org/wiki/DatabaseBackup) or remove it (all history will be lost)."
msgstr "Файл базы данных (%s) не может быть прочитан. Попробуйте восстановить его(см. http://trac.gajim.org/wiki/DatabaseBackup) или удалить (вся история будет утеряна)."
@@ -4264,119 +4495,117 @@ msgstr "Комната была удалена"
msgid "You can join this room instead: %s"
msgstr "Взамен, вы можете присоединиться к комнате: %s"
-#: ../src/common/connection_handlers_events.py:1000
-#: ../src/common/connection_handlers_events.py:1030
-#: ../src/common/connection_handlers_events.py:1044
-#: ../src/common/connection.py:259
-#: ../src/config.py:2148
-#: ../src/config.py:2157
-#: ../src/config.py:2225
-#: ../src/config.py:3661
+#: ../src/common/connection_handlers_events.py:1001
+#: ../src/common/connection_handlers_events.py:1038
+#: ../src/common/connection.py:263
+#: ../src/config.py:2149
+#: ../src/config.py:2158
+#: ../src/config.py:2226
+#: ../src/config.py:3663
#: ../src/dataforms_widget.py:623
-#: ../src/dialogs.py:3090
+#: ../src/dialogs.py:3095
msgid "Invalid Jabber ID"
msgstr "Неверный Jabber ID"
-#: ../src/common/connection_handlers_events.py:1001
-#: ../src/common/connection_handlers_events.py:1031
-#: ../src/common/connection_handlers_events.py:1045
+#: ../src/common/connection_handlers_events.py:1002
+#: ../src/common/connection_handlers_events.py:1039
msgid "A message from a non-valid JID arrived, it has been ignored."
msgstr "Было получено сообщение от неверного JID, оно было проигнорировано."
#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
-#: ../src/common/connection_handlers_events.py:1071
-#: ../src/gui_interface.py:415
-#: ../src/gui_interface.py:429
+#: ../src/common/connection_handlers_events.py:1064
+#: ../src/gui_interface.py:420
+#: ../src/gui_interface.py:434
#, python-format
msgid "error while sending %(message)s ( %(error)s )"
msgstr "ошибка при отправке %(message)s ( %(error)s )"
-#: ../src/common/connection_handlers_events.py:1502
+#: ../src/common/connection_handlers_events.py:1496
#, python-format
msgid "Unknown SSL error: %d"
msgstr "Неизвестная ошибка SSL: %d"
-#: ../src/common/connection_handlers_events.py:2030
-#: ../src/dialogs.py:2777
+#: ../src/common/connection_handlers_events.py:2028
+#: ../src/dialogs.py:2782
#: ../src/notify.py:263
msgid "New Single Message"
msgstr "Новое одиночное сообщение"
-#: ../src/common/connection_handlers_events.py:2032
+#: ../src/common/connection_handlers_events.py:2030
#, python-format
msgid "New Single Message from %(nickname)s"
msgstr "Новое сообщение от %(nickname)s"
-#: ../src/common/connection_handlers_events.py:2036
-#: ../src/dialogs.py:2778
+#: ../src/common/connection_handlers_events.py:2034
+#: ../src/dialogs.py:2783
#: ../src/notify.py:264
msgid "New Private Message"
msgstr "Новое личное сообщение"
-#: ../src/common/connection_handlers_events.py:2038
+#: ../src/common/connection_handlers_events.py:2036
#, python-format
msgid "New Private Message from group chat %s"
msgstr "Новое личное сообщение из комнаты %s"
-#: ../src/common/connection_handlers_events.py:2041
+#: ../src/common/connection_handlers_events.py:2039
#, python-format
msgid "%(nickname)s: %(message)s"
msgstr "%(nickname)s: %(message)s"
-#: ../src/common/connection_handlers_events.py:2044
+#: ../src/common/connection_handlers_events.py:2042
#, python-format
msgid "Messaged by %(nickname)s"
msgstr "Новое сообщение от %(nickname)s"
-#: ../src/common/connection_handlers_events.py:2048
-#: ../src/dialogs.py:2777
+#: ../src/common/connection_handlers_events.py:2046
+#: ../src/dialogs.py:2782
#: ../src/notify.py:263
msgid "New Message"
msgstr "Новое сообщение"
-#: ../src/common/connection_handlers_events.py:2050
+#: ../src/common/connection_handlers_events.py:2048
#, python-format
msgid "New Message from %(nickname)s"
msgstr "Новое сообщение от %(nickname)s"
-#: ../src/common/connection_handlers_events.py:2179
+#: ../src/common/connection_handlers_events.py:2177
#, python-format
msgid "%(nick)s Changed Status"
msgstr "%(nick)s меняет статус"
-#: ../src/common/connection_handlers_events.py:2181
+#: ../src/common/connection_handlers_events.py:2179
#: ../src/groupchat_control.py:205
#: ../src/groupchat_control.py:1766
-#: ../src/history_window.py:447
+#: ../src/history_window.py:448
#, python-format
msgid "%(nick)s is now %(status)s"
msgstr "%(nick)s теперь %(status)s"
-#: ../src/common/connection_handlers_events.py:2186
-#: ../src/dialogs.py:2789
+#: ../src/common/connection_handlers_events.py:2184
+#: ../src/dialogs.py:2794
#: ../src/notify.py:277
msgid "Contact Changed Status"
msgstr "Контакт изменит статус"
-#: ../src/common/connection_handlers_events.py:2188
+#: ../src/common/connection_handlers_events.py:2186
#, python-format
msgid "%(nickname)s Signed In"
msgstr "%(nickname)s подключается"
#. default value
-#: ../src/common/connection_handlers_events.py:2193
-#: ../src/dialogs.py:2773
+#: ../src/common/connection_handlers_events.py:2191
+#: ../src/dialogs.py:2778
#: ../src/notify.py:259
msgid "Contact Signed In"
msgstr "Контакт подключился"
-#: ../src/common/connection_handlers_events.py:2195
+#: ../src/common/connection_handlers_events.py:2193
#, python-format
msgid "%(nickname)s Signed Out"
msgstr "%(nickname)s отключается"
-#: ../src/common/connection_handlers_events.py:2200
-#: ../src/dialogs.py:2775
+#: ../src/common/connection_handlers_events.py:2198
+#: ../src/dialogs.py:2780
#: ../src/notify.py:261
msgid "Contact Signed Out"
msgstr "Контакт отключился"
@@ -4391,189 +4620,188 @@ msgstr "Не могу загрузить модуль «idle»"
msgid "Registration information for transport %s has not arrived in time"
msgstr "Данные о регистрации для транспорта %s не пришли вовремя."
-#: ../src/common/connection_handlers.py:128
+#: ../src/common/connection_handlers.py:129
msgid "Registration succeeded"
msgstr "Регистрация завершена"
-#: ../src/common/connection_handlers.py:129
+#: ../src/common/connection_handlers.py:130
#, python-format
msgid "Registration with agent %s succeeded"
msgstr "Регистрация сервиса %s завершена успешно"
-#: ../src/common/connection_handlers.py:137
+#: ../src/common/connection_handlers.py:139
msgid "Registration failed"
msgstr "Ошибка регистрации"
-#: ../src/common/connection_handlers.py:137
+#: ../src/common/connection_handlers.py:140
#, python-format
msgid "Registration with agent %(agent)s failed with error %(error)s: %(error_msg)s"
msgstr "Регистрация сервиса %(agent)s завершилась ошибкой: %(error)s: %(error_msg)s"
-#: ../src/common/connection_handlers.py:567
-#: ../src/common/connection.py:1519
+#: ../src/common/connection_handlers.py:571
+#: ../src/common/connection.py:1543
msgid "Invisibility not supported"
msgstr "Невидимость не поддерживается"
-#: ../src/common/connection_handlers.py:568
-#: ../src/common/connection.py:1520
+#: ../src/common/connection_handlers.py:572
+#: ../src/common/connection.py:1544
#, python-format
msgid "Account %s doesn't support invisibility."
msgstr "Учетная запись %s не поддерживает невидимость."
-#: ../src/common/connection_handlers.py:1710
+#: ../src/common/connection_handlers.py:1720
msgid "I would like to add you to my roster."
msgstr "Вы не возражаете, если я добавлю Вас в свой ростер?"
-#: ../src/common/connection.py:68
+#: ../src/common/connection.py:70
msgid "Unable to get issuer certificate"
msgstr "Не удалось получить сертификат издателя"
-#: ../src/common/connection.py:69
+#: ../src/common/connection.py:71
msgid "Unable to get certificate CRL"
msgstr "Не удалось получить сертификат CRL"
-#: ../src/common/connection.py:70
+#: ../src/common/connection.py:72
msgid "Unable to decrypt certificate's signature"
msgstr "Не удалось расшифровать подпись сертификата"
-#: ../src/common/connection.py:71
+#: ../src/common/connection.py:73
msgid "Unable to decrypt CRL's signature"
msgstr "Не удалось расшифровать подпись CRL"
-#: ../src/common/connection.py:72
+#: ../src/common/connection.py:74
msgid "Unable to decode issuer public key"
msgstr "Не удалось расшифровать открытый ключ издателя"
-#: ../src/common/connection.py:73
+#: ../src/common/connection.py:75
msgid "Certificate signature failure"
msgstr "Ошибка подписи сертификата"
-#: ../src/common/connection.py:74
+#: ../src/common/connection.py:76
msgid "CRL signature failure"
msgstr "Ошибка подписи CRL"
-#: ../src/common/connection.py:75
+#: ../src/common/connection.py:77
msgid "Certificate is not yet valid"
msgstr "Сертификат ещё не действителен"
-#: ../src/common/connection.py:76
+#: ../src/common/connection.py:78
msgid "Certificate has expired"
msgstr "Сертификат просрочен"
-#: ../src/common/connection.py:77
+#: ../src/common/connection.py:79
msgid "CRL is not yet valid"
msgstr "CRL ещё не действителен"
-#: ../src/common/connection.py:78
+#: ../src/common/connection.py:80
msgid "CRL has expired"
msgstr "CRL просрочен"
-#: ../src/common/connection.py:79
+#: ../src/common/connection.py:81
msgid "Format error in certificate's notBefore field"
msgstr "Ошибка в поле notBefore сертификата"
-#: ../src/common/connection.py:80
+#: ../src/common/connection.py:82
msgid "Format error in certificate's notAfter field"
msgstr "Ошибка в поле notAfter сертификата"
-#: ../src/common/connection.py:81
+#: ../src/common/connection.py:83
msgid "Format error in CRL's lastUpdate field"
msgstr "Ошибка в поле «lastUpdate» CRL"
-#: ../src/common/connection.py:82
+#: ../src/common/connection.py:84
msgid "Format error in CRL's nextUpdate field"
msgstr "Ошибка в поле «nextUpdate» CRL"
-#: ../src/common/connection.py:83
+#: ../src/common/connection.py:85
msgid "Out of memory"
msgstr "Недостаточно памяти"
-#: ../src/common/connection.py:84
+#: ../src/common/connection.py:86
msgid "Self signed certificate"
msgstr "Сертификат подписан самим владельцем."
-#: ../src/common/connection.py:85
+#: ../src/common/connection.py:87
msgid "Self signed certificate in certificate chain"
msgstr "Самостоятельно подписанный сертификат в цепочке сертификатов"
-#: ../src/common/connection.py:86
+#: ../src/common/connection.py:88
msgid "Unable to get local issuer certificate"
msgstr "Не удалось получить сертификат локального издателя"
-#: ../src/common/connection.py:87
+#: ../src/common/connection.py:89
msgid "Unable to verify the first certificate"
msgstr "Не удалось подтвердить первый сертификат"
-#: ../src/common/connection.py:88
+#: ../src/common/connection.py:90
msgid "Certificate chain too long"
msgstr "Цепочка сертификатов слишком длинная"
-#: ../src/common/connection.py:89
+#: ../src/common/connection.py:91
msgid "Certificate revoked"
msgstr "Сертификат аннулирован"
-#: ../src/common/connection.py:90
+#: ../src/common/connection.py:92
msgid "Invalid CA certificate"
msgstr "Недопустимый сертификат CA"
-#: ../src/common/connection.py:91
+#: ../src/common/connection.py:93
msgid "Path length constraint exceeded"
msgstr "Превышено ограничение по длине пути"
-#: ../src/common/connection.py:92
+#: ../src/common/connection.py:94
msgid "Unsupported certificate purpose"
msgstr "Неподдерживаемое назначение сертификата"
-#: ../src/common/connection.py:93
+#: ../src/common/connection.py:95
msgid "Certificate not trusted"
msgstr "Сертификат не является доверенным"
-#: ../src/common/connection.py:94
+#: ../src/common/connection.py:96
msgid "Certificate rejected"
msgstr "Сертификат отклонен"
-#: ../src/common/connection.py:95
+#: ../src/common/connection.py:97
msgid "Subject issuer mismatch"
msgstr "Несоответствие поставщика сертификата"
-#: ../src/common/connection.py:96
+#: ../src/common/connection.py:98
msgid "Authority and subject key identifier mismatch"
msgstr "Идентификаторы ключа центра сертификации и владельца не совпадают"
-#: ../src/common/connection.py:97
+#: ../src/common/connection.py:99
msgid "Authority and issuer serial number mismatch"
msgstr "Идентификаторы ключа центра сертификации и издателя не совпадают"
-#: ../src/common/connection.py:98
+#: ../src/common/connection.py:100
msgid "Key usage does not include certificate signing"
msgstr "Назначение ключа не включает подписывание сертификата"
-#: ../src/common/connection.py:99
+#: ../src/common/connection.py:101
msgid "Application verification failure"
msgstr "Ошибка при проверке приложения"
-#: ../src/common/connection.py:260
-#: ../src/dialogs.py:3091
+#: ../src/common/connection.py:264
+#: ../src/dialogs.py:3096
#, python-format
msgid "It is not possible to send a message to %s, this JID is not valid."
msgstr "Не удалось передать сообщение %s — этот JID неверен."
-#: ../src/common/connection.py:282
+#: ../src/common/connection.py:286
msgid "Neither the remote presence is signed, nor a key was assigned."
msgstr "Ни удаленное присутствие не подписано, ни ключ не присвоен."
-#: ../src/common/connection.py:285
+#: ../src/common/connection.py:289
#, python-format
msgid "The contact's key (%s) does not match the key assigned in Gajim."
msgstr "Ключ (%s) контакта не соответствует ключу, присвоенному в Gajim."
-#. we're not english
-#. one in locale and one en
-#: ../src/common/connection.py:337
+#. we're not english: one in locale and one en
+#: ../src/common/connection.py:342
msgid "[This message is *encrypted* (See :XEP:`27`]"
msgstr "[Это сообщение *зашифровано* (см. :XEP:`27`]"
-#: ../src/common/connection.py:435
+#: ../src/common/connection.py:440
#, python-format
msgid ""
"Subject: %(subject)s\n"
@@ -4582,78 +4810,77 @@ msgstr ""
"Тема: %(subject)s\n"
"%(message)s"
-#: ../src/common/connection.py:845
+#: ../src/common/connection.py:853
#, python-format
msgid "Connection with account \"%s\" has been lost"
msgstr "Связь с учетной записью «%s» была потеряна"
-#: ../src/common/connection.py:846
+#: ../src/common/connection.py:854
msgid "Reconnect manually."
msgstr "Переподключаться вручную."
#. it's a new account
#. wrong answer
-#: ../src/common/connection.py:857
+#: ../src/common/connection.py:865
#, python-format
msgid "Server %(name)s answered wrongly to register request: %(error)s"
msgstr "Сервер %(name)s неверно ответил на запрос о регистрации: %(error)s"
#. requested config has changed since first connection
-#: ../src/common/connection.py:899
+#: ../src/common/connection.py:907
#, python-format
msgid "Server %s provided a different registration form"
msgstr "Сервер %s предоставил другую регистрационную форму"
-#. wrong answer
-#: ../src/common/connection.py:915
+#: ../src/common/connection.py:924
msgid "Invalid answer"
msgstr "Неверный ответ"
-#: ../src/common/connection.py:916
+#: ../src/common/connection.py:925
#, python-format
msgid "Transport %(name)s answered wrongly to register request: %(error)s"
msgstr "Транспорт %(name)s неверно ответил на запрос о регистрации: %(error)s"
-#: ../src/common/connection.py:1191
-#: ../src/common/connection.py:1331
-#: ../src/common/connection.py:1954
-#: ../src/common/zeroconf/connection_zeroconf.py:204
+#: ../src/common/connection.py:1200
+#: ../src/common/connection.py:1352
+#: ../src/common/connection.py:1979
+#: ../src/common/zeroconf/connection_zeroconf.py:205
#, python-format
msgid "Could not connect to \"%s\""
msgstr "Не могу соединиться с «%s»"
-#: ../src/common/connection.py:1192
-#: ../src/gui_interface.py:524
+#: ../src/common/connection.py:1201
+#: ../src/gui_interface.py:529
msgid "Check your connection or try again later."
msgstr "Проверьте настройки сети или попробуйте еще раз позже."
-#: ../src/common/connection.py:1197
+#: ../src/common/connection.py:1206
#, python-format
msgid "Server replied: %s"
msgstr "Сервер ответил: %s"
-#: ../src/common/connection.py:1210
+#: ../src/common/connection.py:1221
msgid "Connection to proxy failed"
msgstr "Соединение с прокси разорвалось"
-#: ../src/common/connection.py:1248
-#: ../src/common/connection.py:1310
+#: ../src/common/connection.py:1259
+#: ../src/common/connection.py:1331
#, python-format
msgid "Could not connect to account %s"
msgstr "Не могу соединиться с %s"
-#: ../src/common/connection.py:1249
-#: ../src/common/connection.py:1311
+#: ../src/common/connection.py:1260
+#: ../src/common/connection.py:1332
#, python-format
msgid "Connection with account %s has been lost. Retry connecting."
msgstr "Связь с учетной записью %s была потеряна.Попытка подключения."
-#: ../src/common/connection.py:1274
+#: ../src/common/connection.py:1285
#, python-format
msgid "The authenticity of the %s certificate could be invalid."
msgstr "Достоверность сертификата %s может быть недействительной."
-#: ../src/common/connection.py:1277
+#: ../src/common/connection.py:1288
#, python-format
msgid ""
"\n"
@@ -4662,7 +4889,7 @@ msgstr ""
"\n"
"Ошибка SSL: <b>%s</b>"
-#: ../src/common/connection.py:1279
+#: ../src/common/connection.py:1290
#, python-format
msgid ""
"\n"
@@ -4671,69 +4898,76 @@ msgstr ""
"\n"
"Неизвестная ошибка SSL: %d"
-#: ../src/common/connection.py:1332
+#: ../src/common/connection.py:1313
+#, fuzzy, python-format
+msgid ""
+"The authenticity of the %s certificate could be invalid.\n"
+"The certificate does not cover this domain."
+msgstr "Достоверность сертификата %s может быть недействительной."
+
+#: ../src/common/connection.py:1353
msgid "Check your connection or try again later"
msgstr "Проверьте настройки сети или попробуйте еще раз позже"
-#: ../src/common/connection.py:1366
+#: ../src/common/connection.py:1388
#, python-format
msgid "Authentication failed with \"%s\""
msgstr "Ошибка аутентификации с «%s»"
-#: ../src/common/connection.py:1368
+#: ../src/common/connection.py:1389
msgid "Please check your login and password for correctness."
msgstr "Проверьте правильность логина и пароля."
-#: ../src/common/connection.py:1441
+#: ../src/common/connection.py:1464
msgid "Error while removing privacy list"
msgstr "Ошибка при удалении списка доступа"
-#: ../src/common/connection.py:1442
+#: ../src/common/connection.py:1465
#, python-format
msgid "Privacy list %s has not been removed. It is maybe active in one of your connected resources. Deactivate it and try again."
msgstr "Список доступа %s не может быть удален. Возможно, он используется одним из ваших активных ресурсов. Отключите ресурс и попробуйте снова."
-#: ../src/common/connection.py:1821
+#: ../src/common/connection.py:1846
#, python-format
msgid "Sent contact: \"%s\" (%s)"
msgstr "Контакт для отправки: «%s» (%s)"
-#: ../src/common/connection.py:1824
+#: ../src/common/connection.py:1849
msgid "Sent contacts:"
msgstr "Контакты для отправки:"
-#: ../src/common/connection.py:1971
-#: ../src/common/connection.py:1994
+#: ../src/common/connection.py:1996
+#: ../src/common/connection.py:2019
msgid "Not fetched because of invisible status"
msgstr "Нельзя получить из-за невидимости"
-#: ../src/common/connection.py:2525
+#: ../src/common/connection.py:2579
msgid "Unregister failed"
msgstr "Ошибка отказа от регистрации"
-#: ../src/common/connection.py:2526
+#: ../src/common/connection.py:2580
#, python-format
msgid "Unregistration with server %(server)s failed: %(error)s"
msgstr "Отказ от регистрации на сервере %(server)s завершился ошибкой: %(error)s"
#: ../src/common/contacts.py:126
-#: ../src/common/helpers.py:61
-#: ../src/gui_interface.py:467
+#: ../src/common/helpers.py:67
+#: ../src/gui_interface.py:472
msgid "Observers"
msgstr "Наблюдатели"
#: ../src/common/contacts.py:130
#: ../src/common/contacts.py:358
-#: ../src/common/helpers.py:61
+#: ../src/common/helpers.py:67
#: ../src/disco.py:120
#: ../src/disco.py:121
#: ../src/disco.py:1517
-#: ../src/roster_window.py:856
-#: ../src/roster_window.py:1552
-#: ../src/roster_window.py:1640
-#: ../src/roster_window.py:1642
-#: ../src/roster_window.py:1804
-#: ../src/roster_window.py:2482
+#: ../src/roster_window.py:859
+#: ../src/roster_window.py:1579
+#: ../src/roster_window.py:1683
+#: ../src/roster_window.py:1685
+#: ../src/roster_window.py:1847
+#: ../src/roster_window.py:2525
msgid "Transports"
msgstr "Транспорты"
@@ -4960,240 +5194,240 @@ msgstr "Конец недели"
msgid "Weekend!"
msgstr "Выходные!"
-#: ../src/common/helpers.py:152
+#: ../src/common/helpers.py:158
msgid "Username must be between 1 and 1023 chars"
msgstr "Имя должно быть от 1 до 1023 символов"
-#: ../src/common/helpers.py:157
+#: ../src/common/helpers.py:163
msgid "Invalid character in username."
msgstr "Неверный символ в имени пользователя."
-#: ../src/common/helpers.py:163
+#: ../src/common/helpers.py:169
msgid "Server must be between 1 and 1023 chars"
msgstr "Имя сервера должно быть от 1 до 1023 символов"
-#: ../src/common/helpers.py:168
+#: ../src/common/helpers.py:174
msgid "Invalid character in hostname."
msgstr "Неверный символ в имени сервера"
-#: ../src/common/helpers.py:170
+#: ../src/common/helpers.py:176
msgid "Server address required."
msgstr "Требуется адрес сервера."
-#: ../src/common/helpers.py:174
+#: ../src/common/helpers.py:180
msgid "Resource must be between 1 and 1023 chars"
msgstr "Имя ресурса должно быть от 1 до 1023 символов"
-#: ../src/common/helpers.py:179
+#: ../src/common/helpers.py:185
msgid "Invalid character in resource."
msgstr "Неверный символ в ресурсе"
-#: ../src/common/helpers.py:219
+#: ../src/common/helpers.py:225
msgid "_Busy"
msgstr "_Занят"
-#: ../src/common/helpers.py:221
-#: ../src/tooltips.py:195
+#: ../src/common/helpers.py:227
+#: ../src/tooltips.py:196
msgid "Busy"
msgstr "Занят"
-#: ../src/common/helpers.py:224
+#: ../src/common/helpers.py:230
msgid "_Not Available"
msgstr "_Недоступен"
-#: ../src/common/helpers.py:226
-#: ../src/tooltips.py:197
+#: ../src/common/helpers.py:232
+#: ../src/tooltips.py:198
msgid "Not Available"
msgstr "Недоступен"
-#: ../src/common/helpers.py:229
+#: ../src/common/helpers.py:235
msgid "_Free for Chat"
msgstr "_Готов поболтать"
-#: ../src/common/helpers.py:231
-#: ../src/tooltips.py:191
+#: ../src/common/helpers.py:237
+#: ../src/tooltips.py:192
msgid "Free for Chat"
msgstr "Готов поболтать"
-#: ../src/common/helpers.py:234
+#: ../src/common/helpers.py:240
msgid "?user status:_Available"
msgstr "Д_оступен"
-#: ../src/common/helpers.py:236
-#: ../src/tooltips.py:189
+#: ../src/common/helpers.py:242
+#: ../src/tooltips.py:190
msgid "?user status:Available"
msgstr "Доступен"
-#: ../src/common/helpers.py:238
+#: ../src/common/helpers.py:244
msgid "Connecting"
msgstr "Соединяюсь"
-#: ../src/common/helpers.py:241
+#: ../src/common/helpers.py:247
msgid "A_way"
msgstr "_Ушел"
-#: ../src/common/helpers.py:246
+#: ../src/common/helpers.py:252
msgid "_Offline"
msgstr "_Отключен"
-#: ../src/common/helpers.py:248
-#: ../src/tooltips.py:199
+#: ../src/common/helpers.py:254
+#: ../src/tooltips.py:200
msgid "Offline"
msgstr "Отключен"
-#: ../src/common/helpers.py:251
+#: ../src/common/helpers.py:257
msgid "_Invisible"
msgstr "_Невидимка"
-#: ../src/common/helpers.py:253
+#: ../src/common/helpers.py:259
msgid "Invisible"
msgstr "Невидимка"
-#: ../src/common/helpers.py:257
+#: ../src/common/helpers.py:263
msgid "?contact has status:Unknown"
msgstr "Неизвестен"
-#: ../src/common/helpers.py:259
+#: ../src/common/helpers.py:265
msgid "?contact has status:Has errors"
msgstr "Ошибка"
-#: ../src/common/helpers.py:264
+#: ../src/common/helpers.py:270
msgid "?Subscription we already have:None"
msgstr "Нет"
-#: ../src/common/helpers.py:266
+#: ../src/common/helpers.py:272
msgid "To"
msgstr "К"
-#: ../src/common/helpers.py:268
+#: ../src/common/helpers.py:274
msgid "From"
msgstr "От"
-#: ../src/common/helpers.py:270
+#: ../src/common/helpers.py:276
msgid "Both"
msgstr "Оба"
-#: ../src/common/helpers.py:278
+#: ../src/common/helpers.py:284
msgid "?Ask (for Subscription):None"
msgstr "Нет"
-#: ../src/common/helpers.py:280
+#: ../src/common/helpers.py:286
msgid "Subscribe"
msgstr "Подписаться"
-#: ../src/common/helpers.py:289
+#: ../src/common/helpers.py:295
msgid "?Group Chat Contact Role:None"
msgstr "Отсутствует"
-#: ../src/common/helpers.py:292
+#: ../src/common/helpers.py:298
msgid "Moderators"
msgstr "Модераторы"
-#: ../src/common/helpers.py:294
+#: ../src/common/helpers.py:300
msgid "Moderator"
msgstr "Модератор"
-#: ../src/common/helpers.py:297
+#: ../src/common/helpers.py:303
msgid "Participants"
msgstr "Участники"
-#: ../src/common/helpers.py:299
+#: ../src/common/helpers.py:305
msgid "Participant"
msgstr "Участник"
-#: ../src/common/helpers.py:302
+#: ../src/common/helpers.py:308
msgid "Visitors"
msgstr "Посетители"
-#: ../src/common/helpers.py:304
+#: ../src/common/helpers.py:310
msgid "Visitor"
msgstr "Посетитель"
-#: ../src/common/helpers.py:310
-#: ../src/tooltips.py:210
+#: ../src/common/helpers.py:316
+#: ../src/tooltips.py:211
msgid "?Group Chat Contact Affiliation:None"
msgstr "?Group Chat Contact Affiliation:Отсутствует"
-#: ../src/common/helpers.py:312
-#: ../src/tooltips.py:216
+#: ../src/common/helpers.py:318
+#: ../src/tooltips.py:217
msgid "Owner"
msgstr "Владелец"
-#: ../src/common/helpers.py:314
-#: ../src/tooltips.py:214
+#: ../src/common/helpers.py:320
+#: ../src/tooltips.py:215
msgid "Administrator"
msgstr "Администратор"
-#: ../src/common/helpers.py:316
-#: ../src/tooltips.py:212
+#: ../src/common/helpers.py:322
+#: ../src/tooltips.py:213
msgid "Member"
msgstr "Участник"
-#: ../src/common/helpers.py:355
+#: ../src/common/helpers.py:361
msgid "is paying attention to the conversation"
msgstr "читает сообщение"
-#: ../src/common/helpers.py:357
+#: ../src/common/helpers.py:363
msgid "is doing something else"
msgstr "занят чем-то еще"
-#: ../src/common/helpers.py:359
+#: ../src/common/helpers.py:365
msgid "is composing a message..."
msgstr "печатает сообщение..."
#. paused means he or she was composing but has stopped for a while
-#: ../src/common/helpers.py:362
+#: ../src/common/helpers.py:368
msgid "paused composing a message"
msgstr "перестал печатать сообщение"
-#: ../src/common/helpers.py:364
+#: ../src/common/helpers.py:370
msgid "has closed the chat window or tab"
msgstr "закрыл окно чата или вкладку"
#. GiB means gibibyte
-#: ../src/common/helpers.py:639
+#: ../src/common/helpers.py:648
#, python-format
msgid "%s GiB"
msgstr "%s GiB"
#. GB means gigabyte
-#: ../src/common/helpers.py:642
+#: ../src/common/helpers.py:651
#, python-format
msgid "%s GB"
msgstr "%s GB"
#. MiB means mibibyte
-#: ../src/common/helpers.py:646
+#: ../src/common/helpers.py:655
#, python-format
msgid "%s MiB"
msgstr "%s MiB"
#. MB means megabyte
-#: ../src/common/helpers.py:649
+#: ../src/common/helpers.py:658
#, python-format
msgid "%s MB"
msgstr "%s MB"
#. KiB means kibibyte
-#: ../src/common/helpers.py:653
+#: ../src/common/helpers.py:662
#, python-format
msgid "%s KiB"
msgstr "%s KiB"
#. KB means kilo bytes
-#: ../src/common/helpers.py:656
+#: ../src/common/helpers.py:665
#, python-format
msgid "%s KB"
msgstr "%s KB"
#. B means bytes
-#: ../src/common/helpers.py:659
+#: ../src/common/helpers.py:668
#, python-format
msgid "%s B"
msgstr "%s B"
-#: ../src/common/helpers.py:1110
-#: ../src/common/helpers.py:1117
+#: ../src/common/helpers.py:1119
+#: ../src/common/helpers.py:1126
#, python-format
msgid "%d message pending"
msgid_plural "%d messages pending"
@@ -5201,24 +5435,24 @@ msgstr[0] "%d пропущенное сообщение"
msgstr[1] "%d пропущенных сообщения"
msgstr[2] "%d пропущенных сообщений"
-#: ../src/common/helpers.py:1123
+#: ../src/common/helpers.py:1132
#, python-format
msgid " from room %s"
msgstr " в комнате %s"
-#: ../src/common/helpers.py:1126
-#: ../src/common/helpers.py:1143
+#: ../src/common/helpers.py:1135
+#: ../src/common/helpers.py:1152
#, python-format
msgid " from user %s"
msgstr " от пользователя %s"
-#: ../src/common/helpers.py:1128
+#: ../src/common/helpers.py:1137
#, python-format
msgid " from %s"
msgstr " от %s"
-#: ../src/common/helpers.py:1135
-#: ../src/common/helpers.py:1141
+#: ../src/common/helpers.py:1144
+#: ../src/common/helpers.py:1150
#, python-format
msgid "%d event pending"
msgid_plural "%d events pending"
@@ -5226,21 +5460,41 @@ msgstr[0] "%d событие пропущено"
msgstr[1] "%d события пропущено"
msgstr[2] "%d событий пропущено"
-#: ../src/common/helpers.py:1173
+#: ../src/common/helpers.py:1182
#, python-format
msgid "Gajim - %s"
msgstr "Gajim — %s"
-#: ../src/common/helpers.py:1352
+#: ../src/common/helpers.py:1361
msgid "Hello, I am $name."
msgstr "Привет, я $name."
-#: ../src/common/jingle_rtp.py:107
+#: ../src/common/helpers.py:1471
+#: ../src/common/helpers.py:1480
+#: ../src/common/helpers.py:1534
+msgid "Timeout loading image"
+msgstr "Не могу загрузить изображение"
+
+#: ../src/common/helpers.py:1490
+#: ../src/common/helpers.py:1532
+msgid "Image is too big"
+msgstr "Изображение слишком большое"
+
+#: ../src/common/helpers.py:1500
+#, fuzzy
+msgid "PyCURL is not installed"
+msgstr "CRL ещё не действителен"
+
+#: ../src/common/helpers.py:1536
+msgid "Error loading image"
+msgstr "Ошибка загрузки изображения"
+
+#: ../src/common/jingle_rtp.py:109
#, python-format
msgid "%s configuration error"
msgstr "ошибка конфигурации %s"
-#: ../src/common/jingle_rtp.py:108
+#: ../src/common/jingle_rtp.py:110
#, python-format
msgid ""
"Couldn't setup %s. Check your configuration.\n"
@@ -5259,11 +5513,11 @@ msgstr ""
"Ошибка:\n"
"%s"
-#: ../src/common/jingle_rtp.py:205
+#: ../src/common/jingle_rtp.py:208
msgid "GStreamer error"
msgstr "Ошибка GStreamer"
-#: ../src/common/jingle_rtp.py:206
+#: ../src/common/jingle_rtp.py:208
#, python-format
msgid ""
"Error: %s\n"
@@ -5272,19 +5526,19 @@ msgstr ""
"Ошибка: %s\n"
"Отладка: %s"
-#: ../src/common/jingle_rtp.py:335
+#: ../src/common/jingle_rtp.py:338
msgid "audio input"
msgstr "звуковой вход"
-#: ../src/common/jingle_rtp.py:338
+#: ../src/common/jingle_rtp.py:341
msgid "audio output"
msgstr "звуковой выход"
-#: ../src/common/jingle_rtp.py:381
+#: ../src/common/jingle_rtp.py:384
msgid "video input"
msgstr "видео вход"
-#: ../src/common/jingle_rtp.py:390
+#: ../src/common/jingle_rtp.py:393
msgid "video output"
msgstr "видео выход"
@@ -5362,10 +5616,13 @@ msgid "X Window System (without Xv)"
msgstr "Система X Window (без Xv)"
#. we talk about a file
+#. we talk about file
#: ../src/common/optparser.py:53
+#: ../src/gtkgui_helpers.py:203
+#: ../src/gtkgui_helpers.py:219
#, python-format
-msgid "error: cannot open %s for reading"
-msgstr "ошибка: не могу открыть %s для чтения"
+msgid "Error: cannot open %s for reading"
+msgstr "Ошибка: не могу открыть %s для чтения"
#: ../src/common/optparser.py:305
#: ../src/common/optparser.py:306
@@ -6046,7 +6303,7 @@ msgstr "Возможно, запущен ещё один экземпляр Gaji
msgid "[This is part of an encrypted session. If you see this message, something went wrong.]"
msgstr "[Это часть зашифрованного сообщения. Если вы видите это сообщение, возможно, произошла ошибка.]"
-#: ../src/common/zeroconf/connection_zeroconf.py:192
+#: ../src/common/zeroconf/connection_zeroconf.py:193
msgid "Avahi error"
msgstr "Ошибка Avahi"
@@ -6061,45 +6318,45 @@ msgstr ""
"%s\n"
"Возможно, обмен локальными сообщениями работает не верно."
-#: ../src/common/zeroconf/connection_zeroconf.py:205
+#: ../src/common/zeroconf/connection_zeroconf.py:206
msgid "Please check if Avahi or Bonjour is installed."
msgstr "Удостоверьтесь, что Avahi или Bonjour установлен."
-#: ../src/common/zeroconf/connection_zeroconf.py:215
-#: ../src/common/zeroconf/connection_zeroconf.py:219
+#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:220
msgid "Could not start local service"
msgstr "Не могу запустить локальный сервис"
-#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:217
#, python-format
msgid "Unable to bind to port %d."
msgstr "Не могу использовать порт %d."
-#: ../src/common/zeroconf/connection_zeroconf.py:220
-#: ../src/common/zeroconf/connection_zeroconf.py:304
-#: ../src/common/zeroconf/connection_zeroconf.py:317
-#: ../src/common/zeroconf/connection_zeroconf.py:333
+#: ../src/common/zeroconf/connection_zeroconf.py:221
+#: ../src/common/zeroconf/connection_zeroconf.py:305
+#: ../src/common/zeroconf/connection_zeroconf.py:318
+#: ../src/common/zeroconf/connection_zeroconf.py:334
msgid "Please check if avahi-daemon is running."
msgstr "Удостоверьтесь, что демон avahi запущен."
-#: ../src/common/zeroconf/connection_zeroconf.py:303
-#: ../src/common/zeroconf/connection_zeroconf.py:316
-#: ../src/common/zeroconf/connection_zeroconf.py:332
+#: ../src/common/zeroconf/connection_zeroconf.py:304
+#: ../src/common/zeroconf/connection_zeroconf.py:317
+#: ../src/common/zeroconf/connection_zeroconf.py:333
#, python-format
msgid "Could not change status of account \"%s\""
msgstr "Не могу изменить статус учётной записи «%s»"
-#: ../src/common/zeroconf/connection_zeroconf.py:351
-#: ../src/common/zeroconf/connection_zeroconf.py:390
+#: ../src/common/zeroconf/connection_zeroconf.py:352
+#: ../src/common/zeroconf/connection_zeroconf.py:392
msgid "Your message could not be sent."
msgstr "Ваше сообщение не может быть отправлено."
-#: ../src/common/zeroconf/connection_zeroconf.py:365
-#: ../src/common/zeroconf/connection_zeroconf.py:404
+#: ../src/common/zeroconf/connection_zeroconf.py:366
+#: ../src/common/zeroconf/connection_zeroconf.py:406
msgid "Contact is offline. Your message could not be sent."
msgstr "Контакт не в сети. Отправить сообщение не удалось."
-#: ../src/common/zeroconf/connection_zeroconf.py:431
+#: ../src/common/zeroconf/connection_zeroconf.py:433
msgid "Connection to host could not be established: Timeout while sending data."
msgstr "Не удалось соединиться с хостом: истекло время ожидания."
@@ -6109,251 +6366,251 @@ msgstr "Не удалось соединиться с хостом: истекл
msgid "Error while adding service. %s"
msgstr "Ошибка при добавлении службы. %s"
-#: ../src/config.py:406
+#: ../src/config.py:407
msgid "Default Message"
msgstr "Сообщение по умолчанию"
-#: ../src/config.py:415
+#: ../src/config.py:416
msgid "Enabled"
msgstr "Включено"
-#: ../src/config.py:468
-#: ../src/config.py:472
-#: ../src/config.py:3157
+#: ../src/config.py:469
+#: ../src/config.py:473
+#: ../src/config.py:3159
msgid "Default"
msgstr "По умолчанию"
-#: ../src/config.py:756
+#: ../src/config.py:757
#: ../src/dialogs.py:1493
#, python-format
msgid "Dictionary for lang %s not available"
msgstr "Нет словаря для языка %s"
-#: ../src/config.py:757
+#: ../src/config.py:758
#, python-format
msgid "You have to install %s dictionary to use spellchecking, or choose another language by setting the speller_language option."
msgstr "Чтобы воспользоваться проверкой правописания, установите словарь для языка %s или выберите другой язык, исправив настройку speller_language."
-#: ../src/config.py:1237
+#: ../src/config.py:1238
msgid "status message title"
msgstr "заголовок сообщения о статусе"
-#: ../src/config.py:1237
+#: ../src/config.py:1238
msgid "status message text"
msgstr "текст сообщения о статусе"
#. Name column
-#: ../src/config.py:1565
-#: ../src/dialogs.py:2534
-#: ../src/dialogs.py:2601
-#: ../src/dialogs.py:3393
+#: ../src/config.py:1566
+#: ../src/dialogs.py:2539
+#: ../src/dialogs.py:2606
+#: ../src/dialogs.py:3398
#: ../src/disco.py:886
#: ../src/disco.py:1744
#: ../src/disco.py:2046
-#: ../src/history_window.py:90
+#: ../src/history_window.py:91
msgid "Name"
msgstr "Имя"
-#: ../src/config.py:1660
+#: ../src/config.py:1661
msgid "Relogin now?"
msgstr "Переподключиться сейчас?"
-#: ../src/config.py:1661
+#: ../src/config.py:1662
msgid "If you want all the changes to apply instantly, you must relogin."
msgstr "Если вы хотите, чтобы изменения были применены немедленно, вы должны переподключиться."
-#: ../src/config.py:1815
-#: ../src/config.py:1948
+#: ../src/config.py:1816
+#: ../src/config.py:1949
msgid "OpenPGP is not usable on this computer"
msgstr "Невозможно использовать OpenPGP на этом компьютере"
-#: ../src/config.py:1988
-#: ../src/config.py:2035
+#: ../src/config.py:1989
+#: ../src/config.py:2036
msgid "Unread events"
msgstr "Непросмотренные события"
-#: ../src/config.py:1989
+#: ../src/config.py:1990
msgid "Read all pending events before removing this account."
msgstr "Просмотрите все ожидающие события перед удалением учетной записи."
-#: ../src/config.py:2018
+#: ../src/config.py:2019
#, python-format
msgid "You have opened chat in account %s"
msgstr "У вас есть окна чата под учётной записью %s"
-#: ../src/config.py:2019
+#: ../src/config.py:2020
msgid "All chat and groupchat windows will be closed. Do you want to continue?"
msgstr "Все окна чатов и комнат будут закрыты. Продолжить?"
-#: ../src/config.py:2031
-#: ../src/config.py:2573
-#: ../src/config.py:2609
+#: ../src/config.py:2032
+#: ../src/config.py:2574
+#: ../src/config.py:2611
msgid "You are currently connected to the server"
msgstr "Вы сейчас подсоединены к серверу"
-#: ../src/config.py:2032
+#: ../src/config.py:2033
msgid "To change the account name, you must be disconnected."
msgstr "Для смены имени учетной записи необходимо отключиться."
-#: ../src/config.py:2036
+#: ../src/config.py:2037
msgid "To change the account name, you must read all pending events."
msgstr "Для смены имени учетной записи необходимо просмотреть ожидающие события."
-#: ../src/config.py:2042
+#: ../src/config.py:2043
msgid "Account Name Already Used"
msgstr "Такое имя учетной записи уже используется"
-#: ../src/config.py:2043
+#: ../src/config.py:2044
msgid "This name is already used by another of your accounts. Please choose another name."
msgstr "Это имя уже используется в другой вашей учетной записи. Выберите другое."
-#: ../src/config.py:2047
-#: ../src/config.py:2051
+#: ../src/config.py:2048
+#: ../src/config.py:2052
msgid "Invalid account name"
msgstr "Неверное имя учетной записи"
-#: ../src/config.py:2048
+#: ../src/config.py:2049
msgid "Account name cannot be empty."
msgstr "Имя учетной записи не может быть пустым."
-#: ../src/config.py:2052
+#: ../src/config.py:2053
msgid "Account name cannot contain spaces."
msgstr "Имя учетной записи не может содержать пробелы."
-#: ../src/config.py:2129
+#: ../src/config.py:2130
msgid "Rename Account"
msgstr "Переименовать учетную запись"
-#: ../src/config.py:2130
+#: ../src/config.py:2131
#, python-format
msgid "Enter a new name for account %s"
msgstr "Введите новое название для учетной записи %s"
-#: ../src/config.py:2158
+#: ../src/config.py:2159
msgid "A Jabber ID must be in the form \"user@servername\"."
msgstr "Jabber ID должен иметь формат «имя_пользователя@сервер»."
-#: ../src/config.py:2381
-#: ../src/config.py:3707
+#: ../src/config.py:2382
+#: ../src/config.py:3709
msgid "Invalid entry"
msgstr "Неверная запись"
-#: ../src/config.py:2382
-#: ../src/config.py:3708
+#: ../src/config.py:2383
+#: ../src/config.py:3710
msgid "Custom port must be a port number."
msgstr "В качестве номера порта должно выступать число"
-#: ../src/config.py:2403
+#: ../src/config.py:2404
msgid "Failed to get secret keys"
msgstr "Не удалось получить секретный ключ"
-#: ../src/config.py:2404
+#: ../src/config.py:2405
msgid "There is no OpenPGP secret key available."
msgstr "Нет секретного ключа OpenPGP."
-#: ../src/config.py:2438
+#: ../src/config.py:2439
msgid "OpenPGP Key Selection"
msgstr "Выбор ключа OpenPGP"
-#: ../src/config.py:2439
+#: ../src/config.py:2440
msgid "Choose your OpenPGP key"
msgstr "Выберите свой ключ OpenPGP"
-#: ../src/config.py:2446
+#: ../src/config.py:2447
msgid "No such account available"
msgstr "Такая учетная запись недоступна"
-#: ../src/config.py:2447
+#: ../src/config.py:2448
msgid "You must create your account before editing your personal information."
msgstr "Перед редактированием личных данных необходимо сначала создать учетную запись."
-#: ../src/config.py:2454
-#: ../src/dialogs.py:2286
-#: ../src/dialogs.py:2523
-#: ../src/dialogs.py:2711
+#: ../src/config.py:2455
+#: ../src/dialogs.py:2290
+#: ../src/dialogs.py:2528
+#: ../src/dialogs.py:2716
#: ../src/disco.py:515
#: ../src/profile_window.py:361
msgid "You are not connected to the server"
msgstr "Вы не подключены к серверу"
-#: ../src/config.py:2455
+#: ../src/config.py:2456
msgid "Without a connection, you can not edit your personal information."
msgstr "Чтобы отредактировать личную информацию, нужно подключиться к серверу."
-#: ../src/config.py:2459
+#: ../src/config.py:2460
msgid "Your server doesn't support Vcard"
msgstr "Сервер не поддерживает Vcard"
-#: ../src/config.py:2460
+#: ../src/config.py:2461
msgid "Your server can't save your personal information."
msgstr "Ваш сервер не может хранить личную информацию."
-#: ../src/config.py:2574
-#: ../src/config.py:2610
+#: ../src/config.py:2575
+#: ../src/config.py:2612
msgid "To disable the account, you must be disconnected."
msgstr "Чтобы отключить эту учетную запись, необходимо отсоединиться от сервера."
-#: ../src/config.py:2579
+#: ../src/config.py:2581
msgid "Account Local already exists."
msgstr "Учётная запись Local уже существует."
-#: ../src/config.py:2580
+#: ../src/config.py:2582
msgid "Please rename or remove it before enabling link-local messaging."
msgstr "Переименуйте или удалите её, прежде чем включать локальные сообщения."
-#: ../src/config.py:2737
+#: ../src/config.py:2739
#, python-format
msgid "Edit %s"
msgstr "Править %s"
-#: ../src/config.py:2739
+#: ../src/config.py:2741
#, python-format
msgid "Register to %s"
msgstr "Зарегистрировать %s"
#. list at the beginning
-#: ../src/config.py:2775
+#: ../src/config.py:2777
msgid "Ban List"
msgstr "Черный список"
-#: ../src/config.py:2776
+#: ../src/config.py:2778
msgid "Member List"
msgstr "Список участников"
-#: ../src/config.py:2776
+#: ../src/config.py:2778
msgid "Owner List"
msgstr "Список владельцев"
-#: ../src/config.py:2777
+#: ../src/config.py:2779
msgid "Administrator List"
msgstr "Список администраторов"
#. Address column
#. holds JID (who said this)
-#: ../src/config.py:2841
+#: ../src/config.py:2843
#: ../src/disco.py:893
#: ../src/history_manager.py:207
msgid "JID"
msgstr "JID"
-#: ../src/config.py:2851
+#: ../src/config.py:2853
msgid "Reason"
msgstr "Причина"
-#: ../src/config.py:2858
+#: ../src/config.py:2860
msgid "Nick"
msgstr "Ник"
-#: ../src/config.py:2864
+#: ../src/config.py:2866
msgid "Role"
msgstr "Обязанность"
-#: ../src/config.py:2891
+#: ../src/config.py:2893
msgid "Banning..."
msgstr "Баню..."
#. You can move '\n' before user@domain if that line is TOO BIG
-#: ../src/config.py:2893
+#: ../src/config.py:2895
msgid ""
"<b>Whom do you want to ban?</b>\n"
"\n"
@@ -6361,11 +6618,11 @@ msgstr ""
"<b>Кого вы хотите забанить?</b>\n"
"\n"
-#: ../src/config.py:2895
+#: ../src/config.py:2897
msgid "Adding Member..."
msgstr "Добавляю участника..."
-#: ../src/config.py:2896
+#: ../src/config.py:2898
msgid ""
"<b>Whom do you want to make a member?</b>\n"
"\n"
@@ -6373,11 +6630,11 @@ msgstr ""
"<b>Кого вы хотите сделать участником?</b>\n"
"\n"
-#: ../src/config.py:2898
+#: ../src/config.py:2900
msgid "Adding Owner..."
msgstr "Добавляю владельца..."
-#: ../src/config.py:2899
+#: ../src/config.py:2901
msgid ""
"<b>Whom do you want to make an owner?</b>\n"
"\n"
@@ -6385,11 +6642,11 @@ msgstr ""
"<b>Кого вы хотите сделать владельцем?</b>\n"
"\n"
-#: ../src/config.py:2901
+#: ../src/config.py:2903
msgid "Adding Administrator..."
msgstr "Добавляю администратора..."
-#: ../src/config.py:2902
+#: ../src/config.py:2904
msgid ""
"<b>Whom do you want to make an administrator?</b>\n"
"\n"
@@ -6397,7 +6654,7 @@ msgstr ""
"<b>Кого вы хотите сделать администратором?</b>\n"
"\n"
-#: ../src/config.py:2903
+#: ../src/config.py:2905
msgid ""
"Can be one of the following:\n"
"1. user@domain/resource (only that resource matches).\n"
@@ -6413,148 +6670,142 @@ msgstr ""
"4. domain (сам домен, т.е. как любое сочетание user@domain,\n"
"domain/resource, так и адрес, содержащий этот поддомен)"
-#: ../src/config.py:3004
+#: ../src/config.py:3006
#, python-format
msgid "Removing %s account"
msgstr "Удаление учетной записи %s"
-#: ../src/config.py:3019
+#: ../src/config.py:3021
msgid "Account is disabled"
msgstr "Учетная запись отключена"
-#: ../src/config.py:3020
+#: ../src/config.py:3022
msgid "To unregister from a server, account must be enabled."
msgstr "Для удаления регистрации с сервера, учетная запись должна быть активна."
-#: ../src/config.py:3033
-#: ../src/gui_interface.py:278
-#: ../src/gui_interface.py:696
+#: ../src/config.py:3035
+#: ../src/gui_interface.py:283
+#: ../src/gui_interface.py:701
msgid "Password Required"
msgstr "Требуется пароль"
-#: ../src/config.py:3034
-#: ../src/gui_interface.py:676
+#: ../src/config.py:3036
+#: ../src/gui_interface.py:681
#, python-format
msgid "Enter your password for account %s"
msgstr "Введите пароль для учетной записи %s"
-#: ../src/config.py:3035
-#: ../src/gui_interface.py:696
+#: ../src/config.py:3037
+#: ../src/gui_interface.py:701
msgid "Save password"
msgstr "Сохранить пароль"
-#: ../src/config.py:3045
+#: ../src/config.py:3047
#, python-format
msgid "Account \"%s\" is connected to the server"
msgstr "Учетная запись «%s» подключена к серверу"
-#: ../src/config.py:3046
+#: ../src/config.py:3048
msgid "If you remove it, the connection will be lost."
msgstr "Если вы удалите его, произойдет отключение."
-#: ../src/config.py:3060
+#: ../src/config.py:3062
#, python-format
msgid "Connection to server %s failed"
msgstr "Не удалось соединиться с сервером %s"
-#: ../src/config.py:3061
+#: ../src/config.py:3063
msgid "What would you like to do?"
msgstr "Что вы хотите сделать?"
-#: ../src/config.py:3062
+#: ../src/config.py:3064
msgid "Remove only from Gajim"
msgstr "Удалить только из Gajim"
-#: ../src/config.py:3063
+#: ../src/config.py:3065
msgid "Don't remove anything. I'll try again later"
msgstr "Ничего не удалять. Я попробую позже."
-#: ../src/config.py:3157
+#: ../src/config.py:3159
msgid "?print_status:All"
msgstr "?print_status:Все"
-#: ../src/config.py:3158
+#: ../src/config.py:3160
msgid "Enter and leave only"
msgstr "Только приход и уход"
-#: ../src/config.py:3159
+#: ../src/config.py:3161
msgid "?print_status:None"
msgstr "?print_status:Нет"
-#: ../src/config.py:3231
+#: ../src/config.py:3233
msgid "New Group Chat"
msgstr "Новая комната"
-#: ../src/config.py:3264
+#: ../src/config.py:3266
msgid "This bookmark has invalid data"
msgstr "Эта закладка содержит неверные данные"
-#: ../src/config.py:3265
+#: ../src/config.py:3267
msgid "Please be sure to fill out server and room fields or remove this bookmark."
msgstr "Удостоверьтесь, что заполнены поля с именем сервера и комнаты, либо удалите эту закладку."
-#. invalid char
-#: ../src/config.py:3390
-#: ../src/dialogs.py:2075
-msgid "Invalid nickname"
-msgstr "Неверное имя пользователя"
-
-#: ../src/config.py:3391
-#: ../src/config.py:3402
-#: ../src/config.py:3411
-#: ../src/config.py:3422
-#: ../src/config.py:3430
+#: ../src/config.py:3393
+#: ../src/config.py:3404
+#: ../src/config.py:3413
+#: ../src/config.py:3424
+#: ../src/config.py:3432
msgid "Character not allowed"
msgstr "Символ недопустим"
-#: ../src/config.py:3402
-#: ../src/config.py:3410
-#: ../src/config.py:3422
-#: ../src/config.py:3683
+#: ../src/config.py:3404
+#: ../src/config.py:3412
+#: ../src/config.py:3424
+#: ../src/config.py:3685
msgid "Invalid server"
msgstr "Неверный сервер"
-#: ../src/config.py:3429
+#: ../src/config.py:3431
msgid "Invalid room"
msgstr "Неверная комната"
-#: ../src/config.py:3599
+#: ../src/config.py:3601
msgid "Account has been added successfully"
msgstr "Учетная запись успешно добавлена"
-#: ../src/config.py:3600
-#: ../src/config.py:3606
+#: ../src/config.py:3602
+#: ../src/config.py:3608
msgid "You can set advanced account options by pressing the Advanced button, or later by choosing the Accounts menu item under the Edit menu from the main window."
msgstr "Вы можете установить расширенные настройки учетной записи нажатием кнопки «Дополнительно», или сделать это позже посредством пункта «Учетные записи» меню «Правка» в главном окне программы."
-#: ../src/config.py:3605
+#: ../src/config.py:3607
msgid "Your new account has been created successfully"
msgstr "Ваша новая учетная запись успешно создана"
-#: ../src/config.py:3644
+#: ../src/config.py:3646
msgid "Invalid username"
msgstr "Неверное имя пользователя"
-#: ../src/config.py:3646
+#: ../src/config.py:3648
msgid "You must provide a username to configure this account."
msgstr "Для настройки учетной записи необходимо ввести имя пользователя."
-#: ../src/config.py:3684
+#: ../src/config.py:3686
msgid "Please provide a server on which you want to register."
msgstr "Укажите сервер, на котором вы хотите зарегистрироваться."
-#: ../src/config.py:3740
-#: ../src/gui_interface.py:1174
+#: ../src/config.py:3742
+#: ../src/gui_interface.py:1203
msgid "Certificate Already in File"
msgstr "Сертификат уже находится в файле"
-#: ../src/config.py:3741
-#: ../src/gui_interface.py:1175
+#: ../src/config.py:3743
+#: ../src/gui_interface.py:1204
#, python-format
msgid "This certificate is already in file %s, so it's not added again."
msgstr "Этот сертификат уже есть в файле %s, поэтому он не был добавлен."
-#: ../src/config.py:3828
+#: ../src/config.py:3831
#, python-format
msgid ""
"<b>Security Warning</b>\n"
@@ -6569,8 +6820,8 @@ msgstr ""
"Ошибка SSL: %(error)s\n"
"Соединиться с этим сервером?"
-#: ../src/config.py:3834
-#: ../src/gui_interface.py:1203
+#: ../src/config.py:3837
+#: ../src/gui_interface.py:1232
#, python-format
msgid ""
"Add this certificate to the list of trusted certificates.\n"
@@ -6581,75 +6832,75 @@ msgstr ""
"Отпечаток SHA1 сертификата:\n"
"%s"
-#: ../src/config.py:3866
-#: ../src/config.py:3900
+#: ../src/config.py:3869
+#: ../src/config.py:3903
msgid "An error occurred during account creation"
msgstr "Произошла ошибка при создании учетной записи"
-#: ../src/config.py:3965
+#: ../src/config.py:3968
msgid "Account name is in use"
msgstr "Такое имя учетной записи уже используется"
-#: ../src/config.py:3966
+#: ../src/config.py:3969
msgid "You already have an account using this name."
msgstr "У вас уже есть учетная запись с таким именем."
-#: ../src/config.py:4096
+#: ../src/config.py:4099
msgid "PEP node was not removed"
msgstr "PEP узел не был удален"
-#: ../src/config.py:4097
+#: ../src/config.py:4100
#, python-format
msgid "PEP node %(node)s was not removed: %(message)s"
msgstr "PEP узел %(node)s не был удален: %(message)s"
-#: ../src/config.py:4125
+#: ../src/config.py:4128
#, python-format
msgid "Configure %s"
msgstr "Настроить %s"
-#: ../src/config.py:4141
-#: ../src/plugins/gui.py:73
+#: ../src/config.py:4144
+#: ../src/plugins/gui.py:74
msgid "Active"
msgstr "Активен"
-#: ../src/config.py:4149
+#: ../src/config.py:4152
msgid "Event"
msgstr "Событие"
-#: ../src/config.py:4184
+#: ../src/config.py:4187
msgid "First Message Received"
msgstr "Получено первое сообщение"
-#: ../src/config.py:4185
+#: ../src/config.py:4188
msgid "Next Message Received Focused"
msgstr "Следующее сообщение получено в окне с фокусом"
-#: ../src/config.py:4187
+#: ../src/config.py:4190
msgid "Next Message Received Unfocused"
msgstr "Следующее сообщение получено в окне без фокуса"
-#: ../src/config.py:4188
+#: ../src/config.py:4191
msgid "Contact Connected"
msgstr "Контакт подключился"
-#: ../src/config.py:4189
+#: ../src/config.py:4192
msgid "Contact Disconnected"
msgstr "Контакт отключился"
-#: ../src/config.py:4190
+#: ../src/config.py:4193
msgid "Message Sent"
msgstr "Сообщение отправлено"
-#: ../src/config.py:4191
+#: ../src/config.py:4194
msgid "Group Chat Message Highlight"
msgstr "Вас упомянули в комнате"
-#: ../src/config.py:4192
+#: ../src/config.py:4195
msgid "Group Chat Message Received"
msgstr "Получено сообщение в комнате"
-#: ../src/config.py:4193
+#: ../src/config.py:4196
msgid "GMail Email Received"
msgstr "Получено письмо на Gmail"
@@ -6708,7 +6959,7 @@ msgid "Open as _Link"
msgstr "Открыть как _ссылку"
#. %i is day in year (1-365)
-#: ../src/conversation_textview.py:1319
+#: ../src/conversation_textview.py:1323
#, python-format
msgid "Yesterday"
msgid_plural "%(nb_days)i days ago"
@@ -6717,8 +6968,8 @@ msgstr[1] "%(nb_days)i дня назад"
msgstr[2] "%(nb_days)i дней назад"
#. if we have subject, show it too!
-#: ../src/conversation_textview.py:1368
-#: ../src/history_window.py:480
+#: ../src/conversation_textview.py:1372
+#: ../src/history_window.py:481
#, python-format
msgid "Subject: %s\n"
msgstr "Тема: %s\n"
@@ -6844,7 +7095,7 @@ msgstr "Заполните данные о контакте, который вы
#: ../src/dialogs.py:1074
#: ../src/dialogs.py:1080
#: ../src/dialogs.py:1085
-#: ../src/dialogs.py:3626
+#: ../src/dialogs.py:3631
msgid "Invalid User ID"
msgstr "Неверный ID пользователя"
@@ -6925,434 +7176,434 @@ msgstr "_Продолжить"
msgid "Re_place"
msgstr "_Заменить"
-#: ../src/dialogs.py:2076
-#: ../src/dialogs.py:2475
+#: ../src/dialogs.py:2079
+#: ../src/dialogs.py:2480
msgid "The nickname has not allowed characters."
msgstr "В Jabber ID комнаты или сервера содержатся недопустимые символы."
-#: ../src/dialogs.py:2194
+#: ../src/dialogs.py:2198
#, python-format
msgid "Subscription request for account %(account)s from %(jid)s"
msgstr "Запрос на подписку для учетной записи %(account)s от %(jid)s"
-#: ../src/dialogs.py:2197
+#: ../src/dialogs.py:2201
#, python-format
msgid "Subscription request from %s"
msgstr "Запрос на подписку от %s"
-#: ../src/dialogs.py:2281
-#: ../src/gui_interface.py:1930
+#: ../src/dialogs.py:2285
+#: ../src/gui_interface.py:1959
#, python-format
msgid "You are already in group chat %s"
msgstr "Вы уже в комнате %s"
-#: ../src/dialogs.py:2287
+#: ../src/dialogs.py:2291
msgid "You can not join a group chat unless you are connected."
msgstr "Вы не можете зайти в комнату без подключения."
-#: ../src/dialogs.py:2331
+#: ../src/dialogs.py:2335
#, python-format
msgid "Join Group Chat with account %s"
msgstr "Войти в комнату с учетной записи %s"
-#: ../src/dialogs.py:2462
+#: ../src/dialogs.py:2466
msgid "Invalid Account"
msgstr "Неверное имя учетной записи"
-#: ../src/dialogs.py:2463
+#: ../src/dialogs.py:2467
msgid "You have to choose an account from which you want to join the groupchat."
msgstr "Выберите учетную запись, с которой вы хотите войти в комнату."
-#: ../src/dialogs.py:2474
+#: ../src/dialogs.py:2479
msgid "Invalid Nickname"
msgstr "Неверное имя пользователя"
-#: ../src/dialogs.py:2479
-#: ../src/dialogs.py:2485
+#: ../src/dialogs.py:2484
+#: ../src/dialogs.py:2490
#: ../src/groupchat_control.py:2092
msgid "Invalid group chat Jabber ID"
msgstr "Неверное имя комнаты"
-#: ../src/dialogs.py:2480
+#: ../src/dialogs.py:2485
msgid "Please enter the group chat Jabber ID as room@server."
msgstr "В Jabber ID комнаты или сервера содержатся недопустимые символы."
-#: ../src/dialogs.py:2486
+#: ../src/dialogs.py:2491
#: ../src/groupchat_control.py:2093
msgid "The group chat Jabber ID has not allowed characters."
msgstr "В Jabber ID комнаты или сервера содержатся недопустимые символы."
-#: ../src/dialogs.py:2491
-#: ../src/gui_interface.py:1912
+#: ../src/dialogs.py:2496
+#: ../src/gui_interface.py:1941
msgid "This is not a group chat"
msgstr "Это не комната"
-#: ../src/dialogs.py:2492
-#: ../src/gui_interface.py:1913
+#: ../src/dialogs.py:2497
+#: ../src/gui_interface.py:1942
#, python-format
msgid "%s is not the name of a group chat."
msgstr "%s не является именем комнаты."
-#: ../src/dialogs.py:2524
+#: ../src/dialogs.py:2529
msgid "Without a connection, you can not synchronise your contacts."
msgstr "Чтобы объединить контакты, необходимо подключиться к серверу."
-#: ../src/dialogs.py:2537
+#: ../src/dialogs.py:2542
msgid "Server"
msgstr "Сервер"
-#: ../src/dialogs.py:2573
+#: ../src/dialogs.py:2578
msgid "This account is not connected to the server"
msgstr "Учётная запись не подключена к серверу"
-#: ../src/dialogs.py:2574
+#: ../src/dialogs.py:2579
msgid "You cannot synchronize with an account unless it is connected."
msgstr "Вы не можете синхронизировать учетную запись если она не подключена."
-#: ../src/dialogs.py:2599
+#: ../src/dialogs.py:2604
msgid "Synchronise"
msgstr "Синхронизировать"
-#: ../src/dialogs.py:2660
+#: ../src/dialogs.py:2665
#, python-format
msgid "Start Chat with account %s"
msgstr "Начать чат с учетной записью %s"
-#: ../src/dialogs.py:2662
+#: ../src/dialogs.py:2667
msgid "Start Chat"
msgstr "Начать чат"
-#: ../src/dialogs.py:2663
+#: ../src/dialogs.py:2668
msgid ""
"Fill in the nickname or the Jabber ID of the contact you would like\n"
"to send a chat message to:"
msgstr "Введите ник или ID пользователя, которому вы хотите отправить сообщение:"
#. if offline or connecting
-#: ../src/dialogs.py:2690
-#: ../src/dialogs.py:3071
-#: ../src/dialogs.py:3306
+#: ../src/dialogs.py:2695
+#: ../src/dialogs.py:3076
+#: ../src/dialogs.py:3311
msgid "Connection not available"
msgstr "Соединение недоступно"
-#: ../src/dialogs.py:2691
-#: ../src/dialogs.py:3072
-#: ../src/dialogs.py:3307
+#: ../src/dialogs.py:2696
+#: ../src/dialogs.py:3077
+#: ../src/dialogs.py:3312
#, python-format
msgid "Please make sure you are connected with \"%s\"."
msgstr "Удостоверьтесь, что вы подключены к «%s»."
-#: ../src/dialogs.py:2700
-#: ../src/dialogs.py:2703
+#: ../src/dialogs.py:2705
+#: ../src/dialogs.py:2708
msgid "Invalid JID"
msgstr "Неверный JID"
-#: ../src/dialogs.py:2703
+#: ../src/dialogs.py:2708
#, python-format
msgid "Unable to parse \"%s\"."
msgstr "Не понимаю адреса «%s»."
-#: ../src/dialogs.py:2712
+#: ../src/dialogs.py:2717
msgid "Without a connection, you can not change your password."
msgstr "Чтобы изменить пароль, необходимо подключиться к серверу."
-#: ../src/dialogs.py:2731
+#: ../src/dialogs.py:2736
msgid "Invalid password"
msgstr "Неверный пароль"
-#: ../src/dialogs.py:2731
+#: ../src/dialogs.py:2736
msgid "You must enter a password."
msgstr "Необходимо ввести пароль."
-#: ../src/dialogs.py:2735
+#: ../src/dialogs.py:2740
msgid "Passwords do not match"
msgstr "Пароли не совпадают"
-#: ../src/dialogs.py:2736
+#: ../src/dialogs.py:2741
msgid "The passwords typed in both fields must be identical."
msgstr "Пароли, введенные в оба поля, должны быть одинаковыми."
-#: ../src/dialogs.py:2778
-#: ../src/gui_interface.py:813
+#: ../src/dialogs.py:2783
+#: ../src/gui_interface.py:842
#: ../src/notify.py:273
msgid "New E-mail"
msgstr "Новое письмо"
-#: ../src/dialogs.py:2780
-#: ../src/gui_interface.py:868
+#: ../src/dialogs.py:2785
+#: ../src/gui_interface.py:897
#: ../src/notify.py:266
msgid "File Transfer Request"
msgstr "Запрос передачи"
-#: ../src/dialogs.py:2782
-#: ../src/gui_interface.py:775
-#: ../src/gui_interface.py:839
+#: ../src/dialogs.py:2787
+#: ../src/gui_interface.py:804
+#: ../src/gui_interface.py:868
#: ../src/notify.py:268
msgid "File Transfer Error"
msgstr "Ошибка передачи"
-#: ../src/dialogs.py:2784
-#: ../src/gui_interface.py:914
-#: ../src/gui_interface.py:937
-#: ../src/gui_interface.py:954
+#: ../src/dialogs.py:2789
+#: ../src/gui_interface.py:943
+#: ../src/gui_interface.py:966
+#: ../src/gui_interface.py:983
#: ../src/notify.py:270
msgid "File Transfer Completed"
msgstr "Передача файла завершена"
-#: ../src/dialogs.py:2785
-#: ../src/gui_interface.py:917
+#: ../src/dialogs.py:2790
+#: ../src/gui_interface.py:946
#: ../src/notify.py:271
msgid "File Transfer Stopped"
msgstr "Передача остановлена"
-#: ../src/dialogs.py:2787
-#: ../src/gui_interface.py:609
+#: ../src/dialogs.py:2792
+#: ../src/gui_interface.py:614
#: ../src/notify.py:275
msgid "Groupchat Invitation"
msgstr "Приглашение в комнату"
-#: ../src/dialogs.py:2990
+#: ../src/dialogs.py:2995
#, python-format
msgid "Single Message using account %s"
msgstr "Новое сообщение с учетной записи %s"
-#: ../src/dialogs.py:2992
+#: ../src/dialogs.py:2997
#, python-format
msgid "Single Message in account %s"
msgstr "Новое сообщение для учетной записи %s"
-#: ../src/dialogs.py:2994
+#: ../src/dialogs.py:2999
msgid "Single Message"
msgstr "Сообщение"
#. prepare UI for Sending
-#: ../src/dialogs.py:2997
+#: ../src/dialogs.py:3002
#, python-format
msgid "Send %s"
msgstr "Отправить %s"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3020
+#: ../src/dialogs.py:3025
#, python-format
msgid "Received %s"
msgstr "Получено %s"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3043
+#: ../src/dialogs.py:3048
#, python-format
msgid "Form %s"
msgstr "От %s"
#. we create a new blank window to send and we preset RE: and to jid
-#: ../src/dialogs.py:3127
+#: ../src/dialogs.py:3132
#, python-format
msgid "RE: %s"
msgstr "RE: %s"
-#: ../src/dialogs.py:3128
+#: ../src/dialogs.py:3133
#, python-format
msgid "%s wrote:\n"
msgstr "%s написал:\n"
-#: ../src/dialogs.py:3187
+#: ../src/dialogs.py:3192
#, python-format
msgid "XML Console for %s"
msgstr "Консоль XML для %s"
-#: ../src/dialogs.py:3189
+#: ../src/dialogs.py:3194
msgid "XML Console"
msgstr "Консоль XML"
#. Action that can be done with an incoming list of contacts
-#: ../src/dialogs.py:3336
+#: ../src/dialogs.py:3341
msgid "add"
msgstr "добавить"
-#: ../src/dialogs.py:3336
+#: ../src/dialogs.py:3341
msgid "modify"
msgstr "изменить"
-#: ../src/dialogs.py:3337
+#: ../src/dialogs.py:3342
msgid "remove"
msgstr "удалить"
-#: ../src/dialogs.py:3366
+#: ../src/dialogs.py:3371
#, python-format
msgid "<b>%(jid)s</b> would like you to <b>%(action)s</b> some contacts in your roster."
msgstr "<b>%(jid)s</b> хочет <b>%(action)s</b> несколько контактов в ваш список контактов."
#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3384
-#: ../src/dialogs.py:3459
+#: ../src/dialogs.py:3389
+#: ../src/dialogs.py:3464
msgid "Modify"
msgstr "Изменить"
-#: ../src/dialogs.py:3390
+#: ../src/dialogs.py:3395
msgid "Jabber ID"
msgstr "Jabber ID"
-#: ../src/dialogs.py:3396
+#: ../src/dialogs.py:3401
msgid "Groups"
msgstr "Группы"
#. it is selected
#. remote_jid = model[iter_][1].decode('utf-8')
-#: ../src/dialogs.py:3504
+#: ../src/dialogs.py:3509
#, python-format
msgid "%s suggested me to add you in my roster."
msgstr "%s предложил мне добавить вас в мой список контактов."
-#: ../src/dialogs.py:3518
+#: ../src/dialogs.py:3523
#, python-format
msgid "Added %s contacts"
msgstr "Добавлены контакты %s"
-#: ../src/dialogs.py:3555
+#: ../src/dialogs.py:3560
#, python-format
msgid "Removed %s contacts"
msgstr "Удалены контакты %s"
-#: ../src/dialogs.py:3595
-#: ../src/dialogs.py:3772
+#: ../src/dialogs.py:3600
+#: ../src/dialogs.py:3777
#, python-format
msgid "Archiving Preferences for %s"
msgstr "Настройки архивации для %s"
-#: ../src/dialogs.py:3635
+#: ../src/dialogs.py:3640
#, fuzzy
msgid "Invalid expire value"
msgstr "Неверное имя сервера"
-#: ../src/dialogs.py:3636
+#: ../src/dialogs.py:3641
msgid "Expire must be a valid positive integer."
msgstr ""
-#: ../src/dialogs.py:3683
+#: ../src/dialogs.py:3688
msgid "There is an error with the form"
msgstr ""
-#: ../src/dialogs.py:3903
+#: ../src/dialogs.py:3908
#, fuzzy
msgid "There is an error"
msgstr "Сервис ответил ошибкой."
-#: ../src/dialogs.py:3971
+#: ../src/dialogs.py:3976
#, python-format
msgid "Privacy List <b><i>%s</i></b>"
msgstr "Список доступа <b><i>%s</i></b>"
-#: ../src/dialogs.py:3975
+#: ../src/dialogs.py:3980
#, python-format
msgid "Privacy List for %s"
msgstr "Список доступа для %s"
-#: ../src/dialogs.py:4042
+#: ../src/dialogs.py:4047
#, python-format
msgid "Order: %(order)s, action: %(action)s, type: %(type)s, value: %(value)s"
msgstr "Номер: %(order)s, действие: %(action)s, тип: %(type)s, значение: %(value)s"
-#: ../src/dialogs.py:4047
+#: ../src/dialogs.py:4052
#, python-format
msgid "Order: %(order)s, action: %(action)s"
msgstr "Номер: %(order)s, действие: %(action)s"
-#: ../src/dialogs.py:4098
+#: ../src/dialogs.py:4103
msgid "<b>Edit a rule</b>"
msgstr "<b>Изменить правило</b>"
-#: ../src/dialogs.py:4209
+#: ../src/dialogs.py:4214
msgid "<b>Add a rule</b>"
msgstr "<b>Добавить правило</b>"
-#: ../src/dialogs.py:4308
+#: ../src/dialogs.py:4313
#, python-format
msgid "Privacy Lists for %s"
msgstr "Списки доступа для %s"
-#: ../src/dialogs.py:4310
+#: ../src/dialogs.py:4315
msgid "Privacy Lists"
msgstr "Списки доступа"
-#: ../src/dialogs.py:4399
+#: ../src/dialogs.py:4404
msgid "Invalid List Name"
msgstr "Недопустимое имя списка"
-#: ../src/dialogs.py:4400
+#: ../src/dialogs.py:4405
msgid "You must enter a name to create a privacy list."
msgstr "Необходимо ввести имя для нового списка доступа."
-#: ../src/dialogs.py:4432
+#: ../src/dialogs.py:4437
msgid "You are invited to a groupchat"
msgstr "Вы приглашены в конференцию"
-#: ../src/dialogs.py:4435
+#: ../src/dialogs.py:4440
msgid "$Contact has invited you to join a discussion"
msgstr "$Contact приглашает вас присоединиться к обсуждению."
-#: ../src/dialogs.py:4437
+#: ../src/dialogs.py:4442
#, python-format
msgid "$Contact has invited you to group chat %(room_jid)s"
msgstr "$Contact приглашает вас в комнату %(room_jid)s."
-#: ../src/dialogs.py:4445
+#: ../src/dialogs.py:4450
#, python-format
msgid "Comment: %s"
msgstr "Комментарий: %s"
-#: ../src/dialogs.py:4447
+#: ../src/dialogs.py:4452
msgid "Do you want to accept the invitation?"
msgstr "Вы принимаете приглашение?"
-#: ../src/dialogs.py:4509
+#: ../src/dialogs.py:4514
msgid "Choose Client Cert #PCKS12"
msgstr "Выберите сертификат владельца #PCKS12"
-#: ../src/dialogs.py:4519
-#: ../src/dialogs.py:4561
-#: ../src/dialogs.py:4617
-#: ../src/dialogs.py:4705
+#: ../src/dialogs.py:4524
+#: ../src/dialogs.py:4566
+#: ../src/dialogs.py:4622
+#: ../src/dialogs.py:4710
msgid "All files"
msgstr "Все файлы"
-#: ../src/dialogs.py:4524
+#: ../src/dialogs.py:4529
msgid "PKCS12 Files"
msgstr "Файлы PKCS12"
-#: ../src/dialogs.py:4551
+#: ../src/dialogs.py:4556
msgid "Choose Sound"
msgstr "Выберите звуковой файл"
-#: ../src/dialogs.py:4566
+#: ../src/dialogs.py:4571
msgid "Wav Sounds"
msgstr "В формате Wav"
-#: ../src/dialogs.py:4604
+#: ../src/dialogs.py:4609
msgid "Choose Image"
msgstr "Выбрать картинку"
-#: ../src/dialogs.py:4622
+#: ../src/dialogs.py:4627
msgid "Images"
msgstr "Картинки"
-#: ../src/dialogs.py:4692
+#: ../src/dialogs.py:4697
msgid "Choose Archive"
msgstr "Выбрать Архив"
-#: ../src/dialogs.py:4710
+#: ../src/dialogs.py:4715
msgid "Zip files"
msgstr "Zip файлы"
-#: ../src/dialogs.py:4736
+#: ../src/dialogs.py:4741
#, python-format
msgid "When %s becomes:"
msgstr "Когда %s происходит:"
-#: ../src/dialogs.py:4738
+#: ../src/dialogs.py:4743
#, python-format
msgid "Adding Special Notification for %s"
msgstr "Добавление специального уведомления для %s"
-#: ../src/dialogs.py:4958
+#: ../src/dialogs.py:4963
#, python-format
msgid ""
"Your chat session with <b>%(jid)s</b> is encrypted.\n"
@@ -7363,38 +7614,38 @@ msgstr ""
"\n"
"Short Authentication String данного сеанса <b>%(sas)s</b>."
-#: ../src/dialogs.py:4961
+#: ../src/dialogs.py:4966
msgid "You have already verified this contact's identity."
msgstr "Вы уже удостоверили личность этого контакта."
-#: ../src/dialogs.py:4967
-#: ../src/dialogs.py:5051
+#: ../src/dialogs.py:4972
+#: ../src/dialogs.py:5056
msgid "Contact's identity verified"
msgstr "Личность контакта удостоверена"
-#: ../src/dialogs.py:4973
+#: ../src/dialogs.py:4978
msgid "Verify again..."
msgstr "Удостоверить снова..."
-#: ../src/dialogs.py:4978
+#: ../src/dialogs.py:4983
msgid "To be certain that <b>only</b> the expected person can read your messages or send you messages, you need to verify their identity by clicking the button below."
msgstr "Чтобы быть уверенным, что <b>только</b> нужный человек может прочитать ваши сообщения или послать сообщения вам, вы должны удостоверить личность собеседника, нажав кнопку, расположенную ниже."
-#: ../src/dialogs.py:4981
-#: ../src/dialogs.py:5032
-#: ../src/dialogs.py:5045
+#: ../src/dialogs.py:4986
+#: ../src/dialogs.py:5037
+#: ../src/dialogs.py:5050
msgid "Contact's identity NOT verified"
msgstr "Личность контакта НЕ удостоверена"
-#: ../src/dialogs.py:4986
+#: ../src/dialogs.py:4991
msgid "Verify..."
msgstr "Удостоверить..."
-#: ../src/dialogs.py:4997
+#: ../src/dialogs.py:5002
msgid "Have you verified the contact's identity?"
msgstr "Вы удостоверили личность удаленного контакта?"
-#: ../src/dialogs.py:4998
+#: ../src/dialogs.py:5003
#, python-format
msgid ""
"To prevent talking to an unknown person, you should speak to <b>%(jid)s</b> directly (in person or on the phone) and verify that they see the same Short Authentication String (SAS) as you.\n"
@@ -7405,50 +7656,50 @@ msgstr ""
"\n"
"Short Authentication String этого сеанса <b>%(sas)s</b>"
-#: ../src/dialogs.py:4999
+#: ../src/dialogs.py:5004
msgid "Did you talk to the remote contact and verify the SAS?"
msgstr "Вы переговорили с удаленным контактом и удостоверили SAS?"
-#: ../src/dialogs.py:5033
+#: ../src/dialogs.py:5038
#, python-format
msgid "The contact's key (%s) <b>does not match</b> the key assigned in Gajim."
msgstr "Ключ (%s) контакта <b>не соответствует</b> ключу, присвоенному в Gajim."
-#: ../src/dialogs.py:5039
+#: ../src/dialogs.py:5044
msgid "No GPG key is assigned to this contact. So you cannot encrypt messages."
msgstr "Этому контакту не присвоен ключ GPG, поэтому вы не можете зашифровать сообщения."
-#: ../src/dialogs.py:5046
+#: ../src/dialogs.py:5051
msgid "GPG key is assigned to this contact, but <b>you do not trust his key</b>, so message <b>cannot</b> be encrypted. Use your GPG client to trust this key."
msgstr "Этому контакту присвоен ключ GPG, но <b>вы не доверяете этому ключу</b>. Таким образом, сообщения <b>не могут быть</b> зашифрованы. Воспользуйтесь вашим GPG клиентом для того, чтобы выставить доверие данному ключу"
-#: ../src/dialogs.py:5052
+#: ../src/dialogs.py:5057
msgid "GPG Key is assigned to this contact, and you trust his key, so messages will be encrypted."
msgstr "Этому контакту присвоен ключ GPG, и вы доверяете этому ключу. Таким образом, сообщения будут зашифрованы."
-#: ../src/dialogs.py:5117
+#: ../src/dialogs.py:5122
msgid "an audio and video"
msgstr "аудио и видео"
-#: ../src/dialogs.py:5119
+#: ../src/dialogs.py:5124
msgid "an audio"
msgstr "аудио"
-#: ../src/dialogs.py:5121
+#: ../src/dialogs.py:5126
msgid "a video"
msgstr "видео"
-#: ../src/dialogs.py:5125
+#: ../src/dialogs.py:5130
#, python-format
msgid "%(contact)s wants to start %(type)s session with you. Do you want to answer the call?"
msgstr "%(contact)s хочет начать %(type)s сеанс с вами. Вы хотите ответить?"
-#: ../src/dialogs.py:5193
+#: ../src/dialogs.py:5198
#, python-format
msgid "Certificate for account %s"
msgstr "Сертификат учетной записи %s"
-#: ../src/dialogs.py:5193
+#: ../src/dialogs.py:5198
#, python-format
msgid ""
"<b>Issued to:</b>\n"
@@ -7470,8 +7721,8 @@ msgid ""
"SHA1 Fingerprint: %(sha1)s"
msgstr ""
-#: ../src/dialogs.py:5227
-#: ../src/dialogs.py:5244
+#: ../src/dialogs.py:5232
+#: ../src/dialogs.py:5249
msgid "View cert..."
msgstr ""
@@ -7562,23 +7813,23 @@ msgid "Id"
msgstr "ID"
#: ../src/disco.py:1835
-#: ../src/gui_interface.py:2448
+#: ../src/gui_interface.py:2477
msgid "Bookmark already set"
msgstr "Закладка уже установлена"
#: ../src/disco.py:1836
-#: ../src/gui_interface.py:2449
+#: ../src/gui_interface.py:2478
#, python-format
msgid "Group Chat \"%s\" is already in your bookmarks."
msgstr "Комната «%s» уже есть в ваших закладках."
#: ../src/disco.py:1845
-#: ../src/gui_interface.py:2463
+#: ../src/gui_interface.py:2492
msgid "Bookmark has been added successfully"
msgstr "Закладка успешно добавлена"
#: ../src/disco.py:1846
-#: ../src/gui_interface.py:2464
+#: ../src/gui_interface.py:2493
msgid "You can manage your bookmarks via Actions menu in your roster."
msgstr "Вы можете управлять закладками через меню «Действия» в ростере."
@@ -7612,8 +7863,8 @@ msgstr "Библиотека используется для подтвержд
#: ../src/features_window.py:52
#: ../src/features_window.py:53
-msgid "Requires python-pyopenssl."
-msgstr "Требует python-pyopenssl."
+msgid "Requires python-pyopenssl > 0.12 and pyasn1."
+msgstr "Требует python-pyopenssl > 0.12 и pyasn1."
#: ../src/features_window.py:54
msgid "Bonjour / Zeroconf"
@@ -7628,8 +7879,8 @@ msgid "Requires python-avahi."
msgstr "Требует python-avahi."
#: ../src/features_window.py:57
-msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
-msgstr "Требует pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+msgid "Requires pybonjour and bonjour SDK running (http://developer.apple.com/opensource/)."
+msgstr ""
#: ../src/features_window.py:58
msgid "Command line"
@@ -7647,7 +7898,6 @@ msgstr "Требует python-dbus."
#: ../src/features_window.py:69
#: ../src/features_window.py:73
#: ../src/features_window.py:77
-#: ../src/features_window.py:85
#: ../src/features_window.py:89
#: ../src/features_window.py:109
#: ../src/features_window.py:113
@@ -7735,6 +7985,10 @@ msgstr "Проверка орфографии набираемых сообще
msgid "Requires libgtkspell."
msgstr "Требует библиотеку libgtkspell."
+#: ../src/features_window.py:85
+msgid "Requires libgtkspell and libenchant."
+msgstr "Требует libgtkspell и libenchant."
+
#: ../src/features_window.py:86
msgid "Notification"
msgstr "Уведомления"
@@ -7884,7 +8138,7 @@ msgstr "Отправитель: %s"
#: ../src/filetransfers_window.py:191
#: ../src/filetransfers_window.py:637
-#: ../src/tooltips.py:742
+#: ../src/tooltips.py:743
msgid "Recipient: "
msgstr "Получатель:"
@@ -7908,7 +8162,7 @@ msgid "Choose File to Send..."
msgstr "Выбрать файл для отправки..."
#: ../src/filetransfers_window.py:284
-#: ../src/tooltips.py:780
+#: ../src/tooltips.py:781
msgid "Description: "
msgstr "Описание: "
@@ -8009,12 +8263,12 @@ msgid "It is not possible to send empty files"
msgstr "Нельзя отсылать пустые файлы"
#: ../src/filetransfers_window.py:633
-#: ../src/tooltips.py:732
+#: ../src/tooltips.py:733
msgid "Name: "
msgstr "Имя: "
#: ../src/filetransfers_window.py:635
-#: ../src/tooltips.py:736
+#: ../src/tooltips.py:737
msgid "Sender: "
msgstr "Отправитель:"
@@ -8022,46 +8276,46 @@ msgstr "Отправитель:"
msgid "Pause"
msgstr "Пауза"
-#: ../src/gajim.py:192
+#: ../src/gajim.py:194
msgid "Gajim needs X server to run. Quiting..."
msgstr "Gajim для запуска требуется X-сервер. Выход..."
-#: ../src/gajim.py:194
+#: ../src/gajim.py:196
#, python-format
msgid "importing PyGTK failed: %s"
msgstr "ошибка импортирования PyGTK: %s"
-#: ../src/gajim.py:236
+#: ../src/gajim.py:237
msgid "Gajim needs PyGTK 2.16 or above"
msgstr "Gajim требуется PyGTK 2.16 или выше"
-#: ../src/gajim.py:237
+#: ../src/gajim.py:238
msgid "Gajim needs PyGTK 2.16 or above to run. Quiting..."
msgstr "Gajim для запуска требуется PyGTK 2.16 или выше. Выход..."
-#: ../src/gajim.py:239
+#: ../src/gajim.py:240
msgid "Gajim needs GTK 2.16 or above"
msgstr "Gajim требуется GTK 2.16 или выше"
-#: ../src/gajim.py:240
+#: ../src/gajim.py:241
msgid "Gajim needs GTK 2.16 or above to run. Quiting..."
msgstr "Gajim для запуска требуется GTK 2.16 или выше. Выход..."
-#: ../src/gajim.py:249
+#: ../src/gajim.py:250
msgid "Gajim needs pywin32 to run"
msgstr "Gajim для запуска требуется pywin32"
-#: ../src/gajim.py:250
+#: ../src/gajim.py:251
#, python-format
msgid "Please make sure that Pywin32 is installed on your system. You can get it at %s"
msgstr "Удостоверьтесь, что в вашей системе установлен Pywin32. Вы можете получить его на сайте: %s"
#. set the icon to all newly opened wind
-#: ../src/gajim.py:366
+#: ../src/gajim.py:367
msgid "Gajim is already running"
msgstr "Gajim уже запущен"
-#: ../src/gajim.py:367
+#: ../src/gajim.py:368
msgid ""
"Another instance of Gajim seems to be running\n"
"Run anyway?"
@@ -8680,14 +8934,14 @@ msgid "If you close this window, you will be disconnected from this group chat."
msgstr "Если вы закроете это окно, то вы выйдете из этой комнаты."
#: ../src/groupchat_control.py:2025
-#: ../src/gui_interface.py:668
-#: ../src/gui_interface.py:1282
-#: ../src/gui_interface.py:1322
-#: ../src/gui_interface.py:1363
+#: ../src/gui_interface.py:673
+#: ../src/gui_interface.py:1311
+#: ../src/gui_interface.py:1351
+#: ../src/gui_interface.py:1392
#: ../src/message_window.py:224
-#: ../src/roster_window.py:2946
-#: ../src/roster_window.py:3621
-#: ../src/roster_window.py:4390
+#: ../src/roster_window.py:2989
+#: ../src/roster_window.py:3667
+#: ../src/roster_window.py:4473
msgid "_Do not ask me again"
msgstr "Не _спрашивать меня снова"
@@ -8759,13 +9013,6 @@ msgstr "_Сообщить об ошибке"
msgid "Details"
msgstr "Детали"
-#. we talk about file
-#: ../src/gtkgui_helpers.py:203
-#: ../src/gtkgui_helpers.py:219
-#, python-format
-msgid "Error: cannot open %s for reading"
-msgstr "Ошибка: не могу открыть %s для чтения"
-
#: ../src/gtkgui_helpers.py:348
msgid "Error reading file:"
msgstr "Ошибка чтения файла:"
@@ -8809,17 +9056,17 @@ msgstr "Сохранить изображение как..."
#. we are banned
#. group chat does not exist
-#: ../src/gui_interface.py:126
-#: ../src/gui_interface.py:290
-#: ../src/gui_interface.py:299
-#: ../src/gui_interface.py:305
-#: ../src/gui_interface.py:308
-#: ../src/gui_interface.py:311
+#: ../src/gui_interface.py:131
+#: ../src/gui_interface.py:295
+#: ../src/gui_interface.py:304
+#: ../src/gui_interface.py:310
+#: ../src/gui_interface.py:313
#: ../src/gui_interface.py:316
+#: ../src/gui_interface.py:321
msgid "Unable to join group chat"
msgstr "Не получается войти в комнату"
-#: ../src/gui_interface.py:127
+#: ../src/gui_interface.py:132
#, python-format
msgid ""
"Your desired nickname in group chat %s is in use or registered by another occupant.\n"
@@ -8828,89 +9075,89 @@ msgstr ""
"Тот ник, что вы ввели в комнате %s уже используется или зарегистрирован другим пользователем.\n"
"Укажите другой ник:"
-#: ../src/gui_interface.py:130
+#: ../src/gui_interface.py:135
msgid "Always use this nickname when there is a conflict"
msgstr "Всегда использовать этот ник в случае конфликта"
-#: ../src/gui_interface.py:147
+#: ../src/gui_interface.py:152
msgid "Do you accept this request?"
msgstr "Вы принимаете этот запрос?"
-#: ../src/gui_interface.py:149
+#: ../src/gui_interface.py:154
#, python-format
msgid "Do you accept this request on account %s?"
msgstr "Вы принимаете запрос %s?"
-#: ../src/gui_interface.py:152
+#: ../src/gui_interface.py:157
#, python-format
msgid "HTTP (%(method)s) Authorization for %(url)s (id: %(id)s)"
msgstr "HTTP (%(method)s) Авторизация для %(url)s (id: %(id)s)"
-#: ../src/gui_interface.py:195
+#: ../src/gui_interface.py:200
#: ../src/notify.py:279
msgid "Connection Failed"
msgstr "Соединение разорвалось"
-#: ../src/gui_interface.py:279
+#: ../src/gui_interface.py:284
#, python-format
msgid "A Password is required to join the room %s. Please type it."
msgstr "Чтобы войти в комнату %s, нужен пароль."
-#: ../src/gui_interface.py:291
+#: ../src/gui_interface.py:296
#, python-format
msgid "Maximum number of users for <b>%s</b> has been reached"
msgstr "Было достигнуто максимальное количество пользователей <b>%s</b>"
-#: ../src/gui_interface.py:300
+#: ../src/gui_interface.py:305
#, python-format
msgid "You are banned from group chat <b>%s</b>."
msgstr "Вам запрещено входить в комнату <b>%s</b>."
-#: ../src/gui_interface.py:306
+#: ../src/gui_interface.py:311
#, python-format
msgid "Group chat <b>%s</b> does not exist."
msgstr "Комнаты <b>%s</b> не существует."
-#: ../src/gui_interface.py:309
+#: ../src/gui_interface.py:314
msgid "Group chat creation is restricted."
msgstr "Создание комнат запрещено."
-#: ../src/gui_interface.py:312
+#: ../src/gui_interface.py:317
#, python-format
msgid "Your registered nickname must be used in group chat <b>%s</b>."
msgstr "Необходимо использовать ваш зарегистрированный ник в комнате <b>%s</b>."
-#: ../src/gui_interface.py:317
+#: ../src/gui_interface.py:322
#, python-format
msgid "You are not in the members list in groupchat %s."
msgstr "Вас нет в списке членов комнаты %s."
-#: ../src/gui_interface.py:400
-#: ../src/gui_interface.py:404
+#: ../src/gui_interface.py:405
+#: ../src/gui_interface.py:409
#, python-format
msgid "Error %(code)s: %(msg)s"
msgstr "Ошибка %(code)s: %(msg)s"
-#: ../src/gui_interface.py:456
+#: ../src/gui_interface.py:461
#: ../src/notify.py:281
msgid "Subscription request"
msgstr "Запрос подписки"
-#: ../src/gui_interface.py:481
+#: ../src/gui_interface.py:486
msgid "Authorization accepted"
msgstr "Авторизация принята"
-#: ../src/gui_interface.py:482
+#: ../src/gui_interface.py:487
#, python-format
msgid "The contact \"%s\" has authorized you to see his or her status."
msgstr "Контакт «%s» авторизовал вас, теперь вы можете видеть его статус."
-#: ../src/gui_interface.py:490
+#: ../src/gui_interface.py:495
#, python-format
msgid "Contact \"%s\" removed subscription from you"
msgstr "Контакт «%s» отозвал подписку с вами"
-#: ../src/gui_interface.py:491
+#: ../src/gui_interface.py:496
msgid ""
"You will always see him or her as offline.\n"
"Do you want to remove him or her from your contact list?"
@@ -8918,61 +9165,69 @@ msgstr ""
"Вы всегда будете видеть его или её как отключенными.\n"
"Удалить его или её из контакт-листа?"
-#: ../src/gui_interface.py:512
+#: ../src/gui_interface.py:517
#: ../src/notify.py:283
msgid "Unsubscribed"
msgstr "От подписки отказался"
-#: ../src/gui_interface.py:523
+#: ../src/gui_interface.py:528
#, python-format
msgid "Contact with \"%s\" cannot be established"
msgstr "Связь с «%s» не может быть установлена"
-#: ../src/gui_interface.py:621
+#: ../src/gui_interface.py:626
msgid "You configured Gajim to use GPG agent, but there is no GPG agent running or it returned a wrong passphrase.\n"
msgstr "Gajim настроен на использование GPG агента, но GPG агент не запущен или он возвратил неверный пароль.\n"
-#: ../src/gui_interface.py:623
-#: ../src/gui_interface.py:631
+#: ../src/gui_interface.py:628
+#: ../src/gui_interface.py:636
msgid "You are currently connected without your OpenPGP key."
msgstr "Вы сейчас соединены без ключа OpenPGP."
-#: ../src/gui_interface.py:625
+#: ../src/gui_interface.py:630
msgid "Your passphrase is incorrect"
msgstr "Ваша парольная фраза неверна"
-#: ../src/gui_interface.py:630
+#: ../src/gui_interface.py:635
msgid "OpenGPG Passphrase Incorrect"
msgstr "Парольная фраза OpenGPG неверна"
-#: ../src/gui_interface.py:643
+#: ../src/gui_interface.py:648
#, fuzzy
msgid "Certificate Passphrase Required"
msgstr "Сертификат просрочен"
-#: ../src/gui_interface.py:644
+#: ../src/gui_interface.py:649
#, fuzzy, python-format
msgid "Enter the passphrase for the certificate for account %s"
msgstr "Введите пароль для ключа %(keyid)s (аккаунт %(account)s)."
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid "GPG key not trusted"
msgstr "Ключ GPG не является доверенным"
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid "The GPG key used to encrypt this chat is not trusted. Do you really want to encrypt this message?"
msgstr "Ключ GPG используемый для шифрования не является доверенным. Вы действительно хотите зашифровать эти сообщения?"
-#: ../src/gui_interface.py:679
+#: ../src/gui_interface.py:684
msgid "Gnome Keyring is installed but not correctly started (environment variable probably not correctly set)"
msgstr "Gnome Keyring установлен, но некорректно запущен (возможно, неверно установлена переменная среды)"
-#: ../src/gui_interface.py:786
+#: ../src/gui_interface.py:722
+msgid "Please copy / paste the refresh token from the website that has just been opened."
+msgstr ""
+
+#: ../src/gui_interface.py:725
+msgid "Oauth2 Credentials"
+msgstr ""
+
+#: ../src/gui_interface.py:815
#, python-format
msgid "New mail on %(gmail_mail_address)s"
msgstr "Новое письмо на %(gmail_mail_address)s"
-#: ../src/gui_interface.py:788
+#: ../src/gui_interface.py:817
#, python-format
msgid "You have %d new mail conversation"
msgid_plural "You have %d new mail conversations"
@@ -8980,7 +9235,7 @@ msgstr[0] "У вас есть %d непрочитанное письмо"
msgstr[1] "У вас есть %d непрочитанных письма"
msgstr[2] "У вас есть %d непрочитанных писем"
-#: ../src/gui_interface.py:801
+#: ../src/gui_interface.py:830
#, python-format
msgid ""
"\n"
@@ -8995,68 +9250,68 @@ msgstr ""
"Тема: %(subject)s\n"
"%(snippet)s"
-#: ../src/gui_interface.py:866
+#: ../src/gui_interface.py:895
#, python-format
msgid "%s wants to send you a file."
msgstr "%s хочет отправить вам файл."
-#: ../src/gui_interface.py:938
+#: ../src/gui_interface.py:967
#, python-format
msgid "You successfully received %(filename)s from %(name)s."
msgstr "Успешно получен файл %(filename)s от %(name)s."
#. ft stopped
-#: ../src/gui_interface.py:942
+#: ../src/gui_interface.py:971
#, python-format
msgid "File transfer of %(filename)s from %(name)s stopped."
msgstr "Передача файла %(filename)s от %(name)s приостановлена."
-#: ../src/gui_interface.py:955
+#: ../src/gui_interface.py:984
#, python-format
msgid "You successfully sent %(filename)s to %(name)s."
msgstr "%(name)s успешно получил(а) отправленный вами файл %(filename)s."
#. ft stopped
-#: ../src/gui_interface.py:959
+#: ../src/gui_interface.py:988
#, python-format
msgid "File transfer of %(filename)s to %(name)s stopped."
msgstr "Передача файла %(filename)s к %(name)s приостановлена."
-#: ../src/gui_interface.py:1034
+#: ../src/gui_interface.py:1063
msgid "Unable to decrypt message"
msgstr "Сообщение не удалось расшифровать"
-#: ../src/gui_interface.py:1046
+#: ../src/gui_interface.py:1075
msgid "Username Conflict"
msgstr "Такое имя уже есть"
-#: ../src/gui_interface.py:1047
+#: ../src/gui_interface.py:1076
msgid "Please type a new username for your local account"
msgstr "Введите новое имя пользователя для локальной учетной записи"
-#: ../src/gui_interface.py:1062
+#: ../src/gui_interface.py:1091
msgid "Resource Conflict"
msgstr "Такое имя уже есть"
-#: ../src/gui_interface.py:1063
+#: ../src/gui_interface.py:1092
msgid "You are already connected to this account with the same resource. Please type a new one"
msgstr "Вы уже подсоединены к этой учетной записи с таким же ресурсом. Введите другой ресурс"
#. TODO: we should use another pixmap ;-)
-#: ../src/gui_interface.py:1108
+#: ../src/gui_interface.py:1137
#, python-format
msgid "%s wants to start a voice chat."
msgstr "%s хочет начать видео сеанс."
-#: ../src/gui_interface.py:1111
+#: ../src/gui_interface.py:1140
msgid "Voice Chat Request"
msgstr "Запрос аудио сеанса"
-#: ../src/gui_interface.py:1198
+#: ../src/gui_interface.py:1227
msgid "Error verifying SSL certificate"
msgstr "Ошибка при проверке SSL сертификата"
-#: ../src/gui_interface.py:1199
+#: ../src/gui_interface.py:1228
#, python-format
msgid ""
"There was an error verifying the SSL certificate of your jabber server: %(error)s\n"
@@ -9065,15 +9320,15 @@ msgstr ""
"Произошла ошибка при проверке сертификата SSL вашего jabber сервера: %(error)s\n"
"Вы всё ещё хотите подключиться к этому серверу?"
-#: ../src/gui_interface.py:1208
+#: ../src/gui_interface.py:1237
msgid "Ignore this error for this certificate."
msgstr "Игнорировать эту ошибку для данного сертификата."
-#: ../src/gui_interface.py:1233
+#: ../src/gui_interface.py:1262
msgid "SSL certificate error"
msgstr "Ошибка SSL сертификата"
-#: ../src/gui_interface.py:1234
+#: ../src/gui_interface.py:1263
#, python-format
msgid ""
"It seems the SSL certificate of account %(account)s has changed or your connection is being hacked.\n"
@@ -9087,13 +9342,13 @@ msgstr ""
"Новый отпечаток: %(new)s\n"
"Вы всё ещё хотите соединиться и обновить отпечаток сертификата?"
-#: ../src/gui_interface.py:1273
-#: ../src/gui_interface.py:1317
-#: ../src/gui_interface.py:1359
+#: ../src/gui_interface.py:1302
+#: ../src/gui_interface.py:1346
+#: ../src/gui_interface.py:1388
msgid "Insecure connection"
msgstr "Небезопасное соединение"
-#: ../src/gui_interface.py:1274
+#: ../src/gui_interface.py:1303
#, python-format
msgid ""
"You are about to connect to the account %(account)s (%(server)s) with an insecure connection. This means all your conversations will be exchanged unencrypted. This type of connection is really discouraged.\n"
@@ -9102,73 +9357,73 @@ msgstr ""
"Вы хотите подключить учетную запись %(account)s (%(server)s) через незащищенное соединение. Вся ваша переписка не будет зашифрована. Этот тип подключения не рекомендуется.\n"
"Вы действительно хотите это сделать?"
-#: ../src/gui_interface.py:1280
-#: ../src/gui_interface.py:1321
-#: ../src/gui_interface.py:1362
+#: ../src/gui_interface.py:1309
+#: ../src/gui_interface.py:1350
+#: ../src/gui_interface.py:1391
msgid "Yes, I really want to connect insecurely"
msgstr "Да, я действительно хочу соединиться небезопасно"
-#: ../src/gui_interface.py:1281
+#: ../src/gui_interface.py:1310
msgid "Gajim will NOT connect unless you check this box"
msgstr ""
-#: ../src/gui_interface.py:1318
+#: ../src/gui_interface.py:1347
msgid "You are about to send your password on an insecure connection. You should install PyOpenSSL to prevent that. Are you sure you want to do that?"
msgstr "Вы хотите отправить пароль через небезопасное соединение. Вы уверены? (Установите PyOpenSSL, чтобы этого не происходило.)"
-#: ../src/gui_interface.py:1360
+#: ../src/gui_interface.py:1389
msgid "You are about to send your password unencrypted on an insecure connection. Are you sure you want to do that?"
msgstr "Вы хотите отправить пароль через небезопасное соединение. Вы уверены?"
#. theme doesn't exist, disable emoticons
-#: ../src/gui_interface.py:1869
-#: ../src/gui_interface.py:1892
+#: ../src/gui_interface.py:1898
+#: ../src/gui_interface.py:1921
msgid "Emoticons disabled"
msgstr "Смайлики выключены"
-#: ../src/gui_interface.py:1870
+#: ../src/gui_interface.py:1899
msgid "Your configured emoticons theme has not been found, so emoticons have been disabled."
msgstr "Тема смайликов не найдена, они будут отключены."
-#: ../src/gui_interface.py:1893
+#: ../src/gui_interface.py:1922
msgid "Your configured emoticons theme cannot been loaded. You maybe need to update the format of emoticons.py file. See http://trac.gajim.org/wiki/Emoticons for more details."
msgstr "Смайлики не могут быть загружены. Возможно, вам нужно обновить формат файла emoticons.py. Подробности на http://trac.gajim.org/wiki/Emoticons."
-#: ../src/gui_interface.py:1937
-#: ../src/roster_window.py:3788
+#: ../src/gui_interface.py:1966
+#: ../src/roster_window.py:3834
msgid "You cannot join a group chat while you are invisible"
msgstr "Вы не можете зайти в комнату, так как вы в режиме невидимости."
#. it is good to notify the user
#. in case he or she cannot see the output of the console
-#: ../src/gui_interface.py:2324
+#: ../src/gui_interface.py:2353
msgid "Could not save your settings and preferences"
msgstr "Не могу сохранить ваши установки и настройки"
-#: ../src/gui_interface.py:2874
+#: ../src/gui_interface.py:2915
msgid "Passphrase Required"
msgstr "Требуется парольная фраза"
-#: ../src/gui_interface.py:2875
+#: ../src/gui_interface.py:2916
#, python-format
msgid "Enter GPG key passphrase for key %(keyid)s (account %(account)s)."
msgstr "Введите пароль для ключа %(keyid)s (аккаунт %(account)s)."
-#: ../src/gui_interface.py:2889
+#: ../src/gui_interface.py:2930
msgid "GPG key expired"
msgstr "Срок действия ключа GPG истёк"
-#: ../src/gui_interface.py:2890
+#: ../src/gui_interface.py:2931
#, python-format
msgid "Your GPG key has expired, you will be connected to %s without OpenPGP."
msgstr "Срок действия вашего ключа GPG истёк, вы будете подключены к %s без использования OpenPGP."
#. ask again
-#: ../src/gui_interface.py:2899
+#: ../src/gui_interface.py:2940
msgid "Wrong Passphrase"
msgstr "Неверная парольная фраза"
-#: ../src/gui_interface.py:2900
+#: ../src/gui_interface.py:2941
msgid "Please retype your GPG passphrase or press Cancel."
msgstr "Введите парольную фразу для GPG еще раз или нажмите «Отмена»."
@@ -9176,7 +9431,7 @@ msgstr "Введите парольную фразу для GPG еще раз и
msgid "_New Group Chat"
msgstr "В _новую комнату"
-#: ../src/gui_menu_builder.py:419
+#: ../src/gui_menu_builder.py:420
msgid "I would like to add you to my roster"
msgstr "Вы не против, если я добавлю Вас к себе в ростер?"
@@ -9192,7 +9447,7 @@ msgstr "Контакты"
#. holds time
#: ../src/history_manager.py:169
#: ../src/history_manager.py:213
-#: ../src/history_window.py:98
+#: ../src/history_window.py:99
msgid "Date"
msgstr "Дата"
@@ -9205,7 +9460,7 @@ msgstr "Ник"
#. holds message
#: ../src/history_manager.py:185
#: ../src/history_manager.py:220
-#: ../src/history_window.py:106
+#: ../src/history_window.py:107
msgid "Message"
msgstr "Сообщение"
@@ -9268,49 +9523,40 @@ msgstr[0] "Вы точно хотите удалить выделенное со
msgstr[1] "Вы точно хотите удалить выделенные сообщения?"
msgstr[2] "Вы точно хотите удалить выделенные сообщения?"
-#: ../src/history_window.py:305
+#: ../src/history_window.py:306
#, python-format
msgid "Conversation History with %s"
msgstr "История %s"
-#: ../src/history_window.py:355
+#: ../src/history_window.py:356
msgid "Disk Error"
msgstr "Ошибка записи на диск"
-#: ../src/history_window.py:443
+#: ../src/history_window.py:444
#, python-format
msgid "%(nick)s is now %(status)s: %(status_msg)s"
msgstr "%(nick)s теперь %(status)s: %(status_msg)s"
-#: ../src/history_window.py:454
+#: ../src/history_window.py:455
#, python-format
msgid "Error: %s"
msgstr "Ошибка: %s"
-#: ../src/history_window.py:456
+#: ../src/history_window.py:457
msgid "Error"
msgstr "Ошибка"
-#: ../src/history_window.py:458
+#: ../src/history_window.py:459
#, python-format
msgid "Status is now: %(status)s: %(status_msg)s"
msgstr "Статус установлен в: %(status)s: %(status_msg)s"
-#: ../src/history_window.py:461
+#: ../src/history_window.py:462
#, python-format
msgid "Status is now: %(status)s"
msgstr "Статус установлен в: %(status)s"
-#: ../src/htmltextview.py:523
-#: ../src/htmltextview.py:533
-msgid "Timeout loading image"
-msgstr "Не могу загрузить изображение"
-
-#: ../src/htmltextview.py:543
-msgid "Image is too big"
-msgstr "Изображение слишком большое"
-
-#: ../src/htmltextview.py:576
+#: ../src/htmltextview.py:522
msgid "Loading"
msgstr "Загрузка"
@@ -9350,47 +9596,47 @@ msgstr "— сообщения не будут записаны в лог"
msgid "Ignore"
msgstr "Игнорировать"
-#: ../src/plugins/gui.py:67
+#: ../src/plugins/gui.py:68
msgid "Plugin"
msgstr "Модуль"
-#: ../src/plugins/gui.py:161
+#: ../src/plugins/gui.py:162
msgid "Plugin failed"
msgstr "Неудачный модуль"
-#: ../src/plugins/gui.py:205
+#: ../src/plugins/gui.py:206
msgid "Unable to properly remove the plugin"
msgstr "Невозможно правильно удалить модуль"
#. members not safe
-#: ../src/plugins/gui.py:213
-#: ../src/plugins/pluginmanager.py:516
-#: ../src/plugins/pluginmanager.py:524
+#: ../src/plugins/gui.py:214
+#: ../src/plugins/pluginmanager.py:519
+#: ../src/plugins/pluginmanager.py:527
msgid "Archive is malformed"
msgstr "Формат архива не поддерживается"
-#: ../src/plugins/gui.py:236
-#: ../src/plugins/gui.py:244
-#: ../src/plugins/pluginmanager.py:532
+#: ../src/plugins/gui.py:237
+#: ../src/plugins/gui.py:245
+#: ../src/plugins/pluginmanager.py:535
msgid "Plugin already exists"
msgstr "Модуль уже существует"
-#: ../src/plugins/gui.py:236
+#: ../src/plugins/gui.py:237
msgid "Overwrite?"
msgstr "Перезаписать?"
-#: ../src/plugins/gui.py:265
+#: ../src/plugins/gui.py:266
msgid "Configuration"
msgstr "Конфигурация"
#. it is not zip file
#. CRC error
-#: ../src/plugins/pluginmanager.py:502
-#: ../src/plugins/pluginmanager.py:508
+#: ../src/plugins/pluginmanager.py:505
+#: ../src/plugins/pluginmanager.py:511
msgid "Archive corrupted"
msgstr "Архив поврежден"
-#: ../src/plugins/pluginmanager.py:504
+#: ../src/plugins/pluginmanager.py:507
msgid "Archive empty"
msgstr "Архив пуст"
@@ -9399,12 +9645,12 @@ msgid "Retrieving profile..."
msgstr "Получаю данные..."
#: ../src/profile_window.py:125
-#: ../src/roster_window.py:3141
+#: ../src/roster_window.py:3184
msgid "File is empty"
msgstr "Пустой файл"
#: ../src/profile_window.py:128
-#: ../src/roster_window.py:3144
+#: ../src/roster_window.py:3187
msgid "File does not exist"
msgstr "Файл не существует"
@@ -9412,8 +9658,8 @@ msgstr "Файл не существует"
#. unknown format
#: ../src/profile_window.py:142
#: ../src/profile_window.py:158
-#: ../src/roster_window.py:3146
-#: ../src/roster_window.py:3157
+#: ../src/roster_window.py:3189
+#: ../src/roster_window.py:3200
msgid "Could not load image"
msgstr "Не могу загрузить изображение"
@@ -9450,192 +9696,192 @@ msgid "There was an error while publishing your personal information, try again
msgstr "При публикации вашей личной информации произошла ошибка, попробуйте позже."
#: ../src/roster_window.py:240
-#: ../src/roster_window.py:1028
+#: ../src/roster_window.py:1031
msgid "Merged accounts"
msgstr "Объединенные учетные записи"
-#: ../src/roster_window.py:1956
+#: ../src/roster_window.py:1999
msgid "Authorization has been sent"
msgstr "Была отправлена авторизация"
-#: ../src/roster_window.py:1957
+#: ../src/roster_window.py:2000
#, python-format
msgid "Now \"%s\" will know your status."
msgstr "Теперь «%s» будет знать о вашем статусе."
-#: ../src/roster_window.py:1980
+#: ../src/roster_window.py:2023
msgid "Subscription request has been sent"
msgstr "Был отправлен запрос на подписку "
-#: ../src/roster_window.py:1981
+#: ../src/roster_window.py:2024
#, python-format
msgid "If \"%s\" accepts this request you will know his or her status."
msgstr "Если «%s» примет ваш запрос, вы будете знать его или её статус"
-#: ../src/roster_window.py:1995
+#: ../src/roster_window.py:2038
msgid "Authorization has been removed"
msgstr "Авторизация была удалена"
-#: ../src/roster_window.py:1996
+#: ../src/roster_window.py:2039
#, python-format
msgid "Now \"%s\" will always see you as offline."
msgstr "Теперь «%s» всегда будет видеть вас в оффлайне."
-#: ../src/roster_window.py:2023
+#: ../src/roster_window.py:2066
msgid "GPG is not usable"
msgstr "GPG использовать невозможно"
-#: ../src/roster_window.py:2024
+#: ../src/roster_window.py:2067
#, python-format
msgid "You will be connected to %s without OpenPGP."
msgstr "Вы будете подключены к %s без использования OpenPGP."
-#: ../src/roster_window.py:2231
-#: ../src/roster_window.py:3718
+#: ../src/roster_window.py:2274
+#: ../src/roster_window.py:3764
msgid "You are participating in one or more group chats"
msgstr "Вы находитесь в одной или более комнатах"
-#: ../src/roster_window.py:2232
-#: ../src/roster_window.py:3719
+#: ../src/roster_window.py:2275
+#: ../src/roster_window.py:3765
msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?"
msgstr "Переход в состояние невидимости приведет к выходу из этих комнат. Вы точно хотите стать невидимым?"
-#: ../src/roster_window.py:2258
+#: ../src/roster_window.py:2301
msgid "desync'ed"
msgstr "не синхронизировано"
-#: ../src/roster_window.py:2324
+#: ../src/roster_window.py:2367
msgid "Really quit Gajim?"
msgstr "Закрыть Gajim?"
-#: ../src/roster_window.py:2325
+#: ../src/roster_window.py:2368
msgid "Are you sure you want to quit Gajim?"
msgstr "Вы точно хотите закрыть Gajim?"
-#: ../src/roster_window.py:2326
+#: ../src/roster_window.py:2369
msgid "Always close Gajim"
msgstr "Всегда закрывать Gajim"
-#: ../src/roster_window.py:2412
+#: ../src/roster_window.py:2455
msgid "You have running file transfers"
msgstr "Идет передача файлов"
-#: ../src/roster_window.py:2413
+#: ../src/roster_window.py:2456
msgid "If you quit now, the file(s) being transferred will be stopped. Do you still want to quit?"
msgstr "Если выйти сейчас, передача файла остановится. Выйти?"
-#: ../src/roster_window.py:2444
-#: ../src/roster_window.py:2860
+#: ../src/roster_window.py:2487
+#: ../src/roster_window.py:2903
msgid "You have unread messages"
msgstr "У вас есть непрочитанные сообщения"
-#: ../src/roster_window.py:2445
+#: ../src/roster_window.py:2488
msgid "Messages will only be available for reading them later if you have history enabled and contact is in your roster."
msgstr "Сообщения будут доступны для чтения позже, если у вас активирована опция истории."
-#: ../src/roster_window.py:2861
+#: ../src/roster_window.py:2904
msgid "You must read them before removing this transport."
msgstr "Просмотрите все ожидающие события перед удалением транспорта."
-#: ../src/roster_window.py:2864
+#: ../src/roster_window.py:2907
#, python-format
msgid "Transport \"%s\" will be removed"
msgstr "Транспорт «%s» будет удален"
-#: ../src/roster_window.py:2865
+#: ../src/roster_window.py:2908
msgid "You will no longer be able to send and receive messages from contacts using this transport."
msgstr "У вас теперь не будет возможности приема и отправки сообщения контактам через этот транспорт."
-#: ../src/roster_window.py:2868
+#: ../src/roster_window.py:2911
msgid "Transports will be removed"
msgstr "Транспорты будут удалены"
-#: ../src/roster_window.py:2873
+#: ../src/roster_window.py:2916
#, python-format
msgid "You will no longer be able to send and receive messages to contacts from these transports: %s"
msgstr "У вас больше не будет возможности приема и отправки сообщений через эти транспорты:%s."
-#: ../src/roster_window.py:2941
+#: ../src/roster_window.py:2984
msgid "You are about to block a contact. Are you sure you want to continue?"
msgstr "Вы точно хотите заблокировать контакт?"
-#: ../src/roster_window.py:2943
+#: ../src/roster_window.py:2986
msgid "This contact will see you offline and you will not receive messages he will send you."
msgstr "Этот контакт будет видеть вас как отключенного, а вы не будете получать от него сообщения."
#. it's jid
-#: ../src/roster_window.py:3033
+#: ../src/roster_window.py:3076
msgid "Rename Contact"
msgstr "Переименовать контакт"
-#: ../src/roster_window.py:3034
+#: ../src/roster_window.py:3077
#, python-format
msgid "Enter a new nickname for contact %s"
msgstr "Введите новый ник для контакта %s"
-#: ../src/roster_window.py:3041
+#: ../src/roster_window.py:3084
msgid "Rename Group"
msgstr "Переименовать группу"
-#: ../src/roster_window.py:3042
+#: ../src/roster_window.py:3085
#, python-format
msgid "Enter a new name for group %s"
msgstr "Введите новое название для группы %s"
-#: ../src/roster_window.py:3087
+#: ../src/roster_window.py:3130
msgid "Remove Group"
msgstr "Удалить группу"
-#: ../src/roster_window.py:3088
+#: ../src/roster_window.py:3131
#, python-format
msgid "Do you want to remove group %s from the roster?"
msgstr "Вы точно хотите удалить группу %s из ростера?"
-#: ../src/roster_window.py:3089
+#: ../src/roster_window.py:3132
msgid "Also remove all contacts in this group from your roster"
msgstr "Удалить из ростера все контакты в этой группе"
-#: ../src/roster_window.py:3128
+#: ../src/roster_window.py:3171
msgid "Assign OpenPGP Key"
msgstr "Назначить ключ OpenPGP"
-#: ../src/roster_window.py:3129
+#: ../src/roster_window.py:3172
msgid "Select a key to apply to the contact"
msgstr "Выберите ключ, который будет применен к контакту"
-#: ../src/roster_window.py:3528
+#: ../src/roster_window.py:3574
#, python-format
msgid "Contact \"%s\" will be removed from your roster"
msgstr "Контакт «%s» будет удален из вашего ростера"
-#: ../src/roster_window.py:3530
+#: ../src/roster_window.py:3576
#, python-format
msgid "You are about to remove \"%(name)s\" (%(jid)s) from your roster.\n"
msgstr "Вы собираетесь удалить «%(name)s» (%(jid)s) из вашего списка контактов.\n"
-#: ../src/roster_window.py:3535
+#: ../src/roster_window.py:3581
msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline."
msgstr "Удаляя контакт, вы одновременно удалите авторизацию, и этот человек больше не сможет видеть ваш статус."
#. Contact is not in roster
-#: ../src/roster_window.py:3541
+#: ../src/roster_window.py:3587
msgid "Do you want to continue?"
msgstr "Продолжить?"
-#: ../src/roster_window.py:3545
+#: ../src/roster_window.py:3591
msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline."
msgstr "Если вы удалите контакт, вы так же удалите и авторизацию. Вы будете видеть его или её всегда в оффлайне."
-#: ../src/roster_window.py:3548
+#: ../src/roster_window.py:3594
msgid "I want this contact to know my status after removal"
msgstr "Я хочу, чтобы этот контакт видел мой статус после удаления"
#. several contact to remove at the same time
-#: ../src/roster_window.py:3552
+#: ../src/roster_window.py:3598
msgid "Contacts will be removed from your roster"
msgstr "Контакты будут удалены из вашего ростера"
-#: ../src/roster_window.py:3557
+#: ../src/roster_window.py:3603
#, python-format
msgid ""
"By removing these contacts:%s\n"
@@ -9644,44 +9890,44 @@ msgstr ""
"Вы удаляете эти контакты:%s.\n"
"Одновременно вы удалите и авторизацию, то есть они всегда будут видеть вас в оффлайне."
-#: ../src/roster_window.py:3615
+#: ../src/roster_window.py:3661
msgid "You are about to send a custom status. Are you sure you want to continue?"
msgstr "Вы точно хотите послать другой статус?"
-#: ../src/roster_window.py:3617
+#: ../src/roster_window.py:3663
#, python-format
msgid "This contact will temporarily see you as %(status)s, but only until you change your status. Then he or she will see your global status."
msgstr "Этот контакт будет временно видеть ваш статус как %(status)s, но лишь пока вы не измените свой глобальный статус. Тогда этому контакту станет виден глобальный статус."
-#: ../src/roster_window.py:3636
+#: ../src/roster_window.py:3682
msgid "No account available"
msgstr "Нет доступной учетной записи"
-#: ../src/roster_window.py:3637
+#: ../src/roster_window.py:3683
msgid "You must create an account before you can chat with other contacts."
msgstr "Для начала беседы с другими людьми прежде необходимо создать учетную запись."
-#: ../src/roster_window.py:4290
+#: ../src/roster_window.py:4373
msgid "Metacontacts storage not supported by your server"
msgstr "Сервер не умеет хранить метаконтакты"
-#: ../src/roster_window.py:4292
+#: ../src/roster_window.py:4375
msgid "Your server does not support storing metacontacts information. So those information will not be saved on next reconnection."
msgstr "Ваш сервер не умеет хранить данные о метаконтактах. Они будут утеряны при следующем подключении."
-#: ../src/roster_window.py:4384
+#: ../src/roster_window.py:4467
msgid "You are about to create a metacontact. Are you sure you want to continue?"
msgstr "Вы точно хотите создать метаконтакт?"
-#: ../src/roster_window.py:4386
+#: ../src/roster_window.py:4469
msgid "Metacontacts are a way to regroup several contacts in one line. Generally it is used when the same person has several Jabber accounts or transport accounts."
msgstr "Метаконтакты — это метод группировки нескольких контактов в одну запись. Обычно используется, когда один и тот же человек имеет несколько учетных записей в Jabber или на транспортах."
-#: ../src/roster_window.py:4507
+#: ../src/roster_window.py:4590
msgid "Invalid file URI:"
msgstr "Неверный файл:"
-#: ../src/roster_window.py:4519
+#: ../src/roster_window.py:4602
#, python-format
msgid "Do you want to send this file to %s:"
msgid_plural "Do you want to send these files to %s:"
@@ -9689,17 +9935,17 @@ msgstr[0] "Хотите отправить файл %s:"
msgstr[1] "Хотите отправить файлы %s:"
msgstr[2] "Хотите отправить файлы %s:"
-#: ../src/roster_window.py:4654
+#: ../src/roster_window.py:4737
#, python-format
msgid "Send %s to %s"
msgstr "Отправить %s контакту %s"
-#: ../src/roster_window.py:4665
+#: ../src/roster_window.py:4748
#, python-format
msgid "Make %s first contact"
msgstr "Сделать %s первым контактом"
-#: ../src/roster_window.py:4668
+#: ../src/roster_window.py:4751
#, python-format
msgid "Make %s and %s metacontacts"
msgstr "Обьединить %s и %s в метаконтакт"
@@ -9709,9 +9955,9 @@ msgstr "Обьединить %s и %s в метаконтакт"
#. for chat_with
#. for single message
#. join gc
-#: ../src/roster_window.py:5108
-#: ../src/roster_window.py:5162
-#: ../src/roster_window.py:5171
+#: ../src/roster_window.py:5190
+#: ../src/roster_window.py:5244
+#: ../src/roster_window.py:5253
#: ../src/statusicon.py:264
#: ../src/statusicon.py:311
#: ../src/statusicon.py:317
@@ -9720,124 +9966,124 @@ msgid "using account %s"
msgstr "используя учетную запись %s"
#. add
-#: ../src/roster_window.py:5178
+#: ../src/roster_window.py:5260
#, python-format
msgid "to %s account"
msgstr "для учетной записи %s"
#. disco
-#: ../src/roster_window.py:5183
+#: ../src/roster_window.py:5265
#, python-format
msgid "using %s account"
msgstr "учетной записи %s"
-#: ../src/roster_window.py:5222
+#: ../src/roster_window.py:5304
#: ../src/statusicon.py:327
msgid "_Manage Bookmarks..."
msgstr "Управление _закладками..."
#. profile, avatar
-#: ../src/roster_window.py:5242
+#: ../src/roster_window.py:5324
#, python-format
msgid "of account %s"
msgstr "для учетной записи %s"
-#: ../src/roster_window.py:5283
+#: ../src/roster_window.py:5365
#, python-format
msgid "for account %s"
msgstr "для учетной записи %s"
-#: ../src/roster_window.py:5343
-#: ../src/roster_window.py:5451
+#: ../src/roster_window.py:5425
+#: ../src/roster_window.py:5533
msgid "_Change Status Message"
msgstr "_Изменить сообщение о статусе"
-#: ../src/roster_window.py:5376
+#: ../src/roster_window.py:5458
msgid "Publish Tune"
msgstr "Музыка"
-#: ../src/roster_window.py:5378
+#: ../src/roster_window.py:5460
msgid "Publish Location"
msgstr "Отправлять Местоположение"
-#: ../src/roster_window.py:5381
+#: ../src/roster_window.py:5463
msgid "Configure Services..."
msgstr "Настроить Сервисы..."
-#: ../src/roster_window.py:5529
+#: ../src/roster_window.py:5611
msgid "_Maximize All"
msgstr "_Развернуть все"
-#: ../src/roster_window.py:5539
-#: ../src/roster_window.py:5712
+#: ../src/roster_window.py:5621
+#: ../src/roster_window.py:5794
msgid "Send Group M_essage"
msgstr "_Отправить сообщение группе"
-#: ../src/roster_window.py:5547
+#: ../src/roster_window.py:5629
msgid "To all users"
msgstr "Всем пользователям"
-#: ../src/roster_window.py:5551
+#: ../src/roster_window.py:5633
msgid "To all online users"
msgstr "Всем, кто подключён"
#. Manage Transport submenu
-#: ../src/roster_window.py:5732
+#: ../src/roster_window.py:5814
msgid "_Manage Contacts"
msgstr "_Управление контактами"
#. Edit Groups
-#: ../src/roster_window.py:5741
+#: ../src/roster_window.py:5823
msgid "Edit _Groups"
msgstr "Редактировать _группы"
#. Send single message
-#: ../src/roster_window.py:5796
+#: ../src/roster_window.py:5878
msgid "Send Single Message"
msgstr "Отправить одиночное сообщение"
#. Execute Command
-#: ../src/roster_window.py:5843
+#: ../src/roster_window.py:5925
msgid "Execute Command..."
msgstr "Выполнить команду..."
#. Manage Transport submenu
-#: ../src/roster_window.py:5853
+#: ../src/roster_window.py:5935
msgid "_Manage Transport"
msgstr "_Управление транспортом"
#. Modify Transport
-#: ../src/roster_window.py:5862
+#: ../src/roster_window.py:5944
msgid "_Modify Transport"
msgstr "_Изменить транспорт"
#. Rename
-#: ../src/roster_window.py:5872
+#: ../src/roster_window.py:5954
msgid "_Rename"
msgstr "П_ереименовать"
-#: ../src/roster_window.py:5932
+#: ../src/roster_window.py:6014
msgid "_Maximize"
msgstr "Развернут_ь"
-#: ../src/roster_window.py:5941
+#: ../src/roster_window.py:6023
msgid "_Reconnect"
msgstr "_Переподсоеденится"
-#: ../src/roster_window.py:5948
+#: ../src/roster_window.py:6030
msgid "_Disconnect"
msgstr "_Выйти"
#. History manager
-#: ../src/roster_window.py:6037
+#: ../src/roster_window.py:6119
msgid "History Manager"
msgstr "Менеджер истории"
-#: ../src/roster_window.py:6048
+#: ../src/roster_window.py:6130
msgid "_Join New Group Chat"
msgstr "_Войти в новую комнату"
-#: ../src/roster_window.py:6267
+#: ../src/roster_window.py:6349
msgid "Change Status Message..."
msgstr "Изменить сообщение о статусе..."
@@ -9856,16 +10102,12 @@ msgstr "Ошибка в принятой форме данных"
msgid "No result"
msgstr "Нет результата"
-#: ../src/session.py:99
-msgid "Disk WriteError"
-msgstr "Ошибка записи на диск"
-
-#: ../src/session.py:410
-#: ../src/session.py:469
+#: ../src/session.py:411
+#: ../src/session.py:470
msgid "Confirm these session options"
msgstr "Подтвердить данные настройки сеанса"
-#: ../src/session.py:412
+#: ../src/session.py:413
#, fuzzy, python-format
msgid ""
"The remote client wants to negotiate a session with these features:\n"
@@ -9881,7 +10123,7 @@ msgstr ""
"\n"
"Приемлемы ли эти настройки?"
-#: ../src/session.py:471
+#: ../src/session.py:472
#, python-format
msgid ""
"The remote client selected these options:\n"
@@ -9896,7 +10138,7 @@ msgstr ""
"\n"
"Продолжить этот сеанс?"
-#: ../src/session.py:474
+#: ../src/session.py:475
#, fuzzy
msgid "Always accept for this contact"
msgstr "Используется ли для этого контакта OpenPGP?"
@@ -9913,139 +10155,139 @@ msgstr "Скрыть _ростер"
msgid "Hide this menu"
msgstr "Скрыть это меню"
-#: ../src/tooltips.py:392
-#: ../src/tooltips.py:604
+#: ../src/tooltips.py:393
+#: ../src/tooltips.py:605
msgid "Jabber ID: "
msgstr "Jabber ID: "
-#: ../src/tooltips.py:395
-#: ../src/tooltips.py:608
+#: ../src/tooltips.py:396
+#: ../src/tooltips.py:609
msgid "Resource: "
msgstr "Ресурс: "
-#: ../src/tooltips.py:401
+#: ../src/tooltips.py:402
#, python-format
msgid "%(owner_or_admin_or_member)s of this group chat"
msgstr "%(owner_or_admin_or_member)s этой комнаты"
-#: ../src/tooltips.py:502
+#: ../src/tooltips.py:503
msgid " [blocked]"
msgstr "[заблокировано]"
-#: ../src/tooltips.py:506
+#: ../src/tooltips.py:507
msgid " [minimized]"
msgstr "[свернуто]"
-#: ../src/tooltips.py:521
-#: ../src/tooltips.py:777
+#: ../src/tooltips.py:522
+#: ../src/tooltips.py:778
msgid "Status: "
msgstr "Статус: "
-#: ../src/tooltips.py:565
+#: ../src/tooltips.py:566
#, python-format
msgid "Last status: %s"
msgstr "Последний статус: %s"
-#: ../src/tooltips.py:567
+#: ../src/tooltips.py:568
#, python-format
msgid " since %s"
msgstr " с %s"
-#: ../src/tooltips.py:585
+#: ../src/tooltips.py:586
msgid "Connected"
msgstr "Подключен"
-#: ../src/tooltips.py:587
+#: ../src/tooltips.py:588
msgid "Disconnected"
msgstr "Отключен"
#. ('both' is the normal sub so we don't show it)
-#: ../src/tooltips.py:615
+#: ../src/tooltips.py:616
msgid "Subscription: "
msgstr "Подписка: "
-#: ../src/tooltips.py:625
+#: ../src/tooltips.py:626
msgid "OpenPGP: "
msgstr "OpenPGP: "
-#: ../src/tooltips.py:646
+#: ../src/tooltips.py:647
#, python-format
msgid "Idle since %s"
msgstr "Бездействует с %s"
-#: ../src/tooltips.py:647
+#: ../src/tooltips.py:648
#, python-format
msgid "Idle for %s"
msgstr "Время бездействия %s"
-#: ../src/tooltips.py:698
+#: ../src/tooltips.py:699
#, python-format
msgid "Mood: %s"
msgstr "Настроение: %s"
-#: ../src/tooltips.py:702
+#: ../src/tooltips.py:703
#, python-format
msgid "Activity: %s"
msgstr "Занятие: %s"
-#: ../src/tooltips.py:706
+#: ../src/tooltips.py:707
#, python-format
msgid "Tune: %s"
msgstr "Слушаю: %s"
-#: ../src/tooltips.py:710
+#: ../src/tooltips.py:711
#, python-format
msgid "Location: %s"
msgstr "Местоположение: %s"
-#: ../src/tooltips.py:735
+#: ../src/tooltips.py:736
msgid "Download"
msgstr "Скачать"
-#: ../src/tooltips.py:741
+#: ../src/tooltips.py:742
msgid "Upload"
msgstr "Загрузить"
-#: ../src/tooltips.py:748
+#: ../src/tooltips.py:749
msgid "Type: "
msgstr "Тип: "
-#: ../src/tooltips.py:752
+#: ../src/tooltips.py:753
msgid "Transferred: "
msgstr "Передано: "
-#: ../src/tooltips.py:755
-#: ../src/tooltips.py:776
+#: ../src/tooltips.py:756
+#: ../src/tooltips.py:777
msgid "Not started"
msgstr "Не начато"
-#: ../src/tooltips.py:759
+#: ../src/tooltips.py:760
msgid "Stopped"
msgstr "Остановлено"
-#: ../src/tooltips.py:761
-#: ../src/tooltips.py:764
+#: ../src/tooltips.py:762
+#: ../src/tooltips.py:765
msgid "Completed"
msgstr "Завершено"
-#: ../src/tooltips.py:768
+#: ../src/tooltips.py:769
msgid "?transfer status:Paused"
msgstr "Приостановлено"
#. stalled is not paused. it is like 'frozen' it stopped alone
-#: ../src/tooltips.py:772
+#: ../src/tooltips.py:773
msgid "Stalled"
msgstr "Ожидание"
-#: ../src/tooltips.py:774
+#: ../src/tooltips.py:775
msgid "Transferring"
msgstr "Передается"
-#: ../src/tooltips.py:812
+#: ../src/tooltips.py:813
msgid "This service has not yet responded with detailed information"
msgstr "Этот сервис еще не сообщил информацию о себе"
-#: ../src/tooltips.py:815
+#: ../src/tooltips.py:816
msgid ""
"This service could not respond with detailed information.\n"
"It is most likely legacy or broken"
@@ -10115,6 +10357,15 @@ msgstr "Нет ожидающего запроса на подписку."
msgid " resource with priority "
msgstr " ресурс с приоритетом "
+#~ msgid "error: cannot open %s for reading"
+#~ msgstr "ошибка: не могу открыть %s для чтения"
+
+#~ msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+#~ msgstr "Требует pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+
+#~ msgid "Disk WriteError"
+#~ msgstr "Ошибка записи на диск"
+
#~ msgid "A GTK+ jabber client"
#~ msgstr "Jabber-клиент на GTK+"
@@ -10242,9 +10493,6 @@ msgstr " ресурс с приоритетом "
#~ msgid "when I'm in"
#~ msgstr "Когда я в "
-#~ msgid "Available"
-#~ msgstr "Доступен"
-
#~ msgid "Descrition:"
#~ msgstr "Описание: "
@@ -10613,18 +10861,9 @@ msgstr " ресурс с приоритетом "
#~ "Приём и отправка локальных (link-local) сообщений и сообщений в сетях "
#~ "zeroconf"
-#~ msgid "Command not supported for zeroconf account."
-#~ msgstr "Команда не поддерживается учетной записью zeroconf."
-
#~ msgid "Commands: %s"
#~ msgstr "Команды: %s"
-#~ msgid "Usage: /%s, clears the text window."
-#~ msgstr "Использование: /%s, очищает текстовое окно."
-
-#~ msgid "Usage: /%s, hide the chat buttons."
-#~ msgstr "Использование: /%s, скрывает кнопки беседы."
-
#~ msgid ""
#~ "Usage: /%(command)s <action>, sends action to the current group chat. Use "
#~ "third person. (e.g. /%(command)s explodes.)"
@@ -10632,12 +10871,6 @@ msgstr " ресурс с приоритетом "
#~ "Использование: /%(command)s <действие>, совершает действие в текущей "
#~ "комнате. Используйте третье лицо (например, «/%(command)s взрывается».)"
-#~ msgid "Usage: /%s, sends a ping to the contact"
-#~ msgstr "Использование: /%s, посылает пинг контакту"
-
-#~ msgid "Usage: /%s, send the message to the contact"
-#~ msgstr "Использование: /%s, посылает сообщение контакту"
-
#~ msgid "No help info for /%s"
#~ msgstr "Нет подсказки для /%s"
@@ -10657,9 +10890,6 @@ msgstr " ресурс с приоритетом "
#~ "Неоднозначность: %d ника совпадают.\n"
#~ " Используйте графический интерфейс"
-#~ msgid "Nickname not found"
-#~ msgstr "Ник не обнаружен"
-
#~ msgid ""
#~ "There is an ambiguity: %d nicks match.\n"
#~ " Please use graphical interface"
@@ -10677,12 +10907,6 @@ msgstr " ресурс с приоритетом "
#~ "данный момент находится в комнате, то он/она/оно также будет выгнан."
#~ msgid ""
-#~ "Usage: /%s <nickname>, opens a private chat window with the specified "
-#~ "occupant."
-#~ msgstr ""
-#~ "Использование: /%s <ник>, открывает окно привата с указанным посетителем."
-
-#~ msgid ""
#~ "Usage: /%s [reason], closes the current window or tab, displaying reason "
#~ "if specified."
#~ msgstr ""
@@ -10720,9 +10944,6 @@ msgstr " ресурс с приоритетом "
#~ msgid "Usage: /%s <nickname>, changes your nickname in current group chat."
#~ msgstr "Использование: /%s <ник>, меняет ваш ник в текущей комнате."
-#~ msgid "Usage: /%s , display the names of group chat occupants."
-#~ msgstr "Использование: /%s, показывает список присутствующих в комнате."
-
#~ msgid ""
#~ "Usage: /%s [topic], displays or updates the current group chat topic."
#~ msgstr ""
@@ -10983,9 +11204,6 @@ msgstr " ресурс с приоритетом "
#~ "Когда устанавливается зашифрованная сессия, дожен ли Gajim предпочитать "
#~ "использовать открытый ключ для идентификации?"
-#~ msgid "Click to see past conversations with this contact"
-#~ msgstr "Щелкните для просмотра последних бесед с этим человеком"
-
#~ msgid "Click to see past conversation in this room"
#~ msgstr "Щелкните для просмотра бесед в этой комнате"
diff --git a/po/uk.po b/po/uk.po
index 6fb5d88f9..dfa220fc8 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -2,13 +2,13 @@
# Copyright (C) 2010 THE Gajim - A Jabber Instant Messager'S COPYRIGHT HOLDER
# This file is distributed under the same license as the Gajim - A Jabber Instant Messager package.
#
-# Sergiy Yegorov <prapor@unixzone.org.ua>, 2010, 2011.
+# Sergiy Yegorov <prapor@unixzone.org.ua>, 2010, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Gajim - A Jabber Instant Messager 0.14.0.1-2fa5ddcd1adf\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-22 10:57+0200\n"
-"PO-Revision-Date: 2011-10-19 12:08+0300\n"
+"POT-Creation-Date: 2012-02-03 01:18+0200\n"
+"PO-Revision-Date: 2012-02-03 01:43+0200\n"
"Last-Translator: Sergiy Yegorov <prapor@unixzone.org.ua>\n"
"Language-Team: Ukrainian <kde-i18n-doc@kde.org>\n"
"Language: uk\n"
@@ -107,7 +107,7 @@ msgid "I want to _register for a new account"
msgstr "Я бажаю _зареєструвати новий обліковий запис"
#: ../data/gui/account_creation_wizard_window.ui.h:15
-#: ../data/gui/accounts_window.ui.h:28
+#: ../data/gui/accounts_window.ui.h:30
msgid "If checked, Gajim will remember the password for this account"
msgstr ""
"Якщо буде позначено цей пункт, Gajim запам'ятає пароль цього облікового "
@@ -118,13 +118,14 @@ msgid "Manage..."
msgstr "Керування..."
#: ../data/gui/account_creation_wizard_window.ui.h:17
-#: ../data/gui/accounts_window.ui.h:39 ../data/gui/change_mood_dialog.ui.h:3
-#: ../src/config.py:1289 ../src/config.py:1392 ../src/config.py:1703
-#: ../src/config.py:1708 ../src/config.py:2284 ../src/config.py:2363
-#: ../src/config.py:2376 ../src/config.py:3655 ../src/config.py:3730
+#: ../data/gui/accounts_window.ui.h:41 ../data/gui/change_mood_dialog.ui.h:3
+#: ../src/config.py:1265 ../src/config.py:1279 ../src/config.py:1284
+#: ../src/config.py:1332 ../src/config.py:1435 ../src/config.py:1746
+#: ../src/config.py:1751 ../src/config.py:2327 ../src/config.py:2406
+#: ../src/config.py:2419 ../src/config.py:3699 ../src/config.py:3774
#: ../src/dialogs.py:311 ../src/dialogs.py:313 ../src/dialogs.py:519
-#: ../src/dialogs.py:532 ../src/roster_window.py:3092
-#: ../src/roster_window.py:3098 ../src/roster_window.py:3103
+#: ../src/dialogs.py:532 ../src/roster_window.py:3139
+#: ../src/roster_window.py:3145 ../src/roster_window.py:3150
msgid "None"
msgstr "Немає"
@@ -133,7 +134,7 @@ msgid "Prox_y:"
msgstr "Прокс_і:"
#: ../data/gui/account_creation_wizard_window.ui.h:19
-#: ../data/gui/accounts_window.ui.h:48
+#: ../data/gui/accounts_window.ui.h:50
msgid "Save pass_word"
msgstr "Зберегти _пароль"
@@ -167,12 +168,12 @@ msgid "_Hostname:"
msgstr "Назва _вузла:"
#: ../data/gui/account_creation_wizard_window.ui.h:27
-#: ../data/gui/accounts_window.ui.h:61
+#: ../data/gui/accounts_window.ui.h:63
msgid "_Jabber ID:"
msgstr "_Jabber ID:"
#: ../data/gui/account_creation_wizard_window.ui.h:28
-#: ../data/gui/accounts_window.ui.h:63
+#: ../data/gui/accounts_window.ui.h:65
#: ../data/gui/manage_bookmarks_window.ui.h:8
msgid "_Password:"
msgstr "_Password:"
@@ -214,35 +215,41 @@ msgstr "Обліковий запис"
msgid "Accounts"
msgstr "Облікові записи"
-#: ../data/gui/accounts_window.ui.h:8
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:8 ../src/dialogs.py:3384
+#: ../src/dialogs.py:3430
+msgid "Add"
+msgstr "Додати"
+
+#: ../data/gui/accounts_window.ui.h:9
msgid "Administration operations"
msgstr "Адміністративні дії"
-#: ../data/gui/accounts_window.ui.h:9
+#: ../data/gui/accounts_window.ui.h:10
msgid "Anonymous authentication"
msgstr "Анонімна аутентифікація"
-#: ../data/gui/accounts_window.ui.h:10
+#: ../data/gui/accounts_window.ui.h:11
msgid "Auto-reconnect when connection is lost"
msgstr "Автоматично відновлювати втрачене з'єднання"
-#: ../data/gui/accounts_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:12
msgid "Browse..."
msgstr "Перегляд..."
-#: ../data/gui/accounts_window.ui.h:12
+#: ../data/gui/accounts_window.ui.h:13
msgid "C_onnect on Gajim startup"
msgstr "_З'єднуватись після запуску Gajim"
-#: ../data/gui/accounts_window.ui.h:13
+#: ../data/gui/accounts_window.ui.h:14
msgid "Certificate is e_ncrypted"
msgstr "Сертифікат зашифровано"
-#: ../data/gui/accounts_window.ui.h:14
+#: ../data/gui/accounts_window.ui.h:15
msgid "Chan_ge Password"
msgstr "_Змінити пароль"
-#: ../data/gui/accounts_window.ui.h:15
+#: ../data/gui/accounts_window.ui.h:16
msgid ""
"Check this so Gajim will ask you before sending your password over an "
"insecure connection."
@@ -250,47 +257,53 @@ msgstr ""
"Позначте цей пункт, щоб Gajim запитував вас перед надсиланням пароля через "
"незахищеним з’єднанням."
-#: ../data/gui/accounts_window.ui.h:16
+#: ../data/gui/accounts_window.ui.h:17
msgid "Choose _Key..."
msgstr "Обрати _ключ..."
-#: ../data/gui/accounts_window.ui.h:17
+#: ../data/gui/accounts_window.ui.h:18
msgid "Click to change account's password"
msgstr "Натисніть. щоб змінити пароль цього облікового запису"
-#: ../data/gui/accounts_window.ui.h:18
+#: ../data/gui/accounts_window.ui.h:19
msgid "Click to request authorization to all contacts of another account"
msgstr ""
"Натисніть, щоб запитати уповноваження від усіх контактів іншого облікового "
"запису"
-#: ../data/gui/accounts_window.ui.h:19
+#: ../data/gui/accounts_window.ui.h:20
msgid "Client certificate"
msgstr "Клієнтський сертифікат"
-#: ../data/gui/accounts_window.ui.h:20
+#: ../data/gui/accounts_window.ui.h:21
msgid "Co_nnect on Gajim startup"
msgstr "_З'єднуватись після запуску Gajim"
-#: ../data/gui/accounts_window.ui.h:21
+#: ../data/gui/accounts_window.ui.h:22
msgid "Connection"
msgstr "З'єднання"
-#: ../data/gui/accounts_window.ui.h:22
+#. Change label for accept_button to action name instead of 'OK'.
+#: ../data/gui/accounts_window.ui.h:23 ../src/dialogs.py:3388
+#: ../src/dialogs.py:3485
+msgid "Delete"
+msgstr "Вилучити"
+
+#: ../data/gui/accounts_window.ui.h:24
#: ../data/gui/zeroconf_information_window.ui.h:2
msgid "E-Mail:"
msgstr "Ел. пошта:"
-#: ../data/gui/accounts_window.ui.h:23
+#: ../data/gui/accounts_window.ui.h:25
#: ../data/gui/zeroconf_information_window.ui.h:3
msgid "First Name:"
msgstr "Ім'я:"
#. No configured account
-#: ../data/gui/accounts_window.ui.h:24 ../data/gui/roster_window.ui.h:5
-#: ../src/common/helpers.py:1148 ../src/common/helpers.py:1160
-#: ../src/notify.py:318 ../src/notify.py:341 ../src/notify.py:391
-#: ../src/notify.py:407
+#: ../data/gui/accounts_window.ui.h:26 ../data/gui/roster_window.ui.h:5
+#: ../src/common/helpers.py:1168 ../src/common/helpers.py:1180
+#: ../src/notify.py:314 ../src/notify.py:337 ../src/notify.py:387
+#: ../src/notify.py:403
msgid "Gajim"
msgstr "Gajim"
@@ -298,13 +311,14 @@ msgstr "Gajim"
#. FIXME: Ugly workaround.
#. Maybe we haven't been in any group (defaults to General)
#. General group cannot be changed
-#: ../data/gui/accounts_window.ui.h:25 ../data/gui/preferences_window.ui.h:56
+#: ../data/gui/accounts_window.ui.h:27 ../data/gui/preferences_window.ui.h:57
#: ../src/common/contacts.py:132 ../src/dialogs.py:112 ../src/dialogs.py:124
-#: ../src/roster_window.py:3034 ../src/roster_window.py:5652
+#: ../src/roster_window.py:3081 ../src/roster_window.py:4148
+#: ../src/roster_window.py:5738
msgid "General"
msgstr "Загальне"
-#: ../data/gui/accounts_window.ui.h:26
+#: ../data/gui/accounts_window.ui.h:28
msgid ""
"If checked, Gajim will also broadcast some more IPs except from just your "
"IP, so file transfer has higher chances of working."
@@ -313,13 +327,13 @@ msgstr ""
"адреси. окрім вашої, тому передавання файлів працюватиме з більшою "
"ймовірністю."
-#: ../data/gui/accounts_window.ui.h:27
+#: ../data/gui/accounts_window.ui.h:29
msgid "If checked, Gajim will get the password from a GPG agent like seahorse"
msgstr ""
"Якщо буде позначено цей пункт, Gajim буде отримувати пароль від агента GPG, "
"наприклад, seahorse."
-#: ../data/gui/accounts_window.ui.h:29
+#: ../data/gui/accounts_window.ui.h:31
msgid ""
"If checked, Gajim will send keep-alive packets to prevent connection timeout "
"which results in disconnection"
@@ -327,7 +341,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim надсилатиме порожні пакети для "
"запобігання простою з'єднання (такий простій може призводити до від'єднання)"
-#: ../data/gui/accounts_window.ui.h:30
+#: ../data/gui/accounts_window.ui.h:32
msgid ""
"If checked, Gajim, when launched, will automatically connect to jabber using "
"this account"
@@ -335,7 +349,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim під час запуску буде автоматично "
"намагатись з'єднатися з вказаним обліковим записом на сервері jabber"
-#: ../data/gui/accounts_window.ui.h:31
+#: ../data/gui/accounts_window.ui.h:33
msgid ""
"If checked, any change to the global status (handled by the combobox at the "
"bottom of the roster window) will change the status of this account "
@@ -345,7 +359,7 @@ msgstr ""
"спадним списком у нижній частині вікна реєстру) призведе до відповідних змін "
"стану цього облікового запису"
-#: ../data/gui/accounts_window.ui.h:32
+#: ../data/gui/accounts_window.ui.h:34
msgid ""
"If the default port that is used for incoming messages is unfitting for your "
"setup you can select another one here.\n"
@@ -355,39 +369,39 @@ msgstr ""
"налаштувань, ви можете налаштувати інший.\n"
"Можливо, вам також доведеться змінити параметри брандмауера."
-#: ../data/gui/accounts_window.ui.h:34
+#: ../data/gui/accounts_window.ui.h:36
msgid "Information about you, as stored in the server"
msgstr "Відомості про вас, які зберігаються на сервері"
-#: ../data/gui/accounts_window.ui.h:35
-#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1826
+#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/zeroconf_information_window.ui.h:4 ../src/config.py:1869
#: ../src/dialogs.py:837
msgid "Jabber ID:"
msgstr "Jabber ID:"
-#: ../data/gui/accounts_window.ui.h:36
+#: ../data/gui/accounts_window.ui.h:38
#: ../data/gui/zeroconf_information_window.ui.h:5
msgid "Last Name:"
msgstr "Прізвище:"
-#: ../data/gui/accounts_window.ui.h:37
+#: ../data/gui/accounts_window.ui.h:39
msgid "Mer_ge accounts"
msgstr "Об’є_днати облікові записи"
-#: ../data/gui/accounts_window.ui.h:38 ../src/config.py:1799
-#: ../src/config.py:2377
+#: ../data/gui/accounts_window.ui.h:40 ../src/config.py:1842
+#: ../src/config.py:2420
msgid "No key selected"
msgstr "Не обрано жодного ключа"
-#: ../data/gui/accounts_window.ui.h:40 ../data/gui/profile_window.ui.h:35
+#: ../data/gui/accounts_window.ui.h:42 ../data/gui/profile_window.ui.h:35
msgid "Personal Information"
msgstr "Особисті відомості"
-#: ../data/gui/accounts_window.ui.h:41
+#: ../data/gui/accounts_window.ui.h:43
msgid "Priori_ty:"
msgstr "Пріорите_т:"
-#: ../data/gui/accounts_window.ui.h:42
+#: ../data/gui/accounts_window.ui.h:44
msgid ""
"Priority is used in Jabber to determine who gets the events from the jabber "
"server when two or more clients are connected using the same account; The "
@@ -397,20 +411,20 @@ msgstr ""
"від jabber-сервера, якщо з одним обліковим записом з’єднано декілька "
"клієнтів. Повідомлення про події отримує клієнт з найвищим пріоритетом"
-#: ../data/gui/accounts_window.ui.h:43
+#: ../data/gui/accounts_window.ui.h:45
msgid "Priority will change automatically according to your status."
msgstr "Пріоритет змінюватиметься залежно від вашого стану."
#. Rename
-#: ../data/gui/accounts_window.ui.h:44 ../src/roster_window.py:5602
+#: ../data/gui/accounts_window.ui.h:46 ../src/roster_window.py:5688
msgid "Re_name"
msgstr "Пере_йменувати"
-#: ../data/gui/accounts_window.ui.h:45
+#: ../data/gui/accounts_window.ui.h:47
msgid "Resour_ce:"
msgstr "Ресур_с:"
-#: ../data/gui/accounts_window.ui.h:46
+#: ../data/gui/accounts_window.ui.h:48
msgid ""
"Resource is sent to the Jabber server in order to separate the same JID in "
"two or more parts depending on the number of the clients connected in the "
@@ -424,73 +438,73 @@ msgstr ""
"обліковим записом з ресурсів «Домівка» або «Робота». Ресурс з найвищім "
"пріоритетом буде отримувати усі повідомлення та події. (Див. нижче)"
-#: ../data/gui/accounts_window.ui.h:47
+#: ../data/gui/accounts_window.ui.h:49
msgid "Save conversation _logs for all contacts"
msgstr "Зберігати _журнал спілкування для усіх контактів"
-#: ../data/gui/accounts_window.ui.h:49
+#: ../data/gui/accounts_window.ui.h:51
msgid "Send _keep-alive packets"
msgstr "Надсилати пакети підтвердження дієздатності"
-#: ../data/gui/accounts_window.ui.h:50
+#: ../data/gui/accounts_window.ui.h:52
msgid "Synch_ronize account status with global status"
msgstr "_Синхронізувати стан облікового запису з загальним"
-#: ../data/gui/accounts_window.ui.h:51
+#: ../data/gui/accounts_window.ui.h:53
msgid "Synchroni_ze account status with global status"
msgstr "_Синхронізувати стан облікового запису з загальним"
-#: ../data/gui/accounts_window.ui.h:52
+#: ../data/gui/accounts_window.ui.h:54
#: ../data/gui/synchronise_select_account_dialog.ui.h:2
msgid "Synchronise contacts"
msgstr "Синхронізувати контакти"
-#: ../data/gui/accounts_window.ui.h:53
+#: ../data/gui/accounts_window.ui.h:55
msgid "Use G_PG Agent"
msgstr "Використовувати _агент GnuPG"
-#: ../data/gui/accounts_window.ui.h:54
+#: ../data/gui/accounts_window.ui.h:56
msgid "Use cust_om hostname/port"
msgstr "Використовувати інші вузол/порт"
-#: ../data/gui/accounts_window.ui.h:55
+#: ../data/gui/accounts_window.ui.h:57
msgid "Use cust_om port:"
msgstr "Використовувати інший порт:"
-#: ../data/gui/accounts_window.ui.h:56
+#: ../data/gui/accounts_window.ui.h:58
msgid "Use file transfer proxies"
msgstr "Використовувати проксі передавання файлів"
-#: ../data/gui/accounts_window.ui.h:57
+#: ../data/gui/accounts_window.ui.h:59
msgid "_Client Cert File:"
msgstr "Файл клієнтського _сертифікату:"
-#: ../data/gui/accounts_window.ui.h:58
+#: ../data/gui/accounts_window.ui.h:60
msgid "_Edit Personal Information..."
msgstr "Редагувати особисті відомості..."
#. XML Console enable checkbutton
-#: ../data/gui/accounts_window.ui.h:59 ../data/gui/xml_console_window.ui.h:11
+#: ../data/gui/accounts_window.ui.h:61 ../data/gui/xml_console_window.ui.h:11
msgid "_Enable"
msgstr "Увімкнути"
-#: ../data/gui/accounts_window.ui.h:60
+#: ../data/gui/accounts_window.ui.h:62
msgid "_Hostname: "
msgstr "Назва _вузла:"
-#: ../data/gui/accounts_window.ui.h:62
+#: ../data/gui/accounts_window.ui.h:64 ../data/gui/preferences_window.ui.h:133
msgid "_Manage..."
msgstr "Керування..."
-#: ../data/gui/accounts_window.ui.h:64
+#: ../data/gui/accounts_window.ui.h:66
msgid "_Port: "
msgstr "_Порт:"
-#: ../data/gui/accounts_window.ui.h:65
+#: ../data/gui/accounts_window.ui.h:67
msgid "_Warn before using an insecure connection"
msgstr "_Попереджати перед використанням незахищеного з’єднання"
-#: ../data/gui/accounts_window.ui.h:66
+#: ../data/gui/accounts_window.ui.h:68
msgid "_use HTTP__PROXY environment variable"
msgstr "використовувати змінну середовища HTTP_PROXY"
@@ -506,7 +520,7 @@ msgstr "Д_озволити цьому контакту бачити мій ст
msgid "Add New Contact"
msgstr "Додати новий контакт"
-#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1339
+#: ../data/gui/add_new_contact_window.ui.h:4 ../src/common/helpers.py:1359
msgid "I would like to add you to my contact list."
msgstr "Я хочу додати вас до мого списку контактів."
@@ -724,8 +738,8 @@ msgstr "Заблоковані контакти"
#: ../data/gui/blocked_contacts_window.ui.h:2
#: ../data/gui/contact_context_menu.ui.h:25
-#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5621
-#: ../src/roster_window.py:5748 ../src/roster_window.py:5881
+#: ../data/gui/gc_occupants_menu.ui.h:14 ../src/roster_window.py:5707
+#: ../src/roster_window.py:5834 ../src/roster_window.py:5967
msgid "_Unblock"
msgstr "_Розблокувати"
@@ -889,16 +903,18 @@ msgid "Show the contact's profile (Ctrl+I)"
msgstr "Показати профіль контакту (Ctrl+I)"
#: ../data/gui/chat_control.ui.h:20
+#: ../src/command_system/implementation/standard.py:208
msgid "Toggle audio session"
msgstr "Перемкнути аудіо сессію"
#: ../data/gui/chat_control.ui.h:21
+#: ../src/command_system/implementation/standard.py:218
msgid "Toggle video session"
msgstr "Перемкнути відео сессію"
#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector)
#: ../data/gui/chat_control.ui.h:23 ../data/gui/groupchat_control.ui.h:9
-#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:275
+#: ../data/gui/xml_console_window.ui.h:16 ../src/filetransfers_window.py:277
msgid "_Send"
msgstr "_Надіслати"
@@ -953,8 +969,8 @@ msgstr "Редагувати _групи..."
#. Invite to
#. Invite to Groupchat
#: ../data/gui/contact_context_menu.ui.h:6
-#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5557
-#: ../src/roster_window.py:5716
+#: ../data/gui/gc_occupants_menu.ui.h:1 ../src/roster_window.py:5643
+#: ../src/roster_window.py:5802
msgid "In_vite to"
msgstr "За_просити до"
@@ -970,8 +986,8 @@ msgstr "К_ерування контактом"
msgid "Remo_ve"
msgstr "В_илучити"
-#: ../data/gui/contact_context_menu.ui.h:10 ../src/roster_window.py:5567
-#: ../src/roster_window.py:5805
+#: ../data/gui/contact_context_menu.ui.h:10 ../src/roster_window.py:5653
+#: ../src/roster_window.py:5891
msgid "Send Cus_tom Status"
msgstr "Надіслати не_типовий стан"
@@ -1004,8 +1020,8 @@ msgid "_Allow him/her to see my status"
msgstr "_Дозволити йому/їй бачити мій стан"
#: ../data/gui/contact_context_menu.ui.h:19
-#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5629
-#: ../src/roster_window.py:5754 ../src/roster_window.py:5884
+#: ../data/gui/gc_occupants_menu.ui.h:8 ../src/roster_window.py:5715
+#: ../src/roster_window.py:5840 ../src/roster_window.py:5970
msgid "_Block"
msgstr "_Заблокувати"
@@ -1016,7 +1032,7 @@ msgstr "_Заборонити йому/їй бачити мій стан"
#: ../data/gui/contact_context_menu.ui.h:21
#: ../data/gui/gc_control_popup_menu.ui.h:6
#: ../data/gui/gc_occupants_menu.ui.h:9 ../data/gui/roster_window.ui.h:23
-#: ../src/roster_window.py:5955
+#: ../src/roster_window.py:6041
msgid "_History"
msgstr "_Журнал"
@@ -1116,7 +1132,7 @@ msgstr ""
msgid "When a file transfer is complete show a popup notification"
msgstr "Показувати контекстне сповіщення про завершення передавання файла"
-#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:798
+#: ../data/gui/filetransfers.ui.h:13 ../src/filetransfers_window.py:808
msgid "_Continue"
msgstr "_Продовжити"
@@ -1124,7 +1140,8 @@ msgstr "_Продовжити"
msgid "_Notify me when a file transfer is complete"
msgstr "П_овідомити мене про завершення передавання файлу"
-#: ../data/gui/filetransfers.ui.h:15 ../src/filetransfers_window.py:205
+#: ../data/gui/filetransfers.ui.h:15 ../src/chat_control.py:3236
+#: ../src/filetransfers_window.py:206
msgid "_Open Containing Folder"
msgstr "В_ідкриту теку, яка містить цей файл"
@@ -1365,7 +1382,7 @@ msgstr "_Шукати у базі даних"
msgid "All Chat Histories"
msgstr "Усі журнали балачок"
-#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:323
+#: ../data/gui/history_window.ui.h:2 ../src/history_window.py:324
msgid "Conversation History"
msgstr "Журнал спілкування"
@@ -1382,10 +1399,18 @@ msgid "Search:"
msgstr "Пошук:"
#: ../data/gui/history_window.ui.h:6
+msgid "_In date search"
+msgstr "_Пошук по даті"
+
+#: ../data/gui/history_window.ui.h:7
#: ../data/gui/zeroconf_information_window.ui.h:10
msgid "_Log conversation history"
msgstr "_Зберігати журнал спілкування"
+#: ../data/gui/history_window.ui.h:8
+msgid "searching only in the selected day "
+msgstr "шукати лише зазначений день"
+
#: ../data/gui/item_archiving_preferences_window.ui.h:1
msgid "approve"
msgstr "підтвердити"
@@ -1450,7 +1475,7 @@ msgstr "потік"
msgid "Bro_wse Rooms"
msgstr "_Перегляд кімнат"
-#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2328
+#: ../data/gui/join_groupchat_window.ui.h:3 ../src/dialogs.py:2334
msgid "Join Group Chat"
msgstr "Приєднатись до групової балачки"
@@ -1474,7 +1499,7 @@ msgstr "Нещодавно:"
msgid "Room:"
msgstr "Кімната:"
-#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1816
+#: ../data/gui/join_groupchat_window.ui.h:9 ../src/config.py:1859
msgid "Server:"
msgstr "Сервер:"
@@ -1743,121 +1768,125 @@ msgid "All chat states"
msgstr "Усі стани балачок"
#: ../data/gui/preferences_window.ui.h:25
-msgid "Allow _OS information to be sent"
+msgid "Allow client / _OS information to be sent"
msgstr "Дозволити надсилання інформації про _операційну систему"
#: ../data/gui/preferences_window.ui.h:26
+msgid "Allow local system time information to be sent"
+msgstr "Дозволити надсилання інформації про місцевий час"
+
+#: ../data/gui/preferences_window.ui.h:27
msgid "Allow my _idle time to be sent"
msgstr "Дозволити надсилання часу бездіяльності"
-#: ../data/gui/preferences_window.ui.h:27
+#: ../data/gui/preferences_window.ui.h:28
msgid "Allow popup/notifications when I'm _away/na/busy/invisible"
msgstr ""
"Дозволити сповіщення у разі встановленого стану в_ідійшов/зайнятий/тощо"
-#: ../data/gui/preferences_window.ui.h:28
+#: ../data/gui/preferences_window.ui.h:29
msgid "Allow sound when I'm _busy"
msgstr "Дозволити звуки у стані _зайнятий."
-#: ../data/gui/preferences_window.ui.h:29
+#: ../data/gui/preferences_window.ui.h:30
msgid "Always"
msgstr "Завжди"
-#: ../data/gui/preferences_window.ui.h:30
+#: ../data/gui/preferences_window.ui.h:31
msgid "Ask status message when I:"
msgstr "Запитувати щодо повідомлення про стан, якщо я:"
-#: ../data/gui/preferences_window.ui.h:31 ../src/features_window.py:106
+#: ../data/gui/preferences_window.ui.h:32 ../src/features_window.py:106
msgid "Audio / Video"
msgstr "Аудіо/Відео"
-#: ../data/gui/preferences_window.ui.h:32
+#: ../data/gui/preferences_window.ui.h:33
msgid "Audio input device"
msgstr "Пристрій введення звуку"
-#: ../data/gui/preferences_window.ui.h:33
+#: ../data/gui/preferences_window.ui.h:34
msgid "Audio output device"
msgstr "Пристрій відтворення звуку"
-#: ../data/gui/preferences_window.ui.h:34
+#: ../data/gui/preferences_window.ui.h:35
msgid "Chat message:"
msgstr "Повідомлення балачки:"
-#: ../data/gui/preferences_window.ui.h:35
+#: ../data/gui/preferences_window.ui.h:36
msgid "Check on startup if Gajim is the _default Jabber client"
msgstr "Перевіряти при запуску, чи є Gajim _типовим клієнтом Jabber"
-#: ../data/gui/preferences_window.ui.h:36
+#: ../data/gui/preferences_window.ui.h:37
msgid "Composing only"
msgstr "Лише друк"
-#: ../data/gui/preferences_window.ui.h:37
+#: ../data/gui/preferences_window.ui.h:38
msgid "Configure color and font of the interface"
msgstr "Налаштувати шрифт та колір інтерфейсу"
-#: ../data/gui/preferences_window.ui.h:38
+#: ../data/gui/preferences_window.ui.h:39
msgid "Contact's message:"
msgstr "Повідомлення контакту:"
-#: ../data/gui/preferences_window.ui.h:39
+#: ../data/gui/preferences_window.ui.h:40
msgid "Contact's nickname:"
msgstr "Псевдонім контакту:"
-#: ../data/gui/preferences_window.ui.h:40
+#: ../data/gui/preferences_window.ui.h:41
msgid "Custom"
msgstr "Нетиповий"
-#: ../data/gui/preferences_window.ui.h:41
+#: ../data/gui/preferences_window.ui.h:42
msgid "Detached roster with chat grouped by account"
msgstr ""
"Відокремлений реєстр з балачками згуртованими відповідно облікових записів"
-#: ../data/gui/preferences_window.ui.h:42
+#: ../data/gui/preferences_window.ui.h:43
msgid "Detached roster with chat grouped by type"
msgstr "Відокремлений реєстр з балачками згуртованими відповідно типу"
-#: ../data/gui/preferences_window.ui.h:43
+#: ../data/gui/preferences_window.ui.h:44
msgid "Detached roster with detached chats"
msgstr "Відокремлений реєстр з окремими балачками"
-#: ../data/gui/preferences_window.ui.h:44
+#: ../data/gui/preferences_window.ui.h:45
msgid "Detached roster with single chat"
msgstr "Відокремлений реєстр з єдиним вікном балачок"
-#: ../data/gui/preferences_window.ui.h:45 ../src/config.py:170
-#: ../src/config.py:672
+#: ../data/gui/preferences_window.ui.h:46 ../src/config.py:171
+#: ../src/config.py:683
msgid "Disabled"
msgstr "Вимкнено"
-#: ../data/gui/preferences_window.ui.h:46
+#: ../data/gui/preferences_window.ui.h:47
msgid "Display _activity of contacts in roster"
msgstr "Показувати _заняття контактів у реєстрі"
-#: ../data/gui/preferences_window.ui.h:47
+#: ../data/gui/preferences_window.ui.h:48
msgid "Display _extra email details"
msgstr "Показати _подробиці щодо скриньки"
-#: ../data/gui/preferences_window.ui.h:48
+#: ../data/gui/preferences_window.ui.h:49
msgid "Display _location of contacts in roster"
msgstr "Показувати _положення контактів у реєстрі"
-#: ../data/gui/preferences_window.ui.h:49
+#: ../data/gui/preferences_window.ui.h:50
msgid "Display _tunes of contacts in roster"
msgstr "Показувати _музику контактів у реєстрі"
-#: ../data/gui/preferences_window.ui.h:50
+#: ../data/gui/preferences_window.ui.h:51
msgid "Display a_vatars of contacts in roster"
msgstr "Показувати _аватари контактів у реєстрі"
-#: ../data/gui/preferences_window.ui.h:51
+#: ../data/gui/preferences_window.ui.h:52
msgid "Display m_ood of contacts in roster"
msgstr "Показувати _настрій контактів у реєстрі"
-#: ../data/gui/preferences_window.ui.h:52
+#: ../data/gui/preferences_window.ui.h:53
msgid "Display status _messages of contacts in roster"
msgstr "Показувати _повідомлення про стан контактів з реєстру"
-#: ../data/gui/preferences_window.ui.h:53
+#: ../data/gui/preferences_window.ui.h:54
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1867,7 +1896,7 @@ msgstr ""
"ви вели з контактом. Тут ви можете вказати стани, які ви бажаєте бачити у "
"вікні розмови."
-#: ../data/gui/preferences_window.ui.h:54
+#: ../data/gui/preferences_window.ui.h:55
msgid ""
"Gajim can send and receive meta-information related to a conversation you "
"may have with a contact. Here you can specify which chatstates you want to "
@@ -1877,7 +1906,7 @@ msgstr ""
"спілкуванням з контактом. Тут ви можете зазначити стани, які ви бажаєте "
"надсилати іншому учаснику балачки."
-#: ../data/gui/preferences_window.ui.h:55
+#: ../data/gui/preferences_window.ui.h:56
msgid ""
"Gajim will notify you via a popup window in the bottom right of the screen "
"about contacts that just signed out"
@@ -1885,11 +1914,15 @@ msgstr ""
"Gajim буде сповіщати вас про вихід з мережі контактів за допомогою "
"контекстного вікна у нижній правій частині екрана"
-#: ../data/gui/preferences_window.ui.h:57
+#: ../data/gui/preferences_window.ui.h:58
+msgid "Global proxy:"
+msgstr "Глобальний проксі:"
+
+#: ../data/gui/preferences_window.ui.h:59
msgid "Hide all buttons in chat windows"
msgstr "Сховати усі кнопки у вікнах балачок"
-#: ../data/gui/preferences_window.ui.h:58
+#: ../data/gui/preferences_window.ui.h:60
msgid ""
"If checked, Gajim will allow others to detect the operation system you are "
"using"
@@ -1897,7 +1930,13 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim дозволить іншим визначати, яку "
"операційну систему ви використовуєте"
-#: ../data/gui/preferences_window.ui.h:59
+#: ../data/gui/preferences_window.ui.h:61
+msgid "If checked, Gajim will allow others to detect the time on your system"
+msgstr ""
+"Якщо буде позначено цей пункт, Gajim дозволить іншим визначати ваш місцевий "
+"час"
+
+#: ../data/gui/preferences_window.ui.h:62
msgid ""
"If checked, Gajim will also include information about the sender of the new "
"emails"
@@ -1905,14 +1944,14 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim буде також додавати інформацію про "
"авторів листів"
-#: ../data/gui/preferences_window.ui.h:60
+#: ../data/gui/preferences_window.ui.h:63
msgid ""
"If checked, Gajim will change status to Away when the computer is unused."
msgstr ""
"Якщо буде позначено цей пункт, Gajim буде змінювати стан на «Відсутній», "
"якщо комп’ютер не використовуватиметься."
-#: ../data/gui/preferences_window.ui.h:61
+#: ../data/gui/preferences_window.ui.h:64
msgid ""
"If checked, Gajim will change status to Not Available when the computer has "
"not been used even longer"
@@ -1920,7 +1959,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim змінюватиме стан на «Недоступний», якщо "
"на комп’ютері не спостерігатиметься активності користувача довше, ніж"
-#: ../data/gui/preferences_window.ui.h:62
+#: ../data/gui/preferences_window.ui.h:65
msgid ""
"If checked, Gajim will display avatars of contacts in roster window and in "
"group chats"
@@ -1928,7 +1967,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim буде показувати аватари контактів у "
"вікні реєстру і групових балачках"
-#: ../data/gui/preferences_window.ui.h:63
+#: ../data/gui/preferences_window.ui.h:66
msgid ""
"If checked, Gajim will display status messages of contacts under the contact "
"name in roster window and in group chats"
@@ -1936,35 +1975,35 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim буде показувати повідомлення про стан "
"під ім'ям контакту у вікні реєстру і групових балачках"
-#: ../data/gui/preferences_window.ui.h:64
+#: ../data/gui/preferences_window.ui.h:67
msgid ""
"If checked, Gajim will display the activity of contacts in the roster window"
msgstr ""
"Якщо буде позначено цей пункт, Gajim показуватиме рід занять контактів у "
"вікні реєстру"
-#: ../data/gui/preferences_window.ui.h:65
+#: ../data/gui/preferences_window.ui.h:68
msgid ""
"If checked, Gajim will display the location of contacts in the roster window"
msgstr ""
"Якщо буде позначено цей пункт, Gajim показуватиме положення контактів у "
"вікні реєстру"
-#: ../data/gui/preferences_window.ui.h:66
+#: ../data/gui/preferences_window.ui.h:69
msgid ""
"If checked, Gajim will display the mood of contacts in the roster window"
msgstr ""
"Якщо буде позначено цей пункт, Gajim показуватиме настрій контактів у вікні "
"реєстру"
-#: ../data/gui/preferences_window.ui.h:67
+#: ../data/gui/preferences_window.ui.h:70
msgid ""
"If checked, Gajim will display the tunes of contacts in the roster window"
msgstr ""
"Якщо буде позначено цей пункт, Gajim показуватиме музику, яку слухають "
"контакти у вікні реєстру"
-#: ../data/gui/preferences_window.ui.h:68
+#: ../data/gui/preferences_window.ui.h:71
msgid ""
"If checked, Gajim will highlight spelling errors in input fields of chat "
"windows. If no language is explicitly set via right click on the input "
@@ -1975,7 +2014,7 @@ msgstr ""
"контекстного меню (клацання правою кнопкою миші), буде використано типову "
"мову для контакту або групової балачки."
-#: ../data/gui/preferences_window.ui.h:69
+#: ../data/gui/preferences_window.ui.h:72
msgid ""
"If checked, Gajim will ignore incoming events from unauthorized contacts. "
"Use with caution, because it blocks all messages from any contact that is "
@@ -1986,7 +2025,7 @@ msgstr ""
"можливістю, оскільки її за її використання всі повідомлення від контактів, "
"яких немає у реєстрі, буде заблоковано."
-#: ../data/gui/preferences_window.ui.h:70
+#: ../data/gui/preferences_window.ui.h:73
msgid ""
"If checked, Gajim will keep logs for encrypted messages. Please note that "
"when using E2E encryption the remote party has to agree on logging, else the "
@@ -1997,7 +2036,7 @@ msgstr ""
"E2E, ваш співрозмовник має погодитися на запис до журналу, інакше "
"повідомлення не буде записано до журналу."
-#: ../data/gui/preferences_window.ui.h:71
+#: ../data/gui/preferences_window.ui.h:74
msgid ""
"If checked, Gajim will show a notification when a new e-mail is received via "
"GMail"
@@ -2005,7 +2044,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim показуватиме сповіщення про нові листи, "
"отримані поштовою скринькою GMail"
-#: ../data/gui/preferences_window.ui.h:72
+#: ../data/gui/preferences_window.ui.h:75
msgid ""
"If checked, Gajim will use protocol-specific status icons. (eg. A contact "
"from MSN will have the equivalent msn icon for status online, away, busy, "
@@ -2015,7 +2054,7 @@ msgstr ""
"протоколу піктограми станів. (Приклад: для контактів MSN будуть використані "
"відповідні піктограми msn для станів «в мережі», «відсутній» тощо)"
-#: ../data/gui/preferences_window.ui.h:73
+#: ../data/gui/preferences_window.ui.h:76
msgid ""
"If enabled, Gajim will not ask for a status message. The specified default "
"message will be used instead."
@@ -2023,7 +2062,7 @@ msgstr ""
"Якщо буде позначено цей пункт, Gajim не запитуватиме про повідомлення стану. "
"Програма використовуватиме вказане типове повідомлення."
-#: ../data/gui/preferences_window.ui.h:74
+#: ../data/gui/preferences_window.ui.h:77
msgid ""
"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent "
"animated or static graphical emoticons"
@@ -2031,67 +2070,67 @@ msgstr ""
"Якщо цей пункт буде позначено, Gajim замінюватиме ascii-емоційки, наприклад, "
"':)' відповідними статичними або анімованими емоційками"
-#: ../data/gui/preferences_window.ui.h:75
+#: ../data/gui/preferences_window.ui.h:78
msgid "Last state"
msgstr "Попередній стан: %"
-#: ../data/gui/preferences_window.ui.h:76
+#: ../data/gui/preferences_window.ui.h:79
msgid "Log _encrypted chat session"
msgstr "Записувати до журналу _шифровані сеанси балачки"
-#: ../data/gui/preferences_window.ui.h:77
+#: ../data/gui/preferences_window.ui.h:80
msgid "Ma_ke message windows compact"
msgstr "У_щільнити компонування вікон повідомлень"
-#: ../data/gui/preferences_window.ui.h:78
+#: ../data/gui/preferences_window.ui.h:81
msgid "Ma_nage..."
msgstr "Ке_рування..."
-#: ../data/gui/preferences_window.ui.h:79
+#: ../data/gui/preferences_window.ui.h:82
msgid "Never"
msgstr "Ніколи"
-#: ../data/gui/preferences_window.ui.h:80
+#: ../data/gui/preferences_window.ui.h:83
msgid "Notifications"
msgstr "Сповіщення"
-#: ../data/gui/preferences_window.ui.h:81
+#: ../data/gui/preferences_window.ui.h:84
msgid "Notify me about contacts that sign _in"
msgstr "Сповіщати мене про в_хід контактів до мережі"
-#: ../data/gui/preferences_window.ui.h:82
+#: ../data/gui/preferences_window.ui.h:85
msgid "Notify me about contacts that sign _out"
msgstr "Сповіщати мене про в_ихід контактів з мережі"
-#: ../data/gui/preferences_window.ui.h:83
+#: ../data/gui/preferences_window.ui.h:86
msgid "Notify me about it"
msgstr "Сповіщати мене про це"
-#: ../data/gui/preferences_window.ui.h:84
+#: ../data/gui/preferences_window.ui.h:87
msgid "Notify on new _GMail email"
msgstr "Сповіщати про нові листи _GMail"
-#: ../data/gui/preferences_window.ui.h:85
+#: ../data/gui/preferences_window.ui.h:88
msgid "Only when pending events"
msgstr "Лише події, що очікують уваги"
-#: ../data/gui/preferences_window.ui.h:86
+#: ../data/gui/preferences_window.ui.h:89
msgid "Personal Events"
msgstr "Особисті події"
-#: ../data/gui/preferences_window.ui.h:87
+#: ../data/gui/preferences_window.ui.h:90
msgid "Play _sounds"
msgstr "Відтворювати _звуки"
-#: ../data/gui/preferences_window.ui.h:88
+#: ../data/gui/preferences_window.ui.h:91
msgid "Pop it up"
msgstr "Підняти це"
-#: ../data/gui/preferences_window.ui.h:89
+#: ../data/gui/preferences_window.ui.h:92
msgid "Preferences"
msgstr "Параметри"
-#: ../data/gui/preferences_window.ui.h:90
+#: ../data/gui/preferences_window.ui.h:93
msgid ""
"STUN server hostname. If none given, Gajim will try\n"
"to discover one from server."
@@ -2099,31 +2138,31 @@ msgstr ""
"Ім’я серверу STUN. Якщо нічого не вказано\n"
"Gajim спробує отримати значення з серверу."
-#: ../data/gui/preferences_window.ui.h:92
+#: ../data/gui/preferences_window.ui.h:95
msgid "STUN server:"
msgstr "Сервер STUN:"
-#: ../data/gui/preferences_window.ui.h:93
+#: ../data/gui/preferences_window.ui.h:96
msgid "Show notification area icon:"
msgstr "Показувати піктограму зони сповіщень"
-#: ../data/gui/preferences_window.ui.h:94
+#: ../data/gui/preferences_window.ui.h:97
msgid "Show only in roster"
msgstr "_Показати лише у реєстрі"
-#: ../data/gui/preferences_window.ui.h:95
+#: ../data/gui/preferences_window.ui.h:98
msgid "Sign _in"
msgstr "Уві_йти"
-#: ../data/gui/preferences_window.ui.h:96
+#: ../data/gui/preferences_window.ui.h:99
msgid "Sign _out"
msgstr "Вий_ти"
-#: ../data/gui/preferences_window.ui.h:97
+#: ../data/gui/preferences_window.ui.h:100
msgid "Single window for everything"
msgstr "Єдине вікно для усього"
-#: ../data/gui/preferences_window.ui.h:98
+#: ../data/gui/preferences_window.ui.h:101
msgid ""
"Some messages may include rich content (formatting, colors etc). If checked, "
"Gajim will just display the raw message text."
@@ -2132,27 +2171,27 @@ msgstr ""
"тексту, кольори тощо). Якщо буде позначено цей пункт, Gajim показуватиме "
"простий текст без форматування."
-#: ../data/gui/preferences_window.ui.h:99
+#: ../data/gui/preferences_window.ui.h:102
msgid "Sort contacts by status"
msgstr "Впорядкувати контакти за станом"
-#: ../data/gui/preferences_window.ui.h:100 ../src/config.py:400
+#: ../data/gui/preferences_window.ui.h:103 ../src/config.py:401
msgid "Status"
msgstr "Стан"
-#: ../data/gui/preferences_window.ui.h:101
+#: ../data/gui/preferences_window.ui.h:104
msgid "Status _iconset:"
msgstr "Набір _піктограм стану:"
-#: ../data/gui/preferences_window.ui.h:102
+#: ../data/gui/preferences_window.ui.h:105
msgid "Style"
msgstr "Стиль"
-#: ../data/gui/preferences_window.ui.h:103
+#: ../data/gui/preferences_window.ui.h:106
msgid "T_heme:"
msgstr "Т_ема:"
-#: ../data/gui/preferences_window.ui.h:104
+#: ../data/gui/preferences_window.ui.h:107
msgid ""
"The auto away status message. If empty, Gajim will not change the current "
"status message\n"
@@ -2162,7 +2201,7 @@ msgstr ""
"Автоматичне повідомлення про відсутність. Якщо ви не вкажете тексту "
"повідомлення, Gajim не змінюватиме поточного повідомлення про стан."
-#: ../data/gui/preferences_window.ui.h:107
+#: ../data/gui/preferences_window.ui.h:110
msgid ""
"The auto not available status message. If empty, Gajim will not change the "
"current status message\n"
@@ -2172,127 +2211,127 @@ msgstr ""
"Автоматичне повідомлення про недоступність. Якщо ви не вкажете тексту "
"повідомлення, Gajim не змінюватиме поточного повідомлення про стан."
-#: ../data/gui/preferences_window.ui.h:110
+#: ../data/gui/preferences_window.ui.h:113
msgid "Use _transports icons"
msgstr "Використовувати піктограми _транспортів"
-#: ../data/gui/preferences_window.ui.h:111
+#: ../data/gui/preferences_window.ui.h:114
msgid "Use default applications"
msgstr "Використовувати типові програми"
-#: ../data/gui/preferences_window.ui.h:112
+#: ../data/gui/preferences_window.ui.h:115
msgid "Use system _default"
msgstr "Використовувати _типове для системи"
-#: ../data/gui/preferences_window.ui.h:113
+#: ../data/gui/preferences_window.ui.h:116
msgid "Video framerate"
msgstr "Частота кадрів відео"
-#: ../data/gui/preferences_window.ui.h:114
+#: ../data/gui/preferences_window.ui.h:117
msgid "Video input device"
msgstr "Пристрій введення відео"
-#: ../data/gui/preferences_window.ui.h:115
+#: ../data/gui/preferences_window.ui.h:118
msgid "Video output device"
msgstr "Пристрій відтворення відео"
-#: ../data/gui/preferences_window.ui.h:116
+#: ../data/gui/preferences_window.ui.h:119
msgid "Video size"
msgstr "Розмір відео"
-#: ../data/gui/preferences_window.ui.h:117
+#: ../data/gui/preferences_window.ui.h:120
msgid "When new event is received:"
msgstr "Якщо отримано нову подію:"
-#: ../data/gui/preferences_window.ui.h:118
+#: ../data/gui/preferences_window.ui.h:121
msgid "Your message:"
msgstr "Ваше повідомлення:"
-#: ../data/gui/preferences_window.ui.h:119
+#: ../data/gui/preferences_window.ui.h:122
msgid "Your nickname:"
msgstr "Ваш псевдонім:"
-#: ../data/gui/preferences_window.ui.h:120
+#: ../data/gui/preferences_window.ui.h:123
msgid "_Away after:"
msgstr "«_Відсутній» через:"
-#: ../data/gui/preferences_window.ui.h:121
+#: ../data/gui/preferences_window.ui.h:124
msgid "_Browser:"
msgstr "_Веб-переглядач:"
-#: ../data/gui/preferences_window.ui.h:122
+#: ../data/gui/preferences_window.ui.h:125
msgid "_Display chat state notifications:"
msgstr "_Показувати сповіщення стану балачки:"
-#: ../data/gui/preferences_window.ui.h:123
+#: ../data/gui/preferences_window.ui.h:126
msgid "_Emoticons:"
msgstr "_Емоційки:"
-#: ../data/gui/preferences_window.ui.h:124
+#: ../data/gui/preferences_window.ui.h:127
msgid "_File manager:"
msgstr "_Менеджер файлів:"
-#: ../data/gui/preferences_window.ui.h:125
+#: ../data/gui/preferences_window.ui.h:128
msgid "_Highlight misspelled words"
msgstr "_Виділяти слова з помилками"
-#: ../data/gui/preferences_window.ui.h:126
+#: ../data/gui/preferences_window.ui.h:129
msgid "_Ignore events from contacts not in the roster"
msgstr "_Ігнорувати події від контактів поза реєстром"
-#: ../data/gui/preferences_window.ui.h:127
+#: ../data/gui/preferences_window.ui.h:130
msgid "_Ignore rich content in incoming messages"
msgstr "_Ігнорувати позначки форматування у вхідних повідомленнях"
-#: ../data/gui/preferences_window.ui.h:128
+#: ../data/gui/preferences_window.ui.h:131
msgid "_Log status changes of contacts"
msgstr "_Записувати зміни стану контактів"
-#: ../data/gui/preferences_window.ui.h:129
+#: ../data/gui/preferences_window.ui.h:132
msgid "_Mail client:"
msgstr "_Поштовий клієнт:"
-#: ../data/gui/preferences_window.ui.h:130
+#: ../data/gui/preferences_window.ui.h:134
msgid "_Not available after:"
msgstr "«_Не доступний» через:"
-#: ../data/gui/preferences_window.ui.h:131
+#: ../data/gui/preferences_window.ui.h:135
msgid "_Open..."
msgstr "_Відкрити..."
-#: ../data/gui/preferences_window.ui.h:132
+#: ../data/gui/preferences_window.ui.h:136
msgid "_Reset to Default Colors"
msgstr "В_ідновити типові кольори"
-#: ../data/gui/preferences_window.ui.h:133
+#: ../data/gui/preferences_window.ui.h:137
msgid "_Send chat state notifications:"
msgstr "_Надсилати сповіщення про стан балачки:"
-#: ../data/gui/preferences_window.ui.h:134
+#: ../data/gui/preferences_window.ui.h:138
msgid "_Show roster on startup:"
msgstr "_Показувати реєстр при старті:з"
-#: ../data/gui/preferences_window.ui.h:135
+#: ../data/gui/preferences_window.ui.h:139
msgid "_Status message:"
msgstr "_Повідомлення про стан:"
-#: ../data/gui/preferences_window.ui.h:136
+#: ../data/gui/preferences_window.ui.h:140
msgid "_URL highlight:"
msgstr "Вид_ілення адрес URL:"
-#: ../data/gui/preferences_window.ui.h:137
+#: ../data/gui/preferences_window.ui.h:141
msgid "_Window behavior:"
msgstr "Пов_едінка вікна:"
-#: ../data/gui/preferences_window.ui.h:138
+#: ../data/gui/preferences_window.ui.h:142
msgid "in _group chats"
msgstr "у _групових балачках"
-#: ../data/gui/preferences_window.ui.h:139
+#: ../data/gui/preferences_window.ui.h:143
msgid "in _roster"
msgstr "у _реєстрі"
-#: ../data/gui/preferences_window.ui.h:140
+#: ../data/gui/preferences_window.ui.h:144
msgid "minutes"
msgstr "хвилин"
@@ -2344,7 +2383,7 @@ msgstr "JabberID"
msgid "Order:"
msgstr "Порядок:"
-#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3972
+#: ../data/gui/privacy_list_window.ui.h:12 ../src/dialogs.py:3979
msgid "Privacy List"
msgstr "Список конфіденційності"
@@ -2551,8 +2590,8 @@ msgstr "Вилучити обліковий запис з Gajim та з _сер
#. Remove group
#. Remove
-#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5639
-#: ../src/roster_window.py:5764 ../src/roster_window.py:5894
+#: ../data/gui/remove_account_window.ui.h:4 ../src/roster_window.py:5725
+#: ../src/roster_window.py:5850 ../src/roster_window.py:5980
msgid "_Remove"
msgstr "В_илучити"
@@ -2665,7 +2704,7 @@ msgid "_Add contact"
msgstr "Дод_ати контакт"
#. Information
-#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5906
+#: ../data/gui/search_window.ui.h:4 ../src/roster_window.py:5992
msgid "_Information"
msgstr "_Інформація"
@@ -3157,50 +3196,50 @@ msgstr ""
"Якщо ви надішлете файл %s, він або вона дізнаються про ваш справжній "
"ідентифікатор Jabber."
-#: ../src/chat_control.py:1623 ../src/chat_control.py:2135
+#: ../src/chat_control.py:1638 ../src/chat_control.py:2172
msgid "GPG encryption enabled"
msgstr "Шифрування GPG увімкнено"
-#: ../src/chat_control.py:1644 ../src/chat_control.py:1647
+#: ../src/chat_control.py:1659 ../src/chat_control.py:1662
msgid "Requires python-farsight."
msgstr "Потрібен python-farsight."
#. Add to roster
-#: ../src/chat_control.py:1673 ../src/common/contacts.py:149
-#: ../src/common/contacts.py:270 ../src/common/helpers.py:60
-#: ../src/common/helpers.py:254 ../src/dialogs.py:1099 ../src/dialogs.py:2222
-#: ../src/dialogs.py:2251 ../src/gui_interface.py:467
-#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:404
-#: ../src/roster_window.py:1644 ../src/roster_window.py:1646
-#: ../src/roster_window.py:1979 ../src/roster_window.py:3507
-#: ../src/roster_window.py:3534
+#: ../src/chat_control.py:1702 ../src/common/contacts.py:149
+#: ../src/common/contacts.py:270 ../src/common/helpers.py:67
+#: ../src/common/helpers.py:261 ../src/dialogs.py:1099 ../src/dialogs.py:2228
+#: ../src/dialogs.py:2257 ../src/gui_interface.py:472
+#: ../src/gui_menu_builder.py:254 ../src/gui_menu_builder.py:405
+#: ../src/roster_window.py:767 ../src/roster_window.py:1687
+#: ../src/roster_window.py:1689 ../src/roster_window.py:2022
+#: ../src/roster_window.py:3557 ../src/roster_window.py:3584
msgid "Not in Roster"
msgstr "Немає у реєстрі"
-#: ../src/chat_control.py:1704
+#: ../src/chat_control.py:1734
msgid "This contact does not support file transfer."
msgstr "Цей контакт не підтримує передавання файлів."
-#: ../src/chat_control.py:1707
+#: ../src/chat_control.py:1737
msgid "You need to know the real JID of the contact to send him or her a file."
msgstr "Ви маєте знати справжній JID контакту, щоб надсилати йому чи їй файл."
-#: ../src/chat_control.py:1814
+#: ../src/chat_control.py:1851
#, python-format
msgid "%(type)s state : %(state)s, reason: %(reason)s"
msgstr "%(type)s стан : %(state)s, причина: %(reason)s"
-#: ../src/chat_control.py:2005
+#: ../src/chat_control.py:2042
#, python-format
msgid "%(nickname)s from group chat %(room_name)s"
msgstr "%(nickname)s з групової балачки %(room_name)s"
#. No key assigned nor a key is used by remote contact
-#: ../src/chat_control.py:2115 ../src/dialogs.py:5033
+#: ../src/chat_control.py:2152 ../src/dialogs.py:5040
msgid "No GPG key assigned"
msgstr "Немає ключа GPG"
-#: ../src/chat_control.py:2116
+#: ../src/chat_control.py:2153
msgid ""
"No GPG key is assigned to this contact. So you cannot encrypt messages with "
"GPG."
@@ -3208,50 +3247,50 @@ msgstr ""
"З цим контактом не пов’язано жодного ключа GPG. Отже ви не зможете шифрувати "
"повідомлення за допомогою GPG."
-#: ../src/chat_control.py:2125
+#: ../src/chat_control.py:2162
msgid "GPG encryption disabled"
msgstr "Шифрування GPG вимкнено"
-#: ../src/chat_control.py:2151
+#: ../src/chat_control.py:2188
msgid "Session WILL be logged"
msgstr "Сеанс БУДЕ записано до журналу"
-#: ../src/chat_control.py:2153
+#: ../src/chat_control.py:2190
msgid "Session WILL NOT be logged"
msgstr "Сеанс НЕ БУДЕ записано до журналу"
#. encryption %s active
-#: ../src/chat_control.py:2170
+#: ../src/chat_control.py:2207
msgid "is"
msgstr "є"
-#: ../src/chat_control.py:2170
+#: ../src/chat_control.py:2207
msgid "is NOT"
msgstr "НЕ є"
#. chat session %s be logged
-#: ../src/chat_control.py:2172
+#: ../src/chat_control.py:2209
msgid "will"
msgstr "буде"
-#: ../src/chat_control.py:2172
+#: ../src/chat_control.py:2209
msgid "will NOT"
msgstr "НЕ буде"
#. About encrypted chat session
-#: ../src/chat_control.py:2176
+#: ../src/chat_control.py:2213
msgid "and authenticated"
msgstr "і уповноваженим"
#. About encrypted chat session
-#: ../src/chat_control.py:2180
+#: ../src/chat_control.py:2217
msgid "and NOT authenticated"
msgstr "і НЕ уповноваженим"
#. status will become 'is' or 'is not', authentificaed will become
#. 'and authentificated' or 'and not authentificated', logged will become
#. 'will' or 'will not'
-#: ../src/chat_control.py:2187
+#: ../src/chat_control.py:2224
#, python-format
msgid ""
"%(type)s encryption %(status)s active %(authenticated)s.\n"
@@ -3260,31 +3299,31 @@ msgstr ""
"Шифрування %(type)s %(status)s активним %(authenticated)s.\n"
"Ваш сеанс балачки %(logged)s записано до журналу."
-#: ../src/chat_control.py:2314
+#: ../src/chat_control.py:2351
msgid "Session negotiation cancelled"
msgstr "Встановлення сеансу було скасовано"
-#: ../src/chat_control.py:2324
+#: ../src/chat_control.py:2361
msgid "This session WILL be archived on server"
msgstr "Цей сеанс БУДЕ збережена на сервері"
-#: ../src/chat_control.py:2326
+#: ../src/chat_control.py:2363
msgid "This session WILL NOT be archived on server"
msgstr "Цей сеанс НЕ БУДЕ збережено на сервері"
-#: ../src/chat_control.py:2335
+#: ../src/chat_control.py:2372
msgid "This session is encrypted"
msgstr "Цей сеанс зашифровано"
-#: ../src/chat_control.py:2338
+#: ../src/chat_control.py:2375
msgid " and WILL be logged"
msgstr " і БУДЕ записано до журналу"
-#: ../src/chat_control.py:2340
+#: ../src/chat_control.py:2377
msgid " and WILL NOT be logged"
msgstr " і НЕ БУДЕ записано до журналу"
-#: ../src/chat_control.py:2345
+#: ../src/chat_control.py:2382
msgid ""
"Remote contact's identity not verified. Click the shield button for more "
"details."
@@ -3292,25 +3331,25 @@ msgstr ""
"Особу віддаленого контакту не було перевірено. Натисніть кнопку з щитом, щоб "
"ознайомитися з подробицями."
-#: ../src/chat_control.py:2347
+#: ../src/chat_control.py:2384
msgid "E2E encryption disabled"
msgstr "Шифрування E2E вимкнено"
-#: ../src/chat_control.py:2394 ../src/chat_control.py:2407
+#: ../src/chat_control.py:2432 ../src/chat_control.py:2445
msgid "The following message was NOT encrypted"
msgstr "Наступне повідомлення НЕ було зашифровано"
-#: ../src/chat_control.py:2400
+#: ../src/chat_control.py:2438
msgid "The following message was encrypted"
msgstr "Наступне повідомлення було зашифровано"
#. %s is being replaced in the code with JID
-#: ../src/chat_control.py:2667
+#: ../src/chat_control.py:2707
#, python-format
msgid "You just received a new message from \"%s\""
msgstr "Ви щойно отримали нове повідомлення від «%s»"
-#: ../src/chat_control.py:2668
+#: ../src/chat_control.py:2708
msgid ""
"If you close this tab and you have history disabled, this message will be "
"lost."
@@ -3318,15 +3357,14 @@ msgstr ""
"Якщо ви закриєте вкладку, а журнал було вимкнено, це повідомлення буде "
"втрачено."
-#: ../src/chat_control.py:2835 ../src/common/connection_handlers_events.py:865
-#: ../src/common/connection_handlers.py:945
-#: ../src/common/connection_handlers.py:1057
-#: ../src/common/connection_handlers.py:1718 ../src/common/connection.py:451
-#: ../src/common/logger.py:1127 ../src/gajim.py:207 ../src/session.py:100
+#: ../src/chat_control.py:2875 ../src/common/connection_handlers_events.py:887
+#: ../src/common/connection_handlers.py:942
+#: ../src/common/connection_handlers.py:1054 ../src/common/connection.py:456
+#: ../src/common/logger.py:1144 ../src/gajim.py:210 ../src/session.py:100
msgid "Database Error"
msgstr "Помилка бази даних"
-#: ../src/chat_control.py:2836
+#: ../src/chat_control.py:2876
#, python-format
msgid ""
"The database file (%s) cannot be read. Try to repair it or remove it (all "
@@ -3335,7 +3373,7 @@ msgstr ""
"Не вдалося прочитати файл бази даних (%s). Спробуйте виправити або вилучити "
"його (всі записи журналу буде втрачено)."
-#: ../src/chat_control.py:3072 ../src/gui_interface.py:1032
+#: ../src/chat_control.py:3112 ../src/gui_interface.py:1061
#, python-format
msgid ""
"Unable to decrypt message from %s\n"
@@ -3344,11 +3382,248 @@ msgstr ""
"Не вдалося розшифрувати повідомлення від %s\n"
"Можливо, хтось втрутився у ваше з’єднання."
-#: ../src/chat_control.py:3105
+#: ../src/chat_control.py:3145
#, python-format
msgid "%(name)s is now %(status)s"
msgstr "%(name)s тепер %(status)s"
+#: ../src/chat_control.py:3204
+msgid "File transfer"
+msgstr "Перенесення файлів"
+
+#: ../src/chat_control.py:3207
+msgid "Size"
+msgstr "Розмір"
+
+#: ../src/chat_control.py:3209
+msgid "_Accept"
+msgstr "_Прийняти"
+
+#: ../src/chat_control.py:3232 ../src/filetransfers_window.py:204
+msgid "File transfer completed"
+msgstr "Передавання файла завершено"
+
+#: ../src/chat_control.py:3260 ../src/gui_interface.py:932
+#: ../src/roster_window.py:1934
+msgid "Remote contact stopped transfer"
+msgstr "Віддалений контакт зупинив передавання файлу"
+
+#: ../src/chat_control.py:3262 ../src/gui_interface.py:935
+#: ../src/roster_window.py:1936
+msgid "Error opening file"
+msgstr "Помилка під час спроби прочитати файл"
+
+#: ../src/chat_control.py:3264 ../src/filetransfers_window.py:240
+msgid "File transfer stopped"
+msgstr "Зупинка передавання файла"
+
+#: ../src/chat_control.py:3267 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:226
+msgid "File transfer cancelled"
+msgstr "Передавання файла скасовано"
+
+#: ../src/chat_control.py:3268 ../src/filetransfers_window.py:219
+#: ../src/filetransfers_window.py:227
+msgid "Connection with peer cannot be established."
+msgstr "Не вдалося встановити з’єднання з вузлом."
+
+#: ../src/command_system/implementation/custom.py:105
+msgid "The same as using a doc-string, except it supports translation"
+msgstr ""
+"Так само як для використання doc-string, за виключенням наявної підтримки "
+"перекладів"
+
+#: ../src/command_system/implementation/execute.py:53
+msgid "Execute expression inside a shell, show output"
+msgstr "Виконати вираз у оболонці, показати результат"
+
+#: ../src/command_system/implementation/execute.py:109
+msgid "Execute expression inside a shell, send output"
+msgstr "Виконати вираз у оболонці, надіслати результат"
+
+#: ../src/command_system/implementation/standard.py:50
+msgid "Hide the chat buttons"
+msgstr "Сховати кнопки балачки"
+
+#: ../src/command_system/implementation/standard.py:56
+msgid ""
+"Show help on a given command or a list of available commands if -a is given"
+msgstr "Показати довідку по команді або перелік команд якщо вказано -a"
+
+#: ../src/command_system/implementation/standard.py:83
+msgid "Send a message to the contact"
+msgstr "Надіслати повідомлення контакту"
+
+#: ../src/command_system/implementation/standard.py:88
+msgid "Send action (in the third person) to the current chat"
+msgstr "Надіслати дію (від третьої особи) до поточної балачки"
+
+#: ../src/command_system/implementation/standard.py:93
+msgid "Show logged messages which mention given text"
+msgstr "Показувати збережені повідомлення що містять відповідний текст"
+
+#: ../src/command_system/implementation/standard.py:99
+#, python-format
+msgid "%s: Nothing found"
+msgstr "%s: не знайдено"
+
+#: ../src/command_system/implementation/standard.py:105
+msgid "Limit must be an integer"
+msgstr "Обмеження має бути цілим числом"
+
+#: ../src/command_system/implementation/standard.py:140
+msgid ""
+"\n"
+" Set current the status\n"
+"\n"
+" Status can be given as one of the following values: online, away,\n"
+" chat, xa, dnd.\n"
+" "
+msgstr ""
+"\n"
+" Встановити поточний стан\n"
+"\n"
+" Стан може бути одним з наведених: online, away,\n"
+" chat, xa, dnd.\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:153
+msgid "Set the current status to away"
+msgstr "Встановити поточний стан як відсутній"
+
+#: ../src/command_system/implementation/standard.py:156
+#: ../src/common/commands.py:109 ../src/common/helpers.py:249
+#: ../src/tooltips.py:194
+msgid "Away"
+msgstr "Далеко"
+
+#: ../src/command_system/implementation/standard.py:161
+msgid "Set the current status to online"
+msgstr "Встановити поточний стан як на зв’язку"
+
+#: ../src/command_system/implementation/standard.py:164
+msgid "Available"
+msgstr "Доступний"
+
+#: ../src/command_system/implementation/standard.py:178
+#: ../src/command_system/implementation/standard.py:255
+msgid "Clear the text window"
+msgstr "Очистити текстове вікно"
+
+#: ../src/command_system/implementation/standard.py:183
+msgid "Toggle the GPG encryption"
+msgstr "Перемкнути GPG-шифрування"
+
+#: ../src/command_system/implementation/standard.py:188
+msgid "Send a ping to the contact"
+msgstr "Надіслати запит присутності до контакту"
+
+#: ../src/command_system/implementation/standard.py:191
+msgid "Command is not supported for zeroconf accounts"
+msgstr "Команда не підтримується для облікових записів zeroconf"
+
+#: ../src/command_system/implementation/standard.py:195
+msgid "Send DTMF sequence through an open audio session"
+msgstr "Надіслати DTMF послідовність через відкриту аудіо сесію"
+
+#: ../src/command_system/implementation/standard.py:198
+msgid "No open audio sessions with the contact"
+msgstr "Нема відкритих аудіо сесій з контактом"
+
+#: ../src/command_system/implementation/standard.py:201
+#, python-format
+msgid "%s is not a valid tone"
+msgstr "%s не є коректним тоном"
+
+#: ../src/command_system/implementation/standard.py:211
+msgid "Audio sessions are not available"
+msgstr "Аудіо сесія недоступна"
+
+#: ../src/command_system/implementation/standard.py:221
+msgid "Video sessions are not available"
+msgstr "Відео сесія недоступна"
+
+#: ../src/command_system/implementation/standard.py:262
+msgid "Change your nickname in a group chat"
+msgstr "Змінити ваш псевдонім у груповій балачці"
+
+#. invalid char
+#: ../src/command_system/implementation/standard.py:267 ../src/config.py:3392
+#: ../src/dialogs.py:2075
+msgid "Invalid nickname"
+msgstr "Некоректний псевдонім"
+
+#: ../src/command_system/implementation/standard.py:272
+msgid "Open a private chat window with a specified occupant"
+msgstr "_Відкрити вікно приватної балачки з зазначеним користувачем"
+
+#: ../src/command_system/implementation/standard.py:278
+#: ../src/command_system/implementation/standard.py:287
+#: ../src/command_system/implementation/standard.py:341
+msgid "Nickname not found"
+msgstr "Псевдонім не знайдено"
+
+#: ../src/command_system/implementation/standard.py:281
+msgid ""
+"Open a private chat window with a specified occupant and send him a message"
+msgstr ""
+"Відкрити вікно приватної балачки з зазначеним користувачем та надіслати йому "
+"повідомлення"
+
+#: ../src/command_system/implementation/standard.py:290
+msgid "Display or change a group chat topic"
+msgstr "Показати або змінити тему групової балачки"
+
+#: ../src/command_system/implementation/standard.py:298
+msgid "Invite a user to a room for a reason"
+msgstr "Запросити користувача в кімнату вказавши причину"
+
+#: ../src/command_system/implementation/standard.py:301
+#, python-format
+msgid "Invited %s to %s"
+msgstr "Запрошено %s до %s"
+
+#: ../src/command_system/implementation/standard.py:304
+msgid "Join a group chat given by a jid, optionally using given nickname"
+msgstr "Приєднатися до групової балачки по JID, або за псевдонімом"
+
+#: ../src/command_system/implementation/standard.py:321
+msgid ""
+"Leave the groupchat, optionally giving a reason, and close tab or window"
+msgstr ""
+"Покинути групову балачку, за бажанням вказавши причину, та закрити вкладку "
+"або вікно"
+
+#: ../src/command_system/implementation/standard.py:326
+msgid ""
+"\n"
+" Ban user by a nick or a jid from a groupchat\n"
+"\n"
+" If given nickname is not found it will be treated as a jid.\n"
+" "
+msgstr ""
+"\n"
+" Заблокувати користувача у груповій балачці по JID або псевдоніму\n"
+"\n"
+" Якщо вказаний псевдонім не буде знайдено, він буде оброблений як jid.\n"
+" "
+
+#: ../src/command_system/implementation/standard.py:338
+msgid "Kick user by a nick from a groupchat"
+msgstr "Викинути користувача з групової балачки за псевдонімом"
+
+#: ../src/command_system/implementation/standard.py:345
+msgid "Display names of all group chat occupants"
+msgstr "Показати імена усіх учасників балачки"
+
+#: ../src/command_system/implementation/standard.py:367
+msgid "Forbid an occupant to send you public or private messages"
+msgstr "Заборонити учаснику надсилати вам особисті або публічні повідомлення"
+
+#: ../src/command_system/implementation/standard.py:372
+msgid "Allow an occupant to send you public or private messages"
+msgstr "Дозволити учаснику надсилати вам особисті або публічні повідомлення"
+
#: ../src/common/check_paths.py:38
msgid "creating logs database"
msgstr "створення бази даних журналів"
@@ -3403,11 +3678,6 @@ msgstr "Вільний для балачки"
msgid "Online"
msgstr "В мережі"
-#: ../src/common/commands.py:109 ../src/common/helpers.py:242
-#: ../src/tooltips.py:193
-msgid "Away"
-msgstr "Далеко"
-
#: ../src/common/commands.py:110
msgid "Extended away"
msgstr "Не буде довго"
@@ -3447,9 +3717,9 @@ msgstr "Оберіть групові балачки, які ви бажаєте
#. Make special context menu if group is Groupchats
#: ../src/common/commands.py:215 ../src/common/contacts.py:128
-#: ../src/common/helpers.py:60 ../src/roster_window.py:817
-#: ../src/roster_window.py:1648 ../src/roster_window.py:1650
-#: ../src/roster_window.py:2512 ../src/roster_window.py:5524
+#: ../src/common/helpers.py:67 ../src/roster_window.py:820
+#: ../src/roster_window.py:1691 ../src/roster_window.py:1693
+#: ../src/roster_window.py:2557 ../src/roster_window.py:5610
msgid "Groupchats"
msgstr "Групові балачки"
@@ -3571,9 +3841,9 @@ msgstr ""
"згорнуто."
#. sorted alphanum
-#: ../src/common/config.py:108 ../src/common/config.py:497
+#: ../src/common/config.py:108 ../src/common/config.py:504
#: ../src/common/optparser.py:296 ../src/common/optparser.py:492
-#: ../src/common/optparser.py:526 ../src/gui_interface.py:2634
+#: ../src/common/optparser.py:526 ../src/gui_interface.py:2668
msgid "default"
msgstr "типовий"
@@ -4267,7 +4537,13 @@ msgstr ""
"Якщо увімкнено, Gajim покаже членство учасників балачки додаванням "
"кольорового квадрату до піктограми стану."
-#: ../src/common/config.py:306
+#: ../src/common/config.py:293
+msgid ""
+"Proxy used for all outgoing connections if the account does not have a "
+"specific proxy configured"
+msgstr "Проксі що використовується для усіх вихідних з’єднань не налаштовано"
+
+#: ../src/common/config.py:307
msgid ""
"Priority will change automatically according to your status. Priorities are "
"defined in autopriority_* options."
@@ -4275,7 +4551,7 @@ msgstr ""
"Пріоритет автоматично змінюватиметься залежно від вашого стану. Пріоритети "
"визначаються за допомогою параметрів autopriority_*."
-#: ../src/common/config.py:314
+#: ../src/common/config.py:315
msgid ""
"Status used to autoconnect as. Can be online, chat, away, xa, dnd, "
"invisible. NOTE: this option is used only if restore_last_status is disabled"
@@ -4284,38 +4560,38 @@ msgstr ""
"значення: online, chat, away, xa, dnd, invisible. ЗАУВАЖЕННЯ: цей параметр "
"використовуватиметься, лише якщо вимкнено параметр restore_last_status"
-#: ../src/common/config.py:315
+#: ../src/common/config.py:316
msgid "If enabled, restore the last status that was used."
msgstr "Якщо увімкнено, відновлювати попередній використаний стан."
-#: ../src/common/config.py:317
+#: ../src/common/config.py:318
msgid ""
"If True, Contacts requesting authorization will be automatically accepted."
msgstr "Якщо Істино, усі запити авторизації буде автоматично задоволено."
-#: ../src/common/config.py:318
+#: ../src/common/config.py:319
msgid ""
"If False, this account will be disabled and will not appear in roster window."
msgstr ""
"Якщо цей параметр матиме значення «False», обліковий запис буде вимкнено та "
"не буде відображатись у вікні реєстру."
-#: ../src/common/config.py:321
+#: ../src/common/config.py:322
msgid ""
"If disabled, don't sign presences with GPG key, even if GPG is configured."
msgstr ""
"Якщо вимкнено, не підписувати повідомлення про присутність ключем GPG, "
"навіть якщо GPG налаштовано для використання."
-#: ../src/common/config.py:323
+#: ../src/common/config.py:324
msgid "Enable ESessions encryption for this account."
msgstr "Увімкнути шифрування ESession для цього облікового запису."
-#: ../src/common/config.py:324
+#: ../src/common/config.py:325
msgid "Should Gajim automatically start an encrypted session when possible?"
msgstr "Чи має Gajim автоматично починати сеанс з шифруванням за можливості?"
-#: ../src/common/config.py:325
+#: ../src/common/config.py:326
msgid ""
"Ordered list (space separated) of connection type to try. Can contain tls, "
"ssl or plain"
@@ -4323,31 +4599,33 @@ msgstr ""
"Впорядкований список відокремлених комами типів з’єднання, які має "
"спробувати програма. Можливі значення: tls, ssl і plain"
-#: ../src/common/config.py:326
+#: ../src/common/config.py:327
msgid ""
-"Show a warning dialog before sending password on an plaintext connection."
+"Show a warning dialog before sending password on an plaintext connection. "
+"Can be 'warn', 'connect', 'disconnect'"
msgstr ""
-"Показувати діалогове вікно попередження, перш ніж надсилати пароль "
-"нешифрованим з’єднанням."
+"Показувати діалогове вікно попередження, перш ніж надсилати пароль звичайним "
+"текстом. "
+"Може бути 'поперджати', 'з’єднувати', 'відключати'"
-#: ../src/common/config.py:327
+#: ../src/common/config.py:328
msgid "Show a warning dialog before using standard SSL library."
msgstr ""
"Показувати діалогове вікно попередження, перш ніж користуватися стандартною "
"бібліотекою SSL."
-#: ../src/common/config.py:328
+#: ../src/common/config.py:329
msgid ""
"Show a warning dialog before sending PLAIN password over a plain connection."
msgstr ""
"Показувати діалогове вікно попередження, перш ніж надсилати відкритий пароль "
"незашифрованим з'єднанням."
-#: ../src/common/config.py:330
+#: ../src/common/config.py:331
msgid "Space separated list of ssl errors to ignore."
msgstr "Відокремлений пробілами список помилок ssl, які слід ігнорувати."
-#: ../src/common/config.py:336
+#: ../src/common/config.py:337
msgid ""
"Space separated list of JIDs for which you do not want to store logs. You "
"can also add account name to log nothing for this account."
@@ -4356,7 +4634,7 @@ msgstr ""
"журнали. Ви можете також додати назву облікового запису для якого не буде "
"вестись журналювання."
-#: ../src/common/config.py:337
+#: ../src/common/config.py:338
msgid ""
"Space separated list of JIDs for which you accept to not log conversations "
"if he does not want to."
@@ -4364,15 +4642,15 @@ msgstr ""
"Розділений пробілами перелік ідентифікаторів JID для яких ви згодні не "
"зберігати записи якщо вони цього не хочуть."
-#: ../src/common/config.py:340
+#: ../src/common/config.py:341
msgid "Whitespace sent after inactivity"
msgstr "Надсилання порожнього повідомлення після неактивності."
-#: ../src/common/config.py:341
+#: ../src/common/config.py:342
msgid "XMPP ping sent after inactivity"
msgstr "Надсилання XMPP ехо після неактивності."
-#: ../src/common/config.py:345
+#: ../src/common/config.py:346
msgid ""
"How many seconds to wait for the answer of ping alive packet before we try "
"to reconnect."
@@ -4382,11 +4660,11 @@ msgstr ""
"з’єднання."
#. yes, no, ask
-#: ../src/common/config.py:349
+#: ../src/common/config.py:350
msgid "Jabberd2 workaround"
msgstr "Обхідний прийом для Jabberd2"
-#: ../src/common/config.py:352
+#: ../src/common/config.py:353
msgid ""
"If checked, Gajim will use your IP and proxies defined in "
"file_transfer_proxies option for file transfer."
@@ -4395,26 +4673,35 @@ msgstr ""
"проксі сервери, визначення параметром file_transfer_proxies, для передавання "
"файлів."
-#: ../src/common/config.py:366
+#: ../src/common/config.py:354
+msgid ""
+"If True, Gajim will test file transfer proxies on startup to be sure it "
+"works. Openfire's proxies are known to fail this test even if they work."
+msgstr ""
+"Якщо увімкнено, Gajim буде тестувати проксі для надсилання файлів при старті, "
+"щоб переконатись у їх працездатності. Openfire не проходить цей тест навіть "
+"якщо працездатний."
+
+#: ../src/common/config.py:368
msgid "Answer to receipt requests"
msgstr "Відповідати на запити щодо підтвердження отримання"
-#: ../src/common/config.py:367
+#: ../src/common/config.py:369
msgid "Sent receipt requests"
msgstr "Надіслані запити на підтвердження отримання"
-#: ../src/common/config.py:376
+#: ../src/common/config.py:378
msgid ""
"Allow Gajim to send information about the operating system you are running."
msgstr ""
"Дозволити Gajim надсилати інформацію, яку операційну систему ви "
"використовуєте"
-#: ../src/common/config.py:377
+#: ../src/common/config.py:379
msgid "Allow Gajim to send your local time."
msgstr "Дозволятии Gajim надсилати ваш локальний часд"
-#: ../src/common/config.py:378
+#: ../src/common/config.py:380
msgid ""
"When negotiating an encrypted session, should Gajim assume you want your "
"messages to be logged?"
@@ -4422,19 +4709,48 @@ msgstr ""
"Під час налаштування сеансу з шифруванням, чи слід Gajim припускати, що ви "
"бажаєте вести запис повідомлень?"
-#: ../src/common/config.py:381
+#: ../src/common/config.py:383
msgid "Message that is sent to contacts you want to add"
msgstr "Повідомлення що буде надіслано контакту який ви бажаєте додати"
-#: ../src/common/config.py:382
+#: ../src/common/config.py:384
msgid "Last time we syncronized with logs from server."
msgstr "Останній раз коли було синхронізовано журнали з сервером"
-#: ../src/common/config.py:444
+#: ../src/common/config.py:385
+msgid ""
+"If enabled and if server supports this feature, Gajim will receive messages "
+"sent and received by other resources."
+msgstr ""
+"Якщо увімкнено та сервер підтримує цю можливість, Gajim буде отримувати "
+"повідомлення "
+"надіслані та отримані іншими ресурсами."
+
+#: ../src/common/config.py:386
+msgid ""
+"If enabled, Gajim will send your local IPs so your contact can connect to "
+"your machine to transfer files."
+msgstr ""
+"Якщо увімкнено, Gajim надішле ваш локальний IP щоб контакт міг з’єднатись "
+"та надіслати вам файли."
+
+#: ../src/common/config.py:387
+msgid "Latest token for Oauth2 authentication."
+msgstr "Останній запис аутентифікації Oauth2"
+
+#: ../src/common/config.py:388
+msgid "client_id for Oauth2 authentication."
+msgstr "client_id для аутентифікації Oauth2"
+
+#: ../src/common/config.py:389
+msgid "redirect_url for Oauth2 authentication."
+msgstr "redirect_url для аутентифікації Oauth2."
+
+#: ../src/common/config.py:451
msgid "Is OpenPGP enabled for this contact?"
msgstr "Чи увімкнено OpenPGP для цього контакту?"
-#: ../src/common/config.py:445
+#: ../src/common/config.py:452
msgid ""
"Should Gajim automatically start an encrypted session with this contact when "
"possible?"
@@ -4442,11 +4758,11 @@ msgstr ""
"Чи має Gajim за можливості автоматично запускати шифрований сеанс "
"спілкування з цим контактом?"
-#: ../src/common/config.py:446 ../src/common/config.py:449
+#: ../src/common/config.py:453 ../src/common/config.py:456
msgid "Language for which we want to check misspelled words"
msgstr "Мова, згідно правил якої відбуватиметься перевірка правопису слів"
-#: ../src/common/config.py:452
+#: ../src/common/config.py:459
msgid ""
"State whether plugins should be activated on exit (this is saved on Gajim "
"exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI "
@@ -4456,83 +4772,83 @@ msgstr ""
"виході з Gajim). Ця опція НЕ ПОВИННА бути використана для (де)активації "
"додатків. Використовуйте для цього графічний інтерфейс користувача."
-#: ../src/common/config.py:457 ../src/common/pep.py:157
+#: ../src/common/config.py:464 ../src/common/pep.py:157
msgid "Sleeping"
msgstr "Сплю"
-#: ../src/common/config.py:458
+#: ../src/common/config.py:465
msgid "Back soon"
msgstr "Скоро повернуся"
-#: ../src/common/config.py:458
+#: ../src/common/config.py:465
msgid "Back in some minutes."
msgstr "Повернуся за декілька хвилин."
-#: ../src/common/config.py:459 ../src/common/pep.py:127
+#: ../src/common/config.py:466 ../src/common/pep.py:127
msgid "Eating"
msgstr "Їм"
-#: ../src/common/config.py:459
+#: ../src/common/config.py:466
msgid "I'm eating, so leave me a message."
msgstr "Зараз їм, залиште повідомлення, перегляну пізніше."
-#: ../src/common/config.py:460
+#: ../src/common/config.py:467
msgid "Movie"
msgstr "Відео"
-#: ../src/common/config.py:460
+#: ../src/common/config.py:467
msgid "I'm watching a movie."
msgstr "Я дивлюся відео."
-#: ../src/common/config.py:461 ../src/common/pep.py:186
+#: ../src/common/config.py:468 ../src/common/pep.py:186
msgid "Working"
msgstr "Працюю"
-#: ../src/common/config.py:461
+#: ../src/common/config.py:468
msgid "I'm working."
msgstr "Я працюю."
-#: ../src/common/config.py:462
+#: ../src/common/config.py:469
msgid "Phone"
msgstr "Телефон"
-#: ../src/common/config.py:462
+#: ../src/common/config.py:469
msgid "I'm on the phone."
msgstr "Я розмовляю телефоном."
-#: ../src/common/config.py:463
+#: ../src/common/config.py:470
msgid "Out"
msgstr "Відійшов(шла)"
-#: ../src/common/config.py:463
+#: ../src/common/config.py:470
msgid "I'm out enjoying life."
msgstr "Я насолоджуюся життям."
-#: ../src/common/config.py:474
+#: ../src/common/config.py:481
msgid "I'm available."
msgstr "Я — доступний (доступна) для балачки."
-#: ../src/common/config.py:475
+#: ../src/common/config.py:482
msgid "I'm free for chat."
msgstr "Я — вільний (вільна) для балачки."
-#: ../src/common/config.py:476 ../src/config.py:1609
+#: ../src/common/config.py:483 ../src/config.py:1652
msgid "Be right back."
msgstr "Скоро повернуся."
-#: ../src/common/config.py:477
+#: ../src/common/config.py:484
msgid "I'm not available."
msgstr "Я — недоступний (недоступна) для балачки."
-#: ../src/common/config.py:478
+#: ../src/common/config.py:485
msgid "Do not disturb."
msgstr "Не турбувати."
-#: ../src/common/config.py:479 ../src/common/config.py:480
+#: ../src/common/config.py:486 ../src/common/config.py:487
msgid "Bye!"
msgstr "Пока!"
-#: ../src/common/config.py:490
+#: ../src/common/config.py:497
msgid ""
"Sound to play when a group chat message contains one of the words in "
"muc_highlight_words, or when a group chat message contains your nickname."
@@ -4541,27 +4857,31 @@ msgstr ""
"зі слів, вказаних за допомогою параметра muc_highlight_words, або якщо "
"повідомлення групової балачки містить ваш псевдонім."
-#: ../src/common/config.py:491
+#: ../src/common/config.py:498
msgid "Sound to play when any MUC message arrives."
msgstr "Звук, який буде відтворено за появи повідомлення групової балачки."
-#: ../src/common/config.py:500 ../src/common/optparser.py:310
+#: ../src/common/config.py:507 ../src/common/optparser.py:310
msgid "green"
msgstr "зелений"
-#: ../src/common/config.py:504 ../src/common/optparser.py:296
+#: ../src/common/config.py:511 ../src/common/optparser.py:296
msgid "grocery"
msgstr "овочевий"
-#: ../src/common/config.py:508
+#: ../src/common/config.py:515
msgid "human"
msgstr "тілесний"
-#: ../src/common/config.py:512
+#: ../src/common/config.py:519
msgid "marine"
msgstr "морський"
-#: ../src/common/connection_handlers_events.py:345
+#: ../src/common/config.py:526
+msgid "Tor"
+msgstr "Tor"
+
+#: ../src/common/connection_handlers_events.py:367
#, python-format
msgid ""
"JID %s is not RFC compliant. It will not be added to your roster. Use roster "
@@ -4571,25 +4891,23 @@ msgstr ""
"Скористайтеся інструментами для керування реєстром, наприклад, http://jru."
"jabberstudio.org/ для його вилучення"
-#: ../src/common/connection_handlers_events.py:777
+#: ../src/common/connection_handlers_events.py:799
#, python-format
msgid "unsubscribe request from %s"
msgstr "запит на скасування підписки від %s"
-#: ../src/common/connection_handlers_events.py:862
-#: ../src/common/connection_handlers.py:339
-#: ../src/common/connection_handlers.py:943
-#: ../src/common/connection_handlers.py:1055
-#: ../src/common/connection_handlers.py:1716 ../src/common/connection.py:448
-#: ../src/common/logger.py:1125 ../src/gajim.py:389
+#: ../src/common/connection_handlers_events.py:884
+#: ../src/common/connection_handlers.py:334
+#: ../src/common/connection_handlers.py:940
+#: ../src/common/connection_handlers.py:1052 ../src/common/connection.py:453
+#: ../src/common/logger.py:1142 ../src/gajim.py:392
msgid "Disk Write Error"
msgstr "Помилка під час спроби запису на диск"
-#: ../src/common/connection_handlers_events.py:866
-#: ../src/common/connection_handlers.py:946
-#: ../src/common/connection_handlers.py:1058
-#: ../src/common/connection_handlers.py:1719 ../src/common/connection.py:452
-#: ../src/common/logger.py:1128 ../src/gajim.py:208 ../src/session.py:101
+#: ../src/common/connection_handlers_events.py:888
+#: ../src/common/connection_handlers.py:943
+#: ../src/common/connection_handlers.py:1055 ../src/common/connection.py:457
+#: ../src/common/logger.py:1145 ../src/gajim.py:211 ../src/session.py:101
#, python-format
msgid ""
"The database file (%s) cannot be read. Try to repair it (see http://trac."
@@ -4601,313 +4919,316 @@ msgstr ""
#. Room has been destroyed. see
#. http://www.xmpp.org/extensions/xep-0045.html#destroyroom
-#: ../src/common/connection_handlers_events.py:887
+#: ../src/common/connection_handlers_events.py:909
msgid "Room has been destroyed"
msgstr "Кімнату було знищено"
-#: ../src/common/connection_handlers_events.py:895
+#: ../src/common/connection_handlers_events.py:917
#, python-format
msgid "You can join this room instead: %s"
msgstr "Ви можете приєднатися замість цієї кімнати до %s"
-#: ../src/common/connection_handlers_events.py:968
-#: ../src/common/connection.py:259 ../src/config.py:2106 ../src/config.py:2115
-#: ../src/config.py:2183 ../src/config.py:3619 ../src/dataforms_widget.py:623
-#: ../src/dialogs.py:3085
+#: ../src/common/connection_handlers_events.py:1001
+#: ../src/common/connection_handlers_events.py:1033
+#: ../src/common/connection_handlers_events.py:1049
+#: ../src/common/connection.py:263 ../src/config.py:2149 ../src/config.py:2158
+#: ../src/config.py:2226 ../src/config.py:3663 ../src/dataforms_widget.py:623
+#: ../src/dialogs.py:3092
msgid "Invalid Jabber ID"
msgstr "Некоректний ідентифікатор Jabber"
-#: ../src/common/connection_handlers_events.py:969
+#: ../src/common/connection_handlers_events.py:1002
+#: ../src/common/connection_handlers_events.py:1034
+#: ../src/common/connection_handlers_events.py:1050
msgid "A message from a non-valid JID arrived, it has been ignored."
msgstr ""
"Надійшло повідомлення від некоректного JID, це повідомлення було "
"проігноровано."
#. ('MSGNOTSENT', account, (jid, ierror_msg, msg, time, session))
-#: ../src/common/connection_handlers_events.py:1006
-#: ../src/gui_interface.py:415 ../src/gui_interface.py:429
+#: ../src/common/connection_handlers_events.py:1076
+#: ../src/gui_interface.py:420 ../src/gui_interface.py:434
#, python-format
msgid "error while sending %(message)s ( %(error)s )"
msgstr "помилка під час надсилання %(message)s ( %(error)s )"
-#: ../src/common/connection_handlers_events.py:1423
+#: ../src/common/connection_handlers_events.py:1508
#, python-format
msgid "Unknown SSL error: %d"
msgstr "Невідома помилка SSL: %d"
-#: ../src/common/connection_handlers_events.py:1951 ../src/dialogs.py:2772
-#: ../src/notify.py:267
+#: ../src/common/connection_handlers_events.py:2040 ../src/dialogs.py:2779
+#: ../src/notify.py:263
msgid "New Single Message"
msgstr "Створити окреме повідомлення"
-#: ../src/common/connection_handlers_events.py:1953
+#: ../src/common/connection_handlers_events.py:2042
#, python-format
msgid "New Single Message from %(nickname)s"
msgstr "Нове окреме повідомлення від %(nickname)s"
-#: ../src/common/connection_handlers_events.py:1957 ../src/dialogs.py:2773
-#: ../src/notify.py:268
+#: ../src/common/connection_handlers_events.py:2046 ../src/dialogs.py:2780
+#: ../src/notify.py:264
msgid "New Private Message"
msgstr "Нове конфіденційне повідомлення"
-#: ../src/common/connection_handlers_events.py:1959
+#: ../src/common/connection_handlers_events.py:2048
#, python-format
msgid "New Private Message from group chat %s"
msgstr "Нове конфіденційне повідомлення з групової балачки %s"
-#: ../src/common/connection_handlers_events.py:1962
+#: ../src/common/connection_handlers_events.py:2051
#, python-format
msgid "%(nickname)s: %(message)s"
msgstr "%(nickname)s: %(message)s"
-#: ../src/common/connection_handlers_events.py:1965
+#: ../src/common/connection_handlers_events.py:2054
#, python-format
msgid "Messaged by %(nickname)s"
msgstr "Повідомлення надіслано від імені %(nickname)s"
-#: ../src/common/connection_handlers_events.py:1969 ../src/dialogs.py:2772
-#: ../src/notify.py:267
+#: ../src/common/connection_handlers_events.py:2058 ../src/dialogs.py:2779
+#: ../src/notify.py:263
msgid "New Message"
msgstr "Нове повідомлення"
-#: ../src/common/connection_handlers_events.py:1971
+#: ../src/common/connection_handlers_events.py:2060
#, python-format
msgid "New Message from %(nickname)s"
msgstr "Нове повідомлення від %(nickname)s"
-#: ../src/common/connection_handlers_events.py:2100
+#: ../src/common/connection_handlers_events.py:2189
#, python-format
msgid "%(nick)s Changed Status"
msgstr "%(nick)s змінив стан"
-#: ../src/common/connection_handlers_events.py:2102
+#: ../src/common/connection_handlers_events.py:2191
#: ../src/groupchat_control.py:205 ../src/groupchat_control.py:1766
-#: ../src/history_window.py:447
+#: ../src/history_window.py:448
#, python-format
msgid "%(nick)s is now %(status)s"
msgstr "%(nick)s тепер %(status)s"
-#: ../src/common/connection_handlers_events.py:2107 ../src/dialogs.py:2784
-#: ../src/notify.py:281
+#: ../src/common/connection_handlers_events.py:2196 ../src/dialogs.py:2791
+#: ../src/notify.py:277
msgid "Contact Changed Status"
msgstr "Зміна контактом стану"
-#: ../src/common/connection_handlers_events.py:2109
+#: ../src/common/connection_handlers_events.py:2198
#, python-format
msgid "%(nickname)s Signed In"
msgstr "%(nickname)s в мережі"
#. default value
-#: ../src/common/connection_handlers_events.py:2114 ../src/dialogs.py:2768
-#: ../src/notify.py:263
+#: ../src/common/connection_handlers_events.py:2203 ../src/dialogs.py:2775
+#: ../src/notify.py:259
msgid "Contact Signed In"
msgstr "Контакт увійшов до мережі"
-#: ../src/common/connection_handlers_events.py:2116
+#: ../src/common/connection_handlers_events.py:2205
#, python-format
msgid "%(nickname)s Signed Out"
msgstr "%(nickname)s вийшов з мережі"
-#: ../src/common/connection_handlers_events.py:2121 ../src/dialogs.py:2770
-#: ../src/notify.py:265
+#: ../src/common/connection_handlers_events.py:2210 ../src/dialogs.py:2777
+#: ../src/notify.py:261
msgid "Contact Signed Out"
msgstr "Контакт вийшов з мережі"
-#: ../src/common/connection_handlers.py:95
+#: ../src/common/connection_handlers.py:88
#: ../src/common/zeroconf/connection_handlers_zeroconf.py:54
msgid "Unable to load idle module"
msgstr "Не вдалося завантажити модуль перевірки відсутності активності"
-#: ../src/common/connection_handlers.py:128
+#: ../src/common/connection_handlers.py:121
#, python-format
msgid "Registration information for transport %s has not arrived in time"
msgstr ""
"Відомості щодо реєстрації з транспорту %s не надійшли протягом визначеного "
"проміжку часу"
-#: ../src/common/connection_handlers.py:135
+#: ../src/common/connection_handlers.py:129
msgid "Registration succeeded"
msgstr "Зареєструватися на %s"
-#: ../src/common/connection_handlers.py:136
+#: ../src/common/connection_handlers.py:130
#, python-format
msgid "Registration with agent %s succeeded"
msgstr "Реєстрацію з агентом %s вдало закінчено"
-#: ../src/common/connection_handlers.py:144
+#: ../src/common/connection_handlers.py:139
msgid "Registration failed"
msgstr "Спроба з’єднання завершилася невдало"
-#: ../src/common/connection_handlers.py:144
+#: ../src/common/connection_handlers.py:140
#, python-format
msgid ""
"Registration with agent %(agent)s failed with error %(error)s: %(error_msg)s"
msgstr ""
"Реєстрація з агентом %(agent)s невдала через помилку %(error)s: %(error_msg)s"
-#: ../src/common/connection_handlers.py:573 ../src/common/connection.py:1546
+#: ../src/common/connection_handlers.py:571 ../src/common/connection.py:1540
msgid "Invisibility not supported"
msgstr "Невидимість не підтримується"
-#: ../src/common/connection_handlers.py:574 ../src/common/connection.py:1547
+#: ../src/common/connection_handlers.py:572 ../src/common/connection.py:1541
#, python-format
msgid "Account %s doesn't support invisibility."
msgstr "Обліковий запис %s не підтримує невидимості."
-#: ../src/common/connection_handlers.py:1761
+#: ../src/common/connection_handlers.py:1714
msgid "I would like to add you to my roster."
msgstr "Я хочу додати вас до свого реєстру."
-#: ../src/common/connection.py:68
+#: ../src/common/connection.py:70
msgid "Unable to get issuer certificate"
msgstr "Не вдається отримати сертифікат видавця"
-#: ../src/common/connection.py:69
+#: ../src/common/connection.py:71
msgid "Unable to get certificate CRL"
msgstr "Не вдалося отримати список відкликаних сертифікатів"
-#: ../src/common/connection.py:70
+#: ../src/common/connection.py:72
msgid "Unable to decrypt certificate's signature"
msgstr "Не вдалося розшифрувати підпис сертифікату"
-#: ../src/common/connection.py:71
+#: ../src/common/connection.py:73
msgid "Unable to decrypt CRL's signature"
msgstr "Не вдалося розшифрувати підпис списку відкликаних сертифікатів"
-#: ../src/common/connection.py:72
+#: ../src/common/connection.py:74
msgid "Unable to decode issuer public key"
msgstr "Не вдалося декодувати відкритий ключ видавця"
-#: ../src/common/connection.py:73
+#: ../src/common/connection.py:75
msgid "Certificate signature failure"
msgstr "Помилка під час підписування сертифіката"
-#: ../src/common/connection.py:74
+#: ../src/common/connection.py:76
msgid "CRL signature failure"
msgstr "Помилка під час роботи з підписом списку відкликаних сертифікатів"
-#: ../src/common/connection.py:75
+#: ../src/common/connection.py:77
msgid "Certificate is not yet valid"
msgstr "Сертифікат ще не набув чинності"
-#: ../src/common/connection.py:76
+#: ../src/common/connection.py:78
msgid "Certificate has expired"
msgstr "Строк дії сертифікату завершився!"
-#: ../src/common/connection.py:77
+#: ../src/common/connection.py:79
msgid "CRL is not yet valid"
msgstr "Строк дії CRL ще не почався"
-#: ../src/common/connection.py:78
+#: ../src/common/connection.py:80
msgid "CRL has expired"
msgstr "Строк дії CRL завершився"
-#: ../src/common/connection.py:79
+#: ../src/common/connection.py:81
msgid "Format error in certificate's notBefore field"
msgstr "Помилка форматування у полі сертифіката notBefore"
-#: ../src/common/connection.py:80
+#: ../src/common/connection.py:82
msgid "Format error in certificate's notAfter field"
msgstr "Помилка форматування у полі сертифіката notAfter"
-#: ../src/common/connection.py:81
+#: ../src/common/connection.py:83
msgid "Format error in CRL's lastUpdate field"
msgstr "Помилка форматування у полі сертифіката lastUpdate"
-#: ../src/common/connection.py:82
+#: ../src/common/connection.py:84
msgid "Format error in CRL's nextUpdate field"
msgstr "Помилка форматування у полі сертифіката nextUpdate"
-#: ../src/common/connection.py:83
+#: ../src/common/connection.py:85
msgid "Out of memory"
msgstr "Не вистачає пам'яті"
-#: ../src/common/connection.py:84
+#: ../src/common/connection.py:86
msgid "Self signed certificate"
msgstr "Сертифікат є самопідписаним"
-#: ../src/common/connection.py:85
+#: ../src/common/connection.py:87
msgid "Self signed certificate in certificate chain"
msgstr "Самопідписаний сертифікат у ланцюжку сертифікатів"
-#: ../src/common/connection.py:86
+#: ../src/common/connection.py:88
msgid "Unable to get local issuer certificate"
msgstr "Не вдалося отримати сертифікат локального видавця"
-#: ../src/common/connection.py:87
+#: ../src/common/connection.py:89
msgid "Unable to verify the first certificate"
msgstr "Не вдалося перевірити перший сертифікат"
-#: ../src/common/connection.py:88
+#: ../src/common/connection.py:90
msgid "Certificate chain too long"
msgstr "Ланцюжок сертифіката занадто великий"
-#: ../src/common/connection.py:89
+#: ../src/common/connection.py:91
msgid "Certificate revoked"
msgstr "Сертифікат відкликано"
-#: ../src/common/connection.py:90
+#: ../src/common/connection.py:92
msgid "Invalid CA certificate"
msgstr "Некоректний сертифікат CA"
-#: ../src/common/connection.py:91
+#: ../src/common/connection.py:93
msgid "Path length constraint exceeded"
msgstr "Перевищення обмеження на довжину адреси"
-#: ../src/common/connection.py:92
+#: ../src/common/connection.py:94
msgid "Unsupported certificate purpose"
msgstr "Непідтримуване призначення сертифіката"
-#: ../src/common/connection.py:93
+#: ../src/common/connection.py:95
msgid "Certificate not trusted"
msgstr "Сертифікат є недостовірним"
-#: ../src/common/connection.py:94
+#: ../src/common/connection.py:96
msgid "Certificate rejected"
msgstr "Сертифікат відхилено"
-#: ../src/common/connection.py:95
+#: ../src/common/connection.py:97
msgid "Subject issuer mismatch"
msgstr "Видано для іншого призначення"
-#: ../src/common/connection.py:96
+#: ../src/common/connection.py:98
msgid "Authority and subject key identifier mismatch"
msgstr "Не збігаються поля видавця та ідентифікатора призначення ключа"
-#: ../src/common/connection.py:97
+#: ../src/common/connection.py:99
msgid "Authority and issuer serial number mismatch"
msgstr "Серійні номери служби сертифікації і видавця не збігаються"
-#: ../src/common/connection.py:98
+#: ../src/common/connection.py:100
msgid "Key usage does not include certificate signing"
msgstr "До призначення ключа не належить підписування сертифікатів"
-#: ../src/common/connection.py:99
+#: ../src/common/connection.py:101
msgid "Application verification failure"
msgstr "Помилка під час перевірки програми"
-#: ../src/common/connection.py:260 ../src/dialogs.py:3086
+#: ../src/common/connection.py:264 ../src/dialogs.py:3093
#, python-format
msgid "It is not possible to send a message to %s, this JID is not valid."
msgstr "Неможливо надіслати повідомлення до %s, вказаний JID не є коректним."
-#: ../src/common/connection.py:282
+#: ../src/common/connection.py:286
msgid "Neither the remote presence is signed, nor a key was assigned."
msgstr "Не підписано повідомлення про присутність, ключа також не призначено."
-#: ../src/common/connection.py:285
+#: ../src/common/connection.py:289
#, python-format
msgid "The contact's key (%s) does not match the key assigned in Gajim."
msgstr ""
"Ключ контакту (%s) не збігається з ключем, призначеним для нього у Gajim."
-#. we're not english
-#. one in locale and one en
-#: ../src/common/connection.py:337
+#. we're not english: one in locale and one en
+#: ../src/common/connection.py:342
msgid "[This message is *encrypted* (See :XEP:`27`]"
msgstr "[Це повідомлення *зашифровано* (див. :XEP:`27`]"
-#: ../src/common/connection.py:435
+#: ../src/common/connection.py:440
#, python-format
msgid ""
"Subject: %(subject)s\n"
@@ -4916,18 +5237,18 @@ msgstr ""
"Тема: %(subject)s\n"
"%(message)s"
-#: ../src/common/connection.py:845
+#: ../src/common/connection.py:850
#, python-format
msgid "Connection with account \"%s\" has been lost"
msgstr "З’єднання з обліковим записом «%s» було втрачено"
-#: ../src/common/connection.py:846
+#: ../src/common/connection.py:851
msgid "Reconnect manually."
msgstr "Виконати повторне з’єднання вручну."
#. it's a new account
#. wrong answer
-#: ../src/common/connection.py:857
+#: ../src/common/connection.py:862
#, python-format
msgid "Server %(name)s answered wrongly to register request: %(error)s"
msgstr ""
@@ -4935,60 +5256,59 @@ msgstr ""
"реєстрації: %(error)s"
#. requested config has changed since first connection
-#: ../src/common/connection.py:899
+#: ../src/common/connection.py:904
#, python-format
msgid "Server %s provided a different registration form"
msgstr "На сервері %s передбачено іншу форму реєстрації"
-#. wrong answer
-#: ../src/common/connection.py:915
+#: ../src/common/connection.py:921
msgid "Invalid answer"
msgstr "Некоректна відповідь"
-#: ../src/common/connection.py:916
+#: ../src/common/connection.py:922
#, python-format
msgid "Transport %(name)s answered wrongly to register request: %(error)s"
msgstr ""
"Транспорт %(name)s надіслав помилкову відповідь на запит щодо реєстрації: "
"%(error)s"
-#: ../src/common/connection.py:1224 ../src/common/connection.py:1358
-#: ../src/common/connection.py:1972
-#: ../src/common/zeroconf/connection_zeroconf.py:204
+#: ../src/common/connection.py:1197 ../src/common/connection.py:1349
+#: ../src/common/connection.py:1976
+#: ../src/common/zeroconf/connection_zeroconf.py:205
#, python-format
msgid "Could not connect to \"%s\""
msgstr "Не вдалося з’єднатися з «%s»"
-#: ../src/common/connection.py:1225 ../src/gui_interface.py:524
+#: ../src/common/connection.py:1198 ../src/gui_interface.py:529
msgid "Check your connection or try again later."
msgstr "Перевірте ваше з’єднання, а потім повторіть спробу."
-#: ../src/common/connection.py:1230
+#: ../src/common/connection.py:1203
#, python-format
msgid "Server replied: %s"
msgstr "Збережено за адресою: %s"
-#: ../src/common/connection.py:1243
+#: ../src/common/connection.py:1218
msgid "Connection to proxy failed"
msgstr "Спроба встановити з'єднання з проксі-сервером завершилася невдало"
-#: ../src/common/connection.py:1275 ../src/common/connection.py:1337
+#: ../src/common/connection.py:1256 ../src/common/connection.py:1328
#, python-format
msgid "Could not connect to account %s"
msgstr "Не вдалося з’єднатися з обліковим записом %s"
-#: ../src/common/connection.py:1276 ../src/common/connection.py:1338
+#: ../src/common/connection.py:1257 ../src/common/connection.py:1329
#, python-format
msgid "Connection with account %s has been lost. Retry connecting."
msgstr ""
"З’єднання з обліковим записом було втрачено %s. Повторна спроба з’єднання."
-#: ../src/common/connection.py:1301
+#: ../src/common/connection.py:1282
#, python-format
msgid "The authenticity of the %s certificate could be invalid."
msgstr "Достовірність сертифіката %s знаходиться під питанням."
-#: ../src/common/connection.py:1304
+#: ../src/common/connection.py:1285
#, python-format
msgid ""
"\n"
@@ -4997,7 +5317,7 @@ msgstr ""
"\n"
"Помилка SSL: <b>%s</b>"
-#: ../src/common/connection.py:1306
+#: ../src/common/connection.py:1287
#, python-format
msgid ""
"\n"
@@ -5006,67 +5326,76 @@ msgstr ""
"\n"
"Невідома помилка SSL: %d"
-#: ../src/common/connection.py:1359
+#: ../src/common/connection.py:1310
+#, python-format
+msgid ""
+"The authenticity of the %s certificate could be invalid.\n"
+"The certificate does not cover this domain."
+msgstr ""
+"Достовірність сертифіката %s знаходиться під питанням. "
+"Сертифікат не відповідає поточному домену."
+
+#: ../src/common/connection.py:1350
msgid "Check your connection or try again later"
msgstr "Перевірте ваше з’єднання або повторіть спробу пізніше"
-#: ../src/common/connection.py:1393
+#: ../src/common/connection.py:1385
#, python-format
msgid "Authentication failed with \"%s\""
msgstr "Спроба розпізнавання за допомогою «%s» завершилася невдало"
-#: ../src/common/connection.py:1395
-msgid "Please check your login and password for correctness."
+#: ../src/common/connection.py:1386
+msgid "Please check your login and passwordfor correctness."
msgstr "Будь ласка, перевірте, чи правильно вказано ім’я користувача і пароль."
-#: ../src/common/connection.py:1468
+#: ../src/common/connection.py:1461
msgid "Error while removing privacy list"
msgstr "Помилка під час вилучення списку конфіденційності"
-#: ../src/common/connection.py:1469
+#: ../src/common/connection.py:1462
#, python-format
msgid ""
"Privacy list %s has not been removed. It is maybe active in one of your "
-"connected resources. Deactivate it and try again."
+"connected resources. Deactivate it and tryagain."
msgstr ""
"Список конфіденційності %s не було вилучено. Ймовірно, він використовується "
"у одному з ресурсів, з яким з’єднано ваш клієнт. Вимкніть цей ресурс і "
"повторіть спробу."
-#: ../src/common/connection.py:1839
+#: ../src/common/connection.py:1843
#, python-format
msgid "Sent contact: \"%s\" (%s)"
msgstr "Відправлений контакт: \"%s\" (%s)"
-#: ../src/common/connection.py:1842
+#: ../src/common/connection.py:1846
msgid "Sent contacts:"
msgstr "Надіслати контакти:"
-#: ../src/common/connection.py:1989 ../src/common/connection.py:2012
+#: ../src/common/connection.py:1993 ../src/common/connection.py:2016
msgid "Not fetched because of invisible status"
msgstr "Не отримано через стан невидимості"
-#: ../src/common/connection.py:2543
+#: ../src/common/connection.py:2575
msgid "Unregister failed"
msgstr "Спроба скасування реєстрації завершилася невдало"
-#: ../src/common/connection.py:2544
+#: ../src/common/connection.py:2576
#, python-format
msgid "Unregistration with server %(server)s failed: %(error)s"
msgstr ""
"Видалення реєстрації з серверу %(server)s не вдалося через помилку: %(error)s"
-#: ../src/common/contacts.py:126 ../src/common/helpers.py:60
-#: ../src/gui_interface.py:467
+#: ../src/common/contacts.py:126 ../src/common/helpers.py:67
+#: ../src/gui_interface.py:472
msgid "Observers"
msgstr "Спостерігачі"
#: ../src/common/contacts.py:130 ../src/common/contacts.py:358
-#: ../src/common/helpers.py:60 ../src/disco.py:120 ../src/disco.py:121
-#: ../src/disco.py:1517 ../src/roster_window.py:856
-#: ../src/roster_window.py:1552 ../src/roster_window.py:1640
-#: ../src/roster_window.py:1642 ../src/roster_window.py:1804
-#: ../src/roster_window.py:2480
+#: ../src/common/helpers.py:67 ../src/disco.py:120 ../src/disco.py:121
+#: ../src/disco.py:1517 ../src/roster_window.py:859
+#: ../src/roster_window.py:1579 ../src/roster_window.py:1683
+#: ../src/roster_window.py:1685 ../src/roster_window.py:1847
+#: ../src/roster_window.py:2525
msgid "Transports"
msgstr "Транспорти"
@@ -5291,230 +5620,230 @@ msgstr "Кінець тижня"
msgid "Weekend!"
msgstr "Вихідні!"
-#: ../src/common/helpers.py:151
+#: ../src/common/helpers.py:158
msgid "Username must be between 1 and 1023 chars"
msgstr "Ім’я користувача повинно бути від 1 до 1023 символів"
-#: ../src/common/helpers.py:156
+#: ../src/common/helpers.py:163
msgid "Invalid character in username."
msgstr "Некоректний символ у імені користувача."
-#: ../src/common/helpers.py:162
+#: ../src/common/helpers.py:169
msgid "Server must be between 1 and 1023 chars"
msgstr "Сервер має бути від 1 до 1023 символів"
-#: ../src/common/helpers.py:167
+#: ../src/common/helpers.py:174
msgid "Invalid character in hostname."
msgstr "Некоректний символ у назві вузла."
-#: ../src/common/helpers.py:169
+#: ../src/common/helpers.py:176
msgid "Server address required."
msgstr "Слід вказати адресу сервера."
-#: ../src/common/helpers.py:173
+#: ../src/common/helpers.py:180
msgid "Resource must be between 1 and 1023 chars"
msgstr "Ресурс має бути від 1 до 1023 символів"
-#: ../src/common/helpers.py:178
+#: ../src/common/helpers.py:185
msgid "Invalid character in resource."
msgstr "Некоректний символ у назві ресурсу."
-#: ../src/common/helpers.py:218
+#: ../src/common/helpers.py:225
msgid "_Busy"
msgstr "_Зайнятий"
-#: ../src/common/helpers.py:220 ../src/tooltips.py:195
+#: ../src/common/helpers.py:227 ../src/tooltips.py:196
msgid "Busy"
msgstr "Зайнятий"
-#: ../src/common/helpers.py:223
+#: ../src/common/helpers.py:230
msgid "_Not Available"
msgstr "_Не доступний"
-#: ../src/common/helpers.py:225 ../src/tooltips.py:197
+#: ../src/common/helpers.py:232 ../src/tooltips.py:198
msgid "Not Available"
msgstr "Дуже далеко"
-#: ../src/common/helpers.py:228
+#: ../src/common/helpers.py:235
msgid "_Free for Chat"
msgstr "_Вільний для балачки"
-#: ../src/common/helpers.py:230 ../src/tooltips.py:191
+#: ../src/common/helpers.py:237 ../src/tooltips.py:192
msgid "Free for Chat"
msgstr "Вільний для балачки"
-#: ../src/common/helpers.py:233
+#: ../src/common/helpers.py:240
msgid "?user status:_Available"
msgstr "?стан користувача:_Доступний"
-#: ../src/common/helpers.py:235 ../src/tooltips.py:189
+#: ../src/common/helpers.py:242 ../src/tooltips.py:190
msgid "?user status:Available"
msgstr "?стан користувача:Доступний"
-#: ../src/common/helpers.py:237
+#: ../src/common/helpers.py:244
msgid "Connecting"
msgstr "Виконується з'єднання"
-#: ../src/common/helpers.py:240
+#: ../src/common/helpers.py:247
msgid "A_way"
msgstr "В_ідійшов"
-#: ../src/common/helpers.py:245
+#: ../src/common/helpers.py:252
msgid "_Offline"
msgstr "_Поза мережею"
-#: ../src/common/helpers.py:247 ../src/tooltips.py:199
+#: ../src/common/helpers.py:254 ../src/tooltips.py:200
msgid "Offline"
msgstr "Поза мережею"
-#: ../src/common/helpers.py:250
+#: ../src/common/helpers.py:257
msgid "_Invisible"
msgstr "_Невидимий"
-#: ../src/common/helpers.py:252
+#: ../src/common/helpers.py:259
msgid "Invisible"
msgstr "Невидимка"
-#: ../src/common/helpers.py:256
+#: ../src/common/helpers.py:263
msgid "?contact has status:Unknown"
msgstr "?стан контакту:Невідомий"
-#: ../src/common/helpers.py:258
+#: ../src/common/helpers.py:265
msgid "?contact has status:Has errors"
msgstr "?стан контакту:З помилками"
-#: ../src/common/helpers.py:263
+#: ../src/common/helpers.py:270
msgid "?Subscription we already have:None"
msgstr "?Підписка яку ми вже маємо:Жодної"
-#: ../src/common/helpers.py:265
+#: ../src/common/helpers.py:272
msgid "To"
msgstr "До"
-#: ../src/common/helpers.py:267
+#: ../src/common/helpers.py:274
msgid "From"
msgstr "Від"
-#: ../src/common/helpers.py:269
+#: ../src/common/helpers.py:276
msgid "Both"
msgstr "Обидва"
-#: ../src/common/helpers.py:277
+#: ../src/common/helpers.py:284
msgid "?Ask (for Subscription):None"
msgstr "?Запит (на підписку):Немає"
-#: ../src/common/helpers.py:279
+#: ../src/common/helpers.py:286
msgid "Subscribe"
msgstr "Підписатися"
-#: ../src/common/helpers.py:288
+#: ../src/common/helpers.py:295
msgid "?Group Chat Contact Role:None"
msgstr "?Роль у груповій балачці:Немає"
-#: ../src/common/helpers.py:291
+#: ../src/common/helpers.py:298
msgid "Moderators"
msgstr "Модератори"
-#: ../src/common/helpers.py:293
+#: ../src/common/helpers.py:300
msgid "Moderator"
msgstr "Модератор"
-#: ../src/common/helpers.py:296
+#: ../src/common/helpers.py:303
msgid "Participants"
msgstr "Учасники"
-#: ../src/common/helpers.py:298
+#: ../src/common/helpers.py:305
msgid "Participant"
msgstr "Учасник"
-#: ../src/common/helpers.py:301
+#: ../src/common/helpers.py:308
msgid "Visitors"
msgstr "Відвідувачі"
-#: ../src/common/helpers.py:303
+#: ../src/common/helpers.py:310
msgid "Visitor"
msgstr "Відвідувач"
-#: ../src/common/helpers.py:309 ../src/tooltips.py:210
+#: ../src/common/helpers.py:316 ../src/tooltips.py:211
msgid "?Group Chat Contact Affiliation:None"
msgstr "?Членство контакту у груповій балачці:Жодного"
-#: ../src/common/helpers.py:311 ../src/tooltips.py:216
+#: ../src/common/helpers.py:318 ../src/tooltips.py:217
msgid "Owner"
msgstr "Власник"
-#: ../src/common/helpers.py:313 ../src/tooltips.py:214
+#: ../src/common/helpers.py:320 ../src/tooltips.py:215
msgid "Administrator"
msgstr "Адміністратор"
-#: ../src/common/helpers.py:315 ../src/tooltips.py:212
+#: ../src/common/helpers.py:322 ../src/tooltips.py:213
msgid "Member"
msgstr "Учасник"
-#: ../src/common/helpers.py:354
+#: ../src/common/helpers.py:361
msgid "is paying attention to the conversation"
msgstr "спілкується"
-#: ../src/common/helpers.py:356
+#: ../src/common/helpers.py:363
msgid "is doing something else"
msgstr "робить щось інше"
-#: ../src/common/helpers.py:358
+#: ../src/common/helpers.py:365
msgid "is composing a message..."
msgstr "пише повідомлення..."
#. paused means he or she was composing but has stopped for a while
-#: ../src/common/helpers.py:361
+#: ../src/common/helpers.py:368
msgid "paused composing a message"
msgstr "призупинив (призупинила) створення повідомлення"
-#: ../src/common/helpers.py:363
+#: ../src/common/helpers.py:370
msgid "has closed the chat window or tab"
msgstr "закрив (закрила) вікно або вкладку балачки"
#. GiB means gibibyte
-#: ../src/common/helpers.py:628
+#: ../src/common/helpers.py:648
#, python-format
msgid "%s GiB"
msgstr "%s ГіБ"
#. GB means gigabyte
-#: ../src/common/helpers.py:631
+#: ../src/common/helpers.py:651
#, python-format
msgid "%s GB"
msgstr "%s ГБ"
#. MiB means mibibyte
-#: ../src/common/helpers.py:635
+#: ../src/common/helpers.py:655
#, python-format
msgid "%s MiB"
msgstr "%s МіБ"
#. MB means megabyte
-#: ../src/common/helpers.py:638
+#: ../src/common/helpers.py:658
#, python-format
msgid "%s MB"
msgstr "%s МБ"
#. KiB means kibibyte
-#: ../src/common/helpers.py:642
+#: ../src/common/helpers.py:662
#, python-format
msgid "%s KiB"
msgstr "%s кіБ"
#. KB means kilo bytes
-#: ../src/common/helpers.py:645
+#: ../src/common/helpers.py:665
#, python-format
msgid "%s KB"
msgstr "%s кБ"
#. B means bytes
-#: ../src/common/helpers.py:648
+#: ../src/common/helpers.py:668
#, python-format
msgid "%s B"
msgstr "%s Б"
-#: ../src/common/helpers.py:1099 ../src/common/helpers.py:1106
+#: ../src/common/helpers.py:1119 ../src/common/helpers.py:1126
#, python-format
msgid "%d message pending"
msgid_plural "%d messages pending"
@@ -5522,22 +5851,22 @@ msgstr[0] "у черзі %d повідомлення"
msgstr[1] "у черзі %d повідомлення"
msgstr[2] "у черзі %d повідомлень"
-#: ../src/common/helpers.py:1112
+#: ../src/common/helpers.py:1132
#, python-format
msgid " from room %s"
msgstr " з кімнати %s"
-#: ../src/common/helpers.py:1115 ../src/common/helpers.py:1132
+#: ../src/common/helpers.py:1135 ../src/common/helpers.py:1152
#, python-format
msgid " from user %s"
msgstr " від користувача %s"
-#: ../src/common/helpers.py:1117
+#: ../src/common/helpers.py:1137
#, python-format
msgid " from %s"
msgstr " від %s"
-#: ../src/common/helpers.py:1124 ../src/common/helpers.py:1130
+#: ../src/common/helpers.py:1144 ../src/common/helpers.py:1150
#, python-format
msgid "%d event pending"
msgid_plural "%d events pending"
@@ -5545,21 +5874,38 @@ msgstr[0] "у черзі %d подія"
msgstr[1] "у черзі %d події"
msgstr[2] "у черзі %d подій"
-#: ../src/common/helpers.py:1162
+#: ../src/common/helpers.py:1182
#, python-format
msgid "Gajim - %s"
msgstr "Gajim - %s"
-#: ../src/common/helpers.py:1341
+#: ../src/common/helpers.py:1361
msgid "Hello, I am $name."
msgstr "Привіт, я $name."
-#: ../src/common/jingle_rtp.py:107
+#: ../src/common/helpers.py:1471 ../src/common/helpers.py:1480
+#: ../src/common/helpers.py:1534
+msgid "Timeout loading image"
+msgstr "Перевищення часу очікування під час завантаження зображення"
+
+#: ../src/common/helpers.py:1490 ../src/common/helpers.py:1532
+msgid "Image is too big"
+msgstr "Зображення є завеликим"
+
+#: ../src/common/helpers.py:1500
+msgid "PyCURL is not installed"
+msgstr "PyCURL не встановлено"
+
+#: ../src/common/helpers.py:1536
+msgid "Error loading image"
+msgstr "Помилка завантаження зображення"
+
+#: ../src/common/jingle_rtp.py:109
#, python-format
msgid "%s configuration error"
msgstr "%s помилка конфігурації"
-#: ../src/common/jingle_rtp.py:108
+#: ../src/common/jingle_rtp.py:110
#, python-format
msgid ""
"Couldn't setup %s. Check your configuration.\n"
@@ -5578,11 +5924,11 @@ msgstr ""
"Помилка:\n"
"%s"
-#: ../src/common/jingle_rtp.py:205
+#: ../src/common/jingle_rtp.py:208
msgid "GStreamer error"
msgstr "Помилка GStreamer"
-#: ../src/common/jingle_rtp.py:206
+#: ../src/common/jingle_rtp.py:208
#, python-format
msgid ""
"Error: %s\n"
@@ -5591,19 +5937,19 @@ msgstr ""
"Повідомлення про помилку: %s\n"
"Відлагодження: %s"
-#: ../src/common/jingle_rtp.py:335
+#: ../src/common/jingle_rtp.py:338
msgid "audio input"
msgstr "аудіо вхід"
-#: ../src/common/jingle_rtp.py:338
+#: ../src/common/jingle_rtp.py:341
msgid "audio output"
msgstr "аудіо вихід"
-#: ../src/common/jingle_rtp.py:381
+#: ../src/common/jingle_rtp.py:384
msgid "video input"
msgstr "відео вхід"
-#: ../src/common/jingle_rtp.py:390
+#: ../src/common/jingle_rtp.py:393
msgid "video output"
msgstr "відео вихід"
@@ -6370,7 +6716,7 @@ msgstr ""
"[Це частина шифрованого сеансу. Якщо ви бачите це повідомлення, сталася "
"якась помилка.]"
-#: ../src/common/zeroconf/connection_zeroconf.py:192
+#: ../src/common/zeroconf/connection_zeroconf.py:193
msgid "Avahi error"
msgstr "Помилка Avahi"
@@ -6383,46 +6729,46 @@ msgstr ""
"%s\n"
"Обмін локальними повідомленнями може працювати з помилками."
-#: ../src/common/zeroconf/connection_zeroconf.py:205
+#: ../src/common/zeroconf/connection_zeroconf.py:206
msgid "Please check if Avahi or Bonjour is installed."
msgstr "Будь ласка, переконайтеся, що встановлено Avahi або Bonjour."
-#: ../src/common/zeroconf/connection_zeroconf.py:215
-#: ../src/common/zeroconf/connection_zeroconf.py:219
+#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:220
msgid "Could not start local service"
msgstr "Не вдалося запустити локальну службу"
-#: ../src/common/zeroconf/connection_zeroconf.py:216
+#: ../src/common/zeroconf/connection_zeroconf.py:217
#, python-format
msgid "Unable to bind to port %d."
msgstr "Не вдалося прив’язатися до порту %d."
-#: ../src/common/zeroconf/connection_zeroconf.py:220
-#: ../src/common/zeroconf/connection_zeroconf.py:304
-#: ../src/common/zeroconf/connection_zeroconf.py:317
-#: ../src/common/zeroconf/connection_zeroconf.py:333
+#: ../src/common/zeroconf/connection_zeroconf.py:221
+#: ../src/common/zeroconf/connection_zeroconf.py:305
+#: ../src/common/zeroconf/connection_zeroconf.py:318
+#: ../src/common/zeroconf/connection_zeroconf.py:334
msgid "Please check if avahi-daemon is running."
msgstr "Будь ласка, переконайтеся, що запущено фонову службу avahi."
-#: ../src/common/zeroconf/connection_zeroconf.py:303
-#: ../src/common/zeroconf/connection_zeroconf.py:316
-#: ../src/common/zeroconf/connection_zeroconf.py:332
+#: ../src/common/zeroconf/connection_zeroconf.py:304
+#: ../src/common/zeroconf/connection_zeroconf.py:317
+#: ../src/common/zeroconf/connection_zeroconf.py:333
#, python-format
msgid "Could not change status of account \"%s\""
msgstr "Не вдалося змінити стан облікового запису «%s»"
-#: ../src/common/zeroconf/connection_zeroconf.py:351
-#: ../src/common/zeroconf/connection_zeroconf.py:390
+#: ../src/common/zeroconf/connection_zeroconf.py:352
+#: ../src/common/zeroconf/connection_zeroconf.py:392
msgid "Your message could not be sent."
msgstr "Ваше повідомлення неможливо надіслати."
-#: ../src/common/zeroconf/connection_zeroconf.py:365
-#: ../src/common/zeroconf/connection_zeroconf.py:404
+#: ../src/common/zeroconf/connection_zeroconf.py:366
+#: ../src/common/zeroconf/connection_zeroconf.py:406
msgid "Contact is offline. Your message could not be sent."
msgstr ""
"Контакт перебуває поза мережею. Ваше повідомлення не може бути надіслано."
-#: ../src/common/zeroconf/connection_zeroconf.py:431
+#: ../src/common/zeroconf/connection_zeroconf.py:433
msgid ""
"Connection to host could not be established: Timeout while sending data."
msgstr ""
@@ -6435,24 +6781,24 @@ msgstr ""
msgid "Error while adding service. %s"
msgstr "Помилка під час додавання служби. %s"
-#: ../src/config.py:406
+#: ../src/config.py:407
msgid "Default Message"
msgstr "Типове повідомлення"
-#: ../src/config.py:415
+#: ../src/config.py:416
msgid "Enabled"
msgstr "Увімкнено"
-#: ../src/config.py:468 ../src/config.py:472 ../src/config.py:3115
+#: ../src/config.py:469 ../src/config.py:473 ../src/config.py:3159
msgid "Default"
msgstr "Типовий"
-#: ../src/config.py:746 ../src/dialogs.py:1493
+#: ../src/config.py:757 ../src/dialogs.py:1493
#, python-format
msgid "Dictionary for lang %s not available"
msgstr "Словники для мови %s не доступні"
-#: ../src/config.py:747
+#: ../src/config.py:758
#, python-format
msgid ""
"You have to install %s dictionary to use spellchecking, or choose another "
@@ -6461,76 +6807,76 @@ msgstr ""
"Ви маєте встановити словники %s для використання перевірки орфографії, або "
"обрати іншу мову через параметр speller_language."
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message title"
msgstr "заголовок повідомлення про стан"
-#: ../src/config.py:1223
+#: ../src/config.py:1238
msgid "status message text"
msgstr "текст повідомлення про стан"
#. Name column
-#: ../src/config.py:1523 ../src/dialogs.py:2529 ../src/dialogs.py:2596
-#: ../src/dialogs.py:3388 ../src/disco.py:886 ../src/disco.py:1744
-#: ../src/disco.py:2046 ../src/history_window.py:90
+#: ../src/config.py:1566 ../src/dialogs.py:2536 ../src/dialogs.py:2603
+#: ../src/dialogs.py:3395 ../src/disco.py:886 ../src/disco.py:1744
+#: ../src/disco.py:2046 ../src/history_window.py:91
msgid "Name"
msgstr "Назва"
-#: ../src/config.py:1618
+#: ../src/config.py:1661
msgid "Relogin now?"
msgstr "Повторно увійти зараз?"
-#: ../src/config.py:1619
+#: ../src/config.py:1662
msgid "If you want all the changes to apply instantly, you must relogin."
msgstr ""
"Якщо ви бажаєте, щоб всі зміни негайно набули чинності, вам слід вийти з "
"облікового запису, а потім знову туди увійти."
-#: ../src/config.py:1773 ../src/config.py:1906
+#: ../src/config.py:1816 ../src/config.py:1949
msgid "OpenPGP is not usable on this computer"
msgstr "На цьому комп'ютері OpenPGP не придатне для використання"
-#: ../src/config.py:1946 ../src/config.py:1993
+#: ../src/config.py:1989 ../src/config.py:2036
msgid "Unread events"
msgstr "Непрочитані події"
-#: ../src/config.py:1947
+#: ../src/config.py:1990
msgid "Read all pending events before removing this account."
msgstr ""
"Перш ніж вилучати цей обліковий запис, прочитайте усі повідомлення з черги "
"подій."
-#: ../src/config.py:1976
+#: ../src/config.py:2019
#, python-format
msgid "You have opened chat in account %s"
msgstr "Ви розпочали балачку за допомогою облікового запису %s"
-#: ../src/config.py:1977
+#: ../src/config.py:2020
msgid "All chat and groupchat windows will be closed. Do you want to continue?"
msgstr ""
"Всі вікна балачок і групових балачок буде закрито. Бажаєте продовжити "
"процедуру виходу?"
-#: ../src/config.py:1989 ../src/config.py:2531 ../src/config.py:2567
+#: ../src/config.py:2032 ../src/config.py:2574 ../src/config.py:2611
msgid "You are currently connected to the server"
msgstr "Зараз ваш клієнт з’єднано з сервером"
-#: ../src/config.py:1990
+#: ../src/config.py:2033
msgid "To change the account name, you must be disconnected."
msgstr ""
"Для зміни назви облікового запису вам слід від’єднати клієнт від сервера."
-#: ../src/config.py:1994
+#: ../src/config.py:2037
msgid "To change the account name, you must read all pending events."
msgstr ""
"Для зміни назви облікового запису вам слід прочитати усі повідомлення з "
"черги подій."
-#: ../src/config.py:2000
+#: ../src/config.py:2043
msgid "Account Name Already Used"
msgstr "Така назва облікового запису вже використовується"
-#: ../src/config.py:2001
+#: ../src/config.py:2044
msgid ""
"This name is already used by another of your accounts. Please choose another "
"name."
@@ -6538,148 +6884,148 @@ msgstr ""
"Ви вже створили обліковий запис з такою назвою. Будь ласка, оберіть іншу "
"назву."
-#: ../src/config.py:2005 ../src/config.py:2009
+#: ../src/config.py:2048 ../src/config.py:2052
msgid "Invalid account name"
msgstr "Некоректна назва облікового запису"
-#: ../src/config.py:2006
+#: ../src/config.py:2049
msgid "Account name cannot be empty."
msgstr "Назва облікового запису не може бути порожньою."
-#: ../src/config.py:2010
+#: ../src/config.py:2053
msgid "Account name cannot contain spaces."
msgstr "Назва облікового запису не може містити пробіли."
-#: ../src/config.py:2087
+#: ../src/config.py:2130
msgid "Rename Account"
msgstr "Перейменувати запис"
-#: ../src/config.py:2088
+#: ../src/config.py:2131
#, python-format
msgid "Enter a new name for account %s"
msgstr "Введіть нову назву для облікового запису %s"
-#: ../src/config.py:2116
+#: ../src/config.py:2159
msgid "A Jabber ID must be in the form \"user@servername\"."
msgstr "Ідентифікатор Jabber слід вказувати як «користувач@назва.сервера»."
-#: ../src/config.py:2339 ../src/config.py:3665
+#: ../src/config.py:2382 ../src/config.py:3709
msgid "Invalid entry"
msgstr "Некоректний запис"
-#: ../src/config.py:2340 ../src/config.py:3666
+#: ../src/config.py:2383 ../src/config.py:3710
msgid "Custom port must be a port number."
msgstr "Нетиповий порти слід вказувати у вигляді номера."
-#: ../src/config.py:2361
+#: ../src/config.py:2404
msgid "Failed to get secret keys"
msgstr "Спроба отримання закритих ключів завершилася невдало"
-#: ../src/config.py:2362
+#: ../src/config.py:2405
msgid "There is no OpenPGP secret key available."
msgstr "Немає доступних закритих ключів OpenPGP."
-#: ../src/config.py:2396
+#: ../src/config.py:2439
msgid "OpenPGP Key Selection"
msgstr "Вибір ключа OpenPGP"
-#: ../src/config.py:2397
+#: ../src/config.py:2440
msgid "Choose your OpenPGP key"
msgstr "Оберіть свій ключ OpenPGP"
-#: ../src/config.py:2404
+#: ../src/config.py:2447
msgid "No such account available"
msgstr "Вказаний обліковий запис недоступний"
-#: ../src/config.py:2405
+#: ../src/config.py:2448
msgid "You must create your account before editing your personal information."
msgstr ""
"Вам слід створити обліковий запис, перш ніж розпочати редагування ваших "
"особистих відомостей."
-#: ../src/config.py:2412 ../src/dialogs.py:2281 ../src/dialogs.py:2518
-#: ../src/dialogs.py:2706 ../src/disco.py:515 ../src/profile_window.py:361
+#: ../src/config.py:2455 ../src/dialogs.py:2287 ../src/dialogs.py:2525
+#: ../src/dialogs.py:2713 ../src/disco.py:515 ../src/profile_window.py:361
msgid "You are not connected to the server"
msgstr "Ваш комп’ютер не з’єднано з сервером"
-#: ../src/config.py:2413
+#: ../src/config.py:2456
msgid "Without a connection, you can not edit your personal information."
msgstr "Без з’єднання ви не зможете редагувати ваші особисті відомості."
-#: ../src/config.py:2417
+#: ../src/config.py:2460
msgid "Your server doesn't support Vcard"
msgstr "Ваш сервер не підтримує Vcard"
-#: ../src/config.py:2418
+#: ../src/config.py:2461
msgid "Your server can't save your personal information."
msgstr "Ваш сервер не може зберігати ваші особисті відомості."
-#: ../src/config.py:2532 ../src/config.py:2568
+#: ../src/config.py:2575 ../src/config.py:2612
msgid "To disable the account, you must be disconnected."
msgstr ""
"Для відключення облікового запису вам слід від’єднати клієнт від сервера."
-#: ../src/config.py:2537
+#: ../src/config.py:2581
msgid "Account Local already exists."
msgstr "Обліковий запис Local вже існує."
-#: ../src/config.py:2538
+#: ../src/config.py:2582
msgid "Please rename or remove it before enabling link-local messaging."
msgstr ""
"Будь ласка, перейменуйте або вилучіть його, перш ніж вмикати локальні "
"повідомлення."
-#: ../src/config.py:2695
+#: ../src/config.py:2739
#, python-format
msgid "Edit %s"
msgstr "Редагувати %s"
-#: ../src/config.py:2697
+#: ../src/config.py:2741
#, python-format
msgid "Register to %s"
msgstr "Зареєструватися на %s"
#. list at the beginning
-#: ../src/config.py:2733
+#: ../src/config.py:2777
msgid "Ban List"
msgstr "Список заборон"
-#: ../src/config.py:2734
+#: ../src/config.py:2778
msgid "Member List"
msgstr "Список учасників"
-#: ../src/config.py:2734
+#: ../src/config.py:2778
msgid "Owner List"
msgstr "Список власників"
-#: ../src/config.py:2735
+#: ../src/config.py:2779
msgid "Administrator List"
msgstr "Список адміністраторів"
#. Address column
#. holds JID (who said this)
-#: ../src/config.py:2799 ../src/disco.py:893 ../src/history_manager.py:207
+#: ../src/config.py:2843 ../src/disco.py:893 ../src/history_manager.py:207
msgid "JID"
msgstr "JID"
-#: ../src/config.py:2809
+#: ../src/config.py:2853
msgid "Reason"
msgstr "Підстава"
-#: ../src/config.py:2816
+#: ../src/config.py:2860
msgid "Nick"
msgstr "Прізвисько"
-#: ../src/config.py:2822
+#: ../src/config.py:2866
msgid "Role"
msgstr "Роль"
-#: ../src/config.py:2849
+#: ../src/config.py:2893
msgid "Banning..."
msgstr "Блокування..."
#. You can move '\n' before user@domain if that line is TOO BIG
-#: ../src/config.py:2851
+#: ../src/config.py:2895
msgid ""
"<b>Whom do you want to ban?</b>\n"
"\n"
@@ -6687,11 +7033,11 @@ msgstr ""
"<b>Кого ви бажаєте заблокувати?</b>\n"
"\n"
-#: ../src/config.py:2853
+#: ../src/config.py:2897
msgid "Adding Member..."
msgstr "Додавання учасника..."
-#: ../src/config.py:2854
+#: ../src/config.py:2898
msgid ""
"<b>Whom do you want to make a member?</b>\n"
"\n"
@@ -6699,11 +7045,11 @@ msgstr ""
"<b>Кому ви бажаєте надати можливість участі?</b>\n"
"\n"
-#: ../src/config.py:2856
+#: ../src/config.py:2900
msgid "Adding Owner..."
msgstr "Додавання власника..."
-#: ../src/config.py:2857
+#: ../src/config.py:2901
msgid ""
"<b>Whom do you want to make an owner?</b>\n"
"\n"
@@ -6711,11 +7057,11 @@ msgstr ""
"<b>Кого ви бажаєте зробити власником?</b>\n"
"\n"
-#: ../src/config.py:2859
+#: ../src/config.py:2903
msgid "Adding Administrator..."
msgstr "Додавання адміністратора..."
-#: ../src/config.py:2860
+#: ../src/config.py:2904
msgid ""
"<b>Whom do you want to make an administrator?</b>\n"
"\n"
@@ -6723,7 +7069,7 @@ msgstr ""
"<b>Кого ви бажаєте зробити адміністратором?</b>\n"
"\n"
-#: ../src/config.py:2861
+#: ../src/config.py:2905
msgid ""
"Can be one of the following:\n"
"1. user@domain/resource (only that resource matches).\n"
@@ -6739,108 +7085,103 @@ msgstr ""
"4. домен (пошук лише домену: записів користувач@домен,\n"
"домен/ресурс або адреси, що містить піддомен)."
-#: ../src/config.py:2962
+#: ../src/config.py:3006
#, python-format
msgid "Removing %s account"
msgstr "Вилучення облікового запису %s"
-#: ../src/config.py:2977
+#: ../src/config.py:3021
msgid "Account is disabled"
msgstr "Обліковий запис вимкнено"
-#: ../src/config.py:2978
+#: ../src/config.py:3022
msgid "To unregister from a server, account must be enabled."
msgstr "Щоб зняти реєстрацію з серверу, обліковий запис має бути активним."
-#: ../src/config.py:2991 ../src/gui_interface.py:278
-#: ../src/gui_interface.py:696
+#: ../src/config.py:3035 ../src/gui_interface.py:283
+#: ../src/gui_interface.py:701
msgid "Password Required"
msgstr "Слід ввести пароль"
-#: ../src/config.py:2992 ../src/gui_interface.py:676
+#: ../src/config.py:3036 ../src/gui_interface.py:681
#, python-format
msgid "Enter your password for account %s"
msgstr "Введіть ваш пароль для облікового запису %s"
-#: ../src/config.py:2993 ../src/gui_interface.py:696
+#: ../src/config.py:3037 ../src/gui_interface.py:701
msgid "Save password"
msgstr "Зберегти пароль"
-#: ../src/config.py:3003
+#: ../src/config.py:3047
#, python-format
msgid "Account \"%s\" is connected to the server"
msgstr "Обліковий запис «%s» з’єднано з сервером"
-#: ../src/config.py:3004
+#: ../src/config.py:3048
msgid "If you remove it, the connection will be lost."
msgstr "Якщо ви вилучите його, з’єднання буде розірвано."
-#: ../src/config.py:3018
+#: ../src/config.py:3062
#, python-format
msgid "Connection to server %s failed"
msgstr "Спроба встановити з'єднання з сервером %s завершилася невдало"
-#: ../src/config.py:3019
+#: ../src/config.py:3063
msgid "What would you like to do?"
msgstr "Що ви хочете зробити?"
-#: ../src/config.py:3020
+#: ../src/config.py:3064
msgid "Remove only from Gajim"
msgstr "Вилучити _лише з Gajim"
-#: ../src/config.py:3021
+#: ../src/config.py:3065
msgid "Don't remove anything. I'll try again later"
msgstr "Не видаляти нічого. Я спробую пізніше ще раз."
-#: ../src/config.py:3115
+#: ../src/config.py:3159
msgid "?print_status:All"
msgstr "Всі"
-#: ../src/config.py:3116
+#: ../src/config.py:3160
msgid "Enter and leave only"
msgstr "Лише вхід і вихід"
-#: ../src/config.py:3117
+#: ../src/config.py:3161
msgid "?print_status:None"
msgstr "Жодного"
-#: ../src/config.py:3189
+#: ../src/config.py:3233
msgid "New Group Chat"
msgstr "Створити групову балачку"
-#: ../src/config.py:3222
+#: ../src/config.py:3266
msgid "This bookmark has invalid data"
msgstr "У цій закладці містяться некоректні дані"
-#: ../src/config.py:3223
+#: ../src/config.py:3267
msgid ""
"Please be sure to fill out server and room fields or remove this bookmark."
msgstr "Будь ласка, заповніть поля сервера і кімнати або вилучіть цю закладку."
-#. invalid char
-#: ../src/config.py:3348 ../src/dialogs.py:2070
-msgid "Invalid nickname"
-msgstr "Некоректний псевдонім"
-
-#: ../src/config.py:3349 ../src/config.py:3360 ../src/config.py:3369
-#: ../src/config.py:3380 ../src/config.py:3388
+#: ../src/config.py:3393 ../src/config.py:3404 ../src/config.py:3413
+#: ../src/config.py:3424 ../src/config.py:3432
msgid "Character not allowed"
msgstr "Заборонений символ"
-#: ../src/config.py:3360 ../src/config.py:3368 ../src/config.py:3380
-#: ../src/config.py:3641
+#: ../src/config.py:3404 ../src/config.py:3412 ../src/config.py:3424
+#: ../src/config.py:3685
msgid "Invalid server"
msgstr "Некоректний сервер"
-#: ../src/config.py:3387
+#: ../src/config.py:3431
msgid "Invalid room"
msgstr "Некоректна кімната"
-#: ../src/config.py:3557
+#: ../src/config.py:3601
msgid "Account has been added successfully"
msgstr "Обліковий запис було успішно додано"
-#: ../src/config.py:3558 ../src/config.py:3564
+#: ../src/config.py:3602 ../src/config.py:3608
msgid ""
"You can set advanced account options by pressing the Advanced button, or "
"later by choosing the Accounts menu item under the Edit menu from the main "
@@ -6850,35 +7191,35 @@ msgstr ""
"«Додатково». Пізніше ви можете виконати ті самі дії з налаштування вибором "
"пункту «Облікові записи» у меню «Правка» головного вікна програми."
-#: ../src/config.py:3563
+#: ../src/config.py:3607
msgid "Your new account has been created successfully"
msgstr "Ваш новий обліковий запис було успішно створено"
-#: ../src/config.py:3602
+#: ../src/config.py:3646
msgid "Invalid username"
msgstr "Некоректне ім’я користувача"
-#: ../src/config.py:3604
+#: ../src/config.py:3648
msgid "You must provide a username to configure this account."
msgstr ""
"Щоб налаштувати цей обліковий запис, вам слід вказати ім’я користувача."
-#: ../src/config.py:3642
+#: ../src/config.py:3686
msgid "Please provide a server on which you want to register."
msgstr ""
"Будь ласка, вкажіть назву сервера, на якому ви бажаєте зареєструватися."
-#: ../src/config.py:3698 ../src/gui_interface.py:1174
+#: ../src/config.py:3742 ../src/gui_interface.py:1203
msgid "Certificate Already in File"
msgstr "Сертифікат вже наявний у файлі"
-#: ../src/config.py:3699 ../src/gui_interface.py:1175
+#: ../src/config.py:3743 ../src/gui_interface.py:1204
#, python-format
msgid "This certificate is already in file %s, so it's not added again."
msgstr ""
"Цей сертифікат вже існує у файлі %s, програма не буде додавати його ще раз."
-#: ../src/config.py:3786
+#: ../src/config.py:3831
#, python-format
msgid ""
"<b>Security Warning</b>\n"
@@ -6893,7 +7234,7 @@ msgstr ""
"Помилка SSL: %(error)s\n"
"Ви все ще бажаєте з’єднатися з цим сервером?"
-#: ../src/config.py:3792 ../src/gui_interface.py:1203
+#: ../src/config.py:3837 ../src/gui_interface.py:1232
#, python-format
msgid ""
"Add this certificate to the list of trusted certificates.\n"
@@ -6904,73 +7245,73 @@ msgstr ""
"Відбиток SHA1 сертифіката:\n"
"%s"
-#: ../src/config.py:3824 ../src/config.py:3858
+#: ../src/config.py:3869 ../src/config.py:3903
msgid "An error occurred during account creation"
msgstr "Під час спроби створення облікового запису сталася помилка"
-#: ../src/config.py:3923
+#: ../src/config.py:3968
msgid "Account name is in use"
msgstr "Цю назву облікового запису вже використано"
-#: ../src/config.py:3924
+#: ../src/config.py:3969
msgid "You already have an account using this name."
msgstr "У вас вже є обліковий запис з такою назвою."
-#: ../src/config.py:4054
+#: ../src/config.py:4099
msgid "PEP node was not removed"
msgstr "Вузол повідомлення про стан було вилучено"
-#: ../src/config.py:4055
+#: ../src/config.py:4100
#, python-format
msgid "PEP node %(node)s was not removed: %(message)s"
msgstr "Вузол повідомлення про стан %(node)s було вилучено: %(message)s"
-#: ../src/config.py:4083
+#: ../src/config.py:4128
#, python-format
msgid "Configure %s"
msgstr "Налаштувати %s"
-#: ../src/config.py:4099 ../src/plugins/gui.py:73
+#: ../src/config.py:4144 ../src/plugins/gui.py:74
msgid "Active"
msgstr "Активний"
-#: ../src/config.py:4107
+#: ../src/config.py:4152
msgid "Event"
msgstr "Подія"
-#: ../src/config.py:4142
+#: ../src/config.py:4187
msgid "First Message Received"
msgstr "Перше отримане повідомлення"
-#: ../src/config.py:4143
+#: ../src/config.py:4188
msgid "Next Message Received Focused"
msgstr "Фокус на наступне отримане повідомлення"
-#: ../src/config.py:4145
+#: ../src/config.py:4190
msgid "Next Message Received Unfocused"
msgstr "Зняття фокусу з наступного отриманого повідомлення"
-#: ../src/config.py:4146
+#: ../src/config.py:4191
msgid "Contact Connected"
msgstr "Контакт з'єднано"
-#: ../src/config.py:4147
+#: ../src/config.py:4192
msgid "Contact Disconnected"
msgstr "Контакт від'єднано"
-#: ../src/config.py:4148
+#: ../src/config.py:4193
msgid "Message Sent"
msgstr "Повідомлення надіслано"
-#: ../src/config.py:4149
+#: ../src/config.py:4194
msgid "Group Chat Message Highlight"
msgstr "Виділення повідомлення групової балачки"
-#: ../src/config.py:4150
+#: ../src/config.py:4195
msgid "Group Chat Message Received"
msgstr "Отримано повідомлення групової балачки"
-#: ../src/config.py:4151
+#: ../src/config.py:4196
msgid "GMail Email Received"
msgstr "Отримано електронного листа GMail "
@@ -7038,7 +7379,7 @@ msgstr[1] "%(nb_days)i днi тому"
msgstr[2] "%(nb_days)i днiв тому"
#. if we have subject, show it too!
-#: ../src/conversation_textview.py:1368 ../src/history_window.py:480
+#: ../src/conversation_textview.py:1368 ../src/history_window.py:481
#, python-format
msgid "Subject: %s\n"
msgstr "Тема: %s\n"
@@ -7164,7 +7505,7 @@ msgid "Please fill in the data of the contact you want to add"
msgstr "Будь ласка, вкажіть дані контакту, який ви бажаєте додати"
#: ../src/dialogs.py:1074 ../src/dialogs.py:1080 ../src/dialogs.py:1085
-#: ../src/dialogs.py:3621
+#: ../src/dialogs.py:3628
msgid "Invalid User ID"
msgstr "Некоректний ідентифікатор користувача"
@@ -7238,116 +7579,116 @@ msgstr ""
"\n"
"Можливість підсвічування неправильно написаних слів буде поки що вимкнено"
-#: ../src/dialogs.py:1872
+#: ../src/dialogs.py:1877
msgid "_Resume"
msgstr "_Продовжити"
-#: ../src/dialogs.py:1880
+#: ../src/dialogs.py:1885
msgid "Re_place"
msgstr "За_мінити"
-#: ../src/dialogs.py:2071 ../src/dialogs.py:2470
+#: ../src/dialogs.py:2076 ../src/dialogs.py:2477
msgid "The nickname has not allowed characters."
msgstr "У псевдонімі є недозволені символи."
-#: ../src/dialogs.py:2189
+#: ../src/dialogs.py:2195
#, python-format
msgid "Subscription request for account %(account)s from %(jid)s"
msgstr "Запит на підписку до облікового запису %(account)s від %(jid)s"
-#: ../src/dialogs.py:2192
+#: ../src/dialogs.py:2198
#, python-format
msgid "Subscription request from %s"
msgstr "Запит на підписку від %s"
-#: ../src/dialogs.py:2276 ../src/gui_interface.py:1925
+#: ../src/dialogs.py:2282 ../src/gui_interface.py:1959
#, python-format
msgid "You are already in group chat %s"
msgstr "Ви вже берете участь у груповій балачці %s"
-#: ../src/dialogs.py:2282
+#: ../src/dialogs.py:2288
msgid "You can not join a group chat unless you are connected."
msgstr ""
"Вам слід з’єднати ваш обліковий запис, щоб взяти участь у груповій балачці."
-#: ../src/dialogs.py:2326
+#: ../src/dialogs.py:2332
#, python-format
msgid "Join Group Chat with account %s"
msgstr "Приєднатися до групової балачки з облікового запису %s"
-#: ../src/dialogs.py:2457
+#: ../src/dialogs.py:2463
msgid "Invalid Account"
msgstr "Некоректний обліковий запис"
-#: ../src/dialogs.py:2458
+#: ../src/dialogs.py:2464
msgid ""
"You have to choose an account from which you want to join the groupchat."
msgstr ""
"Ви маєте обрати обліковий запис, з якого ви бажаєте приєднатись до групової "
"балачки."
-#: ../src/dialogs.py:2469
+#: ../src/dialogs.py:2476
msgid "Invalid Nickname"
msgstr "Некоректний псевдонім"
-#: ../src/dialogs.py:2474 ../src/dialogs.py:2480
-#: ../src/groupchat_control.py:2090
+#: ../src/dialogs.py:2481 ../src/dialogs.py:2487
+#: ../src/groupchat_control.py:2092
msgid "Invalid group chat Jabber ID"
msgstr "Некоректний ідентифікатор Jabber групової балачки"
-#: ../src/dialogs.py:2475
+#: ../src/dialogs.py:2482
msgid "Please enter the group chat Jabber ID as room@server."
msgstr ""
"Будь ласка, вкажіть Jabber ID групової балачки у вигляді кімната@сервер."
-#: ../src/dialogs.py:2481 ../src/groupchat_control.py:2091
+#: ../src/dialogs.py:2488 ../src/groupchat_control.py:2093
msgid "The group chat Jabber ID has not allowed characters."
msgstr ""
"У ідентифікаторі Jabber групової балачки містяться недозволені символи."
-#: ../src/dialogs.py:2486 ../src/gui_interface.py:1907
+#: ../src/dialogs.py:2493 ../src/gui_interface.py:1941
msgid "This is not a group chat"
msgstr "Це не групова балачка"
-#: ../src/dialogs.py:2487 ../src/gui_interface.py:1908
+#: ../src/dialogs.py:2494 ../src/gui_interface.py:1942
#, python-format
msgid "%s is not the name of a group chat."
msgstr "%s не є назвою групової балачки."
-#: ../src/dialogs.py:2519
+#: ../src/dialogs.py:2526
msgid "Without a connection, you can not synchronise your contacts."
msgstr ""
"Для синхронізації ваших контактів потрібно встановити з’єднання облікового "
"запису з сервером."
-#: ../src/dialogs.py:2532
+#: ../src/dialogs.py:2539
msgid "Server"
msgstr "Сервер"
-#: ../src/dialogs.py:2568
+#: ../src/dialogs.py:2575
msgid "This account is not connected to the server"
msgstr "Цей обліковий запис не з’єднано з сервером"
-#: ../src/dialogs.py:2569
+#: ../src/dialogs.py:2576
msgid "You cannot synchronize with an account unless it is connected."
msgstr ""
"Можливістю синхронізації можна скористатися, лише якщо обліковий запис "
"з’єднано з сервером."
-#: ../src/dialogs.py:2594
+#: ../src/dialogs.py:2601
msgid "Synchronise"
msgstr "Синхронізувати"
-#: ../src/dialogs.py:2655
+#: ../src/dialogs.py:2662
#, python-format
msgid "Start Chat with account %s"
msgstr "Почати балачку з облікового запису %s"
-#: ../src/dialogs.py:2657
+#: ../src/dialogs.py:2664
msgid "Start Chat"
msgstr "Почати балачку"
-#: ../src/dialogs.py:2658
+#: ../src/dialogs.py:2665
msgid ""
"Fill in the nickname or the Jabber ID of the contact you would like\n"
"to send a chat message to:"
@@ -7356,137 +7697,137 @@ msgstr ""
"бажаєте надіслати повідомлення балачки:"
#. if offline or connecting
-#: ../src/dialogs.py:2685 ../src/dialogs.py:3066 ../src/dialogs.py:3301
+#: ../src/dialogs.py:2692 ../src/dialogs.py:3073 ../src/dialogs.py:3308
msgid "Connection not available"
msgstr "З’єднання недоступне"
-#: ../src/dialogs.py:2686 ../src/dialogs.py:3067 ../src/dialogs.py:3302
+#: ../src/dialogs.py:2693 ../src/dialogs.py:3074 ../src/dialogs.py:3309
#, python-format
msgid "Please make sure you are connected with \"%s\"."
msgstr "Будь ласка, переконайтеся, що клієнт з’єднано з «%s»."
-#: ../src/dialogs.py:2695 ../src/dialogs.py:2698
+#: ../src/dialogs.py:2702 ../src/dialogs.py:2705
msgid "Invalid JID"
msgstr "Некоректний JID"
-#: ../src/dialogs.py:2698
+#: ../src/dialogs.py:2705
#, python-format
msgid "Unable to parse \"%s\"."
msgstr "Не вдалося обробити «%s»."
-#: ../src/dialogs.py:2707
+#: ../src/dialogs.py:2714
msgid "Without a connection, you can not change your password."
msgstr "До встановлення з’єднання ви не зможете змінити ваш пароль."
-#: ../src/dialogs.py:2726
+#: ../src/dialogs.py:2733
msgid "Invalid password"
msgstr "Некоректний пароль"
-#: ../src/dialogs.py:2726
+#: ../src/dialogs.py:2733
msgid "You must enter a password."
msgstr "Вам слід ввести пароль."
-#: ../src/dialogs.py:2730
+#: ../src/dialogs.py:2737
msgid "Passwords do not match"
msgstr "Паролі не збігаються"
-#: ../src/dialogs.py:2731
+#: ../src/dialogs.py:2738
msgid "The passwords typed in both fields must be identical."
msgstr "Паролі, введені у обидва поля, мають бути тотожними."
-#: ../src/dialogs.py:2773 ../src/gui_interface.py:813 ../src/notify.py:277
+#: ../src/dialogs.py:2780 ../src/gui_interface.py:842 ../src/notify.py:273
msgid "New E-mail"
msgstr "Нове повідомлення електронної пошти"
-#: ../src/dialogs.py:2775 ../src/gui_interface.py:868 ../src/notify.py:270
+#: ../src/dialogs.py:2782 ../src/gui_interface.py:897 ../src/notify.py:266
msgid "File Transfer Request"
msgstr "Запит на передавання файла"
-#: ../src/dialogs.py:2777 ../src/gui_interface.py:775
-#: ../src/gui_interface.py:839 ../src/notify.py:272
+#: ../src/dialogs.py:2784 ../src/gui_interface.py:804
+#: ../src/gui_interface.py:868 ../src/notify.py:268
msgid "File Transfer Error"
msgstr "Помилка під час передавання файла"
-#: ../src/dialogs.py:2779 ../src/gui_interface.py:914
-#: ../src/gui_interface.py:937 ../src/gui_interface.py:954
-#: ../src/notify.py:274
+#: ../src/dialogs.py:2786 ../src/gui_interface.py:943
+#: ../src/gui_interface.py:966 ../src/gui_interface.py:983
+#: ../src/notify.py:270
msgid "File Transfer Completed"
msgstr "Завершення передавання файла"
-#: ../src/dialogs.py:2780 ../src/gui_interface.py:917 ../src/notify.py:275
+#: ../src/dialogs.py:2787 ../src/gui_interface.py:946 ../src/notify.py:271
msgid "File Transfer Stopped"
msgstr "Зупинка передавання файла"
-#: ../src/dialogs.py:2782 ../src/gui_interface.py:609 ../src/notify.py:279
+#: ../src/dialogs.py:2789 ../src/gui_interface.py:614 ../src/notify.py:275
msgid "Groupchat Invitation"
msgstr "Запрошення до групової балачки"
-#: ../src/dialogs.py:2985
+#: ../src/dialogs.py:2992
#, python-format
msgid "Single Message using account %s"
msgstr "Окреме повідомлення з використанням облікового запису %s"
-#: ../src/dialogs.py:2987
+#: ../src/dialogs.py:2994
#, python-format
msgid "Single Message in account %s"
msgstr "Окреме повідомлення для облікового запису %s"
-#: ../src/dialogs.py:2989
+#: ../src/dialogs.py:2996
msgid "Single Message"
msgstr "Окреме повідомлення"
#. prepare UI for Sending
-#: ../src/dialogs.py:2992
+#: ../src/dialogs.py:2999
#, python-format
msgid "Send %s"
msgstr "Надіслати %s"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3015
+#: ../src/dialogs.py:3022
#, python-format
msgid "Received %s"
msgstr "Отримано %s"
#. prepare UI for Receiving
-#: ../src/dialogs.py:3038
+#: ../src/dialogs.py:3045
#, python-format
msgid "Form %s"
msgstr "Форма %s"
#. we create a new blank window to send and we preset RE: and to jid
-#: ../src/dialogs.py:3122
+#: ../src/dialogs.py:3129
#, python-format
msgid "RE: %s"
msgstr "Відповідь: %s"
-#: ../src/dialogs.py:3123
+#: ../src/dialogs.py:3130
#, python-format
msgid "%s wrote:\n"
msgstr "%s написав(-ла):\n"
-#: ../src/dialogs.py:3182
+#: ../src/dialogs.py:3189
#, python-format
msgid "XML Console for %s"
msgstr "Консоль XML для %s"
-#: ../src/dialogs.py:3184
+#: ../src/dialogs.py:3191
msgid "XML Console"
msgstr "Консоль XML"
#. Action that can be done with an incoming list of contacts
-#: ../src/dialogs.py:3331
+#: ../src/dialogs.py:3338
msgid "add"
msgstr "додати"
-#: ../src/dialogs.py:3331
+#: ../src/dialogs.py:3338
msgid "modify"
msgstr "змінити"
-#: ../src/dialogs.py:3332
+#: ../src/dialogs.py:3339
msgid "remove"
msgstr "вилучити"
-#: ../src/dialogs.py:3361
+#: ../src/dialogs.py:3368
#, python-format
msgid ""
"<b>%(jid)s</b> would like you to <b>%(action)s</b> some contacts in your "
@@ -7495,182 +7836,172 @@ msgstr ""
"<b>%(jid)s</b> бажає <b>%(action)s</b> кілька контактів у вашому реєстрі."
#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3377 ../src/dialogs.py:3423
-msgid "Add"
-msgstr "Додати"
-
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3379 ../src/dialogs.py:3454
+#: ../src/dialogs.py:3386 ../src/dialogs.py:3461
msgid "Modify"
msgstr "Змінити"
-#. Change label for accept_button to action name instead of 'OK'.
-#: ../src/dialogs.py:3381 ../src/dialogs.py:3478
-msgid "Delete"
-msgstr "Вилучити"
-
-#: ../src/dialogs.py:3385
+#: ../src/dialogs.py:3392
msgid "Jabber ID"
msgstr "Jabber ID:"
-#: ../src/dialogs.py:3391
+#: ../src/dialogs.py:3398
msgid "Groups"
msgstr "Групи"
#. it is selected
#. remote_jid = model[iter_][1].decode('utf-8')
-#: ../src/dialogs.py:3499
+#: ../src/dialogs.py:3506
#, python-format
msgid "%s suggested me to add you in my roster."
msgstr "%s підказав мені додати вас до мого реєстру."
-#: ../src/dialogs.py:3513
+#: ../src/dialogs.py:3520
#, python-format
msgid "Added %s contacts"
msgstr "Додано %s контактів"
-#: ../src/dialogs.py:3550
+#: ../src/dialogs.py:3557
#, python-format
msgid "Removed %s contacts"
msgstr "Вилучено %s контактів"
-#: ../src/dialogs.py:3590 ../src/dialogs.py:3767
+#: ../src/dialogs.py:3597 ../src/dialogs.py:3774
#, python-format
msgid "Archiving Preferences for %s"
msgstr "Архівація налаштувань для %s"
-#: ../src/dialogs.py:3630
+#: ../src/dialogs.py:3637
msgid "Invalid expire value"
msgstr "Некоректне значення застарівання"
-#: ../src/dialogs.py:3631
+#: ../src/dialogs.py:3638
msgid "Expire must be a valid positive integer."
msgstr "Час застарівання має бути дійсним додатним цілим числом."
-#: ../src/dialogs.py:3678
+#: ../src/dialogs.py:3685
msgid "There is an error with the form"
msgstr "Це помилка з формою"
-#: ../src/dialogs.py:3898
+#: ../src/dialogs.py:3905
msgid "There is an error"
msgstr "Це помилка"
-#: ../src/dialogs.py:3966
+#: ../src/dialogs.py:3973
#, python-format
msgid "Privacy List <b><i>%s</i></b>"
msgstr "Списки конфіденційності <b><i>%s</i></b>"
-#: ../src/dialogs.py:3970
+#: ../src/dialogs.py:3977
#, python-format
msgid "Privacy List for %s"
msgstr "Списки приватності для %s"
-#: ../src/dialogs.py:4037
+#: ../src/dialogs.py:4044
#, python-format
msgid "Order: %(order)s, action: %(action)s, type: %(type)s, value: %(value)s"
msgstr ""
"Порядок: %(order)s, дія: %(action)s, тип: %(type)s, значення: %(value)s"
-#: ../src/dialogs.py:4042
+#: ../src/dialogs.py:4049
#, python-format
msgid "Order: %(order)s, action: %(action)s"
msgstr "Порядок: %(order)s, дія: %(action)s"
-#: ../src/dialogs.py:4093
+#: ../src/dialogs.py:4100
msgid "<b>Edit a rule</b>"
msgstr "<b>Редагувати правило</b>"
-#: ../src/dialogs.py:4204
+#: ../src/dialogs.py:4211
msgid "<b>Add a rule</b>"
msgstr "<b>Додати правило</b>"
-#: ../src/dialogs.py:4303
+#: ../src/dialogs.py:4310
#, python-format
msgid "Privacy Lists for %s"
msgstr "Списки приватності для %s"
-#: ../src/dialogs.py:4305
+#: ../src/dialogs.py:4312
msgid "Privacy Lists"
msgstr "Списки конфіденційності"
-#: ../src/dialogs.py:4394
+#: ../src/dialogs.py:4401
msgid "Invalid List Name"
msgstr "Некоректна назва списку"
-#: ../src/dialogs.py:4395
+#: ../src/dialogs.py:4402
msgid "You must enter a name to create a privacy list."
msgstr "Для створення списку конфіденційності вам слід ввести його назву."
-#: ../src/dialogs.py:4427
+#: ../src/dialogs.py:4434
msgid "You are invited to a groupchat"
msgstr "Вас запрошено до групової балачки"
-#: ../src/dialogs.py:4430
+#: ../src/dialogs.py:4437
msgid "$Contact has invited you to join a discussion"
msgstr "$Contact запросив вас до участі у обговоренні"
-#: ../src/dialogs.py:4432
+#: ../src/dialogs.py:4439
#, python-format
msgid "$Contact has invited you to group chat %(room_jid)s"
msgstr "$Contact запросив вас до групової балачки %(room_jid)s"
-#: ../src/dialogs.py:4440
+#: ../src/dialogs.py:4447
#, python-format
msgid "Comment: %s"
msgstr "Коментар: %s"
-#: ../src/dialogs.py:4442
+#: ../src/dialogs.py:4449
msgid "Do you want to accept the invitation?"
msgstr "Чи бажаєте ви прийняти це запрошення?"
-#: ../src/dialogs.py:4504
+#: ../src/dialogs.py:4511
msgid "Choose Client Cert #PCKS12"
msgstr "Оберіть клієнтський сертифікат PCKS#12"
-#: ../src/dialogs.py:4514 ../src/dialogs.py:4556 ../src/dialogs.py:4612
-#: ../src/dialogs.py:4700
+#: ../src/dialogs.py:4521 ../src/dialogs.py:4563 ../src/dialogs.py:4619
+#: ../src/dialogs.py:4707
msgid "All files"
msgstr "Всі файли"
-#: ../src/dialogs.py:4519
+#: ../src/dialogs.py:4526
msgid "PKCS12 Files"
msgstr "Файли PKCS12"
-#: ../src/dialogs.py:4546
+#: ../src/dialogs.py:4553
msgid "Choose Sound"
msgstr "Обрати звук"
-#: ../src/dialogs.py:4561
+#: ../src/dialogs.py:4568
msgid "Wav Sounds"
msgstr "Звуки wav"
-#: ../src/dialogs.py:4599
+#: ../src/dialogs.py:4606
msgid "Choose Image"
msgstr "Вибрати зображення"
-#: ../src/dialogs.py:4617
+#: ../src/dialogs.py:4624
msgid "Images"
msgstr "Зображення"
-#: ../src/dialogs.py:4687
+#: ../src/dialogs.py:4694
msgid "Choose Archive"
msgstr "Вибрати архів"
-#: ../src/dialogs.py:4705
+#: ../src/dialogs.py:4712
msgid "Zip files"
msgstr "Файли ZIP"
-#: ../src/dialogs.py:4731
+#: ../src/dialogs.py:4738
#, python-format
msgid "When %s becomes:"
msgstr "Якщо %s стане рівним:"
-#: ../src/dialogs.py:4733
+#: ../src/dialogs.py:4740
#, python-format
msgid "Adding Special Notification for %s"
msgstr "Додавання особливого сповіщення для %s"
-#: ../src/dialogs.py:4953
+#: ../src/dialogs.py:4960
#, python-format
msgid ""
"Your chat session with <b>%(jid)s</b> is encrypted.\n"
@@ -7681,19 +8012,19 @@ msgstr ""
"\n"
"Коротким рядком розпізнавання (SAS) цього сеансу є <b>%(sas)s</b>."
-#: ../src/dialogs.py:4956
+#: ../src/dialogs.py:4963
msgid "You have already verified this contact's identity."
msgstr "Ви вже перевіряли особу контакту."
-#: ../src/dialogs.py:4962 ../src/dialogs.py:5046
+#: ../src/dialogs.py:4969 ../src/dialogs.py:5053
msgid "Contact's identity verified"
msgstr "Особу контакту перевірено"
-#: ../src/dialogs.py:4968
+#: ../src/dialogs.py:4975
msgid "Verify again..."
msgstr "Повторити перевірку..."
-#: ../src/dialogs.py:4973
+#: ../src/dialogs.py:4980
msgid ""
"To be certain that <b>only</b> the expected person can read your messages or "
"send you messages, you need to verify their identity by clicking the button "
@@ -7703,19 +8034,19 @@ msgstr ""
"бажана особа, і що ця лише ця особа матиме змогу надсилати вам повідомлення, "
"вам слід підтвердити їх ідентичність натисканням кнопки, розташованої нижче."
-#: ../src/dialogs.py:4976 ../src/dialogs.py:5027 ../src/dialogs.py:5040
+#: ../src/dialogs.py:4983 ../src/dialogs.py:5034 ../src/dialogs.py:5047
msgid "Contact's identity NOT verified"
msgstr "Особу контакту НЕ перевірено"
-#: ../src/dialogs.py:4981
+#: ../src/dialogs.py:4988
msgid "Verify..."
msgstr "Перевірити..."
-#: ../src/dialogs.py:4992
+#: ../src/dialogs.py:4999
msgid "Have you verified the contact's identity?"
msgstr "Чи перевірили ви особу контакту?"
-#: ../src/dialogs.py:4993
+#: ../src/dialogs.py:5000
#, python-format
msgid ""
"To prevent talking to an unknown person, you should speak to <b>%(jid)s</b> "
@@ -7730,24 +8061,24 @@ msgstr ""
"\n"
"Коротким рядком розпізнавання у цьому сеансі буде <b>%(sas)s</b>."
-#: ../src/dialogs.py:4994
+#: ../src/dialogs.py:5001
msgid "Did you talk to the remote contact and verify the SAS?"
msgstr "Ви зв’язалися з контактом і перевірили SAS?"
-#: ../src/dialogs.py:5028
+#: ../src/dialogs.py:5035
#, python-format
msgid "The contact's key (%s) <b>does not match</b> the key assigned in Gajim."
msgstr ""
"Ключ контакту (%s) <b>не збігається</b> з ключем, призначеним для нього у "
"Gajim."
-#: ../src/dialogs.py:5034
+#: ../src/dialogs.py:5041
msgid "No GPG key is assigned to this contact. So you cannot encrypt messages."
msgstr ""
"З цим контактом не пов’язано жодних ключів GPG. Отже шифрування повідомлень "
"буде неможливим."
-#: ../src/dialogs.py:5041
+#: ../src/dialogs.py:5048
msgid ""
"GPG key is assigned to this contact, but <b>you do not trust his key</b>, so "
"message <b>cannot</b> be encrypted. Use your GPG client to trust this key."
@@ -7756,7 +8087,7 @@ msgstr ""
"b>, отже повідомлення <b>не може</b> бути зашифрованим. Для того, щоб "
"встановити надійність цього ключа, скористайтесь вашим клієнтом GPG."
-#: ../src/dialogs.py:5047
+#: ../src/dialogs.py:5054
msgid ""
"GPG Key is assigned to this contact, and you trust his key, so messages will "
"be encrypted."
@@ -7764,19 +8095,19 @@ msgstr ""
"З цим контактом пов’язано ключ GPG, ви вважаєте цей ключ надійним, отже "
"повідомлення буде зашифровано."
-#: ../src/dialogs.py:5112
+#: ../src/dialogs.py:5119
msgid "an audio and video"
msgstr "аудіо та відео"
-#: ../src/dialogs.py:5114
+#: ../src/dialogs.py:5121
msgid "an audio"
msgstr "аудіо"
-#: ../src/dialogs.py:5116
+#: ../src/dialogs.py:5123
msgid "a video"
msgstr "відео"
-#: ../src/dialogs.py:5120
+#: ../src/dialogs.py:5127
#, python-format
msgid ""
"%(contact)s wants to start %(type)s session with you. Do you want to answer "
@@ -7785,12 +8116,12 @@ msgstr ""
"%(contact)s бажають розпочати %(type)s розмову з вами. Ви бажаєте відповісти "
"на запит?"
-#: ../src/dialogs.py:5188
+#: ../src/dialogs.py:5195
#, python-format
msgid "Certificate for account %s"
msgstr "Сертифікат до облікового запису %s"
-#: ../src/dialogs.py:5188
+#: ../src/dialogs.py:5195
#, python-format
msgid ""
"<b>Issued to:</b>\n"
@@ -7829,7 +8160,7 @@ msgstr ""
"<b>Відбито:</b>\n"
"SHA1 Відбиток: %(sha1)s"
-#: ../src/dialogs.py:5222 ../src/dialogs.py:5239
+#: ../src/dialogs.py:5229 ../src/dialogs.py:5246
msgid "View cert..."
msgstr "Перегляд сертифікату..."
@@ -7921,20 +8252,20 @@ msgstr "Опис"
msgid "Id"
msgstr "Ідентифікатор"
-#: ../src/disco.py:1835 ../src/gui_interface.py:2443
+#: ../src/disco.py:1835 ../src/gui_interface.py:2477
msgid "Bookmark already set"
msgstr "Закладку вже встановлено"
-#: ../src/disco.py:1836 ../src/gui_interface.py:2444
+#: ../src/disco.py:1836 ../src/gui_interface.py:2478
#, python-format
msgid "Group Chat \"%s\" is already in your bookmarks."
msgstr "Закладка на груповій балачці «%s» вже існує."
-#: ../src/disco.py:1845 ../src/gui_interface.py:2458
+#: ../src/disco.py:1845 ../src/gui_interface.py:2492
msgid "Bookmark has been added successfully"
msgstr "Закладку було успішно додано"
-#: ../src/disco.py:1846 ../src/gui_interface.py:2459
+#: ../src/disco.py:1846 ../src/gui_interface.py:2493
msgid "You can manage your bookmarks via Actions menu in your roster."
msgstr ""
"Керувати вашими закладками можна за допомогою меню дій у вашому реєстрі."
@@ -7971,8 +8302,8 @@ msgstr ""
"безпеку з’єднання."
#: ../src/features_window.py:52 ../src/features_window.py:53
-msgid "Requires python-pyopenssl."
-msgstr "Потрібен python-pyopenssl."
+msgid "Requires python-pyopenssl > 0.12 and pyasn1."
+msgstr "Потрібен python-pyopenssl > 0.12 та pyasn1."
#: ../src/features_window.py:54
msgid "Bonjour / Zeroconf"
@@ -7989,8 +8320,11 @@ msgid "Requires python-avahi."
msgstr "Потрібен python-avahi."
#: ../src/features_window.py:57
-msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
-msgstr "Потрібен pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+msgid ""
+"Requires pybonjour and bonjour SDK running (http://developer.apple.com/"
+"opensource/)."
+msgstr ""
+"Вимагає pybonjour та bonjour SDK (http://developer.apple.com/opensource/)."
#: ../src/features_window.py:58
msgid "Command line"
@@ -8006,9 +8340,8 @@ msgstr "Потрібен python-dbus."
#: ../src/features_window.py:61 ../src/features_window.py:69
#: ../src/features_window.py:73 ../src/features_window.py:77
-#: ../src/features_window.py:85 ../src/features_window.py:89
-#: ../src/features_window.py:109 ../src/features_window.py:113
-#: ../src/features_window.py:117
+#: ../src/features_window.py:89 ../src/features_window.py:109
+#: ../src/features_window.py:113 ../src/features_window.py:117
msgid "Feature not available under Windows."
msgstr "Цією можливістю не можна скористатися у Windows."
@@ -8094,6 +8427,10 @@ msgstr "Перевірка правопису повідомлень, які в
msgid "Requires libgtkspell."
msgstr "Потрібна бібліотека libgtkspell."
+#: ../src/features_window.py:85
+msgid "Requires libgtkspell and libenchant."
+msgstr "Потрібна бібліотека libgtkspell та libenchant."
+
#: ../src/features_window.py:86
msgid "Notification"
msgstr "Сповіщення"
@@ -8235,139 +8572,124 @@ msgstr "Час"
msgid "Progress"
msgstr "Поступ"
-#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:234
+#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:235
#, python-format
msgid "Filename: %s"
msgstr "Назва файла: %s"
-#: ../src/filetransfers_window.py:179 ../src/filetransfers_window.py:333
+#: ../src/filetransfers_window.py:180 ../src/filetransfers_window.py:400
#, python-format
msgid "Size: %s"
msgstr "Розмір: %s"
#. You is a reply of who sent a file
#. You is a reply of who received a file
-#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:198
+#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:199
#: ../src/history_manager.py:541
msgid "You"
msgstr "Ви"
-#: ../src/filetransfers_window.py:189
+#: ../src/filetransfers_window.py:190
#, python-format
msgid "Sender: %s"
msgstr "Відправник: %s"
-#: ../src/filetransfers_window.py:190 ../src/filetransfers_window.py:627
-#: ../src/tooltips.py:742
+#: ../src/filetransfers_window.py:191 ../src/filetransfers_window.py:637
+#: ../src/tooltips.py:743
msgid "Recipient: "
msgstr "Отримувач:"
-#: ../src/filetransfers_window.py:201
+#: ../src/filetransfers_window.py:202
#, python-format
msgid "Saved in: %s"
msgstr "Збережено за адресою: %s"
-#: ../src/filetransfers_window.py:203
-msgid "File transfer completed"
-msgstr "Передавання файла завершено"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:225
-msgid "File transfer cancelled"
-msgstr "Передавання файла скасовано"
-
-#: ../src/filetransfers_window.py:218 ../src/filetransfers_window.py:226
-msgid "Connection with peer cannot be established."
-msgstr "Не вдалося встановити з’єднання з вузлом."
-
-#: ../src/filetransfers_window.py:235
+#: ../src/filetransfers_window.py:237
#, python-format
msgid "Recipient: %s"
msgstr "Отримувач: %s"
-#: ../src/filetransfers_window.py:237
+#: ../src/filetransfers_window.py:239
#, python-format
msgid "Error message: %s"
msgstr "Повідомлення про помилку: %s"
-#: ../src/filetransfers_window.py:238
-msgid "File transfer stopped"
-msgstr "Зупинка передавання файла"
-
-#: ../src/filetransfers_window.py:266
+#: ../src/filetransfers_window.py:268
msgid "Choose File to Send..."
msgstr "Вибрати файл для надсилання..."
-#: ../src/filetransfers_window.py:282 ../src/tooltips.py:780
+#: ../src/filetransfers_window.py:284 ../src/tooltips.py:781
msgid "Description: "
msgstr "Опис: "
-#: ../src/filetransfers_window.py:295
+#: ../src/filetransfers_window.py:297
msgid "Gajim cannot access this file"
msgstr "Gajim не може отримати доступу до цього файла"
-#: ../src/filetransfers_window.py:296
+#: ../src/filetransfers_window.py:298
msgid "This file is being used by another process."
msgstr "Цей файл використовується іншим процесом."
-#: ../src/filetransfers_window.py:330
-#, python-format
-msgid "File: %s"
-msgstr "Файл: %s"
-
-#: ../src/filetransfers_window.py:336
-#, python-format
-msgid "Type: %s"
-msgstr "Тип: %s"
-
-#: ../src/filetransfers_window.py:338
-#, python-format
-msgid "Description: %s"
-msgstr "Опис: %s"
-
-#: ../src/filetransfers_window.py:339
-#, python-format
-msgid "%s wants to send you a file:"
-msgstr "%s бажає надіслати вам файл:"
-
-#: ../src/filetransfers_window.py:352 ../src/gtkgui_helpers.py:850
+#: ../src/filetransfers_window.py:336 ../src/gtkgui_helpers.py:850
#, python-format
msgid "Cannot overwrite existing file \"%s\""
msgstr "Не вдалося перезаписати існуючий файл «%s»"
-#: ../src/filetransfers_window.py:353 ../src/gtkgui_helpers.py:851
+#: ../src/filetransfers_window.py:337 ../src/gtkgui_helpers.py:851
msgid ""
"A file with this name already exists and you do not have permission to "
"overwrite it."
msgstr ""
"Файл з такою назвою вже існує, у вас немає дозволів для його перезапису."
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "This file already exists"
msgstr "Файл з такою назвою вже існує."
-#: ../src/filetransfers_window.py:369 ../src/gtkgui_helpers.py:855
+#: ../src/filetransfers_window.py:354 ../src/gtkgui_helpers.py:855
msgid "What do you want to do?"
msgstr "Що ви хочете зробити?"
-#. read-only bit is used to mark special folder under windows,
-#. not to mark that a folder is read-only. See ticket #3587
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:862
+#. read-only bit is used to mark special folder under
+#. windows, not to mark that a folder is read-only.
+#. See ticket #3587
+#: ../src/filetransfers_window.py:365 ../src/gtkgui_helpers.py:862
#, python-format
msgid "Directory \"%s\" is not writable"
msgstr "Запис до каталогу «%s» неможливий"
-#: ../src/filetransfers_window.py:379 ../src/gtkgui_helpers.py:863
+#: ../src/filetransfers_window.py:366 ../src/gtkgui_helpers.py:863
msgid "You do not have permission to create files in this directory."
msgstr "Ваш користувач не має права на створення файлів у цьому каталозі."
-#: ../src/filetransfers_window.py:389
+#: ../src/filetransfers_window.py:377
msgid "Save File as..."
msgstr "Зберегти файл як..."
+#: ../src/filetransfers_window.py:397
+#, python-format
+msgid "File: %s"
+msgstr "Файл: %s"
+
+#: ../src/filetransfers_window.py:403
+#, python-format
+msgid "Type: %s"
+msgstr "Тип: %s"
+
+#: ../src/filetransfers_window.py:405
+#, python-format
+msgid "Description: %s"
+msgstr "Опис: %s"
+
+#: ../src/filetransfers_window.py:406
+#, python-format
+msgid "%s wants to send you a file:"
+msgstr "%s бажає надіслати вам файл:"
+
#. Print remaining time in format 00:00:00
#. You can change the places of (hours), (minutes), (seconds) -
#. they are not translatable.
-#: ../src/filetransfers_window.py:459
+#: ../src/filetransfers_window.py:469
#, python-format
msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
@@ -8375,68 +8697,68 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d"
#. This should make the string Kb/s,
#. where 'Kb' part is taken from %s.
#. Only the 's' after / (which means second) should be translated.
-#: ../src/filetransfers_window.py:552
+#: ../src/filetransfers_window.py:562
#, python-format
msgid "(%(filesize_unit)s/s)"
msgstr "(%(filesize_unit)s/s)"
-#: ../src/filetransfers_window.py:595 ../src/filetransfers_window.py:598
+#: ../src/filetransfers_window.py:605 ../src/filetransfers_window.py:608
msgid "Invalid File"
msgstr "Некоректний файл"
-#: ../src/filetransfers_window.py:595
+#: ../src/filetransfers_window.py:605
msgid "File: "
msgstr "Файл: "
-#: ../src/filetransfers_window.py:599
+#: ../src/filetransfers_window.py:609
msgid "It is not possible to send empty files"
msgstr "Надсилання порожніх файлів не передбачено"
-#: ../src/filetransfers_window.py:623 ../src/tooltips.py:732
+#: ../src/filetransfers_window.py:633 ../src/tooltips.py:733
msgid "Name: "
msgstr "Назва: "
-#: ../src/filetransfers_window.py:625 ../src/tooltips.py:736
+#: ../src/filetransfers_window.py:635 ../src/tooltips.py:737
msgid "Sender: "
msgstr "Відправник:"
-#: ../src/filetransfers_window.py:787
+#: ../src/filetransfers_window.py:797
msgid "Pause"
msgstr "Призупинити"
-#: ../src/gajim.py:190
+#: ../src/gajim.py:194
msgid "Gajim needs X server to run. Quiting..."
msgstr "Для роботи Gajim потрібен запущений сервер X. Завершення роботи..."
-#: ../src/gajim.py:192
+#: ../src/gajim.py:196
#, python-format
msgid "importing PyGTK failed: %s"
msgstr "імпорт PyGTK не вдався: %s"
-#: ../src/gajim.py:234
+#: ../src/gajim.py:237
msgid "Gajim needs PyGTK 2.16 or above"
msgstr "Для роботи Gajim потрібен PyGTK 2.16 або новіша версія"
-#: ../src/gajim.py:235
+#: ../src/gajim.py:238
msgid "Gajim needs PyGTK 2.16 or above to run. Quiting..."
msgstr ""
"Для запуску Gajim потрібен PyGTK 2.16 або новіша версія. Завершення роботи..."
-#: ../src/gajim.py:237
+#: ../src/gajim.py:240
msgid "Gajim needs GTK 2.16 or above"
msgstr "Для роботи Gajim потрібна бібліотека GTK 2.16 або новіша версія"
-#: ../src/gajim.py:238
+#: ../src/gajim.py:241
msgid "Gajim needs GTK 2.16 or above to run. Quiting..."
msgstr ""
"Для запуску Gajim потрібна бібліотека GTK 2.16 або новіша версія. Завершення "
"роботи..."
-#: ../src/gajim.py:247
+#: ../src/gajim.py:250
msgid "Gajim needs pywin32 to run"
msgstr "Для роботи Gajim потрібен pywin32"
-#: ../src/gajim.py:248
+#: ../src/gajim.py:251
#, python-format
msgid ""
"Please make sure that Pywin32 is installed on your system. You can get it at "
@@ -8446,11 +8768,11 @@ msgstr ""
"Звантажити цю програму можна за адресою %s"
#. set the icon to all newly opened wind
-#: ../src/gajim.py:364
+#: ../src/gajim.py:367
msgid "Gajim is already running"
msgstr "Gajim вже запущено"
-#: ../src/gajim.py:365
+#: ../src/gajim.py:368
msgid ""
"Another instance of Gajim seems to be running\n"
"Run anyway?"
@@ -9094,47 +9416,47 @@ msgstr "%s вийшов"
msgid "%s has joined the group chat"
msgstr "%s приєднався до групової балачки"
-#: ../src/groupchat_control.py:2017
+#: ../src/groupchat_control.py:2019
#, python-format
msgid "Are you sure you want to leave group chat \"%s\"?"
msgstr "Ви справді бажаєте полишити групову балачку «%s»?"
-#: ../src/groupchat_control.py:2019
+#: ../src/groupchat_control.py:2021
msgid ""
"If you close this window, you will be disconnected from this group chat."
msgstr "Якщо ви закриєте це вікно, вас буде від’єднано від групової балачки."
-#: ../src/groupchat_control.py:2023 ../src/gui_interface.py:668
-#: ../src/gui_interface.py:1277 ../src/gui_interface.py:1317
-#: ../src/gui_interface.py:1358 ../src/message_window.py:224
-#: ../src/roster_window.py:2942 ../src/roster_window.py:3617
-#: ../src/roster_window.py:4386
+#: ../src/groupchat_control.py:2025 ../src/gui_interface.py:673
+#: ../src/gui_interface.py:1311 ../src/gui_interface.py:1351
+#: ../src/gui_interface.py:1392 ../src/message_window.py:224
+#: ../src/roster_window.py:2989 ../src/roster_window.py:3667
+#: ../src/roster_window.py:4473
msgid "_Do not ask me again"
msgstr "Більше _не питати мене"
-#: ../src/groupchat_control.py:2057
+#: ../src/groupchat_control.py:2059
msgid "Changing Subject"
msgstr "Зміна теми"
-#: ../src/groupchat_control.py:2058
+#: ../src/groupchat_control.py:2060
msgid "Please specify the new subject:"
msgstr "Будь ласка, вкажіть нову тему:"
-#: ../src/groupchat_control.py:2065
+#: ../src/groupchat_control.py:2067
msgid "Changing Nickname"
msgstr "Зміна псевдоніма"
-#: ../src/groupchat_control.py:2066
+#: ../src/groupchat_control.py:2068
msgid "Please specify the new nickname you want to use:"
msgstr "Будь ласка, вкажіть новий псевдонім, яким ви бажаєте скористатися:"
#. Ask for a reason
-#: ../src/groupchat_control.py:2097
+#: ../src/groupchat_control.py:2099
#, python-format
msgid "Destroying %s"
msgstr "Знищення %s"
-#: ../src/groupchat_control.py:2098
+#: ../src/groupchat_control.py:2100
msgid ""
"You are going to definitively destroy this room.\n"
"You may specify a reason below:"
@@ -9142,22 +9464,22 @@ msgstr ""
"Ви маєте намір знищити цю кімнату.\n"
"Нижче ви можете вказати причину цього рішення:"
-#: ../src/groupchat_control.py:2100
+#: ../src/groupchat_control.py:2102
msgid "You may also enter an alternate venue:"
msgstr "Ви також можете вказати альтернативне місце зустрічі:"
#. ask for reason
-#: ../src/groupchat_control.py:2295
+#: ../src/groupchat_control.py:2297
#, python-format
msgid "Kicking %s"
msgstr "Викидання %s"
-#: ../src/groupchat_control.py:2296 ../src/groupchat_control.py:2628
+#: ../src/groupchat_control.py:2298 ../src/groupchat_control.py:2630
msgid "You may specify a reason below:"
msgstr "Нижче ви можете зазначити причину:"
#. ask for reason
-#: ../src/groupchat_control.py:2627
+#: ../src/groupchat_control.py:2629
#, python-format
msgid "Banning %s"
msgstr "Блокування %s"
@@ -9233,14 +9555,14 @@ msgstr "Зберегти зображення як..."
#. we are banned
#. group chat does not exist
-#: ../src/gui_interface.py:126 ../src/gui_interface.py:290
-#: ../src/gui_interface.py:299 ../src/gui_interface.py:305
-#: ../src/gui_interface.py:308 ../src/gui_interface.py:311
-#: ../src/gui_interface.py:316
+#: ../src/gui_interface.py:131 ../src/gui_interface.py:295
+#: ../src/gui_interface.py:304 ../src/gui_interface.py:310
+#: ../src/gui_interface.py:313 ../src/gui_interface.py:316
+#: ../src/gui_interface.py:321
msgid "Unable to join group chat"
msgstr "Не вдалося приєднатися до групової балачки"
-#: ../src/gui_interface.py:127
+#: ../src/gui_interface.py:132
#, python-format
msgid ""
"Your desired nickname in group chat %s is in use or registered by another "
@@ -9251,89 +9573,89 @@ msgstr ""
"використовує інший учасник.\n"
"Будь ласка, вкажіть нижче інший псевдонім:"
-#: ../src/gui_interface.py:130
+#: ../src/gui_interface.py:135
msgid "Always use this nickname when there is a conflict"
msgstr "Завжди використовувати цей псевдонім при виникненні конфліктів."
-#: ../src/gui_interface.py:147
+#: ../src/gui_interface.py:152
msgid "Do you accept this request?"
msgstr "Чи приймаєте ви цей запит?"
-#: ../src/gui_interface.py:149
+#: ../src/gui_interface.py:154
#, python-format
msgid "Do you accept this request on account %s?"
msgstr "Чи приймаєте ви запит щодо облікового запису %s?"
-#: ../src/gui_interface.py:152
+#: ../src/gui_interface.py:157
#, python-format
msgid "HTTP (%(method)s) Authorization for %(url)s (id: %(id)s)"
msgstr "HTTP (%(method)s) уповноваження для %(url)s (ідентифікатор: %(id)s)"
-#: ../src/gui_interface.py:195 ../src/notify.py:283
+#: ../src/gui_interface.py:200 ../src/notify.py:279
msgid "Connection Failed"
msgstr "Спроба з’єднання завершилася невдало"
-#: ../src/gui_interface.py:279
+#: ../src/gui_interface.py:284
#, python-format
msgid "A Password is required to join the room %s. Please type it."
msgstr ""
"Для приєднання до кімнати %s потрібен пароль. Будь ласка, введіть його."
-#: ../src/gui_interface.py:291
+#: ../src/gui_interface.py:296
#, python-format
msgid "Maximum number of users for <b>%s</b> has been reached"
msgstr "Максимальна кількість користувачів <b>%s</b> вже досягнута."
-#: ../src/gui_interface.py:300
+#: ../src/gui_interface.py:305
#, python-format
msgid "You are banned from group chat <b>%s</b>."
msgstr "Вас заблокували у груповій балачці <b>%s</b>."
-#: ../src/gui_interface.py:306
+#: ../src/gui_interface.py:311
#, python-format
msgid "Group chat <b>%s</b> does not exist."
msgstr "Групової балачки <b>%s</b> не існує."
-#: ../src/gui_interface.py:309
+#: ../src/gui_interface.py:314
msgid "Group chat creation is restricted."
msgstr "Можливість створення групових балачок обмежено."
-#: ../src/gui_interface.py:312
+#: ../src/gui_interface.py:317
#, python-format
msgid "Your registered nickname must be used in group chat <b>%s</b>."
msgstr ""
"Для групової балачки <b>%s</b> слід використовувати псевдонім, під яким ви "
"зареєструвалися."
-#: ../src/gui_interface.py:317
+#: ../src/gui_interface.py:322
#, python-format
msgid "You are not in the members list in groupchat %s."
msgstr "Вас немає у списку постійних учасників групової балачки %s."
-#: ../src/gui_interface.py:400 ../src/gui_interface.py:404
+#: ../src/gui_interface.py:405 ../src/gui_interface.py:409
#, python-format
msgid "Error %(code)s: %(msg)s"
msgstr "Помилка %(code)s: %(msg)s"
-#: ../src/gui_interface.py:456 ../src/notify.py:285
+#: ../src/gui_interface.py:461 ../src/notify.py:281
msgid "Subscription request"
msgstr "Запит на підписку"
-#: ../src/gui_interface.py:481
+#: ../src/gui_interface.py:486
msgid "Authorization accepted"
msgstr "Уповноваження прийнято"
-#: ../src/gui_interface.py:482
+#: ../src/gui_interface.py:487
#, python-format
msgid "The contact \"%s\" has authorized you to see his or her status."
msgstr "Контакт «%s» уповноважив вас на перегляд свого стану."
-#: ../src/gui_interface.py:490
+#: ../src/gui_interface.py:495
#, python-format
msgid "Contact \"%s\" removed subscription from you"
msgstr "Контакт «%s» вилучив вашу підписку"
-#: ../src/gui_interface.py:491
+#: ../src/gui_interface.py:496
msgid ""
"You will always see him or her as offline.\n"
"Do you want to remove him or her from your contact list?"
@@ -9341,16 +9663,16 @@ msgstr ""
"Цей контакт завжди буде показано зі станом «поза мережею».\n"
"Бажаєте вилучити контакт з вашого списку контактів?"
-#: ../src/gui_interface.py:512 ../src/notify.py:287
+#: ../src/gui_interface.py:517 ../src/notify.py:283
msgid "Unsubscribed"
msgstr "_Непідписаний"
-#: ../src/gui_interface.py:523
+#: ../src/gui_interface.py:528
#, python-format
msgid "Contact with \"%s\" cannot be established"
msgstr "Зв’язок з «%s» встановити не вдалося"
-#: ../src/gui_interface.py:621
+#: ../src/gui_interface.py:626
msgid ""
"You configured Gajim to use GPG agent, but there is no GPG agent running or "
"it returned a wrong passphrase.\n"
@@ -9358,32 +9680,32 @@ msgstr ""
"Ви налаштували Gajim на використання агента GPG, але агент GPG не запущено "
"або цей агент повернув помилковий пароль.\n"
-#: ../src/gui_interface.py:623 ../src/gui_interface.py:631
+#: ../src/gui_interface.py:628 ../src/gui_interface.py:636
msgid "You are currently connected without your OpenPGP key."
msgstr "Ви виконали з’єднання без вашого ключа OpenPGP."
-#: ../src/gui_interface.py:625
+#: ../src/gui_interface.py:630
msgid "Your passphrase is incorrect"
msgstr "Ваш пароль не є коректним"
-#: ../src/gui_interface.py:630
+#: ../src/gui_interface.py:635
msgid "OpenGPG Passphrase Incorrect"
msgstr "Ваш OpenPGP пароль не є коректним"
-#: ../src/gui_interface.py:643
+#: ../src/gui_interface.py:648
msgid "Certificate Passphrase Required"
msgstr "Потрібна кодова фраза для сертифікату"
-#: ../src/gui_interface.py:644
+#: ../src/gui_interface.py:649
#, python-format
msgid "Enter the passphrase for the certificate for account %s"
msgstr "Введіть пароль ключа GPG для сертифікату від облікового запису %s"
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid "GPG key not trusted"
msgstr "GPG непридатне для використання"
-#: ../src/gui_interface.py:666
+#: ../src/gui_interface.py:671
msgid ""
"The GPG key used to encrypt this chat is not trusted. Do you really want to "
"encrypt this message?"
@@ -9391,7 +9713,7 @@ msgstr ""
"З цим контактом не пов’язано жодних ключів GPG. Отже шифрування повідомлень "
"буде неможливим."
-#: ../src/gui_interface.py:679
+#: ../src/gui_interface.py:684
msgid ""
"Gnome Keyring is installed but not correctly started (environment variable "
"probably not correctly set)"
@@ -9399,12 +9721,24 @@ msgstr ""
"Gnome Keyring встановлено, але не запущено належним чином (ймовірно, змінну "
"середовища вказано неправильно)"
-#: ../src/gui_interface.py:786
+#: ../src/gui_interface.py:722
+msgid ""
+"Please copy / paste the refresh token from the website that has just been "
+"opened."
+msgstr ""
+"Будь ласка, скопіюйте/вставте оновлений запис з веб-сторінки яка щойно "
+"відкрилася."
+
+#: ../src/gui_interface.py:725
+msgid "Oauth2 Credentials"
+msgstr "Облікові дані Oauth2"
+
+#: ../src/gui_interface.py:815
#, python-format
msgid "New mail on %(gmail_mail_address)s"
msgstr "Нові повідомлення у %(gmail_mail_address)s"
-#: ../src/gui_interface.py:788
+#: ../src/gui_interface.py:817
#, python-format
msgid "You have %d new mail conversation"
msgid_plural "You have %d new mail conversations"
@@ -9412,7 +9746,7 @@ msgstr[0] "Отримано %d новий лист"
msgstr[1] "Отримано %d нових листи"
msgstr[2] "Отримано %d нових листів"
-#: ../src/gui_interface.py:801
+#: ../src/gui_interface.py:830
#, python-format
msgid ""
"\n"
@@ -9427,60 +9761,52 @@ msgstr ""
"Тема: %(subject)s\n"
"%(snippet)s"
-#: ../src/gui_interface.py:866
+#: ../src/gui_interface.py:895
#, python-format
msgid "%s wants to send you a file."
msgstr "%s бажає надіслати вам файл."
-#: ../src/gui_interface.py:903 ../src/roster_window.py:1891
-msgid "Remote contact stopped transfer"
-msgstr "Віддалений контакт зупинив передавання файлу"
-
-#: ../src/gui_interface.py:906 ../src/roster_window.py:1893
-msgid "Error opening file"
-msgstr "Помилка під час спроби прочитати файл"
-
-#: ../src/gui_interface.py:938
+#: ../src/gui_interface.py:967
#, python-format
msgid "You successfully received %(filename)s from %(name)s."
msgstr "Ви успішно отримали %(filename)s від %(name)s."
#. ft stopped
-#: ../src/gui_interface.py:942
+#: ../src/gui_interface.py:971
#, python-format
msgid "File transfer of %(filename)s from %(name)s stopped."
msgstr "Передавання файлу·%(filename)s·від·%(name)s·зупинено."
-#: ../src/gui_interface.py:955
+#: ../src/gui_interface.py:984
#, python-format
msgid "You successfully sent %(filename)s to %(name)s."
msgstr "Ви успішно надіслали %(filename)s до %(name)s."
#. ft stopped
-#: ../src/gui_interface.py:959
+#: ../src/gui_interface.py:988
#, python-format
msgid "File transfer of %(filename)s to %(name)s stopped."
msgstr "Надсилання файлу %(filename)s до %(name)s зупинено"
-#: ../src/gui_interface.py:1034
+#: ../src/gui_interface.py:1063
msgid "Unable to decrypt message"
msgstr "Не вдалося розшифрувати повідомлення"
-#: ../src/gui_interface.py:1046
+#: ../src/gui_interface.py:1075
msgid "Username Conflict"
msgstr "Конфлікт імен користувачів"
-#: ../src/gui_interface.py:1047
+#: ../src/gui_interface.py:1076
msgid "Please type a new username for your local account"
msgstr ""
"Будь ласка, введіть нове ім'я користувача для вашого локального облікового "
"запису"
-#: ../src/gui_interface.py:1062
+#: ../src/gui_interface.py:1091
msgid "Resource Conflict"
msgstr "Конфлікт ресурсів"
-#: ../src/gui_interface.py:1063
+#: ../src/gui_interface.py:1092
msgid ""
"You are already connected to this account with the same resource. Please "
"type a new one"
@@ -9489,20 +9815,20 @@ msgstr ""
"ласка, вкажіть інший ресурс"
#. TODO: we should use another pixmap ;-)
-#: ../src/gui_interface.py:1108
+#: ../src/gui_interface.py:1137
#, python-format
msgid "%s wants to start a voice chat."
msgstr "%s бажає розпочати голосову розмову."
-#: ../src/gui_interface.py:1111
+#: ../src/gui_interface.py:1140
msgid "Voice Chat Request"
msgstr "Запит на голосову розмову"
-#: ../src/gui_interface.py:1198
+#: ../src/gui_interface.py:1227
msgid "Error verifying SSL certificate"
msgstr "Помилка під час перевірки сертифіката SSL"
-#: ../src/gui_interface.py:1199
+#: ../src/gui_interface.py:1228
#, python-format
msgid ""
"There was an error verifying the SSL certificate of your jabber server: "
@@ -9513,15 +9839,15 @@ msgstr ""
"помилка: %(error)s\n"
"Ви все ще маєте намір з’єднатися з сервером?"
-#: ../src/gui_interface.py:1208
+#: ../src/gui_interface.py:1237
msgid "Ignore this error for this certificate."
msgstr "Ігнорувати цю помилку для цього сертифіката."
-#: ../src/gui_interface.py:1233
+#: ../src/gui_interface.py:1262
msgid "SSL certificate error"
msgstr "Помилка сертифіката SSL"
-#: ../src/gui_interface.py:1234
+#: ../src/gui_interface.py:1263
#, python-format
msgid ""
"It seems the SSL certificate of account %(account)s has changed or your "
@@ -9538,28 +9864,34 @@ msgstr ""
"\n"
"Ви все ще маєте намір з’єднатися і оновити відбиток сертифіката?"
-#: ../src/gui_interface.py:1270 ../src/gui_interface.py:1312
-#: ../src/gui_interface.py:1354
+#: ../src/gui_interface.py:1302 ../src/gui_interface.py:1346
+#: ../src/gui_interface.py:1388
msgid "Insecure connection"
msgstr "Небезпечне з’єднання"
-#: ../src/gui_interface.py:1271
+#: ../src/gui_interface.py:1303
#, python-format
msgid ""
"You are about to connect to the account %(account)s (%(server)s) with an "
"insecure connection. This means all your conversations will be exchanged "
-"unencrypted. Are you sure you want to do that?"
+"unencrypted. This type of connection is really discouraged.\n"
+"Are you sure you want to do that?"
msgstr ""
"Ви маєте намір надіслати з’єднатись з обліковим записом %(account)s "
"(%(server)s) через незахищене з’єднання. Весь ваш обмін повідомленнями буде "
-"незашифрованим. Ви справді бажаєте це зробити?"
+"незашифрованим. Цей тип з’єднання справді ненадійний. "
+"Ви справді бажаєте це зробити?"
-#: ../src/gui_interface.py:1276 ../src/gui_interface.py:1316
-#: ../src/gui_interface.py:1357
+#: ../src/gui_interface.py:1309 ../src/gui_interface.py:1350
+#: ../src/gui_interface.py:1391
msgid "Yes, I really want to connect insecurely"
msgstr "Так, я справді бажаю знехтувати безпекою"
-#: ../src/gui_interface.py:1313
+#: ../src/gui_interface.py:1310
+msgid "Gajim will NOT connect unless you check this box"
+msgstr "Gajim НЕ буде з’єднуватись доки ви не відмітите цю опцію"
+
+#: ../src/gui_interface.py:1347
msgid ""
"You are about to send your password on an insecure connection. You should "
"install PyOpenSSL to prevent that. Are you sure you want to do that?"
@@ -9568,7 +9900,7 @@ msgstr ""
"безпеку з’єднання, вам слід встановити PyOpenSSL. Виконати надсилання пароля "
"зараз?"
-#: ../src/gui_interface.py:1355
+#: ../src/gui_interface.py:1389
msgid ""
"You are about to send your password unencrypted on an insecure connection. "
"Are you sure you want to do that?"
@@ -9577,17 +9909,17 @@ msgstr ""
"вигляді. Виконати надсилання пароля?"
#. theme doesn't exist, disable emoticons
-#: ../src/gui_interface.py:1864 ../src/gui_interface.py:1887
+#: ../src/gui_interface.py:1898 ../src/gui_interface.py:1921
msgid "Emoticons disabled"
msgstr "Емоційки вимкнено"
-#: ../src/gui_interface.py:1865
+#: ../src/gui_interface.py:1899
msgid ""
"Your configured emoticons theme has not been found, so emoticons have been "
"disabled."
msgstr "Вказаної вами теми емоційок не було знайдено, емоційки буде вимкнено."
-#: ../src/gui_interface.py:1888
+#: ../src/gui_interface.py:1922
msgid ""
"Your configured emoticons theme cannot been loaded. You maybe need to update "
"the format of emoticons.py file. See http://trac.gajim.org/wiki/Emoticons "
@@ -9597,40 +9929,40 @@ msgstr ""
"формат файла emoticons.py. Докладніше про новий формат можна дізнатися за "
"адресою http://trac.gajim.org/wiki/Emoticons."
-#: ../src/gui_interface.py:1932 ../src/roster_window.py:3784
+#: ../src/gui_interface.py:1966 ../src/roster_window.py:3834
msgid "You cannot join a group chat while you are invisible"
msgstr "Ви не можете приєднуватися до групової балачки зі станом «невидимий»"
#. it is good to notify the user
#. in case he or she cannot see the output of the console
-#: ../src/gui_interface.py:2319
+#: ../src/gui_interface.py:2353
msgid "Could not save your settings and preferences"
msgstr "Не вдалося зберегти ваші налаштування і параметри"
-#: ../src/gui_interface.py:2869
+#: ../src/gui_interface.py:2915
msgid "Passphrase Required"
msgstr "Слід вказати пароль"
-#: ../src/gui_interface.py:2870
+#: ../src/gui_interface.py:2916
#, python-format
msgid "Enter GPG key passphrase for key %(keyid)s (account %(account)s)."
msgstr "Введіть пароль ключа GPG для ключа %(keyid)s (account %(account)s)."
-#: ../src/gui_interface.py:2884
+#: ../src/gui_interface.py:2930
msgid "GPG key expired"
msgstr "Немає ключа GPG"
-#: ../src/gui_interface.py:2885
+#: ../src/gui_interface.py:2931
#, python-format
msgid "Your GPG key has expired, you will be connected to %s without OpenPGP."
msgstr "Ваш ключ GPG застарів. З’єднання з %s буде встановлено без OpenPGP."
#. ask again
-#: ../src/gui_interface.py:2894
+#: ../src/gui_interface.py:2940
msgid "Wrong Passphrase"
msgstr "Вказано помилковий пароль"
-#: ../src/gui_interface.py:2895
+#: ../src/gui_interface.py:2941
msgid "Please retype your GPG passphrase or press Cancel."
msgstr ""
"Будь ласка, введіть ще раз свій пароль GPG або натисніть кнопку «Скасувати»."
@@ -9639,7 +9971,7 @@ msgstr ""
msgid "_New Group Chat"
msgstr "_Створити групову балачку"
-#: ../src/gui_menu_builder.py:419
+#: ../src/gui_menu_builder.py:420
msgid "I would like to add you to my roster"
msgstr "Я хочу додати вас до свого реєстру"
@@ -9654,7 +9986,7 @@ msgstr "Контакти"
#. holds time
#: ../src/history_manager.py:169 ../src/history_manager.py:213
-#: ../src/history_window.py:98
+#: ../src/history_window.py:99
msgid "Date"
msgstr "Дата"
@@ -9665,7 +9997,7 @@ msgstr "Псевдонім"
#. holds message
#: ../src/history_manager.py:185 ../src/history_manager.py:220
-#: ../src/history_window.py:106
+#: ../src/history_window.py:107
msgid "Message"
msgstr "Повідомлення"
@@ -9734,48 +10066,40 @@ msgstr[0] "Ви справді бажаєте вилучити виділене
msgstr[1] "Ви справді бажаєте вилучити виділені повідомлення?"
msgstr[2] "Ви справді бажаєте вилучити виділені повідомлення?"
-#: ../src/history_window.py:305
+#: ../src/history_window.py:306
#, python-format
msgid "Conversation History with %s"
msgstr "Журнал спілкування з %s"
-#: ../src/history_window.py:355
+#: ../src/history_window.py:356
msgid "Disk Error"
msgstr "Помилка роботи з диском"
-#: ../src/history_window.py:443
+#: ../src/history_window.py:444
#, python-format
msgid "%(nick)s is now %(status)s: %(status_msg)s"
msgstr "%(nick)s тепер %(status)s: %(status_msg)s"
-#: ../src/history_window.py:454
+#: ../src/history_window.py:455
#, python-format
msgid "Error: %s"
msgstr "Помилка: %s"
-#: ../src/history_window.py:456
+#: ../src/history_window.py:457
msgid "Error"
msgstr "Помилка."
-#: ../src/history_window.py:458
+#: ../src/history_window.py:459
#, python-format
msgid "Status is now: %(status)s: %(status_msg)s"
msgstr "Поточний стан: %(status)s: %(status_msg)s"
-#: ../src/history_window.py:461
+#: ../src/history_window.py:462
#, python-format
msgid "Status is now: %(status)s"
msgstr "Поточний стан: %(status)s"
-#: ../src/htmltextview.py:523 ../src/htmltextview.py:533
-msgid "Timeout loading image"
-msgstr "Перевищення часу очікування під час завантаження зображення"
-
-#: ../src/htmltextview.py:543
-msgid "Image is too big"
-msgstr "Зображення є завеликим"
-
-#: ../src/htmltextview.py:576
+#: ../src/htmltextview.py:522
msgid "Loading"
msgstr "Завантаження"
@@ -9811,48 +10135,48 @@ msgstr "- вестиметься запис повідомлень"
msgid "- messages will not be logged"
msgstr "- не вестиметься запис повідомлень"
-#: ../src/notify.py:326
+#: ../src/notify.py:322
msgid "Ignore"
msgstr "_Ігнорувати"
-#: ../src/plugins/gui.py:67
+#: ../src/plugins/gui.py:68
msgid "Plugin"
msgstr "Додатки"
-#: ../src/plugins/gui.py:161
+#: ../src/plugins/gui.py:162
msgid "Plugin failed"
msgstr "Активація додатка невдалаДодаток"
-#: ../src/plugins/gui.py:205
+#: ../src/plugins/gui.py:206
msgid "Unable to properly remove the plugin"
msgstr "Не вдається коректно вилучити додаток лм"
#. members not safe
-#: ../src/plugins/gui.py:213 ../src/plugins/pluginmanager.py:508
-#: ../src/plugins/pluginmanager.py:516
+#: ../src/plugins/gui.py:214 ../src/plugins/pluginmanager.py:519
+#: ../src/plugins/pluginmanager.py:527
msgid "Archive is malformed"
msgstr "Архів пошкоджений"
-#: ../src/plugins/gui.py:236 ../src/plugins/gui.py:244
-#: ../src/plugins/pluginmanager.py:524
+#: ../src/plugins/gui.py:237 ../src/plugins/gui.py:245
+#: ../src/plugins/pluginmanager.py:535
msgid "Plugin already exists"
msgstr "Додаток вже встановлено"
-#: ../src/plugins/gui.py:236
+#: ../src/plugins/gui.py:237
msgid "Overwrite?"
msgstr "Перезаписати?"
-#: ../src/plugins/gui.py:265
+#: ../src/plugins/gui.py:266
msgid "Configuration"
msgstr "Налаштування"
#. it is not zip file
#. CRC error
-#: ../src/plugins/pluginmanager.py:494 ../src/plugins/pluginmanager.py:500
+#: ../src/plugins/pluginmanager.py:505 ../src/plugins/pluginmanager.py:511
msgid "Archive corrupted"
msgstr "Архів пошкоджено"
-#: ../src/plugins/pluginmanager.py:496
+#: ../src/plugins/pluginmanager.py:507
msgid "Archive empty"
msgstr "Архів порожній "
@@ -9860,18 +10184,18 @@ msgstr "Архів порожній "
msgid "Retrieving profile..."
msgstr "Отримання профілю..."
-#: ../src/profile_window.py:125 ../src/roster_window.py:3137
+#: ../src/profile_window.py:125 ../src/roster_window.py:3184
msgid "File is empty"
msgstr "Файл порожній"
-#: ../src/profile_window.py:128 ../src/roster_window.py:3140
+#: ../src/profile_window.py:128 ../src/roster_window.py:3187
msgid "File does not exist"
msgstr "Файла не існує"
#. keep identation
#. unknown format
#: ../src/profile_window.py:142 ../src/profile_window.py:158
-#: ../src/roster_window.py:3142 ../src/roster_window.py:3153
+#: ../src/roster_window.py:3189 ../src/roster_window.py:3200
msgid "Could not load image"
msgstr "Не вдалося завантажити зображення"
@@ -9912,51 +10236,51 @@ msgid ""
msgstr ""
"Під час спроби оприлюднення ваших особистих відомостей, спробуйте пізніше."
-#: ../src/roster_window.py:240 ../src/roster_window.py:1028
+#: ../src/roster_window.py:240 ../src/roster_window.py:1031
msgid "Merged accounts"
msgstr "Об’єднані облікові записи"
-#: ../src/roster_window.py:1956
+#: ../src/roster_window.py:1999
msgid "Authorization has been sent"
msgstr "Було надіслано уповноваження"
-#: ../src/roster_window.py:1957
+#: ../src/roster_window.py:2000
#, python-format
msgid "Now \"%s\" will know your status."
msgstr "Тепер «%s» буде відомий ваш стан."
-#: ../src/roster_window.py:1980
+#: ../src/roster_window.py:2023
msgid "Subscription request has been sent"
msgstr "Було надіслано запит на підписку"
-#: ../src/roster_window.py:1981
+#: ../src/roster_window.py:2024
#, python-format
msgid "If \"%s\" accepts this request you will know his or her status."
msgstr "Якщо «%s» прийме цей запит, ви дізнаватиметеся про його або її стан."
-#: ../src/roster_window.py:1995
+#: ../src/roster_window.py:2038
msgid "Authorization has been removed"
msgstr "Уповноваження було вилучено"
-#: ../src/roster_window.py:1996
+#: ../src/roster_window.py:2039
#, python-format
msgid "Now \"%s\" will always see you as offline."
msgstr "Тепер «%s» завжди бачитиме вас як «поза мережею»."
-#: ../src/roster_window.py:2023
+#: ../src/roster_window.py:2066
msgid "GPG is not usable"
msgstr "GPG непридатне для використання"
-#: ../src/roster_window.py:2024
+#: ../src/roster_window.py:2067
#, python-format
msgid "You will be connected to %s without OpenPGP."
msgstr "З’єднання з %s буде встановлено без OpenPGP."
-#: ../src/roster_window.py:2231 ../src/roster_window.py:3714
+#: ../src/roster_window.py:2274 ../src/roster_window.py:3764
msgid "You are participating in one or more group chats"
msgstr "Ви берете участь у одній або декількох групових балачках"
-#: ../src/roster_window.py:2232 ../src/roster_window.py:3715
+#: ../src/roster_window.py:2275 ../src/roster_window.py:3765
msgid ""
"Changing your status to invisible will result in disconnection from those "
"group chats. Are you sure you want to go invisible?"
@@ -9964,27 +10288,27 @@ msgstr ""
"Зміна стану на «невидимий» призведе до вашого виходу з наведених групових "
"балачок. Ви справді бажаєте змінити стан на «невидимий»?"
-#: ../src/roster_window.py:2258
+#: ../src/roster_window.py:2301
msgid "desync'ed"
msgstr "розсинхронізація"
-#: ../src/roster_window.py:2324
+#: ../src/roster_window.py:2367
msgid "Really quit Gajim?"
msgstr "Справді вийти з Gajim?"
-#: ../src/roster_window.py:2325
+#: ../src/roster_window.py:2368
msgid "Are you sure you want to quit Gajim?"
msgstr "Ви справді бажаєте вийти з Gajim?"
-#: ../src/roster_window.py:2326
+#: ../src/roster_window.py:2369
msgid "Always close Gajim"
msgstr "Завжди закривати Gajim"
-#: ../src/roster_window.py:2410
+#: ../src/roster_window.py:2455
msgid "You have running file transfers"
msgstr "Ви маєте активні перенесення файлів"
-#: ../src/roster_window.py:2411
+#: ../src/roster_window.py:2456
msgid ""
"If you quit now, the file(s) being transferred will be stopped. Do you still "
"want to quit?"
@@ -9992,11 +10316,11 @@ msgstr ""
"Якщо ви вийдете зараз, усі передачі файлів буде зупинено. Ви все ще бажаєте "
"вийти?"
-#: ../src/roster_window.py:2442 ../src/roster_window.py:2856
+#: ../src/roster_window.py:2487 ../src/roster_window.py:2903
msgid "You have unread messages"
msgstr "У вас є непрочитані повідомлення"
-#: ../src/roster_window.py:2443
+#: ../src/roster_window.py:2488
msgid ""
"Messages will only be available for reading them later if you have history "
"enabled and contact is in your roster."
@@ -10004,16 +10328,16 @@ msgstr ""
"Доступ для читання повідомлень буде можливим, лише якщо ви увімкнули журнал, "
"а контакт наявний у вашому реєстрі."
-#: ../src/roster_window.py:2857
+#: ../src/roster_window.py:2904
msgid "You must read them before removing this transport."
msgstr "Вам слід прочитати їх, перш ніж вилучати цей транспорт."
-#: ../src/roster_window.py:2860
+#: ../src/roster_window.py:2907
#, python-format
msgid "Transport \"%s\" will be removed"
msgstr "Транспорт \"%s\" буде вилучено"
-#: ../src/roster_window.py:2861
+#: ../src/roster_window.py:2908
msgid ""
"You will no longer be able to send and receive messages from contacts using "
"this transport."
@@ -10021,11 +10345,11 @@ msgstr ""
"Ви більше не зможете надсилати і отримувати повідомлення від контактів за "
"допомогою цього транспорту."
-#: ../src/roster_window.py:2864
+#: ../src/roster_window.py:2911
msgid "Transports will be removed"
msgstr "Транспорти буде вилучено"
-#: ../src/roster_window.py:2869
+#: ../src/roster_window.py:2916
#, python-format
msgid ""
"You will no longer be able to send and receive messages to contacts from "
@@ -10034,11 +10358,11 @@ msgstr ""
"Ви більше не зможете надсилати і отримувати повідомлення від контактів за "
"допомогою цих транспортів: %s"
-#: ../src/roster_window.py:2937
+#: ../src/roster_window.py:2984
msgid "You are about to block a contact. Are you sure you want to continue?"
msgstr "Ви маєте намір створити метаконтакт. Ви справді цього бажаєте?"
-#: ../src/roster_window.py:2939
+#: ../src/roster_window.py:2986
msgid ""
"This contact will see you offline and you will not receive messages he will "
"send you."
@@ -10047,56 +10371,56 @@ msgstr ""
"від нього повідомлень."
#. it's jid
-#: ../src/roster_window.py:3029
+#: ../src/roster_window.py:3076
msgid "Rename Contact"
msgstr "Перейменувати контакт"
-#: ../src/roster_window.py:3030
+#: ../src/roster_window.py:3077
#, python-format
msgid "Enter a new nickname for contact %s"
msgstr "Введіть новий псевдонім для контакту %s"
-#: ../src/roster_window.py:3037
+#: ../src/roster_window.py:3084
msgid "Rename Group"
msgstr "Перейменувати групу"
-#: ../src/roster_window.py:3038
+#: ../src/roster_window.py:3085
#, python-format
msgid "Enter a new name for group %s"
msgstr "Введіть нову назву для групи %s"
-#: ../src/roster_window.py:3083
+#: ../src/roster_window.py:3130
msgid "Remove Group"
msgstr "Вилучити групу"
-#: ../src/roster_window.py:3084
+#: ../src/roster_window.py:3131
#, python-format
msgid "Do you want to remove group %s from the roster?"
msgstr "Бажаєте вилучити групу %s з реєстру?"
-#: ../src/roster_window.py:3085
+#: ../src/roster_window.py:3132
msgid "Also remove all contacts in this group from your roster"
msgstr "Крім того, вилучити всі контакти з цієї групи з вашого реєстру"
-#: ../src/roster_window.py:3124
+#: ../src/roster_window.py:3171
msgid "Assign OpenPGP Key"
msgstr "Призначити ключ OpenPGP"
-#: ../src/roster_window.py:3125
+#: ../src/roster_window.py:3172
msgid "Select a key to apply to the contact"
msgstr "Оберіть ключ для використання з цим контактом"
-#: ../src/roster_window.py:3524
+#: ../src/roster_window.py:3574
#, python-format
msgid "Contact \"%s\" will be removed from your roster"
msgstr "Контакт «%s» буде вилучено з вашого реєстру"
-#: ../src/roster_window.py:3526
+#: ../src/roster_window.py:3576
#, python-format
msgid "You are about to remove \"%(name)s\" (%(jid)s) from your roster.\n"
msgstr "Ви збираєтесь вилучити \"%(name)s\" (%(jid)s) з вашого реєстру.\n"
-#: ../src/roster_window.py:3531
+#: ../src/roster_window.py:3581
msgid ""
"By removing this contact you also remove authorization resulting in him or "
"her always seeing you as offline."
@@ -10105,11 +10429,11 @@ msgstr ""
"вона не зможуть визначати, коли ви перебуватимете у мережі."
#. Contact is not in roster
-#: ../src/roster_window.py:3537
+#: ../src/roster_window.py:3587
msgid "Do you want to continue?"
msgstr "Бажаєте продовжити виконання операції?"
-#: ../src/roster_window.py:3541
+#: ../src/roster_window.py:3591
msgid ""
"By removing this contact you also by default remove authorization resulting "
"in him or her always seeing you as offline."
@@ -10117,16 +10441,16 @@ msgstr ""
"Вилучення цього контакту призведе до вилучення уповноваження, отже він або "
"вона не зможуть визначати, коли ви перебуватимете у мережі."
-#: ../src/roster_window.py:3544
+#: ../src/roster_window.py:3594
msgid "I want this contact to know my status after removal"
msgstr "Я хочу, щоб цей контакт знав про мій стан після вилучення"
#. several contact to remove at the same time
-#: ../src/roster_window.py:3548
+#: ../src/roster_window.py:3598
msgid "Contacts will be removed from your roster"
msgstr "Контакти буде вилучено з вашого реєстру"
-#: ../src/roster_window.py:3553
+#: ../src/roster_window.py:3603
#, python-format
msgid ""
"By removing these contacts:%s\n"
@@ -10136,12 +10460,12 @@ msgstr ""
"призведе до вилучення уповноваження, отже для них ви завжди залишатиметеся "
"поза мережею."
-#: ../src/roster_window.py:3611
+#: ../src/roster_window.py:3661
msgid ""
"You are about to send a custom status. Are you sure you want to continue?"
msgstr "Ви маєте намір надіслати особливий статус. Ви справді цього бажаєте?"
-#: ../src/roster_window.py:3613
+#: ../src/roster_window.py:3663
#, python-format
msgid ""
"This contact will temporarily see you as %(status)s, but only until you "
@@ -10150,21 +10474,21 @@ msgstr ""
"Цей контакт тимчасово бачитиме вас як %(status)s, но лише до зміни вашого "
"статусу. Потім він бачитиме ваш глобальний статус."
-#: ../src/roster_window.py:3632
+#: ../src/roster_window.py:3682
msgid "No account available"
msgstr "Немає жодного облікового запису"
-#: ../src/roster_window.py:3633
+#: ../src/roster_window.py:3683
msgid "You must create an account before you can chat with other contacts."
msgstr ""
"Перш ніж ви зможете розпочати балачку з контактами, вам слід створити "
"обліковий запис."
-#: ../src/roster_window.py:4286
+#: ../src/roster_window.py:4373
msgid "Metacontacts storage not supported by your server"
msgstr "Збереження метаконтактів не підтримується вашим сервером"
-#: ../src/roster_window.py:4288
+#: ../src/roster_window.py:4375
msgid ""
"Your server does not support storing metacontacts information. So those "
"information will not be saved on next reconnection."
@@ -10172,12 +10496,12 @@ msgstr ""
"Ваш сервер не підтримує збереження відомостей щодо метаконтактів. Отже ці "
"відомості не буде збережено до наступного з’єднання."
-#: ../src/roster_window.py:4380
+#: ../src/roster_window.py:4467
msgid ""
"You are about to create a metacontact. Are you sure you want to continue?"
msgstr "Ви маєте намір створити метаконтакт. Ви справді цього бажаєте?"
-#: ../src/roster_window.py:4382
+#: ../src/roster_window.py:4469
msgid ""
"Metacontacts are a way to regroup several contacts in one line. Generally it "
"is used when the same person has several Jabber accounts or transport "
@@ -10187,11 +10511,11 @@ msgstr ""
"списку. Загалом кажучи, метаконтакти використовуються, якщо вашим контактом "
"є особа з декількома обліковими записами або транспортами Jabber."
-#: ../src/roster_window.py:4503
+#: ../src/roster_window.py:4590
msgid "Invalid file URI:"
msgstr "Некоректна адреса файла:"
-#: ../src/roster_window.py:4515
+#: ../src/roster_window.py:4602
#, python-format
msgid "Do you want to send this file to %s:"
msgid_plural "Do you want to send these files to %s:"
@@ -10199,17 +10523,17 @@ msgstr[0] "Ви справді бажаєте надіслати цей файл
msgstr[1] "Ви справді бажаєте надіслати ці файли до %s:"
msgstr[2] "Ви справді бажаєте надіслати ці файли до %s:"
-#: ../src/roster_window.py:4650
+#: ../src/roster_window.py:4737
#, python-format
msgid "Send %s to %s"
msgstr "Надіслати %s до %s"
-#: ../src/roster_window.py:4661
+#: ../src/roster_window.py:4748
#, python-format
msgid "Make %s first contact"
msgstr "Зробити %s першим контактом."
-#: ../src/roster_window.py:4664
+#: ../src/roster_window.py:4751
#, python-format
msgid "Make %s and %s metacontacts"
msgstr "Робить %s та %s метаконтактом."
@@ -10219,129 +10543,129 @@ msgstr "Робить %s та %s метаконтактом."
#. for chat_with
#. for single message
#. join gc
-#: ../src/roster_window.py:5104 ../src/roster_window.py:5158
-#: ../src/roster_window.py:5167 ../src/statusicon.py:264
+#: ../src/roster_window.py:5190 ../src/roster_window.py:5244
+#: ../src/roster_window.py:5253 ../src/statusicon.py:264
#: ../src/statusicon.py:311 ../src/statusicon.py:317
#, python-format
msgid "using account %s"
msgstr "з облікового запису %s"
#. add
-#: ../src/roster_window.py:5174
+#: ../src/roster_window.py:5260
#, python-format
msgid "to %s account"
msgstr "до облікового запису %s"
#. disco
-#: ../src/roster_window.py:5179
+#: ../src/roster_window.py:5265
#, python-format
msgid "using %s account"
msgstr "з облікового запису %s"
-#: ../src/roster_window.py:5218 ../src/statusicon.py:327
+#: ../src/roster_window.py:5304 ../src/statusicon.py:327
msgid "_Manage Bookmarks..."
msgstr "_Керування закладками..."
#. profile, avatar
-#: ../src/roster_window.py:5238
+#: ../src/roster_window.py:5324
#, python-format
msgid "of account %s"
msgstr "облікового запису %s"
-#: ../src/roster_window.py:5279
+#: ../src/roster_window.py:5365
#, python-format
msgid "for account %s"
msgstr "до облікового запису %s"
-#: ../src/roster_window.py:5339 ../src/roster_window.py:5447
+#: ../src/roster_window.py:5425 ../src/roster_window.py:5533
msgid "_Change Status Message"
msgstr "_Змінити повідомлення про стан"
-#: ../src/roster_window.py:5372
+#: ../src/roster_window.py:5458
msgid "Publish Tune"
msgstr "Оприлюднити музику"
-#: ../src/roster_window.py:5374
+#: ../src/roster_window.py:5460
msgid "Publish Location"
msgstr "Оприлюднити положення"
-#: ../src/roster_window.py:5377
+#: ../src/roster_window.py:5463
msgid "Configure Services..."
msgstr "Налаштувати служби..."
-#: ../src/roster_window.py:5525
+#: ../src/roster_window.py:5611
msgid "_Maximize All"
msgstr "_Максимізувати всі"
-#: ../src/roster_window.py:5535 ../src/roster_window.py:5708
+#: ../src/roster_window.py:5621 ../src/roster_window.py:5794
msgid "Send Group M_essage"
msgstr "Надіслати групове п_овідомлення"
-#: ../src/roster_window.py:5543
+#: ../src/roster_window.py:5629
msgid "To all users"
msgstr "Усім користувачам"
-#: ../src/roster_window.py:5547
+#: ../src/roster_window.py:5633
msgid "To all online users"
msgstr "Усім користувачам на зв'язку"
#. Manage Transport submenu
-#: ../src/roster_window.py:5728
+#: ../src/roster_window.py:5814
msgid "_Manage Contacts"
msgstr "_Керування контактами"
#. Edit Groups
-#: ../src/roster_window.py:5737
+#: ../src/roster_window.py:5823
msgid "Edit _Groups"
msgstr "Редагувати _групи"
#. Send single message
-#: ../src/roster_window.py:5792
+#: ../src/roster_window.py:5878
msgid "Send Single Message"
msgstr "Надіслати окреме повідомлення"
#. Execute Command
-#: ../src/roster_window.py:5839
+#: ../src/roster_window.py:5925
msgid "Execute Command..."
msgstr "Виконати команду..."
#. Manage Transport submenu
-#: ../src/roster_window.py:5849
+#: ../src/roster_window.py:5935
msgid "_Manage Transport"
msgstr "_Керування транспортом"
#. Modify Transport
-#: ../src/roster_window.py:5858
+#: ../src/roster_window.py:5944
msgid "_Modify Transport"
msgstr "_Змінити транспорт"
#. Rename
-#: ../src/roster_window.py:5868
+#: ../src/roster_window.py:5954
msgid "_Rename"
msgstr "Пере_йменувати"
-#: ../src/roster_window.py:5928
+#: ../src/roster_window.py:6014
msgid "_Maximize"
msgstr "_Максимізувати"
-#: ../src/roster_window.py:5937
+#: ../src/roster_window.py:6023
msgid "_Reconnect"
msgstr "_Перез’єднати"
-#: ../src/roster_window.py:5944
+#: ../src/roster_window.py:6030
msgid "_Disconnect"
msgstr "_Роз'єднати"
#. History manager
-#: ../src/roster_window.py:6033
+#: ../src/roster_window.py:6119
msgid "History Manager"
msgstr "Керування журналом"
-#: ../src/roster_window.py:6044
+#: ../src/roster_window.py:6130
msgid "_Join New Group Chat"
msgstr "_Приєднатись до нової групової балачки"
-#: ../src/roster_window.py:6263
+#: ../src/roster_window.py:6349
msgid "Change Status Message..."
msgstr "Змінити повідомлення про стан..."
@@ -10358,15 +10682,15 @@ msgstr "Помилка у отриманих даних"
msgid "No result"
msgstr "Результату немає"
-#: ../src/session.py:98
+#: ../src/session.py:97
msgid "Disk WriteError"
msgstr "Помилка під час запису на диск"
-#: ../src/session.py:407 ../src/session.py:466
+#: ../src/session.py:411 ../src/session.py:470
msgid "Confirm these session options"
msgstr "Підтвердити параметри цих сеансів"
-#: ../src/session.py:409
+#: ../src/session.py:413
#, python-format
msgid ""
"The remote client wants to negotiate a session with these features:\n"
@@ -10381,7 +10705,7 @@ msgstr ""
"\n"
"Чи всі вказані параметри є прийнятними?"
-#: ../src/session.py:468
+#: ../src/session.py:472
#, python-format
msgid ""
"The remote client selected these options:\n"
@@ -10396,7 +10720,7 @@ msgstr ""
"\n"
"Продовжити цей сеанс?"
-#: ../src/session.py:471
+#: ../src/session.py:475
msgid "Always accept for this contact"
msgstr "Завжди приймати цей контакт"
@@ -10412,134 +10736,134 @@ msgstr "Сховати реєстр"
msgid "Hide this menu"
msgstr "Сховати це меню"
-#: ../src/tooltips.py:392 ../src/tooltips.py:604
+#: ../src/tooltips.py:393 ../src/tooltips.py:605
msgid "Jabber ID: "
msgstr "Jabber ID: "
-#: ../src/tooltips.py:395 ../src/tooltips.py:608
+#: ../src/tooltips.py:396 ../src/tooltips.py:609
msgid "Resource: "
msgstr "Ресурс"
-#: ../src/tooltips.py:401
+#: ../src/tooltips.py:402
#, python-format
msgid "%(owner_or_admin_or_member)s of this group chat"
msgstr "%(owner_or_admin_or_member)s цієї групової балачки"
-#: ../src/tooltips.py:502
+#: ../src/tooltips.py:503
msgid " [blocked]"
msgstr " [заблоковано]"
-#: ../src/tooltips.py:506
+#: ../src/tooltips.py:507
msgid " [minimized]"
msgstr " [мінімізовано]"
-#: ../src/tooltips.py:521 ../src/tooltips.py:777
+#: ../src/tooltips.py:522 ../src/tooltips.py:778
msgid "Status: "
msgstr "Стан: "
-#: ../src/tooltips.py:565
+#: ../src/tooltips.py:566
#, python-format
msgid "Last status: %s"
msgstr "Попередній стан: %s"
-#: ../src/tooltips.py:567
+#: ../src/tooltips.py:568
#, python-format
msgid " since %s"
msgstr " з %s"
-#: ../src/tooltips.py:585
+#: ../src/tooltips.py:586
msgid "Connected"
msgstr "З'єднано"
-#: ../src/tooltips.py:587
+#: ../src/tooltips.py:588
msgid "Disconnected"
msgstr "Роз'єднано"
#. ('both' is the normal sub so we don't show it)
-#: ../src/tooltips.py:615
+#: ../src/tooltips.py:616
msgid "Subscription: "
msgstr "Підписка:"
-#: ../src/tooltips.py:625
+#: ../src/tooltips.py:626
msgid "OpenPGP: "
msgstr "OpenPGP: "
-#: ../src/tooltips.py:646
+#: ../src/tooltips.py:647
#, python-format
msgid "Idle since %s"
msgstr "Відсутній з %s"
-#: ../src/tooltips.py:647
+#: ../src/tooltips.py:648
#, python-format
msgid "Idle for %s"
msgstr "Відсутній %s"
-#: ../src/tooltips.py:698
+#: ../src/tooltips.py:699
#, python-format
msgid "Mood: %s"
msgstr "Настрій: %s"
-#: ../src/tooltips.py:702
+#: ../src/tooltips.py:703
#, python-format
msgid "Activity: %s"
msgstr "Заняття: %s"
-#: ../src/tooltips.py:706
+#: ../src/tooltips.py:707
#, python-format
msgid "Tune: %s"
msgstr "Музика: %s"
-#: ../src/tooltips.py:710
+#: ../src/tooltips.py:711
#, python-format
msgid "Location: %s"
msgstr "Положення: %s"
-#: ../src/tooltips.py:735
+#: ../src/tooltips.py:736
msgid "Download"
msgstr "Звантажити"
-#: ../src/tooltips.py:741
+#: ../src/tooltips.py:742
msgid "Upload"
msgstr "Вивантажити"
-#: ../src/tooltips.py:748
+#: ../src/tooltips.py:749
msgid "Type: "
msgstr "Тип: "
-#: ../src/tooltips.py:752
+#: ../src/tooltips.py:753
msgid "Transferred: "
msgstr "Передано:"
-#: ../src/tooltips.py:755 ../src/tooltips.py:776
+#: ../src/tooltips.py:756 ../src/tooltips.py:777
msgid "Not started"
msgstr "Не розпочато"
-#: ../src/tooltips.py:759
+#: ../src/tooltips.py:760
msgid "Stopped"
msgstr "Зупинено"
-#: ../src/tooltips.py:761 ../src/tooltips.py:764
+#: ../src/tooltips.py:762 ../src/tooltips.py:765
msgid "Completed"
msgstr "Завершено"
-#: ../src/tooltips.py:768
+#: ../src/tooltips.py:769
msgid "?transfer status:Paused"
msgstr "Призупинено"
#. stalled is not paused. it is like 'frozen' it stopped alone
-#: ../src/tooltips.py:772
+#: ../src/tooltips.py:773
msgid "Stalled"
msgstr "Заблоковано"
-#: ../src/tooltips.py:774
+#: ../src/tooltips.py:775
msgid "Transferring"
msgstr "Перенесення"
-#: ../src/tooltips.py:812
+#: ../src/tooltips.py:813
msgid "This service has not yet responded with detailed information"
msgstr "Ця служба ще не надала докладних відомостей"
-#: ../src/tooltips.py:815
+#: ../src/tooltips.py:816
msgid ""
"This service could not respond with detailed information.\n"
"It is most likely legacy or broken"
@@ -10618,14 +10942,8 @@ msgstr "У черзі немає запитів на підписку."
msgid " resource with priority "
msgstr " пріоритетний ресурс"
-#~ msgid "File transfer"
-#~ msgstr "Перенесення файлів"
-
-#~ msgid "Size"
-#~ msgstr "Розмір"
-
-#~ msgid "_Accept"
-#~ msgstr "_Прийняти"
+#~ msgid "Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
+#~ msgstr "Потрібен pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour)."
#~ msgid "Choose Client Cert"
#~ msgstr "Оберіть клієнтський сертифікат"
@@ -10724,9 +11042,6 @@ msgstr " пріоритетний ресурс"
#~ msgid "_Inform me with a popup window"
#~ msgstr "_Повідомити мене виринаючим вікном"
-#~ msgid "_Open chat window with user"
-#~ msgstr "_Відкрити вікно балачки з користувачем"
-
#~ msgid "_Show event in notification area"
#~ msgstr "_Показати події у зоні сповіщень"
@@ -10751,9 +11066,6 @@ msgstr " пріоритетний ресурс"
#~ msgid "when I'm in"
#~ msgstr "коли я у"
-#~ msgid "Available"
-#~ msgstr "Доступний"
-
#~ msgid "Descrition:"
#~ msgstr "Опис: "
diff --git a/setup_win32.py b/setup_win32.py
index c65b62857..079c95942 100644
--- a/setup_win32.py
+++ b/setup_win32.py
@@ -1,6 +1,6 @@
## setup_win32.py (run me as python setup_win32.py py2exe -O2)
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
diff --git a/src/adhoc_commands.py b/src/adhoc_commands.py
index b0835b474..ec05d8dbf 100644
--- a/src/adhoc_commands.py
+++ b/src/adhoc_commands.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006-2007 Tomasz Melcer <liori AT exroot.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
## Stephan Erb <steve-e AT h3c.de>
##
@@ -99,7 +99,7 @@ class CommandWindow:
self.stage1()
# displaying the window
- self.window.set_title('Ad-hoc Commands - Gajim')
+ self.window.set_title(_('Ad-hoc Commands - Gajim'))
self.xml.connect_signals(self)
self.window.show_all()
@@ -415,7 +415,7 @@ class CommandWindow:
return
self.data_form_widget.show()
if self.data_form_widget.title:
- self.window.set_title('%s - Ad-hoc Commands - Gajim' % \
+ self.window.set_title(_('%s - Ad-hoc Commands - Gajim') % \
self.data_form_widget.title)
else:
self.data_form_widget.hide()
diff --git a/src/advanced_configuration_window.py b/src/advanced_configuration_window.py
index d59ed09a1..5481d2aaa 100644
--- a/src/advanced_configuration_window.py
+++ b/src/advanced_configuration_window.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2005 Travis Shirk <travis AT pobox.com>
## Vincent Hanquez <tab AT snarc.org>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
@@ -81,6 +81,7 @@ class AdvancedConfigurationWindow(object):
self.entry = self.xml.get_object('advanced_entry')
self.desc_label = self.xml.get_object('advanced_desc_label')
self.restart_label = self.xml.get_object('restart_label')
+ self.reset_button = self.xml.get_object('reset_button')
# Format:
# key = option name (root/subopt/opt separated by \n then)
@@ -174,6 +175,13 @@ class AdvancedConfigurationWindow(object):
else:
#we talk about option description in advanced configuration editor
self.desc_label.set_text(_('(None)'))
+ if len(opt_path) == 3 or (len(opt_path) == 1 and not \
+ model.iter_has_child(iter_)):
+ self.reset_button.set_sensitive(True)
+ else:
+ self.reset_button.set_sensitive(False)
+ else:
+ self.reset_button.set_sensitive(False)
def remember_option(self, option, oldval, newval):
if option in self.changed_opts:
@@ -195,7 +203,6 @@ class AdvancedConfigurationWindow(object):
optname = optnamerow[0].decode('utf-8')
keyrow = self.model[modelpath[:2]]
key = keyrow[0].decode('utf-8')
- gajim.config.get_desc_per(optname, key, option)
self.remember_option(option + '\n' + key + '\n' + optname,
modelrow[1], newval)
gajim.config.set_per(optname, key, option, newval)
@@ -244,6 +251,42 @@ class AdvancedConfigurationWindow(object):
def on_advanced_configuration_window_destroy(self, widget):
del gajim.interface.instances['advanced_config']
+ def on_reset_button_clicked(self, widget):
+ model, iter_ = self.treeview.get_selection().get_selected()
+ # Check for GtkTreeIter
+ if iter_:
+ path = model.get_path(iter_)
+ opt_path = self.get_option_path(model, iter_)
+ if len(opt_path) == 1:
+ default = gajim.config.get_default(opt_path[0])
+ elif len(opt_path) == 3:
+ default = gajim.config.get_default_per(opt_path[2], opt_path[0])
+
+ if model[iter_][C_TYPE] == self.types['boolean']:
+ if self.right_true_dict[default] == model[iter_][C_VALUE]:
+ return
+ modelpath = self.modelfilter.convert_path_to_child_path(path)
+ modelrow = self.model[modelpath]
+ option = modelrow[0].decode('utf-8')
+ if len(modelpath) > 1:
+ optnamerow = self.model[modelpath[0]]
+ optname = optnamerow[0].decode('utf-8')
+ keyrow = self.model[modelpath[:2]]
+ key = keyrow[0].decode('utf-8')
+ self.remember_option(option + '\n' + key + '\n' + optname,
+ modelrow[C_VALUE], default)
+ gajim.config.set_per(optname, key, option, default)
+ else:
+ self.remember_option(option, modelrow[C_VALUE], default)
+ gajim.config.set(option, default)
+ gajim.interface.save_config()
+ modelrow[C_VALUE] = self.right_true_dict[default]
+ self.check_for_restart()
+ else:
+ if str(default) == model[iter_][C_VALUE]:
+ return
+ self.on_config_edited(None, path, str(default))
+
def on_advanced_close_button_clicked(self, widget):
self.window.destroy()
@@ -254,14 +297,18 @@ class AdvancedConfigurationWindow(object):
newparent = self.model.append(parent, [name, '', ''])
self.fill_model(item, newparent)
else: # Leaf
- type_ = self.types[option[OPT_TYPE][0]]
+ if len(item) == 1:
+ type_ = self.types[gajim.config.get_type(name)]
+ elif len(item) == 3:
+ type_ = self.types[gajim.config.get_type_per(item[0],
+ item[2])]
if name == 'password':
value = _('Hidden')
else:
if type_ == self.types['boolean']:
- value = self.right_true_dict[option[OPT_VAL]]
+ value = self.right_true_dict[option]
else:
- value = option[OPT_VAL]
+ value = option
self.model.append(parent, [name, value, type_])
def visible_func(self, model, treeiter):
diff --git a/src/atom_window.py b/src/atom_window.py
index 70d47e2f2..6c9f9ec52 100644
--- a/src/atom_window.py
+++ b/src/atom_window.py
@@ -2,7 +2,7 @@
## src/atom_window.py
##
## Copyright (C) 2006 Tomasz Melcer <liori AT exroot.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
diff --git a/src/cell_renderer_image.py b/src/cell_renderer_image.py
index 1e5b4bb8e..d2e6c4a8b 100644
--- a/src/cell_renderer_image.py
+++ b/src/cell_renderer_image.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/cell_renderer_image.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Travis Shirk <travis AT pobox.com>
diff --git a/src/chat_control.py b/src/chat_control.py
index dac0224e9..d2201eb91 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -2,7 +2,7 @@
## src/chat_control.py
##
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Nikos Kouremenos <kourem AT gmail.com>
## Travis Shirk <travis AT pobox.com>
@@ -56,6 +56,7 @@ from common.xmpp.protocol import NS_RECEIPTS, NS_ESESSION
from common.xmpp.protocol import NS_JINGLE_RTP_AUDIO, NS_JINGLE_RTP_VIDEO, NS_JINGLE_ICE_UDP, NS_JINGLE_FILE_TRANSFER
from common.xmpp.protocol import NS_CHATSTATES
from common.connection_handlers_events import MessageOutgoingEvent
+from common.exceptions import GajimGeneralException
from command_system.implementation.middleware import ChatCommandProcessor
from command_system.implementation.middleware import CommandTools
@@ -469,7 +470,6 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.user_nick = None
self.smooth = True
- self.msg_textview.grab_focus()
self.command_hits = []
self.last_key_tabs = False
@@ -864,7 +864,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
def send_message(self, message, keyID='', type_='chat', chatstate=None,
msg_id=None, resource=None, xhtml=None, callback=None, callback_args=[],
- process_commands=True):
+ process_commands=True, attention=False):
"""
Send the given message to the active tab. Doesn't return None if error
"""
@@ -881,7 +881,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
keyID=keyID, type_=type_, chatstate=chatstate, msg_id=msg_id,
resource=resource, user_nick=self.user_nick, xhtml=xhtml,
label=label, callback=callback, callback_args=callback_args,
- control=self))
+ control=self, attention=attention))
# Record the history of sent messages
self.save_message(message, 'sent')
@@ -920,10 +920,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.received_history_pos = pos
def print_conversation_line(self, text, kind, name, tim,
- other_tags_for_name=[], other_tags_for_time=[],
- other_tags_for_text=[], count_as_new=True, subject=None,
- old_kind=None, xhtml=None, simple=False, xep0184_id=None,
- graphics=True, displaymarking=None):
+ other_tags_for_name=[], other_tags_for_time=[], other_tags_for_text=[],
+ count_as_new=True, subject=None, old_kind=None, xhtml=None, simple=False,
+ xep0184_id=None, graphics=True, displaymarking=None, msg_id=None):
"""
Print 'chat' type messages
"""
@@ -934,9 +933,9 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if self.was_at_the_end or kind == 'outgoing':
end = True
textview.print_conversation_line(text, jid, kind, name, tim,
- other_tags_for_name, other_tags_for_time, other_tags_for_text,
- subject, old_kind, xhtml, simple=simple, graphics=graphics,
- displaymarking=displaymarking)
+ other_tags_for_name, other_tags_for_time, other_tags_for_text,
+ subject, old_kind, xhtml, simple=simple, graphics=graphics,
+ displaymarking=displaymarking)
if xep0184_id is not None:
textview.show_xep0184_warning(xep0184_id)
@@ -979,18 +978,18 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
type_ = 'printed_' + self.type_id
event = 'message_received'
show_in_roster = notify.get_show_in_roster(event,
- self.account, self.contact, self.session)
+ self.account, self.contact, self.session)
show_in_systray = notify.get_show_in_systray(event,
- self.account, self.contact, type_)
+ self.account, self.contact, type_)
- event = gajim.events.create_event(type_, (self,),
- show_in_roster=show_in_roster,
+ event = gajim.events.create_event(type_, (text, subject, self,
+ msg_id), show_in_roster=show_in_roster,
show_in_systray=show_in_systray)
gajim.events.add_event(self.account, full_jid, event)
# We need to redraw contact if we show in roster
if show_in_roster:
gajim.interface.roster.draw_contact(self.contact.jid,
- self.account)
+ self.account)
if not self.parent_win:
return
@@ -1437,22 +1436,22 @@ class ChatControl(ChatControlBase):
def __init__(self, parent_win, contact, acct, session, resource=None):
ChatControlBase.__init__(self, self.TYPE_ID, parent_win,
- 'chat_control', contact, acct, resource)
+ 'chat_control', contact, acct, resource)
self.gpg_is_active = False
# for muc use:
# widget = self.xml.get_object('muc_window_actions_button')
self.actions_button = self.xml.get_object('message_window_actions_button')
id_ = self.actions_button.connect('clicked',
- self.on_actions_button_clicked)
+ self.on_actions_button_clicked)
self.handlers[id_] = self.actions_button
self._formattings_button = self.xml.get_object('formattings_button')
self._add_to_roster_button = self.xml.get_object(
- 'add_to_roster_button')
+ 'add_to_roster_button')
id_ = self._add_to_roster_button.connect('clicked',
- self._on_add_to_roster_menuitem_activate)
+ self._on_add_to_roster_menuitem_activate)
self.handlers[id_] = self._add_to_roster_button
self._audio_button = self.xml.get_object('audio_togglebutton')
@@ -1460,14 +1459,14 @@ class ChatControl(ChatControlBase):
self.handlers[id_] = self._audio_button
# add a special img
gtkgui_helpers.add_image_to_button(self._audio_button,
- 'gajim-mic_inactive')
+ 'gajim-mic_inactive')
self._video_button = self.xml.get_object('video_togglebutton')
id_ = self._video_button.connect('toggled', self.on_video_button_toggled)
self.handlers[id_] = self._video_button
# add a special img
gtkgui_helpers.add_image_to_button(self._video_button,
- 'gajim-cam_inactive')
+ 'gajim-cam_inactive')
self._send_file_button = self.xml.get_object('send_file_button')
# add a special img for send file button
@@ -1476,30 +1475,30 @@ class ChatControl(ChatControlBase):
img.set_from_file(path_to_upload_img)
self._send_file_button.set_image(img)
id_ = self._send_file_button.connect('clicked',
- self._on_send_file_menuitem_activate)
+ self._on_send_file_menuitem_activate)
self.handlers[id_] = self._send_file_button
self._convert_to_gc_button = self.xml.get_object(
- 'convert_to_gc_button')
+ 'convert_to_gc_button')
id_ = self._convert_to_gc_button.connect('clicked',
- self._on_convert_to_gc_menuitem_activate)
+ self._on_convert_to_gc_menuitem_activate)
self.handlers[id_] = self._convert_to_gc_button
- contact_information_button = self.xml.get_object(
- 'contact_information_button')
- id_ = contact_information_button.connect('clicked',
- self._on_contact_information_menuitem_activate)
- self.handlers[id_] = contact_information_button
+ self._contact_information_button = self.xml.get_object(
+ 'contact_information_button')
+ id_ = self._contact_information_button.connect('clicked',
+ self._on_contact_information_menuitem_activate)
+ self.handlers[id_] = self._contact_information_button
compact_view = gajim.config.get('compact_view')
self.chat_buttons_set_visible(compact_view)
self.widget_set_visible(self.xml.get_object('banner_eventbox'),
- gajim.config.get('hide_chat_banner'))
+ gajim.config.get('hide_chat_banner'))
self.authentication_button = self.xml.get_object(
- 'authentication_button')
+ 'authentication_button')
id_ = self.authentication_button.connect('clicked',
- self._on_authentication_button_clicked)
+ self._on_authentication_button_clicked)
self.handlers[id_] = self.authentication_button
# Add lock image to show chat encryption
@@ -1541,31 +1540,31 @@ class ChatControl(ChatControlBase):
# Hook up signals
id_ = self.parent_win.window.connect('motion-notify-event',
- self._on_window_motion_notify)
+ self._on_window_motion_notify)
self.handlers[id_] = self.parent_win.window
message_tv_buffer = self.msg_textview.get_buffer()
id_ = message_tv_buffer.connect('changed',
- self._on_message_tv_buffer_changed)
+ self._on_message_tv_buffer_changed)
self.handlers[id_] = message_tv_buffer
widget = self.xml.get_object('avatar_eventbox')
widget.set_property('height-request', gajim.config.get(
- 'chat_avatar_height'))
+ 'chat_avatar_height'))
id_ = widget.connect('enter-notify-event',
- self.on_avatar_eventbox_enter_notify_event)
+ self.on_avatar_eventbox_enter_notify_event)
self.handlers[id_] = widget
id_ = widget.connect('leave-notify-event',
- self.on_avatar_eventbox_leave_notify_event)
+ self.on_avatar_eventbox_leave_notify_event)
self.handlers[id_] = widget
id_ = widget.connect('button-press-event',
- self.on_avatar_eventbox_button_press_event)
+ self.on_avatar_eventbox_button_press_event)
self.handlers[id_] = widget
widget = self.xml.get_object('location_eventbox')
id_ = widget.connect('button-release-event',
- self.on_location_eventbox_button_release_event)
+ self.on_location_eventbox_button_release_event)
self.handlers[id_] = widget
for key in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '0', '#'):
@@ -1614,7 +1613,7 @@ class ChatControl(ChatControlBase):
if not resource:
resource = contact.resource
session = gajim.connections[self.account].find_controlless_session(
- self.contact.jid, resource)
+ self.contact.jid, resource)
self.setup_seclabel(self.xml.get_object('label_selector'))
if session:
@@ -1627,8 +1626,7 @@ class ChatControl(ChatControlBase):
# Enable encryption if needed
self.no_autonegotiation = False
e2e_is_active = self.session and self.session.enable_encryption
- gpg_pref = gajim.config.get_per('contacts', contact.jid,
- 'gpg_enabled')
+ gpg_pref = gajim.config.get_per('contacts', contact.jid, 'gpg_enabled')
# try GPG first
if not e2e_is_active and gpg_pref and \
@@ -1637,30 +1635,30 @@ class ChatControl(ChatControlBase):
self.gpg_is_active = True
gajim.encrypted_chats[self.account].append(contact.jid)
msg = _('GPG encryption enabled')
- ChatControlBase.print_conversation_line(self, msg,
- 'status', '', None)
+ ChatControlBase.print_conversation_line(self, msg, 'status', '',
+ None)
if self.session:
self.session.loggable = gajim.config.get_per('accounts',
- self.account, 'log_encrypted_sessions')
+ self.account, 'log_encrypted_sessions')
# GPG is always authenticated as we use GPG's WoT
self._show_lock_image(self.gpg_is_active, 'GPG', self.gpg_is_active,
- self.session and self.session.is_loggable(), True)
+ self.session and self.session.is_loggable(), True)
self.update_ui()
# restore previous conversation
self.restore_conversation()
self.msg_textview.grab_focus()
- # change tooltip text for audio and video buttons if python-farsight is
+ # change tooltip text for audio and video buttons if python-farstream is
# not installed
- if not gajim.HAVE_FARSIGHT:
+ if not gajim.HAVE_FARSTREAM:
tooltip_text = self._audio_button.get_tooltip_text()
self._audio_button.set_tooltip_text(
- '%s\n%s' % (tooltip_text, _('Requires python-farsight.')))
+ '%s\n%s' % (tooltip_text, _('Requires python-farstream.')))
tooltip_text = self._video_button.get_tooltip_text()
self._video_button.set_tooltip_text(
- '%s\n%s' % (tooltip_text, _('Requires python-farsight.')))
+ '%s\n%s' % (tooltip_text, _('Requires python-farstream.')))
gajim.ged.register_event_handler('pep-received', ged.GUI1,
self._nec_pep_received)
@@ -1708,7 +1706,7 @@ class ChatControl(ChatControlBase):
# Jingle detection
if self.contact.supports(NS_JINGLE_ICE_UDP) and \
- gajim.HAVE_FARSIGHT and self.contact.resource:
+ gajim.HAVE_FARSTREAM and self.contact.resource:
self.audio_available = self.contact.supports(NS_JINGLE_RTP_AUDIO)
self.video_available = self.contact.supports(NS_JINGLE_RTP_VIDEO)
else:
@@ -1724,18 +1722,19 @@ class ChatControl(ChatControlBase):
self._video_button.set_sensitive(self.video_available)
# Send file
- if (self.contact.supports(NS_FILE) or self.contact.supports(NS_JINGLE_FILE_TRANSFER)) and self.contact.resource:
+ if (self.contact.supports(NS_FILE) or self.contact.supports(NS_JINGLE_FILE_TRANSFER)) and (self.type_id == 'chat' or \
+ self.gc_contact.resource):
self._send_file_button.set_sensitive(True)
self._send_file_button.set_tooltip_text('')
else:
self._send_file_button.set_sensitive(False)
if not (self.contact.supports(NS_FILE) or self.contact.supports(NS_JINGLE_FILE_TRANSFER)):
self._send_file_button.set_tooltip_text(_(
- "This contact does not support file transfer."))
+ "This contact does not support file transfer."))
else:
self._send_file_button.set_tooltip_text(
- _("You need to know the real JID of the contact to send him or "
- "her a file."))
+ _("You need to know the real JID of the contact to send "
+ "him or her a file."))
# Convert to GC
if self.contact.supports(NS_MUC):
@@ -1743,6 +1742,13 @@ class ChatControl(ChatControlBase):
else:
self._convert_to_gc_button.set_sensitive(False)
+ # Information
+ if gajim.account_is_disconnected(self.account):
+ self._contact_information_button.set_sensitive(False)
+ else:
+ self._contact_information_button.set_sensitive(True)
+
+
def update_all_pep_types(self):
for pep_type in self._pep_images:
self.update_pep(pep_type)
@@ -2230,7 +2236,7 @@ class ChatControl(ChatControlBase):
dialogs.ESessionInfoWindow(self.session)
def send_message(self, message, keyID='', chatstate=None, xhtml=None,
- process_commands=True):
+ process_commands=True, attention=False):
"""
Send a message to contact
"""
@@ -2281,7 +2287,8 @@ class ChatControl(ChatControlBase):
ChatControlBase.send_message(self, message, keyID, type_='chat',
chatstate=chatstate_to_send, xhtml=xhtml, callback=_on_sent,
callback_args=[contact, message, encrypted, xhtml,
- self.get_seclabel()], process_commands=process_commands)
+ self.get_seclabel()], process_commands=process_commands,
+ attention=attention)
def check_for_possible_paused_chatstate(self, arg):
"""
@@ -2391,8 +2398,8 @@ class ChatControl(ChatControlBase):
return gajim.nicks[self.account]
def print_conversation(self, text, frm='', tim=None, encrypted=False,
- subject=None, xhtml=None, simple=False, xep0184_id=None,
- displaymarking=None):
+ subject=None, xhtml=None, simple=False, xep0184_id=None,
+ displaymarking=None, msg_id=None):
"""
Print a line in the conversation
@@ -2423,21 +2430,22 @@ class ChatControl(ChatControlBase):
# ESessions
if not encrypted:
msg = _('The following message was NOT encrypted')
- ChatControlBase.print_conversation_line(self, msg, 'status', '',
- tim)
+ ChatControlBase.print_conversation_line(self, msg, 'status',
+ '', tim)
else:
# GPG encryption
if encrypted and not self.gpg_is_active:
msg = _('The following message was encrypted')
- ChatControlBase.print_conversation_line(self, msg, 'status', '',
- tim)
- # turn on OpenPGP if this was in fact a XEP-0027 encrypted message
+ ChatControlBase.print_conversation_line(self, msg, 'status',
+ '', tim)
+ # turn on OpenPGP if this was in fact a XEP-0027 encrypted
+ # message
if encrypted == 'xep27':
self._toggle_gpg()
elif not encrypted and self.gpg_is_active:
msg = _('The following message was NOT encrypted')
- ChatControlBase.print_conversation_line(self, msg, 'status', '',
- tim)
+ ChatControlBase.print_conversation_line(self, msg, 'status',
+ '', tim)
if not frm:
kind = 'incoming'
name = contact.get_shown_name()
@@ -2454,8 +2462,9 @@ class ChatControl(ChatControlBase):
if xhtml:
xhtml = '<body xmlns="%s">%s</body>' % (NS_XHTML, xhtml)
ChatControlBase.print_conversation_line(self, text, kind, name, tim,
- subject=subject, old_kind=self.old_msg_kind, xhtml=xhtml,
- simple=simple, xep0184_id=xep0184_id, displaymarking=displaymarking)
+ subject=subject, old_kind=self.old_msg_kind, xhtml=xhtml,
+ simple=simple, xep0184_id=xep0184_id, displaymarking=displaymarking,
+ msg_id=msg_id)
if text.startswith('/me ') or text.startswith('/me\n'):
self.old_msg_kind = None
else:
@@ -3238,6 +3247,36 @@ class ChatControl(ChatControlBase):
b.connect('clicked', self._on_ok, file_props, type_)
self._add_info_bar_message(markup, [b], file_props, gtk.MESSAGE_ERROR)
+ def _on_accept_gc_invitation(self, widget, event):
+ room_jid = event.parameters[0]
+ password = event.parameters[2]
+ is_continued = event.parameters[3]
+ try:
+ if is_continued:
+ gajim.interface.join_gc_room(self.account, room_jid,
+ gajim.nicks[self.account], password, is_continued=True)
+ else:
+ dialogs.JoinGroupchatWindow(self.account, room_jid)
+ except GajimGeneralException:
+ pass
+ gajim.events.remove_events(self.account, self.contact.jid, event=event)
+
+ def _on_cancel_gc_invitation(self, widget, event):
+ gajim.events.remove_events(self.account, self.contact.jid, event=event)
+
+ def _get_gc_invitation(self, event):
+ room_jid = event.parameters[0]
+ comment = event.parameters[1]
+ markup = '<b>%s:</b> %s' % (_('Groupchat Invitation'), room_jid)
+ if comment:
+ markup += ' (%s)' % comment
+ b1 = gtk.Button(_('_Join'))
+ b1.connect('clicked', self._on_accept_gc_invitation, event)
+ b2 = gtk.Button(stock=gtk.STOCK_CANCEL)
+ b2.connect('clicked', self._on_cancel_gc_invitation, event)
+ self._add_info_bar_message(markup, [b1, b2], event.parameters,
+ gtk.MESSAGE_QUESTION)
+
def on_event_added(self, event):
if event.account != self.account:
return
@@ -3259,6 +3298,8 @@ class ChatControl(ChatControlBase):
self._got_file_error(event.parameters, event.type_,
_('File transfer cancelled'),
_('Connection with peer cannot be established.'))
+ elif event.type_ == 'gc-invitation':
+ self._get_gc_invitation(event)
def on_event_removed(self, event_list):
"""
@@ -3270,14 +3311,24 @@ class ChatControl(ChatControlBase):
if ev.jid != self.contact.jid:
continue
if ev.type_ not in ('file-request', 'file-completed', 'file-error',
- 'file-stopped', 'file-request-error', 'file-send-error'):
+ 'file-stopped', 'file-request-error', 'file-send-error',
+ 'gc-invitation'):
continue
i = 0
+ removed = False
for ib_msg in self.info_bar_queue:
- if ib_msg[2] == ev.parameters:
- self.info_bar_queue.remove(ib_msg)
+ if ev.type_ == 'gc-invitation':
+ if ev.parameters[0] == ib_msg[2][0]:
+ self.info_bar_queue.remove(ib_msg)
+ removed = True
+ else: # file-*
+ if ib_msg[2] == ev.parameters:
+ self.info_bar_queue.remove(ib_msg)
+ removed = True
+ if removed:
if i == 0:
# We are removing the one currently displayed
+ self.info_bar.set_no_show_all(True)
self.info_bar.hide()
# show next one?
gobject.idle_add(self._info_bar_show_message)
diff --git a/src/command_system/implementation/standard.py b/src/command_system/implementation/standard.py
index 8f39e939a..af3ef675c 100644
--- a/src/command_system/implementation/standard.py
+++ b/src/command_system/implementation/standard.py
@@ -127,7 +127,7 @@ class StandardCommonCommands(CommandContainer):
@command(raw=True, empty=True)
@doc(_("""
- Set current the status
+ Set the current the status
Status can be given as one of the following values: online, away,
chat, xa, dnd.
@@ -136,6 +136,11 @@ class StandardCommonCommands(CommandContainer):
if status not in ('online', 'away', 'chat', 'xa', 'dnd'):
raise CommandError("Invalid status given")
for connection in gajim.connections.itervalues():
+ if not gajim.config.get_per('accounts', connection.name,
+ 'sync_with_global_status'):
+ continue
+ if connection.connected < 2:
+ continue
connection.change_status(status, message)
@command(raw=True, empty=True)
@@ -143,7 +148,13 @@ class StandardCommonCommands(CommandContainer):
def away(self, message):
if not message:
message = _("Away")
+
for connection in gajim.connections.itervalues():
+ if not gajim.config.get_per('accounts', connection.name,
+ 'sync_with_global_status'):
+ continue
+ if connection.connected < 2:
+ continue
connection.change_status('away', message)
@command('back', raw=True, empty=True)
@@ -151,7 +162,13 @@ class StandardCommonCommands(CommandContainer):
def online(self, message):
if not message:
message = _("Available")
+
for connection in gajim.connections.itervalues():
+ if not gajim.config.get_per('accounts', connection.name,
+ 'sync_with_global_status'):
+ continue
+ if connection.connected < 2:
+ continue
connection.change_status('online', message)
class StandardCommonChatCommands(CommandContainer):
@@ -213,6 +230,11 @@ class StandardCommonChatCommands(CommandContainer):
state = self._video_button.get_active()
self._video_button.set_active(not state)
+ @command(raw=True)
+ @doc(_("Send a message to the contact that will attract his (her) attention"))
+ def attention(self, message):
+ self.send_message(message, process_commands=False, attention=True)
+
class StandardChatCommands(CommandContainer):
"""
This command container contains standard commands which are unique
diff --git a/src/common/atom.py b/src/common/atom.py
index e8531274b..b642f8b52 100644
--- a/src/common/atom.py
+++ b/src/common/atom.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
## Tomasz Melcer <liori AT exroot.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/common/caps_cache.py b/src/common/caps_cache.py
index c450fd3ab..33bdb6afd 100644
--- a/src/common/caps_cache.py
+++ b/src/common/caps_cache.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2007 Tomasz Melcer <liori AT exroot.org>
## Travis Shirk <travis AT pobox.com>
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
## Jonathan Schleifer <js-gajim AT webkeks.org>
## Copyright (C) 2008-2009 Stephan Erb <steve-e AT h3c.de>
diff --git a/src/common/check_X509.py b/src/common/check_X509.py
new file mode 100644
index 000000000..5a77eedcc
--- /dev/null
+++ b/src/common/check_X509.py
@@ -0,0 +1,178 @@
+import logging
+log = logging.getLogger('gajim.c.check_X509')
+
+try:
+ import OpenSSL.SSL
+ import OpenSSL.crypto
+ ver = OpenSSL.__version__
+ if ver < '0.12':
+ raise ImportError
+ from pyasn1.type import univ, constraint, char, namedtype, tag
+ from pyasn1.codec.der.decoder import decode
+ from common.helpers import prep, InvalidFormat
+
+ MAX = 64
+ oid_xmppaddr = '(1, 3, 6, 1, 5, 5, 7, 8, 5)'
+ oid_dnssrv = '(1, 3, 6, 1, 5, 5, 7, 8, 7)'
+
+
+
+ class DirectoryString(univ.Choice):
+ componentType = namedtype.NamedTypes(
+ namedtype.NamedType(
+ 'teletexString', char.TeletexString().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'printableString', char.PrintableString().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'universalString', char.UniversalString().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'utf8String', char.UTF8String().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'bmpString', char.BMPString().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'ia5String', char.IA5String().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ namedtype.NamedType(
+ 'gString', univ.OctetString().subtype(
+ subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),
+ )
+
+ class AttributeValue(DirectoryString):
+ pass
+
+ class AttributeType(univ.ObjectIdentifier):
+ pass
+
+ class AttributeTypeAndValue(univ.Sequence):
+ componentType = namedtype.NamedTypes(
+ namedtype.NamedType('type', AttributeType()),
+ namedtype.NamedType('value', AttributeValue()),
+ )
+
+ class RelativeDistinguishedName(univ.SetOf):
+ componentType = AttributeTypeAndValue()
+
+ class RDNSequence(univ.SequenceOf):
+ componentType = RelativeDistinguishedName()
+
+ class Name(univ.Choice):
+ componentType = namedtype.NamedTypes(
+ namedtype.NamedType('', RDNSequence()),
+ )
+
+ class GeneralName(univ.Choice):
+ componentType = namedtype.NamedTypes(
+ namedtype.NamedType('otherName', univ.Sequence().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatConstructed, 0x0))),
+ namedtype.NamedType('rfc822Name', char.IA5String().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatSimple, 1))),
+ namedtype.NamedType('dNSName', char.IA5String().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatSimple, 2))),
+ namedtype.NamedType('x400Address', univ.Sequence().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatConstructed, 0x3))),
+ namedtype.NamedType('directoryName', Name().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatConstructed, 0x4))),
+ namedtype.NamedType('ediPartyName', univ.Sequence().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatConstructed, 0x5))),
+ namedtype.NamedType('uniformResourceIdentifier',
+ char.IA5String().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatSimple, 6))),
+ namedtype.NamedType('iPAddress', univ.OctetString().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatSimple, 7))),
+ namedtype.NamedType('registeredID', univ.ObjectIdentifier().subtype(
+ implicitTag=tag.Tag(tag.tagClassContext,
+ tag.tagFormatSimple, 8))),
+ )
+
+ class GeneralNames(univ.SequenceOf):
+ componentType = GeneralName()
+ sizeSpec = univ.SequenceOf.sizeSpec + constraint.ValueSizeConstraint(1, MAX)
+
+ def _parse_asn1(asn1):
+ obj = decode(asn1, asn1Spec=GeneralNames())[0]
+ r = {}
+ for o in obj:
+ name = o.getName()
+ if name == 'dNSName':
+ if name not in r:
+ r[name] = []
+ r[name].append(str(o.getComponent()))
+ if name == 'otherName':
+ if name not in r:
+ r[name] = {}
+ tag = str(tuple(o.getComponent())[0])
+ val = str(tuple(o.getComponent())[1])
+ if tag not in r[name]:
+ r[name][tag] = []
+ r[name][tag].append(val)
+ if name == 'uniformResourceIdentifier':
+ r['uniformResourceIdentifier'] = True
+ return r
+
+ def check_certificate(cert, domain):
+ cnt = cert.get_extension_count()
+ if '.' in domain:
+ compared_domain = domain.split('.', 1)[1]
+ else:
+ compared_domain = ''
+ srv_domain = '_xmpp-client.' + domain
+ compared_srv_domain = '_xmpp-client.' + compared_domain
+ for i in range(0, cnt):
+ ext = cert.get_extension(i)
+ if ext.get_short_name() == 'subjectAltName':
+ r = _parse_asn1(ext.get_data())
+ if 'otherName' in r:
+ if oid_xmppaddr in r['otherName']:
+ for host in r['otherName'][oid_xmppaddr]:
+ try:
+ host = prep(None, host, None)
+ except InvalidFormat:
+ continue
+ if host == domain:
+ return True
+ if oid_dnssrv in r['otherName']:
+ for host in r['otherName'][oid_dnssrv]:
+ if host.startswith('_xmpp-client.*.'):
+ if host.replace('*.', '', 1) == compared_srv_domain:
+ return True
+ continue
+ if host == srv_domain:
+ return True
+ if 'dNSName' in r:
+ for host in r['dNSName']:
+ if host.startswith('*.'):
+ if host[2:] == compared_domain:
+ return True
+ continue
+ if host == domain:
+ return True
+ if r:
+ return False
+ break
+
+ subject = cert.get_subject()
+ if subject.commonName == domain:
+ return True
+ return False
+except ImportError:
+ log.warn('Import of PyOpenSSL or pyasn1 failed. Cannot correctly check '
+ 'SSL certificate')
+
+ def check_certificate(cert, domain):
+ subject = cert.get_subject()
+ if subject.commonName == domain:
+ return True
+ return False
diff --git a/src/common/check_paths.py b/src/common/check_paths.py
index 64b542bb7..3250f46a4 100644
--- a/src/common/check_paths.py
+++ b/src/common/check_paths.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2005-2006 Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2007 Tomasz Melcer <liori AT exroot.org>
## Copyright (C) 2008 Jean-Marie Traissard <jim AT lapin.org>
diff --git a/src/common/commands.py b/src/common/commands.py
index 2e831d9cb..969d0e81a 100644
--- a/src/common/commands.py
+++ b/src/common/commands.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/commands.py
##
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006-2007 Tomasz Melcer <liori AT exroot.org>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
@@ -56,10 +56,10 @@ class AdHocCommand:
assert status in ('executing', 'completed', 'canceled')
response = request.buildReply('result')
- cmd = response.addChild('command', namespace=xmpp.NS_COMMANDS, attrs={
- 'sessionid': self.sessionid,
- 'node': self.commandnode,
- 'status': status})
+ cmd = response.getTag('command', namespace=xmpp.NS_COMMANDS)
+ cmd.setAttr('sessionid', self.sessionid)
+ cmd.setAttr('node', self.commandnode)
+ cmd.setAttr('status', status)
if defaultaction is not None or actions is not None:
if defaultaction is not None:
assert defaultaction in ('cancel', 'execute', 'prev', 'next',
@@ -277,13 +277,17 @@ class ForwardMessagesCommand(AdHocCommand):
def execute(self, request):
account = self.connection.name
# Forward messages
- events = gajim.events.get_events(account, types=['chat', 'normal'])
+ events = gajim.events.get_events(account, types=['chat', 'normal',
+ 'printed_chat'])
j, resource = gajim.get_room_and_nick_from_fjid(self.jid)
for jid in events:
for event in events[jid]:
+ ev_typ = event.type_
+ if ev_typ == 'printed_chat':
+ ev_typ = 'chat'
self.connection.send_message(j, event.parameters[0], '',
- type_=event.type_, subject=event.parameters[1],
- resource=resource, forward_from=jid, delayed=event.time_)
+ type_=ev_typ, subject=event.parameters[1],
+ resource=resource, forward_from=jid, delayed=event.time_)
# Inform other client of completion
response, cmd = self.buildResponse(request, status = 'completed')
diff --git a/src/common/config.py b/src/common/config.py
index 7de2de3e3..35078e3af 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/config.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2004-2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005 Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
@@ -65,7 +65,7 @@ class Config:
DEFAULT_MAILAPP = 'mozilla-thunderbird -compose'
DEFAULT_FILE_MANAGER = 'xffm'
- __options = {
+ __options = ({
# name: [ type, default_value, help_string ]
'verbose': [ opt_bool, False, '', True ],
'autopopup': [ opt_bool, False ],
@@ -99,6 +99,15 @@ class Config:
'statusmsgcolor': [ opt_color, '#4e9a06', _('Status message text color.'), True ],
'markedmsgcolor': [ opt_color, '#ff8080', '', True ],
'urlmsgcolor': [ opt_color, '#204a87', '', True ],
+ 'notif_signin_color': [ opt_color, '#32CD32', _('Contact signed in notification color.') ], # limegreen
+ 'notif_signout_color': [ opt_color, '#FF0000', _('Contact signout notification color') ], # red
+ 'notif_message_color': [ opt_color, '#1E90FF', _('New message/email notification color.') ], # dodgerblue
+ 'notif_ftrequest_color': [ opt_color, '#F0E68C', _('File transfer request notification color.') ], # khaki
+ 'notif_fterror_color': [ opt_color, '#B22222', _('File transfer error notification color.') ], # firebrick
+ 'notif_ftcomplete_color': [ opt_color, '#9ACD32', _('File transfer complete or stopped notification color.') ], # yellowgreen
+ 'notif_invite_color': [ opt_color, '#D2B48C', _('Groupchat invitation notification color') ], # tan1
+ 'notif_status_color': [ opt_color, '#D8BFD8', _('Status changed notification background color') ], # thistle2
+ 'notif_other_color': [ opt_color, '#FFFFFF', _('Other dialogs color.') ], # white
'inmsgfont': [ opt_str, '', _('Incoming nickname font.'), True ],
'outmsgfont': [ opt_str, '', _('Outgoing nickname font.'), True ],
'inmsgtxtfont': [ opt_str, '', _('Incoming text font.'), True ],
@@ -169,7 +178,7 @@ class Config:
'change_roster_title': [ opt_bool, True, _('Add * and [n] in roster title?')],
'restore_lines': [opt_int, 4, _('How many lines to remember from previous conversation when a chat tab/window is reopened.')],
'restore_timeout': [opt_int, 60, _('How many minutes should last lines from previous conversation last.')],
- 'muc_restore_lines': [opt_int, 20, _('How many lines to request to server when entering a groupchat. -1 means no limit')],
+ 'muc_restore_lines': [opt_int, 20, _('How many lines to request from server when entering a groupchat. -1 means no limit')],
'muc_restore_timeout': [opt_int, 60, _('How many minutes back to request logs when a entering a groupchat. -1 means no limit')],
'muc_autorejoin_timeout': [opt_int, 1, _('How many seconds to wait before trying to autorejoin to a conference you are being disconnected from. Set to 0 to disable autorejoining.')],
'muc_autorejoin_on_kick': [opt_bool, False, _('Should autorejoin be activated when we are being kicked from a conference?')],
@@ -291,7 +300,8 @@ class Config:
'stun_server': [opt_str, '', _('STUN server to use when using jingle')],
'show_affiliation_in_groupchat': [opt_bool, True, _('If True, Gajim will show affiliation of groupchat occupants by adding a colored square to the status icon')],
'global_proxy': [opt_str, '', _('Proxy used for all outgoing connections if the account does not have a specific proxy configured')],
- }
+ 'ignore_incoming_attention': [opt_bool, False, _('If True, Gajim will ignore incoming attention requestd ("wizz").')],
+ }, {})
__options_per_key = {
'accounts': ({
@@ -386,7 +396,7 @@ class Config:
'ft_send_local_ips': [ opt_bool, True, _('If enabled, Gajim will send your local IPs so your contact can connect to your machine to transfer files.')],
'oauth2_refresh_token': [ opt_str, '', _('Latest token for Oauth2 authentication.')],
'oauth2_client_id': [ opt_str, '0000000044077801', _('client_id for Oauth2 authentication.')],
- 'oauth2_redirect_url': [ opt_str, 'http%3A%2F%2Fgajim.org%2Fmsnauth%2Findex.cgi', _('redirect_url for Oauth2 authentication.')],
+ 'oauth2_redirect_url': [ opt_str, 'https%3A%2F%2Fgajim.org%2Fmsnauth%2Findex.cgi', _('redirect_url for Oauth2 authentication.')],
}, {}),
'statusmsg': ({
'message': [ opt_str, '' ],
@@ -456,7 +466,7 @@ class Config:
'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')],
}, {}),
'plugins': ({
- 'active': [opt_bool, False, _('State whether plugins should be activated on exit (this is saved on Gajim exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI instead.')],
+ 'active': [opt_bool, False, _('State whether plugins should be activated on startup (this is saved on Gajim exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI instead.')],
},{}),
}
@@ -488,6 +498,7 @@ class Config:
}
soundevents_default = {
+ 'attention_received': [True, 'attention.wav'],
'first_message_received': [ True, 'message1.wav' ],
'next_message_received_focused': [ True, 'message2.wav' ],
'next_message_received_unfocused': [ True, 'message2.wav' ],
@@ -526,9 +537,9 @@ class Config:
_('Tor'): ['socks5', 'localhost', 9050],
}
- def foreach(self, cb, data = None):
- for opt in self.__options:
- cb(data, opt, None, self.__options[opt])
+ def foreach(self, cb, data=None):
+ for opt in self.__options[1]:
+ cb(data, opt, None, self.__options[1][opt])
for opt in self.__options_per_key:
cb(data, opt, None, None)
dict_ = self.__options_per_key[opt][1]
@@ -542,7 +553,7 @@ class Config:
Tree-like interface
"""
if node is None:
- for child, option in self.__options.iteritems():
+ for child, option in self.__options[1].iteritems():
yield (child, ), option
for grandparent in self.__options_per_key:
yield (grandparent, ), None
@@ -598,35 +609,44 @@ class Config:
return None
def set(self, optname, value):
- if optname not in self.__options:
+ if optname not in self.__options[1]:
# raise RuntimeError, 'option %s does not exist' % optname
return
- opt = self.__options[optname]
- value = self.is_valid(opt[OPT_TYPE], value)
+ value = self.is_valid(self.__options[0][optname][OPT_TYPE], value)
if value is None:
# raise RuntimeError, 'value of %s cannot be None' % optname
return
- opt[OPT_VAL] = value
+ self.__options[1][optname] = value
- def get(self, optname = None):
+ def get(self, optname=None):
if not optname:
- return self.__options.keys()
- if optname not in self.__options:
+ return self.__options[1].keys()
+ if optname not in self.__options[1]:
+ return None
+ return self.__options[1][optname]
+
+ def get_default(self, optname):
+ if optname not in self.__options[0]:
+ return None
+ return self.__options[0][optname][OPT_VAL]
+
+ def get_type(self, optname):
+ if optname not in self.__options[0]:
return None
- return self.__options[optname][OPT_VAL]
+ return self.__options[0][optname][OPT_TYPE][0]
def get_desc(self, optname):
- if optname not in self.__options:
+ if optname not in self.__options[0]:
return None
- if len(self.__options[optname]) > OPT_DESC:
- return self.__options[optname][OPT_DESC]
+ if len(self.__options[0][optname]) > OPT_DESC:
+ return self.__options[0][optname][OPT_DESC]
def get_restart(self, optname):
- if optname not in self.__options:
+ if optname not in self.__options[0]:
return None
- if len(self.__options[optname]) > OPT_RESTART:
- return self.__options[optname][OPT_RESTART]
+ if len(self.__options[0][optname]) > OPT_RESTART:
+ return self.__options[0][optname][OPT_RESTART]
def add_per(self, typename, name): # per_group_of_option
if typename not in self.__options_per_key:
@@ -637,7 +657,9 @@ class Config:
if name in opt[1]:
# we already have added group name before
return 'you already have added %s before' % name
- opt[1][name] = copy.deepcopy(opt[0])
+ opt[1][name] = {}
+ for o in opt[0]:
+ opt[1][name][o] = opt[0][o][OPT_VAL]
def del_per(self, typename, name, subname = None): # per_group_of_option
if typename not in self.__options_per_key:
@@ -665,36 +687,50 @@ class Config:
if subname not in obj:
# raise RuntimeError, '%s is not a key of %s' % (subname, obj)
return
- subobj = obj[subname]
- value = self.is_valid(subobj[OPT_TYPE], value)
+ typ = self.__options_per_key[optname][0][subname][OPT_TYPE]
+ value = self.is_valid(typ, value)
if value is None:
# raise RuntimeError, '%s of %s cannot be None' % optname
return
- subobj[OPT_VAL] = value
+ obj[subname] = value
- def get_per(self, optname, key = None, subname = None): # per_group_of_option
+ def get_per(self, optname, key=None, subname=None): # per_group_of_option
if optname not in self.__options_per_key:
return None
dict_ = self.__options_per_key[optname][1]
if not key:
return dict_.keys()
if key not in dict_:
- if optname in self.__options_per_key \
- and subname in self.__options_per_key[optname][0]:
- return self.__options_per_key \
- [optname][0][subname][1]
+ if subname in self.__options_per_key[optname][0]:
+ return self.__options_per_key[optname][0][subname][1]
return None
obj = dict_[key]
if not subname:
return obj
if subname not in obj:
return None
- return obj[subname][OPT_VAL]
+ return obj[subname]
- def get_desc_per(self, optname, key = None, subname = None):
+ def get_default_per(self, optname, subname):
if optname not in self.__options_per_key:
return None
- dict_ = self.__options_per_key[optname][1]
+ dict_ = self.__options_per_key[optname][0]
+ if subname not in dict_:
+ return None
+ return dict_[subname][OPT_VAL]
+
+ def get_type_per(self, optname, subname):
+ if optname not in self.__options_per_key:
+ return None
+ dict_ = self.__options_per_key[optname][0]
+ if subname not in dict_:
+ return None
+ return dict_[subname][OPT_TYPE][0]
+
+ def get_desc_per(self, optname, key=None, subname=None):
+ if optname not in self.__options_per_key:
+ return None
+ dict_ = self.__options_per_key[optname][0]
if not key:
return None
if key not in dict_:
@@ -708,10 +744,10 @@ class Config:
return obj[subname][OPT_DESC]
return None
- def get_restart_per(self, optname, key = None, subname = None):
+ def get_restart_per(self, optname, key=None, subname=None):
if optname not in self.__options_per_key:
return False
- dict_ = self.__options_per_key[optname][1]
+ dict_ = self.__options_per_key[optname][0]
if not key:
return False
if key not in dict_:
@@ -738,8 +774,13 @@ class Config:
return (account not in no_log_for) and (jid not in no_log_for)
+ def _init_options(self):
+ for opt in self.__options[0]:
+ self.__options[1][opt] = self.__options[0][opt][OPT_VAL]
+
def __init__(self):
#init default values
+ self._init_options()
for event in self.soundevents_default:
default = self.soundevents_default[event]
self.add_per('soundevents', event)
diff --git a/src/common/configpaths.py b/src/common/configpaths.py
index 43ec05b9e..93c2b996b 100644
--- a/src/common/configpaths.py
+++ b/src/common/configpaths.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
## Junglecow J <junglecow AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Brendan Taylor <whateley AT gmail.com>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
diff --git a/src/common/connection.py b/src/common/connection.py
index 2eaf4a2dc..4359fffff 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -2,7 +2,7 @@
## src/common/connection.py
##
## Copyright (C) 2003-2005 Vincent Hanquez <tab AT snarc.org>
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Alex Mauer <hawke AT hawkesnest.net>
## Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
@@ -58,6 +58,7 @@ from common import gajim
from common import gpg
from common import passwords
from common import exceptions
+from common import check_X509
from connection_handlers import *
from xmpp import Smacks
@@ -98,6 +99,7 @@ ssl_error = {
31: _("Authority and issuer serial number mismatch"),
32: _("Key usage does not include certificate signing"),
50: _("Application verification failure")
+#100 is for internal usage: host not correct
}
class CommonConnection:
@@ -251,7 +253,7 @@ class CommonConnection:
def _prepare_message(self, jid, msg, keyID, type_='chat', subject='',
chatstate=None, msg_id=None, resource=None, user_nick=None, xhtml=None,
session=None, forward_from=None, form_node=None, label=None,
- original_message=None, delayed=None, callback=None):
+ original_message=None, delayed=None, attention=False, callback=None):
if not self.connection or self.connected < 2:
return 1
try:
@@ -302,7 +304,8 @@ class CommonConnection:
msgtxt, original_message, fjid, resource,
jid, xhtml, subject, chatstate, msg_id,
label, forward_from, delayed, session,
- form_node, user_nick, keyID, callback)
+ form_node, user_nick, keyID, attention,
+ callback)
gajim.nec.push_incoming_event(GPGTrustKeyEvent(None,
conn=self, callback=_on_always_trust))
else:
@@ -310,7 +313,7 @@ class CommonConnection:
original_message, fjid, resource, jid, xhtml,
subject, chatstate, msg_id, label, forward_from,
delayed, session, form_node, user_nick, keyID,
- callback)
+ attention, callback)
gajim.thread_interface(encrypt_thread, [msg, keyID, False],
_on_encrypted, [])
return
@@ -318,18 +321,18 @@ class CommonConnection:
self._message_encrypted_cb(('', error), type_, msg, msgtxt,
original_message, fjid, resource, jid, xhtml, subject,
chatstate, msg_id, label, forward_from, delayed, session,
- form_node, user_nick, keyID, callback)
+ form_node, user_nick, keyID, attention, callback)
return
self._on_continue_message(type_, msg, msgtxt, original_message, fjid,
resource, jid, xhtml, subject, msgenc, keyID, chatstate, msg_id,
label, forward_from, delayed, session, form_node, user_nick,
- callback)
+ attention, callback)
def _message_encrypted_cb(self, output, type_, msg, msgtxt,
original_message, fjid, resource, jid, xhtml, subject, chatstate, msg_id,
label, forward_from, delayed, session, form_node, user_nick, keyID,
- callback):
+ attention, callback):
msgenc, error = output
if msgenc and not error:
@@ -342,7 +345,7 @@ class CommonConnection:
self._on_continue_message(type_, msg, msgtxt, original_message,
fjid, resource, jid, xhtml, subject, msgenc, keyID,
chatstate, msg_id, label, forward_from, delayed, session,
- form_node, user_nick, callback)
+ form_node, user_nick, attention, callback)
return
# Encryption failed, do not send message
tim = localtime()
@@ -351,7 +354,8 @@ class CommonConnection:
def _on_continue_message(self, type_, msg, msgtxt, original_message, fjid,
resource, jid, xhtml, subject, msgenc, keyID, chatstate, msg_id,
- label, forward_from, delayed, session, form_node, user_nick, callback):
+ label, forward_from, delayed, session, form_node, user_nick, attention,
+ callback):
if type_ == 'chat':
msg_iq = common.xmpp.Message(to=fjid, body=msgtxt, typ=type_,
xhtml=xhtml)
@@ -422,6 +426,10 @@ class CommonConnection:
if session.enable_encryption:
msg_iq = session.encrypt_stanza(msg_iq)
+ # XEP-0224
+ if attention:
+ msg_iq.setTag('attention', namespace=common.xmpp.NS_ATTENTION)
+
if callback:
callback(jid, msg, keyID, forward_from, session, original_message,
subject, type_, msg_iq, xhtml)
@@ -808,6 +816,10 @@ class Connection(CommonConnection, ConnectionHandlers):
if not (self.sm and self.sm.resumption):
gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
show='offline'))
+ else:
+ self.sm.enabled = False
+ gajim.nec.push_incoming_event(OurShowEvent(None, conn=self,
+ show='error'))
self.disconnect()
if gajim.config.get_per('accounts', self.name, 'autoreconnect'):
self.connected = -1
@@ -1012,7 +1024,7 @@ class Connection(CommonConnection, ConnectionHandlers):
proxy = {}
proxyptr = gajim.config.get_per('proxies', p)
for key in proxyptr.keys():
- proxy[key] = proxyptr[key][1]
+ proxy[key] = proxyptr[key]
else:
proxy = None
use_srv = True
@@ -1276,9 +1288,9 @@ class Connection(CommonConnection, ConnectionHandlers):
except AttributeError:
errnum = -1 # we don't have an errnum
if errnum > 0 and str(errnum) not in gajim.config.get_per('accounts',
- self.name, 'ignore_ssl_errors'):
- text = _('The authenticity of the %s certificate could be invalid.') %\
- hostname
+ self.name, 'ignore_ssl_errors').split():
+ text = _('The authenticity of the %s certificate could be invalid.'
+ ) % hostname
if errnum in ssl_error:
text += _('\nSSL Error: <b>%s</b>') % ssl_error[errnum]
else:
@@ -1290,7 +1302,8 @@ class Connection(CommonConnection, ConnectionHandlers):
certificate=con.Connection.ssl_certificate))
return True
if hasattr(con.Connection, 'ssl_fingerprint_sha1'):
- saved_fingerprint = gajim.config.get_per('accounts', self.name, 'ssl_fingerprint_sha1')
+ saved_fingerprint = gajim.config.get_per('accounts', self.name,
+ 'ssl_fingerprint_sha1')
if saved_fingerprint:
# Check sha1 fingerprint
if con.Connection.ssl_fingerprint_sha1 != saved_fingerprint:
@@ -1299,15 +1312,24 @@ class Connection(CommonConnection, ConnectionHandlers):
new_fingerprint=con.Connection.ssl_fingerprint_sha1))
return True
else:
- gajim.config.set_per('accounts', self.name, 'ssl_fingerprint_sha1',
- con.Connection.ssl_fingerprint_sha1)
+ gajim.config.set_per('accounts', self.name,
+ 'ssl_fingerprint_sha1', con.Connection.ssl_fingerprint_sha1)
+ if not check_X509.check_certificate(con.Connection.ssl_certificate,
+ hostname) and '100' not in gajim.config.get_per('accounts',
+ self.name, 'ignore_ssl_errors').split():
+ txt = _('The authenticity of the %s certificate could be '
+ 'invalid.\nThe certificate does not cover this domain.') % \
+ hostname
+ gajim.nec.push_incoming_event(SSLErrorEvent(None, conn=self,
+ error_text=txt, error_num=100,
+ cert=con.Connection.ssl_cert_pem,
+ fingerprint=con.Connection.ssl_fingerprint_sha1,
+ certificate=con.Connection.ssl_certificate))
+ return True
+
self._register_handlers(con, con_type)
- con.auth(
- user=name,
- password=self.password,
- resource=self.server_resource,
- sasl=1,
- on_auth=self.__on_auth)
+ con.auth(user=name, password=self.password,
+ resource=self.server_resource, sasl=1, on_auth=self.__on_auth)
def ssl_certificate_accepted(self):
if not self.connection:
@@ -1317,7 +1339,10 @@ class Connection(CommonConnection, ConnectionHandlers):
msg=_('Connection with account %s has been lost. Retry '
'connecting.') % self.name))
return
- name = gajim.config.get_per('accounts', self.name, 'name')
+ if gajim.config.get_per('accounts', self.name, 'anonymous_auth'):
+ name = None
+ else:
+ name = gajim.config.get_per('accounts', self.name, 'name')
self._register_handlers(self.connection, 'ssl')
self.connection.auth(name, self.password, self.server_resource, 1,
self.__on_auth)
@@ -1372,7 +1397,7 @@ class Connection(CommonConnection, ConnectionHandlers):
gajim.nec.push_incoming_event(InformationEvent(None, conn=self,
level='error', pri_txt=_('Authentication failed with "%s"') % \
self._hostname, sec_txt=_('Please check your login and password'
- 'for correctness.')))
+ ' for correctness.')))
if self.on_connect_auth:
self.on_connect_auth(None)
self.on_connect_auth = None
@@ -1449,7 +1474,7 @@ class Connection(CommonConnection, ConnectionHandlers):
level='error', pri_txt=_('Error while removing privacy '
'list'), sec_txt=_('Privacy list %s has not been removed. '
'It is maybe active in one of your connected resources. '
- 'Deactivate it and tryagain.') % privacy_list))
+ 'Deactivate it and try again.') % privacy_list))
common.xmpp.features_nb.delPrivacyList(self.connection, privacy_list,
_on_del_privacy_list_result)
@@ -1775,8 +1800,8 @@ class Connection(CommonConnection, ConnectionHandlers):
def send_message(self, jid, msg, keyID=None, type_='chat', subject='',
chatstate=None, msg_id=None, resource=None, user_nick=None, xhtml=None,
label=None, session=None, forward_from=None, form_node=None,
- original_message=None, delayed=None, callback=None, callback_args=[],
- now=False):
+ original_message=None, delayed=None, attention=False, callback=None,
+ callback_args=[], now=False):
def cb(jid, msg, keyID, forward_from, session, original_message,
subject, type_, msg_iq, xhtml):
@@ -1794,7 +1819,8 @@ class Connection(CommonConnection, ConnectionHandlers):
chatstate=chatstate, msg_id=msg_id, resource=resource,
user_nick=user_nick, xhtml=xhtml, label=label, session=session,
forward_from=forward_from, form_node=form_node,
- original_message=original_message, delayed=delayed, callback=cb)
+ original_message=original_message, delayed=delayed,
+ attention=attention, callback=cb)
def _nec_message_outgoing(self, obj):
if obj.account != self.name:
@@ -1819,7 +1845,7 @@ class Connection(CommonConnection, ConnectionHandlers):
resource=obj.resource, user_nick=obj.user_nick, xhtml=obj.xhtml,
label=obj.label, session=obj.session, forward_from=obj.forward_from,
form_node=obj.form_node, original_message=obj.original_message,
- delayed=obj.delayed, callback=cb)
+ delayed=obj.delayed, attention=obj.attention, callback=cb)
def send_contacts(self, contacts, jid):
"""
@@ -2289,7 +2315,8 @@ class Connection(CommonConnection, ConnectionHandlers):
room_id=resp.getTag('unique').getData()))
self.connection.SendAndCallForResponse(iq, _on_response)
- def join_gc(self, nick, room_jid, password, change_nick=False):
+ def join_gc(self, nick, room_jid, password, change_nick=False,
+ rejoin=False):
# FIXME: This room JID needs to be normalized; see #1364
if not gajim.account_is_connected(self.name):
return
@@ -2333,7 +2360,7 @@ class Connection(CommonConnection, ConnectionHandlers):
last_date = self.last_history_time[room_jid]
if last_date == 0:
last_date = time.time() - timeout
- else:
+ elif not rejoin:
last_date = min(last_date, time.time() - timeout)
last_date = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(
last_date))
diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py
index 61f771fae..8a537e15e 100644
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -6,7 +6,7 @@
## Copyright (C) 2006-2007 Tomasz Melcer <liori AT exroot.org>
## Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2007-2008 Brendan Taylor <whateley AT gmail.com>
## Jean-Marie Traissard <jim AT lapin.org>
@@ -869,7 +869,7 @@ class ConnectionHandlersBase:
elif obj.contact.show in statuss:
obj.old_show = statuss.index(obj.contact.show)
if (resources != [''] and (len(obj.contact_list) != 1 or \
- obj.contact_list[0].show != 'offline')) and \
+ obj.contact_list[0].show not in ('not in roster', 'offline'))) and \
not gajim.jid_is_transport(jid):
# Another resource of an existing contact connected
obj.old_show = 0
@@ -897,7 +897,13 @@ class ConnectionHandlersBase:
obj.contact.show = obj.show
obj.contact.status = obj.status
obj.contact.priority = obj.prio
- obj.contact.keyID = obj.keyID
+ attached_keys = gajim.config.get_per('accounts', account,
+ 'attached_gpg_keys').split()
+ if jid in attached_keys:
+ obj.contact.keyID = attached_keys[attached_keys.index(jid) + 1]
+ else:
+ # Do not override assigned key
+ obj.contact.keyID = obj.keyID
if obj.timestamp:
obj.contact.last_status_time = obj.timestamp
elif not gajim.block_signed_in_notifications[account]:
diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py
index e03a610f7..d08783817 100644
--- a/src/common/connection_handlers_events.py
+++ b/src/common/connection_handlers_events.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/connection_handlers_events.py
##
-## Copyright (C) 2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2010-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
@@ -1017,15 +1017,20 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
return
self.jid = gajim.get_jid_without_resource(self.fjid)
- forward_tag = self.stanza.getTag('forwarded', namespace=xmpp.NS_FORWARD)
+ carbon_marker = self.stanza.getTag('sent', namespace=xmpp.NS_CARBONS)
+ if not carbon_marker:
+ carbon_marker = self.stanza.getTag('received', namespace=xmpp.NS_CARBONS)
# Be sure it comes from one of our resource, else ignore forward element
- if forward_tag and self.jid == gajim.get_jid_from_account(account):
- received_tag = forward_tag.getTag('received',
- namespace=xmpp.NS_CARBONS)
- sent_tag = forward_tag.getTag('sent', namespace=xmpp.NS_CARBONS)
- if received_tag:
+ if carbon_marker and self.jid == gajim.get_jid_from_account(account):
+ forward_tag = self.stanza.getTag('forwarded', namespace=xmpp.NS_FORWARD)
+ if forward_tag:
msg = forward_tag.getTag('message')
self.stanza = xmpp.Message(node=msg)
+ if carbon_marker.getName() == 'sent':
+ to = self.stanza.getTo()
+ self.stanza.setTo(self.stanza.getFrom())
+ self.stanza.setFrom(to)
+ self.sent = True
try:
self.get_jid_resource()
except helpers.InvalidFormat:
@@ -1036,23 +1041,6 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
'has been ignored.')))
return
self.forwarded = True
- elif sent_tag:
- msg = forward_tag.getTag('message')
- self.stanza = xmpp.Message(node=msg)
- to = self.stanza.getTo()
- self.stanza.setTo(self.stanza.getFrom())
- self.stanza.setFrom(to)
- try:
- self.get_jid_resource()
- except helpers.InvalidFormat:
- gajim.nec.push_incoming_event(InformationEvent(None,
- conn=self.conn, level='error',
- pri_txt=_('Invalid Jabber ID'),
- sec_txt=_('A message from a non-valid JID arrived, it '
- 'has been ignored.')))
- return
- self.forwarded = True
- self.sent = True
self.enc_tag = self.stanza.getTag('x', namespace=xmpp.NS_ENCRYPTED)
@@ -1205,6 +1193,7 @@ class DecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.sent = self.msg_obj.sent
self.popup = False
self.msg_id = None # id in log database
+ self.attention = False # XEP-0224
self.receipt_request_tag = self.stanza.getTag('request',
namespace=xmpp.NS_RECEIPTS)
@@ -1219,6 +1208,9 @@ class DecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.seclabel:
self.displaymarking = self.seclabel.getTag('displaymarking')
+ if self.stanza.getTag('attention', namespace=xmpp.NS_ATTENTION):
+ self.attention = True
+
self.form_node = self.stanza.getTag('x', namespace=xmpp.NS_DATA)
if gajim.config.get('ignore_incoming_xhtml'):
@@ -1293,6 +1285,8 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent):
if self.status_code != []:
gajim.nec.push_incoming_event(GcConfigChangedReceivedEvent(
None, conn=self.conn, msg_event=self))
+ if self.msg_obj.form_node:
+ return True
return
self.displaymarking = None
@@ -2123,7 +2117,19 @@ class NotificationEvent(nec.NetworkIncomingEvent):
# we're online or chat
self.do_popup = True
- if self.first_unread and helpers.allow_sound_notification(
+ if msg_obj.attention and not gajim.config.get(
+ 'ignore_incoming_attention'):
+ self.popup_timeout = 0
+ self.do_popup = True
+ else:
+ self.popup_timeout = gajim.config.get('notification_timeout')
+
+ if msg_obj.attention and not gajim.config.get(
+ 'ignore_incoming_attention') and gajim.config.get_per('soundevents',
+ 'attention_received', 'enabled'):
+ self.sound_event = 'attention_received'
+ self.do_sound = True
+ elif self.first_unread and helpers.allow_sound_notification(
self.conn.name, 'first_message_received'):
self.do_sound = True
elif not self.first_unread and self.control_focused and \
@@ -2236,6 +2242,8 @@ class NotificationEvent(nec.NetworkIncomingEvent):
self.popup_image = gtkgui_helpers.get_path_to_generic_or_avatar(
img_path, jid=self.jid, suffix=suffix)
+ self.popup_timeout = gajim.config.get('notification_timeout')
+
if event == 'status_change':
self.popup_title = _('%(nick)s Changed Status') % \
{'nick': gajim.get_name_from_jid(account, self.jid)}
@@ -2280,6 +2288,7 @@ class NotificationEvent(nec.NetworkIncomingEvent):
self.popup_event_type = ''
self.popup_msg_type = ''
self.popup_image = ''
+ self.popup_timeout = -1
self.do_command = False
self.command = ''
@@ -2322,6 +2331,7 @@ class MessageOutgoingEvent(nec.NetworkOutgoingEvent):
self.now = False
self.is_loggable = True
self.control = None
+ self.attention = False
def generate(self):
return True
diff --git a/src/common/contacts.py b/src/common/contacts.py
index 8ddce5b45..b23e5a6cd 100644
--- a/src/common/contacts.py
+++ b/src/common/contacts.py
@@ -4,7 +4,7 @@
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Lukas Petrovicky <lukas AT petrovicky.net>
## Tomasz Melcer <liori AT exroot.org>
diff --git a/src/common/dataforms.py b/src/common/dataforms.py
index 8cc5cc2b9..ca7ae513d 100644
--- a/src/common/dataforms.py
+++ b/src/common/dataforms.py
@@ -3,7 +3,7 @@
## src/common/dataforms.py
##
## Copyright (C) 2006-2007 Tomasz Melcer <liori AT exroot.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Stephan Erb <steve-e AT h3c.de>
##
## This file is part of Gajim.
diff --git a/src/common/dbus_support.py b/src/common/dbus_support.py
index 389c16f18..6cc90102b 100644
--- a/src/common/dbus_support.py
+++ b/src/common/dbus_support.py
@@ -4,7 +4,7 @@
## Copyright (C) 2005 Andrew Sayman <lorien420 AT myrealbox.com>
## Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
## Stefan Bethge <stefan AT lanpartei.de>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
diff --git a/src/common/defs.py b/src/common/defs.py
index 6aa68c52d..7172021ca 100644
--- a/src/common/defs.py
+++ b/src/common/defs.py
@@ -2,7 +2,7 @@
## src/common/defs.py
##
## Copyright (C) 2006 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Brendan Taylor <whateley AT gmail.com>
## Tomasz Melcer <liori AT exroot.org>
@@ -27,12 +27,13 @@ docdir = '../'
basedir = '../'
localedir = '../po'
-version = '0.15-beta3'
+version = '0.15'
import subprocess
try:
node = subprocess.Popen('hg tip --template "{node|short}"', shell=True,
stdout=subprocess.PIPE).communicate()[0]
- version += '-' + node
+ if node:
+ version += '-' + node
except Exception:
pass
diff --git a/src/common/demandimport.py b/src/common/demandimport.py
index 41ef3fa5c..e4394876f 100644
--- a/src/common/demandimport.py
+++ b/src/common/demandimport.py
@@ -27,6 +27,17 @@ These imports will not be delayed:
import __builtin__
_origimport = __import__
+nothing = object()
+
+try:
+ _origimport(__builtin__.__name__, {}, {}, None, -1)
+except TypeError: # no level argument
+ def _import(name, globals, locals, fromlist, level):
+ "call _origimport with no level argument"
+ return _origimport(name, globals, locals, fromlist)
+else:
+ _import = _origimport
+
class _demandmod(object):
"""module demand-loader and proxy"""
def __init__(self, name, globals, locals):
@@ -50,7 +61,7 @@ class _demandmod(object):
h, t = p, None
if '.' in p:
h, t = p.split('.', 1)
- if not hasattr(mod, h):
+ if getattr(mod, h, nothing) is nothing:
setattr(mod, h, _demandmod(p, mod.__dict__, mod.__dict__))
elif t:
subload(getattr(mod, h), t)
@@ -78,20 +89,17 @@ class _demandmod(object):
self._load()
setattr(self._module, attr, val)
-def _demandimport(name, globals=None, locals=None, fromlist=None, level=None):
+def _demandimport(name, globals=None, locals=None, fromlist=None, level=-1):
if not locals or name in ignore or fromlist == ('*',):
# these cases we can't really delay
- if level is None:
- return _origimport(name, globals, locals, fromlist)
- else:
- return _origimport(name, globals, locals, fromlist, level)
+ return _import(name, globals, locals, fromlist, level)
elif not fromlist:
# import a [as b]
if '.' in name: # a.b
base, rest = name.split('.', 1)
# email.__init__ loading email.mime
if globals and globals.get('__name__', None) == base:
- return _origimport(name, globals, locals, fromlist)
+ return _import(name, globals, locals, fromlist, level)
# if a is already demand-loaded, add b to its submodule list
if base in locals:
if isinstance(locals[base], _demandmod):
@@ -99,19 +107,19 @@ def _demandimport(name, globals=None, locals=None, fromlist=None, level=None):
return locals[base]
return _demandmod(name, globals, locals)
else:
- if level is not None:
+ if level != -1:
# from . import b,c,d or from .a import b,c,d
return _origimport(name, globals, locals, fromlist, level)
# from a import b,c,d
mod = _origimport(name, globals, locals)
# recurse down the module chain
for comp in name.split('.')[1:]:
- if not hasattr(mod, comp):
+ if getattr(mod, comp, nothing) is nothing:
setattr(mod, comp, _demandmod(comp, mod.__dict__, mod.__dict__))
mod = getattr(mod, comp)
for x in fromlist:
# set requested submodules for demand load
- if not hasattr(mod, x):
+ if getattr(mod, x, nothing) is nothing:
setattr(mod, x, _demandmod(x, mod.__dict__, locals))
return mod
@@ -134,6 +142,8 @@ ignore = [
# raise ImportError if x not defined
'__main__',
'_ssl', # conditional imports in the stdlib, issue1964
+ 'rfc822',
+ 'mimetools',
]
def enable():
diff --git a/src/common/dh.py b/src/common/dh.py
index 827d87806..e482e1589 100644
--- a/src/common/dh.py
+++ b/src/common/dh.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/dh.py
##
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
##
## This file is part of Gajim.
diff --git a/src/common/events.py b/src/common/events.py
index cdfcbde7a..b1909a49c 100644
--- a/src/common/events.py
+++ b/src/common/events.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2007-2008 Stephan Erb <steve-e AT h3c.de>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
@@ -45,7 +45,7 @@ class Event:
where kind in error, incoming
file-*: file_props
gc_msg: None
- printed_chat: control
+ printed_chat: [message, subject, control, msg_id]
printed_*: None
messages that are already printed in chat, but not read
gc-invitation: [room_jid, reason, password, is_continued]
diff --git a/src/common/exceptions.py b/src/common/exceptions.py
index de8c3309d..3bc6b3643 100644
--- a/src/common/exceptions.py
+++ b/src/common/exceptions.py
@@ -2,7 +2,7 @@
## src/common/exceptions.py
##
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Brendan Taylor <whateley AT gmail.com>
##
diff --git a/src/common/fuzzyclock.py b/src/common/fuzzyclock.py
index e997ec6bf..242c9da18 100755
--- a/src/common/fuzzyclock.py
+++ b/src/common/fuzzyclock.py
@@ -2,7 +2,7 @@
## src/common/fuzzyclock.py
##
## Copyright (C) 2006 Christoph Neuroth <delmonico AT gmx.net>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2009 Benjamin Richter <br AT waldteufel-online.net>
##
diff --git a/src/common/gajim.py b/src/common/gajim.py
index 6face0fbf..1a1c84e83 100644
--- a/src/common/gajim.py
+++ b/src/common/gajim.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/gajim.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
@@ -171,21 +171,21 @@ else:
# read.
HAVE_LATEX = False
-HAVE_FARSIGHT = True
+HAVE_FARSTREAM = True
try:
- farsight = __import__('farsight')
+ farstream = __import__('farstream')
import gst
import glib
try:
conference = gst.element_factory_make('fsrtpconference')
- session = conference.new_session(farsight.MEDIA_TYPE_AUDIO)
+ session = conference.new_session(farstream.MEDIA_TYPE_AUDIO)
del session
del conference
except glib.GError:
- HAVE_FARSIGHT = False
+ HAVE_FARSTREAM = False
except ImportError:
- HAVE_FARSIGHT = False
+ HAVE_FARSTREAM = False
HAVE_UPNP_IGD = True
try:
diff --git a/src/common/ged.py b/src/common/ged.py
index 72920f05e..0d8766c1f 100644
--- a/src/common/ged.py
+++ b/src/common/ged.py
@@ -27,6 +27,7 @@ Global Events Dispatcher module.
import traceback
+from common.xmpp import NodeProcessed
import logging
log = logging.getLogger('gajim.c.ged')
@@ -86,11 +87,16 @@ class GlobalEventsDispatcher(object):
def raise_event(self, event_name, *args, **kwargs):
log.debug('%s\nArgs: %s'%(event_name, str(args)))
if event_name in self.handlers:
+ node_processed = False
for priority, handler in self.handlers[event_name]:
try:
if handler(*args, **kwargs):
return True
+ except NodeProcessed:
+ node_processed = True
except Exception, e:
log.error('Error while running an even handler: %s' % \
handler)
traceback.print_exc()
+ if node_processed:
+ raise NodeProcessed
diff --git a/src/common/gnupg.py b/src/common/gnupg.py
index e3bed526e..f5c703414 100644
--- a/src/common/gnupg.py
+++ b/src/common/gnupg.py
@@ -962,7 +962,7 @@ class Sign(object):
def handle_status(self, key, value):
if key in ("USERID_HINT", "NEED_PASSPHRASE", "BAD_PASSPHRASE",
- "GOOD_PASSPHRASE", "BEGIN_SIGNING"):
+ "GOOD_PASSPHRASE", "BEGIN_SIGNING", "MISSING_PASSPHRASE"):
pass
elif key == "SIG_CREATED":
(self.type,
diff --git a/src/common/gpg.py b/src/common/gpg.py
index 81272569e..7e78fdc0b 100644
--- a/src/common/gpg.py
+++ b/src/common/gpg.py
@@ -1,6 +1,6 @@
## src/common/gpg.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Alex Mauer <hawke AT hawkesnest.net>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2007 Stephan Erb <steve-e AT h3c.de>
diff --git a/src/common/helpers.py b/src/common/helpers.py
index e4deb3ee6..a4ce133f3 100644
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/helpers.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Alex Mauer <hawke AT hawkesnest.net>
@@ -1330,7 +1330,7 @@ def update_optional_features(account = None):
gajim.gajim_optional_features[a].append(xmpp.NS_ESESSION)
if gajim.config.get_per('accounts', a, 'answer_receipts'):
gajim.gajim_optional_features[a].append(xmpp.NS_RECEIPTS)
- if gajim.HAVE_FARSIGHT:
+ if gajim.HAVE_FARSTREAM:
gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE)
gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_RTP)
gajim.gajim_optional_features[a].append(xmpp.NS_JINGLE_RTP_AUDIO)
@@ -1436,8 +1436,10 @@ def get_proxy_info(account):
if p:
proxy = {}
proxyptr = gajim.config.get_per('proxies', p)
+ if not proxyptr:
+ return proxy
for key in proxyptr.keys():
- proxy[key] = proxyptr[key][1]
+ proxy[key] = proxyptr[key]
return proxy
def _get_img_direct(attrs):
@@ -1546,4 +1548,4 @@ def download_image(account, attrs):
proxy = get_proxy_info(account)
if proxy and proxy['type'] in ('http', 'socks5'):
return _get_img_proxy(attrs, proxy)
- return _get_img_direct(attrs) \ No newline at end of file
+ return _get_img_direct(attrs)
diff --git a/src/common/i18n.py b/src/common/i18n.py
index 3ff764c99..6de7eee31 100644
--- a/src/common/i18n.py
+++ b/src/common/i18n.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/i18n.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2004 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2009 Benjamin Richter <br AT waldteufel-online.net>
diff --git a/src/common/jingle.py b/src/common/jingle.py
index 5a9c39dee..4c2598487 100644
--- a/src/common/jingle.py
+++ b/src/common/jingle.py
@@ -35,7 +35,7 @@ import helpers
import gajim
from jingle_session import JingleSession, JingleStates
-if gajim.HAVE_FARSIGHT:
+if gajim.HAVE_FARSTREAM:
from jingle_rtp import JingleAudio, JingleVideo
from jingle_ft import JingleFileTransfer
from jingle_transport import JingleTransportSocks5, JingleTransportIBB
diff --git a/src/common/jingle_rtp.py b/src/common/jingle_rtp.py
index 20f792f5f..4e552dbb1 100644
--- a/src/common/jingle_rtp.py
+++ b/src/common/jingle_rtp.py
@@ -21,7 +21,7 @@ import gobject
import socket
import xmpp
-import farsight, gst
+import farstream, gst
from glib import GError
import gajim
@@ -42,8 +42,8 @@ class JingleRTPContent(JingleContent):
JingleContent.__init__(self, session, transport)
self.media = media
self._dtmf_running = False
- self.farsight_media = {'audio': farsight.MEDIA_TYPE_AUDIO,
- 'video': farsight.MEDIA_TYPE_VIDEO}[media]
+ self.farstream_media = {'audio': farstream.MEDIA_TYPE_AUDIO,
+ 'video': farstream.MEDIA_TYPE_VIDEO}[media]
self.pipeline = None
self.src_bin = None
@@ -59,7 +59,7 @@ class JingleRTPContent(JingleContent):
self.callbacks['session-terminate'] += [self.__stop]
self.callbacks['session-terminate-sent'] += [self.__stop]
- def setup_stream(self):
+ def setup_stream(self, on_src_pad_added):
# pipeline and bus
self.pipeline = gst.Pipeline()
bus = self.pipeline.get_bus()
@@ -68,13 +68,12 @@ class JingleRTPContent(JingleContent):
# conference
self.conference = gst.element_factory_make('fsrtpconference')
- self.conference.set_property('sdes-cname', self.session.ourjid)
self.pipeline.add(self.conference)
self.funnel = None
- self.p2psession = self.conference.new_session(self.farsight_media)
+ self.p2psession = self.conference.new_session(self.farstream_media)
- participant = self.conference.new_participant(self.session.peerjid)
+ participant = self.conference.new_participant()
# FIXME: Consider a workaround, here...
# pidgin and telepathy-gabble don't follow the XEP, and it won't work
# due to bad controlling-mode
@@ -93,7 +92,9 @@ class JingleRTPContent(JingleContent):
params['stun-ip'] = ip
self.p2pstream = self.p2psession.new_stream(participant,
- farsight.DIRECTION_RECV, 'nice', params)
+ farstream.DIRECTION_RECV)
+ self.p2pstream.connect('src-pad-added', on_src_pad_added)
+ self.p2pstream.set_transmitter('nice', params)
def is_ready(self):
return (JingleContent.is_ready(self) and self.candidates_ready)
@@ -117,7 +118,7 @@ class JingleRTPContent(JingleContent):
# FIXME: connectivity should not be etablished yet
# Instead, it should be etablished after session-accept!
if self.sent:
- self.p2pstream.set_remote_candidates(candidates)
+ self.p2pstream.add_remote_candidates(candidates)
def batch_dtmf(self, events):
"""
@@ -140,15 +141,14 @@ class JingleRTPContent(JingleContent):
def _start_dtmf(self, event):
if event in ('*', '#'):
- event = {'*': farsight.DTMF_EVENT_STAR,
- '#': farsight.DTMF_EVENT_POUND}[event]
+ event = {'*': farstream.DTMF_EVENT_STAR,
+ '#': farstream.DTMF_EVENT_POUND}[event]
else:
event = int(event)
- self.p2psession.start_telephony_event(event, 2,
- farsight.DTMF_METHOD_RTP_RFC4733)
+ self.p2psession.start_telephony_event(event, 2)
def _stop_dtmf(self):
- self.p2psession.stop_telephony_event(farsight.DTMF_METHOD_RTP_RFC4733)
+ self.p2psession.stop_telephony_event()
def _fill_content(self, content):
content.addChild(xmpp.NS_JINGLE_RTP + ' description',
@@ -170,34 +170,33 @@ class JingleRTPContent(JingleContent):
if message.type == gst.MESSAGE_ELEMENT:
name = message.structure.get_name()
log.debug('gst element message: %s: %s' % (name, message))
- if name == 'farsight-new-active-candidate-pair':
+ if name == 'farstream-new-active-candidate-pair':
pass
- elif name == 'farsight-recv-codecs-changed':
+ elif name == 'farstream-recv-codecs-changed':
pass
- elif name == 'farsight-codecs-changed':
- if self.sent and self.p2psession.get_property('codecs-ready'):
+ elif name == 'farstream-codecs-changed':
+ if self.sent and self.p2psession.get_property('codecs'):
self.send_description_info()
- elif name == 'farsight-local-candidates-prepared':
+ elif name == 'farstream-local-candidates-prepared':
self.candidates_ready = True
if self.is_ready():
self.session.on_session_state_changed(self)
- elif name == 'farsight-new-local-candidate':
+ elif name == 'farstream-new-local-candidate':
candidate = message.structure['candidate']
self.transport.candidates.append(candidate)
if self.sent:
# FIXME: Is this case even possible?
self.send_candidate(candidate)
- elif name == 'farsight-component-state-changed':
+ elif name == 'farstream-component-state-changed':
state = message.structure['state']
- if state == farsight.STREAM_STATE_FAILED:
+ if state == farstream.STREAM_STATE_FAILED:
reason = xmpp.Node('reason')
reason.setTag('failed-transport')
self.session.remove_content(self.creator, self.name, reason)
- elif name == 'farsight-error':
- log.error('Farsight error #%d!\nMessage: %s\nDebug: %s' % (
+ elif name == 'farstream-error':
+ log.error('Farstream error #%d!\nMessage: %s' % (
message.structure['error-no'],
- message.structure['error-msg'],
- message.structure['debug-msg']))
+ message.structure['error-msg']))
elif message.type == gst.MESSAGE_ERROR:
# TODO: Fix it to fallback to videotestsrc anytime an error occur,
# or raise an error, Jingle way
@@ -236,10 +235,10 @@ class JingleRTPContent(JingleContent):
def on_negotiated(self):
if self.accepted:
if self.transport.remote_candidates:
- self.p2pstream.set_remote_candidates(self.transport.remote_candidates)
+ self.p2pstream.add_remote_candidates(self.transport.remote_candidates)
self.transport.remote_candidates = []
- # TODO: farsight.DIRECTION_BOTH only if senders='both'
- self.p2pstream.set_property('direction', farsight.DIRECTION_BOTH)
+ # TODO: farstream.DIRECTION_BOTH only if senders='both'
+ self.p2pstream.set_property('direction', farstream.DIRECTION_BOTH)
JingleContent.on_negotiated(self)
def __on_remote_codecs(self, stanza, content, error, action):
@@ -252,8 +251,8 @@ class JingleRTPContent(JingleContent):
if not codec['id'] or not codec['name'] or not codec['clockrate']:
# ignore invalid payload-types
continue
- c = farsight.Codec(int(codec['id']), codec['name'],
- self.farsight_media, int(codec['clockrate']))
+ c = farstream.Codec(int(codec['id']), codec['name'],
+ self.farstream_media, int(codec['clockrate']))
if 'channels' in codec:
c.channels = int(codec['channels'])
else:
@@ -318,7 +317,7 @@ class JingleAudio(JingleRTPContent):
self.out_volume.set_property('volume', vol)
def setup_stream(self):
- JingleRTPContent.setup_stream(self)
+ JingleRTPContent.setup_stream(self, self._on_src_pad_added)
# Configure SPEEX
# Workaround for psi (not needed since rev
@@ -326,10 +325,10 @@ class JingleAudio(JingleRTPContent):
# place 16kHz before 8kHz, as buggy psi versions will take in
# account only the first codec
- codecs = [farsight.Codec(farsight.CODEC_ID_ANY, 'SPEEX',
- farsight.MEDIA_TYPE_AUDIO, 16000),
- farsight.Codec(farsight.CODEC_ID_ANY, 'SPEEX',
- farsight.MEDIA_TYPE_AUDIO, 8000)]
+ codecs = [farstream.Codec(farstream.CODEC_ID_ANY, 'SPEEX',
+ farstream.MEDIA_TYPE_AUDIO, 16000),
+ farstream.Codec(farstream.CODEC_ID_ANY, 'SPEEX',
+ farstream.MEDIA_TYPE_AUDIO, 8000)]
self.p2psession.set_codec_preferences(codecs)
# the local parts
@@ -348,9 +347,8 @@ class JingleAudio(JingleRTPContent):
self.src_bin.get_pad('src').link(self.p2psession.get_property(
'sink-pad'))
- self.p2pstream.connect('src-pad-added', self._on_src_pad_added)
- # The following is needed for farsight to process ICE requests:
+ # The following is needed for farstream to process ICE requests:
self.pipeline.set_state(gst.STATE_PLAYING)
@@ -363,7 +361,7 @@ class JingleVideo(JingleRTPContent):
# TODO: Everything is not working properly:
# sometimes, one window won't show up,
# sometimes it'll freeze...
- JingleRTPContent.setup_stream(self)
+ JingleRTPContent.setup_stream(self, self._on_src_pad_added)
# the local parts
if gajim.config.get('video_framerate'):
@@ -395,9 +393,8 @@ class JingleVideo(JingleRTPContent):
self.src_bin.get_pad('src').link(self.p2psession.get_property(
'sink-pad'))
- self.p2pstream.connect('src-pad-added', self._on_src_pad_added)
- # The following is needed for farsight to process ICE requests:
+ # The following is needed for farstream to process ICE requests:
self.pipeline.set_state(gst.STATE_PLAYING)
def get_fallback_src(self):
diff --git a/src/common/jingle_transport.py b/src/common/jingle_transport.py
index f41c85042..ff736f718 100644
--- a/src/common/jingle_transport.py
+++ b/src/common/jingle_transport.py
@@ -323,7 +323,7 @@ class JingleTransportIBB(JingleTransport):
return transport
try:
- import farsight
+ import farstream
except Exception:
pass
@@ -332,11 +332,11 @@ class JingleTransportICEUDP(JingleTransport):
JingleTransport.__init__(self, TransportType.ICEUDP)
def make_candidate(self, candidate):
- types = {farsight.CANDIDATE_TYPE_HOST: 'host',
- farsight.CANDIDATE_TYPE_SRFLX: 'srflx',
- farsight.CANDIDATE_TYPE_PRFLX: 'prflx',
- farsight.CANDIDATE_TYPE_RELAY: 'relay',
- farsight.CANDIDATE_TYPE_MULTICAST: 'multicast'}
+ types = {farstream.CANDIDATE_TYPE_HOST: 'host',
+ farstream.CANDIDATE_TYPE_SRFLX: 'srflx',
+ farstream.CANDIDATE_TYPE_PRFLX: 'prflx',
+ farstream.CANDIDATE_TYPE_RELAY: 'relay',
+ farstream.CANDIDATE_TYPE_MULTICAST: 'multicast'}
attrs = {
'component': candidate.component_id,
'foundation': '1', # hack
@@ -348,7 +348,7 @@ class JingleTransportICEUDP(JingleTransport):
}
if candidate.type in types:
attrs['type'] = types[candidate.type]
- if candidate.proto == farsight.NETWORK_PROTOCOL_UDP:
+ if candidate.proto == farstream.NETWORK_PROTOCOL_UDP:
attrs['protocol'] = 'udp'
else:
# we actually don't handle properly different tcp options in jingle
@@ -367,29 +367,29 @@ class JingleTransportICEUDP(JingleTransport):
def parse_transport_stanza(self, transport):
candidates = []
for candidate in transport.iterTags('candidate'):
- cand = farsight.Candidate()
+ cand = farstream.Candidate()
cand.component_id = int(candidate['component'])
cand.ip = str(candidate['ip'])
cand.port = int(candidate['port'])
cand.foundation = str(candidate['foundation'])
- #cand.type = farsight.CANDIDATE_TYPE_LOCAL
+ #cand.type = farstream.CANDIDATE_TYPE_LOCAL
cand.priority = int(candidate['priority'])
if candidate['protocol'] == 'udp':
- cand.proto = farsight.NETWORK_PROTOCOL_UDP
+ cand.proto = farstream.NETWORK_PROTOCOL_UDP
else:
# we actually don't handle properly different tcp options in jingle
- cand.proto = farsight.NETWORK_PROTOCOL_TCP
+ cand.proto = farstream.NETWORK_PROTOCOL_TCP
cand.username = str(transport['ufrag'])
cand.password = str(transport['pwd'])
#FIXME: huh?
- types = {'host': farsight.CANDIDATE_TYPE_HOST,
- 'srflx': farsight.CANDIDATE_TYPE_SRFLX,
- 'prflx': farsight.CANDIDATE_TYPE_PRFLX,
- 'relay': farsight.CANDIDATE_TYPE_RELAY,
- 'multicast': farsight.CANDIDATE_TYPE_MULTICAST}
+ types = {'host': farstream.CANDIDATE_TYPE_HOST,
+ 'srflx': farstream.CANDIDATE_TYPE_SRFLX,
+ 'prflx': farstream.CANDIDATE_TYPE_PRFLX,
+ 'relay': farstream.CANDIDATE_TYPE_RELAY,
+ 'multicast': farstream.CANDIDATE_TYPE_MULTICAST}
if 'type' in candidate and candidate['type'] in types:
cand.type = types[candidate['type']]
else:
diff --git a/src/common/latex.py b/src/common/latex.py
index 75a1a699e..9a90fe861 100644
--- a/src/common/latex.py
+++ b/src/common/latex.py
@@ -5,7 +5,7 @@
## Copyright (C) 2005-2006 Alex Mauer <hawke AT hawkesnest.net>
## Travis Shirk <travis AT pobox.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
@@ -59,8 +59,21 @@ def check_blacklist(str_):
def get_tmpfile_name():
random.seed()
- int_ = random.randint(0, 100)
- return os.path.join(gettempdir(), 'gajimtex_' + int_.__str__())
+ nb = 0
+ while(nb < 100):
+ int_ = random.randint(0, 10000)
+ filename = os.path.join(gettempdir(), 'gajimtex_' + int_.__str__())
+ # Check if a file to not overwrite it
+ ok = True
+ extensions = ['.tex', '.log', '.aux', '.dvi']
+ for ext in extensions:
+ if os.path.exists(filename + ext):
+ ok = False
+ break
+ if ok:
+ return filename
+ nb += 1
+ return filename
def write_latex(filename, str_):
texstr = '\\documentclass[12pt]{article}\\usepackage[dvips]{graphicx}'
diff --git a/src/common/location_listener.py b/src/common/location_listener.py
index af0aca6eb..07aa11e68 100644
--- a/src/common/location_listener.py
+++ b/src/common/location_listener.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
## src/common/location_listener.py
##
-## Copyright (C) 2009-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2009-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/common/logger.py b/src/common/logger.py
index ee7e647f1..8e929c4a5 100644
--- a/src/common/logger.py
+++ b/src/common/logger.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/logger.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2004-2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
@@ -34,6 +34,7 @@ import time
import datetime
from gzip import GzipFile
from cStringIO import StringIO
+import gobject
import exceptions
import gajim
@@ -106,6 +107,7 @@ class Logger:
def __init__(self):
self.jids_already_in = [] # holds jids that we already have in DB
self.con = None
+ self.commit_timout_id = None
if not os.path.exists(LOG_DB_PATH):
# this can happen only the first time (the time we create the db)
@@ -163,15 +165,25 @@ class Logger:
self.open_db()
self.get_jids_already_in_db()
+ def _really_commit(self):
+ try:
+ self.con.commit()
+ except sqlite.OperationalError, e:
+ print >> sys.stderr, str(e)
+ self.commit_timout_id = None
+ return False
+
+ def _timeout_commit(self):
+ if self.commit_timout_id:
+ return
+ self.commit_timout_id = gobject.timeout_add(500, self._really_commit)
+
def simple_commit(self, sql_to_commit):
"""
Helper to commit
"""
self.cur.execute(sql_to_commit)
- try:
- self.con.commit()
- except sqlite.OperationalError, e:
- print >> sys.stderr, str(e)
+ self._timeout_commit()
def get_jids_already_in_db(self):
try:
@@ -398,12 +410,14 @@ class Logger:
except sqlite.OperationalError, e:
raise exceptions.PysqliteOperationalError(str(e))
message_id = None
- try:
- self.con.commit()
- if write_unread:
+ if write_unread:
+ try:
+ self.con.commit()
message_id = self.cur.lastrowid
- except sqlite.OperationalError, e:
- print >> sys.stderr, str(e)
+ except sqlite.OperationalError, e:
+ print >> sys.stderr, str(e)
+ else:
+ self._timeout_commit()
if message_id:
self.insert_unread_events(message_id, values[0])
return message_id
@@ -922,10 +936,7 @@ class Logger:
VALUES (?, ?, ?, ?);
''', (hash_method, hash_, buffer(data), int(time.time())))
# (1) -- note above
- try:
- self.con.commit()
- except sqlite.OperationalError, e:
- print >> sys.stderr, str(e)
+ self._timeout_commit()
def update_caps_time(self, method, hash_):
sql = '''UPDATE caps_cache SET last_seen = %d
@@ -963,9 +974,9 @@ class Logger:
# Fill roster tables with the new roster
for jid in roster:
self.add_or_update_contact(account_jid, jid, roster[jid]['name'],
- roster[jid]['subscription'], roster[jid]['ask'],
- roster[jid]['groups'], commit=False)
- self.con.commit()
+ roster[jid]['subscription'], roster[jid]['ask'],
+ roster[jid]['groups'], commit=False)
+ self._timeout_commit()
# At this point, we are sure the replacement works properly so we can
# set the new roster_version value.
@@ -987,7 +998,7 @@ class Logger:
self.cur.execute(
'DELETE FROM roster_entry WHERE account_jid_id=? AND jid_id=?',
(account_jid_id, jid_id))
- self.con.commit()
+ self._timeout_commit()
def add_or_update_contact(self, account_jid, jid, name, sub, ask, groups,
commit=True):
@@ -1022,7 +1033,7 @@ class Logger:
self.convert_human_subscription_values_to_db_api_values(sub),
bool(ask)))
if commit:
- self.con.commit()
+ self._timeout_commit()
def get_roster(self, account_jid):
"""
@@ -1075,7 +1086,7 @@ class Logger:
(account_jid_id,))
self.cur.execute('DELETE FROM roster_group WHERE account_jid_id=?',
(account_jid_id,))
- self.con.commit()
+ self._timeout_commit()
def save_if_not_exists(self, with_, direction, tim, msg='', nick=None):
if tim:
diff --git a/src/common/optparser.py b/src/common/optparser.py
index a0ed81578..fa270d748 100644
--- a/src/common/optparser.py
+++ b/src/common/optparser.py
@@ -2,7 +2,7 @@
## src/common/optparser.py
##
## Copyright (C) 2003-2005 Vincent Hanquez <tab AT snarc.org>
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
@@ -50,7 +50,7 @@ class OptionsParser:
except Exception:
if os.path.exists(self.__filename):
#we talk about a file
- print _('error: cannot open %s for reading') % self.__filename
+ print _('Error: cannot open %s for reading') % self.__filename
return False
new_version = gajim.config.get('version')
@@ -85,7 +85,6 @@ class OptionsParser:
def write_line(self, fd, opt, parents, value):
if value is None:
return
- value = value[1]
# convert to utf8 before writing to file if needed
if isinstance(value, unicode):
value = value.encode('utf-8')
diff --git a/src/common/passwords.py b/src/common/passwords.py
index c6fcc36c6..55ec38bad 100644
--- a/src/common/passwords.py
+++ b/src/common/passwords.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Gustavo J. A. M. Carneiro <gjcarneiro AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
## Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2008 Stephan Erb <steve-e AT h3c.de>
@@ -63,7 +63,7 @@ class GnomePasswordStorage(PasswordStorage):
def __init__(self):
self.keyring = gnomekeyring.get_default_keyring_sync()
if self.keyring is None:
- self.keyring = 'default'
+ self.keyring = 'login'
try:
gnomekeyring.create_sync(self.keyring, None)
except gnomekeyring.AlreadyExistsError:
diff --git a/src/common/pep.py b/src/common/pep.py
index 07b2a6161..be94e9235 100644
--- a/src/common/pep.py
+++ b/src/common/pep.py
@@ -2,7 +2,7 @@
## src/common/pep.py
##
## Copyright (C) 2007 Piotr Gaczkowski <doomhammerng AT gmail.com>
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
## Jean-Marie Traissard <jim AT lapin.org>
## Jonathan Schleifer <js-common.gajim AT webkeks.org>
diff --git a/src/common/protocol/bytestream.py b/src/common/protocol/bytestream.py
index 6af6d1637..b370ec266 100644
--- a/src/common/protocol/bytestream.py
+++ b/src/common/protocol/bytestream.py
@@ -6,7 +6,7 @@
## Copyright (C) 2006-2007 Tomasz Melcer <liori AT exroot.org>
## Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2007-2008 Brendan Taylor <whateley AT gmail.com>
## Jean-Marie Traissard <jim AT lapin.org>
diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py
index 80d402e95..879458aea 100644
--- a/src/common/proxy65_manager.py
+++ b/src/common/proxy65_manager.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Jean-Marie Traissard <jim AT lapin.org>
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/common/pubsub.py b/src/common/pubsub.py
index 277926599..93aa9427e 100644
--- a/src/common/pubsub.py
+++ b/src/common/pubsub.py
@@ -2,7 +2,7 @@
## src/common/pubsub.py
##
## Copyright (C) 2006 Tomasz Melcer <liori AT exroot.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Stephan Erb <steve-e AT h3c.de>
##
diff --git a/src/common/rst_xhtml_generator.py b/src/common/rst_xhtml_generator.py
index 45e07c72b..28f25c77e 100644
--- a/src/common/rst_xhtml_generator.py
+++ b/src/common/rst_xhtml_generator.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Santiago Gala
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
##
## This file is part of Gajim.
diff --git a/src/common/sleepy.py b/src/common/sleepy.py
index 6fadd9dbd..14568cb5c 100644
--- a/src/common/sleepy.py
+++ b/src/common/sleepy.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/sleepy.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Mateusz Biliński <mateusz AT bilinski.it>
diff --git a/src/common/socks5.py b/src/common/socks5.py
index 2aa5f991d..89402e898 100644
--- a/src/common/socks5.py
+++ b/src/common/socks5.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
diff --git a/src/common/stanza_session.py b/src/common/stanza_session.py
index 0cecfa512..618dd744a 100644
--- a/src/common/stanza_session.py
+++ b/src/common/stanza_session.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/common/stanza_session.py
##
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2007-2008 Brendan Taylor <whateley AT gmail.com>
## Jean-Marie Traissard <jim AT lapin.org>
@@ -99,7 +99,7 @@ class StanzaSession(object):
for event in gajim.events.get_events(self.conn.name, j, types=types):
# the event wasn't in this session
if (event.type_ == 'chat' and event.parameters[8] != self) or \
- (event.type_ == 'printed_chat' and event.parameters[0].session != \
+ (event.type_ == 'printed_chat' and event.parameters[2].session != \
self):
continue
diff --git a/src/common/xmpp/auth_nb.py b/src/common/xmpp/auth_nb.py
index 1063ed9a7..10d65abed 100644
--- a/src/common/xmpp/auth_nb.py
+++ b/src/common/xmpp/auth_nb.py
@@ -577,8 +577,19 @@ class NonBlockingNonSASL(PlugIn):
else:
log.warn("Secure methods unsupported, performing plain text \
authentication")
- query.setTagData('password', self.password)
self._method = 'plain'
+ self._owner._caller.get_password(self._on_password, self._method)
+ return
+ resp = self.owner.Dispatcher.SendAndWaitForResponse(iq,
+ func=self._on_auth)
+
+ def _on_password(self, password):
+ self.password = '' if password is None else password
+ iq=Iq('set', NS_AUTH)
+ query = iq.getTag('query')
+ query.setTagData('username', self.user)
+ query.setTagData('resource', self.resource)
+ query.setTagData('password', self.password)
resp = self.owner.Dispatcher.SendAndWaitForResponse(iq,
func=self._on_auth)
diff --git a/src/common/xmpp/client_nb.py b/src/common/xmpp/client_nb.py
index 608be0fa6..97d5ec567 100644
--- a/src/common/xmpp/client_nb.py
+++ b/src/common/xmpp/client_nb.py
@@ -530,6 +530,7 @@ class NonBlockingClient:
sm.set_owner(self)
self.Dispatcher.sm = sm
nb_bind.PlugIn(self)
+ self.on_auth(self, 'sasl')
return
nb_bind.PlugIn(self)
diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py
index 60a17d256..e0bd794a3 100644
--- a/src/common/xmpp/protocol.py
+++ b/src/common/xmpp/protocol.py
@@ -41,6 +41,7 @@ NS_ARCHIVE_MANAGE = NS_ARCHIVE + ':manage' # XEP-0136
NS_ARCHIVE_MANUAL = NS_ARCHIVE + ':manual' # XEP-0136
NS_ARCHIVE_PREF = NS_ARCHIVE + ':pref'
NS_ATOM = 'http://www.w3.org/2005/Atom'
+NS_ATTENTION = 'urn:xmpp:attention:0' # XEP-0224
NS_AUTH = 'jabber:iq:auth'
NS_AVATAR = 'http://www.xmpp.org/extensions/xep-0084.html#ns-metadata'
NS_BIND = 'urn:ietf:params:xml:ns:xmpp-bind'
diff --git a/src/common/xmpp/smacks.py b/src/common/xmpp/smacks.py
index e59b5d1b8..d82785ac4 100644
--- a/src/common/xmpp/smacks.py
+++ b/src/common/xmpp/smacks.py
@@ -103,6 +103,7 @@ class Smacks():
self.uqueue.pop(0)
if stanza.getName() == 'resumed':
+ self.enabled = True
self.resuming = True
self.con.set_oldst()
if self.uqueue != []:
@@ -114,6 +115,7 @@ class Smacks():
# Ask for service discovery, etc..
if stanza.getTag('item-not-found'):
self.resuming = False
+ self.enabled = False
# we need to bind a resource
self._owner.NonBlockingBind.resuming = False
self._owner._on_auth_bind(None)
diff --git a/src/common/xmpp/stringprepare.py b/src/common/xmpp/stringprepare.py
index 657895c84..5e3d343b5 100644
--- a/src/common/xmpp/stringprepare.py
+++ b/src/common/xmpp/stringprepare.py
@@ -2,7 +2,7 @@
## src/common/xmpp/stringprepare.py
##
## Copyright (C) 2001-2005 Twisted Matrix Laboratories
-## Copyright (C) 2005-2011 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Stefan Bethge <stefan AT lanpartei.de>
## Copyright (C) 2007 Jean-Marie Traissard <jim AT lapin.org>
##
diff --git a/src/common/xmpp/tls_nb.py b/src/common/xmpp/tls_nb.py
index cc8393d52..575960fca 100644
--- a/src/common/xmpp/tls_nb.py
+++ b/src/common/xmpp/tls_nb.py
@@ -451,8 +451,6 @@ class NonBlockingTLS(PlugIn):
try:
self._owner.ssl_fingerprint_sha1 = cert.digest('sha1')
self._owner.ssl_certificate = cert
- if errnum == 0:
- return True
self._owner.ssl_errnum = errnum
self._owner.ssl_cert_pem = OpenSSL.crypto.dump_certificate(
OpenSSL.crypto.FILETYPE_PEM, cert)
diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py
index c5049c6fc..b91b98c21 100644
--- a/src/common/zeroconf/client_zeroconf.py
+++ b/src/common/zeroconf/client_zeroconf.py
@@ -803,11 +803,19 @@ class ClientZeroconf:
def on_ok(_waitid):
# if timeout:
# self._owner.set_timeout(timeout)
- to = stanza.getTo()
+ to = unicode(stanza.getTo())
+ to = gajim.get_jid_without_resource(to)
+
+ try:
+ item = self.roster[to]
+ except KeyError:
+ # Contact offline
+ item = None
+
conn = None
if to in self.recipient_to_hash:
conn = self.connections[self.recipient_to_hash[to]]
- elif item['address'] in self.ip_to_hash:
+ elif item and item['address'] in self.ip_to_hash:
hash_ = self.ip_to_hash[item['address']]
if self.hash_to_port[hash_] == item['port']:
conn = self.connections[hash_]
diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py
index 9b8afd382..7e8a372a9 100644
--- a/src/common/zeroconf/connection_zeroconf.py
+++ b/src/common/zeroconf/connection_zeroconf.py
@@ -7,7 +7,7 @@
## - Travis Shirk <travis@pobox.com>
## - Stefan Bethge <stefan@lanpartei.de>
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix@lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix@lagaule.org>
## Copyright (C) 2003-2004 Vincent Hanquez <tab@snarc.org>
## Copyright (C) 2006 Nikos Kouremenos <nkour@jabber.org>
## Dimitur Kirov <dkirov@gmail.com>
@@ -336,8 +336,8 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
def send_message(self, jid, msg, keyID, type_='chat', subject='',
chatstate=None, msg_id=None, resource=None, user_nick=None, xhtml=None,
label=None, session=None, forward_from=None, form_node=None,
- original_message=None, delayed=None, callback=None, callback_args=[],
- now=True):
+ original_message=None, delayed=None, attention=False, callback=None,
+ callback_args=[], now=True):
def on_send_ok(msg_id):
gajim.nec.push_incoming_event(MessageSentEvent(None, conn=self,
@@ -370,7 +370,8 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
chatstate=chatstate, msg_id=msg_id, resource=resource,
user_nick=user_nick, xhtml=xhtml, session=session,
forward_from=forward_from, form_node=form_node,
- original_message=original_message, delayed=delayed, callback=cb)
+ original_message=original_message, delayed=delayed,
+ attention=attention, callback=cb)
def _nec_message_outgoing(self, obj):
if obj.account != self.name:
@@ -411,7 +412,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
resource=obj.resource, user_nick=obj.user_nick, xhtml=obj.xhtml,
label=obj.label, session=obj.session, forward_from=obj.forward_from,
form_node=obj.form_node, original_message=obj.original_message,
- delayed=obj.delayed, callback=cb)
+ delayed=obj.delayed, attention=obj.attention, callback=cb)
def send_stanza(self, stanza):
# send a stanza untouched
diff --git a/src/config.py b/src/config.py
index 379877629..6f95fd215 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2,7 +2,7 @@
## src/config.py
##
## Copyright (C) 2003-2005 Vincent Hanquez <tab AT snarc.org>
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Alex Podaras <bigpod AT gmail.com>
## Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
@@ -1485,8 +1485,7 @@ class ManageProxiesWindow:
gajim.config.del_per('proxies', old_name)
gajim.config.add_per('proxies', new_name)
for option in config:
- gajim.config.set_per('proxies', new_name, option,
- config[option][common.config.OPT_VAL])
+ gajim.config.set_per('proxies', new_name, option, config[option])
model.set_value(iter_, 0, new_name)
def on_proxytype_combobox_changed(self, widget):
@@ -2116,7 +2115,7 @@ class AccountsWindow:
gajim.config.add_per('accounts', new_name)
old_config = gajim.config.get_per('accounts', old_name)
for opt in old_config:
- gajim.config.set_per('accounts', new_name, opt, old_config[opt][1])
+ gajim.config.set_per('accounts', new_name, opt, old_config[opt])
gajim.config.del_per('accounts', old_name)
if self.current_account == old_name:
self.current_account = new_name
@@ -3655,7 +3654,11 @@ class AccountCreationWizardWindow:
password = self.xml.get_object('password_entry').get_text().decode(
'utf-8')
- jid = username + '@' + server
+ if anonymous:
+ jid = ''
+ else:
+ jid = username + '@'
+ jid += server
# check if jid is conform to RFC and stringprep it
try:
jid = helpers.parse_jid(jid)
@@ -3803,23 +3806,24 @@ class AccountCreationWizardWindow:
self.back_button.show()
self.forward_button.show()
self.is_form = obj.is_form
+ empty_config = True
if obj.is_form:
dataform = dataforms.ExtendForm(node=obj.config)
self.data_form_widget = dataforms_widget.DataFormWidget(dataform)
+ empty_config = False
else:
self.data_form_widget = FakeDataForm(obj.config)
- empty_config = True
for field in obj.config:
if field in ('key', 'instructions', 'x', 'registered'):
continue
empty_config = False
break
- if empty_config:
- self.forward_button.set_sensitive(False)
- self.notebook.set_current_page(4) # show form page
- return
self.data_form_widget.show_all()
self.xml.get_object('form_vbox').pack_start(self.data_form_widget)
+ if empty_config:
+ self.forward_button.set_sensitive(False)
+ self.notebook.set_current_page(4) # show form page
+ return
self.ssl_fingerprint = obj.ssl_fingerprint
self.ssl_cert = obj.ssl_cert
if obj.ssl_msg:
@@ -4183,6 +4187,7 @@ class ManageSoundsWindow:
# NOTE: sounds_ui_names MUST have all items of
# sounds = gajim.config.get_per('soundevents') as keys
sounds_dict = {
+ 'attention_received': _('Attention Message Received'),
'first_message_received': _('First Message Received'),
'next_message_received_focused': _('Next Message Received Focused'),
'next_message_received_unfocused':
diff --git a/src/conversation_textview.py b/src/conversation_textview.py
index 7de98f317..eed90ecc1 100644
--- a/src/conversation_textview.py
+++ b/src/conversation_textview.py
@@ -5,7 +5,7 @@
## Copyright (C) 2005-2006 Alex Mauer <hawke AT hawkesnest.net>
## Travis Shirk <travis AT pobox.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
@@ -925,6 +925,9 @@ class ConversationTextview(gobject.GObject):
childs[7].hide() # hide add to roster menuitem
if kind == 'xmpp':
+ id_ = childs[0].connect('activate', self.on_copy_link_activate,
+ 'xmpp:' + text)
+ self.handlers[id_] = childs[0]
childs[2].hide() # copy mail address
childs[3].hide() # open mail composer
childs[4].hide() # jid section separator
@@ -934,7 +937,8 @@ class ConversationTextview(gobject.GObject):
childs[6].hide() # join group chat
childs[7].hide() # add to roster
- childs[0].hide() # copy link location
+ if kind != 'xmpp':
+ childs[0].hide() # copy link location
childs[1].hide() # open link in browser
menu.popup(None, None, None, event.button, event.time)
diff --git a/src/dataforms_widget.py b/src/dataforms_widget.py
index e63ee5a51..8382bb75e 100644
--- a/src/dataforms_widget.py
+++ b/src/dataforms_widget.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/dataforms_widget.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Tomasz Melcer <liori AT exroot.org>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
##
diff --git a/src/dialogs.py b/src/dialogs.py
index 8e0b80a36..d5456d663 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -2,7 +2,7 @@
## src/dialogs.py
##
## Copyright (C) 2003-2005 Vincent Hanquez <tab AT snarc.org>
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Alex Mauer <hawke AT hawkesnest.net>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Travis Shirk <travis AT pobox.com>
@@ -233,7 +233,7 @@ class PassphraseDialog:
cancelbutton.connect('clicked', self.on_cancelbutton_clicked)
self.xml.connect_signals(self)
- self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
+ self.window.set_transient_for(gajim.interface.roster.window)
self.window.show_all()
self.check = bool(checkbuttontext)
@@ -1936,6 +1936,9 @@ class CommonInputDialog:
def on_cancelbutton_clicked(self, widget):
self.dialog.destroy()
+ def destroy(self):
+ self.dialog.destroy()
+
class InputDialog(CommonInputDialog):
"""
Class for Input dialog
@@ -2464,8 +2467,9 @@ class JoinGroupchatWindow:
'groupchat.'))
return
nickname = self._nickname_entry.get_text().decode('utf-8')
- server = self.server_comboboxentry.child.get_text().decode('utf-8')
- room = self._room_jid_entry.get_text().decode('utf-8')
+ server = self.server_comboboxentry.child.get_text().decode('utf-8').\
+ strip()
+ room = self._room_jid_entry.get_text().decode('utf-8').strip()
room_jid = room + '@' + server
password = self._password_entry.get_text().decode('utf-8')
try:
@@ -2740,7 +2744,7 @@ class ChangePasswordDialog:
class PopupNotificationWindow:
def __init__(self, event_type, jid, account, msg_type='',
- path_to_image=None, title=None, text=None):
+ path_to_image=None, title=None, text=None, timeout=-1):
self.account = account
self.jid = jid
self.msg_type = msg_type
@@ -2760,8 +2764,8 @@ class PopupNotificationWindow:
title = ''
event_type_label.set_markup(
- '<span foreground="black" weight="bold">%s</span>' %
- gobject.markup_escape_text(title))
+ '<span foreground="black" weight="bold">%s</span>' %
+ gobject.markup_escape_text(title))
# set colors [ http://www.pitt.edu/~nisg/cis/web/cgi/rgb.html ]
self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black'))
@@ -2771,25 +2775,25 @@ class PopupNotificationWindow:
path_to_image = gtkgui_helpers.get_icon_path('gajim-chat_msg_recv', 48)
if event_type == _('Contact Signed In'):
- bg_color = 'limegreen'
+ bg_color = gajim.config.get('notif_signin_color')
elif event_type == _('Contact Signed Out'):
- bg_color = 'red'
+ bg_color = gajim.config.get('notif_signout_color')
elif event_type in (_('New Message'), _('New Single Message'),
_('New Private Message'), _('New E-mail')):
- bg_color = 'dodgerblue'
+ bg_color = gajim.config.get('notif_message_color')
elif event_type == _('File Transfer Request'):
- bg_color = 'khaki'
+ bg_color = gajim.config.get('notif_ftrequest_color')
elif event_type == _('File Transfer Error'):
- bg_color = 'firebrick'
+ bg_color = gajim.config.get('notif_fterror_color')
elif event_type in (_('File Transfer Completed'),
- _('File Transfer Stopped')):
- bg_color = 'yellowgreen'
+ _('File Transfer Stopped')):
+ bg_color = gajim.config.get('notif_ftcomplete_color')
elif event_type == _('Groupchat Invitation'):
- bg_color = 'tan1'
+ bg_color = gajim.config.get('notif_invite_color')
elif event_type == _('Contact Changed Status'):
- bg_color = 'thistle2'
+ bg_color = gajim.config.get('notif_status_color')
else: # Unknown event! Shouldn't happen but deal with it
- bg_color = 'white'
+ bg_color = gajim.config.get('notif_other_color')
popup_bg_color = gtk.gdk.color_parse(bg_color)
close_button.modify_bg(gtk.STATE_NORMAL, popup_bg_color)
eventbox.modify_bg(gtk.STATE_NORMAL, popup_bg_color)
@@ -2808,13 +2812,13 @@ class PopupNotificationWindow:
pos_y = gajim.config.get('notification_position_y')
if pos_y < 0:
pos_y = gtk.gdk.screen_height() - \
- gajim.interface.roster.popups_notification_height + pos_y + 1
+ gajim.interface.roster.popups_notification_height + pos_y + 1
self.window.move(pos_x, pos_y)
xml.connect_signals(self)
self.window.show_all()
- timeout = gajim.config.get('notification_timeout')
- gobject.timeout_add_seconds(timeout, self.on_timeout)
+ if timeout > 0:
+ gobject.timeout_add_seconds(timeout, self.on_timeout)
def on_close_button_clicked(self, widget):
self.adjust_height_and_move_popup_notification_windows()
@@ -5154,6 +5158,7 @@ class VoIPCallReceivedDialog(object):
session = gajim.connections[self.account].get_jingle_session(self.fjid,
self.sid)
if not session:
+ dialog.destroy()
return
if response == gtk.RESPONSE_YES:
#TODO: Ensure that ctrl.contact.resource == resource
diff --git a/src/disco.py b/src/disco.py
index b6679d4e3..fdf652be5 100644
--- a/src/disco.py
+++ b/src/disco.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2005-2006 Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Stephan Erb <steve-e AT h3c.de>
diff --git a/src/features_window.py b/src/features_window.py
index 79ffd6745..dff1135f9 100644
--- a/src/features_window.py
+++ b/src/features_window.py
@@ -5,7 +5,7 @@
## Julien Pivotto <roidelapluie AT gmail.com>
## Stefan Bethge <stefan AT lanpartei.de>
## Stephan Erb <steve-e AT h3c.de>
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
## This file is part of Gajim.
@@ -49,12 +49,12 @@ class FeaturesWindow:
self.features = {
_('SSL certificate validation'): (self.pyopenssl_available,
_('A library used to validate server certificates to ensure a secure connection.'),
- _('Requires python-pyopenssl.'),
- _('Requires python-pyopenssl.')),
+ _('Requires python-pyopenssl > 0.12 and pyasn1.'),
+ _('Requires python-pyopenssl > 0.12 and pyasn1.')),
_('Bonjour / Zeroconf'): (self.zeroconf_available,
_('Serverless chatting with autodetected clients in a local network.'),
_('Requires python-avahi.'),
- _('Requires pybonjour (http://o2s.csail.mit.edu/o2s-wiki/pybonjour).')),
+ _('Requires pybonjour and bonjour SDK running (http://developer.apple.com/opensource/).')),
_('Command line'): (self.dbus_available,
_('A script to control Gajim via commandline.'),
_('Requires python-dbus.'),
@@ -103,9 +103,9 @@ class FeaturesWindow:
_('Generate XHTML output from RST code (see http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html).'),
_('Requires python-docutils.'),
_('Requires python-docutils.')),
- _('Audio / Video'): (self.farsight_available,
+ _('Audio / Video'): (self.farstream_available,
_('Ability to start audio and video chat.'),
- _('Requires python-farsight and gstreamer-plugins-bad.'),
+ _('Requires python-farstream and gstreamer-plugins-bad.'),
_('Feature not available under Windows.')),
_('UPnP-IGD'): (self.gupnp_igd_available,
_('Ability to request your router to forward port for file transfer.'),
@@ -169,6 +169,11 @@ class FeaturesWindow:
try:
import OpenSSL.SSL
import OpenSSL.crypto
+ ver = OpenSSL.__version__
+ ver_l = [int(i) for i in ver.split('.')]
+ if ver_l < [0, 12]:
+ raise ImportError
+ import pyasn1
except Exception:
return False
return True
@@ -253,8 +258,8 @@ class FeaturesWindow:
return False
return True
- def farsight_available(self):
- return gajim.HAVE_FARSIGHT
+ def farstream_available(self):
+ return gajim.HAVE_FARSTREAM
def gupnp_igd_available(self):
return gajim.HAVE_UPNP_IGD
diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py
index efe7c787f..4537c5141 100644
--- a/src/filetransfers_window.py
+++ b/src/filetransfers_window.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/filetransfers_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Travis Shirk <travis AT pobox.com>
diff --git a/src/gajim-remote.py b/src/gajim-remote.py
index 7ad39f064..5316ee089 100644
--- a/src/gajim-remote.py
+++ b/src/gajim-remote.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Junglecow <junglecow AT gmail.com>
## Travis Shirk <travis AT pobox.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
diff --git a/src/gajim.py b/src/gajim.py
index e02a1a8f4..329302467 100644
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/gajim.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2004-2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005 Alex Podaras <bigpod AT gmail.com>
## Norman Rasmussen <norman AT rasmussen.co.za>
@@ -233,12 +233,12 @@ else:
elif sysname in ('FreeBSD', 'OpenBSD', 'NetBSD'):
libc.setproctitle('gajim')
- if gtk.pygtk_version < (2, 16, 0):
- pritext = _('Gajim needs PyGTK 2.16 or above')
- sectext = _('Gajim needs PyGTK 2.16 or above to run. Quiting...')
- elif gtk.gtk_version < (2, 16, 0):
- pritext = _('Gajim needs GTK 2.16 or above')
- sectext = _('Gajim needs GTK 2.16 or above to run. Quiting...')
+ if gtk.pygtk_version < (2, 22, 0):
+ pritext = _('Gajim needs PyGTK 2.22 or above')
+ sectext = _('Gajim needs PyGTK 2.22 or above to run. Quiting...')
+ elif gtk.gtk_version < (2, 22, 0):
+ pritext = _('Gajim needs GTK 2.22 or above')
+ sectext = _('Gajim needs GTK 2.22 or above to run. Quiting...')
from common import check_paths
diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py
index 15d2952a9..1c925817d 100644
--- a/src/gajim_themes_window.py
+++ b/src/gajim_themes_window.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/gajim_themes_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Jean-Marie Traissard <jim AT lapin.org>
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 2ee790155..d718ec67d 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/groupchat_control.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Alex Mauer <hawke AT hawkesnest.net>
@@ -212,7 +212,8 @@ class PrivateChatControl(ChatControl):
self.parent_win.redraw_tab(self)
self.update_ui()
- def send_message(self, message, xhtml=None, process_commands=True):
+ def send_message(self, message, xhtml=None, process_commands=True,
+ attention=False):
"""
Call this method to send the message
"""
@@ -237,7 +238,7 @@ class PrivateChatControl(ChatControl):
return
ChatControl.send_message(self, message, xhtml=xhtml,
- process_commands=process_commands)
+ process_commands=process_commands, attention=attention)
def update_ui(self):
if self.contact.show == 'offline':
@@ -1274,7 +1275,7 @@ class GroupchatControl(ChatControlBase):
gajim.gc_connected[obj.conn.name][self.room_jid]:
return
password = gajim.gc_passwords.get(self.room_jid, '')
- obj.conn.join_gc(self.nick, self.room_jid, password)
+ obj.conn.join_gc(self.nick, self.room_jid, password, rejoin=True)
def _nec_decrypted_message_received(self, obj):
if obj.conn.name != self.account:
@@ -1307,7 +1308,6 @@ class GroupchatControl(ChatControlBase):
self._update_banner_state_image()
if self.parent_win:
self.parent_win.redraw_tab(self)
- gobject.idle_add(self.msg_textview.grab_focus)
def got_disconnected(self):
self.list_treeview.set_model(None)
@@ -1351,7 +1351,7 @@ class GroupchatControl(ChatControlBase):
return False
password = gajim.gc_passwords.get(self.room_jid, '')
gajim.connections[self.account].join_gc(self.nick, self.room_jid,
- password)
+ password, rejoin=True)
return True
def draw_roster(self):
diff --git a/src/groups.py b/src/groups.py
index 422950f58..21c5742c9 100644
--- a/src/groups.py
+++ b/src/groups.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/groups.py
##
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Tomasz Melcer <liori AT exroot.org>
##
## This file is part of Gajim.
diff --git a/src/gtkexcepthook.py b/src/gtkexcepthook.py
index 1b85e93bb..5a9bb3476 100644
--- a/src/gtkexcepthook.py
+++ b/src/gtkexcepthook.py
@@ -2,7 +2,7 @@
## src/gtkexcepthook.py
##
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Stephan Erb <steve-e AT h3c.de>
##
## This file is part of Gajim.
diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py
index c2e1bf249..5588b3518 100644
--- a/src/gtkgui_helpers.py
+++ b/src/gtkgui_helpers.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/gtkgui_helpers.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Travis Shirk <travis AT pobox.com>
diff --git a/src/gui_interface.py b/src/gui_interface.py
index a27c11914..c00b3283b 100644
--- a/src/gui_interface.py
+++ b/src/gui_interface.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/gajim.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2004-2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005 Alex Podaras <bigpod AT gmail.com>
## Norman Rasmussen <norman AT rasmussen.co.za>
@@ -330,6 +330,16 @@ class Interface:
if gc_control and gc_control.autorejoin:
gc_control.autorejoin = False
+ def handle_event_gc_message(self, obj):
+ if not obj.stanza.getTag('body'): # no <body>
+ # It could be a voice request. See
+ # http://www.xmpp.org/extensions/xep-0045.html#voiceapprove
+ if obj.msg_obj.form_node:
+ dialogs.SingleMessageWindow(obj.conn.name, obj.fjid,
+ action='receive', from_whom=obj.fjid,
+ subject='', message='', resource='', session=None,
+ form_node=obj.msg_obj.form_node)
+
def handle_event_presence(self, obj):
# 'NOTIFY' (account, (jid, status, status message, resource,
# priority, # keyID, timestamp, contact_nickname))
@@ -1490,6 +1500,7 @@ class Interface:
'fingerprint-error': [self.handle_event_fingerprint_error],
'gc-invitation-received': [self.handle_event_gc_invitation],
'gc-presence-received': [self.handle_event_gc_presence],
+ 'gc-message-received': [self.handle_event_gc_message],
'gmail-notify': [self.handle_event_gmail_notify],
'gpg-password-required': [self.handle_event_gpg_password_required],
'gpg-trust-key': [self.handle_event_gpg_trust_key],
@@ -1625,7 +1636,7 @@ class Interface:
return
if type_ == 'printed_chat':
- ctrl = event.parameters[0]
+ ctrl = event.parameters[2]
elif type_ == 'chat':
session = event.parameters[8]
ctrl = session.control
@@ -1663,7 +1674,7 @@ class Interface:
event = gajim.events.get_first_event(account, jid, type_)
if type_ == 'printed_pm':
- ctrl = event.parameters[0]
+ ctrl = event.parameters[2]
elif type_ == 'pm':
session = event.parameters[8]
diff --git a/src/gui_menu_builder.py b/src/gui_menu_builder.py
index 440a7668d..9df948739 100644
--- a/src/gui_menu_builder.py
+++ b/src/gui_menu_builder.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/gui_menu_builder.py
##
-## Copyright (C) 2009-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2009-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
@@ -272,8 +272,9 @@ control=None, gc_contact=None):
# Unsensitive many items when account is offline
if gajim.account_is_disconnected(account):
- for widget in (start_chat_menuitem, rename_menuitem,
- edit_groups_menuitem, send_file_menuitem, convert_to_gc_menuitem):
+ for widget in (start_chat_menuitem, rename_menuitem,
+ edit_groups_menuitem, send_file_menuitem, convert_to_gc_menuitem,
+ information_menuitem):
widget.set_sensitive(False)
if not show_start_chat:
diff --git a/src/history_manager.py b/src/history_manager.py
index 9e7f57ec1..37c7d7389 100644
--- a/src/history_manager.py
+++ b/src/history_manager.py
@@ -4,7 +4,7 @@
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Stephan Erb <steve-e AT h3c.de>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
##
diff --git a/src/history_window.py b/src/history_window.py
index 958cae331..2b3ad5742 100644
--- a/src/history_window.py
+++ b/src/history_window.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/history_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
diff --git a/src/htmltextview.py b/src/htmltextview.py
index 3f1b474c1..981dc5531 100644
--- a/src/htmltextview.py
+++ b/src/htmltextview.py
@@ -4,7 +4,7 @@
## Copyright (C) 2005 Gustavo J. A. M. Carneiro
## Copyright (C) 2006 Santiago Gala
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
## Julien Pivotto <roidelapluie AT gmail.com>
diff --git a/src/ipython_view.py b/src/ipython_view.py
index 6ed52d236..c26a0bbf9 100644
--- a/src/ipython_view.py
+++ b/src/ipython_view.py
@@ -2,7 +2,7 @@
# -*- coding:utf-8 -*-
## src/ipython_view.py
##
-## Copyright (C) 2008-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2008-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
@@ -51,12 +51,6 @@ from StringIO import StringIO
try:
import IPython
- import IPython.iplib
- import IPython.prefilter
- import IPython.Shell
- import IPython.genutils
- import IPython.shadowns
- import IPython.history
except ImportError:
IPython = None
@@ -96,33 +90,52 @@ class IterableIPShell:
@type input_func: function
"""
if input_func:
- IPython.iplib.raw_input_original = input_func
+ IPython.frontend.terminal.interactiveshell.raw_input_original = input_func
if cin:
- IPython.Shell.Term.cin = cin
+ IPython.utils.io.stdin = IPython.utils.io.IOStream(cin)
if cout:
- IPython.Shell.Term.cout = cout
+ IPython.utils.io.stdout = IPython.utils.io.IOStream(cout)
if cerr:
- IPython.Shell.Term.cerr = cerr
+ IPython.utils.io.stderr = IPython.utils.io.IOStream(cerr)
# This is to get rid of the blockage that accurs during
# IPython.Shell.InteractiveShell.user_setup()
- IPython.iplib.raw_input = lambda x: None
+ IPython.utils.io.raw_input = lambda x: None
- self.term = IPython.genutils.IOTerm(cin=cin, cout=cout, cerr=cerr)
+ self.term = IPython.utils.io.IOTerm(stdin=cin, stdout=cout, stderr=cerr)
os.environ['TERM'] = 'dumb'
excepthook = sys.excepthook
- self.IP = IPython.Shell.make_IPython(
- argv, user_ns=user_ns,
- user_global_ns=user_global_ns,
- embedded=True,
- shell_class=IPython.Shell.InteractiveShell)
+
+ from IPython.config.loader import Config
+ cfg = Config()
+ cfg.InteractiveShell.colors = "Linux"
+
+ self.IP = IPython.frontend.terminal.embed.InteractiveShellEmbed(config=cfg, user_ns=user_ns)
self.IP.system = lambda cmd: self.shell(self.IP.var_expand(cmd),
header='IPython system call: ',
- verbose=self.IP.rc.system_verbose)
+ local_ns=user_ns)
+ #global_ns=user_global_ns)
+ #verbose=self.IP.rc.system_verbose)
+
+ self.IP.raw_input = input_func
sys.excepthook = excepthook
self.iter_more = 0
self.history_level = 0
self.complete_sep = re.compile('[\s\{\}\[\]\(\)]')
+ self.updateNamespace({'exit':lambda:None})
+ self.updateNamespace({'quit':lambda:None})
+ self.IP.readline_startup_hook(self.IP.pre_readline)
+ # Workaround for updating namespace with sys.modules
+ #
+ self.__update_namespace()
+
+ def __update_namespace(self):
+ '''
+ Update self.IP namespace for autocompletion with sys.modules
+ '''
+ for k,v in sys.modules.items():
+ if not '.' in k:
+ self.IP.user_ns.update({k:v})
def execute(self):
"""
@@ -130,34 +143,69 @@ class IterableIPShell:
"""
self.history_level = 0
orig_stdout = sys.stdout
- sys.stdout = IPython.Shell.Term.cout
- try:
- line = self.IP.raw_input(None, self.iter_more)
+ sys.stdout = self.term.stdout
+
+ orig_stdin = sys.stdin
+ sys.stdin = IPython.utils.io.stdin;
+ self.prompt = self.generatePrompt(self.iter_more)
+
+ self.IP.hooks.pre_prompt_hook()
+ if self.iter_more:
+ try:
+ self.prompt = self.generatePrompt(True)
+ except:
+ self.IP.showtraceback()
if self.IP.autoindent:
- self.IP.readline_startup_hook(None)
+ self.IP.rl_do_indent = True
+
+ try:
+ line = self.IP.raw_input(self.prompt)
except KeyboardInterrupt:
self.IP.write('\nKeyboardInterrupt\n')
- self.IP.resetbuffer()
- # keep cache in sync with the prompt counter:
- self.IP.outputcache.prompt_count -= 1
-
- if self.IP.autoindent:
- self.IP.indent_current_nsp = 0
- self.iter_more = 0
+ self.IP.input_splitter.reset()
except:
self.IP.showtraceback()
else:
- self.iter_more = self.IP.push(line)
+ self.IP.input_splitter.push(line)
+ self.iter_more = self.IP.input_splitter.push_accepts_more()
+ self.prompt = self.generatePrompt(self.iter_more)
if (self.IP.SyntaxTB.last_syntax_error and
- self.IP.rc.autoedit_syntax):
+ self.IP.autoedit_syntax):
self.IP.edit_syntax_error()
- if self.iter_more:
- self.prompt = str(self.IP.outputcache.prompt2).strip()
- if self.IP.autoindent:
- self.IP.readline_startup_hook(self.IP.pre_readline)
- else:
- self.prompt = str(self.IP.outputcache.prompt1).strip()
+ if not self.iter_more:
+ source_raw = self.IP.input_splitter.source_raw_reset()[1]
+ self.IP.run_cell(source_raw, store_history=True)
+ else:
+ # TODO: Auto-indent
+ #
+ pass
+
sys.stdout = orig_stdout
+ sys.stdin = orig_stdin
+ def generatePrompt(self, is_continuation):
+ '''
+ Generate prompt depending on is_continuation value
+
+ @param is_continuation
+ @type is_continuation: boolean
+
+ @return: The prompt string representation
+ @rtype: string
+
+ '''
+
+ # Backwards compatibility with ipyton-0.11
+ #
+ ver = IPython.__version__
+ if '0.11' in ver:
+ prompt = self.IP.hooks.generate_prompt(is_continuation)
+ else:
+ if is_continuation:
+ prompt = self.IP.prompt_manager.render('in2')
+ else:
+ prompt = self.IP.prompt_manager.render('in')
+
+ return prompt
def historyBack(self):
"""
@@ -214,28 +262,37 @@ class IterableIPShell:
@rtype: tuple
"""
split_line = self.complete_sep.split(line)
- possibilities = self.IP.complete(split_line[-1])
-
- try:
- __builtins__.all()
- except AttributeError:
- def all(iterable):
- for element in iterable:
- if not element:
- return False
- return True
-
- def common_prefix(seq):
- """
- Return the common prefix of a sequence of strings
- """
- return "".join(c for i, c in enumerate(seq[0])
- if all(s.startswith(c, i) for s in seq))
+ if split_line[-1]:
+ possibilities = self.IP.complete(split_line[-1])
+ else:
+ completed = line
+ possibilities = ['',[]]
if possibilities:
- completed = line[:-len(split_line[-1])]+common_prefix(possibilities)
+ def _commonPrefix(str1, str2):
+ '''
+ Reduction function. returns common prefix of two given strings.
+
+ @param str1: First string.
+ @type str1: string
+ @param str2: Second string
+ @type str2: string
+
+ @return: Common prefix to both strings.
+ @rtype: string
+ '''
+ for i in range(len(str1)):
+ if not str2.startswith(str1[:i+1]):
+ return str1[:i]
+ return str1
+
+ if possibilities[1]:
+ common_prefix = reduce(_commonPrefix, possibilities[1]) or line[-1]
+ completed = line[:-len(split_line[-1])]+common_prefix
+ else:
+ completed = line
else:
completed = line
- return completed, possibilities
+ return completed, possibilities[1]
def shell(self, cmd,verbose=0,debug=0,header=''):
@@ -332,7 +389,7 @@ class ConsoleView(gtk.TextView):
for tag in ansi_tags:
i = segments.index(tag)
self.text_buffer.insert_with_tags_by_name(self.text_buffer.get_end_iter(),
- segments[i+1], tag)
+ segments[i+1], str(tag))
segments.pop(i)
if not editable:
self.text_buffer.apply_tag_by_name('notouch',
@@ -472,6 +529,7 @@ class IPythonView(ConsoleView, IterableIPShell):
input_func=self.raw_input)
# self.connect('key_press_event', self.keyPress)
self.execute()
+ self.prompt = self.generatePrompt(False)
self.cout.truncate(0)
self.showPrompt(self.prompt)
self.interrupt = False
diff --git a/src/message_control.py b/src/message_control.py
index be94ab3dd..e7a32fc09 100644
--- a/src/message_control.py
+++ b/src/message_control.py
@@ -5,7 +5,7 @@
## Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
## Travis Shirk <travis AT pobox.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
## Stephan Erb <steve-e AT h3c.de>
## Copyright (C) 2007-2008 Brendan Taylor <whateley AT gmail.com>
diff --git a/src/message_textview.py b/src/message_textview.py
index 70cf3afea..6bc4a4c7d 100644
--- a/src/message_textview.py
+++ b/src/message_textview.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/message_textview.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2008-2009 Julien Pivotto <roidelapluie AT gmail.com>
diff --git a/src/message_window.py b/src/message_window.py
index eeae4bbcd..57d4cc5bd 100644
--- a/src/message_window.py
+++ b/src/message_window.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/message_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2008 Travis Shirk <travis AT pobox.com>
## Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Geobert Quach <geobert AT gmail.com>
@@ -307,7 +307,6 @@ class MessageWindow(object):
# NOTE: we do not call set_control_active(True) since we don't know
# whether the tab is the active one.
self.show_title()
- gobject.idle_add(control.msg_textview.grab_focus)
def on_tab_eventbox_button_press_event(self, widget, event, child):
if event.button == 3: # right click
diff --git a/src/music_track_listener.py b/src/music_track_listener.py
index 4d0df3bf8..bb2427c4a 100644
--- a/src/music_track_listener.py
+++ b/src/music_track_listener.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Gustavo Carneiro <gjcarneiro AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Jean-Marie Traissard <jim AT lapin.org>
## Jonathan Schleifer <js-gajim AT webkeks.org>
## Stephan Erb <steve-e AT h3c.de>
diff --git a/src/negotiation.py b/src/negotiation.py
index 869e2fb8b..d6dd8b7c3 100644
--- a/src/negotiation.py
+++ b/src/negotiation.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/negotiation.py
##
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007-2008 Brendan Taylor <whateley AT gmail.com>
##
## This file is part of Gajim.
diff --git a/src/network_manager_listener.py b/src/network_manager_listener.py
index 303c1488b..ccb44ee83 100644
--- a/src/network_manager_listener.py
+++ b/src/network_manager_listener.py
@@ -4,7 +4,7 @@
## Copyright (C) 2006 Jeffrey C. Ollie <jeff AT ocjtech.us>
## Nikos Kouremenos <kourem AT gmail.com>
## Stefan Bethge <stefan AT lanpartei.de>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/notify.py b/src/notify.py
index 1f6eada51..b214caf8b 100644
--- a/src/notify.py
+++ b/src/notify.py
@@ -4,7 +4,7 @@
## Copyright (C) 2005 Sebastian Estienne
## Copyright (C) 2005-2006 Andrew Sayman <lorien420 AT myrealbox.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Travis Shirk <travis AT pobox.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Julien Pivotto <roidelapluie AT gmail.com>
@@ -73,7 +73,7 @@ def get_show_in_systray(event, account, contact, type_=None):
return gajim.config.get('trayicon_notification_on_events')
def popup(event_type, jid, account, msg_type='', path_to_image=None, title=None,
-text=None):
+text=None, timeout=-1):
"""
Notify a user of an event. It first tries to a valid implementation of
the Desktop Notification Specification. If that fails, then we fall back to
@@ -83,11 +83,14 @@ text=None):
if not path_to_image:
path_to_image = gtkgui_helpers.get_icon_path('gajim-chat_msg_recv', 48)
+ if timeout < 0:
+ timeout = gajim.config.get('notification_timeout')
+
# Try to show our popup via D-Bus and notification daemon
if gajim.config.get('use_notif_daemon') and dbus_support.supported:
try:
DesktopNotification(event_type, jid, account, msg_type,
- path_to_image, title, gobject.markup_escape_text(text))
+ path_to_image, title, gobject.markup_escape_text(text), timeout)
return # sucessfully did D-Bus Notification procedure!
except dbus.DBusException, e:
# Connection to D-Bus failed
@@ -112,8 +115,7 @@ text=None):
_title = title
notification = pynotify.Notification(_title, _text)
- timeout = gajim.config.get('notification_timeout') * 1000 # make it ms
- notification.set_timeout(timeout)
+ notification.set_timeout(timeout*1000)
notification.set_category(event_type)
notification.set_data('event_type', event_type)
@@ -134,7 +136,7 @@ text=None):
# Either nothing succeeded or the user wants old-style notifications
instance = PopupNotificationWindow(event_type, jid, account, msg_type,
- path_to_image, title, text)
+ path_to_image, title, text, timeout)
gajim.interface.roster.popup_notification_windows.append(instance)
def on_pynotify_notification_clicked(notification, action):
@@ -157,7 +159,8 @@ class Notification:
if obj.do_popup:
popup(obj.popup_event_type, obj.jid, obj.conn.name,
obj.popup_msg_type, path_to_image=obj.popup_image,
- title=obj.popup_title, text=obj.popup_text)
+ title=obj.popup_title, text=obj.popup_text,
+ timeout=obj.popup_timeout)
if obj.do_sound:
if obj.sound_file:
@@ -235,11 +238,12 @@ class DesktopNotification:
"""
def __init__(self, event_type, jid, account, msg_type='',
- path_to_image=None, title=None, text=None):
+ path_to_image=None, title=None, text=None, timeout=-1):
self.path_to_image = os.path.abspath(path_to_image)
self.event_type = event_type
self.title = title
self.text = text
+ self.timeout = timeout
# 0.3.1 is the only version of notification daemon that has no way
# to determine which version it is. If no method exists, it means
# they're using that one.
@@ -302,7 +306,6 @@ class DesktopNotification:
self.get_version()
def attempt_notify(self):
- timeout = gajim.config.get('notification_timeout') # in seconds
ntype = self.ntype
if self.kde_notifications:
notification_text = ('<html><img src="%(image)s" align=left />' \
@@ -320,8 +323,8 @@ class DesktopNotification:
# actions (stringlist)
(dbus.String('default'), dbus.String(self.event_type),
dbus.String('ignore'), dbus.String(_('Ignore'))),
- [], # hints (not used in KDE yet)
- dbus.UInt32(timeout*1000), # timeout (int), in ms
+ [], # hints (not used in KDE yet)
+ dbus.UInt32(self.timeout*1000), # timeout (int), in ms
reply_handler=self.attach_by_id,
error_handler=self.notify_another_way)
return
@@ -345,7 +348,7 @@ class DesktopNotification:
actions,
[''],
True,
- dbus.UInt32(timeout),
+ dbus.UInt32(self.timeout),
reply_handler=self.attach_by_id,
error_handler=self.notify_another_way)
except AttributeError:
@@ -392,7 +395,7 @@ class DesktopNotification:
dbus.String(text),
actions,
hints,
- dbus.UInt32(timeout*1000),
+ dbus.UInt32(self.timeout*1000),
reply_handler=self.attach_by_id,
error_handler=self.notify_another_way)
except Exception, e:
@@ -407,7 +410,7 @@ class DesktopNotification:
dbus.String(self.text),
dbus.String(''),
hints,
- dbus.UInt32(timeout*1000),
+ dbus.UInt32(self.timeout*1000),
reply_handler=self.attach_by_id,
error_handler=self.notify_another_way)
except Exception, e:
@@ -422,7 +425,7 @@ class DesktopNotification:
str(e))
instance = PopupNotificationWindow(self.event_type, self.jid,
self.account, self.msg_type, self.path_to_image, self.title,
- self.text)
+ self.text, self.timeout)
gajim.interface.roster.popup_notification_windows.append(instance)
def on_action_invoked(self, id_, reason):
diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py
index 875c64356..71bf6c469 100644
--- a/src/plugins/pluginmanager.py
+++ b/src/plugins/pluginmanager.py
@@ -475,7 +475,10 @@ class PluginManager(object):
except TypeError, type_error:
# set plugin localization
- module_attr._ = _
+ try:
+ module_attr._ = _
+ except AttributeError, type_error:
+ pass
except ConfigParser.NoOptionError, type_error:
# all fields are required
log.debug('%s : %s' % (module_attr_name,
diff --git a/src/profile_window.py b/src/profile_window.py
index df4c6fd88..d5abb81a4 100644
--- a/src/profile_window.py
+++ b/src/profile_window.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/profile_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
##
diff --git a/src/remote_control.py b/src/remote_control.py
index 3f6a8b468..25160eb4f 100644
--- a/src/remote_control.py
+++ b/src/remote_control.py
@@ -4,7 +4,7 @@
## Copyright (C) 2005-2006 Andrew Sayman <lorien420 AT myrealbox.com>
## Dimitur Kirov <dkirov AT gmail.com>
## Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006-2007 Travis Shirk <travis AT pobox.com>
## Copyright (C) 2006-2008 Jean-Marie Traissard <jim AT lapin.org>
## Copyright (C) 2007 Lukas Petrovicky <lukas AT petrovicky.net>
@@ -723,7 +723,7 @@ class SignalObject(dbus.service.Object):
for node in path:
key += node + '#'
key += name
- prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value[1])
+ prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value)
gajim.config.foreach(get_prefs)
return prefs_dict
diff --git a/src/roster_window.py b/src/roster_window.py
index ce3af0a09..367ac3b52 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
## src/roster_window.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Alex Mauer <hawke AT hawkesnest.net>
## Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
@@ -726,17 +726,9 @@ class RosterWindow:
if not contact:
return
- if not force and (self.contact_has_pending_roster_events(contact,
- account) or gajim.interface.msg_win_mgr.get_control(jid, account)):
- # Contact has pending events or window
- #TODO: or single message windows? Bur they are not listed for the
- # moment
- key = (jid, account)
- if not key in self.contacts_to_be_removed:
- self.contacts_to_be_removed[key] = {'backend': backend}
- # if more pending event, don't remove from roster
- if self.contact_has_pending_roster_events(contact, account):
- return False
+ if not force and self.contact_has_pending_roster_events(contact,
+ account):
+ return False
iters = self._get_contact_iter(jid, account, contact, self.model)
if iters:
@@ -749,25 +741,36 @@ class RosterWindow:
else:
self._remove_entity(contact, account)
- if backend and (not gajim.interface.msg_win_mgr.get_control(jid,
- account) or force):
- # If a window is still opened: don't remove contact instance
- # Remove contact before redrawing, otherwise the old
- # numbers will still be show
- gajim.contacts.remove_jid(account, jid, remove_meta=True)
- if iters:
- rest_of_family = [data for data in family
- if account != data['account'] or jid != data['jid']]
- if rest_of_family:
- # reshow the rest of the family
- brothers = self._add_metacontact_family(rest_of_family,
- account)
- for c, acc in brothers:
- self.draw_completely(c.jid, acc)
+ old_grps = []
+ if backend:
+ if not gajim.interface.msg_win_mgr.get_control(jid, account) or \
+ force:
+ # If a window is still opened: don't remove contact instance
+ # Remove contact before redrawing, otherwise the old
+ # numbers will still be show
+ gajim.contacts.remove_jid(account, jid, remove_meta=True)
+ if iters:
+ rest_of_family = [data for data in family
+ if account != data['account'] or jid != data['jid']]
+ if rest_of_family:
+ # reshow the rest of the family
+ brothers = self._add_metacontact_family(rest_of_family,
+ account)
+ for c, acc in brothers:
+ self.draw_completely(c.jid, acc)
+ else:
+ for c in gajim.contacts.get_contacts(account, jid):
+ c.sub = 'none'
+ c.show = 'not in roster'
+ c.status = ''
+ old_grps = c.get_shown_groups()
+ c.groups = [_('Not in Roster')]
+ self._add_entity(c, account)
+ self.draw_contact(jid, account)
if iters:
# Draw all groups of the contact
- for group in contact.get_shown_groups():
+ for group in contact.get_shown_groups() + old_grps:
self.draw_group(group, account)
self.draw_account(account)
@@ -1160,29 +1163,6 @@ class RosterWindow:
name += i18n.paragraph_direction_mark(unicode(name))
name += u' (%d)' % nb_connected_contact
- # show (account_name) if there are 2 contact with same jid
- # in merged mode
- if self.regroup:
- add_acct = False
- # look through all contacts of all accounts
- for account_ in gajim.connections:
- # useless to add account name
- if account_ == account:
- continue
- for jid_ in gajim.contacts.get_jid_list(account_):
- contact_ = gajim.contacts.get_first_contact_from_jid(
- account_, jid_)
- if contact_.get_shown_name() == contact.get_shown_name() \
- and (jid_, account_) != (jid, account):
- add_acct = True
- break
- if add_acct:
- # No need to continue in other account
- # if we already found one
- break
- if add_acct:
- name += ' (' + account + ')'
-
# add status msg, if not empty, under contact name in
# the treeview
if contact.status and gajim.config.get('show_status_msgs_in_roster'):
@@ -1451,10 +1431,27 @@ class RosterWindow:
self.tree.set_cursor(path)
def _readjust_expand_collapse_state(self):
- for account in gajim.connections:
- self._adjust_account_expand_collapse_state(account)
- for group in gajim.groups[account]:
- self._adjust_group_expand_collapse_state(group, account)
+ def func(model, path, iter_):
+ type_ = model[iter_][C_TYPE]
+ acct = model[iter_][C_ACCOUNT].decode('utf-8')
+ jid = model[iter_][C_JID].decode('utf-8')
+ key = None
+ if type_ == 'account':
+ key = acct
+ elif type_ == 'group':
+ key = acct + jid
+ elif type_ == 'contact':
+ parent_iter = model.iter_parent(iter_)
+ ptype = model[parent_iter][C_TYPE]
+ if ptype == 'group':
+ grp = model[parent_iter][C_JID].decode('utf-8')
+ key = acct + grp + jid
+ if key:
+ if key in self.collapsed_rows:
+ self.tree.collapse_row(path)
+ else:
+ self.tree.expand_row(path, False)
+ self.modelfilter.foreach(func)
def _adjust_account_expand_collapse_state(self, account):
"""
@@ -1869,6 +1866,18 @@ class RosterWindow:
Only performed if removal was requested before but the contact still had
pending events
"""
+
+ msg_ids = []
+ for ev in event_list:
+ if ev.type_ != 'printed_chat':
+ continue
+ if len(ev.parameters) > 3 and ev.parameters[3]:
+ # There is a msg_id
+ msg_ids.append(ev.parameters[3])
+
+ if msg_ids:
+ gajim.logger.set_read_messages(msg_ids)
+
contact_list = ((event.jid.split('/')[0], event.account) for event in \
event_list)
@@ -2615,9 +2624,14 @@ class RosterWindow:
obj.session.control.print_conversation(obj.msgtxt, typ,
tim=obj.timestamp, encrypted=obj.encrypted, subject=obj.subject,
- xhtml=obj.xhtml, displaymarking=obj.displaymarking)
+ xhtml=obj.xhtml, displaymarking=obj.displaymarking,
+ msg_id=obj.msg_id)
if obj.msg_id:
- gajim.logger.set_read_messages([obj.msg_id])
+ pw = obj.session.control.parent_win
+ end = obj.session.control.was_at_the_end
+ if not pw or (pw.get_active_control() and obj.session.control \
+ == pw.get_active_control() and pw.is_active() and end):
+ gajim.logger.set_read_messages([obj.msg_id])
elif obj.popup:
contact = gajim.contacts.get_contact(obj.conn.name, obj.jid)
obj.session.control = gajim.interface.new_chat(contact,
@@ -2757,9 +2771,9 @@ class RosterWindow:
return
if model[titer][C_TYPE] in ('contact', 'self_contact'):
# we're on a contact entry in the roster
- account = model[titer][C_ACCOUNT].decode('utf-8')
- jid = model[titer][C_JID].decode('utf-8')
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
+ account = model[titer][C_ACCOUNT].decode('utf-8')
+ jid = model[titer][C_JID].decode('utf-8')
self.tooltip.id = row
contacts = gajim.contacts.get_contacts(account, jid)
connected_contacts = []
@@ -2771,76 +2785,79 @@ class RosterWindow:
connected_contacts = contacts
self.tooltip.account = account
self.tooltip.timeout = gobject.timeout_add(500,
- self.show_tooltip, connected_contacts)
+ self.show_tooltip, connected_contacts)
elif model[titer][C_TYPE] == 'groupchat':
- account = model[titer][C_ACCOUNT].decode('utf-8')
- jid = model[titer][C_JID].decode('utf-8')
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
+ account = model[titer][C_ACCOUNT].decode('utf-8')
+ jid = model[titer][C_JID].decode('utf-8')
self.tooltip.id = row
contact = gajim.contacts.get_contacts(account, jid)
self.tooltip.account = account
self.tooltip.timeout = gobject.timeout_add(500,
- self.show_tooltip, contact)
+ self.show_tooltip, contact)
elif model[titer][C_TYPE] == 'account':
# we're on an account entry in the roster
- account = model[titer][C_ACCOUNT].decode('utf-8')
- if account == 'all':
- if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
+ if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
+ account = model[titer][C_ACCOUNT].decode('utf-8')
+ if account == 'all':
self.tooltip.id = row
self.tooltip.account = None
self.tooltip.timeout = gobject.timeout_add(500,
- self.show_tooltip, [])
- return
- jid = gajim.get_jid_from_account(account)
- contacts = []
- connection = gajim.connections[account]
- # get our current contact info
-
- nbr_on, nbr_total = gajim.contacts.get_nb_online_total_contacts(
- accounts = [account])
- account_name = account
- if gajim.account_is_connected(account):
- account_name += ' (%s/%s)' % (repr(nbr_on), repr(nbr_total))
- contact = gajim.contacts.create_self_contact(jid=jid,
- account=account, name=account_name,
- show=connection.get_status(), status=connection.status,
- resource=connection.server_resource,
- priority=connection.priority)
- if gajim.connections[account].gpg:
- contact.keyID = gajim.config.get_per('accounts',
- connection.name, 'keyid')
- contacts.append(contact)
- # if we're online ...
- if connection.connection:
- roster = connection.connection.getRoster()
- # in threadless connection when no roster stanza is sent,
- # 'roster' is None
- if roster and roster.getItem(jid):
- resources = roster.getResources(jid)
- # ...get the contact info for our other online resources
- for resource in resources:
- # Check if we already have this resource
- found = False
- for contact_ in contacts:
- if contact_.resource == resource:
- found = True
- break
- if found:
- continue
- show = roster.getShow(jid+'/'+resource)
- if not show:
- show = 'online'
- contact = gajim.contacts.create_self_contact(
- jid=jid, account=account, show=show,
- status=roster.getStatus(jid + '/' + resource),
- priority=roster.getPriority(
- jid + '/' + resource), resource=resource)
- contacts.append(contact)
- if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
+ self.show_tooltip, [])
+ return
+ jid = gajim.get_jid_from_account(account)
+ contacts = []
+ connection = gajim.connections[account]
+ # get our current contact info
+
+ nbr_on, nbr_total = gajim.\
+ contacts.get_nb_online_total_contacts(
+ accounts=[account])
+ account_name = account
+ if gajim.account_is_connected(account):
+ account_name += ' (%s/%s)' % (repr(nbr_on),
+ repr(nbr_total))
+ contact = gajim.contacts.create_self_contact(jid=jid,
+ account=account, name=account_name,
+ show=connection.get_status(), status=connection.status,
+ resource=connection.server_resource,
+ priority=connection.priority)
+ if gajim.connections[account].gpg:
+ contact.keyID = gajim.config.get_per('accounts',
+ connection.name, 'keyid')
+ contacts.append(contact)
+ # if we're online ...
+ if connection.connection:
+ roster = connection.connection.getRoster()
+ # in threadless connection when no roster stanza is sent
+ # 'roster' is None
+ if roster and roster.getItem(jid):
+ resources = roster.getResources(jid)
+ # ...get the contact info for our other online
+ # resources
+ for resource in resources:
+ # Check if we already have this resource
+ found = False
+ for contact_ in contacts:
+ if contact_.resource == resource:
+ found = True
+ break
+ if found:
+ continue
+ show = roster.getShow(jid+'/'+resource)
+ if not show:
+ show = 'online'
+ contact = gajim.contacts.create_self_contact(
+ jid=jid, account=account, show=show,
+ status=roster.getStatus(
+ jid + '/' + resource),
+ priority=roster.getPriority(
+ jid + '/' + resource), resource=resource)
+ contacts.append(contact)
self.tooltip.id = row
self.tooltip.account = None
self.tooltip.timeout = gobject.timeout_add(500,
- self.show_tooltip, contacts)
+ self.show_tooltip, contacts)
def on_agent_logging(self, widget, jid, state, account):
"""
@@ -3401,10 +3418,37 @@ class RosterWindow:
elif type_ == 'agent':
self.on_remove_agent(widget, list_)
- elif gtk.gdk.keyval_to_unicode(event.keyval): # if we got unicode symbol
+ elif not (event.state & (gtk.gdk.CONTROL_MASK | gtk.gdk.MOD1_MASK)) and\
+ gtk.gdk.keyval_to_unicode(event.keyval):
+ # if we got unicode symbol without ctrl / alt
num = gtk.gdk.keyval_to_unicode(event.keyval)
self.enable_rfilter(unichr(num))
+ elif event.state & gtk.gdk.CONTROL_MASK and event.state & gtk.gdk.SHIFT_MASK and event.keyval == gtk.keysyms.U:
+ self.enable_rfilter('')
+ self.rfilter_entry.emit('key_press_event', event)
+
+ elif event.keyval == gtk.keysyms.Left:
+ treeselection = self.tree.get_selection()
+ model, list_of_paths = treeselection.get_selected_rows()
+ if len(list_of_paths) != 1:
+ return
+ path = list_of_paths[0]
+ iter_ = model.get_iter(path)
+ if model.iter_has_child(iter_):
+ self.tree.collapse_row(path)
+ return True
+ elif event.keyval == gtk.keysyms.Right:
+ treeselection = self.tree.get_selection()
+ model, list_of_paths = treeselection.get_selected_rows()
+ if len(list_of_paths) != 1:
+ return
+ path = list_of_paths[0]
+ iter_ = model.get_iter(path)
+ if model.iter_has_child(iter_):
+ self.tree.expand_row(path, False)
+ return True
+
def on_roster_treeview_button_release_event(self, widget, event):
try:
path = self.tree.get_path_at_pos(int(event.x), int(event.y))[0]
@@ -4126,7 +4170,10 @@ class RosterWindow:
jid = model[titer][C_JID].decode('utf-8')
account = model[titer][C_ACCOUNT].decode('utf-8')
contact = gajim.contacts.get_contact(account, jid)
- for group in contact.groups:
+ groups = contact.groups
+ if not groups:
+ groups = [_('General')]
+ for group in groups:
if account + group + jid not in self.collapsed_rows:
self.collapsed_rows.append(account + group + jid)
family = gajim.contacts.get_metacontacts_family(account, jid)
@@ -4288,6 +4335,9 @@ class RosterWindow:
elif event.keyval in (gtk.keysyms.Up, gtk.keysyms.Down):
self.tree.grab_focus()
self.tree.emit('key_press_event', event)
+ elif event.keyval == gtk.keysyms.BackSpace:
+ if widget.get_text() == '':
+ self.disable_rfilter()
def enable_rfilter(self, search_string):
if self.rfilter_enabled:
@@ -4768,22 +4818,21 @@ class RosterWindow:
"""
Initialize opened and closed 'transport' iconset dict
"""
- if gajim.config.get('use_transports_iconsets'):
- folder = os.path.join(helpers.get_transport_path(transport),
- '16x16')
- pixo, pixc = gtkgui_helpers.load_icons_meta()
- self.transports_state_images['opened'][transport] = \
- gtkgui_helpers.load_iconset(folder, pixo, transport=True)
- self.transports_state_images['closed'][transport] = \
- gtkgui_helpers.load_iconset(folder, pixc, transport=True)
- folder = os.path.join(helpers.get_transport_path(transport),
- '32x32')
- self.transports_state_images['32'][transport] = \
- gtkgui_helpers.load_iconset(folder, transport=True)
- folder = os.path.join(helpers.get_transport_path(transport),
- '16x16')
- self.transports_state_images['16'][transport] = \
- gtkgui_helpers.load_iconset(folder, transport=True)
+ if not gajim.config.get('use_transports_iconsets'):
+ return
+
+ folder = os.path.join(helpers.get_transport_path(transport), '32x32')
+ self.transports_state_images['32'][transport] = \
+ gtkgui_helpers.load_iconset(folder, transport=True)
+ folder = os.path.join(helpers.get_transport_path(transport), '16x16')
+ self.transports_state_images['16'][transport] = \
+ gtkgui_helpers.load_iconset(folder, transport=True)
+
+ pixo, pixc = gtkgui_helpers.load_icons_meta()
+ self.transports_state_images['opened'][transport] = \
+ gtkgui_helpers.load_iconset(folder, pixo, transport=True)
+ self.transports_state_images['closed'][transport] = \
+ gtkgui_helpers.load_iconset(folder, pixc, transport=True)
def update_jabber_state_images(self):
# Update the roster
diff --git a/src/search_window.py b/src/search_window.py
index 1bc2c8a46..2a0b41ad9 100644
--- a/src/search_window.py
+++ b/src/search_window.py
@@ -2,7 +2,7 @@
## src/search_window.py
##
## Copyright (C) 2007 Stephan Erb <steve-e AT h3c.de>
-## Copyright (C) 2007-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2007-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/session.py b/src/session.py
index b41cc9e24..efad61884 100644
--- a/src/session.py
+++ b/src/session.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/session.py
##
-## Copyright (C) 2008-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2008-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2008 Brendan Taylor <whateley AT gmail.com>
## Jonathan Schleifer <js-gajim AT webkeks.org>
## Stephan Erb <steve-e AT h3c.de>
@@ -52,8 +52,6 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
def detach_from_control(self):
if self.control:
self.control.set_session(None)
- gajim.ged.remove_event_handler('decrypted-message-received',
- ged.GUI1, self._nec_decrypted_message_received)
def acknowledge_termination(self):
self.detach_from_control()
@@ -96,7 +94,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
msg_to_log, tim=obj.timestamp, subject=obj.subject)
except exceptions.PysqliteOperationalError, e:
gajim.nec.push_incoming_event(InformationEvent(None,
- conn=self.conn, level='error', pri_txt=_('Disk WriteError'),
+ conn=self.conn, level='error', pri_txt=_('Disk Write Error'),
sec_txt=str(e)))
except exceptions.DatabaseMalformed:
pritext = _('Database Error')
diff --git a/src/statusicon.py b/src/statusicon.py
index f580f4238..a8a396228 100644
--- a/src/statusicon.py
+++ b/src/statusicon.py
@@ -3,7 +3,7 @@
##
## Copyright (C) 2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
-## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2007 Lukas Petrovicky <lukas AT petrovicky.net>
## Julien Pivotto <roidelapluie AT gmail.com>
## Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
diff --git a/src/tooltips.py b/src/tooltips.py
index f5ae2511a..db5064ad3 100644
--- a/src/tooltips.py
+++ b/src/tooltips.py
@@ -5,7 +5,7 @@
## Stéphan Kochen <stephan AT kochen.nl>
## Copyright (C) 2005-2006 Dimitur Kirov <dkirov AT gmail.com>
## Copyright (C) 2005-2007 Nikos Kouremenos <kourem AT gmail.com>
-## Copyright (C) 2005-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2005-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2006 Travis Shirk <travis AT pobox.com>
## Stefan Bethge <stefan AT lanpartei.de>
## Copyright (C) 2006-2007 Jean-Marie Traissard <jim AT lapin.org>
@@ -498,6 +498,11 @@ class RosterTooltip(NotificationAreaTooltip):
name_markup = u'<span weight="bold">' + \
gobject.markup_escape_text(prim_contact.get_shown_name())\
+ '</span>'
+ if gajim.config.get('mergeaccounts'):
+ name_markup += u" <span foreground='#888A85'>(" + \
+ gobject.markup_escape_text(prim_contact.account.name) \
+ + ')</span>'
+
if self.account and helpers.jid_is_blocked(self.account,
prim_contact.jid):
name_markup += _(' [blocked]')
diff --git a/src/upower_listener.py b/src/upower_listener.py
index f8d6c79de..e5b489d57 100644
--- a/src/upower_listener.py
+++ b/src/upower_listener.py
@@ -1,6 +1,6 @@
## src/upower_listener.py
##
-## Copyright (C) 2006-2011 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2006-2012 Yann Leboulanger <asterix AT lagaule.org>
##
## This file is part of Gajim.
##
diff --git a/src/vcard.py b/src/vcard.py
index 21de59248..27c5dce42 100644
--- a/src/vcard.py
+++ b/src/vcard.py
@@ -1,7 +1,7 @@
# -*- coding:utf-8 -*-
## src/vcard.py
##
-## Copyright (C) 2003-2010 Yann Leboulanger <asterix AT lagaule.org>
+## Copyright (C) 2003-2012 Yann Leboulanger <asterix AT lagaule.org>
## Copyright (C) 2005 Vincent Hanquez <tab AT snarc.org>
## Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
## Copyright (C) 2006 Junglecow J <junglecow AT gmail.com>
@@ -242,7 +242,7 @@ class VcardWindow:
return
if obj.resource:
# It's a muc occupant vcard
- if obj.fjid != self.real_jid:
+ if obj.fjid != self.contact.jid:
return
else:
if obj.jid != self.contact.jid:
@@ -257,14 +257,18 @@ class VcardWindow:
self.update_progressbar_timeout_id = None
def set_last_status_time(self, obj):
+ if obj.conn.name != self.account:
+ return
if obj.fjid != self.real_jid:
return
self.fill_status_label()
def set_os_info(self, obj):
+ if obj.conn.name != self.account:
+ return
if self.xml.get_object('information_notebook').get_n_pages() < 5:
return
- if obj.fjid != self.real_jid:
+ if obj.fjid != self.contact.jid and obj.fjid != self.real_jid:
return
i = 0
client = ''
@@ -291,9 +295,11 @@ class VcardWindow:
self.test_remove_progressbar()
def set_entity_time(self, obj):
+ if obj.conn.name != self.account:
+ return
if self.xml.get_object('information_notebook').get_n_pages() < 5:
return
- if obj.fjid != self.real_jid:
+ if obj.fjid != self.contact.jid and obj.fjid != self.real_jid:
return
i = 0
time_s = ''