summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2019-03-25 13:43:08 +1100
committerMiguel Jacq <mig@mig5.net>2019-03-25 13:43:08 +1100
commit49285e047c43d97bf9c87a00859ecf74685f9228 (patch)
treef86e3e288bea43a80115f89c2b945e519787067b
parentbd774ab448c37cad19f29f69eeb3ae30be1c3f73 (diff)
parentc1023647d1850c64a20514721d4397ff3c360671 (diff)
downloadonionshare-49285e047c43d97bf9c87a00859ecf74685f9228.tar.gz
onionshare-49285e047c43d97bf9c87a00859ecf74685f9228.zip
Fix conflicts
-rw-r--r--install/onionshare.desktop2
-rw-r--r--onionshare/__init__.py4
-rw-r--r--onionshare/onion.py16
-rw-r--r--onionshare/web/receive_mode.py13
-rw-r--r--share/locale/ar.json123
-rw-r--r--share/locale/bn.json114
-rw-r--r--share/locale/da.json2
-rw-r--r--share/locale/de.json22
-rw-r--r--share/locale/en.json1
-rw-r--r--share/locale/fi.json184
-rw-r--r--share/locale/fr.json2
-rw-r--r--share/locale/hi.json184
-rw-r--r--share/locale/id.json125
-rw-r--r--share/locale/it.json4
-rw-r--r--share/locale/ms.json184
-rw-r--r--share/locale/no.json5
-rw-r--r--share/locale/pt_BR.json7
-rw-r--r--share/locale/sv.json27
-rw-r--r--share/locale/zh_Hans.json52
-rw-r--r--share/locale/zh_Hant.json227
-rw-r--r--share/static/css/style.css14
-rw-r--r--share/static/img/warning.pngbin0 -> 804 bytes
-rw-r--r--share/templates/403.html29
-rw-r--r--share/templates/404.html29
-rw-r--r--share/templates/denied.html17
-rw-r--r--share/templates/receive.html42
-rw-r--r--share/templates/receive_noscript_xss.html4
-rw-r--r--share/templates/send.html105
-rw-r--r--share/templates/thankyou.html39
-rw-r--r--tests/GuiReceiveTest.py25
-rw-r--r--tests/local_onionshare_receive_mode_sender_closed_test.py26
-rw-r--r--tests/test_onionshare_web.py2
32 files changed, 1106 insertions, 524 deletions
diff --git a/install/onionshare.desktop b/install/onionshare.desktop
index a0861cf8..697668db 100644
--- a/install/onionshare.desktop
+++ b/install/onionshare.desktop
@@ -7,7 +7,7 @@ Comment[de]=Teile Dateien sicher und anonym über das Tor-Netzwerk
Exec=/usr/bin/onionshare-gui
Terminal=false
Type=Application
-Icon=/usr/share/pixmaps/onionshare80.xpm
+Icon=onionshare80
Categories=Network;FileTransfer;
Keywords=tor;anonymity;privacy;onion service;file sharing;file hosting;
Keywords[da]=tor;anonymitet;privatliv;onion-tjeneste;fildeling;filhosting;
diff --git a/onionshare/__init__.py b/onionshare/__init__.py
index 8f6ca227..616cf9db 100644
--- a/onionshare/__init__.py
+++ b/onionshare/__init__.py
@@ -57,6 +57,7 @@ def main(cwd=None):
parser.add_argument('--stay-open', action='store_true', dest='stay_open', help=strings._("help_stay_open"))
parser.add_argument('--autostart-timer', metavar='<int>', dest='autostart_timer', default=0, help=strings._("help_autostart_timer"))
parser.add_argument('--autostop-timer', metavar='<int>', dest='autostop_timer', default=0, help=strings._("help_autostop_timer"))
+ parser.add_argument('--connect-timeout', metavar='<int>', dest='connect_timeout', default=120, help=strings._("help_connect_timeout"))
parser.add_argument('--stealth', action='store_true', dest='stealth', help=strings._("help_stealth"))
parser.add_argument('--receive', action='store_true', dest='receive', help=strings._("help_receive"))
parser.add_argument('--config', metavar='config', default=False, help=strings._('help_config'))
@@ -73,6 +74,7 @@ def main(cwd=None):
stay_open = bool(args.stay_open)
autostart_timer = int(args.autostart_timer)
autostop_timer = int(args.autostop_timer)
+ connect_timeout = int(args.connect_timeout)
stealth = bool(args.stealth)
receive = bool(args.receive)
config = args.config
@@ -115,7 +117,7 @@ def main(cwd=None):
# Start the Onion object
onion = Onion(common)
try:
- onion.connect(custom_settings=False, config=config)
+ onion.connect(custom_settings=False, config=config, connect_timeout=connect_timeout)
except KeyboardInterrupt:
print("")
sys.exit()
diff --git a/onionshare/onion.py b/onionshare/onion.py
index 8d4e50a0..51336df9 100644
--- a/onionshare/onion.py
+++ b/onionshare/onion.py
@@ -154,7 +154,7 @@ class Onion(object):
# Start out not connected to Tor
self.connected_to_tor = False
- def connect(self, custom_settings=False, config=False, tor_status_update_func=None):
+ def connect(self, custom_settings=False, config=False, tor_status_update_func=None, connect_timeout=120):
self.common.log('Onion', 'connect')
# Either use settings that are passed in, or use them from common
@@ -285,14 +285,16 @@ class Onion(object):
if self.settings.get('tor_bridges_use_custom_bridges') or \
self.settings.get('tor_bridges_use_obfs4') or \
self.settings.get('tor_bridges_use_meek_lite_azure'):
- connect_timeout = 150
- else:
- # Timeout after 120 seconds
- connect_timeout = 120
+ # Only override timeout if a custom timeout has not been passed in
+ if connect_timeout == 120:
+ connect_timeout = 150
if time.time() - start_ts > connect_timeout:
print("")
- self.tor_proc.terminate()
- raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout'))
+ try:
+ self.tor_proc.terminate()
+ raise BundledTorTimeout(strings._('settings_error_bundled_tor_timeout'))
+ except FileNotFoundError:
+ pass
elif self.settings.get('connection_type') == 'automatic':
# Automatically try to guess the right way to connect to Tor Browser
diff --git a/onionshare/web/receive_mode.py b/onionshare/web/receive_mode.py
index d6ef86ad..dcf69a96 100644
--- a/onionshare/web/receive_mode.py
+++ b/onionshare/web/receive_mode.py
@@ -112,12 +112,14 @@ class ReceiveModeWeb(object):
else:
flash(msg, 'info')
else:
+ msg = 'Sent '
for filename in filenames:
- msg = 'Sent {}'.format(filename)
- if ajax:
- info_flashes.append(msg)
- else:
- flash(msg, 'info')
+ msg += '{}, '.format(filename)
+ msg = msg.rstrip(', ')
+ if ajax:
+ info_flashes.append(msg)
+ else:
+ flash(msg, 'info')
if self.can_upload:
if ajax:
@@ -297,6 +299,7 @@ class ReceiveModeRequest(Request):
new_receive_mode_dir = '{}-{}'.format(self.receive_mode_dir, i)
try:
os.makedirs(new_receive_mode_dir, 0o700, exist_ok=False)
+ self.receive_mode_dir = new_receive_mode_dir
break
except OSError:
pass
diff --git a/share/locale/ar.json b/share/locale/ar.json
index 722ffafe..458ae7bb 100644
--- a/share/locale/ar.json
+++ b/share/locale/ar.json
@@ -23,133 +23,133 @@
"systray_download_canceled_message": "الغى المستخدم التحميل",
"systray_upload_started_title": "بدأ الرفع",
"systray_upload_started_message": "بدأ مستخدم رفع ملفات الى حاسوبك",
- "help_local_only": "",
+ "help_local_only": "لا تستخدم تور (فقط لغرض التطوير)",
"help_stay_open": "استمر في المشاركة بعد اول تحميل",
"help_autostop_timer": "أوقف المشاركة بعد ثواني محددة",
"help_stealth": "",
"help_receive": "",
"help_debug": "",
- "help_filename": "",
+ "help_filename": "قائمة الملفات أو المجلدات للمشاركة",
"help_config": "",
"gui_drag_and_drop": "",
"gui_add": "إضافة",
"gui_delete": "حذف",
"gui_choose_items": "إختر",
- "gui_share_start_server": "",
- "gui_share_stop_server": "",
+ "gui_share_start_server": "ابدأ المشاركة",
+ "gui_share_stop_server": "أوقف المشاركة",
"gui_share_stop_server_shutdown_timeout": "",
"gui_share_stop_server_shutdown_timeout_tooltip": "",
"gui_receive_start_server": "",
"gui_receive_stop_server": "",
"gui_receive_stop_server_shutdown_timeout": "",
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
- "gui_copy_url": "",
+ "gui_copy_url": "نسخ العنوان",
"gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "ألغى",
"gui_copied_url_title": "",
- "gui_copied_url": "",
+ "gui_copied_url": "تم نسخ عنوان OnionShare إلى الحافظة",
"gui_copied_hidservauth_title": "",
"gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "",
- "version_string": "",
+ "version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "",
- "gui_share_quit_warning": "",
- "gui_receive_quit_warning": "",
+ "gui_share_quit_warning": "إنك بصدد إرسال ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
+ "gui_receive_quit_warning": "إنك بصدد تلقي ملفات.هل أنت متأكد أنك تريد الخروج مِن OnionShare؟",
"gui_quit_warning_quit": "خروج",
"gui_quit_warning_dont_quit": "إلغاء",
"error_rate_limit": "",
- "zip_progress_bar_format": "",
+ "zip_progress_bar_format": "جاري الضغط: %p%",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "الإعدادات",
- "gui_settings_whats_this": "",
- "gui_settings_stealth_option": "",
+ "gui_settings_whats_this": "<a href='{0:s}'>ما هذا؟</a>",
+ "gui_settings_stealth_option": "استخدام ترخيص العميل",
"gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "التحقق من الإصدار الجديد",
- "gui_settings_autoupdate_option": "",
- "gui_settings_autoupdate_timestamp": "",
+ "gui_settings_autoupdate_option": "قم بإشعاري عند توفر إصدار جديد",
+ "gui_settings_autoupdate_timestamp": "آخر فحص: {}",
"gui_settings_autoupdate_timestamp_never": "أبدا",
- "gui_settings_autoupdate_check_button": "",
+ "gui_settings_autoupdate_check_button": "تحقق من وجود نسخة جديدة",
"gui_settings_general_label": "الإعدادات العامة",
- "gui_settings_sharing_label": "",
- "gui_settings_close_after_first_download_option": "",
- "gui_settings_connection_type_label": "",
- "gui_settings_connection_type_bundled_option": "",
+ "gui_settings_sharing_label": "إعدادات المشاركة",
+ "gui_settings_close_after_first_download_option": "إيقاف المشاركة بعد اكتمال إرسال الملفات",
+ "gui_settings_connection_type_label": "كيف ينبغي أن يتصل OnionShare بشبكة تور؟",
+ "gui_settings_connection_type_bundled_option": "استخدام إصدار تور المدمج في صلب OnionShare",
"gui_settings_connection_type_automatic_option": "",
"gui_settings_connection_type_control_port_option": "",
"gui_settings_connection_type_socket_file_option": "",
- "gui_settings_connection_type_test_button": "",
- "gui_settings_control_port_label": "",
+ "gui_settings_connection_type_test_button": "اختبار الاتصال بشبكة تور",
+ "gui_settings_control_port_label": "منفذ التحكم",
"gui_settings_socket_file_label": "",
"gui_settings_socks_label": "",
- "gui_settings_authenticate_label": "",
+ "gui_settings_authenticate_label": "إعدادات المصادقة على تور",
"gui_settings_authenticate_no_auth_option": "",
"gui_settings_authenticate_password_option": "كلمة السر",
"gui_settings_password_label": "كلمة السر",
- "gui_settings_tor_bridges": "",
- "gui_settings_tor_bridges_no_bridges_radio_option": "",
+ "gui_settings_tor_bridges": "دعم جسر تور",
+ "gui_settings_tor_bridges_no_bridges_radio_option": "لا تستخدم الجسور",
"gui_settings_tor_bridges_obfs4_radio_option": "",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
"gui_settings_meek_lite_expensive_warning": "",
- "gui_settings_tor_bridges_custom_radio_option": "",
+ "gui_settings_tor_bridges_custom_radio_option": "استخدام جسور مخصصة",
"gui_settings_tor_bridges_custom_label": "",
"gui_settings_tor_bridges_invalid": "",
"gui_settings_button_save": "حفظ",
"gui_settings_button_cancel": "إلغاء",
"gui_settings_button_help": "مساعدة",
"gui_settings_shutdown_timeout_checkbox": "",
- "gui_settings_shutdown_timeout": "",
+ "gui_settings_shutdown_timeout": "إيقاف المشاركة يوم:",
"settings_error_unknown": "",
"settings_error_automatic": "",
- "settings_error_socket_port": "",
+ "settings_error_socket_port": "لا يمكن الاتصال بوحدة تحكم تور في {}:{}.",
"settings_error_socket_file": "",
"settings_error_auth": "",
- "settings_error_missing_password": "",
+ "settings_error_missing_password": "متصل بوحدة تحكم تور، ولكنه يتطلب كلمة سرية للمصادقة.",
"settings_error_unreadable_cookie_file": "",
"settings_error_bundled_tor_not_supported": "",
"settings_error_bundled_tor_timeout": "",
"settings_error_bundled_tor_broken": "",
"settings_test_success": "",
- "error_tor_protocol_error": "",
- "error_tor_protocol_error_unknown": "",
- "error_invalid_private_key": "",
- "connecting_to_tor": "",
+ "error_tor_protocol_error": "هناك خطأ مع تور: {}",
+ "error_tor_protocol_error_unknown": "حدث خطأ مجهول مع تور",
+ "error_invalid_private_key": "نوع المفتاح الخاص هذا غير معتمد",
+ "connecting_to_tor": "جارٍ الاتصال بشبكة تور",
"update_available": "",
"update_error_check_error": "",
"update_error_invalid_latest_version": "",
- "update_not_available": "",
+ "update_not_available": "إنك تقوم بتشغيل آخر نسخة مِن OnionShare.",
"gui_tor_connection_ask": "",
"gui_tor_connection_ask_open_settings": "نعم,",
"gui_tor_connection_ask_quit": "خروج",
"gui_tor_connection_error_settings": "",
"gui_tor_connection_canceled": "",
- "gui_tor_connection_lost": "",
+ "gui_tor_connection_lost": "غير متصل بشبكة تور.",
"gui_server_started_after_timeout": "",
"gui_server_timeout_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
- "gui_save_private_key_checkbox": "",
+ "gui_use_legacy_v2_onions_checkbox": "استخدم العناوين الموروثة",
+ "gui_save_private_key_checkbox": "استخدم عنوانا ثابتا",
"gui_share_url_description": "",
"gui_receive_url_description": "",
"gui_url_label_persistent": "",
"gui_url_label_stay_open": "",
"gui_url_label_onetime": "",
"gui_url_label_onetime_and_persistent": "",
- "gui_status_indicator_share_stopped": "",
- "gui_status_indicator_share_working": "",
- "gui_status_indicator_share_started": "",
- "gui_status_indicator_receive_stopped": "",
- "gui_status_indicator_receive_working": "",
+ "gui_status_indicator_share_stopped": "جاهز للمشاركة",
+ "gui_status_indicator_share_working": "يبدأ…",
+ "gui_status_indicator_share_started": "المشاركة جارية",
+ "gui_status_indicator_receive_stopped": "جاهز للتلقي",
+ "gui_status_indicator_receive_working": "يبدأ…",
"gui_status_indicator_receive_started": "جاري الإستلام",
- "gui_file_info": "",
- "gui_file_info_single": "",
+ "gui_file_info": "{} ملفات، {}",
+ "gui_file_info_single": "{} ملف، {}",
"history_in_progress_tooltip": "",
"history_completed_tooltip": "",
"info_in_progress_uploads_tooltip": "",
@@ -159,17 +159,17 @@
"receive_mode_warning": "",
"gui_receive_mode_warning": "",
"receive_mode_upload_starting": "",
- "receive_mode_received_file": "",
- "gui_mode_share_button": "",
- "gui_mode_receive_button": "",
- "gui_settings_receiving_label": "",
+ "receive_mode_received_file": "تم تلقي: {}",
+ "gui_mode_share_button": "مشاركة الملفات",
+ "gui_mode_receive_button": "تلقّي ملفات",
+ "gui_settings_receiving_label": "إعدادات الاستلام",
"gui_settings_downloads_label": "",
"gui_settings_downloads_button": "استعراض",
"gui_settings_receive_allow_receiver_shutdown_checkbox": "",
- "gui_settings_public_mode_checkbox": "",
+ "gui_settings_public_mode_checkbox": "الوضع العام",
"systray_close_server_title": "",
"systray_close_server_message": "",
- "systray_page_loaded_title": "",
+ "systray_page_loaded_title": "تم تحميل الصفحة",
"systray_download_page_loaded_message": "",
"systray_upload_page_loaded_message": "",
"gui_uploads": "",
@@ -180,7 +180,28 @@
"gui_upload_finished": "",
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "",
- "gui_settings_language_label": "",
+ "gui_settings_language_label": "اللغة المفضلة",
"gui_settings_language_changed_notice": "",
- "timeout_upload_still_running": "انتظار اكتمال الرفع"
+ "timeout_upload_still_running": "انتظار اكتمال الرفع",
+ "gui_add_files": "إضافة ملفات",
+ "gui_add_folder": "إضافة مجلد",
+ "gui_settings_onion_label": "إعدادات البصل",
+ "gui_connect_to_tor_for_onion_settings": "اربط الاتصال بشبكة تور لترى إعدادات خدمة البصل",
+ "gui_settings_data_dir_label": "حفظ الملفات على",
+ "gui_settings_data_dir_browse_button": "تصفح",
+ "systray_page_loaded_message": "تم تحميل عنوان OnionShare",
+ "systray_share_started_title": "بدأت المشاركة",
+ "systray_share_started_message": "بدأت عملية إرسال الملفات إلى شخص ما",
+ "systray_share_completed_title": "اكتملت المشاركة",
+ "systray_share_completed_message": "انتهت عملية إرسال الملفات",
+ "systray_share_canceled_title": "ألغيت المشاركة",
+ "systray_share_canceled_message": "شخص ما ألغى استقبال ملفاتك",
+ "systray_receive_started_title": "جاري الاستلام",
+ "systray_receive_started_message": "شخص ما يرسل لك ملفات",
+ "gui_all_modes_history": "السجل الزمني",
+ "gui_all_modes_clear_history": "مسح الكل",
+ "gui_share_mode_no_files": "لم ترسل أية ملفات بعد",
+ "gui_share_mode_timeout_waiting": "في انتظار الانتهاء من الإرسال",
+ "gui_receive_mode_no_files": "لم تتلق أية ملفات بعد",
+ "gui_receive_mode_timeout_waiting": "في انتظار الانتهاء من الاستلام"
}
diff --git a/share/locale/bn.json b/share/locale/bn.json
index c06e22ff..2ac65d47 100644
--- a/share/locale/bn.json
+++ b/share/locale/bn.json
@@ -40,9 +40,9 @@
"gui_share_stop_server": "শেয়ার করা বন্ধ করো",
"gui_share_stop_server_shutdown_timeout": "শেয়ার করা বন্ধ করো ({} সেকেন্ড বাকি)",
"gui_share_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
- "gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন ",
- "gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন ",
- "gui_receive_stop_server_shutdown_timeout": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি) ",
+ "gui_receive_start_server": "প্রাপ্ত মোড আরম্ভ করুন",
+ "gui_receive_stop_server": "প্রাপ্ত মোড বন্ধ করুন",
+ "gui_receive_stop_server_shutdown_timeout": "প্রাপ্ত মোড বন্ধ করুন ({}সে বাকি)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_copy_url": "এড্রেস কপি করো",
"gui_copy_hidservauth": "HidServAuth কপি করো",
@@ -107,69 +107,69 @@
"gui_settings_button_help": "সাহায্য",
"gui_settings_shutdown_timeout_checkbox": "কানেকশন বন্ধ করার জন্য অটোমেটিক টাইমার ব্যবহার করো",
"gui_settings_shutdown_timeout": "শেয়ার বন্ধ করুন:",
- "settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় । ",
+ "settings_error_unknown": "টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না কারণ আপনার বিন্যাসনসমূহ বোধগম্য নয় ।",
"settings_error_automatic": "টর নিয়ন্ত্রকের সাথে সংযোগ স্থাপন করা যায়নি । টর ব্রাউজার (torproject.org থেকে পাওয়া যায়) ব্রাকগ্রাউন চলমান?",
- "settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না । ",
- "settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না । ",
- "settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়? ",
+ "settings_error_socket_port": "{}: {} এ টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারছি না ।",
+ "settings_error_socket_file": "সকেট ফাইল {} ব্যবহার করে টর নিয়ন্ত্রকের সাথে সংযোগ করতে পারে না ।",
+ "settings_error_auth": "{}: {}-এর সাথে সংযুক্ত, কিন্তু পরীক্ষা করা যাচ্ছে না । হয়তো এটা কোন টর নিয়ন্ত্রক নয়?",
"settings_error_missing_password": "টর কন্ট্রোলার সাথে সংযুক্ত, কিন্তু তা প্রমাণীকরণ একটি পাসওয়ার্ড প্রয়োজন.",
- "settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি। ",
+ "settings_error_unreadable_cookie_file": "টর নিয়ন্ত্রকের সাথে সংযুক্ত, কিন্তু পাসওয়ার্ড ভুল হতে পারে, অথবা আপনার ব্যবহারকারীকে কুকি ফাইলে পড়ার অনুমতি দেওয়া হয়নি।",
"settings_error_bundled_tor_not_supported": "OnionShare এর সাথে আসা টর সংস্করণটি ব্যবহার করে উইন্ডোজ বা ম্যাকোসে ডেভেলপার মোডে কাজ করে না।",
"settings_error_bundled_tor_timeout": "টর সাথে সংযোগ করার জন্য খুব বেশি সময় লাগছে। হয়তো আপনি ইন্টারনেটের সাথে সংযুক্ত নন, অথবা একটি ভুল সিস্টেম ঘড়ি আছে?",
"settings_error_bundled_tor_broken": "ব্যাকগ্রাউন্ডে OnionShare টর এর সাথে সংযুক্ত নয়:\n\n\n{}",
- "settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\n\nOnion Services সেবা সমর্থন করে: {}.\n\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\n\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} । ",
- "error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {} ",
+ "settings_test_success": "টর কন্ট্রোলার এর সঙ্গে যুক্ত হয়েছে ।\n\nটর সংস্করণ: {}\nOnion Services সেবা সমর্থন করে: {}.\nক্লায়েন্ট প্রমাণীকরণ সমর্থন করে: {}.\nnext-gen .onion ঠিকানাগুলো সমর্থন করে: {} ।",
+ "error_tor_protocol_error": "টর-এ একটি ত্রুটি ছিল: {}",
"error_tor_protocol_error_unknown": "টর-এ একটি অজানা ত্রুটি আছে",
- "error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত ",
- "connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে ",
- "update_available": "",
- "update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '...",
+ "error_invalid_private_key": "এই ব্যক্তিগত কী ধরন টি অসমর্থিত",
+ "connecting_to_tor": "টর নেটওয়ার্কে সংযুক্ত হচ্ছে",
+ "update_available": "নতুন OnionShare বের হয়েছে । এটি পেতে এখানে <a href='{}'>ক্লিক করুন</a> । <br><br>আপনি {} এবং সাম্প্রতিকতম {} ব্যবহার করছেন ।",
+ "update_error_check_error": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: onionshare ওয়েবসাইট বলছে সাম্প্রতিক সংস্করণটি হচ্ছে অস্বীকৃত ' {} '…",
"update_error_invalid_latest_version": "নতুন সংস্করণের জন্য পরীক্ষা করা যায়নি: হয়তো আপনি টর-এর সাথে সংযুক্ত নন, অথবা OnionShare ওয়েবসাইট বন্ধ আছে?",
"update_not_available": "আপনি সর্বশেষ OnionShare চালাচ্ছেন ।",
"gui_tor_connection_ask": "টর থেকে সংযোগ সাজাতে সেটিংস খুলুন?",
"gui_tor_connection_ask_open_settings": "হ্যাঁ",
"gui_tor_connection_ask_quit": "প্রস্থান করুন",
- "gui_tor_connection_error_settings": " কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
- "gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন । ",
- "gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন । ",
- "gui_server_started_after_timeout": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন. ",
- "gui_server_timeout_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন. ",
- "share_via_onionshare": "এটি OnionShare ",
- "gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন ",
- "gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন ",
- "gui_share_url_description": "",
- "gui_receive_url_description": "",
- "gui_url_label_persistent": "",
- "gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না । ",
- "gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে. ",
- "gui_url_label_onetime_and_persistent": "",
- "gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত ",
- "gui_status_indicator_share_working": "শুরু...",
+ "gui_tor_connection_error_settings": "কিভাবে onionshare সেটিংসে টর নেটওয়ার্ক সংযোগ করে পরিবর্তন করতে চেষ্টা করুন ।",
+ "gui_tor_connection_canceled": "টর-এ সংযোগ করা যায়নি ।\n\nআপনি ইন্টারনেটের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন, তারপর onionshare পুনরায় খুলুন এবং টর এর সংযোগটি সেট আপ করুন ।",
+ "gui_tor_connection_lost": "টর থেকে বিচ্ছিন্ন ।",
+ "gui_server_started_after_timeout": "সার্ভার শুরু হওয়ার আগেই অটো স্টপ টাইমার শেষ হয়ে যায় ।\n\nঅনুগ্রহ করে একটি নতুন শেয়ার তৈরি করুন.",
+ "gui_server_timeout_expired": "অটো-স্টপ টাইমার ইতিমধ্যেই শেষ হয়ে গিয়েছে ।\n\nঅনুগ্রহ করে শেয়ারিং শুরু করতে এটি আপডেট করুন.",
+ "share_via_onionshare": "এটি OnionShare",
+ "gui_use_legacy_v2_onions_checkbox": "লিগ্যাসি ঠিকানাগুলি ব্যবহার করুন",
+ "gui_save_private_key_checkbox": "একটি অবিরাম ঠিকানা ব্যবহার করুন",
+ "gui_share_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার ফাইলগুলি <b>ডাউনলোড</b> করতে পারে:<img src='{}' />",
+ "gui_receive_url_description": "এই OnionShare ঠিকানার সাথে <b>যে কেউ</b> <b>টর ব্রাউজার</b> ব্যবহার করে আপনার কম্পিউটারে ফাইলগুলি <b>আপলোড</b> করতে পারে:<img src='{}' />",
+ "gui_url_label_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
+ "gui_url_label_stay_open": "এই শেয়ারটি অটো-স্টপ হবে না ।",
+ "gui_url_label_onetime": "এই শেয়ারটি প্রথম সমাপ্তির পরে বন্ধ হবে.",
+ "gui_url_label_onetime_and_persistent": "এই শেয়ার অটো-স্টপ হবে না । <br><br>প্রতিটি পরবর্তী শেয়ার পুনরায় নতুন ঠিকানা ব্যবহার করে । (অস্থায়ি ঠিকানা ব্যবহার করতে, সেটিংস-এ ' অবিরাম ঠিকানা ব্যাবহার ' বন্ধ করুন ।)",
+ "gui_status_indicator_share_stopped": "শেয়ার করার জন্য প্রস্তুত",
+ "gui_status_indicator_share_working": "শুরু…",
"gui_status_indicator_share_started": "শেয়ারিং",
- "gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত ",
- "gui_status_indicator_receive_working": "শুরু... ",
+ "gui_status_indicator_receive_stopped": "পাওয়ার জন্য প্রস্তুত",
+ "gui_status_indicator_receive_working": "শুরু…",
"gui_status_indicator_receive_started": "গ্রহণ",
"gui_file_info": "{} ফাইল, {}",
"gui_file_info_single": "{} ফাইল, {}",
- "history_in_progress_tooltip": "{} অগ্রসর হচ্ছে ",
- "history_completed_tooltip": "{} সম্পূর্ণ\n",
+ "history_in_progress_tooltip": "{} অগ্রসর হচ্ছে",
+ "history_completed_tooltip": "{} সম্পূর্ণ",
"info_in_progress_uploads_tooltip": "",
"info_completed_uploads_tooltip": "",
"error_cannot_create_downloads_dir": "",
"receive_mode_downloads_dir": "",
- "receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস । ",
+ "receive_mode_warning": "সতর্কীকরণ: প্রাপ্ত মোড লোকজনকে আপনার কম্পিউটারে ফাইল আপলোড করতে দেয় । আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।",
"gui_receive_mode_warning": "গ্রহণ মোডে লোকজন আপনার কম্পিউটারে ফাইলগুলো আপলোড করতে দেয় । <br><br><b>আপনি যদি তাদের খোলেন তবে কিছু ফাইল সম্ভবত আপনার কম্পিউটারের নিয়ন্ত্রণ নিতে পারে । শুধুমাত্র আপনি যে ব্যক্তিদের বিশ্বাস করেন, অথবা আপনি যদি জানেন আপনি কি করছেন তা শুধুমাত্র খোলা জিনিস ।</b>",
- "receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে ",
- "receive_mode_received_file": "প্রাপ্ত: {} ",
- "gui_mode_share_button": "ফাইলগুলো শেয়ার করুন ",
- "gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে ",
- "gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে ",
+ "receive_mode_upload_starting": "মোট আকারের {} টি আপলোড শুরু হচ্ছে",
+ "receive_mode_received_file": "প্রাপ্ত: {}",
+ "gui_mode_share_button": "ফাইলগুলো শেয়ার করুন",
+ "gui_mode_receive_button": "ফাইল গ্রহণ করা হচ্ছে",
+ "gui_settings_receiving_label": "সেটিংস গ্রহণ করা হচ্ছে",
"gui_settings_downloads_label": "",
"gui_settings_downloads_button": "দেখা",
- "gui_settings_public_mode_checkbox": "সর্বজনীন মোড ",
+ "gui_settings_public_mode_checkbox": "সর্বজনীন মোড",
"systray_close_server_title": "",
"systray_close_server_message": "",
- "systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে ",
+ "systray_page_loaded_title": "পৃষ্ঠা লোড করা হয়েছে",
"systray_download_page_loaded_message": "",
"systray_upload_page_loaded_message": "",
"gui_uploads": "",
@@ -179,18 +179,18 @@
"gui_upload_finished_range": "",
"gui_upload_finished": "",
"gui_download_in_progress": "",
- "gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {} ",
- "gui_settings_language_label": "পছন্দনীয় ভাষা ",
- "gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন. ",
+ "gui_open_folder_error_nautilus": "ফোল্ডার খোলা যাচ্ছে না কারণ nautilus বিদ্যমান নয় । ফাইলটি এখানে: {}",
+ "gui_settings_language_label": "পছন্দনীয় ভাষা",
+ "gui_settings_language_changed_notice": "আপনার ভাষার পরিবর্তন প্রভাব বিস্তার করার জন্য OnionShare পুনর্সূচনা করুন.",
"gui_add_files": "ফাইল যোগ করো",
"gui_add_folder": "ফোল্ডার যোগ করো",
"gui_settings_onion_label": "Onion সেটিংস",
- "gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন ",
- "error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {} ",
- "receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {} ",
- "gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন ",
+ "gui_connect_to_tor_for_onion_settings": "onion সেবা সেটিংস দেখতে টর এর সাথে সংযোগ করুন",
+ "error_cannot_create_data_dir": "onionshare ডাটা ফোল্ডার তৈরি করা যায়নি: {}",
+ "receive_mode_data_dir": "আপনার কাছে পাঠানো ফাইলসমূহ এই ফোল্ডারে প্রদর্শিত হয়েছে: {}",
+ "gui_settings_data_dir_label": "ফাইল সংরক্ষণ করুন",
"gui_settings_data_dir_browse_button": "ব্রাউজ",
- "systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে ",
+ "systray_page_loaded_message": "onionshare ঠিকানা লোড করা হয়েছে",
"systray_share_started_title": "শেয়ারিং শুরু করা হয়েছে",
"systray_share_completed_title": "শেয়ারিং সম্পূর্ণ হয়েছে",
"systray_share_completed_message": "ফাইল পাঠানো শেষ হয়েছে",
@@ -200,5 +200,17 @@
"systray_receive_started_message": "কেউ আপনার কাছে ফাইল পাঠাচ্ছে",
"gui_all_modes_history": "ইতিহাস",
"gui_all_modes_clear_history": "সব পরিষ্কার করুন",
- "gui_all_modes_transfer_started": "{} শুরু হয়েছে"
+ "gui_all_modes_transfer_started": "{} শুরু হয়েছে",
+ "systray_share_started_message": "কাউকে ফাইল পাঠাতে শুরু",
+ "gui_all_modes_transfer_finished_range": "স্থানান্তরিত হয়েছে {} - {}",
+ "gui_all_modes_transfer_finished": "স্থানান্তরিত {}",
+ "gui_all_modes_transfer_canceled_range": "বাতিলকৃত {} - {}",
+ "gui_all_modes_transfer_canceled": "বাতিলকৃত {}",
+ "gui_all_modes_progress_complete": "%p%, {0: সে} অতিক্রান্ত হয়েছে ।",
+ "gui_all_modes_progress_starting": "{0:সে}, %p% (গণনা করা হচ্ছে)",
+ "gui_all_modes_progress_eta": "{0:সে}, ইটিএ: {1: সে}, %p%",
+ "gui_share_mode_no_files": "এখনও কোন ফাইল পাঠানো হয়নি",
+ "gui_share_mode_timeout_waiting": "প্রেরণ শেষ করার জন্য অপেক্ষা করছে",
+ "gui_receive_mode_no_files": "কোন ফাইল এখনও প্রাপ্ত হয়নি",
+ "gui_receive_mode_timeout_waiting": "প্রাপ্তির শেষ পর্যন্ত অপেক্ষা করছে"
}
diff --git a/share/locale/da.json b/share/locale/da.json
index 2ef45747..50e65951 100644
--- a/share/locale/da.json
+++ b/share/locale/da.json
@@ -133,7 +133,7 @@
"help_receive": "Modtager aktier i stedet for at sende dem",
"gui_share_stop_server_shutdown_timeout": "Stop deling ({}s tilbage)",
"gui_receive_quit_warning": "Du er i færd med at modtage filer. Er du sikker på du ønsker at stoppe med at OnionShare?",
- "gui_settings_whats_this": "<a href='{0:s}'>Hvad er dette?</a>",
+ "gui_settings_whats_this": "<a href='{0:s}'>Hvad er det?</a>",
"gui_settings_general_label": "Generel opsætning",
"gui_upload_in_progress": "Upload begyndte {}",
"gui_download_in_progress": "Download begyndte {}",
diff --git a/share/locale/de.json b/share/locale/de.json
index 3d9992b7..dbc00898 100644
--- a/share/locale/de.json
+++ b/share/locale/de.json
@@ -7,7 +7,7 @@
"closing_automatically": "Gestoppt, da der Download erfolgreich beendet wurde",
"large_filesize": "Warnung: Das Hochladen von großen Dateien kann Stunden dauern",
"help_local_only": "Tor nicht verwenden (nur für Entwicklung)",
- "help_stay_open": "Den OnionService nicht anhalten nachdem ein Download beendet wurde",
+ "help_stay_open": "Den Server weiterlaufen lassen, nachdem die Dateien verschickt wurden",
"help_debug": "Schreibe Fehler von OnionShare nach stdout und Webfehler auf die Festplatte",
"help_filename": "Liste der zu teilenden Dateien oder Ordner",
"gui_drag_and_drop": "Dateien und Ordner hierher ziehen\num sie zu teilen",
@@ -42,7 +42,7 @@
"gui_settings_window_title": "Eintellungen",
"gui_settings_autoupdate_timestamp": "Letzte Überprüfung: {}",
"gui_settings_autoupdate_timestamp_never": "Niemals",
- "gui_settings_close_after_first_download_option": "Server nach dem ersten Download stoppen",
+ "gui_settings_close_after_first_download_option": "Server nach Download der Dateien stoppen",
"gui_settings_connection_type_label": "Wie soll sich OnionShare mit Tor verbinden?",
"config_onion_service": "Richte den Onionservice auf Port {0:d} ein.",
"give_this_url_stealth": "Gib dem Empfänger diese URL und die HidServAuth-Zeile:",
@@ -197,5 +197,21 @@
"systray_share_completed_title": "Freigabe erfolgt",
"systray_share_completed_message": "Dateien erfolgreich versandt",
"systray_share_canceled_title": "Freigabe abgebrochen",
- "systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen"
+ "systray_share_canceled_message": "Jemand hat den Download deiner Dateien abgebrochen",
+ "systray_receive_started_title": "Empfange",
+ "systray_receive_started_message": "Jemand sendet dir Dateien",
+ "gui_all_modes_history": "Verlauf",
+ "gui_all_modes_clear_history": "Alle löschen",
+ "gui_all_modes_transfer_started": "{} gestartet",
+ "gui_all_modes_transfer_finished_range": "{} - {} übertragen",
+ "gui_all_modes_transfer_finished": "{} übertragen",
+ "gui_all_modes_transfer_canceled_range": "{} - {} abgebrochen",
+ "gui_all_modes_transfer_canceled": "{} abgebrochen",
+ "gui_all_modes_progress_starting": "{0:s}, %p% (berechne)",
+ "gui_share_mode_no_files": "Bisher keine Dateien versendet",
+ "gui_share_mode_timeout_waiting": "Warte auf Abschluss der Sendung",
+ "gui_receive_mode_no_files": "Bisher keine Dateien empfangen",
+ "gui_receive_mode_timeout_waiting": "Warte auf Abschluss des Empfangs",
+ "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
+ "gui_all_modes_progress_complete": "%p%, {0:s} vergangen."
}
diff --git a/share/locale/en.json b/share/locale/en.json
index 4ead6dd5..973028c8 100644
--- a/share/locale/en.json
+++ b/share/locale/en.json
@@ -22,6 +22,7 @@
"help_stay_open": "Continue sharing after files have been sent",
"help_autostart_timer": "Schedule this share to start N seconds from now",
"help_autostop_timer": "Stop sharing after a given amount of seconds",
+ "help_connect_timeout": "Give up connecting to Tor after a given amount of seconds (default: 120)",
"help_stealth": "Use client authorization (advanced)",
"help_receive": "Receive shares instead of sending them",
"help_debug": "Log OnionShare errors to stdout, and web errors to disk",
diff --git a/share/locale/fi.json b/share/locale/fi.json
index 7f31450f..ce2a7eb1 100644
--- a/share/locale/fi.json
+++ b/share/locale/fi.json
@@ -1,25 +1,185 @@
{
- "preparing_files": "Valmistellaan tiedostoja jaettavaksi.",
+ "preparing_files": "Pakataan tiedostoja.",
"give_this_url": "Anna tämä URL-osoite vastaanottajalle:",
- "ctrlc_to_stop": "Näppäin Ctrl-C pysäyttää palvelimen",
+ "ctrlc_to_stop": "Pysäytä palvelin painamalla Ctrl+C",
"not_a_file": "{0:s} Ei ole tiedosto.",
"other_page_loaded": "URL-osoite ladattu",
- "closing_automatically": "Lataus valmis. Suljetaan automaattisesti",
- "large_filesize": "Varoitus: Isojen tiedostojen lähetys saattaa kestää tunteja",
- "help_local_only": "Älä käytä Toria: vain ohjelmakehitykseen",
- "help_stay_open": "Pidä piilopalvelu käynnissä latauksen jälkeen.",
- "help_debug": "Tallentaa virheet levylle",
+ "closing_automatically": "Lähetys valmis. Suljetaan automaattisesti",
+ "large_filesize": "Varoitus: Ison tiedoston lähetys saattaa kestää tunteja",
+ "help_local_only": "Älä käytä Toria (vain kehitykseen)",
+ "help_stay_open": "Jatka jakoa tiedostojen lähetyksen jälkeen",
+ "help_debug": "Kirjaa OnionShare virheet stdout:tiin, ja verkko virheet levylle",
"help_filename": "Luettele jaettavat tiedostot tai kansiot",
"gui_drag_and_drop": "Vedä ja pudota\ntiedostot tänne",
"gui_add": "Lisää",
"gui_delete": "Poista",
"gui_choose_items": "Valitse",
- "gui_share_start_server": "Käynnistä palvelin",
- "gui_share_stop_server": "Pysäytä palvelin",
+ "gui_share_start_server": "Aloita jakaminen",
+ "gui_share_stop_server": "Pysäytä jakaminen",
"gui_copy_url": "Kopioi URL-osoite",
"gui_downloads": "Lataukset:",
"gui_canceled": "Peruutettu",
- "gui_copied_url": "URL-osoite kopioitu leikepöydälle",
- "gui_please_wait": "Odota...",
- "zip_progress_bar_format": "Tiivistän tiedostoja: %p%"
+ "gui_copied_url": "OnionShare-osoite kopioitu leikepöydälle",
+ "gui_please_wait": "Käynnistyy... Peruuta napsauttamalla.",
+ "zip_progress_bar_format": "Pakataan: %p%",
+ "config_onion_service": "Onion-palvelua asetetaan porttiin {0:d}.",
+ "give_this_url_stealth": "Anna tämä osoite ja HidServAuth rivi vastaanottajalle:",
+ "give_this_url_receive": "Anna tämä osoite lähettäjälle:",
+ "give_this_url_receive_stealth": "Anna tämä osoite ja HidServAuth lähettäjälle:",
+ "not_a_readable_file": "{0:s} ei ole luettava tiedosto.",
+ "no_available_port": "Vapaata porttia onion palvelulle ei löydetty",
+ "close_on_timeout": "Pysäytetty koska auto-stop ajastin loppui",
+ "help_shutdown_timeout": "Lopeta jakaminen annetun sekunnin kuluttua",
+ "help_stealth": "Käytä asiakasvaltuutusta (edistynyt)",
+ "help_receive": "Vastaanota osia niiden lähettämisen sijaan",
+ "help_config": "Mukautettu JSON-määritystiedoston sijainti (valinnainen)",
+ "gui_add_files": "Lisää tiedostoja",
+ "gui_add_folder": "Lisää kansio",
+ "gui_share_stop_server_shutdown_timeout": "Lopeta jakaminen({}s jäljellä)",
+ "gui_share_stop_server_shutdown_timeout_tooltip": "Auto-stop ajastin loppuu {} jälkeen",
+ "gui_receive_start_server": "Aloita vastaanotto tila",
+ "gui_receive_stop_server": "Lopeta vastaanotto tila",
+ "gui_receive_stop_server_shutdown_timeout": "Lopeta vastaanotto tila ({}s jäljellä)",
+ "gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop ajastin loppuu kello {}",
+ "gui_copy_hidservauth": "Kopioi HidServAuth",
+ "gui_copied_url_title": "Kopioi OnionShare osoite",
+ "gui_copied_hidservauth_title": "HidServAuth kopioitu",
+ "gui_copied_hidservauth": "HidServAuth rivi kopioitu leikepöydälle",
+ "version_string": "OnionShare {0:s} | https://onionshare.org/",
+ "gui_quit_title": "Ei niin nopeasti",
+ "gui_share_quit_warning": "Olet lähettämässä tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
+ "gui_receive_quit_warning": "Olet vastaanottamassa tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
+ "gui_quit_warning_quit": "Lopeta",
+ "gui_quit_warning_dont_quit": "Peruuta",
+ "error_rate_limit": "Joku on tehnyt liian monta väärää yritystä osoitteeseesi, mikä tarkoittaa, että he voisivat yrittää arvata sitä, joten OnionShare on pysäyttänyt palvelimen. Aloita jakaminen uudelleen ja lähetä vastaanottajalle uusi osoite jatkaaksesi.",
+ "error_stealth_not_supported": "Asiakasvaltuuden käyttämiseen tarvitaan ainakin Tor 0.2.9.1-alpha (tai Tor Browser 6.5) ja python3-stem 1.5.0.",
+ "error_ephemeral_not_supported": "OnionSharen käyttö vaatii ainakin Tor 0.2.7.1 ja python3-stem 1.4.0.",
+ "gui_settings_window_title": "Asetukset",
+ "gui_settings_whats_this": "<a href='{0:s}'>Mikä tämä on?</a>",
+ "gui_settings_stealth_option": "Käytä asiakaslupaa",
+ "gui_settings_stealth_hidservauth_string": "Nyt kun olet tallentanut yksityisen avaimesi uudelleenkäyttöä varten, voit kopioida HidServAuth-osoitteesi napista.",
+ "gui_settings_autoupdate_label": "Tarkista päivitykset",
+ "gui_settings_autoupdate_option": "Ilmoita minulle, kun uusi versio on saatavilla",
+ "gui_settings_autoupdate_timestamp": "Viimeksi tarkistettu: {}",
+ "gui_settings_autoupdate_timestamp_never": "ei koskaan",
+ "gui_settings_autoupdate_check_button": "Tarkista päivitykset",
+ "gui_settings_general_label": "Yleiset asetukset",
+ "gui_settings_onion_label": "Onion asetukset",
+ "gui_settings_sharing_label": "Jako asetukset",
+ "gui_settings_close_after_first_download_option": "Lopeta jakaminen tiedostojen lähetyksen jälkeen",
+ "gui_settings_connection_type_label": "Miten OnionSharen kuuluisi yhdistää Tor:iin?",
+ "gui_settings_connection_type_bundled_option": "Käytä OnionShareen sisäänrakennettua Tor versiota",
+ "gui_settings_connection_type_automatic_option": "Kokeile automaattista konfigurointia Tor-selaimella",
+ "gui_settings_connection_type_control_port_option": "Yhdistä käyttämällä control porttia",
+ "gui_settings_connection_type_socket_file_option": "Yhdistä käyttäen socket tiedostoa",
+ "gui_settings_connection_type_test_button": "Testaa Tor yhteyttä",
+ "gui_settings_control_port_label": "Control port",
+ "gui_settings_socket_file_label": "Socket tiedosto",
+ "gui_settings_socks_label": "SOCKS portti",
+ "gui_settings_authenticate_label": "Tor todennus asetukset",
+ "gui_settings_authenticate_no_auth_option": "Ei todentamista, tai evästeiden todentamista",
+ "gui_settings_authenticate_password_option": "Salasana",
+ "gui_settings_password_label": "Salasana",
+ "gui_settings_tor_bridges": "Tor silta-solmu tuki",
+ "gui_settings_tor_bridges_no_bridges_radio_option": "Älä käytä silta-solmuja",
+ "gui_settings_tor_bridges_obfs4_radio_option": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia",
+ "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja obfs4-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Käytä sisäänrakennettuja meek_lite (Azure)-liitettäviä kuljetuksia (vaatii obfs4proxyn)",
+ "gui_settings_meek_lite_expensive_warning": "Varoitus: Meek_lite-sillat ovat Tor-projektille erittäin kalliita. <br><br> Käytä niitä vain, jos et pysty muodostamaan yhteyttä suoraan Toriin, obfs4-kuljetusten tai muiden tavallisten silta-solmujen kautta.",
+ "gui_settings_tor_bridges_custom_radio_option": "Käytä mukautettuja silta-solmuja",
+ "gui_settings_tor_bridges_custom_label": "Löydät silta-solmut osoitteesta <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
+ "gui_settings_tor_bridges_invalid": "Mikään lisäämistäsi silta-solmuista ei toiminut\nUudellen tarkista ne tai lisää muita.",
+ "gui_settings_button_save": "Tallenna",
+ "gui_settings_button_cancel": "Peruuttaa",
+ "gui_settings_button_help": "Apua",
+ "gui_settings_shutdown_timeout_checkbox": "Käytä auto-stop ajastinta",
+ "gui_settings_shutdown_timeout": "Lopeta jakaminen kello:",
+ "settings_error_unknown": "Ei voi muodostaa yhteyttä Tor-ohjaimeen, koska asetuksesi eivät ole järkeviä.",
+ "settings_error_automatic": "Tor-ohjaimeen ei voitu muodostaa yhteyttä. Onko Tor Browser (saatavilla osoitteesta torproject.org) avoimena taustalla?",
+ "settings_error_socket_port": "Ei voi muodostaa yhteyttä Tor-ohjaimeen: {}:{}.",
+ "settings_error_socket_file": "Ei voi muodostaa yhteyttä Tor-ohjaimeen käyttämällä socket-tiedostoa {}.",
+ "settings_error_auth": "Yhdistetty osoitteeseen {}:{}, mutta ei voida todentaa. Ehkä tämä ei ole Tor ohjain?",
+ "settings_error_missing_password": "Yhdistetty Tor ohjaimeen, mutta se vaatii salasanan todentamiseen.",
+ "settings_error_unreadable_cookie_file": "Yhdistetty tor ohjaimeen, mutta salasana saattaa olla väärä, tai käyttäjä ei saa lukea evästetiedostoa.",
+ "settings_error_bundled_tor_not_supported": "OnionSharen mukana tulevan Tor version käyttäminen ei toimi Developer-tilassa Windowsissa tai MacOSissa.",
+ "settings_error_bundled_tor_timeout": "Yhdistäminen Tor:iin kestää lian kauan. Ehkä et ole yhteydessä nettiin, tai järjestelmäsi kello on epätarkka?",
+ "settings_error_bundled_tor_broken": "OnionShare ei voinut yhdistää Tor:iin taustalla\n{}",
+ "settings_test_success": "Yhditetty Tor ohjaimeen.\n\nTor versio: {}\nTykee lyhytaikaista onion palvelua: {}.\nTukee asiakas todennusta: {}.\nTukee uuden sukupolven .onion osoitteita: {}.",
+ "error_tor_protocol_error": "Tor-verkossa tapahtui virhe: {}",
+ "error_tor_protocol_error_unknown": "Tor-verkossa tapahtui tuntematon virhe",
+ "error_invalid_private_key": "Tätä yksityisen avaimen tyyppiä ei tueta",
+ "connecting_to_tor": "Yhdistetään Tor-verkkoon",
+ "update_available": "Uusi OnionShare version on julkaistu. <a href='{}'>Paina tästä</a> ladataksesi sen.<br><br>Sinulla on versio {} ja uusin version on {}.",
+ "update_error_check_error": "Päivityksien tarkistaminen epäonnistui: OnionShare-sivusto kertoo, että uusin versio on tunnistamaton '{}'…",
+ "update_error_invalid_latest_version": "Päivityksien tarkistaminen epäonnistui: Ehkä et ole yhteydessä Tor-verkkoon, tai OnionShare-sivusto on alhaalla?",
+ "update_not_available": "Sinulla on OnionSharen uusin versio.",
+ "gui_tor_connection_ask": "Avaa asetukset Tor-yhteyden selvittämiseksi?",
+ "gui_tor_connection_ask_open_settings": "Kyllä",
+ "gui_tor_connection_ask_quit": "Lopeta",
+ "gui_tor_connection_error_settings": "Yritä muuttaa miten OnionShare yhdistää Tor-verkkoon asetuksista.",
+ "gui_tor_connection_canceled": "Tor-yhteyden muodostus epäonnistui.\n\nVarmista että sinulla on toimiva internet yhteys, jonka jälkeen uudelleen avaa OnionShare ja sen Tor-yhteys.",
+ "gui_tor_connection_lost": "Tor-yhteys katkaistu.",
+ "gui_server_started_after_timeout": "Auto-stop ajastin loppui ennen palvelimen käynnistymistä.\nLuo uusi jako.",
+ "gui_server_timeout_expired": "Auto-stop ajastin loppui jo.\nPäivitä se jaon aloittamiseksi.",
+ "share_via_onionshare": "OnionShare se",
+ "gui_connect_to_tor_for_onion_settings": "Yhdistä Tor-verkkoon nähdäksesi onion palvelun asetukset",
+ "gui_use_legacy_v2_onions_checkbox": "Käytä vanhoja osoitteita",
+ "gui_save_private_key_checkbox": "Käytä pysyviä osoitteita",
+ "gui_share_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>ladata</b> tiedostojasi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
+ "gui_receive_url_description": "<b>Kaikki</b> joilla on tämä OnionShare osoite voivat <b>lähettää</b>tiedostoja tietokoneellesi käyttämällä <b>Tor selainta</b>: <img src='{}' />",
+ "gui_url_label_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
+ "gui_url_label_stay_open": "Tämä jako ei pysähdy automaattisesti.",
+ "gui_url_label_onetime": "Tämä jako lopetetaan ensimmäisen valmistumisen jälkeen.",
+ "gui_url_label_onetime_and_persistent": "Tämä jako ei pysähdy automaattisesti.<br><br>Jokainen seuraava jako käyttää osoitetta uudelleen. (Jos haluat käyttää kertaluontoisia osoitteita, sammuta \"Käytä pysyvää osoitetta\" asetuksissa.)",
+ "gui_status_indicator_share_stopped": "Valmis jakamaan",
+ "gui_status_indicator_share_working": "Aloitetaan…",
+ "gui_status_indicator_share_started": "Jakaa",
+ "gui_status_indicator_receive_stopped": "Valmis vastaanottamaan",
+ "gui_status_indicator_receive_working": "Vastaanotetaan…",
+ "gui_status_indicator_receive_started": "Vastaanotetaan",
+ "gui_file_info": "{} tiedostoa, {}",
+ "gui_file_info_single": "{} tiedosto, {}",
+ "history_in_progress_tooltip": "{} meneillään",
+ "history_completed_tooltip": "{} valmistunut",
+ "error_cannot_create_data_dir": "OnionShare-tietokansiota ei voitu luoda: {}",
+ "receive_mode_data_dir": "Sinulle lähetetyt tiedostot löytyvät tästä kansiosta: {}",
+ "receive_mode_warning": "Varoitus: Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneeseen. Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa vain tiedostot, joihin luotat, tai jos tiedät, mitä teet.",
+ "gui_receive_mode_warning": "Vastaanottotila antaa ihmisille mahdollisuuden ladata tiedostoja tietokoneellesi.<br><br><b>Jotkin tiedostot voivat hallita tietokonettasi, jos avaat ne. Avaa asioita vain ihmisiltä, joihin luotat, tai jos tiedät, mitä olet tekemässä. </b>",
+ "receive_mode_upload_starting": "Lähetys jonka koko on {} alkaa",
+ "receive_mode_received_file": "Vastaanotetaan: {}",
+ "gui_mode_share_button": "Jaa Tiedostoja",
+ "gui_mode_receive_button": "Vastaanota Tiedostoja",
+ "gui_settings_receiving_label": "Vastaanoton asetukset",
+ "gui_settings_data_dir_label": "Tallenna tiedostot",
+ "gui_settings_data_dir_browse_button": "Selaa",
+ "gui_settings_public_mode_checkbox": "Julkinen tila",
+ "gui_open_folder_error_nautilus": "Kansiota ei voi avata, koska nautilus ei ole käytettävissä. Tiedosto on täällä: {}",
+ "gui_settings_language_label": "Haluttu kieli",
+ "gui_settings_language_changed_notice": "Käynnistä OnionShare uudelleen, jotta kieli muuttuu.",
+ "systray_menu_exit": "Lopeta",
+ "systray_page_loaded_title": "Sivu Ladattu",
+ "systray_page_loaded_message": "OnionShare-osoite ladattu",
+ "systray_share_started_title": "Jako Aloitettu",
+ "systray_share_started_message": "Tiedostojen lähettäminen jollekulle aloitetaan",
+ "systray_share_completed_title": "Jakaminen Valmis",
+ "systray_share_completed_message": "Tiedostojen lähetys valmis",
+ "systray_share_canceled_title": "Jako keskeytetty",
+ "systray_share_canceled_message": "Joku keskeytti tiedostojesi vastaanottamisen",
+ "systray_receive_started_title": "Vastaanottaminen Aloitettu",
+ "systray_receive_started_message": "Joku lähettää tiedostoja sinulle",
+ "gui_all_modes_history": "Historia",
+ "gui_all_modes_clear_history": "Tyhjennä",
+ "gui_all_modes_transfer_started": "Aloitettu {}",
+ "gui_all_modes_transfer_finished_range": "Siirretty {} - {}",
+ "gui_all_modes_transfer_finished": "Siirretty {}",
+ "gui_all_modes_transfer_canceled_range": "Keskeytetty {} - {}",
+ "gui_all_modes_transfer_canceled": "Keskeytetty {}",
+ "gui_all_modes_progress_complete": "%p%, {0:s} kulunut.",
+ "gui_all_modes_progress_starting": "{0:s}, %p% (lasketaan)",
+ "gui_all_modes_progress_eta": "{0:s}, ETA: {1:s}, %p%",
+ "gui_share_mode_no_files": "Yhtäkään tiedostoa ei ole lähetetty vielä",
+ "gui_share_mode_timeout_waiting": "Odotetaan lähettämisen valmistumista",
+ "gui_receive_mode_no_files": "Yhtäkään tiedostoa ei ole vastaanotettu vielä",
+ "gui_receive_mode_timeout_waiting": "Odotetaan vastaanottamisen valmistumista"
}
diff --git a/share/locale/fr.json b/share/locale/fr.json
index 5bfff5d5..89c4efc7 100644
--- a/share/locale/fr.json
+++ b/share/locale/fr.json
@@ -209,7 +209,7 @@
"gui_share_mode_timeout_waiting": "En attente de la fin de l’envoi",
"gui_receive_mode_no_files": "Aucun fichier n’a encore été reçu",
"gui_receive_mode_timeout_waiting": "En attente de la fin de la réception",
- "gui_connect_to_tor_for_onion_settings": "Connectez-vous à Tor pour voir les paramètres du service onion",
+ "gui_connect_to_tor_for_onion_settings": "Se connecter à Tor pour voir les paramètres du service onion",
"systray_share_completed_message": "L’envoi de fichiers est terminé",
"gui_all_modes_transfer_canceled": "Annulé le {}",
"gui_settings_onion_label": "Paramètres onion",
diff --git a/share/locale/hi.json b/share/locale/hi.json
new file mode 100644
index 00000000..183ee3e0
--- /dev/null
+++ b/share/locale/hi.json
@@ -0,0 +1,184 @@
+{
+ "config_onion_service": "",
+ "preparing_files": "",
+ "give_this_url": "",
+ "give_this_url_stealth": "",
+ "give_this_url_receive": "",
+ "give_this_url_receive_stealth": "",
+ "ctrlc_to_stop": "",
+ "not_a_file": "",
+ "not_a_readable_file": "",
+ "no_available_port": "",
+ "other_page_loaded": "",
+ "close_on_timeout": "",
+ "closing_automatically": "",
+ "large_filesize": "",
+ "help_local_only": "",
+ "help_stay_open": "",
+ "help_shutdown_timeout": "",
+ "help_stealth": "",
+ "help_receive": "",
+ "help_debug": "",
+ "help_filename": "",
+ "help_config": "",
+ "gui_drag_and_drop": "",
+ "gui_add": "जोड़ें",
+ "gui_add_files": "",
+ "gui_add_folder": "",
+ "gui_delete": "हटाएं",
+ "gui_choose_items": "चुनें",
+ "gui_share_start_server": "",
+ "gui_share_stop_server": "",
+ "gui_share_stop_server_shutdown_timeout": "",
+ "gui_share_stop_server_shutdown_timeout_tooltip": "",
+ "gui_receive_start_server": "",
+ "gui_receive_stop_server": "",
+ "gui_receive_stop_server_shutdown_timeout": "",
+ "gui_receive_stop_server_shutdown_timeout_tooltip": "",
+ "gui_copy_url": "",
+ "gui_copy_hidservauth": "",
+ "gui_canceled": "Canceled",
+ "gui_copied_url_title": "",
+ "gui_copied_url": "",
+ "gui_copied_hidservauth_title": "",
+ "gui_copied_hidservauth": "",
+ "gui_please_wait": "",
+ "version_string": "",
+ "gui_quit_title": "",
+ "gui_share_quit_warning": "",
+ "gui_receive_quit_warning": "",
+ "gui_quit_warning_quit": "छोड़ें",
+ "gui_quit_warning_dont_quit": "रद्द करे",
+ "error_rate_limit": "",
+ "zip_progress_bar_format": "",
+ "error_stealth_not_supported": "",
+ "error_ephemeral_not_supported": "",
+ "gui_settings_window_title": "सेटिंग",
+ "gui_settings_whats_this": "",
+ "gui_settings_stealth_option": "",
+ "gui_settings_stealth_hidservauth_string": "",
+ "gui_settings_autoupdate_label": "",
+ "gui_settings_autoupdate_option": "",
+ "gui_settings_autoupdate_timestamp": "अंतिम जाँच %1",
+ "gui_settings_autoupdate_timestamp_never": "कभी नहीँ",
+ "gui_settings_autoupdate_check_button": "",
+ "gui_settings_general_label": "जनरल सेटिंग्स",
+ "gui_settings_onion_label": "",
+ "gui_settings_sharing_label": "",
+ "gui_settings_close_after_first_download_option": "",
+ "gui_settings_connection_type_label": "",
+ "gui_settings_connection_type_bundled_option": "",
+ "gui_settings_connection_type_automatic_option": "",
+ "gui_settings_connection_type_control_port_option": "",
+ "gui_settings_connection_type_socket_file_option": "",
+ "gui_settings_connection_type_test_button": "",
+ "gui_settings_control_port_label": "",
+ "gui_settings_socket_file_label": "",
+ "gui_settings_socks_label": "",
+ "gui_settings_authenticate_label": "",
+ "gui_settings_authenticate_no_auth_option": "",
+ "gui_settings_authenticate_password_option": "",
+ "gui_settings_password_label": "",
+ "gui_settings_tor_bridges": "",
+ "gui_settings_tor_bridges_no_bridges_radio_option": "",
+ "gui_settings_tor_bridges_obfs4_radio_option": "",
+ "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
+ "gui_settings_meek_lite_expensive_warning": "",
+ "gui_settings_tor_bridges_custom_radio_option": "",
+ "gui_settings_tor_bridges_custom_label": "",
+ "gui_settings_tor_bridges_invalid": "",
+ "gui_settings_button_save": "सहेजें",
+ "gui_settings_button_cancel": "रद्द करे",
+ "gui_settings_button_help": "मदद",
+ "gui_settings_shutdown_timeout_checkbox": "",
+ "gui_settings_shutdown_timeout": "",
+ "settings_error_unknown": "",
+ "settings_error_automatic": "",
+ "settings_error_socket_port": "",
+ "settings_error_socket_file": "",
+ "settings_error_auth": "",
+ "settings_error_missing_password": "",
+ "settings_error_unreadable_cookie_file": "",
+ "settings_error_bundled_tor_not_supported": "",
+ "settings_error_bundled_tor_timeout": "",
+ "settings_error_bundled_tor_broken": "",
+ "settings_test_success": "",
+ "error_tor_protocol_error": "",
+ "error_tor_protocol_error_unknown": "",
+ "error_invalid_private_key": "",
+ "connecting_to_tor": "",
+ "update_available": "",
+ "update_error_check_error": "",
+ "update_error_invalid_latest_version": "",
+ "update_not_available": "",
+ "gui_tor_connection_ask": "",
+ "gui_tor_connection_ask_open_settings": "हां",
+ "gui_tor_connection_ask_quit": "छोड़ें",
+ "gui_tor_connection_error_settings": "",
+ "gui_tor_connection_canceled": "",
+ "gui_tor_connection_lost": "",
+ "gui_server_started_after_timeout": "",
+ "gui_server_timeout_expired": "",
+ "share_via_onionshare": "",
+ "gui_connect_to_tor_for_onion_settings": "",
+ "gui_use_legacy_v2_onions_checkbox": "",
+ "gui_save_private_key_checkbox": "",
+ "gui_share_url_description": "",
+ "gui_receive_url_description": "",
+ "gui_url_label_persistent": "",
+ "gui_url_label_stay_open": "",
+ "gui_url_label_onetime": "",
+ "gui_url_label_onetime_and_persistent": "",
+ "gui_status_indicator_share_stopped": "",
+ "gui_status_indicator_share_working": "",
+ "gui_status_indicator_share_started": "शेयरिंग",
+ "gui_status_indicator_receive_stopped": "",
+ "gui_status_indicator_receive_working": "",
+ "gui_status_indicator_receive_started": "",
+ "gui_file_info": "",
+ "gui_file_info_single": "",
+ "history_in_progress_tooltip": "",
+ "history_completed_tooltip": "",
+ "error_cannot_create_data_dir": "",
+ "receive_mode_data_dir": "",
+ "receive_mode_warning": "",
+ "gui_receive_mode_warning": "",
+ "receive_mode_upload_starting": "",
+ "receive_mode_received_file": "",
+ "gui_mode_share_button": "",
+ "gui_mode_receive_button": "",
+ "gui_settings_receiving_label": "",
+ "gui_settings_data_dir_label": "",
+ "gui_settings_data_dir_browse_button": "ब्राउज़",
+ "gui_settings_public_mode_checkbox": "",
+ "gui_open_folder_error_nautilus": "",
+ "gui_settings_language_label": "",
+ "gui_settings_language_changed_notice": "",
+ "systray_menu_exit": "छोड़ें",
+ "systray_page_loaded_title": "",
+ "systray_page_loaded_message": "",
+ "systray_share_started_title": "",
+ "systray_share_started_message": "",
+ "systray_share_completed_title": "",
+ "systray_share_completed_message": "",
+ "systray_share_canceled_title": "",
+ "systray_share_canceled_message": "",
+ "systray_receive_started_title": "",
+ "systray_receive_started_message": "",
+ "gui_all_modes_history": "इतिहास",
+ "gui_all_modes_clear_history": "",
+ "gui_all_modes_transfer_started": "द्वारा शुरू किया गया",
+ "gui_all_modes_transfer_finished_range": "",
+ "gui_all_modes_transfer_finished": "",
+ "gui_all_modes_transfer_canceled_range": "",
+ "gui_all_modes_transfer_canceled": "",
+ "gui_all_modes_progress_complete": "",
+ "gui_all_modes_progress_starting": "",
+ "gui_all_modes_progress_eta": "",
+ "gui_share_mode_no_files": "",
+ "gui_share_mode_timeout_waiting": "",
+ "gui_receive_mode_no_files": "",
+ "gui_receive_mode_timeout_waiting": ""
+}
diff --git a/share/locale/id.json b/share/locale/id.json
index 518a4547..bc8dfad6 100644
--- a/share/locale/id.json
+++ b/share/locale/id.json
@@ -1,19 +1,19 @@
{
- "config_onion_service": "",
- "preparing_files": "",
- "give_this_url": "",
- "give_this_url_stealth": "",
- "give_this_url_receive": "",
- "give_this_url_receive_stealth": "",
- "ctrlc_to_stop": "",
- "not_a_file": "",
- "not_a_readable_file": "",
- "no_available_port": "",
- "other_page_loaded": "",
+ "config_onion_service": "Mengatur layanan onion pada port {0:d}.",
+ "preparing_files": "Mengompresi berkas-berkas.",
+ "give_this_url": "Beri alamat ini kepada penerima:",
+ "give_this_url_stealth": "Beri alamat ini dan baris HidServAuth kepada penerima:",
+ "give_this_url_receive": "Beri alamat ini kepada pengirim:",
+ "give_this_url_receive_stealth": "Beri alamat ini dan HidServAuth kepada pengirim:",
+ "ctrlc_to_stop": "Tekan Ctrl+C untuk menghentikan peladen",
+ "not_a_file": "{0:s} bukan berkas yang sah.",
+ "not_a_readable_file": "{0:s} bukan berkas yang bisa dibaca.",
+ "no_available_port": "Tidak dapat menemukan porta yang tersedia untuk memulai layanan onion",
+ "other_page_loaded": "Alamat dimuat",
"close_on_timeout": "",
- "closing_automatically": "",
+ "closing_automatically": "Terhenti karena transfer telah tuntas",
"timeout_download_still_running": "",
- "large_filesize": "",
+ "large_filesize": "Peringatan: Mengirim dalam jumlah besar dapat memakan waktu berjam-jam",
"systray_menu_exit": "Keluar",
"systray_download_started_title": "",
"systray_download_started_message": "",
@@ -23,74 +23,74 @@
"systray_download_canceled_message": "",
"systray_upload_started_title": "",
"systray_upload_started_message": "",
- "help_local_only": "",
- "help_stay_open": "",
- "help_autostop_timer": "",
- "help_stealth": "",
+ "help_local_only": "Tidak menggunakan Tor (hanya untuk pengembangan)",
+ "help_stay_open": "Lanjutkan berbagi setelah berkas telah terkirim",
+ "help_autostop_timer": "Berhenti berbagi setelah beberapa detik",
+ "help_stealth": "Gunakan otorisasi klien (lanjutan)",
"help_receive": "",
- "help_debug": "",
- "help_filename": "",
+ "help_debug": "Catat kesalahan OnionShare ke stdout, dan kesalahan web ke disk",
+ "help_filename": "Daftar berkas atau folder untuk dibagikan",
"help_config": "",
- "gui_drag_and_drop": "",
+ "gui_drag_and_drop": "Seret dan lepas berkas dan folder\nuntuk mulai berbagi",
"gui_add": "Tambahkan",
"gui_delete": "Hapus",
"gui_choose_items": "Pilih",
- "gui_share_start_server": "",
- "gui_share_stop_server": "",
- "gui_share_stop_server_shutdown_timeout": "",
+ "gui_share_start_server": "Mulai berbagi",
+ "gui_share_stop_server": "Berhenti berbagi",
+ "gui_share_stop_server_shutdown_timeout": "Berhenti Berbagi ({}d tersisa)",
"gui_share_stop_server_shutdown_timeout_tooltip": "",
- "gui_receive_start_server": "",
- "gui_receive_stop_server": "",
- "gui_receive_stop_server_shutdown_timeout": "",
+ "gui_receive_start_server": "Mulai Mode Menerima",
+ "gui_receive_stop_server": "Menghentikan Mode Menerima",
+ "gui_receive_stop_server_shutdown_timeout": "Menghentikan Mode Menerima ({}d tersisa)",
"gui_receive_stop_server_shutdown_timeout_tooltip": "",
- "gui_copy_url": "",
- "gui_copy_hidservauth": "",
+ "gui_copy_url": "Salin Alamat",
+ "gui_copy_hidservauth": "Salin HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Dibatalkan",
- "gui_copied_url_title": "",
- "gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
- "gui_please_wait": "",
+ "gui_copied_url_title": "Alamat OnionShare disalin",
+ "gui_copied_url": "Alamat OnionShare disalin ke papan klip",
+ "gui_copied_hidservauth_title": "HidServAuth disalin",
+ "gui_copied_hidservauth": "Baris HidServAuth disalin ke papan klip",
+ "gui_please_wait": "Memulai... Klik untuk membatalkan.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "",
- "version_string": "",
- "gui_quit_title": "",
- "gui_share_quit_warning": "",
- "gui_receive_quit_warning": "",
+ "version_string": "OnionShare {0:s} | https://onionshare.org/",
+ "gui_quit_title": "Tidak begitu cepat",
+ "gui_share_quit_warning": "Anda sedang dalam proses pengiriman berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
+ "gui_receive_quit_warning": "Anda sedang dalam proses menerima berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
"gui_quit_warning_quit": "Keluar",
"gui_quit_warning_dont_quit": "Batal",
"error_rate_limit": "",
- "zip_progress_bar_format": "",
- "error_stealth_not_supported": "",
- "error_ephemeral_not_supported": "",
+ "zip_progress_bar_format": "Mengompresi: %p%",
+ "error_stealth_not_supported": "Untuk menggunakan otorisasi klien, Anda perlu setidaknya Tor 0.2.9.1-alpha (atau Tor Browser 6.5) dan python3-stem 1.5.0.",
+ "error_ephemeral_not_supported": "OnionShare memerlukan setidaknya Tor 0.2.7.1 dan python3-stem 1.4.0.",
"gui_settings_window_title": "Pengaturan",
- "gui_settings_whats_this": "",
- "gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
- "gui_settings_autoupdate_label": "",
- "gui_settings_autoupdate_option": "",
- "gui_settings_autoupdate_timestamp": "",
- "gui_settings_autoupdate_timestamp_never": "Tak pernah",
- "gui_settings_autoupdate_check_button": "",
+ "gui_settings_whats_this": "<a href='{0:s}'>Apakah ini?</a>",
+ "gui_settings_stealth_option": "Gunakan otorisasi klien",
+ "gui_settings_stealth_hidservauth_string": "Telah menyimpan kunci privat Anda untuk digunakan kembali, berarti Anda dapat klik untuk menyalin HidServAuth Anda.",
+ "gui_settings_autoupdate_label": "Periksa versi terbaru",
+ "gui_settings_autoupdate_option": "Beritahu saya ketika versi baru tersedia",
+ "gui_settings_autoupdate_timestamp": "Terakhir diperiksa: {}",
+ "gui_settings_autoupdate_timestamp_never": "Tidak pernah",
+ "gui_settings_autoupdate_check_button": "Periksa Versi Terbaru",
"gui_settings_general_label": "Pengaturan umum",
- "gui_settings_sharing_label": "",
- "gui_settings_close_after_first_download_option": "",
- "gui_settings_connection_type_label": "",
+ "gui_settings_sharing_label": "Pengaturan berbagi",
+ "gui_settings_close_after_first_download_option": "Berhenti berbagi setelah berkas telah terkirim",
+ "gui_settings_connection_type_label": "Bagaimana seharusnya OnionShare terhubung ke Tor?",
"gui_settings_connection_type_bundled_option": "",
- "gui_settings_connection_type_automatic_option": "",
- "gui_settings_connection_type_control_port_option": "",
+ "gui_settings_connection_type_automatic_option": "Mencoba konfigurasi otomatis dengan Tor Browser",
+ "gui_settings_connection_type_control_port_option": "Menghubungkan menggunakan porta kontrol",
"gui_settings_connection_type_socket_file_option": "",
- "gui_settings_connection_type_test_button": "",
+ "gui_settings_connection_type_test_button": "Menguji sambungan ke Tor",
"gui_settings_control_port_label": "Port kontrol",
- "gui_settings_socket_file_label": "",
- "gui_settings_socks_label": "",
- "gui_settings_authenticate_label": "",
- "gui_settings_authenticate_no_auth_option": "",
- "gui_settings_authenticate_password_option": "",
- "gui_settings_password_label": "",
+ "gui_settings_socket_file_label": "Berkas soket",
+ "gui_settings_socks_label": "Porta SOCKS",
+ "gui_settings_authenticate_label": "Pengaturan otentikasi Tor",
+ "gui_settings_authenticate_no_auth_option": "Tidak ada otentikasi, atau otentikasi kuki",
+ "gui_settings_authenticate_password_option": "Sandi",
+ "gui_settings_password_label": "Sandi",
"gui_settings_tor_bridges": "",
"gui_settings_tor_bridges_no_bridges_radio_option": "",
"gui_settings_tor_bridges_obfs4_radio_option": "",
@@ -181,5 +181,8 @@
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "",
"gui_settings_language_label": "",
- "gui_settings_language_changed_notice": ""
+ "gui_settings_language_changed_notice": "",
+ "gui_add_files": "Tambahkan berkas",
+ "gui_add_folder": "Tambahkan Folder",
+ "gui_settings_onion_label": "Pengaturan Onion"
}
diff --git a/share/locale/it.json b/share/locale/it.json
index 26328221..fee0f20a 100644
--- a/share/locale/it.json
+++ b/share/locale/it.json
@@ -1,6 +1,6 @@
{
"preparing_files": "Compressione dei file in corso.",
- "give_this_url": "Dai questa URL al destinatario:",
+ "give_this_url": "Dai questo indirizzo al destinatario:",
"ctrlc_to_stop": "Premi Ctrl+C per fermare il server",
"not_a_file": "{0:s} non è un file valido.",
"other_page_loaded": "URL caricato",
@@ -23,7 +23,7 @@
"gui_please_wait": "Avviato... Cliccare per interrompere.",
"zip_progress_bar_format": "Compressione in corso: %p%",
"config_onion_service": "Preparando il servizio onion sulla porta {0:d}.",
- "give_this_url_stealth": "Dai questa URL e la linea HidServAuth al destinatario:",
+ "give_this_url_stealth": "Dai questo indirizzo e la linea HidServAuth al destinatario:",
"give_this_url_receive": "Dai questo indirizzo al mittente:",
"give_this_url_receive_stealth": "Condividi questo indirizzo e la linea HideServAuth con il mittente:",
"not_a_readable_file": "{0:s} non è un file leggibile.",
diff --git a/share/locale/ms.json b/share/locale/ms.json
new file mode 100644
index 00000000..465a9cd4
--- /dev/null
+++ b/share/locale/ms.json
@@ -0,0 +1,184 @@
+{
+ "config_onion_service": "",
+ "preparing_files": "",
+ "give_this_url": "",
+ "give_this_url_stealth": "",
+ "give_this_url_receive": "",
+ "give_this_url_receive_stealth": "",
+ "ctrlc_to_stop": "",
+ "not_a_file": "",
+ "not_a_readable_file": "",
+ "no_available_port": "",
+ "other_page_loaded": "",
+ "close_on_timeout": "",
+ "closing_automatically": "",
+ "large_filesize": "",
+ "help_local_only": "",
+ "help_stay_open": "",
+ "help_shutdown_timeout": "",
+ "help_stealth": "",
+ "help_receive": "",
+ "help_debug": "",
+ "help_filename": "",
+ "help_config": "",
+ "gui_drag_and_drop": "",
+ "gui_add": "",
+ "gui_add_files": "",
+ "gui_add_folder": "",
+ "gui_delete": "",
+ "gui_choose_items": "",
+ "gui_share_start_server": "",
+ "gui_share_stop_server": "",
+ "gui_share_stop_server_shutdown_timeout": "",
+ "gui_share_stop_server_shutdown_timeout_tooltip": "",
+ "gui_receive_start_server": "",
+ "gui_receive_stop_server": "",
+ "gui_receive_stop_server_shutdown_timeout": "",
+ "gui_receive_stop_server_shutdown_timeout_tooltip": "",
+ "gui_copy_url": "",
+ "gui_copy_hidservauth": "",
+ "gui_canceled": "",
+ "gui_copied_url_title": "",
+ "gui_copied_url": "",
+ "gui_copied_hidservauth_title": "",
+ "gui_copied_hidservauth": "",
+ "gui_please_wait": "",
+ "version_string": "",
+ "gui_quit_title": "",
+ "gui_share_quit_warning": "",
+ "gui_receive_quit_warning": "",
+ "gui_quit_warning_quit": "",
+ "gui_quit_warning_dont_quit": "",
+ "error_rate_limit": "",
+ "zip_progress_bar_format": "",
+ "error_stealth_not_supported": "",
+ "error_ephemeral_not_supported": "",
+ "gui_settings_window_title": "",
+ "gui_settings_whats_this": "",
+ "gui_settings_stealth_option": "",
+ "gui_settings_stealth_hidservauth_string": "",
+ "gui_settings_autoupdate_label": "",
+ "gui_settings_autoupdate_option": "",
+ "gui_settings_autoupdate_timestamp": "",
+ "gui_settings_autoupdate_timestamp_never": "",
+ "gui_settings_autoupdate_check_button": "",
+ "gui_settings_general_label": "",
+ "gui_settings_onion_label": "",
+ "gui_settings_sharing_label": "",
+ "gui_settings_close_after_first_download_option": "",
+ "gui_settings_connection_type_label": "",
+ "gui_settings_connection_type_bundled_option": "",
+ "gui_settings_connection_type_automatic_option": "",
+ "gui_settings_connection_type_control_port_option": "",
+ "gui_settings_connection_type_socket_file_option": "",
+ "gui_settings_connection_type_test_button": "",
+ "gui_settings_control_port_label": "",
+ "gui_settings_socket_file_label": "",
+ "gui_settings_socks_label": "",
+ "gui_settings_authenticate_label": "",
+ "gui_settings_authenticate_no_auth_option": "",
+ "gui_settings_authenticate_password_option": "",
+ "gui_settings_password_label": "",
+ "gui_settings_tor_bridges": "",
+ "gui_settings_tor_bridges_no_bridges_radio_option": "",
+ "gui_settings_tor_bridges_obfs4_radio_option": "",
+ "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
+ "gui_settings_meek_lite_expensive_warning": "",
+ "gui_settings_tor_bridges_custom_radio_option": "",
+ "gui_settings_tor_bridges_custom_label": "",
+ "gui_settings_tor_bridges_invalid": "",
+ "gui_settings_button_save": "",
+ "gui_settings_button_cancel": "",
+ "gui_settings_button_help": "",
+ "gui_settings_shutdown_timeout_checkbox": "",
+ "gui_settings_shutdown_timeout": "",
+ "settings_error_unknown": "",
+ "settings_error_automatic": "",
+ "settings_error_socket_port": "",
+ "settings_error_socket_file": "",
+ "settings_error_auth": "",
+ "settings_error_missing_password": "",
+ "settings_error_unreadable_cookie_file": "",
+ "settings_error_bundled_tor_not_supported": "",
+ "settings_error_bundled_tor_timeout": "",
+ "settings_error_bundled_tor_broken": "",
+ "settings_test_success": "",
+ "error_tor_protocol_error": "",
+ "error_tor_protocol_error_unknown": "",
+ "error_invalid_private_key": "",
+ "connecting_to_tor": "",
+ "update_available": "",
+ "update_error_check_error": "",
+ "update_error_invalid_latest_version": "",
+ "update_not_available": "",
+ "gui_tor_connection_ask": "",
+ "gui_tor_connection_ask_open_settings": "",
+ "gui_tor_connection_ask_quit": "",
+ "gui_tor_connection_error_settings": "",
+ "gui_tor_connection_canceled": "",
+ "gui_tor_connection_lost": "",
+ "gui_server_started_after_timeout": "",
+ "gui_server_timeout_expired": "",
+ "share_via_onionshare": "",
+ "gui_connect_to_tor_for_onion_settings": "",
+ "gui_use_legacy_v2_onions_checkbox": "",
+ "gui_save_private_key_checkbox": "",
+ "gui_share_url_description": "",
+ "gui_receive_url_description": "",
+ "gui_url_label_persistent": "",
+ "gui_url_label_stay_open": "",
+ "gui_url_label_onetime": "",
+ "gui_url_label_onetime_and_persistent": "",
+ "gui_status_indicator_share_stopped": "",
+ "gui_status_indicator_share_working": "",
+ "gui_status_indicator_share_started": "",
+ "gui_status_indicator_receive_stopped": "",
+ "gui_status_indicator_receive_working": "",
+ "gui_status_indicator_receive_started": "",
+ "gui_file_info": "",
+ "gui_file_info_single": "",
+ "history_in_progress_tooltip": "",
+ "history_completed_tooltip": "",
+ "error_cannot_create_data_dir": "",
+ "receive_mode_data_dir": "",
+ "receive_mode_warning": "",
+ "gui_receive_mode_warning": "",
+ "receive_mode_upload_starting": "",
+ "receive_mode_received_file": "",
+ "gui_mode_share_button": "",
+ "gui_mode_receive_button": "",
+ "gui_settings_receiving_label": "",
+ "gui_settings_data_dir_label": "",
+ "gui_settings_data_dir_browse_button": "",
+ "gui_settings_public_mode_checkbox": "",
+ "gui_open_folder_error_nautilus": "",
+ "gui_settings_language_label": "",
+ "gui_settings_language_changed_notice": "",
+ "systray_menu_exit": "",
+ "systray_page_loaded_title": "",
+ "systray_page_loaded_message": "",
+ "systray_share_started_title": "",
+ "systray_share_started_message": "",
+ "systray_share_completed_title": "",
+ "systray_share_completed_message": "",
+ "systray_share_canceled_title": "",
+ "systray_share_canceled_message": "",
+ "systray_receive_started_title": "",
+ "systray_receive_started_message": "",
+ "gui_all_modes_history": "",
+ "gui_all_modes_clear_history": "",
+ "gui_all_modes_transfer_started": "",
+ "gui_all_modes_transfer_finished_range": "",
+ "gui_all_modes_transfer_finished": "",
+ "gui_all_modes_transfer_canceled_range": "",
+ "gui_all_modes_transfer_canceled": "",
+ "gui_all_modes_progress_complete": "",
+ "gui_all_modes_progress_starting": "",
+ "gui_all_modes_progress_eta": "",
+ "gui_share_mode_no_files": "",
+ "gui_share_mode_timeout_waiting": "",
+ "gui_receive_mode_no_files": "",
+ "gui_receive_mode_timeout_waiting": ""
+}
diff --git a/share/locale/no.json b/share/locale/no.json
index a3ae1a8f..4ef2721c 100644
--- a/share/locale/no.json
+++ b/share/locale/no.json
@@ -69,7 +69,7 @@
"gui_settings_window_title": "Innstillinger",
"gui_settings_whats_this": "<a href='{0:s}'>Hva er dette?</a>",
"gui_settings_stealth_option": "Bruk klientidentifisering",
- "gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå\nklikke for å kopiere din HidServAuth-linje.",
+ "gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå klikke for å kopiere din HidServAuth-linje.",
"gui_settings_autoupdate_label": "Se etter ny versjon",
"gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig",
"gui_settings_autoupdate_timestamp": "Sist sjekket: {}",
@@ -216,5 +216,6 @@
"gui_receive_mode_no_files": "Ingen filer mottatt enda",
"gui_receive_mode_timeout_waiting": "Venter på fullføring av mottak",
"gui_all_modes_transfer_canceled_range": "Avbrutt {} - {}",
- "gui_all_modes_transfer_canceled": "Avbrutt {}"
+ "gui_all_modes_transfer_canceled": "Avbrutt {}",
+ "gui_settings_onion_label": "Løk-innstillinger"
}
diff --git a/share/locale/pt_BR.json b/share/locale/pt_BR.json
index d3a731b3..47030d22 100644
--- a/share/locale/pt_BR.json
+++ b/share/locale/pt_BR.json
@@ -208,5 +208,10 @@
"gui_all_modes_transfer_canceled": "Cancelado {}",
"gui_share_mode_timeout_waiting": "Esperando para completar o envio",
"gui_receive_mode_no_files": "Nenhum arquivo recebido",
- "gui_receive_mode_timeout_waiting": "Esperando para completar o recebimento"
+ "gui_receive_mode_timeout_waiting": "Esperando para completar o recebimento",
+ "gui_settings_onion_label": "Configurando Onion",
+ "systray_page_loaded_message": "Endereço OnionShare foi carregado",
+ "gui_all_modes_progress_complete": "%p%, {0:s} em curso.",
+ "gui_all_modes_progress_starting": "{0:s}, %p% (calculando)",
+ "gui_all_modes_progress_eta": "{0:s}, Tempo aproximado: {1:s}, %p%"
}
diff --git a/share/locale/sv.json b/share/locale/sv.json
index 70a96320..53e05e43 100644
--- a/share/locale/sv.json
+++ b/share/locale/sv.json
@@ -8,9 +8,9 @@
"ctrlc_to_stop": "Tryck ned Ctrl+C för att stoppa servern",
"not_a_file": "{0:s} är inte en giltig fil.",
"not_a_readable_file": "{0:s} är inte en läsbar fil.",
- "no_available_port": "Kunde inte hitta en ledig kort för att börja onion-tjänsten",
+ "no_available_port": "Kunde inte hitta en ledig kort för att starta onion-tjänsten",
"other_page_loaded": "Adress laddad",
- "close_on_timeout": "Stoppad för att automatiska stopp-timern tiden tog slut",
+ "close_on_timeout": "Stoppad för att tiden för den automatiska stopp-tidtagaren löpte ut",
"closing_automatically": "Stoppad för att hämtningen är klar",
"timeout_download_still_running": "Väntar på att nedladdningen ska bli klar",
"timeout_upload_still_running": "Väntar på att uppladdningen ska bli klar",
@@ -26,7 +26,7 @@
"systray_upload_started_message": "En användare började ladda upp filer på din dator",
"help_local_only": "Använd inte Tor (endast för utveckling)",
"help_stay_open": "Fortsätt dela efter att filer har skickats",
- "help_autostop_timer": "Avbryt delning efter ett bestämt antal sekunder",
+ "help_autostop_timer": "Sluta dela efter ett bestämt antal sekunder",
"help_stealth": "Använd klient-auktorisering (avancerat)",
"help_receive": "Ta emot delningar istället för att skicka dem",
"help_debug": "Logga OnionShare fel till stdout och webbfel till hårddisken",
@@ -39,11 +39,11 @@
"gui_share_start_server": "Börja dela",
"gui_share_stop_server": "Avbryt delning",
"gui_share_stop_server_shutdown_timeout": "Avbryt Delning ({}s kvarstår)",
- "gui_share_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-timern avslutar vid {}",
- "gui_receive_start_server": "Börja mottagarläge",
+ "gui_share_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
+ "gui_receive_start_server": "Starta mottagarläge",
"gui_receive_stop_server": "Avsluta Mottagarläge",
"gui_receive_stop_server_shutdown_timeout": "Avsluta Mottagarläge ({}s kvarstår)",
- "gui_receive_stop_server_shutdown_timeout_tooltip": "Auto-stop timer avslutas kl {}",
+ "gui_receive_stop_server_shutdown_timeout_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_copy_url": "Kopiera Adress",
"gui_copy_hidservauth": "Kopiera HidServAuth",
"gui_downloads": "Nedladdningshistorik",
@@ -70,7 +70,7 @@
"gui_settings_window_title": "Inställningar",
"gui_settings_whats_this": "<a href='{0:s}'>Vad är det här?</a>",
"gui_settings_stealth_option": "Använd klientauktorisering",
- "gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär att du kan nu\nklicka för att kopiera din HidServAuth.",
+ "gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär det att du nu kan klicka för att kopiera din HidServAuth.",
"gui_settings_autoupdate_label": "Sök efter ny version",
"gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig",
"gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}",
@@ -105,7 +105,7 @@
"gui_settings_button_save": "Spara",
"gui_settings_button_cancel": "Avbryt",
"gui_settings_button_help": "Hjälp",
- "gui_settings_shutdown_timeout_checkbox": "Använd automatiska stopp-timern",
+ "gui_settings_shutdown_timeout_checkbox": "Använd den automatiska stopp-tidtagaren",
"gui_settings_shutdown_timeout": "Stoppa delningen vid:",
"settings_error_unknown": "Kan inte ansluta till Tor-regulatorn eftersom dina inställningar inte är vettiga.",
"settings_error_automatic": "Kunde inte ansluta till Tor-regulatorn. Körs Tor Browser (tillgänglig från torproject.org) i bakgrunden?",
@@ -117,7 +117,7 @@
"settings_error_bundled_tor_not_supported": "Användning av Tor-versionen som följer med OnionShare fungerar inte i utvecklarläge på Windows eller macOS.",
"settings_error_bundled_tor_timeout": "Det tar för lång tid att ansluta till Tor. Kanske är du inte ansluten till Internet, eller har en felaktig systemklocka?",
"settings_error_bundled_tor_broken": "OnionShare kunde inte ansluta till Tor i bakgrunden:\n{}",
- "settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
+ "settings_test_success": "Ansluten till Tor-regulatorn.\n\nTor-version: {}\nStöder efemära onion-tjänster: {}.\nStöder klientautentisering: {}.\nStöder nästa generations .onion-adresser: {}.",
"error_tor_protocol_error": "Det fanns ett fel med Tor: {}",
"error_tor_protocol_error_unknown": "Det fanns ett okänt fel med Tor",
"error_invalid_private_key": "Denna privata nyckeltyp stöds inte",
@@ -132,9 +132,9 @@
"gui_tor_connection_error_settings": "Försök ändra hur OnionShare ansluter till Tor-nätverket i inställningarna.",
"gui_tor_connection_canceled": "Kunde inte ansluta till Tor.\n\nSe till att du är ansluten till Internet, öppna sedan OnionShare och ställ in anslutningen till Tor.",
"gui_tor_connection_lost": "Frånkopplad från Tor.",
- "gui_server_started_after_timeout": "Automatiska stopp-timern tog slut innan servern startade.\nVänligen gör en ny delning.",
- "gui_server_timeout_expired": "Automatiska stopp-timern har redan slutat.\nUppdatera den för att börja dela.",
- "share_via_onionshare": "OnionShare den",
+ "gui_server_started_after_timeout": "Tiden för den automatiska stopp-timern löpte ut innan servern startade.\nVänligen gör en ny delning.",
+ "gui_server_timeout_expired": "Tiden för den automatiska stopp-tidtagaren löpte redan ut.\nUppdatera den för att börja dela.",
+ "share_via_onionshare": "Dela den med OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser",
"gui_save_private_key_checkbox": "Använd en beständig adress",
"gui_share_url_description": "<b>Alla</b> med denna OnionShare-adress kan <b>hämta</b> dina filer med hjälp av <b>Tor Browser</b>: <img src='{}' />",
@@ -211,5 +211,6 @@
"gui_receive_mode_no_files": "Inga filer har mottagits ännu",
"gui_receive_mode_timeout_waiting": "Väntar på att avsluta mottagande",
"gui_all_modes_transfer_canceled_range": "Avbröt {} - {}",
- "gui_all_modes_transfer_canceled": "Avbröt {}"
+ "gui_all_modes_transfer_canceled": "Avbröt {}",
+ "gui_settings_onion_label": "Inställningar för Onion"
}
diff --git a/share/locale/zh_Hans.json b/share/locale/zh_Hans.json
index 3457ef3c..31f25f08 100644
--- a/share/locale/zh_Hans.json
+++ b/share/locale/zh_Hans.json
@@ -10,7 +10,7 @@
"not_a_readable_file": "{0:s}不是可读文件.",
"no_available_port": "找不到可用于开启onion服务的端口",
"other_page_loaded": "地址已加载完成",
- "close_on_timeout": "终止 原因:自动停止计时器的时间已到",
+ "close_on_timeout": "停止原因:自动停止计时器的时间已到",
"closing_automatically": "终止 原因:传输已完成",
"timeout_download_still_running": "",
"large_filesize": "警告:分享大文件可能会用上数小时",
@@ -23,12 +23,12 @@
"systray_download_canceled_message": "",
"systray_upload_started_title": "",
"systray_upload_started_message": "",
- "help_local_only": "不使用Tor(只限开发测试)",
+ "help_local_only": "不使用Tor(仅开发测试)",
"help_stay_open": "文件传输完成后继续分享",
- "help_autostop_timer": "超过给定时间(秒)后,终止分享.",
+ "help_autostop_timer": "超过给定时间(秒)后终止分享",
"help_stealth": "使用服务端认证(高级选项)",
- "help_receive": "仅接收分享的文件,不发送",
- "help_debug": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘",
+ "help_receive": "仅接收分享的文件,不发送",
+ "help_debug": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘",
"help_filename": "要分享的文件或文件夹的列表",
"help_config": "自定义JSON配置文件的路径(可选)",
"gui_drag_and_drop": "将文件或文件夹拖动到这里来开始分享",
@@ -37,7 +37,7 @@
"gui_choose_items": "选取",
"gui_share_start_server": "开始分享",
"gui_share_stop_server": "停止分享",
- "gui_share_stop_server_shutdown_timeout": "停止分享(还剩{}秒)",
+ "gui_share_stop_server_shutdown_timeout": "停止分享(还剩{}秒)",
"gui_share_stop_server_shutdown_timeout_tooltip": "在{}自动停止",
"gui_receive_start_server": "开启接受模式",
"gui_receive_stop_server": "停止接受模式",
@@ -56,20 +56,20 @@
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "",
- "version_string": "版本: OnionShare {0:s} | https://onionshare.org/",
+ "version_string": "版本: OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "再等等",
"gui_share_quit_warning": "您有文件正在传输中...您确定要退出OnionShare吗?",
"gui_receive_quit_warning": "您有文件还正在接收中...您确定要退出OnionShare吗?",
"gui_quit_warning_quit": "退出",
"gui_quit_warning_dont_quit": "取消",
- "error_rate_limit": "有人您对地址发出过多错误请求,这很可能说明有人在尝试猜测您的地址.因此为了安全OinionShare已终止服务.请重新开启分享并且向收件人发送新地址.",
+ "error_rate_limit": "有人您对地址发出过多错误请求,这很可能说明有人在尝试猜测您的地址,因此为了安全OinionShare已终止服务。请重新开启分享并且向收件人发送新地址。",
"zip_progress_bar_format": "压缩中: %p%",
- "error_stealth_not_supported": "要使用服务端认证,您至少需要的最低版本要求是:Tor 0.2.9.1-alpha (or Tor Browser 6.5)和python3-stem 1.5.0.两者缺一不可,同时需要.",
- "error_ephemeral_not_supported": "OnionShare至少同时需要Tor 0.2.7.1和python3-stem 1.4.0来运行.",
+ "error_stealth_not_supported": "要使用服务端认证,您至少需要的最低版本要求是:Tor 0.2.9.1-alpha (or Tor Browser 6.5)和python3-stem 1.5.0。两者缺一不可,同时需要。",
+ "error_ephemeral_not_supported": "OnionShare至少同时需要Tor 0.2.7.1和python3-stem 1.4.0来运行。",
"gui_settings_window_title": "设置",
"gui_settings_whats_this": "<a href='{0:s}'>这是什么?</a>",
"gui_settings_stealth_option": "使用客户端认证",
- "gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以\n点击这里来复制您的HidServAuth.",
+ "gui_settings_stealth_hidservauth_string": "已保存了你的私钥用于重复使用,意味着您现在可以点击这里来复制您的HidServAuth。",
"gui_settings_autoupdate_label": "检查新版本",
"gui_settings_autoupdate_option": "有新版本可用时告知我",
"gui_settings_autoupdate_timestamp": "上次检查更新的时间:{}",
@@ -79,12 +79,12 @@
"gui_settings_sharing_label": "分享设置",
"gui_settings_close_after_first_download_option": "文件发送完成后停止分享",
"gui_settings_connection_type_label": "OnionShare应如何连接Tor?",
- "gui_settings_connection_type_bundled_option": "使用OnionShare内置的tor",
- "gui_settings_connection_type_automatic_option": "尝试使用Tor Browser(Tor浏览器)的设置",
+ "gui_settings_connection_type_bundled_option": "使用OnionShare内置的Tor",
+ "gui_settings_connection_type_automatic_option": "尝试使用Tor Browser(Tor浏览器)的设置",
"gui_settings_connection_type_control_port_option": "用特定端口连接",
"gui_settings_connection_type_socket_file_option": "使用socket文档的设置连接",
"gui_settings_connection_type_test_button": "测试tor连接",
- "gui_settings_control_port_label": "控制端口",
+ "gui_settings_control_port_label": "控制端端口",
"gui_settings_socket_file_label": "Socket配置文档",
"gui_settings_socks_label": "SOCKS 端口",
"gui_settings_authenticate_label": "Tor认证设置",
@@ -105,36 +105,36 @@
"gui_settings_button_cancel": "取消",
"gui_settings_button_help": "帮助",
"gui_settings_shutdown_timeout_checkbox": "使用自动停止计时器",
- "gui_settings_shutdown_timeout": "在(时间)停止分享",
+ "gui_settings_shutdown_timeout": "停止分享时间:",
"settings_error_unknown": "无法连接Tor控制件,因为您的设置无法被理解.",
"settings_error_automatic": "无法连接tor控制件.Tor浏览器是否在后台工作?(从torproject.org可以获得Tor Browser)",
"settings_error_socket_port": "在socket端口{}:{}无法连接tor控制件.",
- "settings_error_socket_file": "无法使用socket配置文档的设置连接tor控制件",
- "settings_error_auth": "已连接到了{}:{},但是无法认证,也许这不是tor控制件?",
+ "settings_error_socket_file": "无法使用socket配置文档{}的设置连接Tor控制件。",
+ "settings_error_auth": "已连接到了{}:{},但是无法认证,也许这不是tor控制件?",
"settings_error_missing_password": "已连接到tor控制件,但需要密码来认证.",
- "settings_error_unreadable_cookie_file": "已连接到tor控制件,但可能密码错误,或者没有读取cookie文件的权限.",
- "settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式",
+ "settings_error_unreadable_cookie_file": "已连接到Tor控制件,但可能密码错误,或者没有读取cookie文件的权限。",
+ "settings_error_bundled_tor_not_supported": "OnionShare自带的Tor无法在Windows或macOS下运行开发者模式。",
"settings_error_bundled_tor_timeout": "尝试连接tor的用时过长,也许您的网络有问题,或者是系统时间不准确?",
"settings_error_bundled_tor_broken": "OnionShare无法在后台连接Tor\n{}",
- "settings_test_success": "已连接到Tor控制件\n\nTor版本: {}\n支持短期onion服务: {}.\n支持客户端认证: {}.\n支持新一代.onion地址: {}.",
+ "settings_test_success": "已连接到Tor控制件\n\nTor版本:{}\n支持短期onion服务:{}。\n支持客户端认证:{}。\n支持新一代.onion地址:{}。",
"error_tor_protocol_error": "Tor出现错误: {}",
"error_tor_protocol_error_unknown": "Tor出现未知错误",
"error_invalid_private_key": "不支持这种类型的私钥",
"connecting_to_tor": "正在连接Tor网络",
"update_available": "有新版本的OnionShare可用:<a href='{}'>请点击这里</a> 来获得.<br><br>您在使用的版本为 {} 最新的可用版本为 {}.",
- "update_error_check_error": "无法检查更新:OnionShare官网对最新版本无法识别'{}'…",
+ "update_error_check_error": "无法检查更新:OnionShare官网对最新版本无法识别'{}'…",
"update_error_invalid_latest_version": "无法检查更新:也许您没有连接到Tor?或者OnionShare官网不可用?",
"update_not_available": "您现在运行的OnionShare为最新版本.",
"gui_tor_connection_ask": "打开设置来查看Tor连接?",
"gui_tor_connection_ask_open_settings": "是的",
"gui_tor_connection_ask_quit": "退出",
"gui_tor_connection_error_settings": "请尝试在设置中设定OnionShare连接Tor的方式.",
- "gui_tor_connection_canceled": "无法连接Tor.\n\n请确保您一连接到网络,然后重启OnionShare并设置Tor连接.",
+ "gui_tor_connection_canceled": "无法连接Tor。\n\n请确保您一连接到网络,然后重启OnionShare并设置Tor连接。",
"gui_tor_connection_lost": "已和Tor断开连接.",
"gui_server_started_after_timeout": "在服务开始之前自动停止计时器的时间已到.\n请建立新的分享.",
- "gui_server_timeout_expired": "自动停止计时器的时间已到.\n请更新其设置来开始分享.",
+ "gui_server_timeout_expired": "自动停止计时器的时间已到。\n请更新其设置来开始分享。",
"share_via_onionshare": "用OnionShare来分享",
- "gui_use_legacy_v2_onions_checkbox": "使用古老的地址",
+ "gui_use_legacy_v2_onions_checkbox": "使用旧的地址",
"gui_save_private_key_checkbox": "使用长期地址",
"gui_share_url_description": "<b>任何人</b>只要拥有这个OnionShare 地址,都可以用<b>Tor浏览器</b>来从您的设备进行文件<b>下载</b>:<img src='{}' />",
"gui_receive_url_description": "<b>任何人</b>只要拥有这个OnionShare 地址,都可以用<b>Tor浏览器</b>来给你的设备进行文件<b>上传</b>:<img src='{}' />",
@@ -179,7 +179,7 @@
"gui_upload_finished_range": "",
"gui_upload_finished": "",
"gui_download_in_progress": "",
- "gui_open_folder_error_nautilus": "无法打开文件夹,原因:nautilus不可用.文件在这里: {}",
+ "gui_open_folder_error_nautilus": "无法打开文件夹,原因:nautilus不可用。文件在这里:{}",
"gui_settings_language_label": "首选语言",
"gui_settings_language_changed_notice": "请重启OnionShare以使您的语言改变设定生效.",
"gui_add_files": "添加文件",
@@ -203,7 +203,7 @@
"gui_all_modes_transfer_started": "已开始{}",
"gui_all_modes_transfer_finished_range": "已传输 {} - {}",
"gui_all_modes_transfer_finished": "已传输完成 {}",
- "gui_all_modes_progress_complete": "%p%, {0:s} 已完成.",
+ "gui_all_modes_progress_complete": "%p%,{0:s} 已完成。",
"gui_all_modes_progress_starting": "{0:s}, %p% (计算中)",
"gui_all_modes_progress_eta": "{0:s}, 预计完成时间: {1:s}, %p%",
"gui_share_mode_no_files": "还没有文件发出",
diff --git a/share/locale/zh_Hant.json b/share/locale/zh_Hant.json
index 24317384..de34880c 100644
--- a/share/locale/zh_Hant.json
+++ b/share/locale/zh_Hant.json
@@ -1,19 +1,19 @@
{
- "config_onion_service": "",
- "preparing_files": "",
- "give_this_url": "",
- "give_this_url_stealth": "",
- "give_this_url_receive": "",
- "give_this_url_receive_stealth": "",
- "ctrlc_to_stop": "",
- "not_a_file": "",
- "not_a_readable_file": "",
- "no_available_port": "",
- "other_page_loaded": "",
- "close_on_timeout": "",
- "closing_automatically": "",
+ "config_onion_service": "正在端口{0:d}啟動onion服務...",
+ "preparing_files": "壓縮檔案中...",
+ "give_this_url": "請將這串地址交給接收者:",
+ "give_this_url_stealth": "請將這串地址以及HidServAuth交給接收者:",
+ "give_this_url_receive": "請將這串地址交給傳送者:",
+ "give_this_url_receive_stealth": "請將這串地址以及HidServAuth交給傳送者:",
+ "ctrlc_to_stop": "按下Ctrl+C以停止服務",
+ "not_a_file": "{0:s} 不是一個可用的檔案。",
+ "not_a_readable_file": "{0:s} 不是一個可讀取的檔案。",
+ "no_available_port": "找不到一個可用的端口來啟動onion服務",
+ "other_page_loaded": "已載入的地址",
+ "close_on_timeout": "因計數器超時,已停止",
+ "closing_automatically": "因傳輸完成,已停止",
"timeout_download_still_running": "",
- "large_filesize": "",
+ "large_filesize": "警告:傳輸巨大的檔案將有可能耗時數小時以上",
"systray_menu_exit": "離開",
"systray_download_started_title": "",
"systray_download_started_message": "",
@@ -23,114 +23,114 @@
"systray_download_canceled_message": "",
"systray_upload_started_title": "",
"systray_upload_started_message": "",
- "help_local_only": "",
- "help_stay_open": "",
- "help_autostop_timer": "",
- "help_stealth": "",
- "help_receive": "",
- "help_debug": "",
- "help_filename": "",
- "help_config": "",
- "gui_drag_and_drop": "",
+ "help_local_only": "不要使用Tor(僅限開發使用)",
+ "help_stay_open": "繼續分享即使檔案已傳送",
+ "help_autostop_timer": "在所給定的秒數後停止分享",
+ "help_stealth": "使用客戶端認證 (進階選項)",
+ "help_receive": "接收分享的檔案而不是傳送他們",
+ "help_debug": "將OnionShare的錯誤日誌輸出到stdout, 並且將網路錯誤輸出到硬碟",
+ "help_filename": "列舉所要分享的檔案或資料夾",
+ "help_config": "自定義的JSON設置檔路徑(選擇性)",
+ "gui_drag_and_drop": "拖曳檔案及資料夾來開始分享",
"gui_add": "新增",
"gui_delete": "刪除",
- "gui_choose_items": "選擇",
- "gui_share_start_server": "",
- "gui_share_stop_server": "",
- "gui_share_stop_server_shutdown_timeout": "",
- "gui_share_stop_server_shutdown_timeout_tooltip": "",
- "gui_receive_start_server": "",
- "gui_receive_stop_server": "",
- "gui_receive_stop_server_shutdown_timeout": "",
- "gui_receive_stop_server_shutdown_timeout_tooltip": "",
- "gui_copy_url": "",
- "gui_copy_hidservauth": "",
+ "gui_choose_items": "瀏覽",
+ "gui_share_start_server": "開始分享",
+ "gui_share_stop_server": "停止分享",
+ "gui_share_stop_server_shutdown_timeout": "停止分享 (剩餘{}秒)",
+ "gui_share_stop_server_shutdown_timeout_tooltip": "計數器將在{}停止",
+ "gui_receive_start_server": "啟動接收模式",
+ "gui_receive_stop_server": "停止接收模式",
+ "gui_receive_stop_server_shutdown_timeout": "停止接收模式 (剩餘{}秒)",
+ "gui_receive_stop_server_shutdown_timeout_tooltip": "計數器將在{}停止",
+ "gui_copy_url": "複製地址",
+ "gui_copy_hidservauth": "複製HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
- "gui_canceled": "取消",
- "gui_copied_url_title": "",
- "gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
- "gui_please_wait": "",
+ "gui_canceled": "已取消",
+ "gui_copied_url_title": "已複製OnionShare地址",
+ "gui_copied_url": "OnionShare地址已複製到剪貼簿",
+ "gui_copied_hidservauth_title": "已複製HidServAuth",
+ "gui_copied_hidservauth": "HidServAuth已複製到剪貼簿",
+ "gui_please_wait": "啟動中...點擊以取消。",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
"gui_download_upload_progress_eta": "",
- "version_string": "",
- "gui_quit_title": "",
- "gui_share_quit_warning": "",
- "gui_receive_quit_warning": "",
- "gui_quit_warning_quit": "離開",
- "gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
- "zip_progress_bar_format": "",
- "error_stealth_not_supported": "",
- "error_ephemeral_not_supported": "",
+ "version_string": "OnionShare {0:s} | https://onionshare.org/",
+ "gui_quit_title": "確定要離開嗎",
+ "gui_share_quit_warning": "仍在傳送檔案,您確定要結束OnionShare嗎?",
+ "gui_receive_quit_warning": "仍在接收檔案,您確定要結束OnionShare嗎?",
+ "gui_quit_warning_quit": "結束",
+ "gui_quit_warning_dont_quit": "取消",
+ "error_rate_limit": "有人嘗試過多次您的地址,代表他們可能是用猜的,因此OnionShare已經停止服務。再次啟動分享並傳送新的地址給接收者以開始分享。",
+ "zip_progress_bar_format": "壓縮中: %p%",
+ "error_stealth_not_supported": "為了使用客戶端認證, 您至少需要 Tor 0.2.9.1-alpha (或 Tor Browser 6.5) 以及 python3-stem 1.5.0.",
+ "error_ephemeral_not_supported": "OnionShare 需要至少 Tor 0.2.7.1 以及 python3-stem 1.4.0.",
"gui_settings_window_title": "設定",
- "gui_settings_whats_this": "",
- "gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
+ "gui_settings_whats_this": "<a href='{0:s}'>這是什麼?</a>",
+ "gui_settings_stealth_option": "使用客戶端認證",
+ "gui_settings_stealth_hidservauth_string": "已經將您的私鑰存起來以便使用,代表您現在可以點選以複製您的HidSerAuth。",
"gui_settings_autoupdate_label": "檢查新版本",
- "gui_settings_autoupdate_option": "",
- "gui_settings_autoupdate_timestamp": "",
- "gui_settings_autoupdate_timestamp_never": "不使用",
- "gui_settings_autoupdate_check_button": "",
+ "gui_settings_autoupdate_option": "當有新版本的時候提醒我",
+ "gui_settings_autoupdate_timestamp": "上一次檢查時間: {}",
+ "gui_settings_autoupdate_timestamp_never": "從未",
+ "gui_settings_autoupdate_check_button": "檢查新版本",
"gui_settings_general_label": "一般設定",
- "gui_settings_sharing_label": "",
- "gui_settings_close_after_first_download_option": "",
- "gui_settings_connection_type_label": "",
- "gui_settings_connection_type_bundled_option": "",
- "gui_settings_connection_type_automatic_option": "",
- "gui_settings_connection_type_control_port_option": "",
- "gui_settings_connection_type_socket_file_option": "",
- "gui_settings_connection_type_test_button": "",
- "gui_settings_control_port_label": "管理連接埠",
- "gui_settings_socket_file_label": "",
- "gui_settings_socks_label": "",
- "gui_settings_authenticate_label": "",
- "gui_settings_authenticate_no_auth_option": "",
- "gui_settings_authenticate_password_option": "Password",
- "gui_settings_password_label": "Password",
- "gui_settings_tor_bridges": "",
- "gui_settings_tor_bridges_no_bridges_radio_option": "",
- "gui_settings_tor_bridges_obfs4_radio_option": "",
- "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "",
- "gui_settings_tor_bridges_meek_lite_azure_radio_option": "",
- "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "",
- "gui_settings_meek_lite_expensive_warning": "",
- "gui_settings_tor_bridges_custom_radio_option": "",
- "gui_settings_tor_bridges_custom_label": "",
- "gui_settings_tor_bridges_invalid": "",
+ "gui_settings_sharing_label": "分享設定",
+ "gui_settings_close_after_first_download_option": "當檔案已傳送時停止分享",
+ "gui_settings_connection_type_label": "OnionShare要如何連接到Tor?",
+ "gui_settings_connection_type_bundled_option": "使用OnionShare內建的Tor版本",
+ "gui_settings_connection_type_automatic_option": "嘗試auto-configuration with Tor Browser",
+ "gui_settings_connection_type_control_port_option": "使用control port",
+ "gui_settings_connection_type_socket_file_option": "使用Socket file",
+ "gui_settings_connection_type_test_button": "測試連接到Tor",
+ "gui_settings_control_port_label": "Control端口",
+ "gui_settings_socket_file_label": "Socket file",
+ "gui_settings_socks_label": "SOCKS端口",
+ "gui_settings_authenticate_label": "Tor 驗證設定",
+ "gui_settings_authenticate_no_auth_option": "沒有驗證,或使用cookie驗證",
+ "gui_settings_authenticate_password_option": "密碼",
+ "gui_settings_password_label": "密碼",
+ "gui_settings_tor_bridges": "Tor bridge支援",
+ "gui_settings_tor_bridges_no_bridges_radio_option": "不要使用bridges",
+ "gui_settings_tor_bridges_obfs4_radio_option": "使用內建的obfs4 pluggable transports",
+ "gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "使用內建的obfs4 pluggable transports (需要 obfs4proxy)",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option": "使用內建的 meek_lite (Azure) pluggable transports",
+ "gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "使月內建的 meek_lite (Azure) pluggable transports (需要 obfs4proxy)",
+ "gui_settings_meek_lite_expensive_warning": "警告: The meek_lite bridges are very costly for the Tor Project to run.<br><br>Only use them if unable to connect to Tor directly, via obfs4 transports, or other normal bridges.",
+ "gui_settings_tor_bridges_custom_radio_option": "使用自定義的bridges",
+ "gui_settings_tor_bridges_custom_label": "你可以從 <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>取得bridges",
+ "gui_settings_tor_bridges_invalid": "您新增的bridges無效。\n請再次檢查他們或新增其他的。",
"gui_settings_button_save": "保存",
- "gui_settings_button_cancel": "",
- "gui_settings_button_help": "協助",
- "gui_settings_shutdown_timeout_checkbox": "",
- "gui_settings_shutdown_timeout": "",
- "settings_error_unknown": "",
- "settings_error_automatic": "",
- "settings_error_socket_port": "",
- "settings_error_socket_file": "",
- "settings_error_auth": "",
- "settings_error_missing_password": "",
- "settings_error_unreadable_cookie_file": "",
- "settings_error_bundled_tor_not_supported": "",
- "settings_error_bundled_tor_timeout": "",
- "settings_error_bundled_tor_broken": "",
- "settings_test_success": "",
- "error_tor_protocol_error": "",
- "error_tor_protocol_error_unknown": "",
- "error_invalid_private_key": "",
- "connecting_to_tor": "",
- "update_available": "",
- "update_error_check_error": "",
- "update_error_invalid_latest_version": "",
- "update_not_available": "",
- "gui_tor_connection_ask": "",
- "gui_tor_connection_ask_open_settings": "",
- "gui_tor_connection_ask_quit": "離開",
- "gui_tor_connection_error_settings": "",
- "gui_tor_connection_canceled": "",
- "gui_tor_connection_lost": "",
+ "gui_settings_button_cancel": "取消",
+ "gui_settings_button_help": "說明",
+ "gui_settings_shutdown_timeout_checkbox": "使用自動停止計數器",
+ "gui_settings_shutdown_timeout": "在這個時間停止分享:",
+ "settings_error_unknown": "無法連接到Tor controller因為您的設定無效。",
+ "settings_error_automatic": "無法連機到Tor controller。Tor Browser(可以從torproject.org取得)是否正在背景運行?",
+ "settings_error_socket_port": "無法在{}:{}連接到Tor controller。",
+ "settings_error_socket_file": "無法使用Socket file {}連接到Tor controller。",
+ "settings_error_auth": "已連接到 {}:{} 但無法驗證。或許這個不是一個Tor controller?",
+ "settings_error_missing_password": "已連接到Tor controller,但是它需要密碼進行驗證。",
+ "settings_error_unreadable_cookie_file": "已連接到Tor controller,但是密碼錯誤,或是您沒有讀取cookie檔案的權限。",
+ "settings_error_bundled_tor_not_supported": "OnionShare附帶的Tor版本並不適用於Windows或macOS上的開發人員模式。",
+ "settings_error_bundled_tor_timeout": "Tor連接超時。您可能沒有連接網路,或是系統時間設定錯誤?",
+ "settings_error_bundled_tor_broken": "OnionShare無法在背景連接到Tor:\n{}",
+ "settings_test_success": "已連接到Tor controller。\n\nTor版本: {}\n支援短期onion服務: {}.\n支援客戶端認證: {}.\n支援新一代.onion地址: {}.",
+ "error_tor_protocol_error": "Tor發生錯誤: {}",
+ "error_tor_protocol_error_unknown": "Tor發生了未知的錯誤",
+ "error_invalid_private_key": "此私鑰類型不受支援",
+ "connecting_to_tor": "正在連接Tor網路",
+ "update_available": "新版本的OnionShare已推出。 <a href='{}'>點此</a>獲取<br><br>您正在使用版本 {} 而最新版本是 {}。",
+ "update_error_check_error": "無法檢查新版本: OnionShare網站提示最新版本無法辨識'{}'…",
+ "update_error_invalid_latest_version": "無法檢查新版本:或許您尚未連接上Tor,或是OnionShare官網失效?",
+ "update_not_available": "您正在使用最新版本的OnionShare。",
+ "gui_tor_connection_ask": "開啟設定來檢查Tor連接?",
+ "gui_tor_connection_ask_open_settings": "是",
+ "gui_tor_connection_ask_quit": "否",
+ "gui_tor_connection_error_settings": "試試在設定中改變OnionShare連接到Tor網路的方式。",
+ "gui_tor_connection_canceled": "無法連接到Tor。\n\n請確認您已連接上網路,然後再重新開啟OnionShare並設定Tor連線。",
+ "gui_tor_connection_lost": "已斷開Tor連接。",
"gui_server_started_after_timeout": "",
"gui_server_timeout_expired": "",
"share_via_onionshare": "",
@@ -181,5 +181,8 @@
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "",
"gui_settings_language_label": "",
- "gui_settings_language_changed_notice": ""
+ "gui_settings_language_changed_notice": "",
+ "gui_add_files": "新增檔案",
+ "gui_add_folder": "新增資料夾",
+ "gui_settings_onion_label": "Onion設定"
}
diff --git a/share/static/css/style.css b/share/static/css/style.css
index 0751d306..e445e5de 100644
--- a/share/static/css/style.css
+++ b/share/static/css/style.css
@@ -176,7 +176,7 @@ ul.flashes {
margin: 0;
padding: 0;
width: 800px;
- max-width: 90%;
+ max-width: 500px;
margin: 0 auto;
}
@@ -184,7 +184,7 @@ ul.flashes li {
margin: 0 0 5px 0;
padding: 5px;
list-style: none;
- text-align: left;
+ text-align: center;
}
li.error {
@@ -224,17 +224,15 @@ li.info {
}
div#noscript {
- border: 1px solid #e55454;
- text-align: left;
- color: #e55454;
+ text-align: center;
+ color: #d709df;
padding: 1em;
line-height: 150%;
- max-width: 900px;
- margin: 100px 2em 0 2em;
+ margin: 0 auto;
}
div#noscript a, div#noscript a:visited {
- color: #e27f7f;
+ color: #d709df;
}
.disable-noscript-xss-wrapper {
diff --git a/share/static/img/warning.png b/share/static/img/warning.png
new file mode 100644
index 00000000..9be8cbaf
--- /dev/null
+++ b/share/static/img/warning.png
Binary files differ
diff --git a/share/templates/403.html b/share/templates/403.html
index df81f3e7..f3ea4e0e 100644
--- a/share/templates/403.html
+++ b/share/templates/403.html
@@ -1,16 +1,19 @@
<!DOCTYPE html>
<html>
- <head>
- <title>OnionShare: 403 Forbidden</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div class="info-wrapper">
- <div class="info">
- <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
- <p class="info-header">You are not allowed to perform that action at this time.</p>
- </div>
- </div>
- </body>
+
+<head>
+ <title>OnionShare: 403 Forbidden</title>
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
+</head>
+
+<body>
+ <div class="info-wrapper">
+ <div class="info">
+ <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
+ <p class="info-header">You are not allowed to perform that action at this time.</p>
+ </div>
+ </div>
+</body>
+
</html>
diff --git a/share/templates/404.html b/share/templates/404.html
index 264ca517..1c5d7d2d 100644
--- a/share/templates/404.html
+++ b/share/templates/404.html
@@ -1,16 +1,19 @@
<!DOCTYPE html>
<html>
- <head>
- <title>OnionShare: 404 Not Found</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div class="info-wrapper">
- <div class="info">
- <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
- <p class="info-header">404 Not Found</p>
- </div>
- </div>
- </body>
+
+<head>
+ <title>OnionShare: 404 Not Found</title>
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
+</head>
+
+<body>
+ <div class="info-wrapper">
+ <div class="info">
+ <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
+ <p class="info-header">404 Not Found</p>
+ </div>
+ </div>
+</body>
+
</html>
diff --git a/share/templates/denied.html b/share/templates/denied.html
index 5d411d62..94fb379b 100644
--- a/share/templates/denied.html
+++ b/share/templates/denied.html
@@ -1,10 +1,13 @@
<!DOCTYPE html>
<html>
- <head>
- <title>OnionShare</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- </head>
- <body>
- <p>OnionShare download in progress</p>
- </body>
+
+<head>
+ <title>OnionShare</title>
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
+</head>
+
+<body>
+ <p>OnionShare download in progress</p>
+</body>
+
</html>
diff --git a/share/templates/receive.html b/share/templates/receive.html
index a557a967..b4eb45a2 100644
--- a/share/templates/receive.html
+++ b/share/templates/receive.html
@@ -2,8 +2,8 @@
<html>
<head>
<title>OnionShare</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
@@ -13,16 +13,24 @@
</header>
<div class="upload-wrapper">
+ <!--
+ We are not using a <noscript> tag because it only works when the security slider is set to
+ Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
+ -->
+ <div id="noscript">
+ <p>
+ <img src="/static/img/warning.png" title="Warning" /><strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
+ sometimes never finish. To upload reliably, either set your Tor Browser
+ <a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
+ to Standard or
+ <a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
+ </div>
+
<p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
<p class="upload-header">Send Files</p>
<p class="upload-description">Select the files you want to send, then click "Send Files"...</p>
- <form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
- <p><input type="file" id="file-select" name="file[]" multiple /></p>
- <p><button type="submit" id="send-button" class="button">Send Files</button></p>
- </form>
-
<div id="uploads"></div>
<div>
@@ -37,22 +45,14 @@
</ul>
</div>
- <!--
- We are not using a <noscript> tag because it only works when the security slider is set to
- Safest, not Safer: https://trac.torproject.org/projects/tor/ticket/29506
- -->
- <div id="noscript">
- <p>
- <strong>Warning:</strong> Due to a bug in Tor Browser and Firefox, uploads
- sometimes never finish. To upload reliably, either set your Tor Browser
- <a rel="noreferrer" target="_blank" href="https://tb-manual.torproject.org/en-US/security-slider/">security slider</a>
- to Standard or
- <a target="_blank" href="/noscript-xss-instructions">turn off your Tor Browser's NoScript XSS setting</a>.</p>
- </div>
- <script src="/static/js/receive-noscript.js"></script>
+ <form id="send" method="post" enctype="multipart/form-data" action="{{ upload_action }}">
+ <p><input type="file" id="file-select" name="file[]" multiple /></p>
+ <p><button type="submit" id="send-button" class="button">Send Files</button></p>
+ </form>
</div>
+ <script src="/static/js/receive-noscript.js"></script>
<script src="/static/js/jquery-3.3.1.min.js"></script>
- <script src="/static/js/receive.js"></script>
+ <script async src="/static/js/receive.js"></script>
</body>
</html>
diff --git a/share/templates/receive_noscript_xss.html b/share/templates/receive_noscript_xss.html
index bf846b03..bce78524 100644
--- a/share/templates/receive_noscript_xss.html
+++ b/share/templates/receive_noscript_xss.html
@@ -2,8 +2,8 @@
<html>
<head>
<title>OnionShare</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
</head>
<body>
diff --git a/share/templates/send.html b/share/templates/send.html
index e7e1fde0..2a56829a 100644
--- a/share/templates/send.html
+++ b/share/templates/send.html
@@ -1,56 +1,59 @@
<!DOCTYPE html>
<html>
- <head>
- <title>OnionShare</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
- <meta name="onionshare-filename" content="{{ filename }}">
- <meta name="onionshare-filesize" content="{{ filesize }}">
- </head>
- <body>
- <header class="clearfix">
- <div class="right">
- <ul>
- <li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
- {% if slug %}
- <li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
- {% else %}
- <li><a class="button" href='/download'>Download Files</a></li>
- {% endif %}
- </ul>
- </div>
- <img class="logo" src="/static/img/logo.png" title="OnionShare">
- <h1>OnionShare</h1>
- </header>
+<head>
+ <title>OnionShare</title>
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
+ <meta name="onionshare-filename" content="{{ filename }}">
+ <meta name="onionshare-filesize" content="{{ filesize }}">
+</head>
+
+<body>
+
+ <header class="clearfix">
+ <div class="right">
+ <ul>
+ <li>Total size: <strong>{{ filesize_human }}</strong> {% if is_zipped %} (compressed){% endif %}</li>
+ {% if slug %}
+ <li><a class="button" href='/{{ slug }}/download'>Download Files</a></li>
+ {% else %}
+ <li><a class="button" href='/download'>Download Files</a></li>
+ {% endif %}
+ </ul>
+ </div>
+ <img class="logo" src="/static/img/logo.png" title="OnionShare">
+ <h1>OnionShare</h1>
+ </header>
+
+ <table class="file-list" id="file-list">
+ <tr>
+ <th id="filename-header">Filename</th>
+ <th id="size-header">Size</th>
+ <th></th>
+ </tr>
+ {% for info in file_info.dirs %}
+ <tr>
+ <td>
+ <img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
+ {{ info.basename }}
+ </td>
+ <td>{{ info.size_human }}</td>
+ <td></td>
+ </tr>
+ {% endfor %}
+ {% for info in file_info.files %}
+ <tr>
+ <td>
+ <img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
+ {{ info.basename }}
+ </td>
+ <td>{{ info.size_human }}</td>
+ <td></td>
+ </tr>
+ {% endfor %}
+ </table>
+ <script async src="/static/js/send.js" charset="utf-8"></script>
+</body>
- <table class="file-list" id="file-list">
- <tr>
- <th id="filename-header">Filename</th>
- <th id="size-header">Size</th>
- <th></th>
- </tr>
- {% for info in file_info.dirs %}
- <tr>
- <td>
- <img width="30" height="30" title="" alt="" src="/static/img/web_folder.png" />
- {{ info.basename }}
- </td>
- <td>{{ info.size_human }}</td>
- <td></td>
- </tr>
- {% endfor %}
- {% for info in file_info.files %}
- <tr>
- <td>
- <img width="30" height="30" title="" alt="" src="/static/img/web_file.png" />
- {{ info.basename }}
- </td>
- <td>{{ info.size_human }}</td>
- <td></td>
- </tr>
- {% endfor %}
- </table>
- <script src="/static/js/send.js"></script>
- </body>
</html>
diff --git a/share/templates/thankyou.html b/share/templates/thankyou.html
index 64c8b369..c4b39cde 100644
--- a/share/templates/thankyou.html
+++ b/share/templates/thankyou.html
@@ -1,22 +1,25 @@
<!DOCTYPE html>
<html>
- <head>
- <title>OnionShare is closed</title>
- <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
- <link href="/static/css/style.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <header class="clearfix">
- <img class="logo" src="/static/img/logo.png" title="OnionShare">
- <h1>OnionShare</h1>
- </header>
- <div class="info-wrapper">
- <div class="info">
- <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
- <p class="info-header">Thank you for using OnionShare</p>
- <p class="info-description">You may now close this window.</p>
- </div>
- </div>
- </body>
+<head>
+ <title>OnionShare is closed</title>
+ <link href="/static/img/favicon.ico" rel="icon" type="image/x-icon">
+ <link rel="stylesheet" rel="subresource" type="text/css" href="/static/css/style.css" media="all">
+</head>
+
+<body>
+ <header class="clearfix">
+ <img class="logo" src="/static/img/logo.png" title="OnionShare">
+ <h1>OnionShare</h1>
+ </header>
+
+ <div class="info-wrapper">
+ <div class="info">
+ <p><img class="logo" src="/static/img/logo_large.png" title="OnionShare"></p>
+ <p class="info-header">Thank you for using OnionShare</p>
+ <p class="info-description">You may now close this window.</p>
+ </div>
+ </div>
+</body>
+
</html>
diff --git a/tests/GuiReceiveTest.py b/tests/GuiReceiveTest.py
index 8a03283e..d1581c8e 100644
--- a/tests/GuiReceiveTest.py
+++ b/tests/GuiReceiveTest.py
@@ -5,7 +5,7 @@ from PyQt5 import QtCore, QtTest
from .GuiBaseTest import GuiBaseTest
class GuiReceiveTest(GuiBaseTest):
- def upload_file(self, public_mode, file_to_upload, expected_basename):
+ def upload_file(self, public_mode, file_to_upload, expected_basename, identical_files_at_once=False):
'''Test that we can upload the file'''
files = {'file[]': open(file_to_upload, 'rb')}
if not public_mode:
@@ -13,6 +13,9 @@ class GuiReceiveTest(GuiBaseTest):
else:
path = 'http://127.0.0.1:{}/upload'.format(self.gui.app.port)
response = requests.post(path, files=files)
+ if identical_files_at_once:
+ # Send a duplicate upload to test for collisions
+ response = requests.post(path, files=files)
QtTest.QTest.qWait(2000)
# Make sure the file is within the last 10 seconds worth of filenames
@@ -20,7 +23,10 @@ class GuiReceiveTest(GuiBaseTest):
now = datetime.now()
for i in range(10):
date_dir = now.strftime("%Y-%m-%d")
- time_dir = now.strftime("%H.%M.%S")
+ if identical_files_at_once:
+ time_dir = now.strftime("%H.%M.%S-1")
+ else:
+ time_dir = now.strftime("%H.%M.%S")
receive_mode_dir = os.path.join(self.gui.common.settings.get('data_dir'), date_dir, time_dir)
expected_filename = os.path.join(receive_mode_dir, expected_basename)
if os.path.exists(expected_filename):
@@ -74,18 +80,6 @@ class GuiReceiveTest(GuiBaseTest):
self.assertEqual(mode.history.completed_count, before_completed_count)
self.assertEqual(len(mode.history.item_list.items), before_number_of_history_items)
- def run_receive_mode_sender_closed_tests(self, public_mode):
- '''Test that the share can be stopped by the sender in receive mode'''
- if not public_mode:
- path = 'http://127.0.0.1:{}/{}/close'.format(self.gui.app.port, self.gui.receive_mode.web.slug)
- else:
- path = 'http://127.0.0.1:{}/close'.format(self.gui.app.port)
- response = requests.post(path)
- self.server_is_stopped(self.gui.receive_mode, False)
- self.web_server_is_stopped()
- self.server_status_indicator_says_closed(self.gui.receive_mode, False)
-
-
# 'Grouped' tests follow from here
def run_all_receive_mode_setup_tests(self, public_mode):
@@ -119,6 +113,9 @@ class GuiReceiveTest(GuiBaseTest):
self.counter_incremented(self.gui.receive_mode, 3)
self.upload_file(public_mode, '/tmp/testdir/test', 'test')
self.counter_incremented(self.gui.receive_mode, 4)
+ # Test uploading the same file twice at the same time, and make sure no collisions
+ self.upload_file(public_mode, '/tmp/test.txt', 'test.txt', True)
+ self.counter_incremented(self.gui.receive_mode, 6)
self.uploading_zero_files_shouldnt_change_ui(self.gui.receive_mode, public_mode)
self.history_indicator(self.gui.receive_mode, public_mode)
self.server_is_stopped(self.gui.receive_mode, False)
diff --git a/tests/local_onionshare_receive_mode_sender_closed_test.py b/tests/local_onionshare_receive_mode_sender_closed_test.py
deleted file mode 100644
index bfb9499a..00000000
--- a/tests/local_onionshare_receive_mode_sender_closed_test.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env python3
-import pytest
-import unittest
-
-from .GuiReceiveTest import GuiReceiveTest
-
-class LocalReceiveModeSenderClosedTest(unittest.TestCase, GuiReceiveTest):
- @classmethod
- def setUpClass(cls):
- test_settings = {
- "receive_allow_receiver_shutdown": True
- }
- cls.gui = GuiReceiveTest.set_up(test_settings)
-
- @classmethod
- def tearDownClass(cls):
- GuiReceiveTest.tear_down()
-
- @pytest.mark.gui
- def test_gui(self):
- self.run_all_common_setup_tests()
- self.run_all_receive_mode_tests(False, True)
- self.run_receive_mode_sender_closed_tests(False)
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_onionshare_web.py b/tests/test_onionshare_web.py
index 3f9540ae..0c29859b 100644
--- a/tests/test_onionshare_web.py
+++ b/tests/test_onionshare_web.py
@@ -41,7 +41,7 @@ RANDOM_STR_REGEX = re.compile(r'^[a-z2-7]+$')
def web_obj(common_obj, mode, num_files=0):
""" Creates a Web object, in either share mode or receive mode, ready for testing """
- common_obj.load_settings()
+ common_obj.settings = Settings(common_obj)
strings.load_strings(common_obj)
web = Web(common_obj, False, mode)
web.generate_slug()