Merge branch 'develop' into 918_old_linux

This commit is contained in:
Micah Lee 2019-04-18 19:57:46 -07:00
commit ed1ada9c06
No known key found for this signature in database
GPG key ID: 403C2657CD994F73
90 changed files with 2246 additions and 1190 deletions

View file

@ -9,7 +9,7 @@ VERSION=`cat share/version.txt`
rm -r build dist >/dev/null 2>&1 rm -r build dist >/dev/null 2>&1
# build binary package # 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 # install it
echo "" echo ""

View file

@ -7,7 +7,7 @@ Comment[de]=Teile Dateien sicher und anonym über das Tor-Netzwerk
Exec=/usr/bin/onionshare-gui Exec=/usr/bin/onionshare-gui
Terminal=false Terminal=false
Type=Application Type=Application
Icon=/usr/share/pixmaps/onionshare80.xpm Icon=onionshare80
Categories=Network;FileTransfer; Categories=Network;FileTransfer;
Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting; Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting;
Keywords[da]=tor;anonymitet;privatliv;onion-tjeneste;fildeling;filhosting; Keywords[da]=tor;anonymitet;privatliv;onion-tjeneste;fildeling;filhosting;

View file

@ -1,10 +1,10 @@
atomicwrites==1.2.1 atomicwrites==1.3.0
attrs==18.2.0 attrs==19.1.0
more-itertools==4.3.0 more-itertools==5.0.0
pluggy==0.8.0 pluggy==0.9.0
py==1.7.0 py==1.8.0
pytest==4.0.1 pytest==4.4.1
pytest-faulthandler==1.5.0 pytest-faulthandler==1.5.0
pytest-qt==3.2.1 pytest-qt==3.2.2
six==1.11.0 six==1.12.0
urllib3==1.24.1 urllib3==1.24.2

View file

@ -1,25 +1,20 @@
altgraph==0.16.1 altgraph==0.16.1
asn1crypto==0.24.0 certifi==2019.3.9
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4 chardet==3.0.4
Click==7.0 Click==7.0
cryptography==2.4.2
Flask==1.0.2 Flask==1.0.2
future==0.17.1 future==0.17.1
idna==2.7 idna==2.8
itsdangerous==1.1.0 itsdangerous==1.1.0
Jinja2==2.10 Jinja2==2.10.1
macholib==1.11 macholib==1.11
MarkupSafe==1.1.0 MarkupSafe==1.1.1
pefile==2018.8.8 pefile==2019.4.18
pycparser==2.19 pycryptodome==3.8.1
pycryptodome==3.7.2 PyQt5==5.12.1
PyQt5==5.11.3 PyQt5-sip==4.19.15
PyQt5-sip==4.19.13
PySocks==1.6.8 PySocks==1.6.8
requests==2.20.1 requests==2.21.0
six==1.11.0 stem==1.7.1
stem==1.7.0 urllib3==1.24.2
urllib3==1.24.1 Werkzeug==0.15.2
Werkzeug==0.14.1

View file

@ -19,6 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
import os, sys, time, argparse, threading import os, sys, time, argparse, threading
from datetime import datetime
from datetime import timedelta
from . import strings from . import strings
from .common import Common 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 = 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('--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('--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('--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('--receive', action='store_true', dest='receive', help=strings._("help_receive"))
parser.add_argument('--config', metavar='config', default=False, help=strings._('help_config')) 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) local_only = bool(args.local_only)
debug = bool(args.debug) debug = bool(args.debug)
stay_open = bool(args.stay_open) 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) stealth = bool(args.stealth)
receive = bool(args.receive) receive = bool(args.receive)
config = args.config config = args.config
@ -111,7 +117,7 @@ def main(cwd=None):
# Start the Onion object # Start the Onion object
onion = Onion(common) onion = Onion(common)
try: try:
onion.connect(custom_settings=False, config=config) onion.connect(custom_settings=False, config=config, connect_timeout=connect_timeout)
except KeyboardInterrupt: except KeyboardInterrupt:
print("") print("")
sys.exit() sys.exit()
@ -120,9 +126,50 @@ def main(cwd=None):
# Start the onionshare app # Start the onionshare app
try: 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.set_stealth(stealth)
app.choose_port() app.choose_port()
# 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() app.start_onion_service()
except KeyboardInterrupt: except KeyboardInterrupt:
print("") print("")
@ -149,7 +196,7 @@ def main(cwd=None):
print('') print('')
# Start OnionShare http service in new thread # 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.daemon = True
t.start() t.start()
@ -157,9 +204,9 @@ def main(cwd=None):
# Wait for web.generate_slug() to finish running # Wait for web.generate_slug() to finish running
time.sleep(0.2) time.sleep(0.2)
# start shutdown timer thread # start auto-stop timer thread
if app.shutdown_timeout > 0: if app.autostop_timer > 0:
app.shutdown_timer.start() app.autostop_timer_thread.start()
# Save the web slug if we are using a persistent private key # Save the web slug if we are using a persistent private key
if common.settings.get('save_private_key'): if common.settings.get('save_private_key'):
@ -174,6 +221,9 @@ def main(cwd=None):
url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug) url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
print('') print('')
if autostart_timer > 0:
print(strings._('server_started'))
else:
if mode == 'receive': if mode == 'receive':
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir'))) print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
print('') print('')
@ -200,18 +250,18 @@ def main(cwd=None):
# Wait for app to close # Wait for app to close
while t.is_alive(): while t.is_alive():
if app.shutdown_timeout > 0: if app.autostop_timer > 0:
# if the shutdown timer was set and has run out, stop the server # if the auto-stop timer was set and has run out, stop the server
if not app.shutdown_timer.is_alive(): if not app.autostop_timer_thread.is_alive():
if mode == 'share': if mode == 'share':
# If there were no attempts to download the share, or all downloads are done, we can stop # 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: 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) web.stop(app.port)
break break
if mode == 'receive': if mode == 'receive':
if web.receive_mode.upload_count == 0 or not web.receive_mode.uploads_in_progress: 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) web.stop(app.port)
break break
else: else:

View file

@ -485,7 +485,7 @@ class Common(object):
return total_size return total_size
class ShutdownTimer(threading.Thread): class AutoStopTimer(threading.Thread):
""" """
Background thread sleeps t hours and returns. Background thread sleeps t hours and returns.
""" """
@ -498,6 +498,6 @@ class ShutdownTimer(threading.Thread):
self.time = time self.time = time
def run(self): 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) time.sleep(self.time)
return 1 return 1

View file

@ -133,6 +133,8 @@ class Onion(object):
self.stealth = False self.stealth = False
self.service_id = None self.service_id = None
self.scheduled_key = None
self.scheduled_auth_cookie = None
# Is bundled tor supported? # Is bundled tor supported?
if (self.common.platform == 'Windows' or self.common.platform == 'Darwin') and getattr(sys, 'onionshare_dev_mode', False): 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 # Start out not connected to Tor
self.connected_to_tor = False 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') self.common.log('Onion', 'connect')
# Either use settings that are passed in, or use them from common # 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 \ if self.settings.get('tor_bridges_use_custom_bridges') or \
self.settings.get('tor_bridges_use_obfs4') or \ self.settings.get('tor_bridges_use_obfs4') or \
self.settings.get('tor_bridges_use_meek_lite_azure'): self.settings.get('tor_bridges_use_meek_lite_azure'):
# Only override timeout if a custom timeout has not been passed in
if connect_timeout == 120:
connect_timeout = 150 connect_timeout = 150
else:
# Timeout after 120 seconds
connect_timeout = 120
if time.time() - start_ts > connect_timeout: if time.time() - start_ts > connect_timeout:
print("") print("")
try:
self.tor_proc.terminate() self.tor_proc.terminate()
raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout')) raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout'))
except FileNotFoundError:
pass
elif self.settings.get('connection_type') == 'automatic': elif self.settings.get('connection_type') == 'automatic':
# Automatically try to guess the right way to connect to Tor Browser # Automatically try to guess the right way to connect to Tor Browser
@ -423,25 +427,29 @@ class Onion(object):
return False 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 Start a onion service on port 80, pointing to the given port, and
return the onion hostname. return the onion hostname.
""" """
self.common.log('Onion', 'start_onion_service') self.common.log('Onion', 'start_onion_service')
self.auth_string = None self.auth_string = None
if not self.supports_ephemeral: if not self.supports_ephemeral:
raise TorTooOld(strings._('error_ephemeral_not_supported')) raise TorTooOld(strings._('error_ephemeral_not_supported'))
if self.stealth and not self.supports_stealth: if self.stealth and not self.supports_stealth:
raise TorTooOld(strings._('error_stealth_not_supported')) raise TorTooOld(strings._('error_stealth_not_supported'))
if not save_scheduled_key:
print(strings._("config_onion_service").format(int(port))) print(strings._("config_onion_service").format(int(port)))
if self.stealth: if self.stealth:
if self.settings.get('hidservauth_string'): if self.settings.get('hidservauth_string'):
hidservauth_string = self.settings.get('hidservauth_string').split()[2] hidservauth_string = self.settings.get('hidservauth_string').split()[2]
basic_auth = {'onionshare':hidservauth_string} basic_auth = {'onionshare':hidservauth_string}
else:
if self.scheduled_auth_cookie:
basic_auth = {'onionshare':self.scheduled_auth_cookie}
else: else:
basic_auth = {'onionshare':None} basic_auth = {'onionshare':None}
else: else:
@ -455,6 +463,14 @@ class Onion(object):
# Assume it was a v3 key. Stem will throw an error if it's something illegible # Assume it was a v3 key. Stem will throw an error if it's something illegible
key_type = "ED25519-V3" 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: else:
key_type = "NEW" key_type = "NEW"
# Work out if we can support v3 onion services, which are preferred # Work out if we can support v3 onion services, which are preferred
@ -474,7 +490,6 @@ class Onion(object):
if key_type == "NEW": if key_type == "NEW":
debug_message += ', key_content={}'.format(key_content) debug_message += ', key_content={}'.format(key_content)
self.common.log('Onion', 'start_onion_service', '{}'.format(debug_message)) self.common.log('Onion', 'start_onion_service', '{}'.format(debug_message))
await_publication = True
try: try:
if basic_auth != None: 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) 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'): if not self.settings.get('private_key'):
self.settings.set('private_key', res.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: if self.stealth:
# Similar to the PrivateKey, the Control port only returns the ClientAuth # Similar to the PrivateKey, the Control port only returns the ClientAuth
# in the response if it was responsible for creating the basic_auth password # 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.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie)
self.settings.set('hidservauth_string', self.auth_string) self.settings.set('hidservauth_string', self.auth_string)
else: else:
if not self.scheduled_auth_cookie:
auth_cookie = list(res.client_auth.values())[0] auth_cookie = list(res.client_auth.values())[0]
self.auth_string = 'HidServAuth {} {}'.format(onion_host, auth_cookie) 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: if onion_host is not None:
self.settings.save() self.settings.save()

View file

@ -22,14 +22,14 @@ import os, shutil
from . import common, strings from . import common, strings
from .onion import TorTooOld, TorErrorProtocolError from .onion import TorTooOld, TorErrorProtocolError
from .common import ShutdownTimer from .common import AutoStopTimer
class OnionShare(object): class OnionShare(object):
""" """
OnionShare is the main application class. Pass in options and run OnionShare is the main application class. Pass in options and run
start_onion_service and it will do the magic. 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 = common
self.common.log('OnionShare', '__init__') self.common.log('OnionShare', '__init__')
@ -49,9 +49,9 @@ class OnionShare(object):
self.local_only = local_only self.local_only = local_only
# optionally shut down after N hours # optionally shut down after N hours
self.shutdown_timeout = shutdown_timeout self.autostop_timer = autostop_timer
# init timing thread # init auto-stop timer thread
self.shutdown_timer = None self.autostop_timer_thread = None
def set_stealth(self, stealth): def set_stealth(self, stealth):
self.common.log('OnionShare', 'set_stealth', 'stealth={}'.format(stealth)) self.common.log('OnionShare', 'set_stealth', 'stealth={}'.format(stealth))
@ -68,7 +68,7 @@ class OnionShare(object):
except: except:
raise OSError(strings._('no_available_port')) 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. Start the onionshare onion service.
""" """
@ -77,14 +77,14 @@ class OnionShare(object):
if not self.port: if not self.port:
self.choose_port() self.choose_port()
if self.shutdown_timeout > 0: if self.autostop_timer > 0:
self.shutdown_timer = ShutdownTimer(self.common, self.shutdown_timeout) self.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer)
if self.local_only: if self.local_only:
self.onion_host = '127.0.0.1:{0:d}'.format(self.port) self.onion_host = '127.0.0.1:{0:d}'.format(self.port)
return 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: if self.stealth:
self.auth_string = self.onion.auth_string self.auth_string = self.onion.auth_string

View file

@ -84,7 +84,8 @@ class Settings(object):
'auth_type': 'no_auth', 'auth_type': 'no_auth',
'auth_password': '', 'auth_password': '',
'close_after_first_download': True, 'close_after_first_download': True,
'shutdown_timeout': False, 'autostop_timer': False,
'autostart_timer': False,
'use_stealth': False, 'use_stealth': False,
'use_autoupdate': True, 'use_autoupdate': True,
'autoupdate_timestamp': None, 'autoupdate_timestamp': None,

View file

@ -112,8 +112,10 @@ class ReceiveModeWeb(object):
else: else:
flash(msg, 'info') flash(msg, 'info')
else: else:
msg = 'Sent '
for filename in filenames: for filename in filenames:
msg = 'Sent {}'.format(filename) msg += '{}, '.format(filename)
msg = msg.rstrip(', ')
if ajax: if ajax:
info_flashes.append(msg) info_flashes.append(msg)
else: else:
@ -297,6 +299,7 @@ class ReceiveModeRequest(Request):
new_receive_mode_dir = '{}-{}'.format(self.receive_mode_dir, i) new_receive_mode_dir = '{}-{}'.format(self.receive_mode_dir, i)
try: try:
os.makedirs(new_receive_mode_dir, 0o700, exist_ok=False) os.makedirs(new_receive_mode_dir, 0o700, exist_ok=False)
self.receive_mode_dir = new_receive_mode_dir
break break
except OSError: except OSError:
pass pass

View file

@ -231,13 +231,11 @@ class Web(object):
pass pass
self.running = False 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. 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)) self.common.log('Web', 'start', 'port={}, stay_open={}, public_mode={}, slug={}'.format(port, stay_open, public_mode, slug))
if not public_mode:
self.generate_slug(persistent_slug)
self.stay_open = stay_open self.stay_open = stay_open
@ -267,7 +265,7 @@ class Web(object):
self.stop_q.put(True) self.stop_q.put(True)
# Reset any slug that was in use # 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 # To stop flask, load http://127.0.0.1:<port>/<shutdown_slug>/shutdown
if self.running: if self.running:

View file

@ -20,10 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
from onionshare.common import ShutdownTimer from onionshare.common import AutoStopTimer
from ..server_status import ServerStatus from ..server_status import ServerStatus
from ..threads import OnionThread from ..threads import OnionThread
from ..threads import AutoStartTimer
from ..widgets import Alert from ..widgets import Alert
class Mode(QtWidgets.QWidget): class Mode(QtWidgets.QWidget):
@ -35,6 +36,7 @@ class Mode(QtWidgets.QWidget):
starting_server_step2 = QtCore.pyqtSignal() starting_server_step2 = QtCore.pyqtSignal()
starting_server_step3 = QtCore.pyqtSignal() starting_server_step3 = QtCore.pyqtSignal()
starting_server_error = QtCore.pyqtSignal(str) starting_server_error = QtCore.pyqtSignal(str)
starting_server_early = QtCore.pyqtSignal()
set_server_active = QtCore.pyqtSignal(bool) set_server_active = QtCore.pyqtSignal(bool)
def __init__(self, common, qtapp, app, status_bar, server_status_label, system_tray, filenames=None, local_only=False): 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 # Threads start out as None
self.onion_thread = None self.onion_thread = None
self.web_thread = None self.web_thread = None
self.startup_thread = None
# Server status # Server status
self.server_status = ServerStatus(self.common, self.qtapp, self.app, None, self.local_only) 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.stop_server_finished.connect(self.server_status.stop_server_finished)
self.starting_server_step2.connect(self.start_server_step2) self.starting_server_step2.connect(self.start_server_step2)
self.starting_server_step3.connect(self.start_server_step3) 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) self.starting_server_error.connect(self.start_server_error)
# Primary action # Primary action
@ -88,24 +92,55 @@ class Mode(QtWidgets.QWidget):
""" """
pass 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): def timer_callback(self):
""" """
This method is called regularly on a timer. 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_STARTED: if self.server_status.status == ServerStatus.STATUS_WORKING:
if self.app.shutdown_timer and self.common.settings.get('shutdown_timeout'): if self.server_status.autostart_timer_datetime:
if self.timeout > 0:
now = QtCore.QDateTime.currentDateTime() now = QtCore.QDateTime.currentDateTime()
seconds_remaining = now.secsTo(self.server_status.timeout) 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.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.autostop_timer_datetime)
# Update the server button # Update the server button
server_button_text = self.get_stop_server_shutdown_timeout_text() server_button_text = self.get_stop_server_autostop_timer_text()
self.server_status.server_button.setText(server_button_text.format(seconds_remaining)) self.server_status.server_button.setText(server_button_text.format(self.human_friendly_time(seconds_remaining)))
self.status_bar.clearMessage() self.status_bar.clearMessage()
if not self.app.shutdown_timer.is_alive(): if not self.app.autostop_timer_thread.is_alive():
if self.timeout_finished_should_stop_server(): if self.autostop_timer_finished_should_stop_server():
self.server_status.stop_server() self.server_status.stop_server()
def timer_callback_custom(self): def timer_callback_custom(self):
@ -114,15 +149,15 @@ class Mode(QtWidgets.QWidget):
""" """
pass 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 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 pass
@ -142,7 +177,41 @@ class Mode(QtWidgets.QWidget):
self.status_bar.clearMessage() self.status_bar.clearMessage()
self.server_status_label.setText('') 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.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 = OnionThread(self)
self.onion_thread.success.connect(self.starting_server_step2.emit) self.onion_thread.success.connect(self.starting_server_step2.emit)
self.onion_thread.error.connect(self.starting_server_error.emit) self.onion_thread.error.connect(self.starting_server_error.emit)
@ -154,6 +223,14 @@ class Mode(QtWidgets.QWidget):
""" """
pass 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): def start_server_step2(self):
""" """
Step 2 in starting the onionshare server. Step 2 in starting the onionshare server.
@ -182,18 +259,18 @@ class Mode(QtWidgets.QWidget):
self.start_server_step3_custom() 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 # Convert the date value to seconds between now and then
now = QtCore.QDateTime.currentDateTime() now = QtCore.QDateTime.currentDateTime()
self.timeout = now.secsTo(self.server_status.timeout) self.autostop_timer_datetime_delta = now.secsTo(self.server_status.autostop_timer_datetime)
# Set the shutdown timeout value # Start the auto-stop timer
if self.timeout > 0: if self.autostop_timer_datetime_delta > 0:
self.app.shutdown_timer = ShutdownTimer(self.common, self.timeout) self.app.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer_datetime_delta)
self.app.shutdown_timer.start() self.app.autostop_timer_thread.start()
# The timeout has actually already passed since the user clicked Start. Probably the Onion service took too long to start. # The auto-stop timer has actually already passed since the user clicked Start. Probably the Onion service took too long to start.
else: else:
self.stop_server() 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): def start_server_step3_custom(self):
""" """
@ -225,7 +302,12 @@ class Mode(QtWidgets.QWidget):
Cancel the server while it is preparing to start Cancel the server while it is preparing to start
""" """
self.cancel_server_custom() 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: if self.onion_thread:
self.common.log('Mode', 'cancel_server: quitting onion thread') self.common.log('Mode', 'cancel_server: quitting onion thread')
self.onion_thread.quit() self.onion_thread.quit()

View file

@ -86,24 +86,24 @@ class ReceiveMode(Mode):
self.wrapper_layout.addWidget(self.history, stretch=1) self.wrapper_layout.addWidget(self.history, stretch=1)
self.setLayout(self.wrapper_layout) 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 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: 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.stop_server()
self.server_status_label.setText(strings._('close_on_timeout')) self.server_status_label.setText(strings._('close_on_autostop_timer'))
return True return True
# An upload is probably still running - hold off on stopping the share, but block new shares. # An upload is probably still running - hold off on stopping the share, but block new shares.
else: 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 self.web.receive_mode.can_upload = False
return False return False

View file

@ -121,24 +121,24 @@ class ShareMode(Mode):
# Always start with focus on file selection # Always start with focus on file selection
self.file_selection.setFocus() 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 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: if self.web.share_mode.download_count == 0 or self.web.done:
self.server_status.stop_server() 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 return True
# A download is probably still running - hold off on stopping the share # A download is probably still running - hold off on stopping the share
else: 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 return False
def start_server_custom(self): def start_server_custom(self):

View file

@ -228,6 +228,9 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.server_status_label.setText(strings._('gui_status_indicator_share_stopped')) self.server_status_label.setText(strings._('gui_status_indicator_share_stopped'))
elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING: 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_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_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')) self.server_status_label.setText(strings._('gui_status_indicator_share_working'))
elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED: 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_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
@ -239,6 +242,9 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.server_status_label.setText(strings._('gui_status_indicator_receive_stopped')) self.server_status_label.setText(strings._('gui_status_indicator_receive_stopped'))
elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING: 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_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_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')) self.server_status_label.setText(strings._('gui_status_indicator_receive_working'))
elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED: 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_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
@ -309,10 +315,16 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.receive_mode.on_reload_settings() self.receive_mode.on_reload_settings()
self.status_bar.clearMessage() self.status_bar.clearMessage()
# If we switched off the shutdown timeout setting, ensure the widget is hidden. # If we switched off the auto-stop timer setting, ensure the widget is hidden.
if not self.common.settings.get('shutdown_timeout'): if not self.common.settings.get('autostop_timer'):
self.share_mode.server_status.shutdown_timeout_container.hide() self.share_mode.server_status.autostop_timer_container.hide()
self.receive_mode.server_status.shutdown_timeout_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 = SettingsDialog(self.common, self.onion, self.qtapp, self.config, self.local_only)
d.settings_saved.connect(reload_settings) d.settings_saved.connect(reload_settings)

View file

@ -56,34 +56,60 @@ class ServerStatus(QtWidgets.QWidget):
self.app = app self.app = app
self.web = None self.web = None
self.autostart_timer_datetime = None
self.local_only = local_only self.local_only = local_only
self.resizeEvent(None) self.resizeEvent(None)
# Shutdown timeout layout # Auto-start timer layout
self.shutdown_timeout_label = QtWidgets.QLabel(strings._('gui_settings_shutdown_timeout')) self.autostart_timer_label = QtWidgets.QLabel(strings._('gui_settings_autostart_timer'))
self.shutdown_timeout = QtWidgets.QDateTimeEdit() self.autostart_timer_widget = QtWidgets.QDateTimeEdit()
self.shutdown_timeout.setDisplayFormat("hh:mm A MMM d, yy") self.autostart_timer_widget.setDisplayFormat("hh:mm A MMM d, yy")
if self.local_only: if self.local_only:
# For testing # For testing
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15)) self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime()) self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
else: else:
# Set proposed timeout to be 5 minutes into the future # Set proposed timer to be 5 minutes into the future
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300)) 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 # 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.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
self.shutdown_timeout.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection) self.autostart_timer_widget.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
shutdown_timeout_layout = QtWidgets.QHBoxLayout() autostart_timer_layout = QtWidgets.QHBoxLayout()
shutdown_timeout_layout.addWidget(self.shutdown_timeout_label) autostart_timer_layout.addWidget(self.autostart_timer_label)
shutdown_timeout_layout.addWidget(self.shutdown_timeout) autostart_timer_layout.addWidget(self.autostart_timer_widget)
# Shutdown timeout container, so it can all be hidden and shown as a group # Auto-start timer container, so it can all be hidden and shown as a group
shutdown_timeout_container_layout = QtWidgets.QVBoxLayout() autostart_timer_container_layout = QtWidgets.QVBoxLayout()
shutdown_timeout_container_layout.addLayout(shutdown_timeout_layout) autostart_timer_container_layout.addLayout(autostart_timer_layout)
self.shutdown_timeout_container = QtWidgets.QWidget() self.autostart_timer_container = QtWidgets.QWidget()
self.shutdown_timeout_container.setLayout(shutdown_timeout_container_layout) self.autostart_timer_container.setLayout(autostart_timer_container_layout)
self.shutdown_timeout_container.hide() 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 # Server layout
self.server_button = QtWidgets.QPushButton() self.server_button = QtWidgets.QPushButton()
@ -123,7 +149,8 @@ class ServerStatus(QtWidgets.QWidget):
layout = QtWidgets.QVBoxLayout() layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.server_button) layout.addWidget(self.server_button)
layout.addLayout(url_layout) 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) self.setLayout(layout)
def set_mode(self, share_mode, file_selection=None): def set_mode(self, share_mode, file_selection=None):
@ -154,21 +181,26 @@ class ServerStatus(QtWidgets.QWidget):
except: except:
pass pass
def autostart_timer_reset(self):
def shutdown_timeout_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: 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 update(self): def autostop_timer_reset(self):
""" """
Update the GUI elements based on the current state. 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.
""" """
# Set the URL fields
if self.status == self.STATUS_STARTED:
self.url_description.show() self.url_description.show()
info_image = self.common.get_resource_path('images/info.png') info_image = self.common.get_resource_path('images/info.png')
@ -192,21 +224,31 @@ class ServerStatus(QtWidgets.QWidget):
self.url.setText(self.get_url()) self.url.setText(self.get_url())
self.url.show() self.url.show()
self.copy_url_button.show() self.copy_url_button.show()
if self.app.stealth:
self.copy_hidservauth_button.show()
else:
self.copy_hidservauth_button.hide()
def update(self):
"""
Update the GUI elements based on the current state.
"""
# Set the URL fields
if self.status == self.STATUS_STARTED:
self.show_url()
if self.common.settings.get('save_private_key'): if self.common.settings.get('save_private_key'):
if not self.common.settings.get('slug'): if not self.common.settings.get('slug'):
self.common.settings.set('slug', self.web.slug) self.common.settings.set('slug', self.web.slug)
self.common.settings.save() self.common.settings.save()
if self.common.settings.get('shutdown_timeout'): if self.common.settings.get('autostart_timer'):
self.shutdown_timeout_container.hide() self.autostart_timer_container.hide()
if self.app.stealth: if self.common.settings.get('autostop_timer'):
self.copy_hidservauth_button.show() self.autostop_timer_container.hide()
else:
self.copy_hidservauth_button.hide()
else: else:
self.url_description.hide() self.url_description.hide()
self.url.hide() self.url.hide()
@ -227,8 +269,10 @@ class ServerStatus(QtWidgets.QWidget):
else: else:
self.server_button.setText(strings._('gui_receive_start_server')) self.server_button.setText(strings._('gui_receive_start_server'))
self.server_button.setToolTip('') self.server_button.setToolTip('')
if self.common.settings.get('shutdown_timeout'): if self.common.settings.get('autostart_timer'):
self.shutdown_timeout_container.show() self.autostart_timer_container.show()
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.show()
elif self.status == self.STATUS_STARTED: elif self.status == self.STATUS_STARTED:
self.server_button.setStyleSheet(self.common.css['server_status_button_started']) self.server_button.setStyleSheet(self.common.css['server_status_button_started'])
self.server_button.setEnabled(True) self.server_button.setEnabled(True)
@ -236,43 +280,61 @@ class ServerStatus(QtWidgets.QWidget):
self.server_button.setText(strings._('gui_share_stop_server')) self.server_button.setText(strings._('gui_share_stop_server'))
else: else:
self.server_button.setText(strings._('gui_receive_stop_server')) self.server_button.setText(strings._('gui_receive_stop_server'))
if self.common.settings.get('shutdown_timeout'): if self.common.settings.get('autostart_timer'):
self.shutdown_timeout_container.hide() self.autostart_timer_container.hide()
if self.mode == ServerStatus.MODE_SHARE: if self.common.settings.get('autostop_timer'):
self.server_button.setToolTip(strings._('gui_share_stop_server_shutdown_timeout_tooltip').format(self.timeout)) self.autostop_timer_container.hide()
else: self.server_button.setToolTip(strings._('gui_stop_server_autostop_timer_tooltip').format(self.autostop_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
self.server_button.setToolTip(strings._('gui_receive_stop_server_shutdown_timeout_tooltip').format(self.timeout))
elif self.status == self.STATUS_WORKING: elif self.status == self.STATUS_WORKING:
self.server_button.setStyleSheet(self.common.css['server_status_button_working']) self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
self.server_button.setEnabled(True) self.server_button.setEnabled(True)
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')) self.server_button.setText(strings._('gui_please_wait'))
if self.common.settings.get('shutdown_timeout'): if self.common.settings.get('autostop_timer'):
self.shutdown_timeout_container.hide() self.autostop_timer_container.hide()
else: else:
self.server_button.setStyleSheet(self.common.css['server_status_button_working']) self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
self.server_button.setEnabled(False) self.server_button.setEnabled(False)
self.server_button.setText(strings._('gui_please_wait')) self.server_button.setText(strings._('gui_please_wait'))
if self.common.settings.get('shutdown_timeout'): if self.common.settings.get('autostart_timer'):
self.shutdown_timeout_container.hide() 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): def server_button_clicked(self):
""" """
Toggle starting or stopping the server. Toggle starting or stopping the server.
""" """
if self.status == self.STATUS_STOPPED: 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: if self.local_only:
self.timeout = self.shutdown_timeout.dateTime().toPyDateTime() self.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime()
else: 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.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime().replace(second=0, microsecond=0)
self.timeout = self.shutdown_timeout.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 the timeout has actually passed already before the user hit Start, refuse to start the server. if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.autostart_timer_datetime:
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.timeout: can_start = False
Alert(self.common, strings._('gui_server_timeout_expired'), QtWidgets.QMessageBox.Warning) Alert(self.common, strings._('gui_server_autostart_timer_expired'), QtWidgets.QMessageBox.Warning)
else: if self.common.settings.get('autostop_timer'):
self.start_server() if self.local_only:
self.autostop_timer_datetime = self.autostop_timer_widget.dateTime().toPyDateTime()
else: 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() self.start_server()
elif self.status == self.STATUS_STARTED: elif self.status == self.STATUS_STARTED:
self.stop_server() self.stop_server()
@ -302,7 +364,8 @@ class ServerStatus(QtWidgets.QWidget):
Stop the server. Stop the server.
""" """
self.status = self.STATUS_WORKING self.status = self.STATUS_WORKING
self.shutdown_timeout_reset() self.autostart_timer_reset()
self.autostop_timer_reset()
self.update() self.update()
self.server_stopped.emit() self.server_stopped.emit()
@ -312,7 +375,8 @@ class ServerStatus(QtWidgets.QWidget):
""" """
self.common.log('ServerStatus', 'cancel_server', 'Canceling the server mid-startup') self.common.log('ServerStatus', 'cancel_server', 'Canceling the server mid-startup')
self.status = self.STATUS_WORKING self.status = self.STATUS_WORKING
self.shutdown_timeout_reset() self.autostart_timer_reset()
self.autostop_timer_reset()
self.update() self.update()
self.server_canceled.emit() self.server_canceled.emit()

View file

@ -71,27 +71,45 @@ class SettingsDialog(QtWidgets.QDialog):
self.public_mode_widget = QtWidgets.QWidget() self.public_mode_widget = QtWidgets.QWidget()
self.public_mode_widget.setLayout(public_mode_layout) self.public_mode_widget.setLayout(public_mode_layout)
# Whether or not to use a shutdown ('auto-stop') timer # Whether or not to use an auto-start timer
self.shutdown_timeout_checkbox = QtWidgets.QCheckBox() self.autostart_timer_checkbox = QtWidgets.QCheckBox()
self.shutdown_timeout_checkbox.setCheckState(QtCore.Qt.Checked) self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Checked)
self.shutdown_timeout_checkbox.setText(strings._("gui_settings_shutdown_timeout_checkbox")) self.autostart_timer_checkbox.setText(strings._("gui_settings_autostart_timer_checkbox"))
shutdown_timeout_label = QtWidgets.QLabel(strings._("gui_settings_whats_this").format("https://github.com/micahflee/onionshare/wiki/Using-the-Auto-Stop-Timer")) autostart_timer_label = QtWidgets.QLabel(strings._("gui_settings_whats_this").format("https://github.com/micahflee/onionshare/wiki/Using-the-Startup-Timer"))
shutdown_timeout_label.setStyleSheet(self.common.css['settings_whats_this']) autostart_timer_label.setStyleSheet(self.common.css['settings_whats_this'])
shutdown_timeout_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction) autostart_timer_label.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction)
shutdown_timeout_label.setOpenExternalLinks(True) autostart_timer_label.setOpenExternalLinks(True)
shutdown_timeout_label.setMinimumSize(public_mode_label.sizeHint()) autostart_timer_label.setMinimumSize(public_mode_label.sizeHint())
shutdown_timeout_layout = QtWidgets.QHBoxLayout() autostart_timer_layout = QtWidgets.QHBoxLayout()
shutdown_timeout_layout.addWidget(self.shutdown_timeout_checkbox) autostart_timer_layout.addWidget(self.autostart_timer_checkbox)
shutdown_timeout_layout.addWidget(shutdown_timeout_label) autostart_timer_layout.addWidget(autostart_timer_label)
shutdown_timeout_layout.addStretch() autostart_timer_layout.addStretch()
shutdown_timeout_layout.setContentsMargins(0,0,0,0) autostart_timer_layout.setContentsMargins(0,0,0,0)
self.shutdown_timeout_widget = QtWidgets.QWidget() self.autostart_timer_widget = QtWidgets.QWidget()
self.shutdown_timeout_widget.setLayout(shutdown_timeout_layout) 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 settings layout
general_group_layout = QtWidgets.QVBoxLayout() general_group_layout = QtWidgets.QVBoxLayout()
general_group_layout.addWidget(self.public_mode_widget) 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 = QtWidgets.QGroupBox(strings._("gui_settings_general_label"))
general_group.setLayout(general_group_layout) general_group.setLayout(general_group_layout)
@ -488,11 +506,17 @@ class SettingsDialog(QtWidgets.QDialog):
else: else:
self.close_after_first_download_checkbox.setCheckState(QtCore.Qt.Unchecked) self.close_after_first_download_checkbox.setCheckState(QtCore.Qt.Unchecked)
shutdown_timeout = self.old_settings.get('shutdown_timeout') autostart_timer = self.old_settings.get('autostart_timer')
if shutdown_timeout: if autostart_timer:
self.shutdown_timeout_checkbox.setCheckState(QtCore.Qt.Checked) self.autostart_timer_checkbox.setCheckState(QtCore.Qt.Checked)
else: 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') save_private_key = self.old_settings.get('save_private_key')
if save_private_key: if save_private_key:
@ -932,7 +956,8 @@ class SettingsDialog(QtWidgets.QDialog):
settings.load() # To get the last update timestamp settings.load() # To get the last update timestamp
settings.set('close_after_first_download', self.close_after_first_download_checkbox.isChecked()) 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 # Complicated logic here to force v2 onion mode on or off depending on other settings
if self.use_legacy_v2_onions_checkbox.isChecked(): if self.use_legacy_v2_onions_checkbox.isChecked():

View file

@ -28,6 +28,7 @@ class OnionThread(QtCore.QThread):
Starts the onion service, and waits for it to finish Starts the onion service, and waits for it to finish
""" """
success = QtCore.pyqtSignal() success = QtCore.pyqtSignal()
success_early = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str) error = QtCore.pyqtSignal(str)
def __init__(self, mode): def __init__(self, mode):
@ -41,17 +42,29 @@ class OnionThread(QtCore.QThread):
def run(self): def run(self):
self.mode.common.log('OnionThread', 'run') 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') self.mode.app.stay_open = not self.mode.common.settings.get('close_after_first_download')
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:
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 # start onionshare http service in new thread
self.mode.web_thread = WebThread(self.mode) self.mode.web_thread = WebThread(self.mode)
self.mode.web_thread.start() self.mode.web_thread.start()
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
try:
self.mode.app.start_onion_service()
self.success.emit() self.success.emit()
except (TorTooOld, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, OSError) as e: except (TorTooOld, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, OSError) as e:
@ -73,5 +86,39 @@ class WebThread(QtCore.QThread):
def run(self): def run(self):
self.mode.common.log('WebThread', 'run') 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.web.slug)
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.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

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -38,12 +38,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "ተወው", "gui_settings_button_cancel": "ተወው",
"gui_settings_button_help": "መመሪያ", "gui_settings_button_help": "መመሪያ",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} ملف غير قابل للقراءة.", "not_a_readable_file": "{0:s} ملف غير قابل للقراءة.",
"no_available_port": "لا يوجد منفذ متاح لتشغيل (onion service)", "no_available_port": "لا يوجد منفذ متاح لتشغيل (onion service)",
"other_page_loaded": "تم تحميل العنوان", "other_page_loaded": "تم تحميل العنوان",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "توقف بسبب انتهاء التحميل", "closing_automatically": "توقف بسبب انتهاء التحميل",
"timeout_download_still_running": "انتظار اكتمال التحميل", "timeout_download_still_running": "انتظار اكتمال التحميل",
"large_filesize": "تحذير: ارسال مشاركة كبيرة قد يستغرق ساعات", "large_filesize": "تحذير: ارسال مشاركة كبيرة قد يستغرق ساعات",
@ -23,133 +23,133 @@
"systray_download_canceled_message": "الغى المستخدم التحميل", "systray_download_canceled_message": "الغى المستخدم التحميل",
"systray_upload_started_title": "بدأ الرفع", "systray_upload_started_title": "بدأ الرفع",
"systray_upload_started_message": "بدأ مستخدم رفع ملفات الى حاسوبك", "systray_upload_started_message": "بدأ مستخدم رفع ملفات الى حاسوبك",
"help_local_only": "", "help_local_only": "لا تستخدم تور (فقط لغرض التطوير)",
"help_stay_open": "استمر في المشاركة بعد اول تحميل", "help_stay_open": "استمر في المشاركة بعد اول تحميل",
"help_shutdown_timeout": "أوقف المشاركة بعد ثواني محددة", "help_autostop_timer": "أوقف المشاركة بعد ثواني محددة",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
"help_filename": "", "help_filename": "قائمة الملفات أو المجلدات للمشاركة",
"help_config": "", "help_config": "",
"gui_drag_and_drop": "", "gui_drag_and_drop": "",
"gui_add": "إضافة", "gui_add": "إضافة",
"gui_delete": "حذف", "gui_delete": "حذف",
"gui_choose_items": "إختر", "gui_choose_items": "إختر",
"gui_share_start_server": "", "gui_share_start_server": "ابدأ المشاركة",
"gui_share_stop_server": "", "gui_share_stop_server": "أوقف المشاركة",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "نسخ العنوان",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
"gui_no_downloads": "", "gui_no_downloads": "",
"gui_canceled": "ألغى", "gui_canceled": "ألغى",
"gui_copied_url_title": "", "gui_copied_url_title": "",
"gui_copied_url": "", "gui_copied_url": "تم نسخ عنوان OnionShare إلى الحافظة",
"gui_copied_hidservauth_title": "", "gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "", "gui_copied_hidservauth": "",
"gui_please_wait": "", "gui_please_wait": "",
"gui_download_upload_progress_complete": "", "gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "", "gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "", "gui_download_upload_progress_eta": "",
"version_string": "", "version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "", "gui_quit_title": "",
"gui_share_quit_warning": "", "gui_share_quit_warning": "إنك بصدد إرسال ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
"gui_receive_quit_warning": "", "gui_receive_quit_warning": "إنك بصدد تلقي ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
"gui_quit_warning_quit": "خروج", "gui_quit_warning_quit": "خروج",
"gui_quit_warning_dont_quit": "إلغاء", "gui_quit_warning_dont_quit": "إلغاء",
"error_rate_limit": "", "error_rate_limit": "",
"zip_progress_bar_format": "", "zip_progress_bar_format": "جاري الضغط: %p%",
"error_stealth_not_supported": "", "error_stealth_not_supported": "",
"error_ephemeral_not_supported": "", "error_ephemeral_not_supported": "",
"gui_settings_window_title": "الإعدادات", "gui_settings_window_title": "الإعدادات",
"gui_settings_whats_this": "", "gui_settings_whats_this": "<a href='{0:s}'>ما هذا؟</a>",
"gui_settings_stealth_option": "", "gui_settings_stealth_option": "استخدام ترخيص العميل",
"gui_settings_stealth_hidservauth_string": "", "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "التحقق من الإصدار الجديد", "gui_settings_autoupdate_label": "التحقق من الإصدار الجديد",
"gui_settings_autoupdate_option": "", "gui_settings_autoupdate_option": "قم بإشعاري عند توفر إصدار جديد",
"gui_settings_autoupdate_timestamp": "", "gui_settings_autoupdate_timestamp": "آخر فحص: {}",
"gui_settings_autoupdate_timestamp_never": "أبدا", "gui_settings_autoupdate_timestamp_never": "أبدا",
"gui_settings_autoupdate_check_button": "", "gui_settings_autoupdate_check_button": "تحقق من وجود نسخة جديدة",
"gui_settings_general_label": "الإعدادات العامة", "gui_settings_general_label": "الإعدادات العامة",
"gui_settings_sharing_label": "", "gui_settings_sharing_label": "إعدادات المشاركة",
"gui_settings_close_after_first_download_option": "", "gui_settings_close_after_first_download_option": "إيقاف المشاركة بعد اكتمال إرسال الملفات",
"gui_settings_connection_type_label": "", "gui_settings_connection_type_label": "كيف ينبغي أن يتصل OnionShare بشبكة تور؟",
"gui_settings_connection_type_bundled_option": "", "gui_settings_connection_type_bundled_option": "استخدام إصدار تور المدمج في صلب OnionShare",
"gui_settings_connection_type_automatic_option": "", "gui_settings_connection_type_automatic_option": "",
"gui_settings_connection_type_control_port_option": "", "gui_settings_connection_type_control_port_option": "",
"gui_settings_connection_type_socket_file_option": "", "gui_settings_connection_type_socket_file_option": "",
"gui_settings_connection_type_test_button": "", "gui_settings_connection_type_test_button": "اختبار الاتصال بشبكة تور",
"gui_settings_control_port_label": "", "gui_settings_control_port_label": "منفذ التحكم",
"gui_settings_socket_file_label": "", "gui_settings_socket_file_label": "",
"gui_settings_socks_label": "", "gui_settings_socks_label": "",
"gui_settings_authenticate_label": "", "gui_settings_authenticate_label": "إعدادات المصادقة على تور",
"gui_settings_authenticate_no_auth_option": "", "gui_settings_authenticate_no_auth_option": "",
"gui_settings_authenticate_password_option": "كلمة السر", "gui_settings_authenticate_password_option": "كلمة السر",
"gui_settings_password_label": "كلمة السر", "gui_settings_password_label": "كلمة السر",
"gui_settings_tor_bridges": "", "gui_settings_tor_bridges": "دعم جسر تور",
"gui_settings_tor_bridges_no_bridges_radio_option": "", "gui_settings_tor_bridges_no_bridges_radio_option": "لا تستخدم الجسور",
"gui_settings_tor_bridges_obfs4_radio_option": "", "gui_settings_tor_bridges_obfs4_radio_option": "",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "", "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": "",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "", "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
"gui_settings_meek_lite_expensive_warning": "", "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_custom_label": "",
"gui_settings_tor_bridges_invalid": "", "gui_settings_tor_bridges_invalid": "",
"gui_settings_button_save": "حفظ", "gui_settings_button_save": "حفظ",
"gui_settings_button_cancel": "إلغاء", "gui_settings_button_cancel": "إلغاء",
"gui_settings_button_help": "مساعدة", "gui_settings_button_help": "مساعدة",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "إيقاف المشاركة يوم:",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "لا يمكن الاتصال بوحدة تحكم تور في {}:{}.",
"settings_error_socket_file": "", "settings_error_socket_file": "",
"settings_error_auth": "", "settings_error_auth": "",
"settings_error_missing_password": "", "settings_error_missing_password": "متصل بوحدة تحكم تور، ولكنه يتطلب كلمة سرية للمصادقة.",
"settings_error_unreadable_cookie_file": "", "settings_error_unreadable_cookie_file": "",
"settings_error_bundled_tor_not_supported": "", "settings_error_bundled_tor_not_supported": "",
"settings_error_bundled_tor_timeout": "", "settings_error_bundled_tor_timeout": "",
"settings_error_bundled_tor_broken": "", "settings_error_bundled_tor_broken": "",
"settings_test_success": "", "settings_test_success": "",
"error_tor_protocol_error": "", "error_tor_protocol_error": "هناك خطأ مع تور: {}",
"error_tor_protocol_error_unknown": "", "error_tor_protocol_error_unknown": "حدث خطأ مجهول مع تور",
"error_invalid_private_key": "", "error_invalid_private_key": "نوع المفتاح الخاص هذا غير معتمد",
"connecting_to_tor": "", "connecting_to_tor": "جارٍ الاتصال بشبكة تور",
"update_available": "", "update_available": "",
"update_error_check_error": "", "update_error_check_error": "",
"update_error_invalid_latest_version": "", "update_error_invalid_latest_version": "",
"update_not_available": "", "update_not_available": "إنك تقوم بتشغيل آخر نسخة مِن OnionShare.",
"gui_tor_connection_ask": "", "gui_tor_connection_ask": "",
"gui_tor_connection_ask_open_settings": "نعم,", "gui_tor_connection_ask_open_settings": "نعم,",
"gui_tor_connection_ask_quit": "خروج", "gui_tor_connection_ask_quit": "خروج",
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "غير متصل بشبكة تور.",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "استخدم العناوين الموروثة",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "استخدم عنوانا ثابتا",
"gui_share_url_description": "", "gui_share_url_description": "",
"gui_receive_url_description": "", "gui_receive_url_description": "",
"gui_url_label_persistent": "", "gui_url_label_persistent": "",
"gui_url_label_stay_open": "", "gui_url_label_stay_open": "",
"gui_url_label_onetime": "", "gui_url_label_onetime": "",
"gui_url_label_onetime_and_persistent": "", "gui_url_label_onetime_and_persistent": "",
"gui_status_indicator_share_stopped": "", "gui_status_indicator_share_stopped": "جاهز للمشاركة",
"gui_status_indicator_share_working": "", "gui_status_indicator_share_working": "يبدأ…",
"gui_status_indicator_share_started": "", "gui_status_indicator_share_started": "المشاركة جارية",
"gui_status_indicator_receive_stopped": "", "gui_status_indicator_receive_stopped": "جاهز للتلقي",
"gui_status_indicator_receive_working": "", "gui_status_indicator_receive_working": "يبدأ…",
"gui_status_indicator_receive_started": "جاري الإستلام", "gui_status_indicator_receive_started": "جاري الإستلام",
"gui_file_info": "", "gui_file_info": "{} ملفات، {}",
"gui_file_info_single": "", "gui_file_info_single": "{} ملف، {}",
"history_in_progress_tooltip": "", "history_in_progress_tooltip": "",
"history_completed_tooltip": "", "history_completed_tooltip": "",
"info_in_progress_uploads_tooltip": "", "info_in_progress_uploads_tooltip": "",
@ -159,17 +159,17 @@
"receive_mode_warning": "", "receive_mode_warning": "",
"gui_receive_mode_warning": "", "gui_receive_mode_warning": "",
"receive_mode_upload_starting": "", "receive_mode_upload_starting": "",
"receive_mode_received_file": "", "receive_mode_received_file": "تم تلقي: {}",
"gui_mode_share_button": "", "gui_mode_share_button": "مشاركة الملفات",
"gui_mode_receive_button": "", "gui_mode_receive_button": "تلقّي ملفات",
"gui_settings_receiving_label": "", "gui_settings_receiving_label": "إعدادات الاستلام",
"gui_settings_downloads_label": "", "gui_settings_downloads_label": "",
"gui_settings_downloads_button": "استعراض", "gui_settings_downloads_button": "استعراض",
"gui_settings_receive_allow_receiver_shutdown_checkbox": "", "gui_settings_receive_allow_receiver_shutdown_checkbox": "",
"gui_settings_public_mode_checkbox": "", "gui_settings_public_mode_checkbox": "الوضع العام",
"systray_close_server_title": "", "systray_close_server_title": "",
"systray_close_server_message": "", "systray_close_server_message": "",
"systray_page_loaded_title": "", "systray_page_loaded_title": "تم تحميل الصفحة",
"systray_download_page_loaded_message": "", "systray_download_page_loaded_message": "",
"systray_upload_page_loaded_message": "", "systray_upload_page_loaded_message": "",
"gui_uploads": "", "gui_uploads": "",
@ -180,7 +180,28 @@
"gui_upload_finished": "", "gui_upload_finished": "",
"gui_download_in_progress": "", "gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "", "gui_open_folder_error_nautilus": "",
"gui_settings_language_label": "", "gui_settings_language_label": "اللغة المفضلة",
"gui_settings_language_changed_notice": "", "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": "في انتظار الانتهاء من الاستلام"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s) не е четаем файл.", "not_a_readable_file": "{0:s) не е четаем файл.",
"no_available_port": "Свободен порт не бе намерен, за да може onion услугата да бъде стартирана", "no_available_port": "Свободен порт не бе намерен, за да може onion услугата да бъде стартирана",
"other_page_loaded": "Адресът е зареден", "other_page_loaded": "Адресът е зареден",
"close_on_timeout": "Спряно, защото автоматично спиращият таймер приключи", "close_on_autostop_timer": "Спряно, защото автоматично спиращият таймер приключи",
"closing_automatically": "Спряно, защото свалянето приключи", "closing_automatically": "Спряно, защото свалянето приключи",
"timeout_download_still_running": "Изчакване на свалянето да приключи", "timeout_download_still_running": "Изчакване на свалянето да приключи",
"timeout_upload_still_running": "Изчакване ъплоудът да приключи", "timeout_upload_still_running": "Изчакване ъплоудът да приключи",
@ -26,7 +26,7 @@
"systray_upload_started_message": "Ползвател започна да ъплоудва файлове на компютъра Ви", "systray_upload_started_message": "Ползвател започна да ъплоудва файлове на компютъра Ви",
"help_local_only": "Не използвайте Тор (само за разработване)", "help_local_only": "Не използвайте Тор (само за разработване)",
"help_stay_open": "Продължи споделянето след първото изтегляне", "help_stay_open": "Продължи споделянето след първото изтегляне",
"help_shutdown_timeout": "Спри споделянето след дадено количество секунди", "help_autostop_timer": "Спри споделянето след дадено количество секунди",
"help_stealth": "Използвай клиент авторизация (напреднал)", "help_stealth": "Използвай клиент авторизация (напреднал)",
"help_receive": "Получаване на дялове вместо изпращане", "help_receive": "Получаване на дялове вместо изпращане",
"help_debug": "Протоколирай OnionShare грешки на stdout и уеб грешки на диск", "help_debug": "Протоколирай OnionShare грешки на stdout и уеб грешки на диск",
@ -38,12 +38,12 @@
"gui_choose_items": "Изберете", "gui_choose_items": "Изберете",
"gui_share_start_server": "Започнете споделянето", "gui_share_start_server": "Започнете споделянето",
"gui_share_stop_server": "Спрете споделянето", "gui_share_stop_server": "Спрете споделянето",
"gui_share_stop_server_shutdown_timeout": "Спрете споделянето ({} остават)", "gui_share_stop_server_autostop_timer": "Спрете споделянето ({} остават)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Автоматично спиращият таймерът терминира в {}", "gui_share_stop_server_autostop_timer_tooltip": "Автоматично спиращият таймерът терминира в {}",
"gui_receive_start_server": "Стартирайте получаващ режим", "gui_receive_start_server": "Стартирайте получаващ режим",
"gui_receive_stop_server": "Спрете получаващия режим", "gui_receive_stop_server": "Спрете получаващия режим",
"gui_receive_stop_server_shutdown_timeout": "Спрете получаващия режим ({} остават)", "gui_receive_stop_server_autostop_timer": "Спрете получаващия режим ({} остават)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Автоматично спиращият таймер спира в {}", "gui_receive_stop_server_autostop_timer_tooltip": "Автоматично спиращият таймер спира в {}",
"gui_copy_url": "Копирайте адрес", "gui_copy_url": "Копирайте адрес",
"gui_copy_hidservauth": "Копирайте HidServAuth", "gui_copy_hidservauth": "Копирайте HidServAuth",
"gui_downloads": "Свалете история", "gui_downloads": "Свалете история",
@ -105,8 +105,8 @@
"gui_settings_button_save": "Запазване", "gui_settings_button_save": "Запазване",
"gui_settings_button_cancel": "Отказ", "gui_settings_button_cancel": "Отказ",
"gui_settings_button_help": "Помощ", "gui_settings_button_help": "Помощ",
"gui_settings_shutdown_timeout_checkbox": "Използвайте автоматично спиращия таймер", "gui_settings_autostop_timer_checkbox": "Използвайте автоматично спиращия таймер",
"gui_settings_shutdown_timeout": "Спри дела на:", "gui_settings_autostop_timer": "Спри дела на:",
"settings_error_unknown": "Не мога да се свържа с Тор контролера, защото Вашите настройки не правят смисъл.", "settings_error_unknown": "Не мога да се свържа с Тор контролера, защото Вашите настройки не правят смисъл.",
"settings_error_automatic": "Не мога да се свържа с Тор контролера. Стартиран ли е Тор браузерът във фонов режим (достъпен от torproject. org)?", "settings_error_automatic": "Не мога да се свържа с Тор контролера. Стартиран ли е Тор браузерът във фонов режим (достъпен от torproject. org)?",
"settings_error_socket_port": "Не мога да се свържа с Тор контролера в {}:{}.", "settings_error_socket_port": "Не мога да се свържа с Тор контролера в {}:{}.",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "Опитайте се да промените в настройките как OnionShare се свързва с Тор.", "gui_tor_connection_error_settings": "Опитайте се да промените в настройките как OnionShare се свързва с Тор.",
"gui_tor_connection_canceled": "Не може да се установи връзка с Тор.\n\nУверете се, че имате връзка с интернтет, след което отново отворете OnionShare и пренастройте връзката с Тор.", "gui_tor_connection_canceled": "Не може да се установи връзка с Тор.\n\nУверете се, че имате връзка с интернтет, след което отново отворете OnionShare и пренастройте връзката с Тор.",
"gui_tor_connection_lost": "Връзката с Тор е прекъсната.", "gui_tor_connection_lost": "Връзката с Тор е прекъсната.",
"gui_server_started_after_timeout": "Автоматично спиращият таймер спря преди сървърът да стартира.\nМоля направете нов дял.", "gui_server_started_after_autostop_timer": "Автоматично спиращият таймер спря преди сървърът да стартира.\nМоля направете нов дял.",
"gui_server_timeout_expired": "Автоматично спиращият таймер спря.\nМоля актуализирайте за да започнете споделяне.", "gui_server_autostop_timer_expired": "Автоматично спиращият таймер спря.\nМоля актуализирайте за да започнете споделяне.",
"share_via_onionshare": "Споделете го чрез OnionShare", "share_via_onionshare": "Споделете го чрез OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Използвайте стари адреси", "gui_use_legacy_v2_onions_checkbox": "Използвайте стари адреси",
"gui_save_private_key_checkbox": "Използвайте постоянни адреси (стари)", "gui_save_private_key_checkbox": "Използвайте постоянни адреси (стари)",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} ফাইলটি পড়া যাচ্ছে না।", "not_a_readable_file": "{0:s} ফাইলটি পড়া যাচ্ছে না।",
"no_available_port": "Onion সার্ভিস চালু করার জন্য কোন পোর্ট পাওয়া যাচ্ছে না", "no_available_port": "Onion সার্ভিস চালু করার জন্য কোন পোর্ট পাওয়া যাচ্ছে না",
"other_page_loaded": "এড্রেস লোড হয়েছে", "other_page_loaded": "এড্রেস লোড হয়েছে",
"close_on_timeout": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ", "close_on_autostop_timer": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ",
"closing_automatically": "ট্রান্সফার শেষ তাই থেমে যাওয়া হলো", "closing_automatically": "ট্রান্সফার শেষ তাই থেমে যাওয়া হলো",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "Tor ব্যবহার করবে না (শুধুমাত্র ডেভেলপারদের জন্য)", "help_local_only": "Tor ব্যবহার করবে না (শুধুমাত্র ডেভেলপারদের জন্য)",
"help_stay_open": "ফাইলগুলো পাঠানো হয়ে গেলেও শেয়ার করা থামিও না", "help_stay_open": "ফাইলগুলো পাঠানো হয়ে গেলেও শেয়ার করা থামিও না",
"help_shutdown_timeout": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও", "help_autostop_timer": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও",
"help_stealth": "ক্লায়েন্ট অনুমোদন ব্যবহার করুন (উন্নততর)", "help_stealth": "ক্লায়েন্ট অনুমোদন ব্যবহার করুন (উন্নততর)",
"help_receive": "কোনকিছু শেয়ার না করে শুধু গ্রহণ করবে", "help_receive": "কোনকিছু শেয়ার না করে শুধু গ্রহণ করবে",
"help_debug": "OnionShare-এর এররগুলো stdout-এ দেখাও, আর ওয়েব এররগুলো ডিস্কে লগ করো", "help_debug": "OnionShare-এর এররগুলো stdout-এ দেখাও, আর ওয়েব এররগুলো ডিস্কে লগ করো",
@ -38,12 +38,12 @@
"gui_choose_items": "পছন্দ করুন", "gui_choose_items": "পছন্দ করুন",
"gui_share_start_server": "শেয়ার করা শুরু করো", "gui_share_start_server": "শেয়ার করা শুরু করো",
"gui_share_stop_server": "শেয়ার করা বন্ধ করো", "gui_share_stop_server": "শেয়ার করা বন্ধ করো",
"gui_share_stop_server_shutdown_timeout": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)", "gui_share_stop_server_autostop_timer": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
"gui_share_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে", "gui_share_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন", "gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন",
"gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন", "gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন",
"gui_receive_stop_server_shutdown_timeout": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি) ", "gui_receive_stop_server_autostop_timer": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে", "gui_receive_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_copy_url": "এড্রেস কপি করো", "gui_copy_url": "এড্রেস কপি করো",
"gui_copy_hidservauth": "HidServAuth কপি করো", "gui_copy_hidservauth": "HidServAuth কপি করো",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "সেভ", "gui_settings_button_save": "সেভ",
"gui_settings_button_cancel": "বাতিল", "gui_settings_button_cancel": "বাতিল",
"gui_settings_button_help": "সাহায্য", "gui_settings_button_help": "সাহায্য",
"gui_settings_shutdown_timeout_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো", "gui_settings_autostop_timer_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
"gui_settings_shutdown_timeout": "শেয়ার বন্ধ করুন:", "gui_settings_autostop_timer": "শেয়ার বন্ধ করুন:",
"settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় ।", "settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় ।",
"settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন চলমান?", "settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন চলমান?",
"settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।", "settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।",
@ -117,13 +117,13 @@
"settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি ব্যবহার করে উইন্ডোজ বা ম্যাকোসে ডেভেলপার মোডে কাজ করে না।", "settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি ব্যবহার করে উইন্ডোজ বা ম্যাকোসে ডেভেলপার মোডে কাজ করে না।",
"settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো আপনি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা একটি ভুল সিস্টেম ঘড়ি আছে?", "settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো আপনি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা একটি ভুল সিস্টেম ঘড়ি আছে?",
"settings_error_bundled_tor_broken": "ব্যাকগ্রাউন্ডে OnionShare টর এর সাথে সংযুক্ত নয়:\n\n\n{}", "settings_error_bundled_tor_broken": "ব্যাকগ্রাউন্ডে OnionShare টর এর সাথে সংযুক্ত নয়:\n\n\n{}",
"settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\n\nOnion Services সেবা সমর্থন করে: {}.\n\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\n\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} । ", "settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\nOnion Services সেবা সমর্থন করে: {}.\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} ।",
"error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {}", "error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {}",
"error_tor_protocol_error_unknown": "টর-এ একটি অজানা ত্রুটি আছে", "error_tor_protocol_error_unknown": "টর-এ একটি অজানা ত্রুটি আছে",
"error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত", "error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত",
"connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে", "connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে",
"update_available": "", "update_available": "নতুন OnionShare বের হয়েছে । এটি পেতে এখানে <a href='{}'>ক্লিক করুন</a> । <br><br>আপনি {} এবং সাম্প্রতিকতম {} ব্যবহার করছেন ।",
"update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '...", "update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '",
"update_error_invalid_latest_version": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: হয়তো আপনি টর-এর সাথে সংযুক্ত নন, অথবা OnionShare ওয়েবসাইট বন্ধ আছে?", "update_error_invalid_latest_version": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: হয়তো আপনি টর-এর সাথে সংযুক্ত নন, অথবা OnionShare ওয়েবসাইট বন্ধ আছে?",
"update_not_available": "আপনি সর্বশেষ OnionShare চালাচ্ছেন ।", "update_not_available": "আপনি সর্বশেষ OnionShare চালাচ্ছেন ।",
"gui_tor_connection_ask": "টর থেকে সংযোগ সাজাতে সেটিংস খুলুন?", "gui_tor_connection_ask": "টর থেকে সংযোগ সাজাতে সেটিংস খুলুন?",
@ -132,27 +132,27 @@
"gui_tor_connection_error_settings": "কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।", "gui_tor_connection_error_settings": "কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
"gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন ।", "gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন ।",
"gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন ।", "gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন ।",
"gui_server_started_after_timeout": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন. ", "gui_server_started_after_autostop_timer": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন.",
"gui_server_timeout_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন. ", "gui_server_autostop_timer_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন.",
"share_via_onionshare": "এটি OnionShare", "share_via_onionshare": "এটি OnionShare",
"gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন", "gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন",
"gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন", "gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন",
"gui_share_url_description": "", "gui_share_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার ফাইলগুলি <b>ডাউনলোড</b> করতে পারে:<img src='{}' />",
"gui_receive_url_description": "", "gui_receive_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার কম্পিউটারে ফাইলগুলি <b>আপলোড</b> করতে পারে:<img src='{}' />",
"gui_url_label_persistent": "", "gui_url_label_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
"gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।", "gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।",
"gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে.", "gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে.",
"gui_url_label_onetime_and_persistent": "", "gui_url_label_onetime_and_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
"gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত", "gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত",
"gui_status_indicator_share_working": "শুরু...", "gui_status_indicator_share_working": "শুরু",
"gui_status_indicator_share_started": "শেয়ারিং", "gui_status_indicator_share_started": "শেয়ারিং",
"gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত", "gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত",
"gui_status_indicator_receive_working": "শুরু... ", "gui_status_indicator_receive_working": "শুরু",
"gui_status_indicator_receive_started": "গ্রহণ", "gui_status_indicator_receive_started": "গ্রহণ",
"gui_file_info": "{} ফাইল, {}", "gui_file_info": "{} ফাইল, {}",
"gui_file_info_single": "{} ফাইল, {}", "gui_file_info_single": "{} ফাইল, {}",
"history_in_progress_tooltip": "{} অগ্রসর হচ্ছে", "history_in_progress_tooltip": "{} অগ্রসর হচ্ছে",
"history_completed_tooltip": "{} সম্পূর্ণ\n", "history_completed_tooltip": "{} সম্পূর্ণ",
"info_in_progress_uploads_tooltip": "", "info_in_progress_uploads_tooltip": "",
"info_completed_uploads_tooltip": "", "info_completed_uploads_tooltip": "",
"error_cannot_create_downloads_dir": "", "error_cannot_create_downloads_dir": "",
@ -200,5 +200,17 @@
"systray_receive_started_message": "কেউ আপনার কাছে ফাইল পাঠাচ্ছে", "systray_receive_started_message": "কেউ আপনার কাছে ফাইল পাঠাচ্ছে",
"gui_all_modes_history": "ইতিহাস", "gui_all_modes_history": "ইতিহাস",
"gui_all_modes_clear_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": "প্রাপ্তির শেষ পর্যন্ত অপেক্ষা করছে"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} no és un arxiu llegible.", "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", "no_available_port": "No s'ha pogut trobar un port disponible per començar el servei onion",
"other_page_loaded": "Adreça carregada", "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", "closing_automatically": "S'ha aturat perquè ha acabat la transferència",
"timeout_download_still_running": "S'està esperant que acabi la descàrrega", "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", "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", "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_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_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_stealth": "Fes servir autorització de client (avançat)",
"help_receive": "Rep recursos en comptes d'enviar-los", "help_receive": "Rep recursos en comptes d'enviar-los",
"help_debug": "Envia els errors d'OnionShare a stdout i els errors web al disc", "help_debug": "Envia els errors d'OnionShare a stdout i els errors web al disc",
@ -37,12 +37,12 @@
"gui_choose_items": "Escull", "gui_choose_items": "Escull",
"gui_share_start_server": "Comparteix", "gui_share_start_server": "Comparteix",
"gui_share_stop_server": "Deixa de compartir", "gui_share_stop_server": "Deixa de compartir",
"gui_share_stop_server_shutdown_timeout": "Deixa de compartir (queden {}s)", "gui_share_stop_server_autostop_timer": "Deixa de compartir (queden {}s)",
"gui_share_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}", "gui_share_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
"gui_receive_start_server": "Inicia en mode de recepció", "gui_receive_start_server": "Inicia en mode de recepció",
"gui_receive_stop_server": "Atura el 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_autostop_timer": "Atura el mode de recepció (queden {}s)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}", "gui_receive_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
"gui_copy_url": "Copia l'adreça", "gui_copy_url": "Copia l'adreça",
"gui_copy_hidservauth": "Copia el HidServAuth", "gui_copy_hidservauth": "Copia el HidServAuth",
"gui_downloads": "Historial de descàrregues", "gui_downloads": "Historial de descàrregues",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Desa", "gui_settings_button_save": "Desa",
"gui_settings_button_cancel": "Canceŀla", "gui_settings_button_cancel": "Canceŀla",
"gui_settings_button_help": "Ajuda", "gui_settings_button_help": "Ajuda",
"gui_settings_shutdown_timeout_checkbox": "Posa un temporitzador d'aturada", "gui_settings_autostop_timer_checkbox": "Posa un temporitzador d'aturada",
"gui_settings_shutdown_timeout": "Atura a:", "gui_settings_autostop_timer": "Atura a:",
"settings_error_unknown": "No s'ha pogut connectar a Tor perquè la configuració és inconsistent.", "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_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 {}:{}.", "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_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_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_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_started_after_autostop_timer": "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_autostop_timer_expired": "El temporitzador ja s'ha acabat.\nReinicia'l per a poder compartir.",
"share_via_onionshare": "Comparteix-ho amb OnionShare", "share_via_onionshare": "Comparteix-ho amb OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic", "gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic",
"gui_save_private_key_checkbox": "Fes servir una adreça persistent", "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_starting": "{0:s}, %p% (s'està calculant)",
"gui_all_modes_progress_eta": "{0:s}, Temps aproximat: {1:s}, %p%", "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_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_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"
} }

View file

@ -74,9 +74,9 @@
"systray_download_canceled_message": "Uživatel přerušil stahování souboru", "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_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č", "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_start_server": "Spustit mód přijímání",
"gui_receive_stop_server": "Zastavit 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" "gui_copied_hidservauth_title": "Zkopírovaný HidServAuth token"
} }

View file

@ -8,7 +8,7 @@
"not_a_readable_file": "{0:s} er ikke en læsbar fil.", "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", "no_available_port": "Kunne ikke finde en tilgængelig port til at starte onion-tjenesten",
"other_page_loaded": "Adresse indlæst", "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", "closing_automatically": "Stoppede fordi overførslen er færdig",
"timeout_download_still_running": "Venter på at download skal blive 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", "large_filesize": "Advarsel: Det kan tage timer at sende en stor deling",
@ -21,7 +21,7 @@
"systray_download_canceled_message": "Brugeren annullerede downloaden", "systray_download_canceled_message": "Brugeren annullerede downloaden",
"help_local_only": "Brug ikke Tor (kun til udvikling)", "help_local_only": "Brug ikke Tor (kun til udvikling)",
"help_stay_open": "Fortsæt deling efter filerne er blevet sendt", "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_stealth": "Brug klientautentifikation (avanceret)",
"help_debug": "Log OnionShare-fejl til stdout, og webfejl til disk", "help_debug": "Log OnionShare-fejl til stdout, og webfejl til disk",
"help_filename": "Liste over filer eller mapper som skal deles", "help_filename": "Liste over filer eller mapper som skal deles",
@ -83,7 +83,7 @@
"gui_settings_button_save": "Gem", "gui_settings_button_save": "Gem",
"gui_settings_button_cancel": "Annuller", "gui_settings_button_cancel": "Annuller",
"gui_settings_button_help": "Hjælp", "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_saved": "Indstillinger gemt til {}",
"settings_error_unknown": "Kan ikke oprette forbindelse til Tor-kontroller da dine indstillingerne ikke giver mening.", "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?", "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_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_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_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_started_after_autostop_timer": "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_autostop_timer_expired": "Timeren med autostop er allerede løbet ud.\nOpdater den venligst for at starte deling.",
"share_via_onionshare": "Del via OnionShare", "share_via_onionshare": "Del via OnionShare",
"gui_save_private_key_checkbox": "Brug en vedvarende adresse", "gui_save_private_key_checkbox": "Brug en vedvarende adresse",
"gui_copied_url_title": "Kopierede OnionShare-adresse", "gui_copied_url_title": "Kopierede OnionShare-adresse",
@ -117,7 +117,7 @@
"gui_quit_title": "Klap lige hesten", "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": "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_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_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_stay_open": "Delingen stopper ikke automatisk.",
"gui_url_label_onetime": "Delingen stopper efter den første download.", "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_title": "OnionShare-upload begyndte",
"systray_upload_started_message": "En bruger begyndte at uploade filer til din computer", "systray_upload_started_message": "En bruger begyndte at uploade filer til din computer",
"help_receive": "Modtager aktier i stedet for at sende dem", "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_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_settings_general_label": "Generel opsætning",
"gui_upload_in_progress": "Upload begyndte {}", "gui_upload_in_progress": "Upload begyndte {}",
"gui_download_in_progress": "Download 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_start_server": "Start modtagetilstand",
"gui_receive_stop_server": "Stop modtagetilstand", "gui_receive_stop_server": "Stop modtagetilstand",
"gui_receive_stop_server_shutdown_timeout": "Stop modtagetilstand ({}s tilbage)", "gui_receive_stop_server_autostop_timer": "Stop modtagetilstand ({}s tilbage)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Timer med autostop slutter ved {}", "gui_receive_stop_server_autostop_timer_tooltip": "Timer med autostop slutter ved {}",
"gui_no_downloads": "Ingen downloads endnu", "gui_no_downloads": "Ingen downloads endnu",
"error_tor_protocol_error_unknown": "Der opstod en ukendt fejl med Tor", "error_tor_protocol_error_unknown": "Der opstod en ukendt fejl med Tor",
"error_invalid_private_key": "Den private nøgletype understøttes ikke", "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_starting": "{0:s}, %p% (udregner)",
"gui_all_modes_progress_eta": "{0:s}, anslået ankomsttidspunkt: {1:s}, %p%", "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_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_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_range": "Annullerede {} - {}",
"gui_all_modes_transfer_canceled": "Annullerede {}", "gui_all_modes_transfer_canceled": "Annullerede {}",
"gui_settings_onion_label": "Onion-indstillinger" "gui_settings_onion_label": "Onion-indstillinger"

View file

@ -7,7 +7,7 @@
"closing_automatically": "Gestoppt, da der Download erfolgreich beendet wurde", "closing_automatically": "Gestoppt, da der Download erfolgreich beendet wurde",
"large_filesize": "Warnung: Das Hochladen von großen Dateien kann Stunden dauern", "large_filesize": "Warnung: Das Hochladen von großen Dateien kann Stunden dauern",
"help_local_only": "Tor nicht verwenden (nur für Entwicklung)", "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_debug": "Schreibe Fehler von OnionShare nach stdout und Webfehler auf die Festplatte",
"help_filename": "Liste der zu teilenden Dateien oder Ordner", "help_filename": "Liste der zu teilenden Dateien oder Ordner",
"gui_drag_and_drop": "Dateien und Ordner hierher ziehen\num sie zu teilen", "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_save": "Speichern",
"gui_settings_button_cancel": "Abbrechen", "gui_settings_button_cancel": "Abbrechen",
"gui_settings_button_help": "Hilfe", "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_title": "OnionShare Download begonnen",
"systray_download_started_message": "Ein Nutzer hat begonnen, deine Dateien herunterzuladen", "systray_download_started_message": "Ein Nutzer hat begonnen, deine Dateien herunterzuladen",
"systray_download_completed_title": "OnionShare Download beendet", "systray_download_completed_title": "OnionShare Download beendet",
@ -42,7 +42,7 @@
"gui_settings_window_title": "Eintellungen", "gui_settings_window_title": "Eintellungen",
"gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}", "gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}",
"gui_settings_autoupdate_timestamp_never": "Niemals", "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?", "gui_settings_connection_type_label": "Wie soll sich OnionShare mit Tor verbinden?",
"config_onion_service": "Richte den Onionservice auf Port {0:d} ein.", "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:", "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:", "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.", "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", "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_title": "OnionShare Upload wurde gestartet",
"systray_upload_started_message": "Ein Benutzer hat begonnen, Dateien auf deinen Computer hochzuladen", "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", "help_receive": "Empfange Dateien anstatt sie zu senden",
"gui_share_stop_server_shutdown_timeout": "Server stoppen (läuft noch {} Sekunden)", "gui_share_stop_server_autostop_timer": "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_tooltip": "Zeit läuft in {} Sekunden ab",
"gui_settings_connection_type_control_port_option": "Verbinde über den control port", "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_connection_type_socket_file_option": "Verbinde über ein socket file",
"gui_settings_control_port_label": "Control port", "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_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_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_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_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.", "settings_error_missing_password": "Mit dem Tor controller verbunden, aber er benötigt ein Passwort zur Authentifizierung.",
"connecting_to_tor": "Verbinde mit dem Tornetzwerk", "connecting_to_tor": "Verbinde mit dem Tornetzwerk",
@ -79,8 +79,8 @@
"help_stealth": "Nutze Klientauthorisierung (fortgeschritten)", "help_stealth": "Nutze Klientauthorisierung (fortgeschritten)",
"gui_receive_start_server": "Starte den Empfangsmodus", "gui_receive_start_server": "Starte den Empfangsmodus",
"gui_receive_stop_server": "Stoppe 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_autostop_timer": "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_tooltip": "Zeit läuft in {} ab",
"gui_no_downloads": "Bisher keine Downloads", "gui_no_downloads": "Bisher keine Downloads",
"gui_copied_url_title": "OnionShare-Adresse kopiert", "gui_copied_url_title": "OnionShare-Adresse kopiert",
"gui_copied_hidservauth": "HidServAuth-Zeile in die Zwischenablage 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_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", "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.", "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_started_after_autostop_timer": "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_autostop_timer_expired": "Der Timer ist bereits abgelaufen.\nBearbeite diesen um das Teilen zu starten.",
"gui_status_indicator_share_stopped": "Bereit zum teilen", "gui_status_indicator_share_stopped": "Bereit zum teilen",
"history_in_progress_tooltip": "{} läuft", "history_in_progress_tooltip": "{} läuft",
"receive_mode_upload_starting": "Hochladen von insgesamt {} beginnt", "receive_mode_upload_starting": "Hochladen von insgesamt {} beginnt",
@ -197,5 +197,21 @@
"systray_share_completed_title": "Freigabe erfolgt", "systray_share_completed_title": "Freigabe erfolgt",
"systray_share_completed_message": "Dateien erfolgreich versandt", "systray_share_completed_message": "Dateien erfolgreich versandt",
"systray_share_canceled_title": "Freigabe abgebrochen", "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."
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "Το {0:s} δεν είναι αναγνώσιμο αρχείο.", "not_a_readable_file": "Το {0:s} δεν είναι αναγνώσιμο αρχείο.",
"no_available_port": "Δεν βρέθηκε διαθέσιμη θύρα για να ξεκινήσει η υπηρεσία onion", "no_available_port": "Δεν βρέθηκε διαθέσιμη θύρα για να ξεκινήσει η υπηρεσία onion",
"other_page_loaded": "Η διεύθυνση φορτώθηκε", "other_page_loaded": "Η διεύθυνση φορτώθηκε",
"close_on_timeout": "Τερματίστηκε γιατί το χρονόμετρο τερματισμού έφτασε στο τέλος", "close_on_autostop_timer": "Τερματίστηκε γιατί το χρονόμετρο τερματισμού έφτασε στο τέλος",
"closing_automatically": "Τερματίστηκε επειδή η λήψη ολοκληρώθηκε", "closing_automatically": "Τερματίστηκε επειδή η λήψη ολοκληρώθηκε",
"timeout_download_still_running": "Αναμονή ολοκλήρωσης της λήψης", "timeout_download_still_running": "Αναμονή ολοκλήρωσης της λήψης",
"large_filesize": "Προειδοποίηση: Η αποστολή μεγάλου όγκου δεδομένων μπορεί να διαρκέσει ώρες", "large_filesize": "Προειδοποίηση: Η αποστολή μεγάλου όγκου δεδομένων μπορεί να διαρκέσει ώρες",
@ -25,7 +25,7 @@
"systray_upload_started_message": "Ένας/μια χρήστης/τρια ξεκίνησε να ανεβάζει αρχεία στον υπολογιστή σου", "systray_upload_started_message": "Ένας/μια χρήστης/τρια ξεκίνησε να ανεβάζει αρχεία στον υπολογιστή σου",
"help_local_only": "Να μην χρησιμοποιηθεί το Tor (μόνο για development)", "help_local_only": "Να μην χρησιμοποιηθεί το Tor (μόνο για development)",
"help_stay_open": "Να συνεχίσει ο διαμοιρασμός μετά την αποστολή των αρχείων", "help_stay_open": "Να συνεχίσει ο διαμοιρασμός μετά την αποστολή των αρχείων",
"help_shutdown_timeout": "Να τερματιστεί ο διαμοιρασμός μετά από ένα συγκεκριμένο αριθμό δευτερολέπτων", "help_autostop_timer": "Να τερματιστεί ο διαμοιρασμός μετά από ένα συγκεκριμένο αριθμό δευτερολέπτων",
"help_stealth": "Κάντε χρήση εξουσιοδότησης πελάτη (Για προχωρημένους)", "help_stealth": "Κάντε χρήση εξουσιοδότησης πελάτη (Για προχωρημένους)",
"help_receive": "Λάβετε διαμοιρασμένα αρχεία αντι να τα στέλνετε", "help_receive": "Λάβετε διαμοιρασμένα αρχεία αντι να τα στέλνετε",
"help_debug": "Κατέγραψε τα σφάλματα του OnionShare στο stdout (συνήθως οθόνη) και τα σφάλματα web στον δίσκο", "help_debug": "Κατέγραψε τα σφάλματα του OnionShare στο stdout (συνήθως οθόνη) και τα σφάλματα web στον δίσκο",
@ -37,12 +37,12 @@
"gui_choose_items": "Επιλογή", "gui_choose_items": "Επιλογή",
"gui_share_start_server": "Εκκίνηση μοιράσματος", "gui_share_start_server": "Εκκίνηση μοιράσματος",
"gui_share_stop_server": "Τερματισμός μοιράσματος", "gui_share_stop_server": "Τερματισμός μοιράσματος",
"gui_share_stop_server_shutdown_timeout": "Τερματισμός μοιράσματος (απομένουν {}\")", "gui_share_stop_server_autostop_timer": "Τερματισμός μοιράσματος (απομένουν {}\")",
"gui_share_stop_server_shutdown_timeout_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}", "gui_share_stop_server_autostop_timer_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
"gui_receive_start_server": "Εκκίνηση κατάστασης λήψης", "gui_receive_start_server": "Εκκίνηση κατάστασης λήψης",
"gui_receive_stop_server": "Τερματισμός κατάστασης λήψης", "gui_receive_stop_server": "Τερματισμός κατάστασης λήψης",
"gui_receive_stop_server_shutdown_timeout": "Τερματισμός κατάστασης λήψης (υπολοίπονται {}\")", "gui_receive_stop_server_autostop_timer": "Τερματισμός κατάστασης λήψης (υπολοίπονται {}\")",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}", "gui_receive_stop_server_autostop_timer_tooltip": "Το χρονόμετρο αυτόματου τερματισμού τελειώνει σε {}",
"gui_copy_url": "Αντιγραφή διεύθυνσης", "gui_copy_url": "Αντιγραφή διεύθυνσης",
"gui_copy_hidservauth": "Αντιγραφή HidServAuth", "gui_copy_hidservauth": "Αντιγραφή HidServAuth",
"gui_downloads": "Ιστορικό Λήψεων", "gui_downloads": "Ιστορικό Λήψεων",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Αποθήκευση", "gui_settings_button_save": "Αποθήκευση",
"gui_settings_button_cancel": "Ακύρωση", "gui_settings_button_cancel": "Ακύρωση",
"gui_settings_button_help": "Βοήθεια", "gui_settings_button_help": "Βοήθεια",
"gui_settings_shutdown_timeout_checkbox": "Χρήση χρονομέτρου αυτόματου τερματισμού", "gui_settings_autostop_timer_checkbox": "Χρήση χρονομέτρου αυτόματου τερματισμού",
"gui_settings_shutdown_timeout": "Τερματισμός της κοινοποίησης στα:", "gui_settings_autostop_timer": "Τερματισμός της κοινοποίησης στα:",
"settings_error_unknown": "Αδύνατη η σύνδεση του ελέγχου Tor, καθώς οι ρυθμίσεις σας δεν έχουν κανένα νόημα.", "settings_error_unknown": "Αδύνατη η σύνδεση του ελέγχου Tor, καθώς οι ρυθμίσεις σας δεν έχουν κανένα νόημα.",
"settings_error_automatic": "Είναι αδύνατη η σύνδεση στον έλεγχο του Tor. Λειτουργεί ο Tor Browser (διαθέσιμος στο torproject.org) στο παρασκήνιο?", "settings_error_automatic": "Είναι αδύνατη η σύνδεση στον έλεγχο του Tor. Λειτουργεί ο Tor Browser (διαθέσιμος στο torproject.org) στο παρασκήνιο?",
"settings_error_socket_port": "Αδύνατη η σύνδεση στον έλεγχο Tor στις {}:{}.", "settings_error_socket_port": "Αδύνατη η σύνδεση στον έλεγχο Tor στις {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "Προσπαθήστε να αλλάξετε τον τρόπο σύνδεσης του OnionShare, με το δίκτυο Tor, από τις ρυθμίσεις.", "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_tor_connection_lost": "Εγινε αποσύνδεση απο το Tor.",
"gui_server_started_after_timeout": "Η λειτουργία auto-stop τερματίστηκε πριν την εκκίνηση διακομιστή.\nΠαρακαλώ κάντε εναν νέο διαμοιρασμό.", "gui_server_started_after_autostop_timer": "Η λειτουργία auto-stop τερματίστηκε πριν την εκκίνηση διακομιστή.\nΠαρακαλώ κάντε εναν νέο διαμοιρασμό.",
"gui_server_timeout_expired": "Η λειτουργία auto-stop ήδη τερματίστηκε.\nΕνημερώστε την για να ξεκινήσετε τον διαμοιρασμό.", "gui_server_autostop_timer_expired": "Η λειτουργία auto-stop ήδη τερματίστηκε.\nΕνημερώστε την για να ξεκινήσετε τον διαμοιρασμό.",
"share_via_onionshare": "Κάντε το OnionShare", "share_via_onionshare": "Κάντε το OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Χρηση \"παραδοσιακών\" διευθύνσεων", "gui_use_legacy_v2_onions_checkbox": "Χρηση \"παραδοσιακών\" διευθύνσεων",
"gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης", "gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης",
@ -208,9 +208,9 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (γίνεται υπολογισμός)", "gui_all_modes_progress_starting": "{0:s}, %p% (γίνεται υπολογισμός)",
"gui_all_modes_progress_eta": "{0:s}, εκτίμηση: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, εκτίμηση: {1:s}, %p%",
"gui_share_mode_no_files": "Δεν Στάλθηκαν Αρχεία Ακόμα", "gui_share_mode_no_files": "Δεν Στάλθηκαν Αρχεία Ακόμα",
"gui_share_mode_timeout_waiting": "Αναμένοντας την ολοκλήρωση αποστολής", "gui_share_mode_autostop_timer_waiting": "Αναμένοντας την ολοκλήρωση αποστολής",
"gui_receive_mode_no_files": "Δεν Εγινε Καμμία Λήψη Αρχείων Ακόμα", "gui_receive_mode_no_files": "Δεν Εγινε Καμμία Λήψη Αρχείων Ακόμα",
"gui_receive_mode_timeout_waiting": "Αναμένοντας την ολοκλήρωση της λήψης", "gui_receive_mode_autostop_timer_waiting": "Αναμένοντας την ολοκλήρωση της λήψης",
"gui_settings_onion_label": "Ρυθμίσεις Onion", "gui_settings_onion_label": "Ρυθμίσεις Onion",
"gui_all_modes_transfer_canceled_range": "Ακυρώθηκε {} - {}", "gui_all_modes_transfer_canceled_range": "Ακυρώθηκε {} - {}",
"gui_all_modes_transfer_canceled": "Ακυρώθηκε {}" "gui_all_modes_transfer_canceled": "Ακυρώθηκε {}"

View file

@ -5,17 +5,24 @@
"give_this_url_stealth": "Give this address and HidServAuth line to the recipient:", "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": "Give this address to the sender:",
"give_this_url_receive_stealth": "Give this address and HidServAuth 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", "ctrlc_to_stop": "Press Ctrl+C to stop the server",
"not_a_file": "{0:s} is not a valid file.", "not_a_file": "{0:s} is not a valid file.",
"not_a_readable_file": "{0:s} is not a readable 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", "no_available_port": "Could not find an available port to start the onion service",
"other_page_loaded": "Address loaded", "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", "closing_automatically": "Stopped because transfer is complete",
"large_filesize": "Warning: Sending a large share could take hours", "large_filesize": "Warning: Sending a large share could take hours",
"help_local_only": "Don't use Tor (only for development)", "help_local_only": "Don't use Tor (only for development)",
"help_stay_open": "Continue sharing after files have been sent", "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_stealth": "Use client authorization (advanced)",
"help_receive": "Receive shares instead of sending them", "help_receive": "Receive shares instead of sending them",
"help_debug": "Log OnionShare errors to stdout, and web errors to disk", "help_debug": "Log OnionShare errors to stdout, and web errors to disk",
@ -29,12 +36,12 @@
"gui_choose_items": "Choose", "gui_choose_items": "Choose",
"gui_share_start_server": "Start sharing", "gui_share_start_server": "Start sharing",
"gui_share_stop_server": "Stop sharing", "gui_share_stop_server": "Stop sharing",
"gui_share_stop_server_shutdown_timeout": "Stop Sharing ({}s remaining)", "gui_share_stop_server_autostop_timer": "Stop Sharing ({})",
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}", "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_start_server": "Start Receive Mode",
"gui_receive_stop_server": "Stop Receive Mode", "gui_receive_stop_server": "Stop Receive Mode",
"gui_receive_stop_server_shutdown_timeout": "Stop Receive Mode ({}s remaining)", "gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({}s remaining)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}",
"gui_copy_url": "Copy Address", "gui_copy_url": "Copy Address",
"gui_copy_hidservauth": "Copy HidServAuth", "gui_copy_hidservauth": "Copy HidServAuth",
"gui_canceled": "Canceled", "gui_canceled": "Canceled",
@ -42,6 +49,7 @@
"gui_copied_url": "OnionShare address copied to clipboard", "gui_copied_url": "OnionShare address copied to clipboard",
"gui_copied_hidservauth_title": "Copied HidServAuth", "gui_copied_hidservauth_title": "Copied HidServAuth",
"gui_copied_hidservauth": "HidServAuth line copied to clipboard", "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.", "gui_please_wait": "Starting… Click to cancel.",
"version_string": "OnionShare {0:s} | https://onionshare.org/", "version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Not so fast", "gui_quit_title": "Not so fast",
@ -92,8 +100,10 @@
"gui_settings_button_save": "Save", "gui_settings_button_save": "Save",
"gui_settings_button_cancel": "Cancel", "gui_settings_button_cancel": "Cancel",
"gui_settings_button_help": "Help", "gui_settings_button_help": "Help",
"gui_settings_shutdown_timeout_checkbox": "Use auto-stop timer", "gui_settings_autostop_timer_checkbox": "Use auto-stop timer",
"gui_settings_shutdown_timeout": "Stop the share at:", "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_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_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 {}:{}.", "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_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_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_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_started_after_autostop_timer": "The auto-stop timer ran out before the server started. Please make a new share.",
"gui_server_timeout_expired": "The auto-stop timer already ran out.\nPlease update it to start sharing.", "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", "share_via_onionshare": "OnionShare it",
"gui_connect_to_tor_for_onion_settings": "Connect to Tor to see onion service settings", "gui_connect_to_tor_for_onion_settings": "Connect to Tor to see onion service settings",
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses", "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_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_stopped": "Ready to share",
"gui_status_indicator_share_working": "Starting…", "gui_status_indicator_share_working": "Starting…",
"gui_status_indicator_share_scheduled": "Scheduled…",
"gui_status_indicator_share_started": "Sharing", "gui_status_indicator_share_started": "Sharing",
"gui_status_indicator_receive_stopped": "Ready to receive", "gui_status_indicator_receive_stopped": "Ready to receive",
"gui_status_indicator_receive_working": "Starting…", "gui_status_indicator_receive_working": "Starting…",
"gui_status_indicator_receive_scheduled": "Scheduled…",
"gui_status_indicator_receive_started": "Receiving", "gui_status_indicator_receive_started": "Receiving",
"gui_file_info": "{} files, {}", "gui_file_info": "{} files, {}",
"gui_file_info_single": "{} file, {}", "gui_file_info_single": "{} file, {}",
@ -178,7 +192,12 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (calculating)", "gui_all_modes_progress_starting": "{0:s}, %p% (calculating)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "No Files Sent Yet", "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_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"
} }

View file

@ -21,10 +21,10 @@
"config_onion_service": "Configurando el servicio cebolla en el puerto {0:d}.", "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:", "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", "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", "timeout_download_still_running": "Esperando a que se complete la descarga",
"large_filesize": "Advertencia: Enviar un archivo tan grande podría llevar horas", "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_stealth": "Usar autorización de cliente (avanzada)",
"help_config": "Ubicación del archivo de configuración JSON personalizado (opcional)", "help_config": "Ubicación del archivo de configuración JSON personalizado (opcional)",
"gui_copied_url_title": "Dirección de OnionShare copiada", "gui_copied_url_title": "Dirección de OnionShare copiada",
@ -60,12 +60,12 @@
"systray_upload_started_title": "Subida OnionShare Iniciada", "systray_upload_started_title": "Subida OnionShare Iniciada",
"systray_upload_started_message": "Un usuario comenzó a subir archivos a tu computadora", "systray_upload_started_message": "Un usuario comenzó a subir archivos a tu computadora",
"help_receive": "Recibir recursos compartidos en lugar de enviarlos", "help_receive": "Recibir recursos compartidos en lugar de enviarlos",
"gui_share_stop_server_shutdown_timeout": "Dejar de Compartir ({}s restantes)", "gui_share_stop_server_autostop_timer": "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_tooltip": "El temporizador de parada automática termina en {}",
"gui_receive_start_server": "Iniciar el modo de recepción", "gui_receive_start_server": "Iniciar el modo de recepción",
"gui_receive_stop_server": "Detener 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_autostop_timer": "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_tooltip": "El temporizador de parada automática termina en {}",
"gui_copy_hidservauth": "Copiar HidServAuth", "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_no_downloads": "Ninguna Descarga Todavía", "gui_no_downloads": "Ninguna Descarga Todavía",
"gui_canceled": "Cancelado", "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_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_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_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_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_timeout_expired": "El temporizador de parada automática ya se ha agotado.\nPor favor, actualízalo para comenzar a compartir.", "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", "share_via_onionshare": "Compártelo con OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Usar direcciones antiguas", "gui_use_legacy_v2_onions_checkbox": "Usar direcciones antiguas",
"gui_save_private_key_checkbox": "Usar una dirección persistente", "gui_save_private_key_checkbox": "Usar una dirección persistente",
@ -155,8 +155,8 @@
"gui_settings_button_save": "Guardar", "gui_settings_button_save": "Guardar",
"gui_settings_button_cancel": "Cancelar", "gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ayuda", "gui_settings_button_help": "Ayuda",
"gui_settings_shutdown_timeout_checkbox": "Usar temporizador de parada automática", "gui_settings_autostop_timer_checkbox": "Usar temporizador de parada automática",
"gui_settings_shutdown_timeout": "Detener carpeta compartida en:", "gui_settings_autostop_timer": "Detener carpeta compartida en:",
"history_in_progress_tooltip": "{} en progreso", "history_in_progress_tooltip": "{} en progreso",
"history_completed_tooltip": "{} completado", "history_completed_tooltip": "{} completado",
"error_cannot_create_downloads_dir": "No se ha podido crear la carpeta en modo de recepción: {}", "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_starting": "{0:s}, %p% (calculando)",
"gui_all_modes_progress_eta": "{0:s}, TEA: {1:s}, %p%", "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_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_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_range": "Cancelado {} - {}",
"gui_all_modes_transfer_canceled": "Cancelado {}", "gui_all_modes_transfer_canceled": "Cancelado {}",
"gui_settings_onion_label": "Configuración de Onion" "gui_settings_onion_label": "Configuración de Onion"

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} قابل خواندن نمی باشد.", "not_a_readable_file": "{0:s} قابل خواندن نمی باشد.",
"no_available_port": "پورت قابل استفاده برای شروع سرویس onion پیدا نشد", "no_available_port": "پورت قابل استفاده برای شروع سرویس onion پیدا نشد",
"other_page_loaded": "آدرس بارگذاری شد", "other_page_loaded": "آدرس بارگذاری شد",
"close_on_timeout": "متوقف شد چون تایمر توقف خودکار به پایان رسید", "close_on_autostop_timer": "متوقف شد چون تایمر توقف خودکار به پایان رسید",
"closing_automatically": "متوقف شد چون انتقال انجام شد", "closing_automatically": "متوقف شد چون انتقال انجام شد",
"timeout_download_still_running": "انتظار برای تکمیل دانلود", "timeout_download_still_running": "انتظار برای تکمیل دانلود",
"large_filesize": "هشدار: یک اشتراک گذاری بزرگ ممکن است ساعت ها طول بکشد", "large_filesize": "هشدار: یک اشتراک گذاری بزرگ ممکن است ساعت ها طول بکشد",
@ -25,7 +25,7 @@
"systray_upload_started_message": "یک کاربر شروع به آپلود فایل بر روی کامپیوتر شما کرده است", "systray_upload_started_message": "یک کاربر شروع به آپلود فایل بر روی کامپیوتر شما کرده است",
"help_local_only": "عدم استفاده از Tor (فقط برای توسعه)", "help_local_only": "عدم استفاده از Tor (فقط برای توسعه)",
"help_stay_open": "ادامه اشتراک گذاری پس از ارسال دانلود ها", "help_stay_open": "ادامه اشتراک گذاری پس از ارسال دانلود ها",
"help_shutdown_timeout": "توقف به اشتراک گذاری پس از میزان ثانیه ای مشخص", "help_autostop_timer": "توقف به اشتراک گذاری پس از میزان ثانیه ای مشخص",
"help_stealth": "استفاده از احراز هویت کلاینت (پیشرفته)", "help_stealth": "استفاده از احراز هویت کلاینت (پیشرفته)",
"help_receive": "دریافت اشتراک به جای ارسال آن", "help_receive": "دریافت اشتراک به جای ارسال آن",
"help_debug": "لاگ کردن خطاهای OnionShare روی stdout، و خطاهای وب بر روی دیسک", "help_debug": "لاگ کردن خطاهای OnionShare روی stdout، و خطاهای وب بر روی دیسک",
@ -37,12 +37,12 @@
"gui_choose_items": "انتخاب", "gui_choose_items": "انتخاب",
"gui_share_start_server": "شروع اشتراک گذاری", "gui_share_start_server": "شروع اشتراک گذاری",
"gui_share_stop_server": "توقف اشتراک گذاری", "gui_share_stop_server": "توقف اشتراک گذاری",
"gui_share_stop_server_shutdown_timeout": "توقف اشتراک گذاری ({} ثانیه باقیمانده)", "gui_share_stop_server_autostop_timer": "توقف اشتراک گذاری ({} ثانیه باقیمانده)",
"gui_share_stop_server_shutdown_timeout_tooltip": "تایمر توقف خودکار در {} متوقف می شود", "gui_share_stop_server_autostop_timer_tooltip": "تایمر توقف خودکار در {} متوقف می شود",
"gui_receive_start_server": "شروع حالت دریافت", "gui_receive_start_server": "شروع حالت دریافت",
"gui_receive_stop_server": "توقف حالت دریافت", "gui_receive_stop_server": "توقف حالت دریافت",
"gui_receive_stop_server_shutdown_timeout": "توقف حالت دریافت ({} ثانیه باقیمانده)", "gui_receive_stop_server_autostop_timer": "توقف حالت دریافت ({} ثانیه باقیمانده)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "تایمر توقف خودکار در {} به پایان می رسد", "gui_receive_stop_server_autostop_timer_tooltip": "تایمر توقف خودکار در {} به پایان می رسد",
"gui_copy_url": "کپی آدرس", "gui_copy_url": "کپی آدرس",
"gui_copy_hidservauth": "کپی HidServAuth", "gui_copy_hidservauth": "کپی HidServAuth",
"gui_downloads": "دانلود تاریخچه", "gui_downloads": "دانلود تاریخچه",
@ -104,8 +104,8 @@
"gui_settings_button_save": "ذخیره", "gui_settings_button_save": "ذخیره",
"gui_settings_button_cancel": "لغو", "gui_settings_button_cancel": "لغو",
"gui_settings_button_help": "راهنما", "gui_settings_button_help": "راهنما",
"gui_settings_shutdown_timeout_checkbox": "استفاده از تایمر توقف خودکار", "gui_settings_autostop_timer_checkbox": "استفاده از تایمر توقف خودکار",
"gui_settings_shutdown_timeout": "توقف اشتراک در:", "gui_settings_autostop_timer": "توقف اشتراک در:",
"settings_error_unknown": "ناتوانی در اتصال به کنترل کننده Tor بدلیل نامفهوم بودن تنظیمات.", "settings_error_unknown": "ناتوانی در اتصال به کنترل کننده Tor بدلیل نامفهوم بودن تنظیمات.",
"settings_error_automatic": "ناتوانی در اتصال به کنترل کننده Tor. آیا مرورگر Tor (در دسترس از طریق torproject.org) در پس زمینه در حال اجراست؟", "settings_error_automatic": "ناتوانی در اتصال به کنترل کننده Tor. آیا مرورگر Tor (در دسترس از طریق torproject.org) در پس زمینه در حال اجراست؟",
"settings_error_socket_port": "ناتوانی در اتصال به کنترل کننده Tor در {}:{}.", "settings_error_socket_port": "ناتوانی در اتصال به کنترل کننده Tor در {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "تغییر نحوه اتصال OnionShare به شبکه Tor در تنظیمات.", "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_tor_connection_lost": "اتصال با Tor قطع شده است.",
"gui_server_started_after_timeout": "تایمر توقف خودکار قبل از آغاز سرور به پایان رسید.\nلطفا یک اشتراک جدید درست کنید.", "gui_server_started_after_autostop_timer": "تایمر توقف خودکار قبل از آغاز سرور به پایان رسید.\nلطفا یک اشتراک جدید درست کنید.",
"gui_server_timeout_expired": "تایمر توقف خودکار به پایان رسید.\nلطفا برای آغاز اشتراک گذاری آن را به روز رسانی کنید.", "gui_server_autostop_timer_expired": "تایمر توقف خودکار به پایان رسید.\nلطفا برای آغاز اشتراک گذاری آن را به روز رسانی کنید.",
"share_via_onionshare": "OnionShare کنید", "share_via_onionshare": "OnionShare کنید",
"gui_use_legacy_v2_onions_checkbox": "استفاده از آدرس های بازمانده", "gui_use_legacy_v2_onions_checkbox": "استفاده از آدرس های بازمانده",
"gui_save_private_key_checkbox": "استفاده از یک آدرس پایا", "gui_save_private_key_checkbox": "استفاده از یک آدرس پایا",
@ -208,9 +208,9 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (در حال محاسبه)", "gui_all_modes_progress_starting": "{0:s}, %p% (در حال محاسبه)",
"gui_all_modes_progress_eta": "{0:s}، تخمین: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}، تخمین: {1:s}, %p%",
"gui_share_mode_no_files": "هیچ فایلی هنوز ارسال نشده است", "gui_share_mode_no_files": "هیچ فایلی هنوز ارسال نشده است",
"gui_share_mode_timeout_waiting": "انتظار برای به پایان رسیدن ارسال", "gui_share_mode_autostop_timer_waiting": "انتظار برای به پایان رسیدن ارسال",
"gui_receive_mode_no_files": "هیچ فایلی هنوز دریافت نشده است", "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_range": "{} - {} لغو شد",
"gui_all_modes_transfer_canceled": "{} لغو شد" "gui_all_modes_transfer_canceled": "{} لغو شد"
} }

View file

@ -1,25 +1,185 @@
{ {
"preparing_files": "Valmistellaan tiedostoja jaettavaksi.", "preparing_files": "Pakataan tiedostoja.",
"give_this_url": "Anna tämä URL-osoite vastaanottajalle:", "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.", "not_a_file": "{0:s} Ei ole tiedosto.",
"other_page_loaded": "URL-osoite ladattu", "other_page_loaded": "URL-osoite ladattu",
"closing_automatically": "Lataus valmis. Suljetaan automaattisesti", "closing_automatically": "Lähetys valmis. Suljetaan automaattisesti",
"large_filesize": "Varoitus: Isojen tiedostojen lähetys saattaa kestää tunteja", "large_filesize": "Varoitus: Ison tiedoston lähetys saattaa kestää tunteja",
"help_local_only": "Älä käytä Toria: vain ohjelmakehitykseen", "help_local_only": "Älä käytä Toria (vain kehitykseen)",
"help_stay_open": "Pidä piilopalvelu käynnissä latauksen jälkeen.", "help_stay_open": "Jatka jakoa tiedostojen lähetyksen jälkeen",
"help_debug": "Tallentaa virheet levylle", "help_debug": "Kirjaa OnionShare virheet stdout:tiin, ja verkko virheet levylle",
"help_filename": "Luettele jaettavat tiedostot tai kansiot", "help_filename": "Luettele jaettavat tiedostot tai kansiot",
"gui_drag_and_drop": "Vedä ja pudota\ntiedostot tänne", "gui_drag_and_drop": "Vedä ja pudota\ntiedostot tänne",
"gui_add": "Lisää", "gui_add": "Lisää",
"gui_delete": "Poista", "gui_delete": "Poista",
"gui_choose_items": "Valitse", "gui_choose_items": "Valitse",
"gui_share_start_server": "Käynnistä palvelin", "gui_share_start_server": "Aloita jakaminen",
"gui_share_stop_server": "Pysäytä palvelin", "gui_share_stop_server": "Pysäytä jakaminen",
"gui_copy_url": "Kopioi URL-osoite", "gui_copy_url": "Kopioi URL-osoite",
"gui_downloads": "Lataukset:", "gui_downloads": "Lataukset:",
"gui_canceled": "Peruutettu", "gui_canceled": "Peruutettu",
"gui_copied_url": "URL-osoite kopioitu leikepöydälle", "gui_copied_url": "OnionShare-osoite kopioitu leikepöydälle",
"gui_please_wait": "Odota...", "gui_please_wait": "Käynnistyy... Peruuta napsauttamalla.",
"zip_progress_bar_format": "Tiivistän tiedostoja: %p%" "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"
} }

View file

@ -54,7 +54,7 @@
"gui_settings_button_save": "Enregistrer", "gui_settings_button_save": "Enregistrer",
"gui_settings_button_cancel": "Annuler", "gui_settings_button_cancel": "Annuler",
"gui_settings_button_help": "Aide", "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", "connecting_to_tor": "Connexion au réseau Tor",
"help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)", "help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)",
"large_filesize": "Avertissement : envoyer un gros partage peut prendre des heures", "large_filesize": "Avertissement : envoyer un gros partage peut prendre des heures",
@ -62,10 +62,10 @@
"version_string": "OnionShare {0:s} | https://onionshare.org/", "version_string": "OnionShare {0:s} | https://onionshare.org/",
"zip_progress_bar_format": "Compression : %p%", "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.", "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.", "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", "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_title": "Envoi OnionShare démarré",
"systray_upload_started_message": "Une personne a commencé à envoyer des fichiers vers votre ordinateur", "systray_upload_started_message": "Une personne a commencé à envoyer des fichiers vers votre ordinateur",
"gui_no_downloads": "Pas encore de téléchargement", "gui_no_downloads": "Pas encore de téléchargement",
@ -148,7 +148,7 @@
"help_receive": "Recevoir des partages au lieu de les envoyer", "help_receive": "Recevoir des partages au lieu de les envoyer",
"gui_receive_start_server": "Démarrer le mode réception", "gui_receive_start_server": "Démarrer le mode réception",
"gui_receive_stop_server": "Arrêter 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_complete": "%p%, {0:s} écoulées.",
"gui_download_upload_progress_starting": "{0:s}, %p% (estimation)", "gui_download_upload_progress_starting": "{0:s}, %p% (estimation)",
"gui_download_upload_progress_eta": "{0:s}, Fin : {1:s}, %p%", "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_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_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", "systray_upload_page_loaded_message": "Une personne a chargé la page d'envoi",
"gui_share_stop_server_shutdown_timeout_tooltip": "La minuterie darrêt automatique se termine à {}", "gui_share_stop_server_autostop_timer_tooltip": "La minuterie darrêt automatique se termine à {}",
"gui_receive_stop_server_shutdown_timeout_tooltip": "La minuterie darrêt automatique se termine à {}", "gui_receive_stop_server_autostop_timer_tooltip": "La minuterie darrê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": "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_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": "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_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 : lexploitation 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_meek_lite_expensive_warning": "Avertissement : lexploitation 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 darrêt automatique", "gui_settings_autostop_timer_checkbox": "Utiliser la minuterie darrêt automatique",
"gui_server_started_after_timeout": "La minuterie darrê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_started_after_autostop_timer": "La minuterie darrê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 darrêt automatique est déjà arrivée au bout de son délai.\nVeuillez la mettre à jour pour commencer le partage.", "gui_server_autostop_timer_expired": "La minuterie darrê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 darrêt automatique est arrivée au bout de son délai", "close_on_autostop_timer": "Arrêté, car la minuterie darrêt automatique est arrivée au bout de son délai",
"gui_add_files": "Ajouter des fichiers", "gui_add_files": "Ajouter des fichiers",
"gui_add_folder": "Ajouter un dossier", "gui_add_folder": "Ajouter un dossier",
"error_cannot_create_data_dir": "Impossible de créer le dossier de données dOnionShare : {}", "error_cannot_create_data_dir": "Impossible de créer le dossier de données dOnionShare : {}",
@ -206,10 +206,10 @@
"gui_all_modes_progress_starting": "{0:s}, %p % (estimation)", "gui_all_modes_progress_starting": "{0:s}, %p % (estimation)",
"gui_all_modes_progress_eta": "{0:s}, fin prévue : {1:s}, %p %", "gui_all_modes_progress_eta": "{0:s}, fin prévue : {1:s}, %p %",
"gui_share_mode_no_files": "Aucun fichier na encore été envoyé", "gui_share_mode_no_files": "Aucun fichier na encore été envoyé",
"gui_share_mode_timeout_waiting": "En attente de la fin de lenvoi", "gui_share_mode_autostop_timer_waiting": "En attente de la fin de lenvoi",
"gui_receive_mode_no_files": "Aucun fichier na encore été reçu", "gui_receive_mode_no_files": "Aucun fichier na encore été reçu",
"gui_receive_mode_timeout_waiting": "En attente de la fin de la réception", "gui_receive_mode_autostop_timer_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_connect_to_tor_for_onion_settings": "Se connecter à Tor pour voir les paramètres du service onion",
"systray_share_completed_message": "Lenvoi de fichiers est terminé", "systray_share_completed_message": "Lenvoi de fichiers est terminé",
"gui_all_modes_transfer_canceled": "Annulé le {}", "gui_all_modes_transfer_canceled": "Annulé le {}",
"gui_settings_onion_label": "Paramètres onion", "gui_settings_onion_label": "Paramètres onion",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "Ní comhad inléite é {0:s}.", "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ú", "no_available_port": "Níorbh fhéidir port a aimsiú chun an tseirbhís onion a thosú",
"other_page_loaded": "Seoladh lódáilte", "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", "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", "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", "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", "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_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_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_stealth": "Úsáid údarú cliaint (ardleibhéal)",
"help_receive": "Glac le comhaid chomhroinnte in áit iad a sheoladh", "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", "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_choose_items": "Roghnaigh",
"gui_share_start_server": "Comhroinn", "gui_share_start_server": "Comhroinn",
"gui_share_stop_server": "Stop ag comhroinnt", "gui_share_stop_server": "Stop ag comhroinnt",
"gui_share_stop_server_shutdown_timeout": "Stop ag Comhroinnt ({}s fágtha)", "gui_share_stop_server_autostop_timer": "Stop ag Comhroinnt ({}s fágtha)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Amadóir uathstoptha caite {}", "gui_share_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
"gui_receive_start_server": "Tosaigh an Mód Glactha", "gui_receive_start_server": "Tosaigh an Mód Glactha",
"gui_receive_stop_server": "Stop 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_autostop_timer": "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_tooltip": "Amadóir uathstoptha caite {}",
"gui_copy_url": "Cóipeáil an Seoladh", "gui_copy_url": "Cóipeáil an Seoladh",
"gui_copy_hidservauth": "Cóipeáil HidServAuth", "gui_copy_hidservauth": "Cóipeáil HidServAuth",
"gui_downloads": "Stair Íoslódála", "gui_downloads": "Stair Íoslódála",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Sábháil", "gui_settings_button_save": "Sábháil",
"gui_settings_button_cancel": "Cealaigh", "gui_settings_button_cancel": "Cealaigh",
"gui_settings_button_help": "Cabhair", "gui_settings_button_help": "Cabhair",
"gui_settings_shutdown_timeout_checkbox": "Úsáid amadóir uathstoptha", "gui_settings_autostop_timer_checkbox": "Úsáid amadóir uathstoptha",
"gui_settings_shutdown_timeout": "Stop ag comhroinnt ag:", "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_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_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 {}:{}.", "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_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_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_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_started_after_autostop_timer": "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_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 é", "share_via_onionshare": "Comhroinn trí OnionShare é",
"gui_use_legacy_v2_onions_checkbox": "Úsáid seoltaí sean-nóis", "gui_use_legacy_v2_onions_checkbox": "Úsáid seoltaí sean-nóis",
"gui_save_private_key_checkbox": "Úsáid seoladh seasmhach (seanleagan)", "gui_save_private_key_checkbox": "Úsáid seoladh seasmhach (seanleagan)",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -38,12 +38,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -40,12 +40,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -107,8 +107,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -134,8 +134,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "", "gui_connect_to_tor_for_onion_settings": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",

184
share/locale/hi.json Normal file
View 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": ""
}

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "Kiválaszt", "gui_choose_items": "Kiválaszt",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Mentés", "gui_settings_button_save": "Mentés",
"gui_settings_button_cancel": "Megszakítás", "gui_settings_button_cancel": "Megszakítás",
"gui_settings_button_help": "Súgó", "gui_settings_button_help": "Súgó",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -1,19 +1,19 @@
{ {
"config_onion_service": "", "config_onion_service": "Mengatur layanan onion pada port {0:d}.",
"preparing_files": "", "preparing_files": "Mengompresi berkas-berkas.",
"give_this_url": "", "give_this_url": "Beri alamat ini kepada penerima:",
"give_this_url_stealth": "", "give_this_url_stealth": "Beri alamat ini dan baris HidServAuth kepada penerima:",
"give_this_url_receive": "", "give_this_url_receive": "Beri alamat ini kepada pengirim:",
"give_this_url_receive_stealth": "", "give_this_url_receive_stealth": "Beri alamat ini dan HidServAuth kepada pengirim:",
"ctrlc_to_stop": "", "ctrlc_to_stop": "Tekan Ctrl+C untuk menghentikan peladen",
"not_a_file": "", "not_a_file": "{0:s} bukan berkas yang sah.",
"not_a_readable_file": "", "not_a_readable_file": "{0:s} bukan berkas yang bisa dibaca.",
"no_available_port": "", "no_available_port": "Tidak dapat menemukan porta yang tersedia untuk memulai layanan onion",
"other_page_loaded": "", "other_page_loaded": "Alamat dimuat",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "Terhenti karena transfer telah tuntas",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "Peringatan: Mengirim dalam jumlah besar dapat memakan waktu berjam-jam",
"systray_menu_exit": "Keluar", "systray_menu_exit": "Keluar",
"systray_download_started_title": "", "systray_download_started_title": "",
"systray_download_started_message": "", "systray_download_started_message": "",
@ -23,74 +23,74 @@
"systray_download_canceled_message": "", "systray_download_canceled_message": "",
"systray_upload_started_title": "", "systray_upload_started_title": "",
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "Tidak menggunakan Tor (hanya untuk pengembangan)",
"help_stay_open": "", "help_stay_open": "Lanjutkan berbagi setelah berkas telah terkirim",
"help_shutdown_timeout": "", "help_autostop_timer": "Berhenti berbagi setelah beberapa detik",
"help_stealth": "", "help_stealth": "Gunakan otorisasi klien (lanjutan)",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "Catat kesalahan OnionShare ke stdout, dan kesalahan web ke disk",
"help_filename": "", "help_filename": "Daftar berkas atau folder untuk dibagikan",
"help_config": "", "help_config": "",
"gui_drag_and_drop": "", "gui_drag_and_drop": "Seret dan lepas berkas dan folder\nuntuk mulai berbagi",
"gui_add": "Tambahkan", "gui_add": "Tambahkan",
"gui_delete": "Hapus", "gui_delete": "Hapus",
"gui_choose_items": "Pilih", "gui_choose_items": "Pilih",
"gui_share_start_server": "", "gui_share_start_server": "Mulai berbagi",
"gui_share_stop_server": "", "gui_share_stop_server": "Berhenti berbagi",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "Berhenti Berbagi ({}d tersisa)",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "Mulai Mode Menerima",
"gui_receive_stop_server": "", "gui_receive_stop_server": "Menghentikan Mode Menerima",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "Menghentikan Mode Menerima ({}d tersisa)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "Salin Alamat",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "Salin HidServAuth",
"gui_downloads": "", "gui_downloads": "",
"gui_no_downloads": "", "gui_no_downloads": "",
"gui_canceled": "Dibatalkan", "gui_canceled": "Dibatalkan",
"gui_copied_url_title": "", "gui_copied_url_title": "Alamat OnionShare disalin",
"gui_copied_url": "", "gui_copied_url": "Alamat OnionShare disalin ke papan klip",
"gui_copied_hidservauth_title": "", "gui_copied_hidservauth_title": "HidServAuth disalin",
"gui_copied_hidservauth": "", "gui_copied_hidservauth": "Baris HidServAuth disalin ke papan klip",
"gui_please_wait": "", "gui_please_wait": "Memulai... Klik untuk membatalkan.",
"gui_download_upload_progress_complete": "", "gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "", "gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "", "gui_download_upload_progress_eta": "",
"version_string": "", "version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "", "gui_quit_title": "Tidak begitu cepat",
"gui_share_quit_warning": "", "gui_share_quit_warning": "Anda sedang dalam proses pengiriman berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
"gui_receive_quit_warning": "", "gui_receive_quit_warning": "Anda sedang dalam proses menerima berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
"gui_quit_warning_quit": "Keluar", "gui_quit_warning_quit": "Keluar",
"gui_quit_warning_dont_quit": "Batal", "gui_quit_warning_dont_quit": "Batal",
"error_rate_limit": "", "error_rate_limit": "",
"zip_progress_bar_format": "", "zip_progress_bar_format": "Mengompresi: %p%",
"error_stealth_not_supported": "", "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": "", "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_window_title": "Pengaturan",
"gui_settings_whats_this": "", "gui_settings_whats_this": "<a href='{0:s}'>Apakah ini?</a>",
"gui_settings_stealth_option": "", "gui_settings_stealth_option": "Gunakan otorisasi klien",
"gui_settings_stealth_hidservauth_string": "", "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": "", "gui_settings_autoupdate_label": "Periksa versi terbaru",
"gui_settings_autoupdate_option": "", "gui_settings_autoupdate_option": "Beritahu saya ketika versi baru tersedia",
"gui_settings_autoupdate_timestamp": "", "gui_settings_autoupdate_timestamp": "Terakhir diperiksa: {}",
"gui_settings_autoupdate_timestamp_never": "Tak pernah", "gui_settings_autoupdate_timestamp_never": "Tidak pernah",
"gui_settings_autoupdate_check_button": "", "gui_settings_autoupdate_check_button": "Periksa Versi Terbaru",
"gui_settings_general_label": "Pengaturan umum", "gui_settings_general_label": "Pengaturan umum",
"gui_settings_sharing_label": "", "gui_settings_sharing_label": "Pengaturan berbagi",
"gui_settings_close_after_first_download_option": "", "gui_settings_close_after_first_download_option": "Berhenti berbagi setelah berkas telah terkirim",
"gui_settings_connection_type_label": "", "gui_settings_connection_type_label": "Bagaimana seharusnya OnionShare terhubung ke Tor?",
"gui_settings_connection_type_bundled_option": "", "gui_settings_connection_type_bundled_option": "",
"gui_settings_connection_type_automatic_option": "", "gui_settings_connection_type_automatic_option": "Mencoba konfigurasi otomatis dengan Tor Browser",
"gui_settings_connection_type_control_port_option": "", "gui_settings_connection_type_control_port_option": "Menghubungkan menggunakan porta kontrol",
"gui_settings_connection_type_socket_file_option": "", "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_control_port_label": "Port kontrol",
"gui_settings_socket_file_label": "", "gui_settings_socket_file_label": "Berkas soket",
"gui_settings_socks_label": "", "gui_settings_socks_label": "Porta SOCKS",
"gui_settings_authenticate_label": "", "gui_settings_authenticate_label": "Pengaturan otentikasi Tor",
"gui_settings_authenticate_no_auth_option": "", "gui_settings_authenticate_no_auth_option": "Tidak ada otentikasi, atau otentikasi kuki",
"gui_settings_authenticate_password_option": "", "gui_settings_authenticate_password_option": "Sandi",
"gui_settings_password_label": "", "gui_settings_password_label": "Sandi",
"gui_settings_tor_bridges": "", "gui_settings_tor_bridges": "",
"gui_settings_tor_bridges_no_bridges_radio_option": "", "gui_settings_tor_bridges_no_bridges_radio_option": "",
"gui_settings_tor_bridges_obfs4_radio_option": "", "gui_settings_tor_bridges_obfs4_radio_option": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Simpan", "gui_settings_button_save": "Simpan",
"gui_settings_button_cancel": "Batal", "gui_settings_button_cancel": "Batal",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",
@ -181,5 +181,8 @@
"gui_download_in_progress": "", "gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "", "gui_open_folder_error_nautilus": "",
"gui_settings_language_label": "", "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"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -1,6 +1,6 @@
{ {
"preparing_files": "Compressione dei file in corso.", "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", "ctrlc_to_stop": "Premi Ctrl+C per fermare il server",
"not_a_file": "{0:s} non è un file valido.", "not_a_file": "{0:s} non è un file valido.",
"other_page_loaded": "URL caricato", "other_page_loaded": "URL caricato",
@ -23,12 +23,12 @@
"gui_please_wait": "Avviato... Cliccare per interrompere.", "gui_please_wait": "Avviato... Cliccare per interrompere.",
"zip_progress_bar_format": "Compressione in corso: %p%", "zip_progress_bar_format": "Compressione in corso: %p%",
"config_onion_service": "Preparando il servizio onion sulla porta {0:d}.", "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": "Dai questo indirizzo al mittente:",
"give_this_url_receive_stealth": "Condividi questo indirizzo e la linea HideServAuth con il 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.", "not_a_readable_file": "{0:s} non è un file leggibile.",
"no_available_port": "Non è stato possibile trovare alcuna porta per avviare il servizio onion", "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", "timeout_download_still_running": "download in corso, attendere",
"systray_menu_exit": "Termina", "systray_menu_exit": "Termina",
"systray_download_started_title": "Download con OnionShare avviato", "systray_download_started_title": "Download con OnionShare avviato",
@ -39,15 +39,15 @@
"systray_download_canceled_message": "L'utente ha interrotto il download", "systray_download_canceled_message": "L'utente ha interrotto il download",
"systray_upload_started_title": "Upload con OnionShare avviato", "systray_upload_started_title": "Upload con OnionShare avviato",
"systray_upload_started_message": "Un utente ha avviato l'upload di file sul tuo computer", "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_stealth": "Usa l'autorizzazione del client (avanzato)",
"help_config": "Specifica il percorso del file di configurazione del JSON personalizzato", "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_autostop_timer": "Arresta la condivisione ({}s rimanenti)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Il timer si arresterà tra {}", "gui_share_stop_server_autostop_timer_tooltip": "Il timer si arresterà tra {}",
"gui_receive_start_server": "Inizia la ricezione", "gui_receive_start_server": "Inizia la ricezione",
"gui_receive_stop_server": "Arresta la ricezione", "gui_receive_stop_server": "Arresta la ricezione",
"gui_receive_stop_server_shutdown_timeout": "Interrompi la ricezione ({}s rimanenti)", "gui_receive_stop_server_autostop_timer": "Interrompi la ricezione ({}s rimanenti)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Il timer termina tra {}", "gui_receive_stop_server_autostop_timer_tooltip": "Il timer termina tra {}",
"gui_copy_hidservauth": "Copia HidServAuth", "gui_copy_hidservauth": "Copia HidServAuth",
"gui_no_downloads": "Ancora nessun Download", "gui_no_downloads": "Ancora nessun Download",
"gui_copied_url_title": "Indirizzo OnionShare copiato", "gui_copied_url_title": "Indirizzo OnionShare copiato",
@ -109,8 +109,8 @@
"gui_settings_button_save": "Salva", "gui_settings_button_save": "Salva",
"gui_settings_button_cancel": "Cancella", "gui_settings_button_cancel": "Cancella",
"gui_settings_button_help": "Aiuto", "gui_settings_button_help": "Aiuto",
"gui_settings_shutdown_timeout_checkbox": "Utilizza il timer di arresto automatico", "gui_settings_autostop_timer_checkbox": "Utilizza il timer di arresto automatico",
"gui_settings_shutdown_timeout": "Ferma la condivisione alle:", "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_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_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 {}: {}.", "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_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_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_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_started_after_autostop_timer": "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_autostop_timer_expired": "Il timer auto-stop ha già finito.\nPer favore aggiornalo per iniziare la condivisione.",
"share_via_onionshare": "Usa OnionShare", "share_via_onionshare": "Usa OnionShare",
"gui_connect_to_tor_for_onion_settings": "Connetti a Tor per vedere le impostazioni del servizio onion", "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", "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_starting": "{0:s}, %p% (in calcolo)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Nessun file ancora inviato", "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_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"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s}は読めるファイルではありません。", "not_a_readable_file": "{0:s}は読めるファイルではありません。",
"no_available_port": "onionサービスを実行するための利用可能ポートを見つかりません", "no_available_port": "onionサービスを実行するための利用可能ポートを見つかりません",
"other_page_loaded": "アドレスはロードされています", "other_page_loaded": "アドレスはロードされています",
"close_on_timeout": "自動タイマーがタイムアウトしたため停止されました", "close_on_autostop_timer": "自動タイマーがタイムアウトしたため停止されました",
"closing_automatically": "転送が完了されたため停止されました", "closing_automatically": "転送が完了されたため停止されました",
"timeout_download_still_running": "ダウンロード完了待ち", "timeout_download_still_running": "ダウンロード完了待ち",
"timeout_upload_still_running": "アップロード完了待ち", "timeout_upload_still_running": "アップロード完了待ち",
@ -26,7 +26,7 @@
"systray_upload_started_message": "ユーザーがファイルをアップロードし始めました", "systray_upload_started_message": "ユーザーがファイルをアップロードし始めました",
"help_local_only": "Torを使わない開発利用のみ", "help_local_only": "Torを使わない開発利用のみ",
"help_stay_open": "ファイルが送信された後に共有し続けます", "help_stay_open": "ファイルが送信された後に共有し続けます",
"help_shutdown_timeout": "数秒後に共有が停止されます", "help_autostop_timer": "数秒後に共有が停止されます",
"help_stealth": "クライアント認証を使う(上級者向け)", "help_stealth": "クライアント認証を使う(上級者向け)",
"help_receive": "共有を送信する代わりに受信する", "help_receive": "共有を送信する代わりに受信する",
"help_debug": "OnionShareのエラーを標準出力に、Webのエラーをディスクに記録する", "help_debug": "OnionShareのエラーを標準出力に、Webのエラーをディスクに記録する",
@ -40,12 +40,12 @@
"gui_choose_items": "選択", "gui_choose_items": "選択",
"gui_share_start_server": "共有を開始する", "gui_share_start_server": "共有を開始する",
"gui_share_stop_server": "共有を停止する", "gui_share_stop_server": "共有を停止する",
"gui_share_stop_server_shutdown_timeout": "共有を停止中です(残り{}秒)", "gui_share_stop_server_autostop_timer": "共有を停止中です(残り{}秒)",
"gui_share_stop_server_shutdown_timeout_tooltip": "{}に自動停止します", "gui_share_stop_server_autostop_timer_tooltip": "{}に自動停止します",
"gui_receive_start_server": "受信モードを開始", "gui_receive_start_server": "受信モードを開始",
"gui_receive_stop_server": "受信モードを停止", "gui_receive_stop_server": "受信モードを停止",
"gui_receive_stop_server_shutdown_timeout": "受信モードを停止中(残り{}秒)", "gui_receive_stop_server_autostop_timer": "受信モードを停止中(残り{}秒)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "{}に自動停止します", "gui_receive_stop_server_autostop_timer_tooltip": "{}に自動停止します",
"gui_copy_url": "アドレスをコピー", "gui_copy_url": "アドレスをコピー",
"gui_copy_hidservauth": "HidServAuthをコピー", "gui_copy_hidservauth": "HidServAuthをコピー",
"gui_downloads": "ダウンロード履歴", "gui_downloads": "ダウンロード履歴",
@ -107,8 +107,8 @@
"gui_settings_button_save": "保存", "gui_settings_button_save": "保存",
"gui_settings_button_cancel": "キャンセル", "gui_settings_button_cancel": "キャンセル",
"gui_settings_button_help": "ヘルプ", "gui_settings_button_help": "ヘルプ",
"gui_settings_shutdown_timeout_checkbox": "自動停止タイマーを使用する", "gui_settings_autostop_timer_checkbox": "自動停止タイマーを使用する",
"gui_settings_shutdown_timeout": "共有を停止する時間:", "gui_settings_autostop_timer": "共有を停止する時間:",
"settings_error_unknown": "設定を解釈できないため、Torコントローラーと接続できません。", "settings_error_unknown": "設定を解釈できないため、Torコントローラーと接続できません。",
"settings_error_automatic": "Torコントローラーと接続できません。Torブラウザtorproject.orgから入手できるがバックグラウンドで動作していますか", "settings_error_automatic": "Torコントローラーと接続できません。Torブラウザtorproject.orgから入手できるがバックグラウンドで動作していますか",
"settings_error_socket_port": "{}:{}でTorコントローラーと接続できません。", "settings_error_socket_port": "{}:{}でTorコントローラーと接続できません。",
@ -134,8 +134,8 @@
"gui_tor_connection_error_settings": "設定でTorとの接続方法を変更してみて下さい。", "gui_tor_connection_error_settings": "設定で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_tor_connection_lost": "Torから切断されました。",
"gui_server_started_after_timeout": "サーバーが起動した前、自動停止タイマーがタイムアウトしました。\n再びファイル共有をして下さい。", "gui_server_started_after_autostop_timer": "サーバーが起動した前、自動停止タイマーがタイムアウトしました。\n再びファイル共有をして下さい。",
"gui_server_timeout_expired": "自動停止タイマーはすでにタイムアウトしています。\n共有し始めるにはリセットして下さい。", "gui_server_autostop_timer_expired": "自動停止タイマーはすでにタイムアウトしています。\n共有し始めるにはリセットして下さい。",
"share_via_onionshare": "OnionShareで共有する", "share_via_onionshare": "OnionShareで共有する",
"gui_connect_to_tor_for_onion_settings": "onionサービス設定を見るのにTorと接続して下さい", "gui_connect_to_tor_for_onion_settings": "onionサービス設定を見るのにTorと接続して下さい",
"gui_use_legacy_v2_onions_checkbox": "レガシーアドレスを使用する", "gui_use_legacy_v2_onions_checkbox": "レガシーアドレスを使用する",
@ -209,8 +209,8 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (計算中)", "gui_all_modes_progress_starting": "{0:s}, %p% (計算中)",
"gui_all_modes_progress_eta": "{0:s}, 完了予定時刻: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, 完了予定時刻: {1:s}, %p%",
"gui_share_mode_no_files": "送信されたファイルがまだありません", "gui_share_mode_no_files": "送信されたファイルがまだありません",
"gui_share_mode_timeout_waiting": "送信完了を待機しています", "gui_share_mode_autostop_timer_waiting": "送信完了を待機しています",
"gui_receive_mode_no_files": "受信されたファイルがまだありません", "gui_receive_mode_no_files": "受信されたファイルがまだありません",
"gui_receive_mode_timeout_waiting": "受信完了を待機しています", "gui_receive_mode_autostop_timer_waiting": "受信完了を待機しています",
"gui_settings_onion_label": "Onion設定" "gui_settings_onion_label": "Onion設定"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} 는 읽을수 없는 파일입니다.", "not_a_readable_file": "{0:s} 는 읽을수 없는 파일입니다.",
"no_available_port": "어니언 서비스를 시작하기 위한 사용 가능한 포트를 찾을수 없었습니다", "no_available_port": "어니언 서비스를 시작하기 위한 사용 가능한 포트를 찾을수 없었습니다",
"other_page_loaded": "주소가 로드되다", "other_page_loaded": "주소가 로드되다",
"close_on_timeout": "자동멈춤 타이머가 끝났기 때문에 정지되다", "close_on_autostop_timer": "자동멈춤 타이머가 끝났기 때문에 정지되다",
"closing_automatically": "다운로드가 완료되었기 때문에 정지되다", "closing_automatically": "다운로드가 완료되었기 때문에 정지되다",
"timeout_download_still_running": "다운로드가 완료되기를 기다리는 중입니다", "timeout_download_still_running": "다운로드가 완료되기를 기다리는 중입니다",
"timeout_upload_still_running": "업로드가 완료되기를 기다리는 중입니다", "timeout_upload_still_running": "업로드가 완료되기를 기다리는 중입니다",
@ -26,7 +26,7 @@
"systray_upload_started_message": "사용자가 파일들을 당신의 컴퓨터로 업로딩 하는것을 시작했습니다", "systray_upload_started_message": "사용자가 파일들을 당신의 컴퓨터로 업로딩 하는것을 시작했습니다",
"help_local_only": "Tor를 사용하지 마시오 (오직 개발자용)", "help_local_only": "Tor를 사용하지 마시오 (오직 개발자용)",
"help_stay_open": "첫 다운로드 후 계속 공유하시오", "help_stay_open": "첫 다운로드 후 계속 공유하시오",
"help_shutdown_timeout": "정해진 초단위의 시간이 지난후 공유하는 것을 멈추시오", "help_autostop_timer": "정해진 초단위의 시간이 지난후 공유하는 것을 멈추시오",
"help_stealth": "고객 허가를 사용 (고급 수준의)", "help_stealth": "고객 허가를 사용 (고급 수준의)",
"help_receive": "그것들을 보내는것 대신 공유를 받으시오", "help_receive": "그것들을 보내는것 대신 공유를 받으시오",
"help_debug": "어니언쉐어 에러들은 표준 출력 장치로 접속하고, 웹 에러들은 디스크로 접속 ", "help_debug": "어니언쉐어 에러들은 표준 출력 장치로 접속하고, 웹 에러들은 디스크로 접속 ",
@ -38,12 +38,12 @@
"gui_choose_items": "선택", "gui_choose_items": "선택",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "저장", "gui_settings_button_save": "저장",
"gui_settings_button_cancel": "취소", "gui_settings_button_cancel": "취소",
"gui_settings_button_help": "도움말", "gui_settings_button_help": "도움말",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -38,12 +38,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Зачувување", "gui_settings_button_save": "Зачувување",
"gui_settings_button_cancel": "Откажи", "gui_settings_button_cancel": "Откажи",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

184
share/locale/ms.json Normal file
View 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": ""
}

View file

@ -8,7 +8,7 @@
"not_a_readable_file": "{0:s} is geen leesbaar bestand.", "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", "no_available_port": "Er is geen poort beschikbaar om de onion-dienst op te starten",
"other_page_loaded": "Adres geladen", "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", "closing_automatically": "Gestopt omdat de download is afgerond",
"timeout_download_still_running": "Bezig met wachten op afronden van download", "timeout_download_still_running": "Bezig met wachten op afronden van download",
"large_filesize": "Waarschuwing: het versturen van grote bestanden kan uren duren", "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", "systray_download_canceled_message": "De gebruiker heeft de download afgebroken",
"help_local_only": "Tor niet gebruiken (alleen voor ontwikkelingsdoeleinden)", "help_local_only": "Tor niet gebruiken (alleen voor ontwikkelingsdoeleinden)",
"help_stay_open": "Blijven delen na afronden van eerste download", "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_stealth": "Client-authorisatie gebruiken (geavanceerd)",
"help_debug": "Log OnionShare fouten naar stdout, en web fouten naar disk", "help_debug": "Log OnionShare fouten naar stdout, en web fouten naar disk",
"help_filename": "Lijst van bestanden of mappen om te delen", "help_filename": "Lijst van bestanden of mappen om te delen",
@ -73,7 +73,7 @@
"gui_settings_button_save": "Opslaan", "gui_settings_button_save": "Opslaan",
"gui_settings_button_cancel": "Annuleren", "gui_settings_button_cancel": "Annuleren",
"gui_settings_button_help": "Help", "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_saved": "Instellingen opgeslagen in {}",
"settings_error_unknown": "Kan geen verbinding maken met de Tor controller omdat je instellingen nergens op slaan.", "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?", "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_ask_quit": "Afsluiten",
"gui_tor_connection_error_settings": "Probeer hoe OnionShare verbind met het Tor network te veranderen in de instellingen.", "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_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_started_after_autostop_timer": "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_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", "share_via_onionshare": "Deel via OnionShare",
"give_this_url_receive": "Geef dit adres aan de afzender:", "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:", "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", "timeout_upload_still_running": "Wachten op voltooiing van de upload",
"gui_share_start_server": "Start met delen", "gui_share_start_server": "Start met delen",
"gui_share_stop_server": "Stop met delen", "gui_share_stop_server": "Stop met delen",
"gui_share_stop_server_shutdown_timeout": "Stop met Delen ({}s resterend)", "gui_share_stop_server_autostop_timer": "Stop met Delen ({}s resterend)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer eindigt bij {}", "gui_share_stop_server_autostop_timer_tooltip": "Auto-stop timer eindigt bij {}",
"gui_receive_start_server": "Start Ontvangstmodus", "gui_receive_start_server": "Start Ontvangstmodus",
"gui_receive_stop_server": "Stop Ontvangstmodus", "gui_receive_stop_server": "Stop Ontvangstmodus",
"gui_receive_stop_server_shutdown_timeout": "Stop Ontvangstmodus ({}s resterend)", "gui_receive_stop_server_autostop_timer": "Stop Ontvangstmodus ({}s resterend)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer stopt bij {}", "gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop timer stopt bij {}",
"gui_no_downloads": "Nog Geen Downloads", "gui_no_downloads": "Nog Geen Downloads",
"gui_copied_url_title": "Gekopieerd OnionShare Adres", "gui_copied_url_title": "Gekopieerd OnionShare Adres",
"gui_copied_hidservauth_title": "HidServAuth gekopieerd", "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_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_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_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_tor_protocol_error_unknown": "Er was een onbekende fout met Tor",
"error_invalid_private_key": "Dit type privésleutel wordt niet ondersteund", "error_invalid_private_key": "Dit type privésleutel wordt niet ondersteund",
"gui_tor_connection_lost": "De verbinding met Tor is verbroken.", "gui_tor_connection_lost": "De verbinding met Tor is verbroken.",

View file

@ -11,7 +11,7 @@
"give_this_url_receive_stealth": "Gi denne adressen og HidServAuth-linjen til avsenderen:", "give_this_url_receive_stealth": "Gi denne adressen og HidServAuth-linjen til avsenderen:",
"not_a_readable_file": "{0:s} er ikke en lesbar fil.", "not_a_readable_file": "{0:s} er ikke en lesbar fil.",
"no_available_port": "Fant ikke tilgjengelig port for oppstart av løktjenesten", "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", "closing_automatically": "Stoppet fordi nedlasting fullførtes",
"timeout_download_still_running": "Venter på at nedlastingen skal fullføres", "timeout_download_still_running": "Venter på at nedlastingen skal fullføres",
"large_filesize": "Advarsel: forsendelse av stor deling kan ta timer", "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", "systray_upload_started_message": "En bruker startet opplasting av filer til din datamaskin",
"help_local_only": "Ikke bruk Tor (kun i utviklingsøyemed)", "help_local_only": "Ikke bruk Tor (kun i utviklingsøyemed)",
"help_stay_open": "Fortsett å dele etter at filene har blitt sendt", "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_stealth": "Bruk klientidentifisering (avansert)",
"help_receive": "Motta delinger istedenfor å sende dem", "help_receive": "Motta delinger istedenfor å sende dem",
"help_debug": "Log OnionShare-feil til stdout, og vev-feil til disk", "help_debug": "Log OnionShare-feil til stdout, og vev-feil til disk",
@ -38,12 +38,12 @@
"gui_choose_items": "Velg", "gui_choose_items": "Velg",
"gui_share_start_server": "Start deling", "gui_share_start_server": "Start deling",
"gui_share_stop_server": "Stopp deling", "gui_share_stop_server": "Stopp deling",
"gui_share_stop_server_shutdown_timeout": "Stopp deling ({}s gjenstår)", "gui_share_stop_server_autostop_timer": "Stopp deling ({}s gjenstår)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}", "gui_share_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
"gui_receive_start_server": "Start mottaksmodus", "gui_receive_start_server": "Start mottaksmodus",
"gui_receive_stop_server": "Stopp mottaksmodus", "gui_receive_stop_server": "Stopp mottaksmodus",
"gui_receive_stop_server_shutdown_timeout": "Stopp mottaksmodus ({}s gjenstår)", "gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({}s gjenstår)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}", "gui_receive_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
"gui_copy_url": "Kopier nettadresse", "gui_copy_url": "Kopier nettadresse",
"gui_copy_hidservauth": "Kopier HidServAuth", "gui_copy_hidservauth": "Kopier HidServAuth",
"gui_downloads": "Nedlastingshistorikk", "gui_downloads": "Nedlastingshistorikk",
@ -69,7 +69,7 @@
"gui_settings_window_title": "Innstillinger", "gui_settings_window_title": "Innstillinger",
"gui_settings_whats_this": "<a href='{0:s}'>Hva er dette?</a>", "gui_settings_whats_this": "<a href='{0:s}'>Hva er dette?</a>",
"gui_settings_stealth_option": "Bruk klientidentifisering", "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_label": "Se etter ny versjon",
"gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig", "gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig",
"gui_settings_autoupdate_timestamp": "Sist sjekket: {}", "gui_settings_autoupdate_timestamp": "Sist sjekket: {}",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Lagre", "gui_settings_button_save": "Lagre",
"gui_settings_button_cancel": "Avbryt", "gui_settings_button_cancel": "Avbryt",
"gui_settings_button_help": "Hjelp", "gui_settings_button_help": "Hjelp",
"gui_settings_shutdown_timeout_checkbox": "Bruk tidsavbruddsur", "gui_settings_autostop_timer_checkbox": "Bruk tidsavbruddsur",
"gui_settings_shutdown_timeout": "Stopp deling ved:", "gui_settings_autostop_timer": "Stopp deling ved:",
"settings_saved": "Innstillinger lagret i {}", "settings_saved": "Innstillinger lagret i {}",
"settings_error_unknown": "Kan ikke koble til Tor-kontroller fordi innstillingene dine ikke gir mening.", "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?", "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_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_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_tor_connection_lost": "Frakoblet fra Tor.",
"gui_server_started_after_timeout": "Tidsavbruddsuret gikk ut før tjeneren startet.\nLag en ny deling.", "gui_server_started_after_autostop_timer": "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_autostop_timer_expired": "Tidsavbruddsuret har gått ut allerede.\nOppdater det for å starte deling.",
"share_via_onionshare": "OnionShare det", "share_via_onionshare": "OnionShare det",
"gui_use_legacy_v2_onions_checkbox": "Bruk gammeldagse adresser", "gui_use_legacy_v2_onions_checkbox": "Bruk gammeldagse adresser",
"gui_save_private_key_checkbox": "Bruk en vedvarende adresse", "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_starting": "{0:s}, %p% (kalkulerer)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Ingen filer sendt enda", "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_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_range": "Avbrutt {} - {}",
"gui_all_modes_transfer_canceled": "Avbrutt {}" "gui_all_modes_transfer_canceled": "Avbrutt {}",
"gui_settings_onion_label": "Løk-innstillinger"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} nie jest plikiem do odczytu.", "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", "no_available_port": "Nie można znaleźć dostępnego portu aby włączyć usługę onion",
"other_page_loaded": "Adres został wczytany", "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", "closing_automatically": "Zatrzymano, gdyż pobieranie zostało ukończone",
"timeout_download_still_running": "Czekam na ukończenie pobierania", "timeout_download_still_running": "Czekam na ukończenie pobierania",
"large_filesize": "Uwaga: Wysyłanie dużego pliku może zająć kilka godzin", "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", "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_local_only": "Nie wykorzystuj sieci Tor (opcja zaawansowana)",
"help_stay_open": "Kontynuuj udostępnianie po pierwszym pobraniu", "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_stealth": "Korzystaj z weryfikacji klienta (zaawansowane)",
"help_receive": "Odbieraj dane zamiast je wysyłać", "help_receive": "Odbieraj dane zamiast je wysyłać",
"help_debug": "Zapisz błędy OnionShare do stdout i zapisz błędy sieciowe na dysku", "help_debug": "Zapisz błędy OnionShare do stdout i zapisz błędy sieciowe na dysku",
@ -37,12 +37,12 @@
"gui_choose_items": "Wybierz", "gui_choose_items": "Wybierz",
"gui_share_start_server": "Rozpocznij udostępnianie", "gui_share_start_server": "Rozpocznij udostępnianie",
"gui_share_stop_server": "Zatrzymaj 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_autostop_timer": "Zatrzymaj udostępnianie (zostało {}s)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Czas upłynie za {}", "gui_share_stop_server_autostop_timer_tooltip": "Czas upłynie za {}",
"gui_receive_start_server": "Rozpocznij tryb odbierania", "gui_receive_start_server": "Rozpocznij tryb odbierania",
"gui_receive_stop_server": "Zatrzymaj 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_autostop_timer": "Zatrzymaj tryb odbierania (pozostało {}s)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Czas upływa za {}", "gui_receive_stop_server_autostop_timer_tooltip": "Czas upływa za {}",
"gui_copy_url": "Kopiuj adres załącznika", "gui_copy_url": "Kopiuj adres załącznika",
"gui_copy_hidservauth": "Kopiuj HidServAuth", "gui_copy_hidservauth": "Kopiuj HidServAuth",
"gui_downloads": "Historia pobierania", "gui_downloads": "Historia pobierania",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Zapisz", "gui_settings_button_save": "Zapisz",
"gui_settings_button_cancel": "Anuluj", "gui_settings_button_cancel": "Anuluj",
"gui_settings_button_help": "Pomoc", "gui_settings_button_help": "Pomoc",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "Nie można połączyć się z kontrolerem Tor, ponieważ Twoje ustawienia nie mają sensu.", "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_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 {}:{}.", "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_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} não é um ficheiro legível.", "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", "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", "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", "closing_automatically": "Interrompido após o término da transferência",
"timeout_download_still_running": "Esperando que o download termine", "timeout_download_still_running": "Esperando que o download termine",
"large_filesize": "Aviso: O envio de arquivos grandes pode levar várias horas", "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", "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_local_only": "Não use Tor (unicamente para programação)",
"help_stay_open": "Continuar a compartilhar após o envio de documentos", "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_stealth": "Usar autorização de cliente (avançado)",
"help_receive": "Receber compartilhamentos ao invés de enviá-los", "help_receive": "Receber compartilhamentos ao invés de enviá-los",
"help_debug": "Registrar erros do OnionShare no stdout e erros de rede, no disco", "help_debug": "Registrar erros do OnionShare no stdout e erros de rede, no disco",
@ -37,12 +37,12 @@
"gui_choose_items": "Escolher", "gui_choose_items": "Escolher",
"gui_share_start_server": "Começar a compartilhar", "gui_share_start_server": "Começar a compartilhar",
"gui_share_stop_server": "Parar de compartilhar", "gui_share_stop_server": "Parar de compartilhar",
"gui_share_stop_server_shutdown_timeout": "Parar de compartilhar ({}segundos para terminar)", "gui_share_stop_server_autostop_timer": "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_tooltip": "O cronômetro automático termina às",
"gui_receive_start_server": "Modo Começar a Receber", "gui_receive_start_server": "Modo Começar a Receber",
"gui_receive_stop_server": "Modo Parar de 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_autostop_timer": "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_tooltip": "O cronômetro automático termina às {}",
"gui_copy_url": "Copiar endereço", "gui_copy_url": "Copiar endereço",
"gui_copy_hidservauth": "Copiar HidServAuth", "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_downloads": "Histórico de download", "gui_downloads": "Histórico de download",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Salvar", "gui_settings_button_save": "Salvar",
"gui_settings_button_cancel": "Cancelar", "gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ajuda", "gui_settings_button_help": "Ajuda",
"gui_settings_shutdown_timeout_checkbox": "Usar cronômetro para encerrar automaticamente", "gui_settings_autostop_timer_checkbox": "Usar cronômetro para encerrar automaticamente",
"gui_settings_shutdown_timeout": "Encerrar o compartilhamento às:", "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_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_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 {}:{}.", "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_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_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_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_started_after_autostop_timer": "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_autostop_timer_expired": "O temporizador já esgotou.\nPor favor, atualize-o antes de começar a compartilhar.",
"share_via_onionshare": "Compartilhar usando OnionShare", "share_via_onionshare": "Compartilhar usando OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo", "gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo",
"gui_save_private_key_checkbox": "Usar o mesmo endereço", "gui_save_private_key_checkbox": "Usar o mesmo endereço",
@ -206,7 +206,12 @@
"gui_all_modes_transfer_finished": "Transferido {}", "gui_all_modes_transfer_finished": "Transferido {}",
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}", "gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
"gui_all_modes_transfer_canceled": "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_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%"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "Outra página tem sido carregada", "other_page_loaded": "Outra página tem sido carregada",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "Escolha", "gui_choose_items": "Escolha",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "Cancelar", "gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ajuda", "gui_settings_button_help": "Ajuda",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "Alegeți", "gui_choose_items": "Alegeți",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Salvare", "gui_settings_button_save": "Salvare",
"gui_settings_button_cancel": "Anulare", "gui_settings_button_cancel": "Anulare",
"gui_settings_button_help": "Ajutor", "gui_settings_button_help": "Ajutor",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -36,7 +36,7 @@
"give_this_url_receive_stealth": "Передайте этот адрес и строку HidServAuth отправителю:", "give_this_url_receive_stealth": "Передайте этот адрес и строку HidServAuth отправителю:",
"not_a_readable_file": "{0:s} не читаемый файл.", "not_a_readable_file": "{0:s} не читаемый файл.",
"no_available_port": "Не удалось найти доступный порт для запуска \"лукового\" сервиса", "no_available_port": "Не удалось найти доступный порт для запуска \"лукового\" сервиса",
"close_on_timeout": "Время ожидания таймера истекло, сервис остановлен", "close_on_autostop_timer": "Время ожидания таймера истекло, сервис остановлен",
"closing_automatically": "Загрузка завершена, сервис остановлен", "closing_automatically": "Загрузка завершена, сервис остановлен",
"timeout_download_still_running": "Ожидаем завершения скачивания", "timeout_download_still_running": "Ожидаем завершения скачивания",
"timeout_upload_still_running": "Ожидаем завершения загрузки", "timeout_upload_still_running": "Ожидаем завершения загрузки",
@ -51,7 +51,7 @@
"systray_upload_started_message": "Пользователь начал загрузку файлов на Ваш компьютер", "systray_upload_started_message": "Пользователь начал загрузку файлов на Ваш компьютер",
"help_local_only": "Не использовать Tor (только для разработки)", "help_local_only": "Не использовать Tor (только для разработки)",
"help_stay_open": "Продолжить отправку после первого скачивания", "help_stay_open": "Продолжить отправку после первого скачивания",
"help_shutdown_timeout": "Остановить отправку после заданного количества секунд", "help_autostop_timer": "Остановить отправку после заданного количества секунд",
"help_stealth": "Использовать авторизацию клиента (дополнительно)", "help_stealth": "Использовать авторизацию клиента (дополнительно)",
"help_receive": "Получать загрузки вместо их отправки", "help_receive": "Получать загрузки вместо их отправки",
"help_debug": "Направлять сообщения об ошибках OnionShare в stdout, ошибки сети сохранять на диск", "help_debug": "Направлять сообщения об ошибках OnionShare в stdout, ошибки сети сохранять на диск",
@ -60,12 +60,12 @@
"gui_drag_and_drop": "Перетащите сюда файлы и/или папки,\nкоторые хотите отправить.", "gui_drag_and_drop": "Перетащите сюда файлы и/или папки,\nкоторые хотите отправить.",
"gui_share_start_server": "Начать отправку", "gui_share_start_server": "Начать отправку",
"gui_share_stop_server": "Закончить отправку", "gui_share_stop_server": "Закончить отправку",
"gui_share_stop_server_shutdown_timeout": "Остановить отправку (осталось {}с)", "gui_share_stop_server_autostop_timer": "Остановить отправку (осталось {}с)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Время таймера истекает в {}", "gui_share_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
"gui_receive_start_server": "Включить режим получения", "gui_receive_start_server": "Включить режим получения",
"gui_receive_stop_server": "Выключить режим получения", "gui_receive_stop_server": "Выключить режим получения",
"gui_receive_stop_server_shutdown_timeout": "Выключить режим получения (осталось {}с)", "gui_receive_stop_server_autostop_timer": "Выключить режим получения (осталось {}с)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Время таймера истекает в {}", "gui_receive_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
"gui_copy_hidservauth": "Скопировать строку HidServAuth", "gui_copy_hidservauth": "Скопировать строку HidServAuth",
"gui_downloads": "История скачиваний", "gui_downloads": "История скачиваний",
"gui_no_downloads": "Скачиваний пока нет ", "gui_no_downloads": "Скачиваний пока нет ",
@ -113,8 +113,8 @@
"gui_settings_tor_bridges_custom_radio_option": "Использовать пользовательские \"мосты\"", "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_custom_label": "Получить настройки \"мостов\" можно здесь: <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
"gui_settings_tor_bridges_invalid": "Ни один из добавленных вами \"мостов\" не работает.\nПроверьте их снова или добавьте другие.", "gui_settings_tor_bridges_invalid": "Ни один из добавленных вами \"мостов\" не работает.\nПроверьте их снова или добавьте другие.",
"gui_settings_shutdown_timeout_checkbox": "Использовать таймер", "gui_settings_autostop_timer_checkbox": "Использовать таймер",
"gui_settings_shutdown_timeout": "Остановить загрузку в:", "gui_settings_autostop_timer": "Остановить загрузку в:",
"settings_error_unknown": "Невозможно произвести подключение к контроллеру Tor: некорректные настройки.", "settings_error_unknown": "Невозможно произвести подключение к контроллеру Tor: некорректные настройки.",
"settings_error_automatic": "Ошибка подключения к контроллеру Tor. Запущен ли Tor Browser (torproject.org) в фоновом режиме?", "settings_error_automatic": "Ошибка подключения к контроллеру Tor. Запущен ли Tor Browser (torproject.org) в фоновом режиме?",
"settings_error_socket_port": "Ошибка подключения к контроллеру Tor в {}:{}.", "settings_error_socket_port": "Ошибка подключения к контроллеру Tor в {}:{}.",
@ -138,8 +138,8 @@
"gui_tor_connection_error_settings": "Попробуйте изменить способ подключения OnionShare к сети Tor в разделе \"Настройки\".", "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_tor_connection_lost": "Отключено от Tor.",
"gui_server_started_after_timeout": "Время таймера истекло до того, как сервер был запущен.\nПожалуйста, отправьте файлы заново.", "gui_server_started_after_autostop_timer": "Время таймера истекло до того, как сервер был запущен.\nПожалуйста, отправьте файлы заново.",
"gui_server_timeout_expired": "Время таймера истекло.\nПожалуйста, обновите его для начала отправки.", "gui_server_autostop_timer_expired": "Время таймера истекло.\nПожалуйста, обновите его для начала отправки.",
"share_via_onionshare": "OnionShare это", "share_via_onionshare": "OnionShare это",
"gui_use_legacy_v2_onions_checkbox": "Используйте устаревшие адреса", "gui_use_legacy_v2_onions_checkbox": "Используйте устаревшие адреса",
"gui_save_private_key_checkbox": "Используйте постоянный адрес", "gui_save_private_key_checkbox": "Используйте постоянный адрес",
@ -210,7 +210,7 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (вычисляем)", "gui_all_modes_progress_starting": "{0:s}, %p% (вычисляем)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Пока нет отправленных файлов", "gui_share_mode_no_files": "Пока нет отправленных файлов",
"gui_share_mode_timeout_waiting": "Ожидается завершение отправки", "gui_share_mode_autostop_timer_waiting": "Ожидается завершение отправки",
"gui_receive_mode_no_files": "Пока нет полученных файлов", "gui_receive_mode_no_files": "Пока нет полученных файлов",
"gui_receive_mode_timeout_waiting": "Ожидается завершение загрузки" "gui_receive_mode_autostop_timer_waiting": "Ожидается завершение загрузки"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "Izberi", "gui_choose_items": "Izberi",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "Pomoč", "gui_settings_button_help": "Pomoč",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -40,12 +40,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -107,8 +107,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -134,8 +134,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "", "gui_connect_to_tor_for_onion_settings": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",

View file

@ -8,9 +8,9 @@
"ctrlc_to_stop": "Tryck ned Ctrl+C för att stoppa servern", "ctrlc_to_stop": "Tryck ned Ctrl+C för att stoppa servern",
"not_a_file": "{0:s} är inte en giltig fil.", "not_a_file": "{0:s} är inte en giltig fil.",
"not_a_readable_file": "{0:s} är inte en läsbar 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", "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", "closing_automatically": "Stoppad för att hämtningen är klar",
"timeout_download_still_running": "Väntar på att nedladdningen ska bli 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", "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", "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_local_only": "Använd inte Tor (endast för utveckling)",
"help_stay_open": "Fortsätt dela efter att filer har skickats", "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_stealth": "Använd klient-auktorisering (avancerat)",
"help_receive": "Ta emot delningar istället för att skicka dem", "help_receive": "Ta emot delningar istället för att skicka dem",
"help_debug": "Logga OnionShare fel till stdout och webbfel till hårddisken", "help_debug": "Logga OnionShare fel till stdout och webbfel till hårddisken",
@ -38,12 +38,12 @@
"gui_choose_items": "Välj", "gui_choose_items": "Välj",
"gui_share_start_server": "Börja dela", "gui_share_start_server": "Börja dela",
"gui_share_stop_server": "Avbryt delning", "gui_share_stop_server": "Avbryt delning",
"gui_share_stop_server_shutdown_timeout": "Avbryt Delning ({}s kvarstår)", "gui_share_stop_server_autostop_timer": "Avbryt Delning ({}s kvarstår)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-timern avslutar vid {}", "gui_share_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_receive_start_server": "Börja mottagarläge", "gui_receive_start_server": "Starta mottagarläge",
"gui_receive_stop_server": "Avsluta 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_autostop_timer": "Avsluta Mottagarläge ({}s kvarstår)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer avslutas kl {}", "gui_receive_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_copy_url": "Kopiera Adress", "gui_copy_url": "Kopiera Adress",
"gui_copy_hidservauth": "Kopiera HidServAuth", "gui_copy_hidservauth": "Kopiera HidServAuth",
"gui_downloads": "Nedladdningshistorik", "gui_downloads": "Nedladdningshistorik",
@ -70,7 +70,7 @@
"gui_settings_window_title": "Inställningar", "gui_settings_window_title": "Inställningar",
"gui_settings_whats_this": "<a href='{0:s}'>Vad är det här?</a>", "gui_settings_whats_this": "<a href='{0:s}'>Vad är det här?</a>",
"gui_settings_stealth_option": "Använd klientauktorisering", "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_label": "Sök efter ny version",
"gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig", "gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig",
"gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}", "gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}",
@ -105,8 +105,8 @@
"gui_settings_button_save": "Spara", "gui_settings_button_save": "Spara",
"gui_settings_button_cancel": "Avbryt", "gui_settings_button_cancel": "Avbryt",
"gui_settings_button_help": "Hjälp", "gui_settings_button_help": "Hjälp",
"gui_settings_shutdown_timeout_checkbox": "Använd automatiska stopp-timern", "gui_settings_autostop_timer_checkbox": "Använd den automatiska stopp-tidtagaren",
"gui_settings_shutdown_timeout": "Stoppa delningen vid:", "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_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_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å {}:{}.", "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_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_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_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": "Det fanns ett fel med Tor: {}",
"error_tor_protocol_error_unknown": "Det fanns ett okänt 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", "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_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_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_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_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_timeout_expired": "Automatiska stopp-timern har redan slutat.\nUppdatera den för att börja dela.", "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": "OnionShare den", "share_via_onionshare": "Dela den med OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser", "gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser",
"gui_save_private_key_checkbox": "Använd en beständig adress", "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='{}' />", "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_starting": "{0} %s% (beräkning)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Inga filer har skickats än", "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_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_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"
} }

View file

@ -26,5 +26,5 @@
"give_this_url_receive": "Bu adresi gönderene ver:", "give_this_url_receive": "Bu adresi gönderene ver:",
"not_a_readable_file": "{0:s} okunabilir bir dosya değil.", "not_a_readable_file": "{0:s} okunabilir bir dosya değil.",
"no_available_port": "Onion servisini başlatmak için uygun bir port bulunamadı", "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"
} }

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "",
@ -25,7 +25,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -37,12 +37,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -104,8 +104,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "", "not_a_readable_file": "",
"no_available_port": "", "no_available_port": "",
"other_page_loaded": "", "other_page_loaded": "",
"close_on_timeout": "", "close_on_autostop_timer": "",
"closing_automatically": "", "closing_automatically": "",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"timeout_upload_still_running": "", "timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "",
"help_stay_open": "", "help_stay_open": "",
"help_shutdown_timeout": "", "help_autostop_timer": "",
"help_stealth": "", "help_stealth": "",
"help_receive": "", "help_receive": "",
"help_debug": "", "help_debug": "",
@ -38,12 +38,12 @@
"gui_choose_items": "", "gui_choose_items": "",
"gui_share_start_server": "", "gui_share_start_server": "",
"gui_share_stop_server": "", "gui_share_stop_server": "",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "",
"gui_receive_start_server": "", "gui_receive_start_server": "",
"gui_receive_stop_server": "", "gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "", "gui_copy_url": "",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "",
"gui_downloads": "", "gui_downloads": "",
@ -105,8 +105,8 @@
"gui_settings_button_save": "", "gui_settings_button_save": "",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "",
"gui_settings_button_help": "", "gui_settings_button_help": "",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "",
"settings_error_unknown": "", "settings_error_unknown": "",
"settings_error_automatic": "", "settings_error_automatic": "",
"settings_error_socket_port": "", "settings_error_socket_port": "",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",

View file

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s}不是可读文件.", "not_a_readable_file": "{0:s}不是可读文件.",
"no_available_port": "找不到可用于开启onion服务的端口", "no_available_port": "找不到可用于开启onion服务的端口",
"other_page_loaded": "地址已加载完成", "other_page_loaded": "地址已加载完成",
"close_on_timeout": "终止 原因:自动停止计时器的时间已到", "close_on_autostop_timer": "停止原因:自动停止计时器的时间已到",
"closing_automatically": "终止 原因:传输已完成", "closing_automatically": "终止 原因:传输已完成",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "警告:分享大文件可能会用上数小时", "large_filesize": "警告:分享大文件可能会用上数小时",
@ -23,12 +23,12 @@
"systray_download_canceled_message": "", "systray_download_canceled_message": "",
"systray_upload_started_title": "", "systray_upload_started_title": "",
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "不使用Tor(只限开发测试)", "help_local_only": "不使用Tor(仅开发测试)",
"help_stay_open": "文件传输完成后继续分享", "help_stay_open": "文件传输完成后继续分享",
"help_shutdown_timeout": "超过给定时间(秒)后,终止分享.", "help_autostop_timer": "超过给定时间(秒)后终止分享",
"help_stealth": "使用服务端认证(高级选项)", "help_stealth": "使用服务端认证(高级选项)",
"help_receive": "仅接收分享的文件,不发送", "help_receive": "仅接收分享的文件不发送",
"help_debug": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘", "help_debug": "将OnionShare错误日志记录到stdout将web错误日志记录到磁盘",
"help_filename": "要分享的文件或文件夹的列表", "help_filename": "要分享的文件或文件夹的列表",
"help_config": "自定义JSON配置文件的路径(可选)", "help_config": "自定义JSON配置文件的路径(可选)",
"gui_drag_and_drop": "将文件或文件夹拖动到这里来开始分享", "gui_drag_and_drop": "将文件或文件夹拖动到这里来开始分享",
@ -37,12 +37,12 @@
"gui_choose_items": "选取", "gui_choose_items": "选取",
"gui_share_start_server": "开始分享", "gui_share_start_server": "开始分享",
"gui_share_stop_server": "停止分享", "gui_share_stop_server": "停止分享",
"gui_share_stop_server_shutdown_timeout": "停止分享(还剩{}秒)", "gui_share_stop_server_autostop_timer": "停止分享(还剩{}秒)",
"gui_share_stop_server_shutdown_timeout_tooltip": "在{}自动停止", "gui_share_stop_server_autostop_timer_tooltip": "在{}自动停止",
"gui_receive_start_server": "开启接受模式", "gui_receive_start_server": "开启接受模式",
"gui_receive_stop_server": "停止接受模式", "gui_receive_stop_server": "停止接受模式",
"gui_receive_stop_server_shutdown_timeout": "停止接受模式(还剩{}秒)", "gui_receive_stop_server_autostop_timer": "停止接受模式(还剩{}秒)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "在{}自动停止", "gui_receive_stop_server_autostop_timer_tooltip": "在{}自动停止",
"gui_copy_url": "复制地址", "gui_copy_url": "复制地址",
"gui_copy_hidservauth": "复制HidServAuth", "gui_copy_hidservauth": "复制HidServAuth",
"gui_downloads": "", "gui_downloads": "",
@ -56,20 +56,20 @@
"gui_download_upload_progress_complete": "", "gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "", "gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "", "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_quit_title": "再等等",
"gui_share_quit_warning": "您有文件正在传输中...您确定要退出OnionShare吗?", "gui_share_quit_warning": "您有文件正在传输中...您确定要退出OnionShare吗?",
"gui_receive_quit_warning": "您有文件还正在接收中...您确定要退出OnionShare吗?", "gui_receive_quit_warning": "您有文件还正在接收中...您确定要退出OnionShare吗?",
"gui_quit_warning_quit": "退出", "gui_quit_warning_quit": "退出",
"gui_quit_warning_dont_quit": "取消", "gui_quit_warning_dont_quit": "取消",
"error_rate_limit": "有人您对地址发出过多错误请求,这很可能说明有人在尝试猜测您的地址.因此为了安全OinionShare已终止服务.请重新开启分享并且向收件人发送新地址.", "error_rate_limit": "有人您对地址发出过多错误请求这很可能说明有人在尝试猜测您的地址因此为了安全OinionShare已终止服务。请重新开启分享并且向收件人发送新地址。",
"zip_progress_bar_format": "压缩中: %p%", "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_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_ephemeral_not_supported": "OnionShare至少同时需要Tor 0.2.7.1和python3-stem 1.4.0来运行",
"gui_settings_window_title": "设置", "gui_settings_window_title": "设置",
"gui_settings_whats_this": "<a href='{0:s}'>这是什么?</a>", "gui_settings_whats_this": "<a href='{0:s}'>这是什么?</a>",
"gui_settings_stealth_option": "使用客户端认证", "gui_settings_stealth_option": "使用客户端认证",
"gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以\n点击这里来复制您的HidServAuth.", "gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以点击这里来复制您的HidServAuth。",
"gui_settings_autoupdate_label": "检查新版本", "gui_settings_autoupdate_label": "检查新版本",
"gui_settings_autoupdate_option": "有新版本可用时告知我", "gui_settings_autoupdate_option": "有新版本可用时告知我",
"gui_settings_autoupdate_timestamp": "上次检查更新的时间:{}", "gui_settings_autoupdate_timestamp": "上次检查更新的时间:{}",
@ -79,12 +79,12 @@
"gui_settings_sharing_label": "分享设置", "gui_settings_sharing_label": "分享设置",
"gui_settings_close_after_first_download_option": "文件发送完成后停止分享", "gui_settings_close_after_first_download_option": "文件发送完成后停止分享",
"gui_settings_connection_type_label": "OnionShare应如何连接Tor?", "gui_settings_connection_type_label": "OnionShare应如何连接Tor?",
"gui_settings_connection_type_bundled_option": "使用OnionShare内置的tor", "gui_settings_connection_type_bundled_option": "使用OnionShare内置的Tor",
"gui_settings_connection_type_automatic_option": "尝试使用Tor Browser(Tor浏览器)的设置", "gui_settings_connection_type_automatic_option": "尝试使用Tor BrowserTor浏览器的设置",
"gui_settings_connection_type_control_port_option": "用特定端口连接", "gui_settings_connection_type_control_port_option": "用特定端口连接",
"gui_settings_connection_type_socket_file_option": "使用socket文档的设置连接", "gui_settings_connection_type_socket_file_option": "使用socket文档的设置连接",
"gui_settings_connection_type_test_button": "测试tor连接", "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_socket_file_label": "Socket配置文档",
"gui_settings_socks_label": "SOCKS 端口", "gui_settings_socks_label": "SOCKS 端口",
"gui_settings_authenticate_label": "Tor认证设置", "gui_settings_authenticate_label": "Tor认证设置",
@ -104,37 +104,37 @@
"gui_settings_button_save": "保存", "gui_settings_button_save": "保存",
"gui_settings_button_cancel": "取消", "gui_settings_button_cancel": "取消",
"gui_settings_button_help": "帮助", "gui_settings_button_help": "帮助",
"gui_settings_shutdown_timeout_checkbox": "使用自动停止计时器", "gui_settings_autostop_timer_checkbox": "使用自动停止计时器",
"gui_settings_shutdown_timeout": "在(时间)停止分享", "gui_settings_autostop_timer": "停止分享时间:",
"settings_error_unknown": "无法连接Tor控制件因为您的设置无法被理解.", "settings_error_unknown": "无法连接Tor控制件因为您的设置无法被理解.",
"settings_error_automatic": "无法连接tor控制件.Tor浏览器是否在后台工作(从torproject.org可以获得Tor Browser)", "settings_error_automatic": "无法连接tor控制件.Tor浏览器是否在后台工作(从torproject.org可以获得Tor Browser)",
"settings_error_socket_port": "在socket端口{}:{}无法连接tor控制件.", "settings_error_socket_port": "在socket端口{}:{}无法连接tor控制件.",
"settings_error_socket_file": "无法使用socket配置文档的设置连接tor控制件", "settings_error_socket_file": "无法使用socket配置文档{}的设置连接Tor控制件。",
"settings_error_auth": "已连接到了{}:{},但是无法认证也许这不是tor控制件", "settings_error_auth": "已连接到了{}:{}但是无法认证也许这不是tor控制件",
"settings_error_missing_password": "已连接到tor控制件但需要密码来认证.", "settings_error_missing_password": "已连接到tor控制件但需要密码来认证.",
"settings_error_unreadable_cookie_file": "已连接到tor控制件但可能密码错误或者没有读取cookie文件的权限.", "settings_error_unreadable_cookie_file": "已连接到Tor控制件但可能密码错误或者没有读取cookie文件的权限。",
"settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式", "settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式",
"settings_error_bundled_tor_timeout": "尝试连接tor的用时过长也许您的网络有问题或者是系统时间不准确", "settings_error_bundled_tor_timeout": "尝试连接tor的用时过长也许您的网络有问题或者是系统时间不准确",
"settings_error_bundled_tor_broken": "OnionShare无法在后台连接Tor\n{}", "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": "Tor出现错误: {}",
"error_tor_protocol_error_unknown": "Tor出现未知错误", "error_tor_protocol_error_unknown": "Tor出现未知错误",
"error_invalid_private_key": "不支持这种类型的私钥", "error_invalid_private_key": "不支持这种类型的私钥",
"connecting_to_tor": "正在连接Tor网络", "connecting_to_tor": "正在连接Tor网络",
"update_available": "有新版本的OnionShare可用<a href='{}'>请点击这里</a> 来获得.<br><br>您在使用的版本为 {} 最新的可用版本为 {}.", "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_error_invalid_latest_version": "无法检查更新:也许您没有连接到Tor?或者OnionShare官网不可用?",
"update_not_available": "您现在运行的OnionShare为最新版本.", "update_not_available": "您现在运行的OnionShare为最新版本.",
"gui_tor_connection_ask": "打开设置来查看Tor连接", "gui_tor_connection_ask": "打开设置来查看Tor连接",
"gui_tor_connection_ask_open_settings": "是的", "gui_tor_connection_ask_open_settings": "是的",
"gui_tor_connection_ask_quit": "退出", "gui_tor_connection_ask_quit": "退出",
"gui_tor_connection_error_settings": "请尝试在设置中设定OnionShare连接Tor的方式.", "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_tor_connection_lost": "已和Tor断开连接.",
"gui_server_started_after_timeout": "在服务开始之前自动停止计时器的时间已到.\n请建立新的分享.", "gui_server_started_after_autostop_timer": "在服务开始之前自动停止计时器的时间已到.\n请建立新的分享.",
"gui_server_timeout_expired": "自动停止计时器的时间已到.\n请更新其设置来开始分享.", "gui_server_autostop_timer_expired": "自动停止计时器的时间已到。\n请更新其设置来开始分享。",
"share_via_onionshare": "用OnionShare来分享", "share_via_onionshare": "用OnionShare来分享",
"gui_use_legacy_v2_onions_checkbox": "使用古老的地址", "gui_use_legacy_v2_onions_checkbox": "使用的地址",
"gui_save_private_key_checkbox": "使用长期地址", "gui_save_private_key_checkbox": "使用长期地址",
"gui_share_url_description": "<b>任何人</b>只要拥有这个OnionShare 地址,都可以用<b>Tor浏览器</b>来从您的设备进行文件<b>下载</b><img src='{}' />", "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='{}' />", "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_range": "",
"gui_upload_finished": "", "gui_upload_finished": "",
"gui_download_in_progress": "", "gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "无法打开文件夹,原因:nautilus不可用.文件在这里: {}", "gui_open_folder_error_nautilus": "无法打开文件夹,原因nautilus不可用。文件在这里{}",
"gui_settings_language_label": "首选语言", "gui_settings_language_label": "首选语言",
"gui_settings_language_changed_notice": "请重启OnionShare以使您的语言改变设定生效.", "gui_settings_language_changed_notice": "请重启OnionShare以使您的语言改变设定生效.",
"gui_add_files": "添加文件", "gui_add_files": "添加文件",
@ -203,13 +203,13 @@
"gui_all_modes_transfer_started": "已开始{}", "gui_all_modes_transfer_started": "已开始{}",
"gui_all_modes_transfer_finished_range": "已传输 {} - {}", "gui_all_modes_transfer_finished_range": "已传输 {} - {}",
"gui_all_modes_transfer_finished": "已传输完成 {}", "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_starting": "{0:s}, %p% (计算中)",
"gui_all_modes_progress_eta": "{0:s}, 预计完成时间: {1:s}, %p%", "gui_all_modes_progress_eta": "{0:s}, 预计完成时间: {1:s}, %p%",
"gui_share_mode_no_files": "还没有文件发出", "gui_share_mode_no_files": "还没有文件发出",
"gui_share_mode_timeout_waiting": "等待结束发送", "gui_share_mode_autostop_timer_waiting": "等待结束发送",
"gui_receive_mode_no_files": "还没有接收文件", "gui_receive_mode_no_files": "还没有接收文件",
"gui_receive_mode_timeout_waiting": "等待接收完成", "gui_receive_mode_autostop_timer_waiting": "等待接收完成",
"gui_settings_onion_label": "Onion设置", "gui_settings_onion_label": "Onion设置",
"gui_all_modes_transfer_canceled_range": "已取消 {} - {}", "gui_all_modes_transfer_canceled_range": "已取消 {} - {}",
"gui_all_modes_transfer_canceled": "已取消 {}" "gui_all_modes_transfer_canceled": "已取消 {}"

View file

@ -1,19 +1,19 @@
{ {
"config_onion_service": "", "config_onion_service": "正在端口{0:d}啟動onion服務...",
"preparing_files": "", "preparing_files": "壓縮檔案中...",
"give_this_url": "", "give_this_url": "請將這串地址交給接收者:",
"give_this_url_stealth": "", "give_this_url_stealth": "請將這串地址以及HidServAuth交給接收者:",
"give_this_url_receive": "", "give_this_url_receive": "請將這串地址交給傳送者:",
"give_this_url_receive_stealth": "", "give_this_url_receive_stealth": "請將這串地址以及HidServAuth交給傳送者:",
"ctrlc_to_stop": "", "ctrlc_to_stop": "按下Ctrl+C以停止服務",
"not_a_file": "", "not_a_file": "{0:s} 不是一個可用的檔案。",
"not_a_readable_file": "", "not_a_readable_file": "{0:s} 不是一個可讀取的檔案。",
"no_available_port": "", "no_available_port": "找不到一個可用的端口來啟動onion服務",
"other_page_loaded": "", "other_page_loaded": "已載入的地址",
"close_on_timeout": "", "close_on_autostop_timer": "因計數器超時,已停止",
"closing_automatically": "", "closing_automatically": "因傳輸完成,已停止",
"timeout_download_still_running": "", "timeout_download_still_running": "",
"large_filesize": "", "large_filesize": "警告:傳輸巨大的檔案將有可能耗時數小時以上",
"systray_menu_exit": "離開", "systray_menu_exit": "離開",
"systray_download_started_title": "", "systray_download_started_title": "",
"systray_download_started_message": "", "systray_download_started_message": "",
@ -23,116 +23,116 @@
"systray_download_canceled_message": "", "systray_download_canceled_message": "",
"systray_upload_started_title": "", "systray_upload_started_title": "",
"systray_upload_started_message": "", "systray_upload_started_message": "",
"help_local_only": "", "help_local_only": "不要使用Tor(僅限開發使用)",
"help_stay_open": "", "help_stay_open": "繼續分享即使檔案已傳送",
"help_shutdown_timeout": "", "help_autostop_timer": "在所給定的秒數後停止分享",
"help_stealth": "", "help_stealth": "使用客戶端認證 (進階選項)",
"help_receive": "", "help_receive": "接收分享的檔案而不是傳送他們",
"help_debug": "", "help_debug": "將OnionShare的錯誤日誌輸出到stdout, 並且將網路錯誤輸出到硬碟",
"help_filename": "", "help_filename": "列舉所要分享的檔案或資料夾",
"help_config": "", "help_config": "自定義的JSON設置檔路徑(選擇性)",
"gui_drag_and_drop": "", "gui_drag_and_drop": "拖曳檔案及資料夾來開始分享",
"gui_add": "新增", "gui_add": "新增",
"gui_delete": "刪除", "gui_delete": "刪除",
"gui_choose_items": "選擇", "gui_choose_items": "瀏覽",
"gui_share_start_server": "", "gui_share_start_server": "開始分享",
"gui_share_stop_server": "", "gui_share_stop_server": "停止分享",
"gui_share_stop_server_shutdown_timeout": "", "gui_share_stop_server_autostop_timer": "停止分享 (剩餘{}秒)",
"gui_share_stop_server_shutdown_timeout_tooltip": "", "gui_share_stop_server_autostop_timer_tooltip": "計數器將在{}停止",
"gui_receive_start_server": "", "gui_receive_start_server": "啟動接收模式",
"gui_receive_stop_server": "", "gui_receive_stop_server": "停止接收模式",
"gui_receive_stop_server_shutdown_timeout": "", "gui_receive_stop_server_autostop_timer": "停止接收模式 (剩餘{}秒)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "", "gui_receive_stop_server_autostop_timer_tooltip": "計數器將在{}停止",
"gui_copy_url": "", "gui_copy_url": "複製地址",
"gui_copy_hidservauth": "", "gui_copy_hidservauth": "複製HidServAuth",
"gui_downloads": "", "gui_downloads": "",
"gui_no_downloads": "", "gui_no_downloads": "",
"gui_canceled": "取消", "gui_canceled": "取消",
"gui_copied_url_title": "", "gui_copied_url_title": "已複製OnionShare地址",
"gui_copied_url": "", "gui_copied_url": "OnionShare地址已複製到剪貼簿",
"gui_copied_hidservauth_title": "", "gui_copied_hidservauth_title": "已複製HidServAuth",
"gui_copied_hidservauth": "", "gui_copied_hidservauth": "HidServAuth已複製到剪貼簿",
"gui_please_wait": "", "gui_please_wait": "啟動中...點擊以取消。",
"gui_download_upload_progress_complete": "", "gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "", "gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "", "gui_download_upload_progress_eta": "",
"version_string": "", "version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "", "gui_quit_title": "確定要離開嗎",
"gui_share_quit_warning": "", "gui_share_quit_warning": "仍在傳送檔案您確定要結束OnionShare嗎?",
"gui_receive_quit_warning": "", "gui_receive_quit_warning": "仍在接收檔案您確定要結束OnionShare嗎?",
"gui_quit_warning_quit": "離開", "gui_quit_warning_quit": "結束",
"gui_quit_warning_dont_quit": "", "gui_quit_warning_dont_quit": "取消",
"error_rate_limit": "", "error_rate_limit": "有人嘗試過多次您的地址代表他們可能是用猜的因此OnionShare已經停止服務。再次啟動分享並傳送新的地址給接收者以開始分享。",
"zip_progress_bar_format": "", "zip_progress_bar_format": "壓縮中: %p%",
"error_stealth_not_supported": "", "error_stealth_not_supported": "為了使用客戶端認證, 您至少需要 Tor 0.2.9.1-alpha (或 Tor Browser 6.5) 以及 python3-stem 1.5.0.",
"error_ephemeral_not_supported": "", "error_ephemeral_not_supported": "OnionShare 需要至少 Tor 0.2.7.1 以及 python3-stem 1.4.0.",
"gui_settings_window_title": "設定", "gui_settings_window_title": "設定",
"gui_settings_whats_this": "", "gui_settings_whats_this": "<a href='{0:s}'>這是什麼?</a>",
"gui_settings_stealth_option": "", "gui_settings_stealth_option": "使用客戶端認證",
"gui_settings_stealth_hidservauth_string": "", "gui_settings_stealth_hidservauth_string": "已經將您的私鑰存起來以便使用代表您現在可以點選以複製您的HidSerAuth。",
"gui_settings_autoupdate_label": "檢查新版本", "gui_settings_autoupdate_label": "檢查新版本",
"gui_settings_autoupdate_option": "", "gui_settings_autoupdate_option": "當有新版本的時候提醒我",
"gui_settings_autoupdate_timestamp": "", "gui_settings_autoupdate_timestamp": "上一次檢查時間: {}",
"gui_settings_autoupdate_timestamp_never": "不使用", "gui_settings_autoupdate_timestamp_never": "從未",
"gui_settings_autoupdate_check_button": "", "gui_settings_autoupdate_check_button": "檢查新版本",
"gui_settings_general_label": "一般設定", "gui_settings_general_label": "一般設定",
"gui_settings_sharing_label": "", "gui_settings_sharing_label": "分享設定",
"gui_settings_close_after_first_download_option": "", "gui_settings_close_after_first_download_option": "當檔案已傳送時停止分享",
"gui_settings_connection_type_label": "", "gui_settings_connection_type_label": "OnionShare要如何連接到Tor?",
"gui_settings_connection_type_bundled_option": "", "gui_settings_connection_type_bundled_option": "使用OnionShare內建的Tor版本",
"gui_settings_connection_type_automatic_option": "", "gui_settings_connection_type_automatic_option": "嘗試auto-configuration with Tor Browser",
"gui_settings_connection_type_control_port_option": "", "gui_settings_connection_type_control_port_option": "使用control port",
"gui_settings_connection_type_socket_file_option": "", "gui_settings_connection_type_socket_file_option": "使用Socket file",
"gui_settings_connection_type_test_button": "", "gui_settings_connection_type_test_button": "測試連接到Tor",
"gui_settings_control_port_label": "管理連接埠", "gui_settings_control_port_label": "Control端口",
"gui_settings_socket_file_label": "", "gui_settings_socket_file_label": "Socket file",
"gui_settings_socks_label": "", "gui_settings_socks_label": "SOCKS端口",
"gui_settings_authenticate_label": "", "gui_settings_authenticate_label": "Tor 驗證設定",
"gui_settings_authenticate_no_auth_option": "", "gui_settings_authenticate_no_auth_option": "沒有驗證或使用cookie驗證",
"gui_settings_authenticate_password_option": "Password", "gui_settings_authenticate_password_option": "密碼",
"gui_settings_password_label": "Password", "gui_settings_password_label": "密碼",
"gui_settings_tor_bridges": "", "gui_settings_tor_bridges": "Tor bridge支援",
"gui_settings_tor_bridges_no_bridges_radio_option": "", "gui_settings_tor_bridges_no_bridges_radio_option": "不要使用bridges",
"gui_settings_tor_bridges_obfs4_radio_option": "", "gui_settings_tor_bridges_obfs4_radio_option": "使用內建的obfs4 pluggable transports",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "", "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "使用內建的obfs4 pluggable transports (需要 obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "", "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": "", "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "使月內建的 meek_lite (Azure) pluggable transports (需要 obfs4proxy)",
"gui_settings_meek_lite_expensive_warning": "", "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": "", "gui_settings_tor_bridges_custom_radio_option": "使用自定義的bridges",
"gui_settings_tor_bridges_custom_label": "", "gui_settings_tor_bridges_custom_label": "你可以從 <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>取得bridges",
"gui_settings_tor_bridges_invalid": "", "gui_settings_tor_bridges_invalid": "您新增的bridges無效。\n請再次檢查他們或新增其他的。",
"gui_settings_button_save": "保存", "gui_settings_button_save": "保存",
"gui_settings_button_cancel": "", "gui_settings_button_cancel": "取消",
"gui_settings_button_help": "協助", "gui_settings_button_help": "說明",
"gui_settings_shutdown_timeout_checkbox": "", "gui_settings_autostop_timer_checkbox": "使用自動停止計數器",
"gui_settings_shutdown_timeout": "", "gui_settings_autostop_timer": "在這個時間停止分享:",
"settings_error_unknown": "", "settings_error_unknown": "無法連接到Tor controller因為您的設定無效。",
"settings_error_automatic": "", "settings_error_automatic": "無法連機到Tor controller。Tor Browser(可以從torproject.org取得)是否正在背景運行?",
"settings_error_socket_port": "", "settings_error_socket_port": "無法在{}:{}連接到Tor controller。",
"settings_error_socket_file": "", "settings_error_socket_file": "無法使用Socket file {}連接到Tor controller。",
"settings_error_auth": "", "settings_error_auth": "已連接到 {}:{} 但無法驗證。或許這個不是一個Tor controller?",
"settings_error_missing_password": "", "settings_error_missing_password": "已連接到Tor controller,但是它需要密碼進行驗證。",
"settings_error_unreadable_cookie_file": "", "settings_error_unreadable_cookie_file": "已連接到Tor controller但是密碼錯誤或是您沒有讀取cookie檔案的權限。",
"settings_error_bundled_tor_not_supported": "", "settings_error_bundled_tor_not_supported": "OnionShare附帶的Tor版本並不適用於Windows或macOS上的開發人員模式。",
"settings_error_bundled_tor_timeout": "", "settings_error_bundled_tor_timeout": "Tor連接超時。您可能沒有連接網路或是系統時間設定錯誤?",
"settings_error_bundled_tor_broken": "", "settings_error_bundled_tor_broken": "OnionShare無法在背景連接到Tor:\n{}",
"settings_test_success": "", "settings_test_success": "已連接到Tor controller。\n\nTor版本: {}\n支援短期onion服務: {}.\n支援客戶端認證: {}.\n支援新一代.onion地址: {}.",
"error_tor_protocol_error": "", "error_tor_protocol_error": "Tor發生錯誤: {}",
"error_tor_protocol_error_unknown": "", "error_tor_protocol_error_unknown": "Tor發生了未知的錯誤",
"error_invalid_private_key": "", "error_invalid_private_key": "此私鑰類型不受支援",
"connecting_to_tor": "", "connecting_to_tor": "正在連接Tor網路",
"update_available": "", "update_available": "新版本的OnionShare已推出。 <a href='{}'>點此</a>獲取<br><br>您正在使用版本 {} 而最新版本是 {}。",
"update_error_check_error": "", "update_error_check_error": "無法檢查新版本: OnionShare網站提示最新版本無法辨識'{}'…",
"update_error_invalid_latest_version": "", "update_error_invalid_latest_version": "無法檢查新版本:或許您尚未連接上Tor或是OnionShare官網失效?",
"update_not_available": "", "update_not_available": "您正在使用最新版本的OnionShare。",
"gui_tor_connection_ask": "", "gui_tor_connection_ask": "開啟設定來檢查Tor連接?",
"gui_tor_connection_ask_open_settings": "", "gui_tor_connection_ask_open_settings": "",
"gui_tor_connection_ask_quit": "離開", "gui_tor_connection_ask_quit": "",
"gui_tor_connection_error_settings": "", "gui_tor_connection_error_settings": "試試在設定中改變OnionShare連接到Tor網路的方式。",
"gui_tor_connection_canceled": "", "gui_tor_connection_canceled": "無法連接到Tor。\n\n請確認您已連接上網路然後再重新開啟OnionShare並設定Tor連線。",
"gui_tor_connection_lost": "", "gui_tor_connection_lost": "已斷開Tor連接。",
"gui_server_started_after_timeout": "", "gui_server_started_after_autostop_timer": "",
"gui_server_timeout_expired": "", "gui_server_autostop_timer_expired": "",
"share_via_onionshare": "", "share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "", "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "", "gui_save_private_key_checkbox": "",
@ -181,5 +181,8 @@
"gui_download_in_progress": "", "gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "", "gui_open_folder_error_nautilus": "",
"gui_settings_language_label": "", "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設定"
} }

View file

@ -176,7 +176,7 @@ ul.flashes {
margin: 0; margin: 0;
padding: 0; padding: 0;
width: 800px; width: 800px;
max-width: 90%; max-width: 500px;
margin: 0 auto; margin: 0 auto;
} }
@ -184,7 +184,7 @@ ul.flashes li {
margin: 0 0 5px 0; margin: 0 0 5px 0;
padding: 5px; padding: 5px;
list-style: none; list-style: none;
text-align: left; text-align: center;
} }
li.error { li.error {
@ -224,17 +224,15 @@ li.info {
} }
div#noscript { div#noscript {
border: 1px solid #e55454; text-align: center;
text-align: left; color: #d709df;
color: #e55454;
padding: 1em; padding: 1em;
line-height: 150%; line-height: 150%;
max-width: 900px; margin: 0 auto;
margin: 100px 2em 0 2em;
} }
div#noscript a, div#noscript a:visited { div#noscript a, div#noscript a:visited {
color: #e27f7f; color: #d709df;
} }
.disable-noscript-xss-wrapper { .disable-noscript-xss-wrapper {

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

View file

@ -1,10 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>OnionShare: 403 Forbidden</title> <title>OnionShare: 403 Forbidden</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head> </head>
<body> <body>
<div class="info-wrapper"> <div class="info-wrapper">
<div class="info"> <div class="info">
@ -13,4 +15,5 @@
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View file

@ -1,10 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>OnionShare: 404 Not Found</title> <title>OnionShare: 404 Not Found</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head> </head>
<body> <body>
<div class="info-wrapper"> <div class="info-wrapper">
<div class="info"> <div class="info">
@ -13,4 +15,5 @@
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View file

@ -1,10 +1,13 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>OnionShare</title> <title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
</head> </head>
<body> <body>
<p>OnionShare download in progress</p> <p>OnionShare download in progress</p>
</body> </body>
</html> </html>

View file

@ -2,8 +2,8 @@
<html> <html>
<head> <head>
<title>OnionShare</title> <title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head> </head>
<body> <body>
@ -13,16 +13,24 @@
</header> </header>
<div class="upload-wrapper"> <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><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="upload-header">Send Files</p> <p class="upload-header">Send Files</p>
<p class="upload-description">Select the files you want to send, then click "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 id="uploads"></div>
<div> <div>
@ -37,22 +45,14 @@
</ul> </ul>
</div> </div>
<!-- <form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
We are not using a <noscript> tag because it only works when the security slider is set to <p><input type="file" id="file-select" name="file[]" multiple /></p>
Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506 <p><button type="submit" id="send-button" class="button">Send Files</button></p>
--> </form>
<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>
</div> </div>
<script src="/static/js/receive-noscript.js"></script>
<script src="/static/js/jquery-3.3.1.min.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> </body>
</html> </html>

View file

@ -2,8 +2,8 @@
<html> <html>
<head> <head>
<title>OnionShare</title> <title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head> </head>
<body> <body>

View file

@ -1,12 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>OnionShare</title> <title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
<meta name="onionshare-filename" content="{{ filename }}"> <meta name="onionshare-filename" content="{{ filename }}">
<meta name="onionshare-filesize" content="{{ filesize }}"> <meta name="onionshare-filesize" content="{{ filesize }}">
</head> </head>
<body> <body>
<header class="clearfix"> <header class="clearfix">
@ -51,6 +53,7 @@
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
<script src="/static/js/send.js"></script> <script async src="/static/js/send.js" charset="utf-8"></script>
</body> </body>
</html> </html>

View file

@ -1,10 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>OnionShare is closed</title> <title>OnionShare is closed</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" /> <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link href="/static/css/style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head> </head>
<body> <body>
<header class="clearfix"> <header class="clearfix">
<img class="logo" src="/static/img/logo.png" title="OnionShare"> <img class="logo" src="/static/img/logo.png" title="OnionShare">
@ -19,4 +21,5 @@
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View file

@ -172,6 +172,9 @@ class GuiBaseTest(object):
'''Test that the Server Status indicator shows we are Starting''' '''Test that the Server Status indicator shows we are Starting'''
self.assertEqual(mode.server_status_label.text(), strings._('gui_status_indicator_share_working')) 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): def server_is_started(self, mode, startup_time=2000):
'''Test that the server has started''' '''Test that the server has started'''
@ -291,13 +294,12 @@ class GuiBaseTest(object):
def set_timeout(self, mode, timeout): def set_timeout(self, mode, timeout):
'''Test that the timeout can be set''' '''Test that the timeout can be set'''
timer = QtCore.QDateTime.currentDateTime().addSecs(timeout) timer = QtCore.QDateTime.currentDateTime().addSecs(timeout)
mode.server_status.shutdown_timeout.setDateTime(timer) mode.server_status.autostop_timer_widget.setDateTime(timer)
self.assertTrue(mode.server_status.shutdown_timeout.dateTime(), timer) self.assertTrue(mode.server_status.autostop_timer_widget.dateTime(), timer)
def autostop_timer_widget_hidden(self, mode):
def timeout_widget_hidden(self, mode): '''Test that the auto-stop timer widget is hidden when share has started'''
'''Test that the timeout widget is hidden when share has started''' self.assertFalse(mode.server_status.autostop_timer_container.isVisible())
self.assertFalse(mode.server_status.shutdown_timeout_container.isVisible())
def server_timed_out(self, mode, wait): def server_timed_out(self, mode, wait):
@ -306,6 +308,37 @@ class GuiBaseTest(object):
# We should have timed out now # We should have timed out now
self.assertEqual(mode.server_status.status, 0) 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 # Hack to close an Alert dialog that would otherwise block tests
def accept_dialog(self): def accept_dialog(self):
window = self.gui.qtapp.activeWindow() window = self.gui.qtapp.activeWindow()

View file

@ -5,7 +5,7 @@ from PyQt5 import QtCore, QtTest
from .GuiBaseTest import GuiBaseTest from .GuiBaseTest import GuiBaseTest
class GuiReceiveTest(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''' '''Test that we can upload the file'''
files = {'file[]': open(file_to_upload, 'rb')} files = {'file[]': open(file_to_upload, 'rb')}
if not public_mode: if not public_mode:
@ -13,6 +13,9 @@ class GuiReceiveTest(GuiBaseTest):
else: else:
path = 'http://127.0.0.1:{}/upload'.format(self.gui.app.port) path = 'http://127.0.0.1:{}/upload'.format(self.gui.app.port)
response = requests.post(path, files=files) 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) QtTest.QTest.qWait(2000)
# Make sure the file is within the last 10 seconds worth of filenames # Make sure the file is within the last 10 seconds worth of filenames
@ -20,6 +23,9 @@ class GuiReceiveTest(GuiBaseTest):
now = datetime.now() now = datetime.now()
for i in range(10): for i in range(10):
date_dir = now.strftime("%Y-%m-%d") date_dir = now.strftime("%Y-%m-%d")
if identical_files_at_once:
time_dir = now.strftime("%H.%M.%S-1")
else:
time_dir = now.strftime("%H.%M.%S") time_dir = now.strftime("%H.%M.%S")
receive_mode_dir = os.path.join(self.gui.common.settings.get('data_dir'), date_dir, time_dir) 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) expected_filename = os.path.join(receive_mode_dir, expected_basename)
@ -74,18 +80,6 @@ class GuiReceiveTest(GuiBaseTest):
self.assertEqual(mode.history.completed_count, before_completed_count) self.assertEqual(mode.history.completed_count, before_completed_count)
self.assertEqual(len(mode.history.item_list.items), before_number_of_history_items) 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 # 'Grouped' tests follow from here
def run_all_receive_mode_setup_tests(self, public_mode): 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.counter_incremented(self.gui.receive_mode, 3)
self.upload_file(public_mode, '/tmp/testdir/test', 'test') self.upload_file(public_mode, '/tmp/testdir/test', 'test')
self.counter_incremented(self.gui.receive_mode, 4) 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.uploading_zero_files_shouldnt_change_ui(self.gui.receive_mode, public_mode)
self.history_indicator(self.gui.receive_mode, public_mode) self.history_indicator(self.gui.receive_mode, public_mode)
self.server_is_stopped(self.gui.receive_mode, False) self.server_is_stopped(self.gui.receive_mode, False)
@ -142,6 +139,6 @@ class GuiReceiveTest(GuiBaseTest):
"""Auto-stop timer tests in receive mode""" """Auto-stop timer tests in receive mode"""
self.run_all_receive_mode_setup_tests(public_mode) self.run_all_receive_mode_setup_tests(public_mode)
self.set_timeout(self.gui.receive_mode, 5) 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.server_timed_out(self.gui.receive_mode, 15000)
self.web_server_is_stopped() self.web_server_is_stopped()

View file

@ -191,10 +191,29 @@ class GuiShareTest(GuiBaseTest):
self.run_all_share_mode_setup_tests() self.run_all_share_mode_setup_tests()
self.set_timeout(self.gui.share_mode, 5) self.set_timeout(self.gui.share_mode, 5)
self.run_all_share_mode_started_tests(public_mode) 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.server_timed_out(self.gui.share_mode, 10000)
self.web_server_is_stopped() 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): def run_all_share_mode_unreadable_file_tests(self):
'''Attempt to share an unreadable file''' '''Attempt to share an unreadable file'''

View 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)) 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()) self.assertTrue(self.gui.public_mode_checkbox.isChecked())
# shutdown timer is off # autostop timer is off
self.assertFalse(self.gui.shutdown_timeout_checkbox.isChecked()) self.assertFalse(self.gui.autostop_timer_checkbox.isChecked())
# enable shutdown timer # enable autostop timer
QtTest.QTest.mouseClick(self.gui.shutdown_timeout_checkbox, QtCore.Qt.LeftButton, pos=QtCore.QPoint(2,self.gui.shutdown_timeout_checkbox.height()/2)) 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.shutdown_timeout_checkbox.isChecked()) self.assertTrue(self.gui.autostop_timer_checkbox.isChecked())
# legacy mode checkbox and related widgets # legacy mode checkbox and related widgets
if self.gui.onion.is_authenticated(): if self.gui.onion.is_authenticated():
@ -222,7 +222,7 @@ class SettingsGuiBaseTest(object):
data = json.load(f) data = json.load(f)
self.assertTrue(data["public_mode"]) 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.is_authenticated():
if self.gui.onion.supports_v3_onions: if self.gui.onion.supports_v3_onions:

View file

@ -140,19 +140,6 @@ class TorGuiBaseTest(GuiBaseTest):
else: else:
self.assertEqual(clipboard.text(), 'http://{}/{}'.format(self.gui.app.onion_host, mode.server_status.web.slug)) 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 # Stealth tests
def copy_have_hidserv_auth_button(self, mode): def copy_have_hidserv_auth_button(self, mode):

View file

@ -89,7 +89,7 @@ class TorGuiShareTest(TorGuiBaseTest, GuiShareTest):
self.run_all_share_mode_setup_tests() self.run_all_share_mode_setup_tests()
self.set_timeout(self.gui.share_mode, 120) self.set_timeout(self.gui.share_mode, 120)
self.run_all_share_mode_started_tests(public_mode) 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.server_timed_out(self.gui.share_mode, 125000)
self.web_server_is_stopped() self.web_server_is_stopped()

View file

@ -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()

View file

@ -9,7 +9,7 @@ class LocalReceiveModeTimerTest(unittest.TestCase, GuiReceiveTest):
def setUpClass(cls): def setUpClass(cls):
test_settings = { test_settings = {
"public_mode": False, "public_mode": False,
"shutdown_timeout": True, "autostop_timer": True,
} }
cls.gui = GuiReceiveTest.set_up(test_settings) cls.gui = GuiReceiveTest.set_up(test_settings)

View file

@ -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()

View 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()

View file

@ -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()

View 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()

View file

@ -9,7 +9,7 @@ class LocalShareModeTimerTest(unittest.TestCase, GuiShareTest):
def setUpClass(cls): def setUpClass(cls):
test_settings = { test_settings = {
"public_mode": False, "public_mode": False,
"shutdown_timeout": True, "autostop_timer": True,
} }
cls.gui = GuiShareTest.set_up(test_settings) cls.gui = GuiShareTest.set_up(test_settings)

View file

@ -10,7 +10,7 @@ class LocalShareModeTimerTooShortTest(unittest.TestCase, GuiShareTest):
def setUpClass(cls): def setUpClass(cls):
test_settings = { test_settings = {
"public_mode": False, "public_mode": False,
"shutdown_timeout": True, "autostop_timer": True,
} }
cls.gui = GuiShareTest.set_up(test_settings) cls.gui = GuiShareTest.set_up(test_settings)

View file

@ -8,6 +8,7 @@ class ShareModeCancelTest(unittest.TestCase, TorGuiShareTest):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
test_settings = { test_settings = {
"autostart_timer": True,
} }
cls.gui = TorGuiShareTest.set_up(test_settings) cls.gui = TorGuiShareTest.set_up(test_settings)

View file

@ -9,7 +9,7 @@ class ShareModeTimerTest(unittest.TestCase, TorGuiShareTest):
def setUpClass(cls): def setUpClass(cls):
test_settings = { test_settings = {
"public_mode": False, "public_mode": False,
"shutdown_timeout": True, "autostop_timer": True,
} }
cls.gui = TorGuiShareTest.set_up(test_settings) cls.gui = TorGuiShareTest.set_up(test_settings)

View file

@ -30,9 +30,10 @@ class MyOnion:
self.auth_string = 'TestHidServAuth' self.auth_string = 'TestHidServAuth'
self.private_key = '' self.private_key = ''
self.stealth = stealth self.stealth = stealth
self.scheduled_key = None
@staticmethod @staticmethod
def start_onion_service(_): def start_onion_service(self, await_publication=True, save_scheduled_key=False):
return 'test_service_id.onion' return 'test_service_id.onion'

View file

@ -51,7 +51,8 @@ class TestSettings:
'auth_type': 'no_auth', 'auth_type': 'no_auth',
'auth_password': '', 'auth_password': '',
'close_after_first_download': True, 'close_after_first_download': True,
'shutdown_timeout': False, 'autostop_timer': False,
'autostart_timer': False,
'use_stealth': False, 'use_stealth': False,
'use_autoupdate': True, 'use_autoupdate': True,
'autoupdate_timestamp': None, 'autoupdate_timestamp': None,

View file

@ -41,7 +41,7 @@ RANDOM_STR_REGEX = re.compile(r'^[a-z2-7]+$')
def web_obj(common_obj, mode, num_files=0): def web_obj(common_obj, mode, num_files=0):
""" Creates a Web object, in either share mode or receive mode, ready for testing """ """ 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) strings.load_strings(common_obj)
web = Web(common_obj, False, mode) web = Web(common_obj, False, mode)
web.generate_slug() web.generate_slug()