mirror of
https://github.com/onionshare/onionshare.git
synced 2024-10-01 01:35:40 -04:00
Merge branch 'develop' into 918_old_linux
This commit is contained in:
commit
ed1ada9c06
@ -9,7 +9,7 @@ VERSION=`cat share/version.txt`
|
||||
rm -r build dist >/dev/null 2>&1
|
||||
|
||||
# build binary package
|
||||
python3 setup.py bdist_rpm --requires="python3-flask, python3-stem, python3-qt5, python3-cryptography, python3-crypto, python3-pysocks, nautilus-python, tor, obfs4"
|
||||
python3 setup.py bdist_rpm --requires="python3-flask, python3-stem, python3-qt5, python3-crypto, python3-pysocks, nautilus-python, tor, obfs4"
|
||||
|
||||
# install it
|
||||
echo ""
|
||||
|
@ -7,7 +7,7 @@ Comment[de]=Teile Dateien sicher und anonym über das Tor-Netzwerk
|
||||
Exec=/usr/bin/onionshare-gui
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=/usr/share/pixmaps/onionshare80.xpm
|
||||
Icon=onionshare80
|
||||
Categories=Network;FileTransfer;
|
||||
Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting;
|
||||
Keywords[da]=tor;anonymitet;privatliv;onion-tjeneste;fildeling;filhosting;
|
||||
|
@ -1,10 +1,10 @@
|
||||
atomicwrites==1.2.1
|
||||
attrs==18.2.0
|
||||
more-itertools==4.3.0
|
||||
pluggy==0.8.0
|
||||
py==1.7.0
|
||||
pytest==4.0.1
|
||||
atomicwrites==1.3.0
|
||||
attrs==19.1.0
|
||||
more-itertools==5.0.0
|
||||
pluggy==0.9.0
|
||||
py==1.8.0
|
||||
pytest==4.4.1
|
||||
pytest-faulthandler==1.5.0
|
||||
pytest-qt==3.2.1
|
||||
six==1.11.0
|
||||
urllib3==1.24.1
|
||||
pytest-qt==3.2.2
|
||||
six==1.12.0
|
||||
urllib3==1.24.2
|
||||
|
@ -1,25 +1,20 @@
|
||||
altgraph==0.16.1
|
||||
asn1crypto==0.24.0
|
||||
certifi==2018.10.15
|
||||
cffi==1.11.5
|
||||
certifi==2019.3.9
|
||||
chardet==3.0.4
|
||||
Click==7.0
|
||||
cryptography==2.4.2
|
||||
Flask==1.0.2
|
||||
future==0.17.1
|
||||
idna==2.7
|
||||
idna==2.8
|
||||
itsdangerous==1.1.0
|
||||
Jinja2==2.10
|
||||
Jinja2==2.10.1
|
||||
macholib==1.11
|
||||
MarkupSafe==1.1.0
|
||||
pefile==2018.8.8
|
||||
pycparser==2.19
|
||||
pycryptodome==3.7.2
|
||||
PyQt5==5.11.3
|
||||
PyQt5-sip==4.19.13
|
||||
MarkupSafe==1.1.1
|
||||
pefile==2019.4.18
|
||||
pycryptodome==3.8.1
|
||||
PyQt5==5.12.1
|
||||
PyQt5-sip==4.19.15
|
||||
PySocks==1.6.8
|
||||
requests==2.20.1
|
||||
six==1.11.0
|
||||
stem==1.7.0
|
||||
urllib3==1.24.1
|
||||
Werkzeug==0.14.1
|
||||
requests==2.21.0
|
||||
stem==1.7.1
|
||||
urllib3==1.24.2
|
||||
Werkzeug==0.15.2
|
||||
|
@ -19,6 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
import os, sys, time, argparse, threading
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
|
||||
from . import strings
|
||||
from .common import Common
|
||||
@ -53,7 +55,9 @@ def main(cwd=None):
|
||||
parser = argparse.ArgumentParser(formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=28))
|
||||
parser.add_argument('--local-only', action='store_true', dest='local_only', help=strings._("help_local_only"))
|
||||
parser.add_argument('--stay-open', action='store_true', dest='stay_open', help=strings._("help_stay_open"))
|
||||
parser.add_argument('--shutdown-timeout', metavar='<int>', dest='shutdown_timeout', default=0, help=strings._("help_shutdown_timeout"))
|
||||
parser.add_argument('--auto-start-timer', metavar='<int>', dest='autostart_timer', default=0, help=strings._("help_autostart_timer"))
|
||||
parser.add_argument('--auto-stop-timer', metavar='<int>', dest='autostop_timer', default=0, help=strings._("help_autostop_timer"))
|
||||
parser.add_argument('--connect-timeout', metavar='<int>', dest='connect_timeout', default=120, help=strings._("help_connect_timeout"))
|
||||
parser.add_argument('--stealth', action='store_true', dest='stealth', help=strings._("help_stealth"))
|
||||
parser.add_argument('--receive', action='store_true', dest='receive', help=strings._("help_receive"))
|
||||
parser.add_argument('--config', metavar='config', default=False, help=strings._('help_config'))
|
||||
@ -68,7 +72,9 @@ def main(cwd=None):
|
||||
local_only = bool(args.local_only)
|
||||
debug = bool(args.debug)
|
||||
stay_open = bool(args.stay_open)
|
||||
shutdown_timeout = int(args.shutdown_timeout)
|
||||
autostart_timer = int(args.autostart_timer)
|
||||
autostop_timer = int(args.autostop_timer)
|
||||
connect_timeout = int(args.connect_timeout)
|
||||
stealth = bool(args.stealth)
|
||||
receive = bool(args.receive)
|
||||
config = args.config
|
||||
@ -111,7 +117,7 @@ def main(cwd=None):
|
||||
# Start the Onion object
|
||||
onion = Onion(common)
|
||||
try:
|
||||
onion.connect(custom_settings=False, config=config)
|
||||
onion.connect(custom_settings=False, config=config, connect_timeout=connect_timeout)
|
||||
except KeyboardInterrupt:
|
||||
print("")
|
||||
sys.exit()
|
||||
@ -120,10 +126,51 @@ def main(cwd=None):
|
||||
|
||||
# Start the onionshare app
|
||||
try:
|
||||
app = OnionShare(common, onion, local_only, shutdown_timeout)
|
||||
common.settings.load()
|
||||
if not common.settings.get('public_mode'):
|
||||
web.generate_slug(common.settings.get('slug'))
|
||||
else:
|
||||
web.slug = None
|
||||
app = OnionShare(common, onion, local_only, autostop_timer)
|
||||
app.set_stealth(stealth)
|
||||
app.choose_port()
|
||||
app.start_onion_service()
|
||||
# Delay the startup if a startup timer was set
|
||||
if autostart_timer > 0:
|
||||
# Can't set a schedule that is later than the auto-stop timer
|
||||
if app.autostop_timer > 0 and app.autostop_timer < autostart_timer:
|
||||
print(strings._('gui_autostop_timer_cant_be_earlier_than_autostart_timer'))
|
||||
sys.exit()
|
||||
|
||||
app.start_onion_service(False, True)
|
||||
if common.settings.get('public_mode'):
|
||||
url = 'http://{0:s}'.format(app.onion_host)
|
||||
else:
|
||||
url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
|
||||
schedule = datetime.now() + timedelta(seconds=autostart_timer)
|
||||
if mode == 'receive':
|
||||
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
|
||||
print('')
|
||||
print(strings._('receive_mode_warning'))
|
||||
print('')
|
||||
if stealth:
|
||||
print(strings._("give_this_scheduled_url_receive_stealth").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
|
||||
print(app.auth_string)
|
||||
else:
|
||||
print(strings._("give_this_scheduled_url_receive").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
|
||||
else:
|
||||
if stealth:
|
||||
print(strings._("give_this_scheduled_url_share_stealth").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
|
||||
print(app.auth_string)
|
||||
else:
|
||||
print(strings._("give_this_scheduled_url_share").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
|
||||
print(url)
|
||||
print('')
|
||||
print(strings._("waiting_for_scheduled_time"))
|
||||
app.onion.cleanup(False)
|
||||
time.sleep(autostart_timer)
|
||||
app.start_onion_service()
|
||||
else:
|
||||
app.start_onion_service()
|
||||
except KeyboardInterrupt:
|
||||
print("")
|
||||
sys.exit()
|
||||
@ -149,7 +196,7 @@ def main(cwd=None):
|
||||
print('')
|
||||
|
||||
# Start OnionShare http service in new thread
|
||||
t = threading.Thread(target=web.start, args=(app.port, stay_open, common.settings.get('public_mode'), common.settings.get('slug')))
|
||||
t = threading.Thread(target=web.start, args=(app.port, stay_open, common.settings.get('public_mode'), web.slug))
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
@ -157,9 +204,9 @@ def main(cwd=None):
|
||||
# Wait for web.generate_slug() to finish running
|
||||
time.sleep(0.2)
|
||||
|
||||
# start shutdown timer thread
|
||||
if app.shutdown_timeout > 0:
|
||||
app.shutdown_timer.start()
|
||||
# start auto-stop timer thread
|
||||
if app.autostop_timer > 0:
|
||||
app.autostop_timer_thread.start()
|
||||
|
||||
# Save the web slug if we are using a persistent private key
|
||||
if common.settings.get('save_private_key'):
|
||||
@ -174,44 +221,47 @@ def main(cwd=None):
|
||||
url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
|
||||
|
||||
print('')
|
||||
if mode == 'receive':
|
||||
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
|
||||
print('')
|
||||
print(strings._('receive_mode_warning'))
|
||||
print('')
|
||||
|
||||
if stealth:
|
||||
print(strings._("give_this_url_receive_stealth"))
|
||||
print(url)
|
||||
print(app.auth_string)
|
||||
else:
|
||||
print(strings._("give_this_url_receive"))
|
||||
print(url)
|
||||
if autostart_timer > 0:
|
||||
print(strings._('server_started'))
|
||||
else:
|
||||
if stealth:
|
||||
print(strings._("give_this_url_stealth"))
|
||||
print(url)
|
||||
print(app.auth_string)
|
||||
if mode == 'receive':
|
||||
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
|
||||
print('')
|
||||
print(strings._('receive_mode_warning'))
|
||||
print('')
|
||||
|
||||
if stealth:
|
||||
print(strings._("give_this_url_receive_stealth"))
|
||||
print(url)
|
||||
print(app.auth_string)
|
||||
else:
|
||||
print(strings._("give_this_url_receive"))
|
||||
print(url)
|
||||
else:
|
||||
print(strings._("give_this_url"))
|
||||
print(url)
|
||||
if stealth:
|
||||
print(strings._("give_this_url_stealth"))
|
||||
print(url)
|
||||
print(app.auth_string)
|
||||
else:
|
||||
print(strings._("give_this_url"))
|
||||
print(url)
|
||||
print('')
|
||||
print(strings._("ctrlc_to_stop"))
|
||||
|
||||
# Wait for app to close
|
||||
while t.is_alive():
|
||||
if app.shutdown_timeout > 0:
|
||||
# if the shutdown timer was set and has run out, stop the server
|
||||
if not app.shutdown_timer.is_alive():
|
||||
if app.autostop_timer > 0:
|
||||
# if the auto-stop timer was set and has run out, stop the server
|
||||
if not app.autostop_timer_thread.is_alive():
|
||||
if mode == 'share':
|
||||
# If there were no attempts to download the share, or all downloads are done, we can stop
|
||||
if web.share_mode.download_count == 0 or web.done:
|
||||
print(strings._("close_on_timeout"))
|
||||
print(strings._("close_on_autostop_timer"))
|
||||
web.stop(app.port)
|
||||
break
|
||||
if mode == 'receive':
|
||||
if web.receive_mode.upload_count == 0 or not web.receive_mode.uploads_in_progress:
|
||||
print(strings._("close_on_timeout"))
|
||||
print(strings._("close_on_autostop_timer"))
|
||||
web.stop(app.port)
|
||||
break
|
||||
else:
|
||||
|
@ -485,7 +485,7 @@ class Common(object):
|
||||
return total_size
|
||||
|
||||
|
||||
class ShutdownTimer(threading.Thread):
|
||||
class AutoStopTimer(threading.Thread):
|
||||
"""
|
||||
Background thread sleeps t hours and returns.
|
||||
"""
|
||||
@ -498,6 +498,6 @@ class ShutdownTimer(threading.Thread):
|
||||
self.time = time
|
||||
|
||||
def run(self):
|
||||
self.common.log('Shutdown Timer', 'Server will shut down after {} seconds'.format(self.time))
|
||||
self.common.log('AutoStopTimer', 'Server will shut down after {} seconds'.format(self.time))
|
||||
time.sleep(self.time)
|
||||
return 1
|
||||
|
@ -133,6 +133,8 @@ class Onion(object):
|
||||
|
||||
self.stealth = False
|
||||
self.service_id = None
|
||||
self.scheduled_key = None
|
||||
self.scheduled_auth_cookie = None
|
||||
|
||||
# Is bundled tor supported?
|
||||
if (self.common.platform == 'Windows' or self.common.platform == 'Darwin') and getattr(sys, 'onionshare_dev_mode', False):
|
||||
@ -152,7 +154,7 @@ class Onion(object):
|
||||
# Start out not connected to Tor
|
||||
self.connected_to_tor = False
|
||||
|
||||
def connect(self, custom_settings=False, config=False, tor_status_update_func=None):
|
||||
def connect(self, custom_settings=False, config=False, tor_status_update_func=None, connect_timeout=120):
|
||||
self.common.log('Onion', 'connect')
|
||||
|
||||
# Either use settings that are passed in, or use them from common
|
||||
@ -283,14 +285,16 @@ class Onion(object):
|
||||
if self.settings.get('tor_bridges_use_custom_bridges') or \
|
||||
self.settings.get('tor_bridges_use_obfs4') or \
|
||||
self.settings.get('tor_bridges_use_meek_lite_azure'):
|
||||
connect_timeout = 150
|
||||
else:
|
||||
# Timeout after 120 seconds
|
||||
connect_timeout = 120
|
||||
# Only override timeout if a custom timeout has not been passed in
|
||||
if connect_timeout == 120:
|
||||
connect_timeout = 150
|
||||
if time.time() - start_ts > connect_timeout:
|
||||
print("")
|
||||
self.tor_proc.terminate()
|
||||
raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout'))
|
||||
try:
|
||||
self.tor_proc.terminate()
|
||||
raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout'))
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
|
||||
elif self.settings.get('connection_type') == 'automatic':
|
||||
# Automatically try to guess the right way to connect to Tor Browser
|
||||
@ -423,27 +427,31 @@ class Onion(object):
|
||||
return False
|
||||
|
||||
|
||||
def start_onion_service(self, port):
|
||||
def start_onion_service(self, port, await_publication, save_scheduled_key=False):
|
||||
"""
|
||||
Start a onion service on port 80, pointing to the given port, and
|
||||
return the onion hostname.
|
||||
"""
|
||||
self.common.log('Onion', 'start_onion_service')
|
||||
|
||||
self.auth_string = None
|
||||
|
||||
if not self.supports_ephemeral:
|
||||
raise TorTooOld(strings._('error_ephemeral_not_supported'))
|
||||
if self.stealth and not self.supports_stealth:
|
||||
raise TorTooOld(strings._('error_stealth_not_supported'))
|
||||
|
||||
print(strings._("config_onion_service").format(int(port)))
|
||||
if not save_scheduled_key:
|
||||
print(strings._("config_onion_service").format(int(port)))
|
||||
|
||||
if self.stealth:
|
||||
if self.settings.get('hidservauth_string'):
|
||||
hidservauth_string = self.settings.get('hidservauth_string').split()[2]
|
||||
basic_auth = {'onionshare':hidservauth_string}
|
||||
else:
|
||||
basic_auth = {'onionshare':None}
|
||||
if self.scheduled_auth_cookie:
|
||||
basic_auth = {'onionshare':self.scheduled_auth_cookie}
|
||||
else:
|
||||
basic_auth = {'onionshare':None}
|
||||
else:
|
||||
basic_auth = None
|
||||
|
||||
@ -455,6 +463,14 @@ class Onion(object):
|
||||
# Assume it was a v3 key. Stem will throw an error if it's something illegible
|
||||
key_type = "ED25519-V3"
|
||||
|
||||
elif self.scheduled_key:
|
||||
key_content = self.scheduled_key
|
||||
if self.is_v2_key(key_content):
|
||||
key_type = "RSA1024"
|
||||
else:
|
||||
# Assume it was a v3 key. Stem will throw an error if it's something illegible
|
||||
key_type = "ED25519-V3"
|
||||
|
||||
else:
|
||||
key_type = "NEW"
|
||||
# Work out if we can support v3 onion services, which are preferred
|
||||
@ -474,7 +490,6 @@ class Onion(object):
|
||||
if key_type == "NEW":
|
||||
debug_message += ', key_content={}'.format(key_content)
|
||||
self.common.log('Onion', 'start_onion_service', '{}'.format(debug_message))
|
||||
await_publication = True
|
||||
try:
|
||||
if basic_auth != None:
|
||||
res = self.c.create_ephemeral_hidden_service({ 80: port }, await_publication=await_publication, basic_auth=basic_auth, key_type=key_type, key_content=key_content)
|
||||
@ -493,6 +508,12 @@ class Onion(object):
|
||||
if not self.settings.get('private_key'):
|
||||
self.settings.set('private_key', res.private_key)
|
||||
|
||||
# If we were scheduling a future share, register the private key for later re-use
|
||||
if save_scheduled_key:
|
||||
self.scheduled_key = res.private_key
|
||||
else:
|
||||
self.scheduled_key = None
|
||||
|
||||
if self.stealth:
|
||||
# Similar to the PrivateKey, the Control port only returns the ClientAuth
|
||||
# in the response if it was responsible for creating the basic_auth password
|
||||
@ -507,8 +528,19 @@ class Onion(object):
|
||||
self.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie)
|
||||
self.settings.set('hidservauth_string', self.auth_string)
|
||||
else:
|
||||
auth_cookie = list(res.client_auth.values())[0]
|
||||
self.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie)
|
||||
if not self.scheduled_auth_cookie:
|
||||
auth_cookie = list(res.client_auth.values())[0]
|
||||
self.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie)
|
||||
if save_scheduled_key:
|
||||
# Register the HidServAuth for the scheduled share
|
||||
self.scheduled_auth_cookie = auth_cookie
|
||||
else:
|
||||
self.scheduled_auth_cookie = None
|
||||
else:
|
||||
self.auth_string = 'HidServAuth {} {}'.format(onion_host, self.scheduled_auth_cookie)
|
||||
if not save_scheduled_key:
|
||||
# We've used the scheduled share's HidServAuth. Reset it to None for future shares
|
||||
self.scheduled_auth_cookie = None
|
||||
|
||||
if onion_host is not None:
|
||||
self.settings.save()
|
||||
|
@ -22,14 +22,14 @@ import os, shutil
|
||||
|
||||
from . import common, strings
|
||||
from .onion import TorTooOld, TorErrorProtocolError
|
||||
from .common import ShutdownTimer
|
||||
from .common import AutoStopTimer
|
||||
|
||||
class OnionShare(object):
|
||||
"""
|
||||
OnionShare is the main application class. Pass in options and run
|
||||
start_onion_service and it will do the magic.
|
||||
"""
|
||||
def __init__(self, common, onion, local_only=False, shutdown_timeout=0):
|
||||
def __init__(self, common, onion, local_only=False, autostop_timer=0):
|
||||
self.common = common
|
||||
|
||||
self.common.log('OnionShare', '__init__')
|
||||
@ -49,9 +49,9 @@ class OnionShare(object):
|
||||
self.local_only = local_only
|
||||
|
||||
# optionally shut down after N hours
|
||||
self.shutdown_timeout = shutdown_timeout
|
||||
# init timing thread
|
||||
self.shutdown_timer = None
|
||||
self.autostop_timer = autostop_timer
|
||||
# init auto-stop timer thread
|
||||
self.autostop_timer_thread = None
|
||||
|
||||
def set_stealth(self, stealth):
|
||||
self.common.log('OnionShare', 'set_stealth', 'stealth={}'.format(stealth))
|
||||
@ -68,7 +68,7 @@ class OnionShare(object):
|
||||
except:
|
||||
raise OSError(strings._('no_available_port'))
|
||||
|
||||
def start_onion_service(self):
|
||||
def start_onion_service(self, await_publication=True, save_scheduled_key=False):
|
||||
"""
|
||||
Start the onionshare onion service.
|
||||
"""
|
||||
@ -77,14 +77,14 @@ class OnionShare(object):
|
||||
if not self.port:
|
||||
self.choose_port()
|
||||
|
||||
if self.shutdown_timeout > 0:
|
||||
self.shutdown_timer = ShutdownTimer(self.common, self.shutdown_timeout)
|
||||
if self.autostop_timer > 0:
|
||||
self.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer)
|
||||
|
||||
if self.local_only:
|
||||
self.onion_host = '127.0.0.1:{0:d}'.format(self.port)
|
||||
return
|
||||
|
||||
self.onion_host = self.onion.start_onion_service(self.port)
|
||||
self.onion_host = self.onion.start_onion_service(self.port, await_publication, save_scheduled_key)
|
||||
|
||||
if self.stealth:
|
||||
self.auth_string = self.onion.auth_string
|
||||
|
@ -84,7 +84,8 @@ class Settings(object):
|
||||
'auth_type': 'no_auth',
|
||||
'auth_password': '',
|
||||
'close_after_first_download': True,
|
||||
'shutdown_timeout': False,
|
||||
'autostop_timer': False,
|
||||
'autostart_timer': False,
|
||||
'use_stealth': False,
|
||||
'use_autoupdate': True,
|
||||
'autoupdate_timestamp': None,
|
||||
|
@ -112,12 +112,14 @@ class ReceiveModeWeb(object):
|
||||
else:
|
||||
flash(msg, 'info')
|
||||
else:
|
||||
msg = 'Sent '
|
||||
for filename in filenames:
|
||||
msg = 'Sent {}'.format(filename)
|
||||
if ajax:
|
||||
info_flashes.append(msg)
|
||||
else:
|
||||
flash(msg, 'info')
|
||||
msg += '{}, '.format(filename)
|
||||
msg = msg.rstrip(', ')
|
||||
if ajax:
|
||||
info_flashes.append(msg)
|
||||
else:
|
||||
flash(msg, 'info')
|
||||
|
||||
if self.can_upload:
|
||||
if ajax:
|
||||
@ -297,6 +299,7 @@ class ReceiveModeRequest(Request):
|
||||
new_receive_mode_dir = '{}-{}'.format(self.receive_mode_dir, i)
|
||||
try:
|
||||
os.makedirs(new_receive_mode_dir, 0o700, exist_ok=False)
|
||||
self.receive_mode_dir = new_receive_mode_dir
|
||||
break
|
||||
except OSError:
|
||||
pass
|
||||
|
@ -231,13 +231,11 @@ class Web(object):
|
||||
pass
|
||||
self.running = False
|
||||
|
||||
def start(self, port, stay_open=False, public_mode=False, persistent_slug=None):
|
||||
def start(self, port, stay_open=False, public_mode=False, slug=None):
|
||||
"""
|
||||
Start the flask web server.
|
||||
"""
|
||||
self.common.log('Web', 'start', 'port={}, stay_open={}, public_mode={}, persistent_slug={}'.format(port, stay_open, public_mode, persistent_slug))
|
||||
if not public_mode:
|
||||
self.generate_slug(persistent_slug)
|
||||
self.common.log('Web', 'start', 'port={}, stay_open={}, public_mode={}, slug={}'.format(port, stay_open, public_mode, slug))
|
||||
|
||||
self.stay_open = stay_open
|
||||
|
||||
@ -267,7 +265,7 @@ class Web(object):
|
||||
self.stop_q.put(True)
|
||||
|
||||
# Reset any slug that was in use
|
||||
self.slug = ''
|
||||
self.slug = None
|
||||
|
||||
# To stop flask, load http://127.0.0.1:<port>/<shutdown_slug>/shutdown
|
||||
if self.running:
|
||||
|
@ -20,10 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||
|
||||
from onionshare import strings
|
||||
from onionshare.common import ShutdownTimer
|
||||
from onionshare.common import AutoStopTimer
|
||||
|
||||
from ..server_status import ServerStatus
|
||||
from ..threads import OnionThread
|
||||
from ..threads import AutoStartTimer
|
||||
from ..widgets import Alert
|
||||
|
||||
class Mode(QtWidgets.QWidget):
|
||||
@ -35,6 +36,7 @@ class Mode(QtWidgets.QWidget):
|
||||
starting_server_step2 = QtCore.pyqtSignal()
|
||||
starting_server_step3 = QtCore.pyqtSignal()
|
||||
starting_server_error = QtCore.pyqtSignal(str)
|
||||
starting_server_early = QtCore.pyqtSignal()
|
||||
set_server_active = QtCore.pyqtSignal(bool)
|
||||
|
||||
def __init__(self, common, qtapp, app, status_bar, server_status_label, system_tray, filenames=None, local_only=False):
|
||||
@ -58,6 +60,7 @@ class Mode(QtWidgets.QWidget):
|
||||
# Threads start out as None
|
||||
self.onion_thread = None
|
||||
self.web_thread = None
|
||||
self.startup_thread = None
|
||||
|
||||
# Server status
|
||||
self.server_status = ServerStatus(self.common, self.qtapp, self.app, None, self.local_only)
|
||||
@ -68,6 +71,7 @@ class Mode(QtWidgets.QWidget):
|
||||
self.stop_server_finished.connect(self.server_status.stop_server_finished)
|
||||
self.starting_server_step2.connect(self.start_server_step2)
|
||||
self.starting_server_step3.connect(self.start_server_step3)
|
||||
self.starting_server_early.connect(self.start_server_early)
|
||||
self.starting_server_error.connect(self.start_server_error)
|
||||
|
||||
# Primary action
|
||||
@ -88,24 +92,55 @@ class Mode(QtWidgets.QWidget):
|
||||
"""
|
||||
pass
|
||||
|
||||
def human_friendly_time(self, secs):
|
||||
"""
|
||||
Returns a human-friendly time delta from given seconds.
|
||||
"""
|
||||
days = secs//86400
|
||||
hours = (secs - days*86400)//3600
|
||||
minutes = (secs - days*86400 - hours*3600)//60
|
||||
seconds = secs - days*86400 - hours*3600 - minutes*60
|
||||
if not seconds:
|
||||
seconds = '0'
|
||||
result = ("{0}{1}, ".format(days, strings._('days_first_letter')) if days else "") + \
|
||||
("{0}{1}, ".format(hours, strings._('hours_first_letter')) if hours else "") + \
|
||||
("{0}{1}, ".format(minutes, strings._('minutes_first_letter')) if minutes else "") + \
|
||||
"{0}{1}".format(seconds, strings._('seconds_first_letter'))
|
||||
|
||||
return result
|
||||
|
||||
def timer_callback(self):
|
||||
"""
|
||||
This method is called regularly on a timer.
|
||||
"""
|
||||
# If the auto-shutdown timer has stopped, stop the server
|
||||
# If this is a scheduled share, display the countdown til the share starts
|
||||
if self.server_status.status == ServerStatus.STATUS_WORKING:
|
||||
if self.server_status.autostart_timer_datetime:
|
||||
now = QtCore.QDateTime.currentDateTime()
|
||||
if self.server_status.local_only:
|
||||
seconds_remaining = now.secsTo(self.server_status.autostart_timer_widget.dateTime())
|
||||
else:
|
||||
seconds_remaining = now.secsTo(self.server_status.autostart_timer_datetime.replace(second=0, microsecond=0))
|
||||
# Update the server button
|
||||
if seconds_remaining > 0:
|
||||
self.server_status.server_button.setText(strings._('gui_waiting_to_start').format(self.human_friendly_time(seconds_remaining)))
|
||||
else:
|
||||
self.server_status.server_button.setText(strings._('gui_please_wait'))
|
||||
|
||||
# If the auto-stop timer has stopped, stop the server
|
||||
if self.server_status.status == ServerStatus.STATUS_STARTED:
|
||||
if self.app.shutdown_timer and self.common.settings.get('shutdown_timeout'):
|
||||
if self.timeout > 0:
|
||||
if self.app.autostop_timer_thread and self.common.settings.get('autostop_timer'):
|
||||
if self.autostop_timer_datetime_delta > 0:
|
||||
now = QtCore.QDateTime.currentDateTime()
|
||||
seconds_remaining = now.secsTo(self.server_status.timeout)
|
||||
seconds_remaining = now.secsTo(self.server_status.autostop_timer_datetime)
|
||||
|
||||
# Update the server button
|
||||
server_button_text = self.get_stop_server_shutdown_timeout_text()
|
||||
self.server_status.server_button.setText(server_button_text.format(seconds_remaining))
|
||||
server_button_text = self.get_stop_server_autostop_timer_text()
|
||||
self.server_status.server_button.setText(server_button_text.format(self.human_friendly_time(seconds_remaining)))
|
||||
|
||||
self.status_bar.clearMessage()
|
||||
if not self.app.shutdown_timer.is_alive():
|
||||
if self.timeout_finished_should_stop_server():
|
||||
if not self.app.autostop_timer_thread.is_alive():
|
||||
if self.autostop_timer_finished_should_stop_server():
|
||||
self.server_status.stop_server()
|
||||
|
||||
def timer_callback_custom(self):
|
||||
@ -114,15 +149,15 @@ class Mode(QtWidgets.QWidget):
|
||||
"""
|
||||
pass
|
||||
|
||||
def get_stop_server_shutdown_timeout_text(self):
|
||||
def get_stop_server_autostop_timer_text(self):
|
||||
"""
|
||||
Return the string to put on the stop server button, if there's a shutdown timeout
|
||||
Return the string to put on the stop server button, if there's an auto-stop timer
|
||||
"""
|
||||
pass
|
||||
|
||||
def timeout_finished_should_stop_server(self):
|
||||
def autostop_timer_finished_should_stop_server(self):
|
||||
"""
|
||||
The shutdown timer expired, should we stop the server? Returns a bool
|
||||
The auto-stop timer expired, should we stop the server? Returns a bool
|
||||
"""
|
||||
pass
|
||||
|
||||
@ -142,7 +177,41 @@ class Mode(QtWidgets.QWidget):
|
||||
self.status_bar.clearMessage()
|
||||
self.server_status_label.setText('')
|
||||
|
||||
# Ensure we always get a new random port each time we might launch an OnionThread
|
||||
self.app.port = None
|
||||
|
||||
# Start the onion thread. If this share was scheduled for a future date,
|
||||
# the OnionThread will start and exit 'early' to obtain the port, slug
|
||||
# and onion address, but it will not start the WebThread yet.
|
||||
if self.server_status.autostart_timer_datetime:
|
||||
self.start_onion_thread(obtain_onion_early=True)
|
||||
else:
|
||||
self.start_onion_thread()
|
||||
|
||||
# If scheduling a share, delay starting the real share
|
||||
if self.server_status.autostart_timer_datetime:
|
||||
self.common.log('Mode', 'start_server', 'Starting auto-start timer')
|
||||
self.startup_thread = AutoStartTimer(self)
|
||||
# Once the timer has finished, start the real share, with a WebThread
|
||||
self.startup_thread.success.connect(self.start_scheduled_service)
|
||||
self.startup_thread.error.connect(self.start_server_error)
|
||||
self.startup_thread.canceled = False
|
||||
self.startup_thread.start()
|
||||
|
||||
def start_onion_thread(self, obtain_onion_early=False):
|
||||
self.common.log('Mode', 'start_server', 'Starting an onion thread')
|
||||
self.obtain_onion_early = obtain_onion_early
|
||||
self.onion_thread = OnionThread(self)
|
||||
self.onion_thread.success.connect(self.starting_server_step2.emit)
|
||||
self.onion_thread.success_early.connect(self.starting_server_early.emit)
|
||||
self.onion_thread.error.connect(self.starting_server_error.emit)
|
||||
self.onion_thread.start()
|
||||
|
||||
def start_scheduled_service(self, obtain_onion_early=False):
|
||||
# We start a new OnionThread with the saved scheduled key from settings
|
||||
self.common.settings.load()
|
||||
self.obtain_onion_early = obtain_onion_early
|
||||
self.common.log('Mode', 'start_server', 'Starting a scheduled onion thread')
|
||||
self.onion_thread = OnionThread(self)
|
||||
self.onion_thread.success.connect(self.starting_server_step2.emit)
|
||||
self.onion_thread.error.connect(self.starting_server_error.emit)
|
||||
@ -154,6 +223,14 @@ class Mode(QtWidgets.QWidget):
|
||||
"""
|
||||
pass
|
||||
|
||||
def start_server_early(self):
|
||||
"""
|
||||
An 'early' start of an onion service in order to obtain the onion
|
||||
address for a scheduled start. Shows the onion address in the UI
|
||||
in advance of actually starting the share.
|
||||
"""
|
||||
self.server_status.show_url()
|
||||
|
||||
def start_server_step2(self):
|
||||
"""
|
||||
Step 2 in starting the onionshare server.
|
||||
@ -182,18 +259,18 @@ class Mode(QtWidgets.QWidget):
|
||||
|
||||
self.start_server_step3_custom()
|
||||
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
# Convert the date value to seconds between now and then
|
||||
now = QtCore.QDateTime.currentDateTime()
|
||||
self.timeout = now.secsTo(self.server_status.timeout)
|
||||
# Set the shutdown timeout value
|
||||
if self.timeout > 0:
|
||||
self.app.shutdown_timer = ShutdownTimer(self.common, self.timeout)
|
||||
self.app.shutdown_timer.start()
|
||||
# The timeout has actually already passed since the user clicked Start. Probably the Onion service took too long to start.
|
||||
self.autostop_timer_datetime_delta = now.secsTo(self.server_status.autostop_timer_datetime)
|
||||
# Start the auto-stop timer
|
||||
if self.autostop_timer_datetime_delta > 0:
|
||||
self.app.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer_datetime_delta)
|
||||
self.app.autostop_timer_thread.start()
|
||||
# The auto-stop timer has actually already passed since the user clicked Start. Probably the Onion service took too long to start.
|
||||
else:
|
||||
self.stop_server()
|
||||
self.start_server_error(strings._('gui_server_started_after_timeout'))
|
||||
self.start_server_error(strings._('gui_server_started_after_autostop_timer'))
|
||||
|
||||
def start_server_step3_custom(self):
|
||||
"""
|
||||
@ -225,7 +302,12 @@ class Mode(QtWidgets.QWidget):
|
||||
Cancel the server while it is preparing to start
|
||||
"""
|
||||
self.cancel_server_custom()
|
||||
|
||||
if self.startup_thread:
|
||||
self.common.log('Mode', 'cancel_server: quitting startup thread')
|
||||
self.startup_thread.canceled = True
|
||||
self.app.onion.scheduled_key = None
|
||||
self.app.onion.scheduled_auth_cookie = None
|
||||
self.startup_thread.quit()
|
||||
if self.onion_thread:
|
||||
self.common.log('Mode', 'cancel_server: quitting onion thread')
|
||||
self.onion_thread.quit()
|
||||
|
@ -86,24 +86,24 @@ class ReceiveMode(Mode):
|
||||
self.wrapper_layout.addWidget(self.history, stretch=1)
|
||||
self.setLayout(self.wrapper_layout)
|
||||
|
||||
def get_stop_server_shutdown_timeout_text(self):
|
||||
def get_stop_server_autostop_timer_text(self):
|
||||
"""
|
||||
Return the string to put on the stop server button, if there's a shutdown timeout
|
||||
Return the string to put on the stop server button, if there's an auto-stop timer
|
||||
"""
|
||||
return strings._('gui_receive_stop_server_shutdown_timeout')
|
||||
return strings._('gui_receive_stop_server_autostop_timer')
|
||||
|
||||
def timeout_finished_should_stop_server(self):
|
||||
def autostop_timer_finished_should_stop_server(self):
|
||||
"""
|
||||
The shutdown timer expired, should we stop the server? Returns a bool
|
||||
The auto-stop timer expired, should we stop the server? Returns a bool
|
||||
"""
|
||||
# If there were no attempts to upload files, or all uploads are done, we can stop
|
||||
if self.web.receive_mode.upload_count == 0 or not self.web.receive_mode.uploads_in_progress:
|
||||
self.server_status.stop_server()
|
||||
self.server_status_label.setText(strings._('close_on_timeout'))
|
||||
self.server_status_label.setText(strings._('close_on_autostop_timer'))
|
||||
return True
|
||||
# An upload is probably still running - hold off on stopping the share, but block new shares.
|
||||
else:
|
||||
self.server_status_label.setText(strings._('gui_receive_mode_timeout_waiting'))
|
||||
self.server_status_label.setText(strings._('gui_receive_mode_autostop_timer_waiting'))
|
||||
self.web.receive_mode.can_upload = False
|
||||
return False
|
||||
|
||||
|
@ -121,24 +121,24 @@ class ShareMode(Mode):
|
||||
# Always start with focus on file selection
|
||||
self.file_selection.setFocus()
|
||||
|
||||
def get_stop_server_shutdown_timeout_text(self):
|
||||
def get_stop_server_autostop_timer_text(self):
|
||||
"""
|
||||
Return the string to put on the stop server button, if there's a shutdown timeout
|
||||
Return the string to put on the stop server button, if there's an auto-stop timer
|
||||
"""
|
||||
return strings._('gui_share_stop_server_shutdown_timeout')
|
||||
return strings._('gui_share_stop_server_autostop_timer')
|
||||
|
||||
def timeout_finished_should_stop_server(self):
|
||||
def autostop_timer_finished_should_stop_server(self):
|
||||
"""
|
||||
The shutdown timer expired, should we stop the server? Returns a bool
|
||||
The auto-stop timer expired, should we stop the server? Returns a bool
|
||||
"""
|
||||
# If there were no attempts to download the share, or all downloads are done, we can stop
|
||||
if self.web.share_mode.download_count == 0 or self.web.done:
|
||||
self.server_status.stop_server()
|
||||
self.server_status_label.setText(strings._('close_on_timeout'))
|
||||
self.server_status_label.setText(strings._('close_on_autostop_timer'))
|
||||
return True
|
||||
# A download is probably still running - hold off on stopping the share
|
||||
else:
|
||||
self.server_status_label.setText(strings._('gui_share_mode_timeout_waiting'))
|
||||
self.server_status_label.setText(strings._('gui_share_mode_autostop_timer_waiting'))
|
||||
return False
|
||||
|
||||
def start_server_custom(self):
|
||||
|
@ -228,7 +228,10 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_share_stopped'))
|
||||
elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING:
|
||||
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_working))
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_share_working'))
|
||||
if self.share_mode.server_status.autostart_timer_datetime:
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_share_scheduled'))
|
||||
else:
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_share_working'))
|
||||
elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED:
|
||||
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_share_started'))
|
||||
@ -239,7 +242,10 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_receive_stopped'))
|
||||
elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING:
|
||||
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_working))
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_receive_working'))
|
||||
if self.receive_mode.server_status.autostart_timer_datetime:
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_receive_scheduled'))
|
||||
else:
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_receive_working'))
|
||||
elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED:
|
||||
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
|
||||
self.server_status_label.setText(strings._('gui_status_indicator_receive_started'))
|
||||
@ -309,10 +315,16 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||
self.receive_mode.on_reload_settings()
|
||||
self.status_bar.clearMessage()
|
||||
|
||||
# If we switched off the shutdown timeout setting, ensure the widget is hidden.
|
||||
if not self.common.settings.get('shutdown_timeout'):
|
||||
self.share_mode.server_status.shutdown_timeout_container.hide()
|
||||
self.receive_mode.server_status.shutdown_timeout_container.hide()
|
||||
# If we switched off the auto-stop timer setting, ensure the widget is hidden.
|
||||
if not self.common.settings.get('autostop_timer'):
|
||||
self.share_mode.server_status.autostop_timer_container.hide()
|
||||
self.receive_mode.server_status.autostop_timer_container.hide()
|
||||
# If we switched off the auto-start timer setting, ensure the widget is hidden.
|
||||
if not self.common.settings.get('autostart_timer'):
|
||||
self.share_mode.server_status.autostart_timer_datetime = None
|
||||
self.receive_mode.server_status.autostart_timer_datetime = None
|
||||
self.share_mode.server_status.autostart_timer_container.hide()
|
||||
self.receive_mode.server_status.autostart_timer_container.hide()
|
||||
|
||||
d = SettingsDialog(self.common, self.onion, self.qtapp, self.config, self.local_only)
|
||||
d.settings_saved.connect(reload_settings)
|
||||
|
@ -56,34 +56,60 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
self.app = app
|
||||
|
||||
self.web = None
|
||||
self.autostart_timer_datetime = None
|
||||
self.local_only = local_only
|
||||
|
||||
self.resizeEvent(None)
|
||||
|
||||
# Shutdown timeout layout
|
||||
self.shutdown_timeout_label = QtWidgets.QLabel(strings._('gui_settings_shutdown_timeout'))
|
||||
self.shutdown_timeout = QtWidgets.QDateTimeEdit()
|
||||
self.shutdown_timeout.setDisplayFormat("hh:mm A MMM d, yy")
|
||||
# Auto-start timer layout
|
||||
self.autostart_timer_label = QtWidgets.QLabel(strings._('gui_settings_autostart_timer'))
|
||||
self.autostart_timer_widget = QtWidgets.QDateTimeEdit()
|
||||
self.autostart_timer_widget.setDisplayFormat("hh:mm A MMM d, yy")
|
||||
if self.local_only:
|
||||
# For testing
|
||||
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
|
||||
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
|
||||
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
|
||||
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
|
||||
else:
|
||||
# Set proposed timeout to be 5 minutes into the future
|
||||
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
# Set proposed timer to be 5 minutes into the future
|
||||
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
# Onion services can take a little while to start, so reduce the risk of it expiring too soon by setting the minimum to 60s from now
|
||||
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
self.shutdown_timeout.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
|
||||
shutdown_timeout_layout = QtWidgets.QHBoxLayout()
|
||||
shutdown_timeout_layout.addWidget(self.shutdown_timeout_label)
|
||||
shutdown_timeout_layout.addWidget(self.shutdown_timeout)
|
||||
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
self.autostart_timer_widget.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
|
||||
autostart_timer_layout = QtWidgets.QHBoxLayout()
|
||||
autostart_timer_layout.addWidget(self.autostart_timer_label)
|
||||
autostart_timer_layout.addWidget(self.autostart_timer_widget)
|
||||
|
||||
# Shutdown timeout container, so it can all be hidden and shown as a group
|
||||
shutdown_timeout_container_layout = QtWidgets.QVBoxLayout()
|
||||
shutdown_timeout_container_layout.addLayout(shutdown_timeout_layout)
|
||||
self.shutdown_timeout_container = QtWidgets.QWidget()
|
||||
self.shutdown_timeout_container.setLayout(shutdown_timeout_container_layout)
|
||||
self.shutdown_timeout_container.hide()
|
||||
# Auto-start timer container, so it can all be hidden and shown as a group
|
||||
autostart_timer_container_layout = QtWidgets.QVBoxLayout()
|
||||
autostart_timer_container_layout.addLayout(autostart_timer_layout)
|
||||
self.autostart_timer_container = QtWidgets.QWidget()
|
||||
self.autostart_timer_container.setLayout(autostart_timer_container_layout)
|
||||
self.autostart_timer_container.hide()
|
||||
|
||||
# Auto-stop timer layout
|
||||
self.autostop_timer_label = QtWidgets.QLabel(strings._('gui_settings_autostop_timer'))
|
||||
self.autostop_timer_widget = QtWidgets.QDateTimeEdit()
|
||||
self.autostop_timer_widget.setDisplayFormat("hh:mm A MMM d, yy")
|
||||
if self.local_only:
|
||||
# For testing
|
||||
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
|
||||
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
|
||||
else:
|
||||
# Set proposed timer to be 5 minutes into the future
|
||||
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
# Onion services can take a little while to start, so reduce the risk of it expiring too soon by setting the minimum to 60s from now
|
||||
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
self.autostop_timer_widget.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
|
||||
autostop_timer_layout = QtWidgets.QHBoxLayout()
|
||||
autostop_timer_layout.addWidget(self.autostop_timer_label)
|
||||
autostop_timer_layout.addWidget(self.autostop_timer_widget)
|
||||
|
||||
# Auto-stop timer container, so it can all be hidden and shown as a group
|
||||
autostop_timer_container_layout = QtWidgets.QVBoxLayout()
|
||||
autostop_timer_container_layout.addLayout(autostop_timer_layout)
|
||||
self.autostop_timer_container = QtWidgets.QWidget()
|
||||
self.autostop_timer_container.setLayout(autostop_timer_container_layout)
|
||||
self.autostop_timer_container.hide()
|
||||
|
||||
# Server layout
|
||||
self.server_button = QtWidgets.QPushButton()
|
||||
@ -123,7 +149,8 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
layout = QtWidgets.QVBoxLayout()
|
||||
layout.addWidget(self.server_button)
|
||||
layout.addLayout(url_layout)
|
||||
layout.addWidget(self.shutdown_timeout_container)
|
||||
layout.addWidget(self.autostart_timer_container)
|
||||
layout.addWidget(self.autostop_timer_container)
|
||||
self.setLayout(layout)
|
||||
|
||||
def set_mode(self, share_mode, file_selection=None):
|
||||
@ -154,14 +181,55 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def shutdown_timeout_reset(self):
|
||||
def autostart_timer_reset(self):
|
||||
"""
|
||||
Reset the timeout in the UI after stopping a share
|
||||
Reset the auto-start timer in the UI after stopping a share
|
||||
"""
|
||||
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
if not self.local_only:
|
||||
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
|
||||
def autostop_timer_reset(self):
|
||||
"""
|
||||
Reset the auto-stop timer in the UI after stopping a share
|
||||
"""
|
||||
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
|
||||
if not self.local_only:
|
||||
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
|
||||
|
||||
def show_url(self):
|
||||
"""
|
||||
Show the URL in the UI.
|
||||
"""
|
||||
self.url_description.show()
|
||||
|
||||
info_image = self.common.get_resource_path('images/info.png')
|
||||
|
||||
if self.mode == ServerStatus.MODE_SHARE:
|
||||
self.url_description.setText(strings._('gui_share_url_description').format(info_image))
|
||||
else:
|
||||
self.url_description.setText(strings._('gui_receive_url_description').format(info_image))
|
||||
|
||||
# Show a Tool Tip explaining the lifecycle of this URL
|
||||
if self.common.settings.get('save_private_key'):
|
||||
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
|
||||
self.url_description.setToolTip(strings._('gui_url_label_onetime_and_persistent'))
|
||||
else:
|
||||
self.url_description.setToolTip(strings._('gui_url_label_persistent'))
|
||||
else:
|
||||
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
|
||||
self.url_description.setToolTip(strings._('gui_url_label_onetime'))
|
||||
else:
|
||||
self.url_description.setToolTip(strings._('gui_url_label_stay_open'))
|
||||
|
||||
self.url.setText(self.get_url())
|
||||
self.url.show()
|
||||
self.copy_url_button.show()
|
||||
|
||||
if self.app.stealth:
|
||||
self.copy_hidservauth_button.show()
|
||||
else:
|
||||
self.copy_hidservauth_button.hide()
|
||||
|
||||
def update(self):
|
||||
"""
|
||||
@ -169,44 +237,18 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
"""
|
||||
# Set the URL fields
|
||||
if self.status == self.STATUS_STARTED:
|
||||
self.url_description.show()
|
||||
|
||||
info_image = self.common.get_resource_path('images/info.png')
|
||||
|
||||
if self.mode == ServerStatus.MODE_SHARE:
|
||||
self.url_description.setText(strings._('gui_share_url_description').format(info_image))
|
||||
else:
|
||||
self.url_description.setText(strings._('gui_receive_url_description').format(info_image))
|
||||
|
||||
# Show a Tool Tip explaining the lifecycle of this URL
|
||||
if self.common.settings.get('save_private_key'):
|
||||
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
|
||||
self.url_description.setToolTip(strings._('gui_url_label_onetime_and_persistent'))
|
||||
else:
|
||||
self.url_description.setToolTip(strings._('gui_url_label_persistent'))
|
||||
else:
|
||||
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
|
||||
self.url_description.setToolTip(strings._('gui_url_label_onetime'))
|
||||
else:
|
||||
self.url_description.setToolTip(strings._('gui_url_label_stay_open'))
|
||||
|
||||
self.url.setText(self.get_url())
|
||||
self.url.show()
|
||||
|
||||
self.copy_url_button.show()
|
||||
self.show_url()
|
||||
|
||||
if self.common.settings.get('save_private_key'):
|
||||
if not self.common.settings.get('slug'):
|
||||
self.common.settings.set('slug', self.web.slug)
|
||||
self.common.settings.save()
|
||||
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
self.shutdown_timeout_container.hide()
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
self.autostart_timer_container.hide()
|
||||
|
||||
if self.app.stealth:
|
||||
self.copy_hidservauth_button.show()
|
||||
else:
|
||||
self.copy_hidservauth_button.hide()
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
self.autostop_timer_container.hide()
|
||||
else:
|
||||
self.url_description.hide()
|
||||
self.url.hide()
|
||||
@ -227,8 +269,10 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
else:
|
||||
self.server_button.setText(strings._('gui_receive_start_server'))
|
||||
self.server_button.setToolTip('')
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
self.shutdown_timeout_container.show()
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
self.autostart_timer_container.show()
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
self.autostop_timer_container.show()
|
||||
elif self.status == self.STATUS_STARTED:
|
||||
self.server_button.setStyleSheet(self.common.css['server_status_button_started'])
|
||||
self.server_button.setEnabled(True)
|
||||
@ -236,43 +280,61 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
self.server_button.setText(strings._('gui_share_stop_server'))
|
||||
else:
|
||||
self.server_button.setText(strings._('gui_receive_stop_server'))
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
self.shutdown_timeout_container.hide()
|
||||
if self.mode == ServerStatus.MODE_SHARE:
|
||||
self.server_button.setToolTip(strings._('gui_share_stop_server_shutdown_timeout_tooltip').format(self.timeout))
|
||||
else:
|
||||
self.server_button.setToolTip(strings._('gui_receive_stop_server_shutdown_timeout_tooltip').format(self.timeout))
|
||||
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
self.autostart_timer_container.hide()
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
self.autostop_timer_container.hide()
|
||||
self.server_button.setToolTip(strings._('gui_stop_server_autostop_timer_tooltip').format(self.autostop_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
|
||||
elif self.status == self.STATUS_WORKING:
|
||||
self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
|
||||
self.server_button.setEnabled(True)
|
||||
self.server_button.setText(strings._('gui_please_wait'))
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
self.shutdown_timeout_container.hide()
|
||||
if self.autostart_timer_datetime:
|
||||
self.autostart_timer_container.hide()
|
||||
self.server_button.setToolTip(strings._('gui_start_server_autostart_timer_tooltip').format(self.autostart_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
|
||||
else:
|
||||
self.server_button.setText(strings._('gui_please_wait'))
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
self.autostop_timer_container.hide()
|
||||
else:
|
||||
self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
|
||||
self.server_button.setEnabled(False)
|
||||
self.server_button.setText(strings._('gui_please_wait'))
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
self.shutdown_timeout_container.hide()
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
self.autostart_timer_container.hide()
|
||||
self.server_button.setToolTip(strings._('gui_start_server_autostart_timer_tooltip').format(self.autostart_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
self.autostop_timer_container.hide()
|
||||
|
||||
def server_button_clicked(self):
|
||||
"""
|
||||
Toggle starting or stopping the server.
|
||||
"""
|
||||
if self.status == self.STATUS_STOPPED:
|
||||
if self.common.settings.get('shutdown_timeout'):
|
||||
can_start = True
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
if self.local_only:
|
||||
self.timeout = self.shutdown_timeout.dateTime().toPyDateTime()
|
||||
self.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime()
|
||||
else:
|
||||
# Get the timeout chosen, stripped of its seconds. This prevents confusion if the share stops at (say) 37 seconds past the minute chosen
|
||||
self.timeout = self.shutdown_timeout.dateTime().toPyDateTime().replace(second=0, microsecond=0)
|
||||
# If the timeout has actually passed already before the user hit Start, refuse to start the server.
|
||||
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.timeout:
|
||||
Alert(self.common, strings._('gui_server_timeout_expired'), QtWidgets.QMessageBox.Warning)
|
||||
self.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime().replace(second=0, microsecond=0)
|
||||
# If the timer has actually passed already before the user hit Start, refuse to start the server.
|
||||
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.autostart_timer_datetime:
|
||||
can_start = False
|
||||
Alert(self.common, strings._('gui_server_autostart_timer_expired'), QtWidgets.QMessageBox.Warning)
|
||||
if self.common.settings.get('autostop_timer'):
|
||||
if self.local_only:
|
||||
self.autostop_timer_datetime = self.autostop_timer_widget.dateTime().toPyDateTime()
|
||||
else:
|
||||
self.start_server()
|
||||
else:
|
||||
# Get the timer chosen, stripped of its seconds. This prevents confusion if the share stops at (say) 37 seconds past the minute chosen
|
||||
self.autostop_timer_datetime = self.autostop_timer_widget.dateTime().toPyDateTime().replace(second=0, microsecond=0)
|
||||
# If the timer has actually passed already before the user hit Start, refuse to start the server.
|
||||
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.autostop_timer_datetime:
|
||||
can_start = False
|
||||
Alert(self.common, strings._('gui_server_autostop_timer_expired'), QtWidgets.QMessageBox.Warning)
|
||||
if self.common.settings.get('autostart_timer'):
|
||||
if self.autostop_timer_datetime <= self.autostart_timer_datetime:
|
||||
Alert(self.common, strings._('gui_autostop_timer_cant_be_earlier_than_autostart_timer'), QtWidgets.QMessageBox.Warning)
|
||||
can_start = False
|
||||
if can_start:
|
||||
self.start_server()
|
||||
elif self.status == self.STATUS_STARTED:
|
||||
self.stop_server()
|
||||
@ -302,7 +364,8 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
Stop the server.
|
||||
"""
|
||||
self.status = self.STATUS_WORKING
|
||||
self.shutdown_timeout_reset()
|
||||
self.autostart_timer_reset()
|
||||
self.autostop_timer_reset()
|
||||
self.update()
|
||||
self.server_stopped.emit()
|
||||
|
||||
@ -312,7 +375,8 @@ class ServerStatus(QtWidgets.QWidget):
|
||||
"""
|
||||
self.common.log('ServerStatus', 'cancel_server', 'Canceling the server mid-startup')
|
||||
self.status = self.STATUS_WORKING
|
||||
self.shutdown_timeout_reset()
|
||||
self.autostart_timer_reset()
|
||||
self.autostop_timer_reset()
|
||||
self.update()
|
||||
self.server_canceled.emit()
|
||||
|
||||
|
@ -71,27 +71,45 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||
self.public_mode_widget = QtWidgets.QWidget()
|
||||
self.public_mode_widget.setLayout(public_mode_layout)
|
||||
|
||||
# Whether or not to use a shutdown ('auto-stop') timer
|
||||
self.shutdown_timeout_checkbox = QtWidgets.QCheckBox()
|
||||
self.shutdown_timeout_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
self.shutdown_timeout_checkbox.setText(strings._("gui_settings_shutdown_timeout_checkbox"))
|
||||
shutdown_timeout_label = QtWidgets.QLabel(strings._("gui_settings_whats_this").format("https://github.com/micahflee/onionshare/wiki/Using-the-Auto-Stop-Timer"))
|
||||
shutdown_timeout_label.setStyleSheet(self.common.css['settings_whats_this'])
|
||||
shutdown_timeout_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction)
|
||||
shutdown_timeout_label.setOpenExternalLinks(True)
|
||||
shutdown_timeout_label.setMinimumSize(public_mode_label.sizeHint())
|
||||
shutdown_timeout_layout = QtWidgets.QHBoxLayout()
|
||||
shutdown_timeout_layout.addWidget(self.shutdown_timeout_checkbox)
|
||||
shutdown_timeout_layout.addWidget(shutdown_timeout_label)
|
||||
shutdown_timeout_layout.addStretch()
|
||||
shutdown_timeout_layout.setContentsMargins(0,0,0,0)
|
||||
self.shutdown_timeout_widget = QtWidgets.QWidget()
|
||||
self.shutdown_timeout_widget.setLayout(shutdown_timeout_layout)
|
||||
# Whether or not to use an auto-start timer
|
||||
self.autostart_timer_checkbox = QtWidgets.QCheckBox()
|
||||
self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
self.autostart_timer_checkbox.setText(strings._("gui_settings_autostart_timer_checkbox"))
|
||||
autostart_timer_label = QtWidgets.QLabel(strings._("gui_settings_whats_this").format("https://github.com/micahflee/onionshare/wiki/Using-the-Startup-Timer"))
|
||||
autostart_timer_label.setStyleSheet(self.common.css['settings_whats_this'])
|
||||
autostart_timer_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction)
|
||||
autostart_timer_label.setOpenExternalLinks(True)
|
||||
autostart_timer_label.setMinimumSize(public_mode_label.sizeHint())
|
||||
autostart_timer_layout = QtWidgets.QHBoxLayout()
|
||||
autostart_timer_layout.addWidget(self.autostart_timer_checkbox)
|
||||
autostart_timer_layout.addWidget(autostart_timer_label)
|
||||
autostart_timer_layout.addStretch()
|
||||
autostart_timer_layout.setContentsMargins(0,0,0,0)
|
||||
self.autostart_timer_widget = QtWidgets.QWidget()
|
||||
self.autostart_timer_widget.setLayout(autostart_timer_layout)
|
||||
|
||||
# Whether or not to use an auto-stop timer
|
||||
self.autostop_timer_checkbox = QtWidgets.QCheckBox()
|
||||
self.autostop_timer_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
self.autostop_timer_checkbox.setText(strings._("gui_settings_autostop_timer_checkbox"))
|
||||
autostop_timer_label = QtWidgets.QLabel(strings._("gui_settings_whats_this").format("https://github.com/micahflee/onionshare/wiki/Using-the-Auto-Stop-Timer"))
|
||||
autostop_timer_label.setStyleSheet(self.common.css['settings_whats_this'])
|
||||
autostop_timer_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction)
|
||||
autostop_timer_label.setOpenExternalLinks(True)
|
||||
autostop_timer_label.setMinimumSize(public_mode_label.sizeHint())
|
||||
autostop_timer_layout = QtWidgets.QHBoxLayout()
|
||||
autostop_timer_layout.addWidget(self.autostop_timer_checkbox)
|
||||
autostop_timer_layout.addWidget(autostop_timer_label)
|
||||
autostop_timer_layout.addStretch()
|
||||
autostop_timer_layout.setContentsMargins(0,0,0,0)
|
||||
self.autostop_timer_widget = QtWidgets.QWidget()
|
||||
self.autostop_timer_widget.setLayout(autostop_timer_layout)
|
||||
|
||||
# General settings layout
|
||||
general_group_layout = QtWidgets.QVBoxLayout()
|
||||
general_group_layout.addWidget(self.public_mode_widget)
|
||||
general_group_layout.addWidget(self.shutdown_timeout_widget)
|
||||
general_group_layout.addWidget(self.autostart_timer_widget)
|
||||
general_group_layout.addWidget(self.autostop_timer_widget)
|
||||
general_group = QtWidgets.QGroupBox(strings._("gui_settings_general_label"))
|
||||
general_group.setLayout(general_group_layout)
|
||||
|
||||
@ -488,11 +506,17 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||
else:
|
||||
self.close_after_first_download_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
shutdown_timeout = self.old_settings.get('shutdown_timeout')
|
||||
if shutdown_timeout:
|
||||
self.shutdown_timeout_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
autostart_timer = self.old_settings.get('autostart_timer')
|
||||
if autostart_timer:
|
||||
self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.shutdown_timeout_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
autostop_timer = self.old_settings.get('autostop_timer')
|
||||
if autostop_timer:
|
||||
self.autostop_timer_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.autostop_timer_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
save_private_key = self.old_settings.get('save_private_key')
|
||||
if save_private_key:
|
||||
@ -932,7 +956,8 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||
settings.load() # To get the last update timestamp
|
||||
|
||||
settings.set('close_after_first_download', self.close_after_first_download_checkbox.isChecked())
|
||||
settings.set('shutdown_timeout', self.shutdown_timeout_checkbox.isChecked())
|
||||
settings.set('autostart_timer', self.autostart_timer_checkbox.isChecked())
|
||||
settings.set('autostop_timer', self.autostop_timer_checkbox.isChecked())
|
||||
|
||||
# Complicated logic here to force v2 onion mode on or off depending on other settings
|
||||
if self.use_legacy_v2_onions_checkbox.isChecked():
|
||||
|
@ -28,6 +28,7 @@ class OnionThread(QtCore.QThread):
|
||||
Starts the onion service, and waits for it to finish
|
||||
"""
|
||||
success = QtCore.pyqtSignal()
|
||||
success_early = QtCore.pyqtSignal()
|
||||
error = QtCore.pyqtSignal(str)
|
||||
|
||||
def __init__(self, mode):
|
||||
@ -41,18 +42,30 @@ class OnionThread(QtCore.QThread):
|
||||
def run(self):
|
||||
self.mode.common.log('OnionThread', 'run')
|
||||
|
||||
# Choose port and slug early, because we need them to exist in advance for scheduled shares
|
||||
self.mode.app.stay_open = not self.mode.common.settings.get('close_after_first_download')
|
||||
|
||||
# start onionshare http service in new thread
|
||||
self.mode.web_thread = WebThread(self.mode)
|
||||
self.mode.web_thread.start()
|
||||
|
||||
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
|
||||
time.sleep(0.2)
|
||||
if not self.mode.app.port:
|
||||
self.mode.app.choose_port()
|
||||
if not self.mode.common.settings.get('public_mode'):
|
||||
if not self.mode.web.slug:
|
||||
self.mode.web.generate_slug(self.mode.common.settings.get('slug'))
|
||||
|
||||
try:
|
||||
self.mode.app.start_onion_service()
|
||||
self.success.emit()
|
||||
if self.mode.obtain_onion_early:
|
||||
self.mode.app.start_onion_service(await_publication=False, save_scheduled_key=True)
|
||||
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
|
||||
time.sleep(0.2)
|
||||
self.success_early.emit()
|
||||
# Unregister the onion so we can use it in the next OnionThread
|
||||
self.mode.app.onion.cleanup(False)
|
||||
else:
|
||||
self.mode.app.start_onion_service(await_publication=True)
|
||||
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
|
||||
time.sleep(0.2)
|
||||
# start onionshare http service in new thread
|
||||
self.mode.web_thread = WebThread(self.mode)
|
||||
self.mode.web_thread.start()
|
||||
self.success.emit()
|
||||
|
||||
except (TorTooOld, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, OSError) as e:
|
||||
self.error.emit(e.args[0])
|
||||
@ -73,5 +86,39 @@ class WebThread(QtCore.QThread):
|
||||
|
||||
def run(self):
|
||||
self.mode.common.log('WebThread', 'run')
|
||||
self.mode.app.choose_port()
|
||||
self.mode.web.start(self.mode.app.port, self.mode.app.stay_open, self.mode.common.settings.get('public_mode'), self.mode.common.settings.get('slug'))
|
||||
self.mode.web.start(self.mode.app.port, self.mode.app.stay_open, self.mode.common.settings.get('public_mode'), self.mode.web.slug)
|
||||
self.success.emit()
|
||||
|
||||
|
||||
class AutoStartTimer(QtCore.QThread):
|
||||
"""
|
||||
Waits for a prescribed time before allowing a share to start
|
||||
"""
|
||||
success = QtCore.pyqtSignal()
|
||||
error = QtCore.pyqtSignal(str)
|
||||
def __init__(self, mode, canceled=False):
|
||||
super(AutoStartTimer, self).__init__()
|
||||
self.mode = mode
|
||||
self.canceled = canceled
|
||||
self.mode.common.log('AutoStartTimer', '__init__')
|
||||
|
||||
# allow this thread to be terminated
|
||||
self.setTerminationEnabled()
|
||||
|
||||
def run(self):
|
||||
now = QtCore.QDateTime.currentDateTime()
|
||||
autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
|
||||
try:
|
||||
# Sleep until scheduled time
|
||||
while autostart_timer_datetime_delta > 0 and self.canceled == False:
|
||||
time.sleep(0.1)
|
||||
now = QtCore.QDateTime.currentDateTime()
|
||||
autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
|
||||
# Timer has now finished
|
||||
if self.canceled == False:
|
||||
self.mode.server_status.server_button.setText(strings._('gui_please_wait'))
|
||||
self.mode.server_status_label.setText(strings._('gui_status_indicator_share_working'))
|
||||
self.success.emit()
|
||||
except ValueError as e:
|
||||
self.error.emit(e.args[0])
|
||||
return
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "ተወው",
|
||||
"gui_settings_button_help": "መመሪያ",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} ملف غير قابل للقراءة.",
|
||||
"no_available_port": "لا يوجد منفذ متاح لتشغيل (onion service)",
|
||||
"other_page_loaded": "تم تحميل العنوان",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "توقف بسبب انتهاء التحميل",
|
||||
"timeout_download_still_running": "انتظار اكتمال التحميل",
|
||||
"large_filesize": "تحذير: ارسال مشاركة كبيرة قد يستغرق ساعات",
|
||||
@ -23,133 +23,133 @@
|
||||
"systray_download_canceled_message": "الغى المستخدم التحميل",
|
||||
"systray_upload_started_title": "بدأ الرفع",
|
||||
"systray_upload_started_message": "بدأ مستخدم رفع ملفات الى حاسوبك",
|
||||
"help_local_only": "",
|
||||
"help_local_only": "لا تستخدم تور (فقط لغرض التطوير)",
|
||||
"help_stay_open": "استمر في المشاركة بعد اول تحميل",
|
||||
"help_shutdown_timeout": "أوقف المشاركة بعد ثواني محددة",
|
||||
"help_autostop_timer": "أوقف المشاركة بعد ثواني محددة",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
"help_filename": "",
|
||||
"help_filename": "قائمة الملفات أو المجلدات للمشاركة",
|
||||
"help_config": "",
|
||||
"gui_drag_and_drop": "",
|
||||
"gui_add": "إضافة",
|
||||
"gui_delete": "حذف",
|
||||
"gui_choose_items": "إختر",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_start_server": "ابدأ المشاركة",
|
||||
"gui_share_stop_server": "أوقف المشاركة",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "نسخ العنوان",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
"gui_no_downloads": "",
|
||||
"gui_canceled": "ألغى",
|
||||
"gui_copied_url_title": "",
|
||||
"gui_copied_url": "",
|
||||
"gui_copied_url": "تم نسخ عنوان OnionShare إلى الحافظة",
|
||||
"gui_copied_hidservauth_title": "",
|
||||
"gui_copied_hidservauth": "",
|
||||
"gui_please_wait": "",
|
||||
"gui_download_upload_progress_complete": "",
|
||||
"gui_download_upload_progress_starting": "",
|
||||
"gui_download_upload_progress_eta": "",
|
||||
"version_string": "",
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "",
|
||||
"gui_share_quit_warning": "",
|
||||
"gui_receive_quit_warning": "",
|
||||
"gui_share_quit_warning": "إنك بصدد إرسال ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
|
||||
"gui_receive_quit_warning": "إنك بصدد تلقي ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
|
||||
"gui_quit_warning_quit": "خروج",
|
||||
"gui_quit_warning_dont_quit": "إلغاء",
|
||||
"error_rate_limit": "",
|
||||
"zip_progress_bar_format": "",
|
||||
"zip_progress_bar_format": "جاري الضغط: %p%",
|
||||
"error_stealth_not_supported": "",
|
||||
"error_ephemeral_not_supported": "",
|
||||
"gui_settings_window_title": "الإعدادات",
|
||||
"gui_settings_whats_this": "",
|
||||
"gui_settings_stealth_option": "",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>ما هذا؟</a>",
|
||||
"gui_settings_stealth_option": "استخدام ترخيص العميل",
|
||||
"gui_settings_stealth_hidservauth_string": "",
|
||||
"gui_settings_autoupdate_label": "التحقق من الإصدار الجديد",
|
||||
"gui_settings_autoupdate_option": "",
|
||||
"gui_settings_autoupdate_timestamp": "",
|
||||
"gui_settings_autoupdate_option": "قم بإشعاري عند توفر إصدار جديد",
|
||||
"gui_settings_autoupdate_timestamp": "آخر فحص: {}",
|
||||
"gui_settings_autoupdate_timestamp_never": "أبدا",
|
||||
"gui_settings_autoupdate_check_button": "",
|
||||
"gui_settings_autoupdate_check_button": "تحقق من وجود نسخة جديدة",
|
||||
"gui_settings_general_label": "الإعدادات العامة",
|
||||
"gui_settings_sharing_label": "",
|
||||
"gui_settings_close_after_first_download_option": "",
|
||||
"gui_settings_connection_type_label": "",
|
||||
"gui_settings_connection_type_bundled_option": "",
|
||||
"gui_settings_sharing_label": "إعدادات المشاركة",
|
||||
"gui_settings_close_after_first_download_option": "إيقاف المشاركة بعد اكتمال إرسال الملفات",
|
||||
"gui_settings_connection_type_label": "كيف ينبغي أن يتصل OnionShare بشبكة تور؟",
|
||||
"gui_settings_connection_type_bundled_option": "استخدام إصدار تور المدمج في صلب OnionShare",
|
||||
"gui_settings_connection_type_automatic_option": "",
|
||||
"gui_settings_connection_type_control_port_option": "",
|
||||
"gui_settings_connection_type_socket_file_option": "",
|
||||
"gui_settings_connection_type_test_button": "",
|
||||
"gui_settings_control_port_label": "",
|
||||
"gui_settings_connection_type_test_button": "اختبار الاتصال بشبكة تور",
|
||||
"gui_settings_control_port_label": "منفذ التحكم",
|
||||
"gui_settings_socket_file_label": "",
|
||||
"gui_settings_socks_label": "",
|
||||
"gui_settings_authenticate_label": "",
|
||||
"gui_settings_authenticate_label": "إعدادات المصادقة على تور",
|
||||
"gui_settings_authenticate_no_auth_option": "",
|
||||
"gui_settings_authenticate_password_option": "كلمة السر",
|
||||
"gui_settings_password_label": "كلمة السر",
|
||||
"gui_settings_tor_bridges": "",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "",
|
||||
"gui_settings_tor_bridges": "دعم جسر تور",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "لا تستخدم الجسور",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_meek_lite_expensive_warning": "",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "استخدام جسور مخصصة",
|
||||
"gui_settings_tor_bridges_custom_label": "",
|
||||
"gui_settings_tor_bridges_invalid": "",
|
||||
"gui_settings_button_save": "حفظ",
|
||||
"gui_settings_button_cancel": "إلغاء",
|
||||
"gui_settings_button_help": "مساعدة",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "إيقاف المشاركة يوم:",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
"settings_error_socket_port": "لا يمكن الاتصال بوحدة تحكم تور في {}:{}.",
|
||||
"settings_error_socket_file": "",
|
||||
"settings_error_auth": "",
|
||||
"settings_error_missing_password": "",
|
||||
"settings_error_missing_password": "متصل بوحدة تحكم تور، ولكنه يتطلب كلمة سرية للمصادقة.",
|
||||
"settings_error_unreadable_cookie_file": "",
|
||||
"settings_error_bundled_tor_not_supported": "",
|
||||
"settings_error_bundled_tor_timeout": "",
|
||||
"settings_error_bundled_tor_broken": "",
|
||||
"settings_test_success": "",
|
||||
"error_tor_protocol_error": "",
|
||||
"error_tor_protocol_error_unknown": "",
|
||||
"error_invalid_private_key": "",
|
||||
"connecting_to_tor": "",
|
||||
"error_tor_protocol_error": "هناك خطأ مع تور: {}",
|
||||
"error_tor_protocol_error_unknown": "حدث خطأ مجهول مع تور",
|
||||
"error_invalid_private_key": "نوع المفتاح الخاص هذا غير معتمد",
|
||||
"connecting_to_tor": "جارٍ الاتصال بشبكة تور",
|
||||
"update_available": "",
|
||||
"update_error_check_error": "",
|
||||
"update_error_invalid_latest_version": "",
|
||||
"update_not_available": "",
|
||||
"update_not_available": "إنك تقوم بتشغيل آخر نسخة مِن OnionShare.",
|
||||
"gui_tor_connection_ask": "",
|
||||
"gui_tor_connection_ask_open_settings": "ÙعÙ
,",
|
||||
"gui_tor_connection_ask_quit": "خروج",
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_tor_connection_lost": "غير متصل بشبكة تور.",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "استخدم العناوين الموروثة",
|
||||
"gui_save_private_key_checkbox": "استخدم عنوانا ثابتا",
|
||||
"gui_share_url_description": "",
|
||||
"gui_receive_url_description": "",
|
||||
"gui_url_label_persistent": "",
|
||||
"gui_url_label_stay_open": "",
|
||||
"gui_url_label_onetime": "",
|
||||
"gui_url_label_onetime_and_persistent": "",
|
||||
"gui_status_indicator_share_stopped": "",
|
||||
"gui_status_indicator_share_working": "",
|
||||
"gui_status_indicator_share_started": "",
|
||||
"gui_status_indicator_receive_stopped": "",
|
||||
"gui_status_indicator_receive_working": "",
|
||||
"gui_status_indicator_share_stopped": "جاهز للمشاركة",
|
||||
"gui_status_indicator_share_working": "يبدأ…",
|
||||
"gui_status_indicator_share_started": "المشاركة جارية",
|
||||
"gui_status_indicator_receive_stopped": "جاهز للتلقي",
|
||||
"gui_status_indicator_receive_working": "يبدأ…",
|
||||
"gui_status_indicator_receive_started": "جاري الإستلام",
|
||||
"gui_file_info": "",
|
||||
"gui_file_info_single": "",
|
||||
"gui_file_info": "{} ملفات، {}",
|
||||
"gui_file_info_single": "{} ملف، {}",
|
||||
"history_in_progress_tooltip": "",
|
||||
"history_completed_tooltip": "",
|
||||
"info_in_progress_uploads_tooltip": "",
|
||||
@ -159,17 +159,17 @@
|
||||
"receive_mode_warning": "",
|
||||
"gui_receive_mode_warning": "",
|
||||
"receive_mode_upload_starting": "",
|
||||
"receive_mode_received_file": "",
|
||||
"gui_mode_share_button": "",
|
||||
"gui_mode_receive_button": "",
|
||||
"gui_settings_receiving_label": "",
|
||||
"receive_mode_received_file": "تم تلقي: {}",
|
||||
"gui_mode_share_button": "مشاركة الملفات",
|
||||
"gui_mode_receive_button": "تلقّي ملفات",
|
||||
"gui_settings_receiving_label": "إعدادات الاستلام",
|
||||
"gui_settings_downloads_label": "",
|
||||
"gui_settings_downloads_button": "استعراض",
|
||||
"gui_settings_receive_allow_receiver_shutdown_checkbox": "",
|
||||
"gui_settings_public_mode_checkbox": "",
|
||||
"gui_settings_public_mode_checkbox": "الوضع العام",
|
||||
"systray_close_server_title": "",
|
||||
"systray_close_server_message": "",
|
||||
"systray_page_loaded_title": "",
|
||||
"systray_page_loaded_title": "تم تحميل الصفحة",
|
||||
"systray_download_page_loaded_message": "",
|
||||
"systray_upload_page_loaded_message": "",
|
||||
"gui_uploads": "",
|
||||
@ -180,7 +180,28 @@
|
||||
"gui_upload_finished": "",
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "",
|
||||
"gui_settings_language_label": "",
|
||||
"gui_settings_language_label": "اللغة المفضلة",
|
||||
"gui_settings_language_changed_notice": "",
|
||||
"timeout_upload_still_running": "انتظار اكتمال الرفع"
|
||||
"timeout_upload_still_running": "انتظار اكتمال الرفع",
|
||||
"gui_add_files": "إضافة ملفات",
|
||||
"gui_add_folder": "إضافة مجلد",
|
||||
"gui_settings_onion_label": "إعدادات البصل",
|
||||
"gui_connect_to_tor_for_onion_settings": "اربط الاتصال بشبكة تور لترى إعدادات خدمة البصل",
|
||||
"gui_settings_data_dir_label": "حفظ الملفات على",
|
||||
"gui_settings_data_dir_browse_button": "تصفح",
|
||||
"systray_page_loaded_message": "تم تحميل عنوان OnionShare",
|
||||
"systray_share_started_title": "بدأت المشاركة",
|
||||
"systray_share_started_message": "بدأت عملية إرسال الملفات إلى شخص ما",
|
||||
"systray_share_completed_title": "اكتملت المشاركة",
|
||||
"systray_share_completed_message": "انتهت عملية إرسال الملفات",
|
||||
"systray_share_canceled_title": "ألغيت المشاركة",
|
||||
"systray_share_canceled_message": "شخص ما ألغى استقبال ملفاتك",
|
||||
"systray_receive_started_title": "جاري الاستلام",
|
||||
"systray_receive_started_message": "شخص ما يرسل لك ملفات",
|
||||
"gui_all_modes_history": "السجل الزمني",
|
||||
"gui_all_modes_clear_history": "مسح الكل",
|
||||
"gui_share_mode_no_files": "لم ترسل أية ملفات بعد",
|
||||
"gui_share_mode_autostop_timer_waiting": "في انتظار الانتهاء من الإرسال",
|
||||
"gui_receive_mode_no_files": "لم تتلق أية ملفات بعد",
|
||||
"gui_receive_mode_autostop_timer_waiting": "في انتظار الانتهاء من الاستلام"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s) не е четаем файл.",
|
||||
"no_available_port": "Свободен порт не бе намерен, за да може onion услугата да бъде стартирана",
|
||||
"other_page_loaded": "Адресът е зареден",
|
||||
"close_on_timeout": "Спряно, защото автоматично спиращият таймер приключи",
|
||||
"close_on_autostop_timer": "Спряно, защото автоматично спиращият таймер приключи",
|
||||
"closing_automatically": "Спряно, защото свалянето приключи",
|
||||
"timeout_download_still_running": "Изчакване на свалянето да приключи",
|
||||
"timeout_upload_still_running": "Изчакване ъплоудът да приключи",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "Ползвател започна да ъплоудва файлове на компютъра Ви",
|
||||
"help_local_only": "Не използвайте Тор (само за разработване)",
|
||||
"help_stay_open": "Продължи споделянето след първото изтегляне",
|
||||
"help_shutdown_timeout": "Спри споделянето след дадено количество секунди",
|
||||
"help_autostop_timer": "Спри споделянето след дадено количество секунди",
|
||||
"help_stealth": "Използвай клиент авторизация (напреднал)",
|
||||
"help_receive": "Получаване на дялове вместо изпращане",
|
||||
"help_debug": "Протоколирай OnionShare грешки на stdout и уеб грешки на диск",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "Изберете",
|
||||
"gui_share_start_server": "Започнете споделянето",
|
||||
"gui_share_stop_server": "Спрете споделянето",
|
||||
"gui_share_stop_server_shutdown_timeout": "Спрете споделянето ({} остават)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Автоматично спиращият таймерът терминира в {}",
|
||||
"gui_share_stop_server_autostop_timer": "Спрете споделянето ({} остават)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Автоматично спиращият таймерът терминира в {}",
|
||||
"gui_receive_start_server": "Стартирайте получаващ режим",
|
||||
"gui_receive_stop_server": "Спрете получаващия режим",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Спрете получаващия режим ({} остават)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Автоматично спиращият таймер спира в {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Спрете получаващия режим ({} остават)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Автоматично спиращият таймер спира в {}",
|
||||
"gui_copy_url": "Копирайте адрес",
|
||||
"gui_copy_hidservauth": "Копирайте HidServAuth",
|
||||
"gui_downloads": "Свалете история",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "Запазване",
|
||||
"gui_settings_button_cancel": "Отказ",
|
||||
"gui_settings_button_help": "Помощ",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Използвайте автоматично спиращия таймер",
|
||||
"gui_settings_shutdown_timeout": "Спри дела на:",
|
||||
"gui_settings_autostop_timer_checkbox": "Използвайте автоматично спиращия таймер",
|
||||
"gui_settings_autostop_timer": "Спри дела на:",
|
||||
"settings_error_unknown": "Не мога да се свържа с Тор контролера, защото Вашите настройки не правят смисъл.",
|
||||
"settings_error_automatic": "Не мога да се свържа с Тор контролера. Стартиран ли е Тор браузерът във фонов режим (достъпен от torproject. org)?",
|
||||
"settings_error_socket_port": "Не мога да се свържа с Тор контролера в {}:{}.",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "Опитайте се да промените в настройките как OnionShare се свързва с Тор.",
|
||||
"gui_tor_connection_canceled": "Не може да се установи връзка с Тор.\n\nУверете се, че имате връзка с интернтет, след което отново отворете OnionShare и пренастройте връзката с Тор.",
|
||||
"gui_tor_connection_lost": "Връзката с Тор е прекъсната.",
|
||||
"gui_server_started_after_timeout": "Автоматично спиращият таймер спря преди сървърът да стартира.\nМоля направете нов дял.",
|
||||
"gui_server_timeout_expired": "Автоматично спиращият таймер спря.\nМоля актуализирайте за да започнете споделяне.",
|
||||
"gui_server_started_after_autostop_timer": "Автоматично спиращият таймер спря преди сървърът да стартира.\nМоля направете нов дял.",
|
||||
"gui_server_autostop_timer_expired": "Автоматично спиращият таймер спря.\nМоля актуализирайте за да започнете споделяне.",
|
||||
"share_via_onionshare": "Споделете го чрез OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Използвайте стари адреси",
|
||||
"gui_save_private_key_checkbox": "Използвайте постоянни адреси (стари)",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} ফাইলটি পড়া যাচ্ছে না।",
|
||||
"no_available_port": "Onion সার্ভিস চালু করার জন্য কোন পোর্ট পাওয়া যাচ্ছে না",
|
||||
"other_page_loaded": "এড্রেস লোড হয়েছে",
|
||||
"close_on_timeout": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ",
|
||||
"close_on_autostop_timer": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ",
|
||||
"closing_automatically": "ট্রান্সফার শেষ তাই থেমে যাওয়া হলো",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "Tor ব্যবহার করবে না (শুধুমাত্র ডেভেলপারদের জন্য)",
|
||||
"help_stay_open": "ফাইলগুলো পাঠানো হয়ে গেলেও শেয়ার করা থামিও না",
|
||||
"help_shutdown_timeout": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও",
|
||||
"help_autostop_timer": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও",
|
||||
"help_stealth": "ক্লায়েন্ট অনুমোদন ব্যবহার করুন (উন্নততর)",
|
||||
"help_receive": "কোনকিছু শেয়ার না করে শুধু গ্রহণ করবে",
|
||||
"help_debug": "OnionShare-এর এররগুলো stdout-এ দেখাও, আর ওয়েব এররগুলো ডিস্কে লগ করো",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "পছন্দ করুন",
|
||||
"gui_share_start_server": "শেয়ার করা শুরু করো",
|
||||
"gui_share_stop_server": "শেয়ার করা বন্ধ করো",
|
||||
"gui_share_stop_server_shutdown_timeout": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
|
||||
"gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন ",
|
||||
"gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন ",
|
||||
"gui_receive_stop_server_shutdown_timeout": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি) ",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
|
||||
"gui_share_stop_server_autostop_timer": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
|
||||
"gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন",
|
||||
"gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন",
|
||||
"gui_receive_stop_server_autostop_timer": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
|
||||
"gui_copy_url": "এড্রেস কপি করো",
|
||||
"gui_copy_hidservauth": "HidServAuth কপি করো",
|
||||
"gui_downloads": "",
|
||||
@ -105,71 +105,71 @@
|
||||
"gui_settings_button_save": "সেভ",
|
||||
"gui_settings_button_cancel": "বাতিল",
|
||||
"gui_settings_button_help": "সাহায্য",
|
||||
"gui_settings_shutdown_timeout_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
|
||||
"gui_settings_shutdown_timeout": "শেয়ার বন্ধ করুন:",
|
||||
"settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় । ",
|
||||
"gui_settings_autostop_timer_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
|
||||
"gui_settings_autostop_timer": "শেয়ার বন্ধ করুন:",
|
||||
"settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় ।",
|
||||
"settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন চলমান?",
|
||||
"settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না । ",
|
||||
"settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না । ",
|
||||
"settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়? ",
|
||||
"settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।",
|
||||
"settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না ।",
|
||||
"settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়?",
|
||||
"settings_error_missing_password": "টর কন্ট্রোলার সাথে সংযুক্ত, কিন্তু তা প্রমাণীকরণ একটি পাসওয়ার্ড প্রয়োজন.",
|
||||
"settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি। ",
|
||||
"settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি।",
|
||||
"settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি ব্যবহার করে উইন্ডোজ বা ম্যাকোসে ডেভেলপার মোডে কাজ করে না।",
|
||||
"settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো আপনি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা একটি ভুল সিস্টেম ঘড়ি আছে?",
|
||||
"settings_error_bundled_tor_broken": "ব্যাকগ্রাউন্ডে OnionShare টর এর সাথে সংযুক্ত নয়:\n\n\n{}",
|
||||
"settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\n\nOnion Services সেবা সমর্থন করে: {}.\n\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\n\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} । ",
|
||||
"error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {} ",
|
||||
"settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\nOnion Services সেবা সমর্থন করে: {}.\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} ।",
|
||||
"error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {}",
|
||||
"error_tor_protocol_error_unknown": "টর-এ একটি অজানা ত্রুটি আছে",
|
||||
"error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত ",
|
||||
"connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে ",
|
||||
"update_available": "",
|
||||
"update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '...",
|
||||
"error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত",
|
||||
"connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে",
|
||||
"update_available": "নতুন OnionShare বের হয়েছে । এটি পেতে এখানে <a href='{}'>ক্লিক করুন</a> । <br><br>আপনি {} এবং সাম্প্রতিকতম {} ব্যবহার করছেন ।",
|
||||
"update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '…",
|
||||
"update_error_invalid_latest_version": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: হয়তো আপনি টর-এর সাথে সংযুক্ত নন, অথবা OnionShare ওয়েবসাইট বন্ধ আছে?",
|
||||
"update_not_available": "আপনি সর্বশেষ OnionShare চালাচ্ছেন ।",
|
||||
"gui_tor_connection_ask": "টর থেকে সংযোগ সাজাতে সেটিংস খুলুন?",
|
||||
"gui_tor_connection_ask_open_settings": "হ্যাঁ",
|
||||
"gui_tor_connection_ask_quit": "প্রস্থান করুন",
|
||||
"gui_tor_connection_error_settings": " কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
|
||||
"gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন । ",
|
||||
"gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন । ",
|
||||
"gui_server_started_after_timeout": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন. ",
|
||||
"gui_server_timeout_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন. ",
|
||||
"share_via_onionshare": "এটি OnionShare ",
|
||||
"gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন ",
|
||||
"gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন ",
|
||||
"gui_share_url_description": "",
|
||||
"gui_receive_url_description": "",
|
||||
"gui_url_label_persistent": "",
|
||||
"gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না । ",
|
||||
"gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে. ",
|
||||
"gui_url_label_onetime_and_persistent": "",
|
||||
"gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত ",
|
||||
"gui_status_indicator_share_working": "শুরু...",
|
||||
"gui_tor_connection_error_settings": "কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
|
||||
"gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন ।",
|
||||
"gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন ।",
|
||||
"gui_server_started_after_autostop_timer": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন.",
|
||||
"gui_server_autostop_timer_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন.",
|
||||
"share_via_onionshare": "এটি OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন",
|
||||
"gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন",
|
||||
"gui_share_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার ফাইলগুলি <b>ডাউনলোড</b> করতে পারে:<img src='{}' />",
|
||||
"gui_receive_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার কম্পিউটারে ফাইলগুলি <b>আপলোড</b> করতে পারে:<img src='{}' />",
|
||||
"gui_url_label_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
|
||||
"gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।",
|
||||
"gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে.",
|
||||
"gui_url_label_onetime_and_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
|
||||
"gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত",
|
||||
"gui_status_indicator_share_working": "শুরু…",
|
||||
"gui_status_indicator_share_started": "শেয়ারিং",
|
||||
"gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত ",
|
||||
"gui_status_indicator_receive_working": "শুরু... ",
|
||||
"gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত",
|
||||
"gui_status_indicator_receive_working": "শুরু…",
|
||||
"gui_status_indicator_receive_started": "গ্রহণ",
|
||||
"gui_file_info": "{} ফাইল, {}",
|
||||
"gui_file_info_single": "{} ফাইল, {}",
|
||||
"history_in_progress_tooltip": "{} অগ্রসর হচ্ছে ",
|
||||
"history_completed_tooltip": "{} সম্পূর্ণ\n",
|
||||
"history_in_progress_tooltip": "{} অগ্রসর হচ্ছে",
|
||||
"history_completed_tooltip": "{} সম্পূর্ণ",
|
||||
"info_in_progress_uploads_tooltip": "",
|
||||
"info_completed_uploads_tooltip": "",
|
||||
"error_cannot_create_downloads_dir": "",
|
||||
"receive_mode_downloads_dir": "",
|
||||
"receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস । ",
|
||||
"receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।",
|
||||
"gui_receive_mode_warning": "গ্রহণ মোডে লোকজন আপনার কম্পিউটারে ফাইলগুলো আপলোড করতে দেয় । <br><br><b>আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।</b>",
|
||||
"receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে ",
|
||||
"receive_mode_received_file": "প্রাপ্ত: {} ",
|
||||
"gui_mode_share_button": "ফাইলগুলো শেয়ার করুন ",
|
||||
"gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে ",
|
||||
"gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে ",
|
||||
"receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে",
|
||||
"receive_mode_received_file": "প্রাপ্ত: {}",
|
||||
"gui_mode_share_button": "ফাইলগুলো শেয়ার করুন",
|
||||
"gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে",
|
||||
"gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে",
|
||||
"gui_settings_downloads_label": "",
|
||||
"gui_settings_downloads_button": "দেখা",
|
||||
"gui_settings_public_mode_checkbox": "সর্বজনীন মোড ",
|
||||
"gui_settings_public_mode_checkbox": "সর্বজনীন মোড",
|
||||
"systray_close_server_title": "",
|
||||
"systray_close_server_message": "",
|
||||
"systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে ",
|
||||
"systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে",
|
||||
"systray_download_page_loaded_message": "",
|
||||
"systray_upload_page_loaded_message": "",
|
||||
"gui_uploads": "",
|
||||
@ -179,18 +179,18 @@
|
||||
"gui_upload_finished_range": "",
|
||||
"gui_upload_finished": "",
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {} ",
|
||||
"gui_settings_language_label": "পছন্দনীয় ভাষা ",
|
||||
"gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন. ",
|
||||
"gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {}",
|
||||
"gui_settings_language_label": "পছন্দনীয় ভাষা",
|
||||
"gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন.",
|
||||
"gui_add_files": "ফাইল যোগ করো",
|
||||
"gui_add_folder": "ফোল্ডার যোগ করো",
|
||||
"gui_settings_onion_label": "Onion সেটিংস",
|
||||
"gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন ",
|
||||
"error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {} ",
|
||||
"receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {} ",
|
||||
"gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন ",
|
||||
"gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন",
|
||||
"error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {}",
|
||||
"receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {}",
|
||||
"gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন",
|
||||
"gui_settings_data_dir_browse_button": "ব্রাউজ",
|
||||
"systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে ",
|
||||
"systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে",
|
||||
"systray_share_started_title": "শেয়ারিং শুরু করা হয়েছে",
|
||||
"systray_share_completed_title": "শেয়ারিং সম্পূর্ণ হয়েছে",
|
||||
"systray_share_completed_message": "ফাইল পাঠানো শেষ হয়েছে",
|
||||
@ -200,5 +200,17 @@
|
||||
"systray_receive_started_message": "কেউ আপনার কাছে ফাইল পাঠাচ্ছে",
|
||||
"gui_all_modes_history": "ইতিহাস",
|
||||
"gui_all_modes_clear_history": "সব পরিষ্কার করুন",
|
||||
"gui_all_modes_transfer_started": "{} শুরু হয়েছে"
|
||||
"gui_all_modes_transfer_started": "{} শুরু হয়েছে",
|
||||
"systray_share_started_message": "কাউকে ফাইল পাঠাতে শুরু",
|
||||
"gui_all_modes_transfer_finished_range": "স্থানান্তরিত হয়েছে {} - {}",
|
||||
"gui_all_modes_transfer_finished": "স্থানান্তরিত {}",
|
||||
"gui_all_modes_transfer_canceled_range": "বাতিলকৃত {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "বাতিলকৃত {}",
|
||||
"gui_all_modes_progress_complete": "%p%, {0: সে} অতিক্রান্ত হয়েছে ।",
|
||||
"gui_all_modes_progress_starting": "{0:সে}, %p% (গণনা করা হচ্ছে)",
|
||||
"gui_all_modes_progress_eta": "{0:সে}, ইটিএ: {1: সে}, %p%",
|
||||
"gui_share_mode_no_files": "এখনও কোন ফাইল পাঠানো হয়নি",
|
||||
"gui_share_mode_autostop_timer_waiting": "প্রেরণ শেষ করার জন্য অপেক্ষা করছে",
|
||||
"gui_receive_mode_no_files": "কোন ফাইল এখনও প্রাপ্ত হয়নি",
|
||||
"gui_receive_mode_autostop_timer_waiting": "প্রাপ্তির শেষ পর্যন্ত অপেক্ষা করছে"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} no és un arxiu llegible.",
|
||||
"no_available_port": "No s'ha pogut trobar un port disponible per començar el servei onion",
|
||||
"other_page_loaded": "Adreça carregada",
|
||||
"close_on_timeout": "S'ha aturat perquè s'ha acabat el temps d'espera",
|
||||
"close_on_autostop_timer": "S'ha aturat perquè s'ha acabat el temps d'espera",
|
||||
"closing_automatically": "S'ha aturat perquè ha acabat la transferència",
|
||||
"timeout_download_still_running": "S'està esperant que acabi la descàrrega",
|
||||
"large_filesize": "Compte: La transferència d'arxius molt grans podria trigar hores",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "Algú ha començat a pujar arxius al teu ordinador",
|
||||
"help_local_only": "No facis servir Tor (només per a desenvolupament)",
|
||||
"help_stay_open": "Mantingues obert el servei després d'enviar els arxius",
|
||||
"help_shutdown_timeout": "Deixa de compartir al cap de tants segons",
|
||||
"help_autostop_timer": "Deixa de compartir al cap de tants segons",
|
||||
"help_stealth": "Fes servir autorització de client (avançat)",
|
||||
"help_receive": "Rep recursos en comptes d'enviar-los",
|
||||
"help_debug": "Envia els errors d'OnionShare a stdout i els errors web al disc",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Escull",
|
||||
"gui_share_start_server": "Comparteix",
|
||||
"gui_share_stop_server": "Deixa de compartir",
|
||||
"gui_share_stop_server_shutdown_timeout": "Deixa de compartir (queden {}s)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}",
|
||||
"gui_share_stop_server_autostop_timer": "Deixa de compartir (queden {}s)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
|
||||
"gui_receive_start_server": "Inicia en mode de recepció",
|
||||
"gui_receive_stop_server": "Atura el mode de recepció",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Atura el mode de recepció (queden {}s)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Atura el mode de recepció (queden {}s)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
|
||||
"gui_copy_url": "Copia l'adreça",
|
||||
"gui_copy_hidservauth": "Copia el HidServAuth",
|
||||
"gui_downloads": "Historial de descàrregues",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Desa",
|
||||
"gui_settings_button_cancel": "Canceŀla",
|
||||
"gui_settings_button_help": "Ajuda",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Posa un temporitzador d'aturada",
|
||||
"gui_settings_shutdown_timeout": "Atura a:",
|
||||
"gui_settings_autostop_timer_checkbox": "Posa un temporitzador d'aturada",
|
||||
"gui_settings_autostop_timer": "Atura a:",
|
||||
"settings_error_unknown": "No s'ha pogut connectar a Tor perquè la configuració és inconsistent.",
|
||||
"settings_error_automatic": "No s'ha pogut connectar al controlador de Tor. Tens el navegador de Tor arrencat? (el pots descarregar a torproject.org)",
|
||||
"settings_error_socket_port": "No s'ha pogut establir la connexió al controlador de Tor a {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "Prova de canviar la configuració de com OnionShare es connecta a la xarxa Tor.",
|
||||
"gui_tor_connection_canceled": "No s'ha pogut establir la connexió amb la xarxa Tor.\n\nAssegura't que tens connexió a internet, torna a obrir OnionShare i prepara la connexió a Tor.",
|
||||
"gui_tor_connection_lost": "S'ha perdut la connexió amb Tor.",
|
||||
"gui_server_started_after_timeout": "El temporitzador ha acabat abans que s'iniciés el servidor.\nTorna a compartir-ho.",
|
||||
"gui_server_timeout_expired": "El temporitzador ja s'ha acabat.\nReinicia'l per a poder compartir.",
|
||||
"gui_server_started_after_autostop_timer": "El temporitzador ha acabat abans que s'iniciés el servidor.\nTorna a compartir-ho.",
|
||||
"gui_server_autostop_timer_expired": "El temporitzador ja s'ha acabat.\nReinicia'l per a poder compartir.",
|
||||
"share_via_onionshare": "Comparteix-ho amb OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic",
|
||||
"gui_save_private_key_checkbox": "Fes servir una adreça persistent",
|
||||
@ -211,7 +211,7 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (s'està calculant)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, Temps aproximat: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Encara no s'han enviat fitxers",
|
||||
"gui_share_mode_timeout_waiting": "S'està acabant d'enviar",
|
||||
"gui_share_mode_autostop_timer_waiting": "S'està acabant d'enviar",
|
||||
"gui_receive_mode_no_files": "Encara no s'ha rebut res",
|
||||
"gui_receive_mode_timeout_waiting": "S'està acabant de rebre"
|
||||
"gui_receive_mode_autostop_timer_waiting": "S'està acabant de rebre"
|
||||
}
|
||||
|
@ -74,9 +74,9 @@
|
||||
"systray_download_canceled_message": "Uživatel přerušil stahování souboru",
|
||||
"systray_upload_started_title": "Začalo nahrávání pomocí OnionShare",
|
||||
"systray_upload_started_message": "Někdo právě začal nahrávat soubory na váš počítač",
|
||||
"gui_share_stop_server_shutdown_timeout": "Zastavit sdílení ({}s zbývá)",
|
||||
"gui_share_stop_server_autostop_timer": "Zastavit sdílení ({}s zbývá)",
|
||||
"gui_receive_start_server": "Spustit mód přijímání",
|
||||
"gui_receive_stop_server": "Zastavit přijímání",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Zastavit mód přijímání ({}s zbývá)",
|
||||
"gui_receive_stop_server_autostop_timer": "Zastavit mód přijímání ({}s zbývá)",
|
||||
"gui_copied_hidservauth_title": "Zkopírovaný HidServAuth token"
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
"not_a_readable_file": "{0:s} er ikke en læsbar fil.",
|
||||
"no_available_port": "Kunne ikke finde en tilgængelig port til at starte onion-tjenesten",
|
||||
"other_page_loaded": "Adresse indlæst",
|
||||
"close_on_timeout": "Stoppede fordi timer med autostop løb ud",
|
||||
"close_on_autostop_timer": "Stoppede fordi timer med autostop løb ud",
|
||||
"closing_automatically": "Stoppede fordi overførslen er færdig",
|
||||
"timeout_download_still_running": "Venter på at download skal blive færdig",
|
||||
"large_filesize": "Advarsel: Det kan tage timer at sende en stor deling",
|
||||
@ -21,7 +21,7 @@
|
||||
"systray_download_canceled_message": "Brugeren annullerede downloaden",
|
||||
"help_local_only": "Brug ikke Tor (kun til udvikling)",
|
||||
"help_stay_open": "Fortsæt deling efter filerne er blevet sendt",
|
||||
"help_shutdown_timeout": "Stop deling efter et vist antal sekunder",
|
||||
"help_autostop_timer": "Stop deling efter et vist antal sekunder",
|
||||
"help_stealth": "Brug klientautentifikation (avanceret)",
|
||||
"help_debug": "Log OnionShare-fejl til stdout, og webfejl til disk",
|
||||
"help_filename": "Liste over filer eller mapper som skal deles",
|
||||
@ -83,7 +83,7 @@
|
||||
"gui_settings_button_save": "Gem",
|
||||
"gui_settings_button_cancel": "Annuller",
|
||||
"gui_settings_button_help": "Hjælp",
|
||||
"gui_settings_shutdown_timeout": "Stop delingen ved:",
|
||||
"gui_settings_autostop_timer": "Stop delingen ved:",
|
||||
"settings_saved": "Indstillinger gemt til {}",
|
||||
"settings_error_unknown": "Kan ikke oprette forbindelse til Tor-kontroller da dine indstillingerne ikke giver mening.",
|
||||
"settings_error_automatic": "Kunne ikke oprette forbindelse til Tor-kontrolleren. Kører Tor Browser (tilgængelige fra torproject.org) i baggrunden?",
|
||||
@ -108,8 +108,8 @@
|
||||
"gui_tor_connection_error_settings": "Prøv at ændre måden hvorpå OnionShare opretter forbindelse til Tor-netværket, i indstillingerne.",
|
||||
"gui_tor_connection_canceled": "Kunne ikke oprette forbindelse til Tor.\n\nSørg for at du har forbindelse til internettet, og åbn herefter OnionShare igen for at opsætte dens forbindelse til Tor.",
|
||||
"gui_tor_connection_lost": "Der er ikke oprettet forbindelse til Tor.",
|
||||
"gui_server_started_after_timeout": "Timeren med autostop løb ud inden serveren startede.\nOpret venligst en ny deling.",
|
||||
"gui_server_timeout_expired": "Timeren med autostop er allerede løbet ud.\nOpdater den venligst for at starte deling.",
|
||||
"gui_server_started_after_autostop_timer": "Timeren med autostop løb ud inden serveren startede.\nOpret venligst en ny deling.",
|
||||
"gui_server_autostop_timer_expired": "Timeren med autostop er allerede løbet ud.\nOpdater den venligst for at starte deling.",
|
||||
"share_via_onionshare": "Del via OnionShare",
|
||||
"gui_save_private_key_checkbox": "Brug en vedvarende adresse",
|
||||
"gui_copied_url_title": "Kopierede OnionShare-adresse",
|
||||
@ -117,7 +117,7 @@
|
||||
"gui_quit_title": "Klap lige hesten",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Brug indbyggede meek_lite (Azure) udskiftelige transporter",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Brug indbyggede meek_lite (Azure) udskiftelige transporter (kræver obfs4proxy)",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Brug timer med autostop",
|
||||
"gui_settings_autostop_timer_checkbox": "Brug timer med autostop",
|
||||
"gui_url_label_persistent": "Delingen stopper ikke automatisk.<br><br>Hver efterfølgende deling bruger den samme adresse igen (hvis du vil bruge engangsadresser, så deaktivér \"Brug vedvarende adresse\", i indstillingerne).",
|
||||
"gui_url_label_stay_open": "Delingen stopper ikke automatisk.",
|
||||
"gui_url_label_onetime": "Delingen stopper efter den første download.",
|
||||
@ -131,17 +131,17 @@
|
||||
"systray_upload_started_title": "OnionShare-upload begyndte",
|
||||
"systray_upload_started_message": "En bruger begyndte at uploade filer til din computer",
|
||||
"help_receive": "Modtager aktier i stedet for at sende dem",
|
||||
"gui_share_stop_server_shutdown_timeout": "Stop deling ({}s tilbage)",
|
||||
"gui_share_stop_server_autostop_timer": "Stop deling ({}s tilbage)",
|
||||
"gui_receive_quit_warning": "Du er i færd med at modtage filer. Er du sikker på du ønsker at stoppe med at OnionShare?",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Hvad er dette?</a>",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Hvad er det?</a>",
|
||||
"gui_settings_general_label": "Generel opsætning",
|
||||
"gui_upload_in_progress": "Upload begyndte {}",
|
||||
"gui_download_in_progress": "Download begyndte {}",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Timer med autostop slutter ved {}",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Timer med autostop slutter ved {}",
|
||||
"gui_receive_start_server": "Start modtagetilstand",
|
||||
"gui_receive_stop_server": "Stop modtagetilstand",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stop modtagetilstand ({}s tilbage)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Timer med autostop slutter ved {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Stop modtagetilstand ({}s tilbage)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Timer med autostop slutter ved {}",
|
||||
"gui_no_downloads": "Ingen downloads endnu",
|
||||
"error_tor_protocol_error_unknown": "Der opstod en ukendt fejl med Tor",
|
||||
"error_invalid_private_key": "Den private nøgletype understøttes ikke",
|
||||
@ -211,9 +211,9 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (udregner)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, anslået ankomsttidspunkt: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Der er endnu ikke sendt nogen filer",
|
||||
"gui_share_mode_timeout_waiting": "Venter på at blive færdig med at sende",
|
||||
"gui_share_mode_autostop_timer_waiting": "Venter på at blive færdig med at sende",
|
||||
"gui_receive_mode_no_files": "Der er endnu ikke modtaget nogen filer",
|
||||
"gui_receive_mode_timeout_waiting": "Venter på at blive færdig med at modtage",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Venter på at blive færdig med at modtage",
|
||||
"gui_all_modes_transfer_canceled_range": "Annullerede {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Annullerede {}",
|
||||
"gui_settings_onion_label": "Onion-indstillinger"
|
||||
|
@ -7,7 +7,7 @@
|
||||
"closing_automatically": "Gestoppt, da der Download erfolgreich beendet wurde",
|
||||
"large_filesize": "Warnung: Das Hochladen von großen Dateien kann Stunden dauern",
|
||||
"help_local_only": "Tor nicht verwenden (nur für Entwicklung)",
|
||||
"help_stay_open": "Den OnionService nicht anhalten nachdem ein Download beendet wurde",
|
||||
"help_stay_open": "Den Server weiterlaufen lassen, nachdem die Dateien verschickt wurden",
|
||||
"help_debug": "Schreibe Fehler von OnionShare nach stdout und Webfehler auf die Festplatte",
|
||||
"help_filename": "Liste der zu teilenden Dateien oder Ordner",
|
||||
"gui_drag_and_drop": "Dateien und Ordner hierher ziehen\num sie zu teilen",
|
||||
@ -27,7 +27,7 @@
|
||||
"gui_settings_button_save": "Speichern",
|
||||
"gui_settings_button_cancel": "Abbrechen",
|
||||
"gui_settings_button_help": "Hilfe",
|
||||
"gui_settings_shutdown_timeout": "Stoppe den Server bei:",
|
||||
"gui_settings_autostop_timer": "Stoppe den Server bei:",
|
||||
"systray_download_started_title": "OnionShare Download begonnen",
|
||||
"systray_download_started_message": "Ein Nutzer hat begonnen, deine Dateien herunterzuladen",
|
||||
"systray_download_completed_title": "OnionShare Download beendet",
|
||||
@ -42,7 +42,7 @@
|
||||
"gui_settings_window_title": "Eintellungen",
|
||||
"gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}",
|
||||
"gui_settings_autoupdate_timestamp_never": "Niemals",
|
||||
"gui_settings_close_after_first_download_option": "Server nach dem ersten Download stoppen",
|
||||
"gui_settings_close_after_first_download_option": "Server nach Download der Dateien stoppen",
|
||||
"gui_settings_connection_type_label": "Wie soll sich OnionShare mit Tor verbinden?",
|
||||
"config_onion_service": "Richte den Onionservice auf Port {0:d} ein.",
|
||||
"give_this_url_stealth": "Gib dem Empfänger diese URL und die HidServAuth-Zeile:",
|
||||
@ -50,13 +50,13 @@
|
||||
"give_this_url_receive_stealth": "Gib diese URL und die HidServAuth-Zeile an den Sender:",
|
||||
"not_a_readable_file": "{0:s} kann nicht gelesen werden.",
|
||||
"no_available_port": "Es konnte kein freier Port gefunden werden, um den Onionservice zu starten",
|
||||
"close_on_timeout": "Angehalten da der auto-stop Timer abgelaufen ist",
|
||||
"close_on_autostop_timer": "Angehalten da der auto-stop Timer abgelaufen ist",
|
||||
"systray_upload_started_title": "OnionShare Upload wurde gestartet",
|
||||
"systray_upload_started_message": "Ein Benutzer hat begonnen, Dateien auf deinen Computer hochzuladen",
|
||||
"help_shutdown_timeout": "Den Server nach einer bestimmten Zeit anhalten (in Sekunden)",
|
||||
"help_autostop_timer": "Den Server nach einer bestimmten Zeit anhalten (in Sekunden)",
|
||||
"help_receive": "Empfange Dateien anstatt sie zu senden",
|
||||
"gui_share_stop_server_shutdown_timeout": "Server stoppen (läuft noch {} Sekunden)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Zeit läuft in {} Sekunden ab",
|
||||
"gui_share_stop_server_autostop_timer": "Server stoppen (läuft noch {} Sekunden)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Zeit läuft in {} Sekunden ab",
|
||||
"gui_settings_connection_type_control_port_option": "Verbinde über den control port",
|
||||
"gui_settings_connection_type_socket_file_option": "Verbinde über ein socket file",
|
||||
"gui_settings_control_port_label": "Control port",
|
||||
@ -70,7 +70,7 @@
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Benutze eingebaute meek_lite (Azure) pluggable transports (benötigt obfs4proxy)",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Benutze benutzerdefinierte bridges",
|
||||
"gui_settings_tor_bridges_custom_label": "Bridges findest du unter <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Stoppe nach einer bestimmten Zeit",
|
||||
"gui_settings_autostop_timer_checkbox": "Stoppe nach einer bestimmten Zeit",
|
||||
"settings_error_auth": "Mit {}:{} verbinden aber nicht authentifiziert. Eventuell handelt es sich nicht um einen Tor controller?",
|
||||
"settings_error_missing_password": "Mit dem Tor controller verbunden, aber er benötigt ein Passwort zur Authentifizierung.",
|
||||
"connecting_to_tor": "Verbinde mit dem Tornetzwerk",
|
||||
@ -79,8 +79,8 @@
|
||||
"help_stealth": "Nutze Klientauthorisierung (fortgeschritten)",
|
||||
"gui_receive_start_server": "Starte den Empfangsmodus",
|
||||
"gui_receive_stop_server": "Stoppe den Empfangsmodus",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stoppe den Empfängermodus (stoppt automatisch in {} Sekunden)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Zeit läuft in {} ab",
|
||||
"gui_receive_stop_server_autostop_timer": "Stoppe den Empfängermodus (stoppt automatisch in {} Sekunden)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Zeit läuft in {} ab",
|
||||
"gui_no_downloads": "Bisher keine Downloads",
|
||||
"gui_copied_url_title": "OnionShare-Adresse kopiert",
|
||||
"gui_copied_hidservauth": "HidServAuth-Zeile in die Zwischenablage kopiert",
|
||||
@ -174,8 +174,8 @@
|
||||
"gui_settings_stealth_hidservauth_string": "Da dein privater Schlüssel jetzt gespeichert wurde um ihn später erneut zu nutzen, kannst du jetzt\nklicken um deinen HidServAuth zu kopieren.",
|
||||
"gui_settings_connection_type_bundled_option": "Die integrierte Tor version von OnionShare nutzen",
|
||||
"settings_error_socket_file": "Kann nicht mittels des Tor Controller Socket {} verbinden.",
|
||||
"gui_server_started_after_timeout": "Die Zeit ist abgelaufen bevor der Server gestartet werden konnte.\nBitte erneut etwas teilen.",
|
||||
"gui_server_timeout_expired": "Der Timer ist bereits abgelaufen.\nBearbeite diesen um das Teilen zu starten.",
|
||||
"gui_server_started_after_autostop_timer": "Die Zeit ist abgelaufen bevor der Server gestartet werden konnte.\nBitte erneut etwas teilen.",
|
||||
"gui_server_autostop_timer_expired": "Der Timer ist bereits abgelaufen.\nBearbeite diesen um das Teilen zu starten.",
|
||||
"gui_status_indicator_share_stopped": "Bereit zum teilen",
|
||||
"history_in_progress_tooltip": "{} läuft",
|
||||
"receive_mode_upload_starting": "Hochladen von insgesamt {} beginnt",
|
||||
@ -197,5 +197,21 @@
|
||||
"systray_share_completed_title": "Freigabe erfolgt",
|
||||
"systray_share_completed_message": "Dateien erfolgreich versandt",
|
||||
"systray_share_canceled_title": "Freigabe abgebrochen",
|
||||
"systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen"
|
||||
"systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen",
|
||||
"systray_receive_started_title": "Empfange",
|
||||
"systray_receive_started_message": "Jemand sendet dir Dateien",
|
||||
"gui_all_modes_history": "Verlauf",
|
||||
"gui_all_modes_clear_history": "Alle löschen",
|
||||
"gui_all_modes_transfer_started": "{} gestartet",
|
||||
"gui_all_modes_transfer_finished_range": "{} - {} übertragen",
|
||||
"gui_all_modes_transfer_finished": "{} übertragen",
|
||||
"gui_all_modes_transfer_canceled_range": "{} - {} abgebrochen",
|
||||
"gui_all_modes_transfer_canceled": "{} abgebrochen",
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (berechne)",
|
||||
"gui_share_mode_no_files": "Bisher keine Dateien versendet",
|
||||
"gui_share_mode_autostop_timer_waiting": "Warte auf Abschluss der Sendung",
|
||||
"gui_receive_mode_no_files": "Bisher keine Dateien empfangen",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Warte auf Abschluss des Empfangs",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_all_modes_progress_complete": "%p%, {0:s} vergangen."
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "Το {0:s} δεν είναι αναγνώσιμο αρχείο.",
|
||||
"no_available_port": "Δεν βρέθηκε διαθέσιμη θύρα για να ξεκινήσει η υπηρεσία onion",
|
||||
"other_page_loaded": "Η διεύθυνση φορτώθηκε",
|
||||
"close_on_timeout": "Τερματίστηκε γιατί το χρονόμετρο τερματισμού έφτασε στο τέλος",
|
||||
"close_on_autostop_timer": "Τερματίστηκε γιατί το χρονόμετρο τερματισμού έφτασε στο τέλος",
|
||||
"closing_automatically": "Τερματίστηκε επειδή η λήψη ολοκληρώθηκε",
|
||||
"timeout_download_still_running": "Αναμονή ολοκλήρωσης της λήψης",
|
||||
"large_filesize": "Προειδοποίηση: Η αποστολή μεγάλου όγκου δεδομένων μπορεί να διαρκέσει ώρες",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "Ένας/μια χρήστης/τρια ξεκίνησε να ανεβάζει αρχεία στον υπολογιστή σου",
|
||||
"help_local_only": "Να μην χρησιμοποιηθεί το Tor (μόνο για development)",
|
||||
"help_stay_open": "Να συνεχίσει ο διαμοιρασμός μετά την αποστολή των αρχείων",
|
||||
"help_shutdown_timeout": "Να τερματιστεί ο διαμοιρασμός μετά από ένα συγκεκριμένο αριθμό δευτερολέπτων",
|
||||
"help_autostop_timer": "Να τερματιστεί ο διαμοιρασμός μετά από ένα συγκεκριμένο αριθμό δευτερολέπτων",
|
||||
"help_stealth": "Κάντε χρήση εξουσιοδότησης πελάτη (Για προχωρημένους)",
|
||||
"help_receive": "Λάβετε διαμοιρασμένα αρχεία αντι να τα στέλνετε",
|
||||
"help_debug": "Κατέγραψε τα σφάλματα του OnionShare στο stdout (συνήθως οθόνη) και τα σφάλματα web στον δίσκο",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Επιλογή",
|
||||
"gui_share_start_server": "Εκκίνηση μοιράσματος",
|
||||
"gui_share_stop_server": "Τερματισμός μοιράσματος",
|
||||
"gui_share_stop_server_shutdown_timeout": "Τερματισμός μοιράσματος (απομένουν {}\")",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
|
||||
"gui_share_stop_server_autostop_timer": "Τερματισμός μοιράσματος (απομένουν {}\")",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
|
||||
"gui_receive_start_server": "Εκκίνηση κατάστασης λήψης",
|
||||
"gui_receive_stop_server": "Τερματισμός κατάστασης λήψης",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Τερματισμός κατάστασης λήψης (υπολοίπονται {}\")",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Τερματισμός κατάστασης λήψης (υπολοίπονται {}\")",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
|
||||
"gui_copy_url": "Αντιγραφή διεύθυνσης",
|
||||
"gui_copy_hidservauth": "Αντιγραφή HidServAuth",
|
||||
"gui_downloads": "Ιστορικό Λήψεων",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Αποθήκευση",
|
||||
"gui_settings_button_cancel": "Ακύρωση",
|
||||
"gui_settings_button_help": "Βοήθεια",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Χρήση χρονομέτρου αυτόματου τερματισμού",
|
||||
"gui_settings_shutdown_timeout": "Τερματισμός της κοινοποίησης στα:",
|
||||
"gui_settings_autostop_timer_checkbox": "Χρήση χρονομέτρου αυτόματου τερματισμού",
|
||||
"gui_settings_autostop_timer": "Τερματισμός της κοινοποίησης στα:",
|
||||
"settings_error_unknown": "Αδύνατη η σύνδεση του ελέγχου Tor, καθώς οι ρυθμίσεις σας δεν έχουν κανένα νόημα.",
|
||||
"settings_error_automatic": "Είναι αδύνατη η σύνδεση στον έλεγχο του Tor. Λειτουργεί ο Tor Browser (διαθέσιμος στο torproject.org) στο παρασκήνιο?",
|
||||
"settings_error_socket_port": "Αδύνατη η σύνδεση στον έλεγχο Tor στις {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "Προσπαθήστε να αλλάξετε τον τρόπο σύνδεσης του OnionShare, με το δίκτυο Tor, από τις ρυθμίσεις.",
|
||||
"gui_tor_connection_canceled": "Δεν μπόρεσε να γίνει σύνδεση με Tor.\n\nΕλέγξτε ότι είστε συνδεδεμένοι στο Διαδίκτυο, επανεκινήστε το OnionShare και ρυθμίστε την σύνδεση με το Tor.",
|
||||
"gui_tor_connection_lost": "Εγινε αποσύνδεση απο το Tor.",
|
||||
"gui_server_started_after_timeout": "Η λειτουργία auto-stop τερματίστηκε πριν την εκκίνηση διακομιστή.\nΠαρακαλώ κάντε εναν νέο διαμοιρασμό.",
|
||||
"gui_server_timeout_expired": "Η λειτουργία auto-stop ήδη τερματίστηκε.\nΕνημερώστε την για να ξεκινήσετε τον διαμοιρασμό.",
|
||||
"gui_server_started_after_autostop_timer": "Η λειτουργία auto-stop τερματίστηκε πριν την εκκίνηση διακομιστή.\nΠαρακαλώ κάντε εναν νέο διαμοιρασμό.",
|
||||
"gui_server_autostop_timer_expired": "Η λειτουργία auto-stop ήδη τερματίστηκε.\nΕνημερώστε την για να ξεκινήσετε τον διαμοιρασμό.",
|
||||
"share_via_onionshare": "Κάντε το OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Χρηση \"παραδοσιακών\" διευθύνσεων",
|
||||
"gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης",
|
||||
@ -208,9 +208,9 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (γίνεται υπολογισμός)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, εκτίμηση: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Δεν Στάλθηκαν Αρχεία Ακόμα",
|
||||
"gui_share_mode_timeout_waiting": "Αναμένοντας την ολοκλήρωση αποστολής",
|
||||
"gui_share_mode_autostop_timer_waiting": "Αναμένοντας την ολοκλήρωση αποστολής",
|
||||
"gui_receive_mode_no_files": "Δεν Εγινε Καμμία Λήψη Αρχείων Ακόμα",
|
||||
"gui_receive_mode_timeout_waiting": "Αναμένοντας την ολοκλήρωση της λήψης",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Αναμένοντας την ολοκλήρωση της λήψης",
|
||||
"gui_settings_onion_label": "Ρυθμίσεις Onion",
|
||||
"gui_all_modes_transfer_canceled_range": "Ακυρώθηκε {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Ακυρώθηκε {}"
|
||||
|
@ -5,17 +5,24 @@
|
||||
"give_this_url_stealth": "Give this address and HidServAuth line to the recipient:",
|
||||
"give_this_url_receive": "Give this address to the sender:",
|
||||
"give_this_url_receive_stealth": "Give this address and HidServAuth to the sender:",
|
||||
"give_this_scheduled_url_share": "Give this address to your recipient, and tell them it won't be accessible until: {}",
|
||||
"give_this_scheduled_url_receive": "Give this address to your sender, and tell them it won't be accessible until: {}",
|
||||
"give_this_scheduled_url_share_stealth": "Give this address and HidServAuth line to your recipient, and tell them it won't be accessible until: {}",
|
||||
"give_this_scheduled_url_receive_stealth": "Give this address and HidServAuth lineto your sender, and tell them it won't be accessible until: {}",
|
||||
"server_started": "Server started",
|
||||
"ctrlc_to_stop": "Press Ctrl+C to stop the server",
|
||||
"not_a_file": "{0:s} is not a valid file.",
|
||||
"not_a_readable_file": "{0:s} is not a readable file.",
|
||||
"no_available_port": "Could not find an available port to start the onion service",
|
||||
"other_page_loaded": "Address loaded",
|
||||
"close_on_timeout": "Stopped because auto-stop timer ran out",
|
||||
"close_on_autostop_timer": "Stopped because auto-stop timer ran out",
|
||||
"closing_automatically": "Stopped because transfer is complete",
|
||||
"large_filesize": "Warning: Sending a large share could take hours",
|
||||
"help_local_only": "Don't use Tor (only for development)",
|
||||
"help_stay_open": "Continue sharing after files have been sent",
|
||||
"help_shutdown_timeout": "Stop sharing after a given amount of seconds",
|
||||
"help_autostart_timer": "Schedule this share to start N seconds from now",
|
||||
"help_autostop_timer": "Stop sharing after a given amount of seconds",
|
||||
"help_connect_timeout": "Give up connecting to Tor after a given amount of seconds (default: 120)",
|
||||
"help_stealth": "Use client authorization (advanced)",
|
||||
"help_receive": "Receive shares instead of sending them",
|
||||
"help_debug": "Log OnionShare errors to stdout, and web errors to disk",
|
||||
@ -29,12 +36,12 @@
|
||||
"gui_choose_items": "Choose",
|
||||
"gui_share_start_server": "Start sharing",
|
||||
"gui_share_stop_server": "Stop sharing",
|
||||
"gui_share_stop_server_shutdown_timeout": "Stop Sharing ({}s remaining)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}",
|
||||
"gui_share_stop_server_autostop_timer": "Stop Sharing ({})",
|
||||
"gui_stop_server_autostop_timer_tooltip": "Auto-stop timer ends at {}",
|
||||
"gui_start_server_autostart_timer_tooltip": "Auto-start timer ends at {}",
|
||||
"gui_receive_start_server": "Start Receive Mode",
|
||||
"gui_receive_stop_server": "Stop Receive Mode",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stop Receive Mode ({}s remaining)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({}s remaining)",
|
||||
"gui_copy_url": "Copy Address",
|
||||
"gui_copy_hidservauth": "Copy HidServAuth",
|
||||
"gui_canceled": "Canceled",
|
||||
@ -42,6 +49,7 @@
|
||||
"gui_copied_url": "OnionShare address copied to clipboard",
|
||||
"gui_copied_hidservauth_title": "Copied HidServAuth",
|
||||
"gui_copied_hidservauth": "HidServAuth line copied to clipboard",
|
||||
"gui_waiting_to_start": "Scheduled to start in {}. Click to cancel.",
|
||||
"gui_please_wait": "Starting… Click to cancel.",
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "Not so fast",
|
||||
@ -92,8 +100,10 @@
|
||||
"gui_settings_button_save": "Save",
|
||||
"gui_settings_button_cancel": "Cancel",
|
||||
"gui_settings_button_help": "Help",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Use auto-stop timer",
|
||||
"gui_settings_shutdown_timeout": "Stop the share at:",
|
||||
"gui_settings_autostop_timer_checkbox": "Use auto-stop timer",
|
||||
"gui_settings_autostop_timer": "Stop the share at:",
|
||||
"gui_settings_autostart_timer_checkbox": "Use auto-start timer",
|
||||
"gui_settings_autostart_timer": "Start the share at:",
|
||||
"settings_error_unknown": "Can't connect to Tor controller because your settings don't make sense.",
|
||||
"settings_error_automatic": "Could not connect to the Tor controller. Is Tor Browser (available from torproject.org) running in the background?",
|
||||
"settings_error_socket_port": "Can't connect to the Tor controller at {}:{}.",
|
||||
@ -119,8 +129,10 @@
|
||||
"gui_tor_connection_error_settings": "Try changing how OnionShare connects to the Tor network in the settings.",
|
||||
"gui_tor_connection_canceled": "Could not connect to Tor.\n\nEnsure you are connected to the Internet, then re-open OnionShare and set up its connection to Tor.",
|
||||
"gui_tor_connection_lost": "Disconnected from Tor.",
|
||||
"gui_server_started_after_timeout": "The auto-stop timer ran out before the server started.\nPlease make a new share.",
|
||||
"gui_server_timeout_expired": "The auto-stop timer already ran out.\nPlease update it to start sharing.",
|
||||
"gui_server_started_after_autostop_timer": "The auto-stop timer ran out before the server started. Please make a new share.",
|
||||
"gui_server_autostop_timer_expired": "The auto-stop timer already ran out. Please update it to start sharing.",
|
||||
"gui_server_autostart_timer_expired": "The scheduled time has already passed. Please update it to start sharing.",
|
||||
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "The auto-stop time can't be the same or earlier than the auto-start time. Please update it to start sharing.",
|
||||
"share_via_onionshare": "OnionShare it",
|
||||
"gui_connect_to_tor_for_onion_settings": "Connect to Tor to see onion service settings",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses",
|
||||
@ -133,9 +145,11 @@
|
||||
"gui_url_label_onetime_and_persistent": "This share will not auto-stop.<br><br>Every subsequent share will reuse the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)",
|
||||
"gui_status_indicator_share_stopped": "Ready to share",
|
||||
"gui_status_indicator_share_working": "Starting…",
|
||||
"gui_status_indicator_share_scheduled": "Scheduled…",
|
||||
"gui_status_indicator_share_started": "Sharing",
|
||||
"gui_status_indicator_receive_stopped": "Ready to receive",
|
||||
"gui_status_indicator_receive_working": "Starting…",
|
||||
"gui_status_indicator_receive_scheduled": "Scheduled…",
|
||||
"gui_status_indicator_receive_started": "Receiving",
|
||||
"gui_file_info": "{} files, {}",
|
||||
"gui_file_info_single": "{} file, {}",
|
||||
@ -178,7 +192,12 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (calculating)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "No Files Sent Yet",
|
||||
"gui_share_mode_timeout_waiting": "Waiting to finish sending",
|
||||
"gui_share_mode_autostop_timer_waiting": "Waiting to finish sending",
|
||||
"gui_receive_mode_no_files": "No Files Received Yet",
|
||||
"gui_receive_mode_timeout_waiting": "Waiting to finish receiving"
|
||||
"gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving",
|
||||
"waiting_for_scheduled_time": "Waiting for the scheduled time before starting...",
|
||||
"days_first_letter": "d",
|
||||
"hours_first_letter": "h",
|
||||
"minutes_first_letter": "m",
|
||||
"seconds_first_letter": "s"
|
||||
}
|
||||
|
@ -21,10 +21,10 @@
|
||||
"config_onion_service": "Configurando el servicio cebolla en el puerto {0:d}.",
|
||||
"give_this_url_stealth": "Dale esta dirección y la línea de HidServAuth a la persona a la que le estás enviando el archivo:",
|
||||
"no_available_port": "No se pudo iniciar el servicio cebolla porque no había puerto disponible",
|
||||
"close_on_timeout": "Parado porque el temporizador expiró",
|
||||
"close_on_autostop_timer": "Parado porque el temporizador expiró",
|
||||
"timeout_download_still_running": "Esperando a que se complete la descarga",
|
||||
"large_filesize": "Advertencia: Enviar un archivo tan grande podría llevar horas",
|
||||
"help_shutdown_timeout": "Dejar de compartir después de una determinada cantidad de segundos",
|
||||
"help_autostop_timer": "Dejar de compartir después de una determinada cantidad de segundos",
|
||||
"help_stealth": "Usar autorización de cliente (avanzada)",
|
||||
"help_config": "Ubicación del archivo de configuración JSON personalizado (opcional)",
|
||||
"gui_copied_url_title": "Dirección de OnionShare copiada",
|
||||
@ -60,12 +60,12 @@
|
||||
"systray_upload_started_title": "Subida OnionShare Iniciada",
|
||||
"systray_upload_started_message": "Un usuario comenzó a subir archivos a tu computadora",
|
||||
"help_receive": "Recibir recursos compartidos en lugar de enviarlos",
|
||||
"gui_share_stop_server_shutdown_timeout": "Dejar de Compartir ({}s restantes)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "El temporizador de parada automática termina en {}",
|
||||
"gui_share_stop_server_autostop_timer": "Dejar de Compartir ({}s restantes)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "El temporizador de parada automática termina en {}",
|
||||
"gui_receive_start_server": "Iniciar el modo de recepción",
|
||||
"gui_receive_stop_server": "Detener el modo de recepción",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Detener el modo de recepción ({}s restantes)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "El temporizador de parada automática termina en {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Detener el modo de recepción ({}s restantes)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "El temporizador de parada automática termina en {}",
|
||||
"gui_copy_hidservauth": "Copiar HidServAuth",
|
||||
"gui_no_downloads": "Ninguna Descarga Todavía",
|
||||
"gui_canceled": "Cancelado",
|
||||
@ -95,8 +95,8 @@
|
||||
"gui_tor_connection_error_settings": "Intenta cambiando la forma en que OnionShare se conecta a la red Tor en tu configuración.",
|
||||
"gui_tor_connection_canceled": "No se pudo conectar con Tor.\n\nAsegúrate de estar conectado a Internet, luego vuelve a abrir OnionShare y configurar tu conexión a Tor.",
|
||||
"gui_tor_connection_lost": "Desconectado de Tor.",
|
||||
"gui_server_started_after_timeout": "El temporizador de parada automática se agotó antes de que se iniciara el servidor.\nPor favor crea una nueva conexión compartida.",
|
||||
"gui_server_timeout_expired": "El temporizador de parada automática ya se ha agotado.\nPor favor, actualízalo para comenzar a compartir.",
|
||||
"gui_server_started_after_autostop_timer": "El temporizador de parada automática se agotó antes de que se iniciara el servidor.\nPor favor crea una nueva conexión compartida.",
|
||||
"gui_server_autostop_timer_expired": "El temporizador de parada automática ya se ha agotado.\nPor favor, actualízalo para comenzar a compartir.",
|
||||
"share_via_onionshare": "Compártelo con OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Usar direcciones antiguas",
|
||||
"gui_save_private_key_checkbox": "Usar una dirección persistente",
|
||||
@ -155,8 +155,8 @@
|
||||
"gui_settings_button_save": "Guardar",
|
||||
"gui_settings_button_cancel": "Cancelar",
|
||||
"gui_settings_button_help": "Ayuda",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Usar temporizador de parada automática",
|
||||
"gui_settings_shutdown_timeout": "Detener carpeta compartida en:",
|
||||
"gui_settings_autostop_timer_checkbox": "Usar temporizador de parada automática",
|
||||
"gui_settings_autostop_timer": "Detener carpeta compartida en:",
|
||||
"history_in_progress_tooltip": "{} en progreso",
|
||||
"history_completed_tooltip": "{} completado",
|
||||
"error_cannot_create_downloads_dir": "No se ha podido crear la carpeta en modo de recepción: {}",
|
||||
@ -212,9 +212,9 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (calculando)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, TEA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "No se enviaron archivos todavía",
|
||||
"gui_share_mode_timeout_waiting": "Esperando a que termine el envío",
|
||||
"gui_share_mode_autostop_timer_waiting": "Esperando a que termine el envío",
|
||||
"gui_receive_mode_no_files": "No se recibieron archivos todavía",
|
||||
"gui_receive_mode_timeout_waiting": "Esperando a que termine la recepción",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Esperando a que termine la recepción",
|
||||
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Cancelado {}",
|
||||
"gui_settings_onion_label": "Configuración de Onion"
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} قابل خواندن نمی باشد.",
|
||||
"no_available_port": "پورت قابل استفاده برای شروع سرویس onion پیدا نشد",
|
||||
"other_page_loaded": "آدرس بارگذاری شد",
|
||||
"close_on_timeout": "متوقف شد چون تایمر توقف خودکار به پایان رسید",
|
||||
"close_on_autostop_timer": "متوقف شد چون تایمر توقف خودکار به پایان رسید",
|
||||
"closing_automatically": "متوقف شد چون انتقال انجام شد",
|
||||
"timeout_download_still_running": "انتظار برای تکمیل دانلود",
|
||||
"large_filesize": "هشدار: یک اشتراک گذاری بزرگ ممکن است ساعت ها طول بکشد",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "یک کاربر شروع به آپلود فایل بر روی کامپیوتر شما کرده است",
|
||||
"help_local_only": "عدم استفاده از Tor (فقط برای توسعه)",
|
||||
"help_stay_open": "ادامه اشتراک گذاری پس از ارسال دانلود ها",
|
||||
"help_shutdown_timeout": "توقف به اشتراک گذاری پس از میزان ثانیه ای مشخص",
|
||||
"help_autostop_timer": "توقف به اشتراک گذاری پس از میزان ثانیه ای مشخص",
|
||||
"help_stealth": "استفاده از احراز هویت کلاینت (پیشرفته)",
|
||||
"help_receive": "دریافت اشتراک به جای ارسال آن",
|
||||
"help_debug": "لاگ کردن خطاهای OnionShare روی stdout، و خطاهای وب بر روی دیسک",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "انتخاب",
|
||||
"gui_share_start_server": "شروع اشتراک گذاری",
|
||||
"gui_share_stop_server": "توقف اشتراک گذاری",
|
||||
"gui_share_stop_server_shutdown_timeout": "توقف اشتراک گذاری ({} ثانیه باقیمانده)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "تایمر توقف خودکار در {} متوقف می شود",
|
||||
"gui_share_stop_server_autostop_timer": "توقف اشتراک گذاری ({} ثانیه باقیمانده)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "تایمر توقف خودکار در {} متوقف می شود",
|
||||
"gui_receive_start_server": "شروع حالت دریافت",
|
||||
"gui_receive_stop_server": "توقف حالت دریافت",
|
||||
"gui_receive_stop_server_shutdown_timeout": "توقف حالت دریافت ({} ثانیه باقیمانده)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "تایمر توقف خودکار در {} به پایان می رسد",
|
||||
"gui_receive_stop_server_autostop_timer": "توقف حالت دریافت ({} ثانیه باقیمانده)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "تایمر توقف خودکار در {} به پایان می رسد",
|
||||
"gui_copy_url": "کپی آدرس",
|
||||
"gui_copy_hidservauth": "کپی HidServAuth",
|
||||
"gui_downloads": "دانلود تاریخچه",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "ذخیره",
|
||||
"gui_settings_button_cancel": "لغو",
|
||||
"gui_settings_button_help": "راهنما",
|
||||
"gui_settings_shutdown_timeout_checkbox": "استفاده از تایمر توقف خودکار",
|
||||
"gui_settings_shutdown_timeout": "توقف اشتراک در:",
|
||||
"gui_settings_autostop_timer_checkbox": "استفاده از تایمر توقف خودکار",
|
||||
"gui_settings_autostop_timer": "توقف اشتراک در:",
|
||||
"settings_error_unknown": "ناتوانی در اتصال به کنترل کننده Tor بدلیل نامفهوم بودن تنظیمات.",
|
||||
"settings_error_automatic": "ناتوانی در اتصال به کنترل کننده Tor. آیا مرورگر Tor (در دسترس از طریق torproject.org) در پس زمینه در حال اجراست؟",
|
||||
"settings_error_socket_port": "ناتوانی در اتصال به کنترل کننده Tor در {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "تغییر نحوه اتصال OnionShare به شبکه Tor در تنظیمات.",
|
||||
"gui_tor_connection_canceled": "اتصال به Tor برقرار نشد.\n\nمطمئن شوید که به اینترنت متصل هستید، سپس OnionShare را دوباره باز کرده و اتصال آن را به Tor دوباره برقرار کنید.",
|
||||
"gui_tor_connection_lost": "اتصال با Tor قطع شده است.",
|
||||
"gui_server_started_after_timeout": "تایمر توقف خودکار قبل از آغاز سرور به پایان رسید.\nلطفا یک اشتراک جدید درست کنید.",
|
||||
"gui_server_timeout_expired": "تایمر توقف خودکار به پایان رسید.\nلطفا برای آغاز اشتراک گذاری آن را به روز رسانی کنید.",
|
||||
"gui_server_started_after_autostop_timer": "تایمر توقف خودکار قبل از آغاز سرور به پایان رسید.\nلطفا یک اشتراک جدید درست کنید.",
|
||||
"gui_server_autostop_timer_expired": "تایمر توقف خودکار به پایان رسید.\nلطفا برای آغاز اشتراک گذاری آن را به روز رسانی کنید.",
|
||||
"share_via_onionshare": "OnionShare کنید",
|
||||
"gui_use_legacy_v2_onions_checkbox": "استفاده از آدرس های بازمانده",
|
||||
"gui_save_private_key_checkbox": "استفاده از یک آدرس پایا",
|
||||
@ -208,9 +208,9 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (در حال محاسبه)",
|
||||
"gui_all_modes_progress_eta": "{0:s}، تخمین: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "هیچ فایلی هنوز ارسال نشده است",
|
||||
"gui_share_mode_timeout_waiting": "انتظار برای به پایان رسیدن ارسال",
|
||||
"gui_share_mode_autostop_timer_waiting": "انتظار برای به پایان رسیدن ارسال",
|
||||
"gui_receive_mode_no_files": "هیچ فایلی هنوز دریافت نشده است",
|
||||
"gui_receive_mode_timeout_waiting": "انتظار برای به پایان رسیدن دریافت",
|
||||
"gui_receive_mode_autostop_timer_waiting": "انتظار برای به پایان رسیدن دریافت",
|
||||
"gui_all_modes_transfer_canceled_range": "{} - {} لغو شد",
|
||||
"gui_all_modes_transfer_canceled": "{} لغو شد"
|
||||
}
|
||||
|
@ -1,25 +1,185 @@
|
||||
{
|
||||
"preparing_files": "Valmistellaan tiedostoja jaettavaksi.",
|
||||
"preparing_files": "Pakataan tiedostoja.",
|
||||
"give_this_url": "Anna tämä URL-osoite vastaanottajalle:",
|
||||
"ctrlc_to_stop": "Näppäin Ctrl-C pysäyttää palvelimen",
|
||||
"ctrlc_to_stop": "Pysäytä palvelin painamalla Ctrl+C",
|
||||
"not_a_file": "{0:s} Ei ole tiedosto.",
|
||||
"other_page_loaded": "URL-osoite ladattu",
|
||||
"closing_automatically": "Lataus valmis. Suljetaan automaattisesti",
|
||||
"large_filesize": "Varoitus: Isojen tiedostojen lähetys saattaa kestää tunteja",
|
||||
"help_local_only": "Älä käytä Toria: vain ohjelmakehitykseen",
|
||||
"help_stay_open": "Pidä piilopalvelu käynnissä latauksen jälkeen.",
|
||||
"help_debug": "Tallentaa virheet levylle",
|
||||
"closing_automatically": "Lähetys valmis. Suljetaan automaattisesti",
|
||||
"large_filesize": "Varoitus: Ison tiedoston lähetys saattaa kestää tunteja",
|
||||
"help_local_only": "Älä käytä Toria (vain kehitykseen)",
|
||||
"help_stay_open": "Jatka jakoa tiedostojen lähetyksen jälkeen",
|
||||
"help_debug": "Kirjaa OnionShare virheet stdout:tiin, ja verkko virheet levylle",
|
||||
"help_filename": "Luettele jaettavat tiedostot tai kansiot",
|
||||
"gui_drag_and_drop": "Vedä ja pudota\ntiedostot tänne",
|
||||
"gui_add": "Lisää",
|
||||
"gui_delete": "Poista",
|
||||
"gui_choose_items": "Valitse",
|
||||
"gui_share_start_server": "Käynnistä palvelin",
|
||||
"gui_share_stop_server": "Pysäytä palvelin",
|
||||
"gui_share_start_server": "Aloita jakaminen",
|
||||
"gui_share_stop_server": "Pysäytä jakaminen",
|
||||
"gui_copy_url": "Kopioi URL-osoite",
|
||||
"gui_downloads": "Lataukset:",
|
||||
"gui_canceled": "Peruutettu",
|
||||
"gui_copied_url": "URL-osoite kopioitu leikepöydälle",
|
||||
"gui_please_wait": "Odota...",
|
||||
"zip_progress_bar_format": "Tiivistän tiedostoja: %p%"
|
||||
"gui_copied_url": "OnionShare-osoite kopioitu leikepöydälle",
|
||||
"gui_please_wait": "Käynnistyy... Peruuta napsauttamalla.",
|
||||
"zip_progress_bar_format": "Pakataan: %p%",
|
||||
"config_onion_service": "Onion-palvelua asetetaan porttiin {0:d}.",
|
||||
"give_this_url_stealth": "Anna tämä osoite ja HidServAuth rivi vastaanottajalle:",
|
||||
"give_this_url_receive": "Anna tämä osoite lähettäjälle:",
|
||||
"give_this_url_receive_stealth": "Anna tämä osoite ja HidServAuth lähettäjälle:",
|
||||
"not_a_readable_file": "{0:s} ei ole luettava tiedosto.",
|
||||
"no_available_port": "Vapaata porttia onion palvelulle ei löydetty",
|
||||
"close_on_autostop_timer": "Pysäytetty koska auto-stop ajastin loppui",
|
||||
"help_autostop_timer": "Lopeta jakaminen annetun sekunnin kuluttua",
|
||||
"help_stealth": "Käytä asiakasvaltuutusta (edistynyt)",
|
||||
"help_receive": "Vastaanota osia niiden lähettämisen sijaan",
|
||||
"help_config": "Mukautettu JSON-määritystiedoston sijainti (valinnainen)",
|
||||
"gui_add_files": "Lisää tiedostoja",
|
||||
"gui_add_folder": "Lisää kansio",
|
||||
"gui_share_stop_server_autostop_timer": "Lopeta jakaminen({}s jäljellä)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Auto-stop ajastin loppuu {} jälkeen",
|
||||
"gui_receive_start_server": "Aloita vastaanotto tila",
|
||||
"gui_receive_stop_server": "Lopeta vastaanotto tila",
|
||||
"gui_receive_stop_server_autostop_timer": "Lopeta vastaanotto tila ({}s jäljellä)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop ajastin loppuu kello {}",
|
||||
"gui_copy_hidservauth": "Kopioi HidServAuth",
|
||||
"gui_copied_url_title": "Kopioi OnionShare osoite",
|
||||
"gui_copied_hidservauth_title": "HidServAuth kopioitu",
|
||||
"gui_copied_hidservauth": "HidServAuth rivi kopioitu leikepöydälle",
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "Ei niin nopeasti",
|
||||
"gui_share_quit_warning": "Olet lähettämässä tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
|
||||
"gui_receive_quit_warning": "Olet vastaanottamassa tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
|
||||
"gui_quit_warning_quit": "Lopeta",
|
||||
"gui_quit_warning_dont_quit": "Peruuta",
|
||||
"error_rate_limit": "Joku on tehnyt liian monta väärää yritystä osoitteeseesi, mikä tarkoittaa, että he voisivat yrittää arvata sitä, joten OnionShare on pysäyttänyt palvelimen. Aloita jakaminen uudelleen ja lähetä vastaanottajalle uusi osoite jatkaaksesi.",
|
||||
"error_stealth_not_supported": "Asiakasvaltuuden käyttämiseen tarvitaan ainakin Tor 0.2.9.1-alpha (tai Tor Browser 6.5) ja python3-stem 1.5.0.",
|
||||
"error_ephemeral_not_supported": "OnionSharen käyttö vaatii ainakin Tor 0.2.7.1 ja python3-stem 1.4.0.",
|
||||
"gui_settings_window_title": "Asetukset",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Mikä tämä on?</a>",
|
||||
"gui_settings_stealth_option": "Käytä asiakaslupaa",
|
||||
"gui_settings_stealth_hidservauth_string": "Nyt kun olet tallentanut yksityisen avaimesi uudelleenkäyttöä varten, voit kopioida HidServAuth-osoitteesi napista.",
|
||||
"gui_settings_autoupdate_label": "Tarkista päivitykset",
|
||||
"gui_settings_autoupdate_option": "Ilmoita minulle, kun uusi versio on saatavilla",
|
||||
"gui_settings_autoupdate_timestamp": "Viimeksi tarkistettu: {}",
|
||||
"gui_settings_autoupdate_timestamp_never": "ei koskaan",
|
||||
"gui_settings_autoupdate_check_button": "Tarkista päivitykset",
|
||||
"gui_settings_general_label": "Yleiset asetukset",
|
||||
"gui_settings_onion_label": "Onion asetukset",
|
||||
"gui_settings_sharing_label": "Jako asetukset",
|
||||
"gui_settings_close_after_first_download_option": "Lopeta jakaminen tiedostojen lähetyksen jälkeen",
|
||||
"gui_settings_connection_type_label": "Miten OnionSharen kuuluisi yhdistää Tor:iin?",
|
||||
"gui_settings_connection_type_bundled_option": "Käytä OnionShareen sisäänrakennettua Tor versiota",
|
||||
"gui_settings_connection_type_automatic_option": "Kokeile automaattista konfigurointia Tor-selaimella",
|
||||
"gui_settings_connection_type_control_port_option": "Yhdistä käyttämällä control porttia",
|
||||
"gui_settings_connection_type_socket_file_option": "Yhdistä käyttäen socket tiedostoa",
|
||||
"gui_settings_connection_type_test_button": "Testaa Tor yhteyttä",
|
||||
"gui_settings_control_port_label": "Control port",
|
||||
"gui_settings_socket_file_label": "Socket tiedosto",
|
||||
"gui_settings_socks_label": "SOCKS portti",
|
||||
"gui_settings_authenticate_label": "Tor todennus asetukset",
|
||||
"gui_settings_authenticate_no_auth_option": "Ei todentamista, tai evästeiden todentamista",
|
||||
"gui_settings_authenticate_password_option": "Salasana",
|
||||
"gui_settings_password_label": "Salasana",
|
||||
"gui_settings_tor_bridges": "Tor silta-solmu tuki",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Älä käytä silta-solmuja",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Varoitus: Meek_lite-sillat ovat Tor-projektille erittäin kalliita. <br><br> Käytä niitä vain, jos et pysty muodostamaan yhteyttä suoraan Toriin, obfs4-kuljetusten tai muiden tavallisten silta-solmujen kautta.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Käytä mukautettuja silta-solmuja",
|
||||
"gui_settings_tor_bridges_custom_label": "Löydät silta-solmut osoitteesta <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Mikään lisäämistäsi silta-solmuista ei toiminut\nUudellen tarkista ne tai lisää muita.",
|
||||
"gui_settings_button_save": "Tallenna",
|
||||
"gui_settings_button_cancel": "Peruuttaa",
|
||||
"gui_settings_button_help": "Apua",
|
||||
"gui_settings_autostop_timer_checkbox": "Käytä auto-stop ajastinta",
|
||||
"gui_settings_autostop_timer": "Lopeta jakaminen kello:",
|
||||
"settings_error_unknown": "Ei voi muodostaa yhteyttä Tor-ohjaimeen, koska asetuksesi eivät ole järkeviä.",
|
||||
"settings_error_automatic": "Tor-ohjaimeen ei voitu muodostaa yhteyttä. Onko Tor Browser (saatavilla osoitteesta torproject.org) avoimena taustalla?",
|
||||
"settings_error_socket_port": "Ei voi muodostaa yhteyttä Tor-ohjaimeen: {}:{}.",
|
||||
"settings_error_socket_file": "Ei voi muodostaa yhteyttä Tor-ohjaimeen käyttämällä socket-tiedostoa {}.",
|
||||
"settings_error_auth": "Yhdistetty osoitteeseen {}:{}, mutta ei voida todentaa. Ehkä tämä ei ole Tor ohjain?",
|
||||
"settings_error_missing_password": "Yhdistetty Tor ohjaimeen, mutta se vaatii salasanan todentamiseen.",
|
||||
"settings_error_unreadable_cookie_file": "Yhdistetty tor ohjaimeen, mutta salasana saattaa olla väärä, tai käyttäjä ei saa lukea evästetiedostoa.",
|
||||
"settings_error_bundled_tor_not_supported": "OnionSharen mukana tulevan Tor version käyttäminen ei toimi Developer-tilassa Windowsissa tai MacOSissa.",
|
||||
"settings_error_bundled_tor_timeout": "Yhdistäminen Tor:iin kestää lian kauan. Ehkä et ole yhteydessä nettiin, tai järjestelmäsi kello on epätarkka?",
|
||||
"settings_error_bundled_tor_broken": "OnionShare ei voinut yhdistää Tor:iin taustalla\n{}",
|
||||
"settings_test_success": "Yhditetty Tor ohjaimeen.\n\nTor versio: {}\nTykee lyhytaikaista onion palvelua: {}.\nTukee asiakas todennusta: {}.\nTukee uuden sukupolven .onion osoitteita: {}.",
|
||||
"error_tor_protocol_error": "Tor-verkossa tapahtui virhe: {}",
|
||||
"error_tor_protocol_error_unknown": "Tor-verkossa tapahtui tuntematon virhe",
|
||||
"error_invalid_private_key": "Tätä yksityisen avaimen tyyppiä ei tueta",
|
||||
"connecting_to_tor": "Yhdistetään Tor-verkkoon",
|
||||
"update_available": "Uusi OnionShare version on julkaistu. <a href='{}'>Paina tästä</a> ladataksesi sen.<br><br>Sinulla on versio {} ja uusin version on {}.",
|
||||
"update_error_check_error": "Päivityksien tarkistaminen epäonnistui: OnionShare-sivusto kertoo, että uusin versio on tunnistamaton '{}'…",
|
||||
"update_error_invalid_latest_version": "Päivityksien tarkistaminen epäonnistui: Ehkä et ole yhteydessä Tor-verkkoon, tai OnionShare-sivusto on alhaalla?",
|
||||
"update_not_available": "Sinulla on OnionSharen uusin versio.",
|
||||
"gui_tor_connection_ask": "Avaa asetukset Tor-yhteyden selvittämiseksi?",
|
||||
"gui_tor_connection_ask_open_settings": "Kyllä",
|
||||
"gui_tor_connection_ask_quit": "Lopeta",
|
||||
"gui_tor_connection_error_settings": "Yritä muuttaa miten OnionShare yhdistää Tor-verkkoon asetuksista.",
|
||||
"gui_tor_connection_canceled": "Tor-yhteyden muodostus epäonnistui.\n\nVarmista että sinulla on toimiva internet yhteys, jonka jälkeen uudelleen avaa OnionShare ja sen Tor-yhteys.",
|
||||
"gui_tor_connection_lost": "Tor-yhteys katkaistu.",
|
||||
"gui_server_started_after_autostop_timer": "Auto-stop ajastin loppui ennen palvelimen käynnistymistä.\nLuo uusi jako.",
|
||||
"gui_server_autostop_timer_expired": "Auto-stop ajastin loppui jo.\nPäivitä se jaon aloittamiseksi.",
|
||||
"share_via_onionshare": "OnionShare se",
|
||||
"gui_connect_to_tor_for_onion_settings": "Yhdistä Tor-verkkoon nähdäksesi onion palvelun asetukset",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Käytä vanhoja osoitteita",
|
||||
"gui_save_private_key_checkbox": "Käytä pysyviä osoitteita",
|
||||
"gui_share_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>ladata</b> tiedostojasi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>lähettää</b>tiedostoja tietokoneellesi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
|
||||
"gui_url_label_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
|
||||
"gui_url_label_stay_open": "Tämä jako ei pysähdy automaattisesti.",
|
||||
"gui_url_label_onetime": "Tämä jako lopetetaan ensimmäisen valmistumisen jälkeen.",
|
||||
"gui_url_label_onetime_and_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
|
||||
"gui_status_indicator_share_stopped": "Valmis jakamaan",
|
||||
"gui_status_indicator_share_working": "Aloitetaan…",
|
||||
"gui_status_indicator_share_started": "Jakaa",
|
||||
"gui_status_indicator_receive_stopped": "Valmis vastaanottamaan",
|
||||
"gui_status_indicator_receive_working": "Vastaanotetaan…",
|
||||
"gui_status_indicator_receive_started": "Vastaanotetaan",
|
||||
"gui_file_info": "{} tiedostoa, {}",
|
||||
"gui_file_info_single": "{} tiedosto, {}",
|
||||
"history_in_progress_tooltip": "{} meneillään",
|
||||
"history_completed_tooltip": "{} valmistunut",
|
||||
"error_cannot_create_data_dir": "OnionShare-tietokansiota ei voitu luoda: {}",
|
||||
"receive_mode_data_dir": "Sinulle lähetetyt tiedostot löytyvät tästä kansiosta: {}",
|
||||
"receive_mode_warning": "Varoitus: Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneeseen. Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa vain tiedostot, joihin luotat, tai jos tiedät, mitä teet.",
|
||||
"gui_receive_mode_warning": "Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneellesi.<br><br><b>Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa asioita vain ihmisiltä, joihin luotat, tai jos tiedät, mitä olet tekemässä. </b>",
|
||||
"receive_mode_upload_starting": "Lähetys jonka koko on {} alkaa",
|
||||
"receive_mode_received_file": "Vastaanotetaan: {}",
|
||||
"gui_mode_share_button": "Jaa Tiedostoja",
|
||||
"gui_mode_receive_button": "Vastaanota Tiedostoja",
|
||||
"gui_settings_receiving_label": "Vastaanoton asetukset",
|
||||
"gui_settings_data_dir_label": "Tallenna tiedostot",
|
||||
"gui_settings_data_dir_browse_button": "Selaa",
|
||||
"gui_settings_public_mode_checkbox": "Julkinen tila",
|
||||
"gui_open_folder_error_nautilus": "Kansiota ei voi avata, koska nautilus ei ole käytettävissä. Tiedosto on täällä: {}",
|
||||
"gui_settings_language_label": "Haluttu kieli",
|
||||
"gui_settings_language_changed_notice": "Käynnistä OnionShare uudelleen, jotta kieli muuttuu.",
|
||||
"systray_menu_exit": "Lopeta",
|
||||
"systray_page_loaded_title": "Sivu Ladattu",
|
||||
"systray_page_loaded_message": "OnionShare-osoite ladattu",
|
||||
"systray_share_started_title": "Jako Aloitettu",
|
||||
"systray_share_started_message": "Tiedostojen lähettäminen jollekulle aloitetaan",
|
||||
"systray_share_completed_title": "Jakaminen Valmis",
|
||||
"systray_share_completed_message": "Tiedostojen lähetys valmis",
|
||||
"systray_share_canceled_title": "Jako keskeytetty",
|
||||
"systray_share_canceled_message": "Joku keskeytti tiedostojesi vastaanottamisen",
|
||||
"systray_receive_started_title": "Vastaanottaminen Aloitettu",
|
||||
"systray_receive_started_message": "Joku lähettää tiedostoja sinulle",
|
||||
"gui_all_modes_history": "Historia",
|
||||
"gui_all_modes_clear_history": "Tyhjennä",
|
||||
"gui_all_modes_transfer_started": "Aloitettu {}",
|
||||
"gui_all_modes_transfer_finished_range": "Siirretty {} - {}",
|
||||
"gui_all_modes_transfer_finished": "Siirretty {}",
|
||||
"gui_all_modes_transfer_canceled_range": "Keskeytetty {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Keskeytetty {}",
|
||||
"gui_all_modes_progress_complete": "%p%, {0:s} kulunut.",
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (lasketaan)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Yhtäkään tiedostoa ei ole lähetetty vielä",
|
||||
"gui_share_mode_autostop_timer_waiting": "Odotetaan lähettämisen valmistumista",
|
||||
"gui_receive_mode_no_files": "Yhtäkään tiedostoa ei ole vastaanotettu vielä",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Odotetaan vastaanottamisen valmistumista"
|
||||
}
|
||||
|
@ -54,7 +54,7 @@
|
||||
"gui_settings_button_save": "Enregistrer",
|
||||
"gui_settings_button_cancel": "Annuler",
|
||||
"gui_settings_button_help": "Aide",
|
||||
"gui_settings_shutdown_timeout": "Arrêter le partage à :",
|
||||
"gui_settings_autostop_timer": "Arrêter le partage à :",
|
||||
"connecting_to_tor": "Connexion au réseau Tor",
|
||||
"help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)",
|
||||
"large_filesize": "Avertissement : envoyer un gros partage peut prendre des heures",
|
||||
@ -62,10 +62,10 @@
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"zip_progress_bar_format": "Compression : %p%",
|
||||
"error_ephemeral_not_supported": "OnionShare exige au moins Tor 0.2.7.1 et python3-stem 1.4.0.",
|
||||
"help_shutdown_timeout": "Arrêter le partage après un certain nombre de secondes",
|
||||
"help_autostop_timer": "Arrêter le partage après un certain nombre de secondes",
|
||||
"gui_tor_connection_error_settings": "Essayez de modifier dans les paramètres la façon dont OnionShare se connecte au réseau Tor.",
|
||||
"no_available_port": "Impossible de trouver un port disponible pour démarrer le service oignon",
|
||||
"gui_share_stop_server_shutdown_timeout": "Arrêter le partage ({}s restantes)",
|
||||
"gui_share_stop_server_autostop_timer": "Arrêter le partage ({}s restantes)",
|
||||
"systray_upload_started_title": "Envoi OnionShare démarré",
|
||||
"systray_upload_started_message": "Une personne a commencé à envoyer des fichiers vers votre ordinateur",
|
||||
"gui_no_downloads": "Pas encore de téléchargement",
|
||||
@ -148,7 +148,7 @@
|
||||
"help_receive": "Recevoir des partages au lieu de les envoyer",
|
||||
"gui_receive_start_server": "Démarrer le mode réception",
|
||||
"gui_receive_stop_server": "Arrêter le mode réception",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Arrêter le mode réception ({}s restantes)",
|
||||
"gui_receive_stop_server_autostop_timer": "Arrêter le mode réception ({}s restantes)",
|
||||
"gui_download_upload_progress_complete": "%p%, {0:s} écoulées.",
|
||||
"gui_download_upload_progress_starting": "{0:s}, %p% (estimation)",
|
||||
"gui_download_upload_progress_eta": "{0:s}, Fin : {1:s}, %p%",
|
||||
@ -172,17 +172,17 @@
|
||||
"systray_page_loaded_title": "La page a été chargée",
|
||||
"systray_download_page_loaded_message": "Une personne a chargé la page de téléchargement",
|
||||
"systray_upload_page_loaded_message": "Une personne a chargé la page d'envoi",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "La minuterie d’arrêt automatique se termine à {}",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "La minuterie d’arrêt automatique se termine à {}",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "La minuterie d’arrêt automatique se termine à {}",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "La minuterie d’arrêt automatique se termine à {}",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Utiliser les transports enfichables obfs4 intégrés",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utiliser les transports enfichables obfs4 intégrés (exige obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Utiliser les transports enfichables meek_lite (Azure) intégrés",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Utiliser les transports enfichables meek_lite (Azure) intégrés (exige obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Avertissement : l’exploitation de ponts meek_lite demande beaucoup de ressources au Projet Tor.<br><br>Ne les utilisez que si vous ne pouvez pas vous connecter directement à Tor par les transports obfs4 ou autres ponts normaux.",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Utiliser la minuterie d’arrêt automatique",
|
||||
"gui_server_started_after_timeout": "La minuterie d’arrêt automatique est arrivée au bout de son délai avant le démarrage du serveur.\nVeuillez mettre en place un nouveau partage.",
|
||||
"gui_server_timeout_expired": "La minuterie d’arrêt automatique est déjà arrivée au bout de son délai.\nVeuillez la mettre à jour pour commencer le partage.",
|
||||
"close_on_timeout": "Arrêté, car la minuterie d’arrêt automatique est arrivée au bout de son délai",
|
||||
"gui_settings_autostop_timer_checkbox": "Utiliser la minuterie d’arrêt automatique",
|
||||
"gui_server_started_after_autostop_timer": "La minuterie d’arrêt automatique est arrivée au bout de son délai avant le démarrage du serveur.\nVeuillez mettre en place un nouveau partage.",
|
||||
"gui_server_autostop_timer_expired": "La minuterie d’arrêt automatique est déjà arrivée au bout de son délai.\nVeuillez la mettre à jour pour commencer le partage.",
|
||||
"close_on_autostop_timer": "Arrêté, car la minuterie d’arrêt automatique est arrivée au bout de son délai",
|
||||
"gui_add_files": "Ajouter des fichiers",
|
||||
"gui_add_folder": "Ajouter un dossier",
|
||||
"error_cannot_create_data_dir": "Impossible de créer le dossier de données d’OnionShare : {}",
|
||||
@ -206,10 +206,10 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p % (estimation)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, fin prévue : {1:s}, %p %",
|
||||
"gui_share_mode_no_files": "Aucun fichier n’a encore été envoyé",
|
||||
"gui_share_mode_timeout_waiting": "En attente de la fin de l’envoi",
|
||||
"gui_share_mode_autostop_timer_waiting": "En attente de la fin de l’envoi",
|
||||
"gui_receive_mode_no_files": "Aucun fichier n’a encore été reçu",
|
||||
"gui_receive_mode_timeout_waiting": "En attente de la fin de la réception",
|
||||
"gui_connect_to_tor_for_onion_settings": "Connectez-vous à Tor pour voir les paramètres du service onion",
|
||||
"gui_receive_mode_autostop_timer_waiting": "En attente de la fin de la réception",
|
||||
"gui_connect_to_tor_for_onion_settings": "Se connecter à Tor pour voir les paramètres du service onion",
|
||||
"systray_share_completed_message": "L’envoi de fichiers est terminé",
|
||||
"gui_all_modes_transfer_canceled": "Annulé le {}",
|
||||
"gui_settings_onion_label": "Paramètres onion",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "Ní comhad inléite é {0:s}.",
|
||||
"no_available_port": "Níorbh fhéidir port a aimsiú chun an tseirbhís onion a thosú",
|
||||
"other_page_loaded": "Seoladh lódáilte",
|
||||
"close_on_timeout": "Cuireadh stop leis toisc go bhfuil an t-amadóir caite",
|
||||
"close_on_autostop_timer": "Cuireadh stop leis toisc go bhfuil an t-amadóir caite",
|
||||
"closing_automatically": "Cuireadh stop leis toisc go bhfuil an íoslódáil críochnaithe",
|
||||
"timeout_download_still_running": "Ag fanacht go gcríochnódh an íoslódáil",
|
||||
"large_filesize": "Rabhadh: D'fhéadfadh go dtógfadh sé tamall fada comhad mór a sheoladh",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "Thosaigh úsáideoir ag uaslódáil comhad go dtí do ríomhaire",
|
||||
"help_local_only": "Ná húsáid Tor (tástáil amháin)",
|
||||
"help_stay_open": "Lean ort ag comhroinnt tar éis an chéad íoslódáil",
|
||||
"help_shutdown_timeout": "Stop ag comhroinnt tar éis líon áirithe soicindí",
|
||||
"help_autostop_timer": "Stop ag comhroinnt tar éis líon áirithe soicindí",
|
||||
"help_stealth": "Úsáid údarú cliaint (ardleibhéal)",
|
||||
"help_receive": "Glac le comhaid chomhroinnte in áit iad a sheoladh",
|
||||
"help_debug": "Déan tuairisc ar earráidí OnionShare ar stdout, agus earráidí Gréasáin ar an diosca",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Roghnaigh",
|
||||
"gui_share_start_server": "Comhroinn",
|
||||
"gui_share_stop_server": "Stop ag comhroinnt",
|
||||
"gui_share_stop_server_shutdown_timeout": "Stop ag Comhroinnt ({}s fágtha)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Amadóir uathstoptha caite {}",
|
||||
"gui_share_stop_server_autostop_timer": "Stop ag Comhroinnt ({}s fágtha)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
|
||||
"gui_receive_start_server": "Tosaigh an Mód Glactha",
|
||||
"gui_receive_stop_server": "Stop an Mód Glactha",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stop an Mód Glactha ({}s fágtha)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Amadóir uathstoptha caite {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Stop an Mód Glactha ({}s fágtha)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
|
||||
"gui_copy_url": "Cóipeáil an Seoladh",
|
||||
"gui_copy_hidservauth": "Cóipeáil HidServAuth",
|
||||
"gui_downloads": "Stair Íoslódála",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Sábháil",
|
||||
"gui_settings_button_cancel": "Cealaigh",
|
||||
"gui_settings_button_help": "Cabhair",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Úsáid amadóir uathstoptha",
|
||||
"gui_settings_shutdown_timeout": "Stop ag comhroinnt ag:",
|
||||
"gui_settings_autostop_timer_checkbox": "Úsáid amadóir uathstoptha",
|
||||
"gui_settings_autostop_timer": "Stop ag comhroinnt ag:",
|
||||
"settings_error_unknown": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor toisc nach féidir linn ciall a bhaint as na socruithe.",
|
||||
"settings_error_automatic": "Níorbh fhéidir ceangal a bhunú leis an rialaitheoir Tor. An bhfuil Brabhsálaí Tor (ar fáil ó torproject.org) ag rith sa gcúlra?",
|
||||
"settings_error_socket_port": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor ag {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "Bain triail as na socruithe líonra a athrú chun ceangal le líonra Tor ó OnionShare.",
|
||||
"gui_tor_connection_canceled": "Níorbh fhéidir ceangal a bhunú le Tor.\n\nDeimhnigh go bhfuil tú ceangailte leis an Idirlíon, ansin oscail OnionShare arís agus socraigh an ceangal le Tor.",
|
||||
"gui_tor_connection_lost": "Dícheangailte ó Tor.",
|
||||
"gui_server_started_after_timeout": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí.\nCaithfidh tú comhroinnt nua a chruthú.",
|
||||
"gui_server_timeout_expired": "Tá an t-amadóir uathstoptha caite cheana.\nCaithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.",
|
||||
"gui_server_started_after_autostop_timer": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí.\nCaithfidh tú comhroinnt nua a chruthú.",
|
||||
"gui_server_autostop_timer_expired": "Tá an t-amadóir uathstoptha caite cheana.\nCaithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.",
|
||||
"share_via_onionshare": "Comhroinn trí OnionShare é",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Úsáid seoltaí sean-nóis",
|
||||
"gui_save_private_key_checkbox": "Úsáid seoladh seasmhach (seanleagan)",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -40,12 +40,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -107,8 +107,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -134,8 +134,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_connect_to_tor_for_onion_settings": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
|
184
share/locale/hi.json
Normal file
184
share/locale/hi.json
Normal file
@ -0,0 +1,184 @@
|
||||
{
|
||||
"config_onion_service": "",
|
||||
"preparing_files": "",
|
||||
"give_this_url": "",
|
||||
"give_this_url_stealth": "",
|
||||
"give_this_url_receive": "",
|
||||
"give_this_url_receive_stealth": "",
|
||||
"ctrlc_to_stop": "",
|
||||
"not_a_file": "",
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"large_filesize": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
"help_filename": "",
|
||||
"help_config": "",
|
||||
"gui_drag_and_drop": "",
|
||||
"gui_add": "जोड़ें",
|
||||
"gui_add_files": "",
|
||||
"gui_add_folder": "",
|
||||
"gui_delete": "हटाएं",
|
||||
"gui_choose_items": "चुनें",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_canceled": "Canceled",
|
||||
"gui_copied_url_title": "",
|
||||
"gui_copied_url": "",
|
||||
"gui_copied_hidservauth_title": "",
|
||||
"gui_copied_hidservauth": "",
|
||||
"gui_please_wait": "",
|
||||
"version_string": "",
|
||||
"gui_quit_title": "",
|
||||
"gui_share_quit_warning": "",
|
||||
"gui_receive_quit_warning": "",
|
||||
"gui_quit_warning_quit": "छोड़ें",
|
||||
"gui_quit_warning_dont_quit": "रद्द करे",
|
||||
"error_rate_limit": "",
|
||||
"zip_progress_bar_format": "",
|
||||
"error_stealth_not_supported": "",
|
||||
"error_ephemeral_not_supported": "",
|
||||
"gui_settings_window_title": "सेटिंग",
|
||||
"gui_settings_whats_this": "",
|
||||
"gui_settings_stealth_option": "",
|
||||
"gui_settings_stealth_hidservauth_string": "",
|
||||
"gui_settings_autoupdate_label": "",
|
||||
"gui_settings_autoupdate_option": "",
|
||||
"gui_settings_autoupdate_timestamp": "अंतिम जाँच %1",
|
||||
"gui_settings_autoupdate_timestamp_never": "कभी नहीँ",
|
||||
"gui_settings_autoupdate_check_button": "",
|
||||
"gui_settings_general_label": "जनरल सेटिंग्स",
|
||||
"gui_settings_onion_label": "",
|
||||
"gui_settings_sharing_label": "",
|
||||
"gui_settings_close_after_first_download_option": "",
|
||||
"gui_settings_connection_type_label": "",
|
||||
"gui_settings_connection_type_bundled_option": "",
|
||||
"gui_settings_connection_type_automatic_option": "",
|
||||
"gui_settings_connection_type_control_port_option": "",
|
||||
"gui_settings_connection_type_socket_file_option": "",
|
||||
"gui_settings_connection_type_test_button": "",
|
||||
"gui_settings_control_port_label": "",
|
||||
"gui_settings_socket_file_label": "",
|
||||
"gui_settings_socks_label": "",
|
||||
"gui_settings_authenticate_label": "",
|
||||
"gui_settings_authenticate_no_auth_option": "",
|
||||
"gui_settings_authenticate_password_option": "",
|
||||
"gui_settings_password_label": "",
|
||||
"gui_settings_tor_bridges": "",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_meek_lite_expensive_warning": "",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "",
|
||||
"gui_settings_tor_bridges_custom_label": "",
|
||||
"gui_settings_tor_bridges_invalid": "",
|
||||
"gui_settings_button_save": "सहेजें",
|
||||
"gui_settings_button_cancel": "रद्द करे",
|
||||
"gui_settings_button_help": "मदद",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
"settings_error_socket_file": "",
|
||||
"settings_error_auth": "",
|
||||
"settings_error_missing_password": "",
|
||||
"settings_error_unreadable_cookie_file": "",
|
||||
"settings_error_bundled_tor_not_supported": "",
|
||||
"settings_error_bundled_tor_timeout": "",
|
||||
"settings_error_bundled_tor_broken": "",
|
||||
"settings_test_success": "",
|
||||
"error_tor_protocol_error": "",
|
||||
"error_tor_protocol_error_unknown": "",
|
||||
"error_invalid_private_key": "",
|
||||
"connecting_to_tor": "",
|
||||
"update_available": "",
|
||||
"update_error_check_error": "",
|
||||
"update_error_invalid_latest_version": "",
|
||||
"update_not_available": "",
|
||||
"gui_tor_connection_ask": "",
|
||||
"gui_tor_connection_ask_open_settings": "हां",
|
||||
"gui_tor_connection_ask_quit": "छोड़ें",
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_connect_to_tor_for_onion_settings": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
"gui_share_url_description": "",
|
||||
"gui_receive_url_description": "",
|
||||
"gui_url_label_persistent": "",
|
||||
"gui_url_label_stay_open": "",
|
||||
"gui_url_label_onetime": "",
|
||||
"gui_url_label_onetime_and_persistent": "",
|
||||
"gui_status_indicator_share_stopped": "",
|
||||
"gui_status_indicator_share_working": "",
|
||||
"gui_status_indicator_share_started": "शेयरिंग",
|
||||
"gui_status_indicator_receive_stopped": "",
|
||||
"gui_status_indicator_receive_working": "",
|
||||
"gui_status_indicator_receive_started": "",
|
||||
"gui_file_info": "",
|
||||
"gui_file_info_single": "",
|
||||
"history_in_progress_tooltip": "",
|
||||
"history_completed_tooltip": "",
|
||||
"error_cannot_create_data_dir": "",
|
||||
"receive_mode_data_dir": "",
|
||||
"receive_mode_warning": "",
|
||||
"gui_receive_mode_warning": "",
|
||||
"receive_mode_upload_starting": "",
|
||||
"receive_mode_received_file": "",
|
||||
"gui_mode_share_button": "",
|
||||
"gui_mode_receive_button": "",
|
||||
"gui_settings_receiving_label": "",
|
||||
"gui_settings_data_dir_label": "",
|
||||
"gui_settings_data_dir_browse_button": "ब्राउज़",
|
||||
"gui_settings_public_mode_checkbox": "",
|
||||
"gui_open_folder_error_nautilus": "",
|
||||
"gui_settings_language_label": "",
|
||||
"gui_settings_language_changed_notice": "",
|
||||
"systray_menu_exit": "छोड़ें",
|
||||
"systray_page_loaded_title": "",
|
||||
"systray_page_loaded_message": "",
|
||||
"systray_share_started_title": "",
|
||||
"systray_share_started_message": "",
|
||||
"systray_share_completed_title": "",
|
||||
"systray_share_completed_message": "",
|
||||
"systray_share_canceled_title": "",
|
||||
"systray_share_canceled_message": "",
|
||||
"systray_receive_started_title": "",
|
||||
"systray_receive_started_message": "",
|
||||
"gui_all_modes_history": "इतिहास",
|
||||
"gui_all_modes_clear_history": "",
|
||||
"gui_all_modes_transfer_started": "द्वारा शुरू किया गया",
|
||||
"gui_all_modes_transfer_finished_range": "",
|
||||
"gui_all_modes_transfer_finished": "",
|
||||
"gui_all_modes_transfer_canceled_range": "",
|
||||
"gui_all_modes_transfer_canceled": "",
|
||||
"gui_all_modes_progress_complete": "",
|
||||
"gui_all_modes_progress_starting": "",
|
||||
"gui_all_modes_progress_eta": "",
|
||||
"gui_share_mode_no_files": "",
|
||||
"gui_share_mode_autostop_timer_waiting": "",
|
||||
"gui_receive_mode_no_files": "",
|
||||
"gui_receive_mode_autostop_timer_waiting": ""
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Kiválaszt",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Mentés",
|
||||
"gui_settings_button_cancel": "Megszakítás",
|
||||
"gui_settings_button_help": "Súgó",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -1,19 +1,19 @@
|
||||
{
|
||||
"config_onion_service": "",
|
||||
"preparing_files": "",
|
||||
"give_this_url": "",
|
||||
"give_this_url_stealth": "",
|
||||
"give_this_url_receive": "",
|
||||
"give_this_url_receive_stealth": "",
|
||||
"ctrlc_to_stop": "",
|
||||
"not_a_file": "",
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"closing_automatically": "",
|
||||
"config_onion_service": "Mengatur layanan onion pada port {0:d}.",
|
||||
"preparing_files": "Mengompresi berkas-berkas.",
|
||||
"give_this_url": "Beri alamat ini kepada penerima:",
|
||||
"give_this_url_stealth": "Beri alamat ini dan baris HidServAuth kepada penerima:",
|
||||
"give_this_url_receive": "Beri alamat ini kepada pengirim:",
|
||||
"give_this_url_receive_stealth": "Beri alamat ini dan HidServAuth kepada pengirim:",
|
||||
"ctrlc_to_stop": "Tekan Ctrl+C untuk menghentikan peladen",
|
||||
"not_a_file": "{0:s} bukan berkas yang sah.",
|
||||
"not_a_readable_file": "{0:s} bukan berkas yang bisa dibaca.",
|
||||
"no_available_port": "Tidak dapat menemukan porta yang tersedia untuk memulai layanan onion",
|
||||
"other_page_loaded": "Alamat dimuat",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "Terhenti karena transfer telah tuntas",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
"large_filesize": "Peringatan: Mengirim dalam jumlah besar dapat memakan waktu berjam-jam",
|
||||
"systray_menu_exit": "Keluar",
|
||||
"systray_download_started_title": "",
|
||||
"systray_download_started_message": "",
|
||||
@ -23,74 +23,74 @@
|
||||
"systray_download_canceled_message": "",
|
||||
"systray_upload_started_title": "",
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_stealth": "",
|
||||
"help_local_only": "Tidak menggunakan Tor (hanya untuk pengembangan)",
|
||||
"help_stay_open": "Lanjutkan berbagi setelah berkas telah terkirim",
|
||||
"help_autostop_timer": "Berhenti berbagi setelah beberapa detik",
|
||||
"help_stealth": "Gunakan otorisasi klien (lanjutan)",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
"help_filename": "",
|
||||
"help_debug": "Catat kesalahan OnionShare ke stdout, dan kesalahan web ke disk",
|
||||
"help_filename": "Daftar berkas atau folder untuk dibagikan",
|
||||
"help_config": "",
|
||||
"gui_drag_and_drop": "",
|
||||
"gui_drag_and_drop": "Seret dan lepas berkas dan folder\nuntuk mulai berbagi",
|
||||
"gui_add": "Tambahkan",
|
||||
"gui_delete": "Hapus",
|
||||
"gui_choose_items": "Pilih",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_share_start_server": "Mulai berbagi",
|
||||
"gui_share_stop_server": "Berhenti berbagi",
|
||||
"gui_share_stop_server_autostop_timer": "Berhenti Berbagi ({}d tersisa)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "Mulai Mode Menerima",
|
||||
"gui_receive_stop_server": "Menghentikan Mode Menerima",
|
||||
"gui_receive_stop_server_autostop_timer": "Menghentikan Mode Menerima ({}d tersisa)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "Salin Alamat",
|
||||
"gui_copy_hidservauth": "Salin HidServAuth",
|
||||
"gui_downloads": "",
|
||||
"gui_no_downloads": "",
|
||||
"gui_canceled": "Dibatalkan",
|
||||
"gui_copied_url_title": "",
|
||||
"gui_copied_url": "",
|
||||
"gui_copied_hidservauth_title": "",
|
||||
"gui_copied_hidservauth": "",
|
||||
"gui_please_wait": "",
|
||||
"gui_copied_url_title": "Alamat OnionShare disalin",
|
||||
"gui_copied_url": "Alamat OnionShare disalin ke papan klip",
|
||||
"gui_copied_hidservauth_title": "HidServAuth disalin",
|
||||
"gui_copied_hidservauth": "Baris HidServAuth disalin ke papan klip",
|
||||
"gui_please_wait": "Memulai... Klik untuk membatalkan.",
|
||||
"gui_download_upload_progress_complete": "",
|
||||
"gui_download_upload_progress_starting": "",
|
||||
"gui_download_upload_progress_eta": "",
|
||||
"version_string": "",
|
||||
"gui_quit_title": "",
|
||||
"gui_share_quit_warning": "",
|
||||
"gui_receive_quit_warning": "",
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "Tidak begitu cepat",
|
||||
"gui_share_quit_warning": "Anda sedang dalam proses pengiriman berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
|
||||
"gui_receive_quit_warning": "Anda sedang dalam proses menerima berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
|
||||
"gui_quit_warning_quit": "Keluar",
|
||||
"gui_quit_warning_dont_quit": "Batal",
|
||||
"error_rate_limit": "",
|
||||
"zip_progress_bar_format": "",
|
||||
"error_stealth_not_supported": "",
|
||||
"error_ephemeral_not_supported": "",
|
||||
"zip_progress_bar_format": "Mengompresi: %p%",
|
||||
"error_stealth_not_supported": "Untuk menggunakan otorisasi klien, Anda perlu setidaknya Tor 0.2.9.1-alpha (atau Tor Browser 6.5) dan python3-stem 1.5.0.",
|
||||
"error_ephemeral_not_supported": "OnionShare memerlukan setidaknya Tor 0.2.7.1 dan python3-stem 1.4.0.",
|
||||
"gui_settings_window_title": "Pengaturan",
|
||||
"gui_settings_whats_this": "",
|
||||
"gui_settings_stealth_option": "",
|
||||
"gui_settings_stealth_hidservauth_string": "",
|
||||
"gui_settings_autoupdate_label": "",
|
||||
"gui_settings_autoupdate_option": "",
|
||||
"gui_settings_autoupdate_timestamp": "",
|
||||
"gui_settings_autoupdate_timestamp_never": "Tak pernah",
|
||||
"gui_settings_autoupdate_check_button": "",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Apakah ini?</a>",
|
||||
"gui_settings_stealth_option": "Gunakan otorisasi klien",
|
||||
"gui_settings_stealth_hidservauth_string": "Telah menyimpan kunci privat Anda untuk digunakan kembali, berarti Anda dapat klik untuk menyalin HidServAuth Anda.",
|
||||
"gui_settings_autoupdate_label": "Periksa versi terbaru",
|
||||
"gui_settings_autoupdate_option": "Beritahu saya ketika versi baru tersedia",
|
||||
"gui_settings_autoupdate_timestamp": "Terakhir diperiksa: {}",
|
||||
"gui_settings_autoupdate_timestamp_never": "Tidak pernah",
|
||||
"gui_settings_autoupdate_check_button": "Periksa Versi Terbaru",
|
||||
"gui_settings_general_label": "Pengaturan umum",
|
||||
"gui_settings_sharing_label": "",
|
||||
"gui_settings_close_after_first_download_option": "",
|
||||
"gui_settings_connection_type_label": "",
|
||||
"gui_settings_sharing_label": "Pengaturan berbagi",
|
||||
"gui_settings_close_after_first_download_option": "Berhenti berbagi setelah berkas telah terkirim",
|
||||
"gui_settings_connection_type_label": "Bagaimana seharusnya OnionShare terhubung ke Tor?",
|
||||
"gui_settings_connection_type_bundled_option": "",
|
||||
"gui_settings_connection_type_automatic_option": "",
|
||||
"gui_settings_connection_type_control_port_option": "",
|
||||
"gui_settings_connection_type_automatic_option": "Mencoba konfigurasi otomatis dengan Tor Browser",
|
||||
"gui_settings_connection_type_control_port_option": "Menghubungkan menggunakan porta kontrol",
|
||||
"gui_settings_connection_type_socket_file_option": "",
|
||||
"gui_settings_connection_type_test_button": "",
|
||||
"gui_settings_connection_type_test_button": "Menguji sambungan ke Tor",
|
||||
"gui_settings_control_port_label": "Port kontrol",
|
||||
"gui_settings_socket_file_label": "",
|
||||
"gui_settings_socks_label": "",
|
||||
"gui_settings_authenticate_label": "",
|
||||
"gui_settings_authenticate_no_auth_option": "",
|
||||
"gui_settings_authenticate_password_option": "",
|
||||
"gui_settings_password_label": "",
|
||||
"gui_settings_socket_file_label": "Berkas soket",
|
||||
"gui_settings_socks_label": "Porta SOCKS",
|
||||
"gui_settings_authenticate_label": "Pengaturan otentikasi Tor",
|
||||
"gui_settings_authenticate_no_auth_option": "Tidak ada otentikasi, atau otentikasi kuki",
|
||||
"gui_settings_authenticate_password_option": "Sandi",
|
||||
"gui_settings_password_label": "Sandi",
|
||||
"gui_settings_tor_bridges": "",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Simpan",
|
||||
"gui_settings_button_cancel": "Batal",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
@ -181,5 +181,8 @@
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "",
|
||||
"gui_settings_language_label": "",
|
||||
"gui_settings_language_changed_notice": ""
|
||||
"gui_settings_language_changed_notice": "",
|
||||
"gui_add_files": "Tambahkan berkas",
|
||||
"gui_add_folder": "Tambahkan Folder",
|
||||
"gui_settings_onion_label": "Pengaturan Onion"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"preparing_files": "Compressione dei file in corso.",
|
||||
"give_this_url": "Dai questa URL al destinatario:",
|
||||
"give_this_url": "Dai questo indirizzo al destinatario:",
|
||||
"ctrlc_to_stop": "Premi Ctrl+C per fermare il server",
|
||||
"not_a_file": "{0:s} non è un file valido.",
|
||||
"other_page_loaded": "URL caricato",
|
||||
@ -23,12 +23,12 @@
|
||||
"gui_please_wait": "Avviato... Cliccare per interrompere.",
|
||||
"zip_progress_bar_format": "Compressione in corso: %p%",
|
||||
"config_onion_service": "Preparando il servizio onion sulla porta {0:d}.",
|
||||
"give_this_url_stealth": "Dai questa URL e la linea HidServAuth al destinatario:",
|
||||
"give_this_url_stealth": "Dai questo indirizzo e la linea HidServAuth al destinatario:",
|
||||
"give_this_url_receive": "Dai questo indirizzo al mittente:",
|
||||
"give_this_url_receive_stealth": "Condividi questo indirizzo e la linea HideServAuth con il mittente:",
|
||||
"not_a_readable_file": "{0:s} non è un file leggibile.",
|
||||
"no_available_port": "Non è stato possibile trovare alcuna porta per avviare il servizio onion",
|
||||
"close_on_timeout": "Arrestato per tempo scaduto",
|
||||
"close_on_autostop_timer": "Arrestato per tempo scaduto",
|
||||
"timeout_download_still_running": "download in corso, attendere",
|
||||
"systray_menu_exit": "Termina",
|
||||
"systray_download_started_title": "Download con OnionShare avviato",
|
||||
@ -39,15 +39,15 @@
|
||||
"systray_download_canceled_message": "L'utente ha interrotto il download",
|
||||
"systray_upload_started_title": "Upload con OnionShare avviato",
|
||||
"systray_upload_started_message": "Un utente ha avviato l'upload di file sul tuo computer",
|
||||
"help_shutdown_timeout": "Termina la condivisione dopo alcuni secondi",
|
||||
"help_autostop_timer": "Termina la condivisione dopo alcuni secondi",
|
||||
"help_stealth": "Usa l'autorizzazione del client (avanzato)",
|
||||
"help_config": "Specifica il percorso del file di configurazione del JSON personalizzato",
|
||||
"gui_share_stop_server_shutdown_timeout": "Arresta la condivisione ({}s rimanenti)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Il timer si arresterà tra {}",
|
||||
"gui_share_stop_server_autostop_timer": "Arresta la condivisione ({}s rimanenti)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Il timer si arresterà tra {}",
|
||||
"gui_receive_start_server": "Inizia la ricezione",
|
||||
"gui_receive_stop_server": "Arresta la ricezione",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Interrompi la ricezione ({}s rimanenti)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Il timer termina tra {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Interrompi la ricezione ({}s rimanenti)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Il timer termina tra {}",
|
||||
"gui_copy_hidservauth": "Copia HidServAuth",
|
||||
"gui_no_downloads": "Ancora nessun Download",
|
||||
"gui_copied_url_title": "Indirizzo OnionShare copiato",
|
||||
@ -109,8 +109,8 @@
|
||||
"gui_settings_button_save": "Salva",
|
||||
"gui_settings_button_cancel": "Cancella",
|
||||
"gui_settings_button_help": "Aiuto",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Utilizza il timer di arresto automatico",
|
||||
"gui_settings_shutdown_timeout": "Ferma la condivisione alle:",
|
||||
"gui_settings_autostop_timer_checkbox": "Utilizza il timer di arresto automatico",
|
||||
"gui_settings_autostop_timer": "Ferma la condivisione alle:",
|
||||
"settings_error_unknown": "Impossibile connettersi al controller Tor perché le tue impostazioni non hanno senso.",
|
||||
"settings_error_automatic": "Impossibile connettersi al controller Tor. Tor Browser (disponibile da torproject.org) è in esecuzione in background?",
|
||||
"settings_error_socket_port": "Impossibile connettersi al controller Tor in {}: {}.",
|
||||
@ -136,8 +136,8 @@
|
||||
"gui_tor_connection_error_settings": "Prova a modificare le impostazioni di come OnionShare si connette alla rete Tor.",
|
||||
"gui_tor_connection_canceled": "Impossibile connettersi a Tor,\n\nVerifica la connessione a Internet, dopo prova a riaprire OnionShare e configurare la connessione a Tor.",
|
||||
"gui_tor_connection_lost": "Disconnesso da Tor.",
|
||||
"gui_server_started_after_timeout": "Il timer auto-stop si è esaurito prima dell'avvio del server.\nSi prega di fare una nuova condivisione.",
|
||||
"gui_server_timeout_expired": "Il timer auto-stop ha già finito.\nPer favore aggiornalo per iniziare la condivisione.",
|
||||
"gui_server_started_after_autostop_timer": "Il timer auto-stop si è esaurito prima dell'avvio del server.\nSi prega di fare una nuova condivisione.",
|
||||
"gui_server_autostop_timer_expired": "Il timer auto-stop ha già finito.\nPer favore aggiornalo per iniziare la condivisione.",
|
||||
"share_via_onionshare": "Usa OnionShare",
|
||||
"gui_connect_to_tor_for_onion_settings": "Connetti a Tor per vedere le impostazioni del servizio onion",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Usa gli indirizzi legacy",
|
||||
@ -210,7 +210,7 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (in calcolo)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Nessun file ancora inviato",
|
||||
"gui_share_mode_timeout_waiting": "In attesa di finire l'invio",
|
||||
"gui_share_mode_autostop_timer_waiting": "In attesa di finire l'invio",
|
||||
"gui_receive_mode_no_files": "Nessun file ricevuto ancora",
|
||||
"gui_receive_mode_timeout_waiting": "In attesa di finire la ricezione"
|
||||
"gui_receive_mode_autostop_timer_waiting": "In attesa di finire la ricezione"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s}は読めるファイルではありません。",
|
||||
"no_available_port": "onionサービスを実行するための利用可能ポートを見つかりません",
|
||||
"other_page_loaded": "アドレスはロードされています",
|
||||
"close_on_timeout": "自動タイマーがタイムアウトしたため停止されました",
|
||||
"close_on_autostop_timer": "自動タイマーがタイムアウトしたため停止されました",
|
||||
"closing_automatically": "転送が完了されたため停止されました",
|
||||
"timeout_download_still_running": "ダウンロード完了待ち",
|
||||
"timeout_upload_still_running": "アップロード完了待ち",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "ユーザーがファイルをアップロードし始めました",
|
||||
"help_local_only": "Torを使わない(開発利用のみ)",
|
||||
"help_stay_open": "ファイルが送信された後に共有し続けます",
|
||||
"help_shutdown_timeout": "数秒後に共有が停止されます",
|
||||
"help_autostop_timer": "数秒後に共有が停止されます",
|
||||
"help_stealth": "クライアント認証を使う(上級者向け)",
|
||||
"help_receive": "共有を送信する代わりに受信する",
|
||||
"help_debug": "OnionShareのエラーを標準出力に、Webのエラーをディスクに記録する",
|
||||
@ -40,12 +40,12 @@
|
||||
"gui_choose_items": "選択",
|
||||
"gui_share_start_server": "共有を開始する",
|
||||
"gui_share_stop_server": "共有を停止する",
|
||||
"gui_share_stop_server_shutdown_timeout": "共有を停止中です(残り{}秒)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "{}に自動停止します",
|
||||
"gui_share_stop_server_autostop_timer": "共有を停止中です(残り{}秒)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "{}に自動停止します",
|
||||
"gui_receive_start_server": "受信モードを開始",
|
||||
"gui_receive_stop_server": "受信モードを停止",
|
||||
"gui_receive_stop_server_shutdown_timeout": "受信モードを停止中(残り{}秒)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "{}に自動停止します",
|
||||
"gui_receive_stop_server_autostop_timer": "受信モードを停止中(残り{}秒)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "{}に自動停止します",
|
||||
"gui_copy_url": "アドレスをコピー",
|
||||
"gui_copy_hidservauth": "HidServAuthをコピー",
|
||||
"gui_downloads": "ダウンロード履歴",
|
||||
@ -107,8 +107,8 @@
|
||||
"gui_settings_button_save": "保存",
|
||||
"gui_settings_button_cancel": "キャンセル",
|
||||
"gui_settings_button_help": "ヘルプ",
|
||||
"gui_settings_shutdown_timeout_checkbox": "自動停止タイマーを使用する",
|
||||
"gui_settings_shutdown_timeout": "共有を停止する時間:",
|
||||
"gui_settings_autostop_timer_checkbox": "自動停止タイマーを使用する",
|
||||
"gui_settings_autostop_timer": "共有を停止する時間:",
|
||||
"settings_error_unknown": "設定を解釈できないため、Torコントローラーと接続できません。",
|
||||
"settings_error_automatic": "Torコントローラーと接続できません。Torブラウザ(torproject.orgから入手できる)がバックグラウンドで動作していますか?",
|
||||
"settings_error_socket_port": "{}:{}でTorコントローラーと接続できません。",
|
||||
@ -134,8 +134,8 @@
|
||||
"gui_tor_connection_error_settings": "設定でTorとの接続方法を変更してみて下さい。",
|
||||
"gui_tor_connection_canceled": "Torと接続できませんでした。\n\nインターネット接続を確認してから、OnionShareを再開してTorとの接続を設定して下さい。",
|
||||
"gui_tor_connection_lost": "Torから切断されました。",
|
||||
"gui_server_started_after_timeout": "サーバーが起動した前、自動停止タイマーがタイムアウトしました。\n再びファイル共有をして下さい。",
|
||||
"gui_server_timeout_expired": "自動停止タイマーはすでにタイムアウトしています。\n共有し始めるにはリセットして下さい。",
|
||||
"gui_server_started_after_autostop_timer": "サーバーが起動した前、自動停止タイマーがタイムアウトしました。\n再びファイル共有をして下さい。",
|
||||
"gui_server_autostop_timer_expired": "自動停止タイマーはすでにタイムアウトしています。\n共有し始めるにはリセットして下さい。",
|
||||
"share_via_onionshare": "OnionShareで共有する",
|
||||
"gui_connect_to_tor_for_onion_settings": "onionサービス設定を見るのにTorと接続して下さい",
|
||||
"gui_use_legacy_v2_onions_checkbox": "レガシーアドレスを使用する",
|
||||
@ -209,8 +209,8 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (計算中)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, 完了予定時刻: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "送信されたファイルがまだありません",
|
||||
"gui_share_mode_timeout_waiting": "送信完了を待機しています",
|
||||
"gui_share_mode_autostop_timer_waiting": "送信完了を待機しています",
|
||||
"gui_receive_mode_no_files": "受信されたファイルがまだありません",
|
||||
"gui_receive_mode_timeout_waiting": "受信完了を待機しています",
|
||||
"gui_receive_mode_autostop_timer_waiting": "受信完了を待機しています",
|
||||
"gui_settings_onion_label": "Onion設定"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} 는 읽을수 없는 파일입니다.",
|
||||
"no_available_port": "어니언 서비스를 시작하기 위한 사용 가능한 포트를 찾을수 없었습니다",
|
||||
"other_page_loaded": "주소가 로드되다",
|
||||
"close_on_timeout": "자동멈춤 타이머가 끝났기 때문에 정지되다",
|
||||
"close_on_autostop_timer": "자동멈춤 타이머가 끝났기 때문에 정지되다",
|
||||
"closing_automatically": "다운로드가 완료되었기 때문에 정지되다",
|
||||
"timeout_download_still_running": "다운로드가 완료되기를 기다리는 중입니다",
|
||||
"timeout_upload_still_running": "업로드가 완료되기를 기다리는 중입니다",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "사용자가 파일들을 당신의 컴퓨터로 업로딩 하는것을 시작했습니다",
|
||||
"help_local_only": "Tor를 사용하지 마시오 (오직 개발자용)",
|
||||
"help_stay_open": "첫 다운로드 후 계속 공유하시오",
|
||||
"help_shutdown_timeout": "정해진 초단위의 시간이 지난후 공유하는 것을 멈추시오",
|
||||
"help_autostop_timer": "정해진 초단위의 시간이 지난후 공유하는 것을 멈추시오",
|
||||
"help_stealth": "고객 허가를 사용 (고급 수준의)",
|
||||
"help_receive": "그것들을 보내는것 대신 공유를 받으시오",
|
||||
"help_debug": "어니언쉐어 에러들은 표준 출력 장치로 접속하고, 웹 에러들은 디스크로 접속 ",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "선택",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "저장",
|
||||
"gui_settings_button_cancel": "취소",
|
||||
"gui_settings_button_help": "도움말",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Зачувување",
|
||||
"gui_settings_button_cancel": "Откажи",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
184
share/locale/ms.json
Normal file
184
share/locale/ms.json
Normal file
@ -0,0 +1,184 @@
|
||||
{
|
||||
"config_onion_service": "",
|
||||
"preparing_files": "",
|
||||
"give_this_url": "",
|
||||
"give_this_url_stealth": "",
|
||||
"give_this_url_receive": "",
|
||||
"give_this_url_receive_stealth": "",
|
||||
"ctrlc_to_stop": "",
|
||||
"not_a_file": "",
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"large_filesize": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
"help_filename": "",
|
||||
"help_config": "",
|
||||
"gui_drag_and_drop": "",
|
||||
"gui_add": "",
|
||||
"gui_add_files": "",
|
||||
"gui_add_folder": "",
|
||||
"gui_delete": "",
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_canceled": "",
|
||||
"gui_copied_url_title": "",
|
||||
"gui_copied_url": "",
|
||||
"gui_copied_hidservauth_title": "",
|
||||
"gui_copied_hidservauth": "",
|
||||
"gui_please_wait": "",
|
||||
"version_string": "",
|
||||
"gui_quit_title": "",
|
||||
"gui_share_quit_warning": "",
|
||||
"gui_receive_quit_warning": "",
|
||||
"gui_quit_warning_quit": "",
|
||||
"gui_quit_warning_dont_quit": "",
|
||||
"error_rate_limit": "",
|
||||
"zip_progress_bar_format": "",
|
||||
"error_stealth_not_supported": "",
|
||||
"error_ephemeral_not_supported": "",
|
||||
"gui_settings_window_title": "",
|
||||
"gui_settings_whats_this": "",
|
||||
"gui_settings_stealth_option": "",
|
||||
"gui_settings_stealth_hidservauth_string": "",
|
||||
"gui_settings_autoupdate_label": "",
|
||||
"gui_settings_autoupdate_option": "",
|
||||
"gui_settings_autoupdate_timestamp": "",
|
||||
"gui_settings_autoupdate_timestamp_never": "",
|
||||
"gui_settings_autoupdate_check_button": "",
|
||||
"gui_settings_general_label": "",
|
||||
"gui_settings_onion_label": "",
|
||||
"gui_settings_sharing_label": "",
|
||||
"gui_settings_close_after_first_download_option": "",
|
||||
"gui_settings_connection_type_label": "",
|
||||
"gui_settings_connection_type_bundled_option": "",
|
||||
"gui_settings_connection_type_automatic_option": "",
|
||||
"gui_settings_connection_type_control_port_option": "",
|
||||
"gui_settings_connection_type_socket_file_option": "",
|
||||
"gui_settings_connection_type_test_button": "",
|
||||
"gui_settings_control_port_label": "",
|
||||
"gui_settings_socket_file_label": "",
|
||||
"gui_settings_socks_label": "",
|
||||
"gui_settings_authenticate_label": "",
|
||||
"gui_settings_authenticate_no_auth_option": "",
|
||||
"gui_settings_authenticate_password_option": "",
|
||||
"gui_settings_password_label": "",
|
||||
"gui_settings_tor_bridges": "",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_meek_lite_expensive_warning": "",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "",
|
||||
"gui_settings_tor_bridges_custom_label": "",
|
||||
"gui_settings_tor_bridges_invalid": "",
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
"settings_error_socket_file": "",
|
||||
"settings_error_auth": "",
|
||||
"settings_error_missing_password": "",
|
||||
"settings_error_unreadable_cookie_file": "",
|
||||
"settings_error_bundled_tor_not_supported": "",
|
||||
"settings_error_bundled_tor_timeout": "",
|
||||
"settings_error_bundled_tor_broken": "",
|
||||
"settings_test_success": "",
|
||||
"error_tor_protocol_error": "",
|
||||
"error_tor_protocol_error_unknown": "",
|
||||
"error_invalid_private_key": "",
|
||||
"connecting_to_tor": "",
|
||||
"update_available": "",
|
||||
"update_error_check_error": "",
|
||||
"update_error_invalid_latest_version": "",
|
||||
"update_not_available": "",
|
||||
"gui_tor_connection_ask": "",
|
||||
"gui_tor_connection_ask_open_settings": "",
|
||||
"gui_tor_connection_ask_quit": "",
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_connect_to_tor_for_onion_settings": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
"gui_share_url_description": "",
|
||||
"gui_receive_url_description": "",
|
||||
"gui_url_label_persistent": "",
|
||||
"gui_url_label_stay_open": "",
|
||||
"gui_url_label_onetime": "",
|
||||
"gui_url_label_onetime_and_persistent": "",
|
||||
"gui_status_indicator_share_stopped": "",
|
||||
"gui_status_indicator_share_working": "",
|
||||
"gui_status_indicator_share_started": "",
|
||||
"gui_status_indicator_receive_stopped": "",
|
||||
"gui_status_indicator_receive_working": "",
|
||||
"gui_status_indicator_receive_started": "",
|
||||
"gui_file_info": "",
|
||||
"gui_file_info_single": "",
|
||||
"history_in_progress_tooltip": "",
|
||||
"history_completed_tooltip": "",
|
||||
"error_cannot_create_data_dir": "",
|
||||
"receive_mode_data_dir": "",
|
||||
"receive_mode_warning": "",
|
||||
"gui_receive_mode_warning": "",
|
||||
"receive_mode_upload_starting": "",
|
||||
"receive_mode_received_file": "",
|
||||
"gui_mode_share_button": "",
|
||||
"gui_mode_receive_button": "",
|
||||
"gui_settings_receiving_label": "",
|
||||
"gui_settings_data_dir_label": "",
|
||||
"gui_settings_data_dir_browse_button": "",
|
||||
"gui_settings_public_mode_checkbox": "",
|
||||
"gui_open_folder_error_nautilus": "",
|
||||
"gui_settings_language_label": "",
|
||||
"gui_settings_language_changed_notice": "",
|
||||
"systray_menu_exit": "",
|
||||
"systray_page_loaded_title": "",
|
||||
"systray_page_loaded_message": "",
|
||||
"systray_share_started_title": "",
|
||||
"systray_share_started_message": "",
|
||||
"systray_share_completed_title": "",
|
||||
"systray_share_completed_message": "",
|
||||
"systray_share_canceled_title": "",
|
||||
"systray_share_canceled_message": "",
|
||||
"systray_receive_started_title": "",
|
||||
"systray_receive_started_message": "",
|
||||
"gui_all_modes_history": "",
|
||||
"gui_all_modes_clear_history": "",
|
||||
"gui_all_modes_transfer_started": "",
|
||||
"gui_all_modes_transfer_finished_range": "",
|
||||
"gui_all_modes_transfer_finished": "",
|
||||
"gui_all_modes_transfer_canceled_range": "",
|
||||
"gui_all_modes_transfer_canceled": "",
|
||||
"gui_all_modes_progress_complete": "",
|
||||
"gui_all_modes_progress_starting": "",
|
||||
"gui_all_modes_progress_eta": "",
|
||||
"gui_share_mode_no_files": "",
|
||||
"gui_share_mode_autostop_timer_waiting": "",
|
||||
"gui_receive_mode_no_files": "",
|
||||
"gui_receive_mode_autostop_timer_waiting": ""
|
||||
}
|
@ -8,7 +8,7 @@
|
||||
"not_a_readable_file": "{0:s} is geen leesbaar bestand.",
|
||||
"no_available_port": "Er is geen poort beschikbaar om de onion-dienst op te starten",
|
||||
"other_page_loaded": "Adres geladen",
|
||||
"close_on_timeout": "Gestopt omdat de automatische time-out bereikt is",
|
||||
"close_on_autostop_timer": "Gestopt omdat de automatische time-out bereikt is",
|
||||
"closing_automatically": "Gestopt omdat de download is afgerond",
|
||||
"timeout_download_still_running": "Bezig met wachten op afronden van download",
|
||||
"large_filesize": "Waarschuwing: het versturen van grote bestanden kan uren duren",
|
||||
@ -21,7 +21,7 @@
|
||||
"systray_download_canceled_message": "De gebruiker heeft de download afgebroken",
|
||||
"help_local_only": "Tor niet gebruiken (alleen voor ontwikkelingsdoeleinden)",
|
||||
"help_stay_open": "Blijven delen na afronden van eerste download",
|
||||
"help_shutdown_timeout": "Stoppen met delen na het opgegeven aantal seconden",
|
||||
"help_autostop_timer": "Stoppen met delen na het opgegeven aantal seconden",
|
||||
"help_stealth": "Client-authorisatie gebruiken (geavanceerd)",
|
||||
"help_debug": "Log OnionShare fouten naar stdout, en web fouten naar disk",
|
||||
"help_filename": "Lijst van bestanden of mappen om te delen",
|
||||
@ -73,7 +73,7 @@
|
||||
"gui_settings_button_save": "Opslaan",
|
||||
"gui_settings_button_cancel": "Annuleren",
|
||||
"gui_settings_button_help": "Help",
|
||||
"gui_settings_shutdown_timeout": "Stop het delen om:",
|
||||
"gui_settings_autostop_timer": "Stop het delen om:",
|
||||
"settings_saved": "Instellingen opgeslagen in {}",
|
||||
"settings_error_unknown": "Kan geen verbinding maken met de Tor controller omdat je instellingen nergens op slaan.",
|
||||
"settings_error_automatic": "Kon geen verbinding maken met de Tor controller. Draait Tor Browser (beschikbaar via torproject.org) in de achtergrond?",
|
||||
@ -97,8 +97,8 @@
|
||||
"gui_tor_connection_ask_quit": "Afsluiten",
|
||||
"gui_tor_connection_error_settings": "Probeer hoe OnionShare verbind met het Tor network te veranderen in de instellingen.",
|
||||
"gui_tor_connection_canceled": "Kon niet verbinden met Tor.\n\nWees er zeker van dat je verbonden bent met het internet, herstart OnionShare en configureer de verbinding met Tor.",
|
||||
"gui_server_started_after_timeout": "De auto-stop timer liep af voordat de server startte.\nMaak een nieuwe share aan.",
|
||||
"gui_server_timeout_expired": "De auto-stop timer is al verlopen.\nStel een nieuwe tijd in om te beginnen met delen.",
|
||||
"gui_server_started_after_autostop_timer": "De auto-stop timer liep af voordat de server startte.\nMaak een nieuwe share aan.",
|
||||
"gui_server_autostop_timer_expired": "De auto-stop timer is al verlopen.\nStel een nieuwe tijd in om te beginnen met delen.",
|
||||
"share_via_onionshare": "Deel via OnionShare",
|
||||
"give_this_url_receive": "Geef dit adres aan de afzender:",
|
||||
"give_this_url_receive_stealth": "Geef dit adres en de HidServAuth-regel aan de afzender:",
|
||||
@ -108,12 +108,12 @@
|
||||
"timeout_upload_still_running": "Wachten op voltooiing van de upload",
|
||||
"gui_share_start_server": "Start met delen",
|
||||
"gui_share_stop_server": "Stop met delen",
|
||||
"gui_share_stop_server_shutdown_timeout": "Stop met Delen ({}s resterend)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer eindigt bij {}",
|
||||
"gui_share_stop_server_autostop_timer": "Stop met Delen ({}s resterend)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Auto-stop timer eindigt bij {}",
|
||||
"gui_receive_start_server": "Start Ontvangstmodus",
|
||||
"gui_receive_stop_server": "Stop Ontvangstmodus",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stop Ontvangstmodus ({}s resterend)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer stopt bij {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Stop Ontvangstmodus ({}s resterend)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop timer stopt bij {}",
|
||||
"gui_no_downloads": "Nog Geen Downloads",
|
||||
"gui_copied_url_title": "Gekopieerd OnionShare Adres",
|
||||
"gui_copied_hidservauth_title": "HidServAuth gekopieerd",
|
||||
@ -132,7 +132,7 @@
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Gebruik custom bridges",
|
||||
"gui_settings_tor_bridges_custom_label": "Je kan bridges krijgen via <a href=\"https://bridges.torproject.org/options\">1https://bridges.torproject.org</a>2",
|
||||
"gui_settings_tor_bridges_invalid": "Geen van de bridges die je hebt toegevoegd werken. \nControleer ze of voeg andere toe.",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Gebruik auto-stop timer",
|
||||
"gui_settings_autostop_timer_checkbox": "Gebruik auto-stop timer",
|
||||
"error_tor_protocol_error_unknown": "Er was een onbekende fout met Tor",
|
||||
"error_invalid_private_key": "Dit type privésleutel wordt niet ondersteund",
|
||||
"gui_tor_connection_lost": "De verbinding met Tor is verbroken.",
|
||||
|
@ -11,7 +11,7 @@
|
||||
"give_this_url_receive_stealth": "Gi denne adressen og HidServAuth-linjen til avsenderen:",
|
||||
"not_a_readable_file": "{0:s} er ikke en lesbar fil.",
|
||||
"no_available_port": "Fant ikke tilgjengelig port for oppstart av løktjenesten",
|
||||
"close_on_timeout": "Stoppet fordi tidsavbruddsuret gikk ut",
|
||||
"close_on_autostop_timer": "Stoppet fordi tidsavbruddsuret gikk ut",
|
||||
"closing_automatically": "Stoppet fordi nedlasting fullførtes",
|
||||
"timeout_download_still_running": "Venter på at nedlastingen skal fullføres",
|
||||
"large_filesize": "Advarsel: forsendelse av stor deling kan ta timer",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "En bruker startet opplasting av filer til din datamaskin",
|
||||
"help_local_only": "Ikke bruk Tor (kun i utviklingsøyemed)",
|
||||
"help_stay_open": "Fortsett å dele etter at filene har blitt sendt",
|
||||
"help_shutdown_timeout": "Stopp deling etter et gitt antall sekunder",
|
||||
"help_autostop_timer": "Stopp deling etter et gitt antall sekunder",
|
||||
"help_stealth": "Bruk klientidentifisering (avansert)",
|
||||
"help_receive": "Motta delinger istedenfor å sende dem",
|
||||
"help_debug": "Log OnionShare-feil til stdout, og vev-feil til disk",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "Velg",
|
||||
"gui_share_start_server": "Start deling",
|
||||
"gui_share_stop_server": "Stopp deling",
|
||||
"gui_share_stop_server_shutdown_timeout": "Stopp deling ({}s gjenstår)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}",
|
||||
"gui_share_stop_server_autostop_timer": "Stopp deling ({}s gjenstår)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
|
||||
"gui_receive_start_server": "Start mottaksmodus",
|
||||
"gui_receive_stop_server": "Stopp mottaksmodus",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Stopp mottaksmodus ({}s gjenstår)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({}s gjenstår)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
|
||||
"gui_copy_url": "Kopier nettadresse",
|
||||
"gui_copy_hidservauth": "Kopier HidServAuth",
|
||||
"gui_downloads": "Nedlastingshistorikk",
|
||||
@ -69,7 +69,7 @@
|
||||
"gui_settings_window_title": "Innstillinger",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Hva er dette?</a>",
|
||||
"gui_settings_stealth_option": "Bruk klientidentifisering",
|
||||
"gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå\nklikke for å kopiere din HidServAuth-linje.",
|
||||
"gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå klikke for å kopiere din HidServAuth-linje.",
|
||||
"gui_settings_autoupdate_label": "Se etter ny versjon",
|
||||
"gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig",
|
||||
"gui_settings_autoupdate_timestamp": "Sist sjekket: {}",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Lagre",
|
||||
"gui_settings_button_cancel": "Avbryt",
|
||||
"gui_settings_button_help": "Hjelp",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Bruk tidsavbruddsur",
|
||||
"gui_settings_shutdown_timeout": "Stopp deling ved:",
|
||||
"gui_settings_autostop_timer_checkbox": "Bruk tidsavbruddsur",
|
||||
"gui_settings_autostop_timer": "Stopp deling ved:",
|
||||
"settings_saved": "Innstillinger lagret i {}",
|
||||
"settings_error_unknown": "Kan ikke koble til Tor-kontroller fordi innstillingene dine ikke gir mening.",
|
||||
"settings_error_automatic": "Kunne ikke koble til Tor-kontrolleren. Kjører Tor-nettleseren (tilgjengelig fra torproject.org) i bakgrunnen?",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "Prøv å endre hvordan OnionShare kobler til Tor-nettverket i innstillingene.",
|
||||
"gui_tor_connection_canceled": "Kunne ikke koble til Tor.\n\nForsikre deg om at du er koblet til Internett, åpne så OnionShare igjen, og sett opp dets tilkobling til Tor.",
|
||||
"gui_tor_connection_lost": "Frakoblet fra Tor.",
|
||||
"gui_server_started_after_timeout": "Tidsavbruddsuret gikk ut før tjeneren startet.\nLag en ny deling.",
|
||||
"gui_server_timeout_expired": "Tidsavbruddsuret har gått ut allerede.\nOppdater det for å starte deling.",
|
||||
"gui_server_started_after_autostop_timer": "Tidsavbruddsuret gikk ut før tjeneren startet.\nLag en ny deling.",
|
||||
"gui_server_autostop_timer_expired": "Tidsavbruddsuret har gått ut allerede.\nOppdater det for å starte deling.",
|
||||
"share_via_onionshare": "OnionShare det",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Bruk gammeldagse adresser",
|
||||
"gui_save_private_key_checkbox": "Bruk en vedvarende adresse",
|
||||
@ -212,9 +212,10 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (kalkulerer)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Ingen filer sendt enda",
|
||||
"gui_share_mode_timeout_waiting": "Venter på fullføring av forsendelse",
|
||||
"gui_share_mode_autostop_timer_waiting": "Venter på fullføring av forsendelse",
|
||||
"gui_receive_mode_no_files": "Ingen filer mottatt enda",
|
||||
"gui_receive_mode_timeout_waiting": "Venter på fullføring av mottak",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Venter på fullføring av mottak",
|
||||
"gui_all_modes_transfer_canceled_range": "Avbrutt {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Avbrutt {}"
|
||||
"gui_all_modes_transfer_canceled": "Avbrutt {}",
|
||||
"gui_settings_onion_label": "Løk-innstillinger"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} nie jest plikiem do odczytu.",
|
||||
"no_available_port": "Nie można znaleźć dostępnego portu aby włączyć usługę onion",
|
||||
"other_page_loaded": "Adres został wczytany",
|
||||
"close_on_timeout": "Zatrzymano, gdyż upłynął czas",
|
||||
"close_on_autostop_timer": "Zatrzymano, gdyż upłynął czas",
|
||||
"closing_automatically": "Zatrzymano, gdyż pobieranie zostało ukończone",
|
||||
"timeout_download_still_running": "Czekam na ukończenie pobierania",
|
||||
"large_filesize": "Uwaga: Wysyłanie dużego pliku może zająć kilka godzin",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "Użytkownik rozpoczął wysyłanie plików na Twój komputer",
|
||||
"help_local_only": "Nie wykorzystuj sieci Tor (opcja zaawansowana)",
|
||||
"help_stay_open": "Kontynuuj udostępnianie po pierwszym pobraniu",
|
||||
"help_shutdown_timeout": "Przestań udostępniać po określonym czasie w sekundach",
|
||||
"help_autostop_timer": "Przestań udostępniać po określonym czasie w sekundach",
|
||||
"help_stealth": "Korzystaj z weryfikacji klienta (zaawansowane)",
|
||||
"help_receive": "Odbieraj dane zamiast je wysyłać",
|
||||
"help_debug": "Zapisz błędy OnionShare do stdout i zapisz błędy sieciowe na dysku",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Wybierz",
|
||||
"gui_share_start_server": "Rozpocznij udostępnianie",
|
||||
"gui_share_stop_server": "Zatrzymaj udostępnianie",
|
||||
"gui_share_stop_server_shutdown_timeout": "Zatrzymaj udostępnianie (zostało {}s)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Czas upłynie za {}",
|
||||
"gui_share_stop_server_autostop_timer": "Zatrzymaj udostępnianie (zostało {}s)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Czas upłynie za {}",
|
||||
"gui_receive_start_server": "Rozpocznij tryb odbierania",
|
||||
"gui_receive_stop_server": "Zatrzymaj tryb odbierania",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Zatrzymaj tryb odbierania (pozostało {}s)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Czas upływa za {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Zatrzymaj tryb odbierania (pozostało {}s)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Czas upływa za {}",
|
||||
"gui_copy_url": "Kopiuj adres załącznika",
|
||||
"gui_copy_hidservauth": "Kopiuj HidServAuth",
|
||||
"gui_downloads": "Historia pobierania",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Zapisz",
|
||||
"gui_settings_button_cancel": "Anuluj",
|
||||
"gui_settings_button_help": "Pomoc",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "Nie można połączyć się z kontrolerem Tor, ponieważ Twoje ustawienia nie mają sensu.",
|
||||
"settings_error_automatic": "Nie można połączyć się z kontrolerem Tor. Czy Tor Browser (dostępny na torproject.org) działa w tle?",
|
||||
"settings_error_socket_port": "Nie można połączyć się z kontrolerem Tor pod adresem {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s} não é um ficheiro legível.",
|
||||
"no_available_port": "Não foi possível encontrar um pórtico disponível para iniciar o serviço onion",
|
||||
"other_page_loaded": "Endereço carregado",
|
||||
"close_on_timeout": "Interrompido ao final da contagem do cronômetro automático",
|
||||
"close_on_autostop_timer": "Interrompido ao final da contagem do cronômetro automático",
|
||||
"closing_automatically": "Interrompido após o término da transferência",
|
||||
"timeout_download_still_running": "Esperando que o download termine",
|
||||
"large_filesize": "Aviso: O envio de arquivos grandes pode levar várias horas",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "Alguém começou a carregar arquivos no seu computador",
|
||||
"help_local_only": "Não use Tor (unicamente para programação)",
|
||||
"help_stay_open": "Continuar a compartilhar após o envio de documentos",
|
||||
"help_shutdown_timeout": "Parar de compartilhar após um número determinado de segundos",
|
||||
"help_autostop_timer": "Parar de compartilhar após um número determinado de segundos",
|
||||
"help_stealth": "Usar autorização de cliente (avançado)",
|
||||
"help_receive": "Receber compartilhamentos ao invés de enviá-los",
|
||||
"help_debug": "Registrar erros do OnionShare no stdout e erros de rede, no disco",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Escolher",
|
||||
"gui_share_start_server": "Começar a compartilhar",
|
||||
"gui_share_stop_server": "Parar de compartilhar",
|
||||
"gui_share_stop_server_shutdown_timeout": "Parar de compartilhar ({}segundos para terminar)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "O cronômetro automático termina às",
|
||||
"gui_share_stop_server_autostop_timer": "Parar de compartilhar ({}segundos para terminar)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "O cronômetro automático termina às",
|
||||
"gui_receive_start_server": "Modo Começar a Receber",
|
||||
"gui_receive_stop_server": "Modo Parar de Receber",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Modo Parar de Receber ({}segundos para terminar)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "O cronômetro automático termina às {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Modo Parar de Receber ({}segundos para terminar)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "O cronômetro automático termina às {}",
|
||||
"gui_copy_url": "Copiar endereço",
|
||||
"gui_copy_hidservauth": "Copiar HidServAuth",
|
||||
"gui_downloads": "Histórico de download",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Salvar",
|
||||
"gui_settings_button_cancel": "Cancelar",
|
||||
"gui_settings_button_help": "Ajuda",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Usar cronômetro para encerrar automaticamente",
|
||||
"gui_settings_shutdown_timeout": "Encerrar o compartilhamento às:",
|
||||
"gui_settings_autostop_timer_checkbox": "Usar cronômetro para encerrar automaticamente",
|
||||
"gui_settings_autostop_timer": "Encerrar o compartilhamento às:",
|
||||
"settings_error_unknown": "Impossível conectar-se ao controlador do Tor, porque as suas configurações estão confusas.",
|
||||
"settings_error_automatic": "Não foi possível conectar ao controlador do Tor. O Navegador Tor (disponível no site torproject.org) está rodando em segundo plano?",
|
||||
"settings_error_socket_port": "Não pode ligar ao controlador do Tor em {}:{}.",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "Tente mudar nas configurações a forma como OnionShare se conecta à rede Tor.",
|
||||
"gui_tor_connection_canceled": "Não foi possível conectar à rede Tor.\n\nVerifique se você está conectada à Internet, e então abra OnionShare novamente e configure sua conexão à rede Tor.",
|
||||
"gui_tor_connection_lost": "Desconectado do Tor.",
|
||||
"gui_server_started_after_timeout": "O tempo esgotou antes do servidor iniciar.\nPor favor, crie um novo compartilhamento.",
|
||||
"gui_server_timeout_expired": "O temporizador já esgotou.\nPor favor, atualize-o antes de começar a compartilhar.",
|
||||
"gui_server_started_after_autostop_timer": "O tempo esgotou antes do servidor iniciar.\nPor favor, crie um novo compartilhamento.",
|
||||
"gui_server_autostop_timer_expired": "O temporizador já esgotou.\nPor favor, atualize-o antes de começar a compartilhar.",
|
||||
"share_via_onionshare": "Compartilhar usando OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo",
|
||||
"gui_save_private_key_checkbox": "Usar o mesmo endereço",
|
||||
@ -206,7 +206,12 @@
|
||||
"gui_all_modes_transfer_finished": "Transferido {}",
|
||||
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Cancelado {}",
|
||||
"gui_share_mode_timeout_waiting": "Esperando para completar o envio",
|
||||
"gui_share_mode_autostop_timer_waiting": "Esperando para completar o envio",
|
||||
"gui_receive_mode_no_files": "Nenhum arquivo recebido",
|
||||
"gui_receive_mode_timeout_waiting": "Esperando para completar o recebimento"
|
||||
"gui_receive_mode_autostop_timer_waiting": "Esperando para completar o recebimento",
|
||||
"gui_settings_onion_label": "Configurando Onion",
|
||||
"systray_page_loaded_message": "Endereço OnionShare foi carregado",
|
||||
"gui_all_modes_progress_complete": "%p%, {0:s} em curso.",
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (calculando)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, Tempo aproximado: {1:s}, %p%"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "Outra página tem sido carregada",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Escolha",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "Cancelar",
|
||||
"gui_settings_button_help": "Ajuda",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Alegeți",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "Salvare",
|
||||
"gui_settings_button_cancel": "Anulare",
|
||||
"gui_settings_button_help": "Ajutor",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -36,7 +36,7 @@
|
||||
"give_this_url_receive_stealth": "Передайте этот адрес и строку HidServAuth отправителю:",
|
||||
"not_a_readable_file": "{0:s} не читаемый файл.",
|
||||
"no_available_port": "Не удалось найти доступный порт для запуска \"лукового\" сервиса",
|
||||
"close_on_timeout": "Время ожидания таймера истекло, сервис остановлен",
|
||||
"close_on_autostop_timer": "Время ожидания таймера истекло, сервис остановлен",
|
||||
"closing_automatically": "Загрузка завершена, сервис остановлен",
|
||||
"timeout_download_still_running": "Ожидаем завершения скачивания",
|
||||
"timeout_upload_still_running": "Ожидаем завершения загрузки",
|
||||
@ -51,7 +51,7 @@
|
||||
"systray_upload_started_message": "Пользователь начал загрузку файлов на Ваш компьютер",
|
||||
"help_local_only": "Не использовать Tor (только для разработки)",
|
||||
"help_stay_open": "Продолжить отправку после первого скачивания",
|
||||
"help_shutdown_timeout": "Остановить отправку после заданного количества секунд",
|
||||
"help_autostop_timer": "Остановить отправку после заданного количества секунд",
|
||||
"help_stealth": "Использовать авторизацию клиента (дополнительно)",
|
||||
"help_receive": "Получать загрузки вместо их отправки",
|
||||
"help_debug": "Направлять сообщения об ошибках OnionShare в stdout, ошибки сети сохранять на диск",
|
||||
@ -60,12 +60,12 @@
|
||||
"gui_drag_and_drop": "Перетащите сюда файлы и/или папки,\nкоторые хотите отправить.",
|
||||
"gui_share_start_server": "Начать отправку",
|
||||
"gui_share_stop_server": "Закончить отправку",
|
||||
"gui_share_stop_server_shutdown_timeout": "Остановить отправку (осталось {}с)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Время таймера истекает в {}",
|
||||
"gui_share_stop_server_autostop_timer": "Остановить отправку (осталось {}с)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
|
||||
"gui_receive_start_server": "Включить режим получения",
|
||||
"gui_receive_stop_server": "Выключить режим получения",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Выключить режим получения (осталось {}с)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Время таймера истекает в {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Выключить режим получения (осталось {}с)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
|
||||
"gui_copy_hidservauth": "Скопировать строку HidServAuth",
|
||||
"gui_downloads": "История скачиваний",
|
||||
"gui_no_downloads": "Скачиваний пока нет ",
|
||||
@ -113,8 +113,8 @@
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Использовать пользовательские \"мосты\"",
|
||||
"gui_settings_tor_bridges_custom_label": "Получить настройки \"мостов\" можно здесь: <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Ни один из добавленных вами \"мостов\" не работает.\nПроверьте их снова или добавьте другие.",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Использовать таймер",
|
||||
"gui_settings_shutdown_timeout": "Остановить загрузку в:",
|
||||
"gui_settings_autostop_timer_checkbox": "Использовать таймер",
|
||||
"gui_settings_autostop_timer": "Остановить загрузку в:",
|
||||
"settings_error_unknown": "Невозможно произвести подключение к контроллеру Tor: некорректные настройки.",
|
||||
"settings_error_automatic": "Ошибка подключения к контроллеру Tor. Запущен ли Tor Browser (torproject.org) в фоновом режиме?",
|
||||
"settings_error_socket_port": "Ошибка подключения к контроллеру Tor в {}:{}.",
|
||||
@ -138,8 +138,8 @@
|
||||
"gui_tor_connection_error_settings": "Попробуйте изменить способ подключения OnionShare к сети Tor в разделе \"Настройки\".",
|
||||
"gui_tor_connection_canceled": "Ошибка подключения к Tor.\n\nПожалуйста, убедитесь что подключены к сети Интернет. Откройте OnionShare снова и настройте подключение к Tor.",
|
||||
"gui_tor_connection_lost": "Отключено от Tor.",
|
||||
"gui_server_started_after_timeout": "Время таймера истекло до того, как сервер был запущен.\nПожалуйста, отправьте файлы заново.",
|
||||
"gui_server_timeout_expired": "Время таймера истекло.\nПожалуйста, обновите его для начала отправки.",
|
||||
"gui_server_started_after_autostop_timer": "Время таймера истекло до того, как сервер был запущен.\nПожалуйста, отправьте файлы заново.",
|
||||
"gui_server_autostop_timer_expired": "Время таймера истекло.\nПожалуйста, обновите его для начала отправки.",
|
||||
"share_via_onionshare": "OnionShare это",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Используйте устаревшие адреса",
|
||||
"gui_save_private_key_checkbox": "Используйте постоянный адрес",
|
||||
@ -210,7 +210,7 @@
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (вычисляем)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Пока нет отправленных файлов",
|
||||
"gui_share_mode_timeout_waiting": "Ожидается завершение отправки",
|
||||
"gui_share_mode_autostop_timer_waiting": "Ожидается завершение отправки",
|
||||
"gui_receive_mode_no_files": "Пока нет полученных файлов",
|
||||
"gui_receive_mode_timeout_waiting": "Ожидается завершение загрузки"
|
||||
"gui_receive_mode_autostop_timer_waiting": "Ожидается завершение загрузки"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "Izberi",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "Pomoč",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -40,12 +40,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -107,8 +107,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -134,8 +134,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_connect_to_tor_for_onion_settings": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
|
@ -8,9 +8,9 @@
|
||||
"ctrlc_to_stop": "Tryck ned Ctrl+C för att stoppa servern",
|
||||
"not_a_file": "{0:s} är inte en giltig fil.",
|
||||
"not_a_readable_file": "{0:s} är inte en läsbar fil.",
|
||||
"no_available_port": "Kunde inte hitta en ledig kort för att börja onion-tjänsten",
|
||||
"no_available_port": "Kunde inte hitta en ledig kort för att starta onion-tjänsten",
|
||||
"other_page_loaded": "Adress laddad",
|
||||
"close_on_timeout": "Stoppad för att automatiska stopp-timern tiden tog slut",
|
||||
"close_on_autostop_timer": "Stoppad för att tiden för den automatiska stopp-tidtagaren löpte ut",
|
||||
"closing_automatically": "Stoppad för att hämtningen är klar",
|
||||
"timeout_download_still_running": "Väntar på att nedladdningen ska bli klar",
|
||||
"timeout_upload_still_running": "Väntar på att uppladdningen ska bli klar",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "En användare började ladda upp filer på din dator",
|
||||
"help_local_only": "Använd inte Tor (endast för utveckling)",
|
||||
"help_stay_open": "Fortsätt dela efter att filer har skickats",
|
||||
"help_shutdown_timeout": "Avbryt delning efter ett bestämt antal sekunder",
|
||||
"help_autostop_timer": "Sluta dela efter ett bestämt antal sekunder",
|
||||
"help_stealth": "Använd klient-auktorisering (avancerat)",
|
||||
"help_receive": "Ta emot delningar istället för att skicka dem",
|
||||
"help_debug": "Logga OnionShare fel till stdout och webbfel till hårddisken",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "Välj",
|
||||
"gui_share_start_server": "Börja dela",
|
||||
"gui_share_stop_server": "Avbryt delning",
|
||||
"gui_share_stop_server_shutdown_timeout": "Avbryt Delning ({}s kvarstår)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-timern avslutar vid {}",
|
||||
"gui_receive_start_server": "Börja mottagarläge",
|
||||
"gui_share_stop_server_autostop_timer": "Avbryt Delning ({}s kvarstår)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
|
||||
"gui_receive_start_server": "Starta mottagarläge",
|
||||
"gui_receive_stop_server": "Avsluta Mottagarläge",
|
||||
"gui_receive_stop_server_shutdown_timeout": "Avsluta Mottagarläge ({}s kvarstår)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer avslutas kl {}",
|
||||
"gui_receive_stop_server_autostop_timer": "Avsluta Mottagarläge ({}s kvarstår)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
|
||||
"gui_copy_url": "Kopiera Adress",
|
||||
"gui_copy_hidservauth": "Kopiera HidServAuth",
|
||||
"gui_downloads": "Nedladdningshistorik",
|
||||
@ -70,7 +70,7 @@
|
||||
"gui_settings_window_title": "Inställningar",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>Vad är det här?</a>",
|
||||
"gui_settings_stealth_option": "Använd klientauktorisering",
|
||||
"gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär att du kan nu\nklicka för att kopiera din HidServAuth.",
|
||||
"gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär det att du nu kan klicka för att kopiera din HidServAuth.",
|
||||
"gui_settings_autoupdate_label": "Sök efter ny version",
|
||||
"gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig",
|
||||
"gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "Spara",
|
||||
"gui_settings_button_cancel": "Avbryt",
|
||||
"gui_settings_button_help": "Hjälp",
|
||||
"gui_settings_shutdown_timeout_checkbox": "Använd automatiska stopp-timern",
|
||||
"gui_settings_shutdown_timeout": "Stoppa delningen vid:",
|
||||
"gui_settings_autostop_timer_checkbox": "Använd den automatiska stopp-tidtagaren",
|
||||
"gui_settings_autostop_timer": "Stoppa delningen vid:",
|
||||
"settings_error_unknown": "Kan inte ansluta till Tor-regulatorn eftersom dina inställningar inte är vettiga.",
|
||||
"settings_error_automatic": "Kunde inte ansluta till Tor-regulatorn. Körs Tor Browser (tillgänglig från torproject.org) i bakgrunden?",
|
||||
"settings_error_socket_port": "Det går inte att ansluta till Tor-regulatorn på {}:{}.",
|
||||
@ -117,7 +117,7 @@
|
||||
"settings_error_bundled_tor_not_supported": "Användning av Tor-versionen som följer med OnionShare fungerar inte i utvecklarläge på Windows eller macOS.",
|
||||
"settings_error_bundled_tor_timeout": "Det tar för lång tid att ansluta till Tor. Kanske är du inte ansluten till Internet, eller har en felaktig systemklocka?",
|
||||
"settings_error_bundled_tor_broken": "OnionShare kunde inte ansluta till Tor i bakgrunden:\n{}",
|
||||
"settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
|
||||
"settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor-version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
|
||||
"error_tor_protocol_error": "Det fanns ett fel med Tor: {}",
|
||||
"error_tor_protocol_error_unknown": "Det fanns ett okänt fel med Tor",
|
||||
"error_invalid_private_key": "Denna privata nyckeltyp stöds inte",
|
||||
@ -132,9 +132,9 @@
|
||||
"gui_tor_connection_error_settings": "Försök ändra hur OnionShare ansluter till Tor-nätverket i inställningarna.",
|
||||
"gui_tor_connection_canceled": "Kunde inte ansluta till Tor.\n\nSe till att du är ansluten till Internet, öppna sedan OnionShare och ställ in anslutningen till Tor.",
|
||||
"gui_tor_connection_lost": "Frånkopplad från Tor.",
|
||||
"gui_server_started_after_timeout": "Automatiska stopp-timern tog slut innan servern startade.\nVänligen gör en ny delning.",
|
||||
"gui_server_timeout_expired": "Automatiska stopp-timern har redan slutat.\nUppdatera den för att börja dela.",
|
||||
"share_via_onionshare": "OnionShare den",
|
||||
"gui_server_started_after_autostop_timer": "Tiden för den automatiska stopp-timern löpte ut innan servern startade.\nVänligen gör en ny delning.",
|
||||
"gui_server_autostop_timer_expired": "Tiden för den automatiska stopp-tidtagaren löpte redan ut.\nUppdatera den för att börja dela.",
|
||||
"share_via_onionshare": "Dela den med OnionShare",
|
||||
"gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser",
|
||||
"gui_save_private_key_checkbox": "Använd en beständig adress",
|
||||
"gui_share_url_description": "<b>Alla</b> med denna OnionShare-adress kan <b>hämta</b> dina filer med hjälp av <b>Tor Browser</b>: <img src='{}' />",
|
||||
@ -207,9 +207,10 @@
|
||||
"gui_all_modes_progress_starting": "{0} %s% (beräkning)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "Inga filer har skickats än",
|
||||
"gui_share_mode_timeout_waiting": "Väntar på att avsluta sändningen",
|
||||
"gui_share_mode_autostop_timer_waiting": "Väntar på att avsluta sändningen",
|
||||
"gui_receive_mode_no_files": "Inga filer har mottagits ännu",
|
||||
"gui_receive_mode_timeout_waiting": "Väntar på att avsluta mottagande",
|
||||
"gui_receive_mode_autostop_timer_waiting": "Väntar på att avsluta mottagande",
|
||||
"gui_all_modes_transfer_canceled_range": "Avbröt {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "Avbröt {}"
|
||||
"gui_all_modes_transfer_canceled": "Avbröt {}",
|
||||
"gui_settings_onion_label": "Inställningar för Onion"
|
||||
}
|
||||
|
@ -26,5 +26,5 @@
|
||||
"give_this_url_receive": "Bu adresi gönderene ver:",
|
||||
"not_a_readable_file": "{0:s} okunabilir bir dosya değil.",
|
||||
"no_available_port": "Onion servisini başlatmak için uygun bir port bulunamadı",
|
||||
"close_on_timeout": "Otomatik durma zamanlayıcısının bitmesi nedeniyle durdu"
|
||||
"close_on_autostop_timer": "Otomatik durma zamanlayıcısının bitmesi nedeniyle durdu"
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
@ -25,7 +25,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -104,8 +104,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -131,8 +131,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"close_on_autostop_timer": "",
|
||||
"closing_automatically": "",
|
||||
"timeout_download_still_running": "",
|
||||
"timeout_upload_still_running": "",
|
||||
@ -26,7 +26,7 @@
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_autostop_timer": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
@ -38,12 +38,12 @@
|
||||
"gui_choose_items": "",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_share_stop_server_autostop_timer": "",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_stop_server_autostop_timer": "",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_downloads": "",
|
||||
@ -105,8 +105,8 @@
|
||||
"gui_settings_button_save": "",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"gui_settings_autostop_timer_checkbox": "",
|
||||
"gui_settings_autostop_timer": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
@ -132,8 +132,8 @@
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"not_a_readable_file": "{0:s}不是可读文件.",
|
||||
"no_available_port": "找不到可用于开启onion服务的端口",
|
||||
"other_page_loaded": "地址已加载完成",
|
||||
"close_on_timeout": "终止 原因:自动停止计时器的时间已到",
|
||||
"close_on_autostop_timer": "停止原因:自动停止计时器的时间已到",
|
||||
"closing_automatically": "终止 原因:传输已完成",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "警告:分享大文件可能会用上数小时",
|
||||
@ -23,12 +23,12 @@
|
||||
"systray_download_canceled_message": "",
|
||||
"systray_upload_started_title": "",
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "不使用Tor(只限开发测试)",
|
||||
"help_local_only": "不使用Tor(仅开发测试)",
|
||||
"help_stay_open": "文件传输完成后继续分享",
|
||||
"help_shutdown_timeout": "超过给定时间(秒)后,终止分享.",
|
||||
"help_autostop_timer": "超过给定时间(秒)后终止分享",
|
||||
"help_stealth": "使用服务端认证(高级选项)",
|
||||
"help_receive": "仅接收分享的文件,不发送",
|
||||
"help_debug": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘",
|
||||
"help_receive": "仅接收分享的文件,不发送",
|
||||
"help_debug": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘",
|
||||
"help_filename": "要分享的文件或文件夹的列表",
|
||||
"help_config": "自定义JSON配置文件的路径(可选)",
|
||||
"gui_drag_and_drop": "将文件或文件夹拖动到这里来开始分享",
|
||||
@ -37,12 +37,12 @@
|
||||
"gui_choose_items": "选取",
|
||||
"gui_share_start_server": "开始分享",
|
||||
"gui_share_stop_server": "停止分享",
|
||||
"gui_share_stop_server_shutdown_timeout": "停止分享(还剩{}秒)",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "在{}自动停止",
|
||||
"gui_share_stop_server_autostop_timer": "停止分享(还剩{}秒)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "在{}自动停止",
|
||||
"gui_receive_start_server": "开启接受模式",
|
||||
"gui_receive_stop_server": "停止接受模式",
|
||||
"gui_receive_stop_server_shutdown_timeout": "停止接受模式(还剩{}秒)",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "在{}自动停止",
|
||||
"gui_receive_stop_server_autostop_timer": "停止接受模式(还剩{}秒)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "在{}自动停止",
|
||||
"gui_copy_url": "复制地址",
|
||||
"gui_copy_hidservauth": "复制HidServAuth",
|
||||
"gui_downloads": "",
|
||||
@ -56,20 +56,20 @@
|
||||
"gui_download_upload_progress_complete": "",
|
||||
"gui_download_upload_progress_starting": "",
|
||||
"gui_download_upload_progress_eta": "",
|
||||
"version_string": "版本: OnionShare {0:s} | https://onionshare.org/",
|
||||
"version_string": "版本: OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "再等等",
|
||||
"gui_share_quit_warning": "您有文件正在传输中...您确定要退出OnionShare吗?",
|
||||
"gui_receive_quit_warning": "您有文件还正在接收中...您确定要退出OnionShare吗?",
|
||||
"gui_quit_warning_quit": "退出",
|
||||
"gui_quit_warning_dont_quit": "取消",
|
||||
"error_rate_limit": "有人您对地址发出过多错误请求,这很可能说明有人在尝试猜测您的地址.因此为了安全OinionShare已终止服务.请重新开启分享并且向收件人发送新地址.",
|
||||
"error_rate_limit": "有人您对地址发出过多错误请求,这很可能说明有人在尝试猜测您的地址,因此为了安全OinionShare已终止服务。请重新开启分享并且向收件人发送新地址。",
|
||||
"zip_progress_bar_format": "压缩中: %p%",
|
||||
"error_stealth_not_supported": "要使用服务端认证,您至少需要的最低版本要求是:Tor 0.2.9.1-alpha (or Tor Browser 6.5)和python3-stem 1.5.0.两者缺一不可,同时需要.",
|
||||
"error_ephemeral_not_supported": "OnionShare至少同时需要Tor 0.2.7.1和python3-stem 1.4.0来运行.",
|
||||
"error_stealth_not_supported": "要使用服务端认证,您至少需要的最低版本要求是:Tor 0.2.9.1-alpha (or Tor Browser 6.5)和python3-stem 1.5.0。两者缺一不可,同时需要。",
|
||||
"error_ephemeral_not_supported": "OnionShare至少同时需要Tor 0.2.7.1和python3-stem 1.4.0来运行。",
|
||||
"gui_settings_window_title": "设置",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>这是什么?</a>",
|
||||
"gui_settings_stealth_option": "使用客户端认证",
|
||||
"gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以\n点击这里来复制您的HidServAuth.",
|
||||
"gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以点击这里来复制您的HidServAuth。",
|
||||
"gui_settings_autoupdate_label": "检查新版本",
|
||||
"gui_settings_autoupdate_option": "有新版本可用时告知我",
|
||||
"gui_settings_autoupdate_timestamp": "上次检查更新的时间:{}",
|
||||
@ -79,12 +79,12 @@
|
||||
"gui_settings_sharing_label": "分享设置",
|
||||
"gui_settings_close_after_first_download_option": "文件发送完成后停止分享",
|
||||
"gui_settings_connection_type_label": "OnionShare应如何连接Tor?",
|
||||
"gui_settings_connection_type_bundled_option": "使用OnionShare内置的tor",
|
||||
"gui_settings_connection_type_automatic_option": "尝试使用Tor Browser(Tor浏览器)的设置",
|
||||
"gui_settings_connection_type_bundled_option": "使用OnionShare内置的Tor",
|
||||
"gui_settings_connection_type_automatic_option": "尝试使用Tor Browser(Tor浏览器)的设置",
|
||||
"gui_settings_connection_type_control_port_option": "用特定端口连接",
|
||||
"gui_settings_connection_type_socket_file_option": "使用socket文档的设置连接",
|
||||
"gui_settings_connection_type_test_button": "测试tor连接",
|
||||
"gui_settings_control_port_label": "控制端口",
|
||||
"gui_settings_control_port_label": "控制端端口",
|
||||
"gui_settings_socket_file_label": "Socket配置文档",
|
||||
"gui_settings_socks_label": "SOCKS 端口",
|
||||
"gui_settings_authenticate_label": "Tor认证设置",
|
||||
@ -104,37 +104,37 @@
|
||||
"gui_settings_button_save": "保存",
|
||||
"gui_settings_button_cancel": "取消",
|
||||
"gui_settings_button_help": "帮助",
|
||||
"gui_settings_shutdown_timeout_checkbox": "使用自动停止计时器",
|
||||
"gui_settings_shutdown_timeout": "在(时间)停止分享",
|
||||
"gui_settings_autostop_timer_checkbox": "使用自动停止计时器",
|
||||
"gui_settings_autostop_timer": "停止分享时间:",
|
||||
"settings_error_unknown": "无法连接Tor控制件,因为您的设置无法被理解.",
|
||||
"settings_error_automatic": "无法连接tor控制件.Tor浏览器是否在后台工作?(从torproject.org可以获得Tor Browser)",
|
||||
"settings_error_socket_port": "在socket端口{}:{}无法连接tor控制件.",
|
||||
"settings_error_socket_file": "无法使用socket配置文档的设置连接tor控制件",
|
||||
"settings_error_auth": "已连接到了{}:{},但是无法认证,也许这不是tor控制件?",
|
||||
"settings_error_socket_file": "无法使用socket配置文档{}的设置连接Tor控制件。",
|
||||
"settings_error_auth": "已连接到了{}:{},但是无法认证,也许这不是tor控制件?",
|
||||
"settings_error_missing_password": "已连接到tor控制件,但需要密码来认证.",
|
||||
"settings_error_unreadable_cookie_file": "已连接到tor控制件,但可能密码错误,或者没有读取cookie文件的权限.",
|
||||
"settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式",
|
||||
"settings_error_unreadable_cookie_file": "已连接到Tor控制件,但可能密码错误,或者没有读取cookie文件的权限。",
|
||||
"settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式。",
|
||||
"settings_error_bundled_tor_timeout": "尝试连接tor的用时过长,也许您的网络有问题,或者是系统时间不准确?",
|
||||
"settings_error_bundled_tor_broken": "OnionShare无法在后台连接Tor\n{}",
|
||||
"settings_test_success": "已连接到Tor控制件\n\nTor版本: {}\n支持短期onion服务: {}.\n支持客户端认证: {}.\n支持新一代.onion地址: {}.",
|
||||
"settings_test_success": "已连接到Tor控制件\n\nTor版本:{}\n支持短期onion服务:{}。\n支持客户端认证:{}。\n支持新一代.onion地址:{}。",
|
||||
"error_tor_protocol_error": "Tor出现错误: {}",
|
||||
"error_tor_protocol_error_unknown": "Tor出现未知错误",
|
||||
"error_invalid_private_key": "不支持这种类型的私钥",
|
||||
"connecting_to_tor": "正在连接Tor网络",
|
||||
"update_available": "有新版本的OnionShare可用:<a href='{}'>请点击这里</a> 来获得.<br><br>您在使用的版本为 {} 最新的可用版本为 {}.",
|
||||
"update_error_check_error": "无法检查更新:OnionShare官网对最新版本无法识别'{}'…",
|
||||
"update_error_check_error": "无法检查更新:OnionShare官网对最新版本无法识别'{}'…",
|
||||
"update_error_invalid_latest_version": "无法检查更新:也许您没有连接到Tor?或者OnionShare官网不可用?",
|
||||
"update_not_available": "您现在运行的OnionShare为最新版本.",
|
||||
"gui_tor_connection_ask": "打开设置来查看Tor连接?",
|
||||
"gui_tor_connection_ask_open_settings": "是的",
|
||||
"gui_tor_connection_ask_quit": "退出",
|
||||
"gui_tor_connection_error_settings": "请尝试在设置中设定OnionShare连接Tor的方式.",
|
||||
"gui_tor_connection_canceled": "无法连接Tor.\n\n请确保您一连接到网络,然后重启OnionShare并设置Tor连接.",
|
||||
"gui_tor_connection_canceled": "无法连接Tor。\n\n请确保您一连接到网络,然后重启OnionShare并设置Tor连接。",
|
||||
"gui_tor_connection_lost": "已和Tor断开连接.",
|
||||
"gui_server_started_after_timeout": "在服务开始之前自动停止计时器的时间已到.\n请建立新的分享.",
|
||||
"gui_server_timeout_expired": "自动停止计时器的时间已到.\n请更新其设置来开始分享.",
|
||||
"gui_server_started_after_autostop_timer": "在服务开始之前自动停止计时器的时间已到.\n请建立新的分享.",
|
||||
"gui_server_autostop_timer_expired": "自动停止计时器的时间已到。\n请更新其设置来开始分享。",
|
||||
"share_via_onionshare": "用OnionShare来分享",
|
||||
"gui_use_legacy_v2_onions_checkbox": "使用古老的地址",
|
||||
"gui_use_legacy_v2_onions_checkbox": "使用旧的地址",
|
||||
"gui_save_private_key_checkbox": "使用长期地址",
|
||||
"gui_share_url_description": "<b>任何人</b>只要拥有这个OnionShare 地址,都可以用<b>Tor浏览器</b>来从您的设备进行文件<b>下载</b>:<img src='{}' />",
|
||||
"gui_receive_url_description": "<b>任何人</b>只要拥有这个OnionShare 地址,都可以用<b>Tor浏览器</b>来给你的设备进行文件<b>上传</b>:<img src='{}' />",
|
||||
@ -179,7 +179,7 @@
|
||||
"gui_upload_finished_range": "",
|
||||
"gui_upload_finished": "",
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "无法打开文件夹,原因:nautilus不可用.文件在这里: {}",
|
||||
"gui_open_folder_error_nautilus": "无法打开文件夹,原因:nautilus不可用。文件在这里:{}",
|
||||
"gui_settings_language_label": "首选语言",
|
||||
"gui_settings_language_changed_notice": "请重启OnionShare以使您的语言改变设定生效.",
|
||||
"gui_add_files": "添加文件",
|
||||
@ -203,13 +203,13 @@
|
||||
"gui_all_modes_transfer_started": "已开始{}",
|
||||
"gui_all_modes_transfer_finished_range": "已传输 {} - {}",
|
||||
"gui_all_modes_transfer_finished": "已传输完成 {}",
|
||||
"gui_all_modes_progress_complete": "%p%, {0:s} 已完成.",
|
||||
"gui_all_modes_progress_complete": "%p%,{0:s} 已完成。",
|
||||
"gui_all_modes_progress_starting": "{0:s}, %p% (计算中)",
|
||||
"gui_all_modes_progress_eta": "{0:s}, 预计完成时间: {1:s}, %p%",
|
||||
"gui_share_mode_no_files": "还没有文件发出",
|
||||
"gui_share_mode_timeout_waiting": "等待结束发送",
|
||||
"gui_share_mode_autostop_timer_waiting": "等待结束发送",
|
||||
"gui_receive_mode_no_files": "还没有接收文件",
|
||||
"gui_receive_mode_timeout_waiting": "等待接收完成",
|
||||
"gui_receive_mode_autostop_timer_waiting": "等待接收完成",
|
||||
"gui_settings_onion_label": "Onion设置",
|
||||
"gui_all_modes_transfer_canceled_range": "已取消 {} - {}",
|
||||
"gui_all_modes_transfer_canceled": "已取消 {}"
|
||||
|
@ -1,19 +1,19 @@
|
||||
{
|
||||
"config_onion_service": "",
|
||||
"preparing_files": "",
|
||||
"give_this_url": "",
|
||||
"give_this_url_stealth": "",
|
||||
"give_this_url_receive": "",
|
||||
"give_this_url_receive_stealth": "",
|
||||
"ctrlc_to_stop": "",
|
||||
"not_a_file": "",
|
||||
"not_a_readable_file": "",
|
||||
"no_available_port": "",
|
||||
"other_page_loaded": "",
|
||||
"close_on_timeout": "",
|
||||
"closing_automatically": "",
|
||||
"config_onion_service": "正在端口{0:d}啟動onion服務...",
|
||||
"preparing_files": "壓縮檔案中...",
|
||||
"give_this_url": "請將這串地址交給接收者:",
|
||||
"give_this_url_stealth": "請將這串地址以及HidServAuth交給接收者:",
|
||||
"give_this_url_receive": "請將這串地址交給傳送者:",
|
||||
"give_this_url_receive_stealth": "請將這串地址以及HidServAuth交給傳送者:",
|
||||
"ctrlc_to_stop": "按下Ctrl+C以停止服務",
|
||||
"not_a_file": "{0:s} 不是一個可用的檔案。",
|
||||
"not_a_readable_file": "{0:s} 不是一個可讀取的檔案。",
|
||||
"no_available_port": "找不到一個可用的端口來啟動onion服務",
|
||||
"other_page_loaded": "已載入的地址",
|
||||
"close_on_autostop_timer": "因計數器超時,已停止",
|
||||
"closing_automatically": "因傳輸完成,已停止",
|
||||
"timeout_download_still_running": "",
|
||||
"large_filesize": "",
|
||||
"large_filesize": "警告:傳輸巨大的檔案將有可能耗時數小時以上",
|
||||
"systray_menu_exit": "離開",
|
||||
"systray_download_started_title": "",
|
||||
"systray_download_started_message": "",
|
||||
@ -23,116 +23,116 @@
|
||||
"systray_download_canceled_message": "",
|
||||
"systray_upload_started_title": "",
|
||||
"systray_upload_started_message": "",
|
||||
"help_local_only": "",
|
||||
"help_stay_open": "",
|
||||
"help_shutdown_timeout": "",
|
||||
"help_stealth": "",
|
||||
"help_receive": "",
|
||||
"help_debug": "",
|
||||
"help_filename": "",
|
||||
"help_config": "",
|
||||
"gui_drag_and_drop": "",
|
||||
"help_local_only": "不要使用Tor(僅限開發使用)",
|
||||
"help_stay_open": "繼續分享即使檔案已傳送",
|
||||
"help_autostop_timer": "在所給定的秒數後停止分享",
|
||||
"help_stealth": "使用客戶端認證 (進階選項)",
|
||||
"help_receive": "接收分享的檔案而不是傳送他們",
|
||||
"help_debug": "將OnionShare的錯誤日誌輸出到stdout, 並且將網路錯誤輸出到硬碟",
|
||||
"help_filename": "列舉所要分享的檔案或資料夾",
|
||||
"help_config": "自定義的JSON設置檔路徑(選擇性)",
|
||||
"gui_drag_and_drop": "拖曳檔案及資料夾來開始分享",
|
||||
"gui_add": "新增",
|
||||
"gui_delete": "刪除",
|
||||
"gui_choose_items": "選擇",
|
||||
"gui_share_start_server": "",
|
||||
"gui_share_stop_server": "",
|
||||
"gui_share_stop_server_shutdown_timeout": "",
|
||||
"gui_share_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_receive_start_server": "",
|
||||
"gui_receive_stop_server": "",
|
||||
"gui_receive_stop_server_shutdown_timeout": "",
|
||||
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
|
||||
"gui_copy_url": "",
|
||||
"gui_copy_hidservauth": "",
|
||||
"gui_choose_items": "瀏覽",
|
||||
"gui_share_start_server": "開始分享",
|
||||
"gui_share_stop_server": "停止分享",
|
||||
"gui_share_stop_server_autostop_timer": "停止分享 (剩餘{}秒)",
|
||||
"gui_share_stop_server_autostop_timer_tooltip": "計數器將在{}停止",
|
||||
"gui_receive_start_server": "啟動接收模式",
|
||||
"gui_receive_stop_server": "停止接收模式",
|
||||
"gui_receive_stop_server_autostop_timer": "停止接收模式 (剩餘{}秒)",
|
||||
"gui_receive_stop_server_autostop_timer_tooltip": "計數器將在{}停止",
|
||||
"gui_copy_url": "複製地址",
|
||||
"gui_copy_hidservauth": "複製HidServAuth",
|
||||
"gui_downloads": "",
|
||||
"gui_no_downloads": "",
|
||||
"gui_canceled": "取消",
|
||||
"gui_copied_url_title": "",
|
||||
"gui_copied_url": "",
|
||||
"gui_copied_hidservauth_title": "",
|
||||
"gui_copied_hidservauth": "",
|
||||
"gui_please_wait": "",
|
||||
"gui_canceled": "已取消",
|
||||
"gui_copied_url_title": "已複製OnionShare地址",
|
||||
"gui_copied_url": "OnionShare地址已複製到剪貼簿",
|
||||
"gui_copied_hidservauth_title": "已複製HidServAuth",
|
||||
"gui_copied_hidservauth": "HidServAuth已複製到剪貼簿",
|
||||
"gui_please_wait": "啟動中...點擊以取消。",
|
||||
"gui_download_upload_progress_complete": "",
|
||||
"gui_download_upload_progress_starting": "",
|
||||
"gui_download_upload_progress_eta": "",
|
||||
"version_string": "",
|
||||
"gui_quit_title": "",
|
||||
"gui_share_quit_warning": "",
|
||||
"gui_receive_quit_warning": "",
|
||||
"gui_quit_warning_quit": "離開",
|
||||
"gui_quit_warning_dont_quit": "",
|
||||
"error_rate_limit": "",
|
||||
"zip_progress_bar_format": "",
|
||||
"error_stealth_not_supported": "",
|
||||
"error_ephemeral_not_supported": "",
|
||||
"version_string": "OnionShare {0:s} | https://onionshare.org/",
|
||||
"gui_quit_title": "確定要離開嗎",
|
||||
"gui_share_quit_warning": "仍在傳送檔案,您確定要結束OnionShare嗎?",
|
||||
"gui_receive_quit_warning": "仍在接收檔案,您確定要結束OnionShare嗎?",
|
||||
"gui_quit_warning_quit": "結束",
|
||||
"gui_quit_warning_dont_quit": "取消",
|
||||
"error_rate_limit": "有人嘗試過多次您的地址,代表他們可能是用猜的,因此OnionShare已經停止服務。再次啟動分享並傳送新的地址給接收者以開始分享。",
|
||||
"zip_progress_bar_format": "壓縮中: %p%",
|
||||
"error_stealth_not_supported": "為了使用客戶端認證, 您至少需要 Tor 0.2.9.1-alpha (或 Tor Browser 6.5) 以及 python3-stem 1.5.0.",
|
||||
"error_ephemeral_not_supported": "OnionShare 需要至少 Tor 0.2.7.1 以及 python3-stem 1.4.0.",
|
||||
"gui_settings_window_title": "設定",
|
||||
"gui_settings_whats_this": "",
|
||||
"gui_settings_stealth_option": "",
|
||||
"gui_settings_stealth_hidservauth_string": "",
|
||||
"gui_settings_whats_this": "<a href='{0:s}'>這是什麼?</a>",
|
||||
"gui_settings_stealth_option": "使用客戶端認證",
|
||||
"gui_settings_stealth_hidservauth_string": "已經將您的私鑰存起來以便使用,代表您現在可以點選以複製您的HidSerAuth。",
|
||||
"gui_settings_autoupdate_label": "檢查新版本",
|
||||
"gui_settings_autoupdate_option": "",
|
||||
"gui_settings_autoupdate_timestamp": "",
|
||||
"gui_settings_autoupdate_timestamp_never": "不使用",
|
||||
"gui_settings_autoupdate_check_button": "",
|
||||
"gui_settings_autoupdate_option": "當有新版本的時候提醒我",
|
||||
"gui_settings_autoupdate_timestamp": "上一次檢查時間: {}",
|
||||
"gui_settings_autoupdate_timestamp_never": "從未",
|
||||
"gui_settings_autoupdate_check_button": "檢查新版本",
|
||||
"gui_settings_general_label": "一般設定",
|
||||
"gui_settings_sharing_label": "",
|
||||
"gui_settings_close_after_first_download_option": "",
|
||||
"gui_settings_connection_type_label": "",
|
||||
"gui_settings_connection_type_bundled_option": "",
|
||||
"gui_settings_connection_type_automatic_option": "",
|
||||
"gui_settings_connection_type_control_port_option": "",
|
||||
"gui_settings_connection_type_socket_file_option": "",
|
||||
"gui_settings_connection_type_test_button": "",
|
||||
"gui_settings_control_port_label": "管理連接埠",
|
||||
"gui_settings_socket_file_label": "",
|
||||
"gui_settings_socks_label": "",
|
||||
"gui_settings_authenticate_label": "",
|
||||
"gui_settings_authenticate_no_auth_option": "",
|
||||
"gui_settings_authenticate_password_option": "Password",
|
||||
"gui_settings_password_label": "Password",
|
||||
"gui_settings_tor_bridges": "",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
|
||||
"gui_settings_meek_lite_expensive_warning": "",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "",
|
||||
"gui_settings_tor_bridges_custom_label": "",
|
||||
"gui_settings_tor_bridges_invalid": "",
|
||||
"gui_settings_sharing_label": "分享設定",
|
||||
"gui_settings_close_after_first_download_option": "當檔案已傳送時停止分享",
|
||||
"gui_settings_connection_type_label": "OnionShare要如何連接到Tor?",
|
||||
"gui_settings_connection_type_bundled_option": "使用OnionShare內建的Tor版本",
|
||||
"gui_settings_connection_type_automatic_option": "嘗試auto-configuration with Tor Browser",
|
||||
"gui_settings_connection_type_control_port_option": "使用control port",
|
||||
"gui_settings_connection_type_socket_file_option": "使用Socket file",
|
||||
"gui_settings_connection_type_test_button": "測試連接到Tor",
|
||||
"gui_settings_control_port_label": "Control端口",
|
||||
"gui_settings_socket_file_label": "Socket file",
|
||||
"gui_settings_socks_label": "SOCKS端口",
|
||||
"gui_settings_authenticate_label": "Tor 驗證設定",
|
||||
"gui_settings_authenticate_no_auth_option": "沒有驗證,或使用cookie驗證",
|
||||
"gui_settings_authenticate_password_option": "密碼",
|
||||
"gui_settings_password_label": "密碼",
|
||||
"gui_settings_tor_bridges": "Tor bridge支援",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "不要使用bridges",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "使用內建的obfs4 pluggable transports",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "使用內建的obfs4 pluggable transports (需要 obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "使用內建的 meek_lite (Azure) pluggable transports",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "使月內建的 meek_lite (Azure) pluggable transports (需要 obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "警告: The meek_lite bridges are very costly for the Tor Project to run.<br><br>Only use them if unable to connect to Tor directly, via obfs4 transports, or other normal bridges.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "使用自定義的bridges",
|
||||
"gui_settings_tor_bridges_custom_label": "你可以從 <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>取得bridges",
|
||||
"gui_settings_tor_bridges_invalid": "您新增的bridges無效。\n請再次檢查他們或新增其他的。",
|
||||
"gui_settings_button_save": "保存",
|
||||
"gui_settings_button_cancel": "",
|
||||
"gui_settings_button_help": "協助",
|
||||
"gui_settings_shutdown_timeout_checkbox": "",
|
||||
"gui_settings_shutdown_timeout": "",
|
||||
"settings_error_unknown": "",
|
||||
"settings_error_automatic": "",
|
||||
"settings_error_socket_port": "",
|
||||
"settings_error_socket_file": "",
|
||||
"settings_error_auth": "",
|
||||
"settings_error_missing_password": "",
|
||||
"settings_error_unreadable_cookie_file": "",
|
||||
"settings_error_bundled_tor_not_supported": "",
|
||||
"settings_error_bundled_tor_timeout": "",
|
||||
"settings_error_bundled_tor_broken": "",
|
||||
"settings_test_success": "",
|
||||
"error_tor_protocol_error": "",
|
||||
"error_tor_protocol_error_unknown": "",
|
||||
"error_invalid_private_key": "",
|
||||
"connecting_to_tor": "",
|
||||
"update_available": "",
|
||||
"update_error_check_error": "",
|
||||
"update_error_invalid_latest_version": "",
|
||||
"update_not_available": "",
|
||||
"gui_tor_connection_ask": "",
|
||||
"gui_tor_connection_ask_open_settings": "",
|
||||
"gui_tor_connection_ask_quit": "離開",
|
||||
"gui_tor_connection_error_settings": "",
|
||||
"gui_tor_connection_canceled": "",
|
||||
"gui_tor_connection_lost": "",
|
||||
"gui_server_started_after_timeout": "",
|
||||
"gui_server_timeout_expired": "",
|
||||
"gui_settings_button_cancel": "取消",
|
||||
"gui_settings_button_help": "說明",
|
||||
"gui_settings_autostop_timer_checkbox": "使用自動停止計數器",
|
||||
"gui_settings_autostop_timer": "在這個時間停止分享:",
|
||||
"settings_error_unknown": "無法連接到Tor controller因為您的設定無效。",
|
||||
"settings_error_automatic": "無法連機到Tor controller。Tor Browser(可以從torproject.org取得)是否正在背景運行?",
|
||||
"settings_error_socket_port": "無法在{}:{}連接到Tor controller。",
|
||||
"settings_error_socket_file": "無法使用Socket file {}連接到Tor controller。",
|
||||
"settings_error_auth": "已連接到 {}:{} 但無法驗證。或許這個不是一個Tor controller?",
|
||||
"settings_error_missing_password": "已連接到Tor controller,但是它需要密碼進行驗證。",
|
||||
"settings_error_unreadable_cookie_file": "已連接到Tor controller,但是密碼錯誤,或是您沒有讀取cookie檔案的權限。",
|
||||
"settings_error_bundled_tor_not_supported": "OnionShare附帶的Tor版本並不適用於Windows或macOS上的開發人員模式。",
|
||||
"settings_error_bundled_tor_timeout": "Tor連接超時。您可能沒有連接網路,或是系統時間設定錯誤?",
|
||||
"settings_error_bundled_tor_broken": "OnionShare無法在背景連接到Tor:\n{}",
|
||||
"settings_test_success": "已連接到Tor controller。\n\nTor版本: {}\n支援短期onion服務: {}.\n支援客戶端認證: {}.\n支援新一代.onion地址: {}.",
|
||||
"error_tor_protocol_error": "Tor發生錯誤: {}",
|
||||
"error_tor_protocol_error_unknown": "Tor發生了未知的錯誤",
|
||||
"error_invalid_private_key": "此私鑰類型不受支援",
|
||||
"connecting_to_tor": "正在連接Tor網路",
|
||||
"update_available": "新版本的OnionShare已推出。 <a href='{}'>點此</a>獲取<br><br>您正在使用版本 {} 而最新版本是 {}。",
|
||||
"update_error_check_error": "無法檢查新版本: OnionShare網站提示最新版本無法辨識'{}'…",
|
||||
"update_error_invalid_latest_version": "無法檢查新版本:或許您尚未連接上Tor,或是OnionShare官網失效?",
|
||||
"update_not_available": "您正在使用最新版本的OnionShare。",
|
||||
"gui_tor_connection_ask": "開啟設定來檢查Tor連接?",
|
||||
"gui_tor_connection_ask_open_settings": "是",
|
||||
"gui_tor_connection_ask_quit": "否",
|
||||
"gui_tor_connection_error_settings": "試試在設定中改變OnionShare連接到Tor網路的方式。",
|
||||
"gui_tor_connection_canceled": "無法連接到Tor。\n\n請確認您已連接上網路,然後再重新開啟OnionShare並設定Tor連線。",
|
||||
"gui_tor_connection_lost": "已斷開Tor連接。",
|
||||
"gui_server_started_after_autostop_timer": "",
|
||||
"gui_server_autostop_timer_expired": "",
|
||||
"share_via_onionshare": "",
|
||||
"gui_use_legacy_v2_onions_checkbox": "",
|
||||
"gui_save_private_key_checkbox": "",
|
||||
@ -181,5 +181,8 @@
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "",
|
||||
"gui_settings_language_label": "",
|
||||
"gui_settings_language_changed_notice": ""
|
||||
"gui_settings_language_changed_notice": "",
|
||||
"gui_add_files": "新增檔案",
|
||||
"gui_add_folder": "新增資料夾",
|
||||
"gui_settings_onion_label": "Onion設定"
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ ul.flashes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 800px;
|
||||
max-width: 90%;
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ ul.flashes li {
|
||||
margin: 0 0 5px 0;
|
||||
padding: 5px;
|
||||
list-style: none;
|
||||
text-align: left;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
li.error {
|
||||
@ -224,17 +224,15 @@ li.info {
|
||||
}
|
||||
|
||||
div#noscript {
|
||||
border: 1px solid #e55454;
|
||||
text-align: left;
|
||||
color: #e55454;
|
||||
text-align: center;
|
||||
color: #d709df;
|
||||
padding: 1em;
|
||||
line-height: 150%;
|
||||
max-width: 900px;
|
||||
margin: 100px 2em 0 2em;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
div#noscript a, div#noscript a:visited {
|
||||
color: #e27f7f;
|
||||
color: #d709df;
|
||||
}
|
||||
|
||||
.disable-noscript-xss-wrapper {
|
||||
|
BIN
share/static/img/warning.png
Normal file
BIN
share/static/img/warning.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 804 B |
@ -1,16 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare: 403 Forbidden</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">You are not allowed to perform that action at this time.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<head>
|
||||
<title>OnionShare: 403 Forbidden</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">You are not allowed to perform that action at this time.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -1,16 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare: 404 Not Found</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">404 Not Found</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<head>
|
||||
<title>OnionShare: 404 Not Found</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">404 Not Found</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -1,10 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
</head>
|
||||
<body>
|
||||
<p>OnionShare download in progress</p>
|
||||
</body>
|
||||
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>OnionShare download in progress</p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -2,8 +2,8 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@ -13,16 +13,24 @@
|
||||
</header>
|
||||
|
||||
<div class="upload-wrapper">
|
||||
<!--
|
||||
We are not using a <noscript> tag because it only works when the security slider is set to
|
||||
Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
|
||||
-->
|
||||
<div id="noscript">
|
||||
<p>
|
||||
<img src="/static/img/warning.png" title="Warning" /><strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
|
||||
sometimes never finish. To upload reliably, either set your Tor Browser
|
||||
<a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
|
||||
to Standard or
|
||||
<a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
|
||||
</div>
|
||||
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
|
||||
<p class="upload-header">Send Files</p>
|
||||
<p class="upload-description">Select the files you want to send, then click "Send Files"...</p>
|
||||
|
||||
<form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
|
||||
<p><input type="file" id="file-select" name="file[]" multiple /></p>
|
||||
<p><button type="submit" id="send-button" class="button">Send Files</button></p>
|
||||
</form>
|
||||
|
||||
<div id="uploads"></div>
|
||||
|
||||
<div>
|
||||
@ -37,22 +45,14 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
We are not using a <noscript> tag because it only works when the security slider is set to
|
||||
Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
|
||||
-->
|
||||
<div id="noscript">
|
||||
<p>
|
||||
<strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
|
||||
sometimes never finish. To upload reliably, either set your Tor Browser
|
||||
<a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
|
||||
to Standard or
|
||||
<a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
|
||||
</div>
|
||||
<script src="/static/js/receive-noscript.js"></script>
|
||||
<form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
|
||||
<p><input type="file" id="file-select" name="file[]" multiple /></p>
|
||||
<p><button type="submit" id="send-button" class="button">Send Files</button></p>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<script src="/static/js/receive-noscript.js"></script>
|
||||
<script src="/static/js/jquery-3.3.1.min.js"></script>
|
||||
<script src="/static/js/receive.js"></script>
|
||||
<script async src="/static/js/receive.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -2,8 +2,8 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
@ -1,56 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
<meta name="onionshare-filename" content="{{ filename }}">
|
||||
<meta name="onionshare-filesize" content="{{ filesize }}">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="clearfix">
|
||||
<div class="right">
|
||||
<ul>
|
||||
<li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
|
||||
{% if slug %}
|
||||
<li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
|
||||
{% else %}
|
||||
<li><a class="button" href='/download'>Download Files</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
<img class="logo" src="/static/img/logo.png" title="OnionShare">
|
||||
<h1>OnionShare</h1>
|
||||
</header>
|
||||
<head>
|
||||
<title>OnionShare</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
<meta name="onionshare-filename" content="{{ filename }}">
|
||||
<meta name="onionshare-filesize" content="{{ filesize }}">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header class="clearfix">
|
||||
<div class="right">
|
||||
<ul>
|
||||
<li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
|
||||
{% if slug %}
|
||||
<li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
|
||||
{% else %}
|
||||
<li><a class="button" href='/download'>Download Files</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
<img class="logo" src="/static/img/logo.png" title="OnionShare">
|
||||
<h1>OnionShare</h1>
|
||||
</header>
|
||||
|
||||
<table class="file-list" id="file-list">
|
||||
<tr>
|
||||
<th id="filename-header">Filename</th>
|
||||
<th id="size-header">Size</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
{% for info in file_info.dirs %}
|
||||
<tr>
|
||||
<td>
|
||||
<img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
|
||||
{{ info.basename }}
|
||||
</td>
|
||||
<td>{{ info.size_human }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% for info in file_info.files %}
|
||||
<tr>
|
||||
<td>
|
||||
<img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
|
||||
{{ info.basename }}
|
||||
</td>
|
||||
<td>{{ info.size_human }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<script async src="/static/js/send.js" charset="utf-8"></script>
|
||||
</body>
|
||||
|
||||
<table class="file-list" id="file-list">
|
||||
<tr>
|
||||
<th id="filename-header">Filename</th>
|
||||
<th id="size-header">Size</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
{% for info in file_info.dirs %}
|
||||
<tr>
|
||||
<td>
|
||||
<img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
|
||||
{{ info.basename }}
|
||||
</td>
|
||||
<td>{{ info.size_human }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% for info in file_info.files %}
|
||||
<tr>
|
||||
<td>
|
||||
<img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
|
||||
{{ info.basename }}
|
||||
</td>
|
||||
<td>{{ info.size_human }}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<script src="/static/js/send.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,22 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OnionShare is closed</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<header class="clearfix">
|
||||
<img class="logo" src="/static/img/logo.png" title="OnionShare">
|
||||
<h1>OnionShare</h1>
|
||||
</header>
|
||||
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">Thank you for using OnionShare</p>
|
||||
<p class="info-description">You may now close this window.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<head>
|
||||
<title>OnionShare is closed</title>
|
||||
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="clearfix">
|
||||
<img class="logo" src="/static/img/logo.png" title="OnionShare">
|
||||
<h1>OnionShare</h1>
|
||||
</header>
|
||||
|
||||
<div class="info-wrapper">
|
||||
<div class="info">
|
||||
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
|
||||
<p class="info-header">Thank you for using OnionShare</p>
|
||||
<p class="info-description">You may now close this window.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -172,6 +172,9 @@ class GuiBaseTest(object):
|
||||
'''Test that the Server Status indicator shows we are Starting'''
|
||||
self.assertEqual(mode.server_status_label.text(), strings._('gui_status_indicator_share_working'))
|
||||
|
||||
def server_status_indicator_says_scheduled(self, mode):
|
||||
'''Test that the Server Status indicator shows we are Scheduled'''
|
||||
self.assertEqual(mode.server_status_label.text(), strings._('gui_status_indicator_share_scheduled'))
|
||||
|
||||
def server_is_started(self, mode, startup_time=2000):
|
||||
'''Test that the server has started'''
|
||||
@ -291,13 +294,12 @@ class GuiBaseTest(object):
|
||||
def set_timeout(self, mode, timeout):
|
||||
'''Test that the timeout can be set'''
|
||||
timer = QtCore.QDateTime.currentDateTime().addSecs(timeout)
|
||||
mode.server_status.shutdown_timeout.setDateTime(timer)
|
||||
self.assertTrue(mode.server_status.shutdown_timeout.dateTime(), timer)
|
||||
mode.server_status.autostop_timer_widget.setDateTime(timer)
|
||||
self.assertTrue(mode.server_status.autostop_timer_widget.dateTime(), timer)
|
||||
|
||||
|
||||
def timeout_widget_hidden(self, mode):
|
||||
'''Test that the timeout widget is hidden when share has started'''
|
||||
self.assertFalse(mode.server_status.shutdown_timeout_container.isVisible())
|
||||
def autostop_timer_widget_hidden(self, mode):
|
||||
'''Test that the auto-stop timer widget is hidden when share has started'''
|
||||
self.assertFalse(mode.server_status.autostop_timer_container.isVisible())
|
||||
|
||||
|
||||
def server_timed_out(self, mode, wait):
|
||||
@ -306,6 +308,37 @@ class GuiBaseTest(object):
|
||||
# We should have timed out now
|
||||
self.assertEqual(mode.server_status.status, 0)
|
||||
|
||||
# Auto-start timer tests
|
||||
def set_autostart_timer(self, mode, timer):
|
||||
'''Test that the timer can be set'''
|
||||
schedule = QtCore.QDateTime.currentDateTime().addSecs(timer)
|
||||
mode.server_status.autostart_timer_widget.setDateTime(schedule)
|
||||
self.assertTrue(mode.server_status.autostart_timer_widget.dateTime(), schedule)
|
||||
|
||||
def autostart_timer_widget_hidden(self, mode):
|
||||
'''Test that the auto-start timer widget is hidden when share has started'''
|
||||
self.assertFalse(mode.server_status.autostart_timer_container.isVisible())
|
||||
|
||||
def scheduled_service_started(self, mode, wait):
|
||||
'''Test that the server has timed out after the timer ran out'''
|
||||
QtTest.QTest.qWait(wait)
|
||||
# We should have started now
|
||||
self.assertEqual(mode.server_status.status, 2)
|
||||
|
||||
def cancel_the_share(self, mode):
|
||||
'''Test that we can cancel a share before it's started up '''
|
||||
self.server_working_on_start_button_pressed(mode)
|
||||
self.server_status_indicator_says_scheduled(mode)
|
||||
self.add_delete_buttons_hidden()
|
||||
self.settings_button_is_hidden()
|
||||
self.set_autostart_timer(mode, 10)
|
||||
QtTest.QTest.mousePress(mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
QtTest.QTest.qWait(2000)
|
||||
QtTest.QTest.mouseRelease(mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
self.assertEqual(mode.server_status.status, 0)
|
||||
self.server_is_stopped(mode, False)
|
||||
self.web_server_is_stopped()
|
||||
|
||||
# Hack to close an Alert dialog that would otherwise block tests
|
||||
def accept_dialog(self):
|
||||
window = self.gui.qtapp.activeWindow()
|
||||
|
@ -5,7 +5,7 @@ from PyQt5 import QtCore, QtTest
|
||||
from .GuiBaseTest import GuiBaseTest
|
||||
|
||||
class GuiReceiveTest(GuiBaseTest):
|
||||
def upload_file(self, public_mode, file_to_upload, expected_basename):
|
||||
def upload_file(self, public_mode, file_to_upload, expected_basename, identical_files_at_once=False):
|
||||
'''Test that we can upload the file'''
|
||||
files = {'file[]': open(file_to_upload, 'rb')}
|
||||
if not public_mode:
|
||||
@ -13,6 +13,9 @@ class GuiReceiveTest(GuiBaseTest):
|
||||
else:
|
||||
path = 'http://127.0.0.1:{}/upload'.format(self.gui.app.port)
|
||||
response = requests.post(path, files=files)
|
||||
if identical_files_at_once:
|
||||
# Send a duplicate upload to test for collisions
|
||||
response = requests.post(path, files=files)
|
||||
QtTest.QTest.qWait(2000)
|
||||
|
||||
# Make sure the file is within the last 10 seconds worth of filenames
|
||||
@ -20,7 +23,10 @@ class GuiReceiveTest(GuiBaseTest):
|
||||
now = datetime.now()
|
||||
for i in range(10):
|
||||
date_dir = now.strftime("%Y-%m-%d")
|
||||
time_dir = now.strftime("%H.%M.%S")
|
||||
if identical_files_at_once:
|
||||
time_dir = now.strftime("%H.%M.%S-1")
|
||||
else:
|
||||
time_dir = now.strftime("%H.%M.%S")
|
||||
receive_mode_dir = os.path.join(self.gui.common.settings.get('data_dir'), date_dir, time_dir)
|
||||
expected_filename = os.path.join(receive_mode_dir, expected_basename)
|
||||
if os.path.exists(expected_filename):
|
||||
@ -74,18 +80,6 @@ class GuiReceiveTest(GuiBaseTest):
|
||||
self.assertEqual(mode.history.completed_count, before_completed_count)
|
||||
self.assertEqual(len(mode.history.item_list.items), before_number_of_history_items)
|
||||
|
||||
def run_receive_mode_sender_closed_tests(self, public_mode):
|
||||
'''Test that the share can be stopped by the sender in receive mode'''
|
||||
if not public_mode:
|
||||
path = 'http://127.0.0.1:{}/{}/close'.format(self.gui.app.port, self.gui.receive_mode.web.slug)
|
||||
else:
|
||||
path = 'http://127.0.0.1:{}/close'.format(self.gui.app.port)
|
||||
response = requests.post(path)
|
||||
self.server_is_stopped(self.gui.receive_mode, False)
|
||||
self.web_server_is_stopped()
|
||||
self.server_status_indicator_says_closed(self.gui.receive_mode, False)
|
||||
|
||||
|
||||
# 'Grouped' tests follow from here
|
||||
|
||||
def run_all_receive_mode_setup_tests(self, public_mode):
|
||||
@ -119,6 +113,9 @@ class GuiReceiveTest(GuiBaseTest):
|
||||
self.counter_incremented(self.gui.receive_mode, 3)
|
||||
self.upload_file(public_mode, '/tmp/testdir/test', 'test')
|
||||
self.counter_incremented(self.gui.receive_mode, 4)
|
||||
# Test uploading the same file twice at the same time, and make sure no collisions
|
||||
self.upload_file(public_mode, '/tmp/test.txt', 'test.txt', True)
|
||||
self.counter_incremented(self.gui.receive_mode, 6)
|
||||
self.uploading_zero_files_shouldnt_change_ui(self.gui.receive_mode, public_mode)
|
||||
self.history_indicator(self.gui.receive_mode, public_mode)
|
||||
self.server_is_stopped(self.gui.receive_mode, False)
|
||||
@ -142,6 +139,6 @@ class GuiReceiveTest(GuiBaseTest):
|
||||
"""Auto-stop timer tests in receive mode"""
|
||||
self.run_all_receive_mode_setup_tests(public_mode)
|
||||
self.set_timeout(self.gui.receive_mode, 5)
|
||||
self.timeout_widget_hidden(self.gui.receive_mode)
|
||||
self.autostop_timer_widget_hidden(self.gui.receive_mode)
|
||||
self.server_timed_out(self.gui.receive_mode, 15000)
|
||||
self.web_server_is_stopped()
|
||||
|
@ -191,10 +191,29 @@ class GuiShareTest(GuiBaseTest):
|
||||
self.run_all_share_mode_setup_tests()
|
||||
self.set_timeout(self.gui.share_mode, 5)
|
||||
self.run_all_share_mode_started_tests(public_mode)
|
||||
self.timeout_widget_hidden(self.gui.share_mode)
|
||||
self.autostop_timer_widget_hidden(self.gui.share_mode)
|
||||
self.server_timed_out(self.gui.share_mode, 10000)
|
||||
self.web_server_is_stopped()
|
||||
|
||||
def run_all_share_mode_autostart_timer_tests(self, public_mode):
|
||||
"""Auto-start timer tests in share mode"""
|
||||
self.run_all_share_mode_setup_tests()
|
||||
self.set_autostart_timer(self.gui.share_mode, 5)
|
||||
self.server_working_on_start_button_pressed(self.gui.share_mode)
|
||||
self.autostart_timer_widget_hidden(self.gui.share_mode)
|
||||
self.server_status_indicator_says_scheduled(self.gui.share_mode)
|
||||
self.web_server_is_stopped()
|
||||
self.scheduled_service_started(self.gui.share_mode, 7000)
|
||||
self.web_server_is_running()
|
||||
|
||||
def run_all_share_mode_autostop_autostart_mismatch_tests(self, public_mode):
|
||||
"""Auto-stop timer tests in share mode"""
|
||||
self.run_all_share_mode_setup_tests()
|
||||
self.set_autostart_timer(self.gui.share_mode, 15)
|
||||
self.set_timeout(self.gui.share_mode, 5)
|
||||
QtCore.QTimer.singleShot(4000, self.accept_dialog)
|
||||
QtTest.QTest.mouseClick(self.gui.share_mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
self.server_is_stopped(self.gui.share_mode, False)
|
||||
|
||||
def run_all_share_mode_unreadable_file_tests(self):
|
||||
'''Attempt to share an unreadable file'''
|
||||
|
@ -77,11 +77,11 @@ class SettingsGuiBaseTest(object):
|
||||
QtTest.QTest.mouseClick(self.gui.public_mode_checkbox, QtCore.Qt.LeftButton, pos=QtCore.QPoint(2,self.gui.public_mode_checkbox.height()/2))
|
||||
self.assertTrue(self.gui.public_mode_checkbox.isChecked())
|
||||
|
||||
# shutdown timer is off
|
||||
self.assertFalse(self.gui.shutdown_timeout_checkbox.isChecked())
|
||||
# enable shutdown timer
|
||||
QtTest.QTest.mouseClick(self.gui.shutdown_timeout_checkbox, QtCore.Qt.LeftButton, pos=QtCore.QPoint(2,self.gui.shutdown_timeout_checkbox.height()/2))
|
||||
self.assertTrue(self.gui.shutdown_timeout_checkbox.isChecked())
|
||||
# autostop timer is off
|
||||
self.assertFalse(self.gui.autostop_timer_checkbox.isChecked())
|
||||
# enable autostop timer
|
||||
QtTest.QTest.mouseClick(self.gui.autostop_timer_checkbox, QtCore.Qt.LeftButton, pos=QtCore.QPoint(2,self.gui.autostop_timer_checkbox.height()/2))
|
||||
self.assertTrue(self.gui.autostop_timer_checkbox.isChecked())
|
||||
|
||||
# legacy mode checkbox and related widgets
|
||||
if self.gui.onion.is_authenticated():
|
||||
@ -222,7 +222,7 @@ class SettingsGuiBaseTest(object):
|
||||
data = json.load(f)
|
||||
|
||||
self.assertTrue(data["public_mode"])
|
||||
self.assertTrue(data["shutdown_timeout"])
|
||||
self.assertTrue(data["autostop_timer"])
|
||||
|
||||
if self.gui.onion.is_authenticated():
|
||||
if self.gui.onion.supports_v3_onions:
|
||||
|
@ -140,19 +140,6 @@ class TorGuiBaseTest(GuiBaseTest):
|
||||
else:
|
||||
self.assertEqual(clipboard.text(), 'http://{}/{}'.format(self.gui.app.onion_host, mode.server_status.web.slug))
|
||||
|
||||
def cancel_the_share(self, mode):
|
||||
'''Test that we can cancel this share before it's started up '''
|
||||
self.server_working_on_start_button_pressed(self.gui.share_mode)
|
||||
self.server_status_indicator_says_starting(self.gui.share_mode)
|
||||
self.add_delete_buttons_hidden()
|
||||
self.settings_button_is_hidden()
|
||||
QtTest.QTest.mousePress(mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
QtTest.QTest.qWait(1000)
|
||||
QtTest.QTest.mouseRelease(mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
self.assertEqual(mode.server_status.status, 0)
|
||||
self.server_is_stopped(self.gui.share_mode, False)
|
||||
self.web_server_is_stopped()
|
||||
|
||||
|
||||
# Stealth tests
|
||||
def copy_have_hidserv_auth_button(self, mode):
|
||||
|
@ -89,7 +89,7 @@ class TorGuiShareTest(TorGuiBaseTest, GuiShareTest):
|
||||
self.run_all_share_mode_setup_tests()
|
||||
self.set_timeout(self.gui.share_mode, 120)
|
||||
self.run_all_share_mode_started_tests(public_mode)
|
||||
self.timeout_widget_hidden(self.gui.share_mode)
|
||||
self.autostop_timer_widget_hidden(self.gui.share_mode)
|
||||
self.server_timed_out(self.gui.share_mode, 125000)
|
||||
self.web_server_is_stopped()
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from .GuiReceiveTest import GuiReceiveTest
|
||||
|
||||
class LocalReceiveModeSenderClosedTest(unittest.TestCase, GuiReceiveTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"receive_allow_receiver_shutdown": True
|
||||
}
|
||||
cls.gui = GuiReceiveTest.set_up(test_settings)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
GuiReceiveTest.tear_down()
|
||||
|
||||
@pytest.mark.gui
|
||||
def test_gui(self):
|
||||
self.run_all_common_setup_tests()
|
||||
self.run_all_receive_mode_tests(False, True)
|
||||
self.run_receive_mode_sender_closed_tests(False)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
@ -9,7 +9,7 @@ class LocalReceiveModeTimerTest(unittest.TestCase, GuiReceiveTest):
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"shutdown_timeout": True,
|
||||
"autostop_timer": True,
|
||||
}
|
||||
cls.gui = GuiReceiveTest.set_up(test_settings)
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env python3
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from .GuiShareTest import GuiShareTest
|
||||
|
||||
class LocalShareModeAutoStartTimerTest(unittest.TestCase, GuiShareTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"autostart_timer": True,
|
||||
"autostop_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
GuiShareTest.tear_down()
|
||||
|
||||
@pytest.mark.gui
|
||||
def test_gui(self):
|
||||
self.run_all_common_setup_tests()
|
||||
self.run_all_share_mode_autostop_autostart_mismatch_tests(False)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
26
tests/local_onionshare_share_mode_autostart_timer_test.py
Normal file
26
tests/local_onionshare_share_mode_autostart_timer_test.py
Normal file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from .GuiShareTest import GuiShareTest
|
||||
|
||||
class LocalShareModeAutoStartTimerTest(unittest.TestCase, GuiShareTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"autostart_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
GuiShareTest.tear_down()
|
||||
|
||||
@pytest.mark.gui
|
||||
def test_gui(self):
|
||||
self.run_all_common_setup_tests()
|
||||
self.run_all_share_mode_autostart_timer_tests(False)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
import pytest
|
||||
import unittest
|
||||
from PyQt5 import QtCore, QtTest
|
||||
|
||||
from .GuiShareTest import GuiShareTest
|
||||
|
||||
class LocalShareModeAutoStartTimerTooShortTest(unittest.TestCase, GuiShareTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"autostart_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
GuiShareTest.tear_down()
|
||||
|
||||
@pytest.mark.gui
|
||||
def test_gui(self):
|
||||
self.run_all_common_setup_tests()
|
||||
self.run_all_share_mode_setup_tests()
|
||||
# Set a low timeout
|
||||
self.set_autostart_timer(self.gui.share_mode, 2)
|
||||
QtTest.QTest.qWait(3000)
|
||||
QtCore.QTimer.singleShot(4000, self.accept_dialog)
|
||||
QtTest.QTest.mouseClick(self.gui.share_mode.server_status.server_button, QtCore.Qt.LeftButton)
|
||||
self.assertEqual(self.gui.share_mode.server_status.status, 0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
26
tests/local_onionshare_share_mode_cancel_share_test.py
Normal file
26
tests/local_onionshare_share_mode_cancel_share_test.py
Normal file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
import pytest
|
||||
import unittest
|
||||
|
||||
from .GuiShareTest import GuiShareTest
|
||||
|
||||
class LocalShareModeCancelTest(unittest.TestCase, GuiShareTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"autostart_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
GuiShareTest.tear_down()
|
||||
|
||||
@pytest.mark.gui
|
||||
def test_gui(self):
|
||||
self.run_all_common_setup_tests()
|
||||
self.run_all_share_mode_setup_tests()
|
||||
self.cancel_the_share(self.gui.share_mode)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
@ -9,7 +9,7 @@ class LocalShareModeTimerTest(unittest.TestCase, GuiShareTest):
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"shutdown_timeout": True,
|
||||
"autostop_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
|
@ -10,7 +10,7 @@ class LocalShareModeTimerTooShortTest(unittest.TestCase, GuiShareTest):
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"shutdown_timeout": True,
|
||||
"autostop_timer": True,
|
||||
}
|
||||
cls.gui = GuiShareTest.set_up(test_settings)
|
||||
|
||||
|
@ -8,6 +8,7 @@ class ShareModeCancelTest(unittest.TestCase, TorGuiShareTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"autostart_timer": True,
|
||||
}
|
||||
cls.gui = TorGuiShareTest.set_up(test_settings)
|
||||
|
||||
|
@ -9,7 +9,7 @@ class ShareModeTimerTest(unittest.TestCase, TorGuiShareTest):
|
||||
def setUpClass(cls):
|
||||
test_settings = {
|
||||
"public_mode": False,
|
||||
"shutdown_timeout": True,
|
||||
"autostop_timer": True,
|
||||
}
|
||||
cls.gui = TorGuiShareTest.set_up(test_settings)
|
||||
|
||||
|
@ -30,9 +30,10 @@ class MyOnion:
|
||||
self.auth_string = 'TestHidServAuth'
|
||||
self.private_key = ''
|
||||
self.stealth = stealth
|
||||
self.scheduled_key = None
|
||||
|
||||
@staticmethod
|
||||
def start_onion_service(_):
|
||||
def start_onion_service(self, await_publication=True, save_scheduled_key=False):
|
||||
return 'test_service_id.onion'
|
||||
|
||||
|
||||
|
@ -51,7 +51,8 @@ class TestSettings:
|
||||
'auth_type': 'no_auth',
|
||||
'auth_password': '',
|
||||
'close_after_first_download': True,
|
||||
'shutdown_timeout': False,
|
||||
'autostop_timer': False,
|
||||
'autostart_timer': False,
|
||||
'use_stealth': False,
|
||||
'use_autoupdate': True,
|
||||
'autoupdate_timestamp': None,
|
||||
|
@ -41,7 +41,7 @@ RANDOM_STR_REGEX = re.compile(r'^[a-z2-7]+$')
|
||||
|
||||
def web_obj(common_obj, mode, num_files=0):
|
||||
""" Creates a Web object, in either share mode or receive mode, ready for testing """
|
||||
common_obj.load_settings()
|
||||
common_obj.settings = Settings(common_obj)
|
||||
strings.load_strings(common_obj)
|
||||
web = Web(common_obj, False, mode)
|
||||
web.generate_slug()
|
||||
|
Loading…
Reference in New Issue
Block a user