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
# build binary package
python3 setup.py bdist_rpm --requires="python3-flask, python3-stem, python3-qt5, python3-cryptography, python3-crypto, python3-pysocks, nautilus-python, tor, obfs4"
python3 setup.py bdist_rpm --requires="python3-flask, python3-stem, python3-qt5, python3-crypto, python3-pysocks, nautilus-python, tor, obfs4"
# install it
echo ""

View File

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

View File

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

View File

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

View File

@ -19,6 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import os, sys, time, argparse, threading
from datetime import datetime
from datetime import timedelta
from . import strings
from .common import Common
@ -53,7 +55,9 @@ def main(cwd=None):
parser = argparse.ArgumentParser(formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=28))
parser.add_argument('--local-only', action='store_true', dest='local_only', help=strings._("help_local_only"))
parser.add_argument('--stay-open', action='store_true', dest='stay_open', help=strings._("help_stay_open"))
parser.add_argument('--shutdown-timeout', metavar='<int>', dest='shutdown_timeout', default=0, help=strings._("help_shutdown_timeout"))
parser.add_argument('--auto-start-timer', metavar='<int>', dest='autostart_timer', default=0, help=strings._("help_autostart_timer"))
parser.add_argument('--auto-stop-timer', metavar='<int>', dest='autostop_timer', default=0, help=strings._("help_autostop_timer"))
parser.add_argument('--connect-timeout', metavar='<int>', dest='connect_timeout', default=120, help=strings._("help_connect_timeout"))
parser.add_argument('--stealth', action='store_true', dest='stealth', help=strings._("help_stealth"))
parser.add_argument('--receive', action='store_true', dest='receive', help=strings._("help_receive"))
parser.add_argument('--config', metavar='config', default=False, help=strings._('help_config'))
@ -68,7 +72,9 @@ def main(cwd=None):
local_only = bool(args.local_only)
debug = bool(args.debug)
stay_open = bool(args.stay_open)
shutdown_timeout = int(args.shutdown_timeout)
autostart_timer = int(args.autostart_timer)
autostop_timer = int(args.autostop_timer)
connect_timeout = int(args.connect_timeout)
stealth = bool(args.stealth)
receive = bool(args.receive)
config = args.config
@ -111,7 +117,7 @@ def main(cwd=None):
# Start the Onion object
onion = Onion(common)
try:
onion.connect(custom_settings=False, config=config)
onion.connect(custom_settings=False, config=config, connect_timeout=connect_timeout)
except KeyboardInterrupt:
print("")
sys.exit()
@ -120,10 +126,51 @@ def main(cwd=None):
# Start the onionshare app
try:
app = OnionShare(common, onion, local_only, shutdown_timeout)
common.settings.load()
if not common.settings.get('public_mode'):
web.generate_slug(common.settings.get('slug'))
else:
web.slug = None
app = OnionShare(common, onion, local_only, autostop_timer)
app.set_stealth(stealth)
app.choose_port()
app.start_onion_service()
# Delay the startup if a startup timer was set
if autostart_timer > 0:
# Can't set a schedule that is later than the auto-stop timer
if app.autostop_timer > 0 and app.autostop_timer < autostart_timer:
print(strings._('gui_autostop_timer_cant_be_earlier_than_autostart_timer'))
sys.exit()
app.start_onion_service(False, True)
if common.settings.get('public_mode'):
url = 'http://{0:s}'.format(app.onion_host)
else:
url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
schedule = datetime.now() + timedelta(seconds=autostart_timer)
if mode == 'receive':
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
print('')
print(strings._('receive_mode_warning'))
print('')
if stealth:
print(strings._("give_this_scheduled_url_receive_stealth").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
print(app.auth_string)
else:
print(strings._("give_this_scheduled_url_receive").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
else:
if stealth:
print(strings._("give_this_scheduled_url_share_stealth").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
print(app.auth_string)
else:
print(strings._("give_this_scheduled_url_share").format(schedule.strftime("%I:%M:%S%p, %b %d, %y")))
print(url)
print('')
print(strings._("waiting_for_scheduled_time"))
app.onion.cleanup(False)
time.sleep(autostart_timer)
app.start_onion_service()
else:
app.start_onion_service()
except KeyboardInterrupt:
print("")
sys.exit()
@ -149,7 +196,7 @@ def main(cwd=None):
print('')
# Start OnionShare http service in new thread
t = threading.Thread(target=web.start, args=(app.port, stay_open, common.settings.get('public_mode'), common.settings.get('slug')))
t = threading.Thread(target=web.start, args=(app.port, stay_open, common.settings.get('public_mode'), web.slug))
t.daemon = True
t.start()
@ -157,9 +204,9 @@ def main(cwd=None):
# Wait for web.generate_slug() to finish running
time.sleep(0.2)
# start shutdown timer thread
if app.shutdown_timeout > 0:
app.shutdown_timer.start()
# start auto-stop timer thread
if app.autostop_timer > 0:
app.autostop_timer_thread.start()
# Save the web slug if we are using a persistent private key
if common.settings.get('save_private_key'):
@ -174,44 +221,47 @@ def main(cwd=None):
url = 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
print('')
if mode == 'receive':
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
print('')
print(strings._('receive_mode_warning'))
print('')
if stealth:
print(strings._("give_this_url_receive_stealth"))
print(url)
print(app.auth_string)
else:
print(strings._("give_this_url_receive"))
print(url)
if autostart_timer > 0:
print(strings._('server_started'))
else:
if stealth:
print(strings._("give_this_url_stealth"))
print(url)
print(app.auth_string)
if mode == 'receive':
print(strings._('receive_mode_data_dir').format(common.settings.get('data_dir')))
print('')
print(strings._('receive_mode_warning'))
print('')
if stealth:
print(strings._("give_this_url_receive_stealth"))
print(url)
print(app.auth_string)
else:
print(strings._("give_this_url_receive"))
print(url)
else:
print(strings._("give_this_url"))
print(url)
if stealth:
print(strings._("give_this_url_stealth"))
print(url)
print(app.auth_string)
else:
print(strings._("give_this_url"))
print(url)
print('')
print(strings._("ctrlc_to_stop"))
# Wait for app to close
while t.is_alive():
if app.shutdown_timeout > 0:
# if the shutdown timer was set and has run out, stop the server
if not app.shutdown_timer.is_alive():
if app.autostop_timer > 0:
# if the auto-stop timer was set and has run out, stop the server
if not app.autostop_timer_thread.is_alive():
if mode == 'share':
# If there were no attempts to download the share, or all downloads are done, we can stop
if web.share_mode.download_count == 0 or web.done:
print(strings._("close_on_timeout"))
print(strings._("close_on_autostop_timer"))
web.stop(app.port)
break
if mode == 'receive':
if web.receive_mode.upload_count == 0 or not web.receive_mode.uploads_in_progress:
print(strings._("close_on_timeout"))
print(strings._("close_on_autostop_timer"))
web.stop(app.port)
break
else:

View File

@ -485,7 +485,7 @@ class Common(object):
return total_size
class ShutdownTimer(threading.Thread):
class AutoStopTimer(threading.Thread):
"""
Background thread sleeps t hours and returns.
"""
@ -498,6 +498,6 @@ class ShutdownTimer(threading.Thread):
self.time = time
def run(self):
self.common.log('Shutdown Timer', 'Server will shut down after {} seconds'.format(self.time))
self.common.log('AutoStopTimer', 'Server will shut down after {} seconds'.format(self.time))
time.sleep(self.time)
return 1

View File

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

View File

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

View File

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

View File

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

View File

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

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 onionshare import strings
from onionshare.common import ShutdownTimer
from onionshare.common import AutoStopTimer
from ..server_status import ServerStatus
from ..threads import OnionThread
from ..threads import AutoStartTimer
from ..widgets import Alert
class Mode(QtWidgets.QWidget):
@ -35,6 +36,7 @@ class Mode(QtWidgets.QWidget):
starting_server_step2 = QtCore.pyqtSignal()
starting_server_step3 = QtCore.pyqtSignal()
starting_server_error = QtCore.pyqtSignal(str)
starting_server_early = QtCore.pyqtSignal()
set_server_active = QtCore.pyqtSignal(bool)
def __init__(self, common, qtapp, app, status_bar, server_status_label, system_tray, filenames=None, local_only=False):
@ -58,6 +60,7 @@ class Mode(QtWidgets.QWidget):
# Threads start out as None
self.onion_thread = None
self.web_thread = None
self.startup_thread = None
# Server status
self.server_status = ServerStatus(self.common, self.qtapp, self.app, None, self.local_only)
@ -68,6 +71,7 @@ class Mode(QtWidgets.QWidget):
self.stop_server_finished.connect(self.server_status.stop_server_finished)
self.starting_server_step2.connect(self.start_server_step2)
self.starting_server_step3.connect(self.start_server_step3)
self.starting_server_early.connect(self.start_server_early)
self.starting_server_error.connect(self.start_server_error)
# Primary action
@ -88,24 +92,55 @@ class Mode(QtWidgets.QWidget):
"""
pass
def human_friendly_time(self, secs):
"""
Returns a human-friendly time delta from given seconds.
"""
days = secs//86400
hours = (secs - days*86400)//3600
minutes = (secs - days*86400 - hours*3600)//60
seconds = secs - days*86400 - hours*3600 - minutes*60
if not seconds:
seconds = '0'
result = ("{0}{1}, ".format(days, strings._('days_first_letter')) if days else "") + \
("{0}{1}, ".format(hours, strings._('hours_first_letter')) if hours else "") + \
("{0}{1}, ".format(minutes, strings._('minutes_first_letter')) if minutes else "") + \
"{0}{1}".format(seconds, strings._('seconds_first_letter'))
return result
def timer_callback(self):
"""
This method is called regularly on a timer.
"""
# If the auto-shutdown timer has stopped, stop the server
# If this is a scheduled share, display the countdown til the share starts
if self.server_status.status == ServerStatus.STATUS_WORKING:
if self.server_status.autostart_timer_datetime:
now = QtCore.QDateTime.currentDateTime()
if self.server_status.local_only:
seconds_remaining = now.secsTo(self.server_status.autostart_timer_widget.dateTime())
else:
seconds_remaining = now.secsTo(self.server_status.autostart_timer_datetime.replace(second=0, microsecond=0))
# Update the server button
if seconds_remaining > 0:
self.server_status.server_button.setText(strings._('gui_waiting_to_start').format(self.human_friendly_time(seconds_remaining)))
else:
self.server_status.server_button.setText(strings._('gui_please_wait'))
# If the auto-stop timer has stopped, stop the server
if self.server_status.status == ServerStatus.STATUS_STARTED:
if self.app.shutdown_timer and self.common.settings.get('shutdown_timeout'):
if self.timeout > 0:
if self.app.autostop_timer_thread and self.common.settings.get('autostop_timer'):
if self.autostop_timer_datetime_delta > 0:
now = QtCore.QDateTime.currentDateTime()
seconds_remaining = now.secsTo(self.server_status.timeout)
seconds_remaining = now.secsTo(self.server_status.autostop_timer_datetime)
# Update the server button
server_button_text = self.get_stop_server_shutdown_timeout_text()
self.server_status.server_button.setText(server_button_text.format(seconds_remaining))
server_button_text = self.get_stop_server_autostop_timer_text()
self.server_status.server_button.setText(server_button_text.format(self.human_friendly_time(seconds_remaining)))
self.status_bar.clearMessage()
if not self.app.shutdown_timer.is_alive():
if self.timeout_finished_should_stop_server():
if not self.app.autostop_timer_thread.is_alive():
if self.autostop_timer_finished_should_stop_server():
self.server_status.stop_server()
def timer_callback_custom(self):
@ -114,15 +149,15 @@ class Mode(QtWidgets.QWidget):
"""
pass
def get_stop_server_shutdown_timeout_text(self):
def get_stop_server_autostop_timer_text(self):
"""
Return the string to put on the stop server button, if there's a shutdown timeout
Return the string to put on the stop server button, if there's an auto-stop timer
"""
pass
def timeout_finished_should_stop_server(self):
def autostop_timer_finished_should_stop_server(self):
"""
The shutdown timer expired, should we stop the server? Returns a bool
The auto-stop timer expired, should we stop the server? Returns a bool
"""
pass
@ -142,7 +177,41 @@ class Mode(QtWidgets.QWidget):
self.status_bar.clearMessage()
self.server_status_label.setText('')
# Ensure we always get a new random port each time we might launch an OnionThread
self.app.port = None
# Start the onion thread. If this share was scheduled for a future date,
# the OnionThread will start and exit 'early' to obtain the port, slug
# and onion address, but it will not start the WebThread yet.
if self.server_status.autostart_timer_datetime:
self.start_onion_thread(obtain_onion_early=True)
else:
self.start_onion_thread()
# If scheduling a share, delay starting the real share
if self.server_status.autostart_timer_datetime:
self.common.log('Mode', 'start_server', 'Starting auto-start timer')
self.startup_thread = AutoStartTimer(self)
# Once the timer has finished, start the real share, with a WebThread
self.startup_thread.success.connect(self.start_scheduled_service)
self.startup_thread.error.connect(self.start_server_error)
self.startup_thread.canceled = False
self.startup_thread.start()
def start_onion_thread(self, obtain_onion_early=False):
self.common.log('Mode', 'start_server', 'Starting an onion thread')
self.obtain_onion_early = obtain_onion_early
self.onion_thread = OnionThread(self)
self.onion_thread.success.connect(self.starting_server_step2.emit)
self.onion_thread.success_early.connect(self.starting_server_early.emit)
self.onion_thread.error.connect(self.starting_server_error.emit)
self.onion_thread.start()
def start_scheduled_service(self, obtain_onion_early=False):
# We start a new OnionThread with the saved scheduled key from settings
self.common.settings.load()
self.obtain_onion_early = obtain_onion_early
self.common.log('Mode', 'start_server', 'Starting a scheduled onion thread')
self.onion_thread = OnionThread(self)
self.onion_thread.success.connect(self.starting_server_step2.emit)
self.onion_thread.error.connect(self.starting_server_error.emit)
@ -154,6 +223,14 @@ class Mode(QtWidgets.QWidget):
"""
pass
def start_server_early(self):
"""
An 'early' start of an onion service in order to obtain the onion
address for a scheduled start. Shows the onion address in the UI
in advance of actually starting the share.
"""
self.server_status.show_url()
def start_server_step2(self):
"""
Step 2 in starting the onionshare server.
@ -182,18 +259,18 @@ class Mode(QtWidgets.QWidget):
self.start_server_step3_custom()
if self.common.settings.get('shutdown_timeout'):
if self.common.settings.get('autostop_timer'):
# Convert the date value to seconds between now and then
now = QtCore.QDateTime.currentDateTime()
self.timeout = now.secsTo(self.server_status.timeout)
# Set the shutdown timeout value
if self.timeout > 0:
self.app.shutdown_timer = ShutdownTimer(self.common, self.timeout)
self.app.shutdown_timer.start()
# The timeout has actually already passed since the user clicked Start. Probably the Onion service took too long to start.
self.autostop_timer_datetime_delta = now.secsTo(self.server_status.autostop_timer_datetime)
# Start the auto-stop timer
if self.autostop_timer_datetime_delta > 0:
self.app.autostop_timer_thread = AutoStopTimer(self.common, self.autostop_timer_datetime_delta)
self.app.autostop_timer_thread.start()
# The auto-stop timer has actually already passed since the user clicked Start. Probably the Onion service took too long to start.
else:
self.stop_server()
self.start_server_error(strings._('gui_server_started_after_timeout'))
self.start_server_error(strings._('gui_server_started_after_autostop_timer'))
def start_server_step3_custom(self):
"""
@ -225,7 +302,12 @@ class Mode(QtWidgets.QWidget):
Cancel the server while it is preparing to start
"""
self.cancel_server_custom()
if self.startup_thread:
self.common.log('Mode', 'cancel_server: quitting startup thread')
self.startup_thread.canceled = True
self.app.onion.scheduled_key = None
self.app.onion.scheduled_auth_cookie = None
self.startup_thread.quit()
if self.onion_thread:
self.common.log('Mode', 'cancel_server: quitting onion thread')
self.onion_thread.quit()

View File

@ -86,24 +86,24 @@ class ReceiveMode(Mode):
self.wrapper_layout.addWidget(self.history, stretch=1)
self.setLayout(self.wrapper_layout)
def get_stop_server_shutdown_timeout_text(self):
def get_stop_server_autostop_timer_text(self):
"""
Return the string to put on the stop server button, if there's a shutdown timeout
Return the string to put on the stop server button, if there's an auto-stop timer
"""
return strings._('gui_receive_stop_server_shutdown_timeout')
return strings._('gui_receive_stop_server_autostop_timer')
def timeout_finished_should_stop_server(self):
def autostop_timer_finished_should_stop_server(self):
"""
The shutdown timer expired, should we stop the server? Returns a bool
The auto-stop timer expired, should we stop the server? Returns a bool
"""
# If there were no attempts to upload files, or all uploads are done, we can stop
if self.web.receive_mode.upload_count == 0 or not self.web.receive_mode.uploads_in_progress:
self.server_status.stop_server()
self.server_status_label.setText(strings._('close_on_timeout'))
self.server_status_label.setText(strings._('close_on_autostop_timer'))
return True
# An upload is probably still running - hold off on stopping the share, but block new shares.
else:
self.server_status_label.setText(strings._('gui_receive_mode_timeout_waiting'))
self.server_status_label.setText(strings._('gui_receive_mode_autostop_timer_waiting'))
self.web.receive_mode.can_upload = False
return False

View File

@ -121,24 +121,24 @@ class ShareMode(Mode):
# Always start with focus on file selection
self.file_selection.setFocus()
def get_stop_server_shutdown_timeout_text(self):
def get_stop_server_autostop_timer_text(self):
"""
Return the string to put on the stop server button, if there's a shutdown timeout
Return the string to put on the stop server button, if there's an auto-stop timer
"""
return strings._('gui_share_stop_server_shutdown_timeout')
return strings._('gui_share_stop_server_autostop_timer')
def timeout_finished_should_stop_server(self):
def autostop_timer_finished_should_stop_server(self):
"""
The shutdown timer expired, should we stop the server? Returns a bool
The auto-stop timer expired, should we stop the server? Returns a bool
"""
# If there were no attempts to download the share, or all downloads are done, we can stop
if self.web.share_mode.download_count == 0 or self.web.done:
self.server_status.stop_server()
self.server_status_label.setText(strings._('close_on_timeout'))
self.server_status_label.setText(strings._('close_on_autostop_timer'))
return True
# A download is probably still running - hold off on stopping the share
else:
self.server_status_label.setText(strings._('gui_share_mode_timeout_waiting'))
self.server_status_label.setText(strings._('gui_share_mode_autostop_timer_waiting'))
return False
def start_server_custom(self):

View File

@ -228,7 +228,10 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.server_status_label.setText(strings._('gui_status_indicator_share_stopped'))
elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING:
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_working))
self.server_status_label.setText(strings._('gui_status_indicator_share_working'))
if self.share_mode.server_status.autostart_timer_datetime:
self.server_status_label.setText(strings._('gui_status_indicator_share_scheduled'))
else:
self.server_status_label.setText(strings._('gui_status_indicator_share_working'))
elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED:
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
self.server_status_label.setText(strings._('gui_status_indicator_share_started'))
@ -239,7 +242,10 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.server_status_label.setText(strings._('gui_status_indicator_receive_stopped'))
elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING:
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_working))
self.server_status_label.setText(strings._('gui_status_indicator_receive_working'))
if self.receive_mode.server_status.autostart_timer_datetime:
self.server_status_label.setText(strings._('gui_status_indicator_receive_scheduled'))
else:
self.server_status_label.setText(strings._('gui_status_indicator_receive_working'))
elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED:
self.server_status_image_label.setPixmap(QtGui.QPixmap.fromImage(self.server_status_image_started))
self.server_status_label.setText(strings._('gui_status_indicator_receive_started'))
@ -309,10 +315,16 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.receive_mode.on_reload_settings()
self.status_bar.clearMessage()
# If we switched off the shutdown timeout setting, ensure the widget is hidden.
if not self.common.settings.get('shutdown_timeout'):
self.share_mode.server_status.shutdown_timeout_container.hide()
self.receive_mode.server_status.shutdown_timeout_container.hide()
# If we switched off the auto-stop timer setting, ensure the widget is hidden.
if not self.common.settings.get('autostop_timer'):
self.share_mode.server_status.autostop_timer_container.hide()
self.receive_mode.server_status.autostop_timer_container.hide()
# If we switched off the auto-start timer setting, ensure the widget is hidden.
if not self.common.settings.get('autostart_timer'):
self.share_mode.server_status.autostart_timer_datetime = None
self.receive_mode.server_status.autostart_timer_datetime = None
self.share_mode.server_status.autostart_timer_container.hide()
self.receive_mode.server_status.autostart_timer_container.hide()
d = SettingsDialog(self.common, self.onion, self.qtapp, self.config, self.local_only)
d.settings_saved.connect(reload_settings)

View File

@ -56,34 +56,60 @@ class ServerStatus(QtWidgets.QWidget):
self.app = app
self.web = None
self.autostart_timer_datetime = None
self.local_only = local_only
self.resizeEvent(None)
# Shutdown timeout layout
self.shutdown_timeout_label = QtWidgets.QLabel(strings._('gui_settings_shutdown_timeout'))
self.shutdown_timeout = QtWidgets.QDateTimeEdit()
self.shutdown_timeout.setDisplayFormat("hh:mm A MMM d, yy")
# Auto-start timer layout
self.autostart_timer_label = QtWidgets.QLabel(strings._('gui_settings_autostart_timer'))
self.autostart_timer_widget = QtWidgets.QDateTimeEdit()
self.autostart_timer_widget.setDisplayFormat("hh:mm A MMM d, yy")
if self.local_only:
# For testing
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
else:
# Set proposed timeout to be 5 minutes into the future
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
# Set proposed timer to be 5 minutes into the future
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
# Onion services can take a little while to start, so reduce the risk of it expiring too soon by setting the minimum to 60s from now
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
self.shutdown_timeout.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
shutdown_timeout_layout = QtWidgets.QHBoxLayout()
shutdown_timeout_layout.addWidget(self.shutdown_timeout_label)
shutdown_timeout_layout.addWidget(self.shutdown_timeout)
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
self.autostart_timer_widget.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
autostart_timer_layout = QtWidgets.QHBoxLayout()
autostart_timer_layout.addWidget(self.autostart_timer_label)
autostart_timer_layout.addWidget(self.autostart_timer_widget)
# Shutdown timeout container, so it can all be hidden and shown as a group
shutdown_timeout_container_layout = QtWidgets.QVBoxLayout()
shutdown_timeout_container_layout.addLayout(shutdown_timeout_layout)
self.shutdown_timeout_container = QtWidgets.QWidget()
self.shutdown_timeout_container.setLayout(shutdown_timeout_container_layout)
self.shutdown_timeout_container.hide()
# Auto-start timer container, so it can all be hidden and shown as a group
autostart_timer_container_layout = QtWidgets.QVBoxLayout()
autostart_timer_container_layout.addLayout(autostart_timer_layout)
self.autostart_timer_container = QtWidgets.QWidget()
self.autostart_timer_container.setLayout(autostart_timer_container_layout)
self.autostart_timer_container.hide()
# Auto-stop timer layout
self.autostop_timer_label = QtWidgets.QLabel(strings._('gui_settings_autostop_timer'))
self.autostop_timer_widget = QtWidgets.QDateTimeEdit()
self.autostop_timer_widget.setDisplayFormat("hh:mm A MMM d, yy")
if self.local_only:
# For testing
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(15))
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime())
else:
# Set proposed timer to be 5 minutes into the future
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
# Onion services can take a little while to start, so reduce the risk of it expiring too soon by setting the minimum to 60s from now
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
self.autostop_timer_widget.setCurrentSection(QtWidgets.QDateTimeEdit.MinuteSection)
autostop_timer_layout = QtWidgets.QHBoxLayout()
autostop_timer_layout.addWidget(self.autostop_timer_label)
autostop_timer_layout.addWidget(self.autostop_timer_widget)
# Auto-stop timer container, so it can all be hidden and shown as a group
autostop_timer_container_layout = QtWidgets.QVBoxLayout()
autostop_timer_container_layout.addLayout(autostop_timer_layout)
self.autostop_timer_container = QtWidgets.QWidget()
self.autostop_timer_container.setLayout(autostop_timer_container_layout)
self.autostop_timer_container.hide()
# Server layout
self.server_button = QtWidgets.QPushButton()
@ -123,7 +149,8 @@ class ServerStatus(QtWidgets.QWidget):
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.server_button)
layout.addLayout(url_layout)
layout.addWidget(self.shutdown_timeout_container)
layout.addWidget(self.autostart_timer_container)
layout.addWidget(self.autostop_timer_container)
self.setLayout(layout)
def set_mode(self, share_mode, file_selection=None):
@ -154,14 +181,55 @@ class ServerStatus(QtWidgets.QWidget):
except:
pass
def shutdown_timeout_reset(self):
def autostart_timer_reset(self):
"""
Reset the timeout in the UI after stopping a share
Reset the auto-start timer in the UI after stopping a share
"""
self.shutdown_timeout.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
self.autostart_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
if not self.local_only:
self.shutdown_timeout.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
self.autostart_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
def autostop_timer_reset(self):
"""
Reset the auto-stop timer in the UI after stopping a share
"""
self.autostop_timer_widget.setDateTime(QtCore.QDateTime.currentDateTime().addSecs(300))
if not self.local_only:
self.autostop_timer_widget.setMinimumDateTime(QtCore.QDateTime.currentDateTime().addSecs(60))
def show_url(self):
"""
Show the URL in the UI.
"""
self.url_description.show()
info_image = self.common.get_resource_path('images/info.png')
if self.mode == ServerStatus.MODE_SHARE:
self.url_description.setText(strings._('gui_share_url_description').format(info_image))
else:
self.url_description.setText(strings._('gui_receive_url_description').format(info_image))
# Show a Tool Tip explaining the lifecycle of this URL
if self.common.settings.get('save_private_key'):
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
self.url_description.setToolTip(strings._('gui_url_label_onetime_and_persistent'))
else:
self.url_description.setToolTip(strings._('gui_url_label_persistent'))
else:
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
self.url_description.setToolTip(strings._('gui_url_label_onetime'))
else:
self.url_description.setToolTip(strings._('gui_url_label_stay_open'))
self.url.setText(self.get_url())
self.url.show()
self.copy_url_button.show()
if self.app.stealth:
self.copy_hidservauth_button.show()
else:
self.copy_hidservauth_button.hide()
def update(self):
"""
@ -169,44 +237,18 @@ class ServerStatus(QtWidgets.QWidget):
"""
# Set the URL fields
if self.status == self.STATUS_STARTED:
self.url_description.show()
info_image = self.common.get_resource_path('images/info.png')
if self.mode == ServerStatus.MODE_SHARE:
self.url_description.setText(strings._('gui_share_url_description').format(info_image))
else:
self.url_description.setText(strings._('gui_receive_url_description').format(info_image))
# Show a Tool Tip explaining the lifecycle of this URL
if self.common.settings.get('save_private_key'):
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
self.url_description.setToolTip(strings._('gui_url_label_onetime_and_persistent'))
else:
self.url_description.setToolTip(strings._('gui_url_label_persistent'))
else:
if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'):
self.url_description.setToolTip(strings._('gui_url_label_onetime'))
else:
self.url_description.setToolTip(strings._('gui_url_label_stay_open'))
self.url.setText(self.get_url())
self.url.show()
self.copy_url_button.show()
self.show_url()
if self.common.settings.get('save_private_key'):
if not self.common.settings.get('slug'):
self.common.settings.set('slug', self.web.slug)
self.common.settings.save()
if self.common.settings.get('shutdown_timeout'):
self.shutdown_timeout_container.hide()
if self.common.settings.get('autostart_timer'):
self.autostart_timer_container.hide()
if self.app.stealth:
self.copy_hidservauth_button.show()
else:
self.copy_hidservauth_button.hide()
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.hide()
else:
self.url_description.hide()
self.url.hide()
@ -227,8 +269,10 @@ class ServerStatus(QtWidgets.QWidget):
else:
self.server_button.setText(strings._('gui_receive_start_server'))
self.server_button.setToolTip('')
if self.common.settings.get('shutdown_timeout'):
self.shutdown_timeout_container.show()
if self.common.settings.get('autostart_timer'):
self.autostart_timer_container.show()
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.show()
elif self.status == self.STATUS_STARTED:
self.server_button.setStyleSheet(self.common.css['server_status_button_started'])
self.server_button.setEnabled(True)
@ -236,43 +280,61 @@ class ServerStatus(QtWidgets.QWidget):
self.server_button.setText(strings._('gui_share_stop_server'))
else:
self.server_button.setText(strings._('gui_receive_stop_server'))
if self.common.settings.get('shutdown_timeout'):
self.shutdown_timeout_container.hide()
if self.mode == ServerStatus.MODE_SHARE:
self.server_button.setToolTip(strings._('gui_share_stop_server_shutdown_timeout_tooltip').format(self.timeout))
else:
self.server_button.setToolTip(strings._('gui_receive_stop_server_shutdown_timeout_tooltip').format(self.timeout))
if self.common.settings.get('autostart_timer'):
self.autostart_timer_container.hide()
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.hide()
self.server_button.setToolTip(strings._('gui_stop_server_autostop_timer_tooltip').format(self.autostop_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
elif self.status == self.STATUS_WORKING:
self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
self.server_button.setEnabled(True)
self.server_button.setText(strings._('gui_please_wait'))
if self.common.settings.get('shutdown_timeout'):
self.shutdown_timeout_container.hide()
if self.autostart_timer_datetime:
self.autostart_timer_container.hide()
self.server_button.setToolTip(strings._('gui_start_server_autostart_timer_tooltip').format(self.autostart_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
else:
self.server_button.setText(strings._('gui_please_wait'))
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.hide()
else:
self.server_button.setStyleSheet(self.common.css['server_status_button_working'])
self.server_button.setEnabled(False)
self.server_button.setText(strings._('gui_please_wait'))
if self.common.settings.get('shutdown_timeout'):
self.shutdown_timeout_container.hide()
if self.common.settings.get('autostart_timer'):
self.autostart_timer_container.hide()
self.server_button.setToolTip(strings._('gui_start_server_autostart_timer_tooltip').format(self.autostart_timer_widget.dateTime().toString("h:mm AP, MMMM dd, yyyy")))
if self.common.settings.get('autostop_timer'):
self.autostop_timer_container.hide()
def server_button_clicked(self):
"""
Toggle starting or stopping the server.
"""
if self.status == self.STATUS_STOPPED:
if self.common.settings.get('shutdown_timeout'):
can_start = True
if self.common.settings.get('autostart_timer'):
if self.local_only:
self.timeout = self.shutdown_timeout.dateTime().toPyDateTime()
self.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime()
else:
# Get the timeout chosen, stripped of its seconds. This prevents confusion if the share stops at (say) 37 seconds past the minute chosen
self.timeout = self.shutdown_timeout.dateTime().toPyDateTime().replace(second=0, microsecond=0)
# If the timeout has actually passed already before the user hit Start, refuse to start the server.
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.timeout:
Alert(self.common, strings._('gui_server_timeout_expired'), QtWidgets.QMessageBox.Warning)
self.autostart_timer_datetime = self.autostart_timer_widget.dateTime().toPyDateTime().replace(second=0, microsecond=0)
# If the timer has actually passed already before the user hit Start, refuse to start the server.
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.autostart_timer_datetime:
can_start = False
Alert(self.common, strings._('gui_server_autostart_timer_expired'), QtWidgets.QMessageBox.Warning)
if self.common.settings.get('autostop_timer'):
if self.local_only:
self.autostop_timer_datetime = self.autostop_timer_widget.dateTime().toPyDateTime()
else:
self.start_server()
else:
# Get the timer chosen, stripped of its seconds. This prevents confusion if the share stops at (say) 37 seconds past the minute chosen
self.autostop_timer_datetime = self.autostop_timer_widget.dateTime().toPyDateTime().replace(second=0, microsecond=0)
# If the timer has actually passed already before the user hit Start, refuse to start the server.
if QtCore.QDateTime.currentDateTime().toPyDateTime() > self.autostop_timer_datetime:
can_start = False
Alert(self.common, strings._('gui_server_autostop_timer_expired'), QtWidgets.QMessageBox.Warning)
if self.common.settings.get('autostart_timer'):
if self.autostop_timer_datetime <= self.autostart_timer_datetime:
Alert(self.common, strings._('gui_autostop_timer_cant_be_earlier_than_autostart_timer'), QtWidgets.QMessageBox.Warning)
can_start = False
if can_start:
self.start_server()
elif self.status == self.STATUS_STARTED:
self.stop_server()
@ -302,7 +364,8 @@ class ServerStatus(QtWidgets.QWidget):
Stop the server.
"""
self.status = self.STATUS_WORKING
self.shutdown_timeout_reset()
self.autostart_timer_reset()
self.autostop_timer_reset()
self.update()
self.server_stopped.emit()
@ -312,7 +375,8 @@ class ServerStatus(QtWidgets.QWidget):
"""
self.common.log('ServerStatus', 'cancel_server', 'Canceling the server mid-startup')
self.status = self.STATUS_WORKING
self.shutdown_timeout_reset()
self.autostart_timer_reset()
self.autostop_timer_reset()
self.update()
self.server_canceled.emit()

View File

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

View File

@ -28,6 +28,7 @@ class OnionThread(QtCore.QThread):
Starts the onion service, and waits for it to finish
"""
success = QtCore.pyqtSignal()
success_early = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str)
def __init__(self, mode):
@ -41,18 +42,30 @@ class OnionThread(QtCore.QThread):
def run(self):
self.mode.common.log('OnionThread', 'run')
# Choose port and slug early, because we need them to exist in advance for scheduled shares
self.mode.app.stay_open = not self.mode.common.settings.get('close_after_first_download')
# start onionshare http service in new thread
self.mode.web_thread = WebThread(self.mode)
self.mode.web_thread.start()
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
if not self.mode.app.port:
self.mode.app.choose_port()
if not self.mode.common.settings.get('public_mode'):
if not self.mode.web.slug:
self.mode.web.generate_slug(self.mode.common.settings.get('slug'))
try:
self.mode.app.start_onion_service()
self.success.emit()
if self.mode.obtain_onion_early:
self.mode.app.start_onion_service(await_publication=False, save_scheduled_key=True)
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
self.success_early.emit()
# Unregister the onion so we can use it in the next OnionThread
self.mode.app.onion.cleanup(False)
else:
self.mode.app.start_onion_service(await_publication=True)
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
# start onionshare http service in new thread
self.mode.web_thread = WebThread(self.mode)
self.mode.web_thread.start()
self.success.emit()
except (TorTooOld, TorErrorInvalidSetting, TorErrorAutomatic, TorErrorSocketPort, TorErrorSocketFile, TorErrorMissingPassword, TorErrorUnreadableCookieFile, TorErrorAuthError, TorErrorProtocolError, BundledTorTimeout, OSError) as e:
self.error.emit(e.args[0])
@ -73,5 +86,39 @@ class WebThread(QtCore.QThread):
def run(self):
self.mode.common.log('WebThread', 'run')
self.mode.app.choose_port()
self.mode.web.start(self.mode.app.port, self.mode.app.stay_open, self.mode.common.settings.get('public_mode'), self.mode.common.settings.get('slug'))
self.mode.web.start(self.mode.app.port, self.mode.app.stay_open, self.mode.common.settings.get('public_mode'), self.mode.web.slug)
self.success.emit()
class AutoStartTimer(QtCore.QThread):
"""
Waits for a prescribed time before allowing a share to start
"""
success = QtCore.pyqtSignal()
error = QtCore.pyqtSignal(str)
def __init__(self, mode, canceled=False):
super(AutoStartTimer, self).__init__()
self.mode = mode
self.canceled = canceled
self.mode.common.log('AutoStartTimer', '__init__')
# allow this thread to be terminated
self.setTerminationEnabled()
def run(self):
now = QtCore.QDateTime.currentDateTime()
autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
try:
# Sleep until scheduled time
while autostart_timer_datetime_delta > 0 and self.canceled == False:
time.sleep(0.1)
now = QtCore.QDateTime.currentDateTime()
autostart_timer_datetime_delta = now.secsTo(self.mode.server_status.autostart_timer_datetime)
# Timer has now finished
if self.canceled == False:
self.mode.server_status.server_button.setText(strings._('gui_please_wait'))
self.mode.server_status_label.setText(strings._('gui_status_indicator_share_working'))
self.success.emit()
except ValueError as e:
self.error.emit(e.args[0])
return

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} ফাইলটি পড়া যাচ্ছে না।",
"no_available_port": "Onion সার্ভিস চালু করার জন্য কোন পোর্ট পাওয়া যাচ্ছে না",
"other_page_loaded": "এড্রেস লোড হয়েছে",
"close_on_timeout": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ",
"close_on_autostop_timer": "বন্ধ করা হয়েছে কারণ অটো-স্টপ টাইমার এর সময় শেষ",
"closing_automatically": "ট্রান্সফার শেষ তাই থেমে যাওয়া হলো",
"timeout_download_still_running": "",
"timeout_upload_still_running": "",
@ -26,7 +26,7 @@
"systray_upload_started_message": "",
"help_local_only": "Tor ব্যবহার করবে না (শুধুমাত্র ডেভেলপারদের জন্য)",
"help_stay_open": "ফাইলগুলো পাঠানো হয়ে গেলেও শেয়ার করা থামিও না",
"help_shutdown_timeout": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও",
"help_autostop_timer": "নির্দিষ্ট সেকেন্ডের পর শেয়ার করা বন্ধ করে দিও",
"help_stealth": "ক্লায়েন্ট অনুমোদন ব্যবহার করুন (উন্নততর)",
"help_receive": "কোনকিছু শেয়ার না করে শুধু গ্রহণ করবে",
"help_debug": "OnionShare-এর এররগুলো stdout-এ দেখাও, আর ওয়েব এররগুলো ডিস্কে লগ করো",
@ -38,12 +38,12 @@
"gui_choose_items": "পছন্দ করুন",
"gui_share_start_server": "শেয়ার করা শুরু করো",
"gui_share_stop_server": "শেয়ার করা বন্ধ করো",
"gui_share_stop_server_shutdown_timeout": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
"gui_share_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন ",
"gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন ",
"gui_receive_stop_server_shutdown_timeout": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি) ",
"gui_receive_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_share_stop_server_autostop_timer": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
"gui_share_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন",
"gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন",
"gui_receive_stop_server_autostop_timer": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি)",
"gui_receive_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_copy_url": "এড্রেস কপি করো",
"gui_copy_hidservauth": "HidServAuth কপি করো",
"gui_downloads": "",
@ -105,71 +105,71 @@
"gui_settings_button_save": "সেভ",
"gui_settings_button_cancel": "বাতিল",
"gui_settings_button_help": "সাহায্য",
"gui_settings_shutdown_timeout_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
"gui_settings_shutdown_timeout": "শেয়ার বন্ধ করুন:",
"settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় । ",
"gui_settings_autostop_timer_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
"gui_settings_autostop_timer": "শেয়ার বন্ধ করুন:",
"settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় ।",
"settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন চলমান?",
"settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না । ",
"settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না । ",
"settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়? ",
"settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।",
"settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না ।",
"settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়?",
"settings_error_missing_password": "টর কন্ট্রোলার সাথে সংযুক্ত, কিন্তু তা প্রমাণীকরণ একটি পাসওয়ার্ড প্রয়োজন.",
"settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি। ",
"settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি।",
"settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি ব্যবহার করে উইন্ডোজ বা ম্যাকোসে ডেভেলপার মোডে কাজ করে না।",
"settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো আপনি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা একটি ভুল সিস্টেম ঘড়ি আছে?",
"settings_error_bundled_tor_broken": "ব্যাকগ্রাউন্ডে OnionShare টর এর সাথে সংযুক্ত নয়:\n\n\n{}",
"settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\n\nOnion Services সেবা সমর্থন করে: {}.\n\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\n\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} । ",
"error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {} ",
"settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\nOnion Services সেবা সমর্থন করে: {}.\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} ।",
"error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {}",
"error_tor_protocol_error_unknown": "টর-এ একটি অজানা ত্রুটি আছে",
"error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত ",
"connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে ",
"update_available": "",
"update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '...",
"error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত",
"connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে",
"update_available": "নতুন OnionShare বের হয়েছে । এটি পেতে এখানে <a href='{}'>ক্লিক করুন</a> । <br><br>আপনি {} এবং সাম্প্রতিকতম {} ব্যবহার করছেন ।",
"update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '",
"update_error_invalid_latest_version": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: হয়তো আপনি টর-এর সাথে সংযুক্ত নন, অথবা OnionShare ওয়েবসাইট বন্ধ আছে?",
"update_not_available": "আপনি সর্বশেষ OnionShare চালাচ্ছেন ।",
"gui_tor_connection_ask": "টর থেকে সংযোগ সাজাতে সেটিংস খুলুন?",
"gui_tor_connection_ask_open_settings": "হ্যাঁ",
"gui_tor_connection_ask_quit": "প্রস্থান করুন",
"gui_tor_connection_error_settings": " কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
"gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন । ",
"gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন । ",
"gui_server_started_after_timeout": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন. ",
"gui_server_timeout_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন. ",
"share_via_onionshare": "এটি OnionShare ",
"gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন ",
"gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন ",
"gui_share_url_description": "",
"gui_receive_url_description": "",
"gui_url_label_persistent": "",
"gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না । ",
"gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে. ",
"gui_url_label_onetime_and_persistent": "",
"gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত ",
"gui_status_indicator_share_working": "শুরু...",
"gui_tor_connection_error_settings": "কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
"gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন ।",
"gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন ।",
"gui_server_started_after_autostop_timer": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন.",
"gui_server_autostop_timer_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন.",
"share_via_onionshare": "এটি OnionShare",
"gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন",
"gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন",
"gui_share_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার ফাইলগুলি <b>ডাউনলোড</b> করতে পারে:<img src='{}' />",
"gui_receive_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার কম্পিউটারে ফাইলগুলি <b>আপলোড</b> করতে পারে:<img src='{}' />",
"gui_url_label_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
"gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।",
"gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে.",
"gui_url_label_onetime_and_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
"gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত",
"gui_status_indicator_share_working": "শুরু",
"gui_status_indicator_share_started": "শেয়ারিং",
"gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত ",
"gui_status_indicator_receive_working": "শুরু... ",
"gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত",
"gui_status_indicator_receive_working": "শুরু",
"gui_status_indicator_receive_started": "গ্রহণ",
"gui_file_info": "{} ফাইল, {}",
"gui_file_info_single": "{} ফাইল, {}",
"history_in_progress_tooltip": "{} অগ্রসর হচ্ছে ",
"history_completed_tooltip": "{} সম্পূর্ণ\n",
"history_in_progress_tooltip": "{} অগ্রসর হচ্ছে",
"history_completed_tooltip": "{} সম্পূর্ণ",
"info_in_progress_uploads_tooltip": "",
"info_completed_uploads_tooltip": "",
"error_cannot_create_downloads_dir": "",
"receive_mode_downloads_dir": "",
"receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস । ",
"receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।",
"gui_receive_mode_warning": "গ্রহণ মোডে লোকজন আপনার কম্পিউটারে ফাইলগুলো আপলোড করতে দেয় । <br><br><b>আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।</b>",
"receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে ",
"receive_mode_received_file": "প্রাপ্ত: {} ",
"gui_mode_share_button": "ফাইলগুলো শেয়ার করুন ",
"gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে ",
"gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে ",
"receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে",
"receive_mode_received_file": "প্রাপ্ত: {}",
"gui_mode_share_button": "ফাইলগুলো শেয়ার করুন",
"gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে",
"gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে",
"gui_settings_downloads_label": "",
"gui_settings_downloads_button": "দেখা",
"gui_settings_public_mode_checkbox": "সর্বজনীন মোড ",
"gui_settings_public_mode_checkbox": "সর্বজনীন মোড",
"systray_close_server_title": "",
"systray_close_server_message": "",
"systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে ",
"systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে",
"systray_download_page_loaded_message": "",
"systray_upload_page_loaded_message": "",
"gui_uploads": "",
@ -179,18 +179,18 @@
"gui_upload_finished_range": "",
"gui_upload_finished": "",
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {} ",
"gui_settings_language_label": "পছন্দনীয় ভাষা ",
"gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন. ",
"gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {}",
"gui_settings_language_label": "পছন্দনীয় ভাষা",
"gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন.",
"gui_add_files": "ফাইল যোগ করো",
"gui_add_folder": "ফোল্ডার যোগ করো",
"gui_settings_onion_label": "Onion সেটিংস",
"gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন ",
"error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {} ",
"receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {} ",
"gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন ",
"gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন",
"error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {}",
"receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {}",
"gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন",
"gui_settings_data_dir_browse_button": "ব্রাউজ",
"systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে ",
"systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে",
"systray_share_started_title": "শেয়ারিং শুরু করা হয়েছে",
"systray_share_completed_title": "শেয়ারিং সম্পূর্ণ হয়েছে",
"systray_share_completed_message": "ফাইল পাঠানো শেষ হয়েছে",
@ -200,5 +200,17 @@
"systray_receive_started_message": "কেউ আপনার কাছে ফাইল পাঠাচ্ছে",
"gui_all_modes_history": "ইতিহাস",
"gui_all_modes_clear_history": "সব পরিষ্কার করুন",
"gui_all_modes_transfer_started": "{} শুরু হয়েছে"
"gui_all_modes_transfer_started": "{} শুরু হয়েছে",
"systray_share_started_message": "কাউকে ফাইল পাঠাতে শুরু",
"gui_all_modes_transfer_finished_range": "স্থানান্তরিত হয়েছে {} - {}",
"gui_all_modes_transfer_finished": "স্থানান্তরিত {}",
"gui_all_modes_transfer_canceled_range": "বাতিলকৃত {} - {}",
"gui_all_modes_transfer_canceled": "বাতিলকৃত {}",
"gui_all_modes_progress_complete": "%p%, {0: সে} অতিক্রান্ত হয়েছে ।",
"gui_all_modes_progress_starting": "{0:সে}, %p% (গণনা করা হচ্ছে)",
"gui_all_modes_progress_eta": "{0:সে}, ইটিএ: {1: সে}, %p%",
"gui_share_mode_no_files": "এখনও কোন ফাইল পাঠানো হয়নি",
"gui_share_mode_autostop_timer_waiting": "প্রেরণ শেষ করার জন্য অপেক্ষা করছে",
"gui_receive_mode_no_files": "কোন ফাইল এখনও প্রাপ্ত হয়নি",
"gui_receive_mode_autostop_timer_waiting": "প্রাপ্তির শেষ পর্যন্ত অপেক্ষা করছে"
}

View File

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} no és un arxiu llegible.",
"no_available_port": "No s'ha pogut trobar un port disponible per començar el servei onion",
"other_page_loaded": "Adreça carregada",
"close_on_timeout": "S'ha aturat perquè s'ha acabat el temps d'espera",
"close_on_autostop_timer": "S'ha aturat perquè s'ha acabat el temps d'espera",
"closing_automatically": "S'ha aturat perquè ha acabat la transferència",
"timeout_download_still_running": "S'està esperant que acabi la descàrrega",
"large_filesize": "Compte: La transferència d'arxius molt grans podria trigar hores",
@ -25,7 +25,7 @@
"systray_upload_started_message": "Algú ha començat a pujar arxius al teu ordinador",
"help_local_only": "No facis servir Tor (només per a desenvolupament)",
"help_stay_open": "Mantingues obert el servei després d'enviar els arxius",
"help_shutdown_timeout": "Deixa de compartir al cap de tants segons",
"help_autostop_timer": "Deixa de compartir al cap de tants segons",
"help_stealth": "Fes servir autorització de client (avançat)",
"help_receive": "Rep recursos en comptes d'enviar-los",
"help_debug": "Envia els errors d'OnionShare a stdout i els errors web al disc",
@ -37,12 +37,12 @@
"gui_choose_items": "Escull",
"gui_share_start_server": "Comparteix",
"gui_share_stop_server": "Deixa de compartir",
"gui_share_stop_server_shutdown_timeout": "Deixa de compartir (queden {}s)",
"gui_share_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}",
"gui_share_stop_server_autostop_timer": "Deixa de compartir (queden {}s)",
"gui_share_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
"gui_receive_start_server": "Inicia en mode de recepció",
"gui_receive_stop_server": "Atura el mode de recepció",
"gui_receive_stop_server_shutdown_timeout": "Atura el mode de recepció (queden {}s)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "El temporitzador acaba a {}",
"gui_receive_stop_server_autostop_timer": "Atura el mode de recepció (queden {}s)",
"gui_receive_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
"gui_copy_url": "Copia l'adreça",
"gui_copy_hidservauth": "Copia el HidServAuth",
"gui_downloads": "Historial de descàrregues",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Desa",
"gui_settings_button_cancel": "Canceŀla",
"gui_settings_button_help": "Ajuda",
"gui_settings_shutdown_timeout_checkbox": "Posa un temporitzador d'aturada",
"gui_settings_shutdown_timeout": "Atura a:",
"gui_settings_autostop_timer_checkbox": "Posa un temporitzador d'aturada",
"gui_settings_autostop_timer": "Atura a:",
"settings_error_unknown": "No s'ha pogut connectar a Tor perquè la configuració és inconsistent.",
"settings_error_automatic": "No s'ha pogut connectar al controlador de Tor. Tens el navegador de Tor arrencat? (el pots descarregar a torproject.org)",
"settings_error_socket_port": "No s'ha pogut establir la connexió al controlador de Tor a {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "Prova de canviar la configuració de com OnionShare es connecta a la xarxa Tor.",
"gui_tor_connection_canceled": "No s'ha pogut establir la connexió amb la xarxa Tor.\n\nAssegura't que tens connexió a internet, torna a obrir OnionShare i prepara la connexió a Tor.",
"gui_tor_connection_lost": "S'ha perdut la connexió amb Tor.",
"gui_server_started_after_timeout": "El temporitzador ha acabat abans que s'iniciés el servidor.\nTorna a compartir-ho.",
"gui_server_timeout_expired": "El temporitzador ja s'ha acabat.\nReinicia'l per a poder compartir.",
"gui_server_started_after_autostop_timer": "El temporitzador ha acabat abans que s'iniciés el servidor.\nTorna a compartir-ho.",
"gui_server_autostop_timer_expired": "El temporitzador ja s'ha acabat.\nReinicia'l per a poder compartir.",
"share_via_onionshare": "Comparteix-ho amb OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic",
"gui_save_private_key_checkbox": "Fes servir una adreça persistent",
@ -211,7 +211,7 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (s'està calculant)",
"gui_all_modes_progress_eta": "{0:s}, Temps aproximat: {1:s}, %p%",
"gui_share_mode_no_files": "Encara no s'han enviat fitxers",
"gui_share_mode_timeout_waiting": "S'està acabant d'enviar",
"gui_share_mode_autostop_timer_waiting": "S'està acabant d'enviar",
"gui_receive_mode_no_files": "Encara no s'ha rebut res",
"gui_receive_mode_timeout_waiting": "S'està acabant de rebre"
"gui_receive_mode_autostop_timer_waiting": "S'està acabant de rebre"
}

View File

@ -74,9 +74,9 @@
"systray_download_canceled_message": "Uživatel přerušil stahování souboru",
"systray_upload_started_title": "Začalo nahrávání pomocí OnionShare",
"systray_upload_started_message": "Někdo právě začal nahrávat soubory na váš počítač",
"gui_share_stop_server_shutdown_timeout": "Zastavit sdílení ({}s zbývá)",
"gui_share_stop_server_autostop_timer": "Zastavit sdílení ({}s zbývá)",
"gui_receive_start_server": "Spustit mód přijímání",
"gui_receive_stop_server": "Zastavit přijímání",
"gui_receive_stop_server_shutdown_timeout": "Zastavit mód přijímání ({}s zbývá)",
"gui_receive_stop_server_autostop_timer": "Zastavit mód přijímání ({}s zbývá)",
"gui_copied_hidservauth_title": "Zkopírovaný HidServAuth token"
}

View File

@ -8,7 +8,7 @@
"not_a_readable_file": "{0:s} er ikke en læsbar fil.",
"no_available_port": "Kunne ikke finde en tilgængelig port til at starte onion-tjenesten",
"other_page_loaded": "Adresse indlæst",
"close_on_timeout": "Stoppede fordi timer med autostop løb ud",
"close_on_autostop_timer": "Stoppede fordi timer med autostop løb ud",
"closing_automatically": "Stoppede fordi overførslen er færdig",
"timeout_download_still_running": "Venter på at download skal blive færdig",
"large_filesize": "Advarsel: Det kan tage timer at sende en stor deling",
@ -21,7 +21,7 @@
"systray_download_canceled_message": "Brugeren annullerede downloaden",
"help_local_only": "Brug ikke Tor (kun til udvikling)",
"help_stay_open": "Fortsæt deling efter filerne er blevet sendt",
"help_shutdown_timeout": "Stop deling efter et vist antal sekunder",
"help_autostop_timer": "Stop deling efter et vist antal sekunder",
"help_stealth": "Brug klientautentifikation (avanceret)",
"help_debug": "Log OnionShare-fejl til stdout, og webfejl til disk",
"help_filename": "Liste over filer eller mapper som skal deles",
@ -83,7 +83,7 @@
"gui_settings_button_save": "Gem",
"gui_settings_button_cancel": "Annuller",
"gui_settings_button_help": "Hjælp",
"gui_settings_shutdown_timeout": "Stop delingen ved:",
"gui_settings_autostop_timer": "Stop delingen ved:",
"settings_saved": "Indstillinger gemt til {}",
"settings_error_unknown": "Kan ikke oprette forbindelse til Tor-kontroller da dine indstillingerne ikke giver mening.",
"settings_error_automatic": "Kunne ikke oprette forbindelse til Tor-kontrolleren. Kører Tor Browser (tilgængelige fra torproject.org) i baggrunden?",
@ -108,8 +108,8 @@
"gui_tor_connection_error_settings": "Prøv at ændre måden hvorpå OnionShare opretter forbindelse til Tor-netværket, i indstillingerne.",
"gui_tor_connection_canceled": "Kunne ikke oprette forbindelse til Tor.\n\nSørg for at du har forbindelse til internettet, og åbn herefter OnionShare igen for at opsætte dens forbindelse til Tor.",
"gui_tor_connection_lost": "Der er ikke oprettet forbindelse til Tor.",
"gui_server_started_after_timeout": "Timeren med autostop løb ud inden serveren startede.\nOpret venligst en ny deling.",
"gui_server_timeout_expired": "Timeren med autostop er allerede løbet ud.\nOpdater den venligst for at starte deling.",
"gui_server_started_after_autostop_timer": "Timeren med autostop løb ud inden serveren startede.\nOpret venligst en ny deling.",
"gui_server_autostop_timer_expired": "Timeren med autostop er allerede løbet ud.\nOpdater den venligst for at starte deling.",
"share_via_onionshare": "Del via OnionShare",
"gui_save_private_key_checkbox": "Brug en vedvarende adresse",
"gui_copied_url_title": "Kopierede OnionShare-adresse",
@ -117,7 +117,7 @@
"gui_quit_title": "Klap lige hesten",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Brug indbyggede meek_lite (Azure) udskiftelige transporter",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Brug indbyggede meek_lite (Azure) udskiftelige transporter (kræver obfs4proxy)",
"gui_settings_shutdown_timeout_checkbox": "Brug timer med autostop",
"gui_settings_autostop_timer_checkbox": "Brug timer med autostop",
"gui_url_label_persistent": "Delingen stopper ikke automatisk.<br><br>Hver efterfølgende deling bruger den samme adresse igen (hvis du vil bruge engangsadresser, så deaktivér \"Brug vedvarende adresse\", i indstillingerne).",
"gui_url_label_stay_open": "Delingen stopper ikke automatisk.",
"gui_url_label_onetime": "Delingen stopper efter den første download.",
@ -131,17 +131,17 @@
"systray_upload_started_title": "OnionShare-upload begyndte",
"systray_upload_started_message": "En bruger begyndte at uploade filer til din computer",
"help_receive": "Modtager aktier i stedet for at sende dem",
"gui_share_stop_server_shutdown_timeout": "Stop deling ({}s tilbage)",
"gui_share_stop_server_autostop_timer": "Stop deling ({}s tilbage)",
"gui_receive_quit_warning": "Du er i færd med at modtage filer. Er du sikker på du ønsker at stoppe med at OnionShare?",
"gui_settings_whats_this": "<a href='{0:s}'>Hvad er dette?</a>",
"gui_settings_whats_this": "<a href='{0:s}'>Hvad er det?</a>",
"gui_settings_general_label": "Generel opsætning",
"gui_upload_in_progress": "Upload begyndte {}",
"gui_download_in_progress": "Download begyndte {}",
"gui_share_stop_server_shutdown_timeout_tooltip": "Timer med autostop slutter ved {}",
"gui_share_stop_server_autostop_timer_tooltip": "Timer med autostop slutter ved {}",
"gui_receive_start_server": "Start modtagetilstand",
"gui_receive_stop_server": "Stop modtagetilstand",
"gui_receive_stop_server_shutdown_timeout": "Stop modtagetilstand ({}s tilbage)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Timer med autostop slutter ved {}",
"gui_receive_stop_server_autostop_timer": "Stop modtagetilstand ({}s tilbage)",
"gui_receive_stop_server_autostop_timer_tooltip": "Timer med autostop slutter ved {}",
"gui_no_downloads": "Ingen downloads endnu",
"error_tor_protocol_error_unknown": "Der opstod en ukendt fejl med Tor",
"error_invalid_private_key": "Den private nøgletype understøttes ikke",
@ -211,9 +211,9 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (udregner)",
"gui_all_modes_progress_eta": "{0:s}, anslået ankomsttidspunkt: {1:s}, %p%",
"gui_share_mode_no_files": "Der er endnu ikke sendt nogen filer",
"gui_share_mode_timeout_waiting": "Venter på at blive færdig med at sende",
"gui_share_mode_autostop_timer_waiting": "Venter på at blive færdig med at sende",
"gui_receive_mode_no_files": "Der er endnu ikke modtaget nogen filer",
"gui_receive_mode_timeout_waiting": "Venter på at blive færdig med at modtage",
"gui_receive_mode_autostop_timer_waiting": "Venter på at blive færdig med at modtage",
"gui_all_modes_transfer_canceled_range": "Annullerede {} - {}",
"gui_all_modes_transfer_canceled": "Annullerede {}",
"gui_settings_onion_label": "Onion-indstillinger"

View File

@ -7,7 +7,7 @@
"closing_automatically": "Gestoppt, da der Download erfolgreich beendet wurde",
"large_filesize": "Warnung: Das Hochladen von großen Dateien kann Stunden dauern",
"help_local_only": "Tor nicht verwenden (nur für Entwicklung)",
"help_stay_open": "Den OnionService nicht anhalten nachdem ein Download beendet wurde",
"help_stay_open": "Den Server weiterlaufen lassen, nachdem die Dateien verschickt wurden",
"help_debug": "Schreibe Fehler von OnionShare nach stdout und Webfehler auf die Festplatte",
"help_filename": "Liste der zu teilenden Dateien oder Ordner",
"gui_drag_and_drop": "Dateien und Ordner hierher ziehen\num sie zu teilen",
@ -27,7 +27,7 @@
"gui_settings_button_save": "Speichern",
"gui_settings_button_cancel": "Abbrechen",
"gui_settings_button_help": "Hilfe",
"gui_settings_shutdown_timeout": "Stoppe den Server bei:",
"gui_settings_autostop_timer": "Stoppe den Server bei:",
"systray_download_started_title": "OnionShare Download begonnen",
"systray_download_started_message": "Ein Nutzer hat begonnen, deine Dateien herunterzuladen",
"systray_download_completed_title": "OnionShare Download beendet",
@ -42,7 +42,7 @@
"gui_settings_window_title": "Eintellungen",
"gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}",
"gui_settings_autoupdate_timestamp_never": "Niemals",
"gui_settings_close_after_first_download_option": "Server nach dem ersten Download stoppen",
"gui_settings_close_after_first_download_option": "Server nach Download der Dateien stoppen",
"gui_settings_connection_type_label": "Wie soll sich OnionShare mit Tor verbinden?",
"config_onion_service": "Richte den Onionservice auf Port {0:d} ein.",
"give_this_url_stealth": "Gib dem Empfänger diese URL und die HidServAuth-Zeile:",
@ -50,13 +50,13 @@
"give_this_url_receive_stealth": "Gib diese URL und die HidServAuth-Zeile an den Sender:",
"not_a_readable_file": "{0:s} kann nicht gelesen werden.",
"no_available_port": "Es konnte kein freier Port gefunden werden, um den Onionservice zu starten",
"close_on_timeout": "Angehalten da der auto-stop Timer abgelaufen ist",
"close_on_autostop_timer": "Angehalten da der auto-stop Timer abgelaufen ist",
"systray_upload_started_title": "OnionShare Upload wurde gestartet",
"systray_upload_started_message": "Ein Benutzer hat begonnen, Dateien auf deinen Computer hochzuladen",
"help_shutdown_timeout": "Den Server nach einer bestimmten Zeit anhalten (in Sekunden)",
"help_autostop_timer": "Den Server nach einer bestimmten Zeit anhalten (in Sekunden)",
"help_receive": "Empfange Dateien anstatt sie zu senden",
"gui_share_stop_server_shutdown_timeout": "Server stoppen (läuft noch {} Sekunden)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Zeit läuft in {} Sekunden ab",
"gui_share_stop_server_autostop_timer": "Server stoppen (läuft noch {} Sekunden)",
"gui_share_stop_server_autostop_timer_tooltip": "Zeit läuft in {} Sekunden ab",
"gui_settings_connection_type_control_port_option": "Verbinde über den control port",
"gui_settings_connection_type_socket_file_option": "Verbinde über ein socket file",
"gui_settings_control_port_label": "Control port",
@ -70,7 +70,7 @@
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Benutze eingebaute meek_lite (Azure) pluggable transports (benötigt obfs4proxy)",
"gui_settings_tor_bridges_custom_radio_option": "Benutze benutzerdefinierte bridges",
"gui_settings_tor_bridges_custom_label": "Bridges findest du unter <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
"gui_settings_shutdown_timeout_checkbox": "Stoppe nach einer bestimmten Zeit",
"gui_settings_autostop_timer_checkbox": "Stoppe nach einer bestimmten Zeit",
"settings_error_auth": "Mit {}:{} verbinden aber nicht authentifiziert. Eventuell handelt es sich nicht um einen Tor controller?",
"settings_error_missing_password": "Mit dem Tor controller verbunden, aber er benötigt ein Passwort zur Authentifizierung.",
"connecting_to_tor": "Verbinde mit dem Tornetzwerk",
@ -79,8 +79,8 @@
"help_stealth": "Nutze Klientauthorisierung (fortgeschritten)",
"gui_receive_start_server": "Starte den Empfangsmodus",
"gui_receive_stop_server": "Stoppe den Empfangsmodus",
"gui_receive_stop_server_shutdown_timeout": "Stoppe den Empfängermodus (stoppt automatisch in {} Sekunden)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Zeit läuft in {} ab",
"gui_receive_stop_server_autostop_timer": "Stoppe den Empfängermodus (stoppt automatisch in {} Sekunden)",
"gui_receive_stop_server_autostop_timer_tooltip": "Zeit läuft in {} ab",
"gui_no_downloads": "Bisher keine Downloads",
"gui_copied_url_title": "OnionShare-Adresse kopiert",
"gui_copied_hidservauth": "HidServAuth-Zeile in die Zwischenablage kopiert",
@ -174,8 +174,8 @@
"gui_settings_stealth_hidservauth_string": "Da dein privater Schlüssel jetzt gespeichert wurde um ihn später erneut zu nutzen, kannst du jetzt\nklicken um deinen HidServAuth zu kopieren.",
"gui_settings_connection_type_bundled_option": "Die integrierte Tor version von OnionShare nutzen",
"settings_error_socket_file": "Kann nicht mittels des Tor Controller Socket {} verbinden.",
"gui_server_started_after_timeout": "Die Zeit ist abgelaufen bevor der Server gestartet werden konnte.\nBitte erneut etwas teilen.",
"gui_server_timeout_expired": "Der Timer ist bereits abgelaufen.\nBearbeite diesen um das Teilen zu starten.",
"gui_server_started_after_autostop_timer": "Die Zeit ist abgelaufen bevor der Server gestartet werden konnte.\nBitte erneut etwas teilen.",
"gui_server_autostop_timer_expired": "Der Timer ist bereits abgelaufen.\nBearbeite diesen um das Teilen zu starten.",
"gui_status_indicator_share_stopped": "Bereit zum teilen",
"history_in_progress_tooltip": "{} läuft",
"receive_mode_upload_starting": "Hochladen von insgesamt {} beginnt",
@ -197,5 +197,21 @@
"systray_share_completed_title": "Freigabe erfolgt",
"systray_share_completed_message": "Dateien erfolgreich versandt",
"systray_share_canceled_title": "Freigabe abgebrochen",
"systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen"
"systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen",
"systray_receive_started_title": "Empfange",
"systray_receive_started_message": "Jemand sendet dir Dateien",
"gui_all_modes_history": "Verlauf",
"gui_all_modes_clear_history": "Alle löschen",
"gui_all_modes_transfer_started": "{} gestartet",
"gui_all_modes_transfer_finished_range": "{} - {} übertragen",
"gui_all_modes_transfer_finished": "{} übertragen",
"gui_all_modes_transfer_canceled_range": "{} - {} abgebrochen",
"gui_all_modes_transfer_canceled": "{} abgebrochen",
"gui_all_modes_progress_starting": "{0:s}, %p% (berechne)",
"gui_share_mode_no_files": "Bisher keine Dateien versendet",
"gui_share_mode_autostop_timer_waiting": "Warte auf Abschluss der Sendung",
"gui_receive_mode_no_files": "Bisher keine Dateien empfangen",
"gui_receive_mode_autostop_timer_waiting": "Warte auf Abschluss des Empfangs",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_all_modes_progress_complete": "%p%, {0:s} vergangen."
}

View File

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

View File

@ -5,17 +5,24 @@
"give_this_url_stealth": "Give this address and HidServAuth line to the recipient:",
"give_this_url_receive": "Give this address to the sender:",
"give_this_url_receive_stealth": "Give this address and HidServAuth to the sender:",
"give_this_scheduled_url_share": "Give this address to your recipient, and tell them it won't be accessible until: {}",
"give_this_scheduled_url_receive": "Give this address to your sender, and tell them it won't be accessible until: {}",
"give_this_scheduled_url_share_stealth": "Give this address and HidServAuth line to your recipient, and tell them it won't be accessible until: {}",
"give_this_scheduled_url_receive_stealth": "Give this address and HidServAuth lineto your sender, and tell them it won't be accessible until: {}",
"server_started": "Server started",
"ctrlc_to_stop": "Press Ctrl+C to stop the server",
"not_a_file": "{0:s} is not a valid file.",
"not_a_readable_file": "{0:s} is not a readable file.",
"no_available_port": "Could not find an available port to start the onion service",
"other_page_loaded": "Address loaded",
"close_on_timeout": "Stopped because auto-stop timer ran out",
"close_on_autostop_timer": "Stopped because auto-stop timer ran out",
"closing_automatically": "Stopped because transfer is complete",
"large_filesize": "Warning: Sending a large share could take hours",
"help_local_only": "Don't use Tor (only for development)",
"help_stay_open": "Continue sharing after files have been sent",
"help_shutdown_timeout": "Stop sharing after a given amount of seconds",
"help_autostart_timer": "Schedule this share to start N seconds from now",
"help_autostop_timer": "Stop sharing after a given amount of seconds",
"help_connect_timeout": "Give up connecting to Tor after a given amount of seconds (default: 120)",
"help_stealth": "Use client authorization (advanced)",
"help_receive": "Receive shares instead of sending them",
"help_debug": "Log OnionShare errors to stdout, and web errors to disk",
@ -29,12 +36,12 @@
"gui_choose_items": "Choose",
"gui_share_start_server": "Start sharing",
"gui_share_stop_server": "Stop sharing",
"gui_share_stop_server_shutdown_timeout": "Stop Sharing ({}s remaining)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}",
"gui_share_stop_server_autostop_timer": "Stop Sharing ({})",
"gui_stop_server_autostop_timer_tooltip": "Auto-stop timer ends at {}",
"gui_start_server_autostart_timer_tooltip": "Auto-start timer ends at {}",
"gui_receive_start_server": "Start Receive Mode",
"gui_receive_stop_server": "Stop Receive Mode",
"gui_receive_stop_server_shutdown_timeout": "Stop Receive Mode ({}s remaining)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer ends at {}",
"gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({}s remaining)",
"gui_copy_url": "Copy Address",
"gui_copy_hidservauth": "Copy HidServAuth",
"gui_canceled": "Canceled",
@ -42,6 +49,7 @@
"gui_copied_url": "OnionShare address copied to clipboard",
"gui_copied_hidservauth_title": "Copied HidServAuth",
"gui_copied_hidservauth": "HidServAuth line copied to clipboard",
"gui_waiting_to_start": "Scheduled to start in {}. Click to cancel.",
"gui_please_wait": "Starting… Click to cancel.",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Not so fast",
@ -92,8 +100,10 @@
"gui_settings_button_save": "Save",
"gui_settings_button_cancel": "Cancel",
"gui_settings_button_help": "Help",
"gui_settings_shutdown_timeout_checkbox": "Use auto-stop timer",
"gui_settings_shutdown_timeout": "Stop the share at:",
"gui_settings_autostop_timer_checkbox": "Use auto-stop timer",
"gui_settings_autostop_timer": "Stop the share at:",
"gui_settings_autostart_timer_checkbox": "Use auto-start timer",
"gui_settings_autostart_timer": "Start the share at:",
"settings_error_unknown": "Can't connect to Tor controller because your settings don't make sense.",
"settings_error_automatic": "Could not connect to the Tor controller. Is Tor Browser (available from torproject.org) running in the background?",
"settings_error_socket_port": "Can't connect to the Tor controller at {}:{}.",
@ -119,8 +129,10 @@
"gui_tor_connection_error_settings": "Try changing how OnionShare connects to the Tor network in the settings.",
"gui_tor_connection_canceled": "Could not connect to Tor.\n\nEnsure you are connected to the Internet, then re-open OnionShare and set up its connection to Tor.",
"gui_tor_connection_lost": "Disconnected from Tor.",
"gui_server_started_after_timeout": "The auto-stop timer ran out before the server started.\nPlease make a new share.",
"gui_server_timeout_expired": "The auto-stop timer already ran out.\nPlease update it to start sharing.",
"gui_server_started_after_autostop_timer": "The auto-stop timer ran out before the server started. Please make a new share.",
"gui_server_autostop_timer_expired": "The auto-stop timer already ran out. Please update it to start sharing.",
"gui_server_autostart_timer_expired": "The scheduled time has already passed. Please update it to start sharing.",
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "The auto-stop time can't be the same or earlier than the auto-start time. Please update it to start sharing.",
"share_via_onionshare": "OnionShare it",
"gui_connect_to_tor_for_onion_settings": "Connect to Tor to see onion service settings",
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses",
@ -133,9 +145,11 @@
"gui_url_label_onetime_and_persistent": "This share will not auto-stop.<br><br>Every subsequent share will reuse the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)",
"gui_status_indicator_share_stopped": "Ready to share",
"gui_status_indicator_share_working": "Starting…",
"gui_status_indicator_share_scheduled": "Scheduled…",
"gui_status_indicator_share_started": "Sharing",
"gui_status_indicator_receive_stopped": "Ready to receive",
"gui_status_indicator_receive_working": "Starting…",
"gui_status_indicator_receive_scheduled": "Scheduled…",
"gui_status_indicator_receive_started": "Receiving",
"gui_file_info": "{} files, {}",
"gui_file_info_single": "{} file, {}",
@ -178,7 +192,12 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (calculating)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "No Files Sent Yet",
"gui_share_mode_timeout_waiting": "Waiting to finish sending",
"gui_share_mode_autostop_timer_waiting": "Waiting to finish sending",
"gui_receive_mode_no_files": "No Files Received Yet",
"gui_receive_mode_timeout_waiting": "Waiting to finish receiving"
"gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving",
"waiting_for_scheduled_time": "Waiting for the scheduled time before starting...",
"days_first_letter": "d",
"hours_first_letter": "h",
"minutes_first_letter": "m",
"seconds_first_letter": "s"
}

View File

@ -21,10 +21,10 @@
"config_onion_service": "Configurando el servicio cebolla en el puerto {0:d}.",
"give_this_url_stealth": "Dale esta dirección y la línea de HidServAuth a la persona a la que le estás enviando el archivo:",
"no_available_port": "No se pudo iniciar el servicio cebolla porque no había puerto disponible",
"close_on_timeout": "Parado porque el temporizador expiró",
"close_on_autostop_timer": "Parado porque el temporizador expiró",
"timeout_download_still_running": "Esperando a que se complete la descarga",
"large_filesize": "Advertencia: Enviar un archivo tan grande podría llevar horas",
"help_shutdown_timeout": "Dejar de compartir después de una determinada cantidad de segundos",
"help_autostop_timer": "Dejar de compartir después de una determinada cantidad de segundos",
"help_stealth": "Usar autorización de cliente (avanzada)",
"help_config": "Ubicación del archivo de configuración JSON personalizado (opcional)",
"gui_copied_url_title": "Dirección de OnionShare copiada",
@ -60,12 +60,12 @@
"systray_upload_started_title": "Subida OnionShare Iniciada",
"systray_upload_started_message": "Un usuario comenzó a subir archivos a tu computadora",
"help_receive": "Recibir recursos compartidos en lugar de enviarlos",
"gui_share_stop_server_shutdown_timeout": "Dejar de Compartir ({}s restantes)",
"gui_share_stop_server_shutdown_timeout_tooltip": "El temporizador de parada automática termina en {}",
"gui_share_stop_server_autostop_timer": "Dejar de Compartir ({}s restantes)",
"gui_share_stop_server_autostop_timer_tooltip": "El temporizador de parada automática termina en {}",
"gui_receive_start_server": "Iniciar el modo de recepción",
"gui_receive_stop_server": "Detener el modo de recepción",
"gui_receive_stop_server_shutdown_timeout": "Detener el modo de recepción ({}s restantes)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "El temporizador de parada automática termina en {}",
"gui_receive_stop_server_autostop_timer": "Detener el modo de recepción ({}s restantes)",
"gui_receive_stop_server_autostop_timer_tooltip": "El temporizador de parada automática termina en {}",
"gui_copy_hidservauth": "Copiar HidServAuth",
"gui_no_downloads": "Ninguna Descarga Todavía",
"gui_canceled": "Cancelado",
@ -95,8 +95,8 @@
"gui_tor_connection_error_settings": "Intenta cambiando la forma en que OnionShare se conecta a la red Tor en tu configuración.",
"gui_tor_connection_canceled": "No se pudo conectar con Tor.\n\nAsegúrate de estar conectado a Internet, luego vuelve a abrir OnionShare y configurar tu conexión a Tor.",
"gui_tor_connection_lost": "Desconectado de Tor.",
"gui_server_started_after_timeout": "El temporizador de parada automática se agotó antes de que se iniciara el servidor.\nPor favor crea una nueva conexión compartida.",
"gui_server_timeout_expired": "El temporizador de parada automática ya se ha agotado.\nPor favor, actualízalo para comenzar a compartir.",
"gui_server_started_after_autostop_timer": "El temporizador de parada automática se agotó antes de que se iniciara el servidor.\nPor favor crea una nueva conexión compartida.",
"gui_server_autostop_timer_expired": "El temporizador de parada automática ya se ha agotado.\nPor favor, actualízalo para comenzar a compartir.",
"share_via_onionshare": "Compártelo con OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Usar direcciones antiguas",
"gui_save_private_key_checkbox": "Usar una dirección persistente",
@ -155,8 +155,8 @@
"gui_settings_button_save": "Guardar",
"gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ayuda",
"gui_settings_shutdown_timeout_checkbox": "Usar temporizador de parada automática",
"gui_settings_shutdown_timeout": "Detener carpeta compartida en:",
"gui_settings_autostop_timer_checkbox": "Usar temporizador de parada automática",
"gui_settings_autostop_timer": "Detener carpeta compartida en:",
"history_in_progress_tooltip": "{} en progreso",
"history_completed_tooltip": "{} completado",
"error_cannot_create_downloads_dir": "No se ha podido crear la carpeta en modo de recepción: {}",
@ -212,9 +212,9 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (calculando)",
"gui_all_modes_progress_eta": "{0:s}, TEA: {1:s}, %p%",
"gui_share_mode_no_files": "No se enviaron archivos todavía",
"gui_share_mode_timeout_waiting": "Esperando a que termine el envío",
"gui_share_mode_autostop_timer_waiting": "Esperando a que termine el envío",
"gui_receive_mode_no_files": "No se recibieron archivos todavía",
"gui_receive_mode_timeout_waiting": "Esperando a que termine la recepción",
"gui_receive_mode_autostop_timer_waiting": "Esperando a que termine la recepción",
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
"gui_all_modes_transfer_canceled": "Cancelado {}",
"gui_settings_onion_label": "Configuración de Onion"

View File

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

View File

@ -1,25 +1,185 @@
{
"preparing_files": "Valmistellaan tiedostoja jaettavaksi.",
"preparing_files": "Pakataan tiedostoja.",
"give_this_url": "Anna tämä URL-osoite vastaanottajalle:",
"ctrlc_to_stop": "Näppäin Ctrl-C pysäyttää palvelimen",
"ctrlc_to_stop": "Pysäytä palvelin painamalla Ctrl+C",
"not_a_file": "{0:s} Ei ole tiedosto.",
"other_page_loaded": "URL-osoite ladattu",
"closing_automatically": "Lataus valmis. Suljetaan automaattisesti",
"large_filesize": "Varoitus: Isojen tiedostojen lähetys saattaa kestää tunteja",
"help_local_only": "Älä käytä Toria: vain ohjelmakehitykseen",
"help_stay_open": "Pidä piilopalvelu käynnissä latauksen jälkeen.",
"help_debug": "Tallentaa virheet levylle",
"closing_automatically": "Lähetys valmis. Suljetaan automaattisesti",
"large_filesize": "Varoitus: Ison tiedoston lähetys saattaa kestää tunteja",
"help_local_only": "Älä käytä Toria (vain kehitykseen)",
"help_stay_open": "Jatka jakoa tiedostojen lähetyksen jälkeen",
"help_debug": "Kirjaa OnionShare virheet stdout:tiin, ja verkko virheet levylle",
"help_filename": "Luettele jaettavat tiedostot tai kansiot",
"gui_drag_and_drop": "Vedä ja pudota\ntiedostot tänne",
"gui_add": "Lisää",
"gui_delete": "Poista",
"gui_choose_items": "Valitse",
"gui_share_start_server": "Käynnistä palvelin",
"gui_share_stop_server": "Pysäytä palvelin",
"gui_share_start_server": "Aloita jakaminen",
"gui_share_stop_server": "Pysäytä jakaminen",
"gui_copy_url": "Kopioi URL-osoite",
"gui_downloads": "Lataukset:",
"gui_canceled": "Peruutettu",
"gui_copied_url": "URL-osoite kopioitu leikepöydälle",
"gui_please_wait": "Odota...",
"zip_progress_bar_format": "Tiivistän tiedostoja: %p%"
"gui_copied_url": "OnionShare-osoite kopioitu leikepöydälle",
"gui_please_wait": "Käynnistyy... Peruuta napsauttamalla.",
"zip_progress_bar_format": "Pakataan: %p%",
"config_onion_service": "Onion-palvelua asetetaan porttiin {0:d}.",
"give_this_url_stealth": "Anna tämä osoite ja HidServAuth rivi vastaanottajalle:",
"give_this_url_receive": "Anna tämä osoite lähettäjälle:",
"give_this_url_receive_stealth": "Anna tämä osoite ja HidServAuth lähettäjälle:",
"not_a_readable_file": "{0:s} ei ole luettava tiedosto.",
"no_available_port": "Vapaata porttia onion palvelulle ei löydetty",
"close_on_autostop_timer": "Pysäytetty koska auto-stop ajastin loppui",
"help_autostop_timer": "Lopeta jakaminen annetun sekunnin kuluttua",
"help_stealth": "Käytä asiakasvaltuutusta (edistynyt)",
"help_receive": "Vastaanota osia niiden lähettämisen sijaan",
"help_config": "Mukautettu JSON-määritystiedoston sijainti (valinnainen)",
"gui_add_files": "Lisää tiedostoja",
"gui_add_folder": "Lisää kansio",
"gui_share_stop_server_autostop_timer": "Lopeta jakaminen({}s jäljellä)",
"gui_share_stop_server_autostop_timer_tooltip": "Auto-stop ajastin loppuu {} jälkeen",
"gui_receive_start_server": "Aloita vastaanotto tila",
"gui_receive_stop_server": "Lopeta vastaanotto tila",
"gui_receive_stop_server_autostop_timer": "Lopeta vastaanotto tila ({}s jäljellä)",
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop ajastin loppuu kello {}",
"gui_copy_hidservauth": "Kopioi HidServAuth",
"gui_copied_url_title": "Kopioi OnionShare osoite",
"gui_copied_hidservauth_title": "HidServAuth kopioitu",
"gui_copied_hidservauth": "HidServAuth rivi kopioitu leikepöydälle",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Ei niin nopeasti",
"gui_share_quit_warning": "Olet lähettämässä tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
"gui_receive_quit_warning": "Olet vastaanottamassa tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
"gui_quit_warning_quit": "Lopeta",
"gui_quit_warning_dont_quit": "Peruuta",
"error_rate_limit": "Joku on tehnyt liian monta väärää yritystä osoitteeseesi, mikä tarkoittaa, että he voisivat yrittää arvata sitä, joten OnionShare on pysäyttänyt palvelimen. Aloita jakaminen uudelleen ja lähetä vastaanottajalle uusi osoite jatkaaksesi.",
"error_stealth_not_supported": "Asiakasvaltuuden käyttämiseen tarvitaan ainakin Tor 0.2.9.1-alpha (tai Tor Browser 6.5) ja python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionSharen käyttö vaatii ainakin Tor 0.2.7.1 ja python3-stem 1.4.0.",
"gui_settings_window_title": "Asetukset",
"gui_settings_whats_this": "<a href='{0:s}'>Mikä tämä on?</a>",
"gui_settings_stealth_option": "Käytä asiakaslupaa",
"gui_settings_stealth_hidservauth_string": "Nyt kun olet tallentanut yksityisen avaimesi uudelleenkäyttöä varten, voit kopioida HidServAuth-osoitteesi napista.",
"gui_settings_autoupdate_label": "Tarkista päivitykset",
"gui_settings_autoupdate_option": "Ilmoita minulle, kun uusi versio on saatavilla",
"gui_settings_autoupdate_timestamp": "Viimeksi tarkistettu: {}",
"gui_settings_autoupdate_timestamp_never": "ei koskaan",
"gui_settings_autoupdate_check_button": "Tarkista päivitykset",
"gui_settings_general_label": "Yleiset asetukset",
"gui_settings_onion_label": "Onion asetukset",
"gui_settings_sharing_label": "Jako asetukset",
"gui_settings_close_after_first_download_option": "Lopeta jakaminen tiedostojen lähetyksen jälkeen",
"gui_settings_connection_type_label": "Miten OnionSharen kuuluisi yhdistää Tor:iin?",
"gui_settings_connection_type_bundled_option": "Käytä OnionShareen sisäänrakennettua Tor versiota",
"gui_settings_connection_type_automatic_option": "Kokeile automaattista konfigurointia Tor-selaimella",
"gui_settings_connection_type_control_port_option": "Yhdistä käyttämällä control porttia",
"gui_settings_connection_type_socket_file_option": "Yhdistä käyttäen socket tiedostoa",
"gui_settings_connection_type_test_button": "Testaa Tor yhteyttä",
"gui_settings_control_port_label": "Control port",
"gui_settings_socket_file_label": "Socket tiedosto",
"gui_settings_socks_label": "SOCKS portti",
"gui_settings_authenticate_label": "Tor todennus asetukset",
"gui_settings_authenticate_no_auth_option": "Ei todentamista, tai evästeiden todentamista",
"gui_settings_authenticate_password_option": "Salasana",
"gui_settings_password_label": "Salasana",
"gui_settings_tor_bridges": "Tor silta-solmu tuki",
"gui_settings_tor_bridges_no_bridges_radio_option": "Älä käytä silta-solmuja",
"gui_settings_tor_bridges_obfs4_radio_option": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
"gui_settings_meek_lite_expensive_warning": "Varoitus: Meek_lite-sillat ovat Tor-projektille erittäin kalliita. <br><br> Käytä niitä vain, jos et pysty muodostamaan yhteyttä suoraan Toriin, obfs4-kuljetusten tai muiden tavallisten silta-solmujen kautta.",
"gui_settings_tor_bridges_custom_radio_option": "Käytä mukautettuja silta-solmuja",
"gui_settings_tor_bridges_custom_label": "Löydät silta-solmut osoitteesta <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
"gui_settings_tor_bridges_invalid": "Mikään lisäämistäsi silta-solmuista ei toiminut\nUudellen tarkista ne tai lisää muita.",
"gui_settings_button_save": "Tallenna",
"gui_settings_button_cancel": "Peruuttaa",
"gui_settings_button_help": "Apua",
"gui_settings_autostop_timer_checkbox": "Käytä auto-stop ajastinta",
"gui_settings_autostop_timer": "Lopeta jakaminen kello:",
"settings_error_unknown": "Ei voi muodostaa yhteyttä Tor-ohjaimeen, koska asetuksesi eivät ole järkeviä.",
"settings_error_automatic": "Tor-ohjaimeen ei voitu muodostaa yhteyttä. Onko Tor Browser (saatavilla osoitteesta torproject.org) avoimena taustalla?",
"settings_error_socket_port": "Ei voi muodostaa yhteyttä Tor-ohjaimeen: {}:{}.",
"settings_error_socket_file": "Ei voi muodostaa yhteyttä Tor-ohjaimeen käyttämällä socket-tiedostoa {}.",
"settings_error_auth": "Yhdistetty osoitteeseen {}:{}, mutta ei voida todentaa. Ehkä tämä ei ole Tor ohjain?",
"settings_error_missing_password": "Yhdistetty Tor ohjaimeen, mutta se vaatii salasanan todentamiseen.",
"settings_error_unreadable_cookie_file": "Yhdistetty tor ohjaimeen, mutta salasana saattaa olla väärä, tai käyttäjä ei saa lukea evästetiedostoa.",
"settings_error_bundled_tor_not_supported": "OnionSharen mukana tulevan Tor version käyttäminen ei toimi Developer-tilassa Windowsissa tai MacOSissa.",
"settings_error_bundled_tor_timeout": "Yhdistäminen Tor:iin kestää lian kauan. Ehkä et ole yhteydessä nettiin, tai järjestelmäsi kello on epätarkka?",
"settings_error_bundled_tor_broken": "OnionShare ei voinut yhdistää Tor:iin taustalla\n{}",
"settings_test_success": "Yhditetty Tor ohjaimeen.\n\nTor versio: {}\nTykee lyhytaikaista onion palvelua: {}.\nTukee asiakas todennusta: {}.\nTukee uuden sukupolven .onion osoitteita: {}.",
"error_tor_protocol_error": "Tor-verkossa tapahtui virhe: {}",
"error_tor_protocol_error_unknown": "Tor-verkossa tapahtui tuntematon virhe",
"error_invalid_private_key": "Tätä yksityisen avaimen tyyppiä ei tueta",
"connecting_to_tor": "Yhdistetään Tor-verkkoon",
"update_available": "Uusi OnionShare version on julkaistu. <a href='{}'>Paina tästä</a> ladataksesi sen.<br><br>Sinulla on versio {} ja uusin version on {}.",
"update_error_check_error": "Päivityksien tarkistaminen epäonnistui: OnionShare-sivusto kertoo, että uusin versio on tunnistamaton '{}'…",
"update_error_invalid_latest_version": "Päivityksien tarkistaminen epäonnistui: Ehkä et ole yhteydessä Tor-verkkoon, tai OnionShare-sivusto on alhaalla?",
"update_not_available": "Sinulla on OnionSharen uusin versio.",
"gui_tor_connection_ask": "Avaa asetukset Tor-yhteyden selvittämiseksi?",
"gui_tor_connection_ask_open_settings": "Kyllä",
"gui_tor_connection_ask_quit": "Lopeta",
"gui_tor_connection_error_settings": "Yritä muuttaa miten OnionShare yhdistää Tor-verkkoon asetuksista.",
"gui_tor_connection_canceled": "Tor-yhteyden muodostus epäonnistui.\n\nVarmista että sinulla on toimiva internet yhteys, jonka jälkeen uudelleen avaa OnionShare ja sen Tor-yhteys.",
"gui_tor_connection_lost": "Tor-yhteys katkaistu.",
"gui_server_started_after_autostop_timer": "Auto-stop ajastin loppui ennen palvelimen käynnistymistä.\nLuo uusi jako.",
"gui_server_autostop_timer_expired": "Auto-stop ajastin loppui jo.\nPäivitä se jaon aloittamiseksi.",
"share_via_onionshare": "OnionShare se",
"gui_connect_to_tor_for_onion_settings": "Yhdistä Tor-verkkoon nähdäksesi onion palvelun asetukset",
"gui_use_legacy_v2_onions_checkbox": "Käytä vanhoja osoitteita",
"gui_save_private_key_checkbox": "Käytä pysyviä osoitteita",
"gui_share_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>ladata</b> tiedostojasi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
"gui_receive_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>lähettää</b>tiedostoja tietokoneellesi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
"gui_url_label_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
"gui_url_label_stay_open": "Tämä jako ei pysähdy automaattisesti.",
"gui_url_label_onetime": "Tämä jako lopetetaan ensimmäisen valmistumisen jälkeen.",
"gui_url_label_onetime_and_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
"gui_status_indicator_share_stopped": "Valmis jakamaan",
"gui_status_indicator_share_working": "Aloitetaan…",
"gui_status_indicator_share_started": "Jakaa",
"gui_status_indicator_receive_stopped": "Valmis vastaanottamaan",
"gui_status_indicator_receive_working": "Vastaanotetaan…",
"gui_status_indicator_receive_started": "Vastaanotetaan",
"gui_file_info": "{} tiedostoa, {}",
"gui_file_info_single": "{} tiedosto, {}",
"history_in_progress_tooltip": "{} meneillään",
"history_completed_tooltip": "{} valmistunut",
"error_cannot_create_data_dir": "OnionShare-tietokansiota ei voitu luoda: {}",
"receive_mode_data_dir": "Sinulle lähetetyt tiedostot löytyvät tästä kansiosta: {}",
"receive_mode_warning": "Varoitus: Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneeseen. Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa vain tiedostot, joihin luotat, tai jos tiedät, mitä teet.",
"gui_receive_mode_warning": "Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneellesi.<br><br><b>Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa asioita vain ihmisiltä, joihin luotat, tai jos tiedät, mitä olet tekemässä. </b>",
"receive_mode_upload_starting": "Lähetys jonka koko on {} alkaa",
"receive_mode_received_file": "Vastaanotetaan: {}",
"gui_mode_share_button": "Jaa Tiedostoja",
"gui_mode_receive_button": "Vastaanota Tiedostoja",
"gui_settings_receiving_label": "Vastaanoton asetukset",
"gui_settings_data_dir_label": "Tallenna tiedostot",
"gui_settings_data_dir_browse_button": "Selaa",
"gui_settings_public_mode_checkbox": "Julkinen tila",
"gui_open_folder_error_nautilus": "Kansiota ei voi avata, koska nautilus ei ole käytettävissä. Tiedosto on täällä: {}",
"gui_settings_language_label": "Haluttu kieli",
"gui_settings_language_changed_notice": "Käynnistä OnionShare uudelleen, jotta kieli muuttuu.",
"systray_menu_exit": "Lopeta",
"systray_page_loaded_title": "Sivu Ladattu",
"systray_page_loaded_message": "OnionShare-osoite ladattu",
"systray_share_started_title": "Jako Aloitettu",
"systray_share_started_message": "Tiedostojen lähettäminen jollekulle aloitetaan",
"systray_share_completed_title": "Jakaminen Valmis",
"systray_share_completed_message": "Tiedostojen lähetys valmis",
"systray_share_canceled_title": "Jako keskeytetty",
"systray_share_canceled_message": "Joku keskeytti tiedostojesi vastaanottamisen",
"systray_receive_started_title": "Vastaanottaminen Aloitettu",
"systray_receive_started_message": "Joku lähettää tiedostoja sinulle",
"gui_all_modes_history": "Historia",
"gui_all_modes_clear_history": "Tyhjennä",
"gui_all_modes_transfer_started": "Aloitettu {}",
"gui_all_modes_transfer_finished_range": "Siirretty {} - {}",
"gui_all_modes_transfer_finished": "Siirretty {}",
"gui_all_modes_transfer_canceled_range": "Keskeytetty {} - {}",
"gui_all_modes_transfer_canceled": "Keskeytetty {}",
"gui_all_modes_progress_complete": "%p%, {0:s} kulunut.",
"gui_all_modes_progress_starting": "{0:s}, %p% (lasketaan)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Yhtäkään tiedostoa ei ole lähetetty vielä",
"gui_share_mode_autostop_timer_waiting": "Odotetaan lähettämisen valmistumista",
"gui_receive_mode_no_files": "Yhtäkään tiedostoa ei ole vastaanotettu vielä",
"gui_receive_mode_autostop_timer_waiting": "Odotetaan vastaanottamisen valmistumista"
}

View File

@ -54,7 +54,7 @@
"gui_settings_button_save": "Enregistrer",
"gui_settings_button_cancel": "Annuler",
"gui_settings_button_help": "Aide",
"gui_settings_shutdown_timeout": "Arrêter le partage à :",
"gui_settings_autostop_timer": "Arrêter le partage à :",
"connecting_to_tor": "Connexion au réseau Tor",
"help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)",
"large_filesize": "Avertissement : envoyer un gros partage peut prendre des heures",
@ -62,10 +62,10 @@
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"zip_progress_bar_format": "Compression : %p%",
"error_ephemeral_not_supported": "OnionShare exige au moins Tor 0.2.7.1 et python3-stem 1.4.0.",
"help_shutdown_timeout": "Arrêter le partage après un certain nombre de secondes",
"help_autostop_timer": "Arrêter le partage après un certain nombre de secondes",
"gui_tor_connection_error_settings": "Essayez de modifier dans les paramètres la façon dont OnionShare se connecte au réseau Tor.",
"no_available_port": "Impossible de trouver un port disponible pour démarrer le service oignon",
"gui_share_stop_server_shutdown_timeout": "Arrêter le partage ({}s restantes)",
"gui_share_stop_server_autostop_timer": "Arrêter le partage ({}s restantes)",
"systray_upload_started_title": "Envoi OnionShare démarré",
"systray_upload_started_message": "Une personne a commencé à envoyer des fichiers vers votre ordinateur",
"gui_no_downloads": "Pas encore de téléchargement",
@ -148,7 +148,7 @@
"help_receive": "Recevoir des partages au lieu de les envoyer",
"gui_receive_start_server": "Démarrer le mode réception",
"gui_receive_stop_server": "Arrêter le mode réception",
"gui_receive_stop_server_shutdown_timeout": "Arrêter le mode réception ({}s restantes)",
"gui_receive_stop_server_autostop_timer": "Arrêter le mode réception ({}s restantes)",
"gui_download_upload_progress_complete": "%p%, {0:s} écoulées.",
"gui_download_upload_progress_starting": "{0:s}, %p% (estimation)",
"gui_download_upload_progress_eta": "{0:s}, Fin : {1:s}, %p%",
@ -172,17 +172,17 @@
"systray_page_loaded_title": "La page a été chargée",
"systray_download_page_loaded_message": "Une personne a chargé la page de téléchargement",
"systray_upload_page_loaded_message": "Une personne a chargé la page d'envoi",
"gui_share_stop_server_shutdown_timeout_tooltip": "La minuterie darrêt automatique se termine à {}",
"gui_receive_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_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_no_obfs4proxy": "Utiliser les transports enfichables obfs4 intégrés (exige obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Utiliser les transports enfichables meek_lite (Azure) intégrés",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Utiliser les transports enfichables meek_lite (Azure) intégrés (exige obfs4proxy)",
"gui_settings_meek_lite_expensive_warning": "Avertissement : 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_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_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.",
"close_on_timeout": "Arrêté, car la minuterie darrêt automatique est arrivée au bout de son délai",
"gui_settings_autostop_timer_checkbox": "Utiliser la minuterie darrêt automatique",
"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_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_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_folder": "Ajouter un dossier",
"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_eta": "{0:s}, fin prévue : {1:s}, %p %",
"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_timeout_waiting": "En attente de la fin de la réception",
"gui_connect_to_tor_for_onion_settings": "Connectez-vous à Tor pour voir les paramètres du service onion",
"gui_receive_mode_autostop_timer_waiting": "En attente de la fin de la réception",
"gui_connect_to_tor_for_onion_settings": "Se connecter à Tor pour voir les paramètres du service onion",
"systray_share_completed_message": "Lenvoi de fichiers est terminé",
"gui_all_modes_transfer_canceled": "Annulé le {}",
"gui_settings_onion_label": "Paramètres onion",

View File

@ -10,7 +10,7 @@
"not_a_readable_file": "Ní comhad inléite é {0:s}.",
"no_available_port": "Níorbh fhéidir port a aimsiú chun an tseirbhís onion a thosú",
"other_page_loaded": "Seoladh lódáilte",
"close_on_timeout": "Cuireadh stop leis toisc go bhfuil an t-amadóir caite",
"close_on_autostop_timer": "Cuireadh stop leis toisc go bhfuil an t-amadóir caite",
"closing_automatically": "Cuireadh stop leis toisc go bhfuil an íoslódáil críochnaithe",
"timeout_download_still_running": "Ag fanacht go gcríochnódh an íoslódáil",
"large_filesize": "Rabhadh: D'fhéadfadh go dtógfadh sé tamall fada comhad mór a sheoladh",
@ -25,7 +25,7 @@
"systray_upload_started_message": "Thosaigh úsáideoir ag uaslódáil comhad go dtí do ríomhaire",
"help_local_only": "Ná húsáid Tor (tástáil amháin)",
"help_stay_open": "Lean ort ag comhroinnt tar éis an chéad íoslódáil",
"help_shutdown_timeout": "Stop ag comhroinnt tar éis líon áirithe soicindí",
"help_autostop_timer": "Stop ag comhroinnt tar éis líon áirithe soicindí",
"help_stealth": "Úsáid údarú cliaint (ardleibhéal)",
"help_receive": "Glac le comhaid chomhroinnte in áit iad a sheoladh",
"help_debug": "Déan tuairisc ar earráidí OnionShare ar stdout, agus earráidí Gréasáin ar an diosca",
@ -37,12 +37,12 @@
"gui_choose_items": "Roghnaigh",
"gui_share_start_server": "Comhroinn",
"gui_share_stop_server": "Stop ag comhroinnt",
"gui_share_stop_server_shutdown_timeout": "Stop ag Comhroinnt ({}s fágtha)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Amadóir uathstoptha caite {}",
"gui_share_stop_server_autostop_timer": "Stop ag Comhroinnt ({}s fágtha)",
"gui_share_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
"gui_receive_start_server": "Tosaigh an Mód Glactha",
"gui_receive_stop_server": "Stop an Mód Glactha",
"gui_receive_stop_server_shutdown_timeout": "Stop an Mód Glactha ({}s fágtha)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Amadóir uathstoptha caite {}",
"gui_receive_stop_server_autostop_timer": "Stop an Mód Glactha ({}s fágtha)",
"gui_receive_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
"gui_copy_url": "Cóipeáil an Seoladh",
"gui_copy_hidservauth": "Cóipeáil HidServAuth",
"gui_downloads": "Stair Íoslódála",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Sábháil",
"gui_settings_button_cancel": "Cealaigh",
"gui_settings_button_help": "Cabhair",
"gui_settings_shutdown_timeout_checkbox": "Úsáid amadóir uathstoptha",
"gui_settings_shutdown_timeout": "Stop ag comhroinnt ag:",
"gui_settings_autostop_timer_checkbox": "Úsáid amadóir uathstoptha",
"gui_settings_autostop_timer": "Stop ag comhroinnt ag:",
"settings_error_unknown": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor toisc nach féidir linn ciall a bhaint as na socruithe.",
"settings_error_automatic": "Níorbh fhéidir ceangal a bhunú leis an rialaitheoir Tor. An bhfuil Brabhsálaí Tor (ar fáil ó torproject.org) ag rith sa gcúlra?",
"settings_error_socket_port": "Ní féidir ceangal a bhunú leis an rialaitheoir Tor ag {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "Bain triail as na socruithe líonra a athrú chun ceangal le líonra Tor ó OnionShare.",
"gui_tor_connection_canceled": "Níorbh fhéidir ceangal a bhunú le Tor.\n\nDeimhnigh go bhfuil tú ceangailte leis an Idirlíon, ansin oscail OnionShare arís agus socraigh an ceangal le Tor.",
"gui_tor_connection_lost": "Dícheangailte ó Tor.",
"gui_server_started_after_timeout": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí.\nCaithfidh tú comhroinnt nua a chruthú.",
"gui_server_timeout_expired": "Tá an t-amadóir uathstoptha caite cheana.\nCaithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.",
"gui_server_started_after_autostop_timer": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí.\nCaithfidh tú comhroinnt nua a chruthú.",
"gui_server_autostop_timer_expired": "Tá an t-amadóir uathstoptha caite cheana.\nCaithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.",
"share_via_onionshare": "Comhroinn trí OnionShare é",
"gui_use_legacy_v2_onions_checkbox": "Úsáid seoltaí sean-nóis",
"gui_save_private_key_checkbox": "Úsáid seoladh seasmhach (seanleagan)",

View File

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

View File

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

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
{
"preparing_files": "Compressione dei file in corso.",
"give_this_url": "Dai questa URL al destinatario:",
"give_this_url": "Dai questo indirizzo al destinatario:",
"ctrlc_to_stop": "Premi Ctrl+C per fermare il server",
"not_a_file": "{0:s} non è un file valido.",
"other_page_loaded": "URL caricato",
@ -23,12 +23,12 @@
"gui_please_wait": "Avviato... Cliccare per interrompere.",
"zip_progress_bar_format": "Compressione in corso: %p%",
"config_onion_service": "Preparando il servizio onion sulla porta {0:d}.",
"give_this_url_stealth": "Dai questa URL e la linea HidServAuth al destinatario:",
"give_this_url_stealth": "Dai questo indirizzo e la linea HidServAuth al destinatario:",
"give_this_url_receive": "Dai questo indirizzo al mittente:",
"give_this_url_receive_stealth": "Condividi questo indirizzo e la linea HideServAuth con il mittente:",
"not_a_readable_file": "{0:s} non è un file leggibile.",
"no_available_port": "Non è stato possibile trovare alcuna porta per avviare il servizio onion",
"close_on_timeout": "Arrestato per tempo scaduto",
"close_on_autostop_timer": "Arrestato per tempo scaduto",
"timeout_download_still_running": "download in corso, attendere",
"systray_menu_exit": "Termina",
"systray_download_started_title": "Download con OnionShare avviato",
@ -39,15 +39,15 @@
"systray_download_canceled_message": "L'utente ha interrotto il download",
"systray_upload_started_title": "Upload con OnionShare avviato",
"systray_upload_started_message": "Un utente ha avviato l'upload di file sul tuo computer",
"help_shutdown_timeout": "Termina la condivisione dopo alcuni secondi",
"help_autostop_timer": "Termina la condivisione dopo alcuni secondi",
"help_stealth": "Usa l'autorizzazione del client (avanzato)",
"help_config": "Specifica il percorso del file di configurazione del JSON personalizzato",
"gui_share_stop_server_shutdown_timeout": "Arresta la condivisione ({}s rimanenti)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Il timer si arresterà tra {}",
"gui_share_stop_server_autostop_timer": "Arresta la condivisione ({}s rimanenti)",
"gui_share_stop_server_autostop_timer_tooltip": "Il timer si arresterà tra {}",
"gui_receive_start_server": "Inizia la ricezione",
"gui_receive_stop_server": "Arresta la ricezione",
"gui_receive_stop_server_shutdown_timeout": "Interrompi la ricezione ({}s rimanenti)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Il timer termina tra {}",
"gui_receive_stop_server_autostop_timer": "Interrompi la ricezione ({}s rimanenti)",
"gui_receive_stop_server_autostop_timer_tooltip": "Il timer termina tra {}",
"gui_copy_hidservauth": "Copia HidServAuth",
"gui_no_downloads": "Ancora nessun Download",
"gui_copied_url_title": "Indirizzo OnionShare copiato",
@ -109,8 +109,8 @@
"gui_settings_button_save": "Salva",
"gui_settings_button_cancel": "Cancella",
"gui_settings_button_help": "Aiuto",
"gui_settings_shutdown_timeout_checkbox": "Utilizza il timer di arresto automatico",
"gui_settings_shutdown_timeout": "Ferma la condivisione alle:",
"gui_settings_autostop_timer_checkbox": "Utilizza il timer di arresto automatico",
"gui_settings_autostop_timer": "Ferma la condivisione alle:",
"settings_error_unknown": "Impossibile connettersi al controller Tor perché le tue impostazioni non hanno senso.",
"settings_error_automatic": "Impossibile connettersi al controller Tor. Tor Browser (disponibile da torproject.org) è in esecuzione in background?",
"settings_error_socket_port": "Impossibile connettersi al controller Tor in {}: {}.",
@ -136,8 +136,8 @@
"gui_tor_connection_error_settings": "Prova a modificare le impostazioni di come OnionShare si connette alla rete Tor.",
"gui_tor_connection_canceled": "Impossibile connettersi a Tor,\n\nVerifica la connessione a Internet, dopo prova a riaprire OnionShare e configurare la connessione a Tor.",
"gui_tor_connection_lost": "Disconnesso da Tor.",
"gui_server_started_after_timeout": "Il timer auto-stop si è esaurito prima dell'avvio del server.\nSi prega di fare una nuova condivisione.",
"gui_server_timeout_expired": "Il timer auto-stop ha già finito.\nPer favore aggiornalo per iniziare la condivisione.",
"gui_server_started_after_autostop_timer": "Il timer auto-stop si è esaurito prima dell'avvio del server.\nSi prega di fare una nuova condivisione.",
"gui_server_autostop_timer_expired": "Il timer auto-stop ha già finito.\nPer favore aggiornalo per iniziare la condivisione.",
"share_via_onionshare": "Usa OnionShare",
"gui_connect_to_tor_for_onion_settings": "Connetti a Tor per vedere le impostazioni del servizio onion",
"gui_use_legacy_v2_onions_checkbox": "Usa gli indirizzi legacy",
@ -210,7 +210,7 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (in calcolo)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Nessun file ancora inviato",
"gui_share_mode_timeout_waiting": "In attesa di finire l'invio",
"gui_share_mode_autostop_timer_waiting": "In attesa di finire l'invio",
"gui_receive_mode_no_files": "Nessun file ricevuto ancora",
"gui_receive_mode_timeout_waiting": "In attesa di finire la ricezione"
"gui_receive_mode_autostop_timer_waiting": "In attesa di finire la ricezione"
}

View File

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

View File

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

View File

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

View File

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

View File

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

184
share/locale/ms.json Normal file
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.",
"no_available_port": "Er is geen poort beschikbaar om de onion-dienst op te starten",
"other_page_loaded": "Adres geladen",
"close_on_timeout": "Gestopt omdat de automatische time-out bereikt is",
"close_on_autostop_timer": "Gestopt omdat de automatische time-out bereikt is",
"closing_automatically": "Gestopt omdat de download is afgerond",
"timeout_download_still_running": "Bezig met wachten op afronden van download",
"large_filesize": "Waarschuwing: het versturen van grote bestanden kan uren duren",
@ -21,7 +21,7 @@
"systray_download_canceled_message": "De gebruiker heeft de download afgebroken",
"help_local_only": "Tor niet gebruiken (alleen voor ontwikkelingsdoeleinden)",
"help_stay_open": "Blijven delen na afronden van eerste download",
"help_shutdown_timeout": "Stoppen met delen na het opgegeven aantal seconden",
"help_autostop_timer": "Stoppen met delen na het opgegeven aantal seconden",
"help_stealth": "Client-authorisatie gebruiken (geavanceerd)",
"help_debug": "Log OnionShare fouten naar stdout, en web fouten naar disk",
"help_filename": "Lijst van bestanden of mappen om te delen",
@ -73,7 +73,7 @@
"gui_settings_button_save": "Opslaan",
"gui_settings_button_cancel": "Annuleren",
"gui_settings_button_help": "Help",
"gui_settings_shutdown_timeout": "Stop het delen om:",
"gui_settings_autostop_timer": "Stop het delen om:",
"settings_saved": "Instellingen opgeslagen in {}",
"settings_error_unknown": "Kan geen verbinding maken met de Tor controller omdat je instellingen nergens op slaan.",
"settings_error_automatic": "Kon geen verbinding maken met de Tor controller. Draait Tor Browser (beschikbaar via torproject.org) in de achtergrond?",
@ -97,8 +97,8 @@
"gui_tor_connection_ask_quit": "Afsluiten",
"gui_tor_connection_error_settings": "Probeer hoe OnionShare verbind met het Tor network te veranderen in de instellingen.",
"gui_tor_connection_canceled": "Kon niet verbinden met Tor.\n\nWees er zeker van dat je verbonden bent met het internet, herstart OnionShare en configureer de verbinding met Tor.",
"gui_server_started_after_timeout": "De auto-stop timer liep af voordat de server startte.\nMaak een nieuwe share aan.",
"gui_server_timeout_expired": "De auto-stop timer is al verlopen.\nStel een nieuwe tijd in om te beginnen met delen.",
"gui_server_started_after_autostop_timer": "De auto-stop timer liep af voordat de server startte.\nMaak een nieuwe share aan.",
"gui_server_autostop_timer_expired": "De auto-stop timer is al verlopen.\nStel een nieuwe tijd in om te beginnen met delen.",
"share_via_onionshare": "Deel via OnionShare",
"give_this_url_receive": "Geef dit adres aan de afzender:",
"give_this_url_receive_stealth": "Geef dit adres en de HidServAuth-regel aan de afzender:",
@ -108,12 +108,12 @@
"timeout_upload_still_running": "Wachten op voltooiing van de upload",
"gui_share_start_server": "Start met delen",
"gui_share_stop_server": "Stop met delen",
"gui_share_stop_server_shutdown_timeout": "Stop met Delen ({}s resterend)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop timer eindigt bij {}",
"gui_share_stop_server_autostop_timer": "Stop met Delen ({}s resterend)",
"gui_share_stop_server_autostop_timer_tooltip": "Auto-stop timer eindigt bij {}",
"gui_receive_start_server": "Start Ontvangstmodus",
"gui_receive_stop_server": "Stop Ontvangstmodus",
"gui_receive_stop_server_shutdown_timeout": "Stop Ontvangstmodus ({}s resterend)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer stopt bij {}",
"gui_receive_stop_server_autostop_timer": "Stop Ontvangstmodus ({}s resterend)",
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop timer stopt bij {}",
"gui_no_downloads": "Nog Geen Downloads",
"gui_copied_url_title": "Gekopieerd OnionShare Adres",
"gui_copied_hidservauth_title": "HidServAuth gekopieerd",
@ -132,7 +132,7 @@
"gui_settings_tor_bridges_custom_radio_option": "Gebruik custom bridges",
"gui_settings_tor_bridges_custom_label": "Je kan bridges krijgen via <a href=\"https://bridges.torproject.org/options\">1https://bridges.torproject.org</a>2",
"gui_settings_tor_bridges_invalid": "Geen van de bridges die je hebt toegevoegd werken. \nControleer ze of voeg andere toe.",
"gui_settings_shutdown_timeout_checkbox": "Gebruik auto-stop timer",
"gui_settings_autostop_timer_checkbox": "Gebruik auto-stop timer",
"error_tor_protocol_error_unknown": "Er was een onbekende fout met Tor",
"error_invalid_private_key": "Dit type privésleutel wordt niet ondersteund",
"gui_tor_connection_lost": "De verbinding met Tor is verbroken.",

View File

@ -11,7 +11,7 @@
"give_this_url_receive_stealth": "Gi denne adressen og HidServAuth-linjen til avsenderen:",
"not_a_readable_file": "{0:s} er ikke en lesbar fil.",
"no_available_port": "Fant ikke tilgjengelig port for oppstart av løktjenesten",
"close_on_timeout": "Stoppet fordi tidsavbruddsuret gikk ut",
"close_on_autostop_timer": "Stoppet fordi tidsavbruddsuret gikk ut",
"closing_automatically": "Stoppet fordi nedlasting fullførtes",
"timeout_download_still_running": "Venter på at nedlastingen skal fullføres",
"large_filesize": "Advarsel: forsendelse av stor deling kan ta timer",
@ -26,7 +26,7 @@
"systray_upload_started_message": "En bruker startet opplasting av filer til din datamaskin",
"help_local_only": "Ikke bruk Tor (kun i utviklingsøyemed)",
"help_stay_open": "Fortsett å dele etter at filene har blitt sendt",
"help_shutdown_timeout": "Stopp deling etter et gitt antall sekunder",
"help_autostop_timer": "Stopp deling etter et gitt antall sekunder",
"help_stealth": "Bruk klientidentifisering (avansert)",
"help_receive": "Motta delinger istedenfor å sende dem",
"help_debug": "Log OnionShare-feil til stdout, og vev-feil til disk",
@ -38,12 +38,12 @@
"gui_choose_items": "Velg",
"gui_share_start_server": "Start deling",
"gui_share_stop_server": "Stopp deling",
"gui_share_stop_server_shutdown_timeout": "Stopp deling ({}s gjenstår)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}",
"gui_share_stop_server_autostop_timer": "Stopp deling ({}s gjenstår)",
"gui_share_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
"gui_receive_start_server": "Start mottaksmodus",
"gui_receive_stop_server": "Stopp mottaksmodus",
"gui_receive_stop_server_shutdown_timeout": "Stopp mottaksmodus ({}s gjenstår)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Tidsavbruddsuret går ut {}",
"gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({}s gjenstår)",
"gui_receive_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
"gui_copy_url": "Kopier nettadresse",
"gui_copy_hidservauth": "Kopier HidServAuth",
"gui_downloads": "Nedlastingshistorikk",
@ -69,7 +69,7 @@
"gui_settings_window_title": "Innstillinger",
"gui_settings_whats_this": "<a href='{0:s}'>Hva er dette?</a>",
"gui_settings_stealth_option": "Bruk klientidentifisering",
"gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå\nklikke for å kopiere din HidServAuth-linje.",
"gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå klikke for å kopiere din HidServAuth-linje.",
"gui_settings_autoupdate_label": "Se etter ny versjon",
"gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig",
"gui_settings_autoupdate_timestamp": "Sist sjekket: {}",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Lagre",
"gui_settings_button_cancel": "Avbryt",
"gui_settings_button_help": "Hjelp",
"gui_settings_shutdown_timeout_checkbox": "Bruk tidsavbruddsur",
"gui_settings_shutdown_timeout": "Stopp deling ved:",
"gui_settings_autostop_timer_checkbox": "Bruk tidsavbruddsur",
"gui_settings_autostop_timer": "Stopp deling ved:",
"settings_saved": "Innstillinger lagret i {}",
"settings_error_unknown": "Kan ikke koble til Tor-kontroller fordi innstillingene dine ikke gir mening.",
"settings_error_automatic": "Kunne ikke koble til Tor-kontrolleren. Kjører Tor-nettleseren (tilgjengelig fra torproject.org) i bakgrunnen?",
@ -132,8 +132,8 @@
"gui_tor_connection_error_settings": "Prøv å endre hvordan OnionShare kobler til Tor-nettverket i innstillingene.",
"gui_tor_connection_canceled": "Kunne ikke koble til Tor.\n\nForsikre deg om at du er koblet til Internett, åpne så OnionShare igjen, og sett opp dets tilkobling til Tor.",
"gui_tor_connection_lost": "Frakoblet fra Tor.",
"gui_server_started_after_timeout": "Tidsavbruddsuret gikk ut før tjeneren startet.\nLag en ny deling.",
"gui_server_timeout_expired": "Tidsavbruddsuret har gått ut allerede.\nOppdater det for å starte deling.",
"gui_server_started_after_autostop_timer": "Tidsavbruddsuret gikk ut før tjeneren startet.\nLag en ny deling.",
"gui_server_autostop_timer_expired": "Tidsavbruddsuret har gått ut allerede.\nOppdater det for å starte deling.",
"share_via_onionshare": "OnionShare det",
"gui_use_legacy_v2_onions_checkbox": "Bruk gammeldagse adresser",
"gui_save_private_key_checkbox": "Bruk en vedvarende adresse",
@ -212,9 +212,10 @@
"gui_all_modes_progress_starting": "{0:s}, %p% (kalkulerer)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Ingen filer sendt enda",
"gui_share_mode_timeout_waiting": "Venter på fullføring av forsendelse",
"gui_share_mode_autostop_timer_waiting": "Venter på fullføring av forsendelse",
"gui_receive_mode_no_files": "Ingen filer mottatt enda",
"gui_receive_mode_timeout_waiting": "Venter på fullføring av mottak",
"gui_receive_mode_autostop_timer_waiting": "Venter på fullføring av mottak",
"gui_all_modes_transfer_canceled_range": "Avbrutt {} - {}",
"gui_all_modes_transfer_canceled": "Avbrutt {}"
"gui_all_modes_transfer_canceled": "Avbrutt {}",
"gui_settings_onion_label": "Løk-innstillinger"
}

View File

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

View File

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} nie jest plikiem do odczytu.",
"no_available_port": "Nie można znaleźć dostępnego portu aby włączyć usługę onion",
"other_page_loaded": "Adres został wczytany",
"close_on_timeout": "Zatrzymano, gdyż upłynął czas",
"close_on_autostop_timer": "Zatrzymano, gdyż upłynął czas",
"closing_automatically": "Zatrzymano, gdyż pobieranie zostało ukończone",
"timeout_download_still_running": "Czekam na ukończenie pobierania",
"large_filesize": "Uwaga: Wysyłanie dużego pliku może zająć kilka godzin",
@ -25,7 +25,7 @@
"systray_upload_started_message": "Użytkownik rozpoczął wysyłanie plików na Twój komputer",
"help_local_only": "Nie wykorzystuj sieci Tor (opcja zaawansowana)",
"help_stay_open": "Kontynuuj udostępnianie po pierwszym pobraniu",
"help_shutdown_timeout": "Przestań udostępniać po określonym czasie w sekundach",
"help_autostop_timer": "Przestań udostępniać po określonym czasie w sekundach",
"help_stealth": "Korzystaj z weryfikacji klienta (zaawansowane)",
"help_receive": "Odbieraj dane zamiast je wysyłać",
"help_debug": "Zapisz błędy OnionShare do stdout i zapisz błędy sieciowe na dysku",
@ -37,12 +37,12 @@
"gui_choose_items": "Wybierz",
"gui_share_start_server": "Rozpocznij udostępnianie",
"gui_share_stop_server": "Zatrzymaj udostępnianie",
"gui_share_stop_server_shutdown_timeout": "Zatrzymaj udostępnianie (zostało {}s)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Czas upłynie za {}",
"gui_share_stop_server_autostop_timer": "Zatrzymaj udostępnianie (zostało {}s)",
"gui_share_stop_server_autostop_timer_tooltip": "Czas upłynie za {}",
"gui_receive_start_server": "Rozpocznij tryb odbierania",
"gui_receive_stop_server": "Zatrzymaj tryb odbierania",
"gui_receive_stop_server_shutdown_timeout": "Zatrzymaj tryb odbierania (pozostało {}s)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Czas upływa za {}",
"gui_receive_stop_server_autostop_timer": "Zatrzymaj tryb odbierania (pozostało {}s)",
"gui_receive_stop_server_autostop_timer_tooltip": "Czas upływa za {}",
"gui_copy_url": "Kopiuj adres załącznika",
"gui_copy_hidservauth": "Kopiuj HidServAuth",
"gui_downloads": "Historia pobierania",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Zapisz",
"gui_settings_button_cancel": "Anuluj",
"gui_settings_button_help": "Pomoc",
"gui_settings_shutdown_timeout_checkbox": "",
"gui_settings_shutdown_timeout": "",
"gui_settings_autostop_timer_checkbox": "",
"gui_settings_autostop_timer": "",
"settings_error_unknown": "Nie można połączyć się z kontrolerem Tor, ponieważ Twoje ustawienia nie mają sensu.",
"settings_error_automatic": "Nie można połączyć się z kontrolerem Tor. Czy Tor Browser (dostępny na torproject.org) działa w tle?",
"settings_error_socket_port": "Nie można połączyć się z kontrolerem Tor pod adresem {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "",
"gui_tor_connection_lost": "",
"gui_server_started_after_timeout": "",
"gui_server_timeout_expired": "",
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
"gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",

View File

@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s} não é um ficheiro legível.",
"no_available_port": "Não foi possível encontrar um pórtico disponível para iniciar o serviço onion",
"other_page_loaded": "Endereço carregado",
"close_on_timeout": "Interrompido ao final da contagem do cronômetro automático",
"close_on_autostop_timer": "Interrompido ao final da contagem do cronômetro automático",
"closing_automatically": "Interrompido após o término da transferência",
"timeout_download_still_running": "Esperando que o download termine",
"large_filesize": "Aviso: O envio de arquivos grandes pode levar várias horas",
@ -25,7 +25,7 @@
"systray_upload_started_message": "Alguém começou a carregar arquivos no seu computador",
"help_local_only": "Não use Tor (unicamente para programação)",
"help_stay_open": "Continuar a compartilhar após o envio de documentos",
"help_shutdown_timeout": "Parar de compartilhar após um número determinado de segundos",
"help_autostop_timer": "Parar de compartilhar após um número determinado de segundos",
"help_stealth": "Usar autorização de cliente (avançado)",
"help_receive": "Receber compartilhamentos ao invés de enviá-los",
"help_debug": "Registrar erros do OnionShare no stdout e erros de rede, no disco",
@ -37,12 +37,12 @@
"gui_choose_items": "Escolher",
"gui_share_start_server": "Começar a compartilhar",
"gui_share_stop_server": "Parar de compartilhar",
"gui_share_stop_server_shutdown_timeout": "Parar de compartilhar ({}segundos para terminar)",
"gui_share_stop_server_shutdown_timeout_tooltip": "O cronômetro automático termina às",
"gui_share_stop_server_autostop_timer": "Parar de compartilhar ({}segundos para terminar)",
"gui_share_stop_server_autostop_timer_tooltip": "O cronômetro automático termina às",
"gui_receive_start_server": "Modo Começar a Receber",
"gui_receive_stop_server": "Modo Parar de Receber",
"gui_receive_stop_server_shutdown_timeout": "Modo Parar de Receber ({}segundos para terminar)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "O cronômetro automático termina às {}",
"gui_receive_stop_server_autostop_timer": "Modo Parar de Receber ({}segundos para terminar)",
"gui_receive_stop_server_autostop_timer_tooltip": "O cronômetro automático termina às {}",
"gui_copy_url": "Copiar endereço",
"gui_copy_hidservauth": "Copiar HidServAuth",
"gui_downloads": "Histórico de download",
@ -104,8 +104,8 @@
"gui_settings_button_save": "Salvar",
"gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ajuda",
"gui_settings_shutdown_timeout_checkbox": "Usar cronômetro para encerrar automaticamente",
"gui_settings_shutdown_timeout": "Encerrar o compartilhamento às:",
"gui_settings_autostop_timer_checkbox": "Usar cronômetro para encerrar automaticamente",
"gui_settings_autostop_timer": "Encerrar o compartilhamento às:",
"settings_error_unknown": "Impossível conectar-se ao controlador do Tor, porque as suas configurações estão confusas.",
"settings_error_automatic": "Não foi possível conectar ao controlador do Tor. O Navegador Tor (disponível no site torproject.org) está rodando em segundo plano?",
"settings_error_socket_port": "Não pode ligar ao controlador do Tor em {}:{}.",
@ -131,8 +131,8 @@
"gui_tor_connection_error_settings": "Tente mudar nas configurações a forma como OnionShare se conecta à rede Tor.",
"gui_tor_connection_canceled": "Não foi possível conectar à rede Tor.\n\nVerifique se você está conectada à Internet, e então abra OnionShare novamente e configure sua conexão à rede Tor.",
"gui_tor_connection_lost": "Desconectado do Tor.",
"gui_server_started_after_timeout": "O tempo esgotou antes do servidor iniciar.\nPor favor, crie um novo compartilhamento.",
"gui_server_timeout_expired": "O temporizador já esgotou.\nPor favor, atualize-o antes de começar a compartilhar.",
"gui_server_started_after_autostop_timer": "O tempo esgotou antes do servidor iniciar.\nPor favor, crie um novo compartilhamento.",
"gui_server_autostop_timer_expired": "O temporizador já esgotou.\nPor favor, atualize-o antes de começar a compartilhar.",
"share_via_onionshare": "Compartilhar usando OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo",
"gui_save_private_key_checkbox": "Usar o mesmo endereço",
@ -206,7 +206,12 @@
"gui_all_modes_transfer_finished": "Transferido {}",
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
"gui_all_modes_transfer_canceled": "Cancelado {}",
"gui_share_mode_timeout_waiting": "Esperando para completar o envio",
"gui_share_mode_autostop_timer_waiting": "Esperando para completar o envio",
"gui_receive_mode_no_files": "Nenhum arquivo recebido",
"gui_receive_mode_timeout_waiting": "Esperando para completar o recebimento"
"gui_receive_mode_autostop_timer_waiting": "Esperando para completar o recebimento",
"gui_settings_onion_label": "Configurando Onion",
"systray_page_loaded_message": "Endereço OnionShare foi carregado",
"gui_all_modes_progress_complete": "%p%, {0:s} em curso.",
"gui_all_modes_progress_starting": "{0:s}, %p% (calculando)",
"gui_all_modes_progress_eta": "{0:s}, Tempo aproximado: {1:s}, %p%"
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,9 +8,9 @@
"ctrlc_to_stop": "Tryck ned Ctrl+C för att stoppa servern",
"not_a_file": "{0:s} är inte en giltig fil.",
"not_a_readable_file": "{0:s} är inte en läsbar fil.",
"no_available_port": "Kunde inte hitta en ledig kort för att börja onion-tjänsten",
"no_available_port": "Kunde inte hitta en ledig kort för att starta onion-tjänsten",
"other_page_loaded": "Adress laddad",
"close_on_timeout": "Stoppad för att automatiska stopp-timern tiden tog slut",
"close_on_autostop_timer": "Stoppad för att tiden för den automatiska stopp-tidtagaren löpte ut",
"closing_automatically": "Stoppad för att hämtningen är klar",
"timeout_download_still_running": "Väntar på att nedladdningen ska bli klar",
"timeout_upload_still_running": "Väntar på att uppladdningen ska bli klar",
@ -26,7 +26,7 @@
"systray_upload_started_message": "En användare började ladda upp filer på din dator",
"help_local_only": "Använd inte Tor (endast för utveckling)",
"help_stay_open": "Fortsätt dela efter att filer har skickats",
"help_shutdown_timeout": "Avbryt delning efter ett bestämt antal sekunder",
"help_autostop_timer": "Sluta dela efter ett bestämt antal sekunder",
"help_stealth": "Använd klient-auktorisering (avancerat)",
"help_receive": "Ta emot delningar istället för att skicka dem",
"help_debug": "Logga OnionShare fel till stdout och webbfel till hårddisken",
@ -38,12 +38,12 @@
"gui_choose_items": "Välj",
"gui_share_start_server": "Börja dela",
"gui_share_stop_server": "Avbryt delning",
"gui_share_stop_server_shutdown_timeout": "Avbryt Delning ({}s kvarstår)",
"gui_share_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-timern avslutar vid {}",
"gui_receive_start_server": "Börja mottagarläge",
"gui_share_stop_server_autostop_timer": "Avbryt Delning ({}s kvarstår)",
"gui_share_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_receive_start_server": "Starta mottagarläge",
"gui_receive_stop_server": "Avsluta Mottagarläge",
"gui_receive_stop_server_shutdown_timeout": "Avsluta Mottagarläge ({}s kvarstår)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer avslutas kl {}",
"gui_receive_stop_server_autostop_timer": "Avsluta Mottagarläge ({}s kvarstår)",
"gui_receive_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_copy_url": "Kopiera Adress",
"gui_copy_hidservauth": "Kopiera HidServAuth",
"gui_downloads": "Nedladdningshistorik",
@ -70,7 +70,7 @@
"gui_settings_window_title": "Inställningar",
"gui_settings_whats_this": "<a href='{0:s}'>Vad är det här?</a>",
"gui_settings_stealth_option": "Använd klientauktorisering",
"gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär att du kan nu\nklicka för att kopiera din HidServAuth.",
"gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär det att du nu kan klicka för att kopiera din HidServAuth.",
"gui_settings_autoupdate_label": "Sök efter ny version",
"gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig",
"gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}",
@ -105,8 +105,8 @@
"gui_settings_button_save": "Spara",
"gui_settings_button_cancel": "Avbryt",
"gui_settings_button_help": "Hjälp",
"gui_settings_shutdown_timeout_checkbox": "Använd automatiska stopp-timern",
"gui_settings_shutdown_timeout": "Stoppa delningen vid:",
"gui_settings_autostop_timer_checkbox": "Använd den automatiska stopp-tidtagaren",
"gui_settings_autostop_timer": "Stoppa delningen vid:",
"settings_error_unknown": "Kan inte ansluta till Tor-regulatorn eftersom dina inställningar inte är vettiga.",
"settings_error_automatic": "Kunde inte ansluta till Tor-regulatorn. Körs Tor Browser (tillgänglig från torproject.org) i bakgrunden?",
"settings_error_socket_port": "Det går inte att ansluta till Tor-regulatorn på {}:{}.",
@ -117,7 +117,7 @@
"settings_error_bundled_tor_not_supported": "Användning av Tor-versionen som följer med OnionShare fungerar inte i utvecklarläge på Windows eller macOS.",
"settings_error_bundled_tor_timeout": "Det tar för lång tid att ansluta till Tor. Kanske är du inte ansluten till Internet, eller har en felaktig systemklocka?",
"settings_error_bundled_tor_broken": "OnionShare kunde inte ansluta till Tor i bakgrunden:\n{}",
"settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
"settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor-version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
"error_tor_protocol_error": "Det fanns ett fel med Tor: {}",
"error_tor_protocol_error_unknown": "Det fanns ett okänt fel med Tor",
"error_invalid_private_key": "Denna privata nyckeltyp stöds inte",
@ -132,9 +132,9 @@
"gui_tor_connection_error_settings": "Försök ändra hur OnionShare ansluter till Tor-nätverket i inställningarna.",
"gui_tor_connection_canceled": "Kunde inte ansluta till Tor.\n\nSe till att du är ansluten till Internet, öppna sedan OnionShare och ställ in anslutningen till Tor.",
"gui_tor_connection_lost": "Frånkopplad från Tor.",
"gui_server_started_after_timeout": "Automatiska stopp-timern tog slut innan servern startade.\nVänligen gör en ny delning.",
"gui_server_timeout_expired": "Automatiska stopp-timern har redan slutat.\nUppdatera den för att börja dela.",
"share_via_onionshare": "OnionShare den",
"gui_server_started_after_autostop_timer": "Tiden för den automatiska stopp-timern löpte ut innan servern startade.\nVänligen gör en ny delning.",
"gui_server_autostop_timer_expired": "Tiden för den automatiska stopp-tidtagaren löpte redan ut.\nUppdatera den för att börja dela.",
"share_via_onionshare": "Dela den med OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser",
"gui_save_private_key_checkbox": "Använd en beständig adress",
"gui_share_url_description": "<b>Alla</b> med denna OnionShare-adress kan <b>hämta</b> dina filer med hjälp av <b>Tor Browser</b>: <img src='{}' />",
@ -207,9 +207,10 @@
"gui_all_modes_progress_starting": "{0} %s% (beräkning)",
"gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
"gui_share_mode_no_files": "Inga filer har skickats än",
"gui_share_mode_timeout_waiting": "Väntar på att avsluta sändningen",
"gui_share_mode_autostop_timer_waiting": "Väntar på att avsluta sändningen",
"gui_receive_mode_no_files": "Inga filer har mottagits ännu",
"gui_receive_mode_timeout_waiting": "Väntar på att avsluta mottagande",
"gui_receive_mode_autostop_timer_waiting": "Väntar på att avsluta mottagande",
"gui_all_modes_transfer_canceled_range": "Avbröt {} - {}",
"gui_all_modes_transfer_canceled": "Avbröt {}"
"gui_all_modes_transfer_canceled": "Avbröt {}",
"gui_settings_onion_label": "Inställningar för Onion"
}

View File

@ -26,5 +26,5 @@
"give_this_url_receive": "Bu adresi gönderene ver:",
"not_a_readable_file": "{0:s} okunabilir bir dosya değil.",
"no_available_port": "Onion servisini başlatmak için uygun bir port bulunamadı",
"close_on_timeout": "Otomatik durma zamanlayıcısının bitmesi nedeniyle durdu"
"close_on_autostop_timer": "Otomatik durma zamanlayıcısının bitmesi nedeniyle durdu"
}

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

View File

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<title>OnionShare: 403 Forbidden</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">You are not allowed to perform that action at this time.</p>
</div>
</div>
</body>
<head>
<title>OnionShare: 403 Forbidden</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">You are not allowed to perform that action at this time.</p>
</div>
</div>
</body>
</html>

View File

@ -1,16 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<title>OnionShare: 404 Not Found</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">404 Not Found</p>
</div>
</div>
</body>
<head>
<title>OnionShare: 404 Not Found</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">404 Not Found</p>
</div>
</div>
</body>
</html>

View File

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

View File

@ -2,8 +2,8 @@
<html>
<head>
<title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
@ -13,16 +13,24 @@
</header>
<div class="upload-wrapper">
<!--
We are not using a <noscript> tag because it only works when the security slider is set to
Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
-->
<div id="noscript">
<p>
<img src="/static/img/warning.png" title="Warning" /><strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
sometimes never finish. To upload reliably, either set your Tor Browser
<a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
to Standard or
<a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
</div>
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="upload-header">Send Files</p>
<p class="upload-description">Select the files you want to send, then click "Send Files"...</p>
<form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
<p><input type="file" id="file-select" name="file[]" multiple /></p>
<p><button type="submit" id="send-button" class="button">Send Files</button></p>
</form>
<div id="uploads"></div>
<div>
@ -37,22 +45,14 @@
</ul>
</div>
<!--
We are not using a <noscript> tag because it only works when the security slider is set to
Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
-->
<div id="noscript">
<p>
<strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
sometimes never finish. To upload reliably, either set your Tor Browser
<a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
to Standard or
<a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
</div>
<script src="/static/js/receive-noscript.js"></script>
<form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
<p><input type="file" id="file-select" name="file[]" multiple /></p>
<p><button type="submit" id="send-button" class="button">Send Files</button></p>
</form>
</div>
<script src="/static/js/receive-noscript.js"></script>
<script src="/static/js/jquery-3.3.1.min.js"></script>
<script src="/static/js/receive.js"></script>
<script async src="/static/js/receive.js"></script>
</body>
</html>

View File

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

View File

@ -1,56 +1,59 @@
<!DOCTYPE html>
<html>
<head>
<title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
<meta name="onionshare-filename" content="{{ filename }}">
<meta name="onionshare-filesize" content="{{ filesize }}">
</head>
<body>
<header class="clearfix">
<div class="right">
<ul>
<li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
{% if slug %}
<li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
{% else %}
<li><a class="button" href='/download'>Download Files</a></li>
{% endif %}
</ul>
</div>
<img class="logo" src="/static/img/logo.png" title="OnionShare">
<h1>OnionShare</h1>
</header>
<head>
<title>OnionShare</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
<meta name="onionshare-filename" content="{{ filename }}">
<meta name="onionshare-filesize" content="{{ filesize }}">
</head>
<body>
<header class="clearfix">
<div class="right">
<ul>
<li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
{% if slug %}
<li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
{% else %}
<li><a class="button" href='/download'>Download Files</a></li>
{% endif %}
</ul>
</div>
<img class="logo" src="/static/img/logo.png" title="OnionShare">
<h1>OnionShare</h1>
</header>
<table class="file-list" id="file-list">
<tr>
<th id="filename-header">Filename</th>
<th id="size-header">Size</th>
<th></th>
</tr>
{% for info in file_info.dirs %}
<tr>
<td>
<img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
{{ info.basename }}
</td>
<td>{{ info.size_human }}</td>
<td></td>
</tr>
{% endfor %}
{% for info in file_info.files %}
<tr>
<td>
<img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
{{ info.basename }}
</td>
<td>{{ info.size_human }}</td>
<td></td>
</tr>
{% endfor %}
</table>
<script async src="/static/js/send.js" charset="utf-8"></script>
</body>
<table class="file-list" id="file-list">
<tr>
<th id="filename-header">Filename</th>
<th id="size-header">Size</th>
<th></th>
</tr>
{% for info in file_info.dirs %}
<tr>
<td>
<img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
{{ info.basename }}
</td>
<td>{{ info.size_human }}</td>
<td></td>
</tr>
{% endfor %}
{% for info in file_info.files %}
<tr>
<td>
<img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
{{ info.basename }}
</td>
<td>{{ info.size_human }}</td>
<td></td>
</tr>
{% endfor %}
</table>
<script src="/static/js/send.js"></script>
</body>
</html>

View File

@ -1,22 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>OnionShare is closed</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
<link href="/static/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<header class="clearfix">
<img class="logo" src="/static/img/logo.png" title="OnionShare">
<h1>OnionShare</h1>
</header>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">Thank you for using OnionShare</p>
<p class="info-description">You may now close this window.</p>
</div>
</div>
</body>
<head>
<title>OnionShare is closed</title>
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
<header class="clearfix">
<img class="logo" src="/static/img/logo.png" title="OnionShare">
<h1>OnionShare</h1>
</header>
<div class="info-wrapper">
<div class="info">
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="info-header">Thank you for using OnionShare</p>
<p class="info-description">You may now close this window.</p>
</div>
</div>
</body>
</html>

View File

@ -172,6 +172,9 @@ class GuiBaseTest(object):
'''Test that the Server Status indicator shows we are Starting'''
self.assertEqual(mode.server_status_label.text(), strings._('gui_status_indicator_share_working'))
def server_status_indicator_says_scheduled(self, mode):
'''Test that the Server Status indicator shows we are Scheduled'''
self.assertEqual(mode.server_status_label.text(), strings._('gui_status_indicator_share_scheduled'))
def server_is_started(self, mode, startup_time=2000):
'''Test that the server has started'''
@ -291,13 +294,12 @@ class GuiBaseTest(object):
def set_timeout(self, mode, timeout):
'''Test that the timeout can be set'''
timer = QtCore.QDateTime.currentDateTime().addSecs(timeout)
mode.server_status.shutdown_timeout.setDateTime(timer)
self.assertTrue(mode.server_status.shutdown_timeout.dateTime(), timer)
mode.server_status.autostop_timer_widget.setDateTime(timer)
self.assertTrue(mode.server_status.autostop_timer_widget.dateTime(), timer)
def timeout_widget_hidden(self, mode):
'''Test that the timeout widget is hidden when share has started'''
self.assertFalse(mode.server_status.shutdown_timeout_container.isVisible())
def autostop_timer_widget_hidden(self, mode):
'''Test that the auto-stop timer widget is hidden when share has started'''
self.assertFalse(mode.server_status.autostop_timer_container.isVisible())
def server_timed_out(self, mode, wait):
@ -306,6 +308,37 @@ class GuiBaseTest(object):
# We should have timed out now
self.assertEqual(mode.server_status.status, 0)
# Auto-start timer tests
def set_autostart_timer(self, mode, timer):
'''Test that the timer can be set'''
schedule = QtCore.QDateTime.currentDateTime().addSecs(timer)
mode.server_status.autostart_timer_widget.setDateTime(schedule)
self.assertTrue(mode.server_status.autostart_timer_widget.dateTime(), schedule)
def autostart_timer_widget_hidden(self, mode):
'''Test that the auto-start timer widget is hidden when share has started'''
self.assertFalse(mode.server_status.autostart_timer_container.isVisible())
def scheduled_service_started(self, mode, wait):
'''Test that the server has timed out after the timer ran out'''
QtTest.QTest.qWait(wait)
# We should have started now
self.assertEqual(mode.server_status.status, 2)
def cancel_the_share(self, mode):
'''Test that we can cancel a share before it's started up '''
self.server_working_on_start_button_pressed(mode)
self.server_status_indicator_says_scheduled(mode)
self.add_delete_buttons_hidden()
self.settings_button_is_hidden()
self.set_autostart_timer(mode, 10)
QtTest.QTest.mousePress(mode.server_status.server_button, QtCore.Qt.LeftButton)
QtTest.QTest.qWait(2000)
QtTest.QTest.mouseRelease(mode.server_status.server_button, QtCore.Qt.LeftButton)
self.assertEqual(mode.server_status.status, 0)
self.server_is_stopped(mode, False)
self.web_server_is_stopped()
# Hack to close an Alert dialog that would otherwise block tests
def accept_dialog(self):
window = self.gui.qtapp.activeWindow()

View File

@ -5,7 +5,7 @@ from PyQt5 import QtCore, QtTest
from .GuiBaseTest import GuiBaseTest
class GuiReceiveTest(GuiBaseTest):
def upload_file(self, public_mode, file_to_upload, expected_basename):
def upload_file(self, public_mode, file_to_upload, expected_basename, identical_files_at_once=False):
'''Test that we can upload the file'''
files = {'file[]': open(file_to_upload, 'rb')}
if not public_mode:
@ -13,6 +13,9 @@ class GuiReceiveTest(GuiBaseTest):
else:
path = 'http://127.0.0.1:{}/upload'.format(self.gui.app.port)
response = requests.post(path, files=files)
if identical_files_at_once:
# Send a duplicate upload to test for collisions
response = requests.post(path, files=files)
QtTest.QTest.qWait(2000)
# Make sure the file is within the last 10 seconds worth of filenames
@ -20,7 +23,10 @@ class GuiReceiveTest(GuiBaseTest):
now = datetime.now()
for i in range(10):
date_dir = now.strftime("%Y-%m-%d")
time_dir = now.strftime("%H.%M.%S")
if identical_files_at_once:
time_dir = now.strftime("%H.%M.%S-1")
else:
time_dir = now.strftime("%H.%M.%S")
receive_mode_dir = os.path.join(self.gui.common.settings.get('data_dir'), date_dir, time_dir)
expected_filename = os.path.join(receive_mode_dir, expected_basename)
if os.path.exists(expected_filename):
@ -74,18 +80,6 @@ class GuiReceiveTest(GuiBaseTest):
self.assertEqual(mode.history.completed_count, before_completed_count)
self.assertEqual(len(mode.history.item_list.items), before_number_of_history_items)
def run_receive_mode_sender_closed_tests(self, public_mode):
'''Test that the share can be stopped by the sender in receive mode'''
if not public_mode:
path = 'http://127.0.0.1:{}/{}/close'.format(self.gui.app.port, self.gui.receive_mode.web.slug)
else:
path = 'http://127.0.0.1:{}/close'.format(self.gui.app.port)
response = requests.post(path)
self.server_is_stopped(self.gui.receive_mode, False)
self.web_server_is_stopped()
self.server_status_indicator_says_closed(self.gui.receive_mode, False)
# 'Grouped' tests follow from here
def run_all_receive_mode_setup_tests(self, public_mode):
@ -119,6 +113,9 @@ class GuiReceiveTest(GuiBaseTest):
self.counter_incremented(self.gui.receive_mode, 3)
self.upload_file(public_mode, '/tmp/testdir/test', 'test')
self.counter_incremented(self.gui.receive_mode, 4)
# Test uploading the same file twice at the same time, and make sure no collisions
self.upload_file(public_mode, '/tmp/test.txt', 'test.txt', True)
self.counter_incremented(self.gui.receive_mode, 6)
self.uploading_zero_files_shouldnt_change_ui(self.gui.receive_mode, public_mode)
self.history_indicator(self.gui.receive_mode, public_mode)
self.server_is_stopped(self.gui.receive_mode, False)
@ -142,6 +139,6 @@ class GuiReceiveTest(GuiBaseTest):
"""Auto-stop timer tests in receive mode"""
self.run_all_receive_mode_setup_tests(public_mode)
self.set_timeout(self.gui.receive_mode, 5)
self.timeout_widget_hidden(self.gui.receive_mode)
self.autostop_timer_widget_hidden(self.gui.receive_mode)
self.server_timed_out(self.gui.receive_mode, 15000)
self.web_server_is_stopped()

View File

@ -191,10 +191,29 @@ class GuiShareTest(GuiBaseTest):
self.run_all_share_mode_setup_tests()
self.set_timeout(self.gui.share_mode, 5)
self.run_all_share_mode_started_tests(public_mode)
self.timeout_widget_hidden(self.gui.share_mode)
self.autostop_timer_widget_hidden(self.gui.share_mode)
self.server_timed_out(self.gui.share_mode, 10000)
self.web_server_is_stopped()
def run_all_share_mode_autostart_timer_tests(self, public_mode):
"""Auto-start timer tests in share mode"""
self.run_all_share_mode_setup_tests()
self.set_autostart_timer(self.gui.share_mode, 5)
self.server_working_on_start_button_pressed(self.gui.share_mode)
self.autostart_timer_widget_hidden(self.gui.share_mode)
self.server_status_indicator_says_scheduled(self.gui.share_mode)
self.web_server_is_stopped()
self.scheduled_service_started(self.gui.share_mode, 7000)
self.web_server_is_running()
def run_all_share_mode_autostop_autostart_mismatch_tests(self, public_mode):
"""Auto-stop timer tests in share mode"""
self.run_all_share_mode_setup_tests()
self.set_autostart_timer(self.gui.share_mode, 15)
self.set_timeout(self.gui.share_mode, 5)
QtCore.QTimer.singleShot(4000, self.accept_dialog)
QtTest.QTest.mouseClick(self.gui.share_mode.server_status.server_button, QtCore.Qt.LeftButton)
self.server_is_stopped(self.gui.share_mode, False)
def run_all_share_mode_unreadable_file_tests(self):
'''Attempt to share an unreadable file'''

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

View File

@ -140,19 +140,6 @@ class TorGuiBaseTest(GuiBaseTest):
else:
self.assertEqual(clipboard.text(), 'http://{}/{}'.format(self.gui.app.onion_host, mode.server_status.web.slug))
def cancel_the_share(self, mode):
'''Test that we can cancel this share before it's started up '''
self.server_working_on_start_button_pressed(self.gui.share_mode)
self.server_status_indicator_says_starting(self.gui.share_mode)
self.add_delete_buttons_hidden()
self.settings_button_is_hidden()
QtTest.QTest.mousePress(mode.server_status.server_button, QtCore.Qt.LeftButton)
QtTest.QTest.qWait(1000)
QtTest.QTest.mouseRelease(mode.server_status.server_button, QtCore.Qt.LeftButton)
self.assertEqual(mode.server_status.status, 0)
self.server_is_stopped(self.gui.share_mode, False)
self.web_server_is_stopped()
# Stealth tests
def copy_have_hidserv_auth_button(self, mode):

View File

@ -89,7 +89,7 @@ class TorGuiShareTest(TorGuiBaseTest, GuiShareTest):
self.run_all_share_mode_setup_tests()
self.set_timeout(self.gui.share_mode, 120)
self.run_all_share_mode_started_tests(public_mode)
self.timeout_widget_hidden(self.gui.share_mode)
self.autostop_timer_widget_hidden(self.gui.share_mode)
self.server_timed_out(self.gui.share_mode, 125000)
self.web_server_is_stopped()

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):
test_settings = {
"public_mode": False,
"shutdown_timeout": True,
"autostop_timer": True,
}
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):
test_settings = {
"public_mode": False,
"shutdown_timeout": True,
"autostop_timer": True,
}
cls.gui = GuiShareTest.set_up(test_settings)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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