Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
5019535c0d | |||
1554d9e53a | |||
a984b624b5 | |||
2aea5df33c | |||
1fa13db4e4 | |||
3582722faa | |||
74396834cf | |||
ce84cc526b | |||
98cc288bcd | |||
9b5d768819 | |||
762eb89a46 | |||
b428bd54c4 | |||
f76a1c0fbe | |||
bb2a857ecf | |||
62c5df751d | |||
55a127a820 | |||
32055050ee | |||
a6633f1e77 | |||
23b55522ba | |||
5a5b0e9069 | |||
24c8b18f7e |
@ -16,3 +16,4 @@ include toxygen/styles/*.qss
|
|||||||
include toxygen/translations/*.qm
|
include toxygen/translations/*.qm
|
||||||
include toxygen/libs/libtox.dll
|
include toxygen/libs/libtox.dll
|
||||||
include toxygen/libs/libsodium.a
|
include toxygen/libs/libsodium.a
|
||||||
|
include toxygen/nodes.json
|
||||||
|
@ -18,6 +18,7 @@ Toxygen is powerful cross-platform [Tox](https://tox.chat/) client written in pu
|
|||||||
- File transfers
|
- File transfers
|
||||||
- Audio calls
|
- Audio calls
|
||||||
- Video calls
|
- Video calls
|
||||||
|
- Group chats
|
||||||
- Plugins support
|
- Plugins support
|
||||||
- Desktop sharing
|
- Desktop sharing
|
||||||
- Chat history
|
- Chat history
|
||||||
|
@ -17,7 +17,7 @@ Run app using ``toxygen`` command.
|
|||||||
2. Install PortAudio:
|
2. Install PortAudio:
|
||||||
``sudo apt-get install portaudio19-dev``
|
``sudo apt-get install portaudio19-dev``
|
||||||
3. For 32-bit Linux install PyQt5: ``sudo apt-get install python3-pyqt5``
|
3. For 32-bit Linux install PyQt5: ``sudo apt-get install python3-pyqt5``
|
||||||
4. Install [OpenCV](http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html) or via ``sudo apt-get install python3-opencv``
|
4. Install [OpenCV](http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html) or via ``sudo pip3 install opencv-python``
|
||||||
5. Install toxygen:
|
5. Install toxygen:
|
||||||
``sudo pip3 install toxygen``
|
``sudo pip3 install toxygen``
|
||||||
6. Run toxygen using ``toxygen`` command.
|
6. Run toxygen using ``toxygen`` command.
|
||||||
@ -63,7 +63,7 @@ Optional: install toxygen using setup.py: ``python setup.py install``
|
|||||||
4. Install PyAudio:
|
4. Install PyAudio:
|
||||||
``sudo apt-get install portaudio19-dev`` and ``sudo apt-get install python3-pyaudio`` (or ``sudo pip3 install pyaudio``)
|
``sudo apt-get install portaudio19-dev`` and ``sudo apt-get install python3-pyaudio`` (or ``sudo pip3 install pyaudio``)
|
||||||
5. Install NumPy: ``sudo pip3 install numpy``
|
5. Install NumPy: ``sudo pip3 install numpy``
|
||||||
6. Install [OpenCV](http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html) or via ``sudo apt-get install python3-opencv``
|
6. Install [OpenCV](http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html) or via ``sudo pip3 install opencv-python``
|
||||||
7. [Download toxygen](https://github.com/toxygen-project/toxygen/archive/master.zip)
|
7. [Download toxygen](https://github.com/toxygen-project/toxygen/archive/master.zip)
|
||||||
8. Unpack archive
|
8. Unpack archive
|
||||||
9. Run app:
|
9. Run app:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Plugins
|
# Plugins
|
||||||
|
|
||||||
Toxygen is the first [Tox](https://tox.chat/) client with plugins support. Plugin is Python 3.4 - 3.6 module (.py file) 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 3.5 - 3.6 module (.py file) and directory with plugin's data which provide some additional functionality.
|
||||||
|
|
||||||
# How to write plugin
|
# How to write plugin
|
||||||
|
|
||||||
|
@ -8,6 +8,6 @@ Animated smileys (.gif) are supported too.
|
|||||||
|
|
||||||
# Stickers
|
# Stickers
|
||||||
|
|
||||||
Sticker is inline image. If you want to create your own smiley pack, create directory in src/stickers/ and place your stickers there.
|
Sticker is inline image. If you want to create your own sticker pack, create directory in src/stickers/ and place your stickers there.
|
||||||
|
|
||||||
Users can import smileys and stickers using menu: Settings -> Interface
|
Users can import smileys and stickers using menu: Settings -> Interface
|
||||||
|
5
setup.py
5
setup.py
@ -25,6 +25,10 @@ else:
|
|||||||
import numpy
|
import numpy
|
||||||
except ImportError:
|
except ImportError:
|
||||||
MODULES.append('numpy')
|
MODULES.append('numpy')
|
||||||
|
try:
|
||||||
|
import cv2
|
||||||
|
except ImportError:
|
||||||
|
MODULES.append('opencv-python')
|
||||||
|
|
||||||
|
|
||||||
class InstallScript(install):
|
class InstallScript(install):
|
||||||
@ -48,6 +52,7 @@ class InstallScript(install):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
setup(name='Toxygen',
|
setup(name='Toxygen',
|
||||||
version=version,
|
version=version,
|
||||||
description='Toxygen - Tox client',
|
description='Toxygen - Tox client',
|
||||||
|
@ -1,84 +1,75 @@
|
|||||||
import random
|
import random
|
||||||
|
import urllib.request
|
||||||
|
from util import log, curr_directory
|
||||||
|
import settings
|
||||||
|
from PyQt5 import QtNetwork, QtCore
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
class Node:
|
class Node:
|
||||||
|
|
||||||
def __init__(self, ip, port, tox_key, rand):
|
def __init__(self, node):
|
||||||
self._ip, self._port, self._tox_key, self.rand = ip, port, tox_key, rand
|
self._ip, self._port, self._tox_key = node['ipv4'], node['port'], node['public_key']
|
||||||
|
self._priority = random.randint(1, 1000000) if node['status_tcp'] and node['status_udp'] else 0
|
||||||
|
|
||||||
|
def get_priority(self):
|
||||||
|
return self._priority
|
||||||
|
|
||||||
|
priority = property(get_priority)
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
return bytes(self._ip, 'utf-8'), self._port, self._tox_key
|
return bytes(self._ip, 'utf-8'), self._port, self._tox_key
|
||||||
|
|
||||||
|
|
||||||
def node_generator():
|
def generate_nodes():
|
||||||
nodes = []
|
with open(curr_directory() + '/nodes.json', 'rt') as fl:
|
||||||
ips = [
|
json_nodes = json.loads(fl.read())['nodes']
|
||||||
"144.76.60.215", "23.226.230.47", "195.154.119.113", "biribiri.org",
|
nodes = map(lambda json_node: Node(json_node), json_nodes)
|
||||||
"46.38.239.179", "178.62.250.138", "130.133.110.14", "104.167.101.29",
|
sorted_nodes = sorted(nodes, key=lambda x: x.priority)[-4:]
|
||||||
"205.185.116.116", "198.98.51.198", "80.232.246.79", "108.61.165.198",
|
for node in sorted_nodes:
|
||||||
"212.71.252.109", "194.249.212.109", "185.25.116.107", "192.99.168.140",
|
yield node.get_data()
|
||||||
"46.101.197.175", "95.215.46.114", "5.189.176.217", "148.251.23.146",
|
|
||||||
"104.223.122.15", "78.47.114.252", "d4rk4.ru", "81.4.110.149",
|
|
||||||
"95.31.20.151", "104.233.104.126", "51.254.84.212", "home.vikingmakt.com.br",
|
|
||||||
"5.135.59.163", "185.58.206.164", "188.244.38.183", "mrflibble.c4.ee",
|
|
||||||
"82.211.31.116", "128.199.199.197", "103.230.156.174", "91.121.66.124",
|
|
||||||
"92.54.84.70", "tox1.privacydragon.me"
|
|
||||||
]
|
|
||||||
ports = [
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
443, 33445, 5190, 2306,
|
|
||||||
33445, 33445, 1813, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445, 33445, 33445,
|
|
||||||
33445, 33445
|
|
||||||
]
|
|
||||||
ids = [
|
|
||||||
"04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F",
|
|
||||||
"A09162D68618E742FFBCA1C2C70385E6679604B2D80EA6E84AD0996A1AC8A074",
|
|
||||||
"E398A69646B8CEACA9F0B84F553726C1C49270558C57DF5F3C368F05A7D71354",
|
|
||||||
"F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67",
|
|
||||||
"F5A1A38EFB6BD3C2C8AF8B10D85F0F89E931704D349F1D0720C3C4059AF2440A",
|
|
||||||
"788236D34978D1D5BD822F0A5BEBD2C53C64CC31CD3149350EE27D4D9A2F9B6B",
|
|
||||||
"461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F",
|
|
||||||
"5918AC3C06955962A75AD7DF4F80A5D7C34F7DB9E1498D2E0495DE35B3FE8A57",
|
|
||||||
"A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702",
|
|
||||||
"1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F",
|
|
||||||
"CF6CECA0A14A31717CC8501DA51BE27742B70746956E6676FF423A529F91ED5D",
|
|
||||||
"8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832",
|
|
||||||
"C4CEB8C7AC607C6B374E2E782B3C00EA3A63B80D4910B8649CCACDD19F260819",
|
|
||||||
"3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B",
|
|
||||||
"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43",
|
|
||||||
"6A4D0607A296838434A6A7DDF99F50EF9D60A2C510BBF31FE538A25CB6B4652F",
|
|
||||||
"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707",
|
|
||||||
"5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23",
|
|
||||||
"2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F",
|
|
||||||
"7AED21F94D82B05774F697B209628CD5A9AD17E0C073D9329076A4C28ED28147",
|
|
||||||
"0FB96EEBFB1650DDB52E70CF773DDFCABE25A95CC3BB50FC251082E4B63EF82A",
|
|
||||||
"1C5293AEF2114717547B39DA8EA6F1E331E5E358B35F9B6B5F19317911C5F976",
|
|
||||||
"53737F6D47FA6BD2808F378E339AF45BF86F39B64E79D6D491C53A1D522E7039",
|
|
||||||
"9E7BD4793FFECA7F32238FA2361040C09025ED3333744483CA6F3039BFF0211E",
|
|
||||||
"9CA69BB74DE7C056D1CC6B16AB8A0A38725C0349D187D8996766958584D39340",
|
|
||||||
"EDEE8F2E839A57820DE3DA4156D88350E53D4161447068A3457EE8F59F362414",
|
|
||||||
"AEC204B9A4501412D5F0BB67D9C81B5DB3EE6ADA64122D32A3E9B093D544327D",
|
|
||||||
"188E072676404ED833A4E947DC1D223DF8EFEBE5F5258573A236573688FB9761",
|
|
||||||
"2D320F971EF2CA18004416C2AAE7BA52BF7949DB34EA8E2E21AF67BD367BE211",
|
|
||||||
"24156472041E5F220D1FA11D9DF32F7AD697D59845701CDD7BE7D1785EB9DB39",
|
|
||||||
"15A0F9684E2423F9F46CFA5A50B562AE42525580D840CC50E518192BF333EE38",
|
|
||||||
"FAAB17014F42F7F20949F61E55F66A73C230876812A9737F5F6D2DCE4D9E4207",
|
|
||||||
"AF97B76392A6474AF2FD269220FDCF4127D86A42EF3A242DF53A40A268A2CD7C",
|
|
||||||
"B05C8869DBB4EDDD308F43C1A974A20A725A36EACCA123862FDE9945BF9D3E09",
|
|
||||||
"5C4C7A60183D668E5BD8B3780D1288203E2F1BAE4EEF03278019E21F86174C1D",
|
|
||||||
"4E3F7D37295664BBD0741B6DBCB6431D6CD77FC4105338C2FC31567BF5C8224A",
|
|
||||||
"5625A62618CB4FCA70E147A71B29695F38CC65FF0CBD68AD46254585BE564802",
|
|
||||||
"31910C0497D347FF160D6F3A6C0E317BAFA71E8E03BC4CBB2A185C9D4FB8B31E"
|
|
||||||
]
|
|
||||||
for i in range(len(ips)):
|
|
||||||
nodes.append(Node(ips[i], ports[i], ids[i], random.randint(0, 1000000)))
|
|
||||||
arr = sorted(nodes, key=lambda x: x.rand)[:4]
|
|
||||||
for elem in arr:
|
|
||||||
yield elem.get_data()
|
|
||||||
|
|
||||||
|
|
||||||
|
def save_nodes(nodes):
|
||||||
|
if not nodes:
|
||||||
|
return
|
||||||
|
print('Saving nodes...')
|
||||||
|
with open(curr_directory() + '/nodes.json', 'wb') as fl:
|
||||||
|
fl.write(nodes)
|
||||||
|
|
||||||
|
|
||||||
|
def download_nodes_list():
|
||||||
|
url = 'https://nodes.tox.chat/json'
|
||||||
|
s = settings.Settings.get_instance()
|
||||||
|
if not s['download_nodes_list']:
|
||||||
|
return
|
||||||
|
|
||||||
|
if not s['proxy_type']: # no proxy
|
||||||
|
try:
|
||||||
|
req = urllib.request.Request(url)
|
||||||
|
req.add_header('Content-Type', 'application/json')
|
||||||
|
response = urllib.request.urlopen(req)
|
||||||
|
result = response.read()
|
||||||
|
save_nodes(result)
|
||||||
|
except Exception as ex:
|
||||||
|
log('TOX nodes loading error: ' + str(ex))
|
||||||
|
else: # proxy
|
||||||
|
netman = QtNetwork.QNetworkAccessManager()
|
||||||
|
proxy = QtNetwork.QNetworkProxy()
|
||||||
|
proxy.setType(
|
||||||
|
QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy)
|
||||||
|
proxy.setHostName(s['proxy_host'])
|
||||||
|
proxy.setPort(s['proxy_port'])
|
||||||
|
netman.setProxy(proxy)
|
||||||
|
try:
|
||||||
|
request = QtNetwork.QNetworkRequest()
|
||||||
|
request.setUrl(QtCore.QUrl(url))
|
||||||
|
reply = netman.get(request)
|
||||||
|
|
||||||
|
while not reply.isFinished():
|
||||||
|
QtCore.QThread.msleep(1)
|
||||||
|
QtCore.QCoreApplication.processEvents()
|
||||||
|
data = bytes(reply.readAll().data())
|
||||||
|
save_nodes(data)
|
||||||
|
except Exception as ex:
|
||||||
|
log('TOX nodes loading error: ' + str(ex))
|
||||||
|
@ -33,6 +33,7 @@ class Invoker(QtCore.QObject):
|
|||||||
event.fn(*event.args, **event.kwargs)
|
event.fn(*event.args, **event.kwargs)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
_invoker = Invoker()
|
_invoker = Invoker()
|
||||||
|
|
||||||
|
|
||||||
@ -66,6 +67,7 @@ class FileTransfersThread(threading.Thread):
|
|||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
util.log('Exception in _thread: ' + str(ex))
|
util.log('Exception in _thread: ' + str(ex))
|
||||||
|
|
||||||
|
|
||||||
_thread = FileTransfersThread()
|
_thread = FileTransfersThread()
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ class Call:
|
|||||||
return self._out_video
|
return self._out_video
|
||||||
|
|
||||||
def set_out_video(self, value):
|
def set_out_video(self, value):
|
||||||
self._in_video = value
|
self._out_video = value
|
||||||
|
|
||||||
out_video = property(get_out_video, set_out_video)
|
out_video = property(get_out_video, set_out_video)
|
||||||
|
|
||||||
@ -144,8 +144,8 @@ class AV:
|
|||||||
call = self._calls[friend_number]
|
call = self._calls[friend_number]
|
||||||
call.is_active = True
|
call.is_active = True
|
||||||
|
|
||||||
call.in_audio = state | TOXAV_FRIEND_CALL_STATE['SENDING_A']
|
call.in_audio = state | TOXAV_FRIEND_CALL_STATE['SENDING_A'] > 0
|
||||||
call.in_video = state | TOXAV_FRIEND_CALL_STATE['SENDING_V']
|
call.in_video = state | TOXAV_FRIEND_CALL_STATE['SENDING_V'] > 0
|
||||||
|
|
||||||
if state | TOXAV_FRIEND_CALL_STATE['ACCEPTING_A'] and call.out_audio:
|
if state | TOXAV_FRIEND_CALL_STATE['ACCEPTING_A'] and call.out_audio:
|
||||||
self.start_audio_thread()
|
self.start_audio_thread()
|
||||||
@ -153,6 +153,9 @@ class AV:
|
|||||||
if state | TOXAV_FRIEND_CALL_STATE['ACCEPTING_V'] and call.out_video:
|
if state | TOXAV_FRIEND_CALL_STATE['ACCEPTING_V'] and call.out_video:
|
||||||
self.start_video_thread()
|
self.start_video_thread()
|
||||||
|
|
||||||
|
def is_video_call(self, number):
|
||||||
|
return number in self and self._calls[number].in_video
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Threads
|
# Threads
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
@ -281,12 +284,12 @@ class AV:
|
|||||||
try:
|
try:
|
||||||
y, u, v = self.convert_bgr_to_yuv(frame)
|
y, u, v = self.convert_bgr_to_yuv(frame)
|
||||||
self._toxav.video_send_frame(friend_num, width, height, y, u, v)
|
self._toxav.video_send_frame(friend_num, width, height, y, u, v)
|
||||||
except Exception as e:
|
except:
|
||||||
print(e)
|
pass
|
||||||
except Exception as e:
|
except:
|
||||||
print(e)
|
pass
|
||||||
|
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
|
|
||||||
def convert_bgr_to_yuv(self, frame):
|
def convert_bgr_to_yuv(self, frame):
|
||||||
"""
|
"""
|
||||||
|
@ -29,7 +29,7 @@ ALLOWED_FILES = ('toxygen_inline.png', 'utox-inline.png', 'sticker.png')
|
|||||||
|
|
||||||
|
|
||||||
def is_inline(file_name):
|
def is_inline(file_name):
|
||||||
return file_name in ALLOWED_FILES or file_name.startswith('qTox_Screenshot_')
|
return file_name in ALLOWED_FILES or file_name.startswith('qTox_Screenshot_') or file_name.startswith('qTox_Image_')
|
||||||
|
|
||||||
|
|
||||||
class StateSignal(QtCore.QObject):
|
class StateSignal(QtCore.QObject):
|
||||||
|
@ -543,7 +543,3 @@ class InlineImageItem(QtWidgets.QScrollArea):
|
|||||||
|
|
||||||
def mark_as_sent(self):
|
def mark_as_sent(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,11 +3,11 @@ from loginscreen import LoginScreen
|
|||||||
import profile
|
import profile
|
||||||
from settings import *
|
from settings import *
|
||||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from bootstrap import node_generator
|
from bootstrap import generate_nodes, download_nodes_list
|
||||||
from mainscreen import MainWindow
|
from mainscreen import MainWindow
|
||||||
from callbacks import init_callbacks, stop, start
|
from callbacks import init_callbacks, stop, start
|
||||||
from util import curr_directory, program_version, remove, is_64_bit
|
from util import curr_directory, program_version, remove
|
||||||
import styles.style
|
import styles.style # reqired for styles loading
|
||||||
import platform
|
import platform
|
||||||
import toxes
|
import toxes
|
||||||
from passwordscreen import PasswordScreen, UnlockAppScreen, SetProfilePasswordScreen
|
from passwordscreen import PasswordScreen, UnlockAppScreen, SetProfilePasswordScreen
|
||||||
@ -327,6 +327,7 @@ class Toxygen:
|
|||||||
self.mainloop.wait()
|
self.mainloop.wait()
|
||||||
self.init.wait()
|
self.init.wait()
|
||||||
self.avloop.wait()
|
self.avloop.wait()
|
||||||
|
self.tray.hide()
|
||||||
data = self.tox.get_savedata()
|
data = self.tox.get_savedata()
|
||||||
ProfileHelper.get_instance().save_profile(data)
|
ProfileHelper.get_instance().save_profile(data)
|
||||||
settings.close()
|
settings.close()
|
||||||
@ -378,9 +379,11 @@ class Toxygen:
|
|||||||
def run(self):
|
def run(self):
|
||||||
# initializing callbacks
|
# initializing callbacks
|
||||||
init_callbacks(self.tox, self.ms, self.tray)
|
init_callbacks(self.tox, self.ms, self.tray)
|
||||||
|
# download list of nodes if needed
|
||||||
|
download_nodes_list()
|
||||||
# bootstrap
|
# bootstrap
|
||||||
try:
|
try:
|
||||||
for data in node_generator():
|
for data in generate_nodes():
|
||||||
if self.stop:
|
if self.stop:
|
||||||
return
|
return
|
||||||
self.tox.bootstrap(*data)
|
self.tox.bootstrap(*data)
|
||||||
@ -393,7 +396,7 @@ class Toxygen:
|
|||||||
self.msleep(1000)
|
self.msleep(1000)
|
||||||
while not self.tox.self_get_connection_status():
|
while not self.tox.self_get_connection_status():
|
||||||
try:
|
try:
|
||||||
for data in node_generator():
|
for data in generate_nodes():
|
||||||
if self.stop:
|
if self.stop:
|
||||||
return
|
return
|
||||||
self.tox.bootstrap(*data)
|
self.tox.bootstrap(*data)
|
||||||
|
@ -418,8 +418,10 @@ class MainWindow(QtWidgets.QMainWindow, Singleton):
|
|||||||
import util
|
import util
|
||||||
msgBox = QtWidgets.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "About"))
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "About"))
|
||||||
text = (QtWidgets.QApplication.translate("MainWindow", 'Toxygen is Tox client written on Python.\nVersion: '))
|
text = (QtWidgets.QApplication.translate("MainWindow", 'Toxygen is Tox client written on Python.<br>Version: '))
|
||||||
msgBox.setText(text + util.program_version + '\nGitHub: https://github.com/toxygen-project/toxygen/')
|
github = '<br><a href="https://github.com/toxygen-project/toxygen/">Github</a>'
|
||||||
|
submit_a_bug = '<br><a href="https://github.com/toxygen-project/toxygen/issues">Submit a bug</a>'
|
||||||
|
msgBox.setText(text + util.program_version + github + submit_a_bug)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
def network_settings(self):
|
def network_settings(self):
|
||||||
@ -616,7 +618,7 @@ class MainWindow(QtWidgets.QMainWindow, Singleton):
|
|||||||
for i in range(len(chats)):
|
for i in range(len(chats)):
|
||||||
name, number = chats[i]
|
name, number = chats[i]
|
||||||
item = invite_menu.addAction(name)
|
item = invite_menu.addAction(name)
|
||||||
item.triggered.connect(lambda: self.invite_friend_to_gc(num, number))
|
item.triggered.connect(lambda number=number: self.invite_friend_to_gc(num, number))
|
||||||
|
|
||||||
plugins_loader = plugin_support.PluginLoader.get_instance()
|
plugins_loader = plugin_support.PluginLoader.get_instance()
|
||||||
if plugins_loader is not None:
|
if plugins_loader is not None:
|
||||||
@ -660,15 +662,18 @@ class MainWindow(QtWidgets.QMainWindow, Singleton):
|
|||||||
|
|
||||||
def export_history(self, num, as_text=True):
|
def export_history(self, num, as_text=True):
|
||||||
s = self.profile.export_history(num, as_text)
|
s = self.profile.export_history(num, as_text)
|
||||||
directory = QtWidgets.QFileDialog.getExistingDirectory(None,
|
extension = 'txt' if as_text else 'html'
|
||||||
QtWidgets.QApplication.translate("MainWindow",
|
file_name, _ = QtWidgets.QFileDialog.getSaveFileName(None,
|
||||||
'Choose folder'),
|
QtWidgets.QApplication.translate("MainWindow",
|
||||||
curr_directory(),
|
'Choose file name'),
|
||||||
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
curr_directory(),
|
||||||
|
filter=extension,
|
||||||
|
options=QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
|
|
||||||
if directory:
|
if file_name:
|
||||||
name = 'exported_history_{}.{}'.format(convert_time(time.time()), 'txt' if as_text else 'html')
|
if not file_name.endswith('.' + extension):
|
||||||
with open(directory + '/' + name, 'wt') as fl:
|
file_name += '.' + extension
|
||||||
|
with open(file_name, 'wt') as fl:
|
||||||
fl.write(s)
|
fl.write(s)
|
||||||
|
|
||||||
def set_alias(self, num):
|
def set_alias(self, num):
|
||||||
|
@ -3,6 +3,7 @@ from widgets import RubberBandWindow, create_menu, QRightClickButton, CenteredWi
|
|||||||
from profile import Profile
|
from profile import Profile
|
||||||
import smileys
|
import smileys
|
||||||
import util
|
import util
|
||||||
|
import platform
|
||||||
|
|
||||||
|
|
||||||
class MessageArea(QtWidgets.QPlainTextEdit):
|
class MessageArea(QtWidgets.QPlainTextEdit):
|
||||||
@ -70,9 +71,25 @@ class MessageArea(QtWidgets.QPlainTextEdit):
|
|||||||
def pasteEvent(self, text=None):
|
def pasteEvent(self, text=None):
|
||||||
text = text or QtWidgets.QApplication.clipboard().text()
|
text = text or QtWidgets.QApplication.clipboard().text()
|
||||||
if text.startswith('file://'):
|
if text.startswith('file://'):
|
||||||
self.parent.profile.send_file(text[7:])
|
file_name = self.parse_file_name(text)
|
||||||
else:
|
self.parent.profile.send_file(file_name)
|
||||||
|
elif text:
|
||||||
self.insertPlainText(text)
|
self.insertPlainText(text)
|
||||||
|
else:
|
||||||
|
image = QtWidgets.QApplication.clipboard().image()
|
||||||
|
if image is not None:
|
||||||
|
byte_array = QtCore.QByteArray()
|
||||||
|
buffer = QtCore.QBuffer(byte_array)
|
||||||
|
buffer.open(QtCore.QIODevice.WriteOnly)
|
||||||
|
image.save(buffer, 'PNG')
|
||||||
|
self.parent.profile.send_screenshot(bytes(byte_array.data()))
|
||||||
|
|
||||||
|
def parse_file_name(self, file_name):
|
||||||
|
import urllib
|
||||||
|
if file_name.endswith('\r\n'):
|
||||||
|
file_name = file_name[:-2]
|
||||||
|
file_name = urllib.parse.unquote(file_name)
|
||||||
|
return file_name[8 if platform.system() == 'Windows' else 7:]
|
||||||
|
|
||||||
|
|
||||||
class ScreenShotWindow(RubberBandWindow):
|
class ScreenShotWindow(RubberBandWindow):
|
||||||
@ -318,7 +335,7 @@ class WelcomeScreen(CenteredWidget):
|
|||||||
'Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.')
|
'Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.')
|
||||||
elif num == 7:
|
elif num == 7:
|
||||||
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5')
|
'New in Toxygen 0.4.1:<br>Downloading nodes from tox.chat<br>Bug fixes')
|
||||||
elif num == 8:
|
elif num == 8:
|
||||||
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu')
|
'Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu')
|
||||||
|
@ -294,10 +294,10 @@ class NetworkSettings(CenteredWidget):
|
|||||||
|
|
||||||
def initUI(self):
|
def initUI(self):
|
||||||
self.setObjectName("NetworkSettings")
|
self.setObjectName("NetworkSettings")
|
||||||
self.resize(300, 330)
|
self.resize(300, 400)
|
||||||
self.setMinimumSize(QtCore.QSize(300, 330))
|
self.setMinimumSize(QtCore.QSize(300, 400))
|
||||||
self.setMaximumSize(QtCore.QSize(300, 330))
|
self.setMaximumSize(QtCore.QSize(300, 400))
|
||||||
self.setBaseSize(QtCore.QSize(300, 330))
|
self.setBaseSize(QtCore.QSize(300, 400))
|
||||||
self.ipv = QtWidgets.QCheckBox(self)
|
self.ipv = QtWidgets.QCheckBox(self)
|
||||||
self.ipv.setGeometry(QtCore.QRect(20, 10, 97, 22))
|
self.ipv.setGeometry(QtCore.QRect(20, 10, 97, 22))
|
||||||
self.ipv.setObjectName("ipv")
|
self.ipv.setObjectName("ipv")
|
||||||
@ -332,6 +332,9 @@ class NetworkSettings(CenteredWidget):
|
|||||||
self.warning = QtWidgets.QLabel(self)
|
self.warning = QtWidgets.QLabel(self)
|
||||||
self.warning.setGeometry(QtCore.QRect(5, 270, 290, 60))
|
self.warning.setGeometry(QtCore.QRect(5, 270, 290, 60))
|
||||||
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
|
self.nodes = QtWidgets.QCheckBox(self)
|
||||||
|
self.nodes.setGeometry(QtCore.QRect(20, 350, 270, 22))
|
||||||
|
self.nodes.setChecked(settings['download_nodes_list'])
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.proxy.stateChanged.connect(lambda x: self.activate())
|
self.proxy.stateChanged.connect(lambda x: self.activate())
|
||||||
self.activate()
|
self.activate()
|
||||||
@ -346,6 +349,7 @@ class NetworkSettings(CenteredWidget):
|
|||||||
self.label_2.setText(QtWidgets.QApplication.translate("Form", "Port:"))
|
self.label_2.setText(QtWidgets.QApplication.translate("Form", "Port:"))
|
||||||
self.reconnect.setText(QtWidgets.QApplication.translate("NetworkSettings", "Restart TOX core"))
|
self.reconnect.setText(QtWidgets.QApplication.translate("NetworkSettings", "Restart TOX core"))
|
||||||
self.http.setText(QtWidgets.QApplication.translate("Form", "HTTP"))
|
self.http.setText(QtWidgets.QApplication.translate("Form", "HTTP"))
|
||||||
|
self.nodes.setText(QtWidgets.QApplication.translate("Form", "Download nodes list from tox.chat"))
|
||||||
self.warning.setText(QtWidgets.QApplication.translate("Form", "WARNING:\nusing proxy with enabled UDP\ncan produce IP leak"))
|
self.warning.setText(QtWidgets.QApplication.translate("Form", "WARNING:\nusing proxy with enabled UDP\ncan produce IP leak"))
|
||||||
|
|
||||||
def activate(self):
|
def activate(self):
|
||||||
@ -362,6 +366,7 @@ class NetworkSettings(CenteredWidget):
|
|||||||
settings['proxy_type'] = 2 - int(self.http.isChecked()) if self.proxy.isChecked() else 0
|
settings['proxy_type'] = 2 - int(self.http.isChecked()) if self.proxy.isChecked() else 0
|
||||||
settings['proxy_host'] = str(self.proxyip.text())
|
settings['proxy_host'] = str(self.proxyip.text())
|
||||||
settings['proxy_port'] = int(self.proxyport.text())
|
settings['proxy_port'] = int(self.proxyport.text())
|
||||||
|
settings['download_nodes_list'] = self.nodes.isChecked()
|
||||||
settings.save()
|
settings.save()
|
||||||
# recreate tox instance
|
# recreate tox instance
|
||||||
Profile.get_instance().reset(self.reset)
|
Profile.get_instance().reset(self.reset)
|
||||||
@ -611,7 +616,7 @@ class InterfaceSettings(CenteredWidget):
|
|||||||
self.messages_font_size_label.setFont(font)
|
self.messages_font_size_label.setFont(font)
|
||||||
self.messages_font_size = QtWidgets.QComboBox(self)
|
self.messages_font_size = QtWidgets.QComboBox(self)
|
||||||
self.messages_font_size.setGeometry(QtCore.QRect(30, 330, 160, 30))
|
self.messages_font_size.setGeometry(QtCore.QRect(30, 330, 160, 30))
|
||||||
self.messages_font_size.addItems([str(x) for x in range(10, 19)])
|
self.messages_font_size.addItems([str(x) for x in range(10, 25)])
|
||||||
self.messages_font_size.setCurrentIndex(settings['message_font_size'] - 10)
|
self.messages_font_size.setCurrentIndex(settings['message_font_size'] - 10)
|
||||||
|
|
||||||
self.unread = QtWidgets.QPushButton(self)
|
self.unread = QtWidgets.QPushButton(self)
|
||||||
@ -816,7 +821,7 @@ class DesktopAreaSelectionWindow(RubberBandWindow):
|
|||||||
rect = self.rubberband.geometry()
|
rect = self.rubberband.geometry()
|
||||||
width, height = rect.width(), rect.height()
|
width, height = rect.width(), rect.height()
|
||||||
if width >= 8 and height >= 8:
|
if width >= 8 and height >= 8:
|
||||||
self.parent.save(rect.x(), rect.y(), width, height)
|
self.parent.save(rect.x(), rect.y(), width - (width % 4), height - (height % 4))
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
1
toxygen/nodes.json
Normal file
1
toxygen/nodes.json
Normal file
File diff suppressed because one or more lines are too long
@ -97,10 +97,13 @@ class PluginLoader(util.Singleton):
|
|||||||
"""
|
"""
|
||||||
result = []
|
result = []
|
||||||
for data in self._plugins.values():
|
for data in self._plugins.values():
|
||||||
result.append([data[0].get_name(), # plugin full name
|
try:
|
||||||
data[1], # is enabled
|
result.append([data[0].get_name(), # plugin full name
|
||||||
data[0].get_description(), # plugin description
|
data[1], # is enabled
|
||||||
data[0].get_short_name()]) # key - short unique name
|
data[0].get_description(), # plugin description
|
||||||
|
data[0].get_short_name()]) # key - short unique name
|
||||||
|
except:
|
||||||
|
continue
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def plugin_window(self, key):
|
def plugin_window(self, key):
|
||||||
|
@ -72,6 +72,8 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
friend = Friend(message_getter, i, name, status_message, item, tox_id)
|
friend = Friend(message_getter, i, name, status_message, item, tox_id)
|
||||||
friend.set_alias(alias)
|
friend.set_alias(alias)
|
||||||
self._contacts.append(friend)
|
self._contacts.append(friend)
|
||||||
|
if len(self._contacts):
|
||||||
|
self.set_active(0)
|
||||||
self.filtration_and_sorting(self._sorting)
|
self.filtration_and_sorting(self._sorting)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
@ -586,13 +588,16 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
print('Incoming not started transfer - no info found')
|
print('Incoming not started transfer - no info found')
|
||||||
elif message.get_type() == MESSAGE_TYPE['INLINE']: # inline image
|
elif message.get_type() == MESSAGE_TYPE['INLINE']: # inline image
|
||||||
self.create_inline_item(message.get_data(), False)
|
self.create_inline_item(message.get_data(), False)
|
||||||
else: # info message
|
elif message.get_type() < 5: # info message
|
||||||
data = message.get_data()
|
data = message.get_data()
|
||||||
self.create_message_item(data[0],
|
self.create_message_item(data[0],
|
||||||
data[2],
|
data[2],
|
||||||
'',
|
'',
|
||||||
data[3],
|
data[3],
|
||||||
False)
|
False)
|
||||||
|
else:
|
||||||
|
data = message.get_data()
|
||||||
|
self.create_gc_message_item(data[0], data[2], data[1], data[4], data[3], False)
|
||||||
self._load_history = True
|
self._load_history = True
|
||||||
|
|
||||||
def export_db(self, directory):
|
def export_db(self, directory):
|
||||||
@ -868,8 +873,11 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
Recreate tox instance
|
Recreate tox instance
|
||||||
:param restart: method which calls restart and returns new tox instance
|
:param restart: method which calls restart and returns new tox instance
|
||||||
"""
|
"""
|
||||||
for friend in self._contacts:
|
for contact in self._contacts:
|
||||||
self.friend_exit(friend.number)
|
if type(contact) is Friend:
|
||||||
|
self.friend_exit(contact.number)
|
||||||
|
else:
|
||||||
|
self.leave_gc(contact.number)
|
||||||
self._call.stop()
|
self._call.stop()
|
||||||
del self._call
|
del self._call
|
||||||
del self._tox
|
del self._tox
|
||||||
@ -995,11 +1003,12 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
if friend_number == self.get_active_number() and self.is_active_a_friend():
|
if friend_number == self.get_active_number() and self.is_active_a_friend():
|
||||||
tmp = self._messages.count() + i
|
tmp = self._messages.count() + i
|
||||||
if tmp >= 0:
|
if tmp >= 0:
|
||||||
self._messages.itemWidget(self._messages.item(tmp)).update(TOX_FILE_TRANSFER_STATE['CANCELLED'],
|
self._messages.itemWidget(
|
||||||
0, -1)
|
self._messages.item(tmp)).update_transfer_state(TOX_FILE_TRANSFER_STATE['CANCELLED'],
|
||||||
|
0, -1)
|
||||||
|
|
||||||
def cancel_not_started_transfer(self, time):
|
def cancel_not_started_transfer(self, cancel_time):
|
||||||
self.get_curr_friend().delete_one_unsent_file(time)
|
self.get_curr_friend().delete_one_unsent_file(cancel_time)
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def pause_transfer(self, friend_number, file_number, by_friend=False):
|
def pause_transfer(self, friend_number, file_number, by_friend=False):
|
||||||
@ -1090,10 +1099,11 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
file_name,
|
file_name,
|
||||||
friend.number,
|
friend.number,
|
||||||
st.get_file_number())
|
st.get_file_number())
|
||||||
item = self.create_file_transfer_item(tm)
|
|
||||||
friend.append_message(tm)
|
friend.append_message(tm)
|
||||||
st.set_state_changed_handler(item.update_transfer_state)
|
if friend_number == self.get_active_number():
|
||||||
self._messages.scrollToBottom()
|
item = self.create_file_transfer_item(tm)
|
||||||
|
st.set_state_changed_handler(item.update_transfer_state)
|
||||||
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
def send_file(self, path, number=None, is_resend=False, file_id=None):
|
def send_file(self, path, number=None, is_resend=False, file_id=None):
|
||||||
"""
|
"""
|
||||||
@ -1240,7 +1250,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
|
|
||||||
def incoming_call(self, audio, video, friend_number):
|
def incoming_call(self, audio, video, friend_number):
|
||||||
"""
|
"""
|
||||||
Incoming call from friend. Only audio is supported now
|
Incoming call from friend.
|
||||||
"""
|
"""
|
||||||
if not Settings.get_instance().audio['enabled']:
|
if not Settings.get_instance().audio['enabled']:
|
||||||
return
|
return
|
||||||
@ -1281,11 +1291,17 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
else:
|
else:
|
||||||
text = QtWidgets.QApplication.translate("incoming_call", "Call finished")
|
text = QtWidgets.QApplication.translate("incoming_call", "Call finished")
|
||||||
self._screen.call_finished()
|
self._screen.call_finished()
|
||||||
|
is_video = self._call.is_video_call(friend_number)
|
||||||
self._call.finish_call(friend_number, by_friend) # finish or decline call
|
self._call.finish_call(friend_number, by_friend) # finish or decline call
|
||||||
if hasattr(self, '_call_widget'):
|
if hasattr(self, '_call_widget'):
|
||||||
self._call_widget[friend_number].close()
|
self._call_widget[friend_number].close()
|
||||||
del self._call_widget[friend_number]
|
del self._call_widget[friend_number]
|
||||||
threading.Timer(2.0, lambda: cv2.destroyWindow(str(friend_number))).start()
|
|
||||||
|
def destroy_window():
|
||||||
|
if is_video:
|
||||||
|
cv2.destroyWindow(str(friend_number))
|
||||||
|
|
||||||
|
threading.Timer(2.0, destroy_window).start()
|
||||||
friend = self.get_friend_by_number(friend_number)
|
friend = self.get_friend_by_number(friend_number)
|
||||||
friend.append_message(InfoMessage(text, time.time()))
|
friend.append_message(InfoMessage(text, time.time()))
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
@ -1304,6 +1320,8 @@ class Profile(basecontact.BaseContact, Singleton):
|
|||||||
return list(groups)[0]
|
return list(groups)[0]
|
||||||
|
|
||||||
def add_gc(self, number):
|
def add_gc(self, number):
|
||||||
|
if number == -1:
|
||||||
|
return
|
||||||
widget = self.create_friend_item()
|
widget = self.create_friend_item()
|
||||||
gc = GroupChat('Group chat #' + str(number), '', widget, self._tox, number)
|
gc = GroupChat('Group chat #' + str(number), '', widget, self._tox, number)
|
||||||
self._contacts.append(gc)
|
self._contacts.append(gc)
|
||||||
@ -1426,6 +1444,8 @@ def tox_factory(data=None, settings=None):
|
|||||||
if settings is None:
|
if settings is None:
|
||||||
settings = Settings.get_default_settings()
|
settings = Settings.get_default_settings()
|
||||||
tox_options = Tox.options_new()
|
tox_options = Tox.options_new()
|
||||||
|
# see <https://github.com/irungentoo/toxcore/blob/master/toxcore/tox.h> lines 393-401
|
||||||
|
tox_options.contents.ipv6_enabled = settings['ipv6_enabled']
|
||||||
tox_options.contents.udp_enabled = settings['udp_enabled']
|
tox_options.contents.udp_enabled = settings['udp_enabled']
|
||||||
tox_options.contents.proxy_type = settings['proxy_type']
|
tox_options.contents.proxy_type = settings['proxy_type']
|
||||||
tox_options.contents.proxy_host = bytes(settings['proxy_host'], 'UTF-8')
|
tox_options.contents.proxy_host = bytes(settings['proxy_host'], 'UTF-8')
|
||||||
|
@ -104,7 +104,7 @@ class Settings(dict, Singleton):
|
|||||||
"""
|
"""
|
||||||
return {
|
return {
|
||||||
'theme': 'dark',
|
'theme': 'dark',
|
||||||
'ipv6_enabled': True,
|
'ipv6_enabled': False,
|
||||||
'udp_enabled': True,
|
'udp_enabled': True,
|
||||||
'proxy_type': 0,
|
'proxy_type': 0,
|
||||||
'proxy_host': '127.0.0.1',
|
'proxy_host': '127.0.0.1',
|
||||||
@ -145,7 +145,8 @@ class Settings(dict, Singleton):
|
|||||||
'close_to_tray': False,
|
'close_to_tray': False,
|
||||||
'font': 'Times New Roman',
|
'font': 'Times New Roman',
|
||||||
'update': 1,
|
'update': 1,
|
||||||
'group_notifications': True
|
'group_notifications': True,
|
||||||
|
'download_nodes_list': False
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>Callback</name>
|
<name>Callback</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="callbacks.py" line="227"/>
|
<location filename="callbacks.py" line="229"/>
|
||||||
<source>File from</source>
|
<source>File from</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -39,27 +39,27 @@
|
|||||||
<translation>Send request</translation>
|
<translation>Send request</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="342"/>
|
<location filename="menu.py" line="345"/>
|
||||||
<source>IPv6</source>
|
<source>IPv6</source>
|
||||||
<translation>IPv6</translation>
|
<translation>IPv6</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="343"/>
|
<location filename="menu.py" line="346"/>
|
||||||
<source>UDP</source>
|
<source>UDP</source>
|
||||||
<translation>UDP</translation>
|
<translation>UDP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="344"/>
|
<location filename="menu.py" line="347"/>
|
||||||
<source>Proxy</source>
|
<source>Proxy</source>
|
||||||
<translation>Proxy</translation>
|
<translation>Proxy</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="345"/>
|
<location filename="menu.py" line="348"/>
|
||||||
<source>IP:</source>
|
<source>IP:</source>
|
||||||
<translation>IP:</translation>
|
<translation>IP:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="346"/>
|
<location filename="menu.py" line="349"/>
|
||||||
<source>Port:</source>
|
<source>Port:</source>
|
||||||
<translation>Port:</translation>
|
<translation>Port:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -69,17 +69,22 @@
|
|||||||
<translation type="obsolete">Online contacts</translation>
|
<translation type="obsolete">Online contacts</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="348"/>
|
<location filename="menu.py" line="351"/>
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation>HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="349"/>
|
<location filename="menu.py" line="353"/>
|
||||||
<source>WARNING:
|
<source>WARNING:
|
||||||
using proxy with enabled UDP
|
using proxy with enabled UDP
|
||||||
can produce IP leak</source>
|
can produce IP leak</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="menu.py" line="352"/>
|
||||||
|
<source>Download nodes list from tox.chat</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
@ -129,13 +134,13 @@ can produce IP leak</source>
|
|||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="852"/>
|
<location filename="profile.py" line="854"/>
|
||||||
<source>User {} wants to add you to contact list. Message:
|
<source>User {} wants to add you to contact list. Message:
|
||||||
{}</source>
|
{}</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="854"/>
|
<location filename="profile.py" line="856"/>
|
||||||
<source>Friend request</source>
|
<source>Friend request</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -170,7 +175,7 @@ can produce IP leak</source>
|
|||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="692"/>
|
<location filename="profile.py" line="694"/>
|
||||||
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
||||||
<translation>Enter new alias for friend {} or leave empty to use friend's name:</translation>
|
<translation>Enter new alias for friend {} or leave empty to use friend's name:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -185,7 +190,7 @@ can produce IP leak</source>
|
|||||||
<translation type="obsolete">Find contact</translation>
|
<translation type="obsolete">Find contact</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="824"/>
|
<location filename="profile.py" line="826"/>
|
||||||
<source>Friend added</source>
|
<source>Friend added</source>
|
||||||
<translation>Friend added</translation>
|
<translation>Friend added</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -197,7 +202,7 @@ Version: </source>
|
|||||||
Version:</translation>
|
Version:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="825"/>
|
<location filename="profile.py" line="827"/>
|
||||||
<source>Friend added without sending friend request</source>
|
<source>Friend added without sending friend request</source>
|
||||||
<translation>Friend added without sending friend request</translation>
|
<translation>Friend added without sending friend request</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -307,7 +312,7 @@ Version:</translation>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="327"/>
|
<location filename="profile.py" line="329"/>
|
||||||
<source>User {} is now known as {}</source>
|
<source>User {} is now known as {}</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -357,12 +362,12 @@ Version:</translation>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="667"/>
|
<location filename="menu.py" line="672"/>
|
||||||
<source>Choose folder with sticker pack</source>
|
<source>Choose folder with sticker pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="679"/>
|
<location filename="menu.py" line="684"/>
|
||||||
<source>Choose folder with smiley pack</source>
|
<source>Choose folder with smiley pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -452,22 +457,22 @@ Version:</translation>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1328"/>
|
<location filename="profile.py" line="1337"/>
|
||||||
<source>User {} invites you to group chat. Accept?</source>
|
<source>User {} invites you to group chat. Accept?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1329"/>
|
<location filename="profile.py" line="1338"/>
|
||||||
<source>Group chat invite</source>
|
<source>Group chat invite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1365"/>
|
<location filename="profile.py" line="1374"/>
|
||||||
<source>{} users in chat</source>
|
<source>{} users in chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1386"/>
|
<location filename="profile.py" line="1395"/>
|
||||||
<source>Enter new title for group {}:</source>
|
<source>Enter new title for group {}:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -518,12 +523,12 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>NetworkSettings</name>
|
<name>NetworkSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="341"/>
|
<location filename="menu.py" line="344"/>
|
||||||
<source>Network settings</source>
|
<source>Network settings</source>
|
||||||
<translation>Network settings</translation>
|
<translation>Network settings</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="347"/>
|
<location filename="menu.py" line="350"/>
|
||||||
<source>Restart TOX core</source>
|
<source>Restart TOX core</source>
|
||||||
<translation>Restart Tox core</translation>
|
<translation>Restart Tox core</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -582,42 +587,42 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>PluginsForm</name>
|
<name>PluginsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="967"/>
|
<location filename="menu.py" line="972"/>
|
||||||
<source>Plugins</source>
|
<source>Plugins</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="968"/>
|
<location filename="menu.py" line="973"/>
|
||||||
<source>Open selected plugin</source>
|
<source>Open selected plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>No GUI found for this plugin</source>
|
<source>No GUI found for this plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="995"/>
|
<location filename="menu.py" line="1000"/>
|
||||||
<source>No description available</source>
|
<source>No description available</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1011"/>
|
<location filename="menu.py" line="1016"/>
|
||||||
<source>Disable plugin</source>
|
<source>Disable plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1013"/>
|
<location filename="menu.py" line="1018"/>
|
||||||
<source>Enable plugin</source>
|
<source>Enable plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1003"/>
|
<location filename="menu.py" line="1008"/>
|
||||||
<source>No plugins found</source>
|
<source>No plugins found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -819,24 +824,24 @@ Version:</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="mainscreen_widgets.py" line="322"/>
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
<source>New in Toxygen 0.4.1:<br>Downloading nodes from tox.chat<br>Bug fixes</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>audioSettingsForm</name>
|
<name>audioSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="800"/>
|
<location filename="menu.py" line="805"/>
|
||||||
<source>Audio settings</source>
|
<source>Audio settings</source>
|
||||||
<translation>Audio settings</translation>
|
<translation>Audio settings</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="801"/>
|
<location filename="menu.py" line="806"/>
|
||||||
<source>Input device:</source>
|
<source>Input device:</source>
|
||||||
<translation>Input device:</translation>
|
<translation>Input device:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="802"/>
|
<location filename="menu.py" line="807"/>
|
||||||
<source>Output device:</source>
|
<source>Output device:</source>
|
||||||
<translation>Output device:</translation>
|
<translation>Output device:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -844,32 +849,32 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>incoming_call</name>
|
<name>incoming_call</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1250"/>
|
<location filename="profile.py" line="1253"/>
|
||||||
<source>Incoming video call</source>
|
<source>Incoming video call</source>
|
||||||
<translation>Incoming video call</translation>
|
<translation>Incoming video call</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1252"/>
|
<location filename="profile.py" line="1255"/>
|
||||||
<source>Incoming audio call</source>
|
<source>Incoming audio call</source>
|
||||||
<translation>Incoming audio call</translation>
|
<translation>Incoming audio call</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1233"/>
|
<location filename="profile.py" line="1236"/>
|
||||||
<source>Outgoing video call</source>
|
<source>Outgoing video call</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1235"/>
|
<location filename="profile.py" line="1238"/>
|
||||||
<source>Outgoing audio call</source>
|
<source>Outgoing audio call</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1281"/>
|
<location filename="profile.py" line="1284"/>
|
||||||
<source>Call declined</source>
|
<source>Call declined</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1283"/>
|
<location filename="profile.py" line="1286"/>
|
||||||
<source>Call finished</source>
|
<source>Call finished</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -877,82 +882,82 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>interfaceForm</name>
|
<name>interfaceForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="650"/>
|
<location filename="menu.py" line="655"/>
|
||||||
<source>Interface settings</source>
|
<source>Interface settings</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="651"/>
|
<location filename="menu.py" line="656"/>
|
||||||
<source>Theme:</source>
|
<source>Theme:</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="652"/>
|
<location filename="menu.py" line="657"/>
|
||||||
<source>Language:</source>
|
<source>Language:</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="653"/>
|
<location filename="menu.py" line="658"/>
|
||||||
<source>Smileys</source>
|
<source>Smileys</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="654"/>
|
<location filename="menu.py" line="659"/>
|
||||||
<source>Smiley pack:</source>
|
<source>Smiley pack:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="655"/>
|
<location filename="menu.py" line="660"/>
|
||||||
<source>Mirror mode</source>
|
<source>Mirror mode</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="656"/>
|
<location filename="menu.py" line="661"/>
|
||||||
<source>Messages font size:</source>
|
<source>Messages font size:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart app to apply settings</source>
|
<source>Restart app to apply settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart required</source>
|
<source>Restart required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="657"/>
|
<location filename="menu.py" line="662"/>
|
||||||
<source>Select unread messages notification color</source>
|
<source>Select unread messages notification color</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="658"/>
|
<location filename="menu.py" line="663"/>
|
||||||
<source>Compact contact list</source>
|
<source>Compact contact list</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="659"/>
|
<location filename="menu.py" line="664"/>
|
||||||
<source>Import smiley pack</source>
|
<source>Import smiley pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="660"/>
|
<location filename="menu.py" line="665"/>
|
||||||
<source>Import sticker pack</source>
|
<source>Import sticker pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="649"/>
|
<location filename="menu.py" line="654"/>
|
||||||
<source>Show avatars in chat</source>
|
<source>Show avatars in chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="661"/>
|
<location filename="menu.py" line="666"/>
|
||||||
<source>Close to tray</source>
|
<source>Close to tray</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="662"/>
|
<location filename="menu.py" line="667"/>
|
||||||
<source>Select font</source>
|
<source>Select font</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1033,27 +1038,27 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>notificationsForm</name>
|
<name>notificationsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="538"/>
|
<location filename="menu.py" line="543"/>
|
||||||
<source>Notification settings</source>
|
<source>Notification settings</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="539"/>
|
<location filename="menu.py" line="544"/>
|
||||||
<source>Enable notifications</source>
|
<source>Enable notifications</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="541"/>
|
<location filename="menu.py" line="546"/>
|
||||||
<source>Enable call's sound</source>
|
<source>Enable call's sound</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="542"/>
|
<location filename="menu.py" line="547"/>
|
||||||
<source>Enable sound notifications</source>
|
<source>Enable sound notifications</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="540"/>
|
<location filename="menu.py" line="545"/>
|
||||||
<source>Notify about all messages in groups</source>
|
<source>Notify about all messages in groups</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1079,72 +1084,72 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>privacySettings</name>
|
<name>privacySettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="433"/>
|
<location filename="menu.py" line="438"/>
|
||||||
<source>Privacy settings</source>
|
<source>Privacy settings</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="434"/>
|
<location filename="menu.py" line="439"/>
|
||||||
<source>Save chat history</source>
|
<source>Save chat history</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="435"/>
|
<location filename="menu.py" line="440"/>
|
||||||
<source>Allow file auto accept</source>
|
<source>Allow file auto accept</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="436"/>
|
<location filename="menu.py" line="441"/>
|
||||||
<source>Send typing notifications</source>
|
<source>Send typing notifications</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="437"/>
|
<location filename="menu.py" line="442"/>
|
||||||
<source>Auto accept default path:</source>
|
<source>Auto accept default path:</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="438"/>
|
<location filename="menu.py" line="443"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="439"/>
|
<location filename="menu.py" line="444"/>
|
||||||
<source>Allow inlines</source>
|
<source>Allow inlines</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="481"/>
|
<location filename="menu.py" line="486"/>
|
||||||
<source>Chat history</source>
|
<source>Chat history</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="483"/>
|
<location filename="menu.py" line="488"/>
|
||||||
<source>History will be cleaned! Continue?</source>
|
<source>History will be cleaned! Continue?</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="441"/>
|
<location filename="menu.py" line="446"/>
|
||||||
<source>Blocked users:</source>
|
<source>Blocked users:</source>
|
||||||
<translation>Blocked users:</translation>
|
<translation>Blocked users:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="442"/>
|
<location filename="menu.py" line="447"/>
|
||||||
<source>Unblock</source>
|
<source>Unblock</source>
|
||||||
<translation>Unblock</translation>
|
<translation>Unblock</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="443"/>
|
<location filename="menu.py" line="448"/>
|
||||||
<source>Block user</source>
|
<source>Block user</source>
|
||||||
<translation>Block user</translation>
|
<translation>Block user</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="455"/>
|
<location filename="menu.py" line="460"/>
|
||||||
<source>Add to friend list</source>
|
<source>Add to friend list</source>
|
||||||
<translation>Add to friend list</translation>
|
<translation>Add to friend list</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="456"/>
|
<location filename="menu.py" line="461"/>
|
||||||
<source>Do you want to add this user to friend list?</source>
|
<source>Do you want to add this user to friend list?</source>
|
||||||
<translation>Do you want to add this user to friend list?</translation>
|
<translation>Do you want to add this user to friend list?</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1154,12 +1159,12 @@ Version:</translation>
|
|||||||
<translation type="obsolete">Block by TOX ID:</translation>
|
<translation type="obsolete">Block by TOX ID:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="440"/>
|
<location filename="menu.py" line="445"/>
|
||||||
<source>Block by public key:</source>
|
<source>Block by public key:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="444"/>
|
<location filename="menu.py" line="449"/>
|
||||||
<source>Save unsent messages only</source>
|
<source>Save unsent messages only</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1200,57 +1205,57 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>updateSettingsForm</name>
|
<name>updateSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1051"/>
|
<location filename="menu.py" line="1056"/>
|
||||||
<source>Update settings</source>
|
<source>Update settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1052"/>
|
<location filename="menu.py" line="1057"/>
|
||||||
<source>Select update mode:</source>
|
<source>Select update mode:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1053"/>
|
<location filename="menu.py" line="1058"/>
|
||||||
<source>Update Toxygen</source>
|
<source>Update Toxygen</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1054"/>
|
<location filename="menu.py" line="1059"/>
|
||||||
<source>Disabled</source>
|
<source>Disabled</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1055"/>
|
<location filename="menu.py" line="1060"/>
|
||||||
<source>Manual</source>
|
<source>Manual</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1056"/>
|
<location filename="menu.py" line="1061"/>
|
||||||
<source>Auto</source>
|
<source>Auto</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1075"/>
|
<location filename="menu.py" line="1080"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1068"/>
|
<location filename="menu.py" line="1073"/>
|
||||||
<source>Problems with internet connection</source>
|
<source>Problems with internet connection</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1076"/>
|
<location filename="menu.py" line="1081"/>
|
||||||
<source>Updater not found</source>
|
<source>Updater not found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1087"/>
|
<location filename="menu.py" line="1092"/>
|
||||||
<source>No updates found</source>
|
<source>No updates found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1088"/>
|
<location filename="menu.py" line="1093"/>
|
||||||
<source>Toxygen is up to date</source>
|
<source>Toxygen is up to date</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1258,22 +1263,22 @@ Version:</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>videoSettingsForm</name>
|
<name>videoSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="882"/>
|
<location filename="menu.py" line="887"/>
|
||||||
<source>Video settings</source>
|
<source>Video settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="883"/>
|
<location filename="menu.py" line="888"/>
|
||||||
<source>Device:</source>
|
<source>Device:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="862"/>
|
<location filename="menu.py" line="867"/>
|
||||||
<source>Desktop</source>
|
<source>Desktop</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="884"/>
|
<location filename="menu.py" line="889"/>
|
||||||
<source>Select region</source>
|
<source>Select region</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>Callback</name>
|
<name>Callback</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="callbacks.py" line="227"/>
|
<location filename="callbacks.py" line="229"/>
|
||||||
<source>File from</source>
|
<source>File from</source>
|
||||||
<translation>Fichier de</translation>
|
<translation>Fichier de</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -39,27 +39,27 @@
|
|||||||
<translation>Envoyer une demande</translation>
|
<translation>Envoyer une demande</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="342"/>
|
<location filename="menu.py" line="345"/>
|
||||||
<source>IPv6</source>
|
<source>IPv6</source>
|
||||||
<translation>IPv6</translation>
|
<translation>IPv6</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="343"/>
|
<location filename="menu.py" line="346"/>
|
||||||
<source>UDP</source>
|
<source>UDP</source>
|
||||||
<translation>UDP</translation>
|
<translation>UDP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="344"/>
|
<location filename="menu.py" line="347"/>
|
||||||
<source>Proxy</source>
|
<source>Proxy</source>
|
||||||
<translation>Proxy</translation>
|
<translation>Proxy</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="345"/>
|
<location filename="menu.py" line="348"/>
|
||||||
<source>IP:</source>
|
<source>IP:</source>
|
||||||
<translation>IP :</translation>
|
<translation>IP :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="346"/>
|
<location filename="menu.py" line="349"/>
|
||||||
<source>Port:</source>
|
<source>Port:</source>
|
||||||
<translation>Port :</translation>
|
<translation>Port :</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -69,12 +69,12 @@
|
|||||||
<translation type="obsolete">Contacts connectés</translation>
|
<translation type="obsolete">Contacts connectés</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="348"/>
|
<location filename="menu.py" line="351"/>
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation>HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="349"/>
|
<location filename="menu.py" line="353"/>
|
||||||
<source>WARNING:
|
<source>WARNING:
|
||||||
using proxy with enabled UDP
|
using proxy with enabled UDP
|
||||||
can produce IP leak</source>
|
can produce IP leak</source>
|
||||||
@ -82,6 +82,11 @@ can produce IP leak</source>
|
|||||||
Utiliser un proxy avec UDP
|
Utiliser un proxy avec UDP
|
||||||
peut entrainer une fuite d'IP</translation>
|
peut entrainer une fuite d'IP</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="menu.py" line="352"/>
|
||||||
|
<source>Download nodes list from tox.chat</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
@ -131,13 +136,13 @@ peut entrainer une fuite d'IP</translation>
|
|||||||
<translation>À propos de toxygen</translation>
|
<translation>À propos de toxygen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="852"/>
|
<location filename="profile.py" line="854"/>
|
||||||
<source>User {} wants to add you to contact list. Message:
|
<source>User {} wants to add you to contact list. Message:
|
||||||
{}</source>
|
{}</source>
|
||||||
<translation>L'Utilisateur {} veut vous ajouter à sa liste de contacts. Message : {}</translation>
|
<translation>L'Utilisateur {} veut vous ajouter à sa liste de contacts. Message : {}</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="854"/>
|
<location filename="profile.py" line="856"/>
|
||||||
<source>Friend request</source>
|
<source>Friend request</source>
|
||||||
<translation>Demande de contact</translation>
|
<translation>Demande de contact</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -182,7 +187,7 @@ peut entrainer une fuite d'IP</translation>
|
|||||||
<translation>Retirer ce contact</translation>
|
<translation>Retirer ce contact</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="692"/>
|
<location filename="profile.py" line="694"/>
|
||||||
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
||||||
<translation>Entrez un nouvel alias pour le contact {} ou laissez vide pour garder son nom de base :</translation>
|
<translation>Entrez un nouvel alias pour le contact {} ou laissez vide pour garder son nom de base :</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -197,7 +202,7 @@ peut entrainer une fuite d'IP</translation>
|
|||||||
<translation type="obsolete">Trouver le contact</translation>
|
<translation type="obsolete">Trouver le contact</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="824"/>
|
<location filename="profile.py" line="826"/>
|
||||||
<source>Friend added</source>
|
<source>Friend added</source>
|
||||||
<translation>Contact ajouté</translation>
|
<translation>Contact ajouté</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -209,7 +214,7 @@ Version: </source>
|
|||||||
Version :</translation>
|
Version :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="825"/>
|
<location filename="profile.py" line="827"/>
|
||||||
<source>Friend added without sending friend request</source>
|
<source>Friend added without sending friend request</source>
|
||||||
<translation>Contact ajouté sans envoi de demande</translation>
|
<translation>Contact ajouté sans envoi de demande</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -319,7 +324,7 @@ Version :</translation>
|
|||||||
<translation>Sauvegarder</translation>
|
<translation>Sauvegarder</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="327"/>
|
<location filename="profile.py" line="329"/>
|
||||||
<source>User {} is now known as {}</source>
|
<source>User {} is now known as {}</source>
|
||||||
<translation>L'utilisateur {} s'appelle désormais {}</translation>
|
<translation>L'utilisateur {} s'appelle désormais {}</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -369,12 +374,12 @@ Version :</translation>
|
|||||||
<translation>Un profil ayant ce nom existe déjà</translation>
|
<translation>Un profil ayant ce nom existe déjà</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="667"/>
|
<location filename="menu.py" line="672"/>
|
||||||
<source>Choose folder with sticker pack</source>
|
<source>Choose folder with sticker pack</source>
|
||||||
<translation>Sélectionner le dossier contenant le pack de stickers</translation>
|
<translation>Sélectionner le dossier contenant le pack de stickers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="679"/>
|
<location filename="menu.py" line="684"/>
|
||||||
<source>Choose folder with smiley pack</source>
|
<source>Choose folder with smiley pack</source>
|
||||||
<translation>Sélectionner le dossier contenant le pack de smileys</translation>
|
<translation>Sélectionner le dossier contenant le pack de smileys</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -464,22 +469,22 @@ Version :</translation>
|
|||||||
<translation>Vidéo</translation>
|
<translation>Vidéo</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1328"/>
|
<location filename="profile.py" line="1337"/>
|
||||||
<source>User {} invites you to group chat. Accept?</source>
|
<source>User {} invites you to group chat. Accept?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1329"/>
|
<location filename="profile.py" line="1338"/>
|
||||||
<source>Group chat invite</source>
|
<source>Group chat invite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1365"/>
|
<location filename="profile.py" line="1374"/>
|
||||||
<source>{} users in chat</source>
|
<source>{} users in chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1386"/>
|
<location filename="profile.py" line="1395"/>
|
||||||
<source>Enter new title for group {}:</source>
|
<source>Enter new title for group {}:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -530,12 +535,12 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>NetworkSettings</name>
|
<name>NetworkSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="341"/>
|
<location filename="menu.py" line="344"/>
|
||||||
<source>Network settings</source>
|
<source>Network settings</source>
|
||||||
<translation>Paramètres réseaux</translation>
|
<translation>Paramètres réseaux</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="347"/>
|
<location filename="menu.py" line="350"/>
|
||||||
<source>Restart TOX core</source>
|
<source>Restart TOX core</source>
|
||||||
<translation>Relancer le noyau Tox</translation>
|
<translation>Relancer le noyau Tox</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -594,42 +599,42 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>PluginsForm</name>
|
<name>PluginsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="967"/>
|
<location filename="menu.py" line="972"/>
|
||||||
<source>Plugins</source>
|
<source>Plugins</source>
|
||||||
<translation>Plugins</translation>
|
<translation>Plugins</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="968"/>
|
<location filename="menu.py" line="973"/>
|
||||||
<source>Open selected plugin</source>
|
<source>Open selected plugin</source>
|
||||||
<translation>Ouvrir le plugin sélectionné</translation>
|
<translation>Ouvrir le plugin sélectionné</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>No GUI found for this plugin</source>
|
<source>No GUI found for this plugin</source>
|
||||||
<translation>Pas d'interface pour ce plugin</translation>
|
<translation>Pas d'interface pour ce plugin</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="995"/>
|
<location filename="menu.py" line="1000"/>
|
||||||
<source>No description available</source>
|
<source>No description available</source>
|
||||||
<translation>Pas de description</translation>
|
<translation>Pas de description</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1011"/>
|
<location filename="menu.py" line="1016"/>
|
||||||
<source>Disable plugin</source>
|
<source>Disable plugin</source>
|
||||||
<translation>Désactiver le plugin</translation>
|
<translation>Désactiver le plugin</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1013"/>
|
<location filename="menu.py" line="1018"/>
|
||||||
<source>Enable plugin</source>
|
<source>Enable plugin</source>
|
||||||
<translation>Activer le plugin</translation>
|
<translation>Activer le plugin</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1003"/>
|
<location filename="menu.py" line="1008"/>
|
||||||
<source>No plugins found</source>
|
<source>No plugins found</source>
|
||||||
<translation>Pas de plugin trouvé</translation>
|
<translation>Pas de plugin trouvé</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>Erreur</translation>
|
<translation>Erreur</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -832,23 +837,28 @@ Version :</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="mainscreen_widgets.py" line="322"/>
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
||||||
<translation>Nouveau dans Toxygen 0.3.0 : <br>Appels vidéo<br>Support de Python3.6<br>Migration vers PyQt5</translation>
|
<translation type="obsolete">Nouveau dans Toxygen 0.3.0 : <br>Appels vidéo<br>Support de Python3.6<br>Migration vers PyQt5</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
|
<source>New in Toxygen 0.4.1:<br>Downloading nodes from tox.chat<br>Bug fixes</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>audioSettingsForm</name>
|
<name>audioSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="800"/>
|
<location filename="menu.py" line="805"/>
|
||||||
<source>Audio settings</source>
|
<source>Audio settings</source>
|
||||||
<translation>Paramètres audio</translation>
|
<translation>Paramètres audio</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="801"/>
|
<location filename="menu.py" line="806"/>
|
||||||
<source>Input device:</source>
|
<source>Input device:</source>
|
||||||
<translation>Péripherique d'entrée :</translation>
|
<translation>Péripherique d'entrée :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="802"/>
|
<location filename="menu.py" line="807"/>
|
||||||
<source>Output device:</source>
|
<source>Output device:</source>
|
||||||
<translation>Péripherique de sortie :</translation>
|
<translation>Péripherique de sortie :</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -856,32 +866,32 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>incoming_call</name>
|
<name>incoming_call</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1250"/>
|
<location filename="profile.py" line="1253"/>
|
||||||
<source>Incoming video call</source>
|
<source>Incoming video call</source>
|
||||||
<translation>Appel vidéo entrant</translation>
|
<translation>Appel vidéo entrant</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1252"/>
|
<location filename="profile.py" line="1255"/>
|
||||||
<source>Incoming audio call</source>
|
<source>Incoming audio call</source>
|
||||||
<translation>Appel audio entrant</translation>
|
<translation>Appel audio entrant</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1233"/>
|
<location filename="profile.py" line="1236"/>
|
||||||
<source>Outgoing video call</source>
|
<source>Outgoing video call</source>
|
||||||
<translation>Appel vidéo sortant</translation>
|
<translation>Appel vidéo sortant</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1235"/>
|
<location filename="profile.py" line="1238"/>
|
||||||
<source>Outgoing audio call</source>
|
<source>Outgoing audio call</source>
|
||||||
<translation>Appel audio sortant</translation>
|
<translation>Appel audio sortant</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1281"/>
|
<location filename="profile.py" line="1284"/>
|
||||||
<source>Call declined</source>
|
<source>Call declined</source>
|
||||||
<translation>Appel refusé</translation>
|
<translation>Appel refusé</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1283"/>
|
<location filename="profile.py" line="1286"/>
|
||||||
<source>Call finished</source>
|
<source>Call finished</source>
|
||||||
<translation>Appel terminé</translation>
|
<translation>Appel terminé</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -889,82 +899,82 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>interfaceForm</name>
|
<name>interfaceForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="650"/>
|
<location filename="menu.py" line="655"/>
|
||||||
<source>Interface settings</source>
|
<source>Interface settings</source>
|
||||||
<translation>Paramètres de l'interface</translation>
|
<translation>Paramètres de l'interface</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="651"/>
|
<location filename="menu.py" line="656"/>
|
||||||
<source>Theme:</source>
|
<source>Theme:</source>
|
||||||
<translation>Thème :</translation>
|
<translation>Thème :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="652"/>
|
<location filename="menu.py" line="657"/>
|
||||||
<source>Language:</source>
|
<source>Language:</source>
|
||||||
<translation>Langue :</translation>
|
<translation>Langue :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="653"/>
|
<location filename="menu.py" line="658"/>
|
||||||
<source>Smileys</source>
|
<source>Smileys</source>
|
||||||
<translation>Smileys</translation>
|
<translation>Smileys</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="654"/>
|
<location filename="menu.py" line="659"/>
|
||||||
<source>Smiley pack:</source>
|
<source>Smiley pack:</source>
|
||||||
<translation>Pack de smileys :</translation>
|
<translation>Pack de smileys :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="655"/>
|
<location filename="menu.py" line="660"/>
|
||||||
<source>Mirror mode</source>
|
<source>Mirror mode</source>
|
||||||
<translation>Mode miroir</translation>
|
<translation>Mode miroir</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="656"/>
|
<location filename="menu.py" line="661"/>
|
||||||
<source>Messages font size:</source>
|
<source>Messages font size:</source>
|
||||||
<translation>Taille des messages :</translation>
|
<translation>Taille des messages :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart app to apply settings</source>
|
<source>Restart app to apply settings</source>
|
||||||
<translation>Redémarrer toxygen pour appliquer les paramètres</translation>
|
<translation>Redémarrer toxygen pour appliquer les paramètres</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart required</source>
|
<source>Restart required</source>
|
||||||
<translation>Redémarrage nécessaire</translation>
|
<translation>Redémarrage nécessaire</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="657"/>
|
<location filename="menu.py" line="662"/>
|
||||||
<source>Select unread messages notification color</source>
|
<source>Select unread messages notification color</source>
|
||||||
<translation>Sélectionner la couleur des messages non-lus</translation>
|
<translation>Sélectionner la couleur des messages non-lus</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="658"/>
|
<location filename="menu.py" line="663"/>
|
||||||
<source>Compact contact list</source>
|
<source>Compact contact list</source>
|
||||||
<translation>Liste de contacts compacte</translation>
|
<translation>Liste de contacts compacte</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="659"/>
|
<location filename="menu.py" line="664"/>
|
||||||
<source>Import smiley pack</source>
|
<source>Import smiley pack</source>
|
||||||
<translation>Importer un pack de smileys</translation>
|
<translation>Importer un pack de smileys</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="660"/>
|
<location filename="menu.py" line="665"/>
|
||||||
<source>Import sticker pack</source>
|
<source>Import sticker pack</source>
|
||||||
<translation>Importer un pack de stickers</translation>
|
<translation>Importer un pack de stickers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="649"/>
|
<location filename="menu.py" line="654"/>
|
||||||
<source>Show avatars in chat</source>
|
<source>Show avatars in chat</source>
|
||||||
<translation>Montrer les avatars dans la conversation</translation>
|
<translation>Montrer les avatars dans la conversation</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="661"/>
|
<location filename="menu.py" line="666"/>
|
||||||
<source>Close to tray</source>
|
<source>Close to tray</source>
|
||||||
<translation>Réduire</translation>
|
<translation>Réduire</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="662"/>
|
<location filename="menu.py" line="667"/>
|
||||||
<source>Select font</source>
|
<source>Select font</source>
|
||||||
<translation>Sélectionner la police</translation>
|
<translation>Sélectionner la police</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1050,27 +1060,27 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>notificationsForm</name>
|
<name>notificationsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="538"/>
|
<location filename="menu.py" line="543"/>
|
||||||
<source>Notification settings</source>
|
<source>Notification settings</source>
|
||||||
<translation>Paramètres de notification</translation>
|
<translation>Paramètres de notification</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="539"/>
|
<location filename="menu.py" line="544"/>
|
||||||
<source>Enable notifications</source>
|
<source>Enable notifications</source>
|
||||||
<translation>Activer les notifications</translation>
|
<translation>Activer les notifications</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="541"/>
|
<location filename="menu.py" line="546"/>
|
||||||
<source>Enable call's sound</source>
|
<source>Enable call's sound</source>
|
||||||
<translation>Activer les sons d'appel</translation>
|
<translation>Activer les sons d'appel</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="542"/>
|
<location filename="menu.py" line="547"/>
|
||||||
<source>Enable sound notifications</source>
|
<source>Enable sound notifications</source>
|
||||||
<translation>Activer les sons de notifications</translation>
|
<translation>Activer les sons de notifications</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="540"/>
|
<location filename="menu.py" line="545"/>
|
||||||
<source>Notify about all messages in groups</source>
|
<source>Notify about all messages in groups</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1096,72 +1106,72 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>privacySettings</name>
|
<name>privacySettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="433"/>
|
<location filename="menu.py" line="438"/>
|
||||||
<source>Privacy settings</source>
|
<source>Privacy settings</source>
|
||||||
<translation>Paramètres de confidentialité</translation>
|
<translation>Paramètres de confidentialité</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="434"/>
|
<location filename="menu.py" line="439"/>
|
||||||
<source>Save chat history</source>
|
<source>Save chat history</source>
|
||||||
<translation>Sauvegarder l'historique de conversation</translation>
|
<translation>Sauvegarder l'historique de conversation</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="435"/>
|
<location filename="menu.py" line="440"/>
|
||||||
<source>Allow file auto accept</source>
|
<source>Allow file auto accept</source>
|
||||||
<translation>Autoriser les fichier automatiquement</translation>
|
<translation>Autoriser les fichier automatiquement</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="436"/>
|
<location filename="menu.py" line="441"/>
|
||||||
<source>Send typing notifications</source>
|
<source>Send typing notifications</source>
|
||||||
<translation>Informer de la frappe</translation>
|
<translation>Informer de la frappe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="437"/>
|
<location filename="menu.py" line="442"/>
|
||||||
<source>Auto accept default path:</source>
|
<source>Auto accept default path:</source>
|
||||||
<translation>Chemin par défaut des fichiers acceptés automatiquement :</translation>
|
<translation>Chemin par défaut des fichiers acceptés automatiquement :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="438"/>
|
<location filename="menu.py" line="443"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation>Modifier</translation>
|
<translation>Modifier</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="439"/>
|
<location filename="menu.py" line="444"/>
|
||||||
<source>Allow inlines</source>
|
<source>Allow inlines</source>
|
||||||
<translation>Activer l'affichage integré</translation>
|
<translation>Activer l'affichage integré</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="481"/>
|
<location filename="menu.py" line="486"/>
|
||||||
<source>Chat history</source>
|
<source>Chat history</source>
|
||||||
<translation>Historique de conversation</translation>
|
<translation>Historique de conversation</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="483"/>
|
<location filename="menu.py" line="488"/>
|
||||||
<source>History will be cleaned! Continue?</source>
|
<source>History will be cleaned! Continue?</source>
|
||||||
<translation>L'Historique va être vidé ! Confirmer ?</translation>
|
<translation>L'Historique va être vidé ! Confirmer ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="441"/>
|
<location filename="menu.py" line="446"/>
|
||||||
<source>Blocked users:</source>
|
<source>Blocked users:</source>
|
||||||
<translation>Utilisateurs bloqués :</translation>
|
<translation>Utilisateurs bloqués :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="442"/>
|
<location filename="menu.py" line="447"/>
|
||||||
<source>Unblock</source>
|
<source>Unblock</source>
|
||||||
<translation>Débloquer</translation>
|
<translation>Débloquer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="443"/>
|
<location filename="menu.py" line="448"/>
|
||||||
<source>Block user</source>
|
<source>Block user</source>
|
||||||
<translation>Bloquer l'utilisateur</translation>
|
<translation>Bloquer l'utilisateur</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="455"/>
|
<location filename="menu.py" line="460"/>
|
||||||
<source>Add to friend list</source>
|
<source>Add to friend list</source>
|
||||||
<translation>Ajouter à la liste de contacts</translation>
|
<translation>Ajouter à la liste de contacts</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="456"/>
|
<location filename="menu.py" line="461"/>
|
||||||
<source>Do you want to add this user to friend list?</source>
|
<source>Do you want to add this user to friend list?</source>
|
||||||
<translation>Voulez vous aajouter cet utilisateur à votre liste de contacts ?</translation>
|
<translation>Voulez vous aajouter cet utilisateur à votre liste de contacts ?</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1171,12 +1181,12 @@ Version :</translation>
|
|||||||
<translation type="obsolete">Bloquer l'ID TOX :</translation>
|
<translation type="obsolete">Bloquer l'ID TOX :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="440"/>
|
<location filename="menu.py" line="445"/>
|
||||||
<source>Block by public key:</source>
|
<source>Block by public key:</source>
|
||||||
<translation>Bloquer par clé publique :</translation>
|
<translation>Bloquer par clé publique :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="444"/>
|
<location filename="menu.py" line="449"/>
|
||||||
<source>Save unsent messages only</source>
|
<source>Save unsent messages only</source>
|
||||||
<translation>Sauvegarder les messages non envoyés uniquement</translation>
|
<translation>Sauvegarder les messages non envoyés uniquement</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1217,57 +1227,57 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>updateSettingsForm</name>
|
<name>updateSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1051"/>
|
<location filename="menu.py" line="1056"/>
|
||||||
<source>Update settings</source>
|
<source>Update settings</source>
|
||||||
<translation>Paramètres de mise à jour</translation>
|
<translation>Paramètres de mise à jour</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1052"/>
|
<location filename="menu.py" line="1057"/>
|
||||||
<source>Select update mode:</source>
|
<source>Select update mode:</source>
|
||||||
<translation>Sélectionner le mode de mise à jour :</translation>
|
<translation>Sélectionner le mode de mise à jour :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1053"/>
|
<location filename="menu.py" line="1058"/>
|
||||||
<source>Update Toxygen</source>
|
<source>Update Toxygen</source>
|
||||||
<translation>Mettre à jour toxygen</translation>
|
<translation>Mettre à jour toxygen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1054"/>
|
<location filename="menu.py" line="1059"/>
|
||||||
<source>Disabled</source>
|
<source>Disabled</source>
|
||||||
<translation>Désactivé</translation>
|
<translation>Désactivé</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1055"/>
|
<location filename="menu.py" line="1060"/>
|
||||||
<source>Manual</source>
|
<source>Manual</source>
|
||||||
<translation>Manuel</translation>
|
<translation>Manuel</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1056"/>
|
<location filename="menu.py" line="1061"/>
|
||||||
<source>Auto</source>
|
<source>Auto</source>
|
||||||
<translation>Automatique</translation>
|
<translation>Automatique</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1075"/>
|
<location filename="menu.py" line="1080"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>Erreur</translation>
|
<translation>Erreur</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1068"/>
|
<location filename="menu.py" line="1073"/>
|
||||||
<source>Problems with internet connection</source>
|
<source>Problems with internet connection</source>
|
||||||
<translation>Il y à des problèmes avec votre connexion internet</translation>
|
<translation>Il y à des problèmes avec votre connexion internet</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1076"/>
|
<location filename="menu.py" line="1081"/>
|
||||||
<source>Updater not found</source>
|
<source>Updater not found</source>
|
||||||
<translation>Updater non trouvé</translation>
|
<translation>Updater non trouvé</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1087"/>
|
<location filename="menu.py" line="1092"/>
|
||||||
<source>No updates found</source>
|
<source>No updates found</source>
|
||||||
<translation>Pas de mises à jour trouvés</translation>
|
<translation>Pas de mises à jour trouvés</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1088"/>
|
<location filename="menu.py" line="1093"/>
|
||||||
<source>Toxygen is up to date</source>
|
<source>Toxygen is up to date</source>
|
||||||
<translation>Toxygen est à jour</translation>
|
<translation>Toxygen est à jour</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1275,22 +1285,22 @@ Version :</translation>
|
|||||||
<context>
|
<context>
|
||||||
<name>videoSettingsForm</name>
|
<name>videoSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="882"/>
|
<location filename="menu.py" line="887"/>
|
||||||
<source>Video settings</source>
|
<source>Video settings</source>
|
||||||
<translation>Paramètres vidéo</translation>
|
<translation>Paramètres vidéo</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="883"/>
|
<location filename="menu.py" line="888"/>
|
||||||
<source>Device:</source>
|
<source>Device:</source>
|
||||||
<translation>Périphérique :</translation>
|
<translation>Périphérique :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="862"/>
|
<location filename="menu.py" line="867"/>
|
||||||
<source>Desktop</source>
|
<source>Desktop</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="884"/>
|
<location filename="menu.py" line="889"/>
|
||||||
<source>Select region</source>
|
<source>Select region</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE TS>
|
<!DOCTYPE TS><TS version="1.1" language="ru_RU">
|
||||||
<TS version="2.0" language="ru_RU">
|
|
||||||
<context>
|
<context>
|
||||||
<name>AddContact</name>
|
<name>AddContact</name>
|
||||||
<message>
|
<message>
|
||||||
@ -27,7 +26,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>Callback</name>
|
<name>Callback</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="callbacks.py" line="227"/>
|
<location filename="callbacks.py" line="229"/>
|
||||||
<source>File from</source>
|
<source>File from</source>
|
||||||
<translation>Файл от</translation>
|
<translation>Файл от</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -40,27 +39,27 @@
|
|||||||
<translation>Отправить запрос</translation>
|
<translation>Отправить запрос</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="342"/>
|
<location filename="menu.py" line="345"/>
|
||||||
<source>IPv6</source>
|
<source>IPv6</source>
|
||||||
<translation>IPv6</translation>
|
<translation>IPv6</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="343"/>
|
<location filename="menu.py" line="346"/>
|
||||||
<source>UDP</source>
|
<source>UDP</source>
|
||||||
<translation>UDP</translation>
|
<translation>UDP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="344"/>
|
<location filename="menu.py" line="347"/>
|
||||||
<source>Proxy</source>
|
<source>Proxy</source>
|
||||||
<translation>Прокси</translation>
|
<translation>Прокси</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="345"/>
|
<location filename="menu.py" line="348"/>
|
||||||
<source>IP:</source>
|
<source>IP:</source>
|
||||||
<translation>IP:</translation>
|
<translation>IP:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="346"/>
|
<location filename="menu.py" line="349"/>
|
||||||
<source>Port:</source>
|
<source>Port:</source>
|
||||||
<translation>Порт:</translation>
|
<translation>Порт:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -70,12 +69,12 @@
|
|||||||
<translation type="obsolete">Контакты в сети</translation>
|
<translation type="obsolete">Контакты в сети</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="348"/>
|
<location filename="menu.py" line="351"/>
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation>HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="349"/>
|
<location filename="menu.py" line="353"/>
|
||||||
<source>WARNING:
|
<source>WARNING:
|
||||||
using proxy with enabled UDP
|
using proxy with enabled UDP
|
||||||
can produce IP leak</source>
|
can produce IP leak</source>
|
||||||
@ -83,6 +82,11 @@ can produce IP leak</source>
|
|||||||
использование прокси с UDP
|
использование прокси с UDP
|
||||||
может привести к утечке IP</translation>
|
может привести к утечке IP</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="menu.py" line="352"/>
|
||||||
|
<source>Download nodes list from tox.chat</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
@ -132,14 +136,14 @@ can produce IP leak</source>
|
|||||||
<translation>О программе</translation>
|
<translation>О программе</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="852"/>
|
<location filename="profile.py" line="854"/>
|
||||||
<source>User {} wants to add you to contact list. Message:
|
<source>User {} wants to add you to contact list. Message:
|
||||||
{}</source>
|
{}</source>
|
||||||
<translation>Пользователь {} хочет добавить Вас в список контактов. Сообщение:
|
<translation>Пользователь {} хочет добавить Вас в список контактов. Сообщение:
|
||||||
{}</translation>
|
{}</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="854"/>
|
<location filename="profile.py" line="856"/>
|
||||||
<source>Friend request</source>
|
<source>Friend request</source>
|
||||||
<translation>Запрос на добавление в друзья</translation>
|
<translation>Запрос на добавление в друзья</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -179,7 +183,7 @@ can produce IP leak</source>
|
|||||||
<translation>Удалить друга</translation>
|
<translation>Удалить друга</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="692"/>
|
<location filename="profile.py" line="694"/>
|
||||||
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
||||||
<translation>Введите новый псевдоним для друга {} или оставьте пустым для использования его имени:</translation>
|
<translation>Введите новый псевдоним для друга {} или оставьте пустым для использования его имени:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -194,7 +198,7 @@ can produce IP leak</source>
|
|||||||
<translation type="obsolete">Найти контакт</translation>
|
<translation type="obsolete">Найти контакт</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="824"/>
|
<location filename="profile.py" line="826"/>
|
||||||
<source>Friend added</source>
|
<source>Friend added</source>
|
||||||
<translation>Друг добавлен</translation>
|
<translation>Друг добавлен</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -205,7 +209,7 @@ Version: </source>
|
|||||||
<translation>Toxygen - клиент для мессенджера Tox, написанный на Python. Версия: </translation>
|
<translation>Toxygen - клиент для мессенджера Tox, написанный на Python. Версия: </translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="825"/>
|
<location filename="profile.py" line="827"/>
|
||||||
<source>Friend added without sending friend request</source>
|
<source>Friend added without sending friend request</source>
|
||||||
<translation>Друг добавлен без отправки запроса на добавление в друзья</translation>
|
<translation>Друг добавлен без отправки запроса на добавление в друзья</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -315,7 +319,7 @@ Version: </source>
|
|||||||
<translation>Сохранить</translation>
|
<translation>Сохранить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="327"/>
|
<location filename="profile.py" line="329"/>
|
||||||
<source>User {} is now known as {}</source>
|
<source>User {} is now known as {}</source>
|
||||||
<translation>Пользователь {} сейчас известен как {}</translation>
|
<translation>Пользователь {} сейчас известен как {}</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -365,12 +369,12 @@ Version: </source>
|
|||||||
<translation>Профиль с данным именем уже существует</translation>
|
<translation>Профиль с данным именем уже существует</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="667"/>
|
<location filename="menu.py" line="672"/>
|
||||||
<source>Choose folder with sticker pack</source>
|
<source>Choose folder with sticker pack</source>
|
||||||
<translation>Выберите папку в паком стикеров</translation>
|
<translation>Выберите папку в паком стикеров</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="679"/>
|
<location filename="menu.py" line="684"/>
|
||||||
<source>Choose folder with smiley pack</source>
|
<source>Choose folder with smiley pack</source>
|
||||||
<translation>Выберите папку с паком смайлов</translation>
|
<translation>Выберите папку с паком смайлов</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -460,22 +464,22 @@ Version: </source>
|
|||||||
<translation>Видео</translation>
|
<translation>Видео</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1328"/>
|
<location filename="profile.py" line="1337"/>
|
||||||
<source>User {} invites you to group chat. Accept?</source>
|
<source>User {} invites you to group chat. Accept?</source>
|
||||||
<translation>Пользователь {} приглашает Вас в групповой чат. Принять приглашение?</translation>
|
<translation>Пользователь {} приглашает Вас в групповой чат. Принять приглашение?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1329"/>
|
<location filename="profile.py" line="1338"/>
|
||||||
<source>Group chat invite</source>
|
<source>Group chat invite</source>
|
||||||
<translation>Приглашение в групповой чат</translation>
|
<translation>Приглашение в групповой чат</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1365"/>
|
<location filename="profile.py" line="1374"/>
|
||||||
<source>{} users in chat</source>
|
<source>{} users in chat</source>
|
||||||
<translation>{} пользователей в чате</translation>
|
<translation>{} пользователей в чате</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1386"/>
|
<location filename="profile.py" line="1395"/>
|
||||||
<source>Enter new title for group {}:</source>
|
<source>Enter new title for group {}:</source>
|
||||||
<translation>Введите название для группы {}:</translation>
|
<translation>Введите название для группы {}:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -551,12 +555,12 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>NetworkSettings</name>
|
<name>NetworkSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="341"/>
|
<location filename="menu.py" line="344"/>
|
||||||
<source>Network settings</source>
|
<source>Network settings</source>
|
||||||
<translation>Настройки сети</translation>
|
<translation>Настройки сети</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="347"/>
|
<location filename="menu.py" line="350"/>
|
||||||
<source>Restart TOX core</source>
|
<source>Restart TOX core</source>
|
||||||
<translation>Перезапустить ядро TOX</translation>
|
<translation>Перезапустить ядро TOX</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -615,42 +619,42 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>PluginsForm</name>
|
<name>PluginsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="967"/>
|
<location filename="menu.py" line="972"/>
|
||||||
<source>Plugins</source>
|
<source>Plugins</source>
|
||||||
<translation>Плагины</translation>
|
<translation>Плагины</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="968"/>
|
<location filename="menu.py" line="973"/>
|
||||||
<source>Open selected plugin</source>
|
<source>Open selected plugin</source>
|
||||||
<translation>Открыть выбранный плагин</translation>
|
<translation>Открыть выбранный плагин</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>No GUI found for this plugin</source>
|
<source>No GUI found for this plugin</source>
|
||||||
<translation>GUI для данного плагина не найден</translation>
|
<translation>GUI для данного плагина не найден</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="995"/>
|
<location filename="menu.py" line="1000"/>
|
||||||
<source>No description available</source>
|
<source>No description available</source>
|
||||||
<translation>Описание недоступно</translation>
|
<translation>Описание недоступно</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1011"/>
|
<location filename="menu.py" line="1016"/>
|
||||||
<source>Disable plugin</source>
|
<source>Disable plugin</source>
|
||||||
<translation>Отключить плагин</translation>
|
<translation>Отключить плагин</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1013"/>
|
<location filename="menu.py" line="1018"/>
|
||||||
<source>Enable plugin</source>
|
<source>Enable plugin</source>
|
||||||
<translation>Включить плагин</translation>
|
<translation>Включить плагин</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1003"/>
|
<location filename="menu.py" line="1008"/>
|
||||||
<source>No plugins found</source>
|
<source>No plugins found</source>
|
||||||
<translation>Плагины не найдены</translation>
|
<translation>Плагины не найдены</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>Ошибка</translation>
|
<translation>Ошибка</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -903,23 +907,28 @@ Version: </source>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="mainscreen_widgets.py" line="322"/>
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
||||||
<translation>Новое в Toxygen 0.3.0:<br>Видеозвонки<br>Поддержка Python3.6<br>Миграция на PyQt5</translation>
|
<translation type="obsolete">Новое в Toxygen 0.3.0:<br>Видеозвонки<br>Поддержка Python3.6<br>Миграция на PyQt5</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
|
<source>New in Toxygen 0.4.1:<br>Downloading nodes from tox.chat<br>Bug fixes</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>audioSettingsForm</name>
|
<name>audioSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="800"/>
|
<location filename="menu.py" line="805"/>
|
||||||
<source>Audio settings</source>
|
<source>Audio settings</source>
|
||||||
<translation>Настройки аудио</translation>
|
<translation>Настройки аудио</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="801"/>
|
<location filename="menu.py" line="806"/>
|
||||||
<source>Input device:</source>
|
<source>Input device:</source>
|
||||||
<translation>Устройство ввода:</translation>
|
<translation>Устройство ввода:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="802"/>
|
<location filename="menu.py" line="807"/>
|
||||||
<source>Output device:</source>
|
<source>Output device:</source>
|
||||||
<translation>Устройство вывода:</translation>
|
<translation>Устройство вывода:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -927,32 +936,32 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>incoming_call</name>
|
<name>incoming_call</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1250"/>
|
<location filename="profile.py" line="1253"/>
|
||||||
<source>Incoming video call</source>
|
<source>Incoming video call</source>
|
||||||
<translation>Входящий видеозвонок</translation>
|
<translation>Входящий видеозвонок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1252"/>
|
<location filename="profile.py" line="1255"/>
|
||||||
<source>Incoming audio call</source>
|
<source>Incoming audio call</source>
|
||||||
<translation>Входящий аудиозвонок</translation>
|
<translation>Входящий аудиозвонок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1233"/>
|
<location filename="profile.py" line="1236"/>
|
||||||
<source>Outgoing video call</source>
|
<source>Outgoing video call</source>
|
||||||
<translation>Исходящий видеозвонок</translation>
|
<translation>Исходящий видеозвонок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1235"/>
|
<location filename="profile.py" line="1238"/>
|
||||||
<source>Outgoing audio call</source>
|
<source>Outgoing audio call</source>
|
||||||
<translation>Исходящий аудиозвонок</translation>
|
<translation>Исходящий аудиозвонок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1281"/>
|
<location filename="profile.py" line="1284"/>
|
||||||
<source>Call declined</source>
|
<source>Call declined</source>
|
||||||
<translation>Звонок отменен</translation>
|
<translation>Звонок отменен</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1283"/>
|
<location filename="profile.py" line="1286"/>
|
||||||
<source>Call finished</source>
|
<source>Call finished</source>
|
||||||
<translation>Звонок завершен</translation>
|
<translation>Звонок завершен</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -960,82 +969,82 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>interfaceForm</name>
|
<name>interfaceForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="650"/>
|
<location filename="menu.py" line="655"/>
|
||||||
<source>Interface settings</source>
|
<source>Interface settings</source>
|
||||||
<translation>Настройки интерфейса</translation>
|
<translation>Настройки интерфейса</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="651"/>
|
<location filename="menu.py" line="656"/>
|
||||||
<source>Theme:</source>
|
<source>Theme:</source>
|
||||||
<translation>Тема:</translation>
|
<translation>Тема:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="652"/>
|
<location filename="menu.py" line="657"/>
|
||||||
<source>Language:</source>
|
<source>Language:</source>
|
||||||
<translation>Язык:</translation>
|
<translation>Язык:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="653"/>
|
<location filename="menu.py" line="658"/>
|
||||||
<source>Smileys</source>
|
<source>Smileys</source>
|
||||||
<translation>Смайлики</translation>
|
<translation>Смайлики</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="654"/>
|
<location filename="menu.py" line="659"/>
|
||||||
<source>Smiley pack:</source>
|
<source>Smiley pack:</source>
|
||||||
<translation>Набор смайликов:</translation>
|
<translation>Набор смайликов:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="655"/>
|
<location filename="menu.py" line="660"/>
|
||||||
<source>Mirror mode</source>
|
<source>Mirror mode</source>
|
||||||
<translation>Зеркальный режим</translation>
|
<translation>Зеркальный режим</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="656"/>
|
<location filename="menu.py" line="661"/>
|
||||||
<source>Messages font size:</source>
|
<source>Messages font size:</source>
|
||||||
<translation>Размер шрифта сообщений:</translation>
|
<translation>Размер шрифта сообщений:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart app to apply settings</source>
|
<source>Restart app to apply settings</source>
|
||||||
<translation>Для применения настроек необходимо перезапустить приложение</translation>
|
<translation>Для применения настроек необходимо перезапустить приложение</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart required</source>
|
<source>Restart required</source>
|
||||||
<translation>Требуется перезапуск</translation>
|
<translation>Требуется перезапуск</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="657"/>
|
<location filename="menu.py" line="662"/>
|
||||||
<source>Select unread messages notification color</source>
|
<source>Select unread messages notification color</source>
|
||||||
<translation>Цвет уведомления о сообщении</translation>
|
<translation>Цвет уведомления о сообщении</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="658"/>
|
<location filename="menu.py" line="663"/>
|
||||||
<source>Compact contact list</source>
|
<source>Compact contact list</source>
|
||||||
<translation>Компактный список контактов</translation>
|
<translation>Компактный список контактов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="659"/>
|
<location filename="menu.py" line="664"/>
|
||||||
<source>Import smiley pack</source>
|
<source>Import smiley pack</source>
|
||||||
<translation>Импортировать смайлы</translation>
|
<translation>Импортировать смайлы</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="660"/>
|
<location filename="menu.py" line="665"/>
|
||||||
<source>Import sticker pack</source>
|
<source>Import sticker pack</source>
|
||||||
<translation>Импортировать стикеры</translation>
|
<translation>Импортировать стикеры</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="649"/>
|
<location filename="menu.py" line="654"/>
|
||||||
<source>Show avatars in chat</source>
|
<source>Show avatars in chat</source>
|
||||||
<translation>Показывать аватары в чате</translation>
|
<translation>Показывать аватары в чате</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="661"/>
|
<location filename="menu.py" line="666"/>
|
||||||
<source>Close to tray</source>
|
<source>Close to tray</source>
|
||||||
<translation>Сворачивать в трей</translation>
|
<translation>Сворачивать в трей</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="662"/>
|
<location filename="menu.py" line="667"/>
|
||||||
<source>Select font</source>
|
<source>Select font</source>
|
||||||
<translation>Выбрать шрифт</translation>
|
<translation>Выбрать шрифт</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1121,28 +1130,28 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>notificationsForm</name>
|
<name>notificationsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="538"/>
|
<location filename="menu.py" line="543"/>
|
||||||
<source>Notification settings</source>
|
<source>Notification settings</source>
|
||||||
<translation>Настройки уведомлений</translation>
|
<translation>Настройки уведомлений</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="539"/>
|
<location filename="menu.py" line="544"/>
|
||||||
<source>Enable notifications</source>
|
<source>Enable notifications</source>
|
||||||
<translation>Включить уведомления</translation>
|
<translation>Включить уведомления</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="541"/>
|
<location filename="menu.py" line="546"/>
|
||||||
<source>Enable call's sound</source>
|
<source>Enable call's sound</source>
|
||||||
<translation>Включить звук звонка</translation>
|
<translation>Включить звук звонка</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="542"/>
|
<location filename="menu.py" line="547"/>
|
||||||
<source>Enable sound notifications</source>
|
<source>Enable sound notifications</source>
|
||||||
<translation>Включить звуковые уведомления
|
<translation>Включить звуковые уведомления
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="540"/>
|
<location filename="menu.py" line="545"/>
|
||||||
<source>Notify about all messages in groups</source>
|
<source>Notify about all messages in groups</source>
|
||||||
<translation>Уведомлять обо всех сообщениях в группах</translation>
|
<translation>Уведомлять обо всех сообщениях в группах</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1168,72 +1177,72 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>privacySettings</name>
|
<name>privacySettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="433"/>
|
<location filename="menu.py" line="438"/>
|
||||||
<source>Privacy settings</source>
|
<source>Privacy settings</source>
|
||||||
<translation>Настройки приватности</translation>
|
<translation>Настройки приватности</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="434"/>
|
<location filename="menu.py" line="439"/>
|
||||||
<source>Save chat history</source>
|
<source>Save chat history</source>
|
||||||
<translation>Сохранять историю переписки</translation>
|
<translation>Сохранять историю переписки</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="435"/>
|
<location filename="menu.py" line="440"/>
|
||||||
<source>Allow file auto accept</source>
|
<source>Allow file auto accept</source>
|
||||||
<translation>Разрешить автополучение файлов</translation>
|
<translation>Разрешить автополучение файлов</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="436"/>
|
<location filename="menu.py" line="441"/>
|
||||||
<source>Send typing notifications</source>
|
<source>Send typing notifications</source>
|
||||||
<translation>Посылать уведомления о наборе текста</translation>
|
<translation>Посылать уведомления о наборе текста</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="437"/>
|
<location filename="menu.py" line="442"/>
|
||||||
<source>Auto accept default path:</source>
|
<source>Auto accept default path:</source>
|
||||||
<translation>Путь автоприема файлов:</translation>
|
<translation>Путь автоприема файлов:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="438"/>
|
<location filename="menu.py" line="443"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation>Изменить</translation>
|
<translation>Изменить</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="439"/>
|
<location filename="menu.py" line="444"/>
|
||||||
<source>Allow inlines</source>
|
<source>Allow inlines</source>
|
||||||
<translation>Разрешать инлайны</translation>
|
<translation>Разрешать инлайны</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="481"/>
|
<location filename="menu.py" line="486"/>
|
||||||
<source>Chat history</source>
|
<source>Chat history</source>
|
||||||
<translation>История чата</translation>
|
<translation>История чата</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="483"/>
|
<location filename="menu.py" line="488"/>
|
||||||
<source>History will be cleaned! Continue?</source>
|
<source>History will be cleaned! Continue?</source>
|
||||||
<translation>История переписки будет очищена! Продолжить?</translation>
|
<translation>История переписки будет очищена! Продолжить?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="441"/>
|
<location filename="menu.py" line="446"/>
|
||||||
<source>Blocked users:</source>
|
<source>Blocked users:</source>
|
||||||
<translation>Заблокированные пользователи:</translation>
|
<translation>Заблокированные пользователи:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="442"/>
|
<location filename="menu.py" line="447"/>
|
||||||
<source>Unblock</source>
|
<source>Unblock</source>
|
||||||
<translation>Разблокировать</translation>
|
<translation>Разблокировать</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="443"/>
|
<location filename="menu.py" line="448"/>
|
||||||
<source>Block user</source>
|
<source>Block user</source>
|
||||||
<translation>Заблокировать пользователя</translation>
|
<translation>Заблокировать пользователя</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="455"/>
|
<location filename="menu.py" line="460"/>
|
||||||
<source>Add to friend list</source>
|
<source>Add to friend list</source>
|
||||||
<translation>Добавить в список друзей</translation>
|
<translation>Добавить в список друзей</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="456"/>
|
<location filename="menu.py" line="461"/>
|
||||||
<source>Do you want to add this user to friend list?</source>
|
<source>Do you want to add this user to friend list?</source>
|
||||||
<translation>Добавить этого пользователя в список друзей?</translation>
|
<translation>Добавить этого пользователя в список друзей?</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1243,12 +1252,12 @@ Version: </source>
|
|||||||
<translation type="obsolete">Блокировать по TOX ID:</translation>
|
<translation type="obsolete">Блокировать по TOX ID:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="440"/>
|
<location filename="menu.py" line="445"/>
|
||||||
<source>Block by public key:</source>
|
<source>Block by public key:</source>
|
||||||
<translation>Блокировать по публичному ключу:</translation>
|
<translation>Блокировать по публичному ключу:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="444"/>
|
<location filename="menu.py" line="449"/>
|
||||||
<source>Save unsent messages only</source>
|
<source>Save unsent messages only</source>
|
||||||
<translation>Сохранять только неотправленные сообщения</translation>
|
<translation>Сохранять только неотправленные сообщения</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1289,57 +1298,57 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>updateSettingsForm</name>
|
<name>updateSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1051"/>
|
<location filename="menu.py" line="1056"/>
|
||||||
<source>Update settings</source>
|
<source>Update settings</source>
|
||||||
<translation>Обновить настройки</translation>
|
<translation>Обновить настройки</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1052"/>
|
<location filename="menu.py" line="1057"/>
|
||||||
<source>Select update mode:</source>
|
<source>Select update mode:</source>
|
||||||
<translation>Выбрать режим обновлений:</translation>
|
<translation>Выбрать режим обновлений:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1053"/>
|
<location filename="menu.py" line="1058"/>
|
||||||
<source>Update Toxygen</source>
|
<source>Update Toxygen</source>
|
||||||
<translation>Обновить Toxygen</translation>
|
<translation>Обновить Toxygen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1054"/>
|
<location filename="menu.py" line="1059"/>
|
||||||
<source>Disabled</source>
|
<source>Disabled</source>
|
||||||
<translation>Отключены</translation>
|
<translation>Отключены</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1055"/>
|
<location filename="menu.py" line="1060"/>
|
||||||
<source>Manual</source>
|
<source>Manual</source>
|
||||||
<translation>Вручную</translation>
|
<translation>Вручную</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1056"/>
|
<location filename="menu.py" line="1061"/>
|
||||||
<source>Auto</source>
|
<source>Auto</source>
|
||||||
<translation>Автоматически</translation>
|
<translation>Автоматически</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1075"/>
|
<location filename="menu.py" line="1080"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>Ошибка</translation>
|
<translation>Ошибка</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1068"/>
|
<location filename="menu.py" line="1073"/>
|
||||||
<source>Problems with internet connection</source>
|
<source>Problems with internet connection</source>
|
||||||
<translation>Проблемы с соединением</translation>
|
<translation>Проблемы с соединением</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1076"/>
|
<location filename="menu.py" line="1081"/>
|
||||||
<source>Updater not found</source>
|
<source>Updater not found</source>
|
||||||
<translation>Апдейтер не был найден</translation>
|
<translation>Апдейтер не был найден</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1087"/>
|
<location filename="menu.py" line="1092"/>
|
||||||
<source>No updates found</source>
|
<source>No updates found</source>
|
||||||
<translation>Обновления не найдены</translation>
|
<translation>Обновления не найдены</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1088"/>
|
<location filename="menu.py" line="1093"/>
|
||||||
<source>Toxygen is up to date</source>
|
<source>Toxygen is up to date</source>
|
||||||
<translation>Toxygen уже обновлен</translation>
|
<translation>Toxygen уже обновлен</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1347,22 +1356,22 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>videoSettingsForm</name>
|
<name>videoSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="882"/>
|
<location filename="menu.py" line="887"/>
|
||||||
<source>Video settings</source>
|
<source>Video settings</source>
|
||||||
<translation>Настройки видео</translation>
|
<translation>Настройки видео</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="883"/>
|
<location filename="menu.py" line="888"/>
|
||||||
<source>Device:</source>
|
<source>Device:</source>
|
||||||
<translation>Устройство:</translation>
|
<translation>Устройство:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="862"/>
|
<location filename="menu.py" line="867"/>
|
||||||
<source>Desktop</source>
|
<source>Desktop</source>
|
||||||
<translation>Рабочий стол</translation>
|
<translation>Рабочий стол</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="884"/>
|
<location filename="menu.py" line="889"/>
|
||||||
<source>Select region</source>
|
<source>Select region</source>
|
||||||
<translation>Выберите область</translation>
|
<translation>Выберите область</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>Callback</name>
|
<name>Callback</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="callbacks.py" line="227"/>
|
<location filename="callbacks.py" line="229"/>
|
||||||
<source>File from</source>
|
<source>File from</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -34,32 +34,32 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>Form</name>
|
<name>Form</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="345"/>
|
<location filename="menu.py" line="348"/>
|
||||||
<source>IP:</source>
|
<source>IP:</source>
|
||||||
<translation>IP:</translation>
|
<translation>IP:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="343"/>
|
<location filename="menu.py" line="346"/>
|
||||||
<source>UDP</source>
|
<source>UDP</source>
|
||||||
<translation>UDP</translation>
|
<translation>UDP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="348"/>
|
<location filename="menu.py" line="351"/>
|
||||||
<source>HTTP</source>
|
<source>HTTP</source>
|
||||||
<translation>HTTP</translation>
|
<translation>HTTP</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="342"/>
|
<location filename="menu.py" line="345"/>
|
||||||
<source>IPv6</source>
|
<source>IPv6</source>
|
||||||
<translation>IPv6</translation>
|
<translation>IPv6</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="346"/>
|
<location filename="menu.py" line="349"/>
|
||||||
<source>Port:</source>
|
<source>Port:</source>
|
||||||
<translation>Порт:</translation>
|
<translation>Порт:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="344"/>
|
<location filename="menu.py" line="347"/>
|
||||||
<source>Proxy</source>
|
<source>Proxy</source>
|
||||||
<translation>Проксі</translation>
|
<translation>Проксі</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -74,12 +74,17 @@
|
|||||||
<translation>Відправити запит</translation>
|
<translation>Відправити запит</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="349"/>
|
<location filename="menu.py" line="353"/>
|
||||||
<source>WARNING:
|
<source>WARNING:
|
||||||
using proxy with enabled UDP
|
using proxy with enabled UDP
|
||||||
can produce IP leak</source>
|
can produce IP leak</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="menu.py" line="352"/>
|
||||||
|
<source>Download nodes list from tox.chat</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MainWindow</name>
|
<name>MainWindow</name>
|
||||||
@ -89,7 +94,7 @@ can produce IP leak</source>
|
|||||||
<translation>Про проґраму</translation>
|
<translation>Про проґраму</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="854"/>
|
<location filename="profile.py" line="856"/>
|
||||||
<source>Friend request</source>
|
<source>Friend request</source>
|
||||||
<translation>Запит дружби</translation>
|
<translation>Запит дружби</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -104,7 +109,7 @@ can produce IP leak</source>
|
|||||||
<translation>Звук</translation>
|
<translation>Звук</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="824"/>
|
<location filename="profile.py" line="826"/>
|
||||||
<source>Friend added</source>
|
<source>Friend added</source>
|
||||||
<translation>Друга додано</translation>
|
<translation>Друга додано</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -114,7 +119,7 @@ can produce IP leak</source>
|
|||||||
<translation type="obsolete">Надіслати файл</translation>
|
<translation type="obsolete">Надіслати файл</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="852"/>
|
<location filename="profile.py" line="854"/>
|
||||||
<source>User {} wants to add you to contact list. Message:
|
<source>User {} wants to add you to contact list. Message:
|
||||||
{}</source>
|
{}</source>
|
||||||
<translation>Користувач {} хоче додати вас до списку контактів. Повідомлення
|
<translation>Користувач {} хоче додати вас до списку контактів. Повідомлення
|
||||||
@ -168,7 +173,7 @@ Version: </source>
|
|||||||
<translation>Обрати файл</translation>
|
<translation>Обрати файл</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="692"/>
|
<location filename="profile.py" line="694"/>
|
||||||
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
<source>Enter new alias for friend {} or leave empty to use friend's name:</source>
|
||||||
<translation>Введіть нове скорочення для друга {} або залишіть порожнім, щоб використовувати його псевдо:</translation>
|
<translation>Введіть нове скорочення для друга {} або залишіть порожнім, щоб використовувати його псевдо:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -178,7 +183,7 @@ Version: </source>
|
|||||||
<translation>Додати контакт</translation>
|
<translation>Додати контакт</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="825"/>
|
<location filename="profile.py" line="827"/>
|
||||||
<source>Friend added without sending friend request</source>
|
<source>Friend added without sending friend request</source>
|
||||||
<translation>Друга додано без надсилання запиту дружби</translation>
|
<translation>Друга додано без надсилання запиту дружби</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -243,17 +248,17 @@ Version: </source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="327"/>
|
<location filename="profile.py" line="329"/>
|
||||||
<source>User {} is now known as {}</source>
|
<source>User {} is now known as {}</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="667"/>
|
<location filename="menu.py" line="672"/>
|
||||||
<source>Choose folder with sticker pack</source>
|
<source>Choose folder with sticker pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="679"/>
|
<location filename="menu.py" line="684"/>
|
||||||
<source>Choose folder with smiley pack</source>
|
<source>Choose folder with smiley pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -458,22 +463,22 @@ Version: </source>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1328"/>
|
<location filename="profile.py" line="1337"/>
|
||||||
<source>User {} invites you to group chat. Accept?</source>
|
<source>User {} invites you to group chat. Accept?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1329"/>
|
<location filename="profile.py" line="1338"/>
|
||||||
<source>Group chat invite</source>
|
<source>Group chat invite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1365"/>
|
<location filename="profile.py" line="1374"/>
|
||||||
<source>{} users in chat</source>
|
<source>{} users in chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1386"/>
|
<location filename="profile.py" line="1395"/>
|
||||||
<source>Enter new title for group {}:</source>
|
<source>Enter new title for group {}:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -524,12 +529,12 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>NetworkSettings</name>
|
<name>NetworkSettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="341"/>
|
<location filename="menu.py" line="344"/>
|
||||||
<source>Network settings</source>
|
<source>Network settings</source>
|
||||||
<translation>Налаштування мережі</translation>
|
<translation>Налаштування мережі</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="347"/>
|
<location filename="menu.py" line="350"/>
|
||||||
<source>Restart TOX core</source>
|
<source>Restart TOX core</source>
|
||||||
<translation>Перезапустити ядро Tox</translation>
|
<translation>Перезапустити ядро Tox</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -588,42 +593,42 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>PluginsForm</name>
|
<name>PluginsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="967"/>
|
<location filename="menu.py" line="972"/>
|
||||||
<source>Plugins</source>
|
<source>Plugins</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="968"/>
|
<location filename="menu.py" line="973"/>
|
||||||
<source>Open selected plugin</source>
|
<source>Open selected plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>No GUI found for this plugin</source>
|
<source>No GUI found for this plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="980"/>
|
<location filename="menu.py" line="985"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="995"/>
|
<location filename="menu.py" line="1000"/>
|
||||||
<source>No description available</source>
|
<source>No description available</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1011"/>
|
<location filename="menu.py" line="1016"/>
|
||||||
<source>Disable plugin</source>
|
<source>Disable plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1013"/>
|
<location filename="menu.py" line="1018"/>
|
||||||
<source>Enable plugin</source>
|
<source>Enable plugin</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1003"/>
|
<location filename="menu.py" line="1008"/>
|
||||||
<source>No plugins found</source>
|
<source>No plugins found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -808,11 +813,6 @@ Version: </source>
|
|||||||
<source>Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.</source>
|
<source>Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="mainscreen_widgets.py" line="322"/>
|
|
||||||
<source>New in Toxygen 0.3.0:<br>Video calls<br>Python3.6 support<br>Migration to PyQt5</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="mainscreen_widgets.py" line="325"/>
|
<location filename="mainscreen_widgets.py" line="325"/>
|
||||||
<source>Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu</source>
|
<source>Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu</source>
|
||||||
@ -828,21 +828,26 @@ Version: </source>
|
|||||||
<source>Set new NoSpam to avoid spam friend requests: Profile -> Settings -> Set new NoSpam.</source>
|
<source>Set new NoSpam to avoid spam friend requests: Profile -> Settings -> Set new NoSpam.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="mainscreen_widgets.py" line="322"/>
|
||||||
|
<source>New in Toxygen 0.4.1:<br>Downloading nodes from tox.chat<br>Bug fixes</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>audioSettingsForm</name>
|
<name>audioSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="802"/>
|
<location filename="menu.py" line="807"/>
|
||||||
<source>Output device:</source>
|
<source>Output device:</source>
|
||||||
<translation>Пристрій виводу:</translation>
|
<translation>Пристрій виводу:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="800"/>
|
<location filename="menu.py" line="805"/>
|
||||||
<source>Audio settings</source>
|
<source>Audio settings</source>
|
||||||
<translation>Налаштування звуку</translation>
|
<translation>Налаштування звуку</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="801"/>
|
<location filename="menu.py" line="806"/>
|
||||||
<source>Input device:</source>
|
<source>Input device:</source>
|
||||||
<translation>Пристрій вводу:</translation>
|
<translation>Пристрій вводу:</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -850,32 +855,32 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>incoming_call</name>
|
<name>incoming_call</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1250"/>
|
<location filename="profile.py" line="1253"/>
|
||||||
<source>Incoming video call</source>
|
<source>Incoming video call</source>
|
||||||
<translation>Вхідний відеодзвінок</translation>
|
<translation>Вхідний відеодзвінок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1252"/>
|
<location filename="profile.py" line="1255"/>
|
||||||
<source>Incoming audio call</source>
|
<source>Incoming audio call</source>
|
||||||
<translation>Вхідний аудіодзвінок</translation>
|
<translation>Вхідний аудіодзвінок</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1233"/>
|
<location filename="profile.py" line="1236"/>
|
||||||
<source>Outgoing video call</source>
|
<source>Outgoing video call</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1235"/>
|
<location filename="profile.py" line="1238"/>
|
||||||
<source>Outgoing audio call</source>
|
<source>Outgoing audio call</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1281"/>
|
<location filename="profile.py" line="1284"/>
|
||||||
<source>Call declined</source>
|
<source>Call declined</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="profile.py" line="1283"/>
|
<location filename="profile.py" line="1286"/>
|
||||||
<source>Call finished</source>
|
<source>Call finished</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -883,82 +888,82 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>interfaceForm</name>
|
<name>interfaceForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="652"/>
|
<location filename="menu.py" line="657"/>
|
||||||
<source>Language:</source>
|
<source>Language:</source>
|
||||||
<translation>Мова:</translation>
|
<translation>Мова:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="651"/>
|
<location filename="menu.py" line="656"/>
|
||||||
<source>Theme:</source>
|
<source>Theme:</source>
|
||||||
<translation>Тема:</translation>
|
<translation>Тема:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="650"/>
|
<location filename="menu.py" line="655"/>
|
||||||
<source>Interface settings</source>
|
<source>Interface settings</source>
|
||||||
<translation>Налаштування зовнішнього вигляду</translation>
|
<translation>Налаштування зовнішнього вигляду</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="649"/>
|
<location filename="menu.py" line="654"/>
|
||||||
<source>Show avatars in chat</source>
|
<source>Show avatars in chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="653"/>
|
<location filename="menu.py" line="658"/>
|
||||||
<source>Smileys</source>
|
<source>Smileys</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="654"/>
|
<location filename="menu.py" line="659"/>
|
||||||
<source>Smiley pack:</source>
|
<source>Smiley pack:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="655"/>
|
<location filename="menu.py" line="660"/>
|
||||||
<source>Mirror mode</source>
|
<source>Mirror mode</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="656"/>
|
<location filename="menu.py" line="661"/>
|
||||||
<source>Messages font size:</source>
|
<source>Messages font size:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="657"/>
|
<location filename="menu.py" line="662"/>
|
||||||
<source>Select unread messages notification color</source>
|
<source>Select unread messages notification color</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="658"/>
|
<location filename="menu.py" line="663"/>
|
||||||
<source>Compact contact list</source>
|
<source>Compact contact list</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="659"/>
|
<location filename="menu.py" line="664"/>
|
||||||
<source>Import smiley pack</source>
|
<source>Import smiley pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="660"/>
|
<location filename="menu.py" line="665"/>
|
||||||
<source>Import sticker pack</source>
|
<source>Import sticker pack</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="661"/>
|
<location filename="menu.py" line="666"/>
|
||||||
<source>Close to tray</source>
|
<source>Close to tray</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="662"/>
|
<location filename="menu.py" line="667"/>
|
||||||
<source>Select font</source>
|
<source>Select font</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart app to apply settings</source>
|
<source>Restart app to apply settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="749"/>
|
<location filename="menu.py" line="754"/>
|
||||||
<source>Restart required</source>
|
<source>Restart required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1044,27 +1049,27 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>notificationsForm</name>
|
<name>notificationsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="542"/>
|
<location filename="menu.py" line="547"/>
|
||||||
<source>Enable sound notifications</source>
|
<source>Enable sound notifications</source>
|
||||||
<translation>Увімкнути звукові сповіщення</translation>
|
<translation>Увімкнути звукові сповіщення</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="539"/>
|
<location filename="menu.py" line="544"/>
|
||||||
<source>Enable notifications</source>
|
<source>Enable notifications</source>
|
||||||
<translation>Увімкнути сповіщення</translation>
|
<translation>Увімкнути сповіщення</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="538"/>
|
<location filename="menu.py" line="543"/>
|
||||||
<source>Notification settings</source>
|
<source>Notification settings</source>
|
||||||
<translation>Налаштування сповіщень</translation>
|
<translation>Налаштування сповіщень</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="541"/>
|
<location filename="menu.py" line="546"/>
|
||||||
<source>Enable call's sound</source>
|
<source>Enable call's sound</source>
|
||||||
<translation>Увімкнути звук дзвінка</translation>
|
<translation>Увімкнути звук дзвінка</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="540"/>
|
<location filename="menu.py" line="545"/>
|
||||||
<source>Notify about all messages in groups</source>
|
<source>Notify about all messages in groups</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1090,12 +1095,12 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>privacySettings</name>
|
<name>privacySettings</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="433"/>
|
<location filename="menu.py" line="438"/>
|
||||||
<source>Privacy settings</source>
|
<source>Privacy settings</source>
|
||||||
<translation>Налаштування приватності</translation>
|
<translation>Налаштування приватності</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="455"/>
|
<location filename="menu.py" line="460"/>
|
||||||
<source>Add to friend list</source>
|
<source>Add to friend list</source>
|
||||||
<translation>Додати до списку друзів</translation>
|
<translation>Додати до списку друзів</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1105,72 +1110,72 @@ Version: </source>
|
|||||||
<translation type="obsolete">Блокувати по TOX ID:</translation>
|
<translation type="obsolete">Блокувати по TOX ID:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="441"/>
|
<location filename="menu.py" line="446"/>
|
||||||
<source>Blocked users:</source>
|
<source>Blocked users:</source>
|
||||||
<translation>Блоковані користувачі:</translation>
|
<translation>Блоковані користувачі:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="438"/>
|
<location filename="menu.py" line="443"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation>Змінити</translation>
|
<translation>Змінити</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="436"/>
|
<location filename="menu.py" line="441"/>
|
||||||
<source>Send typing notifications</source>
|
<source>Send typing notifications</source>
|
||||||
<translation>Надсилати сповіщення про те, що я друкую</translation>
|
<translation>Надсилати сповіщення про те, що я друкую</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="435"/>
|
<location filename="menu.py" line="440"/>
|
||||||
<source>Allow file auto accept</source>
|
<source>Allow file auto accept</source>
|
||||||
<translation>Дозволити автоприймання файлів</translation>
|
<translation>Дозволити автоприймання файлів</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="439"/>
|
<location filename="menu.py" line="444"/>
|
||||||
<source>Allow inlines</source>
|
<source>Allow inlines</source>
|
||||||
<translation>Дозволити інлайни</translation>
|
<translation>Дозволити інлайни</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="434"/>
|
<location filename="menu.py" line="439"/>
|
||||||
<source>Save chat history</source>
|
<source>Save chat history</source>
|
||||||
<translation>Зберігати журнал бесіди</translation>
|
<translation>Зберігати журнал бесіди</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="443"/>
|
<location filename="menu.py" line="448"/>
|
||||||
<source>Block user</source>
|
<source>Block user</source>
|
||||||
<translation>Блокувати користувача</translation>
|
<translation>Блокувати користувача</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="481"/>
|
<location filename="menu.py" line="486"/>
|
||||||
<source>Chat history</source>
|
<source>Chat history</source>
|
||||||
<translation>Журнал бесіди</translation>
|
<translation>Журнал бесіди</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="442"/>
|
<location filename="menu.py" line="447"/>
|
||||||
<source>Unblock</source>
|
<source>Unblock</source>
|
||||||
<translation>Розблокувати</translation>
|
<translation>Розблокувати</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="483"/>
|
<location filename="menu.py" line="488"/>
|
||||||
<source>History will be cleaned! Continue?</source>
|
<source>History will be cleaned! Continue?</source>
|
||||||
<translation>Журнал буде очищено! Продовжити?</translation>
|
<translation>Журнал буде очищено! Продовжити?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="437"/>
|
<location filename="menu.py" line="442"/>
|
||||||
<source>Auto accept default path:</source>
|
<source>Auto accept default path:</source>
|
||||||
<translation>Шлях за замовчуванням для автоприймання:</translation>
|
<translation>Шлях за замовчуванням для автоприймання:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="456"/>
|
<location filename="menu.py" line="461"/>
|
||||||
<source>Do you want to add this user to friend list?</source>
|
<source>Do you want to add this user to friend list?</source>
|
||||||
<translation>Ви хочете додати цього користувача у список друзів?</translation>
|
<translation>Ви хочете додати цього користувача у список друзів?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="440"/>
|
<location filename="menu.py" line="445"/>
|
||||||
<source>Block by public key:</source>
|
<source>Block by public key:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="444"/>
|
<location filename="menu.py" line="449"/>
|
||||||
<source>Save unsent messages only</source>
|
<source>Save unsent messages only</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1211,57 +1216,57 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>updateSettingsForm</name>
|
<name>updateSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1051"/>
|
<location filename="menu.py" line="1056"/>
|
||||||
<source>Update settings</source>
|
<source>Update settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1052"/>
|
<location filename="menu.py" line="1057"/>
|
||||||
<source>Select update mode:</source>
|
<source>Select update mode:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1053"/>
|
<location filename="menu.py" line="1058"/>
|
||||||
<source>Update Toxygen</source>
|
<source>Update Toxygen</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1054"/>
|
<location filename="menu.py" line="1059"/>
|
||||||
<source>Disabled</source>
|
<source>Disabled</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1055"/>
|
<location filename="menu.py" line="1060"/>
|
||||||
<source>Manual</source>
|
<source>Manual</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1056"/>
|
<location filename="menu.py" line="1061"/>
|
||||||
<source>Auto</source>
|
<source>Auto</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1075"/>
|
<location filename="menu.py" line="1080"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1068"/>
|
<location filename="menu.py" line="1073"/>
|
||||||
<source>Problems with internet connection</source>
|
<source>Problems with internet connection</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1076"/>
|
<location filename="menu.py" line="1081"/>
|
||||||
<source>Updater not found</source>
|
<source>Updater not found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1087"/>
|
<location filename="menu.py" line="1092"/>
|
||||||
<source>No updates found</source>
|
<source>No updates found</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="1088"/>
|
<location filename="menu.py" line="1093"/>
|
||||||
<source>Toxygen is up to date</source>
|
<source>Toxygen is up to date</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@ -1269,22 +1274,22 @@ Version: </source>
|
|||||||
<context>
|
<context>
|
||||||
<name>videoSettingsForm</name>
|
<name>videoSettingsForm</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="882"/>
|
<location filename="menu.py" line="887"/>
|
||||||
<source>Video settings</source>
|
<source>Video settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="883"/>
|
<location filename="menu.py" line="888"/>
|
||||||
<source>Device:</source>
|
<source>Device:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="862"/>
|
<location filename="menu.py" line="867"/>
|
||||||
<source>Desktop</source>
|
<source>Desktop</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="menu.py" line="884"/>
|
<location filename="menu.py" line="889"/>
|
||||||
<source>Select region</source>
|
<source>Select region</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -5,7 +5,7 @@ import sys
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
program_version = '0.4.0'
|
program_version = '0.4.3'
|
||||||
|
|
||||||
|
|
||||||
def cached(func):
|
def cached(func):
|
||||||
|
Reference in New Issue
Block a user