Merge branch 'translations' into 'master'
Update strings for better english. Thanks to Allan Nordhøy for the suggestions See merge request !51
This commit is contained in:
commit
a7c833f777
|
@ -57,13 +57,13 @@ Sets value of 'key' to 'value'.
|
||||||
Writes the current state of Gajim preferences to the .config file
|
Writes the current state of Gajim preferences to the .config file
|
||||||
.Ss remove_contact Ao jid Ac Bq account
|
.Ss remove_contact Ao jid Ac Bq account
|
||||||
Removes contact from roster
|
Removes contact from roster
|
||||||
.Ss send_chat_message Ao jid Ac Ao message Ac Bo pgp key Bc Bq account
|
.Ss send_chat_message Ao jid Ac Ao message Ac Bo PGP key Bc Bq account
|
||||||
Sends new chat message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''.
|
Sends new chat message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''.
|
||||||
.Ss send_file Ao file Ac Ao jid Ac Bq account
|
.Ss send_file Ao file Ac Ao jid Ac Bq account
|
||||||
Sends file to a contact
|
Sends file to a contact
|
||||||
.Ss send_groupchat_message Ao room_jid Ac Ao message Ac Bq account
|
.Ss send_groupchat_message Ao room_jid Ac Ao message Ac Bq account
|
||||||
Sends new message to a groupchat you've joined.
|
Sends new message to a groupchat you've joined.
|
||||||
.Ss send_single_message Ao jid subject Ac Ao message Ac Bo pgp key Bc Bq account
|
.Ss send_single_message Ao jid subject Ac Ao message Ac Bo PGP key Bc Bq account
|
||||||
Sends new single message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''.
|
Sends new single message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''.
|
||||||
.Ss send_xml Ao xml Ac Bq account
|
.Ss send_xml Ao xml Ac Bq account
|
||||||
Sends custom XML
|
Sends custom XML
|
||||||
|
|
|
@ -3,7 +3,7 @@ Categories=Network;InstantMessaging;GTK;GNOME;
|
||||||
_Name=Gajim
|
_Name=Gajim
|
||||||
_GenericName=Jabber IM Client
|
_GenericName=Jabber IM Client
|
||||||
_Comment=A GTK+ Jabber client
|
_Comment=A GTK+ Jabber client
|
||||||
_Keywords=chat;messaging;im;jabber;xmpp;bonjour;voip;
|
_Keywords=chat;messaging;im;xmpp;bonjour;voip;
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Exec=gajim
|
Exec=gajim
|
||||||
Icon=gajim
|
Icon=gajim
|
||||||
|
|
|
@ -621,7 +621,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="carbons_checkbutton1">
|
<object class="GtkCheckButton" id="carbons_checkbutton1">
|
||||||
<property name="label" translatable="yes">Receive conversations from other resources (If server supports it)</property>
|
<property name="label" translatable="yes">Receive conversations from other resources (provided the server has support for it)</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Searching only in the selected day </property>
|
<property name="tooltip_text" translatable="yes">Only searching within selected day</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="xalign">0.5</property>
|
<property name="xalign">0.5</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
|
|
|
@ -480,7 +480,7 @@
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="positive_184_ack_checkbutton">
|
<object class="GtkCheckButton" id="positive_184_ack_checkbutton">
|
||||||
<property name="label" translatable="yes">Show icon when your messages are received</property>
|
<property name="label" translatable="yes">Notify by icon when your messages are received</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
@ -2745,7 +2745,7 @@ to discover one from server.</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">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 messages will not be logged.</property>
|
<property name="tooltip_text" translatable="yes">If checked, Gajim will keep logs for encrypted messages. Please note that when using End-to-End encryption the remote party has to agree on logging, else the messages will not be logged.</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
<!-- Generated with glade 3.18.3 -->
|
<!-- Generated with glade 3.18.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
<requires lib="gtk+" version="3.12"/>
|
<requires lib="gtk+" version="3.12"/>
|
||||||
<object class="GtkTextBuffer" id="textbuffer1">
|
<object class="GtkTextBuffer" id="textbuffer1"/>
|
||||||
<property name="text" translatable="yes">Message Body <currently unused, so it's hidden by default></property>
|
|
||||||
</object>
|
|
||||||
<object class="GtkWindow" id="roster_item_exchange_window">
|
<object class="GtkWindow" id="roster_item_exchange_window">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="title" translatable="yes">Roster Item Exchange</property>
|
<property name="title" translatable="yes">Roster Item Exchange</property>
|
||||||
|
|
|
@ -294,14 +294,14 @@ if dbus_support.supported:
|
||||||
@dbus.service.method(INTERFACE, in_signature='ssss', out_signature='b')
|
@dbus.service.method(INTERFACE, in_signature='ssss', out_signature='b')
|
||||||
def send_chat_message(self, jid, message, keyID, account):
|
def send_chat_message(self, jid, message, keyID, account):
|
||||||
'''Send chat 'message' to 'jid', using account (optional) 'account'.
|
'''Send chat 'message' to 'jid', using account (optional) 'account'.
|
||||||
if keyID is specified, encrypt the message with the pgp key '''
|
if keyID is specified, encrypt the message with the PGP key '''
|
||||||
jid = self._get_real_jid(jid, account)
|
jid = self._get_real_jid(jid, account)
|
||||||
return self._send_message(jid, message, keyID, account)
|
return self._send_message(jid, message, keyID, account)
|
||||||
|
|
||||||
@dbus.service.method(INTERFACE, in_signature='sssss', out_signature='b')
|
@dbus.service.method(INTERFACE, in_signature='sssss', out_signature='b')
|
||||||
def send_single_message(self, jid, subject, message, keyID, account):
|
def send_single_message(self, jid, subject, message, keyID, account):
|
||||||
'''Send single 'message' to 'jid', using account (optional) 'account'.
|
'''Send single 'message' to 'jid', using account (optional) 'account'.
|
||||||
if keyID is specified, encrypt the message with the pgp key '''
|
if keyID is specified, encrypt the message with the PGP key '''
|
||||||
jid = self._get_real_jid(jid, account)
|
jid = self._get_real_jid(jid, account)
|
||||||
return self._send_message(jid, message, keyID, account, type, subject)
|
return self._send_message(jid, message, keyID, account, type, subject)
|
||||||
|
|
||||||
|
@ -626,7 +626,7 @@ if dbus_support.supported:
|
||||||
elif len(prim_contact.keyID) == 16:
|
elif len(prim_contact.keyID) == 16:
|
||||||
keyID = prim_contact.keyID[8:]
|
keyID = prim_contact.keyID[8:]
|
||||||
if keyID:
|
if keyID:
|
||||||
contact_dict['openpgp'] = keyID
|
contact_dict['openPGP'] = keyID
|
||||||
contact_dict['resources'] = dbus.Array([], signature='(sis)')
|
contact_dict['resources'] = dbus.Array([], signature='(sis)')
|
||||||
for contact in contacts:
|
for contact in contacts:
|
||||||
resource_props = dbus.Struct((DBUS_STRING(contact.resource),
|
resource_props = dbus.Struct((DBUS_STRING(contact.resource),
|
||||||
|
|
|
@ -56,7 +56,7 @@ class GajimApplication(Gtk.Application):
|
||||||
'history db and plugins)'))
|
'history db and plugins)'))
|
||||||
self.add_main_option('verbose', ord('v'), GLib.OptionFlags.NONE,
|
self.add_main_option('verbose', ord('v'), GLib.OptionFlags.NONE,
|
||||||
GLib.OptionArg.NONE,
|
GLib.OptionArg.NONE,
|
||||||
_('Print xml stanzas and other debug '
|
_('Print XML stanzas and other debug '
|
||||||
'information'))
|
'information'))
|
||||||
self.add_main_option('windev', ord('w'), GLib.OptionFlags.NONE,
|
self.add_main_option('windev', ord('w'), GLib.OptionFlags.NONE,
|
||||||
GLib.OptionArg.NONE,
|
GLib.OptionArg.NONE,
|
||||||
|
|
|
@ -366,8 +366,8 @@ class ChatControl(ChatControlBase):
|
||||||
else:
|
else:
|
||||||
self._formattings_button.set_sensitive(False)
|
self._formattings_button.set_sensitive(False)
|
||||||
if self.contact.supports(NS_XHTML_IM):
|
if self.contact.supports(NS_XHTML_IM):
|
||||||
self._formattings_button.set_tooltip_text(_('Formattings are '
|
self._formattings_button.set_tooltip_text(_('Formatting is not '
|
||||||
'not available when GPG is active'))
|
'available so long as GPG is active'))
|
||||||
else:
|
else:
|
||||||
self._formattings_button.set_tooltip_text(_('This contact does '
|
self._formattings_button.set_tooltip_text(_('This contact does '
|
||||||
'not support HTML'))
|
'not support HTML'))
|
||||||
|
|
|
@ -1004,7 +1004,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
|
||||||
if not contact or contact.sub not in ('both', 'to'):
|
if not contact or contact.sub not in ('both', 'to'):
|
||||||
prim_text = _('Really send file?')
|
prim_text = _('Really send file?')
|
||||||
sec_text = _('If you send a file to %s, he/she will know your '
|
sec_text = _('If you send a file to %s, he/she will know your '
|
||||||
'real Jabber ID.') % gc_contact.name
|
'real JID.') % gc_contact.name
|
||||||
dialog = dialogs.NonModalConfirmationDialog(prim_text,
|
dialog = dialogs.NonModalConfirmationDialog(prim_text,
|
||||||
sec_text, on_response_ok=(_on_ok, gc_contact))
|
sec_text, on_response_ok=(_on_ok, gc_contact))
|
||||||
dialog.popup()
|
dialog.popup()
|
||||||
|
|
|
@ -258,7 +258,7 @@ def adapt_arguments(command, arguments, args, opts):
|
||||||
for arg, (spec_key, spec_value) in zip(overlapped, spec_kwargs):
|
for arg, (spec_key, spec_value) in zip(overlapped, spec_kwargs):
|
||||||
opts.append((spec_key, arg))
|
opts.append((spec_key, arg))
|
||||||
else:
|
else:
|
||||||
raise CommandError(_("Excessive arguments"), command)
|
raise CommandError(_("Too many arguments"), command)
|
||||||
|
|
||||||
# Detect every switch and ensure it will not receive any arguments.
|
# Detect every switch and ensure it will not receive any arguments.
|
||||||
# Normally this does not happen unless overlapping is enabled.
|
# Normally this does not happen unless overlapping is enabled.
|
||||||
|
|
|
@ -177,10 +177,10 @@ class Config:
|
||||||
'notify_on_new_gmail_email_command': [ opt_str, '', _('Specify the command to run when new mail arrives, e.g.: /usr/bin/getmail -q') ],
|
'notify_on_new_gmail_email_command': [ opt_str, '', _('Specify the command to run when new mail arrives, e.g.: /usr/bin/getmail -q') ],
|
||||||
'use_gpg_agent': [ opt_bool, False ],
|
'use_gpg_agent': [ opt_bool, False ],
|
||||||
'change_roster_title': [ opt_bool, True, _('Add * and [n] in roster title?')],
|
'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_lines': [opt_int, 4, _('Amount of previous messages to include when reopening a chat')],
|
||||||
'restore_timeout': [opt_int, 60, _('How many minutes should last lines from previous conversation last.')],
|
'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 from 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 entering a groupchat. -1 means no limit')],
|
'muc_restore_timeout': [opt_int, 60, _('Minutes of backlog to request when 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_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?')],
|
'muc_autorejoin_on_kick': [opt_bool, False, _('Should autorejoin be activated when we are being kicked from a conference?')],
|
||||||
'send_on_ctrl_enter': [opt_bool, False, _('Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour).')],
|
'send_on_ctrl_enter': [opt_bool, False, _('Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour).')],
|
||||||
|
@ -198,8 +198,8 @@ class Config:
|
||||||
'autodetect_browser_mailer': [opt_bool, True, '', True],
|
'autodetect_browser_mailer': [opt_bool, True, '', True],
|
||||||
'print_ichat_every_foo_minutes': [opt_int, 5, _('When not printing time for every message (print_time==sometimes), print it every x minutes.')],
|
'print_ichat_every_foo_minutes': [opt_int, 5, _('When not printing time for every message (print_time==sometimes), print it every x minutes.')],
|
||||||
'confirm_close_muc': [opt_bool, True, _('Ask before closing a group chat tab/window.')],
|
'confirm_close_muc': [opt_bool, True, _('Ask before closing a group chat tab/window.')],
|
||||||
'confirm_close_muc_rooms': [opt_str, '', _('Always ask before closing group chat tab/window in this space separated list of group chat JIDs.')],
|
'confirm_close_muc_rooms': [opt_str, '', _('Always ask for confirmation before closing groupchats with any of the JIDs on this space separated list.')],
|
||||||
'noconfirm_close_muc_rooms': [opt_str, '', _('Never ask before closing group chat tab/window in this space separated list of group chat JIDs.')],
|
'noconfirm_close_muc_rooms': [opt_str, '', _('Never ask for confirmation before closing groupchats with any of the JIDs on this space separated list.')],
|
||||||
'confirm_close_multiple_tabs': [opt_bool, True, _('Ask before closing tabbed chat window if there are controls that can lose data (chat, private chat, groupchat that will not be minimized)')],
|
'confirm_close_multiple_tabs': [opt_bool, True, _('Ask before closing tabbed chat window if there are controls that can lose data (chat, private chat, groupchat that will not be minimized)')],
|
||||||
'notify_on_file_complete': [opt_bool, True],
|
'notify_on_file_complete': [opt_bool, True],
|
||||||
'file_transfers_port': [opt_int, 28011],
|
'file_transfers_port': [opt_int, 28011],
|
||||||
|
@ -294,7 +294,7 @@ class Config:
|
||||||
'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to notification icon.')],
|
'attach_notifications_to_systray': [opt_bool, False, _('If True, notification windows from notification-daemon will be attached to notification icon.')],
|
||||||
'check_idle_every_foo_seconds': [opt_int, 2, _('Choose interval between 2 checks of idleness.')],
|
'check_idle_every_foo_seconds': [opt_int, 2, _('Choose interval between 2 checks of idleness.')],
|
||||||
'uri_schemes': [opt_str, 'aaa:// aaas:// acap:// cap:// cid: crid:// data: dav: dict:// dns: fax: file:/ ftp:// geo: go: gopher:// h323: http:// https:// iax: icap:// im: imap:// info: ipp:// iris: iris.beep: iris.xpc: iris.xpcs: iris.lwz: ldap:// mid: modem: msrp:// msrps:// mtqp:// mupdate:// news: nfs:// nntp:// opaquelocktoken: pop:// pres: prospero:// rtsp:// service: shttp:// sip: sips: sms: snmp:// soap.beep:// soap.beeps:// tag: tel: telnet:// tftp:// thismessage:/ tip:// tv: urn:// vemmi:// xmlrpc.beep:// xmlrpc.beeps:// z39.50r:// z39.50s:// about: apt: cvs:// daap:// ed2k:// feed: fish:// git:// iax2: irc:// ircs:// ldaps:// magnet: mms:// rsync:// ssh:// svn:// sftp:// smb:// webcal://', _('Valid uri schemes. Only schemes in this list will be accepted as "real" uri. (mailto and xmpp are handled separately)'), True],
|
'uri_schemes': [opt_str, 'aaa:// aaas:// acap:// cap:// cid: crid:// data: dav: dict:// dns: fax: file:/ ftp:// geo: go: gopher:// h323: http:// https:// iax: icap:// im: imap:// info: ipp:// iris: iris.beep: iris.xpc: iris.xpcs: iris.lwz: ldap:// mid: modem: msrp:// msrps:// mtqp:// mupdate:// news: nfs:// nntp:// opaquelocktoken: pop:// pres: prospero:// rtsp:// service: shttp:// sip: sips: sms: snmp:// soap.beep:// soap.beeps:// tag: tel: telnet:// tftp:// thismessage:/ tip:// tv: urn:// vemmi:// xmlrpc.beep:// xmlrpc.beeps:// z39.50r:// z39.50s:// about: apt: cvs:// daap:// ed2k:// feed: fish:// git:// iax2: irc:// ircs:// ldaps:// magnet: mms:// rsync:// ssh:// svn:// sftp:// smb:// webcal://', _('Valid uri schemes. Only schemes in this list will be accepted as "real" uri. (mailto and xmpp are handled separately)'), True],
|
||||||
'ask_offline_status_on_connection': [ opt_bool, False, _('Ask offline status message to all offline contacts when connection to an account is established. WARNING: This causes a lot of requests to be sent!') ],
|
'ask_offline_status_on_connection': [ opt_bool, False, _('Request offline status messages from all contacts upon connecting. WARNING: This causes a lot of requests to be sent!') ],
|
||||||
'shell_like_completion': [ opt_bool, False, _('If True, completion in groupchats will be like a shell auto-completion')],
|
'shell_like_completion': [ opt_bool, False, _('If True, completion in groupchats will be like a shell auto-completion')],
|
||||||
'show_self_contact': [opt_str, 'when_other_resource', _('When is self contact row displayed. Can be "always", "when_other_resource" or "never"'), True],
|
'show_self_contact': [opt_str, 'when_other_resource', _('When is self contact row displayed. Can be "always", "when_other_resource" or "never"'), True],
|
||||||
'audio_input_device': [opt_str, 'autoaudiosrc ! volume name=gajim_vol'],
|
'audio_input_device': [opt_str, 'autoaudiosrc ! volume name=gajim_vol'],
|
||||||
|
@ -306,8 +306,8 @@ class Config:
|
||||||
'video_see_self': [opt_bool, True, _('If True, You will also see your webcam')],
|
'video_see_self': [opt_bool, True, _('If True, You will also see your webcam')],
|
||||||
'audio_input_volume': [opt_int, 50],
|
'audio_input_volume': [opt_int, 50],
|
||||||
'audio_output_volume': [opt_int, 50],
|
'audio_output_volume': [opt_int, 50],
|
||||||
'use_stun_server': [opt_bool, False, _('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.')],
|
'use_stun_server': [opt_bool, False, _('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 XMPP server.')],
|
||||||
'stun_server': [opt_str, '', _('STUN server to use when using jingle')],
|
'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')],
|
'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')],
|
'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").')],
|
'ignore_incoming_attention': [opt_bool, False, _('If True, Gajim will ignore incoming attention requestd ("wizz").')],
|
||||||
|
@ -347,6 +347,7 @@ class Config:
|
||||||
'keyname': [ opt_str, '', '', True ],
|
'keyname': [ opt_str, '', '', True ],
|
||||||
'enable_esessions': [opt_bool, True, _('Enable ESessions encryption for this account.'), True],
|
'enable_esessions': [opt_bool, True, _('Enable ESessions encryption for this account.'), True],
|
||||||
'autonegotiate_esessions': [opt_bool, False, _('Should Gajim automatically start an encrypted session when possible?')],
|
'autonegotiate_esessions': [opt_bool, False, _('Should Gajim automatically start an encrypted session when possible?')],
|
||||||
|
#keep tls, ssl and plain lowercase
|
||||||
'connection_types': [ opt_str, 'tls', _('Ordered list (space separated) of connection type to try. Can contain tls, ssl or plain')],
|
'connection_types': [ opt_str, 'tls', _('Ordered list (space separated) of connection type to try. Can contain tls, ssl or plain')],
|
||||||
'tls_version': [ opt_str, '1.0', '' ],
|
'tls_version': [ opt_str, '1.0', '' ],
|
||||||
'cipher_list': [ opt_str, 'HIGH:!aNULL:RC4-SHA', '' ],
|
'cipher_list': [ opt_str, 'HIGH:!aNULL:RC4-SHA', '' ],
|
||||||
|
@ -363,7 +364,7 @@ class Config:
|
||||||
'custom_host': [ opt_str, '', '', True ],
|
'custom_host': [ opt_str, '', '', True ],
|
||||||
'sync_with_global_status': [ opt_bool, False, ],
|
'sync_with_global_status': [ opt_bool, False, ],
|
||||||
'no_log_for': [ opt_str, '', _('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.')],
|
'no_log_for': [ opt_str, '', _('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.')],
|
||||||
'sync_logs_with_server': [ opt_bool, True, _('Download logs stored on server on Gajim startup if server supports XEP-0136 or XEP-0313')],
|
'sync_logs_with_server': [ opt_bool, True, _('On startup, Gajim will download logs stored on server, provided it supports XEP-0136 or XEP-0313')],
|
||||||
'allow_no_log_for': [ opt_str, '', _('Space separated list of JIDs for which you accept to not log conversations if he does not want to.')],
|
'allow_no_log_for': [ opt_str, '', _('Space separated list of JIDs for which you accept to not log conversations if he does not want to.')],
|
||||||
'non_minimized_gc': [ opt_str, '' ],
|
'non_minimized_gc': [ opt_str, '' ],
|
||||||
'attached_gpg_keys': [ opt_str, '' ],
|
'attached_gpg_keys': [ opt_str, '' ],
|
||||||
|
@ -413,9 +414,9 @@ class Config:
|
||||||
'last_archiving_time': [opt_str, '1970-01-01T00:00:00Z', _('Last time we syncronized with logs from server.')],
|
'last_archiving_time': [opt_str, '1970-01-01T00:00:00Z', _('Last time we syncronized with logs from server.')],
|
||||||
'enable_message_carbons': [ opt_bool, True, _('If enabled and if server supports this feature, Gajim will receive messages sent and received by other resources.')],
|
'enable_message_carbons': [ opt_bool, True, _('If enabled and if server supports this feature, Gajim will receive messages sent and received by other resources.')],
|
||||||
'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.')],
|
'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_refresh_token': [ opt_str, '', _('Latest token for OAuth 2.0 authentication.')],
|
||||||
'oauth2_client_id': [ opt_str, '0000000044077801', _('client_id for Oauth2 authentication.')],
|
'oauth2_client_id': [ opt_str, '0000000044077801', _('client_id for OAuth 2.0 authentication.')],
|
||||||
'oauth2_redirect_url': [ opt_str, 'https%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 OAuth 2.0 authentication.')],
|
||||||
'opened_chat_controls': [opt_str, '', _('Space separated list of JIDs for which we want to re-open a chat window on next startup.')],
|
'opened_chat_controls': [opt_str, '', _('Space separated list of JIDs for which we want to re-open a chat window on next startup.')],
|
||||||
'last_mam_id': [opt_str, '', _('Last MAM id we are syncronized with')],
|
'last_mam_id': [opt_str, '', _('Last MAM id we are syncronized with')],
|
||||||
}, {}),
|
}, {}),
|
||||||
|
@ -486,7 +487,7 @@ class Config:
|
||||||
'rooms': ({
|
'rooms': ({
|
||||||
'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')],
|
'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')],
|
||||||
'muc_restore_lines': [opt_int, -2, _('How many lines to request from server when entering a groupchat. -1 means no limit, -2 means global value')],
|
'muc_restore_lines': [opt_int, -2, _('How many lines to request from server when entering a groupchat. -1 means no limit, -2 means global value')],
|
||||||
'muc_restore_timeout': [opt_int, -2, _('How many minutes back to request logs when entering a groupchat. -1 means no limit, -2 means global value')],
|
'muc_restore_timeout': [opt_int, -2, _('Minutes of backlog to request when entering a groupchat. -1 means no limit, -2 means global value')],
|
||||||
}, {}),
|
}, {}),
|
||||||
'plugins': ({
|
'plugins': ({
|
||||||
'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.')],
|
'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.')],
|
||||||
|
|
|
@ -276,8 +276,8 @@ class CommonConnection:
|
||||||
new_list.append(self.check_jid(j))
|
new_list.append(self.check_jid(j))
|
||||||
except helpers.InvalidFormat:
|
except helpers.InvalidFormat:
|
||||||
gajim.nec.push_incoming_event(InformationEvent(None,
|
gajim.nec.push_incoming_event(InformationEvent(None,
|
||||||
conn=self, level='error', pri_txt=_('Invalid Jabber '
|
conn=self, level='error', pri_txt=_('Invalid JID'),
|
||||||
'ID'), sec_txt=_('It is not possible to send a message '
|
sec_txt=_('It is not possible to send a message '
|
||||||
'to %s, this JID is not valid.') % j))
|
'to %s, this JID is not valid.') % j))
|
||||||
return
|
return
|
||||||
fjid = new_list
|
fjid = new_list
|
||||||
|
@ -286,7 +286,7 @@ class CommonConnection:
|
||||||
jid = self.check_jid(jid)
|
jid = self.check_jid(jid)
|
||||||
except helpers.InvalidFormat:
|
except helpers.InvalidFormat:
|
||||||
gajim.nec.push_incoming_event(InformationEvent(None, conn=self,
|
gajim.nec.push_incoming_event(InformationEvent(None, conn=self,
|
||||||
level='error', pri_txt=_('Invalid Jabber ID'), sec_txt=_(
|
level='error', pri_txt=_('Invalid JID'), sec_txt=_(
|
||||||
'It is not possible to send a message to %s, this JID is not '
|
'It is not possible to send a message to %s, this JID is not '
|
||||||
'valid.') % jid))
|
'valid.') % jid))
|
||||||
return
|
return
|
||||||
|
@ -1117,7 +1117,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
|
|
||||||
def connect(self, data=None):
|
def connect(self, data=None):
|
||||||
"""
|
"""
|
||||||
Start a connection to the Jabber server
|
Start a connection to the XMPP server
|
||||||
|
|
||||||
Returns connection, and connection type ('tls', 'ssl', 'plain', '') data
|
Returns connection, and connection type ('tls', 'ssl', 'plain', '') data
|
||||||
MUST contain hostname, usessl, proxy, use_custom_host, custom_host (if
|
MUST contain hostname, usessl, proxy, use_custom_host, custom_host (if
|
||||||
|
|
|
@ -1153,7 +1153,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
|
||||||
self.get_jid_resource()
|
self.get_jid_resource()
|
||||||
except helpers.InvalidFormat:
|
except helpers.InvalidFormat:
|
||||||
gajim.nec.push_incoming_event(InformationEvent(None, conn=self.conn,
|
gajim.nec.push_incoming_event(InformationEvent(None, conn=self.conn,
|
||||||
level='error', pri_txt=_('Invalid Jabber ID'),
|
level='error', pri_txt=_('Invalid JID'),
|
||||||
sec_txt=_('A message from a non-valid JID arrived, it has been '
|
sec_txt=_('A message from a non-valid JID arrived, it has been '
|
||||||
'ignored.')))
|
'ignored.')))
|
||||||
return
|
return
|
||||||
|
@ -1199,7 +1199,7 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
|
||||||
except helpers.InvalidFormat:
|
except helpers.InvalidFormat:
|
||||||
gajim.nec.push_incoming_event(InformationEvent(None,
|
gajim.nec.push_incoming_event(InformationEvent(None,
|
||||||
conn=self.conn, level='error',
|
conn=self.conn, level='error',
|
||||||
pri_txt=_('Invalid Jabber ID'),
|
pri_txt=_('Invalid JID'),
|
||||||
sec_txt=_('A message from a non-valid JID arrived, it '
|
sec_txt=_('A message from a non-valid JID arrived, it '
|
||||||
'has been ignored.')))
|
'has been ignored.')))
|
||||||
return
|
return
|
||||||
|
|
|
@ -383,7 +383,7 @@ def get_uf_chatstate(chatstate):
|
||||||
elif chatstate == 'inactive':
|
elif chatstate == 'inactive':
|
||||||
return _('is doing something else')
|
return _('is doing something else')
|
||||||
elif chatstate == 'composing':
|
elif chatstate == 'composing':
|
||||||
return _('is composing a message...')
|
return _('is composing a message…')
|
||||||
elif chatstate == 'paused':
|
elif chatstate == 'paused':
|
||||||
#paused means he or she was composing but has stopped for a while
|
#paused means he or she was composing but has stopped for a while
|
||||||
return _('paused composing a message')
|
return _('paused composing a message')
|
||||||
|
@ -498,7 +498,7 @@ def reduce_chars_newlines(text, max_chars = 0, max_lines = 0):
|
||||||
"""
|
"""
|
||||||
def _cut_if_long(string):
|
def _cut_if_long(string):
|
||||||
if len(string) > max_chars:
|
if len(string) > max_chars:
|
||||||
string = string[:max_chars - 3] + '...'
|
string = string[:max_chars - 3] + '…'
|
||||||
return string
|
return string
|
||||||
|
|
||||||
if max_lines == 0:
|
if max_lines == 0:
|
||||||
|
@ -511,7 +511,7 @@ def reduce_chars_newlines(text, max_chars = 0, max_lines = 0):
|
||||||
if lines:
|
if lines:
|
||||||
reduced_text = '\n'.join(lines)
|
reduced_text = '\n'.join(lines)
|
||||||
if reduced_text != text:
|
if reduced_text != text:
|
||||||
reduced_text += '...'
|
reduced_text += '…'
|
||||||
else:
|
else:
|
||||||
reduced_text = ''
|
reduced_text = ''
|
||||||
return reduced_text
|
return reduced_text
|
||||||
|
|
|
@ -1877,7 +1877,7 @@ class AccountsWindow:
|
||||||
jid = gajim.config.get_per('accounts', account, 'hostname')
|
jid = gajim.config.get_per('accounts', account, 'hostname')
|
||||||
else:
|
else:
|
||||||
self.xml.get_object('anonymous_checkbutton1').set_active(False)
|
self.xml.get_object('anonymous_checkbutton1').set_active(False)
|
||||||
self.xml.get_object('jid_label1').set_text(_('Jabber ID:'))
|
self.xml.get_object('jid_label1').set_text(_('JID:'))
|
||||||
savepass = gajim.config.get_per('accounts', account, 'savepass')
|
savepass = gajim.config.get_per('accounts', account, 'savepass')
|
||||||
save_password = self.xml.get_object('save_password_checkbutton1')
|
save_password = self.xml.get_object('save_password_checkbutton1')
|
||||||
save_password.set_sensitive(True)
|
save_password.set_sensitive(True)
|
||||||
|
@ -2173,7 +2173,7 @@ class AccountsWindow:
|
||||||
jid = helpers.parse_jid(jid)
|
jid = helpers.parse_jid(jid)
|
||||||
except helpers.InvalidFormat as s:
|
except helpers.InvalidFormat as s:
|
||||||
if not widget.is_focus():
|
if not widget.is_focus():
|
||||||
pritext = _('Invalid Jabber ID')
|
pritext = _('Invalid JID')
|
||||||
dialogs.ErrorDialog(pritext, str(s), transient_for=self.window)
|
dialogs.ErrorDialog(pritext, str(s), transient_for=self.window)
|
||||||
GLib.idle_add(lambda: widget.grab_focus())
|
GLib.idle_add(lambda: widget.grab_focus())
|
||||||
return True
|
return True
|
||||||
|
@ -2182,9 +2182,9 @@ class AccountsWindow:
|
||||||
if len(jid_splited) != 2 and not gajim.config.get_per('accounts',
|
if len(jid_splited) != 2 and not gajim.config.get_per('accounts',
|
||||||
self.current_account, 'anonymous_auth'):
|
self.current_account, 'anonymous_auth'):
|
||||||
if not widget.is_focus():
|
if not widget.is_focus():
|
||||||
pritext = _('Invalid Jabber ID')
|
pritext = _('Invalid JID')
|
||||||
sectext = \
|
sectext = \
|
||||||
_('A Jabber ID must be in the form "user@servername".')
|
_('A JID must be in the form "user@servername".')
|
||||||
dialogs.ErrorDialog(pritext, sectext, transient_for=self.window)
|
dialogs.ErrorDialog(pritext, sectext, transient_for=self.window)
|
||||||
GLib.idle_add(lambda: widget.grab_focus())
|
GLib.idle_add(lambda: widget.grab_focus())
|
||||||
return True
|
return True
|
||||||
|
@ -2250,7 +2250,7 @@ class AccountsWindow:
|
||||||
resource = helpers.parse_resource(resource)
|
resource = helpers.parse_resource(resource)
|
||||||
except helpers.InvalidFormat as s:
|
except helpers.InvalidFormat as s:
|
||||||
if not widget.is_focus():
|
if not widget.is_focus():
|
||||||
pritext = _('Invalid Jabber ID')
|
pritext = _('Invalid JID')
|
||||||
dialogs.ErrorDialog(pritext, str(s), transient_for=self.window)
|
dialogs.ErrorDialog(pritext, str(s), transient_for=self.window)
|
||||||
GLib.idle_add(lambda: widget.grab_focus())
|
GLib.idle_add(lambda: widget.grab_focus())
|
||||||
return True
|
return True
|
||||||
|
@ -2507,7 +2507,7 @@ class AccountsWindow:
|
||||||
return
|
return
|
||||||
|
|
||||||
if not gajim.connections[self.current_account].vcard_supported:
|
if not gajim.connections[self.current_account].vcard_supported:
|
||||||
dialogs.ErrorDialog(_("Your server doesn't support vCard"),
|
dialogs.ErrorDialog(_("Your server does not have vCard support"),
|
||||||
_("Your server can't save your personal information."),
|
_("Your server can't save your personal information."),
|
||||||
transient_for=self.window)
|
transient_for=self.window)
|
||||||
return
|
return
|
||||||
|
@ -2949,17 +2949,17 @@ class GroupchatConfigWindow:
|
||||||
|
|
||||||
def on_add_button_clicked(self, widget, affiliation):
|
def on_add_button_clicked(self, widget, affiliation):
|
||||||
if affiliation == 'outcast':
|
if affiliation == 'outcast':
|
||||||
title = _('Banning...')
|
title = _('Banning…')
|
||||||
#You can move '\n' before user@domain if that line is TOO BIG
|
#You can move '\n' before user@domain if that line is TOO BIG
|
||||||
prompt = _('<b>Whom do you want to ban?</b>\n\n')
|
prompt = _('<b>Whom do you want to ban?</b>\n\n')
|
||||||
elif affiliation == 'member':
|
elif affiliation == 'member':
|
||||||
title = _('Adding Member...')
|
title = _('Adding Member…')
|
||||||
prompt = _('<b>Whom do you want to make a member?</b>\n\n')
|
prompt = _('<b>Whom do you want to make a member?</b>\n\n')
|
||||||
elif affiliation == 'owner':
|
elif affiliation == 'owner':
|
||||||
title = _('Adding Owner...')
|
title = _('Adding Owner…')
|
||||||
prompt = _('<b>Whom do you want to make an owner?</b>\n\n')
|
prompt = _('<b>Whom do you want to make an owner?</b>\n\n')
|
||||||
else:
|
else:
|
||||||
title = _('Adding Administrator...')
|
title = _('Adding Administrator…')
|
||||||
prompt = _('<b>Whom do you want to make an administrator?</b>\n\n')
|
prompt = _('<b>Whom do you want to make an administrator?</b>\n\n')
|
||||||
prompt += _('Can be one of the following:\n'
|
prompt += _('Can be one of the following:\n'
|
||||||
'1. user@domain/resource (only that resource matches).\n'
|
'1. user@domain/resource (only that resource matches).\n'
|
||||||
|
@ -3719,7 +3719,7 @@ class AccountCreationWizardWindow:
|
||||||
try:
|
try:
|
||||||
jid = helpers.parse_jid(jid)
|
jid = helpers.parse_jid(jid)
|
||||||
except helpers.InvalidFormat as s:
|
except helpers.InvalidFormat as s:
|
||||||
pritext = _('Invalid Jabber ID')
|
pritext = _('Invalid JID')
|
||||||
dialogs.ErrorDialog(pritext, str(s))
|
dialogs.ErrorDialog(pritext, str(s))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -3820,7 +3820,7 @@ class AccountCreationWizardWindow:
|
||||||
self.is_form)
|
self.is_form)
|
||||||
self.xml.get_object('form_vbox').remove(self.data_form_widget)
|
self.xml.get_object('form_vbox').remove(self.data_form_widget)
|
||||||
self.xml.get_object('progressbar_label').set_markup(
|
self.xml.get_object('progressbar_label').set_markup(
|
||||||
'<b>Account is being created</b>\n\nPlease wait...')
|
'<b>Account is being created</b>\n\nPlease wait…')
|
||||||
self.notebook.set_current_page(5) # show creating page
|
self.notebook.set_current_page(5) # show creating page
|
||||||
self.back_button.hide()
|
self.back_button.hide()
|
||||||
self.forward_button.hide()
|
self.forward_button.hide()
|
||||||
|
@ -3899,8 +3899,8 @@ class AccountCreationWizardWindow:
|
||||||
'hostname': hostname, 'error': obj.ssl_msg})
|
'hostname': hostname, 'error': obj.ssl_msg})
|
||||||
if obj.errnum in (18, 27):
|
if obj.errnum in (18, 27):
|
||||||
text = _('Add this certificate to the list of trusted '
|
text = _('Add this certificate to the list of trusted '
|
||||||
'certificates.\nSHA1 fingerprint of the certificate:\n%s'
|
'certificates.\nSHA-1 fingerprint of the certificate:\n%s'
|
||||||
'\nSHA256 fingerprint of the certificate:\n%s') \
|
'\nSHA-256 fingerprint of the certificate:\n%s') \
|
||||||
% (obj.ssl_fingerprint_sha1, obj.ssl_fingerprint_sha256)
|
% (obj.ssl_fingerprint_sha1, obj.ssl_fingerprint_sha256)
|
||||||
self.xml.get_object('ssl_checkbutton').set_label(text)
|
self.xml.get_object('ssl_checkbutton').set_label(text)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1294,7 +1294,7 @@ class ConversationTextview(GObject.GObject):
|
||||||
index, insert_mark, old_txt = \
|
index, insert_mark, old_txt = \
|
||||||
self.correct_message(correct_id, kind, name)
|
self.correct_message(correct_id, kind, name)
|
||||||
self.corrected_text_list[msg_stanza_id] = \
|
self.corrected_text_list[msg_stanza_id] = \
|
||||||
'<b>Message was corrected. Last message was:</b>\n{}' \
|
'<b>Message corrected. Previous message:</b>\n{}' \
|
||||||
.format(GLib.markup_escape_text(old_txt))
|
.format(GLib.markup_escape_text(old_txt))
|
||||||
corrected = True
|
corrected = True
|
||||||
except TypeError:
|
except TypeError:
|
||||||
|
|
|
@ -639,12 +639,12 @@ class SingleForm(Gtk.Table, object):
|
||||||
try:
|
try:
|
||||||
newtext = helpers.parse_jid(newtext)
|
newtext = helpers.parse_jid(newtext)
|
||||||
except helpers.InvalidFormat as s:
|
except helpers.InvalidFormat as s:
|
||||||
dialogs.ErrorDialog(_('Invalid Jabber ID'), str(s))
|
dialogs.ErrorDialog(_('Invalid JID'), str(s))
|
||||||
return
|
return
|
||||||
if newtext in field.values:
|
if newtext in field.values:
|
||||||
dialogs.ErrorDialog(
|
dialogs.ErrorDialog(
|
||||||
_('Jabber ID already in list'),
|
_('JID already in list'),
|
||||||
_('The Jabber ID you entered is already in the list. Choose another one.'))
|
_('The JID you entered is already in the list. Choose another one.'))
|
||||||
GLib.idle_add(treeview.set_cursor, path)
|
GLib.idle_add(treeview.set_cursor, path)
|
||||||
return
|
return
|
||||||
model[path][0]=newtext
|
model[path][0]=newtext
|
||||||
|
|
|
@ -92,7 +92,7 @@ class EditGroupsDialog:
|
||||||
self.xml.get_object('nickname_label').set_markup(
|
self.xml.get_object('nickname_label').set_markup(
|
||||||
_('Contact name: <i>%s</i>') % contact.get_shown_name())
|
_('Contact name: <i>%s</i>') % contact.get_shown_name())
|
||||||
self.xml.get_object('jid_label').set_markup(
|
self.xml.get_object('jid_label').set_markup(
|
||||||
_('Jabber ID: <i>%s</i>') % contact.jid)
|
_('JID: <i>%s</i>') % contact.jid)
|
||||||
else:
|
else:
|
||||||
self.xml.get_object('nickname_label').set_no_show_all(True)
|
self.xml.get_object('nickname_label').set_no_show_all(True)
|
||||||
self.xml.get_object('nickname_label').hide()
|
self.xml.get_object('nickname_label').hide()
|
||||||
|
@ -851,7 +851,7 @@ class AddNewContactWindow:
|
||||||
Class for AddNewContactWindow
|
Class for AddNewContactWindow
|
||||||
"""
|
"""
|
||||||
|
|
||||||
uid_labels = {'jabber': _('Jabber ID:'),
|
uid_labels = {'jabber': _('JID:'),
|
||||||
'aim': _('AIM Address:'),
|
'aim': _('AIM Address:'),
|
||||||
'gadu-gadu': _('GG Number:'),
|
'gadu-gadu': _('GG Number:'),
|
||||||
'icq': _('ICQ Number:'),
|
'icq': _('ICQ Number:'),
|
||||||
|
@ -936,11 +936,11 @@ class AddNewContactWindow:
|
||||||
self.protocol_combobox.pack_start(cell, True)
|
self.protocol_combobox.pack_start(cell, True)
|
||||||
self.protocol_combobox.add_attribute(cell, 'text', 0)
|
self.protocol_combobox.add_attribute(cell, 'text', 0)
|
||||||
self.protocol_combobox.set_model(liststore)
|
self.protocol_combobox.set_model(liststore)
|
||||||
uf_type = {'jabber': 'Jabber', 'aim': 'AIM', 'gadu-gadu': 'Gadu Gadu',
|
uf_type = {'jabber': 'XMPP', 'aim': 'AIM', 'gadu-gadu': 'Gadu Gadu',
|
||||||
'icq': 'ICQ', 'msn': 'MSN', 'yahoo': 'Yahoo'}
|
'icq': 'ICQ', 'msn': 'MSN', 'yahoo': 'Yahoo'}
|
||||||
# Jabber as first
|
# Jabber as first
|
||||||
img = gajim.interface.jabber_state_images['16']['online']
|
img = gajim.interface.jabber_state_images['16']['online']
|
||||||
liststore.append(['Jabber', img.get_pixbuf(), 'jabber'])
|
liststore.append(['XMPP', img.get_pixbuf(), 'jabber'])
|
||||||
for type_ in self.agents:
|
for type_ in self.agents:
|
||||||
if type_ == 'jabber':
|
if type_ == 'jabber':
|
||||||
continue
|
continue
|
||||||
|
@ -1305,7 +1305,7 @@ class AboutDialog(Gtk.AboutDialog):
|
||||||
Gtk.get_minor_version(), Gtk.get_micro_version())
|
Gtk.get_minor_version(), Gtk.get_micro_version())
|
||||||
gobject_ver = self.tuple2str(GObject.pygobject_version)
|
gobject_ver = self.tuple2str(GObject.pygobject_version)
|
||||||
nbxmpp_ver = nbxmpp.__version__
|
nbxmpp_ver = nbxmpp.__version__
|
||||||
self.set_comments('%s\n%s %s\n%s %s\n%s %s' % (_('A GTK+ Jabber/XMPP client'),
|
self.set_comments('%s\n%s %s\n%s %s\n%s %s' % (_('A GTK+ XMPP client'),
|
||||||
_('GTK+ Version:'), gtk_ver, _('PyGobject Version:'), gobject_ver,
|
_('GTK+ Version:'), gtk_ver, _('PyGobject Version:'), gobject_ver,
|
||||||
_('python-nbxmpp Version:'), nbxmpp_ver))
|
_('python-nbxmpp Version:'), nbxmpp_ver))
|
||||||
self.set_website('https://gajim.org/')
|
self.set_website('https://gajim.org/')
|
||||||
|
@ -1875,10 +1875,9 @@ class PlainConnectionDialog(ConfirmationDialogDoubleCheck):
|
||||||
def __init__(self, account, on_ok, on_cancel):
|
def __init__(self, account, on_ok, on_cancel):
|
||||||
pritext = _('Insecure connection')
|
pritext = _('Insecure connection')
|
||||||
sectext = _('You are about to connect to the account %(account)s '
|
sectext = _('You are about to connect to the account %(account)s '
|
||||||
'(%(server)s) with an insecure connection. This means all your '
|
'(%(server)s) insecurely. This means conversations will not be '
|
||||||
'conversations will be exchanged unencrypted. This type of '
|
'encrypted, and is strongly discouraged.\nAre you sure you want '
|
||||||
'connection is really discouraged.\nAre you sure you want to do '
|
'to do that?') % {'account': account,
|
||||||
'that?') % {'account': account,
|
|
||||||
'server': gajim.get_hostname_from_account(account)}
|
'server': gajim.get_hostname_from_account(account)}
|
||||||
checktext1 = _('Yes, I really want to connect insecurely')
|
checktext1 = _('Yes, I really want to connect insecurely')
|
||||||
tooltip1 = _('Gajim will NOT connect unless you check this box')
|
tooltip1 = _('Gajim will NOT connect unless you check this box')
|
||||||
|
@ -2662,14 +2661,14 @@ class JoinGroupchatWindow:
|
||||||
return
|
return
|
||||||
user, server, resource = helpers.decompose_jid(room_jid)
|
user, server, resource = helpers.decompose_jid(room_jid)
|
||||||
if not user or not server or resource:
|
if not user or not server or resource:
|
||||||
ErrorDialog(_('Invalid group chat Jabber ID'),
|
ErrorDialog(_('Invalid group chat JID'),
|
||||||
_('Please enter the group chat Jabber ID as room@server.'))
|
_('Please enter the group chat JID as room@server.'))
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
room_jid = helpers.parse_jid(room_jid)
|
room_jid = helpers.parse_jid(room_jid)
|
||||||
except Exception:
|
except Exception:
|
||||||
ErrorDialog(_('Invalid group chat Jabber ID'),
|
ErrorDialog(_('Invalid group chat JID'),
|
||||||
_('The group chat Jabber ID contains invalid characters.'))
|
_('The group chat JID contains invalid characters.'))
|
||||||
return
|
return
|
||||||
|
|
||||||
if gajim.contacts.get_contact(self.account, room_jid) and \
|
if gajim.contacts.get_contact(self.account, room_jid) and \
|
||||||
|
@ -2851,9 +2850,10 @@ class NewChatDialog(InputDialog):
|
||||||
title = _('Start Chat with account %s') % account
|
title = _('Start Chat with account %s') % account
|
||||||
else:
|
else:
|
||||||
title = _('Start Chat')
|
title = _('Start Chat')
|
||||||
prompt_text = _('Fill in the nickname or the Jabber ID of the contact you would like\nto send a chat message to:')
|
prompt_text = _('Fill in the nickname or the JID of the contact you '
|
||||||
|
'would like\nto send a chat message to:')
|
||||||
InputDialog.__init__(self, title, prompt_text, is_modal=False)
|
InputDialog.__init__(self, title, prompt_text, is_modal=False)
|
||||||
self.input_entry.set_placeholder_text(_('Nickname / Jabber ID'))
|
self.input_entry.set_placeholder_text(_('Nickname / JID'))
|
||||||
|
|
||||||
self.completion_dict = {}
|
self.completion_dict = {}
|
||||||
liststore = gtkgui_helpers.get_completion_liststore(self.input_entry)
|
liststore = gtkgui_helpers.get_completion_liststore(self.input_entry)
|
||||||
|
@ -3299,7 +3299,7 @@ class SingleMessageWindow:
|
||||||
try:
|
try:
|
||||||
to_whom_jid = helpers.parse_jid(to_whom_jid)
|
to_whom_jid = helpers.parse_jid(to_whom_jid)
|
||||||
except helpers.InvalidFormat:
|
except helpers.InvalidFormat:
|
||||||
ErrorDialog(_('Invalid Jabber ID'),
|
ErrorDialog(_('Invalid JID'),
|
||||||
_('It is not possible to send a message to %s, this JID is not '
|
_('It is not possible to send a message to %s, this JID is not '
|
||||||
'valid.') % to_whom_jid)
|
'valid.') % to_whom_jid)
|
||||||
return True
|
return True
|
||||||
|
@ -3573,7 +3573,7 @@ class RosterItemExchangeWindow:
|
||||||
self.items_list_treeview.insert_column_with_attributes(-1, title,
|
self.items_list_treeview.insert_column_with_attributes(-1, title,
|
||||||
renderer1, active=0)
|
renderer1, active=0)
|
||||||
renderer2 = Gtk.CellRendererText()
|
renderer2 = Gtk.CellRendererText()
|
||||||
self.items_list_treeview.insert_column_with_attributes(-1, _('Jabber ID'),
|
self.items_list_treeview.insert_column_with_attributes(-1, _('JID'),
|
||||||
renderer2, text=1)
|
renderer2, text=1)
|
||||||
renderer3 = Gtk.CellRendererText()
|
renderer3 = Gtk.CellRendererText()
|
||||||
self.items_list_treeview.insert_column_with_attributes(-1, _('Name'),
|
self.items_list_treeview.insert_column_with_attributes(-1, _('Name'),
|
||||||
|
@ -4243,7 +4243,7 @@ class ItemArchiving313PreferencesWindow:
|
||||||
for widget in ('jid_entry', 'pref_cb'):
|
for widget in ('jid_entry', 'pref_cb'):
|
||||||
setattr(self, widget, self.xml.get_object(widget))
|
setattr(self, widget, self.xml.get_object(widget))
|
||||||
|
|
||||||
self.window.set_title(_('Add Jabber ID'))
|
self.window.set_title(_('Add JID'))
|
||||||
self.pref_cb.set_active(0)
|
self.pref_cb.set_active(0)
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
self.xml.connect_signals(self)
|
self.xml.connect_signals(self)
|
||||||
|
@ -5334,7 +5334,7 @@ class ESessionInfoWindow:
|
||||||
'<b><span size="x-large">%s</span></b>' % verification_status)
|
'<b><span size="x-large">%s</span></b>' % verification_status)
|
||||||
|
|
||||||
self.xml.get_object('dialog-action_area1').set_no_show_all(True)
|
self.xml.get_object('dialog-action_area1').set_no_show_all(True)
|
||||||
self.button_label.set_text(_('Verify again...'))
|
self.button_label.set_text(_('Verify again…'))
|
||||||
else:
|
else:
|
||||||
if self.session.control:
|
if self.session.control:
|
||||||
self.session.control._show_lock_image(True, 'E2E', True,
|
self.session.control._show_lock_image(True, 'E2E', True,
|
||||||
|
@ -5347,7 +5347,7 @@ class ESessionInfoWindow:
|
||||||
self.xml.get_object('verification_status_label').set_markup(
|
self.xml.get_object('verification_status_label').set_markup(
|
||||||
'<b><span size="x-large">%s</span></b>' % verification_status)
|
'<b><span size="x-large">%s</span></b>' % verification_status)
|
||||||
|
|
||||||
self.button_label.set_text(_('Verify...'))
|
self.button_label.set_text(_('Verify…'))
|
||||||
|
|
||||||
path = gtkgui_helpers.get_icon_path(security_image, 32)
|
path = gtkgui_helpers.get_icon_path(security_image, 32)
|
||||||
self.security_image.set_from_file(path)
|
self.security_image.set_from_file(path)
|
||||||
|
@ -5409,13 +5409,13 @@ class GPGInfoWindow:
|
||||||
if error:
|
if error:
|
||||||
verification_status = _('''Contact's identity NOT verified''')
|
verification_status = _('''Contact's identity NOT verified''')
|
||||||
info = _('OpenPGP key is assigned to this contact, but <b>you '
|
info = _('OpenPGP key is assigned to this contact, but <b>you '
|
||||||
'do not trust his key</b>, so message <b>cannot</b> be '
|
'do not trust their key</b>, so message <b>cannot</b> be '
|
||||||
'encrypted. Use your OpenPGP client to trust this key.')
|
'encrypted. Use your OpenPGP client to trust their key.')
|
||||||
image = 'security-low'
|
image = 'security-low'
|
||||||
else:
|
else:
|
||||||
verification_status = _('''Contact's identity verified''')
|
verification_status = _('''Contact's identity verified''')
|
||||||
info = _('OpenPGP Key is assigned to this contact, and you '
|
info = _('OpenPGP Key is assigned to this contact, and you '
|
||||||
'trust his key, so messages will be encrypted.')
|
'trust their key, so messages will be encrypted.')
|
||||||
image = 'security-high'
|
image = 'security-high'
|
||||||
|
|
||||||
status_label.set_markup('<b><span size="x-large">%s</span></b>' % \
|
status_label.set_markup('<b><span size="x-large">%s</span></b>' % \
|
||||||
|
@ -5609,7 +5609,7 @@ Issued on: %(io)s
|
||||||
Expires on: %(eo)s
|
Expires on: %(eo)s
|
||||||
|
|
||||||
<b>Fingerprint</b>
|
<b>Fingerprint</b>
|
||||||
SHA1 Fingerprint: %(sha1)s
|
SHA-1 Fingerprint: %(sha1)s
|
||||||
|
|
||||||
SHA256 Fingerprint: %(sha256)s
|
SHA256 Fingerprint: %(sha256)s
|
||||||
''') % {
|
''') % {
|
||||||
|
@ -5641,7 +5641,7 @@ class CheckFingerprintDialog(YesNoDialog):
|
||||||
checktext=checktext, on_response_yes=on_response_yes,
|
checktext=checktext, on_response_yes=on_response_yes,
|
||||||
on_response_no=on_response_no)
|
on_response_no=on_response_no)
|
||||||
self.set_title(_('SSL Certificate Verification for %s') % account)
|
self.set_title(_('SSL Certificate Verification for %s') % account)
|
||||||
b = Gtk.Button(label=_('View cert...'))
|
b = Gtk.Button(label=_('View cert…'))
|
||||||
b.connect('clicked', self.on_cert_clicked)
|
b.connect('clicked', self.on_cert_clicked)
|
||||||
b.show_all()
|
b.show_all()
|
||||||
area = self.get_action_area()
|
area = self.get_action_area()
|
||||||
|
@ -5658,7 +5658,7 @@ class SSLErrorDialog(ConfirmationDialogDoubleCheck):
|
||||||
ConfirmationDialogDoubleCheck.__init__(self, pritext, sectext,
|
ConfirmationDialogDoubleCheck.__init__(self, pritext, sectext,
|
||||||
checktext1, checktext2, on_response_ok=on_response_ok,
|
checktext1, checktext2, on_response_ok=on_response_ok,
|
||||||
on_response_cancel=on_response_cancel, is_modal=False)
|
on_response_cancel=on_response_cancel, is_modal=False)
|
||||||
b = Gtk.Button(_('View cert...'))
|
b = Gtk.Button(_('View cert…'))
|
||||||
b.connect('clicked', self.on_cert_clicked)
|
b.connect('clicked', self.on_cert_clicked)
|
||||||
b.show_all()
|
b.show_all()
|
||||||
area = self.get_action_area()
|
area = self.get_action_area()
|
||||||
|
|
|
@ -59,7 +59,7 @@ class FeaturesWindow:
|
||||||
_('Requires python-dbus.'),
|
_('Requires python-dbus.'),
|
||||||
_('Feature not available under Windows.')),
|
_('Feature not available under Windows.')),
|
||||||
_('OpenPGP message encryption'): (self.gpg_available,
|
_('OpenPGP message encryption'): (self.gpg_available,
|
||||||
_('Encrypting chat messages with OpenPGP keys.'),
|
_('Ability to encrypting chat messages with OpenPGP.'),
|
||||||
_('Requires gpg and python-gnupg (http://code.google.com/p/python-gnupg/).'),
|
_('Requires gpg and python-gnupg (http://code.google.com/p/python-gnupg/).'),
|
||||||
_('Requires gpg.exe in PATH.')),
|
_('Requires gpg.exe in PATH.')),
|
||||||
_('Network-manager'): (self.network_manager_available,
|
_('Network-manager'): (self.network_manager_available,
|
||||||
|
|
|
@ -280,8 +280,8 @@ class FileTransfersWindow:
|
||||||
else:
|
else:
|
||||||
file_name = file_props.name
|
file_name = file_props.name
|
||||||
dialogs.YesNoDialog(('File transfer error'),
|
dialogs.YesNoDialog(('File transfer error'),
|
||||||
_('The file %(file)s has been fully received, but it seems to be '
|
_('The file %(file)s has been received, but it seems to have '
|
||||||
'wrongly received.\nDo you want to reload it?') % \
|
'been damaged along the way.\nDo you want to download it again?') % \
|
||||||
{'file': file_name}, on_response_yes=(on_yes, jid, file_props,
|
{'file': file_name}, on_response_yes=(on_yes, jid, file_props,
|
||||||
account), type_=Gtk.MessageType.ERROR)
|
account), type_=Gtk.MessageType.ERROR)
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ class FileTransfersWindow:
|
||||||
gajim.config.set('last_send_dir', file_dir)
|
gajim.config.set('last_send_dir', file_dir)
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
dialog = dialogs.FileChooserDialog(_('Choose File to Send...'),
|
dialog = dialogs.FileChooserDialog(_('Choose File to Send…'),
|
||||||
Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL),
|
Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL),
|
||||||
Gtk.ResponseType.OK,
|
Gtk.ResponseType.OK,
|
||||||
True, # select multiple true as we can select many files to send
|
True, # select multiple true as we can select many files to send
|
||||||
|
@ -338,8 +338,8 @@ class FileTransfersWindow:
|
||||||
Start the real transfer(upload) of the file
|
Start the real transfer(upload) of the file
|
||||||
"""
|
"""
|
||||||
if gtkgui_helpers.file_is_locked(file_path):
|
if gtkgui_helpers.file_is_locked(file_path):
|
||||||
pritext = _('Gajim cannot access this file')
|
pritext = _('Gajim can not read this file')
|
||||||
sextext = _('This file is being used by another process.')
|
sextext = _('Another process is using this file.')
|
||||||
dialogs.ErrorDialog(pritext, sextext)
|
dialogs.ErrorDialog(pritext, sextext)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -424,7 +424,7 @@ class FileTransfersWindow:
|
||||||
gajim.connections[account].send_file_rejection(file_props)
|
gajim.connections[account].send_file_rejection(file_props)
|
||||||
|
|
||||||
dialog2 = dialogs.FileChooserDialog(
|
dialog2 = dialogs.FileChooserDialog(
|
||||||
title_text=_('Save File as...'),
|
title_text=_('Save File as…'),
|
||||||
action=Gtk.FileChooserAction.SAVE,
|
action=Gtk.FileChooserAction.SAVE,
|
||||||
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||||
Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
|
Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
|
||||||
|
@ -494,7 +494,7 @@ class FileTransfersWindow:
|
||||||
self.model.set(iter_, C_PULSE, GLib.MAXINT32)
|
self.model.set(iter_, C_PULSE, GLib.MAXINT32)
|
||||||
elif status == 'computing':
|
elif status == 'computing':
|
||||||
self.model.set(iter_, C_PULSE, 1)
|
self.model.set(iter_, C_PULSE, 1)
|
||||||
text = _('Checking file...') + '\n'
|
text = _('Checking file…') + '\n'
|
||||||
received_size = int(file_props.received_len)
|
received_size = int(file_props.received_len)
|
||||||
full_size = file_props.size
|
full_size = file_props.size
|
||||||
text += helpers.convert_bytes(received_size) + '/' + \
|
text += helpers.convert_bytes(received_size) + '/' + \
|
||||||
|
|
|
@ -92,8 +92,7 @@ class GajimRemote:
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
'list_contacts': [
|
'list_contacts': [
|
||||||
_('Prints a list of all contacts in the roster. Each contact '
|
_('Lists all contacts in roster, one for each line'),
|
||||||
'appears on a separate line'),
|
|
||||||
[
|
[
|
||||||
(Q_('?CLI:account'), _('show only contacts of the given account'),
|
(Q_('?CLI:account'), _('show only contacts of the given account'),
|
||||||
False)
|
False)
|
||||||
|
@ -105,7 +104,7 @@ class GajimRemote:
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
'change_status': [
|
'change_status': [
|
||||||
_('Changes the status of account or accounts'),
|
_('Changes the status of account(s)'),
|
||||||
[
|
[
|
||||||
#offline, online, chat, away, xa, dnd, invisible should not be translated
|
#offline, online, chat, away, xa, dnd, invisible should not be translated
|
||||||
(Q_('?CLI:status'), _('one of: offline, online, chat, away, xa, dnd, invisible. If not set, use account\'s previous status'), False),
|
(Q_('?CLI:status'), _('one of: offline, online, chat, away, xa, dnd, invisible. If not set, use account\'s previous status'), False),
|
||||||
|
@ -116,7 +115,7 @@ class GajimRemote:
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'set_priority': [
|
'set_priority': [
|
||||||
_('Changes the priority of account or accounts'),
|
_('Changes the priority of account(s)'),
|
||||||
[
|
[
|
||||||
(Q_('?CLI:priority'), _('priority you want to give to the account'),
|
(Q_('?CLI:priority'), _('priority you want to give to the account'),
|
||||||
True),
|
True),
|
||||||
|
@ -144,21 +143,21 @@ class GajimRemote:
|
||||||
[
|
[
|
||||||
('jid', _('JID of the contact that will receive the message'), True),
|
('jid', _('JID of the contact that will receive the message'), True),
|
||||||
(Q_('?CLI:message'), _('message contents'), True),
|
(Q_('?CLI:message'), _('message contents'), True),
|
||||||
(_('pgp key'), _('if specified, the message will be encrypted '
|
(_('PGP key'), _('if specified, the message will be encrypted '
|
||||||
'using this public key'), False),
|
'using this public key'), False),
|
||||||
(Q_('?CLI:account'), _('if specified, the message will be sent '
|
(Q_('?CLI:account'), _('if specified, the message will be sent '
|
||||||
'using this account'), False),
|
'using this account'), False),
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'send_single_message': [
|
'send_single_message': [
|
||||||
_('Sends new single message to a contact in the roster. Both OpenPGP key '
|
_('Sends a chat message to someone on your roster. '
|
||||||
'and account are optional. If you want to set only \'account\', '
|
'Optionally with OpenPGP key and account. If you want '
|
||||||
'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'),
|
'to only set the latter, set OpenPGP key to "".'),
|
||||||
[
|
[
|
||||||
('jid', _('JID of the contact that will receive the message'), True),
|
('jid', _('JID of the contact that will receive the message'), True),
|
||||||
(_('subject'), _('message subject'), True),
|
(_('subject'), _('message subject'), True),
|
||||||
(Q_('?CLI:message'), _('message contents'), True),
|
(Q_('?CLI:message'), _('message contents'), True),
|
||||||
(_('pgp key'), _('if specified, the message will be encrypted '
|
(_('PGP key'), _('if specified, the message will be encrypted '
|
||||||
'using this public key'), False),
|
'using this public key'), False),
|
||||||
(Q_('?CLI:account'), _('if specified, the message will be sent '
|
(Q_('?CLI:account'), _('if specified, the message will be sent '
|
||||||
'using this account'), False),
|
'using this account'), False),
|
||||||
|
@ -202,7 +201,7 @@ class GajimRemote:
|
||||||
_('Sets value of \'key\' to \'value\'.'),
|
_('Sets value of \'key\' to \'value\'.'),
|
||||||
[
|
[
|
||||||
(_('key=value'), _('\'key\' is the name of the preference, '
|
(_('key=value'), _('\'key\' is the name of the preference, '
|
||||||
'\'value\' is the value to set it to'), True)
|
'\'value\' is what to set it to'), True)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'prefs_del': [
|
'prefs_del': [
|
||||||
|
@ -261,8 +260,8 @@ class GajimRemote:
|
||||||
_('Sends custom XML'),
|
_('Sends custom XML'),
|
||||||
[
|
[
|
||||||
('xml', _('XML to send'), True),
|
('xml', _('XML to send'), True),
|
||||||
('account', _('Account in which the xml will be sent; '
|
('account', _('Account to which the XML will be sent; '
|
||||||
'if not specified, xml will be sent to all accounts'),
|
'if not specified, XML will be sent to all accounts'),
|
||||||
False)
|
False)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
@ -276,7 +275,7 @@ class GajimRemote:
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'handle_uri': [
|
'handle_uri': [
|
||||||
_('Handle a xmpp:/ uri'),
|
_('Handle a xmpp:/ URI'),
|
||||||
[
|
[
|
||||||
(Q_('?CLI:uri'), _('URI to handle'), True),
|
(Q_('?CLI:uri'), _('URI to handle'), True),
|
||||||
(Q_('?CLI:account'), _('Account in which you want to handle it'),
|
(Q_('?CLI:account'), _('Account in which you want to handle it'),
|
||||||
|
@ -399,6 +398,7 @@ class GajimRemote:
|
||||||
raise exceptions.SessionBusNotPresent
|
raise exceptions.SessionBusNotPresent
|
||||||
|
|
||||||
if not self.check_gajim_running():
|
if not self.check_gajim_running():
|
||||||
|
#Do not translate "gajim-remote"
|
||||||
send_error(_('It seems Gajim is not running. So you can\'t use gajim-remote.'))
|
send_error(_('It seems Gajim is not running. So you can\'t use gajim-remote.'))
|
||||||
obj = self.sbus.get_object(SERVICE, OBJ_PATH)
|
obj = self.sbus.get_object(SERVICE, OBJ_PATH)
|
||||||
interface = dbus.Interface(obj, INTERFACE)
|
interface = dbus.Interface(obj, INTERFACE)
|
||||||
|
@ -534,9 +534,9 @@ class GajimRemote:
|
||||||
|
|
||||||
def handle_uri(self):
|
def handle_uri(self):
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
send_error(_('No uri given'))
|
send_error(_('No URI given'))
|
||||||
if not sys.argv[2].startswith('xmpp:'):
|
if not sys.argv[2].startswith('xmpp:'):
|
||||||
send_error(_('Wrong uri'))
|
send_error(_('Wrong URI'))
|
||||||
sys.argv[2] = sys.argv[2][5:]
|
sys.argv[2] = sys.argv[2][5:]
|
||||||
uri = sys.argv[2]
|
uri = sys.argv[2]
|
||||||
if not '?' in uri:
|
if not '?' in uri:
|
||||||
|
|
|
@ -96,12 +96,12 @@ MIN_NBXMPP_VER = "0.5.3"
|
||||||
try:
|
try:
|
||||||
import nbxmpp
|
import nbxmpp
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print('Gajim needs python-nbxmpp to run. Quiting...')
|
print('Gajim needs python-nbxmpp to run. Quiting…')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
from distutils.version import LooseVersion as V
|
from distutils.version import LooseVersion as V
|
||||||
if V(nbxmpp.__version__) < V(MIN_NBXMPP_VER):
|
if V(nbxmpp.__version__) < V(MIN_NBXMPP_VER):
|
||||||
print('Gajim needs python-nbxmpp >= %s to run. Quiting...' % MIN_NBXMPP_VER)
|
print('Gajim needs python-nbxmpp >= %s to run. Quiting…' % MIN_NBXMPP_VER)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
from application import GajimApplication
|
from application import GajimApplication
|
||||||
|
|
|
@ -95,8 +95,8 @@ class GajimThemesWindow:
|
||||||
return
|
return
|
||||||
if old_name == 'default':
|
if old_name == 'default':
|
||||||
dialogs.ErrorDialog(
|
dialogs.ErrorDialog(
|
||||||
_('You cannot make changes to the default theme'),
|
_('You cannot make changes to the default theme'),
|
||||||
_('Please create a clean new theme with your desired name.'))
|
_('Please create a new clean theme.'))
|
||||||
return
|
return
|
||||||
new_config_name = new_name.replace(' ', '_')
|
new_config_name = new_name.replace(' ', '_')
|
||||||
if new_config_name in gajim.config.get_per('themes'):
|
if new_config_name in gajim.config.get_per('themes'):
|
||||||
|
@ -185,7 +185,7 @@ class GajimThemesWindow:
|
||||||
if self.current_theme == gajim.config.get('roster_theme'):
|
if self.current_theme == gajim.config.get('roster_theme'):
|
||||||
dialogs.ErrorDialog(
|
dialogs.ErrorDialog(
|
||||||
_('You cannot delete your current theme'),
|
_('You cannot delete your current theme'),
|
||||||
_('Please first choose another theme as your current theme.'))
|
_('Pick another theme to use first.'))
|
||||||
return
|
return
|
||||||
self.theme_options_vbox.set_sensitive(False)
|
self.theme_options_vbox.set_sensitive(False)
|
||||||
self.theme_options_table.set_sensitive(False)
|
self.theme_options_table.set_sensitive(False)
|
||||||
|
|
|
@ -1333,8 +1333,8 @@ class GroupchatControl(ChatControlBase):
|
||||||
if '103' in obj.status_code:
|
if '103' in obj.status_code:
|
||||||
changes.append(_('Room now does not show unavailable members'))
|
changes.append(_('Room now does not show unavailable members'))
|
||||||
if '104' in obj.status_code:
|
if '104' in obj.status_code:
|
||||||
changes.append(_('A non-privacy-related room configuration change '
|
changes.append(_('A setting not related to privacy has been '
|
||||||
'has occurred'))
|
'changed'))
|
||||||
if '170' in obj.status_code:
|
if '170' in obj.status_code:
|
||||||
# Can be a presence (see chg_contact_status in groupchat_control.py)
|
# Can be a presence (see chg_contact_status in groupchat_control.py)
|
||||||
changes.append(_('Room logging is now enabled'))
|
changes.append(_('Room logging is now enabled'))
|
||||||
|
@ -1347,7 +1347,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
changes.append(_('Room is now semi-anonymous'))
|
changes.append(_('Room is now semi-anonymous'))
|
||||||
self.is_anonymous = True
|
self.is_anonymous = True
|
||||||
if '174' in obj.status_code:
|
if '174' in obj.status_code:
|
||||||
changes.append(_('Room is now fully-anonymous'))
|
changes.append(_('Room is now fully anonymous'))
|
||||||
self.is_anonymous = True
|
self.is_anonymous = True
|
||||||
|
|
||||||
for change in changes:
|
for change in changes:
|
||||||
|
@ -2257,16 +2257,16 @@ class GroupchatControl(ChatControlBase):
|
||||||
try:
|
try:
|
||||||
jid = helpers.parse_jid(jid)
|
jid = helpers.parse_jid(jid)
|
||||||
except Exception:
|
except Exception:
|
||||||
dialogs.ErrorDialog(_('Invalid group chat Jabber ID'),
|
dialogs.ErrorDialog(_('Invalid group chat JID'),
|
||||||
_('The group chat Jabber ID has not allowed characters.'))
|
_('The group chat JID has not allowed characters.'))
|
||||||
return
|
return
|
||||||
gajim.connections[self.account].destroy_gc_room(self.room_jid,
|
gajim.connections[self.account].destroy_gc_room(self.room_jid,
|
||||||
reason, jid)
|
reason, jid)
|
||||||
|
|
||||||
# Ask for a reason
|
# Ask for a reason
|
||||||
dialogs.DoubleInputDialog(_('Destroying %s') % '\u200E' + \
|
dialogs.DoubleInputDialog(_('Destroying %s') % '\u200E' + \
|
||||||
self.room_jid, _('You are going to definitively destroy this '
|
self.room_jid, _('You are going to remove this room permanently.'
|
||||||
'room.\nYou may specify a reason below:'),
|
'\nYou may specify a reason below:'),
|
||||||
_('You may also enter an alternate venue:'), ok_handler=on_ok,
|
_('You may also enter an alternate venue:'), ok_handler=on_ok,
|
||||||
transient_for=self.parent_win.window)
|
transient_for=self.parent_win.window)
|
||||||
|
|
||||||
|
|
|
@ -803,7 +803,7 @@ def on_avatar_save_as_menuitem_activate(widget, jid, default_name=''):
|
||||||
def on_cancel(widget):
|
def on_cancel(widget):
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
dialog = dialogs.FileChooserDialog(title_text=_('Save Image as...'),
|
dialog = dialogs.FileChooserDialog(title_text=_('Save Image as…'),
|
||||||
action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL,
|
action=Gtk.FileChooserAction.SAVE, buttons=(Gtk.STOCK_CANCEL,
|
||||||
Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
|
Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK),
|
||||||
default_response=Gtk.ResponseType.OK,
|
default_response=Gtk.ResponseType.OK,
|
||||||
|
|
|
@ -162,7 +162,7 @@ class Interface:
|
||||||
if obj.msg:
|
if obj.msg:
|
||||||
sec_msg = obj.msg + '\n' + sec_msg
|
sec_msg = obj.msg + '\n' + sec_msg
|
||||||
dialog = dialogs.YesNoDialog(_('HTTP (%(method)s) Authorization for '
|
dialog = dialogs.YesNoDialog(_('HTTP (%(method)s) Authorization for '
|
||||||
'%(url)s (id: %(id)s)') % {'method': obj.method, 'url': obj.url,
|
'%(url)s (ID: %(id)s)') % {'method': obj.method, 'url': obj.url,
|
||||||
'id': obj.iq_id}, sec_msg, on_response_yes=(on_yes, obj),
|
'id': obj.iq_id}, sec_msg, on_response_yes=(on_yes, obj),
|
||||||
on_response_no=(response, obj, 'no'))
|
on_response_no=(response, obj, 'no'))
|
||||||
|
|
||||||
|
@ -303,7 +303,7 @@ class Interface:
|
||||||
# maximum user number reached
|
# maximum user number reached
|
||||||
self.handle_gc_error(gc_control,
|
self.handle_gc_error(gc_control,
|
||||||
_('Unable to join group chat'),
|
_('Unable to join group chat'),
|
||||||
_('Maximum number of users for <b>%s</b> has been reached')\
|
_('<b>%s</b> is full')\
|
||||||
% obj.room_jid)
|
% obj.room_jid)
|
||||||
elif (obj.errcode == '401') or (obj.errcon == 'not-authorized'):
|
elif (obj.errcode == '401') or (obj.errcon == 'not-authorized'):
|
||||||
# password required to join
|
# password required to join
|
||||||
|
@ -321,11 +321,11 @@ class Interface:
|
||||||
_('Group chat <b>%s</b> does not exist.') % obj.room_jid)
|
_('Group chat <b>%s</b> does not exist.') % obj.room_jid)
|
||||||
elif (obj.errcode == '405') or (obj.errcon == 'not-allowed'):
|
elif (obj.errcode == '405') or (obj.errcon == 'not-allowed'):
|
||||||
self.handle_gc_error(gc_control, _('Unable to join group chat'),
|
self.handle_gc_error(gc_control, _('Unable to join group chat'),
|
||||||
_('Group chat creation is restricted.'))
|
_('Group chat creation is not permitted.'))
|
||||||
elif (obj.errcode == '406') or (obj.errcon == 'not-acceptable'):
|
elif (obj.errcode == '406') or (obj.errcon == 'not-acceptable'):
|
||||||
self.handle_gc_error(gc_control, _('Unable to join group chat'),
|
self.handle_gc_error(gc_control, _('Unable to join groupchat'),
|
||||||
_('Your registered nickname must be used in group chat '
|
_('You must use your registered nickname in <b>%s</b>.')\
|
||||||
'<b>%s</b>.') % obj.room_jid)
|
% obj.room_jid)
|
||||||
elif (obj.errcode == '407') or (obj.errcon == \
|
elif (obj.errcode == '407') or (obj.errcon == \
|
||||||
'registration-required'):
|
'registration-required'):
|
||||||
self.handle_gc_error(gc_control, _('Unable to join group chat'),
|
self.handle_gc_error(gc_control, _('Unable to join group chat'),
|
||||||
|
@ -679,12 +679,12 @@ class Interface:
|
||||||
'\n')
|
'\n')
|
||||||
sectext += _('You are currently connected without your OpenPGP '
|
sectext += _('You are currently connected without your OpenPGP '
|
||||||
'key.')
|
'key.')
|
||||||
dialogs.WarningDialog(_('Your passphrase is incorrect'), sectext)
|
dialogs.WarningDialog(_('Wrong passphrase'), sectext)
|
||||||
else:
|
else:
|
||||||
path = gtkgui_helpers.get_icon_path('gtk-dialog-warning', 48)
|
path = gtkgui_helpers.get_icon_path('gtk-dialog-warning', 48)
|
||||||
account = obj.conn.name
|
account = obj.conn.name
|
||||||
notify.popup('warning', account, account, '', path,
|
notify.popup('warning', account, account, '', path,
|
||||||
_('OpenPGP Passphrase Incorrect'),
|
_('Wrong OpenPGP passphrase'),
|
||||||
_('You are currently connected without your OpenPGP key.'))
|
_('You are currently connected without your OpenPGP key.'))
|
||||||
self.forget_gpg_passphrase(obj.keyID)
|
self.forget_gpg_passphrase(obj.keyID)
|
||||||
|
|
||||||
|
@ -698,7 +698,7 @@ class Interface:
|
||||||
obj.secure_tuple)
|
obj.secure_tuple)
|
||||||
|
|
||||||
dialogs.PassphraseDialog(_('Certificate Passphrase Required'),
|
dialogs.PassphraseDialog(_('Certificate Passphrase Required'),
|
||||||
_('Enter the passphrase for the certificate for account %s') % \
|
_('Enter the certificate passphrase for account %s') % \
|
||||||
obj.conn.name, ok_handler=on_ok, cancel_handler=on_cancel)
|
obj.conn.name, ok_handler=on_ok, cancel_handler=on_cancel)
|
||||||
|
|
||||||
def handle_event_gpg_password_required(self, obj):
|
def handle_event_gpg_password_required(self, obj):
|
||||||
|
@ -720,7 +720,7 @@ class Interface:
|
||||||
def on_no():
|
def on_no():
|
||||||
obj.callback(False)
|
obj.callback(False)
|
||||||
|
|
||||||
dialogs.YesNoDialog(_('OpenPGP key not trusted'), _('The OpenPGP key '
|
dialogs.YesNoDialog(_('Untrusted OpenPGP key'), _('The OpenPGP key '
|
||||||
'used to encrypt this chat is not trusted. Do you really want to '
|
'used to encrypt this chat is not trusted. Do you really want to '
|
||||||
'encrypt this message?'), checktext=_('_Do not ask me again'),
|
'encrypt this message?'), checktext=_('_Do not ask me again'),
|
||||||
on_response_yes=on_yes, on_response_no=on_no)
|
on_response_yes=on_yes, on_response_no=on_no)
|
||||||
|
@ -868,10 +868,10 @@ class Interface:
|
||||||
if not gajim.config.get('notify_on_new_gmail_email'):
|
if not gajim.config.get('notify_on_new_gmail_email'):
|
||||||
return
|
return
|
||||||
path = gtkgui_helpers.get_icon_path('gajim-new_email_recv', 48)
|
path = gtkgui_helpers.get_icon_path('gajim-new_email_recv', 48)
|
||||||
title = _('New mail on %(gmail_mail_address)s') % \
|
title = _('New e-mail on %(gmail_mail_address)s') % \
|
||||||
{'gmail_mail_address': jid}
|
{'gmail_mail_address': jid}
|
||||||
text = i18n.ngettext('You have %d new mail conversation',
|
text = i18n.ngettext('You have %d new e-mail conversation',
|
||||||
'You have %d new mail conversations', gmail_new_messages,
|
'You have %d new e-mail conversations', gmail_new_messages,
|
||||||
gmail_new_messages, gmail_new_messages)
|
gmail_new_messages, gmail_new_messages)
|
||||||
|
|
||||||
if gajim.config.get('notify_on_new_gmail_email_extra'):
|
if gajim.config.get('notify_on_new_gmail_email_extra'):
|
||||||
|
@ -1084,8 +1084,8 @@ class Interface:
|
||||||
sender).get_shown_name()
|
sender).get_shown_name()
|
||||||
filename = os.path.basename(file_props.file_name)
|
filename = os.path.basename(file_props.file_name)
|
||||||
if event_type == _('File Transfer Completed'):
|
if event_type == _('File Transfer Completed'):
|
||||||
txt = _('You successfully received %(filename)s from '
|
txt = _('%(filename)s received from %(name)s.')\
|
||||||
'%(name)s.') % {'filename': filename, 'name': name}
|
% {'filename': filename, 'name': name}
|
||||||
img_name = 'gajim-ft_done'
|
img_name = 'gajim-ft_done'
|
||||||
elif event_type == _('File Transfer Stopped'):
|
elif event_type == _('File Transfer Stopped'):
|
||||||
txt = _('File transfer of %(filename)s from %(name)s '
|
txt = _('File transfer of %(filename)s from %(name)s '
|
||||||
|
@ -1376,11 +1376,11 @@ class Interface:
|
||||||
|
|
||||||
pritext = _('Error verifying SSL certificate')
|
pritext = _('Error verifying SSL certificate')
|
||||||
sectext = _('There was an error verifying the SSL certificate of your '
|
sectext = _('There was an error verifying the SSL certificate of your '
|
||||||
'jabber server: %(error)s\nDo you still want to connect to this '
|
'XMPP server: %(error)s\nDo you still want to connect to this '
|
||||||
'server?') % {'error': obj.error_text}
|
'server?') % {'error': obj.error_text}
|
||||||
if obj.error_num in (18, 27):
|
if obj.error_num in (18, 27):
|
||||||
checktext1 = _('Add this certificate to the list of trusted '
|
checktext1 = _('Add this certificate to the list of trusted '
|
||||||
'certificates.\nSHA1 fingerprint of the certificate:\n%s'
|
'certificates.\nSHA-1 fingerprint of the certificate:\n%s'
|
||||||
'\nSHA256 fingerprint of the certificate:\n%s') % \
|
'\nSHA256 fingerprint of the certificate:\n%s') % \
|
||||||
(obj.fingerprint_sha1, obj.fingerprint_sha256)
|
(obj.fingerprint_sha1, obj.fingerprint_sha256)
|
||||||
else:
|
else:
|
||||||
|
@ -1423,7 +1423,7 @@ class Interface:
|
||||||
|
|
||||||
pritext = _('SSL certificate error')
|
pritext = _('SSL certificate error')
|
||||||
sectext = _('It seems the SSL certificate of account %(account)s has '
|
sectext = _('It seems the SSL certificate of account %(account)s has '
|
||||||
'changed and is not valid or your connection is being hacked.\n\n'
|
'changed and is not valid or your connection is being compromised.\n\n'
|
||||||
'Old SHA-1 fingerprint: '
|
'Old SHA-1 fingerprint: '
|
||||||
'%(old_sha1)s\nOld SHA-256 fingerprint: %(old_sha256)s\n\n'
|
'%(old_sha1)s\nOld SHA-256 fingerprint: %(old_sha256)s\n\n'
|
||||||
'New SHA-1 fingerprint: %(new_sha1)s\nNew SHA-256 fingerprint: '
|
'New SHA-1 fingerprint: %(new_sha1)s\nNew SHA-256 fingerprint: '
|
||||||
|
|
|
@ -538,7 +538,7 @@ def get_transport_menu(contact, account):
|
||||||
menu = Gtk.Menu()
|
menu = Gtk.Menu()
|
||||||
|
|
||||||
# Send single message
|
# Send single message
|
||||||
item = Gtk.MenuItem.new_with_mnemonic(_('Send Single _Message...'))
|
item = Gtk.MenuItem.new_with_mnemonic(_('Send Single _Message…'))
|
||||||
item.connect('activate', roster.on_send_single_message_menuitem_activate,
|
item.connect('activate', roster.on_send_single_message_menuitem_activate,
|
||||||
account, contact)
|
account, contact)
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
|
@ -571,7 +571,7 @@ def get_transport_menu(contact, account):
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
|
|
||||||
# Execute Command
|
# Execute Command
|
||||||
item = Gtk.MenuItem.new_with_mnemonic(_('E_xecute Command...'))
|
item = Gtk.MenuItem.new_with_mnemonic(_('E_xecute Command…'))
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
item.connect('activate', roster.on_execute_command, contact, account,
|
item.connect('activate', roster.on_execute_command, contact, account,
|
||||||
contact.resource)
|
contact.resource)
|
||||||
|
@ -592,7 +592,7 @@ def get_transport_menu(contact, account):
|
||||||
item.set_sensitive(False)
|
item.set_sensitive(False)
|
||||||
|
|
||||||
# Rename
|
# Rename
|
||||||
item = Gtk.MenuItem.new_with_mnemonic(_('_Rename...'))
|
item = Gtk.MenuItem.new_with_mnemonic(_('_Rename…'))
|
||||||
manage_transport_submenu.append(item)
|
manage_transport_submenu.append(item)
|
||||||
item.connect('activate', roster.on_rename, 'agent', jid, account)
|
item.connect('activate', roster.on_rename, 'agent', jid, account)
|
||||||
if gajim.account_is_disconnected(account):
|
if gajim.account_is_disconnected(account):
|
||||||
|
|
|
@ -78,7 +78,7 @@ def parseOpts():
|
||||||
_('Options:') + \
|
_('Options:') + \
|
||||||
'\n -h, --help ' + \
|
'\n -h, --help ' + \
|
||||||
_('Show this help message and exit') + \
|
_('Show this help message and exit') + \
|
||||||
'\n -c, --config-path ' + _('Set logs directory') + '\n')
|
'\n -c, --config-path ' + _('Choose folder for logfile') + '\n')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
elif o in ('-c', '--config-path'):
|
elif o in ('-c', '--config-path'):
|
||||||
config_path = a
|
config_path = a
|
||||||
|
@ -165,7 +165,7 @@ class HistoryManager:
|
||||||
self.jids_listview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
|
self.jids_listview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
|
||||||
|
|
||||||
renderer_text = Gtk.CellRendererText() # holds jid
|
renderer_text = Gtk.CellRendererText() # holds jid
|
||||||
col = Gtk.TreeViewColumn(_('Jabber ID'), renderer_text, text=0)
|
col = Gtk.TreeViewColumn(_('JID'), renderer_text, text=0)
|
||||||
self.jids_listview.append_column(col)
|
self.jids_listview.append_column(col)
|
||||||
|
|
||||||
self.jids_listview.get_selection().connect('changed',
|
self.jids_listview.get_selection().connect('changed',
|
||||||
|
@ -266,7 +266,7 @@ class HistoryManager:
|
||||||
_('Normally allocated database size will not be freed, '
|
_('Normally allocated database size will not be freed, '
|
||||||
'it will just become reusable. If you really want to reduce '
|
'it will just become reusable. If you really want to reduce '
|
||||||
'database filesize, click YES, else click NO.'
|
'database filesize, click YES, else click NO.'
|
||||||
'\n\nIn case you click YES, please wait...'),
|
'\n\nIn case you click YES, please wait…'),
|
||||||
on_response_yes=on_yes, on_response_no=on_no)
|
on_response_yes=on_yes, on_response_no=on_no)
|
||||||
dialog.set_title(_('Database Cleanup'))
|
dialog.set_title(_('Database Cleanup'))
|
||||||
button_box = dialog.get_children()[0].get_children()[1]
|
button_box = dialog.get_children()[0].get_children()[1]
|
||||||
|
@ -483,7 +483,7 @@ class HistoryManager:
|
||||||
xml.connect_signals(self)
|
xml.connect_signals(self)
|
||||||
|
|
||||||
dlg = xml.get_object('filechooserdialog')
|
dlg = xml.get_object('filechooserdialog')
|
||||||
dlg.set_title(_('Exporting History Logs...'))
|
dlg.set_title(_('Exporting History Logs…'))
|
||||||
dlg.set_current_folder(gajim.HOME_DIR)
|
dlg.set_current_folder(gajim.HOME_DIR)
|
||||||
dlg.props.do_overwrite_confirmation = True
|
dlg.props.do_overwrite_confirmation = True
|
||||||
response = dlg.run()
|
response = dlg.run()
|
||||||
|
@ -597,13 +597,13 @@ class HistoryManager:
|
||||||
|
|
||||||
if paths_len == 1:
|
if paths_len == 1:
|
||||||
jid_id = '<i>%s</i>' % liststore[list_of_paths[0]][0]
|
jid_id = '<i>%s</i>' % liststore[list_of_paths[0]][0]
|
||||||
pri_text = _('Do you really want to delete the logs of %(jid)s?') \
|
pri_text = _('Do you wish to delete all correspondence with %(jid)s?') \
|
||||||
% {'jid': jid_id}
|
% {'jid': jid_id}
|
||||||
else:
|
else:
|
||||||
pri_text = _(
|
pri_text = _(
|
||||||
'Do you really want to delete logs of the selected contacts?')
|
'Do you wish to delete all correspondence with the selected contacts?')
|
||||||
dialog = dialogs.ConfirmationDialog('',
|
dialog = dialogs.ConfirmationDialog('',
|
||||||
_('This is an irreversible operation.'), on_response_ok=(on_ok,
|
_('This can not be undone.'), on_response_ok=(on_ok,
|
||||||
liststore, list_of_paths))
|
liststore, list_of_paths))
|
||||||
dialog.set_title(_('Deletion Confirmation'))
|
dialog.set_title(_('Deletion Confirmation'))
|
||||||
dialog.set_markup(pri_text)
|
dialog.set_markup(pri_text)
|
||||||
|
|
|
@ -914,7 +914,7 @@ class HtmlTextView(Gtk.TextView):
|
||||||
text = getattr(tag, 'title', False)
|
text = getattr(tag, 'title', False)
|
||||||
if text:
|
if text:
|
||||||
if len(text) > 50:
|
if len(text) > 50:
|
||||||
text = text[:47] + '...'
|
text = text[:47] + '…'
|
||||||
position = w.get_origin()[1:]
|
position = w.get_origin()[1:]
|
||||||
self.tooltip.show_tooltip(text, 8, position[1] + y)
|
self.tooltip.show_tooltip(text, 8, position[1] + y)
|
||||||
|
|
||||||
|
@ -1284,7 +1284,7 @@ return faciter(n,1)</pre>
|
||||||
<p>
|
<p>
|
||||||
<strong>examples@example.org wrote:</strong>
|
<strong>examples@example.org wrote:</strong>
|
||||||
</p>
|
</p>
|
||||||
<p>this cite - bla bla bla, smile- :-) ...</p>
|
<p>this cite - bla bla bla, smile- :-) …</p>
|
||||||
</cite>
|
</cite>
|
||||||
<div>
|
<div>
|
||||||
<p>some text</p>
|
<p>some text</p>
|
||||||
|
|
|
@ -45,7 +45,7 @@ def on_suspend(active):
|
||||||
return
|
return
|
||||||
|
|
||||||
# we're going for suspend, let's disconnect
|
# we're going for suspend, let's disconnect
|
||||||
log.debug('System suspend detected, disconnecting from network...')
|
log.debug('System suspend detected, disconnecting from network…')
|
||||||
for name, conn in gajim.connections.items():
|
for name, conn in gajim.connections.items():
|
||||||
if gajim.account_is_connected(name):
|
if gajim.account_is_connected(name):
|
||||||
conn.old_show = gajim.SHOW_LIST[conn.connected]
|
conn.old_show = gajim.SHOW_LIST[conn.connected]
|
||||||
|
|
|
@ -526,9 +526,9 @@ class MessageWindow(object):
|
||||||
if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_PERTYPE:
|
if window_mode == MessageWindowMgr.ONE_MSG_WINDOW_PERTYPE:
|
||||||
# Show the plural form since number of tabs > 1
|
# Show the plural form since number of tabs > 1
|
||||||
if self.type_ == 'chat':
|
if self.type_ == 'chat':
|
||||||
label = _('Chats')
|
label = _('?Noun:Chats')
|
||||||
elif self.type_ == 'gc':
|
elif self.type_ == 'gc':
|
||||||
label = _('Group Chats')
|
label = _('Groupchats')
|
||||||
else:
|
else:
|
||||||
label = _('Private Chats')
|
label = _('Private Chats')
|
||||||
elif window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER:
|
elif window_mode == MessageWindowMgr.ONE_MSG_WINDOW_ALWAYS_WITH_ROSTER:
|
||||||
|
|
|
@ -382,7 +382,7 @@ class DesktopNotification:
|
||||||
if self.text:
|
if self.text:
|
||||||
text = self.text
|
text = self.text
|
||||||
if len(self.text) > 200:
|
if len(self.text) > 200:
|
||||||
text = '%s\n...' % self.text[:200]
|
text = '%s\n…' % self.text[:200]
|
||||||
else:
|
else:
|
||||||
text = ' '
|
text = ' '
|
||||||
if os.environ.get('KDE_FULL_SESSION') == 'true':
|
if os.environ.get('KDE_FULL_SESSION') == 'true':
|
||||||
|
|
|
@ -60,7 +60,7 @@ class ProfileWindow:
|
||||||
self.avatar_mime_type = None
|
self.avatar_mime_type = None
|
||||||
self.avatar_encoded = None
|
self.avatar_encoded = None
|
||||||
self.message_id = self.statusbar.push(self.context_id,
|
self.message_id = self.statusbar.push(self.context_id,
|
||||||
_('Retrieving profile...'))
|
_('Retrieving profile…'))
|
||||||
self.update_progressbar_timeout_id = GLib.timeout_add(100,
|
self.update_progressbar_timeout_id = GLib.timeout_add(100,
|
||||||
self.update_progressbar)
|
self.update_progressbar)
|
||||||
self.remove_statusbar_timeout_id = None
|
self.remove_statusbar_timeout_id = None
|
||||||
|
@ -386,7 +386,7 @@ class ProfileWindow:
|
||||||
gajim.nicks[self.account] = nick
|
gajim.nicks[self.account] = nick
|
||||||
gajim.connections[self.account].send_vcard(vcard_)
|
gajim.connections[self.account].send_vcard(vcard_)
|
||||||
self.message_id = self.statusbar.push(self.context_id,
|
self.message_id = self.statusbar.push(self.context_id,
|
||||||
_('Sending profile...'))
|
_('Sending profile…'))
|
||||||
self.progressbar.show()
|
self.progressbar.show()
|
||||||
self.update_progressbar_timeout_id = GLib.timeout_add(100,
|
self.update_progressbar_timeout_id = GLib.timeout_add(100,
|
||||||
self.update_progressbar)
|
self.update_progressbar)
|
||||||
|
|
|
@ -2068,8 +2068,8 @@ class RosterWindow:
|
||||||
Authorize a contact (by re-sending auth menuitem)
|
Authorize a contact (by re-sending auth menuitem)
|
||||||
"""
|
"""
|
||||||
gajim.connections[account].send_authorization(jid)
|
gajim.connections[account].send_authorization(jid)
|
||||||
dialogs.InformationDialog(_('Authorization has been sent'),
|
dialogs.InformationDialog(_('Authorization sent'),
|
||||||
_('Now "%s" will know your status.') %jid)
|
_('"%s" will now see your status.') %jid)
|
||||||
|
|
||||||
def req_sub(self, widget, jid, txt, account, groups=None, nickname=None,
|
def req_sub(self, widget, jid, txt, account, groups=None, nickname=None,
|
||||||
auto_auth=False):
|
auto_auth=False):
|
||||||
|
@ -2107,8 +2107,8 @@ class RosterWindow:
|
||||||
Revoke a contact's authorization
|
Revoke a contact's authorization
|
||||||
"""
|
"""
|
||||||
gajim.connections[account].refuse_authorization(jid)
|
gajim.connections[account].refuse_authorization(jid)
|
||||||
dialogs.InformationDialog(_('Authorization has been removed'),
|
dialogs.InformationDialog(_('Authorization removed'),
|
||||||
_('Now "%s" will always see you as offline.') %jid)
|
_('Now "%s" will always see you as offline.') %jid)
|
||||||
|
|
||||||
def set_state(self, account, state):
|
def set_state(self, account, state):
|
||||||
child_iterA = self._get_account_iter(account, self.model)
|
child_iterA = self._get_account_iter(account, self.model)
|
||||||
|
@ -2982,7 +2982,7 @@ class RosterWindow:
|
||||||
pritext = _('You are about to block a contact. Are you sure you want'
|
pritext = _('You are about to block a contact. Are you sure you want'
|
||||||
' to continue?')
|
' to continue?')
|
||||||
sectext = _('This contact will see you offline and you will not '
|
sectext = _('This contact will see you offline and you will not '
|
||||||
'receive messages he will send you.')
|
'receive messages it sends you.')
|
||||||
dialogs.ConfirmationDialogCheck(pritext, sectext,
|
dialogs.ConfirmationDialogCheck(pritext, sectext,
|
||||||
_('_Do not ask me again'), on_response_ok=_block_it)
|
_('_Do not ask me again'), on_response_ok=_block_it)
|
||||||
|
|
||||||
|
@ -3661,7 +3661,7 @@ class RosterWindow:
|
||||||
pritext = _('You are about to send a custom status. Are you sure you '
|
pritext = _('You are about to send a custom status. Are you sure you '
|
||||||
'want to continue?')
|
'want to continue?')
|
||||||
sectext = _('This contact will temporarily see you as %(status)s, '
|
sectext = _('This contact will temporarily see you as %(status)s, '
|
||||||
'but only until you change your status. Then he or she will see '
|
'but only until you change your status. Then they will see '
|
||||||
'your global status.') % {'status': show}
|
'your global status.') % {'status': show}
|
||||||
dialogs.ConfirmationDialogCheck(pritext, sectext,
|
dialogs.ConfirmationDialogCheck(pritext, sectext,
|
||||||
_('_Do not ask me again'), on_response_ok=send_it)
|
_('_Do not ask me again'), on_response_ok=send_it)
|
||||||
|
@ -4490,7 +4490,7 @@ class RosterWindow:
|
||||||
'want to continue?')
|
'want to continue?')
|
||||||
sectext = _('Metacontacts are a way to regroup several contacts in one '
|
sectext = _('Metacontacts are a way to regroup several contacts in one '
|
||||||
'line. Generally it is used when the same person has several '
|
'line. Generally it is used when the same person has several '
|
||||||
'Jabber accounts or transport accounts.')
|
'XMPP accounts or transport accounts.')
|
||||||
dlg = dialogs.ConfirmationDialogCheck(pritext, sectext,
|
dlg = dialogs.ConfirmationDialogCheck(pritext, sectext,
|
||||||
_('_Do not ask me again'), on_response_ok=merge_contacts)
|
_('_Do not ask me again'), on_response_ok=merge_contacts)
|
||||||
if not confirm_metacontacts: # First time we see this window
|
if not confirm_metacontacts: # First time we see this window
|
||||||
|
@ -5363,7 +5363,7 @@ class RosterWindow:
|
||||||
newitem = Gtk.SeparatorMenuItem.new() # separator
|
newitem = Gtk.SeparatorMenuItem.new() # separator
|
||||||
gc_sub_menu.append(newitem)
|
gc_sub_menu.append(newitem)
|
||||||
|
|
||||||
newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks...'))
|
newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks…'))
|
||||||
newitem.connect('activate', self.on_manage_bookmarks_menuitem_activate)
|
newitem.connect('activate', self.on_manage_bookmarks_menuitem_activate)
|
||||||
gc_sub_menu.append(newitem)
|
gc_sub_menu.append(newitem)
|
||||||
gc_sub_menu.show_all()
|
gc_sub_menu.show_all()
|
||||||
|
@ -5513,7 +5513,7 @@ class RosterWindow:
|
||||||
self.on_publish_location_toggled)
|
self.on_publish_location_toggled)
|
||||||
|
|
||||||
pep_config = Gtk.MenuItem.new_with_label(
|
pep_config = Gtk.MenuItem.new_with_label(
|
||||||
_('Configure Services...'))
|
_('Configure Services…'))
|
||||||
item = Gtk.SeparatorMenuItem.new()
|
item = Gtk.SeparatorMenuItem.new()
|
||||||
pep_submenu.append(item)
|
pep_submenu.append(item)
|
||||||
pep_config.set_sensitive(True)
|
pep_config.set_sensitive(True)
|
||||||
|
@ -5722,7 +5722,7 @@ class RosterWindow:
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
|
|
||||||
# Rename
|
# Rename
|
||||||
rename_item = Gtk.MenuItem.new_with_mnemonic(_('_Rename...'))
|
rename_item = Gtk.MenuItem.new_with_mnemonic(_('_Rename…'))
|
||||||
menu.append(rename_item)
|
menu.append(rename_item)
|
||||||
rename_item.connect('activate', self.on_rename, 'group', group,
|
rename_item.connect('activate', self.on_rename, 'group', group,
|
||||||
account)
|
account)
|
||||||
|
@ -5845,7 +5845,7 @@ class RosterWindow:
|
||||||
menu.append(item)
|
menu.append(item)
|
||||||
|
|
||||||
# Edit Groups
|
# Edit Groups
|
||||||
edit_groups_item = Gtk.MenuItem.new_with_mnemonic(_('Edit _Groups...'))
|
edit_groups_item = Gtk.MenuItem.new_with_mnemonic(_('Edit _Groups…'))
|
||||||
manage_contacts_submenu.append(edit_groups_item)
|
manage_contacts_submenu.append(edit_groups_item)
|
||||||
edit_groups_item.connect('activate', self.on_edit_groups, list_)
|
edit_groups_item.connect('activate', self.on_edit_groups, list_)
|
||||||
|
|
||||||
|
@ -6296,7 +6296,7 @@ class RosterWindow:
|
||||||
img.set_from_file(path)
|
img.set_from_file(path)
|
||||||
# sensitivity to False because by default we're offline
|
# sensitivity to False because by default we're offline
|
||||||
self.status_message_menuitem_iter = liststore.append(
|
self.status_message_menuitem_iter = liststore.append(
|
||||||
[_('Change Status Message...'), img, '', False])
|
[_('Change Status Message…'), img, '', False])
|
||||||
# Add a Separator (self._iter_is_separator() checks on string SEPARATOR)
|
# Add a Separator (self._iter_is_separator() checks on string SEPARATOR)
|
||||||
liststore.append(['SEPARATOR', None, '', True])
|
liststore.append(['SEPARATOR', None, '', True])
|
||||||
|
|
||||||
|
|
|
@ -232,7 +232,7 @@ class StatusIcon:
|
||||||
item = Gtk.SeparatorMenuItem.new()
|
item = Gtk.SeparatorMenuItem.new()
|
||||||
sub_menu.append(item)
|
sub_menu.append(item)
|
||||||
|
|
||||||
item = Gtk.MenuItem.new_with_mnemonic(_('_Change Status Message...'))
|
item = Gtk.MenuItem.new_with_mnemonic(_('_Change Status Message…'))
|
||||||
sub_menu.append(item)
|
sub_menu.append(item)
|
||||||
item.connect('activate', self.on_change_status_message_activate)
|
item.connect('activate', self.on_change_status_message_activate)
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ class StatusIcon:
|
||||||
|
|
||||||
newitem = Gtk.SeparatorMenuItem.new() # separator
|
newitem = Gtk.SeparatorMenuItem.new() # separator
|
||||||
gc_sub_menu.append(newitem)
|
gc_sub_menu.append(newitem)
|
||||||
newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks...'))
|
newitem = Gtk.MenuItem.new_with_mnemonic(_('_Manage Bookmarks…'))
|
||||||
newitem.connect('activate',
|
newitem.connect('activate',
|
||||||
gajim.interface.roster.on_manage_bookmarks_menuitem_activate)
|
gajim.interface.roster.on_manage_bookmarks_menuitem_activate)
|
||||||
gc_sub_menu.append(newitem)
|
gc_sub_menu.append(newitem)
|
||||||
|
|
|
@ -835,13 +835,13 @@ class FileTransfersTooltip(BaseTooltip):
|
||||||
file_name = file_props.name
|
file_name = file_props.name
|
||||||
properties.append((_('Name: '), GLib.markup_escape_text(file_name)))
|
properties.append((_('Name: '), GLib.markup_escape_text(file_name)))
|
||||||
if file_props.type_ == 'r':
|
if file_props.type_ == 'r':
|
||||||
type_ = _('Download')
|
type_ = _('?Noun:Download')
|
||||||
actor = _('Sender: ')
|
actor = _('Sender: ')
|
||||||
sender = file_props.sender.split('/')[0]
|
sender = file_props.sender.split('/')[0]
|
||||||
name = gajim.contacts.get_first_contact_from_jid(
|
name = gajim.contacts.get_first_contact_from_jid(
|
||||||
file_props.tt_account, sender).get_shown_name()
|
file_props.tt_account, sender).get_shown_name()
|
||||||
else:
|
else:
|
||||||
type_ = _('Upload')
|
type_ = _('?Noun:Upload')
|
||||||
actor = _('Recipient: ')
|
actor = _('Recipient: ')
|
||||||
receiver = file_props.receiver
|
receiver = file_props.receiver
|
||||||
if hasattr(receiver, 'name'):
|
if hasattr(receiver, 'name'):
|
||||||
|
|
|
@ -438,13 +438,13 @@ class VcardWindow:
|
||||||
subscription_label.set_text(uf_sub)
|
subscription_label.set_text(uf_sub)
|
||||||
eb = self.xml.get_object('subscription_label_eventbox')
|
eb = self.xml.get_object('subscription_label_eventbox')
|
||||||
if self.contact.sub == 'from':
|
if self.contact.sub == 'from':
|
||||||
tt_text = _("This contact is interested in your presence information, but you are not interested in his/her presence")
|
tt_text = _("This contact is interested in your presence information, but you are not interested in their presence")
|
||||||
elif self.contact.sub == 'to':
|
elif self.contact.sub == 'to':
|
||||||
tt_text = _("You are interested in the contact's presence information, but he/she is not interested in yours")
|
tt_text = _("You are interested in the contact's presence information, but it is not mutual")
|
||||||
elif self.contact.sub == 'both':
|
elif self.contact.sub == 'both':
|
||||||
tt_text = _("You and the contact are interested in each other's presence information")
|
tt_text = _("The contact and you want to exchange presence information")
|
||||||
else: # None
|
else: # None
|
||||||
tt_text = _("You are not interested in the contact's presence, and neither he/she is interested in yours")
|
tt_text = _("You and the contact have a mutual disinterest in each-others presence information")
|
||||||
eb.set_tooltip_text(tt_text)
|
eb.set_tooltip_text(tt_text)
|
||||||
|
|
||||||
uf_ask = helpers.get_uf_ask(self.contact.ask)
|
uf_ask = helpers.get_uf_ask(self.contact.ask)
|
||||||
|
|
Loading…
Reference in New Issue