Remove v2 legacy onion support, and its corresponding client auth functionality. Update the v3 Client Auth to take its place in settings

This commit is contained in:
Miguel Jacq 2021-05-06 14:26:00 +10:00
parent b48848eb04
commit e0b378055c
No known key found for this signature in database
GPG Key ID: EEA4341C6D97A0B6
68 changed files with 62 additions and 552 deletions

View File

@ -120,26 +120,12 @@ def main(cwd=None):
default=0,
help="Stop onion service at schedule time (N seconds from now)",
)
parser.add_argument(
"--legacy",
action="store_true",
dest="legacy",
default=False,
help="Use legacy address (v2 onion service, not recommended)",
)
parser.add_argument(
"--client-auth",
action="store_true",
dest="client_auth",
default=False,
help="Use V2 client authorization (requires --legacy)",
)
parser.add_argument(
"--client-auth-v3",
action="store_true",
dest="client_auth_v3",
default=False,
help="Use V3 client authorization",
help="Use client authorization",
)
# Share args
parser.add_argument(
@ -201,9 +187,7 @@ def main(cwd=None):
public = bool(args.public)
autostart_timer = int(args.autostart_timer)
autostop_timer = int(args.autostop_timer)
legacy = bool(args.legacy)
client_auth = bool(args.client_auth)
client_auth_v3 = bool(args.client_auth_v3)
autostop_sharing = not bool(args.no_autostop_sharing)
data_dir = args.data_dir
webhook_url = args.webhook_url
@ -222,20 +206,6 @@ def main(cwd=None):
# Verbose mode?
common.verbose = verbose
# client_auth can only be set if legacy is also set
if client_auth and not legacy:
print(
"Client authentication (--client-auth) is only supported with legacy onion services (--legacy)"
)
sys.exit()
# client_auth_v3 and legacy cannot be both set
if client_auth_v3 and legacy:
print(
"V3 Client authentication (--client-auth-v3) cannot be used with legacy onion services (--legacy)"
)
sys.exit()
# Re-load settings, if a custom config was passed in
if config_filename:
common.load_settings(config_filename)
@ -256,9 +226,7 @@ def main(cwd=None):
mode_settings.set("general", "public", public)
mode_settings.set("general", "autostart_timer", autostart_timer)
mode_settings.set("general", "autostop_timer", autostop_timer)
mode_settings.set("general", "legacy", legacy)
mode_settings.set("general", "client_auth", client_auth)
mode_settings.set("general", "client_auth_v3", client_auth_v3)
if mode == "share":
mode_settings.set("share", "autostop_sharing", autostop_sharing)
if mode == "receive":
@ -379,30 +347,20 @@ def main(cwd=None):
)
print("")
if mode_settings.get("general", "client_auth"):
print(
f"Give this address and HidServAuth line to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
print(app.auth_string)
elif mode_settings.get("general", "client_auth_v3"):
print(
f"Give this address and ClientAuth line to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
print(app.auth_string_v3)
print(f"ClientAuth: {app.auth_string}")
else:
print(
f"Give this address to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
else:
if mode_settings.get("general", "client_auth"):
print(
f"Give this address and HidServAuth line to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
print(app.auth_string)
elif mode_settings.get("general", "client_auth_v3"):
print(
f"Give this address and ClientAuth line to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
print(app.auth_string_v3)
print(f"ClientAuth: {app.auth_string}")
else:
print(
f"Give this address to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
@ -484,25 +442,17 @@ def main(cwd=None):
print("")
if mode_settings.get("general", "client_auth"):
print("Give this address and HidServAuth to the sender:")
print(url)
print(app.auth_string)
elif mode_settings.get("general", "client_auth_v3"):
print("Give this address and ClientAuth to the sender:")
print(url)
print(app.auth_string_v3)
print(f"ClientAuth: {app.auth_string}")
else:
print("Give this address to the sender:")
print(url)
else:
if mode_settings.get("general", "client_auth"):
print("Give this address and HidServAuth line to the recipient:")
print(url)
print(app.auth_string)
elif mode_settings.get("general", "client_auth_v3"):
print("Give this address and ClientAuth line to the recipient:")
print(url)
print(app.auth_string_v3)
print(f"ClientAuth: {app.auth_string}")
else:
print("Give this address to the recipient:")
print(url)

View File

@ -48,9 +48,7 @@ class ModeSettings:
"public": False,
"autostart_timer": False,
"autostop_timer": False,
"legacy": False,
"client_auth": False,
"client_auth_v3": False,
"service_id": None,
},
"share": {"autostop_sharing": True, "filenames": []},

View File

@ -21,7 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from stem.control import Controller
from stem import ProtocolError, SocketClosed
from stem.connection import MissingPassword, UnreadableCookieFile, AuthenticationFailure
from Crypto.PublicKey import RSA
import base64
import nacl.public
import os
@ -167,7 +166,6 @@ class Onion(object):
# Assigned later if we are using stealth mode
self.auth_string = None
self.auth_string_v3 = None
# Keep track of onions where it's important to gracefully close to prevent truncated downloads
self.graceful_close_onions = []
@ -586,22 +584,6 @@ class Onion(object):
callable(list_ephemeral_hidden_services) and self.tor_version >= "0.2.7.1"
)
# Do the versions of stem and tor that I'm using support v2 stealth onion services?
try:
res = self.c.create_ephemeral_hidden_service(
{1: 1},
basic_auth={"onionshare": None},
await_publication=False,
key_type="NEW",
key_content="RSA1024",
)
tmp_service_id = res.service_id
self.c.remove_ephemeral_hidden_service(tmp_service_id)
self.supports_stealth = True
except:
# ephemeral stealth onion services are not supported
self.supports_stealth = False
# Do the versions of stem and tor that I'm using support v3 stealth onion services?
try:
res = self.c.create_ephemeral_hidden_service(
@ -614,20 +596,16 @@ class Onion(object):
)
tmp_service_id = res.service_id
self.c.remove_ephemeral_hidden_service(tmp_service_id)
self.supports_stealth_v3 = True
self.supports_stealth = True
except:
# ephemeral v3 stealth onion services are not supported
self.supports_stealth_v3 = False
self.supports_stealth = False
# Does this version of Tor support next-gen ('v3') onions?
# Note, this is the version of Tor where this bug was fixed:
# https://trac.torproject.org/projects/tor/ticket/28619
self.supports_v3_onions = self.tor_version >= Version("0.3.5.7")
# Does this version of Tor support legacy ('v2') onions?
# v2 onions have been phased out as of Tor 0.4.6.1.
self.supports_v2_onions = self.tor_version < Version("0.4.6.1")
def is_authenticated(self):
"""
@ -650,85 +628,45 @@ class Onion(object):
"Your version of Tor is too old, ephemeral onion services are not supported"
)
raise TorTooOldEphemeral()
if mode_settings.get("general", "client_auth") and not self.supports_stealth:
print(
"Your version of Tor is too old, stealth onion services are not supported"
)
raise TorTooOldStealth()
if mode_settings.get("general", "client_auth_v3") and not self.supports_stealth_v3:
print(
"Your version of Tor is too old, stealth v3 onion services are not supported"
)
raise TorTooOldStealth()
auth_cookie = None
if mode_settings.get("general", "client_auth"):
if mode_settings.get("onion", "hidservauth_string"):
auth_cookie = mode_settings.get("onion", "hidservauth_string").split()[
2
]
if auth_cookie:
basic_auth = {"onionshare": auth_cookie}
else:
# If we had neither a scheduled auth cookie or a persistent hidservauth string,
# set the cookie to 'None', which means Tor will create one for us
basic_auth = {"onionshare": None}
else:
# Not using client auth at all
basic_auth = None
client_auth_v3_pub_key = None
if mode_settings.get("onion", "private_key"):
key_content = mode_settings.get("onion", "private_key")
if self.is_v2_key(key_content) and self.supports_v2_onions:
key_type = "RSA1024"
else:
# Assume it was a v3 key. Stem will throw an error if it's something illegible
key_type = "ED25519-V3"
key_type = "ED25519-V3"
else:
key_content = "ED25519-V3"
key_type = "NEW"
# Work out if we can support v3 onion services, which are preferred
if self.supports_v3_onions and not mode_settings.get("general", "legacy") and not self.supports_v2_onions:
key_content = "ED25519-V3"
else:
# fall back to v2 onion services
key_content = "RSA1024"
if (
(key_type == "ED25519-V3"
or key_content == "ED25519-V3")
and mode_settings.get("general", "client_auth_v3")
):
if key_type == "NEW" or not mode_settings.get("onion", "client_auth_v3_priv_key"):
# Generate a new key pair for Client Auth on new onions, or if
# it's a persistent onion but for some reason we don't them
client_auth_v3_priv_key_raw = nacl.public.PrivateKey.generate()
client_auth_v3_priv_key = self.key_str(client_auth_v3_priv_key_raw)
client_auth_v3_pub_key = self.key_str(client_auth_v3_priv_key_raw.public_key)
else:
# These should have been saved in settings from the previous run of a persistent onion
client_auth_v3_priv_key = mode_settings.get("onion", "client_auth_v3_priv_key")
client_auth_v3_pub_key = mode_settings.get("onion", "client_auth_v3_pub_key")
self.common.log(
"Onion", "start_onion-service", f"ClientAuthV3 private key (for Tor Browser: {client_auth_v3_priv_key}"
)
self.common.log(
"Onion", "start_onion-service", f"ClientAuthV3 public key (for Onion service: {client_auth_v3_pub_key}"
)
# basic_auth is only for v2 onions
basic_auth = None
debug_message = f"key_type={key_type}"
if key_type == "NEW":
debug_message += f", key_content={key_content}"
self.common.log("Onion", "start_onion_service", debug_message)
if mode_settings.get("general", "client_auth"):
if not self.supports_stealth:
print(
"Your version of Tor is too old, stealth onion services are not supported"
)
raise TorTooOldStealth()
else:
if key_type == "NEW" or not mode_settings.get("onion", "client_auth_v3_priv_key"):
# Generate a new key pair for Client Auth on new onions, or if
# it's a persistent onion but for some reason we don't them
client_auth_v3_priv_key_raw = nacl.public.PrivateKey.generate()
client_auth_v3_priv_key = self.key_str(client_auth_v3_priv_key_raw)
client_auth_v3_pub_key = self.key_str(client_auth_v3_priv_key_raw.public_key)
else:
# These should have been saved in settings from the previous run of a persistent onion
client_auth_v3_priv_key = mode_settings.get("onion", "client_auth_v3_priv_key")
client_auth_v3_pub_key = mode_settings.get("onion", "client_auth_v3_pub_key")
else:
client_auth_v3_priv_key = None
client_auth_v3_pub_key = None
try:
res = self.c.create_ephemeral_hidden_service(
{80: port},
await_publication=await_publication,
basic_auth=basic_auth,
basic_auth=None,
key_type=key_type,
key_content=key_content,
client_auth_v3=client_auth_v3_pub_key,
@ -750,25 +688,20 @@ class Onion(object):
# Save the private key and hidservauth string
if not mode_settings.get("onion", "private_key"):
mode_settings.set("onion", "private_key", res.private_key)
if mode_settings.get("general", "client_auth") and not mode_settings.get(
"onion", "hidservauth_string"
):
auth_cookie = list(res.client_auth.values())[0]
self.auth_string = f"HidServAuth {onion_host} {auth_cookie}"
mode_settings.set("onion", "hidservauth_string", self.auth_string)
# If using V3 onions and Client Auth, save both the private and public key
# because we need to send the public key to ADD_ONION, and the private key
# to the other user for their Tor Browser.
if mode_settings.get("general", "client_auth_v3"):
# because we need to send the public key to ADD_ONION (if we restart this
# same share at a later date), and the private key to the other user for
# their Tor Browser.
if mode_settings.get("general", "client_auth"):
mode_settings.set("onion", "client_auth_v3_priv_key", client_auth_v3_priv_key)
mode_settings.set("onion", "client_auth_v3_pub_key", client_auth_v3_pub_key)
# If we were pasting the client auth directly into the filesystem behind a Tor client,
# it would need to be in the format below. However, let's just set the private key
# by itself, as this can be pasted directly into Tor Browser, which is likely to
# be the most common use case.
# self.auth_string_v3 = f"{onion_host}:x25519:{client_auth_v3_priv_key}"
self.auth_string_v3 = client_auth_v3_priv_key
# self.auth_string = f"{onion_host}:x25519:{client_auth_v3_priv_key}"
self.auth_string = client_auth_v3_priv_key
return onion_host
@ -900,15 +833,3 @@ class Onion(object):
return ("127.0.0.1", 9150)
else:
return (self.settings.get("socks_address"), self.settings.get("socks_port"))
def is_v2_key(self, key):
"""
Helper function for determining if a key is RSA1024 (v2) or not.
"""
try:
# Import the key
key = RSA.importKey(base64.b64decode(key))
# Is this a v2 Onion key? (1024 bits) If so, we should keep using it.
return key.n.bit_length() == 1024
except:
return False

View File

@ -83,9 +83,6 @@ class OnionShare(object):
if mode_settings.get("general", "client_auth"):
self.auth_string = self.onion.auth_string
if mode_settings.get("general", "client_auth_v3"):
self.auth_string_v3 = self.onion.auth_string_v3
def stop_onion_service(self, mode_settings):
"""
Stop the onion service

42
cli/poetry.lock generated
View File

@ -278,14 +278,6 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.20"
[[package]]
category = "main"
description = "Cryptographic library for Python"
name = "pycryptodome"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "3.10.1"
[[package]]
category = "main"
description = "Python binding to the Networking and Cryptography (NaCl) library"
@ -473,7 +465,7 @@ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
[metadata]
content-hash = "ace423d1b657b80c33a6fddb308d7d2a458847cfb14630c17da256c9e50f1f1d"
content-hash = "8c04afd6b4605961ef8da2340c99f1d3dabc790bca8b57c1bdfb3e29130dc94d"
python-versions = "^3.6"
[metadata.files]
@ -710,38 +702,6 @@ pycparser = [
{file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
{file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
]
pycryptodome = [
{file = "pycryptodome-3.10.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1c5e1ca507de2ad93474be5cfe2bfa76b7cf039a1a32fc196f40935944871a06"},
{file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6260e24d41149268122dd39d4ebd5941e9d107f49463f7e071fd397e29923b0c"},
{file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:3f840c49d38986f6e17dbc0673d37947c88bc9d2d9dba1c01b979b36f8447db1"},
{file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:2dea65df54349cdfa43d6b2e8edb83f5f8d6861e5cf7b1fbc3e34c5694c85e27"},
{file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:e61e363d9a5d7916f3a4ce984a929514c0df3daf3b1b2eb5e6edbb131ee771cf"},
{file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2603c98ae04aac675fefcf71a6c87dc4bb74a75e9071ae3923bbc91a59f08d35"},
{file = "pycryptodome-3.10.1-cp27-cp27m-win32.whl", hash = "sha256:38661348ecb71476037f1e1f553159b80d256c00f6c0b00502acac891f7116d9"},
{file = "pycryptodome-3.10.1-cp27-cp27m-win_amd64.whl", hash = "sha256:1723ebee5561628ce96748501cdaa7afaa67329d753933296321f0be55358dce"},
{file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:77997519d8eb8a4adcd9a47b9cec18f9b323e296986528186c0e9a7a15d6a07e"},
{file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:99b2f3fc51d308286071d0953f92055504a6ffe829a832a9fc7a04318a7683dd"},
{file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e0a4d5933a88a2c98bbe19c0c722f5483dc628d7a38338ac2cb64a7dbd34064b"},
{file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d3d6958d53ad307df5e8469cc44474a75393a434addf20ecd451f38a72fe29b8"},
{file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:a8eb8b6ea09ec1c2535bf39914377bc8abcab2c7d30fa9225eb4fe412024e427"},
{file = "pycryptodome-3.10.1-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:31c1df17b3dc5f39600a4057d7db53ac372f492c955b9b75dd439f5d8b460129"},
{file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_i686.whl", hash = "sha256:a3105a0eb63eacf98c2ecb0eb4aa03f77f40fbac2bdde22020bb8a536b226bb8"},
{file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:a92d5c414e8ee1249e850789052608f582416e82422502dc0ac8c577808a9067"},
{file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:60386d1d4cfaad299803b45a5bc2089696eaf6cdd56f9fc17479a6f89595cfc8"},
{file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:501ab36aae360e31d0ec370cf5ce8ace6cb4112060d099b993bc02b36ac83fb6"},
{file = "pycryptodome-3.10.1-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:fc7489a50323a0df02378bc2fff86eb69d94cc5639914346c736be981c6a02e7"},
{file = "pycryptodome-3.10.1-cp35-abi3-win32.whl", hash = "sha256:9b6f711b25e01931f1c61ce0115245a23cdc8b80bf8539ac0363bdcf27d649b6"},
{file = "pycryptodome-3.10.1-cp35-abi3-win_amd64.whl", hash = "sha256:7fd519b89585abf57bf47d90166903ec7b43af4fe23c92273ea09e6336af5c07"},
{file = "pycryptodome-3.10.1-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:09c1555a3fa450e7eaca41ea11cd00afe7c91fef52353488e65663777d8524e0"},
{file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:758949ca62690b1540dfb24ad773c6da9cd0e425189e83e39c038bbd52b8e438"},
{file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:e3bf558c6aeb49afa9f0c06cee7fb5947ee5a1ff3bd794b653d39926b49077fa"},
{file = "pycryptodome-3.10.1-pp27-pypy_73-win32.whl", hash = "sha256:f977cdf725b20f6b8229b0c87acb98c7717e742ef9f46b113985303ae12a99da"},
{file = "pycryptodome-3.10.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6d2df5223b12437e644ce0a3be7809471ffa71de44ccd28b02180401982594a6"},
{file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:98213ac2b18dc1969a47bc65a79a8fca02a414249d0c8635abb081c7f38c91b6"},
{file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:12222a5edc9ca4a29de15fbd5339099c4c26c56e13c2ceddf0b920794f26165d"},
{file = "pycryptodome-3.10.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:6bbf7fee7b7948b29d7e71fcacf48bac0c57fb41332007061a933f2d996f9713"},
{file = "pycryptodome-3.10.1.tar.gz", hash = "sha256:3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673"},
]
pynacl = [
{file = "PyNaCl-1.4.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff"},
{file = "PyNaCl-1.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514"},

View File

@ -22,7 +22,6 @@ flask = "*"
flask-httpauth = "*"
flask-socketio = "*"
psutil = "*"
pycryptodome = "*"
pysocks = "*"
requests = {extras = ["socks"], version = "^2.25.1"}
stem = "*"

View File

@ -22,12 +22,9 @@
"gui_receive_stop_server": "Staak Ontvangmodus",
"gui_receive_stop_server_autostop_timer": "Staak Ontvangmodus ({} oorblywend)",
"gui_copy_url": "Kopieer Adres",
"gui_copy_hidservauth": "Kopieer HidServAuth",
"gui_canceled": "Gekanselleer",
"gui_copied_url_title": "OnionShare-adres Gekopieer",
"gui_copied_url": "OnionShare-adres na knipbord gekopieer",
"gui_copied_hidservauth_title": "HidServAuth Gekopieer",
"gui_copied_hidservauth": "HidServAuth-reël na knipbord gekopieer",
"gui_waiting_to_start": "Geskeduleer om oor {} te begin. Klik om te kanselleer.",
"gui_please_wait": "Begin… Klik om te kanselleer.",
"gui_quit_title": "Nie so haastig nie",
@ -42,7 +39,6 @@
"gui_settings_window_title": "Instellings",
"gui_settings_whats_this": "<a href='{0:s}'>Wat is dit?</a>",
"gui_settings_stealth_option": "Gebruik kliëntmagtiging",
"gui_settings_stealth_hidservauth_string": "Deur u privaat sleutel vir herbruik bewaar te hê kan u nou klik om u HidServAuth te kopieer.",
"gui_settings_autoupdate_label": "Soek na nuwe weergawe",
"gui_settings_autoupdate_option": "Laat my weet wanneer n nuwe weergawe beskikbaar is",
"gui_settings_autoupdate_timestamp": "Laas gesoek: {}",

View File

@ -45,14 +45,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -70,7 +67,6 @@
"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": "",

View File

@ -44,14 +44,11 @@
"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": "OnionShare تمّ نسخ عنوان",
"gui_copied_url": "تمّ نسخ عوان اونينشير إلى الحافظة",
"gui_copied_hidservauth_title": "تم نسخ مُصادقة الخدمة المخفية",
"gui_copied_hidservauth": "تم نسخ سطر مصادقة الخدمة المخفية إلى الحافظة",
"gui_please_wait": "جاري البدء… اضغط هنا للإلغاء.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "الإعدادات",
"gui_settings_whats_this": "<a href='{0:s}'>ما هذا؟</a>",
"gui_settings_stealth_option": "فعّل استيثاق العميل",
"gui_settings_stealth_hidservauth_string": "بحفظ مفتاحك السّرّيّ لاستعماله لاحقًا صار بوسعك النقر هنا لنسخ HidServAuth.",
"gui_settings_autoupdate_label": "تحقق من وجود إصدار الجديد",
"gui_settings_autoupdate_option": "أخطرني عند وجود إصدارة أحدث",
"gui_settings_autoupdate_timestamp": "تاريخ آخر تحقُق: {}",
@ -283,4 +279,4 @@
"gui_color_mode_changed_notice": "يُرجى إعادة تشغيل OnionShare من أجل تطبيق المظهر باللون الجديد.",
"gui_open_folder_error": "فشل فتح ملف باستخدام xdg-open. الملف هنا: {}",
"gui_chat_url_description": "<b>أي شخص </b> يوجد معه عنوان OnionShare يمكنه <b>الانضمام إلى غرفة المحادثة هذه </b> باستخدام متصفح تور <b>Tor Browser</b><img src='{}' />"
}
}

View File

@ -45,14 +45,11 @@
"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": "OnionShare адресът е копиран",
"gui_copied_url": "OnionShare адресът е копиран към клипборда",
"gui_copied_hidservauth_title": "HidServAuth е копиран",
"gui_copied_hidservauth": "HidServAuth редът е копиран към клипборда",
"gui_please_wait": "Започва... кликни за отменяне.",
"gui_download_upload_progress_complete": "%p%, {0:s} изтече.",
"gui_download_upload_progress_starting": "{0:s}, %p% (изчисляване)",
@ -70,7 +67,6 @@
"gui_settings_window_title": "Настройки",
"gui_settings_whats_this": "<a href='{0:s}'>Какво е това?</a>",
"gui_settings_stealth_option": "Използвайте клиент ауторизация (наследствен)",
"gui_settings_stealth_hidservauth_string": "След като Вашия частен ключ бе запазен за повторна употреба, можете сега да кликнете, за да копирате Вашия HidServAuth.",
"gui_settings_autoupdate_label": "Провери за нова версия",
"gui_settings_autoupdate_option": "Уведоми ме, когато е налице нова версия",
"gui_settings_autoupdate_timestamp": "Последна проверка: {}",

View File

@ -45,14 +45,11 @@
"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": "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": "",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Atura el mode de recepció (queden {})",
"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",
"gui_no_downloads": "No n'hi ha cap",
"gui_canceled": "S'ha cancel·lat",
"gui_copied_url_title": "S'ha copiat l'adreça OnionShare",
"gui_copied_url": "S'ha copiat l'adreça OnionShare al porta-retalls",
"gui_copied_hidservauth_title": "S'ha copiat el HidServAuth",
"gui_copied_hidservauth": "S'ha copiat la línia HidServAuth al porta-retalls",
"gui_please_wait": "S'està iniciant… Feu clic per a cancel·lar.",
"gui_download_upload_progress_complete": "Han passat %p%, {0:s}.",
"gui_download_upload_progress_starting": "{0:s}, %p% (s'està calculant)",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Paràmetres",
"gui_settings_whats_this": "<a href='{0:s}'>Què és això?</a>",
"gui_settings_stealth_option": "Fes servir autorització de client",
"gui_settings_stealth_hidservauth_string": "Ara que ja heu desat la clau privada per a reutilitzar-la, podeu fer clic per a copiar el HidServAuth.",
"gui_settings_autoupdate_label": "Comprova si hi ha versions noves",
"gui_settings_autoupdate_option": "Notifica'm si hi ha una actualització disponible",
"gui_settings_autoupdate_timestamp": "Última comprovació: {}",

View File

@ -24,12 +24,9 @@
"gui_receive_stop_server_autostop_timer": "Mod ya wergirtinê betal bike ({} maye)",
"gui_receive_flatpak_data_dir": "Ji ber tu Onionshare bi rêya Flatpak bar kir, pêwîste tu belge di dosyayek di nav ~/OnionShare qeyd bikî.",
"gui_copy_url": "Malper kopî bike",
"gui_copy_hidservauth": "HidServAuth kopî bike",
"gui_canceled": "Betal bû",
"gui_copied_url_title": "Malpera OnionShare kopî bû",
"gui_copied_url": "Malpera OnionShare lis ser taxtê kopî bû",
"gui_copied_hidservauth_title": "HidServAuth kopî bû",
"gui_copied_hidservauth": " HidServAuth xet li ser taxtê kopî bû",
"gui_show_url_qr_code": "QR kod nîşan bide",
"gui_qr_code_dialog_title": "OnionShare QR kod",
"gui_waiting_to_start": "Pilankirî ye di {} destpê bike. Bitkîne ji bo betal bike.",

View File

@ -20,11 +20,9 @@
"gui_share_start_server": "Spustit sdílení",
"gui_share_stop_server": "Zastavit sdílení",
"gui_copy_url": "Kopírovat URL",
"gui_copy_hidservauth": "Kopírovat HidServAuth",
"gui_downloads": "Historie stahování",
"gui_canceled": "Zrušeno",
"gui_copied_url": "URL zkopírováno do schránky",
"gui_copied_hidservauth": "HidServAuth zkopírováno do schránky",
"gui_please_wait": "Spouštění... Klikněte pro zrušení.",
"gui_download_upload_progress_complete": "%p%, Uplynulý čas: {0:s}",
"gui_download_upload_progress_starting": "{0:s}, %p% (Computing ETA)",
@ -78,11 +76,9 @@
"gui_receive_start_server": "Spustit mód přijímání",
"gui_receive_stop_server": "Zastavit přijímání",
"gui_receive_stop_server_autostop_timer": "Zastavit mód přijímání ({} zbývá)",
"gui_copied_hidservauth_title": "Zkopírovaný HidServAuth token",
"gui_copied_url_title": "OnionShare Address zkopírována",
"gui_quit_title": "Ne tak rychle",
"gui_settings_stealth_option": "Autorizace klienta",
"gui_settings_stealth_hidservauth_string": "Uložení priváního klíče pro znovu použití znamená, že teď můžete zkopírovat Váš HidServAuth.",
"gui_settings_autoupdate_label": "Kontrola nové verze",
"gui_settings_autoupdate_option": "Upozornit na dostupnost nové verze",
"gui_settings_autoupdate_timestamp": "Poslední kontrola {}",

View File

@ -33,11 +33,9 @@
"gui_share_start_server": "Begynd at dele",
"gui_share_stop_server": "Stop deling",
"gui_copy_url": "Kopiér adresse",
"gui_copy_hidservauth": "Kopiér HidServAuth",
"gui_downloads": "Downloadhistorik",
"gui_canceled": "Annulleret",
"gui_copied_url": "OnionShare-adressen blev kopieret til udklipsholderen",
"gui_copied_hidservauth": "HidServAuth-linjen blev kopieret til udklipsholderen",
"gui_please_wait": "Starter ... klik for at annullere.",
"gui_download_upload_progress_complete": ".",
"gui_download_upload_progress_starting": "{0:s}, %p% (udregner anslået ankomsttid)",
@ -52,7 +50,6 @@
"error_ephemeral_not_supported": "OnionShare kræver mindst både Tor 0.2.7.1 og python3-stem 1.4.0.",
"gui_settings_window_title": "Indstillinger",
"gui_settings_stealth_option": "Brug klientautentifikation",
"gui_settings_stealth_hidservauth_string": "Ved at have gemt din private nøgle til at blive brugt igen, betyder det at du nu kan klikke for at kopiere din HidServAuth.",
"gui_settings_autoupdate_label": "Søg efter ny version",
"gui_settings_autoupdate_option": "Giv mig besked når der findes en ny version",
"gui_settings_autoupdate_timestamp": "Sidste søgning: {}",
@ -113,7 +110,6 @@
"share_via_onionshare": "Del via OnionShare",
"gui_save_private_key_checkbox": "Brug en vedvarende adresse",
"gui_copied_url_title": "Kopierede OnionShare-adresse",
"gui_copied_hidservauth_title": "Kopierede HidServAuth",
"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)",

View File

@ -34,9 +34,7 @@
"systray_download_completed_message": "Der Benutzer hat deine Dateien heruntergeladen",
"systray_download_canceled_title": "OnionShare Download abgebrochen",
"systray_download_canceled_message": "Der Benutzer hat den Download abgebrochen",
"gui_copy_hidservauth": "HidServAuth kopieren",
"gui_canceled": "Abgebrochen",
"gui_copied_hidservauth_title": "HidServAuth kopiert",
"gui_quit_warning_quit": "Beenden",
"gui_quit_warning_dont_quit": "Abbrechen",
"gui_settings_window_title": "Einstellungen",
@ -83,7 +81,6 @@
"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",
"gui_download_upload_progress_complete": "%p%, {0:s} vergangen.",
"gui_download_upload_progress_starting": "{0:s}, %p% (berechne)",
"gui_download_upload_progress_eta": "{0:s}, Voraussichtliche Dauer: {1:s}, %p%",
@ -171,7 +168,6 @@
"gui_settings_language_changed_notice": "Starte OnionShare neu, damit die neue Sprache übernommen wird.",
"help_config": "Ort deiner eigenen JSON Konfigurationsdatei (optional)",
"timeout_upload_still_running": "Warte bis Upload vollständig ist",
"gui_settings_stealth_hidservauth_string": "Da dein privater Schlüssel jetzt gespeichert wurde, um ihn später erneut zu nutzen, kannst du jetzt klicken, 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_autostop_timer": "Die Zeit ist abgelaufen, bevor der Server gestartet werden konnte. Bitte starte einen erneuten Teilvorgang.",

View File

@ -44,14 +44,11 @@
"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": "Η διεύθυνση OnionShare αντιγράφτηκε",
"gui_copied_url": "Η διεύθυνση OnionShare αντιγράφτηκε στον πίνακα",
"gui_copied_hidservauth_title": "Το HidServAuth αντιγράφτηκε",
"gui_copied_hidservauth": "Το HidServAuth αντιγράφτηκε στον πίνακα",
"gui_please_wait": "Ξεκινάμε... Κάντε κλικ για ακύρωση.",
"gui_download_upload_progress_complete": "%p%, {0:s} πέρασαν.",
"gui_download_upload_progress_starting": "{0:s}, %p% (υπολογισμός)",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Ρυθμίσεις",
"gui_settings_whats_this": "<a href='{0:s}'>Τί είναι αυτό;</a>",
"gui_settings_stealth_option": "Χρήση εξουσιοδότησης πελάτη",
"gui_settings_stealth_hidservauth_string": "Έχοντας αποθηκεύσει το ιδιωτικό σας κλειδί για επαναχρησιμοποίηση, μπορείτε πλέον να επιλέξετε την αντιγραφή του HidServAuth σας.",
"gui_settings_autoupdate_label": "Έλεγχος για νέα έκδοση",
"gui_settings_autoupdate_option": "Ενημερώστε με όταν είναι διαθέσιμη μια νέα έκδοση",
"gui_settings_autoupdate_timestamp": "Τελευταίος έλεγχος: {}",

View File

@ -24,13 +24,10 @@
"gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({} remaining)",
"gui_receive_flatpak_data_dir": "Because you installed OnionShare using Flatpak, you must save files to a folder in ~/OnionShare.",
"gui_copy_url": "Copy Address",
"gui_copy_hidservauth": "Copy HidServAuth",
"gui_copy_client_auth_v3": "Copy ClientAuth",
"gui_canceled": "Canceled",
"gui_copied_url_title": "Copied OnionShare Address",
"gui_copied_url": "OnionShare address copied to clipboard",
"gui_copied_hidservauth_title": "Copied HidServAuth",
"gui_copied_hidservauth": "HidServAuth line copied to clipboard",
"gui_copied_client_auth_v3_title": "Copied ClientAuth",
"gui_copied_client_auth_v3": "ClientAuth private key copied to clipboard",
"gui_show_url_qr_code": "Show QR Code",
@ -71,7 +68,7 @@
"gui_settings_button_save": "Save",
"gui_settings_button_cancel": "Cancel",
"gui_settings_button_help": "Help",
"settings_test_success": "Connected to the Tor controller.\n\nTor version: {}\nSupports ephemeral onion services: {}.\nSupports legacy .onion addresses: {}.\nSupports v2 client authentication: {}.\nSupports next-gen .onion addresses: {}.\nSupports next-gen client authentication: {}.",
"settings_test_success": "Connected to the Tor controller.\n\nTor version: {}\nSupports ephemeral onion services: {}.\nSupports client authentication: {}.\nSupports next-gen .onion addresses: {}.",
"connecting_to_tor": "Connecting to the Tor network",
"update_available": "New OnionShare out. <a href='{}'>Click here</a> to get it.<br><br>You are using {} and the latest is {}.",
"update_error_invalid_latest_version": "Could not check for new version: The OnionShare website is saying the latest version is the unrecognizable '{}'…",
@ -87,6 +84,7 @@
"gui_server_autostop_timer_expired": "The auto-stop timer already ran out. Please adjust it to start sharing.",
"gui_server_autostart_timer_expired": "The scheduled time has already passed. Please adjust 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 adjust it to start sharing.",
"gui_server_doesnt_support_stealth": "Sorry, this version of Tor doesn't support stealth (Client Authorization). Please try with a newer version of Tor.",
"share_via_onionshare": "Share via OnionShare",
"gui_share_url_description": "<b>Anyone</b> with this OnionShare address can <b>download</b> your files using the <b>Tor Browser</b>: <img src='{}' />",
"gui_website_url_description": "<b>Anyone</b> with this OnionShare address can <b>visit</b> your website using the <b>Tor Browser</b>: <img src='{}' />",
@ -173,8 +171,7 @@
"mode_settings_public_checkbox": "Don't use a password",
"mode_settings_autostart_timer_checkbox": "Start onion service at scheduled time",
"mode_settings_autostop_timer_checkbox": "Stop onion service at scheduled time",
"mode_settings_legacy_checkbox": "Use a legacy address (v2 onion service, not recommended)",
"mode_settings_client_auth_checkbox": "Use client authorization",
"mode_settings_client_auth_v3_checkbox": "Use client authorization",
"mode_settings_share_autostop_sharing_checkbox": "Stop sharing after files have been sent (uncheck to allow downloading individual files)",
"mode_settings_receive_data_dir_label": "Save files to",
"mode_settings_receive_data_dir_browse_button": "Browse",

View File

@ -20,11 +20,9 @@
"gui_share_start_server": "Komenci kundividon",
"gui_share_stop_server": "Ĉesigi kundividon",
"gui_copy_url": "Kopii URL",
"gui_copy_hidservauth": "Kopii HidServAuth",
"gui_downloads": "Elŝutoj:",
"gui_canceled": "Nuligita",
"gui_copied_url": "URL kopiita en tondujon",
"gui_copied_hidservauth": "Copied HidServAuth line to clipboard",
"gui_please_wait": "Bonvolu atendi...",
"gui_download_upload_progress_complete": "%p%, Tempo pasinta: {0:s}",
"gui_download_upload_progress_starting": "{0:s}, %p% (Computing ETA)",

View File

@ -28,7 +28,6 @@
"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 OnionShare Copiada",
"gui_copied_hidservauth": "Línea HidServAuth copiada al portapapeles",
"gui_please_wait": "Comenzando… Clic para cancelar.",
"gui_quit_title": "No tan rápido",
"error_rate_limit": "Alguien ha intentado adivinar tu contraseña demasiadas veces, por lo que OnionShare ha detenido al servidor. Inicia la compartición de nuevo y envía una dirección nueva al receptor.",
@ -37,7 +36,6 @@
"error_ephemeral_not_supported": "OnionShare necesita por lo menos Tor 0.2.7.1 y python3-stem 1.4.0.",
"gui_settings_window_title": "Configuración",
"gui_settings_stealth_option": "Utilizar autorización de cliente",
"gui_settings_stealth_hidservauth_string": "Habiendo guardado tu clave privada para reutilizarla, ahora puedes hacer clic para copiar tu HidServAuth.",
"gui_settings_autoupdate_label": "Comprobar nuevas versiones",
"gui_settings_autoupdate_option": "Notifícame cuando haya una versión nueva disponible",
"gui_settings_autoupdate_check_button": "Comprobar Nueva Versión",
@ -66,10 +64,8 @@
"gui_receive_stop_server": "Detener Modo de Recepción",
"gui_receive_stop_server_autostop_timer": "Detener Modo de Recepción (quedan {})",
"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",
"gui_copied_hidservauth_title": "HidServAuth Copiada",
"settings_error_unknown": "No se puede conectar al controlador Tor porque tu configuración no tiene sentido.",
"settings_error_automatic": "No se puede conectar al controlador Tor. ¿Se está ejecutando el Navegador Tor (disponible en torproject.org) en segundo plano?",
"settings_error_socket_port": "No se puede conectar al controlador Tor en {}:{}.",

View File

@ -44,14 +44,11 @@
"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": "آدرس 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": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "تنظیمات",
"gui_settings_whats_this": "<a href='{0:s}'>این چیست؟</a>",
"gui_settings_stealth_option": "استفاده از احراز هویت کلاینت",
"gui_settings_stealth_hidservauth_string": "ذخیره کردن کلید خصوصی برای استفاده دوباره، بدین معناست که الان می‌توانید برای کپی HidServAuth کلیک کنید.",
"gui_settings_autoupdate_label": "بررسی برای نسخه جدید",
"gui_settings_autoupdate_option": "زمانی که نسخه جدید موجود بود من را خبر کن",
"gui_settings_autoupdate_timestamp": "آخرین بررسی: {}",

View File

@ -41,10 +41,7 @@
"gui_receive_stop_server": "Lopeta vastaanottotila",
"gui_receive_stop_server_autostop_timer": "Lopeta vastaanottotila ({} 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?",
@ -57,7 +54,6 @@
"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: {}",

View File

@ -22,7 +22,6 @@
"gui_share_start_server": "Commencer le partage",
"gui_share_stop_server": "Arrêter le partage",
"gui_copy_url": "Copier ladresse",
"gui_copy_hidservauth": "Copier HidServAuth",
"gui_downloads": "Historique de téléchargement",
"gui_canceled": "Annulé",
"gui_copied_url": "Ladresse OnionShare a été copiée dans le presse-papiers",
@ -38,7 +37,6 @@
"not_a_readable_file": "{0:s} nest pas un fichier lisible.",
"timeout_download_still_running": "En attente de la fin du téléchargement",
"systray_download_completed_message": "La personne a terminé de télécharger vos fichiers",
"gui_copied_hidservauth_title": "HidServAuth a été copié",
"gui_settings_window_title": "Paramètres",
"gui_settings_autoupdate_timestamp": "Dernière vérification : {}",
"gui_settings_close_after_first_download_option": "Arrêter le partage après lenvoi des fichiers",
@ -58,7 +56,6 @@
"connecting_to_tor": "Connexion au réseau Tor",
"help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)",
"large_filesize": "Avertissement : Lenvoi dun partage volumineux peut prendre des heures",
"gui_copied_hidservauth": "La ligne HidServAuth a été copiée dans le presse-papiers",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"zip_progress_bar_format": "Compression : %p %",
"error_ephemeral_not_supported": "OnionShare exige au moins et Tor 0.2.7.1 et python3-stem 1.4.0.",
@ -156,7 +153,6 @@
"error_stealth_not_supported": "Pour utiliser lautorisation client, Tor 0.2.9.1-alpha (ou le Navigateur Tor 6.5) et python3-stem 1.5.0 ou versions ultérieures sont exigés.",
"gui_settings_stealth_option": "Utiliser lautorisation du client",
"timeout_upload_still_running": "En attente de la fin de l'envoi",
"gui_settings_stealth_hidservauth_string": "Lenregistrement de votre clé privée pour réutilisation signifie que vous pouvez maintenant cliquer pour copier votre HidServAuth.",
"gui_settings_autoupdate_check_button": "Vérifier la présence dune nouvelle version",
"settings_test_success": "Vous êtes connecté au contrôleur Tor.\n\nVersion de Tor : {}\nPrend en charge les services onion éphémères : {}.\nPrend en charge lauthentification client : {}.\nPrend en charge la nouvelle génération dadresses .onion : {}.",
"update_error_check_error": "Impossible de vérifier lexistence dune mise à jour : peut-être nêtes-vous pas connecté à Tor ou le site Web dOnionShare est-il hors service?",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Stop an Mód Glactha ({} 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",
"gui_no_downloads": "Níl aon rud íoslódáilte agat fós",
"gui_canceled": "Curtha ar ceal",
"gui_copied_url_title": "Cóipeáladh an Seoladh OnionShare",
"gui_copied_url": "Cóipeáladh an seoladh OnionShare go dtí an ghearrthaisce",
"gui_copied_hidservauth_title": "Cóipeáladh HidServAuth",
"gui_copied_hidservauth": "Cóipeáladh an líne HidServAuth go dtí an ghearrthaisce",
"gui_please_wait": "Ag tosú... Cliceáil lena chur ar ceal.",
"gui_download_upload_progress_complete": "%[%, {0:s} caite.",
"gui_download_upload_progress_starting": "{0:s}, %p% (á áireamh)",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Socruithe",
"gui_settings_whats_this": "<a href='{0:s}'>Cad é seo</a>",
"gui_settings_stealth_option": "Úsáid údarú cliaint",
"gui_settings_stealth_hidservauth_string": "Toisc gur shábháil tú d'eochair phríobháideach, anois is féidir leat cliceáil chun an HidServAuth a chóipeáil.",
"gui_settings_autoupdate_label": "Lorg nuashonruithe",
"gui_settings_autoupdate_option": "Cuir in iúl dom nuair a bheidh leagan nua ar fáil",
"gui_settings_autoupdate_timestamp": "Seiceáilte: {}",

View File

@ -24,12 +24,9 @@
"gui_receive_stop_server_autostop_timer": "Deter o modo Recepción ({} restante)",
"gui_receive_flatpak_data_dir": "Debido a que instalaches OnionShare usando Flatpk, tes que gardar os ficheiros nun cartafol dentro de ~/OnionShare.",
"gui_copy_url": "Copiar enderezo",
"gui_copy_hidservauth": "Copiar HidServAuth",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "Enderezo de OnionShare copiado",
"gui_copied_url": "Enderezo OnionShare copiado ó portapapeis",
"gui_copied_hidservauth_title": "HidServAuth copiado",
"gui_copied_hidservauth": "Liña HidServAuth copiada ó portapapeis",
"gui_show_url_qr_code": "Mostrar código QR",
"gui_qr_code_dialog_title": "Código QR OnionShare",
"gui_waiting_to_start": "Programado para comezar en {}. Fai clic para cancelar.",

View File

@ -45,14 +45,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -70,7 +67,6 @@
"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": "",

View File

@ -47,14 +47,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -72,7 +69,6 @@
"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": "",

View File

@ -36,12 +36,9 @@
"gui_receive_stop_server_autostop_timer": "रिसीव मोड बंद करें ({} remaining)",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "पता कॉपी करें",
"gui_copy_hidservauth": "HidServAuth कॉपी करें",
"gui_canceled": "रद्द हो गया",
"gui_copied_url_title": "OnionShare पता कॉपी हो गया",
"gui_copied_url": "OnionShare पता क्लिपबोर्ड में कॉपी हो गया",
"gui_copied_hidservauth_title": "HidServAuth कॉपी हो गया",
"gui_copied_hidservauth": "HidServAuth लाइन क्लिपबोर्ड में कॉपी हो गया",
"gui_please_wait": "शुरू हो रहा है... रद्द करने के लिए क्लिक करें।",
"version_string": "",
"gui_quit_title": "इतनी तेज़ी से नहीं",
@ -56,7 +53,6 @@
"gui_settings_window_title": "सेटिंग्स",
"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": "अंतिम जांच: {}",

View File

@ -22,12 +22,9 @@
"gui_receive_stop_server": "Zaustavi modus primanja",
"gui_receive_stop_server_autostop_timer": "Zaustavi modus primanja ({} preostalo)",
"gui_copy_url": "Kopiraj adresu",
"gui_copy_hidservauth": "Kopiraj HidServAuth",
"gui_canceled": "Prekinuto",
"gui_copied_url_title": "OnionShare adresa je kopirana",
"gui_copied_url": "OnionShare adresa je kopirana u međuspremnik",
"gui_copied_hidservauth_title": "HidServAuth kopirano",
"gui_copied_hidservauth": "HidServAuth redak je kopiran u međuspremnik",
"gui_waiting_to_start": "Planirano pokretanje za {}. Pritisni za prekid.",
"gui_please_wait": "Pokretanje … Pritisni za prekid.",
"gui_quit_title": "Ne tako brzo",
@ -42,7 +39,6 @@
"gui_settings_window_title": "Postavke",
"gui_settings_whats_this": "<a href='{0:s}'>Što je ovo?</a>",
"gui_settings_stealth_option": "Koristi autorizaciju klijenta",
"gui_settings_stealth_hidservauth_string": "Budući da je privatni ključ spremljen za ponovnu upotrebu, znači da sada možeš kopirati tvoj HidServAuth.",
"gui_settings_autoupdate_label": "Traži nove verzije",
"gui_settings_autoupdate_option": "Obavijesti me o novim verzijama",
"gui_settings_autoupdate_timestamp": "Zadnja provjera: {}",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Fogadó mód leállítása ({} van hátra)",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "Cím másolása",
"gui_copy_hidservauth": "HidServAuth másolása",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Megszakítva",
"gui_copied_url_title": "OnionShare-cím másolva",
"gui_copied_url": "OnionShare-cím a vágólapra másolva",
"gui_copied_hidservauth_title": "HidServAuth másolva",
"gui_copied_hidservauth": "HidServAuth-sor a vágólapra másolva",
"gui_please_wait": "Indítás... Kattints a megszakításhoz.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Beállítások",
"gui_settings_whats_this": "<a href='{0:s}'>Mi ez?</a>",
"gui_settings_stealth_option": "Kliens-hitelesítés használata",
"gui_settings_stealth_hidservauth_string": "Mivel elmentetted a titkos kulcsodat, mostantól kattintással másolhatod a HivServAuth-odat.",
"gui_settings_autoupdate_label": "Új verzió keresése",
"gui_settings_autoupdate_option": "Értesítést kérek, ha új verzió érhető el",
"gui_settings_autoupdate_timestamp": "Utoljára ellenőrizve: {}",

View File

@ -44,14 +44,11 @@
"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": "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": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Pengaturan",
"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: {}",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Hætta í móttökuham ({} eftir)",
"gui_receive_stop_server_autostop_timer_tooltip": "Sjálfvirk niðurtalning endar {}",
"gui_copy_url": "Afrita vistfang",
"gui_copy_hidservauth": "Afrita HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Hætt við",
"gui_copied_url_title": "Afritaði OnionShare-vistfang",
"gui_copied_url": "OnionShare-vistfang afritað á klippispjald",
"gui_copied_hidservauth_title": "Afritaði HidServAuth",
"gui_copied_hidservauth": "HidServAuth-lína afrituð á klippispjald",
"gui_please_wait": "Ræsi... Smelltu til að hætta við.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Stillingar",
"gui_settings_whats_this": "<a href='{0:s}'>Hvað er þetta?</a>",
"gui_settings_stealth_option": "Nota auðkenningu biðlaraforrits",
"gui_settings_stealth_hidservauth_string": "Ef þú hefur vistað einkalykil til endurnotkunar, þýðir að þú getur nú smellt til að afrita HidServAuth.",
"gui_settings_autoupdate_label": "Athuga með nýja útgáfu",
"gui_settings_autoupdate_option": "Láta vita þegar ný útgáfa er tiltæk",
"gui_settings_autoupdate_timestamp": "Síðast athugað: {}",

View File

@ -48,11 +48,8 @@
"gui_receive_stop_server": "Arresta modalità Ricezione",
"gui_receive_stop_server_autostop_timer": "Interrompi la ricezione ({} 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",
"gui_copied_hidservauth_title": "HidServAuth copiato",
"gui_copied_hidservauth": "Linea HidServAuth copiata negli appunti",
"gui_download_upload_progress_complete": "%p%, {0:s} trascorsi.",
"gui_download_upload_progress_starting": "{0:s}, %p% (calcolato)",
"gui_download_upload_progress_eta": "{0:s}, Terminando in: {1:s}, %p%",
@ -69,7 +66,6 @@
"gui_settings_whats_this": "<a href='{0:s}'>Cos'è questo?</a>",
"help_receive": "Ricevi le condivisioni invece di inviarle",
"gui_settings_stealth_option": "Usa l'autorizzazione client (legacy)",
"gui_settings_stealth_hidservauth_string": "Avendo salvato la tua chiave privata per il riutilizzo, puoi cliccare per copiare il tuo HidServAuth.",
"gui_settings_autoupdate_label": "Verifica se c'è una nuova versione",
"gui_settings_autoupdate_option": "Avvisami quando è disponibile una nuova versione",
"gui_settings_autoupdate_timestamp": "Ultimo controllo: {}",

View File

@ -47,14 +47,11 @@
"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": "OnionShareのアドレスをコピーしました",
"gui_copied_url": "OnionShareのアドレスをクリップボードへコピーしました",
"gui_copied_hidservauth_title": "HidServAuthをコピーしました",
"gui_copied_hidservauth": "HidServAuthの行をクリップボードへコピーしました",
"gui_please_wait": "実行中… クリックでキャンセルします。",
"gui_download_upload_progress_complete": "%p%、 経過時間 ({0:s})。",
"gui_download_upload_progress_starting": "{0:s}, %p% (計算中)",
@ -72,7 +69,6 @@
"gui_settings_window_title": "設定",
"gui_settings_whats_this": "<a href='{0:s}'>これは何ですか?</a>",
"gui_settings_stealth_option": "クライアント認証を使用",
"gui_settings_stealth_hidservauth_string": "秘密鍵を保存したので、クリックしてHidServAuthをコピーできます。",
"gui_settings_autoupdate_label": "更新バージョンの有無をチェックする",
"gui_settings_autoupdate_option": "更新通知を起動します",
"gui_settings_autoupdate_timestamp": "前回にチェックした時: {}",

View File

@ -44,14 +44,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"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": "",

View File

@ -21,12 +21,9 @@
"gui_receive_stop_server": "",
"gui_receive_stop_server_autostop_timer": "",
"gui_copy_url": "",
"gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
"gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_waiting_to_start": "",
"gui_please_wait": "",
"gui_quit_title": "",
@ -41,7 +38,6 @@
"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": "",

View File

@ -45,14 +45,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -70,7 +67,6 @@
"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": "",

View File

@ -45,14 +45,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -70,7 +67,6 @@
"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": "",

View File

@ -22,12 +22,9 @@
"gui_receive_stop_server": "Išjungti gavimo veikseną",
"gui_receive_stop_server_autostop_timer": "Išjungti gavimo veikseną (Liko {})",
"gui_copy_url": "Kopijuoti adresą",
"gui_copy_hidservauth": "Kopijuoti HidServAuth",
"gui_canceled": "Atsisakyta",
"gui_copied_url_title": "OnionShare adresas nukopijuotas",
"gui_copied_url": "OnionShare adresas nukopijuotas į iškarpinę",
"gui_copied_hidservauth_title": "HidServAuth nukopijuota",
"gui_copied_hidservauth": "HidServAuth eilutė nukopijuota į iškarpinę",
"gui_waiting_to_start": "",
"gui_please_wait": "Pradedama… Spustelėkite norėdami atsisakyti.",
"error_rate_limit": "",
@ -37,7 +34,6 @@
"gui_settings_window_title": "Nustatymai",
"gui_settings_whats_this": "<a href='{0:s}'>Kas tai?</a>",
"gui_settings_stealth_option": "",
"gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "Tikrinti, ar yra nauja versija",
"gui_settings_autoupdate_option": "Pranešti, kai bus prieinama nauja versija",
"gui_settings_autoupdate_timestamp": "",

View File

@ -44,14 +44,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"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": "",

View File

@ -36,12 +36,9 @@
"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": "",
@ -56,7 +53,6 @@
"gui_settings_window_title": "Tetapan",
"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": "",

View File

@ -45,13 +45,10 @@
"gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({} 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",
"gui_no_downloads": "Ingen nedlastinger enda.",
"gui_canceled": "Avbrutt",
"gui_copied_url_title": "Kopierte OnionShare-adressen",
"gui_copied_hidservauth_title": "Kopierte HidServAuth",
"gui_copied_hidservauth": "HidServAuth-linje kopiert til utklippstavle",
"gui_please_wait": "Starter… Klikk for å avbryte.",
"gui_download_upload_progress_complete": "%p%, {0:s} forløpt.",
"gui_download_upload_progress_starting": "{0:s}, %p% (regner ut)",
@ -69,7 +66,6 @@
"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å 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: {}",

View File

@ -31,11 +31,9 @@
"gui_delete": "Verwijder",
"gui_choose_items": "Kies",
"gui_copy_url": "Kopieer URL",
"gui_copy_hidservauth": "Kopieer HidServAuth",
"gui_downloads": "Download Geschiedenis",
"gui_canceled": "Afgebroken",
"gui_copied_url": "OnionShare adres gekopieerd naar klembord",
"gui_copied_hidservauth": "HidServAuth regel gekopieerd naar klembord",
"gui_please_wait": "Aan het starten... Klik om te annuleren.",
"gui_download_upload_progress_complete": "%p%, {0:s} verstreken.",
"gui_download_upload_progress_starting": "{0:s}, %p% (berekenen)",
@ -116,11 +114,9 @@
"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",
"gui_quit_title": "Niet zo snel",
"gui_receive_quit_warning": "Je bent in het proces van bestanden ontvangen. Weet je zeker dat je OnionShare af wilt sluiten?",
"gui_settings_whats_this": "<a href='{0:s}'>1Wat is dit?</a>2",
"gui_settings_stealth_hidservauth_string": "Je privésleutel is voor hergebruik opgeslagen. Je kunt nu klikken om je HidServAuth te kopiëren.",
"gui_settings_general_label": "Algemene instellingen",
"gui_settings_tor_bridges": "Tor bridge ondersteuning",
"gui_settings_tor_bridges_no_bridges_radio_option": "Gebruik geen bridges",

View File

@ -44,14 +44,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"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": "",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Zatrzymaj tryb odbierania (pozostało {})",
"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",
"gui_no_downloads": "Nie pobrano jeszcze niczego",
"gui_canceled": "Anulowano",
"gui_copied_url_title": "Skopiowano adres URL OnionShare",
"gui_copied_url": "Adres URL OnionShare został skopiowany do schowka",
"gui_copied_hidservauth_title": "Skopiowano HidServAuth",
"gui_copied_hidservauth": "Linijka HidServAuth została skopiowana do schowka",
"gui_please_wait": "Rozpoczynam... Kliknij, aby zatrzymać.",
"gui_download_upload_progress_complete": "%p%, {0:s} upłynęło.",
"gui_download_upload_progress_starting": "{0:s}, %p% (obliczam)",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Ustawienia",
"gui_settings_whats_this": "<a href='{0:s}'>Co to jest?</a>",
"gui_settings_stealth_option": "Użyj autoryzacji klienta",
"gui_settings_stealth_hidservauth_string": "Po zapisaniu klucza prywatnego do ponownego użycia, możesz teraz kliknąć, aby skopiować HidServAuth.",
"gui_settings_autoupdate_label": "Sprawdź nową wersję",
"gui_settings_autoupdate_option": "Poinformuj mnie, kiedy nowa wersja programu będzie dostępna",
"gui_settings_autoupdate_timestamp": "Ostatnie sprawdzenie aktualizacji: {}",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Parar o Modo Recepção ({} 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",
"gui_no_downloads": "Nenhum download por enquanto",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "O endereço OnionShare foi copiado",
"gui_copied_url": "O endereço OnionShare foi copiado para a área de transferência",
"gui_copied_hidservauth_title": "O HidServAuth foi copiado",
"gui_copied_hidservauth": "A linha HidServAuth foi copiada na área de transferência",
"gui_please_wait": "Começando... Clique para cancelar.",
"gui_download_upload_progress_complete": "%p%, {0:s} decorridos.",
"gui_download_upload_progress_starting": "{0:s}, %p% (calculando)",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Configurações",
"gui_settings_whats_this": "<a href='{0:s}'>O que é isso?</a>",
"gui_settings_stealth_option": "Usar autorização de cliente",
"gui_settings_stealth_hidservauth_string": "Após salvar a sua chave privada para reutilização, você pode clicar para copiar o seu HidServAuth.",
"gui_settings_autoupdate_label": "Procurar por uma nova versão",
"gui_settings_autoupdate_option": "Notificar-me quando uma nova versão estiver disponível",
"gui_settings_autoupdate_timestamp": "Última verificação: {}",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Parar Modo de Receber ({} restantes)",
"gui_receive_stop_server_autostop_timer_tooltip": "O cronómetro automático de parar a partilha termina em {}",
"gui_copy_url": "Copiar Endereço",
"gui_copy_hidservauth": "Copiar HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "Endereço OnionShare Copiado",
"gui_copied_url": "O endereço OnionShare foi copiado para área de transferência",
"gui_copied_hidservauth_title": "HidServAuth Copiado",
"gui_copied_hidservauth": "Linha HidServAuth copiada para a área de transferência",
"gui_please_wait": "A iniciar… Clique para cancelar.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Configurações",
"gui_settings_whats_this": "<a href='{0:s}'>O que é isto?</a>",
"gui_settings_stealth_option": "Utilizar autorização de cliente",
"gui_settings_stealth_hidservauth_string": "Depois de guardar a sua chave privada para reutilização, pode clicar para copiar o seu HidServAuth.",
"gui_settings_autoupdate_label": "Procurar por nova versão",
"gui_settings_autoupdate_option": "Notificar-me quando estiver disponível uma nova versão",
"gui_settings_autoupdate_timestamp": "Última verificação: {}",

View File

@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Opriți modul de primire (au rămas {})",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "Copiere adresă",
"gui_copy_hidservauth": "Copiere HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Anulat",
"gui_copied_url_title": "Adresă OnionShare copiată",
"gui_copied_url": "Adresa OnionShare a fost copiată în memoria clipboard",
"gui_copied_hidservauth_title": "Am copiat HidServAuth",
"gui_copied_hidservauth": "Linia HidServAuth a fost copiată în clipboard",
"gui_please_wait": "Începem ... Faceți clic pentru a anula.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "Setari",
"gui_settings_whats_this": "<a href='{0:s}'>Ce este asta?</a>",
"gui_settings_stealth_option": "Utilizați autorizarea clientului",
"gui_settings_stealth_hidservauth_string": "După ce v-ați salvat cheia privată pentru reutilizare, înseamnă că puteți face clic acum pentru a copia HidServAuth.",
"gui_settings_autoupdate_label": "Verificați dacă există o versiune nouă",
"gui_settings_autoupdate_option": "Anunțați-mă când este disponibilă o nouă versiune",
"gui_settings_autoupdate_timestamp": "Ultima verificare: {}",

View File

@ -66,12 +66,9 @@
"gui_receive_stop_server": "Выключить режим получения",
"gui_receive_stop_server_autostop_timer": "Выключить Режим Получения (осталось {})",
"gui_receive_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
"gui_copy_hidservauth": "Скопировать строку HidServAuth",
"gui_downloads": "История скачиваний",
"gui_no_downloads": "Скачиваний пока нет ",
"gui_copied_url_title": "Адрес OnionShare скопирован",
"gui_copied_hidservauth_title": "Строка HidServAuth скопирована",
"gui_copied_hidservauth": "Строка HidServAuth скопирована в буфер обмена",
"gui_please_wait": "Запуск... Для отмены нажмите здесь.",
"gui_download_upload_progress_complete": "%p%, прошло {0:s}.",
"gui_download_upload_progress_starting": "{0:s}, %p% (вычисляем)",
@ -86,7 +83,6 @@
"error_ephemeral_not_supported": "Для работы OnionShare необходимы как минимум версии Tor 0.2.7.1 и библиотеки python3-stem 1.4.0.",
"gui_settings_whats_this": "<a href='{0:s}'>Что это?</a>",
"gui_settings_stealth_option": "Использовать авторизацию клиента",
"gui_settings_stealth_hidservauth_string": "Сохранили Ваш приватный ключ для повторного использования.\nНажмите сюда, чтобы скопировать строку HidServAuth.",
"gui_settings_autoupdate_label": "Проверить наличие новой версии",
"gui_settings_autoupdate_option": "Уведомить меня, когда будет доступна новая версия",
"gui_settings_autoupdate_timestamp": "Последняя проверка: {}",

View File

@ -24,12 +24,9 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_flatpak_data_dir": "",
"gui_copy_url": "",
"gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
"gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_show_url_qr_code": "",
"gui_qr_code_dialog_title": "",
"gui_waiting_to_start": "",

View File

@ -24,12 +24,9 @@
"gui_receive_stop_server_autostop_timer": "Zastaviť režim prijímania (zostáva {})",
"gui_receive_flatpak_data_dir": "Pretože ste nainštalovali OnionShare pomocou Flatpak, musíte uložiť súbory do priečinka v ~/OnionShare.",
"gui_copy_url": "Kopírovať adresu",
"gui_copy_hidservauth": "Kopírovať HidServAuth",
"gui_canceled": "Zrušené",
"gui_copied_url_title": "Skopírovaná OnionShare adresa",
"gui_copied_url": "OnionShare adresa bola skopírovaná do schránky",
"gui_copied_hidservauth_title": "Skopírovaný HidServAuth",
"gui_copied_hidservauth": "HidServAuth riadok bol skopírovaný do schránky",
"gui_show_url_qr_code": "Zobraziť QR kód",
"gui_qr_code_dialog_title": "OnionShare QR kód",
"gui_qr_code_description": "Naskenujte tento QR kód pomocou čítačky QR, napríklad fotoaparátom na telefóne, aby ste mohli jednoduchšie zdieľať adresu OnionShare s niekým.",

View File

@ -44,14 +44,11 @@
"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": "Odpovedan",
"gui_copied_url_title": "",
"gui_copied_url": "",
"gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"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": "",

View File

@ -47,14 +47,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -72,7 +69,6 @@
"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": "",

View File

@ -22,12 +22,9 @@
"gui_receive_stop_server": "Prekini režim primanja",
"gui_receive_stop_server_autostop_timer": "Prekini režim primanja ({} preostalo)",
"gui_copy_url": "Kopiraj adresu",
"gui_copy_hidservauth": "Kopiraj HidServAuth",
"gui_canceled": "Obustavljeno",
"gui_copied_url_title": "Kopirana OnionShare adresa",
"gui_copied_url": "OnionShare adresa kopirana u privremenu memoriju",
"gui_copied_hidservauth_title": "Kopiran HidServAuth",
"gui_copied_hidservauth": "HidServAuth linija kopirana u privremenu memoriju",
"gui_waiting_to_start": "Planirano da počne u {}. Klikni da obustaviš.",
"gui_please_wait": "Počinje… Klikni da obustaviš.",
"gui_quit_title": "Ne tako brzo",
@ -42,7 +39,6 @@
"gui_settings_window_title": "Podešavanja",
"gui_settings_whats_this": "<a href='{0:s}'>Šta je ovo?</a>",
"gui_settings_stealth_option": "Koristi klijent autorizaciju",
"gui_settings_stealth_hidservauth_string": "Ako si sačuvao svoj privatni ključ za ponovnu upotrenu, sada možeš kliknuti da iskopiraš svoj HidServAuth.",
"gui_settings_autoupdate_label": "Proveri da li postoji nova verzija",
"gui_settings_autoupdate_option": "Obavesti me kada nova verzija bude na raspolaganju",
"gui_settings_autoupdate_timestamp": "Poslednja provera: {}",

View File

@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "Stoppa mottagningsläge ({} 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",
"gui_no_downloads": "Inga Nedladdningar Än",
"gui_canceled": "Avbruten",
"gui_copied_url_title": "OnionShare-adress kopierad",
"gui_copied_url": "OnionShare-adress kopierad till urklipp",
"gui_copied_hidservauth_title": "HidServAuth kopierad",
"gui_copied_hidservauth": "HidServAuth-rad kopierad till urklipp",
"gui_please_wait": "Startar... klicka för att avbryta.",
"gui_download_upload_progress_complete": "%p%, {0:s} förflutit.",
"gui_download_upload_progress_starting": "{0:s}, %p% (beräknar)",
@ -70,7 +67,6 @@
"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 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: {}",

View File

@ -21,12 +21,9 @@
"gui_receive_stop_server": "",
"gui_receive_stop_server_autostop_timer": "",
"gui_copy_url": "",
"gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
"gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_waiting_to_start": "",
"gui_please_wait": "",
"gui_quit_title": "",
@ -41,7 +38,6 @@
"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": "",

View File

@ -21,12 +21,9 @@
"gui_receive_stop_server": "స్వీకరించు రీతిని ఆపివేయి",
"gui_receive_stop_server_autostop_timer": "స్వీకరించు రీతిని ఆపివేయి ({} మిగిలినది)",
"gui_copy_url": "జాల చిరునామాను నకలు తీయి",
"gui_copy_hidservauth": "HidServAuth నకలు తీయి",
"gui_canceled": "రద్దు చేయబడినది",
"gui_copied_url_title": "OnionShare జాల చిరునామా నకలు తీయబడినది",
"gui_copied_url": "OnionShare జాల చిరునామా క్లిప్‌బోర్డునకు నకలు తీయబడినది",
"gui_copied_hidservauth_title": "HidServAuth నకలు తీయబడినది",
"gui_copied_hidservauth": "HidServAuth పంక్తి క్లిప్‌బోర్డునకు నకలు తీయబడినది",
"gui_waiting_to_start": "ఇంకా {}లో మొదలగునట్లు అమర్చబడినది. రద్దుచేయుటకై ఇక్కడ నొక్కు.",
"gui_please_wait": "మొదలుపెట్టబడుతుంది... రద్దు చేయుటకై ఇక్కడ నొక్కు.",
"gui_quit_title": "అంత త్వరగా కాదు",
@ -41,7 +38,6 @@
"gui_settings_window_title": "అమరికలు",
"gui_settings_whats_this": "<a href='{0:s}'>ఇది ఏమిటి?</a>",
"gui_settings_stealth_option": "ఉపయోక్త ధ్రువీకరణను వాడు",
"gui_settings_stealth_hidservauth_string": "మరల వాడుటకై మీ ప్రైవేటు కీని భద్రపరచడం వలన మీరు ఇక్కడ నొక్కడం ద్వారా మీ HidServAuth నకలు తీయవచ్చు.",
"gui_settings_autoupdate_label": "కొత్త రూపాంతరం కోసం సరిచూడు",
"gui_settings_autoupdate_option": "కొత్త రూపాంతరం వస్తే నాకు తెలియచేయి",
"gui_settings_autoupdate_timestamp": "ఇంతకుముందు సరిచూసినది: {}",

View File

@ -41,10 +41,7 @@
"gui_receive_stop_server": "Alma Modunu Durdur",
"gui_receive_stop_server_autostop_timer": "Alma Modunu Durdur ({} kaldı)",
"gui_receive_stop_server_autostop_timer_tooltip": "Otomatik durdurma zamanlayıcısı {} sonra biter",
"gui_copy_hidservauth": "HidServAuth Kopyala",
"gui_copied_url_title": "OnionShare Adresi Kopyalandı",
"gui_copied_hidservauth_title": "HidServAuth Kopyalandı",
"gui_copied_hidservauth": "HidServAuth satırı panoya kopyalandı",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Çok hızlı değil",
"gui_share_quit_warning": "Dosya gönderiyorsunuz. OnionShare uygulamasından çıkmak istediğinize emin misiniz?",
@ -57,7 +54,6 @@
"gui_settings_window_title": "Ayarlar",
"gui_settings_whats_this": "<a href='{0:s}'>Bu nedir?</a>",
"gui_settings_stealth_option": "İstemci kimlik doğrulaması kullanılsın",
"gui_settings_stealth_hidservauth_string": "Özel anahtarınızı yeniden kullanmak üzere kaydettiğinizden, tıklayarak HidServAuth verinizi kopyalabilirsiniz.",
"gui_settings_autoupdate_label": "Yeni sürümü denetle",
"gui_settings_autoupdate_option": "Yeni bir sürüm olduğunda bana haber ver",
"gui_settings_autoupdate_timestamp": "Son denetleme: {}",

View File

@ -21,12 +21,9 @@
"gui_receive_stop_server": "Зупинити режим отримання",
"gui_receive_stop_server_autostop_timer": "Зупинити режим отримання ({} залишилось)",
"gui_copy_url": "Копіювати Адресу",
"gui_copy_hidservauth": "Копіювати HidServAuth",
"gui_canceled": "Скасовано",
"gui_copied_url_title": "Адресу OnionShare копійовано",
"gui_copied_url": "Адресу OnionShare копійовано до буферу обміну",
"gui_copied_hidservauth_title": "Скопійовано HidServAuth",
"gui_copied_hidservauth": "Рядок HidServAuth копійовано до буфера обміну",
"gui_waiting_to_start": "Заплановано почати за {}. Натисніть для скасування.",
"gui_please_wait": "Початок... Натисніть для скасування.",
"gui_quit_title": "Не так швидко",
@ -41,7 +38,6 @@
"gui_settings_window_title": "Налаштування",
"gui_settings_whats_this": "<a href='{0:s}'>Що це?</a>",
"gui_settings_stealth_option": "Використовувати авторизацію клієнта",
"gui_settings_stealth_hidservauth_string": "Зберігши свій закритий ключ для повторного користування, ви можете копіювати HidServAuth.",
"gui_settings_autoupdate_label": "Перевірити наявність оновлень",
"gui_settings_autoupdate_option": "Повідомляти про наявність нової версії",
"gui_settings_autoupdate_timestamp": "Попередня перевірка: {}",

View File

@ -44,14 +44,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -69,7 +66,6 @@
"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": "",

View File

@ -45,14 +45,11 @@
"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_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@ -70,7 +67,6 @@
"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": "",

View File

@ -44,14 +44,11 @@
"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": "已复制 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": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "设置",
"gui_settings_whats_this": "<a href='{0:s}'>这是什么?</a>",
"gui_settings_stealth_option": "使用客户端认证",
"gui_settings_stealth_hidservauth_string": "已保存您的私钥用于重复使用,这意味着您现在可以点击以复制您的 HidServAuth。",
"gui_settings_autoupdate_label": "检查新版本",
"gui_settings_autoupdate_option": "新版本可用时通知我",
"gui_settings_autoupdate_timestamp": "上次检查更新时间:{}",

View File

@ -44,14 +44,11 @@
"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": "已複製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": "",
@ -69,7 +66,6 @@
"gui_settings_window_title": "設定",
"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": "上一次檢查時間: {}",

View File

@ -695,10 +695,8 @@ class SettingsDialog(QtWidgets.QDialog):
strings._("settings_test_success").format(
onion.tor_version,
onion.supports_ephemeral,
onion.supports_v2_onions,
onion.supports_stealth,
onion.supports_v3_onions,
onion.supports_stealth_v3,
),
)

View File

@ -239,13 +239,21 @@ class Mode(QtWidgets.QWidget):
self.start_onion_thread()
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()
# If we tried to start with Client Auth and our Tor is too old to support it,
# bail out early
if not self.app.onion.supports_stealth and self.settings.get("general", "client_auth"):
self.stop_server()
self.start_server_error(
strings._("gui_server_doesnt_support_stealth")
)
else:
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

View File

@ -129,36 +129,14 @@ class ModeSettingsWidget(QtWidgets.QWidget):
autostop_timer_layout.addWidget(self.autostop_timer_checkbox)
autostop_timer_layout.addWidget(self.autostop_timer_widget)
# Legacy address
self.legacy_checkbox = QtWidgets.QCheckBox()
self.legacy_checkbox.clicked.connect(self.legacy_checkbox_clicked)
self.legacy_checkbox.clicked.connect(self.update_ui)
self.legacy_checkbox.setText(strings._("mode_settings_legacy_checkbox"))
if self.settings.get("general", "legacy"):
self.legacy_checkbox.setCheckState(QtCore.Qt.Checked)
else:
self.legacy_checkbox.setCheckState(QtCore.Qt.Unchecked)
# Client auth (v2)
self.client_auth_checkbox = QtWidgets.QCheckBox()
self.client_auth_checkbox.clicked.connect(self.client_auth_checkbox_clicked)
self.client_auth_checkbox.clicked.connect(self.update_ui)
self.client_auth_checkbox.setText(
strings._("mode_settings_client_auth_checkbox")
)
if self.settings.get("general", "client_auth"):
self.client_auth_checkbox.setCheckState(QtCore.Qt.Checked)
else:
self.client_auth_checkbox.setCheckState(QtCore.Qt.Unchecked)
# Client auth (v3)
self.client_auth_v3_checkbox = QtWidgets.QCheckBox()
self.client_auth_v3_checkbox.clicked.connect(self.client_auth_v3_checkbox_clicked)
self.client_auth_v3_checkbox.clicked.connect(self.update_ui)
self.client_auth_v3_checkbox.setText(
strings._("mode_settings_client_auth_checkbox")
strings._("mode_settings_client_auth_v3_checkbox")
)
if self.settings.get("general", "client_auth_v3"):
if self.settings.get("general", "client_auth"):
self.client_auth_v3_checkbox.setCheckState(QtCore.Qt.Checked)
else:
self.client_auth_v3_checkbox.setCheckState(QtCore.Qt.Unchecked)
@ -177,8 +155,6 @@ class ModeSettingsWidget(QtWidgets.QWidget):
advanced_layout.addLayout(title_layout)
advanced_layout.addLayout(autostart_timer_layout)
advanced_layout.addLayout(autostop_timer_layout)
advanced_layout.addWidget(self.legacy_checkbox)
advanced_layout.addWidget(self.client_auth_checkbox)
advanced_layout.addWidget(self.client_auth_v3_checkbox)
self.advanced_widget = QtWidgets.QWidget()
self.advanced_widget.setLayout(advanced_layout)
@ -205,33 +181,6 @@ class ModeSettingsWidget(QtWidgets.QWidget):
strings._("mode_settings_advanced_toggle_show")
)
# v2 client auth is only a legacy option
if self.client_auth_checkbox.isChecked():
self.legacy_checkbox.setChecked(True)
self.legacy_checkbox.setEnabled(False)
self.client_auth_v3_checkbox.hide()
else:
self.legacy_checkbox.setEnabled(True)
if self.legacy_checkbox.isChecked():
self.client_auth_checkbox.show()
self.client_auth_v3_checkbox.hide()
else:
self.client_auth_checkbox.hide()
self.client_auth_v3_checkbox.show()
# If the server has been started in the past, prevent changing legacy option
if self.settings.get("onion", "private_key"):
if self.legacy_checkbox.isChecked():
# If using legacy, disable legacy and client auth options
self.legacy_checkbox.setEnabled(False)
self.client_auth_checkbox.setEnabled(False)
self.client_auth_v3_checkbox.hide()
else:
# If using v3, hide legacy and client auth options, show v3 client auth option
self.legacy_checkbox.hide()
self.client_auth_checkbox.hide()
self.client_auth_v3_checkbox.show()
def title_editing_finished(self):
if self.title_lineedit.text().strip() == "":
self.title_lineedit.setText("")
@ -293,17 +242,9 @@ class ModeSettingsWidget(QtWidgets.QWidget):
else:
self.autostop_timer_widget.hide()
def legacy_checkbox_clicked(self):
self.settings.set("general", "legacy", self.legacy_checkbox.isChecked())
def client_auth_checkbox_clicked(self):
self.settings.set(
"general", "client_auth", self.client_auth_checkbox.isChecked()
)
def client_auth_v3_checkbox_clicked(self):
self.settings.set(
"general", "client_auth_v3", self.client_auth_v3_checkbox.isChecked()
"general", "client_auth", self.client_auth_v3_checkbox.isChecked()
)
def toggle_advanced_clicked(self):

View File

@ -38,7 +38,6 @@ class ServerStatus(QtWidgets.QWidget):
server_canceled = QtCore.Signal()
button_clicked = QtCore.Signal()
url_copied = QtCore.Signal()
hidservauth_copied = QtCore.Signal()
client_auth_v3_copied = QtCore.Signal()
STATUS_STOPPED = 0
@ -96,9 +95,6 @@ class ServerStatus(QtWidgets.QWidget):
self.common.gui.css["server_status_url_buttons"]
)
self.copy_url_button.clicked.connect(self.copy_url)
self.copy_hidservauth_button = QtWidgets.QPushButton(
strings._("gui_copy_hidservauth")
)
self.copy_client_auth_v3_button = QtWidgets.QPushButton(
strings._("gui_copy_client_auth_v3")
)
@ -113,10 +109,6 @@ class ServerStatus(QtWidgets.QWidget):
self.common.gui.css["server_status_url_buttons"]
)
self.copy_hidservauth_button.setStyleSheet(
self.common.gui.css["server_status_url_buttons"]
)
self.copy_hidservauth_button.clicked.connect(self.copy_hidservauth)
self.copy_client_auth_v3_button.setStyleSheet(
self.common.gui.css["server_status_url_buttons"]
)
@ -124,7 +116,6 @@ class ServerStatus(QtWidgets.QWidget):
url_buttons_layout = QtWidgets.QHBoxLayout()
url_buttons_layout.addWidget(self.copy_url_button)
url_buttons_layout.addWidget(self.show_url_qr_code_button)
url_buttons_layout.addWidget(self.copy_hidservauth_button)
url_buttons_layout.addWidget(self.copy_client_auth_v3_button)
url_buttons_layout.addStretch()
@ -223,11 +214,6 @@ class ServerStatus(QtWidgets.QWidget):
self.show_url_qr_code_button.show()
if self.settings.get("general", "client_auth"):
self.copy_hidservauth_button.show()
else:
self.copy_hidservauth_button.hide()
if self.settings.get("general", "client_auth_v3"):
self.copy_client_auth_v3_button.show()
else:
self.copy_client_auth_v3_button.hide()
@ -260,7 +246,6 @@ class ServerStatus(QtWidgets.QWidget):
self.url_description.hide()
self.url.hide()
self.copy_url_button.hide()
self.copy_hidservauth_button.hide()
self.copy_client_auth_v3_button.hide()
self.show_url_qr_code_button.hide()
@ -460,21 +445,12 @@ class ServerStatus(QtWidgets.QWidget):
self.url_copied.emit()
def copy_hidservauth(self):
"""
Copy the HidServAuth line to the clipboard.
"""
clipboard = self.qtapp.clipboard()
clipboard.setText(self.app.auth_string)
self.hidservauth_copied.emit()
def copy_client_auth_v3(self):
"""
Copy the ClientAuth v3 private key line to the clipboard.
"""
clipboard = self.qtapp.clipboard()
clipboard.setText(self.app.auth_string_v3)
clipboard.setText(self.app.auth_string)
self.client_auth_v3_copied.emit()

View File

@ -275,7 +275,6 @@ class Tab(QtWidgets.QWidget):
self.share_mode.start_server_finished.connect(self.clear_message)
self.share_mode.server_status.button_clicked.connect(self.clear_message)
self.share_mode.server_status.url_copied.connect(self.copy_url)
self.share_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth)
self.share_mode.server_status.client_auth_v3_copied.connect(self.copy_client_auth_v3)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_share"))
@ -311,9 +310,6 @@ class Tab(QtWidgets.QWidget):
self.receive_mode.start_server_finished.connect(self.clear_message)
self.receive_mode.server_status.button_clicked.connect(self.clear_message)
self.receive_mode.server_status.url_copied.connect(self.copy_url)
self.receive_mode.server_status.hidservauth_copied.connect(
self.copy_hidservauth
)
self.receive_mode.server_status.client_auth_v3_copied.connect(
self.copy_client_auth_v3
)
@ -351,9 +347,6 @@ class Tab(QtWidgets.QWidget):
self.website_mode.start_server_finished.connect(self.clear_message)
self.website_mode.server_status.button_clicked.connect(self.clear_message)
self.website_mode.server_status.url_copied.connect(self.copy_url)
self.website_mode.server_status.hidservauth_copied.connect(
self.copy_hidservauth
)
self.website_mode.server_status.client_auth_v3_copied.connect(
self.copy_client_auth_v3
)
@ -389,7 +382,6 @@ class Tab(QtWidgets.QWidget):
self.chat_mode.start_server_finished.connect(self.clear_message)
self.chat_mode.server_status.button_clicked.connect(self.clear_message)
self.chat_mode.server_status.url_copied.connect(self.copy_url)
self.chat_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth)
self.chat_mode.server_status.client_auth_v3_copied.connect(self.copy_client_auth_v3)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_chat"))
@ -602,16 +594,6 @@ class Tab(QtWidgets.QWidget):
strings._("gui_copied_url_title"), strings._("gui_copied_url")
)
def copy_hidservauth(self):
"""
When the stealth onion service HidServAuth gets copied to the clipboard, display this in the status bar.
"""
self.common.log("Tab", "copy_hidservauth")
self.system_tray.showMessage(
strings._("gui_copied_hidservauth_title"),
strings._("gui_copied_hidservauth"),
)
def copy_client_auth_v3(self):
"""
When the v3 onion service ClientAuth private key gets copied to the clipboard, display this in the status bar.