docs + translations

This commit is contained in:
ingvar1995 2016-06-05 20:17:39 +03:00
parent 672dafc701
commit c114e9b6c3
10 changed files with 543 additions and 307 deletions

View File

@ -33,24 +33,25 @@ Toxygen is cross-platform [Tox](https://tox.chat/) client written on Python
- [x] File resuming
- [x] Save file encryption
- [x] Plugins support
- [x] Read receipts
- [x] Faux offline messaging
- [ ] Video
- [ ] Group chats
- [ ] Read receipts
- [ ] Faux offline messaging
- [ ] Desktop sharing
###Downloads
[Releases](https://github.com/xveduk/toxygen/releases)
[Download last stable version](https://github.com/xveduk/toxygen/archive/master.zip)
[Download develop version](https://github.com/xveduk/toxygen/archive/develop.zip)
[Releases](https://github.com/xveduk/toxygen/releases)
###Screenshots
*Toxygen on Ubuntu and Windows*
![Ubuntu](/docs/ubuntu.png)
![Windows](/docs/windows.png)
###Docs
[Check /docs/ for more info](/docs/)

View File

@ -9,13 +9,13 @@ Help us find all bugs in Toxygen! Please provide following info:
- Toxygen executable info - .py or precompiled binary
- Steps to reproduce the bug
Want to see new feature in Toxygen? [Open issue!](https://github.com/xveduk/toxygen/issues)
Want to see new feature in Toxygen? [Ask for it!](https://github.com/xveduk/toxygen/issues)
#Pull requests
Developer? Feel free to open pull request. Our dev team is small so we glad to get help.
Don't know what to do? Impove UI, fix [issues](https://github.com/xveduk/toxygen/issues) or implement features from our TODO list.
You can find our TODO's in code and [here](/README.md)
Don't know what to do? Improve UI, fix [issues](https://github.com/xveduk/toxygen/issues) or implement features from our TODO list.
You can find our TODO's in code and [here](/README.md). Also you can implement plugins for Toxygen.
#Translations

View File

@ -1,6 +1,6 @@
#Plugins
Toxygen is the first [Tox](https://tox.chat/) client with plugins support. Plugin is Python module and directory with plugin's data which provide some additional functionality.
Toxygen is the first [Tox](https://tox.chat/) client with plugins support. Plugin is Python module (.py file) and directory with plugin's data which provide some additional functionality.
#How to write plugin

View File

@ -548,6 +548,9 @@ class InterfaceSettings(CenteredWidget):
class AudioSettings(CenteredWidget):
"""
Audio calls settings form
"""
def __init__(self):
super(AudioSettings, self).__init__()
@ -601,6 +604,9 @@ class AudioSettings(CenteredWidget):
class PluginsSettings(CenteredWidget):
"""
Plugins settings form
"""
def __init__(self):
super(PluginsSettings, self).__init__()

View File

@ -506,6 +506,7 @@ class Profile(Contact, Singleton):
"""
Friend with specified number quit
"""
# TODO: fix
self.get_friend_by_number(friend_number).status = None
self.friend_typing(friend_number, False)
if friend_number in self._call:

View File

@ -3,50 +3,63 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="69"/>
<location filename="menu.py" line="70"/>
<source>Add contact</source>
<translation>Add contact</translation>
</message>
<message>
<location filename="menu.py" line="71"/>
<location filename="menu.py" line="72"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="72"/>
<location filename="menu.py" line="73"/>
<source>Message:</source>
<translation>Message:</translation>
</message>
<message>
<location filename="menu.py" line="74"/>
<source>TOX ID or public key of contact</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Callback</name>
<message>
<location filename="callbacks.py" line="182"/>
<source>File from</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="70"/>
<location filename="menu.py" line="71"/>
<source>Send request</source>
<translation>Send request</translation>
</message>
<message>
<location filename="menu.py" line="287"/>
<location filename="menu.py" line="295"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="288"/>
<location filename="menu.py" line="296"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="289"/>
<location filename="menu.py" line="297"/>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
<message>
<location filename="menu.py" line="290"/>
<location filename="menu.py" line="298"/>
<source>IP:</source>
<translation>IP:</translation>
</message>
<message>
<location filename="menu.py" line="291"/>
<location filename="menu.py" line="299"/>
<source>Port:</source>
<translation>Port:</translation>
</message>
@ -56,12 +69,12 @@
<translation type="obsolete">Online contacts</translation>
</message>
<message>
<location filename="menu.py" line="293"/>
<location filename="menu.py" line="301"/>
<source>HTTP</source>
<translation>HTTP</translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="303"/>
<source>WARNING:
using proxy with enabled UDP
can produce IP leak</source>
@ -71,103 +84,103 @@ can produce IP leak</source>
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="115"/>
<location filename="mainscreen.py" line="126"/>
<source>Profile</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="121"/>
<location filename="mainscreen.py" line="132"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="363"/>
<location filename="mainscreen.py" line="376"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="114"/>
<location filename="mainscreen.py" line="125"/>
<source>Add contact</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="116"/>
<location filename="mainscreen.py" line="127"/>
<source>Privacy</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="117"/>
<location filename="mainscreen.py" line="128"/>
<source>Interface</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="118"/>
<location filename="mainscreen.py" line="129"/>
<source>Notifications</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="119"/>
<location filename="mainscreen.py" line="130"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="120"/>
<location filename="mainscreen.py" line="131"/>
<source>About program</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="854"/>
<location filename="profile.py" line="907"/>
<source>User {} wants to add you to contact list. Message:
{}</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="856"/>
<location filename="profile.py" line="909"/>
<source>Friend request</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="411"/>
<location filename="mainscreen.py" line="424"/>
<source>Choose file</source>
<translation>Choose file</translation>
</message>
<message>
<location filename="mainscreen.py" line="452"/>
<location filename="mainscreen.py" line="465"/>
<source>Disallow auto accept</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="453"/>
<location filename="mainscreen.py" line="466"/>
<source>Allow auto accept</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="455"/>
<location filename="mainscreen.py" line="468"/>
<source>Set alias</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="456"/>
<location filename="mainscreen.py" line="469"/>
<source>Clear history</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="457"/>
<location filename="mainscreen.py" line="470"/>
<source>Copy public key</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="459"/>
<location filename="mainscreen.py" line="472"/>
<source>Remove friend</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="700"/>
<location filename="profile.py" line="748"/>
<source>Enter new alias for friend {} or leave empty to use friend&apos;s name:</source>
<translation>Enter new alias for friend {} or leave empty to use friend&apos;s name:</translation>
</message>
<message>
<location filename="mainscreen.py" line="122"/>
<location filename="mainscreen.py" line="133"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
@ -177,82 +190,137 @@ can produce IP leak</source>
<translation type="obsolete">Find contact</translation>
</message>
<message>
<location filename="profile.py" line="826"/>
<location filename="profile.py" line="879"/>
<source>Friend added</source>
<translation>Friend added</translation>
</message>
<message>
<location filename="mainscreen.py" line="364"/>
<location filename="mainscreen.py" line="377"/>
<source>Toxygen is Tox client written on Python.
Version: </source>
<translation>Toxygen is Tox client written on Python.
Version:</translation>
</message>
<message>
<location filename="profile.py" line="827"/>
<location filename="profile.py" line="880"/>
<source>Friend added without sending friend request</source>
<translation>Friend added without sending friend request</translation>
</message>
<message>
<location filename="list_items.py" line="234"/>
<location filename="list_items.py" line="275"/>
<source>Choose folder</source>
<translation>Choose folder</translation>
</message>
<message>
<location filename="mainscreen.py" line="124"/>
<location filename="mainscreen.py" line="135"/>
<source>Send screenshot</source>
<translation>Send screenshot</translation>
</message>
<message>
<location filename="mainscreen.py" line="125"/>
<location filename="mainscreen.py" line="136"/>
<source>Send file</source>
<translation>Send file</translation>
</message>
<message>
<location filename="mainscreen.py" line="126"/>
<location filename="mainscreen.py" line="137"/>
<source>Send message</source>
<translation>Send message</translation>
</message>
<message>
<location filename="mainscreen.py" line="127"/>
<location filename="mainscreen.py" line="138"/>
<source>Start audio call with friend</source>
<translation>Start audio call with friend</translation>
</message>
<message>
<location filename="mainscreen.py" line="462"/>
<location filename="mainscreen.py" line="477"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="110"/>
<location filename="mainscreen.py" line="121"/>
<source>List of plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="123"/>
<location filename="mainscreen.py" line="134"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="129"/>
<location filename="mainscreen.py" line="140"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="130"/>
<location filename="mainscreen.py" line="141"/>
<source>Online</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="473"/>
<source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="493"/>
<source>Notes about user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="64"/>
<source>Copy link location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="67"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="70"/>
<source>Select all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="73"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="76"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="79"/>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="82"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="85"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="106"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="286"/>
<location filename="menu.py" line="294"/>
<source>Network settings</source>
<translation>Network settings</translation>
</message>
<message>
<location filename="menu.py" line="292"/>
<location filename="menu.py" line="300"/>
<source>Restart TOX core</source>
<translation>Restart Tox core</translation>
</message>
@ -260,12 +328,12 @@ Version:</translation>
<context>
<name>PluginWindow</name>
<message>
<location filename="plugins/plugin_super_class.py" line="121"/>
<location filename="plugins/plugin_super_class.py" line="130"/>
<source>List of commands for plugin {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="plugins/plugin_super_class.py" line="122"/>
<location filename="plugins/plugin_super_class.py" line="131"/>
<source>No commands available</source>
<translation type="unfinished"></translation>
</message>
@ -273,125 +341,130 @@ Version:</translation>
<context>
<name>PluginsForm</name>
<message>
<location filename="menu.py" line="624"/>
<location filename="menu.py" line="632"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="625"/>
<location filename="menu.py" line="633"/>
<source>Open selected plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="637"/>
<location filename="menu.py" line="645"/>
<source>No GUI found for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="651"/>
<location filename="menu.py" line="660"/>
<source>No description available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="663"/>
<location filename="menu.py" line="676"/>
<source>Disable plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="665"/>
<location filename="menu.py" line="678"/>
<source>Enable plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="668"/>
<source>No plugins found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="161"/>
<location filename="menu.py" line="163"/>
<source>Export profile</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="162"/>
<location filename="menu.py" line="164"/>
<source>Profile settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="163"/>
<location filename="menu.py" line="165"/>
<source>Name:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="164"/>
<location filename="menu.py" line="166"/>
<source>Status:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="165"/>
<location filename="menu.py" line="167"/>
<source>TOX ID:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="166"/>
<location filename="menu.py" line="168"/>
<source>Copy TOX ID</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="167"/>
<location filename="menu.py" line="169"/>
<source>New avatar</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="168"/>
<location filename="menu.py" line="170"/>
<source>Reset avatar</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="169"/>
<location filename="menu.py" line="171"/>
<source>New NoSpam</source>
<translation>New NoSpam</translation>
</message>
<message>
<location filename="menu.py" line="170"/>
<location filename="menu.py" line="172"/>
<source>Profile password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="171"/>
<location filename="menu.py" line="173"/>
<source>Password (at least 8 symbols)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="172"/>
<location filename="menu.py" line="174"/>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="173"/>
<location filename="menu.py" line="175"/>
<source>Set password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="191"/>
<location filename="menu.py" line="193"/>
<source>Passwords do not match</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="175"/>
<location filename="menu.py" line="177"/>
<source>Leaving blank will reset current password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="176"/>
<location filename="menu.py" line="178"/>
<source>There is no way to recover lost passwords</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="187"/>
<location filename="menu.py" line="189"/>
<source>Password must be at least 8 symbols</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="211"/>
<location filename="menu.py" line="213"/>
<source>Choose avatar</source>
<translation type="unfinished"></translation>
</message>
@ -399,17 +472,17 @@ Version:</translation>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="584"/>
<location filename="menu.py" line="592"/>
<source>Audio settings</source>
<translation>Audio settings</translation>
</message>
<message>
<location filename="menu.py" line="585"/>
<location filename="menu.py" line="593"/>
<source>Input device:</source>
<translation>Input device:</translation>
</message>
<message>
<location filename="menu.py" line="586"/>
<location filename="menu.py" line="594"/>
<source>Output device:</source>
<translation>Output device:</translation>
</message>
@ -417,12 +490,12 @@ Version:</translation>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1168"/>
<location filename="profile.py" line="1222"/>
<source>Incoming video call</source>
<translation>Incoming video call</translation>
</message>
<message>
<location filename="profile.py" line="1170"/>
<location filename="profile.py" line="1224"/>
<source>Incoming audio call</source>
<translation>Incoming audio call</translation>
</message>
@ -430,17 +503,17 @@ Version:</translation>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="521"/>
<location filename="menu.py" line="529"/>
<source>Interface settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="522"/>
<location filename="menu.py" line="530"/>
<source>Theme:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="523"/>
<location filename="menu.py" line="531"/>
<source>Language:</source>
<translation></translation>
</message>
@ -496,22 +569,22 @@ Version:</translation>
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="461"/>
<location filename="menu.py" line="469"/>
<source>Notification settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="462"/>
<location filename="menu.py" line="470"/>
<source>Enable notifications</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="463"/>
<location filename="menu.py" line="471"/>
<source>Enable call&apos;s sound</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="464"/>
<location filename="menu.py" line="472"/>
<source>Enable sound notifications</source>
<translation></translation>
</message>
@ -519,77 +592,77 @@ Version:</translation>
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="378"/>
<location filename="menu.py" line="386"/>
<source>Privacy settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="379"/>
<location filename="menu.py" line="387"/>
<source>Save chat history</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="380"/>
<location filename="menu.py" line="388"/>
<source>Allow file auto accept</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="381"/>
<location filename="menu.py" line="389"/>
<source>Send typing notifications</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="382"/>
<location filename="menu.py" line="390"/>
<source>Auto accept default path:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="383"/>
<location filename="menu.py" line="391"/>
<source>Change</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="384"/>
<location filename="menu.py" line="392"/>
<source>Allow inlines</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="407"/>
<location filename="menu.py" line="415"/>
<source>Chat history</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="410"/>
<location filename="menu.py" line="418"/>
<source>History will be cleaned! Continue?</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="386"/>
<location filename="menu.py" line="394"/>
<source>Blocked users:</source>
<translation>Blocked users:</translation>
</message>
<message>
<location filename="menu.py" line="387"/>
<location filename="menu.py" line="395"/>
<source>Unblock</source>
<translation>Unblock</translation>
</message>
<message>
<location filename="menu.py" line="388"/>
<location filename="menu.py" line="396"/>
<source>Block user</source>
<translation>Block user</translation>
</message>
<message>
<location filename="menu.py" line="394"/>
<location filename="menu.py" line="402"/>
<source>Add to friend list</source>
<translation>Add to friend list</translation>
</message>
<message>
<location filename="menu.py" line="395"/>
<location filename="menu.py" line="403"/>
<source>Do you want to add this user to friend list?</source>
<translation>Do you want to add this user to friend list?</translation>
</message>
<message>
<location filename="menu.py" line="385"/>
<location filename="menu.py" line="393"/>
<source>Block by TOX ID:</source>
<translation>Block by TOX ID:</translation>
</message>

View File

@ -3,50 +3,63 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="69"/>
<location filename="menu.py" line="70"/>
<source>Add contact</source>
<translation>Rajouter un contact</translation>
</message>
<message>
<location filename="menu.py" line="71"/>
<location filename="menu.py" line="72"/>
<source>TOX ID:</source>
<translation>ID TOX :</translation>
</message>
<message>
<location filename="menu.py" line="72"/>
<location filename="menu.py" line="73"/>
<source>Message:</source>
<translation>Message :</translation>
</message>
<message>
<location filename="menu.py" line="74"/>
<source>TOX ID or public key of contact</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Callback</name>
<message>
<location filename="callbacks.py" line="182"/>
<source>File from</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="70"/>
<location filename="menu.py" line="71"/>
<source>Send request</source>
<translation>Envoyer une demande</translation>
</message>
<message>
<location filename="menu.py" line="287"/>
<location filename="menu.py" line="295"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="288"/>
<location filename="menu.py" line="296"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="289"/>
<location filename="menu.py" line="297"/>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
<message>
<location filename="menu.py" line="290"/>
<location filename="menu.py" line="298"/>
<source>IP:</source>
<translation>IP :</translation>
</message>
<message>
<location filename="menu.py" line="291"/>
<location filename="menu.py" line="299"/>
<source>Port:</source>
<translation>Port :</translation>
</message>
@ -56,12 +69,12 @@
<translation type="obsolete">Contacts connectés</translation>
</message>
<message>
<location filename="menu.py" line="293"/>
<location filename="menu.py" line="301"/>
<source>HTTP</source>
<translation>HTTP</translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="303"/>
<source>WARNING:
using proxy with enabled UDP
can produce IP leak</source>
@ -71,58 +84,58 @@ can produce IP leak</source>
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="115"/>
<location filename="mainscreen.py" line="126"/>
<source>Profile</source>
<translation>Profile</translation>
</message>
<message>
<location filename="mainscreen.py" line="121"/>
<location filename="mainscreen.py" line="132"/>
<source>Settings</source>
<translation>Paramêtres</translation>
</message>
<message>
<location filename="mainscreen.py" line="363"/>
<location filename="mainscreen.py" line="376"/>
<source>About</source>
<translation>À Propos</translation>
</message>
<message>
<location filename="mainscreen.py" line="114"/>
<location filename="mainscreen.py" line="125"/>
<source>Add contact</source>
<translation>Rajouter un contact</translation>
</message>
<message>
<location filename="mainscreen.py" line="116"/>
<location filename="mainscreen.py" line="127"/>
<source>Privacy</source>
<translation>Confidentialité</translation>
</message>
<message>
<location filename="mainscreen.py" line="117"/>
<location filename="mainscreen.py" line="128"/>
<source>Interface</source>
<translation>Interface</translation>
</message>
<message>
<location filename="mainscreen.py" line="118"/>
<location filename="mainscreen.py" line="129"/>
<source>Notifications</source>
<translation>Notifications</translation>
</message>
<message>
<location filename="mainscreen.py" line="119"/>
<location filename="mainscreen.py" line="130"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
<location filename="mainscreen.py" line="120"/>
<location filename="mainscreen.py" line="131"/>
<source>About program</source>
<translation>À propos du programme</translation>
</message>
<message>
<location filename="profile.py" line="854"/>
<location filename="profile.py" line="907"/>
<source>User {} wants to add you to contact list. Message:
{}</source>
<translation>L&apos;Utilisateur {} veut vout rajouter à sa liste de contacts. Message : {}</translation>
</message>
<message>
<location filename="profile.py" line="856"/>
<location filename="profile.py" line="909"/>
<source>Friend request</source>
<translation>Demande d&apos;amis</translation>
</message>
@ -132,47 +145,47 @@ can produce IP leak</source>
<translation type="obsolete">Toxygen est un client Tox écris en Python 2.7. Version : </translation>
</message>
<message>
<location filename="mainscreen.py" line="411"/>
<location filename="mainscreen.py" line="424"/>
<source>Choose file</source>
<translation>Choisir un fichier</translation>
</message>
<message>
<location filename="mainscreen.py" line="452"/>
<location filename="mainscreen.py" line="465"/>
<source>Disallow auto accept</source>
<translation>Désactiver l&apos;auto-réception</translation>
</message>
<message>
<location filename="mainscreen.py" line="453"/>
<location filename="mainscreen.py" line="466"/>
<source>Allow auto accept</source>
<translation>Activer l&apos;auto-réception</translation>
</message>
<message>
<location filename="mainscreen.py" line="455"/>
<location filename="mainscreen.py" line="468"/>
<source>Set alias</source>
<translation>Définir un alias</translation>
</message>
<message>
<location filename="mainscreen.py" line="456"/>
<location filename="mainscreen.py" line="469"/>
<source>Clear history</source>
<translation>Vider l&apos;historique</translation>
</message>
<message>
<location filename="mainscreen.py" line="457"/>
<location filename="mainscreen.py" line="470"/>
<source>Copy public key</source>
<translation>Copier la clé publique</translation>
</message>
<message>
<location filename="mainscreen.py" line="459"/>
<location filename="mainscreen.py" line="472"/>
<source>Remove friend</source>
<translation>Retirer un ami</translation>
</message>
<message>
<location filename="profile.py" line="700"/>
<location filename="profile.py" line="748"/>
<source>Enter new alias for friend {} or leave empty to use friend&apos;s name:</source>
<translation>Entrez un nouvel alias pour l&apos;ami {} ou laissez vide pour garder son nom de base :</translation>
</message>
<message>
<location filename="mainscreen.py" line="122"/>
<location filename="mainscreen.py" line="133"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
@ -182,82 +195,137 @@ can produce IP leak</source>
<translation type="obsolete">Trouver le contact</translation>
</message>
<message>
<location filename="profile.py" line="826"/>
<location filename="profile.py" line="879"/>
<source>Friend added</source>
<translation>Ami rajouté</translation>
</message>
<message>
<location filename="mainscreen.py" line="364"/>
<location filename="mainscreen.py" line="377"/>
<source>Toxygen is Tox client written on Python.
Version: </source>
<translation>Toxygen est un client Tox écrit en Python.
Version :</translation>
</message>
<message>
<location filename="profile.py" line="827"/>
<location filename="profile.py" line="880"/>
<source>Friend added without sending friend request</source>
<translation>Ami rajouté sans avoir envoyé de demande</translation>
</message>
<message>
<location filename="list_items.py" line="234"/>
<location filename="list_items.py" line="275"/>
<source>Choose folder</source>
<translation>Choisir le dossier</translation>
</message>
<message>
<location filename="mainscreen.py" line="124"/>
<location filename="mainscreen.py" line="135"/>
<source>Send screenshot</source>
<translation>Envoyer une capture d&apos;écran</translation>
</message>
<message>
<location filename="mainscreen.py" line="125"/>
<location filename="mainscreen.py" line="136"/>
<source>Send file</source>
<translation>Envoyer le fichier</translation>
</message>
<message>
<location filename="mainscreen.py" line="126"/>
<location filename="mainscreen.py" line="137"/>
<source>Send message</source>
<translation>Envoyer le message</translation>
</message>
<message>
<location filename="mainscreen.py" line="127"/>
<location filename="mainscreen.py" line="138"/>
<source>Start audio call with friend</source>
<translation>Lancer un appel audio avec un ami</translation>
</message>
<message>
<location filename="mainscreen.py" line="462"/>
<location filename="mainscreen.py" line="477"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="110"/>
<location filename="mainscreen.py" line="121"/>
<source>List of plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="123"/>
<location filename="mainscreen.py" line="134"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="129"/>
<location filename="mainscreen.py" line="140"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="130"/>
<location filename="mainscreen.py" line="141"/>
<source>Online</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="473"/>
<source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="493"/>
<source>Notes about user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="64"/>
<source>Copy link location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="67"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="70"/>
<source>Select all</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="73"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="76"/>
<source>Paste</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="79"/>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="82"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="85"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="widgets.py" line="106"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="286"/>
<location filename="menu.py" line="294"/>
<source>Network settings</source>
<translation>Paramètres réseaux</translation>
</message>
<message>
<location filename="menu.py" line="292"/>
<location filename="menu.py" line="300"/>
<source>Restart TOX core</source>
<translation>Relancer le noyau TOX</translation>
</message>
@ -265,12 +333,12 @@ Version :</translation>
<context>
<name>PluginWindow</name>
<message>
<location filename="plugins/plugin_super_class.py" line="121"/>
<location filename="plugins/plugin_super_class.py" line="130"/>
<source>List of commands for plugin {}</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="plugins/plugin_super_class.py" line="122"/>
<location filename="plugins/plugin_super_class.py" line="131"/>
<source>No commands available</source>
<translation type="unfinished"></translation>
</message>
@ -278,125 +346,130 @@ Version :</translation>
<context>
<name>PluginsForm</name>
<message>
<location filename="menu.py" line="624"/>
<location filename="menu.py" line="632"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="625"/>
<location filename="menu.py" line="633"/>
<source>Open selected plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="637"/>
<location filename="menu.py" line="645"/>
<source>No GUI found for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="651"/>
<location filename="menu.py" line="660"/>
<source>No description available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="663"/>
<location filename="menu.py" line="676"/>
<source>Disable plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="665"/>
<location filename="menu.py" line="678"/>
<source>Enable plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="668"/>
<source>No plugins found</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="161"/>
<location filename="menu.py" line="163"/>
<source>Export profile</source>
<translation>Exporter le profile</translation>
</message>
<message>
<location filename="menu.py" line="162"/>
<location filename="menu.py" line="164"/>
<source>Profile settings</source>
<translation>Paramêtres du profil</translation>
</message>
<message>
<location filename="menu.py" line="163"/>
<location filename="menu.py" line="165"/>
<source>Name:</source>
<translation>Nom :</translation>
</message>
<message>
<location filename="menu.py" line="164"/>
<location filename="menu.py" line="166"/>
<source>Status:</source>
<translation>Status :</translation>
</message>
<message>
<location filename="menu.py" line="165"/>
<location filename="menu.py" line="167"/>
<source>TOX ID:</source>
<translation>ID TOX :</translation>
</message>
<message>
<location filename="menu.py" line="166"/>
<location filename="menu.py" line="168"/>
<source>Copy TOX ID</source>
<translation>Copier l&apos;ID TOX</translation>
</message>
<message>
<location filename="menu.py" line="167"/>
<location filename="menu.py" line="169"/>
<source>New avatar</source>
<translation>Nouvel avatar</translation>
</message>
<message>
<location filename="menu.py" line="168"/>
<location filename="menu.py" line="170"/>
<source>Reset avatar</source>
<translation>Réinitialiser l&apos;avatar</translation>
</message>
<message>
<location filename="menu.py" line="169"/>
<location filename="menu.py" line="171"/>
<source>New NoSpam</source>
<translation>Nouveau NoSpam</translation>
</message>
<message>
<location filename="menu.py" line="170"/>
<location filename="menu.py" line="172"/>
<source>Profile password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="171"/>
<location filename="menu.py" line="173"/>
<source>Password (at least 8 symbols)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="172"/>
<location filename="menu.py" line="174"/>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="173"/>
<location filename="menu.py" line="175"/>
<source>Set password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="191"/>
<location filename="menu.py" line="193"/>
<source>Passwords do not match</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="175"/>
<location filename="menu.py" line="177"/>
<source>Leaving blank will reset current password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="176"/>
<location filename="menu.py" line="178"/>
<source>There is no way to recover lost passwords</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="187"/>
<location filename="menu.py" line="189"/>
<source>Password must be at least 8 symbols</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="211"/>
<location filename="menu.py" line="213"/>
<source>Choose avatar</source>
<translation type="unfinished"></translation>
</message>
@ -404,17 +477,17 @@ Version :</translation>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="584"/>
<location filename="menu.py" line="592"/>
<source>Audio settings</source>
<translation>Paramètres audio</translation>
</message>
<message>
<location filename="menu.py" line="585"/>
<location filename="menu.py" line="593"/>
<source>Input device:</source>
<translation>Péripherique d&apos;entrée :</translation>
</message>
<message>
<location filename="menu.py" line="586"/>
<location filename="menu.py" line="594"/>
<source>Output device:</source>
<translation>Péripherique de sortie :</translation>
</message>
@ -422,12 +495,12 @@ Version :</translation>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1168"/>
<location filename="profile.py" line="1222"/>
<source>Incoming video call</source>
<translation>Appel vidéo entrant</translation>
</message>
<message>
<location filename="profile.py" line="1170"/>
<location filename="profile.py" line="1224"/>
<source>Incoming audio call</source>
<translation>Appel audio entrant</translation>
</message>
@ -435,17 +508,17 @@ Version :</translation>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="521"/>
<location filename="menu.py" line="529"/>
<source>Interface settings</source>
<translation>Paramêtres de l&apos;interface</translation>
</message>
<message>
<location filename="menu.py" line="522"/>
<location filename="menu.py" line="530"/>
<source>Theme:</source>
<translation>Thème :</translation>
</message>
<message>
<location filename="menu.py" line="523"/>
<location filename="menu.py" line="531"/>
<source>Language:</source>
<translation>Langue :</translation>
</message>
@ -501,22 +574,22 @@ Version :</translation>
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="461"/>
<location filename="menu.py" line="469"/>
<source>Notification settings</source>
<translation>Paramêtres de notification</translation>
</message>
<message>
<location filename="menu.py" line="462"/>
<location filename="menu.py" line="470"/>
<source>Enable notifications</source>
<translation>Activer les notifications</translation>
</message>
<message>
<location filename="menu.py" line="463"/>
<location filename="menu.py" line="471"/>
<source>Enable call&apos;s sound</source>
<translation>Activer les sons d&apos;appel</translation>
</message>
<message>
<location filename="menu.py" line="464"/>
<location filename="menu.py" line="472"/>
<source>Enable sound notifications</source>
<translation>Activer les sons de notifications</translation>
</message>
@ -524,77 +597,77 @@ Version :</translation>
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="378"/>
<location filename="menu.py" line="386"/>
<source>Privacy settings</source>
<translation>Paramêtres de confidentialité</translation>
</message>
<message>
<location filename="menu.py" line="379"/>
<location filename="menu.py" line="387"/>
<source>Save chat history</source>
<translation>Sauvegarder l&apos;historique de chat</translation>
</message>
<message>
<location filename="menu.py" line="380"/>
<location filename="menu.py" line="388"/>
<source>Allow file auto accept</source>
<translation>Autoriser les fichier automatiquement</translation>
</message>
<message>
<location filename="menu.py" line="381"/>
<location filename="menu.py" line="389"/>
<source>Send typing notifications</source>
<translation>Notifier la frappe</translation>
</message>
<message>
<location filename="menu.py" line="382"/>
<location filename="menu.py" line="390"/>
<source>Auto accept default path:</source>
<translation>Chemin d&apos;accès des fichiers acceptés automatiquement :</translation>
</message>
<message>
<location filename="menu.py" line="383"/>
<location filename="menu.py" line="391"/>
<source>Change</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="menu.py" line="384"/>
<location filename="menu.py" line="392"/>
<source>Allow inlines</source>
<translation>Activer l&apos;auto-réception</translation>
</message>
<message>
<location filename="menu.py" line="407"/>
<location filename="menu.py" line="415"/>
<source>Chat history</source>
<translation>Historique de chat</translation>
</message>
<message>
<location filename="menu.py" line="410"/>
<location filename="menu.py" line="418"/>
<source>History will be cleaned! Continue?</source>
<translation>L&apos;Historique va être nettoyé ! Confirmer ?</translation>
</message>
<message>
<location filename="menu.py" line="386"/>
<location filename="menu.py" line="394"/>
<source>Blocked users:</source>
<translation>Utilisateurs bloqués :</translation>
</message>
<message>
<location filename="menu.py" line="387"/>
<location filename="menu.py" line="395"/>
<source>Unblock</source>
<translation>Débloquer</translation>
</message>
<message>
<location filename="menu.py" line="388"/>
<location filename="menu.py" line="396"/>
<source>Block user</source>
<translation>Bloquer l&apos;utilisateur</translation>
</message>
<message>
<location filename="menu.py" line="394"/>
<location filename="menu.py" line="402"/>
<source>Add to friend list</source>
<translation>Ajouter à la liste des amis</translation>
</message>
<message>
<location filename="menu.py" line="395"/>
<location filename="menu.py" line="403"/>
<source>Do you want to add this user to friend list?</source>
<translation>Voulez vous rajouter cet utilisateur à votre liste d&apos;amis ?</translation>
</message>
<message>
<location filename="menu.py" line="385"/>
<location filename="menu.py" line="393"/>
<source>Block by TOX ID:</source>
<translation>Bloquer l&apos;ID TOX :</translation>
</message>

Binary file not shown.

View File

@ -4,50 +4,63 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="69"/>
<location filename="menu.py" line="70"/>
<source>Add contact</source>
<translation>Добавить контакт</translation>
</message>
<message>
<location filename="menu.py" line="71"/>
<location filename="menu.py" line="72"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="72"/>
<location filename="menu.py" line="73"/>
<source>Message:</source>
<translation>Сообщение:</translation>
</message>
<message>
<location filename="menu.py" line="74"/>
<source>TOX ID or public key of contact</source>
<translation>TOX ID или публичный ключ контакта</translation>
</message>
</context>
<context>
<name>Callback</name>
<message>
<location filename="callbacks.py" line="182"/>
<source>File from</source>
<translation>Файл от</translation>
</message>
</context>
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="70"/>
<location filename="menu.py" line="71"/>
<source>Send request</source>
<translation>Отправить запрос</translation>
</message>
<message>
<location filename="menu.py" line="287"/>
<location filename="menu.py" line="295"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="288"/>
<location filename="menu.py" line="296"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="289"/>
<location filename="menu.py" line="297"/>
<source>Proxy</source>
<translation>Прокси</translation>
</message>
<message>
<location filename="menu.py" line="290"/>
<location filename="menu.py" line="298"/>
<source>IP:</source>
<translation>IP:</translation>
</message>
<message>
<location filename="menu.py" line="291"/>
<location filename="menu.py" line="299"/>
<source>Port:</source>
<translation>Порт:</translation>
</message>
@ -57,16 +70,16 @@
<translation type="obsolete">Контакты в сети</translation>
</message>
<message>
<location filename="menu.py" line="293"/>
<location filename="menu.py" line="301"/>
<source>HTTP</source>
<translation>HTTP</translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="303"/>
<source>WARNING:
using proxy with enabled UDP
can produce IP leak</source>
<translation type="unfinished">Предупреждение:
<translation>Предупреждение:
использование прокси с UDP
может привести к утечке IP</translation>
</message>
@ -74,104 +87,104 @@ can produce IP leak</source>
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="115"/>
<location filename="mainscreen.py" line="126"/>
<source>Profile</source>
<translation>Профиль</translation>
</message>
<message>
<location filename="mainscreen.py" line="121"/>
<location filename="mainscreen.py" line="132"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<location filename="mainscreen.py" line="363"/>
<location filename="mainscreen.py" line="376"/>
<source>About</source>
<translation>О программе</translation>
</message>
<message>
<location filename="mainscreen.py" line="114"/>
<location filename="mainscreen.py" line="125"/>
<source>Add contact</source>
<translation>Добавить контакт</translation>
</message>
<message>
<location filename="mainscreen.py" line="116"/>
<location filename="mainscreen.py" line="127"/>
<source>Privacy</source>
<translation>Приватность</translation>
</message>
<message>
<location filename="mainscreen.py" line="117"/>
<location filename="mainscreen.py" line="128"/>
<source>Interface</source>
<translation>Интерфейс</translation>
</message>
<message>
<location filename="mainscreen.py" line="118"/>
<location filename="mainscreen.py" line="129"/>
<source>Notifications</source>
<translation>Уведомления</translation>
</message>
<message>
<location filename="mainscreen.py" line="119"/>
<location filename="mainscreen.py" line="130"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="mainscreen.py" line="120"/>
<location filename="mainscreen.py" line="131"/>
<source>About program</source>
<translation>О программе</translation>
</message>
<message>
<location filename="profile.py" line="854"/>
<location filename="profile.py" line="907"/>
<source>User {} wants to add you to contact list. Message:
{}</source>
<translation>Пользователь {} хочет добавить Вас в список контактов. Сообщение:
{}</translation>
</message>
<message>
<location filename="profile.py" line="856"/>
<location filename="profile.py" line="909"/>
<source>Friend request</source>
<translation>Запрос на добавление в друзья</translation>
</message>
<message>
<location filename="mainscreen.py" line="411"/>
<location filename="mainscreen.py" line="424"/>
<source>Choose file</source>
<translation>Выберите файл</translation>
</message>
<message>
<location filename="mainscreen.py" line="452"/>
<location filename="mainscreen.py" line="465"/>
<source>Disallow auto accept</source>
<translation>Запретить автоматическое получение файлов</translation>
</message>
<message>
<location filename="mainscreen.py" line="453"/>
<location filename="mainscreen.py" line="466"/>
<source>Allow auto accept</source>
<translation>Разрешить автоматическое получение файлов</translation>
</message>
<message>
<location filename="mainscreen.py" line="455"/>
<location filename="mainscreen.py" line="468"/>
<source>Set alias</source>
<translation>Изменить псевдоним</translation>
</message>
<message>
<location filename="mainscreen.py" line="456"/>
<location filename="mainscreen.py" line="469"/>
<source>Clear history</source>
<translation>Очистить историю</translation>
</message>
<message>
<location filename="mainscreen.py" line="457"/>
<location filename="mainscreen.py" line="470"/>
<source>Copy public key</source>
<translation>Копировать публичный ключ</translation>
</message>
<message>
<location filename="mainscreen.py" line="459"/>
<location filename="mainscreen.py" line="472"/>
<source>Remove friend</source>
<translation>Удалить друга</translation>
</message>
<message>
<location filename="profile.py" line="700"/>
<location filename="profile.py" line="748"/>
<source>Enter new alias for friend {} or leave empty to use friend&apos;s name:</source>
<translation>Введите новый псевдоним для друга {} или оставьте пустым для использования его имени:</translation>
</message>
<message>
<location filename="mainscreen.py" line="122"/>
<location filename="mainscreen.py" line="133"/>
<source>Audio</source>
<translation>Аудио</translation>
</message>
@ -181,81 +194,136 @@ can produce IP leak</source>
<translation type="obsolete">Найти контакт</translation>
</message>
<message>
<location filename="profile.py" line="826"/>
<location filename="profile.py" line="879"/>
<source>Friend added</source>
<translation>Друг добавлен</translation>
</message>
<message>
<location filename="mainscreen.py" line="364"/>
<location filename="mainscreen.py" line="377"/>
<source>Toxygen is Tox client written on Python.
Version: </source>
<translation>Toxygen - клиент для мессенджера Tox, написанный на Python. Версия: </translation>
</message>
<message>
<location filename="profile.py" line="827"/>
<location filename="profile.py" line="880"/>
<source>Friend added without sending friend request</source>
<translation>Друг добавлен без отправки запроса на добавление в друзья</translation>
</message>
<message>
<location filename="list_items.py" line="234"/>
<location filename="list_items.py" line="275"/>
<source>Choose folder</source>
<translation>Выбрать папку</translation>
</message>
<message>
<location filename="mainscreen.py" line="124"/>
<location filename="mainscreen.py" line="135"/>
<source>Send screenshot</source>
<translation>Отправить снимок экрана</translation>
</message>
<message>
<location filename="mainscreen.py" line="125"/>
<location filename="mainscreen.py" line="136"/>
<source>Send file</source>
<translation>Отправить файл</translation>
</message>
<message>
<location filename="mainscreen.py" line="126"/>
<location filename="mainscreen.py" line="137"/>
<source>Send message</source>
<translation>Отправить сообщение</translation>
</message>
<message>
<location filename="mainscreen.py" line="127"/>
<location filename="mainscreen.py" line="138"/>
<source>Start audio call with friend</source>
<translation>Начать аудиозвонок с другом</translation>
</message>
<message>
<location filename="mainscreen.py" line="462"/>
<location filename="mainscreen.py" line="477"/>
<source>Plugins</source>
<translation>Плагины</translation>
</message>
<message>
<location filename="mainscreen.py" line="110"/>
<location filename="mainscreen.py" line="121"/>
<source>List of plugins</source>
<translation>Список плагинов</translation>
</message>
<message>
<location filename="mainscreen.py" line="123"/>
<location filename="mainscreen.py" line="134"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
<location filename="mainscreen.py" line="129"/>
<location filename="mainscreen.py" line="140"/>
<source>All</source>
<translation>Все</translation>
</message>
<message>
<location filename="mainscreen.py" line="130"/>
<location filename="mainscreen.py" line="141"/>
<source>Online</source>
<translation>Онлайн</translation>
</message>
<message>
<location filename="mainscreen.py" line="473"/>
<source>Notes</source>
<translation>Заметки</translation>
</message>
<message>
<location filename="mainscreen.py" line="493"/>
<source>Notes about user</source>
<translation>Заметки о пользователе</translation>
</message>
<message>
<location filename="widgets.py" line="64"/>
<source>Copy link location</source>
<translation>Копировать адрес ссылки</translation>
</message>
<message>
<location filename="widgets.py" line="67"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
<location filename="widgets.py" line="70"/>
<source>Select all</source>
<translation>Выделить всё</translation>
</message>
<message>
<location filename="widgets.py" line="73"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="widgets.py" line="76"/>
<source>Paste</source>
<translation>Вставить</translation>
</message>
<message>
<location filename="widgets.py" line="79"/>
<source>Cut</source>
<translation>Вырезать</translation>
</message>
<message>
<location filename="widgets.py" line="82"/>
<source>Undo</source>
<translation>Отменить</translation>
</message>
<message>
<location filename="widgets.py" line="85"/>
<source>Redo</source>
<translation>Повторить</translation>
</message>
<message>
<location filename="widgets.py" line="106"/>
<source>Save</source>
<translation>Сохранить</translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="286"/>
<location filename="menu.py" line="294"/>
<source>Network settings</source>
<translation>Настройки сети</translation>
</message>
<message>
<location filename="menu.py" line="292"/>
<location filename="menu.py" line="300"/>
<source>Restart TOX core</source>
<translation>Перезапустить ядро TOX</translation>
</message>
@ -263,12 +331,12 @@ Version: </source>
<context>
<name>PluginWindow</name>
<message>
<location filename="plugins/plugin_super_class.py" line="121"/>
<location filename="plugins/plugin_super_class.py" line="130"/>
<source>List of commands for plugin {}</source>
<translation>Список команд для плагина {}</translation>
</message>
<message>
<location filename="plugins/plugin_super_class.py" line="122"/>
<location filename="plugins/plugin_super_class.py" line="131"/>
<source>No commands available</source>
<translation>Команды не найдены</translation>
</message>
@ -276,65 +344,70 @@ Version: </source>
<context>
<name>PluginsForm</name>
<message>
<location filename="menu.py" line="624"/>
<location filename="menu.py" line="632"/>
<source>Plugins</source>
<translation>Плагины</translation>
</message>
<message>
<location filename="menu.py" line="625"/>
<location filename="menu.py" line="633"/>
<source>Open selected plugin</source>
<translation>Открыть выбранный плагин</translation>
</message>
<message>
<location filename="menu.py" line="637"/>
<location filename="menu.py" line="645"/>
<source>No GUI found for this plugin</source>
<translation>GUI для данного плагина не найден</translation>
</message>
<message>
<location filename="menu.py" line="651"/>
<location filename="menu.py" line="660"/>
<source>No description available</source>
<translation>Описание недоступно</translation>
</message>
<message>
<location filename="menu.py" line="663"/>
<location filename="menu.py" line="676"/>
<source>Disable plugin</source>
<translation>Отключить плагин</translation>
</message>
<message>
<location filename="menu.py" line="665"/>
<location filename="menu.py" line="678"/>
<source>Enable plugin</source>
<translation>Включить плагин</translation>
</message>
<message>
<location filename="menu.py" line="668"/>
<source>No plugins found</source>
<translation>Плагины не найдены</translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="161"/>
<location filename="menu.py" line="163"/>
<source>Export profile</source>
<translation>Экспорт профиля</translation>
</message>
<message>
<location filename="menu.py" line="162"/>
<location filename="menu.py" line="164"/>
<source>Profile settings</source>
<translation>Настройки профиля</translation>
</message>
<message>
<location filename="menu.py" line="163"/>
<location filename="menu.py" line="165"/>
<source>Name:</source>
<translation>Имя:</translation>
</message>
<message>
<location filename="menu.py" line="164"/>
<location filename="menu.py" line="166"/>
<source>Status:</source>
<translation>Статус:</translation>
</message>
<message>
<location filename="menu.py" line="165"/>
<location filename="menu.py" line="167"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="166"/>
<location filename="menu.py" line="168"/>
<source>Copy TOX ID</source>
<translation>Копировать TOX ID</translation>
</message>
@ -344,62 +417,62 @@ Version: </source>
<translation type="obsolete">Язык:</translation>
</message>
<message>
<location filename="menu.py" line="167"/>
<location filename="menu.py" line="169"/>
<source>New avatar</source>
<translation>Новый аватар</translation>
</message>
<message>
<location filename="menu.py" line="168"/>
<location filename="menu.py" line="170"/>
<source>Reset avatar</source>
<translation>Сбросить аватар</translation>
</message>
<message>
<location filename="menu.py" line="169"/>
<location filename="menu.py" line="171"/>
<source>New NoSpam</source>
<translation>Новый NoSpam</translation>
</message>
<message>
<location filename="menu.py" line="170"/>
<location filename="menu.py" line="172"/>
<source>Profile password</source>
<translation>Пароль профиля</translation>
</message>
<message>
<location filename="menu.py" line="171"/>
<location filename="menu.py" line="173"/>
<source>Password (at least 8 symbols)</source>
<translation>Пароль (минимум 8 символов)</translation>
</message>
<message>
<location filename="menu.py" line="172"/>
<location filename="menu.py" line="174"/>
<source>Confirm password</source>
<translation>Подтверждение пароля</translation>
</message>
<message>
<location filename="menu.py" line="173"/>
<location filename="menu.py" line="175"/>
<source>Set password</source>
<translation>Изменить пароль</translation>
</message>
<message>
<location filename="menu.py" line="191"/>
<location filename="menu.py" line="193"/>
<source>Passwords do not match</source>
<translation>Пароли не совпадают</translation>
</message>
<message>
<location filename="menu.py" line="175"/>
<location filename="menu.py" line="177"/>
<source>Leaving blank will reset current password</source>
<translation>Пустое поле сбросит текущий пароль</translation>
</message>
<message>
<location filename="menu.py" line="176"/>
<location filename="menu.py" line="178"/>
<source>There is no way to recover lost passwords</source>
<translation>Восстановление забытых паролей не поддерживается</translation>
</message>
<message>
<location filename="menu.py" line="187"/>
<location filename="menu.py" line="189"/>
<source>Password must be at least 8 symbols</source>
<translation>Пароль должен быть длиной не менее 8 символов</translation>
</message>
<message>
<location filename="menu.py" line="211"/>
<location filename="menu.py" line="213"/>
<source>Choose avatar</source>
<translation>Выбрать аватар</translation>
</message>
@ -407,17 +480,17 @@ Version: </source>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="584"/>
<location filename="menu.py" line="592"/>
<source>Audio settings</source>
<translation>Настройки аудио</translation>
</message>
<message>
<location filename="menu.py" line="585"/>
<location filename="menu.py" line="593"/>
<source>Input device:</source>
<translation>Устройство ввода:</translation>
</message>
<message>
<location filename="menu.py" line="586"/>
<location filename="menu.py" line="594"/>
<source>Output device:</source>
<translation>Устройство вывода:</translation>
</message>
@ -425,12 +498,12 @@ Version: </source>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1168"/>
<location filename="profile.py" line="1222"/>
<source>Incoming video call</source>
<translation>Входящий видеозвонок</translation>
</message>
<message>
<location filename="profile.py" line="1170"/>
<location filename="profile.py" line="1224"/>
<source>Incoming audio call</source>
<translation>Входящий аудиозвонок</translation>
</message>
@ -438,17 +511,17 @@ Version: </source>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="521"/>
<location filename="menu.py" line="529"/>
<source>Interface settings</source>
<translation>Настройки интерфейса</translation>
</message>
<message>
<location filename="menu.py" line="522"/>
<location filename="menu.py" line="530"/>
<source>Theme:</source>
<translation>Тема:</translation>
</message>
<message>
<location filename="menu.py" line="523"/>
<location filename="menu.py" line="531"/>
<source>Language:</source>
<translation>Язык:</translation>
</message>
@ -504,22 +577,22 @@ Version: </source>
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="461"/>
<location filename="menu.py" line="469"/>
<source>Notification settings</source>
<translation>Настройки уведомлений</translation>
</message>
<message>
<location filename="menu.py" line="462"/>
<location filename="menu.py" line="470"/>
<source>Enable notifications</source>
<translation>Включить уведомления</translation>
</message>
<message>
<location filename="menu.py" line="463"/>
<location filename="menu.py" line="471"/>
<source>Enable call&apos;s sound</source>
<translation>Включить звук звонка</translation>
</message>
<message>
<location filename="menu.py" line="464"/>
<location filename="menu.py" line="472"/>
<source>Enable sound notifications</source>
<translation>Включить звуковые уведомления
</translation>
@ -528,77 +601,77 @@ Version: </source>
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="378"/>
<location filename="menu.py" line="386"/>
<source>Privacy settings</source>
<translation>Настройки приватности</translation>
</message>
<message>
<location filename="menu.py" line="379"/>
<location filename="menu.py" line="387"/>
<source>Save chat history</source>
<translation>Сохранять историю переписки</translation>
</message>
<message>
<location filename="menu.py" line="380"/>
<location filename="menu.py" line="388"/>
<source>Allow file auto accept</source>
<translation>Разрешить автополучение файлов</translation>
</message>
<message>
<location filename="menu.py" line="381"/>
<location filename="menu.py" line="389"/>
<source>Send typing notifications</source>
<translation>Посылать уведомления о наборе текста</translation>
</message>
<message>
<location filename="menu.py" line="382"/>
<location filename="menu.py" line="390"/>
<source>Auto accept default path:</source>
<translation>Путь автоприема файлов:</translation>
</message>
<message>
<location filename="menu.py" line="383"/>
<location filename="menu.py" line="391"/>
<source>Change</source>
<translation>Изменить</translation>
</message>
<message>
<location filename="menu.py" line="384"/>
<location filename="menu.py" line="392"/>
<source>Allow inlines</source>
<translation>Разрешать инлайны</translation>
</message>
<message>
<location filename="menu.py" line="407"/>
<location filename="menu.py" line="415"/>
<source>Chat history</source>
<translation>История чата</translation>
</message>
<message>
<location filename="menu.py" line="410"/>
<location filename="menu.py" line="418"/>
<source>History will be cleaned! Continue?</source>
<translation>История переписки будет очищена! Продолжить?</translation>
</message>
<message>
<location filename="menu.py" line="386"/>
<location filename="menu.py" line="394"/>
<source>Blocked users:</source>
<translation>Заблокированные пользователи:</translation>
</message>
<message>
<location filename="menu.py" line="387"/>
<location filename="menu.py" line="395"/>
<source>Unblock</source>
<translation>Разблокировать</translation>
</message>
<message>
<location filename="menu.py" line="388"/>
<location filename="menu.py" line="396"/>
<source>Block user</source>
<translation>Заблокировать пользователя</translation>
</message>
<message>
<location filename="menu.py" line="394"/>
<location filename="menu.py" line="402"/>
<source>Add to friend list</source>
<translation>Добавить в список друзей</translation>
</message>
<message>
<location filename="menu.py" line="395"/>
<location filename="menu.py" line="403"/>
<source>Do you want to add this user to friend list?</source>
<translation>Добавить этого пользователя в список друзей?</translation>
</message>
<message>
<location filename="menu.py" line="385"/>
<location filename="menu.py" line="393"/>
<source>Block by TOX ID:</source>
<translation>Блокировать по TOX ID:</translation>
</message>

View File

@ -5,6 +5,9 @@ except ImportError:
class DataLabel(QtGui.QLabel):
"""
Label with elided text
"""
def paintEvent(self, event):
painter = QtGui.QPainter(self)
@ -27,6 +30,9 @@ class CenteredWidget(QtGui.QWidget):
class QRightClickButton(QtGui.QPushButton):
"""
Button with right click support
"""
def __init__(self, parent):
super(QRightClickButton, self).__init__(parent)
@ -56,10 +62,13 @@ class RubberBand(QtGui.QRubberBand):
def create_menu(menu):
"""
:return translated menu
"""
for action in menu.actions():
text = action.text()
if 'Link Location' in text:
text = text.replace('Copy Link Location',
text = text.replace('Copy &Link Location',
QtGui.QApplication.translate("MainWindow", "Copy link location", None,
QtGui.QApplication.UnicodeUTF8))
elif '&Copy' in text: