docs update, translations update

This commit is contained in:
ingvar1995 2016-04-24 14:09:29 +03:00
parent e1db914f13
commit ee15359c19
9 changed files with 337 additions and 203 deletions

View File

@ -1,5 +1,5 @@
# Toxygen
Toxygen is simple [Tox](https://tox.chat/) client written on pure Python 2.7
Toxygen is simple [Tox](https://tox.chat/) client written on pure Python
### [How to install](/docs/install.md)
# Supported OS:
@ -20,12 +20,13 @@ Toxygen is simple [Tox](https://tox.chat/) client written on pure Python 2.7
- [x] Multilingual
- [x] Sound notifications
- [x] Inline images
- [ ] Audio
- [x] Audio
- [ ] Video
- [ ] Save file encryption
- [ ] File resuming
- [ ] Typing notifications
- [ ] Changing nospam
- [ ] Plugins support
- [ ] Group chats
- [ ] Read receipts
- [ ] Faux offline messaging
@ -36,6 +37,8 @@ Toxygen is simple [Tox](https://tox.chat/) client written on pure Python 2.7
[Download develop version](https://github.com/xveduk/toxygen/archive/develop.zip)
[Releases](https://github.com/xveduk/toxygen/releases)
###Screenshots
*Toxygen running on Ubuntu and Windows*
![Ubuntu](/docs/ubuntu.png)

View File

@ -6,19 +6,22 @@
1. [Download and install latest Python 2.7](https://www.python.org/downloads/windows/)
2. [Install PySide](https://pypi.python.org/pypi/PySide/1.2.4) *(PyQt4 support will be added later)*
3. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip)
4. Unpack archive
5. Download latest [libtox.dll](https://build.tox.chat/view/libtoxcore/job/libtoxcore_build_windows_x86_shared_release/lastSuccessfulBuild/artifact/libtoxcore_build_windows_x86_shared_release.zip) build, download latest [libsodium.a](https://build.tox.chat/view/libsodium/job/libsodium_build_windows_x86_static_release/lastSuccessfulBuild/artifact/libsodium_build_windows_x86_static_release.zip) build, put it into \src\libs\
6. Run \src\main.py
3. Install PyAudio: ``python -m pip install pyaudio``
4. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip)
5. Unpack archive
6. Download latest [libtox.dll](https://build.tox.chat/view/libtoxcore/job/libtoxcore_build_windows_x86_shared_release/lastSuccessfulBuild/artifact/libtoxcore_build_windows_x86_shared_release.zip) build, download latest [libsodium.a](https://build.tox.chat/view/libsodium/job/libsodium_build_windows_x86_static_release/lastSuccessfulBuild/artifact/libsodium_build_windows_x86_static_release.zip) build, put it into \src\libs\
7. Run \src\main.py
### Linux
1. [Install PySide](https://wiki.qt.io/PySide_Binaries_Linux) *(PyQt4 support will be added later)*
2. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip)
3. Unpack archive
4. Install [toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md) in your system
5. Run app:
1. Install Python2.7: ``sudo apt-get install python2.7``
2. [Install PySide](https://wiki.qt.io/PySide_Binaries_Linux) *(PyQt4 support will be added later)*
3. Install PyAudio: ``pip install pyaudio``
4. [Download toxygen](https://github.com/xveduk/toxygen/archive/master.zip)
5. Unpack archive
6. Install [toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md) in your system
7. Run app:
``python main.py``
## Use precompiled binary:

View File

@ -3,7 +3,7 @@ import time
import threading
import settings
from toxav_enums import *
# TODO: play sound until outgoing call will be started or cancelled
# TODO: play sound until outgoing call will be started or cancelled and add timeout
CALL_TYPE = {
'NONE': 0,

View File

@ -293,6 +293,7 @@ class Profile(Contact, Singleton):
self._tox = tox
self._file_transfers = {} # dict of file transfers. key - tuple (friend_number, file_number)
self._call = calls.AV(tox.AV) # object with data about calls
self._incoming_calls = set()
settings = Settings.get_instance()
self._show_online = settings['show_online_friends']
screen.online_contacts.setChecked(self._show_online)
@ -380,7 +381,6 @@ class Profile(Contact, Singleton):
"""
:param value: number of new active friend in friend's list or None to update active user's data
"""
# TODO: check if there is incoming call with friend
if value is None and self._active_friend == -1: # nothing to update
return
if value == -1: # all friends were deleted
@ -417,6 +417,8 @@ class Profile(Contact, Singleton):
self._messages.scrollToBottom()
if value in self._call:
self._screen.active_call()
elif value in self._incoming_calls:
self._screen.incoming_call()
else:
self._screen.call_finished()
else:
@ -991,9 +993,9 @@ class Profile(Contact, Singleton):
def incoming_call(self, audio, video, friend_number):
friend = self.get_friend_by_number(friend_number)
self._incoming_calls.add(friend_number)
if friend_number == self.get_active_number():
self._screen.incoming_call()
# self.accept_call(friend_number, audio, video)
else:
friend.set_messages(True)
if video:
@ -1007,10 +1009,13 @@ class Profile(Contact, Singleton):
def accept_call(self, friend_number, audio, video):
self._call.accept_call(friend_number, audio, video)
self._screen.active_call()
self._incoming_calls.remove(friend_number)
if hasattr(self, '_call_widget'):
del self._call_widget
def stop_call(self, friend_number, by_friend):
if friend_number in self._incoming_calls:
self._incoming_calls.remove(friend_number)
self._screen.call_finished()
self._call.finish_call(friend_number, by_friend) # finish or decline call
if hasattr(self, '_call_widget'):

Binary file not shown.

View File

@ -4,17 +4,17 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="76"/>
<location filename="menu.py" line="65"/>
<source>Add contact</source>
<translation>Add contact</translation>
</message>
<message>
<location filename="menu.py" line="78"/>
<location filename="menu.py" line="67"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="79"/>
<location filename="menu.py" line="68"/>
<source>Message:</source>
<translation>Message:</translation>
</message>
@ -22,37 +22,37 @@
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="77"/>
<location filename="menu.py" line="66"/>
<source>Send request</source>
<translation>Send request</translation>
</message>
<message>
<location filename="menu.py" line="227"/>
<location filename="menu.py" line="220"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="228"/>
<location filename="menu.py" line="221"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="229"/>
<location filename="menu.py" line="222"/>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
<message>
<location filename="menu.py" line="230"/>
<location filename="menu.py" line="223"/>
<source>IP:</source>
<translation>IP:</translation>
</message>
<message>
<location filename="menu.py" line="231"/>
<location filename="menu.py" line="224"/>
<source>Port:</source>
<translation>Port:</translation>
</message>
<message>
<location filename="mainscreen.py" line="87"/>
<location filename="mainscreen.py" line="90"/>
<source>Online contacts</source>
<translation>Online contacts</translation>
</message>
@ -60,172 +60,213 @@
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="92"/>
<location filename="mainscreen.py" line="95"/>
<source>Profile</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="98"/>
<location filename="mainscreen.py" line="101"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="280"/>
<location filename="mainscreen.py" line="286"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="91"/>
<location filename="mainscreen.py" line="94"/>
<source>Add contact</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="93"/>
<location filename="mainscreen.py" line="96"/>
<source>Privacy</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="94"/>
<location filename="mainscreen.py" line="97"/>
<source>Interface</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="95"/>
<location filename="mainscreen.py" line="98"/>
<source>Notifications</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="96"/>
<location filename="mainscreen.py" line="99"/>
<source>Network</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="97"/>
<location filename="mainscreen.py" line="100"/>
<source>About program</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="713"/>
<location filename="profile.py" line="724"/>
<source>User {} wants to add you to contact list. Message:
{}</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="715"/>
<location filename="profile.py" line="726"/>
<source>Friend request</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="281"/>
<location filename="mainscreen.py" line="287"/>
<source>Toxygen is Tox client written on Python 2.7. Version: </source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="319"/>
<location filename="mainscreen.py" line="329"/>
<source>Choose file</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="338"/>
<location filename="mainscreen.py" line="367"/>
<source>Disallow auto accept</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="339"/>
<location filename="mainscreen.py" line="368"/>
<source>Allow auto accept</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="341"/>
<location filename="mainscreen.py" line="370"/>
<source>Set alias</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="342"/>
<location filename="mainscreen.py" line="371"/>
<source>Clear history</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="343"/>
<location filename="mainscreen.py" line="372"/>
<source>Copy public key</source>
<translation></translation>
</message>
<message>
<location filename="mainscreen.py" line="345"/>
<location filename="mainscreen.py" line="374"/>
<source>Remove friend</source>
<translation></translation>
</message>
<message>
<location filename="profile.py" line="624"/>
<location filename="profile.py" line="635"/>
<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="102"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="226"/>
<location filename="menu.py" line="219"/>
<source>Network settings</source>
<translation>Network settings</translation>
</message>
<message>
<location filename="menu.py" line="225"/>
<source>Restart TOX core</source>
<translation>Restart Tox core</translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="142"/>
<location filename="menu.py" line="131"/>
<source>Export profile</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="143"/>
<location filename="menu.py" line="132"/>
<source>Profile settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="144"/>
<location filename="menu.py" line="133"/>
<source>Name:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="145"/>
<location filename="menu.py" line="134"/>
<source>Status:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="146"/>
<location filename="menu.py" line="135"/>
<source>TOX ID:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="147"/>
<location filename="menu.py" line="136"/>
<source>Copy TOX ID</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="148"/>
<location filename="menu.py" line="137"/>
<source>New avatar</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="149"/>
<location filename="menu.py" line="138"/>
<source>Reset avatar</source>
<translation></translation>
</message>
</context>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="476"/>
<source>Audio settings</source>
<translation>Audio settings</translation>
</message>
<message>
<location filename="menu.py" line="477"/>
<source>Input device:</source>
<translation>Input device:</translation>
</message>
<message>
<location filename="menu.py" line="478"/>
<source>Output device:</source>
<translation>Output device:</translation>
</message>
</context>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1001"/>
<source>Incoming video call</source>
<translation>Incoming video call</translation>
</message>
<message>
<location filename="profile.py" line="1003"/>
<source>Incoming audio call</source>
<translation>Incoming audio call</translation>
</message>
</context>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="420"/>
<location filename="menu.py" line="414"/>
<source>Interface settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="421"/>
<location filename="menu.py" line="415"/>
<source>Theme:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="422"/>
<location filename="menu.py" line="416"/>
<source>Language:</source>
<translation></translation>
</message>
@ -233,42 +274,42 @@
<context>
<name>login</name>
<message>
<location filename="loginscreen.py" line="66"/>
<location filename="loginscreen.py" line="57"/>
<source>Log in</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="67"/>
<location filename="loginscreen.py" line="58"/>
<source>Create</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="68"/>
<location filename="loginscreen.py" line="59"/>
<source>Profile name:</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="69"/>
<location filename="loginscreen.py" line="60"/>
<source>Load profile</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="70"/>
<location filename="loginscreen.py" line="61"/>
<source>Use as default</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="71"/>
<location filename="loginscreen.py" line="62"/>
<source>Load existing profile</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="72"/>
<location filename="loginscreen.py" line="63"/>
<source>Create new profile</source>
<translation></translation>
</message>
<message>
<location filename="loginscreen.py" line="73"/>
<location filename="loginscreen.py" line="64"/>
<source>toxygen</source>
<translation></translation>
</message>
@ -281,22 +322,22 @@
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="361"/>
<location filename="menu.py" line="355"/>
<source>Notification settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="362"/>
<location filename="menu.py" line="356"/>
<source>Enable notifications</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="363"/>
<location filename="menu.py" line="357"/>
<source>Enable call&apos;s sound</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="364"/>
<location filename="menu.py" line="358"/>
<source>Enable sound notifications</source>
<translation></translation>
</message>
@ -304,47 +345,47 @@
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="294"/>
<location filename="menu.py" line="292"/>
<source>Privacy settings</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="293"/>
<source>Save chat history</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="296"/>
<location filename="menu.py" line="294"/>
<source>Allow file auto accept</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="297"/>
<location filename="menu.py" line="295"/>
<source>Send typing notifications</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="298"/>
<location filename="menu.py" line="296"/>
<source>Auto accept default path:</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="299"/>
<location filename="menu.py" line="297"/>
<source>Change</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="300"/>
<location filename="menu.py" line="298"/>
<source>Allow inlines</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="310"/>
<location filename="menu.py" line="308"/>
<source>Chat history</source>
<translation></translation>
</message>
<message>
<location filename="menu.py" line="313"/>
<location filename="menu.py" line="311"/>
<source>History will be cleaned! Continue?</source>
<translation></translation>
</message>

View File

@ -3,17 +3,17 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="76"/>
<location filename="menu.py" line="65"/>
<source>Add contact</source>
<translation>Rajouter un contact</translation>
</message>
<message>
<location filename="menu.py" line="78"/>
<location filename="menu.py" line="67"/>
<source>TOX ID:</source>
<translation>ID TOX :</translation>
</message>
<message>
<location filename="menu.py" line="79"/>
<location filename="menu.py" line="68"/>
<source>Message:</source>
<translation>Message :</translation>
</message>
@ -21,37 +21,37 @@
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="77"/>
<location filename="menu.py" line="66"/>
<source>Send request</source>
<translation>Envoyer une demande</translation>
</message>
<message>
<location filename="menu.py" line="227"/>
<location filename="menu.py" line="220"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="228"/>
<location filename="menu.py" line="221"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="229"/>
<location filename="menu.py" line="222"/>
<source>Proxy</source>
<translation>Proxy</translation>
</message>
<message>
<location filename="menu.py" line="230"/>
<location filename="menu.py" line="223"/>
<source>IP:</source>
<translation>IP :</translation>
</message>
<message>
<location filename="menu.py" line="231"/>
<location filename="menu.py" line="224"/>
<source>Port:</source>
<translation>Port :</translation>
</message>
<message>
<location filename="mainscreen.py" line="87"/>
<location filename="mainscreen.py" line="90"/>
<source>Online contacts</source>
<translation>Contacts connectés</translation>
</message>
@ -59,172 +59,213 @@
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="92"/>
<location filename="mainscreen.py" line="95"/>
<source>Profile</source>
<translation>Profile</translation>
</message>
<message>
<location filename="mainscreen.py" line="98"/>
<location filename="mainscreen.py" line="101"/>
<source>Settings</source>
<translation>Paramêtres</translation>
</message>
<message>
<location filename="mainscreen.py" line="280"/>
<location filename="mainscreen.py" line="286"/>
<source>About</source>
<translation>À Propos</translation>
</message>
<message>
<location filename="mainscreen.py" line="91"/>
<location filename="mainscreen.py" line="94"/>
<source>Add contact</source>
<translation>Rajouter un contact</translation>
</message>
<message>
<location filename="mainscreen.py" line="93"/>
<location filename="mainscreen.py" line="96"/>
<source>Privacy</source>
<translation>Confidentialité</translation>
</message>
<message>
<location filename="mainscreen.py" line="94"/>
<location filename="mainscreen.py" line="97"/>
<source>Interface</source>
<translation>Interface</translation>
</message>
<message>
<location filename="mainscreen.py" line="95"/>
<location filename="mainscreen.py" line="98"/>
<source>Notifications</source>
<translation>Notifications</translation>
</message>
<message>
<location filename="mainscreen.py" line="96"/>
<location filename="mainscreen.py" line="99"/>
<source>Network</source>
<translation>Réseau</translation>
</message>
<message>
<location filename="mainscreen.py" line="97"/>
<location filename="mainscreen.py" line="100"/>
<source>About program</source>
<translation>À propos du programme</translation>
</message>
<message>
<location filename="profile.py" line="713"/>
<location filename="profile.py" line="724"/>
<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="715"/>
<location filename="profile.py" line="726"/>
<source>Friend request</source>
<translation>Demande d&apos;amis</translation>
</message>
<message>
<location filename="mainscreen.py" line="281"/>
<location filename="mainscreen.py" line="287"/>
<source>Toxygen is Tox client written on Python 2.7. Version: </source>
<translation>Toxygen est un client Tox écris en Python 2.7. Version : </translation>
</message>
<message>
<location filename="mainscreen.py" line="319"/>
<location filename="mainscreen.py" line="329"/>
<source>Choose file</source>
<translation>Choisir un fichier</translation>
</message>
<message>
<location filename="mainscreen.py" line="338"/>
<location filename="mainscreen.py" line="367"/>
<source>Disallow auto accept</source>
<translation>Désactiver l&apos;auto-réception</translation>
</message>
<message>
<location filename="mainscreen.py" line="339"/>
<location filename="mainscreen.py" line="368"/>
<source>Allow auto accept</source>
<translation>Activer l&apos;auto-réception</translation>
</message>
<message>
<location filename="mainscreen.py" line="341"/>
<location filename="mainscreen.py" line="370"/>
<source>Set alias</source>
<translation>Définir un alias</translation>
</message>
<message>
<location filename="mainscreen.py" line="342"/>
<location filename="mainscreen.py" line="371"/>
<source>Clear history</source>
<translation>Vider l&apos;historique</translation>
</message>
<message>
<location filename="mainscreen.py" line="343"/>
<location filename="mainscreen.py" line="372"/>
<source>Copy public key</source>
<translation>Copier la clé publique</translation>
</message>
<message>
<location filename="mainscreen.py" line="345"/>
<location filename="mainscreen.py" line="374"/>
<source>Remove friend</source>
<translation>Retirer un ami</translation>
</message>
<message>
<location filename="profile.py" line="624"/>
<location filename="profile.py" line="635"/>
<source>Enter new alias for friend {} or leave empty to use friend&apos;s name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainscreen.py" line="102"/>
<source>Audio</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="226"/>
<location filename="menu.py" line="219"/>
<source>Network settings</source>
<translation>Paramêtres réseaux</translation>
</message>
<message>
<location filename="menu.py" line="225"/>
<source>Restart TOX core</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="142"/>
<location filename="menu.py" line="131"/>
<source>Export profile</source>
<translation>Exporter le profile</translation>
</message>
<message>
<location filename="menu.py" line="143"/>
<location filename="menu.py" line="132"/>
<source>Profile settings</source>
<translation>Paramêtres du profil</translation>
</message>
<message>
<location filename="menu.py" line="144"/>
<location filename="menu.py" line="133"/>
<source>Name:</source>
<translation>Nom :</translation>
</message>
<message>
<location filename="menu.py" line="145"/>
<location filename="menu.py" line="134"/>
<source>Status:</source>
<translation>Status :</translation>
</message>
<message>
<location filename="menu.py" line="146"/>
<location filename="menu.py" line="135"/>
<source>TOX ID:</source>
<translation>ID TOX :</translation>
</message>
<message>
<location filename="menu.py" line="147"/>
<location filename="menu.py" line="136"/>
<source>Copy TOX ID</source>
<translation>Copier l&apos;ID TOX</translation>
</message>
<message>
<location filename="menu.py" line="148"/>
<location filename="menu.py" line="137"/>
<source>New avatar</source>
<translation>Nouvel avatar</translation>
</message>
<message>
<location filename="menu.py" line="149"/>
<location filename="menu.py" line="138"/>
<source>Reset avatar</source>
<translation>Réinitialiser l&apos;avatar</translation>
</message>
</context>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="476"/>
<source>Audio settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="477"/>
<source>Input device:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="478"/>
<source>Output device:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1001"/>
<source>Incoming video call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="profile.py" line="1003"/>
<source>Incoming audio call</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="420"/>
<location filename="menu.py" line="414"/>
<source>Interface settings</source>
<translation>Paramêtres de l&apos;interface</translation>
</message>
<message>
<location filename="menu.py" line="421"/>
<location filename="menu.py" line="415"/>
<source>Theme:</source>
<translation>Thème :</translation>
</message>
<message>
<location filename="menu.py" line="422"/>
<location filename="menu.py" line="416"/>
<source>Language:</source>
<translation>Langue :</translation>
</message>
@ -232,42 +273,42 @@
<context>
<name>login</name>
<message>
<location filename="loginscreen.py" line="66"/>
<location filename="loginscreen.py" line="57"/>
<source>Log in</source>
<translation>Se connecter</translation>
</message>
<message>
<location filename="loginscreen.py" line="67"/>
<location filename="loginscreen.py" line="58"/>
<source>Create</source>
<translation>Créer</translation>
</message>
<message>
<location filename="loginscreen.py" line="68"/>
<location filename="loginscreen.py" line="59"/>
<source>Profile name:</source>
<translation>Nom du profil :</translation>
</message>
<message>
<location filename="loginscreen.py" line="69"/>
<location filename="loginscreen.py" line="60"/>
<source>Load profile</source>
<translation>Charger le profil</translation>
</message>
<message>
<location filename="loginscreen.py" line="70"/>
<location filename="loginscreen.py" line="61"/>
<source>Use as default</source>
<translation>Utiliser par défaut</translation>
</message>
<message>
<location filename="loginscreen.py" line="71"/>
<location filename="loginscreen.py" line="62"/>
<source>Load existing profile</source>
<translation>Charger un profil existant</translation>
</message>
<message>
<location filename="loginscreen.py" line="72"/>
<location filename="loginscreen.py" line="63"/>
<source>Create new profile</source>
<translation>Créer un nouveau profil</translation>
</message>
<message>
<location filename="loginscreen.py" line="73"/>
<location filename="loginscreen.py" line="64"/>
<source>toxygen</source>
<translation>toxygen</translation>
</message>
@ -280,22 +321,22 @@
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="361"/>
<location filename="menu.py" line="355"/>
<source>Notification settings</source>
<translation>Paramêtres de notification</translation>
</message>
<message>
<location filename="menu.py" line="362"/>
<location filename="menu.py" line="356"/>
<source>Enable notifications</source>
<translation>Activer les notifications</translation>
</message>
<message>
<location filename="menu.py" line="363"/>
<location filename="menu.py" line="357"/>
<source>Enable call&apos;s sound</source>
<translation>Activer les sons d&apos;appel</translation>
</message>
<message>
<location filename="menu.py" line="364"/>
<location filename="menu.py" line="358"/>
<source>Enable sound notifications</source>
<translation>Activer les sons de notifications</translation>
</message>
@ -303,47 +344,47 @@
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="294"/>
<location filename="menu.py" line="292"/>
<source>Privacy settings</source>
<translation>Paramêtres de confidentialité</translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="293"/>
<source>Save chat history</source>
<translation>Sauvegarder l&apos;historique du chat</translation>
</message>
<message>
<location filename="menu.py" line="296"/>
<location filename="menu.py" line="294"/>
<source>Allow file auto accept</source>
<translation>Autoriser les fichier automatiquement</translation>
</message>
<message>
<location filename="menu.py" line="297"/>
<location filename="menu.py" line="295"/>
<source>Send typing notifications</source>
<translation>Notifier la frappe</translation>
</message>
<message>
<location filename="menu.py" line="298"/>
<location filename="menu.py" line="296"/>
<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="299"/>
<location filename="menu.py" line="297"/>
<source>Change</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="menu.py" line="300"/>
<location filename="menu.py" line="298"/>
<source>Allow inlines</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="310"/>
<location filename="menu.py" line="308"/>
<source>Chat history</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="menu.py" line="313"/>
<location filename="menu.py" line="311"/>
<source>History will be cleaned! Continue?</source>
<translation type="unfinished"></translation>
</message>

Binary file not shown.

View File

@ -4,17 +4,17 @@
<context>
<name>AddContact</name>
<message>
<location filename="menu.py" line="76"/>
<location filename="menu.py" line="65"/>
<source>Add contact</source>
<translation>Добавить контакт</translation>
</message>
<message>
<location filename="menu.py" line="78"/>
<location filename="menu.py" line="67"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="79"/>
<location filename="menu.py" line="68"/>
<source>Message:</source>
<translation>Сообщение:</translation>
</message>
@ -22,37 +22,37 @@
<context>
<name>Form</name>
<message>
<location filename="menu.py" line="77"/>
<location filename="menu.py" line="66"/>
<source>Send request</source>
<translation>Отправить запрос</translation>
</message>
<message>
<location filename="menu.py" line="227"/>
<location filename="menu.py" line="220"/>
<source>IPv6</source>
<translation>IPv6</translation>
</message>
<message>
<location filename="menu.py" line="228"/>
<location filename="menu.py" line="221"/>
<source>UDP</source>
<translation>UDP</translation>
</message>
<message>
<location filename="menu.py" line="229"/>
<location filename="menu.py" line="222"/>
<source>Proxy</source>
<translation>Прокси</translation>
</message>
<message>
<location filename="menu.py" line="230"/>
<location filename="menu.py" line="223"/>
<source>IP:</source>
<translation>IP:</translation>
</message>
<message>
<location filename="menu.py" line="231"/>
<location filename="menu.py" line="224"/>
<source>Port:</source>
<translation>Порт:</translation>
</message>
<message>
<location filename="mainscreen.py" line="87"/>
<location filename="mainscreen.py" line="90"/>
<source>Online contacts</source>
<translation>Контакты в сети</translation>
</message>
@ -60,145 +60,155 @@
<context>
<name>MainWindow</name>
<message>
<location filename="mainscreen.py" line="92"/>
<location filename="mainscreen.py" line="95"/>
<source>Profile</source>
<translation>Профиль</translation>
</message>
<message>
<location filename="mainscreen.py" line="98"/>
<location filename="mainscreen.py" line="101"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<location filename="mainscreen.py" line="280"/>
<location filename="mainscreen.py" line="286"/>
<source>About</source>
<translation>О программе</translation>
</message>
<message>
<location filename="mainscreen.py" line="91"/>
<location filename="mainscreen.py" line="94"/>
<source>Add contact</source>
<translation>Добавить контакт</translation>
</message>
<message>
<location filename="mainscreen.py" line="93"/>
<location filename="mainscreen.py" line="96"/>
<source>Privacy</source>
<translation>Приватность</translation>
</message>
<message>
<location filename="mainscreen.py" line="94"/>
<location filename="mainscreen.py" line="97"/>
<source>Interface</source>
<translation>Интерфейс</translation>
</message>
<message>
<location filename="mainscreen.py" line="95"/>
<location filename="mainscreen.py" line="98"/>
<source>Notifications</source>
<translation>Уведомления</translation>
</message>
<message>
<location filename="mainscreen.py" line="96"/>
<location filename="mainscreen.py" line="99"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="mainscreen.py" line="97"/>
<location filename="mainscreen.py" line="100"/>
<source>About program</source>
<translation>О программе</translation>
</message>
<message>
<location filename="profile.py" line="713"/>
<location filename="profile.py" line="724"/>
<source>User {} wants to add you to contact list. Message:
{}</source>
<translation>Пользователь {} хочет добавить Вас в список контактов. Сообщение:
{}</translation>
</message>
<message>
<location filename="profile.py" line="715"/>
<location filename="profile.py" line="726"/>
<source>Friend request</source>
<translation>Запрос на добавление в друзья</translation>
</message>
<message>
<location filename="mainscreen.py" line="281"/>
<location filename="mainscreen.py" line="287"/>
<source>Toxygen is Tox client written on Python 2.7. Version: </source>
<translation>Toxygen - клиент для мессенджера Tox, написанный на Python 2.7. Версия: </translation>
</message>
<message>
<location filename="mainscreen.py" line="319"/>
<location filename="mainscreen.py" line="329"/>
<source>Choose file</source>
<translation>Выберите файл</translation>
</message>
<message>
<location filename="mainscreen.py" line="338"/>
<location filename="mainscreen.py" line="367"/>
<source>Disallow auto accept</source>
<translation>Запретить автоматическое получение файлов</translation>
</message>
<message>
<location filename="mainscreen.py" line="339"/>
<location filename="mainscreen.py" line="368"/>
<source>Allow auto accept</source>
<translation>Разрешить автоматическое получение файлов</translation>
</message>
<message>
<location filename="mainscreen.py" line="341"/>
<location filename="mainscreen.py" line="370"/>
<source>Set alias</source>
<translation>Изменить псевдоним</translation>
</message>
<message>
<location filename="mainscreen.py" line="342"/>
<location filename="mainscreen.py" line="371"/>
<source>Clear history</source>
<translation>Очистить историю</translation>
</message>
<message>
<location filename="mainscreen.py" line="343"/>
<location filename="mainscreen.py" line="372"/>
<source>Copy public key</source>
<translation>Копировать публичный ключ</translation>
</message>
<message>
<location filename="mainscreen.py" line="345"/>
<location filename="mainscreen.py" line="374"/>
<source>Remove friend</source>
<translation>Удалить друга</translation>
</message>
<message>
<location filename="profile.py" line="624"/>
<location filename="profile.py" line="635"/>
<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="102"/>
<source>Audio</source>
<translation>Аудио</translation>
</message>
</context>
<context>
<name>NetworkSettings</name>
<message>
<location filename="menu.py" line="226"/>
<location filename="menu.py" line="219"/>
<source>Network settings</source>
<translation>Настройки сети</translation>
</message>
<message>
<location filename="menu.py" line="225"/>
<source>Restart TOX core</source>
<translation>Перезапустить ядро TOX</translation>
</message>
</context>
<context>
<name>ProfileSettingsForm</name>
<message>
<location filename="menu.py" line="142"/>
<location filename="menu.py" line="131"/>
<source>Export profile</source>
<translation>Экспорт профиля</translation>
</message>
<message>
<location filename="menu.py" line="143"/>
<location filename="menu.py" line="132"/>
<source>Profile settings</source>
<translation>Настройки профиля</translation>
</message>
<message>
<location filename="menu.py" line="144"/>
<location filename="menu.py" line="133"/>
<source>Name:</source>
<translation>Имя:</translation>
</message>
<message>
<location filename="menu.py" line="145"/>
<location filename="menu.py" line="134"/>
<source>Status:</source>
<translation>Статус:</translation>
</message>
<message>
<location filename="menu.py" line="146"/>
<location filename="menu.py" line="135"/>
<source>TOX ID:</source>
<translation>TOX ID:</translation>
</message>
<message>
<location filename="menu.py" line="147"/>
<location filename="menu.py" line="136"/>
<source>Copy TOX ID</source>
<translation>Копировать TOX ID</translation>
</message>
@ -208,30 +218,61 @@
<translation type="obsolete">Язык:</translation>
</message>
<message>
<location filename="menu.py" line="148"/>
<location filename="menu.py" line="137"/>
<source>New avatar</source>
<translation>Новый аватар</translation>
</message>
<message>
<location filename="menu.py" line="149"/>
<location filename="menu.py" line="138"/>
<source>Reset avatar</source>
<translation>Сбросить аватар</translation>
</message>
</context>
<context>
<name>audioSettingsForm</name>
<message>
<location filename="menu.py" line="476"/>
<source>Audio settings</source>
<translation>Настройки аудио</translation>
</message>
<message>
<location filename="menu.py" line="477"/>
<source>Input device:</source>
<translation>Устройство ввода:</translation>
</message>
<message>
<location filename="menu.py" line="478"/>
<source>Output device:</source>
<translation>Устройство вывода:</translation>
</message>
</context>
<context>
<name>incoming_call</name>
<message>
<location filename="profile.py" line="1001"/>
<source>Incoming video call</source>
<translation>Входящий видеозвонок</translation>
</message>
<message>
<location filename="profile.py" line="1003"/>
<source>Incoming audio call</source>
<translation>Входящий аудиозвонок</translation>
</message>
</context>
<context>
<name>interfaceForm</name>
<message>
<location filename="menu.py" line="420"/>
<location filename="menu.py" line="414"/>
<source>Interface settings</source>
<translation>Настройки интерфейса</translation>
</message>
<message>
<location filename="menu.py" line="421"/>
<location filename="menu.py" line="415"/>
<source>Theme:</source>
<translation>Тема:</translation>
</message>
<message>
<location filename="menu.py" line="422"/>
<location filename="menu.py" line="416"/>
<source>Language:</source>
<translation>Язык:</translation>
</message>
@ -239,42 +280,42 @@
<context>
<name>login</name>
<message>
<location filename="loginscreen.py" line="66"/>
<location filename="loginscreen.py" line="57"/>
<source>Log in</source>
<translation>Вход</translation>
</message>
<message>
<location filename="loginscreen.py" line="67"/>
<location filename="loginscreen.py" line="58"/>
<source>Create</source>
<translation>Создать</translation>
</message>
<message>
<location filename="loginscreen.py" line="68"/>
<location filename="loginscreen.py" line="59"/>
<source>Profile name:</source>
<translation>Имя профиля:</translation>
</message>
<message>
<location filename="loginscreen.py" line="69"/>
<location filename="loginscreen.py" line="60"/>
<source>Load profile</source>
<translation>Загрузить профиль</translation>
</message>
<message>
<location filename="loginscreen.py" line="70"/>
<location filename="loginscreen.py" line="61"/>
<source>Use as default</source>
<translation>По умолчанию</translation>
</message>
<message>
<location filename="loginscreen.py" line="71"/>
<location filename="loginscreen.py" line="62"/>
<source>Load existing profile</source>
<translation>Загрузить профиль</translation>
</message>
<message>
<location filename="loginscreen.py" line="72"/>
<location filename="loginscreen.py" line="63"/>
<source>Create new profile</source>
<translation>Создать новый профиль</translation>
</message>
<message>
<location filename="loginscreen.py" line="73"/>
<location filename="loginscreen.py" line="64"/>
<source>toxygen</source>
<translation>toxygen</translation>
</message>
@ -287,22 +328,22 @@
<context>
<name>notificationsForm</name>
<message>
<location filename="menu.py" line="361"/>
<location filename="menu.py" line="355"/>
<source>Notification settings</source>
<translation>Настройки уведомлений</translation>
</message>
<message>
<location filename="menu.py" line="362"/>
<location filename="menu.py" line="356"/>
<source>Enable notifications</source>
<translation>Включить уведомления</translation>
</message>
<message>
<location filename="menu.py" line="363"/>
<location filename="menu.py" line="357"/>
<source>Enable call&apos;s sound</source>
<translation>Включить звук звонка</translation>
</message>
<message>
<location filename="menu.py" line="364"/>
<location filename="menu.py" line="358"/>
<source>Enable sound notifications</source>
<translation>Включить звуковые уведомления
</translation>
@ -311,47 +352,47 @@
<context>
<name>privacySettings</name>
<message>
<location filename="menu.py" line="294"/>
<location filename="menu.py" line="292"/>
<source>Privacy settings</source>
<translation>Настройки приватности</translation>
</message>
<message>
<location filename="menu.py" line="295"/>
<location filename="menu.py" line="293"/>
<source>Save chat history</source>
<translation>Сохранять историю переписки</translation>
</message>
<message>
<location filename="menu.py" line="296"/>
<location filename="menu.py" line="294"/>
<source>Allow file auto accept</source>
<translation>Разрешить автополучение файлов</translation>
</message>
<message>
<location filename="menu.py" line="297"/>
<location filename="menu.py" line="295"/>
<source>Send typing notifications</source>
<translation>Посылать уведомления о наборе текста</translation>
</message>
<message>
<location filename="menu.py" line="298"/>
<location filename="menu.py" line="296"/>
<source>Auto accept default path:</source>
<translation>Путь автоприема файлов:</translation>
</message>
<message>
<location filename="menu.py" line="299"/>
<location filename="menu.py" line="297"/>
<source>Change</source>
<translation>Изменить</translation>
</message>
<message>
<location filename="menu.py" line="300"/>
<location filename="menu.py" line="298"/>
<source>Allow inlines</source>
<translation>Разрешать инлайны</translation>
</message>
<message>
<location filename="menu.py" line="310"/>
<location filename="menu.py" line="308"/>
<source>Chat history</source>
<translation>История чата</translation>
</message>
<message>
<location filename="menu.py" line="313"/>
<location filename="menu.py" line="311"/>
<source>History will be cleaned! Continue?</source>
<translation>История переписки будет очищена! Продолжить?</translation>
</message>