aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2022-01-16 15:49:33 -0800
committerMicah Lee <micah@micahflee.com>2022-01-16 15:49:33 -0800
commit9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5 (patch)
tree5a5215260866bd07adc60ead1ae0d1b6cd93174b
parent74711e7d7c7b825fc580c612530569195156794a (diff)
parentb4e022149d677f9c2acd639e9dfa77bcc712b068 (diff)
downloadonionshare-9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5.tar.gz
onionshare-9e99ad8b8d6f0eb0a2162191ec31a68e7c3acee5.zip
Merge branch 'develop' of github.com:onionshare/onionshare into ros-fixes
-rw-r--r--.circleci/config.yml13
-rw-r--r--.github/workflows/codeql-analysis.yml2
-rw-r--r--.gitignore8
-rw-r--r--CHANGELOG.md2
-rw-r--r--LICENSE8
-rw-r--r--RELEASE.md65
-rwxr-xr-xbuild-source.sh6
-rw-r--r--cli/README.md31
-rw-r--r--cli/onionshare_cli/censorship.py51
-rw-r--r--cli/onionshare_cli/common.py44
-rw-r--r--cli/onionshare_cli/meek.py52
-rw-r--r--cli/onionshare_cli/onion.py179
-rw-r--r--cli/onionshare_cli/onionshare.py7
-rw-r--r--cli/onionshare_cli/resources/static/css/style.css12
-rw-r--r--cli/onionshare_cli/resources/static/js/chat.js2
-rw-r--r--cli/onionshare_cli/resources/static/js/send.js24
-rw-r--r--cli/onionshare_cli/resources/templates/403.html2
-rw-r--r--cli/onionshare_cli/resources/templates/404.html2
-rw-r--r--cli/onionshare_cli/resources/templates/405.html2
-rw-r--r--cli/onionshare_cli/resources/templates/500.html2
-rw-r--r--cli/onionshare_cli/resources/templates/send.html14
-rw-r--r--cli/onionshare_cli/resources/torrc_template-meek_lite_azure5
-rw-r--r--cli/onionshare_cli/resources/torrc_template-obfs419
-rw-r--r--cli/onionshare_cli/resources/torrc_template-snowflake3
-rw-r--r--cli/onionshare_cli/settings.py1
-rw-r--r--cli/onionshare_cli/web/send_base_mode.py18
-rw-r--r--cli/onionshare_cli/web/share_mode.py50
-rw-r--r--cli/onionshare_cli/web/web.py55
-rw-r--r--cli/poetry.lock217
-rw-r--r--cli/pyproject.toml1
-rw-r--r--cli/tests/conftest.py25
-rw-r--r--cli/tests/test_cli_settings.py5
-rw-r--r--cli/tests/test_cli_web.py42
-rw-r--r--desktop/README.md106
-rw-r--r--desktop/onionshare/__init__.py (renamed from desktop/src/onionshare/__init__.py)0
-rw-r--r--desktop/onionshare/__main__.py (renamed from desktop/src/onionshare/__main__.py)0
-rw-r--r--desktop/onionshare/gui_common.py (renamed from desktop/src/onionshare/gui_common.py)1
-rw-r--r--desktop/onionshare/main_window.py (renamed from desktop/src/onionshare/main_window.py)1
-rw-r--r--desktop/onionshare/moat_dialog.py (renamed from desktop/src/onionshare/moat_dialog.py)0
-rw-r--r--desktop/onionshare/resources/__init__.py (renamed from desktop/src/onionshare/resources/__init__.py)0
-rw-r--r--desktop/onionshare/resources/images/close_tab.png (renamed from desktop/src/onionshare/resources/images/close_tab.png)bin688 -> 688 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_icon-add.png (renamed from desktop/src/onionshare/resources/images/dark_icon-add.png)bin203 -> 203 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_icon-close.png (renamed from desktop/src/onionshare/resources/images/dark_icon-close.png)bin305 -> 305 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_logo_text.png (renamed from desktop/src/onionshare/resources/images/dark_logo_text.png)bin3120 -> 3120 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_chat.png (renamed from desktop/src/onionshare/resources/images/dark_mode_chat.png)bin21827 -> 21827 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_new_tab_chat.png (renamed from desktop/src/onionshare/resources/images/dark_mode_new_tab_chat.png)bin15086 -> 15086 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_new_tab_receive.png (renamed from desktop/src/onionshare/resources/images/dark_mode_new_tab_receive.png)bin15277 -> 15277 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_new_tab_share.png (renamed from desktop/src/onionshare/resources/images/dark_mode_new_tab_share.png)bin13232 -> 13232 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_new_tab_website.png (renamed from desktop/src/onionshare/resources/images/dark_mode_new_tab_website.png)bin10538 -> 10538 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_receive.png (renamed from desktop/src/onionshare/resources/images/dark_mode_receive.png)bin23495 -> 23495 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_share.png (renamed from desktop/src/onionshare/resources/images/dark_mode_share.png)bin9328 -> 9328 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_mode_website.png (renamed from desktop/src/onionshare/resources/images/dark_mode_website.png)bin9063 -> 9063 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_settings.png (renamed from desktop/src/onionshare/resources/images/dark_settings.png)bin456 -> 456 bytes
-rw-r--r--desktop/onionshare/resources/images/dark_tor_settings.png (renamed from desktop/src/onionshare/resources/images/dark_tor_settings.png)bin3600 -> 3600 bytes
-rw-r--r--desktop/onionshare/resources/images/file_delete.png (renamed from desktop/src/onionshare/resources/images/file_delete.png)bin182 -> 182 bytes
-rw-r--r--desktop/onionshare/resources/images/history_completed.png (renamed from desktop/src/onionshare/resources/images/history_completed.png)bin646 -> 646 bytes
-rw-r--r--desktop/onionshare/resources/images/history_completed_none.png (renamed from desktop/src/onionshare/resources/images/history_completed_none.png)bin437 -> 437 bytes
-rw-r--r--desktop/onionshare/resources/images/history_in_progress.png (renamed from desktop/src/onionshare/resources/images/history_in_progress.png)bin638 -> 638 bytes
-rw-r--r--desktop/onionshare/resources/images/history_in_progress_none.png (renamed from desktop/src/onionshare/resources/images/history_in_progress_none.png)bin412 -> 412 bytes
-rw-r--r--desktop/onionshare/resources/images/history_requests.png (renamed from desktop/src/onionshare/resources/images/history_requests.png)bin738 -> 738 bytes
-rw-r--r--desktop/onionshare/resources/images/history_requests_none.png (renamed from desktop/src/onionshare/resources/images/history_requests_none.png)bin754 -> 754 bytes
-rw-r--r--desktop/onionshare/resources/images/info.png (renamed from desktop/src/onionshare/resources/images/info.png)bin435 -> 435 bytes
-rw-r--r--desktop/onionshare/resources/images/light_logo_text.png (renamed from desktop/src/onionshare/resources/images/light_logo_text.png)bin3334 -> 3334 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_chat.png (renamed from desktop/src/onionshare/resources/images/light_mode_chat.png)bin22092 -> 22092 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_new_tab_chat.png (renamed from desktop/src/onionshare/resources/images/light_mode_new_tab_chat.png)bin15690 -> 15690 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_new_tab_receive.png (renamed from desktop/src/onionshare/resources/images/light_mode_new_tab_receive.png)bin15402 -> 15402 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_new_tab_share.png (renamed from desktop/src/onionshare/resources/images/light_mode_new_tab_share.png)bin13203 -> 13203 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_new_tab_website.png (renamed from desktop/src/onionshare/resources/images/light_mode_new_tab_website.png)bin10670 -> 10670 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_receive.png (renamed from desktop/src/onionshare/resources/images/light_mode_receive.png)bin23614 -> 23614 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_share.png (renamed from desktop/src/onionshare/resources/images/light_mode_share.png)bin9528 -> 9528 bytes
-rw-r--r--desktop/onionshare/resources/images/light_mode_website.png (renamed from desktop/src/onionshare/resources/images/light_mode_website.png)bin8613 -> 8613 bytes
-rw-r--r--desktop/onionshare/resources/images/light_settings.png (renamed from desktop/src/onionshare/resources/images/light_settings.png)bin1157 -> 1157 bytes
-rw-r--r--desktop/onionshare/resources/images/light_tor_settings.png (renamed from desktop/src/onionshare/resources/images/light_tor_settings.png)bin1503 -> 1503 bytes
-rw-r--r--desktop/onionshare/resources/images/logo.png (renamed from desktop/src/onionshare/resources/images/logo.png)bin3824 -> 3824 bytes
-rw-r--r--desktop/onionshare/resources/images/logo_grayscale.png (renamed from desktop/src/onionshare/resources/images/logo_grayscale.png)bin2258 -> 2258 bytes
-rw-r--r--desktop/onionshare/resources/images/logo_transparent.png (renamed from desktop/src/onionshare/resources/images/logo_transparent.png)bin3740 -> 3740 bytes
-rw-r--r--desktop/onionshare/resources/images/mode_chat.svg (renamed from desktop/src/onionshare/resources/images/mode_chat.svg)0
-rw-r--r--desktop/onionshare/resources/images/mode_receive.svg (renamed from desktop/src/onionshare/resources/images/mode_receive.svg)0
-rw-r--r--desktop/onionshare/resources/images/mode_share.svg (renamed from desktop/src/onionshare/resources/images/mode_share.svg)0
-rw-r--r--desktop/onionshare/resources/images/mode_website.svg (renamed from desktop/src/onionshare/resources/images/mode_website.svg)0
-rw-r--r--desktop/onionshare/resources/images/open_folder.png (renamed from desktop/src/onionshare/resources/images/open_folder.png)bin221 -> 221 bytes
-rw-r--r--desktop/onionshare/resources/images/open_message.png (renamed from desktop/src/onionshare/resources/images/open_message.png)bin5403 -> 5403 bytes
-rw-r--r--desktop/onionshare/resources/images/persistent_enabled.png (renamed from desktop/src/onionshare/resources/images/persistent_enabled.png)bin3398 -> 3398 bytes
-rw-r--r--desktop/onionshare/resources/images/receive_icon_toggle.png (renamed from desktop/src/onionshare/resources/images/receive_icon_toggle.png)bin380 -> 380 bytes
-rw-r--r--desktop/onionshare/resources/images/receive_icon_toggle_selected.png (renamed from desktop/src/onionshare/resources/images/receive_icon_toggle_selected.png)bin468 -> 468 bytes
-rw-r--r--desktop/onionshare/resources/images/receive_icon_transparent.png (renamed from desktop/src/onionshare/resources/images/receive_icon_transparent.png)bin2138 -> 2138 bytes
-rw-r--r--desktop/onionshare/resources/images/server_started.png (renamed from desktop/src/onionshare/resources/images/server_started.png)bin347 -> 347 bytes
-rw-r--r--desktop/onionshare/resources/images/server_stopped.png (renamed from desktop/src/onionshare/resources/images/server_stopped.png)bin342 -> 342 bytes
-rw-r--r--desktop/onionshare/resources/images/server_working.png (renamed from desktop/src/onionshare/resources/images/server_working.png)bin349 -> 349 bytes
-rw-r--r--desktop/onionshare/resources/images/share_icon_toggle.png (renamed from desktop/src/onionshare/resources/images/share_icon_toggle.png)bin389 -> 389 bytes
-rw-r--r--desktop/onionshare/resources/images/share_icon_toggle_selected.png (renamed from desktop/src/onionshare/resources/images/share_icon_toggle_selected.png)bin473 -> 473 bytes
-rw-r--r--desktop/onionshare/resources/images/share_icon_transparent.png (renamed from desktop/src/onionshare/resources/images/share_icon_transparent.png)bin2096 -> 2096 bytes
-rw-r--r--desktop/onionshare/resources/locale/af.json (renamed from desktop/src/onionshare/resources/locale/af.json)0
-rw-r--r--desktop/onionshare/resources/locale/am.json (renamed from desktop/src/onionshare/resources/locale/am.json)0
-rw-r--r--desktop/onionshare/resources/locale/ar.json (renamed from desktop/src/onionshare/resources/locale/ar.json)0
-rw-r--r--desktop/onionshare/resources/locale/bg.json (renamed from desktop/src/onionshare/resources/locale/bg.json)0
-rw-r--r--desktop/onionshare/resources/locale/bn.json (renamed from desktop/src/onionshare/resources/locale/bn.json)0
-rw-r--r--desktop/onionshare/resources/locale/ca.json (renamed from desktop/src/onionshare/resources/locale/ca.json)0
-rw-r--r--desktop/onionshare/resources/locale/ckb.json (renamed from desktop/src/onionshare/resources/locale/ckb.json)0
-rw-r--r--desktop/onionshare/resources/locale/cs.json (renamed from desktop/src/onionshare/resources/locale/cs.json)0
-rw-r--r--desktop/onionshare/resources/locale/da.json (renamed from desktop/src/onionshare/resources/locale/da.json)0
-rw-r--r--desktop/onionshare/resources/locale/de.json (renamed from desktop/src/onionshare/resources/locale/de.json)35
-rw-r--r--desktop/onionshare/resources/locale/el.json (renamed from desktop/src/onionshare/resources/locale/el.json)67
-rw-r--r--desktop/onionshare/resources/locale/en.json (renamed from desktop/src/onionshare/resources/locale/en.json)0
-rw-r--r--desktop/onionshare/resources/locale/enm.json (renamed from desktop/src/onionshare/resources/locale/enm.json)0
-rw-r--r--desktop/onionshare/resources/locale/eo.json (renamed from desktop/src/onionshare/resources/locale/eo.json)0
-rw-r--r--desktop/onionshare/resources/locale/es.json (renamed from desktop/src/onionshare/resources/locale/es.json)37
-rw-r--r--desktop/onionshare/resources/locale/fa.json (renamed from desktop/src/onionshare/resources/locale/fa.json)0
-rw-r--r--desktop/onionshare/resources/locale/fi.json (renamed from desktop/src/onionshare/resources/locale/fi.json)0
-rw-r--r--desktop/onionshare/resources/locale/fr.json (renamed from desktop/src/onionshare/resources/locale/fr.json)69
-rw-r--r--desktop/onionshare/resources/locale/ga.json (renamed from desktop/src/onionshare/resources/locale/ga.json)0
-rw-r--r--desktop/onionshare/resources/locale/gl.json (renamed from desktop/src/onionshare/resources/locale/gl.json)37
-rw-r--r--desktop/onionshare/resources/locale/gu.json (renamed from desktop/src/onionshare/resources/locale/gu.json)0
-rw-r--r--desktop/onionshare/resources/locale/he.json (renamed from desktop/src/onionshare/resources/locale/he.json)0
-rw-r--r--desktop/onionshare/resources/locale/hi.json (renamed from desktop/src/onionshare/resources/locale/hi.json)0
-rw-r--r--desktop/onionshare/resources/locale/hr.json (renamed from desktop/src/onionshare/resources/locale/hr.json)0
-rw-r--r--desktop/onionshare/resources/locale/hu.json (renamed from desktop/src/onionshare/resources/locale/hu.json)0
-rw-r--r--desktop/onionshare/resources/locale/id.json (renamed from desktop/src/onionshare/resources/locale/id.json)4
-rw-r--r--desktop/onionshare/resources/locale/is.json (renamed from desktop/src/onionshare/resources/locale/is.json)37
-rw-r--r--desktop/onionshare/resources/locale/it.json (renamed from desktop/src/onionshare/resources/locale/it.json)0
-rw-r--r--desktop/onionshare/resources/locale/ja.json (renamed from desktop/src/onionshare/resources/locale/ja.json)37
-rw-r--r--desktop/onionshare/resources/locale/ka.json (renamed from desktop/src/onionshare/resources/locale/ka.json)0
-rw-r--r--desktop/onionshare/resources/locale/km.json (renamed from desktop/src/onionshare/resources/locale/km.json)0
-rw-r--r--desktop/onionshare/resources/locale/ko.json (renamed from desktop/src/onionshare/resources/locale/ko.json)0
-rw-r--r--desktop/onionshare/resources/locale/lg.json (renamed from desktop/src/onionshare/resources/locale/lg.json)0
-rw-r--r--desktop/onionshare/resources/locale/lt.json (renamed from desktop/src/onionshare/resources/locale/lt.json)0
-rw-r--r--desktop/onionshare/resources/locale/mk.json (renamed from desktop/src/onionshare/resources/locale/mk.json)0
-rw-r--r--desktop/onionshare/resources/locale/ms.json (renamed from desktop/src/onionshare/resources/locale/ms.json)0
-rw-r--r--desktop/onionshare/resources/locale/nb_NO.json (renamed from desktop/src/onionshare/resources/locale/nb_NO.json)0
-rw-r--r--desktop/onionshare/resources/locale/nl.json (renamed from desktop/src/onionshare/resources/locale/nl.json)0
-rw-r--r--desktop/onionshare/resources/locale/pa.json (renamed from desktop/src/onionshare/resources/locale/pa.json)0
-rw-r--r--desktop/onionshare/resources/locale/pl.json (renamed from desktop/src/onionshare/resources/locale/pl.json)0
-rw-r--r--desktop/onionshare/resources/locale/pt_BR.json (renamed from desktop/src/onionshare/resources/locale/pt_BR.json)37
-rw-r--r--desktop/onionshare/resources/locale/pt_PT.json (renamed from desktop/src/onionshare/resources/locale/pt_PT.json)15
-rw-r--r--desktop/onionshare/resources/locale/ro.json (renamed from desktop/src/onionshare/resources/locale/ro.json)0
-rw-r--r--desktop/onionshare/resources/locale/ru.json (renamed from desktop/src/onionshare/resources/locale/ru.json)35
-rw-r--r--desktop/onionshare/resources/locale/si.json (renamed from desktop/src/onionshare/resources/locale/si.json)0
-rw-r--r--desktop/onionshare/resources/locale/sk.json (renamed from desktop/src/onionshare/resources/locale/sk.json)0
-rw-r--r--desktop/onionshare/resources/locale/sl.json (renamed from desktop/src/onionshare/resources/locale/sl.json)0
-rw-r--r--desktop/onionshare/resources/locale/sn.json (renamed from desktop/src/onionshare/resources/locale/sn.json)0
-rw-r--r--desktop/onionshare/resources/locale/sr_Latn.json (renamed from desktop/src/onionshare/resources/locale/sr_Latn.json)54
-rw-r--r--desktop/onionshare/resources/locale/sv.json (renamed from desktop/src/onionshare/resources/locale/sv.json)5
-rw-r--r--desktop/onionshare/resources/locale/sw.json (renamed from desktop/src/onionshare/resources/locale/sw.json)0
-rw-r--r--desktop/onionshare/resources/locale/te.json (renamed from desktop/src/onionshare/resources/locale/te.json)0
-rw-r--r--desktop/onionshare/resources/locale/tr.json (renamed from desktop/src/onionshare/resources/locale/tr.json)37
-rw-r--r--desktop/onionshare/resources/locale/uk.json (renamed from desktop/src/onionshare/resources/locale/uk.json)37
-rw-r--r--desktop/onionshare/resources/locale/wo.json (renamed from desktop/src/onionshare/resources/locale/wo.json)0
-rw-r--r--desktop/onionshare/resources/locale/yo.json (renamed from desktop/src/onionshare/resources/locale/yo.json)0
-rw-r--r--desktop/onionshare/resources/locale/zh_Hans.json (renamed from desktop/src/onionshare/resources/locale/zh_Hans.json)37
-rw-r--r--desktop/onionshare/resources/locale/zh_Hant.json (renamed from desktop/src/onionshare/resources/locale/zh_Hant.json)0
-rw-r--r--desktop/onionshare/resources/onionshare-128.png (renamed from desktop/src/onionshare/resources/onionshare-128.png)bin12788 -> 12788 bytes
-rw-r--r--desktop/onionshare/resources/onionshare-16.png (renamed from desktop/src/onionshare/resources/onionshare-16.png)bin2437 -> 2437 bytes
-rw-r--r--desktop/onionshare/resources/onionshare-256.png (renamed from desktop/src/onionshare/resources/onionshare-256.png)bin19034 -> 19034 bytes
-rw-r--r--desktop/onionshare/resources/onionshare-32.png (renamed from desktop/src/onionshare/resources/onionshare-32.png)bin4051 -> 4051 bytes
-rw-r--r--desktop/onionshare/resources/onionshare-512.png (renamed from desktop/src/onionshare/resources/onionshare-512.png)bin24613 -> 24613 bytes
-rw-r--r--desktop/onionshare/resources/onionshare-64.png (renamed from desktop/src/onionshare/resources/onionshare-64.png)bin8486 -> 8486 bytes
-rw-r--r--desktop/onionshare/resources/onionshare.icns (renamed from desktop/src/onionshare/resources/onionshare.icns)bin34168 -> 34168 bytes
-rw-r--r--desktop/onionshare/resources/onionshare.ico (renamed from desktop/src/onionshare/resources/onionshare.ico)bin15086 -> 15086 bytes
-rw-r--r--desktop/onionshare/resources/onionshare.png (renamed from desktop/src/onionshare/resources/onionshare.png)bin24613 -> 24613 bytes
-rw-r--r--desktop/onionshare/settings_tab.py (renamed from desktop/src/onionshare/settings_tab.py)0
-rw-r--r--desktop/onionshare/strings.py (renamed from desktop/src/onionshare/strings.py)0
-rw-r--r--desktop/onionshare/tab/__init__.py (renamed from desktop/src/onionshare/tab/__init__.py)0
-rw-r--r--desktop/onionshare/tab/mode/__init__.py (renamed from desktop/src/onionshare/tab/mode/__init__.py)0
-rw-r--r--desktop/onionshare/tab/mode/chat_mode/__init__.py (renamed from desktop/src/onionshare/tab/mode/chat_mode/__init__.py)0
-rw-r--r--desktop/onionshare/tab/mode/file_selection.py (renamed from desktop/src/onionshare/tab/mode/file_selection.py)0
-rw-r--r--desktop/onionshare/tab/mode/history.py (renamed from desktop/src/onionshare/tab/mode/history.py)0
-rw-r--r--desktop/onionshare/tab/mode/mode_settings_widget.py (renamed from desktop/src/onionshare/tab/mode/mode_settings_widget.py)0
-rw-r--r--desktop/onionshare/tab/mode/receive_mode/__init__.py (renamed from desktop/src/onionshare/tab/mode/receive_mode/__init__.py)0
-rw-r--r--desktop/onionshare/tab/mode/share_mode/__init__.py (renamed from desktop/src/onionshare/tab/mode/share_mode/__init__.py)2
-rw-r--r--desktop/onionshare/tab/mode/share_mode/threads.py (renamed from desktop/src/onionshare/tab/mode/share_mode/threads.py)0
-rw-r--r--desktop/onionshare/tab/mode/website_mode/__init__.py (renamed from desktop/src/onionshare/tab/mode/website_mode/__init__.py)0
-rw-r--r--desktop/onionshare/tab/server_status.py (renamed from desktop/src/onionshare/tab/server_status.py)0
-rw-r--r--desktop/onionshare/tab/tab.py (renamed from desktop/src/onionshare/tab/tab.py)13
-rw-r--r--desktop/onionshare/tab_widget.py (renamed from desktop/src/onionshare/tab_widget.py)1
-rw-r--r--desktop/onionshare/threads.py (renamed from desktop/src/onionshare/threads.py)0
-rw-r--r--desktop/onionshare/tor_connection.py (renamed from desktop/src/onionshare/tor_connection.py)1
-rw-r--r--desktop/onionshare/tor_settings_tab.py (renamed from desktop/src/onionshare/tor_settings_tab.py)0
-rw-r--r--desktop/onionshare/update_checker.py (renamed from desktop/src/onionshare/update_checker.py)0
-rw-r--r--desktop/onionshare/widgets.py (renamed from desktop/src/onionshare/widgets.py)0
-rw-r--r--desktop/org.onionshare.OnionShare.appdata.xml (renamed from desktop/src/org.onionshare.OnionShare.appdata.xml)0
-rw-r--r--desktop/org.onionshare.OnionShare.desktop (renamed from desktop/src/org.onionshare.OnionShare.desktop)0
-rw-r--r--desktop/org.onionshare.OnionShare.svg (renamed from desktop/src/org.onionshare.OnionShare.svg)0
-rw-r--r--desktop/package/Entitlements.plist (renamed from desktop/package/macos/Entitlements.plist)0
-rwxr-xr-xdesktop/package/build-mac.py308
-rw-r--r--desktop/package/build-windows.py587
-rw-r--r--desktop/package/dialog.bmpbin0 -> 615402 bytes
-rw-r--r--desktop/package/license.rtf136
-rwxr-xr-xdesktop/package/linux/build-appimage.py46
-rwxr-xr-xdesktop/package/macos/build.py262
-rw-r--r--desktop/package/onionshare-cli.py3
-rw-r--r--desktop/package/onionshare.py3
-rw-r--r--desktop/package/windows/build.py234
-rw-r--r--desktop/poetry.lock1209
-rw-r--r--desktop/pyproject.toml60
-rw-r--r--desktop/scripts/bridges/__init__.py82
-rwxr-xr-xdesktop/scripts/build-meek-client.py4
-rwxr-xr-xdesktop/scripts/check_lacked_trans.py154
-rw-r--r--desktop/scripts/dev.bat3
-rwxr-xr-xdesktop/scripts/dev.sh9
-rwxr-xr-xdesktop/scripts/get-tor-linux.py6
-rwxr-xr-xdesktop/scripts/get-tor-osx.py7
-rw-r--r--desktop/scripts/get-tor-windows.py7
-rwxr-xr-xdesktop/scripts/rebuild-cli.py45
-rw-r--r--desktop/setup-freeze.py232
-rw-r--r--desktop/setup.py (renamed from desktop/src/setup.py)30
-rw-r--r--desktop/tests/gui_base_test.py9
-rw-r--r--desktop/tests/test_gui_chat.py1
-rw-r--r--desktop/tests/test_gui_receive.py1
-rw-r--r--desktop/tests/test_gui_share.py1
-rw-r--r--docs/README.md2
-rwxr-xr-xdocs/build.sh2
-rwxr-xr-xdocs/check-weblate.py14
-rw-r--r--docs/gettext/.doctrees/advanced.doctreebin26691 -> 26945 bytes
-rw-r--r--docs/gettext/.doctrees/develop.doctreebin37627 -> 37627 bytes
-rw-r--r--docs/gettext/.doctrees/environment.picklebin38315 -> 38212 bytes
-rw-r--r--docs/gettext/.doctrees/features.doctreebin48536 -> 49386 bytes
-rw-r--r--docs/gettext/.doctrees/help.doctreebin7687 -> 7687 bytes
-rw-r--r--docs/gettext/.doctrees/index.doctreebin3439 -> 3439 bytes
-rw-r--r--docs/gettext/.doctrees/install.doctreebin23153 -> 23153 bytes
-rw-r--r--docs/gettext/.doctrees/security.doctreebin13580 -> 13580 bytes
-rw-r--r--docs/gettext/.doctrees/tor.doctreebin30114 -> 31011 bytes
-rw-r--r--docs/gettext/advanced.pot4
-rw-r--r--docs/gettext/develop.pot4
-rw-r--r--docs/gettext/features.pot46
-rw-r--r--docs/gettext/help.pot4
-rw-r--r--docs/gettext/index.pot4
-rw-r--r--docs/gettext/install.pot4
-rw-r--r--docs/gettext/security.pot4
-rw-r--r--docs/gettext/sphinx.pot4
-rw-r--r--docs/gettext/tor.pot92
-rw-r--r--docs/poetry.lock407
-rw-r--r--docs/source/_static/screenshots/chat-sharing.pngbin71096 -> 72264 bytes
-rw-r--r--docs/source/_static/screenshots/chat.pngbin49886 -> 50246 bytes
-rw-r--r--docs/source/_static/screenshots/receive-sharing.pngbin86396 -> 86601 bytes
-rw-r--r--docs/source/_static/screenshots/receive-torbrowser.pngbin64544 -> 63733 bytes
-rw-r--r--docs/source/_static/screenshots/receive.pngbin74783 -> 75567 bytes
-rw-r--r--docs/source/_static/screenshots/settings.pngbin47996 -> 0 bytes
-rw-r--r--docs/source/_static/screenshots/share-files.pngbin43209 -> 43481 bytes
-rw-r--r--docs/source/_static/screenshots/share-sharing.pngbin55012 -> 56505 bytes
-rw-r--r--docs/source/_static/screenshots/share-torbrowser.pngbin40063 -> 37067 bytes
-rw-r--r--docs/source/_static/screenshots/share.pngbin34940 -> 35349 bytes
-rw-r--r--docs/source/_static/screenshots/tabs.pngbin61616 -> 61801 bytes
-rw-r--r--docs/source/_static/screenshots/tor-settings-bridges.pngbin0 -> 57702 bytes
-rw-r--r--docs/source/_static/screenshots/tor-settings-moat.pngbin0 -> 105803 bytes
-rw-r--r--docs/source/_static/screenshots/tor-settings.pngbin0 -> 45328 bytes
-rw-r--r--docs/source/_static/screenshots/website-files.pngbin49159 -> 57805 bytes
-rw-r--r--docs/source/_static/screenshots/website.pngbin36164 -> 36572 bytes
-rw-r--r--docs/source/advanced.rst9
-rw-r--r--docs/source/conf.py6
-rw-r--r--docs/source/develop.rst6
-rw-r--r--docs/source/features.rst5
-rw-r--r--docs/source/locale/bg/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/bn/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/ca/LC_MESSAGES/features.po7
-rw-r--r--docs/source/locale/ca/LC_MESSAGES/help.po6
-rw-r--r--docs/source/locale/ca/LC_MESSAGES/index.po7
-rw-r--r--docs/source/locale/ca/LC_MESSAGES/security.po10
-rw-r--r--docs/source/locale/cs/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/de/LC_MESSAGES/advanced.po47
-rw-r--r--docs/source/locale/de/LC_MESSAGES/develop.po9
-rw-r--r--docs/source/locale/de/LC_MESSAGES/features.po143
-rw-r--r--docs/source/locale/el/LC_MESSAGES/advanced.po50
-rw-r--r--docs/source/locale/el/LC_MESSAGES/develop.po40
-rw-r--r--docs/source/locale/el/LC_MESSAGES/features.po153
-rw-r--r--docs/source/locale/el/LC_MESSAGES/help.po18
-rw-r--r--docs/source/locale/el/LC_MESSAGES/install.po29
-rw-r--r--docs/source/locale/el/LC_MESSAGES/security.po55
-rw-r--r--docs/source/locale/el/LC_MESSAGES/tor.po20
-rw-r--r--docs/source/locale/en/LC_MESSAGES/features.po59
-rw-r--r--docs/source/locale/en/LC_MESSAGES/tor.po151
-rw-r--r--docs/source/locale/eo/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/es/LC_MESSAGES/advanced.po44
-rw-r--r--docs/source/locale/es/LC_MESSAGES/develop.po37
-rw-r--r--docs/source/locale/es/LC_MESSAGES/features.po118
-rw-r--r--docs/source/locale/es/LC_MESSAGES/install.po22
-rw-r--r--docs/source/locale/fi/LC_MESSAGES/features.po50
-rw-r--r--docs/source/locale/fi/LC_MESSAGES/tor.po156
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/advanced.po52
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/develop.po82
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/features.po109
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/help.po17
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/install.po49
-rw-r--r--docs/source/locale/fr/LC_MESSAGES/tor.po40
-rw-r--r--docs/source/locale/gl/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/gu/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/hu/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/id/LC_MESSAGES/advanced.po129
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/advanced.po48
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/features.po76
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/help.po25
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/index.po15
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/security.po29
-rw-r--r--docs/source/locale/ja/LC_MESSAGES/sphinx.po15
-rw-r--r--docs/source/locale/lt/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/pa/LC_MESSAGES/develop.po125
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/advanced.po42
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/develop.po27
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/features.po174
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/help.po18
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/install.po22
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/security.po34
-rw-r--r--docs/source/locale/pl/LC_MESSAGES/tor.po173
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/advanced.po42
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/develop.po28
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/features.po203
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/help.po19
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/install.po23
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/security.po33
-rw-r--r--docs/source/locale/pt_BR/LC_MESSAGES/tor.po184
-rw-r--r--docs/source/locale/pt_PT/LC_MESSAGES/tor.po13
-rw-r--r--docs/source/locale/ru/LC_MESSAGES/features.po178
-rw-r--r--docs/source/locale/ru/LC_MESSAGES/tor.po177
-rw-r--r--docs/source/locale/sr@latin/LC_MESSAGES/index.po9
-rw-r--r--docs/source/locale/sr@latin/LC_MESSAGES/install.po64
-rw-r--r--docs/source/locale/sr@latin/LC_MESSAGES/tor.po89
-rw-r--r--docs/source/locale/tr/LC_MESSAGES/features.po276
-rw-r--r--docs/source/locale/tr/LC_MESSAGES/tor.po280
-rw-r--r--docs/source/locale/uk/LC_MESSAGES/features.po170
-rw-r--r--docs/source/locale/uk/LC_MESSAGES/install.po4
-rw-r--r--docs/source/locale/uk/LC_MESSAGES/tor.po175
-rw-r--r--docs/source/locale/zh_CN/LC_MESSAGES/features.po24
-rw-r--r--docs/source/locale/zh_CN/LC_MESSAGES/help.po25
-rw-r--r--docs/source/locale/zh_CN/LC_MESSAGES/index.po15
-rw-r--r--docs/source/locale/zh_CN/LC_MESSAGES/install.po56
-rw-r--r--docs/source/locale/zh_CN/LC_MESSAGES/sphinx.po15
-rw-r--r--docs/source/tor.rst36
-rw-r--r--licenses/license-onionshare.txt8
-rw-r--r--snap/snapcraft.yaml12
328 files changed, 8246 insertions, 3174 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index b9938c28..47d6340f 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -9,7 +9,7 @@ workflows:
jobs:
test-cli:
docker:
- - image: circleci/python:3.8-buster
+ - image: circleci/python:3.9-bullseye
working_directory: ~/repo
@@ -37,7 +37,7 @@ jobs:
test-gui:
docker:
- - image: circleci/python:3.8-buster
+ - image: circleci/python:3.9-bullseye
working_directory: ~/repo
@@ -50,16 +50,11 @@ jobs:
sudo apt-get update
sudo apt-get install -y tor obfs4proxy gcc python3-dev python3-pyside2.qtcore python3-pyside2.qtwidgets python3-pyside2.qtgui
sudo apt-get install -y xvfb x11-utils libxkbcommon-x11-0 libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev libxcb-render-util0 libxcb-icccm4 libxcb-keysyms1 libxcb-image0
- cd ~/repo/cli
- poetry install
- poetry build
- cp dist/onionshare_cli-*.whl ~/repo/desktop
cd ~/repo/desktop
- pip install briefcase pytest pytest-briefcase pytest-faulthandler pytest-qt pytest-xvfb
- pip install $(python -c 'import toml; print(" ".join(toml.loads(open("pyproject.toml").read())["tool"]["briefcase"]["app"]["onionshare"]["requires"]))')
+ poetry install
- run:
name: Run tests
command: |
cd ~/repo/desktop
- ./tests/run.sh
+ xvfb-run poetry run ./tests/run.sh
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index f1d47856..2285b1fc 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -47,7 +47,7 @@ jobs:
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
diff --git a/.gitignore b/.gitignore
index c96d9d1d..00bd6ab4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,10 +59,4 @@ venv
# other
.vscode
onionshare.dist-info
-desktop/src/onionshare/resources/tor
-desktop/*.whl
-desktop/linux
-desktop/windows
-desktop/macOS
-# gets added automatically when building for Windows or macOS
-desktop/include \ No newline at end of file
+desktop/onionshare/resources/tor
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d65494a9..442f688f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -110,7 +110,7 @@
## 1.3
* Major UI redesign, introducing many UX improvements
-* Client-side web interfact redesigned
+* Client-side web interface redesigned
* New feature: Support for meek_lite pluggable transports (Amazon and Azure) - not yet ready for Windows or macOS, sorry
* New feature: Support for custom obfs4 and meek_lite bridges (again, meek_lite not available on Windows/macOS yet)
* New feature: Ability to cancel share before it starts
diff --git a/LICENSE b/LICENSE
index ed4e5238..d6405d0e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -6,7 +6,7 @@ Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -650,7 +650,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
@@ -669,11 +669,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
+<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/RELEASE.md b/RELEASE.md
index 4db4f28a..23e033f0 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -9,9 +9,9 @@ Before making a release, you must update the version in these places:
- [ ] `cli/pyproject.toml`
- [ ] `cli/setup.py`
- [ ] `cli/onionshare_cli/resources/version.txt`
-- [ ] `desktop/pyproject.toml` (under `version` and **don't forget** the `./onionshare_cli-$VERSION-py3-none-any.whl` dependency)
-- [ ] `desktop/src/setup.py`
-- [ ] `desktop/src/org.onionshare.OnionShare.appdata.xml`
+- [ ] `desktop/pyproject.toml`
+- [ ] `desktop/setup.py`
+- [ ] `desktop/org.onionshare.OnionShare.appdata.xml`
- [ ] `docs/source/conf.py` (`version` at the top, and the `versions` list too)
- [ ] `snap/snapcraft.yaml`
@@ -19,6 +19,7 @@ If you update `flask-socketio`, ensure that you also update the [socket.io.min.j
Use tor binaries from the latest Tor Browser:
+- [ ] `desktop/scripts/get-tor-linux.py`
- [ ] `desktop/scripts/get-tor-osx.py`
- [ ] `desktop/scripts/get-tor-windows.py`
@@ -42,7 +43,7 @@ Finalize localization:
You also must edit these files:
-- [ ] `desktop/src/org.onionshare.OnionShare.appdata.xml` should have the correct release date, and links to correct screenshots
+- [ ] `desktop/org.onionshare.OnionShare.appdata.xml` should have the correct release date, and links to correct screenshots
- [ ] `CHANGELOG.md` should be updated to include a list of all major changes since the last release
Make sure snapcraft packaging works. In `snap/snapcraft.yaml`:
@@ -97,73 +98,45 @@ snapcraft login
snapcraft upload --release=stable onionshare_$VERSION_amd64.snap
```
-## Linux AppImage release
-
-_Note: AppImage packages are currently broken due to [this briefcase bug](https://github.com/beeware/briefcase/issues/504). Until it's fixed, OnionShare for Linux will only be available in Flatpak and Snapcraft._
-
-Set up the development environment described in `README.md`.
-
-Make sure your virtual environment is active:
-
-```sh
-. venv/bin/activate
-```
-
-Run the AppImage build script:
-
-```sh
-./package/linux/build-appimage.py
-```
-
## Windows
-Set up the development environment described in `README.md`. And install the [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk) and add `C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86` to your path.
-
-Make sure your virtual environment is active:
+Set up the development environment described in desktop `README.md`.
-```
-venv\Scripts\activate.bat
-```
+- To get `signtool.exe`, install the [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk) and add `C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86` to your path.
+- Go to https://dotnet.microsoft.com/download/dotnet-framework and download and install .NET Framework 3.5 SP1 Runtime. I downloaded `dotnetfx35.exe`.
+- Go to https://wixtoolset.org/releases/ and download and install WiX toolset. I downloaded `wix311.exe`. Add `C:\Program Files (x86)\WiX Toolset v3.11\bin` to the path.
Run the Windows build script:
```
-python package\windows\build.py
+poetry run python .\package\build-windows.py
```
-This will create `desktop/windows/OnionShare-$VERSION.msi`, signed.
+This will create `desktop/dist/OnionShare-$VERSION.msi`, signed.
## macOS
-Set up the development environment described in `README.md`. And install `create-dmg`:
-
-```sh
-brew install create-dmg
-```
+Set up the development environment described in `README.md`.
-Make sure your virtual environment is active:
+Then build an executable, make it a macOS app bundle, and package it in a dmg:
```sh
-. venv/bin/activate
+poetry run ./package/build-mac.py
```
-Run the macOS build script:
-
-```sh
-./package/macos/build.py --with-codesign
-```
+The will create `dist/OnionShare-$VERSION.dmg`.
Now, notarize the release. You must have an app-specific Apple ID password saved in the login keychain called `onionshare-notarize`.
-- Notarize it: `xcrun altool --notarize-app --primary-bundle-id "com.micahflee.onionshare" -u "micah@micahflee.com" -p "@keychain:onionshare-notarize" --file macOS/OnionShare.dmg`
+- Notarize it: `xcrun altool --notarize-app --primary-bundle-id "com.micahflee.onionshare" -u "micah@micahflee.com" -p "@keychain:onionshare-notarize" --file dist/OnionShare-$VERSION.dmg`
- Wait for it to get approved, check status with: `xcrun altool --notarization-history 0 -u "micah@micahflee.com" -p "@keychain:onionshare-notarize"`
-- After it's approved, staple the ticket: `xcrun stapler staple macOS/OnionShare.dmg`
+- After it's approved, staple the ticket: `xcrun stapler staple dist/OnionShare-$VERSION.dmg`
-This will create `desktop/macOS/OnionShare.dmg`, signed and notarized.
+This will create `desktop/dist/OnionShare-$VERSION.dmg`, signed and notarized.
## Source package
-To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the the name of the signed git tag, e.g. `v2.1`.
+To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the name of the signed git tag, e.g. `v2.1`.
This will create `dist/onionshare-$VERSION.tar.gz`.
diff --git a/build-source.sh b/build-source.sh
index add57583..0946683d 100755
--- a/build-source.sh
+++ b/build-source.sh
@@ -4,7 +4,7 @@
# Usage
display_usage() {
- echo "Usage: $0 [tag]"
+ echo "Usage: $0 [tag]"
}
if [ $# -lt 1 ]
@@ -46,13 +46,13 @@ then
echo "Tag does not verify"
exit 1
fi
-cat ../verify.txt |grep "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73"
+cat ../verify.txt | grep "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73"
if [ $? -ne 0 ]
then
echo "Tag signed with wrong key"
exit 1
fi
-cat ../verify.txt |grep "^gpg: Good signature from"
+cat ../verify.txt | grep "^gpg: Good signature from"
if [ $? -ne 0 ]
then
echo "Tag verification missing 'Good signature from'"
diff --git a/cli/README.md b/cli/README.md
index 00c175a7..12a157e3 100644
--- a/cli/README.md
+++ b/cli/README.md
@@ -59,28 +59,13 @@ pip install --user onionshare-cli
#### Set path
-When you install programs with pip and use the --user flag, it installs them into ~/.local/bin, which isn't in your path by default. To add ~/.local/bin to your path automatically for the next time you reopen the terminal or source your shell configuration file, do the following:
+When you install programs with pip and use the `--user` flag, it installs them into *~/.local/bin*, which isn't in your path by default. To add *~/.local/bin* to your path automatically for the next time you reopen the terminal or source your shell configuration file, do the following:
-First, discover what shell you are using:
+Apply the path to your shell file:
```sh
-echo $SHELL
-```
-
-Then apply the path to your shell file:
-
-bash:
-
-```sh
-echo "PATH=\$PATH:~/.local/bin" >> ~/.bashrc
-source ~/.bashrc
-```
-
-zsh:
-
-```sh
-echo "PATH=\$PATH:~/.local/bin" >> ~/.zshrc
-source ~/.zshrc
+printf "PATH=\$PATH:~/.local/bin\n" >> ~/.${SHELL##*/}rc
+. ~/.${SHELL##*/}rc
```
#### Usage
@@ -112,11 +97,3 @@ To run tests:
```sh
poetry run pytest -v ./tests
```
-
-## Build a wheel package
-
-```sh
-poetry build
-```
-
-This will create `dist/onionshare_cli-$VERSION-py3-none-any.whl`.
diff --git a/cli/onionshare_cli/censorship.py b/cli/onionshare_cli/censorship.py
index f84b1058..9f41d61c 100644
--- a/cli/onionshare_cli/censorship.py
+++ b/cli/onionshare_cli/censorship.py
@@ -25,21 +25,46 @@ from .meek import MeekNotRunning
class CensorshipCircumvention(object):
"""
Connect to the Tor Moat APIs to retrieve censorship
- circumvention recommendations, over the Meek client.
+ circumvention recommendations or the latest bridges.
+
+ We support reaching this API over Tor, or Meek
+ (domain fronting) if Tor is not connected.
"""
- def __init__(self, common, meek, domain_fronting=True):
+ def __init__(self, common, meek=None, onion=None):
"""
Set up the CensorshipCircumvention object to hold
common and meek objects.
"""
self.common = common
- self.meek = meek
self.common.log("CensorshipCircumvention", "__init__")
-
- # Bail out if we requested domain fronting but we can't use meek
- if domain_fronting and not self.meek.meek_proxies:
- raise MeekNotRunning()
+ self.api_proxies = {}
+ if meek:
+ self.meek = meek
+ if not self.meek.meek_proxies:
+ raise MeekNotRunning()
+ else:
+ self.common.log(
+ "CensorshipCircumvention",
+ "__init__",
+ "Using Meek with CensorShipCircumvention API",
+ )
+ self.api_proxies = self.meek.meek_proxies
+ if onion:
+ self.onion = onion
+ if not self.onion.is_authenticated:
+ return False
+ else:
+ self.common.log(
+ "CensorshipCircumvention",
+ "__init__",
+ "Using Tor with CensorShipCircumvention API",
+ )
+ (socks_address, socks_port) = self.onion.get_tor_socks_port()
+ self.api_proxies = {
+ "http": f"socks5h://{socks_address}:{socks_port}",
+ "https": f"socks5h://{socks_address}:{socks_port}",
+ }
def request_map(self, country=False):
"""
@@ -52,6 +77,8 @@ class CensorshipCircumvention(object):
Note that this API endpoint doesn't return actual bridges,
it just returns the recommended bridge type countries.
"""
+ if not self.api_proxies:
+ return False
endpoint = "https://bridges.torproject.org/moat/circumvention/map"
data = {}
if country:
@@ -61,7 +88,7 @@ class CensorshipCircumvention(object):
endpoint,
json=data,
headers={"Content-Type": "application/vnd.api+json"},
- proxies=self.meek.meek_proxies,
+ proxies=self.api_proxies,
)
if r.status_code != 200:
self.common.log(
@@ -95,6 +122,8 @@ class CensorshipCircumvention(object):
Optionally, a list of transports can be specified in order to
return recommended settings for just that transport type.
"""
+ if not self.api_proxies:
+ return False
endpoint = "https://bridges.torproject.org/moat/circumvention/settings"
data = {}
if country:
@@ -105,7 +134,7 @@ class CensorshipCircumvention(object):
endpoint,
json=data,
headers={"Content-Type": "application/vnd.api+json"},
- proxies=self.meek.meek_proxies,
+ proxies=self.api_proxies,
)
if r.status_code != 200:
self.common.log(
@@ -142,11 +171,13 @@ class CensorshipCircumvention(object):
"""
Retrieves the list of built-in bridges from the Tor Project.
"""
+ if not self.api_proxies:
+ return False
endpoint = "https://bridges.torproject.org/moat/circumvention/builtin"
r = requests.post(
endpoint,
headers={"Content-Type": "application/vnd.api+json"},
- proxies=self.meek.meek_proxies,
+ proxies=self.api_proxies,
)
if r.status_code != 200:
self.common.log(
diff --git a/cli/onionshare_cli/common.py b/cli/onionshare_cli/common.py
index a8e32411..272d2860 100644
--- a/cli/onionshare_cli/common.py
+++ b/cli/onionshare_cli/common.py
@@ -329,23 +329,49 @@ class Common:
tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
elif self.platform == "Windows":
+ # In Windows, the Tor binaries are in the onionshare package, not the onionshare_cli package
base_path = self.get_resource_path("tor")
+ base_path = base_path.replace("onionshare_cli", "onionshare")
tor_path = os.path.join(base_path, "Tor", "tor.exe")
+
+ # If tor.exe isn't there, mayber we're running from the source tree
+ if not os.path.exists(tor_path):
+ base_path = os.path.join(os.getcwd(), "onionshare", "resources", "tor")
+
+ tor_path = os.path.join(base_path, "Tor", "tor.exe")
+ if not os.path.exists(tor_path):
+ raise CannotFindTor()
+
obfs4proxy_file_path = os.path.join(base_path, "Tor", "obfs4proxy.exe")
snowflake_file_path = os.path.join(base_path, "Tor", "snowflake-client.exe")
meek_client_file_path = os.path.join(base_path, "Tor", "meek-client.exe")
tor_geo_ip_file_path = os.path.join(base_path, "Data", "Tor", "geoip")
tor_geo_ipv6_file_path = os.path.join(base_path, "Data", "Tor", "geoip6")
+
elif self.platform == "Darwin":
- tor_path = shutil.which("tor")
- if not tor_path:
- raise CannotFindTor()
- obfs4proxy_file_path = shutil.which("obfs4proxy")
- snowflake_file_path = shutil.which("snowflake-client")
- meek_client_file_path = shutil.which("meek-client")
- prefix = os.path.dirname(os.path.dirname(tor_path))
- tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
- tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
+ # Let's see if we have tor binaries in the onionshare GUI package
+ base_path = self.get_resource_path("tor")
+ base_path = base_path.replace("onionshare_cli", "onionshare")
+ tor_path = os.path.join(base_path, "tor")
+ if os.path.exists(tor_path):
+ obfs4proxy_file_path = os.path.join(base_path, "obfs4proxy")
+ snowflake_file_path = os.path.join(base_path, "snowflake-client")
+ meek_client_file_path = os.path.join(base_path, "meek-client")
+ tor_geo_ip_file_path = os.path.join(base_path, "geoip")
+ tor_geo_ipv6_file_path = os.path.join(base_path, "geoip6")
+ else:
+ # Fallback to looking in the path
+ tor_path = shutil.which("tor")
+ if not os.path.exists(tor_path):
+ raise CannotFindTor()
+
+ obfs4proxy_file_path = shutil.which("obfs4proxy")
+ snowflake_file_path = shutil.which("snowflake-client")
+ meek_client_file_path = shutil.which("meek-client")
+ prefix = os.path.dirname(os.path.dirname(tor_path))
+ tor_geo_ip_file_path = os.path.join(prefix, "share/tor/geoip")
+ tor_geo_ipv6_file_path = os.path.join(prefix, "share/tor/geoip6")
+
elif self.platform == "BSD":
tor_path = "/usr/local/bin/tor"
tor_geo_ip_file_path = "/usr/local/share/tor/geoip"
diff --git a/cli/onionshare_cli/meek.py b/cli/onionshare_cli/meek.py
index dffbad83..3ada19c7 100644
--- a/cli/onionshare_cli/meek.py
+++ b/cli/onionshare_cli/meek.py
@@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import subprocess
import time
-from queue import Queue, Empty
-from threading import Thread
class Meek(object):
@@ -67,14 +65,6 @@ class Meek(object):
Start the Meek Client and populate the SOCKS proxies dict
for use with requests to the Tor Moat API.
"""
- # Small method to read stdout from the subprocess.
- # We use this to obtain the random port that Meek
- # started on
- def enqueue_output(out, queue):
- for line in iter(out.readline, b""):
- queue.put(line)
- out.close()
-
# Abort early if we can't find the Meek client
if self.meek_client_file_path is None or not os.path.exists(
self.meek_client_file_path
@@ -124,34 +114,22 @@ class Meek(object):
universal_newlines=True,
)
- # Queue up the stdout from the subprocess for polling later
- q = Queue()
- t = Thread(target=enqueue_output, args=(self.meek_proc.stdout, q))
- t.daemon = True # thread dies with the program
- t.start()
-
- while True:
- # read stdout without blocking
- try:
- line = q.get_nowait()
- self.common.log("Meek", "start", line.strip())
- except Empty:
- # no stdout yet?
- pass
- else: # we got stdout
- if "CMETHOD meek socks5" in line:
- self.meek_host = line.split(" ")[3].split(":")[0]
- self.meek_port = line.split(" ")[3].split(":")[1]
- self.common.log(
- "Meek",
- "start",
- f"Meek running on {self.meek_host}:{self.meek_port}",
- )
- break
+ # Obtain the host and port that meek is running on
+ for line in iter(self.meek_proc.stdout.readline, b""):
+ if "CMETHOD meek socks5" in line:
+ self.meek_host = line.split(" ")[3].split(":")[0]
+ self.meek_port = line.split(" ")[3].split(":")[1]
+ self.common.log(
+ "Meek",
+ "start",
+ f"Meek running on {self.meek_host}:{self.meek_port}",
+ )
+ break
- if "CMETHOD-ERROR" in line:
- self.cleanup()
- raise MeekNotRunning()
+ if "CMETHOD-ERROR" in line:
+ self.cleanup()
+ raise MeekNotRunning()
+ break
if self.meek_port:
self.meek_proxies = {
diff --git a/cli/onionshare_cli/onion.py b/cli/onionshare_cli/onion.py
index 5ac669b8..76deea80 100644
--- a/cli/onionshare_cli/onion.py
+++ b/cli/onionshare_cli/onion.py
@@ -18,17 +18,19 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
+from .censorship import CensorshipCircumvention
+from .meek import Meek
from stem.control import Controller
from stem import ProtocolError, SocketClosed
from stem.connection import MissingPassword, UnreadableCookieFile, AuthenticationFailure
import base64
import nacl.public
import os
-import tempfile
+import psutil
+import shlex
import subprocess
+import tempfile
import time
-import shlex
-import psutil
import traceback
from distutils.version import LooseVersion as Version
@@ -258,9 +260,7 @@ class Onion(object):
and cmdline[2] == self.tor_torrc
):
self.common.log(
- "Onion",
- "connect",
- "found a stale tor process, killing it",
+ "Onion", "connect", "found a stale tor process, killing it"
)
proc.terminate()
proc.wait()
@@ -317,49 +317,75 @@ class Onion(object):
)
with open(self.tor_torrc, "w") as f:
+ self.common.log("Onion", "connect", "Writing torrc template file")
f.write(torrc_template)
# Bridge support
if self.settings.get("bridges_enabled"):
+ f.write("\nUseBridges 1\n")
if self.settings.get("bridges_type") == "built-in":
- if self.settings.get("bridges_builtin_pt") == "obfs4":
- with open(
- self.common.get_resource_path("torrc_template-obfs4")
- ) as o:
- f.write(o.read())
- elif self.settings.get("bridges_builtin_pt") == "meek-azure":
- with open(
- self.common.get_resource_path(
- "torrc_template-meek_lite_azure"
- )
- ) as o:
- f.write(o.read())
- elif self.settings.get("bridges_builtin_pt") == "snowflake":
- with open(
- self.common.get_resource_path(
- "torrc_template-snowflake"
+ use_torrc_bridge_templates = False
+ builtin_bridge_type = self.settings.get("bridges_builtin_pt")
+ # Use built-inbridges stored in settings, if they are there already.
+ # They are probably newer than that of our hardcoded copies.
+ if self.settings.get("bridges_builtin"):
+ try:
+ for line in self.settings.get("bridges_builtin")[
+ builtin_bridge_type
+ ]:
+ if line.strip() != "":
+ f.write(f"Bridge {line}\n")
+ self.common.log(
+ "Onion",
+ "connect",
+ "Wrote in the built-in bridges from OnionShare settings",
)
- ) as o:
- f.write(o.read())
-
+ except KeyError:
+ # Somehow we had built-in bridges in our settings, but
+ # not for this bridge type. Fall back to using the hard-
+ # coded templates.
+ use_torrc_bridge_templates = True
+ else:
+ use_torrc_bridge_templates = True
+ if use_torrc_bridge_templates:
+ if builtin_bridge_type == "obfs4":
+ with open(
+ self.common.get_resource_path(
+ "torrc_template-obfs4"
+ )
+ ) as o:
+ f.write(o.read())
+ elif builtin_bridge_type == "meek-azure":
+ with open(
+ self.common.get_resource_path(
+ "torrc_template-meek_lite_azure"
+ )
+ ) as o:
+ f.write(o.read())
+ elif builtin_bridge_type == "snowflake":
+ with open(
+ self.common.get_resource_path(
+ "torrc_template-snowflake"
+ )
+ ) as o:
+ f.write(o.read())
+ self.common.log(
+ "Onion",
+ "connect",
+ "Wrote in the built-in bridges from torrc templates",
+ )
elif self.settings.get("bridges_type") == "moat":
for line in self.settings.get("bridges_moat").split("\n"):
if line.strip() != "":
f.write(f"Bridge {line}\n")
- f.write("\nUseBridges 1\n")
elif self.settings.get("bridges_type") == "custom":
for line in self.settings.get("bridges_custom").split("\n"):
if line.strip() != "":
f.write(f"Bridge {line}\n")
- f.write("\nUseBridges 1\n")
# Execute a tor subprocess
- self.common.log(
- "Onion",
- "connect",
- f"starting {self.tor_path} subprocess",
- )
+ self.common.log("Onion", "connect", f"starting {self.tor_path} subprocess")
start_ts = time.time()
if self.common.platform == "Windows":
# In Windows, hide console window when opening tor.exe subprocess
@@ -385,19 +411,15 @@ class Onion(object):
)
# Wait for the tor controller to start
- self.common.log(
- "Onion",
- "connect",
- f"tor pid: {self.tor_proc.pid}",
- )
+ self.common.log("Onion", "connect", f"tor pid: {self.tor_proc.pid}")
time.sleep(2)
+ return_code = self.tor_proc.poll()
+ if return_code != None:
+ self.common.log("Onion", "connect", f"tor process has terminated early: {return_code}")
+
# Connect to the controller
- self.common.log(
- "Onion",
- "connect",
- "authenticating to tor controller",
- )
+ self.common.log("Onion", "connect", "authenticating to tor controller")
try:
if (
self.common.platform == "Windows"
@@ -638,6 +660,14 @@ class Onion(object):
# https://trac.torproject.org/projects/tor/ticket/28619
self.supports_v3_onions = self.tor_version >= Version("0.3.5.7")
+ # Now that we are connected to Tor, if we are using built-in bridges,
+ # update them with the latest copy available from the Tor API
+ if (
+ self.settings.get("bridges_enabled")
+ and self.settings.get("bridges_type") == "built-in"
+ ):
+ self.update_builtin_bridges()
+
def is_authenticated(self):
"""
Returns True if the Tor connection is still working, or False otherwise.
@@ -881,3 +911,68 @@ class Onion(object):
return ("127.0.0.1", 9150)
else:
return (self.settings.get("socks_address"), self.settings.get("socks_port"))
+
+ def update_builtin_bridges(self):
+ """
+ Use the CensorshipCircumvention API to fetch the latest built-in bridges
+ and update them in settings.
+ """
+ builtin_bridges = False
+ meek = None
+ # Try obtaining bridges over Tor, if we're connected to it.
+ if self.is_authenticated:
+ self.common.log(
+ "Onion",
+ "update_builtin_bridges",
+ "Updating the built-in bridges. Trying over Tor first",
+ )
+ self.censorship_circumvention = CensorshipCircumvention(
+ self.common, None, self
+ )
+ builtin_bridges = self.censorship_circumvention.request_builtin_bridges()
+
+ if not builtin_bridges:
+ # Tor was not running or it failed to hit the Tor API.
+ # Fall back to using Meek (domain-fronting).
+ self.common.log(
+ "Onion",
+ "update_builtin_bridges",
+ "Updating the built-in bridges. Trying via Meek (no Tor)",
+ )
+ meek = Meek(self.common)
+ meek.start()
+ self.censorship_circumvention = CensorshipCircumvention(
+ self.common, meek, None
+ )
+ builtin_bridges = self.censorship_circumvention.request_builtin_bridges()
+ meek.cleanup()
+
+ if builtin_bridges:
+ # If we got to this point, we have bridges
+ self.common.log(
+ "Onion",
+ "update_builtin_bridges",
+ f"Obtained bridges: {builtin_bridges}",
+ )
+ if builtin_bridges["meek"]:
+ # Meek bridge needs to be defined as "meek_lite", not "meek",
+ # for it to work with obfs4proxy.
+ # We also refer to this bridge type as 'meek-azure' in our settings.
+ # So first, rename the key in the dict
+ builtin_bridges["meek-azure"] = builtin_bridges.pop("meek")
+ new_meek_bridges = []
+ # Now replace the values. They also need the url/front params appended
+ for item in builtin_bridges["meek-azure"]:
+ newline = item.replace("meek", "meek_lite")
+ new_meek_bridges.append(
+ f"{newline} url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com"
+ )
+ builtin_bridges["meek-azure"] = new_meek_bridges
+ # Save the new settings
+ self.settings.set("bridges_builtin", builtin_bridges)
+ self.settings.save()
+ else:
+ self.common.log(
+ "Onion", "update_builtin_bridges", "Error getting built-in bridges"
+ )
+ return False
diff --git a/cli/onionshare_cli/onionshare.py b/cli/onionshare_cli/onionshare.py
index c2711b89..2bb22296 100644
--- a/cli/onionshare_cli/onionshare.py
+++ b/cli/onionshare_cli/onionshare.py
@@ -40,9 +40,6 @@ class OnionShare(object):
self.onion_host = None
self.port = None
- # files and dirs to delete on shutdown
- self.cleanup_filenames = []
-
# do not use tor -- for development
self.local_only = local_only
@@ -75,7 +72,9 @@ class OnionShare(object):
if self.local_only:
self.onion_host = f"127.0.0.1:{self.port}"
if not mode_settings.get("general", "public"):
- self.auth_string = "E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA"
+ self.auth_string = (
+ "E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA"
+ )
return
self.onion_host = self.onion.start_onion_service(
diff --git a/cli/onionshare_cli/resources/static/css/style.css b/cli/onionshare_cli/resources/static/css/style.css
index 7cec9738..79be31d0 100644
--- a/cli/onionshare_cli/resources/static/css/style.css
+++ b/cli/onionshare_cli/resources/static/css/style.css
@@ -320,15 +320,15 @@ div#uploads .upload .upload-status {
}
div#uploads .upload input.cancel {
- color: #d0011b;
+ color: #d0011b;
border: 0;
background: none;
box-shadow: none;
border-radius: 0px;
- cursor: pointer;
- font-family: sans-serif;
- font-size: 12px;
- text-decoration: none;
+ cursor: pointer;
+ font-family: sans-serif;
+ font-size: 12px;
+ text-decoration: none;
display: inline-block;
float:right;
}
@@ -398,4 +398,4 @@ a {
a:visited {
color: #601ca0;
-} \ No newline at end of file
+}
diff --git a/cli/onionshare_cli/resources/static/js/chat.js b/cli/onionshare_cli/resources/static/js/chat.js
index 21f00ca6..88abf4f4 100644
--- a/cli/onionshare_cli/resources/static/js/chat.js
+++ b/cli/onionshare_cli/resources/static/js/chat.js
@@ -154,7 +154,7 @@ var getScrollDiffBefore = function () {
var scrollBottomMaybe = function (scrollDiff) {
// Scrolls to bottom if the user is scrolled at bottom
- // if the user has scrolled upp, it wont scroll at bottom.
+ // if the user has scrolled up, it won't scroll at bottom.
// Note: when a user themselves send a message, it will still
// scroll to the bottom even if they had scrolled up before.
if (scrollDiff > 0) {
diff --git a/cli/onionshare_cli/resources/static/js/send.js b/cli/onionshare_cli/resources/static/js/send.js
index 43e9892d..22844ab9 100644
--- a/cli/onionshare_cli/resources/static/js/send.js
+++ b/cli/onionshare_cli/resources/static/js/send.js
@@ -11,7 +11,7 @@ function unhumanize(text) {
}
}
function sortTable(n) {
- var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
+ var table, rows, switching, i, x, y, valX, valY, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("file-list");
switching = true;
// Set the sorting direction to ascending:
@@ -21,7 +21,7 @@ function sortTable(n) {
while (switching) {
// Start by saying: no switching is done:
switching = false;
- rows = table.getElementsByTagName("TR");
+ rows = table.getElementsByClassName("row");
/* Loop through all table rows (except the
first, which contains table headers): */
for (i = 1; i < (rows.length - 1); i++) {
@@ -29,18 +29,22 @@ function sortTable(n) {
shouldSwitch = false;
/* Get the two elements you want to compare,
one from current row and one from the next: */
- x = rows[i].getElementsByTagName("TD")[n];
- y = rows[i + 1].getElementsByTagName("TD")[n];
+ x = rows[i].getElementsByClassName("cell-data")[n];
+ y = rows[i + 1].getElementsByClassName("cell-data")[n];
+
+ valX = x.classList.contains("size") ? unhumanize(x.innerHTML.toLowerCase()) : x.innerHTML;
+ valY = y.classList.contains("size") ? unhumanize(y.innerHTML.toLowerCase()) : y.innerHTML;
+
/* Check if the two rows should switch place,
based on the direction, asc or desc: */
if (dir == "asc") {
- if (unhumanize(x.innerHTML.toLowerCase()) > unhumanize(y.innerHTML.toLowerCase())) {
- // If so, mark as a switch and break the loop:
- shouldSwitch= true;
- break;
- }
+ if (valX > valY) {
+ // If so, mark as a switch and break the loop:
+ shouldSwitch= true;
+ break;
+ }
} else if (dir == "desc") {
- if (unhumanize(x.innerHTML.toLowerCase()) < unhumanize(y.innerHTML.toLowerCase())) {
+ if (valX < valY) {
// If so, mark as a switch and break the loop:
shouldSwitch= true;
break;
diff --git a/cli/onionshare_cli/resources/templates/403.html b/cli/onionshare_cli/resources/templates/403.html
index c9d28eea..eff250e6 100644
--- a/cli/onionshare_cli/resources/templates/403.html
+++ b/cli/onionshare_cli/resources/templates/403.html
@@ -4,7 +4,7 @@
<head>
<title>OnionShare: 403 Forbidden</title>
<meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon" />
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
</head>
diff --git a/cli/onionshare_cli/resources/templates/404.html b/cli/onionshare_cli/resources/templates/404.html
index e816f2c4..c921aa3e 100644
--- a/cli/onionshare_cli/resources/templates/404.html
+++ b/cli/onionshare_cli/resources/templates/404.html
@@ -4,7 +4,7 @@
<head>
<title>OnionShare: 404 Not Found</title>
<meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
</head>
diff --git a/cli/onionshare_cli/resources/templates/405.html b/cli/onionshare_cli/resources/templates/405.html
index 63888004..76c32c19 100644
--- a/cli/onionshare_cli/resources/templates/405.html
+++ b/cli/onionshare_cli/resources/templates/405.html
@@ -4,7 +4,7 @@
<head>
<title>OnionShare: 405 Method Not Allowed</title>
<meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
</head>
diff --git a/cli/onionshare_cli/resources/templates/500.html b/cli/onionshare_cli/resources/templates/500.html
index 9f6727d2..f6501a21 100644
--- a/cli/onionshare_cli/resources/templates/500.html
+++ b/cli/onionshare_cli/resources/templates/500.html
@@ -4,7 +4,7 @@
<head>
<title>OnionShare: An error occurred</title>
<meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
</head>
diff --git a/cli/onionshare_cli/resources/templates/send.html b/cli/onionshare_cli/resources/templates/send.html
index 5fc1ba1f..b1532cec 100644
--- a/cli/onionshare_cli/resources/templates/send.html
+++ b/cli/onionshare_cli/resources/templates/send.html
@@ -32,7 +32,7 @@
{% endif %}
<div class="file-list" id="file-list">
- <div class="d-flex">
+ <div class="d-flex row">
<div id="filename-header" class="heading">Filename</div>
<div id="size-header" class="heading">Size</div>
</div>
@@ -41,26 +41,26 @@
<div>
<img width="30" height="30" title="" alt="" src="{{ static_url_path }}/img/web_folder.png" />
<a href="{{ info.link }}">
- <span>{{ info.basename }}</span>
+ <span class="cell-data">{{ info.basename }}</span>
</a>
</div>
- <div>&mdash;</div>
+ <div class="cell-data">&mdash;</div>
</div>
{% endfor %}
{% for info in files %}
- <div class="d-flex">
+ <div class="d-flex row">
<div>
<img width="30" height="30" title="" alt="" src="{{ static_url_path }}/img/web_file.png" />
{% if download_individual_files %}
<a href="{{ info.link }}">
- <span>{{ info.basename }}</span>
+ <span class="cell-data">{{ info.basename }}</span>
</a>
{% else %}
- <span>{{ info.basename }}</span>
+ <span class="cell-data">{{ info.basename }}</span>
{% endif %}
</div>
- <div>{{ info.size_human }}</div>
+ <div class="cell-data size">{{ info.size_human }}</div>
</div>
{% endfor %}
</div>
diff --git a/cli/onionshare_cli/resources/torrc_template-meek_lite_azure b/cli/onionshare_cli/resources/torrc_template-meek_lite_azure
index 6f601681..ff67f518 100644
--- a/cli/onionshare_cli/resources/torrc_template-meek_lite_azure
+++ b/cli/onionshare_cli/resources/torrc_template-meek_lite_azure
@@ -1,3 +1,2 @@
-# Enable built-in meek-azure bridge
-Bridge meek_lite 0.0.2.0:3 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
-UseBridges 1
+# Enable built-in meek bridge
+Bridge meek_lite 0.0.2.0:2 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
diff --git a/cli/onionshare_cli/resources/torrc_template-obfs4 b/cli/onionshare_cli/resources/torrc_template-obfs4
index 720cc28c..adf343de 100644
--- a/cli/onionshare_cli/resources/torrc_template-obfs4
+++ b/cli/onionshare_cli/resources/torrc_template-obfs4
@@ -1,17 +1,16 @@
-# Enable built-in obfs4-bridge
-Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1
-Bridge obfs4 38.229.1.78:80 C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg iat-mode=1
-Bridge obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ iat-mode=1
-Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0
-Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0
-Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0
+# Enable built-in obfs4 bridge
Bridge obfs4 144.217.20.138:80 FB70B257C162BF1038CA669D568D76F5B7F0BABB cert=vYIV5MgrghGQvZPIi1tJwnzorMgqgmlKaB77Y3Z9Q/v94wZBOAXkW+fdx4aSxLVnKO+xNw iat-mode=0
+Bridge obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcUfeLqbstggjIw2rtgIKqdIhUlHp82XRqNSq/mtAjp1BIC9vHKJ2FAEpGssTPw iat-mode=0
+Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1
Bridge obfs4 193.11.166.194:27015 2D82C2E354D531A68469ADF7F878FA6060C6BACA cert=4TLQPJrTSaDffMK7Nbao6LC7G9OW/NHkUwIdjLSS3KYf0Nv4/nQiiI8dY2TcsQx01NniOg iat-mode=0
Bridge obfs4 193.11.166.194:27020 86AC7B8D430DAC4117E9F42C9EAED18133863AAF cert=0LDeJH4JzMDtkJJrFphJCiPqKx7loozKN7VNfuukMGfHO0Z8OGdzHVkhVAOfo1mUdv9cMg iat-mode=0
Bridge obfs4 193.11.166.194:27025 1AE2C08904527FEA90C4C4F8C1083EA59FBC6FAF cert=ItvYZzW5tn6v3G4UnQa6Qz04Npro6e81AP70YujmK/KXwDFPTs3aHXcHp4n8Vt6w/bv8cA iat-mode=0
Bridge obfs4 209.148.46.65:443 74FAD13168806246602538555B5521A0383A1875 cert=ssH+9rP8dG2NLDN2XuFw63hIO/9MNNinLmxQDpVa+7kTOa9/m+tGWT1SmSYpQ9uTBGa6Hw iat-mode=0
-Bridge obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcUfeLqbstggjIw2rtgIKqdIhUlHp82XRqNSq/mtAjp1BIC9vHKJ2FAEpGssTPw iat-mode=0
+Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0
+Bridge obfs4 38.229.1.78:80 C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg iat-mode=1
+Bridge obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ iat-mode=1
Bridge obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
-Bridge obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
Bridge obfs4 51.222.13.177:80 5EDAC3B810E12B01F6FD8050D2FD3E277B289A08 cert=2uplIpLQ0q9+0qMFrK5pkaYRDOe460LL9WHBvatgkuRr/SL31wBOEupaMMJ6koRE6Ld0ew iat-mode=0
-UseBridges 1
+Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0
+Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0
+Bridge obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
diff --git a/cli/onionshare_cli/resources/torrc_template-snowflake b/cli/onionshare_cli/resources/torrc_template-snowflake
index 4100d3be..06cb2734 100644
--- a/cli/onionshare_cli/resources/torrc_template-snowflake
+++ b/cli/onionshare_cli/resources/torrc_template-snowflake
@@ -1,3 +1,2 @@
# Enable built-in snowflake bridge
-Bridge snowflake 192.0.2.3:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72
-UseBridges 1
+Bridge snowflake 0.0.3.0:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72
diff --git a/cli/onionshare_cli/settings.py b/cli/onionshare_cli/settings.py
index c7d74a70..8a4a9939 100644
--- a/cli/onionshare_cli/settings.py
+++ b/cli/onionshare_cli/settings.py
@@ -110,6 +110,7 @@ class Settings(object):
"bridges_builtin_pt": "obfs4", # "obfs4", "meek-azure", or "snowflake"
"bridges_moat": "",
"bridges_custom": "",
+ "bridges_builtin": {},
"persistent_tabs": [],
"locale": None, # this gets defined in fill_in_defaults()
"theme": 0,
diff --git a/cli/onionshare_cli/web/send_base_mode.py b/cli/onionshare_cli/web/send_base_mode.py
index 27de598a..d0fccf06 100644
--- a/cli/onionshare_cli/web/send_base_mode.py
+++ b/cli/onionshare_cli/web/send_base_mode.py
@@ -42,10 +42,11 @@ class SendBaseModeWeb:
self.is_zipped = False
self.download_filename = None
self.download_filesize = None
- self.gzip_filename = None
- self.gzip_filesize = None
self.zip_writer = None
+ # Store the tempfile objects here, so when they're garbage collected the files are deleted
+ self.gzip_files = []
+
# If autostop_sharing, only allow one download at a time
self.download_in_progress = False
@@ -192,12 +193,15 @@ class SendBaseModeWeb:
# gzip compress the individual file, if it hasn't already been compressed
if use_gzip:
if filesystem_path not in self.gzip_individual_files:
- gzip_filename = tempfile.mkstemp("wb+")[1]
- self._gzip_compress(filesystem_path, gzip_filename, 6, None)
- self.gzip_individual_files[filesystem_path] = gzip_filename
+ self.gzip_files.append(
+ tempfile.NamedTemporaryFile("wb+", dir=self.common.build_tmp_dir())
+ )
+ gzip_file = self.gzip_files[-1]
+ self._gzip_compress(filesystem_path, gzip_file.name, 6, None)
+ self.gzip_individual_files[filesystem_path] = gzip_file.name
- # Make sure the gzip file gets cleaned up when onionshare stops
- self.web.cleanup_filenames.append(gzip_filename)
+ # Cleanup this temp file
+ self.web.cleanup_tempfiles.append(gzip_file)
file_to_download = self.gzip_individual_files[filesystem_path]
filesize = os.path.getsize(self.gzip_individual_files[filesystem_path])
diff --git a/cli/onionshare_cli/web/share_mode.py b/cli/onionshare_cli/web/share_mode.py
index 92a4c9af..9be3a89b 100644
--- a/cli/onionshare_cli/web/share_mode.py
+++ b/cli/onionshare_cli/web/share_mode.py
@@ -134,8 +134,12 @@ class ShareModeWeb(SendBaseModeWeb):
The web app routes for sharing files
"""
- @self.web.app.route("/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False)
- @self.web.app.route("/<path:path>", methods=["GET"], provide_automatic_options=False)
+ @self.web.app.route(
+ "/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False
+ )
+ @self.web.app.route(
+ "/<path:path>", methods=["GET"], provide_automatic_options=False
+ )
def index(path):
"""
Render the template for the onionshare landing page.
@@ -159,7 +163,9 @@ class ShareModeWeb(SendBaseModeWeb):
return self.render_logic(path)
- @self.web.app.route("/download", methods=["GET"], provide_automatic_options=False)
+ @self.web.app.route(
+ "/download", methods=["GET"], provide_automatic_options=False
+ )
def download():
"""
Download the zip file.
@@ -286,7 +292,9 @@ class ShareModeWeb(SendBaseModeWeb):
if if_unmod:
if_date = parse_date(if_unmod)
if if_date and not if_date.tzinfo:
- if_date = if_date.replace(tzinfo=timezone.utc) # Compatible with Flask < 2.0.0
+ if_date = if_date.replace(
+ tzinfo=timezone.utc
+ ) # Compatible with Flask < 2.0.0
if if_date and if_date > last_modified:
abort(412)
elif range_header is None:
@@ -459,7 +467,7 @@ class ShareModeWeb(SendBaseModeWeb):
return self.web.error404(history_id)
def build_zipfile_list(self, filenames, processed_size_callback=None):
- self.common.log("ShareModeWeb", "build_zipfile_list")
+ self.common.log("ShareModeWeb", "build_zipfile_list", f"filenames={filenames}")
for filename in filenames:
info = {
"filename": filename,
@@ -484,7 +492,10 @@ class ShareModeWeb(SendBaseModeWeb):
self.download_etag = make_etag(f)
# Compress the file with gzip now, so we don't have to do it on each request
- self.gzip_filename = tempfile.mkstemp("wb+")[1]
+ self.gzip_tmp_dir = tempfile.TemporaryDirectory(
+ dir=self.common.build_tmp_dir()
+ )
+ self.gzip_filename = os.path.join(self.gzip_tmp_dir.name, "file.gz")
self._gzip_compress(
self.download_filename, self.gzip_filename, 6, processed_size_callback
)
@@ -492,15 +503,15 @@ class ShareModeWeb(SendBaseModeWeb):
with open(self.gzip_filename, "rb") as f:
self.gzip_etag = make_etag(f)
- # Make sure the gzip file gets cleaned up when onionshare stops
- self.web.cleanup_filenames.append(self.gzip_filename)
-
self.is_zipped = False
+ # Cleanup this tempfile
+ self.web.cleanup_tempdirs.append(self.gzip_tmp_dir)
+
else:
# Zip up the files and folders
self.zip_writer = ZipWriter(
- self.common, processed_size_callback=processed_size_callback
+ self.common, self.web, processed_size_callback=processed_size_callback
)
self.download_filename = self.zip_writer.zip_filename
for info in self.file_info["files"]:
@@ -519,10 +530,6 @@ class ShareModeWeb(SendBaseModeWeb):
with open(self.download_filename, "rb") as f:
self.download_etag = make_etag(f)
- # Make sure the zip file gets cleaned up when onionshare stops
- self.web.cleanup_filenames.append(self.zip_writer.zip_filename)
- self.web.cleanup_filenames.append(self.zip_writer.zip_temp_dir)
-
self.is_zipped = True
return True
@@ -535,17 +542,24 @@ class ZipWriter(object):
filename.
"""
- def __init__(self, common, zip_filename=None, processed_size_callback=None):
+ def __init__(
+ self, common, web=None, zip_filename=None, processed_size_callback=None
+ ):
self.common = common
+ self.web = web
self.cancel_compression = False
if zip_filename:
self.zip_filename = zip_filename
else:
- self.zip_temp_dir = tempfile.mkdtemp()
- self.zip_filename = (
- f"{self.zip_temp_dir}/onionshare_{self.common.random_string(4, 6)}.zip"
+ self.zip_temp_dir = tempfile.TemporaryDirectory(
+ dir=self.common.build_tmp_dir()
)
+ self.zip_filename = f"{self.zip_temp_dir.name}/onionshare_{self.common.random_string(4, 6)}.zip"
+
+ # Cleanup this temp dir
+ if self.web:
+ self.web.cleanup_tempdirs.append(self.zip_temp_dir)
self.z = zipfile.ZipFile(self.zip_filename, "w", allowZip64=True)
self.processed_size_callback = processed_size_callback
diff --git a/cli/onionshare_cli/web/web.py b/cli/onionshare_cli/web/web.py
index e0cf97f3..0fc55eb4 100644
--- a/cli/onionshare_cli/web/web.py
+++ b/cli/onionshare_cli/web/web.py
@@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import logging
+import mimetypes
import os
import queue
import requests
@@ -80,6 +81,16 @@ class Web:
self.settings = mode_settings
+ # Flask guesses the MIME type of files from a database on the operating
+ # system.
+ # Some operating systems, or applications that can modify the database
+ # (such as the Windows Registry) can treat .js files as text/plain,
+ # which breaks the chat app due to X-Content-Type-Options: nosniff.
+ #
+ # It's probably #notourbug but we can fix it by forcing the mimetype.
+ # https://github.com/onionshare/onionshare/issues/1443
+ mimetypes.add_type("text/javascript", ".js")
+
# The flask app
self.app = Flask(
__name__,
@@ -151,11 +162,17 @@ class Web:
elif self.mode == "website":
self.website_mode = WebsiteModeWeb(self.common, self)
elif self.mode == "chat":
- self.socketio = SocketIO()
+ if self.common.verbose:
+ self.socketio = SocketIO(
+ async_mode="gevent", logger=True, engineio_logger=True
+ )
+ else:
+ self.socketio = SocketIO(async_mode="gevent")
self.socketio.init_app(self.app)
self.chat_mode = ChatModeWeb(self.common, self)
- self.cleanup_filenames = []
+ self.cleanup_tempfiles = []
+ self.cleanup_tempdirs = []
def get_mode(self):
if self.mode == "share":
@@ -198,18 +215,19 @@ class Web:
"""
for header, value in self.security_headers:
r.headers.set(header, value)
+
# Set a CSP header unless in website mode and the user has disabled it
default_csp = "default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;"
- if self.mode != "website" or (not self.settings.get("website", "disable_csp") and not self.settings.get("website", "custom_csp")):
- r.headers.set(
- "Content-Security-Policy",
- default_csp
- )
+ if self.mode != "website" or (
+ not self.settings.get("website", "disable_csp")
+ and not self.settings.get("website", "custom_csp")
+ ):
+ r.headers.set("Content-Security-Policy", default_csp)
else:
if self.settings.get("website", "custom_csp"):
r.headers.set(
"Content-Security-Policy",
- self.settings.get("website", "custom_csp")
+ self.settings.get("website", "custom_csp"),
)
return r
@@ -387,14 +405,13 @@ class Web:
"""
self.common.log("Web", "cleanup")
- # Cleanup files
- try:
- for filename in self.cleanup_filenames:
- if os.path.isfile(filename):
- os.remove(filename)
- elif os.path.isdir(filename):
- shutil.rmtree(filename)
- except Exception:
- # Don't crash if file is still in use
- pass
- self.cleanup_filenames = []
+ # Close all of the tempfile.NamedTemporaryFile
+ for file in self.cleanup_tempfiles:
+ file.close()
+
+ # Clean up the tempfile.NamedTemporaryDirectory objects
+ for dir in self.cleanup_tempdirs:
+ dir.cleanup()
+
+ self.cleanup_tempfiles = []
+ self.cleanup_tempdirs = []
diff --git a/cli/poetry.lock b/cli/poetry.lock
index 966aea84..f57e0b14 100644
--- a/cli/poetry.lock
+++ b/cli/poetry.lock
@@ -57,7 +57,7 @@ pycparser = "*"
[[package]]
name = "charset-normalizer"
-version = "2.0.7"
+version = "2.0.9"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
@@ -99,7 +99,7 @@ trio = ["trio (>=0.14.0)", "sniffio (>=1.1)"]
[[package]]
name = "eventlet"
-version = "0.32.0"
+version = "0.33.0"
description = "Highly concurrent networking library"
category = "main"
optional = false
@@ -142,6 +142,38 @@ Flask = ">=0.9"
python-socketio = ">=5.0.2"
[[package]]
+name = "gevent"
+version = "21.12.0"
+description = "Coroutine-based network library"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5"
+
+[package.dependencies]
+cffi = {version = ">=1.12.2", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""}
+greenlet = {version = ">=1.1.0,<2.0", markers = "platform_python_implementation == \"CPython\""}
+"zope.event" = "*"
+"zope.interface" = "*"
+
+[package.extras]
+dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"]
+docs = ["repoze.sphinx.autointerface", "sphinxcontrib-programoutput", "zope.schema"]
+monitor = ["psutil (>=5.7.0)"]
+recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "backports.socketpair", "psutil (>=5.7.0)"]
+test = ["requests", "objgraph", "cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "futures", "mock", "backports.socketpair", "contextvars (==2.4)", "coverage (>=5.0)", "coveralls (>=1.7.0)", "psutil (>=5.7.0)"]
+
+[[package]]
+name = "gevent-websocket"
+version = "0.10.1"
+description = "Websocket handler for the gevent pywsgi server, a Python network library"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+gevent = "*"
+
+[[package]]
name = "greenlet"
version = "1.1.2"
description = "Lightweight in-process concurrent programming"
@@ -162,7 +194,7 @@ python-versions = ">=3.5"
[[package]]
name = "importlib-metadata"
-version = "4.8.2"
+version = "4.8.3"
description = "Read metadata from Python packages"
category = "dev"
optional = false
@@ -217,14 +249,14 @@ python-versions = ">=3.6"
[[package]]
name = "packaging"
-version = "21.2"
+version = "21.3"
description = "Core utilities for Python packages"
category = "dev"
optional = false
python-versions = ">=3.6"
[package.dependencies]
-pyparsing = ">=2.0.2,<3"
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
[[package]]
name = "pluggy"
@@ -286,11 +318,14 @@ tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"]
[[package]]
name = "pyparsing"
-version = "2.4.7"
+version = "3.0.6"
description = "Python parsing module"
category = "dev"
optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = ">=3.6"
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
[[package]]
name = "pysocks"
@@ -387,7 +422,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "typing-extensions"
-version = "4.0.0"
+version = "4.0.1"
description = "Backported and Experimental Type Hints for Python 3.6+"
category = "dev"
optional = false
@@ -438,10 +473,35 @@ python-versions = ">=3.6"
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
+[[package]]
+name = "zope.event"
+version = "4.5.0"
+description = "Very basic event publishing system"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+docs = ["sphinx"]
+test = ["zope.testrunner"]
+
+[[package]]
+name = "zope.interface"
+version = "5.4.0"
+description = "Interfaces for Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.extras]
+docs = ["sphinx", "repoze.sphinx.autointerface"]
+test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
+testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
+
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
-content-hash = "b6700c9652a3292f2ab3153544c46ed78c75fc9b65c15fcf4e3c243f841565dd"
+content-hash = "53661539ae01732f6ff6983cf741121e19eb9f142ed3e8bc43845af7695a2c06"
[metadata.files]
atomicwrites = [
@@ -516,8 +576,8 @@ cffi = [
{file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
]
charset-normalizer = [
- {file = "charset-normalizer-2.0.7.tar.gz", hash = "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0"},
- {file = "charset_normalizer-2.0.7-py3-none-any.whl", hash = "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b"},
+ {file = "charset-normalizer-2.0.9.tar.gz", hash = "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c"},
+ {file = "charset_normalizer-2.0.9-py3-none-any.whl", hash = "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721"},
]
click = [
{file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
@@ -532,8 +592,8 @@ dnspython = [
{file = "dnspython-2.1.0.zip", hash = "sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4"},
]
eventlet = [
- {file = "eventlet-0.32.0-py2.py3-none-any.whl", hash = "sha256:a3a67b02f336e97a1894b277bc33b695831525758781eb024f4da00e75ce5e25"},
- {file = "eventlet-0.32.0.tar.gz", hash = "sha256:2f0bb8ed0dc0ab21d683975d5d8ab3c054d588ce61def9faf7a465ee363e839b"},
+ {file = "eventlet-0.33.0-py2.py3-none-any.whl", hash = "sha256:d10a8fcc9e33381905d9873303fde96ebe3541c03fb795055d2c7347dce0639c"},
+ {file = "eventlet-0.33.0.tar.gz", hash = "sha256:80144f489c1bb273a51b6f96ff9785a382d2866b9bab1f5bd748385019f4141f"},
]
flask = [
{file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"},
@@ -543,6 +603,45 @@ flask-socketio = [
{file = "Flask-SocketIO-5.0.1.tar.gz", hash = "sha256:5c4319f5214ada20807857dc8fdf3dc7d2afe8d6dd38f5c516c72e2be47d2227"},
{file = "Flask_SocketIO-5.0.1-py2.py3-none-any.whl", hash = "sha256:5d9a4438bafd806c5a3b832e74b69758781a8ee26fb6c9b1dbdda9b4fced432e"},
]
+gevent = [
+ {file = "gevent-21.12.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:2afa3f3ad528155433f6ac8bd64fa5cc303855b97004416ec719a6b1ca179481"},
+ {file = "gevent-21.12.0-cp27-cp27m-win32.whl", hash = "sha256:177f93a3a90f46a5009e0841fef561601e5c637ba4332ab8572edd96af650101"},
+ {file = "gevent-21.12.0-cp27-cp27m-win_amd64.whl", hash = "sha256:a5ad4ed8afa0a71e1927623589f06a9b5e8b5e77810be3125cb4d93050d3fd1f"},
+ {file = "gevent-21.12.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:eae3c46f9484eaacd67ffcdf4eaf6ca830f587edd543613b0f5c4eb3c11d052d"},
+ {file = "gevent-21.12.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e1899b921219fc8959ff9afb94dae36be82e0769ed13d330a393594d478a0b3a"},
+ {file = "gevent-21.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21cb5c9f4e14d75b3fe0b143ec875d7dbd1495fad6d49704b00e57e781ee0f"},
+ {file = "gevent-21.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:542ae891e2aa217d2cf6d8446538fcd2f3263a40eec123b970b899bac391c47a"},
+ {file = "gevent-21.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:0082d8a5d23c35812ce0e716a91ede597f6dd2c5ff508a02a998f73598c59397"},
+ {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da8d2d51a49b2a5beb02ad619ca9ddbef806ef4870ba04e5ac7b8b41a5b61db3"},
+ {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfff82f05f14b7f5d9ed53ccb7a609ae8604df522bb05c971bca78ec9d8b2b9"},
+ {file = "gevent-21.12.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7909780f0cf18a1fc32aafd8c8e130cdd93c6e285b11263f7f2d1a0f3678bc50"},
+ {file = "gevent-21.12.0-cp36-cp36m-win32.whl", hash = "sha256:bb5cb8db753469c7a9a0b8a972d2660fe851aa06eee699a1ca42988afb0aaa02"},
+ {file = "gevent-21.12.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c43f081cbca41d27fd8fef9c6a32cf83cb979345b20abc07bf68df165cdadb24"},
+ {file = "gevent-21.12.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:74fc1ef16b86616cfddcc74f7292642b0f72dde4dd95aebf4c45bb236744be54"},
+ {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc2fef0f98ee180704cf95ec84f2bc2d86c6c3711bb6b6740d74e0afe708b62c"},
+ {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b4c17064e28f4eb85604486abc89f442c7407d2aed249cf54544ce5c9baee6"},
+ {file = "gevent-21.12.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:973749bacb7bc4f4181a8fb2a7e0e2ff44038de56d08e856dd54a5ac1d7331b4"},
+ {file = "gevent-21.12.0-cp37-cp37m-win32.whl", hash = "sha256:6a02a88723ed3f0fd92cbf1df3c4cd2fbd87d82b0a4bac3e36a8875923115214"},
+ {file = "gevent-21.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f289fae643a3f1c3b909d6b033e6921b05234a4907e9c9c8c3f1fe403e6ac452"},
+ {file = "gevent-21.12.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:3baeeccc4791ba3f8db27179dff11855a8f9210ddd754f6c9b48e0d2561c2aea"},
+ {file = "gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692"},
+ {file = "gevent-21.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d86438ede1cbe0fde6ef4cc3f72bf2f1ecc9630d8b633ff344a3aeeca272cdd"},
+ {file = "gevent-21.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01928770972181ad8866ee37ea3504f1824587b188fcab782ef1619ce7538766"},
+ {file = "gevent-21.12.0-cp38-cp38-win32.whl", hash = "sha256:3c012c73e6c61f13c75e3a4869dbe6a2ffa025f103421a6de9c85e627e7477b1"},
+ {file = "gevent-21.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:b7709c64afa8bb3000c28bb91ec42c79594a7cb0f322e20427d57f9762366a5b"},
+ {file = "gevent-21.12.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ec21f9eaaa6a7b1e62da786132d6788675b314f25f98d9541f1bf00584ed4749"},
+ {file = "gevent-21.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ce1f38fdfe2149ffe8ec2131ca45281791c1e464db34b3b4321ae9d8d2efbb"},
+ {file = "gevent-21.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ccffcf708094564e442ac6fde46f0ae9e40015cb69d995f4b39cc29a7643881"},
+ {file = "gevent-21.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24d3550fbaeef5fddd794819c2853bca45a86c3d64a056a2c268d981518220d1"},
+ {file = "gevent-21.12.0-cp39-cp39-win32.whl", hash = "sha256:2bcec9f80196c751fdcf389ca9f7141e7b0db960d8465ed79be5e685bfcad682"},
+ {file = "gevent-21.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:3dad62f55fad839d498c801e139481348991cee6e1c7706041b5fe096cb6a279"},
+ {file = "gevent-21.12.0-pp27-pypy_73-win_amd64.whl", hash = "sha256:9f9652d1e4062d4b5b5a0a49ff679fa890430b5f76969d35dccb2df114c55e0f"},
+ {file = "gevent-21.12.0.tar.gz", hash = "sha256:f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e"},
+]
+gevent-websocket = [
+ {file = "gevent-websocket-0.10.1.tar.gz", hash = "sha256:7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0"},
+ {file = "gevent_websocket-0.10.1-py3-none-any.whl", hash = "sha256:17b67d91282f8f4c973eba0551183fc84f56f1c90c8f6b6b30256f31f66f5242"},
+]
greenlet = [
{file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"},
{file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"},
@@ -555,6 +654,7 @@ greenlet = [
{file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"},
{file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"},
{file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"},
+ {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"},
{file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"},
{file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"},
{file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"},
@@ -567,6 +667,7 @@ greenlet = [
{file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"},
{file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"},
{file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"},
+ {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"},
{file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"},
{file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"},
{file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"},
@@ -575,6 +676,7 @@ greenlet = [
{file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"},
{file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"},
{file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"},
+ {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"},
{file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"},
{file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"},
{file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"},
@@ -583,6 +685,7 @@ greenlet = [
{file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"},
{file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"},
{file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"},
+ {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"},
{file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"},
{file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"},
{file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"},
@@ -591,6 +694,7 @@ greenlet = [
{file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"},
{file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"},
{file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"},
+ {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"},
{file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"},
{file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"},
{file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"},
@@ -600,8 +704,8 @@ idna = [
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
]
importlib-metadata = [
- {file = "importlib_metadata-4.8.2-py3-none-any.whl", hash = "sha256:53ccfd5c134223e497627b9815d5030edf77d2ed573922f7a0b8f8bb81a1c100"},
- {file = "importlib_metadata-4.8.2.tar.gz", hash = "sha256:75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb"},
+ {file = "importlib_metadata-4.8.3-py3-none-any.whl", hash = "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e"},
+ {file = "importlib_metadata-4.8.3.tar.gz", hash = "sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -621,6 +725,9 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
{file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
{file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
@@ -632,6 +739,9 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
@@ -643,6 +753,9 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
@@ -655,6 +768,9 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
{file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
{file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
{file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
@@ -667,13 +783,16 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
{file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
]
packaging = [
- {file = "packaging-21.2-py3-none-any.whl", hash = "sha256:14317396d1e8cdb122989b916fa2c7e9ca8e2be9e8060a6eff75b6b7b4d8a7e0"},
- {file = "packaging-21.2.tar.gz", hash = "sha256:096d689d78ca690e4cd8a89568ba06d07ca097e3306a4381635073ca91479966"},
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
]
pluggy = [
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
@@ -738,8 +857,8 @@ pynacl = [
{file = "PyNaCl-1.4.0.tar.gz", hash = "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505"},
]
pyparsing = [
- {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
- {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
+ {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
+ {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
]
pysocks = [
{file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
@@ -771,7 +890,8 @@ toml = [
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
typing-extensions = [
- {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"},
+ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
+ {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
]
unidecode = [
{file = "Unidecode-1.3.2-py3-none-any.whl", hash = "sha256:215fe33c9d1c889fa823ccb66df91b02524eb8cc8c9c80f9c5b8129754d27829"},
@@ -789,3 +909,60 @@ zipp = [
{file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
{file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
]
+"zope.event" = [
+ {file = "zope.event-4.5.0-py2.py3-none-any.whl", hash = "sha256:2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42"},
+ {file = "zope.event-4.5.0.tar.gz", hash = "sha256:5e76517f5b9b119acf37ca8819781db6c16ea433f7e2062c4afc2b6fbedb1330"},
+]
+"zope.interface" = [
+ {file = "zope.interface-5.4.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7df1e1c05304f26faa49fa752a8c690126cf98b40b91d54e6e9cc3b7d6ffe8b7"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c98384b254b37ce50eddd55db8d381a5c53b4c10ee66e1e7fe749824f894021"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:08f9636e99a9d5410181ba0729e0408d3d8748026ea938f3b970a0249daa8192"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0ea1d73b7c9dcbc5080bb8aaffb776f1c68e807767069b9ccdd06f27a161914a"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:273f158fabc5ea33cbc936da0ab3d4ba80ede5351babc4f577d768e057651531"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-win32.whl", hash = "sha256:a1e6e96217a0f72e2b8629e271e1b280c6fa3fe6e59fa8f6701bec14e3354325"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:877473e675fdcc113c138813a5dd440da0769a2d81f4d86614e5d62b69497155"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f7ee479e96f7ee350db1cf24afa5685a5899e2b34992fb99e1f7c1b0b758d263"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:b0297b1e05fd128d26cc2460c810d42e205d16d76799526dfa8c8ccd50e74959"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:af310ec8335016b5e52cae60cda4a4f2a60a788cbb949a4fbea13d441aa5a09e"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:9a9845c4c6bb56e508651f005c4aeb0404e518c6f000d5a1123ab077ab769f5c"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0b465ae0962d49c68aa9733ba92a001b2a0933c317780435f00be7ecb959c702"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:5dd9ca406499444f4c8299f803d4a14edf7890ecc595c8b1c7115c2342cadc5f"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:469e2407e0fe9880ac690a3666f03eb4c3c444411a5a5fddfdabc5d184a79f05"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:52de7fc6c21b419078008f697fd4103dbc763288b1406b4562554bd47514c004"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3dd4952748521205697bc2802e4afac5ed4b02909bb799ba1fe239f77fd4e117"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-win32.whl", hash = "sha256:dd93ea5c0c7f3e25335ab7d22a507b1dc43976e1345508f845efc573d3d779d8"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:3748fac0d0f6a304e674955ab1365d515993b3a0a865e16a11ec9d86fb307f63"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:66c0061c91b3b9cf542131148ef7ecbecb2690d48d1612ec386de9d36766058f"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d0c1bc2fa9a7285719e5678584f6b92572a5b639d0e471bb8d4b650a1a910920"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2876246527c91e101184f63ccd1d716ec9c46519cc5f3d5375a3351c46467c46"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:334701327f37c47fa628fc8b8d28c7d7730ce7daaf4bda1efb741679c2b087fc"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:71aace0c42d53abe6fc7f726c5d3b60d90f3c5c055a447950ad6ea9cec2e37d9"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5bb3489b4558e49ad2c5118137cfeaf59434f9737fa9c5deefc72d22c23822e2"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:1c0e316c9add0db48a5b703833881351444398b04111188069a26a61cfb4df78"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f0c02cbb9691b7c91d5009108f975f8ffeab5dff8f26d62e21c493060eff2a1"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:7d97a4306898b05404a0dcdc32d9709b7d8832c0c542b861d9a826301719794e"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:867a5ad16892bf20e6c4ea2aab1971f45645ff3102ad29bd84c86027fa99997b"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5f931a1c21dfa7a9c573ec1f50a31135ccce84e32507c54e1ea404894c5eb96f"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:194d0bcb1374ac3e1e023961610dc8f2c78a0f5f634d0c737691e215569e640d"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:8270252effc60b9642b423189a2fe90eb6b59e87cbee54549db3f5562ff8d1b8"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:15e7d1f7a6ee16572e21e3576d2012b2778cbacf75eb4b7400be37455f5ca8bf"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:8892f89999ffd992208754851e5a052f6b5db70a1e3f7d54b17c5211e37a98c7"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2e5a26f16503be6c826abca904e45f1a44ff275fdb7e9d1b75c10671c26f8b94"},
+ {file = "zope.interface-5.4.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4de4bc9b6d35c5af65b454d3e9bc98c50eb3960d5a3762c9438df57427134b8e"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bf68f4b2b6683e52bec69273562df15af352e5ed25d1b6641e7efddc5951d1a7"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:63b82bb63de7c821428d513607e84c6d97d58afd1fe2eb645030bdc185440120"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f44e517131a98f7a76696a7b21b164bcb85291cee106a23beccce454e1f433a4"},
+ {file = "zope.interface-5.4.0-cp38-cp38-win32.whl", hash = "sha256:a9506a7e80bcf6eacfff7f804c0ad5350c8c95b9010e4356a4b36f5322f09abb"},
+ {file = "zope.interface-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54"},
+ {file = "zope.interface-5.4.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:0cee5187b60ed26d56eb2960136288ce91bcf61e2a9405660d271d1f122a69a4"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a8156e6a7f5e2a0ff0c5b21d6bcb45145efece1909efcbbbf48c56f8da68221d"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:205e40ccde0f37496904572035deea747390a8b7dc65146d30b96e2dd1359a83"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3f24df7124c323fceb53ff6168da70dbfbae1442b4f3da439cd441681f54fe25"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:5208ebd5152e040640518a77827bdfcc73773a15a33d6644015b763b9c9febc1"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:17776ecd3a1fdd2b2cd5373e5ef8b307162f581c693575ec62e7c5399d80794c"},
+ {file = "zope.interface-5.4.0-cp39-cp39-win32.whl", hash = "sha256:d4d9d6c1a455d4babd320203b918ccc7fcbefe308615c521062bc2ba1aa4d26e"},
+ {file = "zope.interface-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:0cba8477e300d64a11a9789ed40ee8932b59f9ee05f85276dbb4b59acee5dd09"},
+ {file = "zope.interface-5.4.0.tar.gz", hash = "sha256:5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e"},
+]
diff --git a/cli/pyproject.toml b/cli/pyproject.toml
index 372d9aa4..9b664d72 100644
--- a/cli/pyproject.toml
+++ b/cli/pyproject.toml
@@ -30,6 +30,7 @@ setuptools = "*"
pynacl = "^1.4.0"
colorama = "*"
cepa = "1.8.3"
+gevent-websocket = "^0.10.1"
[tool.poetry.dev-dependencies]
pytest = "*"
diff --git a/cli/tests/conftest.py b/cli/tests/conftest.py
index 37b929ec..f4d51f9d 100644
--- a/cli/tests/conftest.py
+++ b/cli/tests/conftest.py
@@ -37,7 +37,7 @@ def temp_dir():
"""Creates a persistent temporary directory for the CLI tests to use"""
global test_temp_dir
if not test_temp_dir:
- test_temp_dir = tempfile.mkdtemp()
+ test_temp_dir = tempfile.TemporaryDirectory()
return test_temp_dir
@@ -47,10 +47,9 @@ def temp_dir_1024(temp_dir):
particular size (1024 bytes).
"""
- new_temp_dir = tempfile.mkdtemp(dir=temp_dir)
- tmp_file, tmp_file_path = tempfile.mkstemp(dir=new_temp_dir)
- with open(tmp_file, "wb") as f:
- f.write(b"*" * 1024)
+ new_temp_dir = tempfile.TemporaryDirectory(dir=temp_dir.name)
+ tmp_file = tempfile.NamedTemporaryFile(dir=new_temp_dir.name)
+ tmp_file.write(b"*" * 1024)
return new_temp_dir
@@ -61,9 +60,8 @@ def temp_dir_1024_delete(temp_dir):
the file inside) will be deleted after fixture usage.
"""
- with tempfile.TemporaryDirectory(dir=temp_dir) as new_temp_dir:
- tmp_file, tmp_file_path = tempfile.mkstemp(dir=new_temp_dir)
- with open(tmp_file, "wb") as f:
+ with tempfile.TemporaryDirectory(dir=temp_dir.name) as new_temp_dir:
+ with open(os.path.join(new_temp_dir, "file"), "wb") as f:
f.write(b"*" * 1024)
yield new_temp_dir
@@ -72,9 +70,10 @@ def temp_dir_1024_delete(temp_dir):
def temp_file_1024(temp_dir):
"""Create a temporary file of a particular size (1024 bytes)."""
- with tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) as tmp_file:
- tmp_file.write(b"*" * 1024)
- return tmp_file.name
+ filename = os.path.join(temp_dir.name, "file")
+ with open(filename, "wb") as f:
+ f.write(b"*" * 1024)
+ return filename
@pytest.fixture
@@ -84,11 +83,11 @@ def temp_file_1024_delete(temp_dir):
The temporary file will be deleted after fixture usage.
"""
- with tempfile.NamedTemporaryFile(dir=temp_dir, delete=False) as tmp_file:
+ with tempfile.NamedTemporaryFile(dir=temp_dir.name, delete=False) as tmp_file:
tmp_file.write(b"*" * 1024)
tmp_file.flush()
tmp_file.close()
- yield tmp_file.name
+ yield tmp_file
@pytest.fixture(scope="session")
diff --git a/cli/tests/test_cli_settings.py b/cli/tests/test_cli_settings.py
index 9513b013..f370a674 100644
--- a/cli/tests/test_cli_settings.py
+++ b/cli/tests/test_cli_settings.py
@@ -34,6 +34,7 @@ class TestSettings:
"bridges_builtin_pt": "obfs4",
"bridges_moat": "",
"bridges_custom": "",
+ "bridges_builtin": {},
"persistent_tabs": [],
"theme": 0,
}
@@ -54,7 +55,7 @@ class TestSettings:
"socks_port": 9999,
"use_stealth": True,
}
- tmp_file, tmp_file_path = tempfile.mkstemp(dir=temp_dir)
+ tmp_file, tmp_file_path = tempfile.mkstemp(dir=temp_dir.name)
with open(tmp_file, "w") as f:
json.dump(custom_settings, f)
settings_obj.filename = tmp_file_path
@@ -69,7 +70,7 @@ class TestSettings:
def test_save(self, monkeypatch, temp_dir, settings_obj):
settings_filename = "default_settings.json"
- new_temp_dir = tempfile.mkdtemp(dir=temp_dir)
+ new_temp_dir = tempfile.mkdtemp(dir=temp_dir.name)
settings_path = os.path.join(new_temp_dir, settings_filename)
settings_obj.filename = settings_path
settings_obj.save()
diff --git a/cli/tests/test_cli_web.py b/cli/tests/test_cli_web.py
index 71bfeeeb..e93e3e33 100644
--- a/cli/tests/test_cli_web.py
+++ b/cli/tests/test_cli_web.py
@@ -50,7 +50,8 @@ def web_obj(temp_dir, common_obj, mode, num_files=0):
web = Web(common_obj, False, mode_settings, mode)
web.running = True
- web.cleanup_filenames == []
+ web.cleanup_tempfiles == []
+ web.cleanup_tempdirs == []
web.app.testing = True
# Share mode
@@ -58,7 +59,9 @@ def web_obj(temp_dir, common_obj, mode, num_files=0):
# Add files
files = []
for _ in range(num_files):
- with tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) as tmp_file:
+ with tempfile.NamedTemporaryFile(
+ delete=False, dir=temp_dir.name
+ ) as tmp_file:
tmp_file.write(b"*" * 1024)
files.append(tmp_file.name)
web.share_mode.set_file_info(files)
@@ -131,7 +134,9 @@ class TestWeb:
with web.app.test_client() as c:
# Load / with valid auth
- res = c.get("/",)
+ res = c.get(
+ "/",
+ )
res.get_data()
assert res.status_code == 200
@@ -169,7 +174,7 @@ class TestWeb:
def test_receive_mode_message_no_files(self, temp_dir, common_obj):
web = web_obj(temp_dir, common_obj, "receive")
- data_dir = os.path.join(temp_dir, "OnionShare")
+ data_dir = os.path.join(temp_dir.name, "OnionShare")
os.makedirs(data_dir, exist_ok=True)
web.settings.set("receive", "data_dir", data_dir)
@@ -200,7 +205,7 @@ class TestWeb:
def test_receive_mode_message_and_files(self, temp_dir, common_obj):
web = web_obj(temp_dir, common_obj, "receive")
- data_dir = os.path.join(temp_dir, "OnionShare")
+ data_dir = os.path.join(temp_dir.name, "OnionShare")
os.makedirs(data_dir, exist_ok=True)
web.settings.set("receive", "data_dir", data_dir)
@@ -235,7 +240,7 @@ class TestWeb:
def test_receive_mode_files_no_message(self, temp_dir, common_obj):
web = web_obj(temp_dir, common_obj, "receive")
- data_dir = os.path.join(temp_dir, "OnionShare")
+ data_dir = os.path.join(temp_dir.name, "OnionShare")
os.makedirs(data_dir, exist_ok=True)
web.settings.set("receive", "data_dir", data_dir)
@@ -267,7 +272,7 @@ class TestWeb:
def test_receive_mode_no_message_no_files(self, temp_dir, common_obj):
web = web_obj(temp_dir, common_obj, "receive")
- data_dir = os.path.join(temp_dir, "OnionShare")
+ data_dir = os.path.join(temp_dir.name, "OnionShare")
os.makedirs(data_dir, exist_ok=True)
web.settings.set("receive", "data_dir", data_dir)
@@ -300,15 +305,21 @@ class TestWeb:
res.get_data()
assert res.status_code == 200
- def test_cleanup(self, common_obj, temp_dir_1024, temp_file_1024):
+ def test_cleanup(self, common_obj, temp_dir_1024):
web = web_obj(temp_dir_1024, common_obj, "share", 3)
- web.cleanup_filenames = [temp_dir_1024, temp_file_1024]
+ temp_file = tempfile.NamedTemporaryFile()
+ temp_dir = tempfile.TemporaryDirectory()
+
+ web.cleanup_tempfiles = [temp_file]
+ web.cleanup_tempdirs = [temp_dir]
web.cleanup()
- assert os.path.exists(temp_file_1024) is False
- assert os.path.exists(temp_dir_1024) is False
- assert web.cleanup_filenames == []
+ assert os.path.exists(temp_file.name) is False
+ assert os.path.exists(temp_dir.name) is False
+
+ assert web.cleanup_tempfiles == []
+ assert web.cleanup_tempdirs == []
class TestZipWriterDefault:
@@ -339,8 +350,10 @@ class TestZipWriterDefault:
assert default_zw.processed_size_callback(None) is None
def test_add_file(self, default_zw, temp_file_1024_delete):
- default_zw.add_file(temp_file_1024_delete)
- zipfile_info = default_zw.z.getinfo(os.path.basename(temp_file_1024_delete))
+ default_zw.add_file(temp_file_1024_delete.name)
+ zipfile_info = default_zw.z.getinfo(
+ os.path.basename(temp_file_1024_delete.name)
+ )
assert zipfile_info.compress_type == zipfile.ZIP_DEFLATED
assert zipfile_info.file_size == 1024
@@ -568,7 +581,6 @@ class TestRangeRequests:
resp = client.get(url, headers=headers)
assert resp.status_code == 206
-
@pytest.mark.skipif(sys.platform != "linux", reason="requires Linux")
@check_unsupported("curl", ["--version"])
def test_curl(self, temp_dir, tmpdir, common_obj):
diff --git a/desktop/README.md b/desktop/README.md
index 7f13ad70..1578f956 100644
--- a/desktop/README.md
+++ b/desktop/README.md
@@ -9,135 +9,83 @@ git clone https://github.com/onionshare/onionshare.git
cd onionshare/desktop
```
+Make sure you have Python 3 installed. If you're using Windows or macOS, install version 3.9.9 [from python.org](https://www.python.org/downloads/release/python-399/). For Windows, make sure to install the 32-bit (x86) version, and to check the box to add python to the path on the first page of the installer.
+
+Make sure you have [poetry installed](https://python-poetry.org/docs/#installation), and then install the dependencies:
+
+```sh
+poetry install
+```
+
### Install platform-specific dependencies
#### Linux
In Ubuntu 20.04 you need the `libxcb-xinerama0` package installed.
-Install python dependencies:
-
-```sh
-pip3 install --user poetry requests
-```
-
Download Tor Browser and extract the binaries:
```sh
-./scripts/get-tor-linux.py
+poetry run ./scripts/get-tor-linux.py
```
#### macOS
-Download and install Python 3.8.6 from https://www.python.org/downloads/release/python-386/. I downloaded `python-3.8.6-macosx10.9.pkg`. (You may need to also run `/Applications/Python\ 3.8/Install\ Certificates.command`.)
-
-Install python dependencies:
-
-```sh
-pip3 install --user poetry requests
-```
-
Download Tor Browser and extract the binaries:
```sh
-./scripts/get-tor-osx.py
+poetry run ./scripts/get-tor-osx.py
```
#### Windows
These instructions include adding folders to the path in Windows. To do this, go to Start and type "advanced system settings", and open "View advanced system settings" in the Control Panel. Click Environment Variables. Under "System variables" double-click on Path. From there you can add and remove folders that are available in the PATH.
-Download Python 3.8.6, 32-bit (x86) from https://www.python.org/downloads/release/python-386/. I downloaded `python-3.8.6.exe`. When installing it, make sure to check the "Add Python 3.8 to PATH" checkbox on the first page of the installer.
-
-Download and install 7-Zip from http://www.7-zip.org/download.html. I downloaded `7z1900.exe`. Add `C:\Program Files (x86)\7-Zip` to your path.
-
-Install python dependencies:
-
-```
-pip install poetry requests
-```
+Download and install 7-Zip from https://7-zip.org/download.html. I downloaded `7z1900.exe`. Add `C:\Program Files (x86)\7-Zip` to your path.
Download Tor Browser and extract the binaries:
-```
-python scripts\get-tor-windows.py
+```sh
+poetry run python scripts\get-tor-windows.py
```
### Compile dependencies
-Install Go. The simplest way to make sure everything works is to install Go by following [these instructions](https://golang.org/doc/install). (In Windows, make sure to install the 32-bit version of Go, such as `go1.17.3.windows-386.msi`.)
+Install Go. The simplest way to make sure everything works is to install Go by following [these instructions](https://golang.org/doc/install). (In Windows, make sure to install the 32-bit version of Go, such as `go1.17.5.windows-386.msi`.)
Download and compile `meek-client`:
-```
-./scripts/build-meek-client.py
-```
-
-### Prepare the virtual environment
-
-OnionShare uses [Briefcase](https://briefcase.readthedocs.io/en/latest/).
-
-Install Briefcase dependencies by following [these instructions](https://docs.beeware.org/en/latest/tutorial/tutorial-0.html#install-dependencies).
-
-Now create and/or activate a virtual environment.
-
-* Linux and macOS
- ```
- python3 -m venv venv
- . venv/bin/activate
- ```
-* Windows
- ```
- python -m venv venv
- venv\Scripts\activate.bat
- ```
-
-While your virtual environment is active, install briefcase from pip.
-
-```
-pip install briefcase
-```
-
-In order to work with the desktop app, you'll need to build a wheel of the CLI package first, and copy it into the `desktop` folder. You'll need to re-run this script each time you change the CLI code.
-
```sh
-python scripts/rebuild-cli.py
+./scripts/build-meek-client.py
```
### Running OnionShare from the source code tree
-Inside the virtual environment, run OnionShare like this to install all of the dependencies:
+To run OnionShare from the source tree:
-```
-briefcase dev -d
+```sh
+poetry run onionshare
+poetry run onionshare --help
+poetry run onionshare -v
+poetry run onionshare -v --local-only
```
-Once you have the dependencies installed, you can run it using the `dev.sh` script, which lets you use command line arguments, such as to `--verbose` or `--local-only`:
+You can also run `onionshare-cli` from the source tree, and it will look for Tor binaries in `desktop/onionshare/resources/tor`.
-```
-./scripts/dev.sh --help
-./scripts/dev.sh -v
-./scripts/dev.sh -v --local-only
+```sh
+poetry run onionshare-cli --help
```
-Windows uses `scripts\dev.bat` instead.
-
## Running tests
-Install these packages inside your virtual environment:
-
-```sh
-pip install pytest pytest-briefcase pytest-faulthandler pytest-qt
-```
-
-Then run the tests:
+Run the tests:
```sh
-./tests/run.sh
+poetry run ./tests/run.sh
```
If you want to run tests while hiding the GUI, you must have the `xvfb` package installed, and then:
```sh
-xvfb-run ./tests/run.sh
+xvfb-run poetry run ./tests/run.sh
```
diff --git a/desktop/src/onionshare/__init__.py b/desktop/onionshare/__init__.py
index 40a91913..40a91913 100644
--- a/desktop/src/onionshare/__init__.py
+++ b/desktop/onionshare/__init__.py
diff --git a/desktop/src/onionshare/__main__.py b/desktop/onionshare/__main__.py
index 3a7f3554..3a7f3554 100644
--- a/desktop/src/onionshare/__main__.py
+++ b/desktop/onionshare/__main__.py
diff --git a/desktop/src/onionshare/gui_common.py b/desktop/onionshare/gui_common.py
index d0ad249b..2a0bae4d 100644
--- a/desktop/src/onionshare/gui_common.py
+++ b/desktop/onionshare/gui_common.py
@@ -507,5 +507,4 @@ class GuiCommon:
return strings._("error_stealth_not_supported")
elif type(e) is PortNotAvailable:
return strings._("error_port_not_available")
-
return None
diff --git a/desktop/src/onionshare/main_window.py b/desktop/onionshare/main_window.py
index 546592a1..6e5cd61d 100644
--- a/desktop/src/onionshare/main_window.py
+++ b/desktop/onionshare/main_window.py
@@ -163,6 +163,7 @@ class MainWindow(QtWidgets.QMainWindow):
# Start the "Connecting to Tor" dialog, which calls onion.connect()
tor_con = TorConnectionDialog(self.common)
tor_con.canceled.connect(self.tor_connection_canceled)
+ tor_con.success.connect(self.tabs.tor_is_connected)
tor_con.open_tor_settings.connect(self.tor_connection_open_tor_settings)
if not self.common.gui.local_only:
tor_con.start()
diff --git a/desktop/src/onionshare/moat_dialog.py b/desktop/onionshare/moat_dialog.py
index 84a52390..84a52390 100644
--- a/desktop/src/onionshare/moat_dialog.py
+++ b/desktop/onionshare/moat_dialog.py
diff --git a/desktop/src/onionshare/resources/__init__.py b/desktop/onionshare/resources/__init__.py
index e69de29b..e69de29b 100644
--- a/desktop/src/onionshare/resources/__init__.py
+++ b/desktop/onionshare/resources/__init__.py
diff --git a/desktop/src/onionshare/resources/images/close_tab.png b/desktop/onionshare/resources/images/close_tab.png
index a7984a6d..a7984a6d 100644
--- a/desktop/src/onionshare/resources/images/close_tab.png
+++ b/desktop/onionshare/resources/images/close_tab.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_icon-add.png b/desktop/onionshare/resources/images/dark_icon-add.png
index 5b8600c9..5b8600c9 100644
--- a/desktop/src/onionshare/resources/images/dark_icon-add.png
+++ b/desktop/onionshare/resources/images/dark_icon-add.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_icon-close.png b/desktop/onionshare/resources/images/dark_icon-close.png
index b9efb45d..b9efb45d 100644
--- a/desktop/src/onionshare/resources/images/dark_icon-close.png
+++ b/desktop/onionshare/resources/images/dark_icon-close.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_logo_text.png b/desktop/onionshare/resources/images/dark_logo_text.png
index 6568ee0d..6568ee0d 100644
--- a/desktop/src/onionshare/resources/images/dark_logo_text.png
+++ b/desktop/onionshare/resources/images/dark_logo_text.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_chat.png b/desktop/onionshare/resources/images/dark_mode_chat.png
index fe58d384..fe58d384 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_chat.png
+++ b/desktop/onionshare/resources/images/dark_mode_chat.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_new_tab_chat.png b/desktop/onionshare/resources/images/dark_mode_new_tab_chat.png
index e496a63a..e496a63a 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_new_tab_chat.png
+++ b/desktop/onionshare/resources/images/dark_mode_new_tab_chat.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_new_tab_receive.png b/desktop/onionshare/resources/images/dark_mode_new_tab_receive.png
index 6912ff24..6912ff24 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_new_tab_receive.png
+++ b/desktop/onionshare/resources/images/dark_mode_new_tab_receive.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_new_tab_share.png b/desktop/onionshare/resources/images/dark_mode_new_tab_share.png
index 3d8ae81f..3d8ae81f 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_new_tab_share.png
+++ b/desktop/onionshare/resources/images/dark_mode_new_tab_share.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_new_tab_website.png b/desktop/onionshare/resources/images/dark_mode_new_tab_website.png
index 5eef2a2e..5eef2a2e 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_new_tab_website.png
+++ b/desktop/onionshare/resources/images/dark_mode_new_tab_website.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_receive.png b/desktop/onionshare/resources/images/dark_mode_receive.png
index 60795631..60795631 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_receive.png
+++ b/desktop/onionshare/resources/images/dark_mode_receive.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_share.png b/desktop/onionshare/resources/images/dark_mode_share.png
index b6ea7202..b6ea7202 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_share.png
+++ b/desktop/onionshare/resources/images/dark_mode_share.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_mode_website.png b/desktop/onionshare/resources/images/dark_mode_website.png
index 52bae58c..52bae58c 100644
--- a/desktop/src/onionshare/resources/images/dark_mode_website.png
+++ b/desktop/onionshare/resources/images/dark_mode_website.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_settings.png b/desktop/onionshare/resources/images/dark_settings.png
index 8bb96f8a..8bb96f8a 100644
--- a/desktop/src/onionshare/resources/images/dark_settings.png
+++ b/desktop/onionshare/resources/images/dark_settings.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/dark_tor_settings.png b/desktop/onionshare/resources/images/dark_tor_settings.png
index 0b44bd95..0b44bd95 100644
--- a/desktop/src/onionshare/resources/images/dark_tor_settings.png
+++ b/desktop/onionshare/resources/images/dark_tor_settings.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/file_delete.png b/desktop/onionshare/resources/images/file_delete.png
index b9057df5..b9057df5 100644
--- a/desktop/src/onionshare/resources/images/file_delete.png
+++ b/desktop/onionshare/resources/images/file_delete.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_completed.png b/desktop/onionshare/resources/images/history_completed.png
index e68fe5a2..e68fe5a2 100644
--- a/desktop/src/onionshare/resources/images/history_completed.png
+++ b/desktop/onionshare/resources/images/history_completed.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_completed_none.png b/desktop/onionshare/resources/images/history_completed_none.png
index 8dbd6939..8dbd6939 100644
--- a/desktop/src/onionshare/resources/images/history_completed_none.png
+++ b/desktop/onionshare/resources/images/history_completed_none.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_in_progress.png b/desktop/onionshare/resources/images/history_in_progress.png
index 19694659..19694659 100644
--- a/desktop/src/onionshare/resources/images/history_in_progress.png
+++ b/desktop/onionshare/resources/images/history_in_progress.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_in_progress_none.png b/desktop/onionshare/resources/images/history_in_progress_none.png
index 2d61dba4..2d61dba4 100644
--- a/desktop/src/onionshare/resources/images/history_in_progress_none.png
+++ b/desktop/onionshare/resources/images/history_in_progress_none.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_requests.png b/desktop/onionshare/resources/images/history_requests.png
index 4965744d..4965744d 100644
--- a/desktop/src/onionshare/resources/images/history_requests.png
+++ b/desktop/onionshare/resources/images/history_requests.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/history_requests_none.png b/desktop/onionshare/resources/images/history_requests_none.png
index 93a71ef3..93a71ef3 100644
--- a/desktop/src/onionshare/resources/images/history_requests_none.png
+++ b/desktop/onionshare/resources/images/history_requests_none.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/info.png b/desktop/onionshare/resources/images/info.png
index 4be4e65e..4be4e65e 100644
--- a/desktop/src/onionshare/resources/images/info.png
+++ b/desktop/onionshare/resources/images/info.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_logo_text.png b/desktop/onionshare/resources/images/light_logo_text.png
index 4b05d0b2..4b05d0b2 100644
--- a/desktop/src/onionshare/resources/images/light_logo_text.png
+++ b/desktop/onionshare/resources/images/light_logo_text.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_chat.png b/desktop/onionshare/resources/images/light_mode_chat.png
index cd3a4432..cd3a4432 100644
--- a/desktop/src/onionshare/resources/images/light_mode_chat.png
+++ b/desktop/onionshare/resources/images/light_mode_chat.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_new_tab_chat.png b/desktop/onionshare/resources/images/light_mode_new_tab_chat.png
index ec1e29cb..ec1e29cb 100644
--- a/desktop/src/onionshare/resources/images/light_mode_new_tab_chat.png
+++ b/desktop/onionshare/resources/images/light_mode_new_tab_chat.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_new_tab_receive.png b/desktop/onionshare/resources/images/light_mode_new_tab_receive.png
index 722fe3df..722fe3df 100644
--- a/desktop/src/onionshare/resources/images/light_mode_new_tab_receive.png
+++ b/desktop/onionshare/resources/images/light_mode_new_tab_receive.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_new_tab_share.png b/desktop/onionshare/resources/images/light_mode_new_tab_share.png
index 17569fc2..17569fc2 100644
--- a/desktop/src/onionshare/resources/images/light_mode_new_tab_share.png
+++ b/desktop/onionshare/resources/images/light_mode_new_tab_share.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_new_tab_website.png b/desktop/onionshare/resources/images/light_mode_new_tab_website.png
index e88f344e..e88f344e 100644
--- a/desktop/src/onionshare/resources/images/light_mode_new_tab_website.png
+++ b/desktop/onionshare/resources/images/light_mode_new_tab_website.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_receive.png b/desktop/onionshare/resources/images/light_mode_receive.png
index 277ec487..277ec487 100644
--- a/desktop/src/onionshare/resources/images/light_mode_receive.png
+++ b/desktop/onionshare/resources/images/light_mode_receive.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_share.png b/desktop/onionshare/resources/images/light_mode_share.png
index 2339f69f..2339f69f 100644
--- a/desktop/src/onionshare/resources/images/light_mode_share.png
+++ b/desktop/onionshare/resources/images/light_mode_share.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_mode_website.png b/desktop/onionshare/resources/images/light_mode_website.png
index 56e492a3..56e492a3 100644
--- a/desktop/src/onionshare/resources/images/light_mode_website.png
+++ b/desktop/onionshare/resources/images/light_mode_website.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_settings.png b/desktop/onionshare/resources/images/light_settings.png
index b6f8fa55..b6f8fa55 100644
--- a/desktop/src/onionshare/resources/images/light_settings.png
+++ b/desktop/onionshare/resources/images/light_settings.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/light_tor_settings.png b/desktop/onionshare/resources/images/light_tor_settings.png
index e8db08eb..e8db08eb 100644
--- a/desktop/src/onionshare/resources/images/light_tor_settings.png
+++ b/desktop/onionshare/resources/images/light_tor_settings.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/logo.png b/desktop/onionshare/resources/images/logo.png
index 43884c1f..43884c1f 100644
--- a/desktop/src/onionshare/resources/images/logo.png
+++ b/desktop/onionshare/resources/images/logo.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/logo_grayscale.png b/desktop/onionshare/resources/images/logo_grayscale.png
index 950d9ff6..950d9ff6 100644
--- a/desktop/src/onionshare/resources/images/logo_grayscale.png
+++ b/desktop/onionshare/resources/images/logo_grayscale.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/logo_transparent.png b/desktop/onionshare/resources/images/logo_transparent.png
index 1e8ed196..1e8ed196 100644
--- a/desktop/src/onionshare/resources/images/logo_transparent.png
+++ b/desktop/onionshare/resources/images/logo_transparent.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/mode_chat.svg b/desktop/onionshare/resources/images/mode_chat.svg
index 335e9cf4..335e9cf4 100644
--- a/desktop/src/onionshare/resources/images/mode_chat.svg
+++ b/desktop/onionshare/resources/images/mode_chat.svg
diff --git a/desktop/src/onionshare/resources/images/mode_receive.svg b/desktop/onionshare/resources/images/mode_receive.svg
index 5a0a29fd..5a0a29fd 100644
--- a/desktop/src/onionshare/resources/images/mode_receive.svg
+++ b/desktop/onionshare/resources/images/mode_receive.svg
diff --git a/desktop/src/onionshare/resources/images/mode_share.svg b/desktop/onionshare/resources/images/mode_share.svg
index 9fb97c65..9fb97c65 100644
--- a/desktop/src/onionshare/resources/images/mode_share.svg
+++ b/desktop/onionshare/resources/images/mode_share.svg
diff --git a/desktop/src/onionshare/resources/images/mode_website.svg b/desktop/onionshare/resources/images/mode_website.svg
index 1a80846f..1a80846f 100644
--- a/desktop/src/onionshare/resources/images/mode_website.svg
+++ b/desktop/onionshare/resources/images/mode_website.svg
diff --git a/desktop/src/onionshare/resources/images/open_folder.png b/desktop/onionshare/resources/images/open_folder.png
index 0a734c41..0a734c41 100644
--- a/desktop/src/onionshare/resources/images/open_folder.png
+++ b/desktop/onionshare/resources/images/open_folder.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/open_message.png b/desktop/onionshare/resources/images/open_message.png
index 6712ecf9..6712ecf9 100644
--- a/desktop/src/onionshare/resources/images/open_message.png
+++ b/desktop/onionshare/resources/images/open_message.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/persistent_enabled.png b/desktop/onionshare/resources/images/persistent_enabled.png
index 6c295db5..6c295db5 100644
--- a/desktop/src/onionshare/resources/images/persistent_enabled.png
+++ b/desktop/onionshare/resources/images/persistent_enabled.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/receive_icon_toggle.png b/desktop/onionshare/resources/images/receive_icon_toggle.png
index 846ececb..846ececb 100644
--- a/desktop/src/onionshare/resources/images/receive_icon_toggle.png
+++ b/desktop/onionshare/resources/images/receive_icon_toggle.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/receive_icon_toggle_selected.png b/desktop/onionshare/resources/images/receive_icon_toggle_selected.png
index 127ce208..127ce208 100644
--- a/desktop/src/onionshare/resources/images/receive_icon_toggle_selected.png
+++ b/desktop/onionshare/resources/images/receive_icon_toggle_selected.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/receive_icon_transparent.png b/desktop/onionshare/resources/images/receive_icon_transparent.png
index 99207097..99207097 100644
--- a/desktop/src/onionshare/resources/images/receive_icon_transparent.png
+++ b/desktop/onionshare/resources/images/receive_icon_transparent.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/server_started.png b/desktop/onionshare/resources/images/server_started.png
index 9c0c3176..9c0c3176 100644
--- a/desktop/src/onionshare/resources/images/server_started.png
+++ b/desktop/onionshare/resources/images/server_started.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/server_stopped.png b/desktop/onionshare/resources/images/server_stopped.png
index 5c5b2ec0..5c5b2ec0 100644
--- a/desktop/src/onionshare/resources/images/server_stopped.png
+++ b/desktop/onionshare/resources/images/server_stopped.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/server_working.png b/desktop/onionshare/resources/images/server_working.png
index e5c8b318..e5c8b318 100644
--- a/desktop/src/onionshare/resources/images/server_working.png
+++ b/desktop/onionshare/resources/images/server_working.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/share_icon_toggle.png b/desktop/onionshare/resources/images/share_icon_toggle.png
index 87303c9f..87303c9f 100644
--- a/desktop/src/onionshare/resources/images/share_icon_toggle.png
+++ b/desktop/onionshare/resources/images/share_icon_toggle.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/share_icon_toggle_selected.png b/desktop/onionshare/resources/images/share_icon_toggle_selected.png
index 0ba52cff..0ba52cff 100644
--- a/desktop/src/onionshare/resources/images/share_icon_toggle_selected.png
+++ b/desktop/onionshare/resources/images/share_icon_toggle_selected.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/images/share_icon_transparent.png b/desktop/onionshare/resources/images/share_icon_transparent.png
index 3648c3fb..3648c3fb 100644
--- a/desktop/src/onionshare/resources/images/share_icon_transparent.png
+++ b/desktop/onionshare/resources/images/share_icon_transparent.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/locale/af.json b/desktop/onionshare/resources/locale/af.json
index 6a7219bd..6a7219bd 100644
--- a/desktop/src/onionshare/resources/locale/af.json
+++ b/desktop/onionshare/resources/locale/af.json
diff --git a/desktop/src/onionshare/resources/locale/am.json b/desktop/onionshare/resources/locale/am.json
index 9a93c31f..9a93c31f 100644
--- a/desktop/src/onionshare/resources/locale/am.json
+++ b/desktop/onionshare/resources/locale/am.json
diff --git a/desktop/src/onionshare/resources/locale/ar.json b/desktop/onionshare/resources/locale/ar.json
index eaf26a4c..eaf26a4c 100644
--- a/desktop/src/onionshare/resources/locale/ar.json
+++ b/desktop/onionshare/resources/locale/ar.json
diff --git a/desktop/src/onionshare/resources/locale/bg.json b/desktop/onionshare/resources/locale/bg.json
index 76feab06..76feab06 100644
--- a/desktop/src/onionshare/resources/locale/bg.json
+++ b/desktop/onionshare/resources/locale/bg.json
diff --git a/desktop/src/onionshare/resources/locale/bn.json b/desktop/onionshare/resources/locale/bn.json
index a156afb3..a156afb3 100644
--- a/desktop/src/onionshare/resources/locale/bn.json
+++ b/desktop/onionshare/resources/locale/bn.json
diff --git a/desktop/src/onionshare/resources/locale/ca.json b/desktop/onionshare/resources/locale/ca.json
index 132c764a..132c764a 100644
--- a/desktop/src/onionshare/resources/locale/ca.json
+++ b/desktop/onionshare/resources/locale/ca.json
diff --git a/desktop/src/onionshare/resources/locale/ckb.json b/desktop/onionshare/resources/locale/ckb.json
index 68122adb..68122adb 100644
--- a/desktop/src/onionshare/resources/locale/ckb.json
+++ b/desktop/onionshare/resources/locale/ckb.json
diff --git a/desktop/src/onionshare/resources/locale/cs.json b/desktop/onionshare/resources/locale/cs.json
index 901f6439..901f6439 100644
--- a/desktop/src/onionshare/resources/locale/cs.json
+++ b/desktop/onionshare/resources/locale/cs.json
diff --git a/desktop/src/onionshare/resources/locale/da.json b/desktop/onionshare/resources/locale/da.json
index 57ff605a..57ff605a 100644
--- a/desktop/src/onionshare/resources/locale/da.json
+++ b/desktop/onionshare/resources/locale/da.json
diff --git a/desktop/src/onionshare/resources/locale/de.json b/desktop/onionshare/resources/locale/de.json
index 3c505678..04cce9e3 100644
--- a/desktop/src/onionshare/resources/locale/de.json
+++ b/desktop/onionshare/resources/locale/de.json
@@ -101,9 +101,9 @@
"gui_settings_connection_type_automatic_option": "Versuche automatische Konfiguration mittels Tor Browser",
"gui_settings_connection_type_test_button": "Verbindung zu Tor testen",
"gui_settings_authenticate_label": "Authentifizierungseinstellungen für Tor",
- "gui_settings_tor_bridges": "Unterstützung für Tor-Bridges",
- "gui_settings_meek_lite_expensive_warning": "Achtung: Die „meek_lite“-Bridges sind für das Tor-Projekt sehr kostspielig.<br><br> Nutze sie nur, wenn du dich nicht direkt, per obfs4-Transport oder über andere, normale Bridges zum Tor-Netzwerk verbinden kannst.",
- "gui_settings_tor_bridges_invalid": "Keine der ausgewählten Bridges funktioniert.\nÜberprüfe sie oder gib andere an.",
+ "gui_settings_tor_bridges": "Mittels einer Tor-Bridge verbinden?",
+ "gui_settings_meek_lite_expensive_warning": "Achtung: Die „meek-azure“-Bridges sind für das Tor-Projekt sehr kostspielig.<br><br> Nutze sie nur, wenn du dich nicht direkt, per obfs4-Transport oder über andere, normale Bridges zum Tor-Netzwerk verbinden kannst.",
+ "gui_settings_tor_bridges_invalid": "Keine der ausgewählten Bridges funktioniert. Überprüfe sie oder gib andere an.",
"settings_error_unknown": "Kann nicht zum Tor-Controller verbinden, weil deine Einstellungen keinen Sinn ergeben.",
"settings_error_automatic": "Kann nicht zum Tor-Controller verbinden. Läuft der Tor Browser (kann von https://www.torproject.org/ heruntergeladen werden) im Hintergrund?",
"settings_error_socket_port": "Kann unter {}:{} nicht zum Tor-Controller verbinden.",
@@ -162,7 +162,7 @@
"gui_upload_in_progress": "Upload gestartet {}",
"gui_download_in_progress": "Download gestartet {}",
"gui_open_folder_error_nautilus": "Kann den Ordner nicht öffnen, weil Nautilus nicht verfügbar ist. Die Datei ist hier: {}",
- "gui_settings_language_label": "Bevorzugte Sprache",
+ "gui_settings_language_label": "Sprache",
"gui_settings_language_changed_notice": "Starte OnionShare neu, damit die neue Sprache übernommen wird.",
"help_config": "Ort deiner eigenen JSON Konfigurationsdatei (optional)",
"timeout_upload_still_running": "Warte bis Upload vollständig ist",
@@ -316,5 +316,30 @@
"gui_qr_label_url_title": "OnionShare-Adresse",
"gui_copied_client_auth": "Privater Schlüssel in die Zwischenablage kopiert",
"gui_copied_client_auth_title": "Privater Schlüssel kopiert",
- "gui_copy_client_auth": "Privaten Schlüssel kopieren"
+ "gui_copy_client_auth": "Privaten Schlüssel kopieren",
+ "gui_dragdrop_sandbox_flatpak": "Um die Flatpak Sandbox sicherer zu machen, wird Drag und Drop nicht unterstützt. Bitte nutze stattdessen die Buttons \"Dateien hinzufügen\" und \"Ordner hinzufügen\".",
+ "gui_tor_settings_window_title": "Tor Einstellungen",
+ "gui_settings_controller_extras_label": "Tor Einstellungen",
+ "gui_settings_bridge_use_checkbox": "Benutze eine Brigde",
+ "gui_settings_bridge_radio_builtin": "Wähle eine eingebaute Bridge",
+ "gui_settings_bridge_none_radio_option": "Keine Bridge verwenden",
+ "gui_settings_bridge_moat_button": "Neue Bridge verwenden",
+ "gui_settings_bridge_custom_placeholder": "Schreibe im Format adresse:port (eine pro Zeile)",
+ "gui_settings_moat_bridges_invalid": "Du hast noch keine Bridge von torproject.org angefragt.",
+ "gui_settings_stop_active_tabs_label": "Es laufen noch Services in deinen Tabs.\nDu musst alle Services beenden, bevor du die Tor Einstellungen ändern kannst.",
+ "gui_settings_version_label": "Du verwendest OnionShare {}",
+ "gui_settings_help_label": "Du benötigst Hilfe? Gehe zu <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Sende einen benutzerdefinierten Content Security Policy header",
+ "moat_contact_label": "Kontaktiere BridgeDB...",
+ "moat_captcha_label": "Löse das CAPTCHA um eine Bridge zu laden.",
+ "moat_captcha_placeholder": "Gib die Zeichen auf dem Bild ein",
+ "moat_captcha_submit": "Absenden",
+ "moat_captcha_reload": "Neu laden",
+ "moat_bridgedb_error": "Fehler beim kontaktieren der BridgeDB.",
+ "moat_captcha_error": "Die Lösung ist nicht korrekt. Bitte nochmal versuchen.",
+ "mode_tor_not_connected_label": "OnionShare ist nicht mit dem Tor Netzwerk verbunden",
+ "gui_settings_bridge_moat_radio_option": "Verwende eine Bridge von torproject.org",
+ "moat_solution_empty_error": "Du musst die Zeichen auf dem Bild eingeben",
+ "gui_settings_bridge_custom_radio_option": "Stelle eine Bridge aus einer dir bekannten vertraulichen Quelle bereit",
+ "gui_settings_tor_bridges_label": "Brigdes helfen dir das Tor Netzwerk an Orten zu verwenden, wo es blockiert wird. Je nachdem wo du bist, funktioniert eine Bridge besser als eine andere."
}
diff --git a/desktop/src/onionshare/resources/locale/el.json b/desktop/onionshare/resources/locale/el.json
index 41cbdf82..d47d92d2 100644
--- a/desktop/src/onionshare/resources/locale/el.json
+++ b/desktop/onionshare/resources/locale/el.json
@@ -90,16 +90,16 @@
"gui_settings_authenticate_no_auth_option": "Χωρίς επαλήθευση ή επαλήθευση με cookie",
"gui_settings_authenticate_password_option": "Κωδικός",
"gui_settings_password_label": "Κωδικός",
- "gui_settings_tor_bridges": "Υποστήριξη γεφυρών Tor",
+ "gui_settings_tor_bridges": "Σύνδεση με χρήση γέφυρας Tor;",
"gui_settings_tor_bridges_no_bridges_radio_option": "Να μη χρησιμοποιηθούν γέφυρες",
"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": "Προσοχή: Τα meek_lite bridges επιβαρύνουν πολύ το Tor Project στη λειτουργία. <br><br> Χρησιμοποιήστε τα μόνο αν δεν μπορείτε να συνδεθείτε κατ' ευθείαν στο Tor μέσω obfs4 transports ή άλλων κανονικών bridges.",
+ "gui_settings_meek_lite_expensive_warning": "Προσοχή: Οι γέφυρες meek_azure επιβαρύνουν τη λειτουργία του Tor Project. <br><br> Χρησιμοποιήστε τες μόνο αν δεν μπορείτε να συνδεθείτε κατ' ευθείαν στο Tor μέσω obfs4 transports ή άλλων κανονικών γεφυρών.",
"gui_settings_tor_bridges_custom_radio_option": "Χρήση παραμετροποιημένων γεφυρών",
"gui_settings_tor_bridges_custom_label": "Αποκτήστε γέφυρες στο <a href=\"https://bridges.torproject.org/options?lang=el\"> https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Δεν λειτούργησε κάποιο από τα bridges που προσθέσατε.\nΞαναελέγξτε τα ή προσθέστε άλλα.",
+ "gui_settings_tor_bridges_invalid": "Καμία γέφυρα που προσθέσατε δεν λειτουργεί. Ελέγξτε ξανά ή προσθέστε άλλες.",
"gui_settings_button_save": "Αποθήκευση",
"gui_settings_button_cancel": "Άκυρο",
"gui_settings_button_help": "Βοήθεια",
@@ -134,8 +134,8 @@
"gui_server_autostop_timer_expired": "Το χρονόμετρο αυτόματης διακοπής έχει ήδη τελειώσει. Παρακαλώ ρυθμίστε το για να ξεκινήσετε το διαμοιρασμό.",
"share_via_onionshare": "Μοιραστείτε μέσω OnionShare",
"gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης",
- "gui_share_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
- "gui_receive_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare, μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_share_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_receive_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
"gui_url_label_persistent": "Αυτή η σελίδα διαμοιρασμού δεν θα πάψει να λειτουργεί αυτόματα.<br><br>Όσοι μοιράζονται αρχεία μαζί σας θα μπορέσουν να ξαναχρησιμοποιήσουν αυτή τη διεύθυνση αργότερα. (Για να χρησιμοποιήσετε διευθύνσεις μιας χρήσης, απενεργοποιήστε τη λειτουργία \"Χρήση μόνιμης διεύθυνσης\" στις Ρυθμίσεις.)",
"gui_url_label_stay_open": "Αυτή η σελίδα διαμοιρασμού δεν θα πάψει να λειτουργεί αυτόματα.",
"gui_url_label_onetime": "Αυτός ο διαμοιρασμός θα σταματήσει μετά την πρώτη λήψη.",
@@ -178,7 +178,7 @@
"gui_upload_finished": "",
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "Δεν μπορεί να ανοιχτεί ο φάκελος γιατί το nautilus δεν είναι διαθέσιμο. Το αρχείο είναι εδω: {}",
- "gui_settings_language_label": "Προτιμώμενη γλώσσα",
+ "gui_settings_language_label": "Γλώσσα",
"gui_settings_language_changed_notice": "Επανεκκινήστε το OnionShare για να εφαρμοστεί η αλλαγή γλώσσας.",
"timeout_upload_still_running": "Αναμονή ολοκλήρωσης του ανεβάσματος",
"gui_add_files": "Προσθήκη αρχείων",
@@ -225,7 +225,7 @@
"hours_first_letter": "ώ",
"minutes_first_letter": "λ",
"seconds_first_letter": "δ",
- "gui_website_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί <b>να επισκεφτεί</b> την ιστοσελίδα χρησιμοποιώντας τον <b>Tor Browser</b>: <img src='{}' />",
+ "gui_website_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί <b>να επισκεφτεί</b> την ιστοσελίδα σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
"gui_mode_website_button": "Δημοσίευση ιστοσελίδας",
"gui_website_mode_no_files": "Δεν έχει γίνει διαμοιρασμός ιστοσελίδας ακόμα",
"incorrect_password": "Λάθος κωδικός",
@@ -237,14 +237,14 @@
"gui_receive_flatpak_data_dir": "Επειδή έχετε εγκαταστήσει το OnionShare μέσω Flatpak, θα πρέπει να αποθηκεύσετε τα αρχεία μέσα σε έναν φάκελο στο ~/OnionShare.",
"gui_chat_stop_server": "Τερματισμός διακομιστή συνομιλίας",
"gui_chat_start_server": "Έναρξη διακομιστή συνομιλίας",
- "mode_settings_website_disable_csp_checkbox": "Μην στέλνετε κεφαλίδα με περιεχόμενο από την πολιτικής ασφάλειας σας (επιτρέπει στην ιστοσελίδα σας να χρησιμοποιεί πόρους τρίτων)",
+ "mode_settings_website_disable_csp_checkbox": "Μην στέλνετε την προεπιλεγμένη κεφαλίδα Πολιτικής Ασφάλειας Περιεχομένου (επιτρέπει στην ιστοσελίδα σας να χρησιμοποιεί πόρους τρίτων)",
"mode_settings_receive_data_dir_browse_button": "Επιλογή",
"mode_settings_receive_data_dir_label": "Αποθήκευση αρχείων σε",
"mode_settings_share_autostop_sharing_checkbox": "Τερματισμός κοινής χρήσης με την ολοκλήρωση αρχείων (αποεπιλέξτε για λήψη μεμονωμένων αρχείων)",
"mode_settings_legacy_checkbox": "Χρήση παλαιάς διεύθυνσης (δεν προτείνεται η χρήση υπηρεσία v2 onion)",
"mode_settings_autostop_timer_checkbox": "Προγραμματισμένος τερματισμός",
"mode_settings_autostart_timer_checkbox": "Προγραμματισμένη εκκίνηση",
- "mode_settings_public_checkbox": "Χωρίς χρήση κωδικού πρόσβασης",
+ "mode_settings_public_checkbox": "Δημόσια υπηρεσία OnionShare (απενεργοποιεί το ιδιωτικό κλειδί)",
"mode_settings_persistent_checkbox": "Αποθήκευση της καρτέλας και αυτόματο άνοιγμά της με την έναρξη του OnionShare",
"mode_settings_advanced_toggle_hide": "Απόκρυψη προχωρημένων ρυθμίσεων",
"mode_settings_advanced_toggle_show": "Εμφάνιση προχωρημένων ρυθμίσεων",
@@ -279,7 +279,7 @@
"error_port_not_available": "Η θύρα OnionShare δεν είναι διαθέσιμη",
"gui_rendezvous_cleanup_quit_early": "Πρόωρη έξοδος",
"gui_rendezvous_cleanup": "Αναμονή για τερματισμό των κυκλωμάτων του Tor για να βεβαιωθείτε ότι τα αρχεία σας έχουν μεταφερθεί με επιτυχία.\n\nΑυτό μπορεί να διαρκέσει λίγα λεπτά.",
- "gui_chat_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση του OnionShare μπορεί <b>να συμμετέχει στο δωμάτιο συνομιλίας</b> με χρήση του <b>Tor Browser</b>: <img src='{}' />",
+ "gui_chat_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>συμμετέχει στο δωμάτιο συνομιλίας</b> χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
"gui_color_mode_changed_notice": "Επανεκκινήστε το OnionShare για εφαρμοστεί το νέο χρώμα.",
"history_receive_read_message_button": "Ανάγνωση μηνύματος",
"mode_settings_receive_webhook_url_checkbox": "Χρήση ειδοποίησης webhook",
@@ -289,5 +289,50 @@
"gui_status_indicator_chat_started": "Σε συνομιλία",
"gui_status_indicator_chat_scheduled": "Δρομολόγηση…",
"gui_status_indicator_chat_working": "Εκκίνηση…",
- "gui_status_indicator_chat_stopped": "Έτοιμο για συνομιλία"
+ "gui_status_indicator_chat_stopped": "Έτοιμο για συνομιλία",
+ "gui_copied_client_auth_title": "Το ιδιωτικό κλειδί αντιγράφηκε",
+ "gui_qr_label_url_title": "Διεύθυνση OnionShare",
+ "gui_reveal": "Εμφάνιση",
+ "gui_hide": "Απόκρυψη",
+ "gui_share_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_website_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί <b>να επισκεφθεί</b> την ιστοσελίδα σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_chat_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>συμμετέχει στο δωμάτιο συνομιλίας</b> χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_url_instructions_public_mode": "Στείλτε την παρακάτω διεύθυνση OnionShare:",
+ "gui_settings_theme_label": "Θέμα",
+ "gui_copy_client_auth": "Αντιγραφή ιδιωτικού κλειδιού",
+ "gui_copied_client_auth": "Το ιδιωτικό κλειδί αντιγράφηκε στο πρόχειρο",
+ "gui_qr_label_auth_string_title": "Ιδιωτικό κλειδί",
+ "gui_please_wait_no_button": "Εκκίνηση…",
+ "gui_server_doesnt_support_stealth": "Αυτή η έκδοση Tor, δεν υποστηρίζει το stealth (πιστοποίηση πελάτη). Παρακαλούμε δοκιμάστε με μια νεότερη έκδοση του Tor ή χρησιμοποιήστε τη λειτουργία 'δημόσιο' αν δεν χρειάζεται να είναι ιδιωτική.",
+ "gui_receive_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας, χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
+ "gui_settings_theme_auto": "Αυτόματο",
+ "gui_settings_theme_dark": "Σκοτεινό",
+ "gui_url_instructions": "Αρχικά, στείλτε την παρακάτω διεύθυνση OnionShare:",
+ "gui_settings_theme_light": "Φωτεινό",
+ "gui_client_auth_instructions": "Στη συνέχεια, στείλτε το ιδιωτικό κλειδί για πρόσβαση στην υπηρεσία OnionShare:",
+ "gui_dragdrop_sandbox_flatpak": "Για να γίνει πιο ασφαλές το sandbox του Flatpak, δεν υποστηρίζεται η μεταφορά και απόθεση. Χρησιμοποιήστε τα κουμπιά Προσθήκη αρχείων και Προσθήκη φακέλου για να αναζητήσετε αρχεία.",
+ "moat_captcha_label": "Λύστε το CAPTCHA για να αιτηθείτε μια γέφυρα.",
+ "gui_settings_tor_bridges_label": "Οι γέφυρες σας βοηθούν να αποκτήσετε πρόσβαση στο δίκτυο Tor σε τοποθεσίες όπου είναι αποκλεισμένο. Ανάλογα με το πού βρίσκεστε, μια γέφυρα μπορεί να λειτουργεί καλύτερα από μια άλλη.",
+ "moat_captcha_submit": "Υποβολή",
+ "moat_solution_empty_error": "Πρέπει να εισαγάγετε τους χαρακτήρες από την εικόνα",
+ "moat_contact_label": "Επικοινωνία με BridgeDB...",
+ "gui_tor_settings_window_title": "Ρυθμίσεις Tor",
+ "gui_settings_controller_extras_label": "Ρυθμίσεις Tor",
+ "gui_settings_bridge_use_checkbox": "Χρήση γέφυρας",
+ "gui_settings_bridge_radio_builtin": "Επιλέξτε μια ενσωματωμένη γέφυρα",
+ "gui_settings_bridge_none_radio_option": "Χωρίς χρήση γέφυρας",
+ "gui_settings_bridge_moat_radio_option": "Αιτηθείτε μια γέφυρα από torproject.org",
+ "gui_settings_bridge_moat_button": "Αίτημα για νέα γέφυρα",
+ "gui_settings_bridge_custom_radio_option": "Προτείνετε μια γέφυρα για την οποία ενημερωθήκατε από αξιόπιστη πηγή",
+ "gui_settings_bridge_custom_placeholder": "πληκτρολογήστε διεύθυνση: πόρτα (μια ανά γραμμή)",
+ "gui_settings_moat_bridges_invalid": "Δεν έχετε αιτηθεί ακόμα γέφυρα από το torproject.org.",
+ "gui_settings_stop_active_tabs_label": "Υπάρχουν υπηρεσίες που εκτελούνται σε ορισμένες από τις καρτέλες σας.\nΠρέπει να σταματήσετε όλες τις υπηρεσίες για να αλλάξετε τις ρυθμίσεις του Tor.",
+ "gui_settings_version_label": "Χρησιμοποιείτε το OnionShare {}",
+ "gui_settings_help_label": "Χρειάζεστε βοήθεια; Δείτε το <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Αποστολή προσαρμοσμένης κεφαλίδας Πολιτικής Ασφαλείας Περιεχομένου",
+ "moat_captcha_placeholder": "Εισαγάγετε τους χαρακτήρες από την εικόνα",
+ "moat_captcha_reload": "Επαναφόρτωση",
+ "moat_bridgedb_error": "Σφάλμα επικοινωνίας με BridgeDB.",
+ "moat_captcha_error": "Η λύση δεν είναι σωστή. Παρακαλούμε δοκιμάστε ξανά.",
+ "mode_tor_not_connected_label": "Το OnionShare δεν είναι συνδεδεμένο με το δίκτυο Tor"
}
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/onionshare/resources/locale/en.json
index f8c4cd2b..f8c4cd2b 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/onionshare/resources/locale/en.json
diff --git a/desktop/src/onionshare/resources/locale/enm.json b/desktop/onionshare/resources/locale/enm.json
index 7db75f7d..7db75f7d 100644
--- a/desktop/src/onionshare/resources/locale/enm.json
+++ b/desktop/onionshare/resources/locale/enm.json
diff --git a/desktop/src/onionshare/resources/locale/eo.json b/desktop/onionshare/resources/locale/eo.json
index 9f450275..9f450275 100644
--- a/desktop/src/onionshare/resources/locale/eo.json
+++ b/desktop/onionshare/resources/locale/eo.json
diff --git a/desktop/src/onionshare/resources/locale/es.json b/desktop/onionshare/resources/locale/es.json
index ecf53ae6..ed4cab2b 100644
--- a/desktop/src/onionshare/resources/locale/es.json
+++ b/desktop/onionshare/resources/locale/es.json
@@ -41,8 +41,8 @@
"gui_settings_connection_type_bundled_option": "Usa la versión de Tor incorporada en OnionShare",
"gui_settings_connection_type_automatic_option": "Intentar la configuración automática con el Navegador Tor",
"gui_settings_connection_type_test_button": "Probar la conexión a Tor",
- "gui_settings_tor_bridges": "Soporte para puentes Tor",
- "gui_settings_tor_bridges_invalid": "No funciona ninguno de los puentes agregados.\nVuelve a comprobarlos o añade otros.",
+ "gui_settings_tor_bridges": "¿Conectar usando un puente Tor?",
+ "gui_settings_tor_bridges_invalid": "No funciona ninguno de los puentes que agregaste. Vuelve a comprobarlos o añade otros.",
"settings_saved": "Ajustes guardados en {}",
"give_this_url_receive": "Dele esta dirección al remitente:",
"give_this_url_receive_stealth": "Entrega esta dirección y HidServAuth al remitente:",
@@ -143,7 +143,7 @@
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Usar transportes conectables obfs4 incorporados (requiere obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Usar transportes conectables incorporados meek_lite (Azure)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Usar transportes conectables meek_lite (Azure) incorporados (requiere obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Advertencia: Los puentes meek_lite son muy costosos de correr para el Proyecto Tor.<br><br>Utilízalos solo si no puedes conectarte a Tor directamente, a través de transportes obfs4 u otros puentes normales.",
+ "gui_settings_meek_lite_expensive_warning": "Advertencia: Los puentes meek-azure son muy costosos de mantener para el Proyecto Tor.<br><br>Utilízalos solo si no puedes conectarte a Tor directamente, a través de transportes obfs4 u otros puentes normales.",
"gui_settings_tor_bridges_custom_radio_option": "Usar puentes personalizados",
"gui_settings_tor_bridges_custom_label": "Puedes obtener puentes en <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
"gui_settings_button_save": "Guardar",
@@ -177,7 +177,7 @@
"gui_upload_finished": "Subido {}",
"gui_download_in_progress": "Descarga iniciada {}",
"gui_open_folder_error_nautilus": "No se puede abrir la carpeta porque nautilus no está disponible. El archivo está aquí: {}",
- "gui_settings_language_label": "Idioma preferido",
+ "gui_settings_language_label": "Idioma",
"gui_settings_language_changed_notice": "Reinicia OnionShare para que se aplique el idioma nuevo.",
"gui_upload_finished_range": "Cargado {} a {}",
"timeout_upload_still_running": "Esperando a que se complete la subida",
@@ -265,7 +265,7 @@
"gui_new_tab_tooltip": "Abrir una pestaña nueva",
"gui_new_tab": "Nueva pestaña",
"gui_new_tab_share_description": "Elige los archivos de tu ordenador para enviarlos a otra persona. La persona o personas a las que quieras enviar los archivos tendrán que usar el Tor Browser para descargarlos de ti.",
- "mode_settings_website_disable_csp_checkbox": "No enviar encabezado de Política de Seguridad de Contenido (permite que tu sitio web utilice recursos de terceros)",
+ "mode_settings_website_disable_csp_checkbox": "No enviar encabezado predeterminado de Política de Seguridad de Contenido (permite que tu sitio web utilice recursos de terceros)",
"mode_settings_receive_data_dir_browse_button": "Navegar",
"mode_settings_receive_data_dir_label": "Guardar archivos en",
"mode_settings_share_autostop_sharing_checkbox": "Dejar de compartir después de haber enviado archivos (desmarcar para permitir la descarga de archivos individuales)",
@@ -321,5 +321,30 @@
"gui_settings_theme_dark": "Oscuro",
"gui_settings_theme_light": "Claro",
"gui_settings_theme_auto": "Automático",
- "gui_url_instructions_public_mode": "Envíe la siguiente dirección de OnionShare:"
+ "gui_url_instructions_public_mode": "Envíe la siguiente dirección de OnionShare:",
+ "gui_dragdrop_sandbox_flatpak": "Para hacer que la zona de prueba de Flatpak sea más segura, arrastrar y colocar no es soportado. En vez, usa los botones Agregar Archivos y Agregar Carpeta para navegar entre archivos.",
+ "gui_tor_settings_window_title": "Configuraciones de Tor",
+ "gui_settings_controller_extras_label": "Configuraciones de Tor",
+ "gui_settings_tor_bridges_label": "Los puentes te ayudan a acceder a la red Tor en lugares donde Tor está bloqueado. Dependiendo de dónde estés, un puente podría funcionar mejor que otro.",
+ "gui_settings_bridge_use_checkbox": "Usar un puente",
+ "gui_settings_bridge_radio_builtin": "Seleccionar un puente incorporado",
+ "gui_settings_bridge_none_radio_option": "No usar un puente",
+ "gui_settings_bridge_moat_radio_option": "Solicita un puente desde torproject.org",
+ "gui_settings_bridge_moat_button": "Solicitar un Nuevo Puente",
+ "gui_settings_bridge_custom_radio_option": "Provee un puente del que te enteraste a través de una fuente confiable",
+ "gui_settings_bridge_custom_placeholder": "tipea dirección:puerto (una por línea)",
+ "gui_settings_moat_bridges_invalid": "Aún no has solicitado un puente desde torproject.org.",
+ "gui_settings_stop_active_tabs_label": "Estos son servicios ejecutándose en algunas de tus pestañas.\nDebes detenerlos a todos para cambiar tus configuraciones de Tor.",
+ "gui_settings_version_label": "Estás usando OnionShare {}",
+ "gui_settings_help_label": "¿Necesitas ayuda? Mira <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Enviar un encabezado personaizado de Política de Seguridad de Contenido",
+ "moat_contact_label": "Contactando BridgeDB...",
+ "moat_captcha_label": "Resuelve el CAPTCHA para solicitar un puente.",
+ "moat_captcha_placeholder": "Ingresa los caracteres en la imagen",
+ "moat_captcha_submit": "Enviar",
+ "moat_captcha_reload": "Recargar",
+ "moat_bridgedb_error": "Error contactando BridgeDB.",
+ "moat_captcha_error": "La solución no es correcta. Por favor, inténtalo de nuevo.",
+ "moat_solution_empty_error": "Debes ingresar los caracteres en la imagen",
+ "mode_tor_not_connected_label": "OnionShare no está conectado a la red Tor"
}
diff --git a/desktop/src/onionshare/resources/locale/fa.json b/desktop/onionshare/resources/locale/fa.json
index 2c27c998..2c27c998 100644
--- a/desktop/src/onionshare/resources/locale/fa.json
+++ b/desktop/onionshare/resources/locale/fa.json
diff --git a/desktop/src/onionshare/resources/locale/fi.json b/desktop/onionshare/resources/locale/fi.json
index 37c28dac..37c28dac 100644
--- a/desktop/src/onionshare/resources/locale/fi.json
+++ b/desktop/onionshare/resources/locale/fi.json
diff --git a/desktop/src/onionshare/resources/locale/fr.json b/desktop/onionshare/resources/locale/fr.json
index 3bb2c838..21bd0bf4 100644
--- a/desktop/src/onionshare/resources/locale/fr.json
+++ b/desktop/onionshare/resources/locale/fr.json
@@ -80,10 +80,10 @@
"gui_settings_connection_type_test_button": "Tester la connexion à Tor",
"gui_settings_control_port_label": "Port de contrôle",
"gui_settings_authenticate_label": "Paramètres d’authentification de Tor",
- "gui_settings_tor_bridges": "Prise en charge des ponts de Tor",
+ "gui_settings_tor_bridges": "Se connecter en utilisant un pont Tor ?",
"gui_settings_tor_bridges_custom_radio_option": "Utiliser des ponts personnalisés",
"gui_settings_tor_bridges_custom_label": "Vous pouvez obtenir des ponts sur <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Aucun des ponts que vous avez ajoutés ne fonctionne.\nVérifiez-les de nouveau ou ajoutez-en d’autres.",
+ "gui_settings_tor_bridges_invalid": "Aucun des ponts que vous avez ajoutés ne fonctionne. Vérifiez-les de nouveau ou ajoutez-en d’autres.",
"settings_error_unknown": "Impossible de se connecter au contrôleur Tor, car vos paramètres sont incohérents.",
"settings_error_automatic": "Impossible de se connecter au contrôleur Tor. Le Navigateur Tor (téléchargeable sur torproject.org/fr) fonctionne-t-il en arrière-plan ?",
"settings_error_socket_port": "Impossible de se connecter au contrôleur Tor à {}:{}.",
@@ -104,8 +104,8 @@
"gui_tor_connection_lost": "Vous êtes déconnecté de Tor.",
"share_via_onionshare": "Partager avec OnionShare",
"gui_save_private_key_checkbox": "Utiliser une adresse persistante",
- "gui_share_url_description": "<b>Quiconque</b> possède cette adresse OnionShare peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
- "gui_receive_url_description": "<b>Quiconque</b> possède cette adresse OnionShare peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_share_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et cette clé privée peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_receive_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
"gui_url_label_persistent": "Ce partage ne s’arrêtera pas automatiquement.<br><br>Tout partage subséquent réutilisera l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Utiliser une adresse persistante » dans les paramètres.)",
"gui_url_label_stay_open": "Ce partage ne s’arrêtera pas automatiquement.",
"gui_url_label_onetime": "Ce partage s’arrêtera une fois que le premier téléchargement sera terminé.",
@@ -140,7 +140,7 @@
"gui_upload_finished": "{} envoyé",
"gui_download_in_progress": "Téléchargement démarré {}",
"gui_open_folder_error_nautilus": "Impossible d’ouvrir le dossier, car nautilus n’est pas disponible. Le fichier est ici : {}",
- "gui_settings_language_label": "Langue de choix",
+ "gui_settings_language_label": "Langue",
"help_stealth": "Utilisation de l’autorisation client (avancé)",
"help_receive": "Recevoir des partages au lieu de les envoyer",
"gui_receive_start_server": "Démarrer le mode réception",
@@ -153,7 +153,7 @@
"gui_settings_stealth_option": "Utiliser l’autorisation du client",
"timeout_upload_still_running": "En attente de la fin de l'envoi",
"gui_settings_autoupdate_check_button": "Vérifier la présence d’une nouvelle version",
- "settings_test_success": "Vous êtes connecté au contrôleur Tor.\n\nVersion de Tor : {}\nPrend en charge les services onion éphémères : {}.\nPrend en charge l’authentification client : {}.\nPrend en charge la nouvelle génération d’adresses .onion : {}.",
+ "settings_test_success": "Vous êtes connecté au contrôleur Tor.\n\nVersion de Tor : {}\nPrend en charge les services oignon éphémères : {}.\nPrend en charge l’authentification client : {}.\nPrend en charge la nouvelle génération d’adresses .onion : {}.",
"update_error_check_error": "Impossible de vérifier l’existence d’une mise à jour : peut-être n’êtes-vous pas connecté à Tor ou le site Web d’OnionShare est-il hors service ?",
"update_error_invalid_latest_version": "Impossible de vérifier la présence d’une mise à jour : le site Web d’OnionShare indique que la version la plus récente est la « {} » qui n’est pas reconnue…",
"gui_tor_connection_ask": "Ouvrir les paramètres pour résoudre le problème de connexion à Tor ?",
@@ -172,7 +172,7 @@
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utiliser les transports enfichables obfs4 intégrés (exige obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Utiliser les transports enfichables meek_lite (Azure) intégrés",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Utiliser les transports enfichables meek_lite (Azure) intégrés (exige obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Avertissement : L’exploitation de ponts meek_lite demande beaucoup de ressources au Projet Tor.<br><br>Ne les utilisez que si vous ne pouvez pas vous connecter directement à Tor par les transports obfs4 ou autres ponts normaux.",
+ "gui_settings_meek_lite_expensive_warning": "Avertissement : L’exploitation de ponts meek_azure demande beaucoup de ressources au Projet Tor.<br><br>Ne les utilisez que si vous ne pouvez pas vous connecter directement à Tor par les transports obfs4 ou autres ponts normaux.",
"gui_settings_autostop_timer_checkbox": "Utiliser une minuterie d’arrêt automatique",
"gui_server_started_after_autostop_timer": "La minuterie d’arrêt automatique est arrivée au bout de son délai avant le démarrage du serveur. Veuillez mettre en place un nouveau partage.",
"gui_server_autostop_timer_expired": "La minuterie d’arrêt automatique est déjà arrivée au bout de son délai. Veuillez la modifier pour commencer le partage.",
@@ -221,7 +221,7 @@
"hours_first_letter": "h",
"minutes_first_letter": "min",
"seconds_first_letter": "s",
- "gui_website_url_description": "<b>Quiconque</b> aura cette adresse OnionShare pourra <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_website_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
"systray_site_loaded_title": "Le site Web a été chargé",
"systray_site_loaded_message": "Le site Web OnionShare a été chargé",
"systray_website_started_title": "Début du partage du site Web",
@@ -247,12 +247,12 @@
"gui_close_tab_warning_persistent_description": "Cet onglet est persistant. Si vous le fermez, vous perdrez l’adresse onion qu’il utilise. Voulez-vous vraiment le fermer ?",
"mode_settings_autostop_timer_checkbox": "Arrêter un service onion à une heure prédéterminée",
"mode_settings_autostart_timer_checkbox": "Démarrer un service onion à une heure prédéterminée",
- "mode_settings_website_disable_csp_checkbox": "Ne pas envoyer d’en-tête Politique de sécurité de contenu (permet à votre site Web d’utiliser des ressources tierces)",
+ "mode_settings_website_disable_csp_checkbox": "Ne pas envoyer l’en-tête par défaut de Politique de sécurité de contenu (permet à votre site Web d’utiliser des ressources tierces)",
"mode_settings_receive_data_dir_browse_button": "Parcourir",
"mode_settings_receive_data_dir_label": "Enregistrer les fichiers dans",
"mode_settings_share_autostop_sharing_checkbox": "Cesser le partage une fois que les fichiers ont été envoyés (décocher afin de permettre le téléchargement de fichiers individuels)",
"mode_settings_legacy_checkbox": "Utiliser une ancienne adresse (service onion v2, non recommandée)",
- "mode_settings_public_checkbox": "Ne pas utiliser un mot de passe",
+ "mode_settings_public_checkbox": "Ce service OnionShare est public (il désactive la clé privée)",
"mode_settings_persistent_checkbox": "Enregistrer cet onglet et l’ouvrir automatiquement quand j’ouvre OnionShare",
"mode_settings_advanced_toggle_hide": "Cacher les paramètres avancés",
"mode_settings_advanced_toggle_show": "Afficher les paramètres avancés",
@@ -283,7 +283,7 @@
"gui_main_page_website_button": "Lancer l’hébergement",
"gui_main_page_receive_button": "Lancer la réception",
"gui_main_page_share_button": "Lancer le partage",
- "gui_chat_url_description": "Cette adresse OnionShare permet à <b>n’importe qui</b> de <b>se joindre à ce salon de discussion</b> avec le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_chat_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>se joindre à ce salon de discussion</b> avec le <b>Navigateur Tor</b> : <img src='{}' />",
"error_port_not_available": "Le port OnionShare n’est pas accessible",
"gui_rendezvous_cleanup_quit_early": "Fermer avant",
"gui_rendezvous_cleanup": "En attente de la fermeture des circuits Tor pour être certain que vos fichiers ont été transférés avec succès.\n\nCela pourrait prendre quelques minutes.",
@@ -296,5 +296,50 @@
"gui_status_indicator_chat_started": "En conversation",
"gui_status_indicator_chat_scheduled": "Planifié…",
"gui_status_indicator_chat_working": "Démarrage…",
- "gui_status_indicator_chat_stopped": "Prêt à dialoguer"
+ "gui_status_indicator_chat_stopped": "Prêt à dialoguer",
+ "gui_copied_client_auth_title": "La clé privée a été copiée",
+ "gui_please_wait_no_button": "Démarrage…",
+ "gui_copied_client_auth": "La clé privée a été copiée dans le presse-papiers",
+ "gui_qr_label_url_title": "Adresse OnionShare",
+ "gui_hide": "Cacher",
+ "gui_qr_label_auth_string_title": "Clé privée",
+ "gui_copy_client_auth": "Copier la clé privée",
+ "gui_share_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_url_instructions": "Envoyez d’abord l’adresse OnionShare ci-dessous :",
+ "gui_settings_theme_light": "Clair",
+ "gui_reveal": "Révéler",
+ "gui_chat_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>se joindre à ce salon de discussion</b> en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_url_instructions_public_mode": "Envoyez l’adresse OnionShare ci-dessous :",
+ "gui_settings_theme_label": "Thème",
+ "gui_settings_theme_auto": "Automatique",
+ "gui_settings_theme_dark": "Sombre",
+ "gui_website_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_server_doesnt_support_stealth": "Désolé, cette version de Tor ne prend pas en charge l’authentification client. Veuillez essayer avec une version plus récente de Tor ou utilisez le mode « public » si la confidentialité n’est pas nécessaire.",
+ "gui_receive_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
+ "gui_client_auth_instructions": "Envoyez ensuite la clé privée pour accorder l’accès à votre service OnionShare :",
+ "gui_dragdrop_sandbox_flatpak": "Afin de rendre la sandbox Flatpak plus sécurisée, le glisser-coller n'est pas pris en charge. Utilisez les boutons Ajouter des fichiers et Ajouter des dossiers pour chercher vos fichiers à la place.",
+ "moat_solution_empty_error": "Vous devez saisir les caractères présentés par l’image",
+ "gui_settings_stop_active_tabs_label": "Des services sont en cours d’exécution dans certains de vos onglets.\nVous devez arrêter tous les services pour changer vos paramètres de Tor.",
+ "moat_captcha_label": "Résolvez le CAPTCHA pour demander un pont.",
+ "gui_tor_settings_window_title": "Paramètres de Tor",
+ "gui_settings_controller_extras_label": "Paramètres de Tor",
+ "gui_settings_tor_bridges_label": "Les ponts vous aident à accéder au réseau Tor où Tor est bloqué. Selon l’endroit où vous êtes, un pont pourrait fonctionner mieux qu’un autre.",
+ "gui_settings_bridge_use_checkbox": "Utiliser un pont",
+ "gui_settings_bridge_radio_builtin": "Choisir un pont intégré",
+ "gui_settings_bridge_none_radio_option": "Ne pas utiliser de pont",
+ "gui_settings_bridge_moat_radio_option": "Demander un pont à torproject.org",
+ "gui_settings_bridge_moat_button": "Demander un nouveau pont",
+ "gui_settings_bridge_custom_radio_option": "Fournir un pont dont vous avez connaissance de source sûre",
+ "gui_settings_bridge_custom_placeholder": "écrire address:port (une par ligne)",
+ "gui_settings_moat_bridges_invalid": "Vous n'avez pas encore demandé un pont depuis torprohect.com.",
+ "gui_settings_version_label": "Vous utilisez OnionShare {}",
+ "gui_settings_help_label": "Besoin d’aide ? Consultez <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Envoyer en-tête de Politique de sécurité de contenu personnalisé",
+ "moat_contact_label": "Contact de BridgeDB…",
+ "moat_captcha_placeholder": "Saisissez les caractères de l’image",
+ "moat_captcha_submit": "Envoyer",
+ "moat_captcha_reload": "Recharger",
+ "moat_bridgedb_error": "Erreur lors du contact de BridgeDB.",
+ "moat_captcha_error": "La solution est erronée. Veuillez réessayer.",
+ "mode_tor_not_connected_label": "OnionShare n’est pas connecté au réseau Tor"
}
diff --git a/desktop/src/onionshare/resources/locale/ga.json b/desktop/onionshare/resources/locale/ga.json
index 7d8563a9..7d8563a9 100644
--- a/desktop/src/onionshare/resources/locale/ga.json
+++ b/desktop/onionshare/resources/locale/ga.json
diff --git a/desktop/src/onionshare/resources/locale/gl.json b/desktop/onionshare/resources/locale/gl.json
index c1734862..6600dd9b 100644
--- a/desktop/src/onionshare/resources/locale/gl.json
+++ b/desktop/onionshare/resources/locale/gl.json
@@ -51,16 +51,16 @@
"gui_settings_authenticate_no_auth_option": "Sen autenticación, ou autenticación por cookie",
"gui_settings_authenticate_password_option": "Contrasinal",
"gui_settings_password_label": "Contrasinal",
- "gui_settings_tor_bridges": "Soporte para ponte Tor",
+ "gui_settings_tor_bridges": "Conectar usando unha ponte Tor?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Non usar pontes",
"gui_settings_tor_bridges_obfs4_radio_option": "Utilizar transporte engadido obfs4 incluído",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utilizar transporte engadido obfs4 (require obfs4proxy) incluído",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Usar transporte engadido meek_lite (Azure) incluído",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Usar transporte engadido meek_lite (Azure) incluído (require obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Aviso: Ó Tor Project cóstalle moito executar pontes meek_lite.<br><br>Utilízao só se non podes conectar directamente con Tor, vía transporte obfs4 ou outras pontes habituais.",
+ "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure requiren moitos recursos do Proxecto Tor.<br><br>Utilízao só se non podes conectar directamente con Tor, vía transporte obfs4 ou outras pontes habituais.",
"gui_settings_tor_bridges_custom_radio_option": "Usar pontes personalizadas",
"gui_settings_tor_bridges_custom_label": "Podes obter pontes en <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Ningunha das pontes engadidas funciona\nCompróbaas ou engade outras.",
+ "gui_settings_tor_bridges_invalid": "Non funciona ningunha das pontes engadidas. Compróbaas ou engade outras.",
"gui_settings_button_save": "Gardar",
"gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Axuda",
@@ -105,7 +105,7 @@
"error_cannot_create_data_dir": "Non se puido crear o cartafol de datos OnionShare: {}",
"gui_receive_mode_warning": "O modo Recepción permite que outras poidan subir ficheiros á túa computadora.<br><br><b>Potencialmente algúns ficheiros poderían tomar control sobre a túa computadora ó abrilos. Abre só elementos que recibas de xente de confianza, ou se realmente sabes o que fas.</b>",
"gui_open_folder_error": "Fallou a apertura do cartafol con xdg-open. O ficheiro está aquí: {}",
- "gui_settings_language_label": "Idioma preferido",
+ "gui_settings_language_label": "Idioma",
"gui_settings_language_changed_notice": "Reinicia OnionShare para utilizar o idioma seleccionado.",
"systray_menu_exit": "Saír",
"systray_page_loaded_title": "Páxina cargada",
@@ -168,7 +168,7 @@
"mode_settings_share_autostop_sharing_checkbox": "Deixar de compartir unha vez enviado o ficheiro (desmarca para permitir a descarga de ficheiros individuais)",
"mode_settings_receive_data_dir_label": "Gardar ficheiros en",
"mode_settings_receive_data_dir_browse_button": "Navegar",
- "mode_settings_website_disable_csp_checkbox": "Non enviar cabeceira Content Security Policy (permite ó teu sitio web usar recursos de terceiros)",
+ "mode_settings_website_disable_csp_checkbox": "Non enviar cabeceira Content Security Policy (isto permite ao teu sitio web usar recursos de terceiros)",
"gui_all_modes_transfer_finished_range": "Transferido {} - {}",
"gui_all_modes_transfer_finished": "Transferido {}",
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
@@ -216,5 +216,30 @@
"gui_qr_label_url_title": "Enderezo OnionShare",
"gui_copied_client_auth": "Chave privada copiada ao portapapeis",
"gui_copied_client_auth_title": "Copiouse a chave privada",
- "gui_copy_client_auth": "Copiar Chave privada"
+ "gui_copy_client_auth": "Copiar Chave privada",
+ "gui_tor_settings_window_title": "Axustes Tor",
+ "gui_settings_controller_extras_label": "Axustes Tor",
+ "gui_settings_bridge_use_checkbox": "Usar unha ponte",
+ "gui_settings_bridge_radio_builtin": "Elixe unha ponte prestablecida",
+ "gui_settings_bridge_none_radio_option": "Non usar unha ponte",
+ "gui_settings_bridge_moat_radio_option": "Solicitar unha ponte a torproject.org",
+ "gui_settings_bridge_custom_radio_option": "Proporcionar unha ponte que coñeces e é da túa confianza",
+ "gui_settings_bridge_custom_placeholder": "escribe enderezo:porto (un por liña)",
+ "gui_settings_moat_bridges_invalid": "Aínda non solicitaches unha ponte a torproject.org",
+ "gui_settings_version_label": "Estás utilizando OnionShare {}",
+ "gui_settings_help_label": "Precisas axuda? Le <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "moat_captcha_label": "Completa o CAPTCHA para solicitar unha ponte.",
+ "moat_captcha_placeholder": "Escribe os caracteres da imaxe",
+ "moat_captcha_submit": "Enviar",
+ "moat_captcha_reload": "Recargar",
+ "moat_bridgedb_error": "Fallou a conexión a BridgeDB.",
+ "moat_captcha_error": "A solución non é correcta. Inténtao outra vez.",
+ "moat_solution_empty_error": "Debes escribir os caracteres que aparecen na imaxe",
+ "mode_tor_not_connected_label": "OnionShare non está conectado á rede Tor",
+ "gui_dragdrop_sandbox_flatpak": "Para facer aínda máis segura a instancia Flatpak, non hai soporte para arrastrar e soltar. Usa o botón Engadir Ficheiros e Engadir Cartafol para buscar ficheiros.",
+ "gui_settings_bridge_moat_button": "Solicitar Nova Ponte",
+ "gui_settings_stop_active_tabs_label": "Hai servizos en execución nalgunha das túas lapelas.\nDebes deter tódolos servizo para cambiar os axustes Tor.",
+ "mode_settings_website_custom_csp_checkbox": "Envía cabeceira Content Security Policy personalizada",
+ "gui_settings_tor_bridges_label": "As Pontes axúdanche a acceder á Rede Tor en lugares onde Tor está bloqueada. Dependendo de onde estés unha ponte podería funcionar mellor que outras.",
+ "moat_contact_label": "Contactando BridgeDB..."
}
diff --git a/desktop/src/onionshare/resources/locale/gu.json b/desktop/onionshare/resources/locale/gu.json
index 313f17d8..313f17d8 100644
--- a/desktop/src/onionshare/resources/locale/gu.json
+++ b/desktop/onionshare/resources/locale/gu.json
diff --git a/desktop/src/onionshare/resources/locale/he.json b/desktop/onionshare/resources/locale/he.json
index ee941304..ee941304 100644
--- a/desktop/src/onionshare/resources/locale/he.json
+++ b/desktop/onionshare/resources/locale/he.json
diff --git a/desktop/src/onionshare/resources/locale/hi.json b/desktop/onionshare/resources/locale/hi.json
index 4d2ff6e5..4d2ff6e5 100644
--- a/desktop/src/onionshare/resources/locale/hi.json
+++ b/desktop/onionshare/resources/locale/hi.json
diff --git a/desktop/src/onionshare/resources/locale/hr.json b/desktop/onionshare/resources/locale/hr.json
index 39df94fa..39df94fa 100644
--- a/desktop/src/onionshare/resources/locale/hr.json
+++ b/desktop/onionshare/resources/locale/hr.json
diff --git a/desktop/src/onionshare/resources/locale/hu.json b/desktop/onionshare/resources/locale/hu.json
index 3a725427..3a725427 100644
--- a/desktop/src/onionshare/resources/locale/hu.json
+++ b/desktop/onionshare/resources/locale/hu.json
diff --git a/desktop/src/onionshare/resources/locale/id.json b/desktop/onionshare/resources/locale/id.json
index 36b8c41a..7cdb5993 100644
--- a/desktop/src/onionshare/resources/locale/id.json
+++ b/desktop/onionshare/resources/locale/id.json
@@ -274,5 +274,7 @@
"gui_status_indicator_chat_started": "Mengobrol",
"gui_status_indicator_chat_scheduled": "Menjadwalkan…",
"gui_status_indicator_chat_working": "Memulai…",
- "gui_status_indicator_chat_stopped": "Siap untuk mengobrol"
+ "gui_status_indicator_chat_stopped": "Siap untuk mengobrol",
+ "gui_copied_client_auth_title": "Kunci Pribadi Disalin",
+ "gui_copy_client_auth": "Salin Kunci Pribadi"
}
diff --git a/desktop/src/onionshare/resources/locale/is.json b/desktop/onionshare/resources/locale/is.json
index 8ae1b696..a1c2b9af 100644
--- a/desktop/src/onionshare/resources/locale/is.json
+++ b/desktop/onionshare/resources/locale/is.json
@@ -86,16 +86,16 @@
"gui_settings_authenticate_no_auth_option": "Engin auðkenning eða auðkenning með vefköku",
"gui_settings_authenticate_password_option": "Lykilorð",
"gui_settings_password_label": "Lykilorð",
- "gui_settings_tor_bridges": "Stuðningur við Tor-brýr",
+ "gui_settings_tor_bridges": "Tengjast með Tor-brú?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Ekki nota brýr",
"gui_settings_tor_bridges_obfs4_radio_option": "Nota innbyggðar obfs4 'pluggable transport' tengileiðir",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Nota innbyggðar obfs4 'pluggable transport' tengileiðir (þarfnast obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Nota innbyggðar meek_lite (Azure) 'pluggable transport' tengileiðir",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Nota innbyggðar meek_lite (Azure) 'pluggable transport' tengileiðir (þarfnast obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Aðvörun: Að reka meek_lite brýrnar er kostnaðarsamt fyrir Tor-verkefnið.<br><br>Ekki nota þær nema þér takist ekki að tengjast beint við Tor, með obfs4 tengileið, eða öðrum venjulegum brúm.",
+ "gui_settings_meek_lite_expensive_warning": "Aðvörun: Að reka meek_azure brýrnar er kostnaðarsamt fyrir Tor-verkefnið.<br><br>Ekki nota þær nema þér takist ekki að tengjast beint við Tor, með obfs4 tengileið, eða öðrum venjulegum brúm.",
"gui_settings_tor_bridges_custom_radio_option": "Nota sérsniðnar brýr",
"gui_settings_tor_bridges_custom_label": "Þú getur náð í brýr frá <a href=\"https://bridges.torproject.org/options?lang=is\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Engar af brúnum sem þú bættir við virka.\nYfirfarðu þær eða bættu öðrum við.",
+ "gui_settings_tor_bridges_invalid": "Engar af brúnum sem þú bættir við virka. Yfirfarðu þær eða bættu öðrum við.",
"gui_settings_button_save": "Vista",
"gui_settings_button_cancel": "Hætta við",
"gui_settings_button_help": "Hjálp",
@@ -173,7 +173,7 @@
"gui_upload_finished": "",
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "Get ekki opnað möppu því nautilus er ekki til taks. Skráin er hér: {}",
- "gui_settings_language_label": "Umbeðið tungumál",
+ "gui_settings_language_label": "Tungumál",
"gui_settings_language_changed_notice": "Þú þarft að endurræsa OnionShare til að nýtt tungumál taki gildi.",
"gui_add_files": "Bæta við skrám",
"gui_add_folder": "Bæta við möppu",
@@ -234,7 +234,7 @@
"gui_close_tab_warning_persistent_description": "Þessi flipi er viðvarandi. Ef þú lokar honum muntu tapa onion-vistfanginu sem hann er að nota. Ertu viss að þú viljir loka honum?",
"gui_quit_warning_description": "Deiling er virk í sumum flipanna þinna. Ef þú hættir núna, lokast allir fliparnir. Ertu viss um að þú viljir hætta?",
"mode_settings_share_autostop_sharing_checkbox": "Hætta að deila eftir að skrár hafa verið sendar (taka merkið úr reitnum til að leyfa niðurhal á stökum skrám)",
- "mode_settings_website_disable_csp_checkbox": "Gera haus fyrir öryggisstefnu efnis (Content Security Policy) óvirkan (gerir vefsvæðinu þínu kleift að nota tilföng frá utanaðkomandi aðilum)",
+ "mode_settings_website_disable_csp_checkbox": "Gera sjálfgefinn haus fyrir öryggisstefnu efnis (Content Security Policy) óvirkan (gerir vefsvæðinu þínu kleift að nota tilföng frá utanaðkomandi aðilum)",
"gui_close_tab_warning_share_description": "Þú ert að senda skrár. Ertu viss um að þú viljir loka þessum flipa?",
"mode_settings_legacy_checkbox": "Nota eldri gerð vistfangs (onion-þjónusta af útgáfu 2, ekki mælt með því)",
"gui_close_tab_warning_website_description": "Þú ert að hýsa vefsvæði. Ertu viss um að þú viljir loka þessum flipa?",
@@ -309,5 +309,30 @@
"gui_qr_label_url_title": "OnionShare-vistfang",
"gui_copied_client_auth": "Einkalykill afritaður á klippispjald",
"gui_copied_client_auth_title": "Afritaði einkalykil",
- "gui_copy_client_auth": "Afrita einkalykil"
+ "gui_copy_client_auth": "Afrita einkalykil",
+ "gui_tor_settings_window_title": "Stillingar Tor",
+ "gui_settings_controller_extras_label": "Stillingar Tor",
+ "gui_settings_bridge_use_checkbox": "Nota brú",
+ "gui_settings_bridge_radio_builtin": "Velja innbyggða brú",
+ "gui_settings_bridge_none_radio_option": "Ekki nota brú",
+ "gui_settings_tor_bridges_label": "Brýr hjálpa þér við að tengjast Tor-netinu þar sem lokað er á Tor. Það fer eftir því hvar þú ert hvaða brýr virka best, ein brú getur virkað betur en aðrar.",
+ "mode_settings_website_custom_csp_checkbox": "Senda sérsniðinn haus fyrir öryggisstefnu efnis (Content Security Policy)",
+ "moat_captcha_submit": "Senda inn",
+ "gui_settings_bridge_moat_radio_option": "Biðja um brú frá torproject.org",
+ "gui_settings_bridge_moat_button": "Biðja um nýja brú",
+ "gui_settings_bridge_custom_radio_option": "Settu inn brúna sem þú heyrðir um hjá áreiðanlegum aðila",
+ "gui_settings_bridge_custom_placeholder": "skrifaðu vistfang:gátt (eitt á hverja línu)",
+ "gui_settings_moat_bridges_invalid": "Þú hefur ekki ennþá beðið um brú frá torproject.org.",
+ "gui_settings_stop_active_tabs_label": "Það eru þjónustur að keyra í sumum flipanna þinna.\nÞú þarft að stöðva allar þjónustur til að breyta Tor-stillingunum þínum.",
+ "gui_settings_version_label": "Þú ert að nota OnionShare {}",
+ "gui_settings_help_label": "Þarftu aðstoð? Skoðaðu <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "moat_captcha_error": "Þetta er ekki rétt, reyndu aftur.",
+ "moat_contact_label": "Hef samband við brúagagnagrunn...",
+ "moat_captcha_label": "Leystu CAPTCHA-þraut til að biðja um brýr.",
+ "moat_captcha_placeholder": "Settu inn stafina úr myndinni",
+ "moat_solution_empty_error": "Þú verður að setja inn stafina úr myndinni",
+ "moat_captcha_reload": "Endurhlaða",
+ "moat_bridgedb_error": "Villa við að tengjast brúagagnagrunni.",
+ "mode_tor_not_connected_label": "OnionShare er ekki tengt við Tor-netið",
+ "gui_dragdrop_sandbox_flatpak": "Til að auka öryggi Flatpak sandkassans, er draga/sleppa ekki stutt. Notaðu frekar hnappana til að bæta við skrám og möppum."
}
diff --git a/desktop/src/onionshare/resources/locale/it.json b/desktop/onionshare/resources/locale/it.json
index 9063f0f0..9063f0f0 100644
--- a/desktop/src/onionshare/resources/locale/it.json
+++ b/desktop/onionshare/resources/locale/it.json
diff --git a/desktop/src/onionshare/resources/locale/ja.json b/desktop/onionshare/resources/locale/ja.json
index e842d026..5290ea63 100644
--- a/desktop/src/onionshare/resources/locale/ja.json
+++ b/desktop/onionshare/resources/locale/ja.json
@@ -89,16 +89,16 @@
"gui_settings_authenticate_no_auth_option": "認証なし、それともクッキー認証",
"gui_settings_authenticate_password_option": "パスワード",
"gui_settings_password_label": "パスワード",
- "gui_settings_tor_bridges": "Torブリッジサポート",
+ "gui_settings_tor_bridges": "Torブリッジを利用して接続しますか?",
"gui_settings_tor_bridges_no_bridges_radio_option": "ブリッジを使用しない",
"gui_settings_tor_bridges_obfs4_radio_option": "組み込みのobs4 pluggable transportを使用する",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "組み込みのobs4 pluggable transportを使用する(obsf4proxy必要)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "組み込みのmeek_lite (Azure) pluggable transportを使用する",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "組み込みのmeek_lite (Azure) pluggable transportを使用する(obsf4proxy必要)",
- "gui_settings_meek_lite_expensive_warning": "警告:meek_liteブリッジはTor Projectにとって維持費がかさむ<br><br>直接にTorと接続できない場合、あるいはobsf4ブリッジや他のブリッジが使用できない場合のみに使って下さい。",
+ "gui_settings_meek_lite_expensive_warning": "警告:meek-azureブリッジはTor Projectにとって維持費がかさむ<br><br>直接にTorと接続できない場合、あるいはobsf4ブリッジや他のブリッジが使用できない場合のみに使って下さい。",
"gui_settings_tor_bridges_custom_radio_option": "カスタムブリッジを使用する",
"gui_settings_tor_bridges_custom_label": "<a href=\"https://bridges.torproject.org/options?lang=ja\">https://bridges.torproject.org</a>からブリッジを入手できます",
- "gui_settings_tor_bridges_invalid": "全ての追加したブリッジは機能しませんでした。\n再確認して、あるいは他のを追加して下さい。",
+ "gui_settings_tor_bridges_invalid": "全ての追加したブリッジは機能しませんでした。再確認して、あるいは他のを追加して下さい。",
"gui_settings_button_save": "保存",
"gui_settings_button_cancel": "キャンセル",
"gui_settings_button_help": "ヘルプ",
@@ -177,7 +177,7 @@
"gui_upload_finished": "{}をアップロードしました",
"gui_download_in_progress": "ダウンロード開始しました {}",
"gui_open_folder_error_nautilus": "nautilusを利用できないためフォルダーを開けません。ファイルはここに保存されました: {}",
- "gui_settings_language_label": "優先言語",
+ "gui_settings_language_label": "言語",
"gui_settings_language_changed_notice": "新しい言語設定を適用するにはOnionShareを再起動して下さい。",
"error_cannot_create_data_dir": "OnionShareのデータフォルダーを作成できませんでした: {}",
"receive_mode_data_dir": "受信されるファイルをこのフォルダーにあります: {}",
@@ -228,7 +228,7 @@
"history_requests_tooltip": "{} ウェブリクエスト",
"gui_settings_csp_header_disabled_option": "コンテンツセキュリティポリシーヘッダーを無効にする",
"gui_settings_website_label": "ウェブサイト設定",
- "mode_settings_website_disable_csp_checkbox": "コンテンツセキュリティポリシーのヘッダーを送らない(ウェブサイトにはサードパーティーのリソースを可能にします)",
+ "mode_settings_website_disable_csp_checkbox": "デフォルトのコンテンツセキュリティポリシーヘッダーを送らない(ウェブサイトにはサードパーティーのリソースを可能にします)",
"mode_settings_receive_data_dir_browse_button": "閲覧",
"mode_settings_receive_data_dir_label": "保存するファイルの位置",
"mode_settings_share_autostop_sharing_checkbox": "ファイル送信が終了したら共有を停止(個別ファイルのダウンロードを許可するにはチェックマークを消す)",
@@ -305,5 +305,30 @@
"gui_qr_label_url_title": "OnionShareアドレス",
"gui_copied_client_auth": "秘密鍵をクリップボードにコピーしました",
"gui_copied_client_auth_title": "秘密鍵をコピーしました",
- "gui_copy_client_auth": "秘密鍵をコピーする"
+ "gui_copy_client_auth": "秘密鍵をコピーする",
+ "gui_tor_settings_window_title": "Tor設定",
+ "gui_settings_controller_extras_label": "Tor設定",
+ "gui_settings_bridge_use_checkbox": "ブリッジを利用する",
+ "gui_settings_bridge_radio_builtin": "組み込みブリッジを選択",
+ "gui_settings_bridge_moat_radio_option": "torproject.orgからブリッジを要求する",
+ "gui_settings_bridge_custom_radio_option": "信頼できる筋からもらったブリッジを提供する",
+ "gui_settings_bridge_custom_placeholder": "「アドレス:ポート番号」を入力する(行内ごと1つ)",
+ "gui_settings_moat_bridges_invalid": "まだtorproject.orgからブリッジを要求していません。",
+ "gui_settings_version_label": "OnionShare {}を使っています",
+ "gui_settings_help_label": "サポートが必要ですか? <a href='https://docs.onionshare.org'>docs.onionshare.org</a>を訪れて下さい",
+ "mode_settings_website_custom_csp_checkbox": "カスタムなコンテンツセキュリティポリシーヘッダーを送る",
+ "moat_contact_label": "BridgeDBと接続中…",
+ "moat_captcha_label": "ブリッジを要求するのにCAPTCHAを解決して下さい。",
+ "moat_captcha_placeholder": "イメージにある文字を入力して下さい",
+ "moat_captcha_submit": "提出する",
+ "moat_captcha_reload": "リロード",
+ "moat_bridgedb_error": "BridgeDB接続にエラーが生じました。",
+ "moat_captcha_error": "間違った解答です。もう一度試して下さい。",
+ "moat_solution_empty_error": "イメージからの文字を入力しなければなりません",
+ "mode_tor_not_connected_label": "OnionShareはTorネットワークと接続されていません",
+ "gui_dragdrop_sandbox_flatpak": "Flatpakサンドボックスの安全性を確保するため、ドラッグ・アンド・ドロップは無効されました。ファイルを探すのに「ファイルを追加」、「フォルダを追加」ボタンを使って下さい。",
+ "gui_settings_tor_bridges_label": "Torがブロックされる場合、ブリッジはTorネットワークにアクセスするのに役立ちます。一番効果的なブリッジは場所によります。",
+ "gui_settings_bridge_none_radio_option": "ブリッジを利用しない",
+ "gui_settings_bridge_moat_button": "新しいブリッジを要求する",
+ "gui_settings_stop_active_tabs_label": "タブに実行しているサービスはまだあります。\nTor設定を変更するには、全てのサービスを停止する必要があります。"
}
diff --git a/desktop/src/onionshare/resources/locale/ka.json b/desktop/onionshare/resources/locale/ka.json
index 87d5c0c5..87d5c0c5 100644
--- a/desktop/src/onionshare/resources/locale/ka.json
+++ b/desktop/onionshare/resources/locale/ka.json
diff --git a/desktop/src/onionshare/resources/locale/km.json b/desktop/onionshare/resources/locale/km.json
index 11b3cdb3..11b3cdb3 100644
--- a/desktop/src/onionshare/resources/locale/km.json
+++ b/desktop/onionshare/resources/locale/km.json
diff --git a/desktop/src/onionshare/resources/locale/ko.json b/desktop/onionshare/resources/locale/ko.json
index 76c0c814..76c0c814 100644
--- a/desktop/src/onionshare/resources/locale/ko.json
+++ b/desktop/onionshare/resources/locale/ko.json
diff --git a/desktop/src/onionshare/resources/locale/lg.json b/desktop/onionshare/resources/locale/lg.json
index 13e70fdf..13e70fdf 100644
--- a/desktop/src/onionshare/resources/locale/lg.json
+++ b/desktop/onionshare/resources/locale/lg.json
diff --git a/desktop/src/onionshare/resources/locale/lt.json b/desktop/onionshare/resources/locale/lt.json
index 2436efcd..2436efcd 100644
--- a/desktop/src/onionshare/resources/locale/lt.json
+++ b/desktop/onionshare/resources/locale/lt.json
diff --git a/desktop/src/onionshare/resources/locale/mk.json b/desktop/onionshare/resources/locale/mk.json
index a264021f..a264021f 100644
--- a/desktop/src/onionshare/resources/locale/mk.json
+++ b/desktop/onionshare/resources/locale/mk.json
diff --git a/desktop/src/onionshare/resources/locale/ms.json b/desktop/onionshare/resources/locale/ms.json
index 371c61b7..371c61b7 100644
--- a/desktop/src/onionshare/resources/locale/ms.json
+++ b/desktop/onionshare/resources/locale/ms.json
diff --git a/desktop/src/onionshare/resources/locale/nb_NO.json b/desktop/onionshare/resources/locale/nb_NO.json
index e4f9b317..e4f9b317 100644
--- a/desktop/src/onionshare/resources/locale/nb_NO.json
+++ b/desktop/onionshare/resources/locale/nb_NO.json
diff --git a/desktop/src/onionshare/resources/locale/nl.json b/desktop/onionshare/resources/locale/nl.json
index 2ae1351a..2ae1351a 100644
--- a/desktop/src/onionshare/resources/locale/nl.json
+++ b/desktop/onionshare/resources/locale/nl.json
diff --git a/desktop/src/onionshare/resources/locale/pa.json b/desktop/onionshare/resources/locale/pa.json
index 766e3a02..766e3a02 100644
--- a/desktop/src/onionshare/resources/locale/pa.json
+++ b/desktop/onionshare/resources/locale/pa.json
diff --git a/desktop/src/onionshare/resources/locale/pl.json b/desktop/onionshare/resources/locale/pl.json
index bd725126..bd725126 100644
--- a/desktop/src/onionshare/resources/locale/pl.json
+++ b/desktop/onionshare/resources/locale/pl.json
diff --git a/desktop/src/onionshare/resources/locale/pt_BR.json b/desktop/onionshare/resources/locale/pt_BR.json
index 55789bf4..cab895e3 100644
--- a/desktop/src/onionshare/resources/locale/pt_BR.json
+++ b/desktop/onionshare/resources/locale/pt_BR.json
@@ -86,16 +86,16 @@
"gui_settings_authenticate_no_auth_option": "Sem autenticação nem cookie de autenticação",
"gui_settings_authenticate_password_option": "Senha",
"gui_settings_password_label": "Senha",
- "gui_settings_tor_bridges": "Suporte para pontes Tor",
+ "gui_settings_tor_bridges": "Conectar usando uma ponte Tor?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Não usar pontes",
"gui_settings_tor_bridges_obfs4_radio_option": "Usar transportadores plugáveis obfs4 já instalados",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Usar transportadores plugáveis obfs4 já instalados (requer obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Usar transportadores plugáveis meek_lite (Azure) já instalados",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Usar transportadores plugáveis meek_lite (Azure) já instalados (requer obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek_lite são muito custosas para o Projeto Tor.<br><br>Use-as somente se você não conseguir se conectar ao Tor diretamente, via transportadores obfs4 ou outras pontes comuns.",
+ "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure são muito custosas para o Projeto Tor.<br><br>Use-as somente se você não conseguir se conectar ao Tor diretamente, via transportadores obfs4 ou outras pontes comuns.",
"gui_settings_tor_bridges_custom_radio_option": "Usar pontes personalizadas",
"gui_settings_tor_bridges_custom_label": "Você pode obter pontes em <a href=\"https://bridges.torproject.org/options?lang=pt_BR\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Nenhuma das ponte adicionadas funciona.\nTente usá-las de novo ou adicione outras.",
+ "gui_settings_tor_bridges_invalid": "Nenhuma das ponte adicionadas funciona. Tente usá-las de novo ou adicione outras.",
"gui_settings_button_save": "Salvar",
"gui_settings_button_cancel": "Cancelar",
"gui_settings_button_help": "Ajuda",
@@ -174,7 +174,7 @@
"gui_upload_finished": "Upload realizado de {}",
"gui_download_in_progress": "Download Iniciado {}",
"gui_open_folder_error_nautilus": "Não foi possível abrir a pasta porque o nautilus não está disponível. O arquivo está aqui: {}",
- "gui_settings_language_label": "Idioma",
+ "gui_settings_language_label": "Língua",
"gui_settings_language_changed_notice": "Reinicie OnionShare para que o novo idioma seja aplicado.",
"timeout_upload_still_running": "Esperando o término do upload",
"gui_add_files": "Adicionar Arquivos",
@@ -229,7 +229,7 @@
"gui_website_mode_no_files": "Nenhum website compartilhado ainda",
"history_requests_tooltip": "{} solicitações da web",
"gui_settings_website_label": "Configurações do Website",
- "mode_settings_website_disable_csp_checkbox": "Desativar cabeçalho da política de segurança de conteúdo (permite que seu site use recursos de terceiros)",
+ "mode_settings_website_disable_csp_checkbox": "Não envie o cabeçalho padrão da Política de Segurança de Conteúdo (permite que seu website utilize recursos de terceiros)",
"mode_settings_receive_data_dir_browse_button": "Navegar",
"mode_settings_receive_data_dir_label": "Salvar arquivos em",
"mode_settings_share_autostop_sharing_checkbox": "Interrompa o compartilhamento após o envio dos arquivos (desmarque para permitir o download de arquivos individuais)",
@@ -309,5 +309,30 @@
"gui_url_instructions": "Primeiro, envie o endereço OnionShare abaixo:",
"gui_chat_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>entrar nesta sala de bate-papo</b> usando o <b>Navegador Tor</b>: <img src='{}' />",
"gui_receive_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>carregar</b> arquivos para o seu computador usando o <b>Navegador Tor</b>: <img src='{}' />",
- "gui_website_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>visitar</b> o seu site usando o <b>Navegador Tor</b>: <img src='{}' />"
+ "gui_website_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>visitar</b> o seu site usando o <b>Navegador Tor</b>: <img src='{}' />",
+ "gui_dragdrop_sandbox_flatpak": "Para tornar a ferramenta Flatpak sandbox mais segura, a função de arrastar e largar não é suportada. Em vez disso, use os botões Adicionar Arquivos e Adicionar Pasta para procurar por arquivos.",
+ "gui_tor_settings_window_title": "Configurações do Tor",
+ "gui_settings_controller_extras_label": "Configurações do Tor",
+ "gui_settings_tor_bridges_label": "Pontes ajudam a acessar a Rede Tor em locais onde o Tor está bloqueado. Dependendo de onde você estiver, uma ponte pode funcionar melhor que outra.",
+ "gui_settings_bridge_use_checkbox": "Usar uma ponte",
+ "gui_settings_bridge_radio_builtin": "Selecione uma ponte embutida",
+ "gui_settings_bridge_none_radio_option": "Não usar uma ponte",
+ "gui_settings_bridge_moat_radio_option": "Solicite uma ponte no torproject.org",
+ "gui_settings_bridge_moat_button": "Solicitar uma nova ponte",
+ "gui_settings_bridge_custom_radio_option": "Fornece uma ponte que você teve acesso de uma fonte confiável",
+ "gui_settings_bridge_custom_placeholder": "digite adress:port (um por linha)",
+ "gui_settings_moat_bridges_invalid": "Você ainda não solicitou uma ponte do torproject.org.",
+ "gui_settings_stop_active_tabs_label": "Há serviços funcionando em algumas de suas abas.\nVocê deve parar todos os serviços para alterar suas configurações Tor.",
+ "gui_settings_version_label": "Você está usando o OnionShare {}",
+ "gui_settings_help_label": "Precisa de ajuda? Veja <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Enviar um cabeçalho personalizado da Política de Segurança de Conteúdo",
+ "moat_contact_label": "Contactando BridgeDB...",
+ "moat_captcha_label": "Resolva o CAPTCHA para solicitar uma ponte.",
+ "moat_captcha_placeholder": "Digite os caracteres que aparecem na imagem",
+ "moat_captcha_submit": "Enviar",
+ "moat_captcha_reload": "Recarregar",
+ "moat_bridgedb_error": "Erro ao contactar BridgeDB.",
+ "moat_captcha_error": "A solução não está correta. Por favor tente novamente.",
+ "moat_solution_empty_error": "Você deve informar os caracteres que aparecem na imagem",
+ "mode_tor_not_connected_label": "OnionShare não está conectado com a rede Tor"
}
diff --git a/desktop/src/onionshare/resources/locale/pt_PT.json b/desktop/onionshare/resources/locale/pt_PT.json
index cd65def4..b7e63075 100644
--- a/desktop/src/onionshare/resources/locale/pt_PT.json
+++ b/desktop/onionshare/resources/locale/pt_PT.json
@@ -86,13 +86,13 @@
"gui_settings_authenticate_no_auth_option": "Sem autenticação, ou autenticação por cookie",
"gui_settings_authenticate_password_option": "Palavra-passe",
"gui_settings_password_label": "Palavra-passe",
- "gui_settings_tor_bridges": "Suporte de ponte do Tor",
+ "gui_settings_tor_bridges": "Ligar com Ponte Tor?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Não utilizar pontes",
"gui_settings_tor_bridges_obfs4_radio_option": "Utilizar transportes ligáveis obfs4 integrados",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utilizar transportes ligáveis obfs4 integrados (requer obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Utilizar transportes ligáveis meek_lite (Azure) integrados",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Utilizar transportes ligáveis meek_lite (Azure) integrados (requer obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek_lite são muito dispendiosas para o Projeto Tor.<br><br>Utilize-as apenas se não conseguir ligar diretamente ao Tor, via transportes obfs4, ou outras pontes normais.",
+ "gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure são muito dispendiosas para o Projeto Tor.<br><br>Utilize-as apenas se não conseguir ligar diretamente ao Tor, via transportes obfs4, ou outras pontes normais.",
"gui_settings_tor_bridges_custom_radio_option": "Utilizar pontes personalizadas",
"gui_settings_tor_bridges_custom_label": "Pode obter pontes em <a href=\"https://bridges.torproject.org/options?lang=pt_PT\">https://bridges.torproject.org</a>",
"gui_settings_tor_bridges_invalid": "Nenhuma das pontes que adicionou funciona.\nVerifique se estão corretas ou adicione outras.",
@@ -306,5 +306,14 @@
"gui_receive_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>enviar</b> ficheiros para o seu computador usando o <b>Tor Browser</b>: <img src='{}' />",
"gui_website_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>visitar</b> o seu site usando o <b>Tor Browser</b>: <img src = '{}' />",
"gui_share_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>descarregar</b> os seus ficheiros usando o <b>Tor Browser</b>: <img src='{}' />",
- "gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta ocultação (stealth - autenticação do cliente). Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de privacidade."
+ "gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta ocultação (stealth - autenticação do cliente). Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de privacidade.",
+ "gui_dragdrop_sandbox_flatpak": "Para tornar a \"caixa de areia\" mais segura não é possível utilizar a funcionalidade de arrastar e largar, em alternativa procure os ficheiros utilizando os botões de Adicionar Ficheiro e Adicionar Diretório.",
+ "gui_tor_settings_window_title": "Definições do Tor",
+ "gui_settings_controller_extras_label": "Definições do Tor",
+ "gui_settings_bridge_use_checkbox": "Utilizar uma ponte",
+ "gui_settings_bridge_radio_builtin": "Selecionar uma ponte embutida",
+ "gui_settings_bridge_none_radio_option": "Não utilizar uma ponte",
+ "gui_settings_bridge_moat_radio_option": "Pedir uma ponte a torproject.org",
+ "gui_settings_bridge_moat_button": "Pedir uma Ponte Nova",
+ "gui_settings_tor_bridges_label": "As pontes ajudam no acesso a rede Tor em localizações onde esta está bloqueada, algumas pontes podem funcionar melhor do que outras dependendo da localização."
}
diff --git a/desktop/src/onionshare/resources/locale/ro.json b/desktop/onionshare/resources/locale/ro.json
index 35dcedbf..35dcedbf 100644
--- a/desktop/src/onionshare/resources/locale/ro.json
+++ b/desktop/onionshare/resources/locale/ro.json
diff --git a/desktop/src/onionshare/resources/locale/ru.json b/desktop/onionshare/resources/locale/ru.json
index 5819e38e..2636323f 100644
--- a/desktop/src/onionshare/resources/locale/ru.json
+++ b/desktop/onionshare/resources/locale/ru.json
@@ -98,16 +98,16 @@
"gui_settings_socks_label": "Порт SOCKS",
"gui_settings_authenticate_label": "Настройки аутентификации Tor",
"gui_settings_authenticate_no_auth_option": "Без аутентификации или cookie-аутентификации",
- "gui_settings_tor_bridges": "Поддержка \"мостов\" Tor",
+ "gui_settings_tor_bridges": "Использовать \"мост\" Tor?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Не использовать \"мосты\"",
"gui_settings_tor_bridges_obfs4_radio_option": "Использовать встроенные подключаемые транспорты obfs4",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Использовать встроенные подключаемые транспорты obfs4 (необходим obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Использовать встроенные транспорты meek_lite (Azure)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Использовать встроенные транспорты meek_lite (Azure) (необходим obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Внимание: использование \"мостов\" meek_lite очень затратно для Tor Project.<br><br>Используйте их только если не можете подключиться к сети Tor напрямую, через obfs4 транспорты или другие обычные \"мосты\".",
+ "gui_settings_meek_lite_expensive_warning": "Внимание: использование \"мостов\" meek_azure очень затратно для Tor Project.<br><br>Используйте их только если не можете подключиться к сети Tor напрямую, через obfs4 транспорты или другие обычные \"мосты\".",
"gui_settings_tor_bridges_custom_radio_option": "Использовать пользовательские \"мосты\"",
"gui_settings_tor_bridges_custom_label": "Получить настройки \"мостов\" можно здесь: <a href=\"https://bridges.torproject.org/options?lang=ru\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Ни один из добавленных вами \"мостов\" не работает.\nПроверьте их снова или добавьте другие.",
+ "gui_settings_tor_bridges_invalid": "Ни один из добавленных вами \"мостов\" не работает. Проверьте их снова или добавьте другие.",
"gui_settings_autostop_timer_checkbox": "Использовать стоп-таймер",
"gui_settings_autostop_timer": "Остановить отправку в:",
"settings_error_unknown": "Невозможно произвести подключение к контроллеру Tor: некорректные настройки.",
@@ -230,7 +230,7 @@
"gui_settings_website_label": "Настройки Веб-сайта",
"gui_main_page_share_button": "Сделать доступным для скачивания",
"gui_close_tab_warning_title": "Вы уверены?",
- "mode_settings_website_disable_csp_checkbox": "Не посылать заголовок Content Security Policy (позволяет Вашему веб сайту использовать ресурсы третих сторон)",
+ "mode_settings_website_disable_csp_checkbox": "Не посылать стандартный заголовок Content Security Policy (разрешить вашему веб-сайту использовать сторонние ресурсы)",
"mode_settings_receive_data_dir_browse_button": "Обзор файлов",
"mode_settings_receive_data_dir_label": "Сохранять файлы в",
"mode_settings_share_autostop_sharing_checkbox": "Закрыть доступ к файлам после их отправки (отмените чтобы разрешить скачивание отдельных файлов)",
@@ -305,5 +305,30 @@
"gui_qr_label_url_title": "Адрес OnionShare",
"gui_copied_client_auth": "Секретный Ключ скопирован в буфер обмена",
"gui_copied_client_auth_title": "Секретный Ключ Скопирован",
- "gui_copy_client_auth": "Копировать Секретный Ключ"
+ "gui_copy_client_auth": "Копировать Секретный Ключ",
+ "gui_dragdrop_sandbox_flatpak": "Для обеспечения дополнительной безопасности, функция \"drag and drop\" не поддерживается песочницей Flatpak. Вместо этого используйте кнопки \"Добавить файлы\" и \"Добавить папку\".",
+ "gui_tor_settings_window_title": "Настройки Tor",
+ "gui_settings_controller_extras_label": "Настройки Tor",
+ "gui_settings_tor_bridges_label": "Мосты позволяют подключаться к сети Tor в местах, где его использование заблокировано. В зависимости от вашего местоположения лучше работать может тот или иной мост.",
+ "gui_settings_bridge_use_checkbox": "Использовать мост",
+ "gui_settings_bridge_radio_builtin": "Выбрать встроенный мост",
+ "gui_settings_bridge_none_radio_option": "Не использовать мост",
+ "gui_settings_bridge_moat_radio_option": "Запросить мост с сайта torproject.org",
+ "gui_settings_bridge_moat_button": "Запросить Новый Мост",
+ "gui_settings_bridge_custom_radio_option": "Подключить мост о котором вы узнали из доверенного источника",
+ "gui_settings_bridge_custom_placeholder": "ввести адрес:порт (по одному на каждой строке)",
+ "gui_settings_moat_bridges_invalid": "Вы ещё не запрашивали мост с сайта torproject.org.",
+ "gui_settings_stop_active_tabs_label": "На некоторых из ваших вкладок запущены сервисы.\nНеобходимо остановить все сервисы чтобы изменить настройки Tor.",
+ "gui_settings_version_label": "Вы используете OnionShare {}",
+ "gui_settings_help_label": "Нужна помощь? Вам сюда: <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "Отправить самостоятельно настроенный заголовок Content Security Policy",
+ "moat_contact_label": "Устанавливается связь с BridgeDB...",
+ "moat_captcha_label": "Решите CAPTCHA, чтобы запросить мост.",
+ "moat_captcha_placeholder": "Введите символы на картинке",
+ "moat_captcha_submit": "Отправить",
+ "moat_captcha_reload": "Перезагрузить",
+ "moat_bridgedb_error": "Ошибка соединения с BridgeDB.",
+ "moat_captcha_error": "Решение не верно. Пожалуйста, попробуйте ещё раз.",
+ "moat_solution_empty_error": "Вы должны ввести символы с картинки",
+ "mode_tor_not_connected_label": "OnionShare не подключен к сети Tor"
}
diff --git a/desktop/src/onionshare/resources/locale/si.json b/desktop/onionshare/resources/locale/si.json
index 32417022..32417022 100644
--- a/desktop/src/onionshare/resources/locale/si.json
+++ b/desktop/onionshare/resources/locale/si.json
diff --git a/desktop/src/onionshare/resources/locale/sk.json b/desktop/onionshare/resources/locale/sk.json
index 841b156e..841b156e 100644
--- a/desktop/src/onionshare/resources/locale/sk.json
+++ b/desktop/onionshare/resources/locale/sk.json
diff --git a/desktop/src/onionshare/resources/locale/sl.json b/desktop/onionshare/resources/locale/sl.json
index 52f14cce..52f14cce 100644
--- a/desktop/src/onionshare/resources/locale/sl.json
+++ b/desktop/onionshare/resources/locale/sl.json
diff --git a/desktop/src/onionshare/resources/locale/sn.json b/desktop/onionshare/resources/locale/sn.json
index 81b46cba..81b46cba 100644
--- a/desktop/src/onionshare/resources/locale/sn.json
+++ b/desktop/onionshare/resources/locale/sn.json
diff --git a/desktop/src/onionshare/resources/locale/sr_Latn.json b/desktop/onionshare/resources/locale/sr_Latn.json
index 0241a140..f47bade1 100644
--- a/desktop/src/onionshare/resources/locale/sr_Latn.json
+++ b/desktop/onionshare/resources/locale/sr_Latn.json
@@ -62,16 +62,16 @@
"gui_settings_authenticate_no_auth_option": "Bez autentifikacije ili autentifikacija kolačićem",
"gui_settings_authenticate_password_option": "Lozinka",
"gui_settings_password_label": "Lozinka",
- "gui_settings_tor_bridges": "Most podrška za Tor",
+ "gui_settings_tor_bridges": "Povezivanje pomoću Tor mosta?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Ne koristi mostove",
"gui_settings_tor_bridges_obfs4_radio_option": "Koristi ugrađene obfs4 dodatne prenose",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Koristi ugrađene obfs4 dodatne prenose (potreban obfs4proksi)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Koristi ugrađene meek_lite (Azure) dodatne prenose",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Koristi ugrađene meek_lite (Azure) dodatne prenose (potreban obfs4proksi)",
- "gui_settings_meek_lite_expensive_warning": "Upozorenje: meek_lite mostovi su vrlo skupi za Tor projekat da ih koristi.<br><br>Koristi ih samo ako ne možeš da se povežeš na Tor direktno, preko obfs4 transporta ili drugih redovnih mostova.",
+ "gui_settings_meek_lite_expensive_warning": "Upozorenje: meek-azure mostovi su vrlo skupi za Tor projekat da ih koristi.<br><br>Koristi ih samo ako ne možeš da se povežeš na Tor direktno, preko obfs4 transporta ili drugih redovnih mostova.",
"gui_settings_tor_bridges_custom_radio_option": "Koristi prilagođene mostove",
"gui_settings_tor_bridges_custom_label": "Mostove možeš dobiti od <a href=\"https://bridges.torproject.org/options?lang=sr_Latn\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Nijedan od mostova koje si dodao ne funkcioniše.\nProveri ih ponovo ili dodaj druge.",
+ "gui_settings_tor_bridges_invalid": "Nijedan od mostova koje ste dodali ne funkcioniše. Proverite ih ponovo ili dodajte druge.",
"gui_settings_button_save": "Sačuvaj",
"gui_settings_button_cancel": "Odustani",
"gui_settings_button_help": "Pomoć",
@@ -110,9 +110,9 @@
"share_via_onionshare": "Deljenje pomoću OnionShare",
"gui_connect_to_tor_for_onion_settings": "Poveži se sa Torom da bi video postavke onion servisa",
"gui_save_private_key_checkbox": "Koristi trajnu adresu",
- "gui_share_url_description": "<b>Svako</b> sa ovom OnionShare sdresom može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
- "gui_website_url_description": "<b>Svako</b> sa ovom OnionShare adresom može <b>posetiti</b> tvoju veb-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
- "gui_receive_url_description": "<b>Svako</b> sa ovom OnionShare adresom može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_share_url_description": "<b>Svako</b> sa ovom OnionShare adresom i privatnim ključem može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_website_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>posetiti</b> tvoju web-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_receive_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
"gui_url_label_persistent": "Ovo deljenje neće se automatski zaustaviti. <br> <br>Svako sledeće deljenje ponovo koristi istu adresu. (Da bi koristio jednokratnu adresu, isključi opciju \"koristi trajnu adresu\" u podešavanjima.)",
"gui_url_label_stay_open": "Ovaj deljenje neće se automatski zaustaviti.",
"gui_url_label_onetime": "Ovaj deljenje će se zaustaviti nakon prvog dovršenja.",
@@ -214,12 +214,50 @@
"gui_new_tab": "Novi jezičak",
"gui_color_mode_changed_notice": "Ponovo pokrenite OnionShare da bi primenili novi režim boja.",
"gui_open_folder_error": "Neuspelo otvaranje fascikle sa xdg-open. Fajl je ovde: {}",
- "gui_chat_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>pristupiti ovoj sobi za ćaskawe</b> koristeći <b>Tor pregledač</b>: <img src='{}' />",
+ "gui_chat_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>pristupiti ovoj sobi za ćaskanje</b> koristeći <b>Tor Browser</b>: <img src='{}' />",
"gui_qr_code_dialog_title": "OnionShare QR kod",
"gui_show_qr_code": "Prikaži QR kod",
"gui_receive_flatpak_data_dir": "Pošto ste instalirali OnionShare koristeći Flatpak, morate čuvati fajlove u falcikli ~/OnionShare.",
"gui_chat_stop_server": "Zaustavi server za ćaskanje",
"gui_chat_start_server": "Pokreni server za ćaskanje",
"gui_file_selection_remove_all": "Ukloni sve",
- "gui_remove": "Ukloni"
+ "gui_remove": "Ukloni",
+ "gui_copy_client_auth": "Kopiraj privatni ključ",
+ "gui_copied_client_auth_title": "Privatni ključ je kopiran",
+ "gui_copied_client_auth": "Privatni ključ je kopiran u clipboard",
+ "gui_tor_settings_window_title": "Tor Podešenja",
+ "gui_settings_controller_extras_label": "Tor Podešenja",
+ "gui_settings_bridge_use_checkbox": "Koristite most",
+ "gui_settings_bridge_radio_builtin": "Odaberite most",
+ "gui_settings_bridge_none_radio_option": "Ne koristi most",
+ "gui_settings_bridge_moat_radio_option": "Zatražite most od torproject.org",
+ "gui_settings_bridge_moat_button": "Zatražite novi most",
+ "gui_settings_bridge_custom_radio_option": "Obezbedite most za koji ste saznali iz pouzdanog izvora",
+ "gui_settings_bridge_custom_placeholder": "upišite adresu:port (jedan po liniji)",
+ "gui_settings_moat_bridges_invalid": "Još niste zatražili most od torproject.org.",
+ "gui_settings_version_label": "Koristite OnionShare {}",
+ "gui_share_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_website_url_public_description": "<b>Bilo ko</b> s ovom OnionShare adresom može <b>posetiti</b> tvoju web-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_receive_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_chat_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može se <b>pridružiti ovoj sobi za ćaskanje</b> koristeći <b>Tor Browser</b>: <img src='{}' />",
+ "gui_url_instructions": "Prvo pošalji ovu dole OnionShare adresu:",
+ "moat_contact_label": "Kontaktiranje BridgeDB-a...",
+ "moat_captcha_label": "Rešite CAPTCHA da bi zatražili most.",
+ "moat_captcha_placeholder": "Unesite znakove sa slike",
+ "moat_captcha_submit": "Pošalji",
+ "moat_captcha_reload": "Obnovi",
+ "moat_bridgedb_error": "Greška u kontaktiranju BridgeDB.",
+ "gui_please_wait_no_button": "Pokretanje …",
+ "gui_qr_label_url_title": "OnionShare adresa",
+ "gui_qr_label_auth_string_title": "Privatni ključ",
+ "gui_reveal": "Otkrij",
+ "gui_hide": "Sakrij",
+ "gui_dragdrop_sandbox_flatpak": "Da bi Flatpak sandbox bio sigurniji, prevlačenje i ispuštanje nije podržano. Umesto toga koristite dugmad Dodaj datoteke i Dodaj direktorijume za pretraživanje datoteka.",
+ "gui_settings_tor_bridges_label": "Mostovi vam pomažu da pristupite Tor mreži u područjima gde je Tor blokiran. U zavisnosti gde se nalazite, jedan most može raditi bolje od drugog.",
+ "gui_settings_help_label": "Treba vam pomoć? Pogledajte <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "gui_server_doesnt_support_stealth": "Nažalost, ova Tor verzija ne podržava nevidljivost (autentifikacija klijenta). Pokušajte s novijom verzijom Tor-a ili koristite 'javni' način rada ako ne mora biti privatan.",
+ "history_receive_read_message_button": "Pročitaj poruku",
+ "moat_captcha_error": "Rješenje nije ispravno. Molimo pokušajte ponovo.",
+ "moat_solution_empty_error": "Morate uneti znakove sa slike",
+ "mode_tor_not_connected_label": "OnionShare nije povezan na Tor mrežu"
}
diff --git a/desktop/src/onionshare/resources/locale/sv.json b/desktop/onionshare/resources/locale/sv.json
index 6593ed7f..d44b3a9e 100644
--- a/desktop/src/onionshare/resources/locale/sv.json
+++ b/desktop/onionshare/resources/locale/sv.json
@@ -315,5 +315,8 @@
"gui_qr_label_url_title": "OnionShare-adress",
"gui_copied_client_auth": "Privat nyckel kopierad till Urklipp",
"gui_copied_client_auth_title": "Kopierad privat nyckel",
- "gui_copy_client_auth": "Kopiera den privata nyckeln"
+ "gui_copy_client_auth": "Kopiera den privata nyckeln",
+ "gui_tor_settings_window_title": "Torinställningar",
+ "gui_settings_controller_extras_label": "Torinställningar",
+ "gui_dragdrop_sandbox_flatpak": "För att göra Flatpak mer säkert, är dra och släpp inte tillåtet. Använd Lägg till filer och Lägg till katalog knapparna för att bläddra efter filer istället."
}
diff --git a/desktop/src/onionshare/resources/locale/sw.json b/desktop/onionshare/resources/locale/sw.json
index 31eb72c5..31eb72c5 100644
--- a/desktop/src/onionshare/resources/locale/sw.json
+++ b/desktop/onionshare/resources/locale/sw.json
diff --git a/desktop/src/onionshare/resources/locale/te.json b/desktop/onionshare/resources/locale/te.json
index d1784090..d1784090 100644
--- a/desktop/src/onionshare/resources/locale/te.json
+++ b/desktop/onionshare/resources/locale/te.json
diff --git a/desktop/src/onionshare/resources/locale/tr.json b/desktop/onionshare/resources/locale/tr.json
index ba38f7f4..dc792c27 100644
--- a/desktop/src/onionshare/resources/locale/tr.json
+++ b/desktop/onionshare/resources/locale/tr.json
@@ -75,16 +75,16 @@
"gui_settings_authenticate_no_auth_option": "Kimlik doğrulama yok, veya çerez doğrulaması",
"gui_settings_authenticate_password_option": "Parola",
"gui_settings_password_label": "Parola",
- "gui_settings_tor_bridges": "Tor köprü desteği",
+ "gui_settings_tor_bridges": "Tor köprüsü kullanarak bağlanılsın mı?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Köprüler kullanılmasın",
"gui_settings_tor_bridges_obfs4_radio_option": "Yerleşik obfs4 değiştirilebilir taşıyıcıları kullanılsın",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Yerleşik obfs4 değiştirilebilir taşıyıcıları kullanılsın (obfs4proxy gerektirir)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Yerleşik meek_lite (Azure) değiştirilebilir taşıyıcıları kullanılsın",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Yerleşik meek_lite (Azure) değiştirilebilir taşıyıcıları kullanılsın (obfs4proxy gerektirir)",
- "gui_settings_meek_lite_expensive_warning": "Uyarı: meek_lit köprülerini çalıştırmak Tor Projesine pahalıya patlıyor.<br><br>Bu köprüleri yalnız Tor ile doğrudan ya da obfs4 ve diğer normal köprüler üzerinden bağlantı kuramıyorsanız kullanın.",
+ "gui_settings_meek_lite_expensive_warning": "Uyarı: meek-azure köprülerini çalıştırmak Tor Projesine pahalıya patlıyor.<br><br>Bu köprüleri yalnızca Tor ile doğrudan veya obfs4 ve diğer normal köprüler üzerinden bağlantı kuramıyorsanız kullanın.",
"gui_settings_tor_bridges_custom_radio_option": "Özel köprüler kullanılsın",
"gui_settings_tor_bridges_custom_label": "Köprüleri <a href=\"https://bridges.torproject.org/options?lang=tr\">https://bridges.torproject.org</a> adresinden alabilirsiniz",
- "gui_settings_tor_bridges_invalid": "Eklediğiniz köprülerin hiçbiri çalışmıyor.\nİki kez denetleyin ya da başka köprüler ekleyin.",
+ "gui_settings_tor_bridges_invalid": "Eklediğiniz köprülerin hiçbiri çalışmıyor. İki kez denetleyin veya başka köprüler ekleyin.",
"gui_settings_button_save": "Kaydet",
"gui_settings_button_cancel": "İptal",
"gui_settings_button_help": "Yardım",
@@ -149,7 +149,7 @@
"gui_settings_data_dir_browse_button": "Göz at",
"gui_settings_public_mode_checkbox": "Herkese açık kip",
"gui_open_folder_error_nautilus": "Nautilus kullanılamadığından klasör açılamıyor. Dosya burada: {}",
- "gui_settings_language_label": "Arayüz dili",
+ "gui_settings_language_label": "Dil",
"gui_settings_language_changed_notice": "Dil değişikliğinin uygulanabilmesi için OnionShare uygulamasını yeniden başlatın.",
"systray_menu_exit": "Çık",
"systray_page_loaded_title": "Sayfa yüklendi",
@@ -199,7 +199,7 @@
"history_requests_tooltip": "{} web isteği",
"gui_settings_csp_header_disabled_option": "İçerik Güvenlik Politikası başlığını devre dışı bırak",
"gui_settings_website_label": "Website ayarları",
- "mode_settings_website_disable_csp_checkbox": "İçerik güvenliği ilkesi başlığı gönderme (web sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)",
+ "mode_settings_website_disable_csp_checkbox": "Öntanımlı İçerik Güvenliği İlkesi başlığı gönderme (web sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)",
"mode_settings_receive_data_dir_browse_button": "Göz at",
"mode_settings_receive_data_dir_label": "Dosyaları şuraya kaydet",
"mode_settings_share_autostop_sharing_checkbox": "Dosyalar gönderildikten sonra paylaşım durdurulsun (dosyaların tek tek indirilmesine izin vermek için işareti kaldırın)",
@@ -279,5 +279,30 @@
"gui_qr_label_url_title": "OnionShare adresi",
"gui_copied_client_auth": "Kişisel anahtar panoya kopyalandı",
"gui_copied_client_auth_title": "Kişisel anahtar kopyalandı",
- "gui_copy_client_auth": "Kişisel anahtarı kopyala"
+ "gui_copy_client_auth": "Kişisel anahtarı kopyala",
+ "gui_settings_bridge_moat_radio_option": "torproject.org'dan bir köprü talep et",
+ "gui_settings_bridge_moat_button": "Yeni Bir Köprü Talep Et",
+ "gui_settings_bridge_custom_placeholder": "adres:bağlantınoktası yazın (satır başına bir tane)",
+ "gui_settings_moat_bridges_invalid": "Henüz torproject.org'dan bir köprü talep etmediniz.",
+ "moat_contact_label": "BridgeDB ile iletişime geçiliyor...",
+ "moat_captcha_error": "Çözüm doğru değil. Lütfen tekrar deneyin.",
+ "moat_solution_empty_error": "Resimdeki karakterleri girmelisiniz",
+ "mode_tor_not_connected_label": "OnionShare Tor ağına bağlı değil",
+ "gui_settings_tor_bridges_label": "Köprüler, Tor'un engellendiği yerlerde Tor Ağına erişmenize yardımcı olur. Nerede olduğunuza bağlı olarak, bir köprü diğerinden daha iyi çalışabilir.",
+ "gui_settings_bridge_use_checkbox": "Köprü kullan",
+ "mode_settings_website_custom_csp_checkbox": "Özel bir İçerik Güvenliği İlkesi başlığı gönder",
+ "gui_dragdrop_sandbox_flatpak": "Flatpak korumalı alanını daha güvenli hale getirmek için sürükle ve bırak desteklenmemektedir. Bunun yerine dosyalara göz atmak için Dosya Ekle ve Klasör Ekle düğmelerini kullanın.",
+ "gui_tor_settings_window_title": "Tor Ayarları",
+ "gui_settings_controller_extras_label": "Tor ayarları",
+ "gui_settings_bridge_none_radio_option": "Köprü kullanma",
+ "gui_settings_bridge_radio_builtin": "Yerleşik bir köprü seç",
+ "gui_settings_version_label": "OnionShare {} kullanıyorsunuz",
+ "gui_settings_bridge_custom_radio_option": "Güvenilir bir kaynaktan öğrendiğiniz bir köprü belirtin",
+ "gui_settings_stop_active_tabs_label": "Bazı sekmelerinizde çalışan hizmetler var.\nTor ayarlarınızı değiştirmek için tüm hizmetleri durdurmalısınız.",
+ "gui_settings_help_label": "Yardıma mı ihtiyacınız var? <a href='https://docs.onionshare.org'>docs.onionshare.org</a> adresine bakın",
+ "moat_captcha_submit": "Gönder",
+ "moat_captcha_reload": "Yeniden yükle",
+ "moat_captcha_label": "Bir köprü talep etmek için CAPTCHA'yı çözün.",
+ "moat_captcha_placeholder": "Resimdeki karakterleri girin",
+ "moat_bridgedb_error": "BridgeDB ile bağlantı kurulurken hata oluştu."
}
diff --git a/desktop/src/onionshare/resources/locale/uk.json b/desktop/onionshare/resources/locale/uk.json
index 0d0f78b6..74a380eb 100644
--- a/desktop/src/onionshare/resources/locale/uk.json
+++ b/desktop/onionshare/resources/locale/uk.json
@@ -59,16 +59,16 @@
"gui_settings_authenticate_no_auth_option": "Без автентифікації або автентифікація через cookie",
"gui_settings_authenticate_password_option": "Пароль",
"gui_settings_password_label": "Пароль",
- "gui_settings_tor_bridges": "Підтримка мосту Tor",
+ "gui_settings_tor_bridges": "Під'єднатися за допомогою мосту Tor?",
"gui_settings_tor_bridges_no_bridges_radio_option": "Не застосовувати мости",
"gui_settings_tor_bridges_obfs4_radio_option": "Застосовувати вбудовані obfs4 під'єднувані транспорти",
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Застосовувати вбудовані obfs4 під'єднувані транспорти (вимагає obfs4proxy)",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Застосовувати вбудовані meek_lite (Azure) під'єднувані транспорти",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Застосовувати вбудовані meek_lite (Azure) під'єднувані транспорти (вимагає obfs4proxy)",
- "gui_settings_meek_lite_expensive_warning": "Увага: Мости meek_lite заважкі для Tor Project. <br> <br>Користуйтеся ними лише якщо не вдається з'єднатися з Tor безпосередньо, через obfs4 транспорти або інші звичайні мости.",
+ "gui_settings_meek_lite_expensive_warning": "Увага: Мости meek-azure заважкі для роботи Tor Project. <br> <br>Користуйтеся ними лише якщо не вдається з'єднатися з Tor безпосередньо, через obfs4 транспорти або інші звичайні мости.",
"gui_settings_tor_bridges_custom_radio_option": "Застосовувати власні мости",
"gui_settings_tor_bridges_custom_label": "Ви можете отримати мости з <a href=\"https://bridges.torproject.org/options?lang=uk\">https://bridges.torproject.org</a>",
- "gui_settings_tor_bridges_invalid": "Жоден з доданих мостів не працює.\nДвічі перевірте їх або додайте інші.",
+ "gui_settings_tor_bridges_invalid": "Жоден з доданих мостів не працює. Ще раз перевірте їх або додайте інші.",
"gui_settings_button_save": "Зберегти",
"gui_settings_button_cancel": "Скасувати",
"gui_settings_button_help": "Допомога",
@@ -134,7 +134,7 @@
"gui_settings_data_dir_browse_button": "Огляд",
"gui_settings_public_mode_checkbox": "Загальнодоступний режим",
"gui_open_folder_error_nautilus": "Неможливо відкрити теку бо nautilus недоступний. Файл розташовано: {}",
- "gui_settings_language_label": "Бажана мова",
+ "gui_settings_language_label": "Мова",
"gui_settings_language_changed_notice": "Перезапустіть OnionShare для зміни мови.",
"systray_menu_exit": "Вийти",
"systray_page_loaded_title": "Сторінку Завантажено",
@@ -178,7 +178,7 @@
"gui_close_tab_warning_website_description": "Ви маєте активний розміщений вебсайт. Ви впевнені, що хочете закрити цю вкладку?",
"gui_new_tab_website_description": "Розмістіть статичний onion HTML-вебсайт на вашому комп'ютері.",
"mode_settings_receive_data_dir_browse_button": "Вибрати",
- "mode_settings_website_disable_csp_checkbox": "Не надсилати заголовок політики безпеки вмісту (дозволяє вебсайту застосовувати сторонні ресурси)",
+ "mode_settings_website_disable_csp_checkbox": "Не надсилати типовий заголовок Content Security Policy (дозволяє вебсайту використовувати сторонні ресурси)",
"mode_settings_receive_data_dir_label": "Зберігати файли до",
"mode_settings_share_autostop_sharing_checkbox": "Закрити доступ, коли файли надіслано (приберіть позначку, щоб дозволити завантаження окремих файлів)",
"mode_settings_legacy_checkbox": "Користуватися застарілою адресою (служба onion v2, не рекомендовано)",
@@ -255,5 +255,30 @@
"gui_website_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>відвідати</b> ваш вебсайт через <b>Tor Browser</b>: <img src='{}' />",
"gui_receive_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>вивантажити</b> файли на ваш комп'ютер через <b>Tor Browser</b>: <img src='{}' />",
"gui_share_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>завантажити</b> ваші файли, через <b>Tor Browser</b>: <img src='{}' />",
- "gui_server_doesnt_support_stealth": "На жаль, ця версія Tor не підтримує стелс-режим (автентифікацію клієнта). Спробуйте за допомогою новішої версії Tor або скористайтеся загальнодоступним режимом, якщо він не повинен бути приватним."
+ "gui_server_doesnt_support_stealth": "На жаль, ця версія Tor не підтримує стелс-режим (автентифікацію клієнта). Спробуйте за допомогою новішої версії Tor або скористайтеся загальнодоступним режимом, якщо він не повинен бути приватним.",
+ "gui_tor_settings_window_title": "Налаштування Tor",
+ "gui_settings_bridge_radio_builtin": "Вибрати вбудований міст",
+ "gui_settings_bridge_none_radio_option": "Не використовувати міст",
+ "gui_settings_stop_active_tabs_label": "На деяких ваших вкладках працюють служби.\nВи повинні зупинити всі служби, щоб змінити налаштування Tor.",
+ "moat_captcha_label": "Розв'яжіть CAPTCHA для запиту мостів.",
+ "moat_captcha_error": "Неправильний розв'язок. Повторіть спробу.",
+ "gui_settings_bridge_use_checkbox": "Використовувати міст",
+ "gui_settings_bridge_moat_radio_option": "Запит мосту на torproject.org",
+ "gui_dragdrop_sandbox_flatpak": "Щоб пісочниця Flatpak була безпечнішою, перетягування не підтримується. Натомість скористайтеся кнопками Додати файли та Додати теку, щоб знайти файли.",
+ "gui_settings_controller_extras_label": "Налаштування Tor",
+ "gui_settings_tor_bridges_label": "Мости допомагають отримати доступ до мережі Tor у місцях, де Tor заблоковано. Залежно від того, де ви знаходитесь, один міст може працювати краще, ніж інший.",
+ "gui_settings_bridge_moat_button": "Запит нового мосту",
+ "gui_settings_bridge_custom_radio_option": "Укажіть міст, про який ви дізналися з надійного джерела",
+ "gui_settings_bridge_custom_placeholder": "введіть адреса:порт (по одному на рядок)",
+ "gui_settings_version_label": "Ви використовуєте OnionShare {}",
+ "gui_settings_help_label": "Потрібна допомога? Перегляньте <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "gui_settings_moat_bridges_invalid": "Ви ще не запитували міст на torproject.org.",
+ "moat_captcha_placeholder": "Введіть символи із зображення",
+ "moat_captcha_submit": "Надіслати",
+ "mode_settings_website_custom_csp_checkbox": "Надсилати власний заголовок Content Security Policy",
+ "moat_contact_label": "Зв'язок з BridgeDB...",
+ "moat_captcha_reload": "Перезавантажити",
+ "mode_tor_not_connected_label": "OnionShare не під'єднано до мережі Tor",
+ "moat_bridgedb_error": "Помилка з’єднання з BridgeDB.",
+ "moat_solution_empty_error": "Ви повинні ввести символи з зображення"
}
diff --git a/desktop/src/onionshare/resources/locale/wo.json b/desktop/onionshare/resources/locale/wo.json
index e0f37715..e0f37715 100644
--- a/desktop/src/onionshare/resources/locale/wo.json
+++ b/desktop/onionshare/resources/locale/wo.json
diff --git a/desktop/src/onionshare/resources/locale/yo.json b/desktop/onionshare/resources/locale/yo.json
index 5da034d1..5da034d1 100644
--- a/desktop/src/onionshare/resources/locale/yo.json
+++ b/desktop/onionshare/resources/locale/yo.json
diff --git a/desktop/src/onionshare/resources/locale/zh_Hans.json b/desktop/onionshare/resources/locale/zh_Hans.json
index 5a036ef6..749bb9a0 100644
--- a/desktop/src/onionshare/resources/locale/zh_Hans.json
+++ b/desktop/onionshare/resources/locale/zh_Hans.json
@@ -86,16 +86,16 @@
"gui_settings_authenticate_no_auth_option": "无须认证,或者使用的是 cookie 认证",
"gui_settings_authenticate_password_option": "密码",
"gui_settings_password_label": "密码",
- "gui_settings_tor_bridges": "Tor 网桥支持",
+ "gui_settings_tor_bridges": "使用 Tor 网桥连接?",
"gui_settings_tor_bridges_no_bridges_radio_option": "不使用网桥",
"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": "警告:meek_lite 网桥会对 Tor 的运行产生极大负担。<br><br>仅在无法直接连接至 Tor,通过 obfs4 transports 连接,或通过其他网桥连接时使用。",
+ "gui_settings_meek_lite_expensive_warning": "警告:meek-azure 网桥会对 Tor 的运行产生极大负担。<br><br>仅在无法直接连接至 Tor,通过 obfs4 transports 连接,或通过其他网桥连接时使用。",
"gui_settings_tor_bridges_custom_radio_option": "使用自定义网桥",
"gui_settings_tor_bridges_custom_label": "您可以从 <a href=\"https://bridges.torproject.org/options?lang=zh_CN\">https://bridges.torproject.org</a> 获得网桥",
- "gui_settings_tor_bridges_invalid": "您所添加的网桥均无法工作。\n请再次检查或添加其它网桥。",
+ "gui_settings_tor_bridges_invalid": "您所添加的网桥均无法工作。请再次检查或添加其它网桥。",
"gui_settings_button_save": "保存",
"gui_settings_button_cancel": "取消",
"gui_settings_button_help": "帮助",
@@ -174,7 +174,7 @@
"gui_upload_finished": "",
"gui_download_in_progress": "",
"gui_open_folder_error_nautilus": "无法打开文件夹,因为 nautilus 不可用。文件在这里:{}",
- "gui_settings_language_label": "首选语言",
+ "gui_settings_language_label": "语言",
"gui_settings_language_changed_notice": "重启 OnionShare 以使应用新的语言。",
"gui_add_files": "添加文件",
"gui_add_folder": "添加文件夹",
@@ -228,7 +228,7 @@
"history_requests_tooltip": "{}个网络请求",
"gui_settings_csp_header_disabled_option": "禁用内容安全策略标题",
"gui_settings_website_label": "网站设置",
- "mode_settings_website_disable_csp_checkbox": "不发送内容安全政策(Content Security Policy) 头(允许您的网站使用第三方资源)",
+ "mode_settings_website_disable_csp_checkbox": "不发送默认的内容安全政策(Content Security Policy) 头(允许您的网站使用第三方资源)",
"mode_settings_receive_data_dir_browse_button": "浏览",
"mode_settings_receive_data_dir_label": "保存文件到",
"mode_settings_share_autostop_sharing_checkbox": "文件传送完后停止共享(取消选中可允许下载单个文件)",
@@ -307,5 +307,30 @@
"gui_qr_label_url_title": "OnionShare 地址",
"gui_copied_client_auth": "已复制私钥到剪贴板",
"gui_copied_client_auth_title": "已复制私钥",
- "gui_copy_client_auth": "复制私钥"
+ "gui_copy_client_auth": "复制私钥",
+ "gui_settings_bridge_use_checkbox": "使用网桥",
+ "gui_settings_bridge_radio_builtin": "选择内置网桥",
+ "gui_settings_bridge_none_radio_option": "不使用网桥",
+ "gui_settings_bridge_moat_button": "请求新网桥",
+ "gui_settings_bridge_custom_placeholder": "输入地址:端口(每行一个)",
+ "gui_settings_help_label": "需要帮助?参见 <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
+ "mode_settings_website_custom_csp_checkbox": "发送自定义 CSP 标头",
+ "moat_bridgedb_error": "联系 BridgeDB 时出错。",
+ "moat_solution_empty_error": "你必须输入图像中的字符",
+ "mode_tor_not_connected_label": "OnionShare 没有连接到 Tor 网络",
+ "gui_dragdrop_sandbox_flatpak": "为了使 Flatpak 沙箱更安全,不支持拖放操作。请使用“添加文件”和“添加文件夹”按钮来浏览文件。",
+ "gui_tor_settings_window_title": "Tor 设置",
+ "gui_settings_controller_extras_label": "Tor 设置",
+ "gui_settings_tor_bridges_label": "网桥帮助你在 Tor 被封锁的地方访问 Tor 网络。取决于你所在地方,一个网桥可能比另一个网桥更好用。",
+ "gui_settings_bridge_custom_radio_option": "提供一座你从可信来源处了解到的网桥",
+ "gui_settings_bridge_moat_radio_option": "从 torproject.org 请求网桥",
+ "moat_captcha_error": "解答不正确。请再试一次。",
+ "gui_settings_moat_bridges_invalid": "你尚未从 torproject.org 请求网桥。",
+ "gui_settings_stop_active_tabs_label": "一些选项卡中有服务正在运行。\n你必须停止所有服务才能更改 Tor 设置。",
+ "moat_contact_label": "正联系 BridgeDB...",
+ "gui_settings_version_label": "你正在使用 OnionShare {}",
+ "moat_captcha_label": "解决 CAPTCHA 来请求网桥。",
+ "moat_captcha_reload": "重新加载",
+ "moat_captcha_placeholder": "输入图片中字符",
+ "moat_captcha_submit": "提交"
}
diff --git a/desktop/src/onionshare/resources/locale/zh_Hant.json b/desktop/onionshare/resources/locale/zh_Hant.json
index f0a51217..f0a51217 100644
--- a/desktop/src/onionshare/resources/locale/zh_Hant.json
+++ b/desktop/onionshare/resources/locale/zh_Hant.json
diff --git a/desktop/src/onionshare/resources/onionshare-128.png b/desktop/onionshare/resources/onionshare-128.png
index 856ab4e7..856ab4e7 100644
--- a/desktop/src/onionshare/resources/onionshare-128.png
+++ b/desktop/onionshare/resources/onionshare-128.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare-16.png b/desktop/onionshare/resources/onionshare-16.png
index dea20940..dea20940 100644
--- a/desktop/src/onionshare/resources/onionshare-16.png
+++ b/desktop/onionshare/resources/onionshare-16.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare-256.png b/desktop/onionshare/resources/onionshare-256.png
index b47cd94a..b47cd94a 100644
--- a/desktop/src/onionshare/resources/onionshare-256.png
+++ b/desktop/onionshare/resources/onionshare-256.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare-32.png b/desktop/onionshare/resources/onionshare-32.png
index 14c849c9..14c849c9 100644
--- a/desktop/src/onionshare/resources/onionshare-32.png
+++ b/desktop/onionshare/resources/onionshare-32.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare-512.png b/desktop/onionshare/resources/onionshare-512.png
index a4810d04..a4810d04 100644
--- a/desktop/src/onionshare/resources/onionshare-512.png
+++ b/desktop/onionshare/resources/onionshare-512.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare-64.png b/desktop/onionshare/resources/onionshare-64.png
index 8468dc52..8468dc52 100644
--- a/desktop/src/onionshare/resources/onionshare-64.png
+++ b/desktop/onionshare/resources/onionshare-64.png
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare.icns b/desktop/onionshare/resources/onionshare.icns
index f65ad12d..f65ad12d 100644
--- a/desktop/src/onionshare/resources/onionshare.icns
+++ b/desktop/onionshare/resources/onionshare.icns
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare.ico b/desktop/onionshare/resources/onionshare.ico
index dcde4f1f..dcde4f1f 100644
--- a/desktop/src/onionshare/resources/onionshare.ico
+++ b/desktop/onionshare/resources/onionshare.ico
Binary files differ
diff --git a/desktop/src/onionshare/resources/onionshare.png b/desktop/onionshare/resources/onionshare.png
index a4810d04..a4810d04 100644
--- a/desktop/src/onionshare/resources/onionshare.png
+++ b/desktop/onionshare/resources/onionshare.png
Binary files differ
diff --git a/desktop/src/onionshare/settings_tab.py b/desktop/onionshare/settings_tab.py
index cfa3261e..cfa3261e 100644
--- a/desktop/src/onionshare/settings_tab.py
+++ b/desktop/onionshare/settings_tab.py
diff --git a/desktop/src/onionshare/strings.py b/desktop/onionshare/strings.py
index 55f56788..55f56788 100644
--- a/desktop/src/onionshare/strings.py
+++ b/desktop/onionshare/strings.py
diff --git a/desktop/src/onionshare/tab/__init__.py b/desktop/onionshare/tab/__init__.py
index 62ec4a74..62ec4a74 100644
--- a/desktop/src/onionshare/tab/__init__.py
+++ b/desktop/onionshare/tab/__init__.py
diff --git a/desktop/src/onionshare/tab/mode/__init__.py b/desktop/onionshare/tab/mode/__init__.py
index c9b5cad1..c9b5cad1 100644
--- a/desktop/src/onionshare/tab/mode/__init__.py
+++ b/desktop/onionshare/tab/mode/__init__.py
diff --git a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py b/desktop/onionshare/tab/mode/chat_mode/__init__.py
index 1081fe9d..1081fe9d 100644
--- a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
+++ b/desktop/onionshare/tab/mode/chat_mode/__init__.py
diff --git a/desktop/src/onionshare/tab/mode/file_selection.py b/desktop/onionshare/tab/mode/file_selection.py
index 1addba22..1addba22 100644
--- a/desktop/src/onionshare/tab/mode/file_selection.py
+++ b/desktop/onionshare/tab/mode/file_selection.py
diff --git a/desktop/src/onionshare/tab/mode/history.py b/desktop/onionshare/tab/mode/history.py
index 4e8fcf8e..4e8fcf8e 100644
--- a/desktop/src/onionshare/tab/mode/history.py
+++ b/desktop/onionshare/tab/mode/history.py
diff --git a/desktop/src/onionshare/tab/mode/mode_settings_widget.py b/desktop/onionshare/tab/mode/mode_settings_widget.py
index 0e80023e..0e80023e 100644
--- a/desktop/src/onionshare/tab/mode/mode_settings_widget.py
+++ b/desktop/onionshare/tab/mode/mode_settings_widget.py
diff --git a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py b/desktop/onionshare/tab/mode/receive_mode/__init__.py
index b2b2fc5a..b2b2fc5a 100644
--- a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
+++ b/desktop/onionshare/tab/mode/receive_mode/__init__.py
diff --git a/desktop/src/onionshare/tab/mode/share_mode/__init__.py b/desktop/onionshare/tab/mode/share_mode/__init__.py
index 7be93f1d..ed7f6912 100644
--- a/desktop/src/onionshare/tab/mode/share_mode/__init__.py
+++ b/desktop/onionshare/tab/mode/share_mode/__init__.py
@@ -246,7 +246,7 @@ class ShareMode(Mode):
def start_server_step3_custom(self):
"""
- Step 3 in starting the server. Remove zip progess bar, and display large filesize
+ Step 3 in starting the server. Remove zip progress bar, and display large filesize
warning, if applicable.
"""
# Remove zip progress bar
diff --git a/desktop/src/onionshare/tab/mode/share_mode/threads.py b/desktop/onionshare/tab/mode/share_mode/threads.py
index 839d30ea..839d30ea 100644
--- a/desktop/src/onionshare/tab/mode/share_mode/threads.py
+++ b/desktop/onionshare/tab/mode/share_mode/threads.py
diff --git a/desktop/src/onionshare/tab/mode/website_mode/__init__.py b/desktop/onionshare/tab/mode/website_mode/__init__.py
index 0acbc1a2..0acbc1a2 100644
--- a/desktop/src/onionshare/tab/mode/website_mode/__init__.py
+++ b/desktop/onionshare/tab/mode/website_mode/__init__.py
diff --git a/desktop/src/onionshare/tab/server_status.py b/desktop/onionshare/tab/server_status.py
index 115acfd5..115acfd5 100644
--- a/desktop/src/onionshare/tab/server_status.py
+++ b/desktop/onionshare/tab/server_status.py
diff --git a/desktop/src/onionshare/tab/tab.py b/desktop/onionshare/tab/tab.py
index 2e592771..b0aa25df 100644
--- a/desktop/src/onionshare/tab/tab.py
+++ b/desktop/onionshare/tab/tab.py
@@ -660,9 +660,6 @@ class Tab(QtWidgets.QWidget):
# Close
if self.close_dialog.clickedButton() == self.close_dialog.accept_button:
- self.common.log("Tab", "close_tab", "close, closing tab")
- self.get_mode().stop_server()
- self.get_mode().web.cleanup()
return True
# Cancel
else:
@@ -671,8 +668,10 @@ class Tab(QtWidgets.QWidget):
def cleanup(self):
self.common.log("Tab", "cleanup", f"tab_id={self.tab_id}")
- if self.get_mode() and self.get_mode().web_thread:
- self.get_mode().web.stop(self.get_mode().app.port)
- self.get_mode().web_thread.quit()
- self.get_mode().web_thread.wait()
+ if self.get_mode():
+ if self.get_mode().web_thread:
+ self.get_mode().web.stop(self.get_mode().app.port)
+ self.get_mode().web_thread.quit()
+ self.get_mode().web_thread.wait()
+
self.get_mode().web.cleanup()
diff --git a/desktop/src/onionshare/tab_widget.py b/desktop/onionshare/tab_widget.py
index 7162fcc4..c43a9b9a 100644
--- a/desktop/src/onionshare/tab_widget.py
+++ b/desktop/onionshare/tab_widget.py
@@ -316,6 +316,7 @@ class TabWidget(QtWidgets.QTabWidget):
self.common.log("TabWidget", "closing a service tab")
if tab.close_tab():
self.common.log("TabWidget", "user is okay with closing the tab")
+ tab.cleanup()
# If the tab is persistent, delete the settings file from disk
if tab.settings.get("persistent", "enabled"):
diff --git a/desktop/src/onionshare/threads.py b/desktop/onionshare/threads.py
index b02c6f21..b02c6f21 100644
--- a/desktop/src/onionshare/threads.py
+++ b/desktop/onionshare/threads.py
diff --git a/desktop/src/onionshare/tor_connection.py b/desktop/onionshare/tor_connection.py
index 2cc599c4..d17ea7cb 100644
--- a/desktop/src/onionshare/tor_connection.py
+++ b/desktop/onionshare/tor_connection.py
@@ -119,6 +119,7 @@ class TorConnectionDialog(QtWidgets.QProgressDialog):
self.active = False
# Close the dialog after connecting
self.setValue(self.maximum())
+ self.success.emit()
def _canceled_connecting_to_tor(self):
self.common.log("TorConnectionDialog", "_canceled_connecting_to_tor")
diff --git a/desktop/src/onionshare/tor_settings_tab.py b/desktop/onionshare/tor_settings_tab.py
index e28e5260..e28e5260 100644
--- a/desktop/src/onionshare/tor_settings_tab.py
+++ b/desktop/onionshare/tor_settings_tab.py
diff --git a/desktop/src/onionshare/update_checker.py b/desktop/onionshare/update_checker.py
index e9dbc060..e9dbc060 100644
--- a/desktop/src/onionshare/update_checker.py
+++ b/desktop/onionshare/update_checker.py
diff --git a/desktop/src/onionshare/widgets.py b/desktop/onionshare/widgets.py
index 761df212..761df212 100644
--- a/desktop/src/onionshare/widgets.py
+++ b/desktop/onionshare/widgets.py
diff --git a/desktop/src/org.onionshare.OnionShare.appdata.xml b/desktop/org.onionshare.OnionShare.appdata.xml
index 1bdac5f8..1bdac5f8 100644
--- a/desktop/src/org.onionshare.OnionShare.appdata.xml
+++ b/desktop/org.onionshare.OnionShare.appdata.xml
diff --git a/desktop/src/org.onionshare.OnionShare.desktop b/desktop/org.onionshare.OnionShare.desktop
index 479dd395..479dd395 100644
--- a/desktop/src/org.onionshare.OnionShare.desktop
+++ b/desktop/org.onionshare.OnionShare.desktop
diff --git a/desktop/src/org.onionshare.OnionShare.svg b/desktop/org.onionshare.OnionShare.svg
index 502da0d8..502da0d8 100644
--- a/desktop/src/org.onionshare.OnionShare.svg
+++ b/desktop/org.onionshare.OnionShare.svg
diff --git a/desktop/package/macos/Entitlements.plist b/desktop/package/Entitlements.plist
index 8c5c4268..8c5c4268 100644
--- a/desktop/package/macos/Entitlements.plist
+++ b/desktop/package/Entitlements.plist
diff --git a/desktop/package/build-mac.py b/desktop/package/build-mac.py
new file mode 100755
index 00000000..9d2a0dfd
--- /dev/null
+++ b/desktop/package/build-mac.py
@@ -0,0 +1,308 @@
+#!/usr/bin/env python3
+import os
+import inspect
+import subprocess
+import shutil
+import itertools
+import glob
+
+root = os.path.dirname(
+ os.path.dirname(
+ os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
+ )
+)
+
+
+def run(cmd, cwd=None, error_ok=False):
+ print(f"{cmd} # cwd={cwd}")
+ subprocess.run(cmd, cwd=cwd, check=True)
+
+
+def get_size(dir):
+ size = 0
+ for path, dirs, files in os.walk(dir):
+ for f in files:
+ fp = os.path.join(path, f)
+ size += os.path.getsize(fp)
+ return size
+
+
+def codesign(path, entitlements, identity):
+ run(
+ [
+ "codesign",
+ "--sign",
+ identity,
+ "--entitlements",
+ str(entitlements),
+ "--timestamp",
+ "--deep",
+ "--force",
+ "--options",
+ "runtime,library",
+ str(path),
+ ]
+ )
+
+
+def main():
+ desktop_dir = f"{root}/desktop"
+ app_dir = f"{desktop_dir}/build/OnionShare.app"
+
+ print("○ Clean up from last build")
+ if os.path.exists(f"{desktop_dir}/build"):
+ shutil.rmtree(f"{desktop_dir}/build")
+ if os.path.exists(f"{desktop_dir}/dist"):
+ shutil.rmtree(f"{desktop_dir}/dist")
+
+ print("○ Building binaries")
+ run(
+ [
+ shutil.which("python"),
+ "setup-freeze.py",
+ "bdist_mac",
+ ],
+ desktop_dir,
+ )
+ before_size = get_size(f"{app_dir}")
+
+ print("○ Delete unused Qt Frameworks")
+ for framework in [
+ "Qt3DAnimation",
+ "Qt3DCore",
+ "Qt3DExtras",
+ "Qt3DInput",
+ "Qt3DLogic",
+ "Qt3DQuick",
+ "Qt3DQuickAnimation",
+ "Qt3DQuickExtras",
+ "Qt3DQuickInput",
+ "Qt3DQuickRender",
+ "Qt3DQuickScene2D",
+ "Qt3DRender",
+ "QtBluetooth",
+ "QtBodymovin",
+ "QtCharts",
+ "QtConcurrent",
+ "QtDataVisualization",
+ "QtDesigner",
+ "QtDesignerComponents",
+ "QtGamepad",
+ "QtHelp",
+ "QtLocation",
+ "QtMultimedia",
+ "QtMultimediaQuick",
+ "QtMultimediaWidgets",
+ "QtNetwork",
+ "QtNetworkAuth",
+ "QtNfc",
+ "QtOpenGL",
+ "QtPdf",
+ "QtPdfWidgets",
+ "QtPositioning",
+ "QtPositioningQuick",
+ "QtPrintSupport",
+ "QtPurchasing",
+ "QtQml",
+ "QtQmlModels",
+ "QtQmlWorkerScript",
+ "QtQuick",
+ "QtQuick3D",
+ "QtQuick3DAssetImport",
+ "QtQuick3DRender",
+ "QtQuick3DRuntimeRender",
+ "QtQuick3DUtils",
+ "QtQuickControls2",
+ "QtQuickParticles",
+ "QtQuickShapes",
+ "QtQuickTemplates2",
+ "QtQuickTest",
+ "QtQuickWidgets",
+ "QtRemoteObjects",
+ "QtRepParser",
+ "QtScript",
+ "QtScriptTools",
+ "QtScxml",
+ "QtSensors",
+ "QtSerialBus",
+ "QtSerialPort",
+ "QtSql",
+ "QtSvg",
+ "QtTest",
+ "QtTextToSpeech",
+ "QtUiPlugin",
+ "QtVirtualKeyboard",
+ "QtWebChannel",
+ "QtWebEngine",
+ "QtWebEngineCore",
+ "QtWebEngineWidgets",
+ "QtWebSockets",
+ "QtWebView",
+ "QtXml",
+ "QtXmlPatterns",
+ ]:
+ shutil.rmtree(
+ f"{app_dir}/Contents/MacOS/lib/PySide2/Qt/lib/{framework}.framework"
+ )
+ try:
+ os.remove(
+ f"{app_dir}/Contents/MacOS/lib/PySide2/{framework}.abi3.so"
+ )
+ os.remove(
+ f"{app_dir}/Contents/MacOS/lib/PySide2/{framework}.pyi"
+ )
+ except FileNotFoundError:
+ pass
+
+ print("○ Move files around so Apple will notarize")
+ # https://github.com/marcelotduarte/cx_Freeze/issues/594
+ # https://gist.github.com/TechnicalPirate/259a9c24878fcad948452cb148af2a2c#file-custom_bdist_mac-py-L415
+
+ # Move lib from MacOS into Resources
+ os.rename(
+ f"{app_dir}/Contents/MacOS/lib",
+ f"{app_dir}/Contents/Resources/lib",
+ )
+ run(
+ ["ln", "-s", "../Resources/lib"],
+ cwd=f"{app_dir}/Contents/MacOS",
+ )
+
+ # Move frameworks from Resources/lib into Frameworks
+ os.makedirs(f"{app_dir}/Contents/Frameworks", exist_ok=True)
+ for framework_filename in glob.glob(
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/lib/Qt*.framework"
+ ):
+ basename = os.path.basename(framework_filename)
+
+ os.rename(framework_filename, f"{app_dir}/Contents/Frameworks/{basename}")
+ run(
+ ["ln", "-s", f"../../../../../Frameworks/{basename}"],
+ cwd=f"{app_dir}/Contents/Resources/lib/PySide2/Qt/lib",
+ )
+ if os.path.exists(f"{app_dir}/Contents/Frameworks/{basename}/Resources"):
+ os.rename(
+ f"{app_dir}/Contents/Frameworks/{basename}/Resources",
+ f"{app_dir}/Contents/Frameworks/{basename}/Versions/5/Resources"
+ )
+ run(
+ ["ln", "-s", "Versions/5/Resources"],
+ cwd=f"{app_dir}/Contents/Frameworks/{basename}",
+ )
+
+ run(
+ ["ln", "-s", "5", "Current"],
+ cwd=f"{app_dir}/Contents/Frameworks/{basename}/Versions",
+ )
+
+ # Move Qt plugins
+ os.rename(
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/plugins",
+ f"{app_dir}/Contents/Frameworks/plugins",
+ )
+ run(
+ ["ln", "-s", "../../../../Frameworks/plugins"],
+ cwd=f"{app_dir}/Contents/Resources/lib/PySide2/Qt",
+ )
+
+ print("○ Delete more unused PySide2 stuff to save space")
+ for filename in [
+ f"{app_dir}/Contents/Resources/lib/PySide2/Designer.app",
+ f"{app_dir}/Contents/Resources/lib/PySide2/examples",
+ f"{app_dir}/Contents/Resources/lib/PySide2/glue",
+ f"{app_dir}/Contents/Resources/lib/PySide2/include",
+ f"{app_dir}/Contents/Resources/lib/PySide2/pyside2-lupdate",
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/qml",
+ f"{app_dir}/Contents/Resources/lib/PySide2/libpyside2.abi3.5.15.dylib",
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/lib/QtRepParser.framework",
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/lib/QtUiPlugin.framework",
+ f"{app_dir}/Contents/Resources/lib/PySide2/Qt/lib/QtWebEngineCore.framework/Helpers",
+ f"{app_dir}/Contents/Resources/lib/shiboken2/libshiboken2.abi3.5.15.dylib",
+ f"{app_dir}/Contents/Resources/lib/shiboken2/docs",
+ f"{app_dir}/Contents/Resources/lib/PySide2/rcc",
+ f"{app_dir}/Contents/Resources/lib/PySide2/uic",
+ ]:
+ if os.path.isdir(filename):
+ shutil.rmtree(filename)
+ elif os.path.isfile(filename):
+ os.remove(filename)
+ else:
+ print(f"Cannot delete, filename not found: {filename}")
+
+ after_size = get_size(f"{app_dir}")
+ freed_bytes = before_size - after_size
+ freed_mb = int(freed_bytes / 1024 / 1024)
+ print(f"○ Freed {freed_mb} mb")
+
+ print("○ Sign app bundle")
+ identity_name_application = "Developer ID Application: Micah Lee (N9B95FDWH4)"
+ entitlements_plist_path = f"{desktop_dir}/package/Entitlements.plist"
+
+ for path in itertools.chain(
+ glob.glob(f"{app_dir}/Contents/Resources/lib/**/*.so", recursive=True),
+ glob.glob(f"{app_dir}/Contents/Resources/lib/**/*.dylib", recursive=True),
+ [
+ f"{app_dir}/Contents/Frameworks/QtCore.framework/Versions/5/QtCore",
+ f"{app_dir}/Contents/Frameworks/QtDBus.framework/Versions/5/QtDBus",
+ f"{app_dir}/Contents/Frameworks/QtGui.framework/Versions/5/QtGui",
+ f"{app_dir}/Contents/Frameworks/QtMacExtras.framework/Versions/5/QtMacExtras",
+ f"{app_dir}/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets",
+ f"{app_dir}/Contents/Resources/lib/Python",
+ f"{app_dir}/Contents/Resources/lib/onionshare/resources/tor/meek-client",
+ f"{app_dir}/Contents/Resources/lib/onionshare/resources/tor/obfs4proxy",
+ f"{app_dir}/Contents/Resources/lib/onionshare/resources/tor/snowflake-client",
+ f"{app_dir}/Contents/Resources/lib/onionshare/resources/tor/tor",
+ f"{app_dir}/Contents/Resources/lib/onionshare/resources/tor/libevent-2.1.7.dylib",
+ f"{app_dir}/Contents/MacOS/onionshare",
+ f"{app_dir}/Contents/MacOS/onionshare-cli",
+ f"{app_dir}",
+ ],
+ ):
+ codesign(path, entitlements_plist_path, identity_name_application)
+
+ print(f"○ Signed app bundle: {app_dir}")
+
+ if not os.path.exists("/usr/local/bin/create-dmg"):
+ print("○ Error: create-dmg is not installed")
+ return
+
+ print("○ Create DMG")
+ version_filename = f"{root}/cli/onionshare_cli/resources/version.txt"
+ with open(version_filename) as f:
+ version = f.read().strip()
+
+ os.makedirs(f"{desktop_dir}/dist", exist_ok=True)
+ dmg_path = f"{desktop_dir}/dist/OnionShare-{version}.dmg"
+ run(
+ [
+ "create-dmg",
+ "--volname",
+ "OnionShare",
+ "--volicon",
+ f"{desktop_dir}/onionshare/resources/onionshare.icns",
+ "--window-size",
+ "400",
+ "200",
+ "--icon-size",
+ "100",
+ "--icon",
+ "OnionShare.app",
+ "100",
+ "70",
+ "--hide-extension",
+ "OnionShare.app",
+ "--app-drop-link",
+ "300",
+ "70",
+ dmg_path,
+ f"{app_dir}",
+ "--identity",
+ identity_name_application,
+ ]
+ )
+
+ print(f"○ Finished building DMG: {dmg_path}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/desktop/package/build-windows.py b/desktop/package/build-windows.py
new file mode 100644
index 00000000..9984dd4f
--- /dev/null
+++ b/desktop/package/build-windows.py
@@ -0,0 +1,587 @@
+#!/usr/bin/env python3
+import os
+import inspect
+import subprocess
+import shutil
+import uuid
+import xml.etree.ElementTree as ET
+
+
+root = os.path.dirname(
+ os.path.dirname(
+ os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
+ )
+)
+
+
+def run(cmd, cwd=None, error_ok=False):
+ print(cmd)
+ try:
+ subprocess.run(cmd, cwd=cwd, check=True)
+ except subprocess.CalledProcessError as e:
+ if not error_ok:
+ raise subprocess.CalledProcessError(e)
+
+
+def sign(filename, cwd=None):
+ run(
+ [
+ shutil.which("signtool"),
+ "sign",
+ "/v",
+ "/d",
+ "OnionShare",
+ "/sha1",
+ "bb1d265ab02272e8fc742f149dcf8751cac63f50",
+ "/fd",
+ "SHA256",
+ "/td",
+ "SHA256",
+ "/tr",
+ "http://timestamp.digicert.com",
+ filename,
+ ],
+ cwd,
+ )
+
+
+def get_size(dir):
+ size = 0
+ for path, dirs, files in os.walk(dir):
+ for f in files:
+ fp = os.path.join(path, f)
+ size += os.path.getsize(fp)
+ return size
+
+
+def wix_build_data(dirname, dir_prefix, id_, name):
+ data = {
+ "id": id_,
+ "name": name,
+ "files": [],
+ "dirs": [],
+ }
+
+ for basename in os.listdir(dirname):
+ filename = os.path.join(dirname, basename)
+ if os.path.isfile(filename):
+ data["files"].append(os.path.join(dir_prefix, basename))
+ elif os.path.isdir(filename):
+ if id_ == "INSTALLDIR":
+ id_prefix = "Folder"
+ else:
+ id_prefix = id_
+
+ # Skip lib/Pyside2/Examples folder
+ if "\\build\\exe.win32-3.9\\lib\\PySide2\\examples" in dirname:
+ continue
+
+ id_value = f"{id_prefix}{basename.capitalize().replace('-', '_')}"
+ data["dirs"].append(
+ wix_build_data(
+ os.path.join(dirname, basename),
+ os.path.join(dir_prefix, basename),
+ id_value,
+ basename,
+ )
+ )
+
+ if len(data["files"]) > 0:
+ if id_ == "INSTALLDIR":
+ data["component_id"] = "ApplicationFiles"
+ else:
+ data["component_id"] = "FolderComponent" + id_[len("Folder") :]
+ data["component_guid"] = str(uuid.uuid4())
+
+ return data
+
+
+def wix_build_dir_xml(root, data):
+ attrs = {}
+ if "id" in data:
+ attrs["Id"] = data["id"]
+ if "name" in data:
+ attrs["Name"] = data["name"]
+ el = ET.SubElement(root, "Directory", attrs)
+ for subdata in data["dirs"]:
+ wix_build_dir_xml(el, subdata)
+
+ # If this is the ProgramMenuFolder, add the menu component
+ if "id" in data and data["id"] == "ProgramMenuFolder":
+ component_el = ET.SubElement(
+ el,
+ "Component",
+ Id="ApplicationShortcuts",
+ Guid="539e7de8-a124-4c09-aa55-0dd516aad7bc",
+ )
+ ET.SubElement(
+ component_el,
+ "Shortcut",
+ Id="ApplicationShortcut1",
+ Name="OnionShare",
+ Description="OnionShare",
+ Target="[INSTALLDIR]onionshare.exe",
+ WorkingDirectory="INSTALLDIR",
+ )
+ ET.SubElement(
+ component_el,
+ "RegistryValue",
+ Root="HKCU",
+ Key="Software\OnionShare",
+ Name="installed",
+ Type="integer",
+ Value="1",
+ KeyPath="yes",
+ )
+
+
+def wix_build_components_xml(root, data):
+ component_ids = []
+ if "component_id" in data:
+ component_ids.append(data["component_id"])
+
+ for subdata in data["dirs"]:
+ if "component_guid" in subdata:
+ dir_ref_el = ET.SubElement(root, "DirectoryRef", Id=subdata["id"])
+ component_el = ET.SubElement(
+ dir_ref_el,
+ "Component",
+ Id=subdata["component_id"],
+ Guid=subdata["component_guid"],
+ )
+ for filename in subdata["files"]:
+ file_el = ET.SubElement(
+ component_el, "File", Source=filename, Id="file_" + uuid.uuid4().hex
+ )
+
+ component_ids += wix_build_components_xml(root, subdata)
+
+ return component_ids
+
+
+def main():
+ desktop_dir = os.path.join(root, "desktop")
+
+ print("○ Clean up from last build")
+ if os.path.exists(os.path.join(desktop_dir, "build")):
+ shutil.rmtree(os.path.join(desktop_dir, "build"))
+ if os.path.exists(os.path.join(desktop_dir, "dist")):
+ shutil.rmtree(os.path.join(desktop_dir, "dist"))
+
+ print("○ Building binaries")
+ run(
+ [
+ shutil.which("python"),
+ "setup-freeze.py",
+ "build",
+ ],
+ desktop_dir,
+ )
+ before_size = get_size(os.path.join(desktop_dir, "build", "exe.win32-3.9"))
+
+ print("○ Delete unused PySide2 stuff to save space")
+ for dirname in ["examples", "qml"]:
+ shutil.rmtree(
+ os.path.join(
+ desktop_dir, "build", "exe.win32-3.9", "lib", "PySide2", dirname
+ )
+ )
+ for filename in [
+ "lconvert.exe",
+ "linguist.exe",
+ "lrelease.exe",
+ "lupdate.exe",
+ "plugins/assetimporters/assimp.dll",
+ "plugins/assetimporters/uip.dll",
+ "plugins/audio/qtaudio_wasapi.dll",
+ "plugins/audio/qtaudio_windows.dll",
+ "plugins/bearer/qgenericbearer.dll",
+ "plugins/canbus/qtpassthrucanbus.dll",
+ "plugins/canbus/qtpeakcanbus.dll",
+ "plugins/canbus/qtsysteccanbus.dll",
+ "plugins/canbus/qttinycanbus.dll",
+ "plugins/canbus/qtvectorcanbus.dll",
+ "plugins/canbus/qtvirtualcanbus.dll",
+ "plugins/gamepads/xinputgamepad.dll",
+ "plugins/generic/qtuiotouchplugin.dll",
+ "plugins/geometryloaders/defaultgeometryloader.dll",
+ "plugins/geometryloaders/gltfgeometryloader.dll",
+ "plugins/geoservices/qtgeoservices_esri.dll",
+ "plugins/geoservices/qtgeoservices_itemsoverlay.dll",
+ "plugins/geoservices/qtgeoservices_mapbox.dll",
+ "plugins/geoservices/qtgeoservices_nokia.dll",
+ "plugins/geoservices/qtgeoservices_osm.dll",
+ "plugins/mediaservice/dsengine.dll",
+ "plugins/mediaservice/qtmedia_audioengine.dll",
+ "plugins/mediaservice/wmfengine.dll",
+ "plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll",
+ "plugins/platforms/qdirect2d.dll",
+ "plugins/platforms/qoffscreen.dll",
+ "plugins/platforms/qwebgl.dll",
+ "plugins/platformthemes/qxdgdesktopportal.dll",
+ "plugins/playlistformats/qtmultimedia_m3u.dll",
+ "plugins/position/qtposition_positionpoll.dll",
+ "plugins/position/qtposition_serialnmea.dll",
+ "plugins/position/qtposition_winrt.dll",
+ "plugins/printsupport/windowsprintersupport.dll",
+ "plugins/qmltooling/qmldbg_debugger.dll",
+ "plugins/qmltooling/qmldbg_inspector.dll",
+ "plugins/qmltooling/qmldbg_local.dll",
+ "plugins/qmltooling/qmldbg_messages.dll",
+ "plugins/qmltooling/qmldbg_native.dll",
+ "plugins/qmltooling/qmldbg_nativedebugger.dll",
+ "plugins/qmltooling/qmldbg_preview.dll",
+ "plugins/qmltooling/qmldbg_profiler.dll",
+ "plugins/qmltooling/qmldbg_quickprofiler.dll",
+ "plugins/qmltooling/qmldbg_server.dll",
+ "plugins/qmltooling/qmldbg_tcp.dll",
+ "plugins/renderers/openglrenderer.dll",
+ "plugins/renderplugins/scene2d.dll",
+ "plugins/scenegraph/qsgd3d12backend.dll",
+ "plugins/sceneparsers/gltfsceneexport.dll",
+ "plugins/sceneparsers/gltfsceneimport.dll",
+ "plugins/sensorgestures/qtsensorgestures_plugin.dll",
+ "plugins/sensorgestures/qtsensorgestures_shakeplugin.dll",
+ "plugins/sensors/qtsensors_generic.dll",
+ "plugins/sqldrivers/qsqlite.dll",
+ "plugins/sqldrivers/qsqlodbc.dll",
+ "plugins/sqldrivers/qsqlpsql.dll",
+ "plugins/styles/qwindowsvistastyle.dll",
+ "plugins/texttospeech/qtexttospeech_sapi.dll",
+ "plugins/virtualkeyboard/qtvirtualkeyboard_hangul.dll",
+ "plugins/virtualkeyboard/qtvirtualkeyboard_openwnn.dll",
+ "plugins/virtualkeyboard/qtvirtualkeyboard_pinyin.dll",
+ "plugins/virtualkeyboard/qtvirtualkeyboard_tcime.dll",
+ "plugins/virtualkeyboard/qtvirtualkeyboard_thai.dll",
+ "plugins/webview/qtwebview_webengine.dll",
+ "pyside2-lupdate.exe",
+ "Qt3DAnimation.pyd",
+ "Qt3DAnimation.pyi",
+ "Qt3DCore.pyd",
+ "Qt3DCore.pyi",
+ "Qt3DExtras.pyd",
+ "Qt3DExtras.pyi",
+ "Qt3DInput.pyd",
+ "Qt3DInput.pyi",
+ "Qt3DLogic.pyd",
+ "Qt3DLogic.pyi",
+ "Qt3DRender.pyd",
+ "Qt3DRender.pyi",
+ "Qt53DAnimation.dll",
+ "Qt53DCore.dll",
+ "Qt53DExtras.dll",
+ "Qt53DInput.dll",
+ "Qt53DLogic.dll",
+ "Qt53DQuick.dll",
+ "Qt53DQuickAnimation.dll",
+ "Qt53DQuickExtras.dll",
+ "Qt53DQuickInput.dll",
+ "Qt53DQuickRender.dll",
+ "Qt53DQuickScene2D.dll",
+ "Qt53DRender.dll",
+ "Qt5Bluetooth.dll",
+ "Qt5Bodymovin.dll",
+ "Qt5Charts.dll",
+ "Qt5Concurrent.dll",
+ "Qt5DataVisualization.dll",
+ "Qt5DBus.dll",
+ "Qt5Designer.dll",
+ "Qt5DesignerComponents.dll",
+ "Qt5Gamepad.dll",
+ "Qt5Help.dll",
+ "Qt5Location.dll",
+ "Qt5Multimedia.dll",
+ "Qt5MultimediaQuick.dll",
+ "Qt5MultimediaWidgets.dll",
+ "Qt5Nfc.dll",
+ "Qt5OpenGL.dll",
+ "Qt5Pdf.dll",
+ "Qt5PdfWidgets.dll",
+ "Qt5Positioning.dll",
+ "Qt5PositioningQuick.dll",
+ "Qt5PrintSupport.dll",
+ "Qt5Purchasing.dll",
+ "Qt5Quick.dll",
+ "Qt5Quick3D.dll",
+ "Qt5Quick3DAssetImport.dll",
+ "Qt5Quick3DRender.dll",
+ "Qt5Quick3DRuntimeRender.dll",
+ "Qt5Quick3DUtils.dll",
+ "Qt5QuickControls2.dll",
+ "Qt5QuickParticles.dll",
+ "Qt5QuickShapes.dll",
+ "Qt5QuickTemplates2.dll",
+ "Qt5QuickTest.dll",
+ "Qt5QuickWidgets.dll",
+ "Qt5RemoteObjects.dll",
+ "Qt5Script.dll",
+ "Qt5ScriptTools.dll",
+ "Qt5Scxml.dll",
+ "Qt5Sensors.dll",
+ "Qt5SerialBus.dll",
+ "Qt5SerialPort.dll",
+ "Qt5Sql.dll",
+ "Qt5Svg.dll",
+ "Qt5Test.dll",
+ "Qt5TextToSpeech.dll",
+ "Qt5VirtualKeyboard.dll",
+ "Qt5WebChannel.dll",
+ "Qt5WebEngine.dll",
+ "Qt5WebEngineCore.dll",
+ "Qt5WebEngineWidgets.dll",
+ "Qt5WebSockets.dll",
+ "Qt5WebView.dll",
+ "Qt5Xml.dll",
+ "Qt5XmlPatterns.dll",
+ "QtAxContainer.pyd",
+ "QtAxContainer.pyi",
+ "QtCharts.pyd",
+ "QtCharts.pyi",
+ "QtConcurrent.pyd",
+ "QtConcurrent.pyi",
+ "QtDataVisualization.pyd",
+ "QtDataVisualization.pyi",
+ "qtdiag.exe",
+ "QtHelp.pyd",
+ "QtHelp.pyi",
+ "QtLocation.pyd",
+ "QtLocation.pyi",
+ "QtMultimedia.pyd",
+ "QtMultimedia.pyi",
+ "QtMultimediaWidgets.pyd",
+ "QtMultimediaWidgets.pyi",
+ "QtNetwork.pyd",
+ "QtNetwork.pyi",
+ "QtOpenGL.pyd",
+ "QtOpenGL.pyi",
+ "QtOpenGLFunctions.pyd",
+ "QtOpenGLFunctions.pyi",
+ "QtPositioning.pyd",
+ "QtPositioning.pyi",
+ "QtPrintSupport.pyd",
+ "QtPrintSupport.pyi",
+ "QtQml.pyd",
+ "QtQml.pyi",
+ "QtQuick.pyd",
+ "QtQuick.pyi",
+ "QtQuickControls2.pyd",
+ "QtQuickControls2.pyi",
+ "QtQuickWidgets.pyd",
+ "QtQuickWidgets.pyi",
+ "QtRemoteObjects.pyd",
+ "QtRemoteObjects.pyi",
+ "QtScript.pyd",
+ "QtScript.pyi",
+ "QtScriptTools.pyd",
+ "QtScriptTools.pyi",
+ "QtScxml.pyd",
+ "QtScxml.pyi",
+ "QtSensors.pyd",
+ "QtSensors.pyi",
+ "QtSerialPort.pyd",
+ "QtSerialPort.pyi",
+ "QtSql.pyd",
+ "QtSql.pyi",
+ "QtSvg.pyd",
+ "QtSvg.pyi",
+ "QtTest.pyd",
+ "QtTest.pyi",
+ "QtTextToSpeech.pyd",
+ "QtTextToSpeech.pyi",
+ "QtUiTools.pyd",
+ "QtUiTools.pyi",
+ "QtWebChannel.pyd",
+ "QtWebChannel.pyi",
+ "QtWebEngine.pyd",
+ "QtWebEngine.pyi",
+ "QtWebEngineCore.pyd",
+ "QtWebEngineCore.pyi",
+ "QtWebEngineProcess.exe",
+ "QtWebEngineWidgets.pyd",
+ "QtWebEngineWidgets.pyi",
+ "QtWebSockets.pyd",
+ "QtWebSockets.pyi",
+ "QtWinExtras.pyd",
+ "QtWinExtras.pyi",
+ "QtXml.pyd",
+ "QtXml.pyi",
+ "QtXmlPatterns.pyd",
+ "QtXmlPatterns.pyi",
+ "rcc.exe",
+ "uic.exe",
+ ]:
+ os.remove(
+ os.path.join(
+ desktop_dir,
+ "build",
+ "exe.win32-3.9",
+ "lib",
+ "PySide2",
+ filename.replace("/", "\\"),
+ )
+ )
+
+ after_size = get_size(os.path.join(desktop_dir, "build", "exe.win32-3.9"))
+ freed_bytes = before_size - after_size
+ freed_mb = int(freed_bytes / 1024 / 1024)
+ print(f"○ Freed {freed_mb} mb")
+
+ print(f"○ Signing onionshare.exe")
+ sign(os.path.join("build", "exe.win32-3.9", "onionshare.exe"), desktop_dir)
+
+ print(f"○ Signing onionshare-cli.exe")
+ sign(os.path.join("build", "exe.win32-3.9", "onionshare-cli.exe"), desktop_dir)
+
+ print(f"○ Build the WiX file")
+ version_filename = os.path.join(
+ root, "cli", "onionshare_cli", "resources", "version.txt"
+ )
+ with open(version_filename) as f:
+ version = f.read().strip()
+
+ dist_dir = os.path.join(
+ root,
+ "desktop",
+ "build",
+ "exe.win32-3.9",
+ )
+
+ data = {
+ "id": "TARGETDIR",
+ "name": "SourceDir",
+ "dirs": [
+ {
+ "id": "ProgramFilesFolder",
+ "dirs": [],
+ },
+ {
+ "id": "ProgramMenuFolder",
+ "dirs": [],
+ },
+ ],
+ }
+
+ data["dirs"][0]["dirs"].append(
+ wix_build_data(
+ dist_dir,
+ "exe.win32-3.9",
+ "INSTALLDIR",
+ "OnionShare",
+ )
+ )
+
+ root_el = ET.Element("Wix", xmlns="http://schemas.microsoft.com/wix/2006/wi")
+ product_el = ET.SubElement(
+ root_el,
+ "Product",
+ Name="OnionShare",
+ Manufacturer="Micah Lee, et al.",
+ Id="*",
+ UpgradeCode="$(var.ProductUpgradeCode)",
+ Language="1033",
+ Codepage="1252",
+ Version="$(var.ProductVersion)",
+ )
+ ET.SubElement(
+ product_el,
+ "Package",
+ Id="*",
+ Keywords="Installer",
+ Description="OnionShare $(var.ProductVersion) Installer",
+ Manufacturer="Micah Lee, et al.",
+ InstallerVersion="100",
+ Languages="1033",
+ Compressed="yes",
+ SummaryCodepage="1252",
+ )
+ ET.SubElement(product_el, "Media", Id="1", Cabinet="product.cab", EmbedCab="yes")
+ ET.SubElement(
+ product_el,
+ "Icon",
+ Id="ProductIcon",
+ SourceFile="..\\onionshare\\resources\\onionshare.ico",
+ )
+ ET.SubElement(product_el, "Property", Id="ARPPRODUCTICON", Value="ProductIcon")
+ ET.SubElement(
+ product_el,
+ "Property",
+ Id="ARPHELPLINK",
+ Value="https://docs.onionshare.org",
+ )
+ ET.SubElement(
+ product_el,
+ "Property",
+ Id="ARPURLINFOABOUT",
+ Value="https://onionshare.org",
+ )
+ ET.SubElement(product_el, "UIRef", Id="WixUI_Minimal")
+ ET.SubElement(product_el, "UIRef", Id="WixUI_ErrorProgressText")
+ ET.SubElement(
+ product_el,
+ "WixVariable",
+ Id="WixUILicenseRtf",
+ Value="..\\package\\license.rtf",
+ )
+ ET.SubElement(
+ product_el,
+ "WixVariable",
+ Id="WixUIDialogBmp",
+ Value="..\\package\\dialog.bmp",
+ )
+ ET.SubElement(
+ product_el,
+ "MajorUpgrade",
+ AllowSameVersionUpgrades="yes",
+ DowngradeErrorMessage="A newer version of [ProductName] is already installed. If you are sure you want to downgrade, remove the existing installation via Programs and Features.",
+ )
+
+ wix_build_dir_xml(product_el, data)
+ component_ids = wix_build_components_xml(product_el, data)
+
+ feature_el = ET.SubElement(product_el, "Feature", Id="DefaultFeature", Level="1")
+ for component_id in component_ids:
+ ET.SubElement(feature_el, "ComponentRef", Id=component_id)
+ ET.SubElement(feature_el, "ComponentRef", Id="ApplicationShortcuts")
+
+ with open(os.path.join(root, "desktop", "build", "OnionShare.wxs"), "w") as f:
+ f.write('<?xml version="1.0" encoding="windows-1252"?>\n')
+ f.write(f'<?define ProductVersion = "{version}"?>\n')
+ f.write(
+ '<?define ProductUpgradeCode = "12b9695c-965b-4be0-bc33-21274e809576"?>\n'
+ )
+
+ ET.indent(root_el)
+ f.write(ET.tostring(root_el).decode())
+
+ print(f"○ Build the MSI")
+ run(
+ [shutil.which("candle.exe"), "OnionShare.wxs"],
+ os.path.join(desktop_dir, "build"),
+ )
+ run(
+ [shutil.which("light.exe"), "-ext", "WixUIExtension", "OnionShare.wixobj"],
+ os.path.join(desktop_dir, "build"),
+ )
+
+ print(f"○ Prepare OnionShare.msi for signing")
+ run(
+ [
+ shutil.which("insignia.exe"),
+ "-im",
+ os.path.join(desktop_dir, "build", "OnionShare.msi"),
+ ],
+ error_ok=True,
+ )
+ sign(os.path.join(desktop_dir, "build", "OnionShare.msi"))
+
+ final_msi_filename = os.path.join(desktop_dir, "dist", f"OnionShare-{version}.msi")
+ print(f"○ Final MSI: {final_msi_filename}")
+ os.makedirs(os.path.join(desktop_dir, "dist"), exist_ok=True)
+ os.rename(
+ os.path.join(desktop_dir, "build", "OnionShare.msi"),
+ final_msi_filename,
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/desktop/package/dialog.bmp b/desktop/package/dialog.bmp
new file mode 100644
index 00000000..02576827
--- /dev/null
+++ b/desktop/package/dialog.bmp
Binary files differ
diff --git a/desktop/package/license.rtf b/desktop/package/license.rtf
new file mode 100644
index 00000000..d9385a66
--- /dev/null
+++ b/desktop/package/license.rtf
@@ -0,0 +1,136 @@
+{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fswiss\fcharset0 Helvetica;}{\f1\fswiss Helvetica;}{\f2\fnil Courier;}}
+{\colortbl ;\red0\green0\blue255;}
+{\*\generator Riched20 10.0.19041}\viewkind4\uc1
+\pard\sa180\b\f0\fs24\lang1033 OnionShare is free and open source software and is developed by Micah Lee, et al.\f1\lang9\par
+\fs28 GNU GENERAL PUBLIC LICENSE\par
+\b0\fs24 Version 3, 29 June 2007\par
+Copyright \f0\'a9 2007 Free Software Foundation, Inc. <{{\field{\*\fldinst{HYPERLINK "https://fsf.org/"}}{\fldrslt{https://fsf.org/\ul0\cf0}}}}\f0\fs24 >\par
+\f1 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\par
+\b\fs28 Preamble\par
+\b0\fs24 The GNU General Public License is a free, copyleft license for software and other kinds of works.\par
+The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.\par
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.\par
+To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.\par
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par
+Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.\par
+For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.\par
+Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.\par
+Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.\par
+The precise terms and conditions for copying, distribution and modification follow.\par
+\b\fs28 TERMS AND CONDITIONS\par
+\fs24 0. Definitions.\par
+\b0\ldblquote This License\rdblquote refers to version 3 of the GNU General Public License.\par
+\ldblquote Copyright\rdblquote also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.\par
+\ldblquote The Program\rdblquote refers to any copyrightable work licensed under this License. Each licensee is addressed as \ldblquote you\rdblquote . \ldblquote Licensees\rdblquote and \ldblquote recipients\rdblquote may be individuals or organizations.\par
+To \ldblquote modify\rdblquote a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a \ldblquote modified version\rdblquote of the earlier work or a work \ldblquote based on\rdblquote the earlier work.\par
+A \ldblquote covered work\rdblquote means either the unmodified Program or a work based on the Program.\par
+To \ldblquote propagate\rdblquote a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.\par
+To \ldblquote convey\rdblquote a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.\par
+An interactive user interface displays \ldblquote Appropriate Legal Notices\rdblquote to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.\par
+\b 1. Source Code.\par
+\b0 The \ldblquote source code\rdblquote for a work means the preferred form of the work for making modifications to it. \ldblquote Object code\rdblquote means any non-source form of a work.\par
+A \ldblquote Standard Interface\rdblquote means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.\par
+The \ldblquote System Libraries\rdblquote of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A \ldblquote Major Component\rdblquote , in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.\par
+The \ldblquote Corresponding Source\rdblquote for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.\par
+The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.\par
+The Corresponding Source for a work in source code form is that same work.\par
+\b 2. Basic Permissions.\par
+\b0 All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.\par
+You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.\par
+Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.\par
+\b 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\par
+\b0 No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.\par
+When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.\par
+\b 4. Conveying Verbatim Copies.\par
+\b0 You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.\par
+You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.\par
+\b 5. Conveying Modified Source Versions.\par
+\b0 You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:\par
+
+\pard\fi-360\li360\tx360\bullet\tab a) The work must carry prominent notices stating that you modified it, and giving a relevant date.\par
+\bullet\tab b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to \ldblquote keep intact all notices\rdblquote .\par
+\bullet\tab c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.\par
+
+\pard\fi-360\li360\sa180\tx360\bullet\tab d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.\par
+
+\pard\sa180 A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an \ldblquote aggregate\rdblquote if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.\par
+\b 6. Conveying Non-Source Forms.\par
+\b0 You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:\par
+
+\pard\fi-360\li360\tx360\bullet\tab a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.\par
+\bullet\tab b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.\par
+\bullet\tab c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.\par
+\bullet\tab d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.\par
+
+\pard\fi-360\li360\sa180\tx360\bullet\tab e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.\par
+
+\pard\sa180 A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.\par
+A \ldblquote User Product\rdblquote is either (1) a \ldblquote consumer product\rdblquote , which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, \ldblquote normally used\rdblquote refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.\par
+\ldblquote Installation Information\rdblquote for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.\par
+If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).\par
+The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.\par
+Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.\par
+\b 7. Additional Terms.\par
+\b0\ldblquote Additional permissions\rdblquote are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.\par
+When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.\par
+Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:\par
+
+\pard\fi-360\li360\tx360\bullet\tab a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or\par
+\bullet\tab b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or\par
+\bullet\tab c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or\par
+\bullet\tab d) Limiting the use for publicity purposes of names of licensors or authors of the material; or\par
+\bullet\tab e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or\par
+
+\pard\fi-360\li360\sa180\tx360\bullet\tab f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.\par
+
+\pard\sa180 All other non-permissive additional terms are considered \ldblquote further restrictions\rdblquote within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.\par
+If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.\par
+Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.\par
+\b 8. Termination.\par
+\b0 You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).\par
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.\par
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.\par
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.\par
+\b 9. Acceptance Not Required for Having Copies.\par
+\b0 You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.\par
+\b 10. Automatic Licensing of Downstream Recipients.\par
+\b0 Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.\par
+An \ldblquote entity transaction\rdblquote is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.\par
+You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.\par
+\b 11. Patents.\par
+\b0 A \ldblquote contributor\rdblquote is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's \ldblquote contributor version\rdblquote .\par
+A contributor's \ldblquote essential patent claims\rdblquote are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, \ldblquote control\rdblquote includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.\par
+Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.\par
+In the following three paragraphs, a \ldblquote patent license\rdblquote is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To \ldblquote grant\rdblquote such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.\par
+If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. \ldblquote Knowingly relying\rdblquote means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.\par
+If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.\par
+A patent license is \ldblquote discriminatory\rdblquote if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.\par
+Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.\par
+\b 12. No Surrender of Others' Freedom.\par
+\b0 If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.\par
+\b 13. Use with the GNU Affero General Public License.\par
+\b0 Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.\par
+\b 14. Revised Versions of this License.\par
+\b0 The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par
+Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License \ldblquote or any later version\rdblquote applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.\par
+If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.\par
+Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.\par
+\b 15. Disclaimer of Warranty.\par
+\b0 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \ldblquote AS IS\rdblquote WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par
+\b 16. Limitation of Liability.\par
+\b0 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\par
+\b 17. Interpretation of Sections 15 and 16.\par
+\b0 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.\par
+END OF TERMS AND CONDITIONS\par
+\b\fs28 How to Apply These Terms to Your New Programs\par
+\b0\fs24 If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the \ldblquote copyright\rdblquote line and a pointer to where the full notice is found.\par
+\f2 <one line to give the program's name and a brief idea of what it does.>\line Copyright (C) <year> <name of author>\line\line This program is free software: you can redistribute it and/or modify\line it under the terms of the GNU General Public License as published by\line the Free Software Foundation, either version 3 of the License, or\line (at your option) any later version.\line\line This program is distributed in the hope that it will be useful,\line but WITHOUT ANY WARRANTY; without even the implied warranty of\line MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\line GNU General Public License for more details.\line\line You should have received a copy of the GNU General Public License\line along with this program. If not, see <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/"}}{\fldrslt{https://www.gnu.org/licenses/\ul0\cf0}}}}\f2\fs24 >.\par
+\f1 Also add information on how to contact you by electronic and paper mail.\par
+If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:\par
+\f2 <program> Copyright (C) <year> <name of author>\line This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\line This is free software, and you are welcome to redistribute it\line under certain conditions; type `show c' for details.\par
+\f1 The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an \ldblquote about box\rdblquote .\par
+You should also get your employer (if you work as a programmer) or school, if any, to sign a \ldblquote copyright disclaimer\rdblquote for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/"}}{\fldrslt{https://www.gnu.org/licenses/\ul0\cf0}}}}\f1\fs24 >.\par
+The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <{{\field{\*\fldinst{HYPERLINK "https://www.gnu.org/licenses/why-not-lgpl.html"}}{\fldrslt{https://www.gnu.org/licenses/why-not-lgpl.html\ul0\cf0}}}}\f1\fs24 >.\par
+}
+
diff --git a/desktop/package/linux/build-appimage.py b/desktop/package/linux/build-appimage.py
deleted file mode 100755
index dfaba1b4..00000000
--- a/desktop/package/linux/build-appimage.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python3
-import os
-import inspect
-import subprocess
-import shutil
-import glob
-
-root = os.path.dirname(
- os.path.dirname(
- os.path.dirname(
- os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
- )
- )
-)
-
-
-def run(cmd, cwd=None):
- subprocess.run(cmd, cwd=cwd, check=True)
-
-
-def main():
- cli_dir = os.path.join(root, "cli")
- desktop_dir = os.path.join(root, "desktop")
-
- print("○ Clean up from last build")
- if os.path.exists(os.path.join(cli_dir, "dist")):
- shutil.rmtree(os.path.join(cli_dir, "dist"))
- if os.path.exists(os.path.join(desktop_dir, "linux")):
- shutil.rmtree(os.path.join(desktop_dir, "linux"))
-
- print("○ Building onionshare-cli")
- run(["poetry", "install"], cli_dir)
- run(["poetry", "build"], cli_dir)
- whl_filename = glob.glob(os.path.join(cli_dir, "dist", "*.whl"))[0]
- whl_basename = os.path.basename(whl_filename)
- shutil.copyfile(whl_filename, os.path.join(desktop_dir, whl_basename))
-
- print("○ Create the binary")
- run(["briefcase", "create"], desktop_dir)
-
- print("○ Create the AppImage")
- run(["briefcase", "build"], desktop_dir)
-
-
-if __name__ == "__main__":
- main()
diff --git a/desktop/package/macos/build.py b/desktop/package/macos/build.py
deleted file mode 100755
index 2bfea3ad..00000000
--- a/desktop/package/macos/build.py
+++ /dev/null
@@ -1,262 +0,0 @@
-#!/usr/bin/env python3
-import os
-import inspect
-import subprocess
-import argparse
-import shutil
-import glob
-import itertools
-
-root = os.path.dirname(
- os.path.dirname(
- os.path.dirname(
- os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
- )
- )
-)
-
-
-def codesign(path, entitlements, identity):
- run(
- [
- "codesign",
- "--sign",
- identity,
- "--entitlements",
- str(entitlements),
- "--timestamp",
- "--deep",
- str(path),
- "--force",
- "--options",
- "runtime",
- ]
- )
-
-
-def run(cmd, cwd=None):
- subprocess.run(cmd, cwd=cwd, check=True)
-
-
-def main():
- # Parse arguments
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "--with-codesign",
- action="store_true",
- dest="with_codesign",
- help="Codesign the app bundle",
- )
- args = parser.parse_args()
-
- cli_dir = os.path.join(root, "cli")
- desktop_dir = os.path.join(root, "desktop")
-
- print("○ Clean up from last build")
- if os.path.exists(os.path.join(cli_dir, "dist")):
- shutil.rmtree(os.path.join(cli_dir, "dist"))
- if os.path.exists(os.path.join(desktop_dir, "macOS")):
- shutil.rmtree(os.path.join(desktop_dir, "macOS"))
-
- print("○ Build onionshare-cli")
- run(["poetry", "install"], cli_dir)
- run(["poetry", "build"], cli_dir)
- whl_filename = glob.glob(os.path.join(cli_dir, "dist", "*.whl"))[0]
- whl_basename = os.path.basename(whl_filename)
- shutil.copyfile(whl_filename, os.path.join(desktop_dir, whl_basename))
-
- print("○ Create app bundle")
- run(["briefcase", "create"], desktop_dir)
- app_path = os.path.join(desktop_dir, "macOS", "app", "OnionShare", "OnionShare.app")
-
- print("○ Delete unused Qt5 frameworks from app bundle")
- for framework in [
- "Qt3DAnimation",
- "Qt3DCore",
- "Qt3DExtras",
- "Qt3DInput",
- "Qt3DLogic",
- "Qt3DQuick",
- "Qt3DQuickAnimation",
- "Qt3DQuickExtras",
- "Qt3DQuickInput",
- "Qt3DQuickRender",
- "Qt3DQuickScene2D",
- "Qt3DRender",
- "QtBluetooth",
- "QtBodymovin",
- "QtCharts",
- "QtConcurrent",
- "QtDataVisualization",
- "QtDesigner",
- "QtDesignerComponents",
- "QtGamepad",
- "QtHelp",
- "QtLocation",
- "QtMultimedia",
- "QtMultimediaQuick",
- "QtMultimediaWidgets",
- "QtNfc",
- "QtOpenGL",
- "QtPdf",
- "QtPdfWidgets",
- "QtPositioning",
- "QtPositioningQuick",
- "QtPurchasing",
- "QtQuick",
- "QtQuick3D",
- "QtQuick3DAssetImport",
- "QtQuick3DRender",
- "QtQuick3DRuntimeRender",
- "QtQuick3DUtils",
- "QtQuickControls2",
- "QtQuickParticles",
- "QtQuickShapes",
- "QtQuickTemplates2",
- "QtQuickTest",
- "QtQuickWidgets",
- "QtRemoteObjects",
- "QtRepParser",
- "QtScript",
- "QtScriptTools",
- "QtScxml",
- "QtSensors",
- "QtSerialBus",
- "QtSerialPort",
- "QtSql",
- "QtSvg",
- "QtTest",
- "QtTextToSpeech",
- "QtUiPlugin",
- "QtVirtualKeyboard",
- "QtWebChannel",
- "QtWebEngine",
- "QtWebEngineCore",
- "QtWebEngineWidgets",
- "QtWebSockets",
- "QtWebView",
- "QtXml",
- "QtXmlPatterns",
- ]:
- shutil.rmtree(
- os.path.join(
- app_path,
- "Contents",
- "Resources",
- "app_packages",
- "PySide2",
- "Qt",
- "lib",
- f"{framework}.framework",
- )
- )
- try:
- os.remove(
- os.path.join(
- app_path,
- "Contents",
- "Resources",
- "app_packages",
- "PySide2",
- f"{framework}.abi3.so",
- )
- )
- os.remove(
- os.path.join(
- app_path,
- "Contents",
- "Resources",
- "app_packages",
- "PySide2",
- f"{framework}.pyi",
- )
- )
- except FileNotFoundError:
- pass
- shutil.rmtree(
- os.path.join(
- app_path,
- "Contents",
- "Resources",
- "app_packages",
- "PySide2",
- "Designer.app",
- )
- )
-
- print(f"○ Unsigned app bundle: {app_path}")
-
- if args.with_codesign:
- identity_name_application = "Developer ID Application: Micah Lee (N9B95FDWH4)"
- entitlements_plist_path = os.path.join(
- desktop_dir, "package", "macos", "Entitlements.plist"
- )
-
- print("○ Code sign app bundle")
- for path in itertools.chain(
- glob.glob(
- f"{app_path}/Contents/Resources/app_packages/**/*.dylib", recursive=True
- ),
- glob.glob(
- f"{app_path}/Contents/Resources/app_packages/**/*.so", recursive=True
- ),
- glob.glob(
- f"{app_path}/Contents/Resources/Support/**/*.dylib", recursive=True
- ),
- glob.glob(f"{app_path}/Contents/Resources/Support/**/*.so", recursive=True),
- glob.glob(
- f"{app_path}/Contents/Resources/app_packages/PySide2/Qt/lib/**/Versions/5/*",
- recursive=True,
- ),
- [
- f"{app_path}/Contents/Resources/app_packages/PySide2/pyside2-lupdate",
- f"{app_path}/Contents/Resources/app_packages/PySide2/rcc",
- f"{app_path}/Contents/Resources/app_packages/PySide2/uic",
- app_path,
- ],
- ):
- codesign(path, entitlements_plist_path, identity_name_application)
- codesign(app_path, entitlements_plist_path, identity_name_application)
- print(f"○ Signed app bundle: {app_path}")
-
- if not os.path.exists("/usr/local/bin/create-dmg"):
- print("○ Error: create-dmg is not installed")
- return
-
- print("○ Create DMG")
- dmg_path = os.path.join(desktop_dir, "macOS", "OnionShare.dmg")
- run(
- [
- "create-dmg",
- "--volname",
- "OnionShare",
- "--volicon",
- os.path.join(
- desktop_dir, "src", "onionshare", "resources", "onionshare.icns"
- ),
- "--window-size",
- "400",
- "200",
- "--icon-size",
- "100",
- "--icon",
- "OnionShare.app",
- "100",
- "70",
- "--hide-extension",
- "OnionShare.app",
- "--app-drop-link",
- "300",
- "70",
- dmg_path,
- app_path,
- "--identity",
- identity_name_application,
- ]
- )
-
- print(f"○ Finished building DMG: {dmg_path}")
-
-
-if __name__ == "__main__":
- main()
diff --git a/desktop/package/onionshare-cli.py b/desktop/package/onionshare-cli.py
new file mode 100644
index 00000000..3cb03d59
--- /dev/null
+++ b/desktop/package/onionshare-cli.py
@@ -0,0 +1,3 @@
+import onionshare_cli
+
+onionshare_cli.main()
diff --git a/desktop/package/onionshare.py b/desktop/package/onionshare.py
new file mode 100644
index 00000000..f9b7c4c8
--- /dev/null
+++ b/desktop/package/onionshare.py
@@ -0,0 +1,3 @@
+import onionshare
+
+onionshare.main()
diff --git a/desktop/package/windows/build.py b/desktop/package/windows/build.py
deleted file mode 100644
index bbccbe46..00000000
--- a/desktop/package/windows/build.py
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/usr/bin/env python3
-import os
-import inspect
-import subprocess
-import shutil
-import glob
-
-root = os.path.dirname(
- os.path.dirname(
- os.path.dirname(
- os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
- )
- )
-)
-
-
-def run(cmd, cwd=None):
- subprocess.run(cmd, cwd=cwd, check=True)
-
-
-def main():
- cli_dir = os.path.join(root, "cli")
- desktop_dir = os.path.join(root, "desktop")
-
- print("○ Clean up from last build")
- if os.path.exists(os.path.join(cli_dir, "dist")):
- shutil.rmtree(os.path.join(cli_dir, "dist"))
- if os.path.exists(os.path.join(desktop_dir, "windows")):
- shutil.rmtree(os.path.join(desktop_dir, "windows"))
-
- print("○ Building onionshare-cli")
- run(["poetry", "install"], cli_dir)
- run(["poetry", "build"], cli_dir)
- whl_filename = glob.glob(os.path.join(cli_dir, "dist", "*.whl"))[0]
- whl_basename = os.path.basename(whl_filename)
- shutil.copyfile(whl_filename, os.path.join(desktop_dir, whl_basename))
-
- print("○ Create the binary")
- run(["briefcase", "create"], desktop_dir)
-
- print("○ Delete unused Qt5 DLLs to save space")
- for filename in [
- "plugins/assetimporters/assimp.dll",
- "plugins/assetimporters/uip.dll",
- "plugins/audio/qtaudio_wasapi.dll",
- "plugins/audio/qtaudio_windows.dll",
- "plugins/bearer/qgenericbearer.dll",
- "plugins/canbus/qtpassthrucanbus.dll",
- "plugins/canbus/qtpeakcanbus.dll",
- "plugins/canbus/qtsysteccanbus.dll",
- "plugins/canbus/qttinycanbus.dll",
- "plugins/canbus/qtvectorcanbus.dll",
- "plugins/canbus/qtvirtualcanbus.dll",
- "plugins/gamepads/xinputgamepad.dll",
- "plugins/generic/qtuiotouchplugin.dll",
- "plugins/geometryloaders/defaultgeometryloader.dll",
- "plugins/geometryloaders/gltfgeometryloader.dll",
- "plugins/geoservices/qtgeoservices_esri.dll",
- "plugins/geoservices/qtgeoservices_itemsoverlay.dll",
- "plugins/geoservices/qtgeoservices_mapbox.dll",
- "plugins/geoservices/qtgeoservices_nokia.dll",
- "plugins/geoservices/qtgeoservices_osm.dll",
- "plugins/mediaservice/dsengine.dll",
- "plugins/mediaservice/qtmedia_audioengine.dll",
- "plugins/mediaservice/wmfengine.dll",
- "plugins/platforminputcontexts/qtvirtualkeyboardplugin.dll",
- "plugins/platformthemes/qxdgdesktopportal.dll",
- "plugins/playlistformats/qtmultimedia_m3u.dll",
- "plugins/position/qtposition_positionpoll.dll",
- "plugins/position/qtposition_serialnmea.dll",
- "plugins/position/qtposition_winrt.dll",
- "plugins/printsupport/windowsprintersupport.dll",
- "plugins/qmltooling/qmldbg_debugger.dll",
- "plugins/qmltooling/qmldbg_inspector.dll",
- "plugins/qmltooling/qmldbg_local.dll",
- "plugins/qmltooling/qmldbg_messages.dll",
- "plugins/qmltooling/qmldbg_native.dll",
- "plugins/qmltooling/qmldbg_nativedebugger.dll",
- "plugins/qmltooling/qmldbg_preview.dll",
- "plugins/qmltooling/qmldbg_profiler.dll",
- "plugins/qmltooling/qmldbg_quickprofiler.dll",
- "plugins/qmltooling/qmldbg_server.dll",
- "plugins/qmltooling/qmldbg_tcp.dll",
- "plugins/renderers/openglrenderer.dll",
- "plugins/renderplugins/scene2d.dll",
- "plugins/scenegraph/qsgd3d12backend.dll",
- "plugins/sceneparsers/assimpsceneimport.dll",
- "plugins/sceneparsers/gltfsceneexport.dll",
- "plugins/sceneparsers/gltfsceneimport.dll",
- "plugins/sensorgestures/qtsensorgestures_plugin.dll",
- "plugins/sensorgestures/qtsensorgestures_shakeplugin.dll",
- "plugins/sensors/qtsensors_generic.dll",
- "plugins/sqldrivers/qsqlite.dll",
- "plugins/sqldrivers/qsqlodbc.dll",
- "plugins/sqldrivers/qsqlpsql.dll",
- "plugins/texttospeech/qtexttospeech_sapi.dll",
- "plugins/virtualkeyboard/qtvirtualkeyboard_hangul.dll",
- "plugins/virtualkeyboard/qtvirtualkeyboard_openwnn.dll",
- "plugins/virtualkeyboard/qtvirtualkeyboard_pinyin.dll",
- "plugins/virtualkeyboard/qtvirtualkeyboard_tcime.dll",
- "plugins/virtualkeyboard/qtvirtualkeyboard_thai.dll",
- "plugins/webview/qtwebview_webengine.dll",
- "qml/Qt/labs/animation/labsanimationplugin.dll",
- "qml/Qt/labs/calendar/qtlabscalendarplugin.dll",
- "qml/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll",
- "qml/Qt/labs/location/locationlabsplugin.dll",
- "qml/Qt/labs/lottieqt/lottieqtplugin.dll",
- "qml/Qt/labs/platform/qtlabsplatformplugin.dll",
- "qml/Qt/labs/qmlmodels/labsmodelsplugin.dll",
- "qml/Qt/labs/settings/qmlsettingsplugin.dll",
- "qml/Qt/labs/sharedimage/sharedimageplugin.dll",
- "qml/Qt/labs/wavefrontmesh/qmlwavefrontmeshplugin.dll",
- "qml/Qt3D/Animation/quick3danimationplugin.dll",
- "qml/Qt3D/Core/quick3dcoreplugin.dll",
- "qml/Qt3D/Extras/quick3dextrasplugin.dll",
- "qml/Qt3D/Input/quick3dinputplugin.dll",
- "qml/Qt3D/Logic/quick3dlogicplugin.dll",
- "qml/Qt3D/Render/quick3drenderplugin.dll",
- "qml/QtBluetooth/declarative_bluetooth.dll",
- "qml/QtCharts/qtchartsqml2.dll",
- "qml/QtDataVisualization/datavisualizationqml2.dll",
- "qml/QtGamepad/declarative_gamepad.dll",
- "qml/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll",
- "qml/QtGraphicalEffects/qtgraphicaleffectsplugin.dll",
- "qml/QtLocation/declarative_location.dll",
- "qml/QtMultimedia/declarative_multimedia.dll",
- "qml/QtNfc/declarative_nfc.dll",
- "qml/QtPositioning/declarative_positioning.dll",
- "qml/QtPurchasing/declarative_purchasing.dll",
- "qml/QtQml/Models.2/modelsplugin.dll",
- "qml/QtQml/qmlplugin.dll",
- "qml/QtQml/RemoteObjects/qtqmlremoteobjects.dll",
- "qml/QtQml/StateMachine/qtqmlstatemachine.dll",
- "qml/QtQml/WorkerScript.2/workerscriptplugin.dll",
- "qml/QtQuick/Controls/qtquickcontrolsplugin.dll",
- "qml/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll",
- "qml/QtQuick/Controls.2/Fusion/qtquickcontrols2fusionstyleplugin.dll",
- "qml/QtQuick/Controls.2/Imagine/qtquickcontrols2imaginestyleplugin.dll",
- "qml/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll",
- "qml/QtQuick/Controls.2/qtquickcontrols2plugin.dll",
- "qml/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll",
- "qml/QtQuick/Dialogs/dialogplugin.dll",
- "qml/QtQuick/Dialogs/Private/dialogsprivateplugin.dll",
- "qml/QtQuick/Extras/qtquickextrasplugin.dll",
- "qml/QtQuick/Layouts/qquicklayoutsplugin.dll",
- "qml/QtQuick/LocalStorage/qmllocalstorageplugin.dll",
- "qml/QtQuick/Particles.2/particlesplugin.dll",
- "qml/QtQuick/Pdf/pdfplugin.dll",
- "qml/QtQuick/PrivateWidgets/widgetsplugin.dll",
- "qml/QtQuick/Scene2D/qtquickscene2dplugin.dll",
- "qml/QtQuick/Scene3D/qtquickscene3dplugin.dll",
- "qml/QtQuick/Shapes/qmlshapesplugin.dll",
- "qml/QtQuick/Templates.2/qtquicktemplates2plugin.dll",
- "qml/QtQuick/Timeline/qtquicktimelineplugin.dll",
- "qml/QtQuick/VirtualKeyboard/qtquickvirtualkeyboardplugin.dll",
- "qml/QtQuick/VirtualKeyboard/Settings/qtquickvirtualkeyboardsettingsplugin.dll",
- "qml/QtQuick/VirtualKeyboard/Styles/qtquickvirtualkeyboardstylesplugin.dll",
- "qml/QtQuick/Window.2/windowplugin.dll",
- "qml/QtQuick/XmlListModel/qmlxmllistmodelplugin.dll",
- "qml/QtQuick.2/qtquick2plugin.dll",
- "qml/QtQuick3D/Effects/qtquick3deffectplugin.dll",
- "qml/QtQuick3D/Helpers/qtquick3dhelpersplugin.dll",
- "qml/QtQuick3D/Materials/qtquick3dmaterialplugin.dll",
- "qml/QtQuick3D/qquick3dplugin.dll",
- "qml/QtRemoteObjects/qtremoteobjects.dll",
- "qml/QtScxml/declarative_scxml.dll",
- "qml/QtSensors/declarative_sensors.dll",
- "qml/QtTest/qmltestplugin.dll",
- "qml/QtWebChannel/declarative_webchannel.dll",
- "qml/QtWebEngine/qtwebengineplugin.dll",
- "qml/QtWebSockets/declarative_qmlwebsockets.dll",
- "qml/QtWebView/declarative_webview.dll",
- "Qt5DBus.dll",
- "Qt5PrintSupport.dll",
- "Qt5Script.dll",
- "Qt5ScriptTools.dll",
- "Qt5Scxml.dll",
- "Qt5Sensors.dll",
- "Qt5SerialBus.dll",
- "Qt5SerialPort.dll",
- "Qt5Sql.dll",
- "Qt5Svg.dll",
- "Qt5Test.dll",
- "Qt5TextToSpeech.dll",
- "Qt5VirtualKeyboard.dll",
- "Qt5WebChannel.dll",
- "Qt5WebEngine.dll",
- "Qt5WebEngineCore.dll",
- "Qt5WebEngineWidgets.dll",
- "Qt5WebSockets.dll",
- "Qt5WebView.dll",
- "Qt5Xml.dll",
- "Qt5XmlPatterns.dll",
- ]:
- os.remove(
- os.path.join(
- desktop_dir,
- "windows",
- "msi",
- "OnionShare",
- "src",
- "app_packages",
- "PySide2",
- filename.replace("/", "\\"),
- )
- )
-
- print("○ Create the installer")
- run(["briefcase", "package"], desktop_dir)
- msi_filename = glob.glob(os.path.join(desktop_dir, "windows", "OnionShare-*.msi"))[
- 0
- ]
- print(f"○ Created unsigned installer: {msi_filename}")
-
- print("○ Signing installer")
- run(
- [
- "signtool.exe",
- "sign",
- "/v",
- "/d",
- "OnionShare",
- "/a",
- "/tr",
- "http://time.certum.pl/",
- msi_filename,
- ],
- desktop_dir,
- )
- print(f"○ Signed installer: {msi_filename}")
-
-
-if __name__ == "__main__":
- main()
diff --git a/desktop/poetry.lock b/desktop/poetry.lock
new file mode 100644
index 00000000..336fb36d
--- /dev/null
+++ b/desktop/poetry.lock
@@ -0,0 +1,1209 @@
+[[package]]
+name = "atomicwrites"
+version = "1.4.0"
+description = "Atomic file writes."
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "attrs"
+version = "21.2.0"
+description = "Classes Without Boilerplate"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.extras]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
+docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
+
+[[package]]
+name = "bidict"
+version = "0.21.4"
+description = "The bidirectional mapping library for Python."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "black"
+version = "21.12b0"
+description = "The uncompromising code formatter."
+category = "dev"
+optional = false
+python-versions = ">=3.6.2"
+
+[package.dependencies]
+click = ">=7.1.2"
+mypy-extensions = ">=0.4.3"
+pathspec = ">=0.9.0,<1"
+platformdirs = ">=2"
+tomli = ">=0.2.6,<2.0.0"
+typing-extensions = ">=3.10.0.0"
+
+[package.extras]
+colorama = ["colorama (>=0.4.3)"]
+d = ["aiohttp (>=3.7.4)"]
+jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
+python2 = ["typed-ast (>=1.4.3)"]
+uvloop = ["uvloop (>=0.15.2)"]
+
+[[package]]
+name = "cepa"
+version = "1.8.3"
+description = "Stem is a Python controller library that allows applications to interact with Tor (https://www.torproject.org/)."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "certifi"
+version = "2021.10.8"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "cffi"
+version = "1.15.0"
+description = "Foreign Function Interface for Python calling C code."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "charset-normalizer"
+version = "2.0.9"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
+optional = false
+python-versions = ">=3.5.0"
+
+[package.extras]
+unicode_backport = ["unicodedata2"]
+
+[[package]]
+name = "click"
+version = "7.1.2"
+description = "Composable command line interface toolkit"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "colorama"
+version = "0.4.4"
+description = "Cross-platform colored terminal text."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "cx-freeze"
+version = "6.9"
+description = "Create standalone executables from Python scripts"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+cx-logging = {version = ">=3.0", markers = "sys_platform == \"win32\""}
+importlib-metadata = ">=4.3.1"
+
+[[package]]
+name = "cx-logging"
+version = "3.0"
+description = "Python and C interfaces for logging"
+category = "main"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "dnspython"
+version = "2.1.0"
+description = "DNS toolkit"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+dnssec = ["cryptography (>=2.6)"]
+doh = ["requests", "requests-toolbelt"]
+idna = ["idna (>=2.1)"]
+curio = ["curio (>=1.2)", "sniffio (>=1.1)"]
+trio = ["trio (>=0.14.0)", "sniffio (>=1.1)"]
+
+[[package]]
+name = "eventlet"
+version = "0.33.0"
+description = "Highly concurrent networking library"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+dnspython = ">=1.15.0"
+greenlet = ">=0.3"
+six = ">=1.10.0"
+
+[[package]]
+name = "flask"
+version = "1.1.4"
+description = "A simple framework for building complex web applications."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+click = ">=5.1,<8.0"
+itsdangerous = ">=0.24,<2.0"
+Jinja2 = ">=2.10.1,<3.0"
+Werkzeug = ">=0.15,<2.0"
+
+[package.extras]
+dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"]
+docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"]
+dotenv = ["python-dotenv"]
+
+[[package]]
+name = "flask-socketio"
+version = "5.0.1"
+description = "Socket.IO integration for Flask applications"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+Flask = ">=0.9"
+python-socketio = ">=5.0.2"
+
+[[package]]
+name = "gevent"
+version = "21.12.0"
+description = "Coroutine-based network library"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5"
+
+[package.dependencies]
+cffi = {version = ">=1.12.2", markers = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\""}
+greenlet = {version = ">=1.1.0,<2.0", markers = "platform_python_implementation == \"CPython\""}
+"zope.event" = "*"
+"zope.interface" = "*"
+
+[package.extras]
+dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"]
+docs = ["repoze.sphinx.autointerface", "sphinxcontrib-programoutput", "zope.schema"]
+monitor = ["psutil (>=5.7.0)"]
+recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "backports.socketpair", "psutil (>=5.7.0)"]
+test = ["requests", "objgraph", "cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "selectors2", "futures", "mock", "backports.socketpair", "contextvars (==2.4)", "coverage (>=5.0)", "coveralls (>=1.7.0)", "psutil (>=5.7.0)"]
+
+[[package]]
+name = "gevent-websocket"
+version = "0.10.1"
+description = "Websocket handler for the gevent pywsgi server, a Python network library"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+gevent = "*"
+
+[[package]]
+name = "greenlet"
+version = "1.1.2"
+description = "Lightweight in-process concurrent programming"
+category = "main"
+optional = false
+python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+
+[package.extras]
+docs = ["sphinx"]
+
+[[package]]
+name = "idna"
+version = "3.3"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
+name = "importlib-metadata"
+version = "4.10.0"
+description = "Read metadata from Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+zipp = ">=0.5"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+perf = ["ipython"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
+
+[[package]]
+name = "iniconfig"
+version = "1.1.1"
+description = "iniconfig: brain-dead simple config-ini parsing"
+category = "dev"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "itsdangerous"
+version = "1.1.0"
+description = "Various helpers to pass data to untrusted environments and back."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "jinja2"
+version = "2.11.3"
+description = "A very fast and expressive template engine."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.dependencies]
+MarkupSafe = ">=0.23"
+
+[package.extras]
+i18n = ["Babel (>=0.8)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.0.1"
+description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "mypy-extensions"
+version = "0.4.3"
+description = "Experimental type system extensions for programs checked with the mypy typechecker."
+category = "dev"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "onionshare-cli"
+version = "2.4"
+description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service."
+category = "main"
+optional = false
+python-versions = "^3.6"
+develop = true
+
+[package.dependencies]
+cepa = "1.8.3"
+click = "*"
+colorama = "*"
+eventlet = "*"
+flask = "1.1.4"
+flask-socketio = "5.0.1"
+gevent-websocket = "^0.10.1"
+psutil = "*"
+pynacl = "^1.4.0"
+pysocks = "*"
+requests = {version = "*", extras = ["socks"]}
+unidecode = "*"
+urllib3 = "*"
+
+[package.source]
+type = "directory"
+url = "../cli"
+
+[[package]]
+name = "packaging"
+version = "21.3"
+description = "Core utilities for Python packages"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
+
+[[package]]
+name = "pathspec"
+version = "0.9.0"
+description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[[package]]
+name = "platformdirs"
+version = "2.4.0"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"]
+test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
+
+[[package]]
+name = "pluggy"
+version = "1.0.0"
+description = "plugin and hook calling mechanisms for python"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "psutil"
+version = "5.8.0"
+description = "Cross-platform lib for process and system monitoring in Python."
+category = "main"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.extras]
+test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"]
+
+[[package]]
+name = "py"
+version = "1.11.0"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "pynacl"
+version = "1.4.0"
+description = "Python binding to the Networking and Cryptography (NaCl) library"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.dependencies]
+cffi = ">=1.4.1"
+six = "*"
+
+[package.extras]
+docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"]
+tests = ["pytest (>=3.2.1,!=3.3.0)", "hypothesis (>=3.27.0)"]
+
+[[package]]
+name = "pyparsing"
+version = "3.0.6"
+description = "Python parsing module"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
+[[package]]
+name = "pyside2"
+version = "5.15.2"
+description = "Python bindings for the Qt cross-platform application and UI framework"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.10"
+
+[package.dependencies]
+shiboken2 = "5.15.2"
+
+[[package]]
+name = "pysocks"
+version = "1.7.1"
+description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[[package]]
+name = "pytest"
+version = "6.2.5"
+description = "pytest: simple powerful testing with Python"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+py = ">=1.8.2"
+toml = "*"
+
+[package.extras]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
+
+[[package]]
+name = "pytest-faulthandler"
+version = "2.0.1"
+description = "py.test plugin that activates the fault handler module for tests (dummy package)"
+category = "dev"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+pytest = ">=5.0"
+
+[[package]]
+name = "pytest-qt"
+version = "4.0.2"
+description = "pytest support for PyQt and PySide applications"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+pytest = ">=3.0.0"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+doc = ["sphinx", "sphinx-rtd-theme"]
+
+[[package]]
+name = "python-engineio"
+version = "4.3.0"
+description = "Engine.IO server and client for Python"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+asyncio_client = ["aiohttp (>=3.4)"]
+client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"]
+
+[[package]]
+name = "python-socketio"
+version = "5.5.0"
+description = "Socket.IO server and client for Python"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+bidict = ">=0.21.0"
+python-engineio = ">=4.3.0"
+
+[package.extras]
+asyncio_client = ["aiohttp (>=3.4)"]
+client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"]
+
+[[package]]
+name = "qrcode"
+version = "7.3.1"
+description = "QR Code image generator"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+all = ["zest.releaser", "tox", "pytest", "pytest", "pytest-cov", "pillow"]
+dev = ["tox", "pytest"]
+maintainer = ["zest.releaser"]
+pil = ["pillow"]
+test = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "requests"
+version = "2.26.0"
+description = "Python HTTP for Humans."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
+idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
+PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""}
+urllib3 = ">=1.21.1,<1.27"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
+
+[[package]]
+name = "shiboken2"
+version = "5.15.2"
+description = "Python / C++ bindings helper module"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.10"
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+
+[[package]]
+name = "toml"
+version = "0.10.2"
+description = "Python Library for Tom's Obvious, Minimal Language"
+category = "dev"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+
+[[package]]
+name = "tomli"
+version = "1.2.3"
+description = "A lil' TOML parser"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "typing-extensions"
+version = "4.0.1"
+description = "Backported and Experimental Type Hints for Python 3.6+"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "unidecode"
+version = "1.3.2"
+description = "ASCII transliterations of Unicode text"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
+name = "urllib3"
+version = "1.26.7"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+
+[package.extras]
+brotli = ["brotlipy (>=0.6.0)"]
+secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
+socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+
+[[package]]
+name = "werkzeug"
+version = "1.0.1"
+description = "The comprehensive WSGI web application library."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.extras]
+dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"]
+watchdog = ["watchdog"]
+
+[[package]]
+name = "zipp"
+version = "3.6.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
+
+[[package]]
+name = "zope.event"
+version = "4.5.0"
+description = "Very basic event publishing system"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+docs = ["sphinx"]
+test = ["zope.testrunner"]
+
+[[package]]
+name = "zope.interface"
+version = "5.4.0"
+description = "Interfaces for Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[package.extras]
+docs = ["sphinx", "repoze.sphinx.autointerface"]
+test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
+testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
+
+[metadata]
+lock-version = "1.1"
+python-versions = ">=3.9,<3.10"
+content-hash = "a13c1965ecb244469752adb4f03e284c9e7c91fc0247efee74fa902b5e18a9da"
+
+[metadata.files]
+atomicwrites = [
+ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
+ {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
+]
+attrs = [
+ {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
+ {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
+]
+bidict = [
+ {file = "bidict-0.21.4-py3-none-any.whl", hash = "sha256:3ac67daa353ecf853a1df9d3e924f005e729227a60a8dbada31a4c31aba7f654"},
+ {file = "bidict-0.21.4.tar.gz", hash = "sha256:42c84ffbe6f8de898af6073b4be9ea7ccedcd78d3474aa844c54e49d5a079f6f"},
+]
+black = [
+ {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"},
+ {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"},
+]
+cepa = [
+ {file = "cepa-1.8.3.tar.gz", hash = "sha256:1dc6f0b324d37a2ed2ca274648ece8fd2c96a1d2f440f58c0ca17afd4b5ede7a"},
+]
+certifi = [
+ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
+ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
+]
+cffi = [
+ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"},
+ {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"},
+ {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"},
+ {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"},
+ {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"},
+ {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"},
+ {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"},
+ {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"},
+ {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"},
+ {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"},
+ {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"},
+ {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"},
+ {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"},
+ {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"},
+ {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"},
+ {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"},
+ {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"},
+ {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"},
+ {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"},
+ {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"},
+ {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"},
+ {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"},
+ {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"},
+ {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"},
+ {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"},
+ {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"},
+ {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"},
+ {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"},
+ {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"},
+ {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"},
+ {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"},
+ {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"},
+ {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"},
+ {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"},
+ {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"},
+ {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"},
+ {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"},
+ {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"},
+ {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"},
+ {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"},
+ {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"},
+ {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"},
+ {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"},
+ {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"},
+ {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"},
+ {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"},
+ {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"},
+ {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"},
+ {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"},
+ {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
+]
+charset-normalizer = [
+ {file = "charset-normalizer-2.0.9.tar.gz", hash = "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c"},
+ {file = "charset_normalizer-2.0.9-py3-none-any.whl", hash = "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721"},
+]
+click = [
+ {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
+ {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
+]
+colorama = [
+ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
+ {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
+]
+cx-freeze = [
+ {file = "cx_Freeze-6.9-cp310-cp310-win32.whl", hash = "sha256:776d4fb68a4831691acbd3c374362b9b48ce2e568514a73c3d4cb14d5dcf1470"},
+ {file = "cx_Freeze-6.9-cp310-cp310-win_amd64.whl", hash = "sha256:243f36d35a034a409cd6247d8cb5d1fbfd7374e3e668e813d0811f64d6bd5ed3"},
+ {file = "cx_Freeze-6.9-cp36-cp36m-win32.whl", hash = "sha256:ffc855eabc735b693e2d604d71dce6d52d78a6ba1070c55d51e786dd68ed232c"},
+ {file = "cx_Freeze-6.9-cp36-cp36m-win_amd64.whl", hash = "sha256:fe4e32a0c75b2b54491882926bf3ba12f8a3d589822a68a8be7c09f1dcca5546"},
+ {file = "cx_Freeze-6.9-cp37-cp37m-win32.whl", hash = "sha256:99c292e7a31cb343efc0cf47f82220a44a4a3b8776651624cd8ee03c23104940"},
+ {file = "cx_Freeze-6.9-cp37-cp37m-win_amd64.whl", hash = "sha256:738ab22f3a3f6bc220b16dccf2aa0603c3cd271b2a7a9d9480dab82311308b23"},
+ {file = "cx_Freeze-6.9-cp38-cp38-win32.whl", hash = "sha256:c1c75df572858e623d0aa39771cd984c0abd8aacb43b2aca2d12d0bc95f25566"},
+ {file = "cx_Freeze-6.9-cp38-cp38-win_amd64.whl", hash = "sha256:0788c895c47fdcf375151ce78ff42336c01aca7bc43daecb8f8f8356cdc42b43"},
+ {file = "cx_Freeze-6.9-cp39-cp39-win32.whl", hash = "sha256:a31f5ddbc80b29e297370d868791470b0e3e9062db45038c23293a76ed039018"},
+ {file = "cx_Freeze-6.9-cp39-cp39-win_amd64.whl", hash = "sha256:30708f603076713c0a839cdfb34f4126d68e9d61afb3d9a59daa9cf252033872"},
+ {file = "cx_Freeze-6.9.tar.gz", hash = "sha256:673aa3199af2ef87fc03a43a30e5d78b27ced2cedde925da89c55b5657da267b"},
+]
+cx-logging = [
+ {file = "cx_Logging-3.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:9fcd297e5c51470521c47eff0f86ba844aeca6be97e13c3e2114ebdf03fa3c96"},
+ {file = "cx_Logging-3.0-cp36-cp36m-win32.whl", hash = "sha256:0df4be47c5022cc54316949e283403214568ef599817ced0c0972183d6d4fabb"},
+ {file = "cx_Logging-3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:203ca92ee7c15d5dfe1fcdfcef7b39d0123eba5c6d8c2388b6e7db6b961a5362"},
+ {file = "cx_Logging-3.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:20daa71b2a30f61d09bcf55dbda002c10f0c7c691f53cb393fc6485410fa2484"},
+ {file = "cx_Logging-3.0-cp37-cp37m-win32.whl", hash = "sha256:5be5f905e8d34a3326e28d428674cdc2d57912fdf6e25b8676d63f76294eb4e0"},
+ {file = "cx_Logging-3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:04e4b61e2636dc8ae135937655af6626362aefc7f6175e86888a244b61001823"},
+ {file = "cx_Logging-3.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1bf0ebc79a7baa331c7deaf57088c234b82710286dfad453ff0c55eee0122b72"},
+ {file = "cx_Logging-3.0-cp38-cp38-win32.whl", hash = "sha256:d98a59a47e99fa430b3f6d2a979e27509852d2c43e204f43bd0168e7ec97f469"},
+ {file = "cx_Logging-3.0-cp38-cp38-win_amd64.whl", hash = "sha256:bb2e91019e5905415f795eef994de60ace5ae186fc4fe3d358e2d8feebb24992"},
+ {file = "cx_Logging-3.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:b6f4a9b750e02a180517f779d174a1c7db651981cd37e5623235b87da9774dfd"},
+ {file = "cx_Logging-3.0-cp39-cp39-win32.whl", hash = "sha256:e7cca28e8ee4082654b6062cc4d06f83d48f1a7e2d152bab020c9e3e373afb90"},
+ {file = "cx_Logging-3.0-cp39-cp39-win_amd64.whl", hash = "sha256:302e9c4f65a936c288a4fa59a90e7e142d9ef994aa29676731acafdcccdbb3f5"},
+ {file = "cx_Logging-3.0.tar.gz", hash = "sha256:ba8a7465facf7b98d8f494030fb481a2e8aeee29dc191e10383bb54ed42bdb34"},
+]
+dnspython = [
+ {file = "dnspython-2.1.0-py3-none-any.whl", hash = "sha256:95d12f6ef0317118d2a1a6fc49aac65ffec7eb8087474158f42f26a639135216"},
+ {file = "dnspython-2.1.0.zip", hash = "sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4"},
+]
+eventlet = [
+ {file = "eventlet-0.33.0-py2.py3-none-any.whl", hash = "sha256:d10a8fcc9e33381905d9873303fde96ebe3541c03fb795055d2c7347dce0639c"},
+ {file = "eventlet-0.33.0.tar.gz", hash = "sha256:80144f489c1bb273a51b6f96ff9785a382d2866b9bab1f5bd748385019f4141f"},
+]
+flask = [
+ {file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"},
+ {file = "Flask-1.1.4.tar.gz", hash = "sha256:0fbeb6180d383a9186d0d6ed954e0042ad9f18e0e8de088b2b419d526927d196"},
+]
+flask-socketio = [
+ {file = "Flask-SocketIO-5.0.1.tar.gz", hash = "sha256:5c4319f5214ada20807857dc8fdf3dc7d2afe8d6dd38f5c516c72e2be47d2227"},
+ {file = "Flask_SocketIO-5.0.1-py2.py3-none-any.whl", hash = "sha256:5d9a4438bafd806c5a3b832e74b69758781a8ee26fb6c9b1dbdda9b4fced432e"},
+]
+gevent = [
+ {file = "gevent-21.12.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:2afa3f3ad528155433f6ac8bd64fa5cc303855b97004416ec719a6b1ca179481"},
+ {file = "gevent-21.12.0-cp27-cp27m-win32.whl", hash = "sha256:177f93a3a90f46a5009e0841fef561601e5c637ba4332ab8572edd96af650101"},
+ {file = "gevent-21.12.0-cp27-cp27m-win_amd64.whl", hash = "sha256:a5ad4ed8afa0a71e1927623589f06a9b5e8b5e77810be3125cb4d93050d3fd1f"},
+ {file = "gevent-21.12.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:eae3c46f9484eaacd67ffcdf4eaf6ca830f587edd543613b0f5c4eb3c11d052d"},
+ {file = "gevent-21.12.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e1899b921219fc8959ff9afb94dae36be82e0769ed13d330a393594d478a0b3a"},
+ {file = "gevent-21.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21cb5c9f4e14d75b3fe0b143ec875d7dbd1495fad6d49704b00e57e781ee0f"},
+ {file = "gevent-21.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:542ae891e2aa217d2cf6d8446538fcd2f3263a40eec123b970b899bac391c47a"},
+ {file = "gevent-21.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:0082d8a5d23c35812ce0e716a91ede597f6dd2c5ff508a02a998f73598c59397"},
+ {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da8d2d51a49b2a5beb02ad619ca9ddbef806ef4870ba04e5ac7b8b41a5b61db3"},
+ {file = "gevent-21.12.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfff82f05f14b7f5d9ed53ccb7a609ae8604df522bb05c971bca78ec9d8b2b9"},
+ {file = "gevent-21.12.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7909780f0cf18a1fc32aafd8c8e130cdd93c6e285b11263f7f2d1a0f3678bc50"},
+ {file = "gevent-21.12.0-cp36-cp36m-win32.whl", hash = "sha256:bb5cb8db753469c7a9a0b8a972d2660fe851aa06eee699a1ca42988afb0aaa02"},
+ {file = "gevent-21.12.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c43f081cbca41d27fd8fef9c6a32cf83cb979345b20abc07bf68df165cdadb24"},
+ {file = "gevent-21.12.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:74fc1ef16b86616cfddcc74f7292642b0f72dde4dd95aebf4c45bb236744be54"},
+ {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc2fef0f98ee180704cf95ec84f2bc2d86c6c3711bb6b6740d74e0afe708b62c"},
+ {file = "gevent-21.12.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b4c17064e28f4eb85604486abc89f442c7407d2aed249cf54544ce5c9baee6"},
+ {file = "gevent-21.12.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:973749bacb7bc4f4181a8fb2a7e0e2ff44038de56d08e856dd54a5ac1d7331b4"},
+ {file = "gevent-21.12.0-cp37-cp37m-win32.whl", hash = "sha256:6a02a88723ed3f0fd92cbf1df3c4cd2fbd87d82b0a4bac3e36a8875923115214"},
+ {file = "gevent-21.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f289fae643a3f1c3b909d6b033e6921b05234a4907e9c9c8c3f1fe403e6ac452"},
+ {file = "gevent-21.12.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:3baeeccc4791ba3f8db27179dff11855a8f9210ddd754f6c9b48e0d2561c2aea"},
+ {file = "gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692"},
+ {file = "gevent-21.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d86438ede1cbe0fde6ef4cc3f72bf2f1ecc9630d8b633ff344a3aeeca272cdd"},
+ {file = "gevent-21.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:01928770972181ad8866ee37ea3504f1824587b188fcab782ef1619ce7538766"},
+ {file = "gevent-21.12.0-cp38-cp38-win32.whl", hash = "sha256:3c012c73e6c61f13c75e3a4869dbe6a2ffa025f103421a6de9c85e627e7477b1"},
+ {file = "gevent-21.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:b7709c64afa8bb3000c28bb91ec42c79594a7cb0f322e20427d57f9762366a5b"},
+ {file = "gevent-21.12.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ec21f9eaaa6a7b1e62da786132d6788675b314f25f98d9541f1bf00584ed4749"},
+ {file = "gevent-21.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ce1f38fdfe2149ffe8ec2131ca45281791c1e464db34b3b4321ae9d8d2efbb"},
+ {file = "gevent-21.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ccffcf708094564e442ac6fde46f0ae9e40015cb69d995f4b39cc29a7643881"},
+ {file = "gevent-21.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24d3550fbaeef5fddd794819c2853bca45a86c3d64a056a2c268d981518220d1"},
+ {file = "gevent-21.12.0-cp39-cp39-win32.whl", hash = "sha256:2bcec9f80196c751fdcf389ca9f7141e7b0db960d8465ed79be5e685bfcad682"},
+ {file = "gevent-21.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:3dad62f55fad839d498c801e139481348991cee6e1c7706041b5fe096cb6a279"},
+ {file = "gevent-21.12.0-pp27-pypy_73-win_amd64.whl", hash = "sha256:9f9652d1e4062d4b5b5a0a49ff679fa890430b5f76969d35dccb2df114c55e0f"},
+ {file = "gevent-21.12.0.tar.gz", hash = "sha256:f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e"},
+]
+gevent-websocket = [
+ {file = "gevent-websocket-0.10.1.tar.gz", hash = "sha256:7eaef32968290c9121f7c35b973e2cc302ffb076d018c9068d2f5ca8b2d85fb0"},
+ {file = "gevent_websocket-0.10.1-py3-none-any.whl", hash = "sha256:17b67d91282f8f4c973eba0551183fc84f56f1c90c8f6b6b30256f31f66f5242"},
+]
+greenlet = [
+ {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"},
+ {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"},
+ {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"},
+ {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"},
+ {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"},
+ {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"},
+ {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"},
+ {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"},
+ {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"},
+ {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"},
+ {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"},
+ {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"},
+ {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"},
+ {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"},
+ {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"},
+ {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"},
+ {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"},
+ {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"},
+ {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"},
+ {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"},
+ {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"},
+ {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"},
+ {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"},
+ {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"},
+ {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"},
+ {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"},
+ {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"},
+ {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"},
+ {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"},
+ {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"},
+ {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"},
+ {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"},
+ {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"},
+ {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"},
+ {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"},
+ {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"},
+ {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"},
+ {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"},
+ {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"},
+ {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"},
+ {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"},
+ {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"},
+ {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"},
+ {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"},
+ {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"},
+ {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"},
+ {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"},
+ {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"},
+ {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"},
+ {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"},
+ {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"},
+ {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"},
+ {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"},
+ {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"},
+ {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"},
+]
+idna = [
+ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
+ {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
+]
+importlib-metadata = [
+ {file = "importlib_metadata-4.10.0-py3-none-any.whl", hash = "sha256:b7cf7d3fef75f1e4c80a96ca660efbd51473d7e8f39b5ab9210febc7809012a4"},
+ {file = "importlib_metadata-4.10.0.tar.gz", hash = "sha256:92a8b58ce734b2a4494878e0ecf7d79ccd7a128b5fc6014c401e0b61f006f0f6"},
+]
+iniconfig = [
+ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
+ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
+]
+itsdangerous = [
+ {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"},
+ {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"},
+]
+jinja2 = [
+ {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
+ {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
+]
+markupsafe = [
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
+ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
+]
+mypy-extensions = [
+ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
+ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
+]
+onionshare-cli = []
+packaging = [
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
+]
+pathspec = [
+ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
+ {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
+]
+platformdirs = [
+ {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"},
+ {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"},
+]
+pluggy = [
+ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
+ {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
+]
+psutil = [
+ {file = "psutil-5.8.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0066a82f7b1b37d334e68697faba68e5ad5e858279fd6351c8ca6024e8d6ba64"},
+ {file = "psutil-5.8.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0ae6f386d8d297177fd288be6e8d1afc05966878704dad9847719650e44fc49c"},
+ {file = "psutil-5.8.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:12d844996d6c2b1d3881cfa6fa201fd635971869a9da945cf6756105af73d2df"},
+ {file = "psutil-5.8.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:02b8292609b1f7fcb34173b25e48d0da8667bc85f81d7476584d889c6e0f2131"},
+ {file = "psutil-5.8.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6ffe81843131ee0ffa02c317186ed1e759a145267d54fdef1bc4ea5f5931ab60"},
+ {file = "psutil-5.8.0-cp27-none-win32.whl", hash = "sha256:ea313bb02e5e25224e518e4352af4bf5e062755160f77e4b1767dd5ccb65f876"},
+ {file = "psutil-5.8.0-cp27-none-win_amd64.whl", hash = "sha256:5da29e394bdedd9144c7331192e20c1f79283fb03b06e6abd3a8ae45ffecee65"},
+ {file = "psutil-5.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:74fb2557d1430fff18ff0d72613c5ca30c45cdbfcddd6a5773e9fc1fe9364be8"},
+ {file = "psutil-5.8.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:74f2d0be88db96ada78756cb3a3e1b107ce8ab79f65aa885f76d7664e56928f6"},
+ {file = "psutil-5.8.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:99de3e8739258b3c3e8669cb9757c9a861b2a25ad0955f8e53ac662d66de61ac"},
+ {file = "psutil-5.8.0-cp36-cp36m-win32.whl", hash = "sha256:36b3b6c9e2a34b7d7fbae330a85bf72c30b1c827a4366a07443fc4b6270449e2"},
+ {file = "psutil-5.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:52de075468cd394ac98c66f9ca33b2f54ae1d9bff1ef6b67a212ee8f639ec06d"},
+ {file = "psutil-5.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c6a5fd10ce6b6344e616cf01cc5b849fa8103fbb5ba507b6b2dee4c11e84c935"},
+ {file = "psutil-5.8.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:61f05864b42fedc0771d6d8e49c35f07efd209ade09a5afe6a5059e7bb7bf83d"},
+ {file = "psutil-5.8.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:0dd4465a039d343925cdc29023bb6960ccf4e74a65ad53e768403746a9207023"},
+ {file = "psutil-5.8.0-cp37-cp37m-win32.whl", hash = "sha256:1bff0d07e76114ec24ee32e7f7f8d0c4b0514b3fae93e3d2aaafd65d22502394"},
+ {file = "psutil-5.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:fcc01e900c1d7bee2a37e5d6e4f9194760a93597c97fee89c4ae51701de03563"},
+ {file = "psutil-5.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6223d07a1ae93f86451d0198a0c361032c4c93ebd4bf6d25e2fb3edfad9571ef"},
+ {file = "psutil-5.8.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d225cd8319aa1d3c85bf195c4e07d17d3cd68636b8fc97e6cf198f782f99af28"},
+ {file = "psutil-5.8.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:28ff7c95293ae74bf1ca1a79e8805fcde005c18a122ca983abf676ea3466362b"},
+ {file = "psutil-5.8.0-cp38-cp38-win32.whl", hash = "sha256:ce8b867423291cb65cfc6d9c4955ee9bfc1e21fe03bb50e177f2b957f1c2469d"},
+ {file = "psutil-5.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:90f31c34d25b1b3ed6c40cdd34ff122b1887a825297c017e4cbd6796dd8b672d"},
+ {file = "psutil-5.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6323d5d845c2785efb20aded4726636546b26d3b577aded22492908f7c1bdda7"},
+ {file = "psutil-5.8.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:245b5509968ac0bd179287d91210cd3f37add77dad385ef238b275bad35fa1c4"},
+ {file = "psutil-5.8.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:90d4091c2d30ddd0a03e0b97e6a33a48628469b99585e2ad6bf21f17423b112b"},
+ {file = "psutil-5.8.0-cp39-cp39-win32.whl", hash = "sha256:ea372bcc129394485824ae3e3ddabe67dc0b118d262c568b4d2602a7070afdb0"},
+ {file = "psutil-5.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:f4634b033faf0d968bb9220dd1c793b897ab7f1189956e1aa9eae752527127d3"},
+ {file = "psutil-5.8.0.tar.gz", hash = "sha256:0c9ccb99ab76025f2f0bbecf341d4656e9c1351db8cc8a03ccd62e318ab4b5c6"},
+]
+py = [
+ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
+ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
+]
+pycparser = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+pynacl = [
+ {file = "PyNaCl-1.4.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-win32.whl", hash = "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80"},
+ {file = "PyNaCl-1.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-macosx_10_10_x86_64.whl", hash = "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-win32.whl", hash = "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-win_amd64.whl", hash = "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6"},
+ {file = "PyNaCl-1.4.0-cp35-cp35m-win32.whl", hash = "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4"},
+ {file = "PyNaCl-1.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25"},
+ {file = "PyNaCl-1.4.0-cp36-cp36m-win32.whl", hash = "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4"},
+ {file = "PyNaCl-1.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6"},
+ {file = "PyNaCl-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f"},
+ {file = "PyNaCl-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f"},
+ {file = "PyNaCl-1.4.0-cp38-cp38-win32.whl", hash = "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96"},
+ {file = "PyNaCl-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420"},
+ {file = "PyNaCl-1.4.0.tar.gz", hash = "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505"},
+]
+pyparsing = [
+ {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
+ {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
+]
+pyside2 = [
+ {file = "PySide2-5.15.2-5.15.2-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:4f17a0161995678110447711d685fcd7b15b762810e8f00f6dc239bffb70a32e"},
+ {file = "PySide2-5.15.2-5.15.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0558ced3bcd7f9da638fa8b7709dba5dae82a38728e481aac8b9058ea22fcdd9"},
+ {file = "PySide2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-abi3-macosx_10_13_intel.whl", hash = "sha256:976cacf01ef3b397a680f9228af7d3d6273b9254457ad4204731507c1f9e6c3c"},
+ {file = "PySide2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-abi3-manylinux1_x86_64.whl", hash = "sha256:081d8c8a6c65fb1392856a547814c0c014e25ac04b38b987d9a3483e879e9634"},
+ {file = "PySide2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win32.whl", hash = "sha256:087a0b719bb967405ea85fd202757c761f1fc73d0e2397bc3a6a15376782ee75"},
+ {file = "PySide2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl", hash = "sha256:1316aa22dd330df096daf7b0defe9c00297a66e0b4907f057aaa3e88c53d1aff"},
+]
+pysocks = [
+ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"},
+ {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"},
+ {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"},
+]
+pytest = [
+ {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
+ {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
+]
+pytest-faulthandler = [
+ {file = "pytest-faulthandler-2.0.1.tar.gz", hash = "sha256:ed72bbce87ac344da81eb7d882196a457d4a1026a3da4a57154dacd85cd71ae5"},
+ {file = "pytest_faulthandler-2.0.1-py2.py3-none-any.whl", hash = "sha256:236430ba962fd1c910d670922be55fe5b25ea9bc3fc6561a0cafbb8759e7504d"},
+]
+pytest-qt = [
+ {file = "pytest-qt-4.0.2.tar.gz", hash = "sha256:dfc5240dec7eb43b76bcb5f9a87eecae6ef83592af49f3af5f1d5d093acaa93e"},
+ {file = "pytest_qt-4.0.2-py2.py3-none-any.whl", hash = "sha256:e03847ac02a890ccaac0fde1748855b9dce425aceba62005c6cfced6cf7d5456"},
+]
+python-engineio = [
+ {file = "python-engineio-4.3.0.tar.gz", hash = "sha256:fed35eeacfa21f53f1fc05ef0cadd65a50780364da3a2be7650eb92f928fdb11"},
+ {file = "python_engineio-4.3.0-py3-none-any.whl", hash = "sha256:ad06a975f7e14cb3bb7137cbf70fd883804484d29acd58004d1db1e2a7fc0ad3"},
+]
+python-socketio = [
+ {file = "python-socketio-5.5.0.tar.gz", hash = "sha256:ce972ea1b82aa1811fa10d30cf0d5c251b9a1558c3d66829b6fe70854bcccf0b"},
+ {file = "python_socketio-5.5.0-py3-none-any.whl", hash = "sha256:ca28a0ff0ca5dd05ec5ba4ee2572fe06b96d6f0bc7df384d8b50fbbc06986134"},
+]
+qrcode = [
+ {file = "qrcode-7.3.1.tar.gz", hash = "sha256:375a6ff240ca9bd41adc070428b5dfc1dcfbb0f2507f1ac848f6cded38956578"},
+]
+requests = [
+ {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
+ {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
+]
+shiboken2 = [
+ {file = "shiboken2-5.15.2-5.15.2-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:03f41b0693b91c7f89627f1085a4ecbe8591c03f904118a034854d935e0e766c"},
+ {file = "shiboken2-5.15.2-5.15.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ae8ca41274cfa057106268b6249674ca669c5b21009ec49b16d77665ab9619ed"},
+ {file = "shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-abi3-macosx_10_13_intel.whl", hash = "sha256:edc12a4df2b5be7ca1e762ab94e331ba9e2fbfe3932c20378d8aa3f73f90e0af"},
+ {file = "shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-abi3-manylinux1_x86_64.whl", hash = "sha256:4aee1b91e339578f9831e824ce2a1ec3ba3a463f41fda8946b4547c7eb3cba86"},
+ {file = "shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win32.whl", hash = "sha256:89c157a0e2271909330e1655892e7039249f7b79a64a443d52c512337065cde0"},
+ {file = "shiboken2-5.15.2-5.15.2-cp35.cp36.cp37.cp38.cp39-none-win_amd64.whl", hash = "sha256:14a33169cf1bd919e4c4c4408fffbcd424c919a3f702df412b8d72b694e4c1d5"},
+]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+toml = [
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+]
+tomli = [
+ {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
+ {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
+]
+typing-extensions = [
+ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
+ {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
+]
+unidecode = [
+ {file = "Unidecode-1.3.2-py3-none-any.whl", hash = "sha256:215fe33c9d1c889fa823ccb66df91b02524eb8cc8c9c80f9c5b8129754d27829"},
+ {file = "Unidecode-1.3.2.tar.gz", hash = "sha256:669898c1528912bcf07f9819dc60df18d057f7528271e31f8ec28cc88ef27504"},
+]
+urllib3 = [
+ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
+ {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
+]
+werkzeug = [
+ {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"},
+ {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"},
+]
+zipp = [
+ {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
+ {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
+]
+"zope.event" = [
+ {file = "zope.event-4.5.0-py2.py3-none-any.whl", hash = "sha256:2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42"},
+ {file = "zope.event-4.5.0.tar.gz", hash = "sha256:5e76517f5b9b119acf37ca8819781db6c16ea433f7e2062c4afc2b6fbedb1330"},
+]
+"zope.interface" = [
+ {file = "zope.interface-5.4.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7df1e1c05304f26faa49fa752a8c690126cf98b40b91d54e6e9cc3b7d6ffe8b7"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c98384b254b37ce50eddd55db8d381a5c53b4c10ee66e1e7fe749824f894021"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:08f9636e99a9d5410181ba0729e0408d3d8748026ea938f3b970a0249daa8192"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0ea1d73b7c9dcbc5080bb8aaffb776f1c68e807767069b9ccdd06f27a161914a"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:273f158fabc5ea33cbc936da0ab3d4ba80ede5351babc4f577d768e057651531"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-win32.whl", hash = "sha256:a1e6e96217a0f72e2b8629e271e1b280c6fa3fe6e59fa8f6701bec14e3354325"},
+ {file = "zope.interface-5.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:877473e675fdcc113c138813a5dd440da0769a2d81f4d86614e5d62b69497155"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f7ee479e96f7ee350db1cf24afa5685a5899e2b34992fb99e1f7c1b0b758d263"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:b0297b1e05fd128d26cc2460c810d42e205d16d76799526dfa8c8ccd50e74959"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:af310ec8335016b5e52cae60cda4a4f2a60a788cbb949a4fbea13d441aa5a09e"},
+ {file = "zope.interface-5.4.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:9a9845c4c6bb56e508651f005c4aeb0404e518c6f000d5a1123ab077ab769f5c"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0b465ae0962d49c68aa9733ba92a001b2a0933c317780435f00be7ecb959c702"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:5dd9ca406499444f4c8299f803d4a14edf7890ecc595c8b1c7115c2342cadc5f"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:469e2407e0fe9880ac690a3666f03eb4c3c444411a5a5fddfdabc5d184a79f05"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:52de7fc6c21b419078008f697fd4103dbc763288b1406b4562554bd47514c004"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3dd4952748521205697bc2802e4afac5ed4b02909bb799ba1fe239f77fd4e117"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-win32.whl", hash = "sha256:dd93ea5c0c7f3e25335ab7d22a507b1dc43976e1345508f845efc573d3d779d8"},
+ {file = "zope.interface-5.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:3748fac0d0f6a304e674955ab1365d515993b3a0a865e16a11ec9d86fb307f63"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:66c0061c91b3b9cf542131148ef7ecbecb2690d48d1612ec386de9d36766058f"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d0c1bc2fa9a7285719e5678584f6b92572a5b639d0e471bb8d4b650a1a910920"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2876246527c91e101184f63ccd1d716ec9c46519cc5f3d5375a3351c46467c46"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:334701327f37c47fa628fc8b8d28c7d7730ce7daaf4bda1efb741679c2b087fc"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:71aace0c42d53abe6fc7f726c5d3b60d90f3c5c055a447950ad6ea9cec2e37d9"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5bb3489b4558e49ad2c5118137cfeaf59434f9737fa9c5deefc72d22c23822e2"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-win32.whl", hash = "sha256:1c0e316c9add0db48a5b703833881351444398b04111188069a26a61cfb4df78"},
+ {file = "zope.interface-5.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f0c02cbb9691b7c91d5009108f975f8ffeab5dff8f26d62e21c493060eff2a1"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:7d97a4306898b05404a0dcdc32d9709b7d8832c0c542b861d9a826301719794e"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:867a5ad16892bf20e6c4ea2aab1971f45645ff3102ad29bd84c86027fa99997b"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5f931a1c21dfa7a9c573ec1f50a31135ccce84e32507c54e1ea404894c5eb96f"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:194d0bcb1374ac3e1e023961610dc8f2c78a0f5f634d0c737691e215569e640d"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:8270252effc60b9642b423189a2fe90eb6b59e87cbee54549db3f5562ff8d1b8"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:15e7d1f7a6ee16572e21e3576d2012b2778cbacf75eb4b7400be37455f5ca8bf"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-win32.whl", hash = "sha256:8892f89999ffd992208754851e5a052f6b5db70a1e3f7d54b17c5211e37a98c7"},
+ {file = "zope.interface-5.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2e5a26f16503be6c826abca904e45f1a44ff275fdb7e9d1b75c10671c26f8b94"},
+ {file = "zope.interface-5.4.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4de4bc9b6d35c5af65b454d3e9bc98c50eb3960d5a3762c9438df57427134b8e"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bf68f4b2b6683e52bec69273562df15af352e5ed25d1b6641e7efddc5951d1a7"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:63b82bb63de7c821428d513607e84c6d97d58afd1fe2eb645030bdc185440120"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48"},
+ {file = "zope.interface-5.4.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f44e517131a98f7a76696a7b21b164bcb85291cee106a23beccce454e1f433a4"},
+ {file = "zope.interface-5.4.0-cp38-cp38-win32.whl", hash = "sha256:a9506a7e80bcf6eacfff7f804c0ad5350c8c95b9010e4356a4b36f5322f09abb"},
+ {file = "zope.interface-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54"},
+ {file = "zope.interface-5.4.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:0cee5187b60ed26d56eb2960136288ce91bcf61e2a9405660d271d1f122a69a4"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:a8156e6a7f5e2a0ff0c5b21d6bcb45145efece1909efcbbbf48c56f8da68221d"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:205e40ccde0f37496904572035deea747390a8b7dc65146d30b96e2dd1359a83"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:3f24df7124c323fceb53ff6168da70dbfbae1442b4f3da439cd441681f54fe25"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:5208ebd5152e040640518a77827bdfcc73773a15a33d6644015b763b9c9febc1"},
+ {file = "zope.interface-5.4.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:17776ecd3a1fdd2b2cd5373e5ef8b307162f581c693575ec62e7c5399d80794c"},
+ {file = "zope.interface-5.4.0-cp39-cp39-win32.whl", hash = "sha256:d4d9d6c1a455d4babd320203b918ccc7fcbefe308615c521062bc2ba1aa4d26e"},
+ {file = "zope.interface-5.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:0cba8477e300d64a11a9789ed40ee8932b59f9ee05f85276dbb4b59acee5dd09"},
+ {file = "zope.interface-5.4.0.tar.gz", hash = "sha256:5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e"},
+]
diff --git a/desktop/pyproject.toml b/desktop/pyproject.toml
index 79056ada..7410c04b 100644
--- a/desktop/pyproject.toml
+++ b/desktop/pyproject.toml
@@ -1,41 +1,27 @@
-[tool.briefcase]
-project_name = "OnionShare"
-bundle = "org.onionshare"
-version = "2.4"
-url = "https://onionshare.org"
-license = "GPLv3"
-author = 'Micah Lee'
-author_email = "micah@micahflee.com"
+[tool.poetry]
+name = "onionshare"
+version = "4.2.1"
+description = "OnionShare lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you. It does _not_ require setting up a separate server or using a third party file-sharing service."
+authors = ["Micah Lee <micah@micahflee.com>"]
+license = "GPLv3+"
-[tool.briefcase.app.onionshare]
-formal_name = "OnionShare"
-description = "Securely and anonymously share files, host websites, and chat with friends using the Tor network"
-icon = "src/onionshare/resources/onionshare"
-sources = ['src/onionshare']
-requires = [
- "./onionshare_cli-2.4-py3-none-any.whl",
- "pyside2==5.15.1",
- "qrcode"
-]
+[tool.poetry.dependencies]
+python = ">=3.9,<3.10"
+onionshare_cli = {path = "../cli", develop = true}
+PySide2 = "5.15.2"
+qrcode = "*"
+cx_freeze = "*"
-[tool.briefcase.app.onionshare.macOS]
-requires = []
+[tool.poetry.dev-dependencies]
+black = "*"
+pytest = "*"
+pytest-faulthandler = "*"
+pytest-qt = "*"
-[tool.briefcase.app.onionshare.linux]
-requires = []
-system_requires = [
- "tor",
- "obfs4proxy",
- "gcc",
- "python3-dev",
-]
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
-[tool.briefcase.app.onionshare.windows]
-requires = ["pywin32"]
-
-# Mobile deployments
-[tool.briefcase.app.onionshare.iOS]
-requires = []
-
-[tool.briefcase.app.onionshare.android]
-requires = []
+[tool.poetry.scripts]
+onionshare = 'onionshare:main'
+onionshare-cli = 'onionshare_cli:main'
diff --git a/desktop/scripts/bridges/__init__.py b/desktop/scripts/bridges/__init__.py
new file mode 100644
index 00000000..1477d24d
--- /dev/null
+++ b/desktop/scripts/bridges/__init__.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+OnionShare | https://onionshare.org/
+
+Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+
+import os
+import requests
+
+
+class UpdateTorBridges:
+ """
+ Update the built-in Tor Bridges in OnionShare's torrc templates.
+ """
+
+ def __init__(self, root_path):
+ self.root_path = root_path
+ torrc_template_dir = os.path.join(
+ self.root_path, os.pardir, "cli/onionshare_cli/resources"
+ )
+ endpoint = "https://bridges.torproject.org/moat/circumvention/builtin"
+ r = requests.post(
+ endpoint,
+ headers={"Content-Type": "application/vnd.api+json"},
+ )
+ if r.status_code != 200:
+ print(
+ f"There was a problem fetching the latest built-in bridges: status_code={r.status_code}"
+ )
+ return False
+
+ result = r.json()
+
+ if "errors" in result:
+ print(
+ f"There was a problem fetching the latest built-in bridges: errors={result['errors']}"
+ )
+ return False
+
+ for bridge_type in ["meek", "obfs4", "snowflake"]:
+ if result[bridge_type]:
+ if bridge_type == "meek":
+ torrc_template_extension = "meek_lite_azure"
+ else:
+ torrc_template_extension = bridge_type
+ torrc_template = os.path.join(
+ self.root_path,
+ torrc_template_dir,
+ f"torrc_template-{torrc_template_extension}",
+ )
+
+ with open(torrc_template, "w") as f:
+ f.write(f"# Enable built-in {bridge_type} bridge\n")
+ bridges = result[bridge_type]
+ # Sorts the bridges numerically by IP, since they come back in
+ # random order from the API each time, and create noisy git diff.
+ bridges.sort(key=lambda s: s.split()[1])
+ for item in bridges:
+ if bridge_type == "meek":
+ # obfs4proxy expects the bridge type to be meek_lite, and the url/front params
+ # are missing in the Tor API response, so we have to add them in ourselves.
+ bridge = item.replace("meek", "meek_lite")
+ f.write(
+ f"Bridge {bridge} url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com\n"
+ )
+ else:
+ f.write(f"Bridge {item}\n")
diff --git a/desktop/scripts/build-meek-client.py b/desktop/scripts/build-meek-client.py
index af58173a..563e9a01 100755
--- a/desktop/scripts/build-meek-client.py
+++ b/desktop/scripts/build-meek-client.py
@@ -48,10 +48,10 @@ def main():
os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
)
if platform.system() == "Windows":
- dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor", "Tor")
+ dist_path = os.path.join(root_path, "onionshare", "resources", "tor", "Tor")
bin_filename = "meek-client.exe"
else:
- dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor")
+ dist_path = os.path.join(root_path, "onionshare", "resources", "tor")
bin_filename = "meek-client"
bin_path = os.path.join(os.path.expanduser("~"), "go", "bin", bin_filename)
diff --git a/desktop/scripts/check_lacked_trans.py b/desktop/scripts/check_lacked_trans.py
deleted file mode 100755
index 2456c995..00000000
--- a/desktop/scripts/check_lacked_trans.py
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Check translation lacked or disused.
-
-Example:
-in OnionShare directory
-$ check_lacked_trans.py
-de disused choose_file
-de disused gui_starting_server
-de lacked gui_canceled
-de lacked gui_starting_server1
-de lacked gui_starting_server2
-de lacked gui_starting_server3
-en disused choose_file
-es disused choose_file
-es disused gui_starting_server
-...
-
-
-1. search `{{strings.translation_key}}` and `strings._('translation_key')`
- from .py or .html files.
-2. load translation key from locale/*.json.
-3. compare these.
-
-"""
-
-
-import argparse
-import re
-import os
-import codecs
-import json
-import sys
-
-
-def arg_parser():
- desc = __doc__.strip().splitlines()[0]
- p = argparse.ArgumentParser(description=desc)
- p.add_argument(
- "-d",
- default=".",
- help="onionshare directory",
- metavar="ONIONSHARE_DIR",
- dest="onionshare_dir",
- )
- p.add_argument(
- "--show-all-keys",
- action="store_true",
- help="show translation key in source and exit",
- ),
- p.add_argument(
- "-l",
- default="all",
- help="language code (default: all)",
- metavar="LANG_CODE",
- dest="lang_code",
- )
- return p
-
-
-def files_in(*dirs):
- dir = os.path.join(*dirs)
- files = os.listdir(dir)
- return [os.path.join(dir, f) for f in files]
-
-
-def main():
- parser = arg_parser()
- args = parser.parse_args()
-
- dir = args.onionshare_dir
-
- src = (
- files_in(dir, "onionshare_gui")
- + files_in(dir, "onionshare_gui/tab")
- + files_in(dir, "onionshare_gui/tab/mode")
- + files_in(dir, "onionshare_gui/tab/mode/chat_mode")
- + files_in(dir, "onionshare_gui/tab/mode/receive_mode")
- + files_in(dir, "onionshare_gui/tab/mode/share_mode")
- + files_in(dir, "onionshare_gui/tab/mode/website_mode")
- + files_in(dir, "install/scripts")
- )
- filenames = [p for p in src if p.endswith(".py")]
-
- lang_code = args.lang_code
-
- translate_keys = set()
- for filename in filenames:
- # load translate key from python source
- with open(filename) as f:
- src = f.read()
-
- # find all the starting strings
- start_substr = "strings._\("
- starting_indices = [m.start() for m in re.finditer(start_substr, src)]
-
- for starting_i in starting_indices:
- # are we dealing with single quotes or double quotes?
- quote = None
- inc = 0
- while True:
- quote_i = starting_i + len("strings._(") + inc
- if src[quote_i] == '"':
- quote = '"'
- break
- if src[quote_i] == "'":
- quote = "'"
- break
- inc += 1
-
- # find the starting quote
- starting_i = src.find(quote, starting_i)
- if starting_i:
- starting_i += 1
- # find the ending quote
- ending_i = src.find(quote, starting_i)
- if ending_i:
- key = src[starting_i:ending_i]
- translate_keys.add(key)
-
- if args.show_all_keys:
- for k in sorted(translate_keys):
- print(k)
- sys.exit()
-
- if lang_code == "all":
- locale_files = [f for f in files_in(dir, "share/locale") if f.endswith(".json")]
- else:
- locale_files = [
- f
- for f in files_in(dir, "share/locale")
- if f.endswith("%s.json" % lang_code)
- ]
- for locale_file in locale_files:
- with codecs.open(locale_file, "r", encoding="utf-8") as f:
- trans = json.load(f)
- # trans -> {"key1": "translate-text1", "key2": "translate-text2", ...}
- locale_keys = set(trans.keys())
-
- disused = locale_keys - translate_keys
- lacked = translate_keys - locale_keys
-
- locale, ext = os.path.splitext(os.path.basename(locale_file))
- for k in sorted(disused):
- print(locale, "disused", k)
-
- for k in sorted(lacked):
- print(locale, "lacked", k)
-
-
-if __name__ == "__main__":
- main()
diff --git a/desktop/scripts/dev.bat b/desktop/scripts/dev.bat
deleted file mode 100644
index 9b537a90..00000000
--- a/desktop/scripts/dev.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src
-python -c "import onionshare; onionshare.main()" %*
-cd .. \ No newline at end of file
diff --git a/desktop/scripts/dev.sh b/desktop/scripts/dev.sh
deleted file mode 100755
index 6ce5e796..00000000
--- a/desktop/scripts/dev.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# Run OnionShare desktop, allowing you to use command-line arguments
-
-SCRIPTS_DIR="$( cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )"
-cd $SCRIPTS_DIR
-
-cd ../src
-python -c "import onionshare; onionshare.main()" $@ \ No newline at end of file
diff --git a/desktop/scripts/get-tor-linux.py b/desktop/scripts/get-tor-linux.py
index 51beb475..a911713d 100755
--- a/desktop/scripts/get-tor-linux.py
+++ b/desktop/scripts/get-tor-linux.py
@@ -31,6 +31,7 @@ import hashlib
import shutil
import subprocess
import requests
+from bridges import UpdateTorBridges
def main():
@@ -46,7 +47,7 @@ def main():
)
working_path = os.path.join(root_path, "build", "tor")
tarball_path = os.path.join(working_path, tarball_filename)
- dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor")
+ dist_path = os.path.join(root_path, "onionshare", "resources", "tor")
# Make sure dirs exist
if not os.path.exists(working_path):
@@ -126,6 +127,9 @@ def main():
print(f"Tor binaries extracted to: {dist_path}")
+ # Fetch the built-in bridges
+ UpdateTorBridges(root_path)
+
if __name__ == "__main__":
main()
diff --git a/desktop/scripts/get-tor-osx.py b/desktop/scripts/get-tor-osx.py
index 80d7aee8..2f2d2959 100755
--- a/desktop/scripts/get-tor-osx.py
+++ b/desktop/scripts/get-tor-osx.py
@@ -32,6 +32,8 @@ import shutil
import subprocess
import requests
+from bridges import UpdateTorBridges
+
def main():
dmg_url = "https://dist.torproject.org/torbrowser/11.0a10/TorBrowser-11.0a10-osx64_en-US.dmg"
@@ -49,7 +51,7 @@ def main():
"/Volumes", "Tor Browser", "Tor Browser.app", "Contents"
)
dmg_path = os.path.join(working_path, dmg_filename)
- dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor")
+ dist_path = os.path.join(root_path, "onionshare", "resources", "tor")
if not os.path.exists(dist_path):
os.makedirs(dist_path, exist_ok=True)
@@ -113,6 +115,9 @@ def main():
# Eject dmg
subprocess.call(["diskutil", "eject", "/Volumes/Tor Browser"])
+ # Fetch the built-in bridges
+ UpdateTorBridges(root_path)
+
if __name__ == "__main__":
main()
diff --git a/desktop/scripts/get-tor-windows.py b/desktop/scripts/get-tor-windows.py
index 8ca2e79f..4bd89ec4 100644
--- a/desktop/scripts/get-tor-windows.py
+++ b/desktop/scripts/get-tor-windows.py
@@ -31,6 +31,8 @@ import shutil
import subprocess
import requests
+from bridges import UpdateTorBridges
+
def main():
exe_url = "https://dist.torproject.org/torbrowser/11.0a10/torbrowser-install-11.0a10_en-US.exe"
@@ -44,7 +46,7 @@ def main():
)
working_path = os.path.join(root_path, "build", "tor")
exe_path = os.path.join(working_path, exe_filename)
- dist_path = os.path.join(root_path, "src", "onionshare", "resources", "tor")
+ dist_path = os.path.join(root_path, "onionshare", "resources", "tor")
# Make sure the working folder exists
if not os.path.exists(working_path):
@@ -98,6 +100,9 @@ def main():
os.path.join(working_path, "Data"), os.path.join(dist_path, "Data", "Tor")
)
+ # Fetch the built-in bridges
+ UpdateTorBridges(root_path)
+
if __name__ == "__main__":
main()
diff --git a/desktop/scripts/rebuild-cli.py b/desktop/scripts/rebuild-cli.py
deleted file mode 100755
index f9a43554..00000000
--- a/desktop/scripts/rebuild-cli.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python3
-"""
-This script builds the CLI python wheel, copies it to the desktop folder,
-and installs it in the virtual environment.
-"""
-
-import inspect
-import os
-import glob
-import subprocess
-import shutil
-
-
-def main():
- # Build paths
- root_path = os.path.dirname(
- os.path.dirname(
- os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
- )
- )
- cli_path = os.path.join(root_path, "cli")
- desktop_path = os.path.join(root_path, "desktop")
-
- # Delete old wheels
- for filename in glob.glob(os.path.join(cli_path, "dist", "*.whl")):
- os.remove(filename)
-
- # Build new wheel
- subprocess.call(["poetry", "install"], cwd=cli_path)
- subprocess.call(["poetry", "build"], cwd=cli_path)
- wheel_filename = glob.glob(os.path.join(cli_path, "dist", "*.whl"))[0]
- wheel_basename = os.path.basename(wheel_filename)
- shutil.copyfile(
- wheel_filename,
- os.path.join(desktop_path, wheel_basename),
- )
-
- # Reinstall the new wheel
- subprocess.call(["pip", "uninstall", "onionshare-cli", "-y"])
- subprocess.call(["pip", "install", os.path.join(desktop_path, wheel_basename)])
- subprocess.call(["pip", "install", "typing-extensions"])
-
-
-if __name__ == "__main__":
- main()
diff --git a/desktop/setup-freeze.py b/desktop/setup-freeze.py
new file mode 100644
index 00000000..6026a9cd
--- /dev/null
+++ b/desktop/setup-freeze.py
@@ -0,0 +1,232 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+OnionShare | https://onionshare.org/
+
+Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+import os
+import sys
+import platform
+import shutil
+import cx_Freeze
+from cx_Freeze import setup, Executable
+
+# There's an obscure cx_Freeze bug that I'm hitting that's preventing the macOS
+# package from getting built. This is some monkeypatching to fix it.
+
+if platform.system() == "Darwin" or platform.system() == "Linux":
+ import importlib_metadata
+ import pathlib
+ from pathlib import Path
+ from tempfile import TemporaryDirectory
+
+ class CustomPackagePath(pathlib.PurePosixPath):
+ def __init__(self, filename):
+ self.long_filename = str(filename)
+ self.short_filename = "/".join(filename.as_posix().split("/")[-2:])
+ super(CustomPackagePath, self).__init__()
+
+ def read_text(self, encoding="utf-8"):
+ with self.locate().open(encoding=encoding) as stream:
+ return stream.read()
+
+ def read_binary(self):
+ with self.locate().open("rb") as stream:
+ return stream.read()
+
+ def locate(self):
+ return Path(self.long_filename)
+
+ def as_posix(self):
+ return self.short_filename
+
+ class DistributionCache(importlib_metadata.PathDistribution):
+ _cachedir = TemporaryDirectory(prefix="cxfreeze-")
+
+ @staticmethod
+ def at(path):
+ return DistributionCache(Path(path))
+
+ at.__doc__ = importlib_metadata.PathDistribution.at.__doc__
+
+ @classmethod
+ def from_name(cls, name):
+ distribution = super().from_name(name)
+ temp_dir = Path(cls._cachedir.name)
+ dist_dir = None
+ files = distribution.files or []
+ prep = importlib_metadata.Prepared(distribution.name)
+ normalized = prep.normalized
+ legacy_normalized = prep.legacy_normalized
+ for file in files:
+ # patch: the onionshare and onionshare_cli files are using absolute paths, which break everything
+ if name in ["onionshare", "onionshare_cli"]:
+ if ".dist-info" not in file.as_posix():
+ continue
+
+ file = CustomPackagePath(file)
+
+ if (
+ not file.match(f"{name}-*.dist-info/*")
+ and not file.match(f"{distribution.name}-*.dist-info/*")
+ and not file.match(f"{normalized}-*.dist-info/*")
+ and not file.match(f"{legacy_normalized}-*.dist-info/*")
+ ):
+ continue
+ src_path = file.locate()
+ if not src_path.exists():
+ continue
+ dst_path = temp_dir / file.as_posix()
+ if dist_dir is None:
+ dist_dir = dst_path.parent
+ dist_dir.mkdir(exist_ok=True)
+ shutil.copy2(src_path, dst_path)
+ if dist_dir is None:
+ raise importlib_metadata.PackageNotFoundError(name)
+ return cls.at(dist_dir)
+
+ from_name.__doc__ = importlib_metadata.PathDistribution.from_name.__doc__
+
+ cx_Freeze.module.DistributionCache = DistributionCache
+
+
+# Discover the version
+with open(os.path.join("..", "cli", "onionshare_cli", "resources", "version.txt")) as f:
+ version = f.read().strip()
+
+
+# Build
+include_files = [(os.path.join("..", "LICENSE"), "LICENSE")]
+
+if platform.system() == "Windows":
+ include_msvcr = True
+ gui_base = "Win32GUI"
+ exec_icon = os.path.join("onionshare", "resources", "onionshare.ico")
+
+elif platform.system() == "Darwin":
+ import PySide2
+ import shiboken2
+
+ include_msvcr = False
+ gui_base = None
+ exec_icon = None
+ include_files += [
+ (
+ os.path.join(PySide2.__path__[0], "libpyside2.abi3.5.15.dylib"),
+ "libpyside2.abi3.5.15.dylib",
+ ),
+ (
+ os.path.join(shiboken2.__path__[0], "libshiboken2.abi3.5.15.dylib"),
+ "libshiboken2.abi3.5.15.dylib",
+ ),
+ ]
+
+elif platform.system() == "Linux":
+ include_msvcr = False
+ gui_base = None
+ exec_icon = None
+
+ if not shutil.which("patchelf"):
+ print("Install the patchelf package")
+ sys.exit()
+
+setup(
+ name="onionshare",
+ version=version,
+ description="Securely and anonymously share files, host websites, and chat with friends using the Tor network",
+ options={
+ # build_exe, for Windows and macOS
+ "build_exe": {
+ "packages": [
+ "cffi",
+ "engineio",
+ "engineio.async_drivers.gevent",
+ "engineio.async_drivers.gevent_uwsgi",
+ "gevent",
+ "jinja2.ext",
+ "onionshare",
+ "onionshare_cli",
+ "PySide2",
+ "PySide2.QtCore",
+ "PySide2.QtGui",
+ "PySide2.QtWidgets",
+ ],
+ "excludes": [
+ "test",
+ "tkinter",
+ "PySide2.Qt3DAnimation",
+ "PySide2.Qt3DCore",
+ "PySide2.Qt3DExtras",
+ "PySide2.Qt3DInput",
+ "PySide2.Qt3DLogic",
+ "PySide2.Qt3DRender",
+ "PySide2.QtCharts",
+ "PySide2.QtConcurrent",
+ "PySide2.QtDataVisualization",
+ "PySide2.QtHelp",
+ "PySide2.QtLocation",
+ "PySide2.QtMultimedia",
+ "PySide2.QtMultimediaWidgets",
+ "PySide2.QtNetwork",
+ "PySide2.QtOpenGL",
+ "PySide2.QtOpenGLFunctions",
+ "PySide2.QtPositioning",
+ "PySide2.QtPrintSupport",
+ "PySide2.QtQml",
+ "PySide2.QtQuick",
+ "PySide2.QtQuickControls2",
+ "PySide2.QtQuickWidgets",
+ "PySide2.QtRemoteObjects",
+ "PySide2.QtScript",
+ "PySide2.QtScriptTools",
+ "PySide2.QtScxml",
+ "PySide2.QtSensors",
+ "PySide2.QtSerialPort",
+ "PySide2.QtSql",
+ "PySide2.QtTest",
+ "PySide2.QtTextToSpeech",
+ "PySide2.QtUiTools",
+ "PySide2.QtWebChannel",
+ "PySide2.QtWebEngine",
+ "PySide2.QtWebEngineCore",
+ "PySide2.QtWebEngineWidgets",
+ "PySide2.QtWebSockets",
+ "PySide2.QtXml",
+ "PySide2.QtXmlPatterns",
+ ],
+ "include_files": include_files,
+ "include_msvcr": include_msvcr,
+ },
+ # bdist_mac, making the macOS app bundle
+ "bdist_mac": {
+ "iconfile": os.path.join("onionshare", "resources", "onionshare.icns"),
+ "bundle_name": "OnionShare"
+ },
+ },
+ executables=[
+ Executable(
+ "package/onionshare.py",
+ base=gui_base,
+ icon=exec_icon,
+ ),
+ Executable(
+ "package/onionshare-cli.py",
+ base=None,
+ icon=exec_icon,
+ ),
+ ],
+)
diff --git a/desktop/src/setup.py b/desktop/setup.py
index 95cad942..3052e25e 100644
--- a/desktop/src/setup.py
+++ b/desktop/setup.py
@@ -1,36 +1,14 @@
#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-OnionShare | https://onionshare.org/
-
-Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
import setuptools
+import os
-version = "2.4"
+with open(os.path.join("..", "cli", "onionshare_cli", "resources", "version.txt")) as f:
+ version = f.read().strip()
setuptools.setup(
name="onionshare",
version=version,
- description=(
- "OnionShare lets you securely and anonymously send and receive files. It works by starting a web "
- "server, making it accessible as a Tor onion service, and generating an unguessable web address so "
- "others can download files from you, or upload files to you. It does _not_ require setting up a "
- "separate server or using a third party file-sharing service."
- ),
+ description="Securely and anonymously share files, host websites, and chat with friends using the Tor network",
author="Micah Lee",
author_email="micah@micahflee.com",
maintainer="Micah Lee",
diff --git a/desktop/tests/gui_base_test.py b/desktop/tests/gui_base_test.py
index ea95eef7..2bf762e1 100644
--- a/desktop/tests/gui_base_test.py
+++ b/desktop/tests/gui_base_test.py
@@ -177,8 +177,15 @@ class GuiBaseTest(unittest.TestCase):
tab.get_mode().toggle_history.click()
self.assertEqual(tab.get_mode().history.isVisible(), not currently_visible)
+ def javascript_is_correct_mime_type(self, tab, file):
+ """Test that the javascript file send.js is fetchable and that its MIME type is correct"""
+ path = f"{tab.get_mode().web.static_url_path}/js/{file}"
+ url = f"http://127.0.0.1:{tab.app.port}/{path}"
+ r = requests.get(url)
+ self.assertTrue(r.headers["Content-Type"].startswith("text/javascript;"))
+
def history_indicator(self, tab, indicator_count="1"):
- """Test that we can make sure the history is toggled off, do an action, and the indiciator works"""
+ """Test that we can make sure the history is toggled off, do an action, and the indicator works"""
# Make sure history is toggled off
if tab.get_mode().history.isVisible():
tab.get_mode().toggle_history.click()
diff --git a/desktop/tests/test_gui_chat.py b/desktop/tests/test_gui_chat.py
index 786782f7..ee6c0787 100644
--- a/desktop/tests/test_gui_chat.py
+++ b/desktop/tests/test_gui_chat.py
@@ -61,6 +61,7 @@ class TestChat(GuiBaseTest):
tab = self.new_chat_tab()
self.run_all_chat_mode_started_tests(tab)
self.view_chat(tab)
+ self.javascript_is_correct_mime_type(tab, "chat.js")
self.change_username(tab)
self.run_all_chat_mode_stopping_tests(tab)
self.close_all_tabs()
diff --git a/desktop/tests/test_gui_receive.py b/desktop/tests/test_gui_receive.py
index 423b63a0..3921c6a2 100644
--- a/desktop/tests/test_gui_receive.py
+++ b/desktop/tests/test_gui_receive.py
@@ -124,6 +124,7 @@ class TestReceive(GuiBaseTest):
def run_all_receive_mode_tests(self, tab):
"""Submit files and messages in receive mode and stop the share"""
self.run_all_receive_mode_setup_tests(tab)
+ self.javascript_is_correct_mime_type(tab, "receive.js")
self.upload_file(tab, self.tmpfile_test, "test.txt")
self.history_widgets_present(tab)
self.counter_incremented(tab, 1)
diff --git a/desktop/tests/test_gui_share.py b/desktop/tests/test_gui_share.py
index 2cc48d17..ba175fa9 100644
--- a/desktop/tests/test_gui_share.py
+++ b/desktop/tests/test_gui_share.py
@@ -197,6 +197,7 @@ class TestShare(GuiBaseTest):
self.tmpfile_test
)
self.web_page(tab, "Total size")
+ self.javascript_is_correct_mime_type(tab, "send.js")
self.download_share(tab)
self.history_widgets_present(tab)
self.server_is_stopped(tab)
diff --git a/docs/README.md b/docs/README.md
index 029217bb..fbcf06d9 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -27,7 +27,7 @@ You will end up with the documentation in all supported locales in `docs/localiz
Here's how preparing translations works:
```sh
-# Generate .po files in build/gettext
+# Generate .po files in build/gettext
make gettext
# Create a new blank German locale in source/locale, based on .po files
diff --git a/docs/build.sh b/docs/build.sh
index 4b147426..e30d6b31 100755
--- a/docs/build.sh
+++ b/docs/build.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-VERSION=`cat ../cli/onionshare_cli/resources/version.txt`
+VERSION=$(cat ../cli/onionshare_cli/resources/version.txt)
# Supported locales
LOCALES="en fi pl pt_BR ru tr uk"
diff --git a/docs/check-weblate.py b/docs/check-weblate.py
index ee828f93..76cc6942 100755
--- a/docs/check-weblate.py
+++ b/docs/check-weblate.py
@@ -13,9 +13,13 @@ docs_translations = {}
async def api(path):
url = f"https://hosted.weblate.org{path}"
+ # Wait a bit before each API call, to avoid hammering the server and
+ # getting temporarily blocked
+ await asyncio.sleep(1)
+
async with httpx.AsyncClient() as client:
r = await client.get(
- url, headers={"Authorization": f"Token {api_token}"}, timeout=30.0
+ url, headers={"Authorization": f"Token {api_token}"}, timeout=60
)
if r.status_code == 200:
@@ -109,7 +113,8 @@ async def main():
languages[obj["code"]] = obj["language"]
# Get the app translations for each language
- await asyncio.gather(*[get_app_translation(lang_code) for lang_code in languages])
+ for lang_code in languages:
+ await get_app_translation(lang_code)
# Get the documentation translations for each component for each language
for component in [
@@ -123,11 +128,8 @@ async def main():
"doc-sphinx",
"doc-tor",
]:
- docs_futures = []
for lang_code in languages:
- docs_futures.append(get_docs_translation(component, lang_code))
-
- await asyncio.gather(*docs_futures)
+ await get_docs_translation(component, lang_code)
print("")
diff --git a/docs/gettext/.doctrees/advanced.doctree b/docs/gettext/.doctrees/advanced.doctree
index 8b98b176..e36dddee 100644
--- a/docs/gettext/.doctrees/advanced.doctree
+++ b/docs/gettext/.doctrees/advanced.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/develop.doctree b/docs/gettext/.doctrees/develop.doctree
index 857fea03..e3a6bd6a 100644
--- a/docs/gettext/.doctrees/develop.doctree
+++ b/docs/gettext/.doctrees/develop.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/environment.pickle b/docs/gettext/.doctrees/environment.pickle
index c7599d67..9619e47c 100644
--- a/docs/gettext/.doctrees/environment.pickle
+++ b/docs/gettext/.doctrees/environment.pickle
Binary files differ
diff --git a/docs/gettext/.doctrees/features.doctree b/docs/gettext/.doctrees/features.doctree
index 21d030ce..3c7f575c 100644
--- a/docs/gettext/.doctrees/features.doctree
+++ b/docs/gettext/.doctrees/features.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/help.doctree b/docs/gettext/.doctrees/help.doctree
index f38d5320..c733889f 100644
--- a/docs/gettext/.doctrees/help.doctree
+++ b/docs/gettext/.doctrees/help.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/index.doctree b/docs/gettext/.doctrees/index.doctree
index 36e30fb1..e79b6478 100644
--- a/docs/gettext/.doctrees/index.doctree
+++ b/docs/gettext/.doctrees/index.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/install.doctree b/docs/gettext/.doctrees/install.doctree
index 212698e0..22d1cf79 100644
--- a/docs/gettext/.doctrees/install.doctree
+++ b/docs/gettext/.doctrees/install.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/security.doctree b/docs/gettext/.doctrees/security.doctree
index 30c53f5e..9c8ff96e 100644
--- a/docs/gettext/.doctrees/security.doctree
+++ b/docs/gettext/.doctrees/security.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/tor.doctree b/docs/gettext/.doctrees/tor.doctree
index 74773ead..d1b40318 100644
--- a/docs/gettext/.doctrees/tor.doctree
+++ b/docs/gettext/.doctrees/tor.doctree
Binary files differ
diff --git a/docs/gettext/advanced.pot b/docs/gettext/advanced.pot
index c2310c47..cbb1a2e6 100644
--- a/docs/gettext/advanced.pot
+++ b/docs/gettext/advanced.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:49-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/develop.pot b/docs/gettext/develop.pot
index facf22b4..0e69a5c4 100644
--- a/docs/gettext/develop.pot
+++ b/docs/gettext/develop.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/features.pot b/docs/gettext/features.pot
index 8e5caac3..ed794467 100644
--- a/docs/gettext/features.pot
+++ b/docs/gettext/features.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -178,73 +178,81 @@ msgid "By default OnionShare helps secure your website by setting a strict `Cont
msgstr ""
#: ../../source/features.rst:121
-msgid "If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, check the \"Don't send Content Security Policy header (allows your website to use third-party resources)\" box before starting the service."
+msgid "If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, you have two options:"
+msgstr ""
+
+#: ../../source/features.rst:123
+msgid "You can disable sending a Content Security Policy header by checking the \"Don't send Content Security Policy header (allows your website to use third-party resources)\" box before starting the service."
msgstr ""
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr ""
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid "If you want to host a long-term website using OnionShare (meaning not just to quickly show someone something), it's recommended you do it on a separate, dedicated computer that is always powered on and connected to the internet, and not on the one you use on a regular basis. Save the tab (see :ref:`save_tabs`) so you can resume the website with the same address if you close OnionShare and re-open it later."
msgstr ""
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid "If your website is intended for the public, you should run it as a public service (see :ref:`turn_off_private_key`)."
msgstr ""
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr ""
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid "You can use OnionShare to set up a private, secure chat room that doesn't log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid "After you start the server, copy the OnionShare address and private key and send them to the people you want in the anonymous chat room. If it's important to limit exactly who can join, use an encrypted messaging app to send out the OnionShare address and private key."
msgstr ""
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid "People can join the chat room by loading its OnionShare address in Tor Browser. The chat room requires JavasScript, so everyone who wants to participate must have their Tor Browser security level set to \"Standard\" or \"Safer\", instead of \"Safest\"."
msgstr ""
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid "When someone joins the chat room they get assigned a random name. They can change their name by typing a new name in the box in the left panel and pressing ↵. Since the chat history isn't saved anywhere, it doesn't get displayed at all, even if others were already chatting in the room."
msgstr ""
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid "In an OnionShare chat room, everyone is anonymous. Anyone can change their name to anything, and there is no way to confirm anyone's identity."
msgstr ""
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid "However, if you create an OnionShare chat room and securely send the address only to a small group of trusted friends using encrypted messages, you can be reasonably confident the people joining the chat room are your friends."
msgstr ""
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr ""
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid "If you need to already be using an encrypted messaging app, what's the point of an OnionShare chat room to begin with? It leaves less traces."
msgstr ""
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid "If you for example send a message to a Signal group, a copy of your message ends up on each device (the smartphones, and computers if they set up Signal Desktop) of each member of the group. Even if disappearing messages is turned on, it's hard to confirm all copies of the messages are actually deleted from all devices, and from any other places (like notifications databases) they may have been saved to. OnionShare chat rooms don't store any messages anywhere, so the problem is reduced to a minimum."
msgstr ""
-#: ../../source/features.rst:165
+#: ../../source/features.rst:168
msgid "OnionShare chat rooms can also be useful for people wanting to chat anonymously and securely with someone without needing to create any accounts. For example, a source can send an OnionShare address to a journalist using a disposable email address, and then wait for the journalist to join the chat room, all without compromosing their anonymity."
msgstr ""
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr ""
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid "Because OnionShare relies on Tor onion services, connections between the Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When someone posts a message to an OnionShare chat room, they send it to the server through the E2EE onion connection, which then sends it to all other members of the chat room using WebSockets, through their E2EE onion connections."
msgstr ""
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid "OnionShare doesn't implement any chat encryption on its own. It relies on the Tor onion service's encryption instead."
msgstr ""
diff --git a/docs/gettext/help.pot b/docs/gettext/help.pot
index e7cabc61..38237877 100644
--- a/docs/gettext/help.pot
+++ b/docs/gettext/help.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/index.pot b/docs/gettext/index.pot
index 20bac98d..431f6d84 100644
--- a/docs/gettext/index.pot
+++ b/docs/gettext/index.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/install.pot b/docs/gettext/install.pot
index a0f4c385..b0cb6c4d 100644
--- a/docs/gettext/install.pot
+++ b/docs/gettext/install.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/security.pot b/docs/gettext/security.pot
index fa5f0f3a..c68c04e2 100644
--- a/docs/gettext/security.pot
+++ b/docs/gettext/security.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-17 14:39-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/sphinx.pot b/docs/gettext/sphinx.pot
index c877cc7b..454a1718 100644
--- a/docs/gettext/sphinx.pot
+++ b/docs/gettext/sphinx.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/docs/gettext/tor.pot b/docs/gettext/tor.pot
index da3333e9..7fd4bc5b 100644
--- a/docs/gettext/tor.pot
+++ b/docs/gettext/tor.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: OnionShare 2.4\n"
+"Project-Id-Version: OnionShare 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,11 +21,11 @@ msgid "Connecting to Tor"
msgstr ""
#: ../../source/tor.rst:4
-msgid "Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the bottom right of the OnionShare window to get to its settings."
+msgid "Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
+msgid "Use the Tor version built into OnionShare"
msgstr ""
#: ../../source/tor.rst:11
@@ -37,106 +37,114 @@ msgid "When you open OnionShare, it launches an already configured ``tor`` proce
msgstr ""
#: ../../source/tor.rst:18
-msgid "Attempt auto-configuration with Tor Browser"
+msgid "Getting Around Censorship"
msgstr ""
#: ../../source/tor.rst:20
+msgid "If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://tb-manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without one, you don't need to use a bridge."
+msgstr ""
+
+#: ../../source/tor.rst:22
+msgid "To use a bridge, open the Tor Settings tab. You must select \"Use the Tor version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+
+#: ../../source/tor.rst:25
+msgid "Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges is recommended over using `meek-azure`."
+msgstr ""
+
+#: ../../source/tor.rst:29
+msgid "If using a built-in bridge doesn't work, you can request a bridge from torproject.org. You will have to solve a CAPTCHA in order to request a bridge. (This makes it more difficult for governments or ISPs to block access to Tor bridges.)"
+msgstr ""
+
+#: ../../source/tor.rst:33
+msgid "You also have the option of using a bridge that you learned about from a trusted source."
+msgstr ""
+
+#: ../../source/tor.rst:36
+msgid "Attempt auto-configuration with Tor Browser"
+msgstr ""
+
+#: ../../source/tor.rst:38
msgid "If you have `downloaded the Tor Browser <https://www.torproject.org>`_ and don't want two ``tor`` processes running, you can use the ``tor`` process from the Tor Browser. Keep in mind you need to keep Tor Browser open in the background while you're using OnionShare for this to work."
msgstr ""
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr ""
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid "This is fairly advanced. You'll need to know how edit plaintext files and do stuff as an administrator."
msgstr ""
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid "Download the Tor Windows Expert Bundle `from <https://www.torproject.org/download/tor/>`_. Extract the compressed file and copy the extracted folder to ``C:\\Program Files (x86)\\`` Rename the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
msgstr ""
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid "Make up a control port password. (Using 7 words in a sequence like ``comprised stumble rummage work avenging construct volatile`` is a good idea for a password.) Now open a command prompt (``cmd``) as an administrator, and use ``tor.exe --hash-password`` to generate a hash of your password. For example::"
msgstr ""
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid "The hashed password output is displayed after some warnings (which you can ignore). In the case of the above example, it is ``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
msgstr ""
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid "Now create a new text file at ``C:\\Program Files (x86)\\tor-win32\\torrc`` and put your hashed password output in it, replacing the ``HashedControlPassword`` with the one you just generated::"
msgstr ""
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid "In your administrator command prompt, install ``tor`` as a service using the appropriate ``torrc`` file you just created (as described in `<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Like this::"
msgstr ""
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr ""
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid "Open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using control port\", and set \"Control port\" to ``127.0.0.1`` and \"Port\" to ``9051``. Under \"Tor authentication settings\" choose \"Password\" and set the password to the control port password you picked above. Click the \"Test Connection to Tor\" button. If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr ""
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid "First, install `Homebrew <https://brew.sh/>`_ if you don't already have it, and then install Tor::"
msgstr ""
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr ""
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr ""
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid "Open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using socket file\", and set the socket file to be ``/usr/local/var/run/tor/control.socket``. Under \"Tor authentication settings\" choose \"No authentication, or cookie authentication\". Click the \"Test Connection to Tor\" button."
msgstr ""
-#: ../../source/tor.rst:84
-#: ../../source/tor.rst:104
+#: ../../source/tor.rst:102
+#: ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr ""
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid "First, install the ``tor`` package. If you're using Debian, Ubuntu, or a similar Linux distro, It is recommended to use the Tor Project's `official repository <https://support.torproject.org/apt/tor-deb-repo/>`_."
msgstr ""
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid "Next, add your user to the group that runs the ``tor`` process (in the case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to connect to your system ``tor``'s control socket file."
msgstr ""
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid "Add your user to the ``debian-tor`` group by running this command (replace ``username`` with your actual username)::"
msgstr ""
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid "Reboot your computer. After it boots up again, open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using socket file\". Set the socket file to be ``/var/run/tor/control``. Under \"Tor authentication settings\" choose \"No authentication, or cookie authentication\". Click the \"Test Connection to Tor\" button."
msgstr ""
-
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr ""
-
-#: ../../source/tor.rst:109
-msgid "If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr ""
-
-#: ../../source/tor.rst:113
-msgid "You can use the built-in obfs4 pluggable transports, the built-in meek_lite (Azure) pluggable transports, or custom bridges, which you can obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
diff --git a/docs/poetry.lock b/docs/poetry.lock
index 3bc4f44a..50625b81 100644
--- a/docs/poetry.lock
+++ b/docs/poetry.lock
@@ -16,7 +16,7 @@ python-versions = ">=3.5"
[[package]]
name = "babel"
-version = "2.9.0"
+version = "2.9.1"
description = "Internationalization utilities"
category = "main"
optional = false
@@ -27,27 +27,34 @@ pytz = ">=2015.7"
[[package]]
name = "certifi"
-version = "2020.11.8"
+version = "2021.10.8"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = "*"
[[package]]
-name = "chardet"
-version = "3.0.4"
-description = "Universal encoding detector for Python 2 and 3"
+name = "charset-normalizer"
+version = "2.0.10"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.5.0"
+
+[package.extras]
+unicode_backport = ["unicodedata2"]
[[package]]
name = "click"
-version = "7.1.2"
+version = "8.0.3"
description = "Composable command line interface toolkit"
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
[[package]]
name = "colorama"
@@ -101,7 +108,7 @@ http2 = ["h2 (>=3,<5)"]
[[package]]
name = "httpx"
-version = "0.18.1"
+version = "0.18.2"
description = "The next generation HTTP client."
category = "main"
optional = false
@@ -110,7 +117,7 @@ python-versions = ">=3.6"
[package.dependencies]
async-generator = {version = "*", markers = "python_version < \"3.7\""}
certifi = "*"
-httpcore = ">=0.13.0,<0.14.0"
+httpcore = ">=0.13.3,<0.14.0"
rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
sniffio = "*"
@@ -120,15 +127,15 @@ http2 = ["h2 (>=3.0.0,<4.0.0)"]
[[package]]
name = "idna"
-version = "2.10"
+version = "3.3"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.5"
[[package]]
name = "imagesize"
-version = "1.2.0"
+version = "1.3.0"
description = "Getting image size from png/jpeg/jpeg2000/gif file"
category = "main"
optional = false
@@ -136,52 +143,71 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "immutables"
-version = "0.15"
+version = "0.16"
description = "Immutable Collections"
category = "main"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
+
+[package.dependencies]
+typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""}
[package.extras]
-test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)"]
+test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)", "mypy (>=0.910)", "pytest (>=6.2.4,<6.3.0)"]
+
+[[package]]
+name = "importlib-metadata"
+version = "4.8.3"
+description = "Read metadata from Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
+zipp = ">=0.5"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+perf = ["ipython"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
[[package]]
name = "jinja2"
-version = "2.11.2"
+version = "3.0.3"
description = "A very fast and expressive template engine."
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
[package.dependencies]
-MarkupSafe = ">=0.23"
+MarkupSafe = ">=2.0"
[package.extras]
-i18n = ["Babel (>=0.8)"]
+i18n = ["Babel (>=2.7)"]
[[package]]
name = "markupsafe"
-version = "1.1.1"
+version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+python-versions = ">=3.6"
[[package]]
name = "packaging"
-version = "20.4"
+version = "21.3"
description = "Core utilities for Python packages"
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.6"
[package.dependencies]
-pyparsing = ">=2.0.2"
-six = "*"
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
[[package]]
name = "pygments"
-version = "2.7.2"
+version = "2.11.2"
description = "Pygments is a syntax highlighting package written in Python."
category = "main"
optional = false
@@ -189,15 +215,18 @@ python-versions = ">=3.5"
[[package]]
name = "pyparsing"
-version = "2.4.7"
+version = "3.0.6"
description = "Python parsing module"
category = "main"
optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = ">=3.6"
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
[[package]]
name = "pytz"
-version = "2020.4"
+version = "2021.3"
description = "World timezone definitions, modern and historical"
category = "main"
optional = false
@@ -205,21 +234,21 @@ python-versions = "*"
[[package]]
name = "requests"
-version = "2.25.0"
+version = "2.27.1"
description = "Python HTTP for Humans."
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[package.dependencies]
certifi = ">=2017.4.17"
-chardet = ">=3.0.2,<4"
-idna = ">=2.5,<3"
+charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
+idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
urllib3 = ">=1.21.1,<1.27"
[package.extras]
-security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
[[package]]
name = "rfc3986"
@@ -236,14 +265,6 @@ idna = {version = "*", optional = true, markers = "extra == \"idna2008\""}
idna2008 = ["idna"]
[[package]]
-name = "six"
-version = "1.15.0"
-description = "Python 2 and 3 compatibility utilities"
-category = "main"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
-
-[[package]]
name = "sniffio"
version = "1.2.0"
description = "Sniff out which async library your code is running under"
@@ -256,15 +277,15 @@ contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""}
[[package]]
name = "snowballstemmer"
-version = "2.0.0"
-description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
+version = "2.2.0"
+description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "sphinx"
-version = "3.3.1"
+version = "3.5.4"
description = "Python documentation generator"
category = "main"
optional = false
@@ -274,7 +295,7 @@ python-versions = ">=3.5"
alabaster = ">=0.7,<0.8"
babel = ">=1.3"
colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.12"
+docutils = ">=0.12,<0.17"
imagesize = "*"
Jinja2 = ">=2.3"
packaging = "*"
@@ -290,8 +311,8 @@ sphinxcontrib-serializinghtml = "*"
[package.extras]
docs = ["sphinxcontrib-websupport"]
-lint = ["flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.790)", "docutils-stubs"]
-test = ["pytest", "pytest-cov", "html5lib", "typed-ast", "cython"]
+lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.800)", "docutils-stubs"]
+test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
[[package]]
name = "sphinx-intl"
@@ -312,13 +333,14 @@ transifex = ["transifex_client (>=0.11)"]
[[package]]
name = "sphinx-rtd-theme"
-version = "0.5.0"
+version = "0.5.2"
description = "Read the Docs theme for Sphinx"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
+docutils = "<0.17"
sphinx = "*"
[package.extras]
@@ -350,11 +372,11 @@ test = ["pytest"]
[[package]]
name = "sphinxcontrib-htmlhelp"
-version = "1.0.3"
+version = "2.0.0"
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
category = "main"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
@@ -385,7 +407,7 @@ test = ["pytest"]
[[package]]
name = "sphinxcontrib-serializinghtml"
-version = "1.1.4"
+version = "1.1.5"
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
category = "main"
optional = false
@@ -396,8 +418,16 @@ lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
+name = "typing-extensions"
+version = "4.0.1"
+description = "Backported and Experimental Type Hints for Python 3.6+"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
name = "urllib3"
-version = "1.26.2"
+version = "1.26.8"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
@@ -408,6 +438,18 @@ brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+[[package]]
+name = "zipp"
+version = "3.6.0"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
+
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
@@ -423,20 +465,20 @@ async-generator = [
{file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"},
]
babel = [
- {file = "Babel-2.9.0-py2.py3-none-any.whl", hash = "sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5"},
- {file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"},
+ {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"},
+ {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"},
]
certifi = [
- {file = "certifi-2020.11.8-py2.py3-none-any.whl", hash = "sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd"},
- {file = "certifi-2020.11.8.tar.gz", hash = "sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4"},
+ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
+ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
]
-chardet = [
- {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"},
- {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"},
+charset-normalizer = [
+ {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"},
+ {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"},
]
click = [
- {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
- {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
+ {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
+ {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"},
]
colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
@@ -458,139 +500,168 @@ httpcore = [
{file = "httpcore-0.13.3.tar.gz", hash = "sha256:5d674b57a11275904d4fd0819ca02f960c538e4472533620f322fc7db1ea0edc"},
]
httpx = [
- {file = "httpx-0.18.1-py3-none-any.whl", hash = "sha256:ad2e3db847be736edc4b272c4d5788790a7e5789ef132fc6b5fef8aeb9e9f6e0"},
- {file = "httpx-0.18.1.tar.gz", hash = "sha256:0a2651dd2b9d7662c70d12ada5c290abcf57373b9633515fe4baa9f62566086f"},
+ {file = "httpx-0.18.2-py3-none-any.whl", hash = "sha256:979afafecb7d22a1d10340bafb403cf2cb75aff214426ff206521fc79d26408c"},
+ {file = "httpx-0.18.2.tar.gz", hash = "sha256:9f99c15d33642d38bce8405df088c1c4cfd940284b4290cacbfb02e64f4877c6"},
]
idna = [
- {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
- {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
+ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
+ {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
]
imagesize = [
- {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"},
- {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"},
+ {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"},
+ {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"},
]
immutables = [
- {file = "immutables-0.15-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:6728f4392e3e8e64b593a5a0cd910a1278f07f879795517e09f308daed138631"},
- {file = "immutables-0.15-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f0836cd3bdc37c8a77b192bbe5f41dbcc3ce654db048ebbba89bdfe6db7a1c7a"},
- {file = "immutables-0.15-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8703d8abfd8687932f2a05f38e7de270c3a6ca3bd1c1efb3c938656b3f2f985a"},
- {file = "immutables-0.15-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b8ad986f9b532c026f19585289384b0769188fcb68b37c7f0bd0df9092a6ca54"},
- {file = "immutables-0.15-cp36-cp36m-win_amd64.whl", hash = "sha256:6f117d9206165b9dab8fd81c5129db757d1a044953f438654236ed9a7a4224ae"},
- {file = "immutables-0.15-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b75ade826920c4e490b1bb14cf967ac14e61eb7c5562161c5d7337d61962c226"},
- {file = "immutables-0.15-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b7e13c061785e34f73c4f659861f1b3e4a5fd918e4395c84b21c4e3d449ebe27"},
- {file = "immutables-0.15-cp37-cp37m-win_amd64.whl", hash = "sha256:3035849accee4f4e510ed7c94366a40e0f5fef9069fbe04a35f4787b13610a4a"},
- {file = "immutables-0.15-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:b04fa69174e0c8f815f9c55f2a43fc9e5a68452fab459a08e904a74e8471639f"},
- {file = "immutables-0.15-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:141c2e9ea515a3a815007a429f0b47a578ebeb42c831edaec882a245a35fffca"},
- {file = "immutables-0.15-cp38-cp38-win_amd64.whl", hash = "sha256:cbe8c64640637faa5535d539421b293327f119c31507c33ca880bd4f16035eb6"},
- {file = "immutables-0.15-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a0a4e4417d5ef4812d7f99470cd39347b58cb927365dd2b8da9161040d260db0"},
- {file = "immutables-0.15-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3b15c08c71c59e5b7c2470ef949d49ff9f4263bb77f488422eaa157da84d6999"},
- {file = "immutables-0.15-cp39-cp39-win_amd64.whl", hash = "sha256:2283a93c151566e6830aee0e5bee55fc273455503b43aa004356b50f9182092b"},
- {file = "immutables-0.15.tar.gz", hash = "sha256:3713ab1ebbb6946b7ce1387bb9d1d7f5e09c45add58c2a2ee65f963c171e746b"},
+ {file = "immutables-0.16-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:acbfa79d44228d96296279068441f980dc63dbed52522d9227ff9f4d96c6627e"},
+ {file = "immutables-0.16-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c9ed003eacb92e630ef200e31f47236c2139b39476894f7963b32bd39bafa3"},
+ {file = "immutables-0.16-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a396314b9024fa55bf83a27813fd76cf9f27dce51f53b0f19b51de035146251"},
+ {file = "immutables-0.16-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a2a71678348fb95b13ca108d447f559a754c41b47bd1e7e4fb23974e735682d"},
+ {file = "immutables-0.16-cp36-cp36m-win32.whl", hash = "sha256:064001638ab5d36f6aa05b6101446f4a5793fb71e522bc81b8fc65a1894266ff"},
+ {file = "immutables-0.16-cp36-cp36m-win_amd64.whl", hash = "sha256:1de393f1b188740ca7b38f946f2bbc7edf3910d2048f03bbb8d01f17a038d67c"},
+ {file = "immutables-0.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fcf678a3074613119385a02a07c469ec5130559f5ea843c85a0840c80b5b71c6"},
+ {file = "immutables-0.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a307eb0984eb43e815dcacea3ac50c11d00a936ecf694c46991cd5a23bcb0ec0"},
+ {file = "immutables-0.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7a58825ff2254e2612c5a932174398a4ea8fbddd8a64a02c880cc32ee28b8820"},
+ {file = "immutables-0.16-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:798b095381eb42cf40db6876339e7bed84093e5868018a9e73d8e1f7ab4bb21e"},
+ {file = "immutables-0.16-cp37-cp37m-win32.whl", hash = "sha256:19bdede174847c2ef1292df0f23868ab3918b560febb09fcac6eec621bd4812b"},
+ {file = "immutables-0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:9ccf4c0e3e2e3237012b516c74c49de8872ccdf9129739f7a0b9d7444a8c4862"},
+ {file = "immutables-0.16-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d59beef203a3765db72b1d0943547425c8318ecf7d64c451fd1e130b653c2fbb"},
+ {file = "immutables-0.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0020aaa4010b136056c20a46ce53204e1407a9e4464246cb2cf95b90808d9161"},
+ {file = "immutables-0.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edd9f67671555af1eb99ad3c7550238487dd7ac0ac5205b40204ed61c9a922ac"},
+ {file = "immutables-0.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:298a301f85f307b4c056a0825eb30f060e64d73605e783289f3df37dd762bab8"},
+ {file = "immutables-0.16-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b779617f5b94486bfd0f22162cd72eb5f2beb0214a14b75fdafb7b2c908ed0cb"},
+ {file = "immutables-0.16-cp38-cp38-win32.whl", hash = "sha256:511c93d8b1bbbf103ff3f1f120c5a68a9866ce03dea6ac406537f93ca9b19139"},
+ {file = "immutables-0.16-cp38-cp38-win_amd64.whl", hash = "sha256:b651b61c1af6cda2ee201450f2ffe048a5959bc88e43e6c312f4c93e69c9e929"},
+ {file = "immutables-0.16-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aa7bf572ae1e006104c584be70dc634849cf0dc62f42f4ee194774f97e7fd17d"},
+ {file = "immutables-0.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50793a44ba0d228ed8cad4d0925e00dfd62ea32f44ddee8854f8066447272d05"},
+ {file = "immutables-0.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:799621dcdcdcbb2516546a40123b87bf88de75fe7459f7bd8144f079ace6ec3e"},
+ {file = "immutables-0.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7bcf52aeb983bd803b7c6106eae1b2d9a0c7ab1241bc6b45e2174ba2b7283031"},
+ {file = "immutables-0.16-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:734c269e82e5f307fb6e17945953b67659d1731e65309787b8f7ba267d1468f2"},
+ {file = "immutables-0.16-cp39-cp39-win32.whl", hash = "sha256:a454d5d3fee4b7cc627345791eb2ca4b27fa3bbb062ccf362ecaaa51679a07ed"},
+ {file = "immutables-0.16-cp39-cp39-win_amd64.whl", hash = "sha256:2505d93395d3f8ae4223e21465994c3bc6952015a38dc4f03cb3e07a2b8d8325"},
+ {file = "immutables-0.16.tar.gz", hash = "sha256:d67e86859598eed0d926562da33325dac7767b7b1eff84e232c22abea19f4360"},
+]
+importlib-metadata = [
+ {file = "importlib_metadata-4.8.3-py3-none-any.whl", hash = "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e"},
+ {file = "importlib_metadata-4.8.3.tar.gz", hash = "sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668"},
]
jinja2 = [
- {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
- {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
+ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"},
+ {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"},
]
markupsafe = [
- {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"},
- {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"},
- {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"},
- {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
+ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
]
packaging = [
- {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"},
- {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"},
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
]
pygments = [
- {file = "Pygments-2.7.2-py3-none-any.whl", hash = "sha256:88a0bbcd659fcb9573703957c6b9cff9fab7295e6e76db54c9d00ae42df32773"},
- {file = "Pygments-2.7.2.tar.gz", hash = "sha256:381985fcc551eb9d37c52088a32914e00517e57f4a21609f48141ba08e193fa0"},
+ {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"},
+ {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"},
]
pyparsing = [
- {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
- {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
+ {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
+ {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
]
pytz = [
- {file = "pytz-2020.4-py2.py3-none-any.whl", hash = "sha256:5c55e189b682d420be27c6995ba6edce0c0a77dd67bfbe2ae6607134d5851ffd"},
- {file = "pytz-2020.4.tar.gz", hash = "sha256:3e6b7dd2d1e0a59084bcee14a17af60c5c562cdc16d828e8eba2e683d3a7e268"},
+ {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"},
+ {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"},
]
requests = [
- {file = "requests-2.25.0-py2.py3-none-any.whl", hash = "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"},
- {file = "requests-2.25.0.tar.gz", hash = "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8"},
+ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
+ {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
]
rfc3986 = [
{file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"},
{file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"},
]
-six = [
- {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
- {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
-]
sniffio = [
{file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"},
{file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"},
]
snowballstemmer = [
- {file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"},
- {file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"},
+ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
+ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
]
sphinx = [
- {file = "Sphinx-3.3.1-py3-none-any.whl", hash = "sha256:d4e59ad4ea55efbb3c05cde3bfc83bfc14f0c95aa95c3d75346fcce186a47960"},
- {file = "Sphinx-3.3.1.tar.gz", hash = "sha256:1e8d592225447104d1172be415bc2972bd1357e3e12fdc76edf2261105db4300"},
+ {file = "Sphinx-3.5.4-py3-none-any.whl", hash = "sha256:2320d4e994a191f4b4be27da514e46b3d6b420f2ff895d064f52415d342461e8"},
+ {file = "Sphinx-3.5.4.tar.gz", hash = "sha256:19010b7b9fa0dc7756a6e105b2aacd3a80f798af3c25c273be64d7beeb482cb1"},
]
sphinx-intl = [
{file = "sphinx-intl-2.0.1.tar.gz", hash = "sha256:b25a6ec169347909e8d983eefe2d8adecb3edc2f27760db79b965c69950638b4"},
{file = "sphinx_intl-2.0.1-py3.8.egg", hash = "sha256:2ff97cba0e4e43249e339a3c29dd2f5b63c25ce794050aabca320ad95f5c5b55"},
]
sphinx-rtd-theme = [
- {file = "sphinx_rtd_theme-0.5.0-py2.py3-none-any.whl", hash = "sha256:373413d0f82425aaa28fb288009bf0d0964711d347763af2f1b65cafcb028c82"},
- {file = "sphinx_rtd_theme-0.5.0.tar.gz", hash = "sha256:22c795ba2832a169ca301cd0a083f7a434e09c538c70beb42782c073651b707d"},
+ {file = "sphinx_rtd_theme-0.5.2-py2.py3-none-any.whl", hash = "sha256:4a05bdbe8b1446d77a01e20a23ebc6777c74f43237035e76be89699308987d6f"},
+ {file = "sphinx_rtd_theme-0.5.2.tar.gz", hash = "sha256:32bd3b5d13dc8186d7a42fc816a23d32e83a4827d7d9882948e7b837c232da5a"},
]
sphinxcontrib-applehelp = [
{file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
@@ -601,8 +672,8 @@ sphinxcontrib-devhelp = [
{file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
]
sphinxcontrib-htmlhelp = [
- {file = "sphinxcontrib-htmlhelp-1.0.3.tar.gz", hash = "sha256:e8f5bb7e31b2dbb25b9cc435c8ab7a79787ebf7f906155729338f3156d93659b"},
- {file = "sphinxcontrib_htmlhelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:3c0bc24a2c41e340ac37c85ced6dafc879ab485c095b1d65d2461ac2f7cca86f"},
+ {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"},
+ {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"},
]
sphinxcontrib-jsmath = [
{file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
@@ -613,10 +684,18 @@ sphinxcontrib-qthelp = [
{file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
]
sphinxcontrib-serializinghtml = [
- {file = "sphinxcontrib-serializinghtml-1.1.4.tar.gz", hash = "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc"},
- {file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"},
+ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
+ {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
+]
+typing-extensions = [
+ {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
+ {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
]
urllib3 = [
- {file = "urllib3-1.26.2-py2.py3-none-any.whl", hash = "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"},
- {file = "urllib3-1.26.2.tar.gz", hash = "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08"},
+ {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"},
+ {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"},
+]
+zipp = [
+ {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
+ {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
]
diff --git a/docs/source/_static/screenshots/chat-sharing.png b/docs/source/_static/screenshots/chat-sharing.png
index 51cf24a1..2ce7f0cc 100644
--- a/docs/source/_static/screenshots/chat-sharing.png
+++ b/docs/source/_static/screenshots/chat-sharing.png
Binary files differ
diff --git a/docs/source/_static/screenshots/chat.png b/docs/source/_static/screenshots/chat.png
index b328d375..25db2e19 100644
--- a/docs/source/_static/screenshots/chat.png
+++ b/docs/source/_static/screenshots/chat.png
Binary files differ
diff --git a/docs/source/_static/screenshots/receive-sharing.png b/docs/source/_static/screenshots/receive-sharing.png
index 36bf175b..0ef4ca0e 100644
--- a/docs/source/_static/screenshots/receive-sharing.png
+++ b/docs/source/_static/screenshots/receive-sharing.png
Binary files differ
diff --git a/docs/source/_static/screenshots/receive-torbrowser.png b/docs/source/_static/screenshots/receive-torbrowser.png
index 70ca189b..0a4e0cc7 100644
--- a/docs/source/_static/screenshots/receive-torbrowser.png
+++ b/docs/source/_static/screenshots/receive-torbrowser.png
Binary files differ
diff --git a/docs/source/_static/screenshots/receive.png b/docs/source/_static/screenshots/receive.png
index 9a5a9265..738edef4 100644
--- a/docs/source/_static/screenshots/receive.png
+++ b/docs/source/_static/screenshots/receive.png
Binary files differ
diff --git a/docs/source/_static/screenshots/settings.png b/docs/source/_static/screenshots/settings.png
deleted file mode 100644
index 2e0e49f1..00000000
--- a/docs/source/_static/screenshots/settings.png
+++ /dev/null
Binary files differ
diff --git a/docs/source/_static/screenshots/share-files.png b/docs/source/_static/screenshots/share-files.png
index b5f0223f..e75b3cab 100644
--- a/docs/source/_static/screenshots/share-files.png
+++ b/docs/source/_static/screenshots/share-files.png
Binary files differ
diff --git a/docs/source/_static/screenshots/share-sharing.png b/docs/source/_static/screenshots/share-sharing.png
index 47f00975..baafcdd9 100644
--- a/docs/source/_static/screenshots/share-sharing.png
+++ b/docs/source/_static/screenshots/share-sharing.png
Binary files differ
diff --git a/docs/source/_static/screenshots/share-torbrowser.png b/docs/source/_static/screenshots/share-torbrowser.png
index 4eeabf0e..2b7650c3 100644
--- a/docs/source/_static/screenshots/share-torbrowser.png
+++ b/docs/source/_static/screenshots/share-torbrowser.png
Binary files differ
diff --git a/docs/source/_static/screenshots/share.png b/docs/source/_static/screenshots/share.png
index 91e42dd1..9c62ecd1 100644
--- a/docs/source/_static/screenshots/share.png
+++ b/docs/source/_static/screenshots/share.png
Binary files differ
diff --git a/docs/source/_static/screenshots/tabs.png b/docs/source/_static/screenshots/tabs.png
index 04d01f0f..069dd37d 100644
--- a/docs/source/_static/screenshots/tabs.png
+++ b/docs/source/_static/screenshots/tabs.png
Binary files differ
diff --git a/docs/source/_static/screenshots/tor-settings-bridges.png b/docs/source/_static/screenshots/tor-settings-bridges.png
new file mode 100644
index 00000000..d3bb4237
--- /dev/null
+++ b/docs/source/_static/screenshots/tor-settings-bridges.png
Binary files differ
diff --git a/docs/source/_static/screenshots/tor-settings-moat.png b/docs/source/_static/screenshots/tor-settings-moat.png
new file mode 100644
index 00000000..9d3d9a59
--- /dev/null
+++ b/docs/source/_static/screenshots/tor-settings-moat.png
Binary files differ
diff --git a/docs/source/_static/screenshots/tor-settings.png b/docs/source/_static/screenshots/tor-settings.png
new file mode 100644
index 00000000..19d6b6c3
--- /dev/null
+++ b/docs/source/_static/screenshots/tor-settings.png
Binary files differ
diff --git a/docs/source/_static/screenshots/website-files.png b/docs/source/_static/screenshots/website-files.png
index b7c49ef8..8f92ec29 100644
--- a/docs/source/_static/screenshots/website-files.png
+++ b/docs/source/_static/screenshots/website-files.png
Binary files differ
diff --git a/docs/source/_static/screenshots/website.png b/docs/source/_static/screenshots/website.png
index 83919507..ce0ebf27 100644
--- a/docs/source/_static/screenshots/website.png
+++ b/docs/source/_static/screenshots/website.png
Binary files differ
diff --git a/docs/source/advanced.rst b/docs/source/advanced.rst
index 61e9d15c..870f8777 100644
--- a/docs/source/advanced.rst
+++ b/docs/source/advanced.rst
@@ -105,14 +105,14 @@ You can browse the command-line documentation by running ``onionshare --help``::
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
│ │
- │ v2.4 │
+ │ v2.4.1 │
│ │
│ https://onionshare.org/ │
╰───────────────────────────────────────────╯
usage: onionshare-cli [-h] [--receive] [--website] [--chat] [--local-only] [--connect-timeout SECONDS] [--config FILENAME] [--persistent FILENAME] [--title TITLE] [--public]
- [--auto-start-timer SECONDS] [--auto-stop-timer SECONDS] [--no-autostop-sharing] [--data-dir data_dir] [--webhook-url webhook_url] [--disable-text] [--disable-files]
- [--disable_csp] [-v]
+ [--auto-start-timer SECONDS] [--auto-stop-timer SECONDS] [--no-autostop-sharing] [--data-dir data_dir] [--webhook-url webhook_url] [--disable-text]
+ [--disable-files] [--disable_csp] [--custom_csp custom_csp] [-v]
[filename ...]
positional arguments:
@@ -140,5 +140,6 @@ You can browse the command-line documentation by running ``onionshare --help``::
Receive files: URL to receive webhook notifications
--disable-text Receive files: Disable receiving text messages
--disable-files Receive files: Disable receiving files
- --disable_csp Publish website: Disable Content Security Policy header (allows your website to use third-party resources)
+ --disable_csp Publish website: Disable the default Content Security Policy header (allows your website to use third-party resources)
+ --custom_csp custom_csp Publish website: Set a custom Content Security Policy header
-v, --verbose Log OnionShare errors to stdout, and web errors to disk
diff --git a/docs/source/conf.py b/docs/source/conf.py
index b20e51db..74fa88cc 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -1,6 +1,6 @@
project = "OnionShare"
author = copyright = "Micah Lee, et al."
-version = release = "2.4"
+version = release = "2.4.1"
extensions = ["sphinx_rtd_theme"]
templates_path = ["_templates"]
@@ -16,10 +16,10 @@ languages = [
("Русский", "ru"), # Russian
# ("Español", "es"), # Spanish
("Türkçe", "tr"), # Turkish
- ("Українська", "uk"), # Ukranian
+ ("Українська", "uk"), # Ukrainian
]
-versions = ["2.3", "2.3.1", "2.3.2", "2.3.3", "2.4"]
+versions = ["2.3", "2.3.1", "2.3.2", "2.3.3", "2.4", "2.4.1"]
html_theme = "sphinx_rtd_theme"
html_logo = "_static/logo.png"
diff --git a/docs/source/develop.rst b/docs/source/develop.rst
index 042800c4..c465f63b 100644
--- a/docs/source/develop.rst
+++ b/docs/source/develop.rst
@@ -40,7 +40,7 @@ Verbose mode
When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command.
This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::
- $ $ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
+ $ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
╭───────────────────────────────────────────╮
│ * ▄▄█████▄▄ * │
│ ▄████▀▀▀████▄ * │
@@ -58,7 +58,7 @@ This prints a lot of helpful messages to the terminal, such as when certain obje
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
│ │
- │ v2.4 │
+ │ v2.4.1 │
│ │
│ https://onionshare.org/ │
╰───────────────────────────────────────────╯
@@ -144,7 +144,7 @@ You can do this with the ``--local-only`` flag. For example::
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
│ │
- │ v2.4 │
+ │ v2.4.1 │
│ │
│ https://onionshare.org/ │
╰───────────────────────────────────────────╯
diff --git a/docs/source/features.rst b/docs/source/features.rst
index 497b0ede..3cb89ed7 100644
--- a/docs/source/features.rst
+++ b/docs/source/features.rst
@@ -118,7 +118,10 @@ Content Security Policy
By default OnionShare helps secure your website by setting a strict `Content Security Policy <https://en.wikipedia.org/wiki/Content_Security_Policy>`_ header. However, this prevents third-party content from loading inside the web page.
-If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, check the "Don't send Content Security Policy header (allows your website to use third-party resources)" box before starting the service.
+If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, you have two options:
+
+- You can disable sending a Content Security Policy header by checking the "Don't send Content Security Policy header (allows your website to use third-party resources)" box before starting the service.
+- You can send a custom Content Security Policy header.
Tips for running a website service
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/source/locale/bg/LC_MESSAGES/develop.po b/docs/source/locale/bg/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..da3aa8a8
--- /dev/null
+++ b/docs/source/locale/bg/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/bn/LC_MESSAGES/develop.po b/docs/source/locale/bn/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..9351ed65
--- /dev/null
+++ b/docs/source/locale/bn/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: bn\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/ca/LC_MESSAGES/features.po b/docs/source/locale/ca/LC_MESSAGES/features.po
index ff60adb3..1077412c 100644
--- a/docs/source/locale/ca/LC_MESSAGES/features.po
+++ b/docs/source/locale/ca/LC_MESSAGES/features.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: 2020-11-25 18:28+0000\n"
+"PO-Revision-Date: 2021-11-28 19:16+0000\n"
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ca\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -29,6 +29,9 @@ msgid ""
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
"<https://community.torproject.org/onion-services/>`_."
msgstr ""
+"Els servidors webs s'arrenquen localment, al teu ordinador, i es fan "
+"accessibles a altres persones com a _`serveis onion <https://community."
+"torproject.org/onion-services/>`_ de `Tor <https://www.torproject.org/>`."
#: ../../source/features.rst:8
msgid ""
diff --git a/docs/source/locale/ca/LC_MESSAGES/help.po b/docs/source/locale/ca/LC_MESSAGES/help.po
index a4845c2b..7e1cbb90 100644
--- a/docs/source/locale/ca/LC_MESSAGES/help.po
+++ b/docs/source/locale/ca/LC_MESSAGES/help.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: 2020-11-25 18:28+0000\n"
+"PO-Revision-Date: 2021-11-28 19:16+0000\n"
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ca\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
@@ -25,7 +25,7 @@ msgstr "Demanar ajuda"
#: ../../source/help.rst:5
msgid "Read This Website"
-msgstr ""
+msgstr "Llegeix aquest web"
#: ../../source/help.rst:7
msgid ""
diff --git a/docs/source/locale/ca/LC_MESSAGES/index.po b/docs/source/locale/ca/LC_MESSAGES/index.po
index f14a6ae0..96514a4e 100644
--- a/docs/source/locale/ca/LC_MESSAGES/index.po
+++ b/docs/source/locale/ca/LC_MESSAGES/index.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:46-0700\n"
-"PO-Revision-Date: 2020-11-25 18:28+0000\n"
+"PO-Revision-Date: 2021-11-28 19:16+0000\n"
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ca\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.4-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/index.rst:2
@@ -28,3 +28,6 @@ msgid ""
"OnionShare is an open source tool that lets you securely and anonymously "
"share files, host websites, and chat with friends using the Tor network."
msgstr ""
+"OnionShare és una eina de codi obert que et permet, de forma anònima i "
+"segura, compartir arxius, allotjar webs i xatejar amb amics, fent servir la "
+"xarxa Tor."
diff --git a/docs/source/locale/ca/LC_MESSAGES/security.po b/docs/source/locale/ca/LC_MESSAGES/security.po
index d6140d16..9e5e5611 100644
--- a/docs/source/locale/ca/LC_MESSAGES/security.po
+++ b/docs/source/locale/ca/LC_MESSAGES/security.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: 2020-11-25 18:28+0000\n"
+"PO-Revision-Date: 2021-11-28 19:16+0000\n"
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
-"Language: ca\n"
"Language-Team: ca <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/security.rst:2
@@ -25,6 +26,8 @@ msgstr "Disseny de seguretat"
#: ../../source/security.rst:4
msgid "Read :ref:`how_it_works` first to get a handle on how OnionShare works."
msgstr ""
+"Pots llegir :ref:`how_it_works` per entendre una mica com funciona "
+"OnionShare."
#: ../../source/security.rst:6
msgid "Like all software, OnionShare may contain bugs or vulnerabilities."
@@ -242,4 +245,3 @@ msgstr ""
#~ " share the address. This isn't "
#~ "necessary unless anonymity is a goal."
#~ msgstr ""
-
diff --git a/docs/source/locale/cs/LC_MESSAGES/develop.po b/docs/source/locale/cs/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..3e9e9385
--- /dev/null
+++ b/docs/source/locale/cs/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/de/LC_MESSAGES/advanced.po b/docs/source/locale/de/LC_MESSAGES/advanced.po
index 5aecf28f..29e8a947 100644
--- a/docs/source/locale/de/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/de/LC_MESSAGES/advanced.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
-"PO-Revision-Date: 2021-09-13 10:46+0000\n"
-"Last-Translator: nautilusx <translate@disroot.org>\n"
+"PO-Revision-Date: 2021-12-04 15:52+0000\n"
+"Last-Translator: Jannes Leßmann <janneslessmann@web.de>\n"
"Language-Team: de <LL@li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/advanced.rst:2
@@ -54,16 +54,15 @@ msgstr ""
"purpurfarbenen Stecknadelsymbol links dem Status des Dienstes."
#: ../../source/advanced.rst:18
-#, fuzzy
msgid ""
"When you quit OnionShare and then open it again, your saved tabs will "
"start opened. You'll have to manually start each service, but when you do"
" they will start with the same OnionShare address and private key."
msgstr ""
"Wenn du OnionShare beendest und dann wieder öffnest, werden deine "
-"gespeicherten Reiter wieder geöffnet. Du musst dann zwar jeden Dienst "
-"manuell starten, aber wenn du dies tust, starten die Dienste mit "
-"derselben OnionShare-Adresse und mit demselben Passwort wie zuvor."
+"gespeicherten Tabs wieder geöffnet. Du musst dann zwar jeden Dienst manuell "
+"starten, aber wenn du dies tust, starten die Dienste mit derselben "
+"OnionShare-Adresse und mit demselben Passwort wie zuvor."
#: ../../source/advanced.rst:21
msgid ""
@@ -83,28 +82,29 @@ msgid ""
"By default, all OnionShare services are protected with a private key, "
"which Tor calls \"client authentication\"."
msgstr ""
+"Standardmäßig werden alle OnionShare-Dienste mit einem privaten Schlüssel "
+"gesichert. Dies wird im Tor-Kontext \"Client-Authentifizierung\" genannt."
#: ../../source/advanced.rst:30
msgid ""
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
"prompt for the private key to be entered."
msgstr ""
+"Wenn du einen OnionShare-Dienst im Tor-Browser aufrufst, wird Tor-Browser "
+"dich auffordern, den privaten Schlüssel einzugeben."
#: ../../source/advanced.rst:32
-#, fuzzy
msgid ""
"Sometimes you might want your OnionShare service to be accessible to the "
"public, like if you want to set up an OnionShare receive service so the "
"public can securely and anonymously send you files. In this case, it's "
"better to disable the private key altogether."
msgstr ""
-"Manchmal könntest du wollen, dass dein OnionShare-Service der "
-"Öffentlichkeit zugänglich ist; dies ist beispielsweise der Fall, wenn du "
-"einen OnionShare-Empfangsdienst einrichten möchtest, über den dir die "
-"Öffentlichkeit sicher und anonym Dateien schicken können. In diesem Fall "
-"wäre es besser, das Passwort komplett zu deaktivieren. Wenn du dies nicht"
-" tust, könnte jemand deinen Dienst anhalten, wenn er 20 mal das Passwort "
-"falsch eingibt, selbst wenn er das richtige Passwort kennt."
+"Manchmal könntest du wollen, dass dein OnionShare-Service der Öffentlichkeit "
+"zugänglich ist; dies ist beispielsweise der Fall, wenn du einen OnionShare-"
+"Empfangsdienst einrichten möchtest, über den dir die Öffentlichkeit sicher "
+"und anonym Dateien schicken kann. In diesem Fall wäre es besser, den "
+"privaten Schlüssel komplett zu deaktivieren."
#: ../../source/advanced.rst:35
msgid ""
@@ -113,6 +113,10 @@ msgid ""
"server. Then the server will be public and won't need a private key to "
"view in Tor Browser."
msgstr ""
+"Um den privaten Schlüssel für einen Tab zu deaktivieren, setze ein Kreuz in "
+"das \"Dies ist ein öffentlicher OnionShare-Service (Deaktiviert den privaten "
+"Schlüssel)\" Kästchen bevor du den Server startest. Dadurch wird der Server "
+"öffentlich Zugänglich, wodurch kein privater Schlüssel mehr benötigt wird."
#: ../../source/advanced.rst:40
msgid "Custom Titles"
@@ -183,7 +187,6 @@ msgstr ""
"gemäß Zeitsteuerung starten würde."
#: ../../source/advanced.rst:60
-#, fuzzy
msgid ""
"**Scheduling an OnionShare service to automatically stop can be useful to"
" limit exposure**, like if you want to share secret documents while "
@@ -191,10 +194,10 @@ msgid ""
"days."
msgstr ""
"**Der automatische, zeigesteuerte Stopp eines OnionShare-Dienstes kann "
-"sinnvoll sein, um den Dienst nicht mehr als nötig einem Zugriff von außen"
-" auszusetzen**; beispielsweise, wenn du geheime Dokumente freigeben "
-"möchtest und diese nicht länger als für ein paar Tage über das Internet "
-"zugänglich sein sollen."
+"sinnvoll sein, um den Dienst nicht mehr als nötig einem Zugriff von Außen "
+"auszusetzen**; beispielsweise, wenn du geheime Dokumente freigeben möchtest "
+"und diese nicht länger als für ein paar Tage über das Internet zugänglich "
+"sein sollen."
#: ../../source/advanced.rst:67
msgid "Command-line Interface"
@@ -235,6 +238,10 @@ msgid ""
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
"in the git repository."
msgstr ""
+"Um mehr Informationen darüber zu bekommen, wie du es auf verschiedenen "
+"Betriebssystem installieren kannst, schau dir die `CLI README Datei "
+"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ im "
+"Git-Repository an."
#: ../../source/advanced.rst:83
msgid ""
diff --git a/docs/source/locale/de/LC_MESSAGES/develop.po b/docs/source/locale/de/LC_MESSAGES/develop.po
index de402daf..dbdace47 100644
--- a/docs/source/locale/de/LC_MESSAGES/develop.po
+++ b/docs/source/locale/de/LC_MESSAGES/develop.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: register718 <register2021@outlook.de>\n"
+"PO-Revision-Date: 2021-12-04 15:52+0000\n"
+"Last-Translator: Jannes Leßmann <janneslessmann@web.de>\n"
"Language-Team: de <LL@li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
@@ -183,7 +183,6 @@ msgstr ""
"Zum Beispiel::"
#: ../../source/develop.rst:165
-#, fuzzy
msgid ""
"In this case, you load the URL ``http://127.0.0.1:17641`` in a normal "
"web-browser like Firefox, instead of using the Tor Browser. The private "
@@ -191,7 +190,7 @@ msgid ""
msgstr ""
"In diesem Fall lädst du die URL ``http://127.0.0.1:17614`` in einem normalen "
"Webbrowser wie Firefox anstelle des Tor Browsers. Der private Schlüssel wird "
-"bei lokalen Betrieb eigentlich nicht benötigt."
+"im lokalen Betrieb für gewöhnlich nicht benötigt."
#: ../../source/develop.rst:168
msgid "Contributing Translations"
diff --git a/docs/source/locale/de/LC_MESSAGES/features.po b/docs/source/locale/de/LC_MESSAGES/features.po
index 9d4d559a..9defefb4 100644
--- a/docs/source/locale/de/LC_MESSAGES/features.po
+++ b/docs/source/locale/de/LC_MESSAGES/features.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: register718 <register2021@outlook.de>\n"
+"PO-Revision-Date: 2021-12-04 15:52+0000\n"
+"Last-Translator: Jannes Leßmann <janneslessmann@web.de>\n"
"Language-Team: de <LL@li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -36,12 +36,12 @@ msgstr ""
#: ../../source/features.rst:8
msgid "By default, OnionShare web addresses are protected with a private key."
msgstr ""
-"Standardmäßig wird die OnionShare Webadresse mit einem privaten Schlüssel "
+"OnionShare-Webadressen werden standardmäßig mit einem privaten Schlüssel "
"geschützt."
#: ../../source/features.rst:10
msgid "OnionShare addresses look something like this::"
-msgstr "OnionShare Adressen sehen in etwa so aus:"
+msgstr "OnionShare-Adressen sehen in etwa so aus:"
#: ../../source/features.rst:14
msgid "And private keys might look something like this::"
@@ -56,9 +56,9 @@ msgid ""
msgstr ""
"Sie sind für die sichere Weitergabe dieser URL und des privaten Schlüssels "
"verantwortlich. Die Weitergabe kann z.B. über eine verschlüsselte Chat-"
-"Nachricht, oder eine weniger sichere Kommunikationsmethode wie eine "
-"unverschlüsselte E-Mail erfolgen. Dies Entscheidung wie Sie Ihren Schlüssel "
-"weitergeben sollten Sie aufgrund Ihres persönlichen `threat model "
+"Nachricht, oder eine weniger sichere Kommunikationsmethode, wie eine "
+"unverschlüsselte E-Mail, erfolgen. Dies Entscheidung wie Sie Ihren Schlüssel "
+"weitergeben sollten Sie aufgrund Ihres persönlichen `Sicherheitsmodells "
"<https://ssd.eff.org/module/your-security-plan>`_ treffen."
#: ../../source/features.rst:20
@@ -68,25 +68,23 @@ msgid ""
" Tor Browser will then prompt for the private key, which the people can "
"also then copy and paste in."
msgstr ""
-"Die Empfänger Ihrer URL müssen diesen in ihrem `Tor Browser <https://www."
+"Die Empfänger Ihrer URL müssen diese in ihrem `Tor Browser <https://www."
"torproject.org/>`_ öffnen, um auf den OnionShare-Dienst zuzugreifen. Der Tor "
-"Browser wird nach einem privaten Schlüssel fragen, der ebenfalls vom "
-"Empfänger eingegeben werden muss."
+"Browser wird nach einem privaten Schlüssel fragen, welcher anschließend vom "
+"Empfänger, z.B. über Copy-Paste, eingegeben werden kann."
#: ../../source/features.rst:24
-#, fuzzy
msgid ""
"If you run OnionShare on your laptop to send someone files, and then "
"suspend it before the files are sent, the service will not be available "
"until your laptop is unsuspended and on the internet again. OnionShare "
"works best when working with people in real-time."
msgstr ""
-"Wenn du OnionShare auf deinem Laptop laufen lässt, um jemandem Dateien zu"
-" schicken, und du den Laptop in den Ruhemodus versetzt, ehe die Dateien "
-"gesendet wurden, wird der Dienst so lange nicht erreichbar sein, bis dein"
-" Laptop wieder läuft und mit dem Internet verbunden ist. OnionShare "
-"funktioniert am besten, wenn du in Echtzeit mit den Leuten in Verbindung "
-"stehst."
+"Solltest du deinen Laptop in den Ruhemodus versetzen und währenddessen "
+"Dateien mit jemandem teilen, so werden die Dateien erst versandt, sobald "
+"sich dein Laptop nicht mehr im Ruhemodus befindet. OnionShare funktioniert "
+"am besten, wenn du mit den Leuten, mit denen du Dateien teilst, in Echtzeit "
+"in Verbindung stehst."
#: ../../source/features.rst:26
msgid ""
@@ -127,7 +125,6 @@ msgstr ""
"startest."
#: ../../source/features.rst:39
-#, fuzzy
msgid ""
"As soon as someone finishes downloading your files, OnionShare will "
"automatically stop the server, removing the website from the internet. To"
@@ -135,11 +132,11 @@ msgid ""
" files have been sent (uncheck to allow downloading individual files)\" "
"box."
msgstr ""
-"Sobald jemand deine Dateien vollständig heruntergeladen hat, wird "
-"OnionShare den Dienst automatisch starten und die Webseite vom Internet "
-"nehmen. Um mehreren Leuten das Herunterladen zu ermöglichen, entferne den"
-" Haken bei „Dateifreigabe beenden, sobald alle Dateien versendet wurden "
-"(abwählen, um das Herunterladen einzelner Dateien zu erlauben)“."
+"Sobald jemand deine Dateien vollständig heruntergeladen hat, wird OnionShare "
+"das Teilen der Dateien automatisch beenden und die Webseite vom Internet "
+"nehmen. Um mehreren Personen das Herunterladen zu ermöglichen, öffne die "
+"Einstellungen von OnionShare und entferne den Haken bei „Server nach "
+"Download der Dateien stoppen“."
#: ../../source/features.rst:42
msgid ""
@@ -166,29 +163,27 @@ msgstr ""
"Downloads anzeigen zu lassen."
#: ../../source/features.rst:48
-#, fuzzy
msgid ""
"Now that you have a OnionShare, copy the address and the private key and "
"send it to the person you want to receive the files. If the files need to"
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
-"Jetzt, wo du eine OnionShare-Freigabe hast, kopiere die Adresse und "
-"schicke sie der Person, die die Dateien empfangen soll. Falls die Dateien"
-" sicher bleiben sollen oder die Person anderweitig irgendeiner Gefahr "
-"ausgesetzt ist, nutze einen verschlüsselten Messenger."
+"Jetzt, wo du eine OnionShare-Freigabe hast, kopiere die Adresse und schicke "
+"sie der Person, die die Dateien empfangen soll. Falls die Dateien vor "
+"Anderen geschützt bleiben sollen oder die Empfängerperson anderweitig in "
+"Gefahr ist, nutze einen verschlüsselten Messenger zum senden der Adresse."
#: ../../source/features.rst:50
-#, fuzzy
msgid ""
"That person then must load the address in Tor Browser. After logging in "
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
-"Diese Person muss nun die Adresse mit dem Tor Browser öffnen. Nachdem sie"
-" sich mit dem zufällig erzeugten Passwort eingeloggt hat, das in der "
-"Adresse enthalten ist, kann sie die Dateien direkt von deinem Rechner "
-"über den „Dateien herunterladen”-Link in der Ecke herunterladen."
+"Diese Person muss nun die Adresse mit dem Tor Browser öffnen. Nachdem sie "
+"sich mit dem zufällig erzeugten Passwort eingeloggt hat, das in der Adresse "
+"enthalten ist, kann sie die Dateien direkt von deinem Rechner über den Link „"
+"Dateien herunterladen” in der Ecke herunterladen."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
@@ -309,7 +304,6 @@ msgid "Use at your own risk"
msgstr "Nutzung auf eigene Gefahr"
#: ../../source/features.rst:88
-#, fuzzy
msgid ""
"Just like with malicious email attachments, it's possible someone could "
"try to attack your computer by uploading a malicious file to your "
@@ -317,10 +311,9 @@ msgid ""
"protect your system from malicious files."
msgstr ""
"Ähnlich wie bei bösartigen E-Mail-Anhängen kann es sein, dass jemand "
-"deinen Rechner anzugreifen versucht, indem er eine bösartige Datei auf "
-"deinen OnionShare-Dienst hochlädt. OnionShare bringt keine "
-"Sicherheitsmechanismen mit, um dein System vor bösartigen Dateien zu "
-"schützen."
+"versucht deinen Rechner anzugreifen, indem er eine bösartige Datei auf "
+"deinen OnionShare-Dienst hochlädt. OnionShare selbst hat keine "
+"Sicherheitsmechanismen, um deinen Rechner vor solchen Angriffen zu schützen."
#: ../../source/features.rst:90
msgid ""
@@ -349,20 +342,18 @@ msgid "Tips for running a receive service"
msgstr "Tipps für einen OnionShare-Empfangsdienst"
#: ../../source/features.rst:97
-#, fuzzy
msgid ""
"If you want to host your own anonymous dropbox using OnionShare, it's "
"recommended you do so on a separate, dedicated computer always powered on"
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
-"Wenn du deinen eigenen anonymen Briefkasten per OnionShare betreiben "
-"willst, solltest du dies auf einem separaten, eigens dafür eingerichteten"
-" Rechner tun, der immer läuft und mit dem Internet verbunden ist; nicht "
-"mit dem, den du sonst regelmäßig benutzt."
+"Wenn du deinen eigenen anonymen OnionShare-Briefkasten betreiben willst, "
+"solltest du dies auf einem separaten, eigens dafür eingerichteten Rechner "
+"tun, der immer läuft und mit dem Internet verbunden ist; nicht mit dem "
+"Rechner, den du sonst regelmäßig benutzt."
#: ../../source/features.rst:99
-#, fuzzy
msgid ""
"If you intend to put the OnionShare address on your website or social "
"media profiles, save the tab (see :ref:`save_tabs`) and run it as a "
@@ -370,9 +361,9 @@ msgid ""
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
"Falls du deine OnionShare-Adresse auf deiner Webseite oder deinen Social "
-"Media-Profilen teilen willst, solltest du den Reiter speichern (siehe "
-":ref:`save_tabs`) und den Service als öffentlich festlegen. (siehe "
-":ref:`disable password`). In diesem Fall wäre es auch eine gute Idee, "
+"Media-Profilen veröffentlichen willst, solltest du den entsprechenden Reiter "
+"speichern (siehe :ref:`save_tabs`) und den Service als öffentlich festlegen. "
+"(siehe :ref:`disable password`). In diesem Fall wäre es auch eine gute Idee, "
"einen benutzerdefinierten Titel festzulegen (siehe :ref:`custom_titles`)."
#: ../../source/features.rst:102
@@ -420,7 +411,6 @@ msgid "Content Security Policy"
msgstr "Content-Security-Policy"
#: ../../source/features.rst:119
-#, fuzzy
msgid ""
"By default OnionShare helps secure your website by setting a strict "
"`Content Security Policy "
@@ -428,11 +418,10 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
-"Standardmäßig wird OnionShare beim Absichern deiner Webseite helfen, "
-"indem es einen strikten `Content-Security-Policy "
-"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_-Header setzt. "
-"Allerdings wird hierdurch verhindert, dass Inhalte von Drittanbietern "
-"innerhalb der Webseite geladen werden."
+"Standardmäßig sichert OnionShare deine Webseite, indem es einen strikten "
+"`Content-Security-Policy <https://en.wikipedia.org/wiki/"
+"Content_Security_Policy>`_-Header setzt. Das verhindert allerdings auch das "
+"Laden von Inhalten von Drittanbietern innerhalb deiner Webseite."
#: ../../source/features.rst:121
msgid ""
@@ -452,7 +441,6 @@ msgid "Tips for running a website service"
msgstr "Tipps zum Betreiben eines Webseiten-Dienstes"
#: ../../source/features.rst:126
-#, fuzzy
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -461,23 +449,22 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
-"Falls du eine Webseite längerfristig über OnionShare anbieten (und nicht "
+"Falls du eine Webseite längerfristig über OnionShare anbieten (also nicht "
"nur kurz jemandem etwas zeigen) möchtest, solltest du dies auf einem "
-"separaten, eigens dafür eingerichteten Rechner tun, der immer läuft und "
-"mit dem Internet verbunden ist; nicht mit dem, den du sonst regelmäßig "
-"benutzt. Außerdem solltest du den Reiter speichern (see "
-":ref:`save_tabs`), so dass du die Webseite mit derselben Adresse "
-"weiterbetreiben kannst, falls du OnionShare schließt und später wieder "
-"öffnest."
+"separaten, eigens dafür eingerichteten Rechner tun, der immer läuft und mit "
+"dem Internet verbunden ist; nicht auf dem Rechner, den du sonst regelmäßig "
+"benutzt. Außerdem solltest du den entsprechenden Reiter speichern (see "
+":ref:`save_tabs`), so dass du die Webseite dann mit derselben Adresse "
+"anbieten kannst, wenn OnionShare zwischenzeitig beendet und neu gestartet "
+"wird."
#: ../../source/features.rst:129
-#, fuzzy
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
-"Falls du die Webseite öffentlich betreiben wilst, solltest du sie als "
-"öffentlichen Dienst hosten (see :ref:`disable_passwords`)."
+"Wenn du deine Webseite öffentlich betreiben willst, solltest du sie als "
+"öffentlichen Dienst starten (see :ref:`disable_passwords`)."
#: ../../source/features.rst:132
msgid "Chat Anonymously"
@@ -493,18 +480,16 @@ msgstr ""
"klicke auf „Chat starten“."
#: ../../source/features.rst:138
-#, fuzzy
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
-"Nachdem du den Dienst gestartest hast, kopiere die OnionShare-Adresse und"
-" schicke sie den Leuten, die du in dem anonymen Chatroom gerne hättest. "
-"Falls es wichtig ist, den Teilnehmerkreis strikt zu beschränken, solltest"
-" du einen verschlüsselten Messenger zum Teilen der OnionShare-Adresse "
-"verwenden."
+"Nachdem du den Dienst gestartest hast, kopiere die OnionShare-Adresse und "
+"schicke sie den Leuten, die dem anonymen Chat beitreten sollen. Falls es "
+"wichtig ist, den Teilnehmerkreis strikt zu beschränken, solltest du einen "
+"verschlüsselten Messenger zum Teilen der OnionShare-Adresse verwenden."
#: ../../source/features.rst:143
msgid ""
@@ -575,9 +560,11 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
+"Solltest du zum Beispiel eine Nachricht an eine Signal-Gruppe schicken, dann "
+"bleibt eine Kopie deiner Nachricht auf jedem Gerät aller Teilnehmer der "
+"Gruppe."
#: ../../source/features.rst:165
-#, fuzzy
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -586,12 +573,12 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
-"OnionShare-Chatrooms können außerdem für einander unbekannte Personen "
-"nützlich sein, die sicher untereinander chatten wollen, ohne "
-"Benutzerkonten zu erstellen. Beispielsweise könnte eine Quelle einem "
-"Journalisten über eine Wegwerf-E-Mail-Adresse eine OnionShare-Adresse "
-"schicken und dann warten, bis der Journalist den Chatroom betritt; all "
-"dies, ohne die Anonymität zu gefährden."
+"OnionShare-Chats ermöglichen es außerdem einander unbekannten Personen, "
+"miteinander zu chatten ohne dafür eigene Benutzerkonten erstellen zu müssen. "
+"Beispielsweise könnte eine Quelle einem Journalisten über eine Wegwerf-E"
+"-Mail-Adresse eine OnionShare-Adresse schicken und dann warten, bis der "
+"Journalist den Chat betritt, ohne dass die Quelle dabei ihre Anonymität "
+"gefährdet."
#: ../../source/features.rst:169
msgid "How does the encryption work?"
diff --git a/docs/source/locale/el/LC_MESSAGES/advanced.po b/docs/source/locale/el/LC_MESSAGES/advanced.po
index 47341843..06186557 100644
--- a/docs/source/locale/el/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/el/LC_MESSAGES/advanced.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
-"PO-Revision-Date: 2021-05-11 20:47+0000\n"
-"Last-Translator: Mr.Grin <grin-singularity@tutanota.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/advanced.rst:2
@@ -53,16 +54,15 @@ msgstr ""
"καρφίτσωσης στα αριστερά της κατάστασης του διακομιστή."
#: ../../source/advanced.rst:18
-#, fuzzy
msgid ""
"When you quit OnionShare and then open it again, your saved tabs will "
"start opened. You'll have to manually start each service, but when you do"
" they will start with the same OnionShare address and private key."
msgstr ""
"Όταν κάνετε έξοδο από το OnionShare και άνοιγμα ξανά, οι αποθηκευμένες "
-"καρτέλες σας θα ξεκινήσουν ανοιχτές. Θα πρέπει να εκκινήσετε χειροκίνητα "
-"την κάθε υπηρεσία, αλλά θα ξεκινήσουν με την ίδια διεύθυνση και κωδικό "
-"OnionShare."
+"καρτέλες σας θα ξεκινήσουν ανοιχτές. Θα πρέπει να εκκινήσετε χειροκίνητα την "
+"κάθε υπηρεσία, αλλά θα ξεκινήσουν με την ίδια διεύθυνση OnionShare και "
+"ιδιωτικό κλειδί."
#: ../../source/advanced.rst:21
msgid ""
@@ -75,35 +75,35 @@ msgstr ""
#: ../../source/advanced.rst:26
msgid "Turn Off Private Key"
-msgstr ""
+msgstr "Απενεργοποίηση ιδιωτικού κλειδιού"
#: ../../source/advanced.rst:28
msgid ""
"By default, all OnionShare services are protected with a private key, "
"which Tor calls \"client authentication\"."
msgstr ""
+"Από προεπιλογή, όλες οι υπηρεσίες OnionShare προστατεύονται με ένα ιδιωτικό "
+"κλειδί, το οποίο ονομάζεται \"πιστοποίηση πελάτη\"."
#: ../../source/advanced.rst:30
msgid ""
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
"prompt for the private key to be entered."
msgstr ""
+"Κατά την περιήγηση σε μια υπηρεσία OnionShare με το Tor Browser, θα σας "
+"ζητηθεί να εισαγάγετε το ιδιωτικό κλειδί."
#: ../../source/advanced.rst:32
-#, fuzzy
msgid ""
"Sometimes you might want your OnionShare service to be accessible to the "
"public, like if you want to set up an OnionShare receive service so the "
"public can securely and anonymously send you files. In this case, it's "
"better to disable the private key altogether."
msgstr ""
-"Μερικές φορές μπορεί να θέλετε η υπηρεσία OnionShare να είναι δημόσια "
-"προσβάσιμη, ή να ρυθμίσετε την υπηρεσία λήψης OnionShare ώστε να μπορεί "
-"κάποιος να σας στέλνει με ασφάλεια και ανώνυμα αρχεία. Σε αυτήν την "
-"περίπτωση, είναι καλύτερα να απενεργοποιήσετε εντελώς τον κωδικό "
-"πρόσβασης. Εάν δεν το κάνετε αυτό, κάποιος μπορεί να αναγκάσει τον "
-"διακομιστή σας να σταματήσει απλά κάνοντας 20 λανθασμένες δοκιμές για τον"
-" κωδικό πρόσβασής σας, ακόμη και αν γνωρίζουν τον σωστό."
+"Μερικές φορές μπορεί να θέλετε η υπηρεσία σας OnionShare να είναι δημόσια "
+"προσβάσιμη, ή να μπορεί κάποιος να σας στέλνει με ασφάλεια και ανώνυμα, "
+"αρχεία. Σε αυτήν την περίπτωση, είναι καλύτερα να απενεργοποιήσετε το "
+"ιδιωτικό κλειδί."
#: ../../source/advanced.rst:35
msgid ""
@@ -112,6 +112,11 @@ msgid ""
"server. Then the server will be public and won't need a private key to "
"view in Tor Browser."
msgstr ""
+"Για να απενεργοποιήσετε το ιδιωτικό κλειδί για οποιαδήποτε καρτέλα, "
+"τσεκάρετε το πλαίσιο \"Δημόσια υπηρεσία OnionShare (απενεργοποιεί το "
+"ιδιωτικό κλειδί)\" πριν από την εκκίνηση του διακομιστή. Τότε ο διακομιστής "
+"θα είναι δημόσιος και δεν θα χρειάζεται ιδιωτικό κλειδί για να τον "
+"εμφανίσετε στο Tor Browser."
#: ../../source/advanced.rst:40
msgid "Custom Titles"
@@ -181,16 +186,15 @@ msgstr ""
"ακυρώσετε την υπηρεσία πριν αυτή ξεκινήσει."
#: ../../source/advanced.rst:60
-#, fuzzy
msgid ""
"**Scheduling an OnionShare service to automatically stop can be useful to"
" limit exposure**, like if you want to share secret documents while "
"making sure they're not available on the internet for more than a few "
"days."
msgstr ""
-"**Η προγραμματισμένη διακοπή της υπηρεσίας διαμοιρασμού OnionShare, είναι"
-" χρήσιμη για τον περιορισμό της έκθεσής σας**, όπως εάν επιθυμείτε τον "
-"διαμοιρασμό κρυφών αρχείων στο Διαδίκτυο για συγκεκριμένο χρόνο."
+"**Ο προγραμματισμένος τερματισμός της υπηρεσίας διαμοιρασμού OnionShare, "
+"περιορίζει το χρόνο έκθεσής σας**, όπως εάν επιθυμείτε τον διαμοιρασμό "
+"μυστικών αρχείων στο Διαδίκτυο για συγκεκριμένο χρόνο."
#: ../../source/advanced.rst:67
msgid "Command-line Interface"
@@ -231,6 +235,9 @@ msgid ""
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
"in the git repository."
msgstr ""
+"Για πληροφορίες σχετικά με την εγκατάστασή του σε διαφορετικά λειτουργικά "
+"συστήματα, ανατρέξτε στο αρχείο `CLI readme file <https://github.com/"
+"onionshare/onionshare/blob/develop/cli/README.md>`_ στο αποθετήριο git."
#: ../../source/advanced.rst:83
msgid ""
@@ -578,4 +585,3 @@ msgstr ""
#~ "<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_"
#~ " in the git repository."
#~ msgstr ""
-
diff --git a/docs/source/locale/el/LC_MESSAGES/develop.po b/docs/source/locale/el/LC_MESSAGES/develop.po
index 13d82739..2c3cd9c9 100644
--- a/docs/source/locale/el/LC_MESSAGES/develop.po
+++ b/docs/source/locale/el/LC_MESSAGES/develop.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-05-11 20:47+0000\n"
-"Last-Translator: Panagiotis Vasilopoulos <hello@alwayslivid.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
@@ -63,16 +64,14 @@ msgid "Contributing Code"
msgstr "Συνεισφορά κώδικα"
#: ../../source/develop.rst:17
-#, fuzzy
msgid ""
"OnionShare source code is to be found in this Git repository: "
"https://github.com/onionshare/onionshare"
msgstr ""
-"Ο πηγαίος κώδικας του OnionShare βρίσκεται στο αποθετήριο Git: "
-"https://github.com/micahflee/onionshare"
+"Ο πηγαίος κώδικας του OnionShare βρίσκεται στο αποθετήριο Git: https://github"
+".com/micahflee/onionshare"
#: ../../source/develop.rst:19
-#, fuzzy
msgid ""
"If you'd like to contribute code to OnionShare, it helps to join the "
"Keybase team and ask questions about what you're thinking of working on. "
@@ -80,11 +79,11 @@ msgid ""
"<https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if "
"there are any you'd like to tackle."
msgstr ""
-"Εάν θέλετε να συνεισφέρετε με κώδικα στο OnionShare, θα πρέπει να "
-"εγγραφείτε στην ομάδα του Keybase για την υποβολή σχετικών ερωτήσεων. Θα "
-"πρέπει επίσης να έχετε διαβάσει όλα τα `ανοιχτά ζητήματα "
-"<https://github.com/micahflee/onionshare/issues>`_ στο GitHub για να "
-"δείτε αν υπάρχουν κάποια που θέλετε να συμμετέχετε."
+"Εάν θέλετε να συνεισφέρετε με κώδικα στο OnionShare, θα πρέπει να εγγραφείτε "
+"στην ομάδα του Keybase και να υποβάλετε ερωτήσεις σχετικά με τις ιδέες σας. "
+"Θα πρέπει επίσης να έχετε διαβάσει τα `ανοιχτά ζητήματα <https://github.com/"
+"onionshare/onionshare/issues>`_ στο GitHub για να δείτε αν υπάρχουν κάποια "
+"που θέλετε να συμμετέχετε."
#: ../../source/develop.rst:22
msgid ""
@@ -110,6 +109,12 @@ msgid ""
"file to learn how to set up your development environment for the "
"graphical version."
msgstr ""
+"Το OnionShare αναπτύσσεται με την Python. Για να ξεκινήσετε, κλωνοποιήστε το "
+"αποθετήριο Git στη διεύθυνση https://github.com/onionshare/onionshare/ και "
+"στη συνέχεια συμβουλευτείτε το αρχείο ``cli/README.md`` για να μάθετε πώς να "
+"ρυθμίσετε το περιβάλλον ανάπτυξής σας, για την έκδοση γραμμής εντολών και το "
+"αρχείο ``desktop/README.md`` για να μάθετε πώς να ρυθμίσετε το περιβάλλον "
+"ανάπτυξής σας για την έκδοση γραφικών."
#: ../../source/develop.rst:32
msgid ""
@@ -178,15 +183,15 @@ msgstr ""
"αυτό προσθέτοντας το ``--local-only``. Για παράδειγμα::"
#: ../../source/develop.rst:165
-#, fuzzy
msgid ""
"In this case, you load the URL ``http://127.0.0.1:17641`` in a normal "
"web-browser like Firefox, instead of using the Tor Browser. The private "
"key is not actually needed in local-only mode, so you can ignore it."
msgstr ""
-"Σε αυτή την περίπτωση, θα φορτώσει το URL ``http://onionshare:train-"
-"system@127.0.0.1:17635`` σε κανονικό περιηγητή όπως το Firefox αντί του "
-"Tor Browser."
+"Σε αυτή την περίπτωση, θα φορτωθεί η URL ``http://127.0.0.1:17641`` σε "
+"κανονικό περιηγητή όπως το Firefox, αντί του Tor Browser. Το ιδιωτικό κλειδί "
+"δεν χρειάζεται στην κατάσταση τοπικής λειτουργίας, οπότε μπορείτε να το "
+"αγνοήσετε."
#: ../../source/develop.rst:168
msgid "Contributing Translations"
@@ -487,4 +492,3 @@ msgstr ""
#~ "περιβάλλοντος γραμμής εντολών και του "
#~ "αρχείου ``desktop/README.md`` για την έκδοση"
#~ " γραφικού περιβάλλοντος."
-
diff --git a/docs/source/locale/el/LC_MESSAGES/features.po b/docs/source/locale/el/LC_MESSAGES/features.po
index f6fe9b9c..323492c6 100644
--- a/docs/source/locale/el/LC_MESSAGES/features.po
+++ b/docs/source/locale/el/LC_MESSAGES/features.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-05-11 20:47+0000\n"
-"Last-Translator: Iris S. <iris.sousouni@protonmail.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -36,14 +37,16 @@ msgstr ""
#: ../../source/features.rst:8
msgid "By default, OnionShare web addresses are protected with a private key."
msgstr ""
+"Από προεπιλογή, οι διευθύνσεις διαδικτύου του OnionShare προστατεύονται με "
+"ένα ιδιωτικό κλειδί."
#: ../../source/features.rst:10
msgid "OnionShare addresses look something like this::"
-msgstr ""
+msgstr "Οι διευθύνσεις OnionShare μοιάζουν κάπως:"
#: ../../source/features.rst:14
msgid "And private keys might look something like this::"
-msgstr ""
+msgstr "Και τα ιδιωτικά κλειδιά μπορεί να μοιάζουν κάπως:"
#: ../../source/features.rst:18
msgid ""
@@ -52,9 +55,13 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
+"Είστε υπεύθυνοι για την ασφαλή κοινοποίηση της διεύθυνσης URL και του "
+"ιδιωτικού κλειδιού χρησιμοποιώντας ένα κανάλι επικοινωνίας της επιλογής σας, "
+"όπως ένα κρυπτογραφημένο μήνυμα ή χρησιμοποιώντας κάτι λιγότερο ασφαλές, "
+"όπως μη κρυπτογραφημένο ηλεκτρονικό ταχυδρομείο, ανάλογα με το `μοντέλο "
+"απειλής <https://ssd.eff.org/module/your-security-plan>`_."
#: ../../source/features.rst:20
-#, fuzzy
msgid ""
"The people you send the URL to then copy and paste it into their `Tor "
"Browser <https://www.torproject.org/>`_ to access the OnionShare service."
@@ -63,21 +70,20 @@ msgid ""
msgstr ""
"Οι αποδέκτες πρέπει να αντιγράψουν την διεύθυνση ιστού στο `Tor Browser "
"<https://www.torproject.org/>`_ για να αποκτήσουν πρόσβαση στην υπηρεσία "
-"OnionShare."
+"OnionShare. Τότε θα ζητηθεί να εισαχθεί το ιδιωτικό κλειδί."
#: ../../source/features.rst:24
-#, fuzzy
msgid ""
"If you run OnionShare on your laptop to send someone files, and then "
"suspend it before the files are sent, the service will not be available "
"until your laptop is unsuspended and on the internet again. OnionShare "
"works best when working with people in real-time."
msgstr ""
-"Εάν χρησιμοποιήσετε το OnionShare στον φορητό υπολογιστή σας για να "
-"στείλετε αρχεία και ο υπολογιστής αυτός κλείσει προτού ολοκληρωθεί η "
-"μεταφορά, δεν θα είναι δυνατή η ολοκλήρωση της έως ότου ο φορητός "
-"υπολογιστής σας συνδεθεί ξανά στο Διαδίκτυο. Το OnionShare λειτουργεί "
-"καλύτερα όταν συνεργάζεστε με τον παραλήπτη σε πραγματικό χρόνο."
+"Εάν χρησιμοποιήσετε το OnionShare στον φορητό υπολογιστή σας για να στείλετε "
+"αρχεία και ο υπολογιστής αυτός κλείσει προτού ολοκληρωθεί η μεταφορά, δεν θα "
+"είναι δυνατή η ολοκλήρωση της έως ότου συνδεθεί ξανά στο Διαδίκτυο. Το "
+"OnionShare λειτουργεί καλύτερα όταν συνεργάζεστε με τον παραλήπτη σε "
+"πραγματικό χρόνο."
#: ../../source/features.rst:26
msgid ""
@@ -119,7 +125,6 @@ msgstr ""
"ρυθμίσεις πριν ξεκινήσετε τον διαμοιρασμό."
#: ../../source/features.rst:39
-#, fuzzy
msgid ""
"As soon as someone finishes downloading your files, OnionShare will "
"automatically stop the server, removing the website from the internet. To"
@@ -127,11 +132,11 @@ msgid ""
" files have been sent (uncheck to allow downloading individual files)\" "
"box."
msgstr ""
-"Με την ολοκλήρωση αποστολής των αρχείων σας, το OnionShare σταματά "
-"αυτόματα τον διακομιστή, αφαιρώντας την ιστοσελίδα από το Διαδίκτυο. Για "
-"να επιτρέψετε τη λήψη απο περισσότερους χρήστες, αποεπιλέξτε το "
-"\"Τερματισμός διαμοιρασμού με την ολοκλήρωση αποστολής (αποεπιλέξτε ώστε "
-"να επιτρέπεται η λήψη μεμονωμένων αρχείων)\"."
+"Με την ολοκλήρωση αποστολής των αρχείων σας, το OnionShare σταματά αυτόματα "
+"τον διακομιστή, αφαιρώντας την ιστοσελίδα από το Διαδίκτυο. Για να "
+"επιτρέψετε τη λήψη από περισσότερους χρήστες, αποεπιλέξτε το \"Τερματισμός "
+"διαμοιρασμού με την ολοκλήρωση αποστολής (αποεπιλέξτε ώστε να επιτρέπεται η "
+"λήψη μεμονωμένων αρχείων)\"."
#: ../../source/features.rst:42
msgid ""
@@ -157,28 +162,26 @@ msgstr ""
"εικονίδιο \"↑\"."
#: ../../source/features.rst:48
-#, fuzzy
msgid ""
"Now that you have a OnionShare, copy the address and the private key and "
"send it to the person you want to receive the files. If the files need to"
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
-"Τώρα που αποκτήσατε το OnionShare, αντιγράψτε και στείλτε τη διεύθυνση "
-"λήψης των αρχείων σας. Εάν χρειάζεστε περισσότερη ασφάλεια ή ο αποδέκτης "
-"δεν είναι έμπιστος, χρησιμοποιήστε εφαρμογή αποστολής κρυπτογραφημένου "
-"μηνύματος."
+"Τώρα που αποκτήσατε το OnionShare, αντιγράψτε και στείλτε τη διεύθυνση λήψης "
+"των αρχείων σας και το ιδιωτικό κλειδί. Εάν χρειάζεστε περισσότερη ασφάλεια "
+"ή ο αποδέκτης δεν είναι έμπιστος, χρησιμοποιήστε μια εφαρμογή αποστολής "
+"κρυπτογραφημένου μηνύματος."
#: ../../source/features.rst:50
-#, fuzzy
msgid ""
"That person then must load the address in Tor Browser. After logging in "
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
-"Ο αποδέκτης θα πρέπει να αντιγράψει τη διεύθυνση στο Tor Browser. Μετά τη"
-" σύνδεση με τον τυχαίο κωδικό πρόσβασης, τα αρχεία μπορούν να ληφθούν "
-"απευθείας από τον υπολογιστή σας με κλικ στον σύνδεσμο \"Λήψη αρχείων\"."
+"Ο αποδέκτης θα πρέπει να αντιγράψει τη διεύθυνση στο Tor Browser. Μετά τη "
+"σύνδεση με το ιδιωτικό κλειδί, τα αρχεία μπορούν να ληφθούν απευθείας από "
+"τον υπολογιστή σας με κλικ στον σύνδεσμο \"Λήψη αρχείων\"."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
@@ -299,7 +302,6 @@ msgid "Use at your own risk"
msgstr "Η χρήση του γίνεται με δική σας ευθύνη"
#: ../../source/features.rst:88
-#, fuzzy
msgid ""
"Just like with malicious email attachments, it's possible someone could "
"try to attack your computer by uploading a malicious file to your "
@@ -307,10 +309,9 @@ msgid ""
"protect your system from malicious files."
msgstr ""
"Όπως και με τα κακόβουλα συνημμένα e-mail, είναι πιθανό κάποιος να "
-"προσπαθήσει να επιτεθεί στον υπολογιστή σας ανεβάζοντας ένα κακόβουλο "
-"αρχείο στην υπηρεσία του OnionShare σας. Το OnionShare δεν διαθέτει "
-"μηχανισμούς ασφαλείας για την προστασία του συστήματός σας από κακόβουλα "
-"αρχεία."
+"προσπαθήσει να επιτεθεί στον υπολογιστή σας ανεβάζοντας ένα κακόβουλο αρχείο "
+"στην υπηρεσία σας OnionShare, το οποίο δεν διαθέτει μηχανισμούς ασφαλείας "
+"από κακόβουλα αρχεία."
#: ../../source/features.rst:90
msgid ""
@@ -338,30 +339,28 @@ msgid "Tips for running a receive service"
msgstr "Συμβουλές για τη λειτουργία υπηρεσίας λήψης"
#: ../../source/features.rst:97
-#, fuzzy
msgid ""
"If you want to host your own anonymous dropbox using OnionShare, it's "
"recommended you do so on a separate, dedicated computer always powered on"
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
-"Εάν θέλετε να φιλοξενήσετε το δικό σας ανώνυμο dropbox χρησιμοποιώντας το"
-" OnionShare, συνιστάται να το κάνετε σε έναν ξεχωριστό, μεμονωμένο "
-"υπολογιστή που είναι πάντα ενεργοποιημένος και συνδεδεμένος στο Διαδίκτυο"
-" και όχι σε αυτόν που χρησιμοποιείτε σε τακτική βάση."
+"Εάν θέλετε να φιλοξενήσετε το δικό σας ανώνυμο dropbox χρησιμοποιώντας το "
+"OnionShare, συνιστάται να το κάνετε σε έναν ξεχωριστό, μεμονωμένο υπολογιστή "
+"που είναι πάντα ενεργοποιημένος και συνδεδεμένος στο Διαδίκτυο και όχι σε "
+"αυτόν που χρησιμοποιείτε καθημερινά."
#: ../../source/features.rst:99
-#, fuzzy
msgid ""
"If you intend to put the OnionShare address on your website or social "
"media profiles, save the tab (see :ref:`save_tabs`) and run it as a "
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
-"Εάν σκοπεύετε να δημοσιεύσετε τη διεύθυνση OnionShare στην ιστοσελίδα ή "
-"στα προφίλ κοινωνικών δικτύων σας, αποθηκεύστε την καρτέλα (δείτε "
-":ref:`save_tabs`) και ενεργοποιήστε την λειτουργία δημόσιας υπηρεσίας "
-"(δείτε :ref:`turn_off_passwords`)."
+"Εάν σκοπεύετε να δημοσιεύσετε τη διεύθυνση OnionShare στην ιστοσελίδα ή στα "
+"κοινωνικά σας δίκτυα, αποθηκεύστε την καρτέλα (δείτε :ref:`save_tabs`) και "
+"εκτελέστε την σαν δημόσια υπηρεσία (δείτε :ref:`turn_off_private_key`). "
+"Επίσης μπορείτε να προσθέσετε το δικό σας τίτλο (δείτε :ref:`custom_titles`)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -409,7 +408,6 @@ msgid "Content Security Policy"
msgstr "Πολιτική ασφάλειας περιεχομένου"
#: ../../source/features.rst:119
-#, fuzzy
msgid ""
"By default OnionShare helps secure your website by setting a strict "
"`Content Security Policy "
@@ -417,30 +415,28 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
-"Από προεπιλογή το OnionShare σας βοηθά στην ασφάλιση της ιστοσελίδας "
-"ορίζοντας την επικεφαλίδα `Περιεχόμενο πολιτικής ασφαλείας "
-"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_. Ωστόσο, αυτό "
-"εμποδίζει τη φόρτωση περιεχομένου τρίτων εντός της ιστοσελίδας."
+"Από προεπιλογή το OnionShare σας βοηθά στην προστασία της ιστοσελίδας σας "
+"ορίζοντας την επικεφαλίδα `Περιεχόμενο πολιτικής ασφαλείας <https://en."
+"wikipedia.org/wiki/Content_Security_Policy>`_. Ωστόσο, αυτό εμποδίζει τη "
+"φόρτωση περιεχομένου τρίτων εντός της ιστοσελίδας."
#: ../../source/features.rst:121
-#, fuzzy
msgid ""
"If you want to load content from third-party websites, like assets or "
"JavaScript libraries from CDNs, check the \"Don't send Content Security "
"Policy header (allows your website to use third-party resources)\" box "
"before starting the service."
msgstr ""
-"Εάν θέλετε να φορτώσετε περιεχόμενο από ιστότοπους τρίτων, όπως στοιχεία "
-"ή κώδικα JavaScript από CDN, επιλέξτε το πλαίσιο \"Μην στέλνετε την "
-"κεφαλίδα Πολιτικής Ασφαλείας Περιεχομένου (επιτρέπει στην ιστοσελίδα σας "
-"να χρησιμοποιεί πόρους τρίτων)\" πριν την εκκίνηση της υπηρεσίας."
+"Εάν θέλετε να φορτώσετε περιεχόμενο από ιστότοπους τρίτων, όπως στοιχεία ή "
+"βιβλιοθήκες JavaScript από CDNs, επιλέξτε το πλαίσιο \"Μην στέλνετε την "
+"κεφαλίδα Πολιτικής Ασφαλείας Περιεχομένου (επιτρέπει στην ιστοσελίδα σας να "
+"χρησιμοποιεί πόρους τρίτων)\" πριν την εκκίνηση της υπηρεσίας."
#: ../../source/features.rst:124
msgid "Tips for running a website service"
msgstr "Συμβουλές για εκτέλεση μιας υπηρεσίας ιστοσελίδας"
#: ../../source/features.rst:126
-#, fuzzy
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -449,22 +445,20 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
-"Εάν θέλετε να φιλοξενήσετε μια μακροσκελή ιστοσελίδα με το OnionShare "
-"(που σημαίνει πως χρειάζεται χρόνος για περιήγηση), συνιστάται να το "
-"κάνετε σε έναν ξεχωριστό, αυτόνομο υπολογιστή που είναι πάντα "
-"ενεργοποιημένος και συνδεδεμένος στο Διαδίκτυο και όχι σε αυτόν που "
-"χρησιμοποιείτε σε τακτική βάση. Αποθηκεύστε την καρτέλα (δείτε: "
-":ref:`save_tabs`) ώστε να μπορείτε να την ξανανοίξετε με την ίδια "
-"διεύθυνση εάν κλείσετε το OnionShare."
+"Εάν θέλετε να φιλοξενήσετε μια μακροσκελή ιστοσελίδα με το OnionShare (που "
+"σημαίνει πως χρειάζεται χρόνος για περιήγηση), συνιστάται να το κάνετε σε "
+"έναν ξεχωριστό, αυτόνομο υπολογιστή που είναι πάντα ενεργοποιημένος και "
+"συνδεδεμένος στο Διαδίκτυο και όχι σε αυτόν που χρησιμοποιείτε σε τακτική "
+"βάση. Αποθηκεύστε την καρτέλα (δείτε: :ref:`save_tabs`) ώστε να μπορείτε να "
+"ξανανοίξετε την ίδια διεύθυνση εάν κλείσετε το OnionShare."
#: ../../source/features.rst:129
-#, fuzzy
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
"Εάν η ιστοσελίδα σας προορίζεται για δημόσια χρήση, πρέπει να δηλωθεί ως "
-"δημόσια υπηρεσία (δείτε :ref:`turn_off_passwords`)."
+"δημόσια υπηρεσία (δείτε :ref:`turn_off_private_key`)."
#: ../../source/features.rst:132
msgid "Chat Anonymously"
@@ -480,17 +474,16 @@ msgstr ""
"συνομιλίας και κάντε κλικ \"Έναρξη διακομιστή συνομιλίας\"."
#: ../../source/features.rst:138
-#, fuzzy
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
-"Μετά την εκκίνηση του διακομιστή, αντιγράψτε τη διεύθυνση OnionShare και "
-"στείλτε την στα άτομα που θέλετε από ανώνυμο δωμάτιο συνομιλίας. Εάν "
-"είναι σημαντικό να περιορίσετε ποιος μπορεί να συμμετάσχει, "
-"χρησιμοποιήστε μια εφαρμογή ανταλλαγής κρυπτογραφημένων μηνυμάτων."
+"Μετά την εκκίνηση του διακομιστή, αντιγράψτε και στείλτε τη διεύθυνση "
+"OnionShare και το ιδιωτικό κλειδί, από ένα ανώνυμο δωμάτιο συνομιλίας. Εάν "
+"είναι σημαντικό να περιορίσετε ποιος μπορεί να συμμετάσχει, χρησιμοποιήστε "
+"μια εφαρμογή ανταλλαγής μηνυμάτων με κρυπτογράφηση."
#: ../../source/features.rst:143
msgid ""
@@ -565,9 +558,16 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
+"Εάν, για παράδειγμα, στείλετε ένα μήνυμα σε μια ομάδα του Signal, ένα "
+"αντίγραφο του μηνύματός σας καταλήγει σε κάθε συσκευή (τα κινητά και τους "
+"υπολογιστές αν έχουν το Signal Desktop) κάθε μέλους της ομάδας. Ακόμη και αν "
+"η εξαφάνιση μηνυμάτων είναι ενεργοποιημένη, είναι δύσκολο να επιβεβαιώσετε "
+"ότι όλα τα αντίγραφα των μηνυμάτων έχουν πράγματι διαγραφεί και από "
+"οποιαδήποτε άλλα μέρη (όπως βάσεις δεδομένων ειδοποιήσεων) στα οποία μπορεί "
+"να έχουν αποθηκευτεί. Τα δωμάτια συνομιλίας του OnionShare δεν αποθηκεύουν "
+"κανένα μήνυμα πουθενά, οπότε το πρόβλημα μειώνεται στο ελάχιστο."
#: ../../source/features.rst:165
-#, fuzzy
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -576,12 +576,12 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
-"Τα δωμάτια συνομιλίας OnionShare είναι επίσης χρήσιμα για άτομα που "
-"θέλουν να συνομιλήσουν ανώνυμα και με ασφάλεια χωρίς να χρειάζεται να "
-"δημιουργήσουν λογαριασμό. Για παράδειγμα, μια πηγή μπορεί να στείλει μια "
-"διεύθυνση OnionShare σε έναν δημοσιογράφο χρησιμοποιώντας μια διεύθυνση "
-"e-mail μιας χρήσης και στη συνέχεια, να περιμένει τον δημοσιογράφο να "
-"συμμετάσχει στο δωμάτιο συνομιλίας, χωρίς να διακυβεύεται η ανωνυμία του."
+"Τα δωμάτια συνομιλίας OnionShare είναι επίσης χρήσιμα για άτομα που θέλουν "
+"να συνομιλήσουν ανώνυμα και με ασφάλεια χωρίς να χρειάζεται να δημιουργήσουν "
+"λογαριασμό. Για παράδειγμα, μια πηγή μπορεί να στείλει μια διεύθυνση "
+"OnionShare σε έναν δημοσιογράφο χρησιμοποιώντας μια διεύθυνση e-mail μιας "
+"χρήσης και στη συνέχεια, να περιμένει τον δημοσιογράφο να συμμετάσχει στο "
+"δωμάτιο συνομιλίας, χωρίς να διακυβεύεται η ανωνυμία του."
#: ../../source/features.rst:169
msgid "How does the encryption work?"
@@ -1121,4 +1121,3 @@ msgstr ""
#~ "αποθηκευτεί. Τα δωμάτια συνομιλίας OnionShare"
#~ " δεν αποθηκεύουν μηνύματα πουθενά, οπότε"
#~ " το πρόβλημα μειώνεται στο ελάχιστο."
-
diff --git a/docs/source/locale/el/LC_MESSAGES/help.po b/docs/source/locale/el/LC_MESSAGES/help.po
index d411297d..a56cce4a 100644
--- a/docs/source/locale/el/LC_MESSAGES/help.po
+++ b/docs/source/locale/el/LC_MESSAGES/help.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-08-20 13:37-0700\n"
-"PO-Revision-Date: 2020-11-28 11:28+0000\n"
-"Last-Translator: george k <norhorn@gmail.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
@@ -39,7 +40,6 @@ msgid "Check the GitHub Issues"
msgstr "Ελέγξτε τα ζητήματα στο GitHub"
#: ../../source/help.rst:12
-#, fuzzy
msgid ""
"If it isn't on the website, please check the `GitHub issues "
"<https://github.com/onionshare/onionshare/issues>`_. It's possible "
@@ -47,7 +47,7 @@ msgid ""
"the developers, or maybe even posted a solution."
msgstr ""
"Εάν δεν υπάρχει στην ιστοσελίδα, παρακαλούμε ελέγξτε στο `GitHub issues "
-"<https://github.com/micahflee/onionshare/issues>`_. Είναι πιθανό και "
+"<https://github.com/onionshare/onionshare/issues>`_. Είναι πιθανό και "
"κάποιος άλλος να αντιμετώπισε το ίδιο πρόβλημα και συνομίλησε με τους "
"προγραμματιστές ή να δημοσίευσε τη λύση."
@@ -63,6 +63,11 @@ msgid ""
"`creating a GitHub account <https://help.github.com/articles/signing-up-"
"for-a-new-github-account/>`_."
msgstr ""
+"Αν δεν μπορείτε να βρείτε μια λύση ή θέλετε να θέσετε μια ερώτηση ή να "
+"προτείνετε ένα νέο χαρακτηριστικό, παρακαλούμε `υποβάλετε ένα ζήτημα "
+"<https://github.com/onionshare/onionshare/issues/new>`_. Απαιτείται `η "
+"δημιουργία λογαριασμού στο GitHub <https://help.github.com/articles/"
+"signing-up-for-a-new-github-account/>`_."
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
@@ -146,4 +151,3 @@ msgstr ""
#~ "Απαιτείται η `δημιουργία λογαριασμού GitHub"
#~ " <https://help.github.com/articles/signing-up-for-a"
#~ "-new-github-account/>`_."
-
diff --git a/docs/source/locale/el/LC_MESSAGES/install.po b/docs/source/locale/el/LC_MESSAGES/install.po
index 16968694..3dbd85dd 100644
--- a/docs/source/locale/el/LC_MESSAGES/install.po
+++ b/docs/source/locale/el/LC_MESSAGES/install.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-05-11 20:47+0000\n"
-"Last-Translator: Panagiotis Vasilopoulos <hello@alwayslivid.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-10 10:03+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/install.rst:2
@@ -36,7 +37,7 @@ msgstr ""
#: ../../source/install.rst:12
msgid "Linux"
-msgstr ""
+msgstr "Linux"
#: ../../source/install.rst:14
msgid ""
@@ -85,7 +86,7 @@ msgstr ""
#: ../../source/install.rst:28
msgid "Command-line only"
-msgstr ""
+msgstr "Μόνο γραμμή εντολών"
#: ../../source/install.rst:30
msgid ""
@@ -93,6 +94,10 @@ msgid ""
"operating system using the Python package manager ``pip``. See :ref:`cli`"
" for more information."
msgstr ""
+"Μπορείτε να εγκαταστήσετε μόνο την έκδοση με τη γραμμή εντολών του "
+"OnionShare σε οποιοδήποτε λειτουργικό σύστημα χρησιμοποιώντας τον "
+"διαχειριστή πακέτων Python ``pip``. Δείτε το :ref:`cli` για περισσότερες "
+"πληροφορίες."
#: ../../source/install.rst:35
msgid "Verifying PGP signatures"
@@ -183,7 +188,6 @@ msgid "The expected output looks like this::"
msgstr "Θα πρέπει να δείτε κάτι όπως::"
#: ../../source/install.rst:76
-#, fuzzy
msgid ""
"If you don't see ``Good signature from``, there might be a problem with "
"the integrity of the file (malicious or otherwise), and you should not "
@@ -191,11 +195,11 @@ msgid ""
" the package, it only means you haven't defined a level of \"trust\" of "
"Micah's PGP key.)"
msgstr ""
-"Εάν δεν εμφανιστεί το 'Σωστή υπογραφή από', ενδέχεται να υπάρχει πρόβλημα"
-" με την ακεραιότητα του αρχείου (κακόβουλο ή άλλο) και δεν πρέπει να "
-"εγκαταστήσετε το πακέτο. (Η ''ΠΡΟΕΙΔΟΠΟΙΗΣΗ:'' που φαίνεται παραπάνω, δεν"
-" αποτελεί πρόβλημα με το πακέτο, σημαίνει μόνο ότι δεν έχετε ήδη ορίσει "
-"κανένα επίπεδο 'εμπιστοσύνης' του κλειδιού PGP του Micah.)"
+"Εάν δεν εμφανιστεί το ``Σωστή υπογραφή από``, ενδέχεται να υπάρχει πρόβλημα "
+"με την ακεραιότητα του αρχείου (κακόβουλο ή άλλο) και δεν πρέπει να "
+"εγκαταστήσετε το πακέτο. (Η ``ΠΡΟΕΙΔΟΠΟΙΗΣΗ:`` που φαίνεται παραπάνω, δεν "
+"αποτελεί πρόβλημα με το πακέτο, σημαίνει μόνο ότι δεν έχετε ήδη ορίσει "
+"κανένα επίπεδο \"εμπιστοσύνης\" του κλειδιού PGP του Micah.)"
#: ../../source/install.rst:78
msgid ""
@@ -330,4 +334,3 @@ msgstr ""
#~ msgid "Command Line Only"
#~ msgstr ""
-
diff --git a/docs/source/locale/el/LC_MESSAGES/security.po b/docs/source/locale/el/LC_MESSAGES/security.po
index 85ae72c9..3b313c38 100644
--- a/docs/source/locale/el/LC_MESSAGES/security.po
+++ b/docs/source/locale/el/LC_MESSAGES/security.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-10 12:35-0700\n"
-"PO-Revision-Date: 2020-12-31 19:29+0000\n"
-"Last-Translator: george k <norhorn@gmail.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-10 10:03+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/security.rst:2
@@ -97,13 +98,21 @@ msgid ""
"access it (unless the OnionShare user chooses make their service public "
"by turning off the private key -- see :ref:`turn_off_private_key`)."
msgstr ""
+"**Αν ένας κακόβουλος μάθει για την υπηρεσία onion, εξακολουθεί να μην μπορεί "
+"να έχει πρόσβαση.** Προηγούμενες επιθέσεις κατά του δικτύου Tor για την "
+"απαρίθμηση των υπηρεσιών onion, επέτρεπαν την ανακάλυψη ιδιωτικών "
+"διευθύνσεων ``.onion``. Αν μια επίθεση ανακαλύψει μια ιδιωτική διεύθυνση "
+"OnionShare, θα πρέπει επίσης να μαντέψει και το ιδιωτικό κλειδί που "
+"χρησιμοποιείται για τον έλεγχο ταυτότητας του πελάτη, προκειμένου να έχει "
+"πρόσβαση σε αυτήν (εκτός αν ο χρήστης του OnionShare επιλέξει να κάνει την "
+"υπηρεσία του δημόσια απενεργοποιώντας το ιδιωτικό κλειδί -- δείτε "
+":ref:`turn_off_private_key`)."
#: ../../source/security.rst:20
msgid "What OnionShare doesn't protect against"
msgstr "Απο τι δεν προστατεύει το OnionShare"
#: ../../source/security.rst:22
-#, fuzzy
msgid ""
"**Communicating the OnionShare address and private key might not be "
"secure.** Communicating the OnionShare address to people is the "
@@ -116,20 +125,19 @@ msgid ""
"or in person. This isn't necessary when using OnionShare for something "
"that isn't secret."
msgstr ""
-"**Η γνωστοποίηση της διεύθυνσης OnionShare ενδέχεται να μην είναι "
-"ασφαλής.** Η γνωστοποίηση της διεύθυνσης OnionShare είναι ευθύνη του "
-"χρήστη OnionShare. Εάν σταλεί με ασφάλεια (όπως μέσω ενός μηνύματος "
-"ηλεκτρονικού ταχυδρομείου που παρακολουθείται από έναν εισβολέα), ένας "
-"υποκλοπέας μπορεί να πει ότι χρησιμοποιείται το OnionShare. Εάν ο "
-"θποκλοπέας φορτώσει τη διεύθυνση στο Tor Browser ενώ η υπηρεσία είναι "
-"ακόμα σε λειτουργία, μπορεί να αποκτήσει πρόσβαση σε αυτήν. Για να "
-"αποφευχθεί αυτό, η διεύθυνση πρέπει να κοινοποιείται με ασφάλεια, μέσω "
-"κρυπτογραφημένου μηνύματος κειμένου (πιθανώς με ενεργή τη διαγραφή "
-"μηνυμάτων), κρυπτογραφημένου email ή αυτοπροσώπως. Δεν είναι απαραίτητο "
-"όταν χρησιμοποιείτε το OnionShare για κάτι που δεν είναι μυστικό."
+"**Η γνωστοποίηση της διεύθυνσης OnionShare και του ιδιωτικού κλειδιού, "
+"ενδέχεται να μην είναι ασφαλής.** Η γνωστοποίηση της διεύθυνσης OnionShare "
+"είναι ευθύνη του χρήστη OnionShare. Εάν σταλεί με ασφάλεια (όπως μέσω ενός "
+"μηνύματος ηλεκτρονικού ταχυδρομείου που παρακολουθείται από έναν εισβολέα), "
+"ένας υποκλοπέας μπορεί να πει ότι χρησιμοποιείται το OnionShare. Εάν ο "
+"κακόβουλος φορτώσει τη διεύθυνση στο Tor Browser ενώ η υπηρεσία είναι ακόμα "
+"σε λειτουργία, μπορεί να αποκτήσει πρόσβαση. Για να αποφευχθεί αυτό, η "
+"διεύθυνση πρέπει να κοινοποιείται με ασφάλεια, μέσω κρυπτογραφημένου "
+"μηνύματος κειμένου (πιθανώς με ενεργή τη διαγραφή μηνυμάτων), "
+"κρυπτογραφημένου email ή αυτοπροσώπως. Δεν είναι απαραίτητο όταν "
+"χρησιμοποιείτε το OnionShare για κάτι που δεν είναι μυστικό."
#: ../../source/security.rst:24
-#, fuzzy
msgid ""
"**Communicating the OnionShare address and private key might not be "
"anonymous.** Extra precautions must be taken to ensure the OnionShare "
@@ -137,12 +145,12 @@ msgid ""
"accessed over Tor, can be used to share the address. This isn't necessary"
" unless anonymity is a goal."
msgstr ""
-"**Η γνωστοποίηση της διεύθυνσης OnionShare ενδέχεται να μην είναι "
-"ανώνυμη.** Πρέπει να ληφθούν επιπλέον μέτρα για να διασφαλιστεί ότι η "
-"διεύθυνση OnionShare κοινοποιείται ανώνυμα. Ένας νέος λογαριασμός email ή"
-" συνομιλίας, προσπελάσιμος μόνο μέσω Tor, μπορεί να χρησιμοποιηθεί για "
-"κοινή χρήση της διεύθυνσης. Δεν είναι απαραίτητο εκτός αν η ανωνυμία "
-"είναι στόχος."
+"**Η γνωστοποίηση της διεύθυνσης OnionShare και του ιδιωτικού κλειδιού, "
+"ενδέχεται να μην είναι ανώνυμη.** Πρέπει να ληφθούν επιπλέον μέτρα για να "
+"διασφαλιστεί ότι η διεύθυνση OnionShare κοινοποιείται ανώνυμα. Ένας νέος "
+"λογαριασμός email ή συνομιλίας, προσπελάσιμος μόνο μέσω Tor, μπορεί να "
+"χρησιμοποιηθεί για κοινή χρήση της διεύθυνσης. Δεν είναι απαραίτητο εκτός αν "
+"η ανωνυμία είναι απαραίτητη."
#~ msgid "Security design"
#~ msgstr ""
@@ -325,4 +333,3 @@ msgstr ""
#~ "turning off the private key -- see"
#~ " :ref:`turn_off_private_key`)."
#~ msgstr ""
-
diff --git a/docs/source/locale/el/LC_MESSAGES/tor.po b/docs/source/locale/el/LC_MESSAGES/tor.po
index 06067764..dc358baf 100644
--- a/docs/source/locale/el/LC_MESSAGES/tor.po
+++ b/docs/source/locale/el/LC_MESSAGES/tor.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2020-12-31 19:29+0000\n"
-"Last-Translator: george k <norhorn@gmail.com>\n"
-"Language: el\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
"Language-Team: el <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -262,18 +263,16 @@ msgid "Using Tor bridges"
msgstr "Χρήση γεφυρών Tor"
#: ../../source/tor.rst:109
-#, fuzzy
msgid ""
"If your access to the internet is censored, you can configure OnionShare "
"to connect to the Tor network using `Tor bridges "
"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
"connects to Tor without one, you don't need to use a bridge."
msgstr ""
-"Εάν η πρόσβασή σας στο Διαδίκτυο λογοκρίνεται, μπορείτε να ρυθμίσετε το "
-"OnionShare να συνδέεται στο δίκτυο Tor με χρήση των `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. Εάν το "
-"OnionShare συνδέεται απευθείας στο Tor, δεν χρειάζεται να χρησιμοποιήσετε"
-" γέφυρα."
+"Εάν λογοκρίνεται η πρόσβασή σας στο Διαδίκτυο, μπορείτε να ρυθμίσετε το "
+"OnionShare να συνδέεται με χρήση των `Tor bridges <https://2019.www."
+"torproject.org/docs/bridges.html.en>`_. Εάν το OnionShare συνδέεται "
+"απευθείας στο Tor, δεν χρειάζεται να χρησιμοποιήσετε μια γέφυρα."
#: ../../source/tor.rst:111
msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
@@ -511,4 +510,3 @@ msgstr ""
#~ "Files (x86)\\``. Μετονομάστε τον εξαχθέν "
#~ "φάκελο σε ``Data`` και ``Tor`` μέσα "
#~ "στο ``tor-win32``."
-
diff --git a/docs/source/locale/en/LC_MESSAGES/features.po b/docs/source/locale/en/LC_MESSAGES/features.po
index a3f2db2d..61cfdd3c 100644
--- a/docs/source/locale/en/LC_MESSAGES/features.po
+++ b/docs/source/locale/en/LC_MESSAGES/features.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -292,16 +292,25 @@ msgstr ""
#: ../../source/features.rst:121
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
+msgstr ""
+
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
msgstr ""
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr ""
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -311,23 +320,23 @@ msgid ""
"address if you close OnionShare and re-open it later."
msgstr ""
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr ""
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
@@ -335,7 +344,7 @@ msgid ""
"to send out the OnionShare address and private key."
msgstr ""
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -343,7 +352,7 @@ msgid ""
"\"Standard\" or \"Safer\", instead of \"Safest\"."
msgstr ""
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -351,13 +360,13 @@ msgid ""
"get displayed at all, even if others were already chatting in the room."
msgstr ""
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
msgstr ""
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -365,17 +374,17 @@ msgid ""
"room are your friends."
msgstr ""
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr ""
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
msgstr ""
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -387,7 +396,7 @@ msgid ""
"minimum."
msgstr ""
-#: ../../source/features.rst:165
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -397,11 +406,11 @@ msgid ""
"anonymity."
msgstr ""
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr ""
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -411,7 +420,7 @@ msgid ""
" connections."
msgstr ""
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
@@ -1046,3 +1055,13 @@ msgstr ""
#~ " compromosing their anonymity."
#~ msgstr ""
+#~ msgid ""
+#~ "If you want to load content from"
+#~ " third-party websites, like assets or"
+#~ " JavaScript libraries from CDNs, check "
+#~ "the \"Don't send Content Security Policy"
+#~ " header (allows your website to use"
+#~ " third-party resources)\" box before "
+#~ "starting the service."
+#~ msgstr ""
+
diff --git a/docs/source/locale/en/LC_MESSAGES/tor.po b/docs/source/locale/en/LC_MESSAGES/tor.po
index b11638a9..9e685032 100644
--- a/docs/source/locale/en/LC_MESSAGES/tor.po
+++ b/docs/source/locale/en/LC_MESSAGES/tor.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -23,12 +23,12 @@ msgstr ""
#: ../../source/tor.rst:4
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
+msgid "Use the Tor version built into OnionShare"
msgstr ""
#: ../../source/tor.rst:11
@@ -46,28 +46,66 @@ msgid ""
msgstr ""
#: ../../source/tor.rst:18
-msgid "Attempt auto-configuration with Tor Browser"
+msgid "Getting Around Censorship"
msgstr ""
#: ../../source/tor.rst:20
msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+
+#: ../../source/tor.rst:36
+msgid "Attempt auto-configuration with Tor Browser"
+msgstr ""
+
+#: ../../source/tor.rst:38
+msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
"process from the Tor Browser. Keep in mind you need to keep Tor Browser "
"open in the background while you're using OnionShare for this to work."
msgstr ""
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr ""
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
msgstr ""
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -75,7 +113,7 @@ msgid ""
"the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
msgstr ""
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -84,21 +122,21 @@ msgid ""
"your password. For example::"
msgstr ""
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
msgstr ""
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
"``HashedControlPassword`` with the one you just generated::"
msgstr ""
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -106,11 +144,11 @@ msgid ""
"this::"
msgstr ""
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr ""
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -121,25 +159,25 @@ msgid ""
"to the Tor controller\"."
msgstr ""
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr ""
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
msgstr ""
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr ""
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr ""
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -148,15 +186,15 @@ msgid ""
"cookie authentication\". Click the \"Test Connection to Tor\" button."
msgstr ""
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr ""
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -164,20 +202,20 @@ msgid ""
"repo/>`_."
msgstr ""
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
"connect to your system ``tor``'s control socket file."
msgstr ""
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
msgstr ""
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -187,30 +225,6 @@ msgid ""
"Connection to Tor\" button."
msgstr ""
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr ""
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr ""
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -455,3 +469,42 @@ msgstr ""
#~ "bridge."
#~ msgstr ""
+#~ msgid ""
+#~ "Pick a way to connect OnionShare "
+#~ "to Tor by clicking the \"⚙\" icon"
+#~ " in the bottom right of the "
+#~ "OnionShare window to get to its "
+#~ "settings."
+#~ msgstr ""
+
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr ""
+
+#~ msgid "Using Tor bridges"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "If your access to the internet is"
+#~ " censored, you can configure OnionShare "
+#~ "to connect to the Tor network "
+#~ "using `Tor bridges "
+#~ "<https://2019.www.torproject.org/docs/bridges.html.en>`_. If "
+#~ "OnionShare connects to Tor without one,"
+#~ " you don't need to use a "
+#~ "bridge."
+#~ msgstr ""
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+
diff --git a/docs/source/locale/eo/LC_MESSAGES/develop.po b/docs/source/locale/eo/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..3955e13b
--- /dev/null
+++ b/docs/source/locale/eo/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/es/LC_MESSAGES/advanced.po b/docs/source/locale/es/LC_MESSAGES/advanced.po
index 711f700f..c548fff3 100644
--- a/docs/source/locale/es/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/es/LC_MESSAGES/advanced.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: Santiago Passafiume <santiagopassafiume@protonmail.com>\n"
+"PO-Revision-Date: 2021-10-08 07:03+0000\n"
+"Last-Translator: Username1234567890 <danarauz@protonmail.com>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
@@ -54,16 +54,15 @@ msgstr ""
" pin aparece a la izquierda de su estado de servidor."
#: ../../source/advanced.rst:18
-#, fuzzy
msgid ""
"When you quit OnionShare and then open it again, your saved tabs will "
"start opened. You'll have to manually start each service, but when you do"
" they will start with the same OnionShare address and private key."
msgstr ""
-"Cuando sales de OnionShare y lo vuelves a abrir, tus pestañas guardadas "
-"se iniciarán abiertas. Tendrás que arrancar cada servicio manualmente, "
-"pero cuando lo hagas, se iniciarán con la misma dirección OnionShare, y "
-"con la misma contraseña."
+"Cuando sales de OnionShare y lo vuelves a abrir, tus pestañas guardadas se "
+"iniciarán abiertas. Tendrás que arrancar cada servicio manualmente, pero "
+"cuando lo hagas, se iniciarán con la misma dirección OnionShare, y con la "
+"misma llave privada."
#: ../../source/advanced.rst:21
msgid ""
@@ -76,7 +75,7 @@ msgstr ""
#: ../../source/advanced.rst:26
msgid "Turn Off Private Key"
-msgstr ""
+msgstr "Desactivar la Llave Privada"
#: ../../source/advanced.rst:28
msgid ""
@@ -91,21 +90,20 @@ msgid ""
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
"prompt for the private key to be entered."
msgstr ""
+"Al navegar a un servicio OnionShare en el Navegador Tor, el Navegador Tor "
+"solicitará que se ingrese la llave privada."
#: ../../source/advanced.rst:32
-#, fuzzy
msgid ""
"Sometimes you might want your OnionShare service to be accessible to the "
"public, like if you want to set up an OnionShare receive service so the "
"public can securely and anonymously send you files. In this case, it's "
"better to disable the private key altogether."
msgstr ""
-"A veces, podrías querer que tu servicio OnionShare sea accesible al "
-"público, por ejemplo si quisieras un servicio OnionShare de recepción "
-"para que el público pueda enviarte archivos segura y anónimamente. En "
-"esta caso, es mejor deshabilitar del todo la contraseña. Si no lo haces, "
-"alguien puede forzar a tu servidor para que se detenga efectuando solo 20"
-" suposiciones erróneas de tu contraseña, aún si conocen la correcta."
+"A veces puede que desee que su servicio de OnionShare sea accesible al "
+"público, como si desea configurar un servicio de recepción de OnionShare "
+"para que el público pueda enviarle archivos de forma segura y anónima. En "
+"este caso, es mejor desactivar la clave privada por completo."
#: ../../source/advanced.rst:35
msgid ""
@@ -114,6 +112,10 @@ msgid ""
"server. Then the server will be public and won't need a private key to "
"view in Tor Browser."
msgstr ""
+"Para desactivar la llave privada en cualquier pestaña, active la casilla de "
+"verificación que indica que se trata de un servicio público de OnionShare ("
+"desactiva la llave privada) antes de iniciar el servidor. Luego el servidor "
+"será público y no necesitará una llave privada para verlo en el Tor Browser."
#: ../../source/advanced.rst:40
msgid "Custom Titles"
@@ -183,17 +185,16 @@ msgstr ""
"nada, puedes cancelarlo antes de su inicio programado."
#: ../../source/advanced.rst:60
-#, fuzzy
msgid ""
"**Scheduling an OnionShare service to automatically stop can be useful to"
" limit exposure**, like if you want to share secret documents while "
"making sure they're not available on the internet for more than a few "
"days."
msgstr ""
-"**Programar un servicio OnionShare para detenerse automáticamente puede "
-"ser útil para limitar la exposición**, como cuando quieras compartir "
-"documentos secretos mientras te aseguras que no estarán disponibles en "
-"Internet por más de unos pocos días."
+"**La programación de un servicio de OnionShare para que se detenga "
+"automáticamente puede ser útil para limitar la exposición**, como cuando si "
+"usted deseara compartir documentos secretos mientras se asegura de que no "
+"están disponibles en el Internet por más de unos pocos días."
#: ../../source/advanced.rst:67
msgid "Command-line Interface"
@@ -232,6 +233,9 @@ msgid ""
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
"in the git repository."
msgstr ""
+"Para información sobre cómo instalarlo en diferentes sistemas operativos, "
+"consulte el \"archivo leeme CLI <https://github.com/onionshare/onionshare/"
+"blob/develop/cli/README.md>` _ en el repositorio de git."
#: ../../source/advanced.rst:83
msgid ""
diff --git a/docs/source/locale/es/LC_MESSAGES/develop.po b/docs/source/locale/es/LC_MESSAGES/develop.po
index a0cb49b3..1ba6855b 100644
--- a/docs/source/locale/es/LC_MESSAGES/develop.po
+++ b/docs/source/locale/es/LC_MESSAGES/develop.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2020-12-04 23:29+0000\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
"Last-Translator: Zuhualime Akoochimoya <zakooch@protonmail.ch>\n"
-"Language: es\n"
"Language-Team: none\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
@@ -62,16 +63,14 @@ msgid "Contributing Code"
msgstr "Contribuyendo código"
#: ../../source/develop.rst:17
-#, fuzzy
msgid ""
"OnionShare source code is to be found in this Git repository: "
"https://github.com/onionshare/onionshare"
msgstr ""
-"El código fuente de OnionShare está en este repositorio git: "
-"https://github.com/micahflee/onionshare"
+"El código fuente de OnionShare está en este repositorio git: https://github."
+"com/onionshare/onionshare"
#: ../../source/develop.rst:19
-#, fuzzy
msgid ""
"If you'd like to contribute code to OnionShare, it helps to join the "
"Keybase team and ask questions about what you're thinking of working on. "
@@ -79,11 +78,11 @@ msgid ""
"<https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if "
"there are any you'd like to tackle."
msgstr ""
-"Si quisieras contribuir código a OnionShare, ayuda unirse al equipo "
-"Keybase y hacer preguntas acerca de en qué estás pensando trabajar. "
-"También deberías revisar todas las `cuestiones abiertas "
-"<https://github.com/micahflee/onionshare/issues>`_ en GitHub para ver si "
-"hay alguna a la cual te gustaría encarar."
+"Si quisieras contribuir código a OnionShare, ayuda unirse al equipo Keybase "
+"y hacer preguntas acerca de en qué estás pensando trabajar. También deberías "
+"revisar todas las `cuestiones abiertas <https://github.com/onionshare/"
+"onionshare/issues>`_ en GitHub para ver si hay alguna a la cual te gustaría "
+"encarar."
#: ../../source/develop.rst:22
msgid ""
@@ -109,6 +108,11 @@ msgid ""
"file to learn how to set up your development environment for the "
"graphical version."
msgstr ""
+"OnionShare está desarrollado en Python. Para empezar, clona el repositorio "
+"Git en https://github.com/onionshare/onionshare/ y luego consulta el archivo "
+"``cli/README.md`` para aprender cómo configurar tu entorno de desarrollo "
+"para la versión de consola, y el archivo ``desktop/README.md`` para aprender "
+"cómo configurar tu entorno de desarrollo para la versión gráfica."
#: ../../source/develop.rst:32
msgid ""
@@ -176,15 +180,15 @@ msgstr ""
"modoficador ``--local-only``. Por ejemplo:"
#: ../../source/develop.rst:165
-#, fuzzy
msgid ""
"In this case, you load the URL ``http://127.0.0.1:17641`` in a normal "
"web-browser like Firefox, instead of using the Tor Browser. The private "
"key is not actually needed in local-only mode, so you can ignore it."
msgstr ""
-"En este caso, cargas el URL ``http://onionshare:train-"
-"system@127.0.0.1:17635`` en un navegador web normal como Firefox, en vez "
-"de usar al Navegador Tor."
+"En este caso, cargas el URL ``http://127.0.0.1:17641`` en un navegador web "
+"normal como Firefox, en vez de usar al Navegador Tor. No se precisa "
+"realmente la clave privada en el modo 'solo local', por lo que puedes "
+"ignorarla."
#: ../../source/develop.rst:168
msgid "Contributing Translations"
@@ -463,4 +467,3 @@ msgstr ""
#~ " de línea de comando, y el "
#~ "archivo ``desktop/README.md`` para aprender "
#~ "cómo hacerlo para la versión gráfica."
-
diff --git a/docs/source/locale/es/LC_MESSAGES/features.po b/docs/source/locale/es/LC_MESSAGES/features.po
index 8da51e51..85e0a68b 100644
--- a/docs/source/locale/es/LC_MESSAGES/features.po
+++ b/docs/source/locale/es/LC_MESSAGES/features.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: Raul <rgarciag@tutanota.com>\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: Zuhualime Akoochimoya <zakooch@protonmail.ch>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
@@ -123,7 +123,6 @@ msgstr ""
"empezar a compartir."
#: ../../source/features.rst:39
-#, fuzzy
msgid ""
"As soon as someone finishes downloading your files, OnionShare will "
"automatically stop the server, removing the website from the internet. To"
@@ -132,10 +131,10 @@ msgid ""
"box."
msgstr ""
"Tan pronto como alguien termine de descargar tus archivos, OnionShare "
-"detendrá automáticamente al servidor, removiendo al sitio web de "
-"Internet. Para permitirle descargarlos a múltiples personas, desmarca la "
-"casilla \"Detener compartición después de que los archivos han sido "
-"enviados (desmarca para permitir la descarga de archivos individuales)\"."
+"detendrá automáticamente al servidor, removiendo al sitio web de Internet. "
+"Para permitirles descargarlos a múltiples personas, desmarca la casilla "
+"\"Detener compartición después de que los archivos han sido enviados ("
+"desmarca para permitir la descarga de archivos individuales)\"."
#: ../../source/features.rst:42
msgid ""
@@ -162,30 +161,27 @@ msgstr ""
"archivos."
#: ../../source/features.rst:48
-#, fuzzy
msgid ""
"Now that you have a OnionShare, copy the address and the private key and "
"send it to the person you want to receive the files. If the files need to"
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
-"Ahora que tienes un OnionShare, copia la dirección y envíasela a la "
-"persona que quieres que reciba los archivos. Si necesitan permanecer "
-"seguros, o si la persona está expuesta a cualquier otro peligro, usa una "
-"aplicación de mensajería cifrada."
+"Ahora que tienes un OnionShare, copia la dirección y la clave privada y "
+"envíaselas a la persona que quieres que reciba los archivos. Si necesitan "
+"permanecer seguros, o si la persona está expuesta a cualquier otro peligro, "
+"usa una aplicación de mensajería cifrada."
#: ../../source/features.rst:50
-#, fuzzy
msgid ""
"That person then must load the address in Tor Browser. After logging in "
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
-"Esa persona debe cargar luego la dirección en el Navegador Tor. Después "
-"de iniciar sesión con la contraseña aleatoria incluída en la dirección "
-"web, serán capaces de descargar los archivos directamente desde tu "
-"computadora haciendo clic en el vínculo \"Descargar Archivos\" en la "
-"esquina."
+"Esa persona debe cargar luego la dirección en el Navegador Tor. Después de "
+"iniciar sesión con la clave privada, los archivos pueden descargarse "
+"directamente desde tu computadora haciendo clic en el vínculo \"Descargar "
+"Archivos\" en la esquina."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
@@ -304,18 +300,16 @@ msgid "Use at your own risk"
msgstr "Úsalo a tu propio riesgo"
#: ../../source/features.rst:88
-#, fuzzy
msgid ""
"Just like with malicious email attachments, it's possible someone could "
"try to attack your computer by uploading a malicious file to your "
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
-"De la misma manera que con adjuntos maliciosos en correos electrónicos, "
-"es posible que alguien pudiera intentar atacar tu computadora subiendo un"
-" archivo malicioso a tu servicio OnionShare, el cual no añade ningún "
-"mecanismo de seguridad para proteger tu sistema contra archivos "
-"maliciosos."
+"De la misma manera que con adjuntos maliciosos en correos electrónicos, es "
+"posible que alguien pudiera intentar atacar tu computadora subiendo a tu "
+"servicio OnionShare un archivo malicioso. OnionShare no añade ningún "
+"mecanismo de seguridad para proteger tu sistema contra archivos maliciosos."
#: ../../source/features.rst:90
msgid ""
@@ -344,29 +338,26 @@ msgid "Tips for running a receive service"
msgstr "Consejos para correr un servicio de recepción"
#: ../../source/features.rst:97
-#, fuzzy
msgid ""
"If you want to host your own anonymous dropbox using OnionShare, it's "
"recommended you do so on a separate, dedicated computer always powered on"
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
-"Si quieres alojar tu propio buzón anónimo usando OnionShare, es "
-"recomendado que lo hagas en una computadora dedicada y separada, que "
-"siempre esté encendida y conectada a Internet, y no en la que usas "
-"regularmente."
+"Si quieres alojar tu propio buzón anónimo usando OnionShare, es recomendado "
+"que lo hagas en una computadora dedicada y separada, que siempre esté "
+"encendida y conectada a Internet, y no en la que usas regularmente."
#: ../../source/features.rst:99
-#, fuzzy
msgid ""
"If you intend to put the OnionShare address on your website or social "
"media profiles, save the tab (see :ref:`save_tabs`) and run it as a "
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
-"Si tu intención es publicitar la dirección OnionShare en tu sitio web o "
-"tus perfiles de redes sociales, guarda la pestaña (ver :ref:`save_tabs`) "
-"y córrela como un servicio público (ver :ref:`turn_off_passwords`). "
+"Si tu intención es publicitar la dirección OnionShare en tu sitio web o tus "
+"perfiles de redes sociales, guarda la pestaña (ver :ref:`save_tabs`) y "
+"ejecútala como un servicio público (ver :ref:`turn_off_private_key`). "
"También es una buena idea darle un título personalizado (ver "
":ref:`custom_titles`)."
@@ -416,7 +407,6 @@ msgid "Content Security Policy"
msgstr "Política de Seguridad de Contenido"
#: ../../source/features.rst:119
-#, fuzzy
msgid ""
"By default OnionShare helps secure your website by setting a strict "
"`Content Security Policy "
@@ -424,11 +414,10 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
-"Por defecto, OnionShare te ayudará a asegurar tu sitio web estableciendo "
-"un encabezado de `Política de Seguridad de Contenido "
-"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_ estricto. Sin "
-"embargo, esto evitará que el contenido de terceros sea cargado dentro de "
-"la página web."
+"Por defecto, OnionShare te ayuda a asegurar tu sitio web estableciendo un "
+"encabezado de `Política de Seguridad de Contenido <https://en.wikipedia.org/"
+"wiki/Content_Security_Policy>`_ estricto. Sin embargo, esto evitará que el "
+"contenido de terceros sea cargado dentro de la página web."
#: ../../source/features.rst:121
msgid ""
@@ -448,7 +437,6 @@ msgid "Tips for running a website service"
msgstr "Consejos para correr un servicio de sitio web"
#: ../../source/features.rst:126
-#, fuzzy
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -457,22 +445,20 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
-"Si quieres alojar un sitio web a largo plazo usando OnionShare (que no "
-"sea solo para mostrarle algo a alguien rápidamente), es recomendado que "
-"lo hagas en una computadora separada y dedicada, que siempre esté "
-"encendida y conectada a Internet, y no en la que usas regularmente. "
-"Guarda la pestaña (mira :ref:`save_tabs`) con el fin de que puedas "
-"reanudar al sitio web con la misma dirección, si cierras OnionShare y lo "
-"vuelves a iniciar más tarde."
+"Si quieres alojar un sitio web a largo plazo usando OnionShare (que no sea "
+"solo para mostrarle algo a alguien rápidamente), es recomendado que lo hagas "
+"en una computadora separada y dedicada, que siempre esté encendida y "
+"conectada a Internet, y no en la que usas regularmente. Guarda la pestaña ("
+"mira :ref:`save_tabs`) con el fin de que puedas reanudar al sitio web con la "
+"misma dirección, si cierras OnionShare y lo vuelves a iniciar más tarde."
#: ../../source/features.rst:129
-#, fuzzy
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
-"Si planeas que tu sitio web sea visto por el público, deberías ejecutarlo"
-" como servicio público (see :ref:`turn_off_passwords`)."
+"Si planeas que tu sitio web sea visto por el público, deberías ejecutarlo "
+"como servicio público (see :ref:`turn_off_private_key`)."
#: ../../source/features.rst:132
msgid "Chat Anonymously"
@@ -488,17 +474,17 @@ msgstr ""
"haz clic en \"Iniciar servidor de chat\"."
#: ../../source/features.rst:138
-#, fuzzy
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
-"Después de iniciar el servidor, copie la dirección de OnionShare y "
-"envíela a las personas que desee en la sala de chat anónima. Si es "
-"importante limitar exactamente quién puede unirse, use una aplicación de "
-"mensajería encriptada para enviar la dirección de OnionShare."
+"Después de iniciar el servidor, copia la dirección de OnionShare y la clave "
+"privada y envíaselas a las personas que deseas en la sala de charla anónima. "
+"Si es importante limitar exactamente quién puede unirse, usa una aplicación "
+"de mensajería cifrada para enviar la dirección de OnionShare y la clave "
+"privada."
#: ../../source/features.rst:143
msgid ""
@@ -570,9 +556,17 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
+"Si por ejemplo envías un mensaje a un grupo de Signal, una copia de tu "
+"mensaje termina en cada dispositivo (los teléfonos inteligentes y "
+"computadoras, si usan Signal para escritorio) de cada miembro del grupo. "
+"Incluso si la opción desaparición de mensajes está activada, es difícil "
+"confirmar si todas las copias de los mensajes han sido eliminadas de todos "
+"los dispositivos, y cualesquiera otros lugares (como bases de datos de "
+"notificaciones) donde puedan haber sido guardados. Las salas de charla de "
+"OnionShare no guardan los mensajes en ningún lado, de forma que este "
+"problema se reduce al mínimo."
#: ../../source/features.rst:165
-#, fuzzy
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -581,12 +575,12 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
-"Los cuartos de chat OnionShare también pueden ser útiles para personas "
-"anónimas que quieran charlar en forma segura con alguien sin necesitar "
-"crear alguna cuenta. Por ejemplo, una fuente puede enviar una dirección "
-"OnionShare a un periodista usando una dirección de correo electrónico "
-"descartable, y luego esperar a que el periodista se una al cuarto de "
-"chat, todo eso sin comprometer su anonimato."
+"Las salas de charla de OnionShare también pueden ser útiles para personas "
+"anónimas que quieran charlar en forma segura con alguien sin necesitar crear "
+"alguna cuenta. Por ejemplo, una fuente puede enviar una dirección OnionShare "
+"a un periodista usando una dirección de correo electrónico descartable, y "
+"luego esperar a que el periodista se una a la sala de charla, todo eso sin "
+"comprometer su anonimato."
#: ../../source/features.rst:169
msgid "How does the encryption work?"
diff --git a/docs/source/locale/es/LC_MESSAGES/install.po b/docs/source/locale/es/LC_MESSAGES/install.po
index 79e5c1a4..2fc8c25d 100644
--- a/docs/source/locale/es/LC_MESSAGES/install.po
+++ b/docs/source/locale/es/LC_MESSAGES/install.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-21 15:39+0000\n"
-"Last-Translator: carlosm2 <carlosm2@riseup.net>\n"
+"PO-Revision-Date: 2021-10-09 09:04+0000\n"
+"Last-Translator: Zuhualime Akoochimoya <zakooch@protonmail.ch>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
@@ -82,7 +82,7 @@ msgstr ""
#: ../../source/install.rst:28
msgid "Command-line only"
-msgstr ""
+msgstr "Solo línea de comandos"
#: ../../source/install.rst:30
msgid ""
@@ -90,10 +90,13 @@ msgid ""
"operating system using the Python package manager ``pip``. See :ref:`cli`"
" for more information."
msgstr ""
+"Puedes instalar solo la versión de consola de OnionShare en cualquier "
+"sistema operativo usando el gestor de paquetes ``pip`` de Python. Ver "
+":ref:`cli` para más información."
#: ../../source/install.rst:35
msgid "Verifying PGP signatures"
-msgstr "Verificar firmas PGP"
+msgstr "Verificando firmas PGP"
#: ../../source/install.rst:37
msgid ""
@@ -179,7 +182,6 @@ msgid "The expected output looks like this::"
msgstr "La salida esperada se parece a esta::"
#: ../../source/install.rst:76
-#, fuzzy
msgid ""
"If you don't see ``Good signature from``, there might be a problem with "
"the integrity of the file (malicious or otherwise), and you should not "
@@ -187,11 +189,11 @@ msgid ""
" the package, it only means you haven't defined a level of \"trust\" of "
"Micah's PGP key.)"
msgstr ""
-"Si no ves 'Good signature from', entonces podría haber un problema con la"
-" integridad del archivo (malicioso u otra causa), y no deberías instalar "
-"el paquete. (La \"ADVERTENCIA:\" mostrada arriba no es un problema con el"
-" paquete: solamente significa que no has definido ningún nivel de "
-"'confianza' con respecto a la clave PGP de Micah.)"
+"Si no ves 'Good signature from', entonces podría haber un problema con la "
+"integridad del archivo (malicioso u otra causa), y no deberías instalar el "
+"paquete. (La \"ADVERTENCIA:\" mostrada arriba no es un problema con el "
+"paquete: solamente significa que no has definido ningún nivel de 'confianza' "
+"con respecto a la clave PGP de Micah.)"
#: ../../source/install.rst:78
msgid ""
diff --git a/docs/source/locale/fi/LC_MESSAGES/features.po b/docs/source/locale/fi/LC_MESSAGES/features.po
index 26f2695a..cedfb553 100644
--- a/docs/source/locale/fi/LC_MESSAGES/features.po
+++ b/docs/source/locale/fi/LC_MESSAGES/features.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3.2\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: 2021-08-25 18:33+0000\n"
"Last-Translator: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>\n"
"Language: fi\n"
@@ -430,11 +430,10 @@ msgstr ""
"sisällä."
#: ../../source/features.rst:121
+#, fuzzy
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
"Jos haluat ladata sisältöä kolmannen osapuolen verkkosivuilta, kuten "
"resursseja tai JavaScript-kirjastoja sisällönjakeluverkosta, raksita "
@@ -442,11 +441,22 @@ msgstr ""
" verkkosivun käyttää kolmannen osapuolten resursseja)\" -ruutu ennen "
"palvelun käynnistämistä."
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Vinkkejä verkkosivupalvelun ylläpitoon"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
#, fuzzy
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
@@ -464,7 +474,7 @@ msgstr ""
"voit palauttaa verkkosivun samassa osoitteessa, jos suljet OnionSharen ja"
" avaat sen uudelleen myöhemmin."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
#, fuzzy
msgid ""
"If your website is intended for the public, you should run it as a public"
@@ -473,11 +483,11 @@ msgstr ""
"Jos verkkosivusi on tarkoitus olla avoin yleisölle, sinun tulisi "
"suorittaa sitä julkisena palveluna (see :ref:`turn_off_passwords`)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Viesti anonyymisti"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
@@ -486,7 +496,7 @@ msgstr ""
"keskusteluhuoneen, joka ei pidä lokia mistään. Avaa vain "
"keskusteluvälilehti ja klikkaa \"Aloita chatpalvelu\"."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
#, fuzzy
msgid ""
"After you start the server, copy the OnionShare address and private key "
@@ -499,7 +509,7 @@ msgstr ""
"rajoittaa tarkasti kuka voi liittyä, käytä kryptattua viestintäsovellusta"
" lähettääksesi OnionShare-osoitteen."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -512,7 +522,7 @@ msgstr ""
"säädettynä joko tasolle \"Standard\" tai \"Safet\". Ei tasolle "
"\"Safest\"."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -525,7 +535,7 @@ msgstr ""
"tallenneta mihinkään, sitä ei näytetä lainkaan, vaikka jotkut muut "
"olisivat valmiiksi keskustelemassa huoneessa."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -534,7 +544,7 @@ msgstr ""
"muuttaa nimeään miksi tahansa, eikä kellään ole mahdollisuutta varmistaa "
"kenenkään toisen identiteettiä."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -546,11 +556,11 @@ msgstr ""
"viestintäsovelluksen kautta, voit olla suhteellisen varma, että "
"huoneeseen liittyvät henkilöt ovat tuntemiasi henkilöitä."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Mitä hyötyä tästä on?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -559,7 +569,7 @@ msgstr ""
"idea OnionSharen keskusteluhuoneessa on ensinnäkään? Se jättää vähemmän "
"jälkiä."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -571,7 +581,7 @@ msgid ""
"minimum."
msgstr ""
-#: ../../source/features.rst:165
+#: ../../source/features.rst:168
#, fuzzy
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
@@ -588,11 +598,11 @@ msgstr ""
"ja sen jälkeen odottaa toimittajaa keskusteluryhmään. Kaikki tämä ilman, "
"että kenenkään anonyymiys on uhattuna."
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Kuinka kryptaaminen toimii?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -608,7 +618,7 @@ msgstr ""
"muille huoneen jäsenille käyttäen WebSocketeja, edelleen heidän E2EE-"
"sipuliyhteyksien läpi."
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
diff --git a/docs/source/locale/fi/LC_MESSAGES/tor.po b/docs/source/locale/fi/LC_MESSAGES/tor.po
index 5ee9f188..a4d27700 100644
--- a/docs/source/locale/fi/LC_MESSAGES/tor.po
+++ b/docs/source/locale/fi/LC_MESSAGES/tor.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3.2\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: 2021-08-25 18:33+0000\n"
"Last-Translator: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>\n"
"Language: fi\n"
@@ -23,16 +23,17 @@ msgid "Connecting to Tor"
msgstr "Yhdistetään Toriin"
#: ../../source/tor.rst:4
+#, fuzzy
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
"Valitse, kuinka OnionShare yhdistetään Toriin klikkaamalla \"⚙\" "
"kuvaketta Onionshare-ikkunan oikeasta alareunasta."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "Käytä ``tor`` Onionsharen kanssa"
+msgid "Use the Tor version built into OnionShare"
+msgstr ""
#: ../../source/tor.rst:11
msgid ""
@@ -56,10 +57,53 @@ msgstr ""
"järjestelmän ``tor`` -sovellusta erikseen."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr ""
+
+#: ../../source/tor.rst:20
+#, fuzzy
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+"Jos yhteytesi internetiin on sensuroitu, voit määrittää OnionSharen "
+"yhdistymään Tor-verkkoon käyttämällä `Tor-siltoja "
+"<https://2019.www.torproject.org/docs/bridges.html.en>`_. Jos OnionShare "
+"yhdistää Toriin ilman sellaista, sinun ei tarvitse käyttää siltaa."
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Yritä automaattista asetusten säätämistä Tor-selaimella"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
@@ -71,11 +115,11 @@ msgstr ""
"``tor``-prosessia. Muista, että tällöin Tor-selaimen tulee pysyä auki "
"taustalla, kun käytät OnionSharea."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Järjestelmän ``tor``-prosessin käyttäminen Windowsissa"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
@@ -83,7 +127,7 @@ msgstr ""
"Tämä on melko vaativaa. Sinun täytyy tietää kuinka muokata selkokielisiä "
"tiedostoja ja kuinka tehdä ylläpitojuttuja."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -96,7 +140,7 @@ msgstr ""
"purettu kansio, jonka sisällä ovat myös ``Data``ja `Tor``, muotoon ``tor-"
"win32``."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -110,7 +154,7 @@ msgstr ""
"ylläpitäjänä, ja käytä ``tor.exe --hash-password`` luodaksesi tiivisteen "
"salasanastasi. Esimerkiksi::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -120,7 +164,7 @@ msgstr ""
"ohittaa). Ylläolevassa esimerkkitapauksessa se on "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -130,7 +174,7 @@ msgstr ""
"win32\\torrc`` ja liitä hashattu salasanan sisältö tekstitiedostoon, "
"korvaamalla ``HashedControlPassword`in sillä minkä juuri loit::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -143,11 +187,11 @@ msgstr ""
"`<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Eli "
"näin::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Suoritat nyt järjestelmän ``tor``-prosessia Windowsissa!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -165,11 +209,11 @@ msgstr ""
"valitsit aiemmin. Klikkaa \"Testaa yhteys Toriin\" -nappia. Jos kaikki "
"menee hyvin, sinun tulisi nähdä \"Yhdistetty Tor-ohjaimeen\"."
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "Järjestelmän ``tor``-prosessin käyttö macOS:ssa"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -177,15 +221,15 @@ msgstr ""
"Aluksi, asenna `Homebrew <https://brew.sh/>`_ jos sinulla ei ole vielä "
"ole sitä, ja asenna sitten Tor::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr "Määritä nyt Tor sallimalla yhteydet OnionSharesta::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "Ja aloita järjestelmän Tor-palvelu::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -200,15 +244,15 @@ msgstr ""
"tunnistautumisasetukset\"-valikon alta valitse \"Ei tunnistautumista, tai"
" evästetunnistautumista\". Klikkaa \"Testaa yhteys Toriin\" -nappia."
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr "Jos kaikki menee hyvin, sinun tulisi nähdä \"Yhdistetty Tor-ohjaimeen\"."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Järjestelmän ``tor`` -prosessin käyttö Linuxilla"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -219,7 +263,7 @@ msgstr ""
"kaltaista Linux-jakelua, on suositeltua käyttää Tor Projectin virallista "
"ohjelmavarastoa <https://support.torproject.org/apt/tor-deb-repo/>`_."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
@@ -229,7 +273,7 @@ msgstr ""
"(Debianin ja Ubuntun tapauksessa, ``debian-tor``) ja määritä OnionShare "
"yhdistämään järjestelmäsi``tor``in kontrolli-socket-tiedostoon."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -237,7 +281,7 @@ msgstr ""
"Lisää käyttäjäsi ``debian-tor``-ryhmään suorittamalla tämä komento "
"(korvaa ``username``omalla oikealla käyttäjänimelläsi)::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -253,37 +297,31 @@ msgstr ""
"tunnistautumisasetukset\"-valikon alta valitse \"Ei tunnistautumista, tai"
" evästetunnistautumista\". Klikkaa \"Testaa yhteys Toriin\" -nappia."
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Tor-siltojen käyttäminen"
-
-#: ../../source/tor.rst:109
-#, fuzzy
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-"Jos yhteytesi internetiin on sensuroitu, voit määrittää OnionSharen "
-"yhdistymään Tor-verkkoon käyttämällä `Tor-siltoja "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. Jos OnionShare "
-"yhdistää Toriin ilman sellaista, sinun ei tarvitse käyttää siltaa."
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr "Määrittääksesi sillat klikkaa \"⚙\" kuvaketta OnionSharessa."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Voit käyttää sisäänrakennettua obfs4 plugattavia siirtoja, "
-"sisäänrakennettuja meek_lite (Azure) plugattavia siirtoja tai "
-"räätälöityjä siltoja, jotka sinä voit hankkia Torin `BridgeDB:sta "
-"<https://bridges.torproject.org/>`_. Jos tarvitset siltaa, yritä "
-"sisäänrakennettua obfs4-vaihtoehtoa ensin."
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "Käytä ``tor`` Onionsharen kanssa"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Tor-siltojen käyttäminen"
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr "Määrittääksesi sillat klikkaa \"⚙\" kuvaketta OnionSharessa."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Voit käyttää sisäänrakennettua obfs4 "
+#~ "plugattavia siirtoja, sisäänrakennettuja meek_lite"
+#~ " (Azure) plugattavia siirtoja tai "
+#~ "räätälöityjä siltoja, jotka sinä voit "
+#~ "hankkia Torin `BridgeDB:sta "
+#~ "<https://bridges.torproject.org/>`_. Jos tarvitset "
+#~ "siltaa, yritä sisäänrakennettua obfs4-vaihtoehtoa"
+#~ " ensin."
diff --git a/docs/source/locale/fr/LC_MESSAGES/advanced.po b/docs/source/locale/fr/LC_MESSAGES/advanced.po
index 57610ed9..91db3662 100644
--- a/docs/source/locale/fr/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/fr/LC_MESSAGES/advanced.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: EdwardCage <contact@edwardcage.pro>\n"
+"PO-Revision-Date: 2021-10-23 18:43+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -21,11 +21,11 @@ msgstr ""
#: ../../source/advanced.rst:2
msgid "Advanced Usage"
-msgstr "Usage avancé"
+msgstr "Utilisation Avancée"
#: ../../source/advanced.rst:7
msgid "Save Tabs"
-msgstr ""
+msgstr "Sauvegarder les onglets"
#: ../../source/advanced.rst:9
msgid ""
@@ -35,6 +35,11 @@ msgid ""
"useful if you want to host a website available from the same OnionShare "
"address even if you reboot your computer."
msgstr ""
+"Tout dans OnionShare est temporaire par défaut. Si vous fermez un onglet, "
+"son adresse n'existe plus et ne pourra plus être utilisée. Dans certains "
+"cas, vous voudrez qu'un service OnionShare soit persistent. Cela est utile "
+"si vous souhaitez héberger un site web dont l'adresse OnionShare reste "
+"identique même après un redémarrage de votre ordinateur."
#: ../../source/advanced.rst:13
msgid ""
@@ -42,6 +47,10 @@ msgid ""
"open it when I open OnionShare\" box before starting the server. When a "
"tab is saved a purple pin icon appears to the left of its server status."
msgstr ""
+"Pour rendre un onglet persistant, cocher la case \"Enregistrer cet onglet et "
+"l’ouvrir automatiquement quand j’ouvre OnionShare\" avant de démarrer le "
+"serveur. Quand un onglet est sauvegardé un icône d'épingle violet apparaît à "
+"la gauche du statut du serveur."
#: ../../source/advanced.rst:18
msgid ""
@@ -55,6 +64,8 @@ msgid ""
"If you save a tab, a copy of that tab's onion service secret key will be "
"stored on your computer with your OnionShare settings."
msgstr ""
+"Si vous sauvegarder un onglet, une copie de la clé secrète de ce service "
+"ognon sera stocké dans votre ordinateur avec vos paramètres OnionShare."
#: ../../source/advanced.rst:26
msgid "Turn Off Passwords"
@@ -87,7 +98,7 @@ msgstr ""
#: ../../source/advanced.rst:38
msgid "Scheduled Times"
-msgstr ""
+msgstr "Programmation horaire"
#: ../../source/advanced.rst:40
msgid ""
@@ -97,6 +108,11 @@ msgid ""
"scheduled time\", \"Stop onion service at scheduled time\", or both, and "
"set the respective desired dates and times."
msgstr ""
+"OnionShare permet de planifier quand un service doit démarrer ou s'arrêter. "
+"Avant de démarrer un serveur, cliquer \"Afficher les paramètres avancés\" "
+"dans l'onglet et cocher une ou les deux cases \"Démarrer un service onion à "
+"une heure prédéterminée\" ou \" Arrêter un service onion à une heure "
+"prédéterminée\", et définissez les dates et heures souhaitées."
#: ../../source/advanced.rst:43
msgid ""
@@ -105,6 +121,11 @@ msgid ""
"starts. If you scheduled it to stop in the future, after it's started you"
" will see a timer counting down to when it will stop automatically."
msgstr ""
+"Si vous paramétrez un service pour qu'il démarre dans le futur, quand vous "
+"cliquer le bouton \"Commencer le partage\", un compte à rebours s'affichera "
+"jusqu'au démarrage du service. Si vous le paramétrez pour qu'il s'arrête "
+"dans le futur, après son démarrage un compte à rebours jusqu'à son arrêt "
+"automatique s'affichera."
#: ../../source/advanced.rst:46
msgid ""
@@ -113,6 +134,10 @@ msgid ""
"time in the future if anything happens to you. If nothing happens to you,"
" you can cancel the service before it's scheduled to start."
msgstr ""
+"**Planifier le démarrage automatique d'un service OnionShare peut être "
+"utilisé comme une veille automatique**, le service deviendra public à un "
+"moment choisis dans le futur si quelque chose vous arrive. Si rien ne vous "
+"arrive, vous pouvez annuler le service avant qu'il ne se lance."
#: ../../source/advanced.rst:51
msgid ""
@@ -124,29 +149,35 @@ msgstr ""
#: ../../source/advanced.rst:56
msgid "Command-line Interface"
-msgstr ""
+msgstr "Interface en ligne de commande"
#: ../../source/advanced.rst:58
msgid ""
"In addition to its graphical interface, OnionShare has a command-line "
"interface."
msgstr ""
+"En plus de son interface graphique, OnionShare dispose d'une interface en "
+"ligne de commande."
#: ../../source/advanced.rst:60
msgid ""
"You can install just the command-line version of OnionShare using "
"``pip3``::"
msgstr ""
+"Vous pouvez installez uniquement la version en ligne de commande "
+"d'OnionShare en utilisant ``pip3``::"
#: ../../source/advanced.rst:64
msgid ""
"Note that you will also need the ``tor`` package installed. In macOS, "
"install it with: ``brew install tor``"
msgstr ""
+"Notez que vous aurez aussi besoin d'installer le paquet ``tor``. Sur macOS, "
+"installez le avec : ``brew install tor``"
#: ../../source/advanced.rst:66
msgid "Then run it like this::"
-msgstr ""
+msgstr "Puis lancez le avec ::"
#: ../../source/advanced.rst:70
msgid ""
@@ -154,16 +185,21 @@ msgid ""
"also just run ``onionshare.cli`` to access the command-line interface "
"version."
msgstr ""
+"Si vous installez OnionShare en utilisant le paquet Linux Snapcraft, vous "
+"pouvez vous contentez de lancer ``onionshare.cli`` pour accéder à "
+"l'interface en ligne de commande."
#: ../../source/advanced.rst:73
msgid "Usage"
-msgstr ""
+msgstr "Utilisation"
#: ../../source/advanced.rst:75
msgid ""
"You can browse the command-line documentation by running ``onionshare "
"--help``::"
msgstr ""
+"Vous pouvez consultez la documentation de l'interface en ligne de commande "
+"en lançant ``onionshare --help``::"
#: ../../source/advanced.rst:132
msgid "Legacy Addresses"
diff --git a/docs/source/locale/fr/LC_MESSAGES/develop.po b/docs/source/locale/fr/LC_MESSAGES/develop.po
index a8b23ac9..4411341d 100644
--- a/docs/source/locale/fr/LC_MESSAGES/develop.po
+++ b/docs/source/locale/fr/LC_MESSAGES/develop.po
@@ -6,25 +6,26 @@
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Automatically generated\n"
-"Language: fr\n"
+"PO-Revision-Date: 2021-10-24 21:38+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
msgid "Developing OnionShare"
-msgstr ""
+msgstr "Développer OnionShare"
#: ../../source/develop.rst:7
msgid "Collaborating"
-msgstr ""
+msgstr "Collaborer"
#: ../../source/develop.rst:9
msgid ""
@@ -37,6 +38,15 @@ msgid ""
"<https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", "
"click \"Join a Team\", and type \"onionshare\"."
msgstr ""
+"OnionShare dipose d'une équipe Keybase ouverte pour discuter du projet, "
+"poser des questions, partager des idées et concents, et concevoir les "
+"évolutions à venir. (C'est aussi une manière facile d'envoyer des messages "
+"personnels chiffrés de bout-en-bout à d'autres personnes de la communauté "
+"OnionShare, comme des adresses OnionShare.) Pour utiliser Keybase, "
+"télécharger l'`application Keybase <https://keybase.io/download>`_, créer un "
+"compte, et `rejoignez cette équipe <https://keybase.io/team/onionshare>`_. "
+"Dans l'application, allez à \"Teams\", cliquer sur \"Join a Team\", et "
+"écrivez \"onionshare\"."
#: ../../source/develop.rst:12
msgid ""
@@ -44,10 +54,13 @@ msgid ""
"<https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers "
"and and designers to discuss the project."
msgstr ""
+"OnionShare a aussi une `liste de diffusion <https://lists.riseup.net/www/"
+"subscribe/onionshare-dev>`_ pour permettre aux développeurs et concepteurs "
+"de discuter du projet."
#: ../../source/develop.rst:15
msgid "Contributing Code"
-msgstr ""
+msgstr "Contribuer au code"
#: ../../source/develop.rst:17
msgid ""
@@ -70,10 +83,14 @@ msgid ""
"repository and one of the project maintainers will review it and possibly"
" ask questions, request changes, reject it, or merge it into the project."
msgstr ""
+"Quand vous êtes prêt à contribuer au code, faites une demande d'extraction "
+"dans le répertoire GitHub et un des mainteneurs du projet l'évaluera et si "
+"possible posera des questions, demanderas des changements, la rejettera, ou "
+"la fusionnera dans le projet."
#: ../../source/develop.rst:27
msgid "Starting Development"
-msgstr ""
+msgstr "Commencer le développement"
#: ../../source/develop.rst:29
msgid ""
@@ -91,14 +108,17 @@ msgid ""
"install dependencies for your platform, and to run OnionShare from the "
"source tree."
msgstr ""
+"Ces fichiers contiennent les instructions techniques nécessaires et les "
+"commandes nécessaires pour installer les dépendances pour votre plateforme, "
+"et pour faire fonctionner OnionShare depuis les sources."
#: ../../source/develop.rst:35
msgid "Debugging tips"
-msgstr ""
+msgstr "Conseils pour le débogage"
#: ../../source/develop.rst:38
msgid "Verbose mode"
-msgstr ""
+msgstr "Mode texte"
#: ../../source/develop.rst:40
msgid ""
@@ -108,12 +128,20 @@ msgid ""
"initialized, when events occur (like buttons clicked, settings saved or "
"reloaded), and other debug info. For example::"
msgstr ""
+"Quand vous développez, il est pratique de faire tourner OnionShare depuis un "
+"terminal et d'ajouter le paramètre ``--verbose`` (ou ``-v``) à la commande. "
+"Cela affiche de nombreux messages utiles dans le terminal, comme le moment "
+"où certains objets sont initialisés, quand des évènements se produisent ("
+"comme des boutons qui sont cliqués, des paramètres qui sont sauvegardés ou "
+"rechargés), et d'autres information de débogage. Par exemple ::"
#: ../../source/develop.rst:117
msgid ""
"You can add your own debug messages by running the ``Common.log`` method "
"from ``onionshare/common.py``. For example::"
msgstr ""
+"Vous pouvez rajouter vos propres messages de débogage en activant la méthode "
+"``Common.log`` depuis ``onionshare/common.py``. Par exemple ::"
#: ../../source/develop.rst:121
msgid ""
@@ -121,10 +149,13 @@ msgid ""
"using OnionShare, or the value of certain variables before and after they"
" are manipulated."
msgstr ""
+"Cela peut être utilise quand on apprend la succession des évènements qui se "
+"produisent lorsque l'on utilise OnionShare, ou la valeur de certaines "
+"variables avant et après qu'elles aient été manipulées."
#: ../../source/develop.rst:124
msgid "Local Only"
-msgstr ""
+msgstr "Uniquement en local"
#: ../../source/develop.rst:126
msgid ""
@@ -132,6 +163,9 @@ msgid ""
"altogether during development. You can do this with the ``--local-only`` "
"flag. For example::"
msgstr ""
+"Tor est lent, et il est souvent pratique d'éviter de démarrer les services "
+"ognons durant le développement. Vous pouvez faire ça avec le paramètre "
+"``--local-only``. Par exemple ::"
#: ../../source/develop.rst:164
msgid ""
@@ -142,7 +176,7 @@ msgstr ""
#: ../../source/develop.rst:167
msgid "Contributing Translations"
-msgstr ""
+msgstr "Contribuer aux traductions"
#: ../../source/develop.rst:169
msgid ""
@@ -152,20 +186,27 @@ msgid ""
"\"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if "
"needed."
msgstr ""
+"Aidez à rendre OnionShare plus facile à utiliser, plus familier et plus "
+"accueillant pour les gens en le traduisant sur `Hosted Weblate "
+"<https://hosted.weblate.org/projects/onionshare/>`_. Garder toujours le "
+"terme \"OnionShare\" en lettre latine, et utiliser \"OnionShare (nom local)\""
+" si nécessaire."
#: ../../source/develop.rst:171
msgid "To help translate, make a Hosted Weblate account and start contributing."
-msgstr ""
+msgstr "Pour aider à traduire, créez un compte Hosted Weblate et contribuer."
#: ../../source/develop.rst:174
msgid "Suggestions for Original English Strings"
-msgstr ""
+msgstr "Suggestions pour les lignes anglaises d'origine"
#: ../../source/develop.rst:176
msgid ""
"Sometimes the original English strings are wrong, or don't match between "
"the application and the documentation."
msgstr ""
+"Parfois les lignes anglaises de base sont fausses, ou ne correspondent pas "
+"entre l'application et la documentation."
#: ../../source/develop.rst:178
msgid ""
@@ -174,10 +215,15 @@ msgid ""
"developers see the suggestion, and can potentially modify the string via "
"the usual code review processes."
msgstr ""
+"Classer les améliorations sur les lignes sources en ajoutant @kingu à votre "
+"commentaire Weblate, ou en ouvrant une \"issue\" GitHub ou requête "
+"d'extraction. La dernière solution garanti que tout les développeurs en "
+"amont voient la suggestion, et puisse potentiellement modifier la ligne à "
+"travers les processus de vérification du code habituel."
#: ../../source/develop.rst:182
msgid "Status of Translations"
-msgstr ""
+msgstr "État des traductions"
#: ../../source/develop.rst:183
msgid ""
@@ -185,6 +231,9 @@ msgid ""
"in a language not yet started, please write to the mailing list: "
"onionshare-dev@lists.riseup.net"
msgstr ""
+"Voilà l'état actuel des traductions. Si vous voulez commencer une traduction "
+"dans une nouvelle langue, merci d'écrire à la liste de diffusion : "
+"onionshare-dev@lists.riseup.net"
#~ msgid ""
#~ "OnionShare is developed in Python. To"
@@ -401,4 +450,3 @@ msgstr ""
#~ msgid "Do the same for other untranslated lines."
#~ msgstr ""
-
diff --git a/docs/source/locale/fr/LC_MESSAGES/features.po b/docs/source/locale/fr/LC_MESSAGES/features.po
index 59dcea4c..68eecf05 100644
--- a/docs/source/locale/fr/LC_MESSAGES/features.po
+++ b/docs/source/locale/fr/LC_MESSAGES/features.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: EdwardCage <contact@edwardcage.pro>\n"
+"PO-Revision-Date: 2021-10-24 21:38+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -29,6 +29,9 @@ msgid ""
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
"<https://community.torproject.org/onion-services/>`_."
msgstr ""
+"Les serveurs web sont démarrés automatiquement sur votre ordinateur et "
+"rendus accessibles à autrui en tant que `service ognon <https://community."
+"torproject.org/onion-services/>`_ `Tor <https://www.torproject.org/>`_ ."
#: ../../source/features.rst:8
msgid ""
@@ -66,10 +69,15 @@ msgid ""
"Tor onion services too, it also protects your anonymity. See the "
":doc:`security design </security>` for more info."
msgstr ""
+"Parce que votre propre ordinateur est le serveur web, *aucun tiers ne peut "
+"accéder à ce qui se passe sur OnionShare*, pas même les développeurs "
+"d'OnionShare. C'est totalement confidentiel. Et parce que OnionShare est "
+"basé sur les services oignons Tor, cela protège aussi votre anonyma. Voir le "
+":doc:`security design </security>`pour plus d'information."
#: ../../source/features.rst:21
msgid "Share Files"
-msgstr ""
+msgstr "Partager des fichiers"
#: ../../source/features.rst:23
msgid ""
@@ -77,12 +85,19 @@ msgid ""
"anonymously. Open a share tab, drag in the files and folders you wish to "
"share, and click \"Start sharing\"."
msgstr ""
+"Vous pouvez utiliser OnionShare pour envoyer des fichiers et des dosiers à "
+"des personnes de manière sécurisé et anonyme. Ouvrez un onglet partage, "
+"déplacez dedans les fichiers et les dossiers que vous souhaitez partager, et "
+"cliquer \"Commencer à partager\"."
#: ../../source/features.rst:27 ../../source/features.rst:93
msgid ""
"After you add files, you'll see some settings. Make sure you choose the "
"setting you're interested in before you start sharing."
msgstr ""
+"Après avoir ajouté les fichiers, vous allez voir certains paramètres. Soyez "
+"certains de choisir les paramètres qui vous intéressent avant de commencer à "
+"partager."
#: ../../source/features.rst:31
msgid ""
@@ -99,6 +114,9 @@ msgid ""
"individual files you share rather than a single compressed version of all"
" the files."
msgstr ""
+"Aussi, si vous décochez cette case, les personnes seront capables de "
+"télécharger les fichiers individuels que vous partagez plutôt qu'une unique "
+"version compressée de tout les fichiers."
#: ../../source/features.rst:36
msgid ""
@@ -107,6 +125,11 @@ msgid ""
" website down. You can also click the \"↑\" icon in the top-right corner "
"to show the history and progress of people downloading files from you."
msgstr ""
+"Quand vous être prêt à partager, cliquer sur le bouton \"Commencer à "
+"partager\". Vous pouvez toujours cliquer \"Arrêter de partager\", ou quitter "
+"OnionShare, mettant immédiatement le site hors-ligne. Vous pouvez aussi "
+"cliquer l'icône \"↑\" dans le coin en haut à droite pour montrer "
+"l'historique et la progression des personnes qui téléchargent vos fichiers."
#: ../../source/features.rst:40
msgid ""
@@ -147,6 +170,9 @@ msgid ""
"You can also click the down \"↓\" icon in the top-right corner to show "
"the history and progress of people sending files to you."
msgstr ""
+"Vous pouvez aussi cliquer l'icône \"↓\" dans le coin en haut à droite pour "
+"montrer l'historique et la progression des personnes qui vous envoient des "
+"fichiers."
#: ../../source/features.rst:60
msgid "Here is what it looks like for someone sending you files."
@@ -168,10 +194,16 @@ msgid ""
"quite as secure version of `SecureDrop <https://securedrop.org/>`_, the "
"whistleblower submission system."
msgstr ""
+"Mettre en place un service de récupération OnionSare est utile pour les "
+"journalistes et celleux qui ont besoin d'accepter de manière sécurisée des "
+"documents depuis une source anonyme. Utilisé de cette manière, OnionShare "
+"est une sorte de plus légère, plus simple et pas aussi sécurisé version de `"
+"SecureDrop <https://securedrop.org/>`_, le système de soumission pour les "
+"lanceurs d'alerte."
#: ../../source/features.rst:69
msgid "Use at your own risk"
-msgstr ""
+msgstr "Utiliser à vos propres risques"
#: ../../source/features.rst:71
msgid ""
@@ -190,10 +222,16 @@ msgid ""
"<https://tails.boum.org/>`_ or in a `Qubes <https://qubes-os.org/>`_ "
"disposableVM."
msgstr ""
+"Si vous recevez un document Office ou un PDF depuis OnionShare, vous pouvez "
+"convertir ces documents en PDFs qui sont sans danger à ouvrir en utilisant `"
+"Dangerzone <https://dangerzone.rocks/>`_. Vous pouvez aussi vous protéger en "
+"ouvrant ces documents non approuvé en les ouvrant dans `Tails <https://tails."
+"boum.org/>`_ ou dans machine virtuel jetable `Qubes <https://qubes-os.org/"
+">`_."
#: ../../source/features.rst:76
msgid "Tips for running a receive service"
-msgstr ""
+msgstr "Conseils pour faire tourner un service de réception"
#: ../../source/features.rst:78
msgid ""
@@ -212,7 +250,7 @@ msgstr ""
#: ../../source/features.rst:83
msgid "Host a Website"
-msgstr ""
+msgstr "Héberger un site web"
#: ../../source/features.rst:85
msgid ""
@@ -220,6 +258,10 @@ msgid ""
"the files and folders that make up the static content there, and click "
"\"Start sharing\" when you are ready."
msgstr ""
+"Pour héberger un site internet HTML statique avec OnionShare, ouvrez un "
+"onglet site internet, déplacez les fichiers et dossiers qui composeront le "
+"contenu statique dedans, et cliquez sur \"Commencer à partager\" quand vous "
+"êtes prêt."
#: ../../source/features.rst:89
msgid ""
@@ -230,6 +272,13 @@ msgid ""
"websites that execute code or use databases. So you can't for example use"
" WordPress.)"
msgstr ""
+"Si vous ajoutez un fichier ``index.html``, cela sera généré quand quelqu'un "
+"chargera votre site. Vous pouvez aussi inclure n'importe quel autre type de "
+"fichiers HTML, CSS ou JavaScript, ainsi que des images pour faire votre "
+"site. (Notez que OnionShare ne supporte que l'hébergement de sites internets "
+"\"statique\". Il ne peut pas héberger des sites internets qui éxécute du "
+"code ou utilise des bases de données. Ainsi vous ne pouvez pas utilisez "
+"WordPress.)"
#: ../../source/features.rst:91
msgid ""
@@ -237,10 +286,13 @@ msgid ""
"listing instead, and people loading it can look through the files and "
"download them."
msgstr ""
+"Si vous n'avez pas un fichier ``index.html``, cela montrera une liste des "
+"répertoires à la place, et les personnes le chargeant pourront parcourir les "
+"fichiers et les télécharger."
#: ../../source/features.rst:98
msgid "Content Security Policy"
-msgstr ""
+msgstr "Politique de sécurité du contenu"
#: ../../source/features.rst:100
msgid ""
@@ -258,10 +310,14 @@ msgid ""
"Policy header (allows your website to use third-party resources)\" box "
"before starting the service."
msgstr ""
+"Si vous voulez charger du contenu depuis des sites internets tiers, comme "
+"des \"assets\" ou des bibliothèque JavaScript depuis des CDNs, vérifiez la "
+"case « Ne pas envoyer d’en-tête Politique de sécurité de contenu (permet à "
+"votre site Web d’utiliser des ressources tierces »."
#: ../../source/features.rst:105
msgid "Tips for running a website service"
-msgstr ""
+msgstr "Conseils pour faire fonctionner un site web de service"
#: ../../source/features.rst:107
msgid ""
@@ -281,13 +337,16 @@ msgstr ""
#: ../../source/features.rst:113
msgid "Chat Anonymously"
-msgstr ""
+msgstr "Discuter anonymement"
#: ../../source/features.rst:115
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
+"Vous pouvez utilisez OnionShare pour mettre en place une salle de discussion "
+"privée et sécurisée qui n'enregistre rien. Ouvez juste un onglet discussion "
+"et cliquer \"Lancer le serveur de discussion\"."
#: ../../source/features.rst:119
msgid ""
@@ -304,6 +363,11 @@ msgid ""
"participate must have their Tor Browser security level set to "
"\"Standard\" or \"Safer\", instead of \"Safest\"."
msgstr ""
+"Les gens peuvent rejoindre la salle de discussion en chargeant l'adresse "
+"OnionShare dans le navigateur Tor. La salle de discussion nécessite "
+"JavaScript, celleux qui souhaitent rejoindre la salle de discussion doivent "
+"mettre le niveau de sécurité de leur navigateur Tor à « Normal » ou « Plus "
+"sûr », à la place de « Le plus sûr »."
#: ../../source/features.rst:127
msgid ""
@@ -312,12 +376,20 @@ msgid ""
"and pressing ↵. Since the chat history isn't saved anywhere, it doesn't "
"get displayed at all, even if others were already chatting in the room."
msgstr ""
+"Quand une personne rejoint la salle de discussion, elle reçoit un nom "
+"aléatoire. Elle peut changer son nom en tapant un nouveau nom dans l'espace "
+"à gauche et en pressant ↵. Comme l'historique de la discussion n'est "
+"enregistré nulle part, il n'est pas du tout affiché, même si d'autres "
+"personnes étaient déjà en train de discuter dans la salle."
#: ../../source/features.rst:133
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
msgstr ""
+"Dans une salle de discussion OnionShare, tout le monde est anonyme. "
+"N'importe qui peut changer son nom en n'importe quoi, et il n'y a aucun "
+"moyen de vérifier l'identité de quiconque."
#: ../../source/features.rst:136
msgid ""
@@ -326,16 +398,23 @@ msgid ""
"messages, you can be reasonably confident the people joining the chat "
"room are your friends."
msgstr ""
+"Malgré cela, si vous créer une salle de discussion OnionShare et envoyer "
+"l'adresse de manière sécurisée à un petit groupe d'amies de confiance en "
+"utilisant des messages chiffrées, vous pouvez être raisonnablement confiant "
+"dans le fait que les personnes rejoignant la salle de discussion sont vos "
+"amies."
#: ../../source/features.rst:139
msgid "How is this useful?"
-msgstr ""
+msgstr "En quoi ceci est-il utile ?"
#: ../../source/features.rst:141
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
msgstr ""
+"Si vous avez besoin de déjà utiliser une messagerie chiffrée, quel est le "
+"point du salle de discussion OnionShare ? Cela laisse moins de traces."
#: ../../source/features.rst:143
msgid ""
@@ -361,7 +440,7 @@ msgstr ""
#: ../../source/features.rst:150
msgid "How does the encryption work?"
-msgstr ""
+msgstr "Comment marche le chiffrement ?"
#: ../../source/features.rst:152
msgid ""
@@ -372,12 +451,20 @@ msgid ""
"other members of the chat room using WebSockets, through their E2EE onion"
" connections."
msgstr ""
+"Parce que OnionShare repose sur les services ognon de Tor, la connexion "
+"entre le navigateur Tor et OnionShare sont toutes chiffrées de bout-à-bout "
+"(E2EE). Quand quelqu'un poste un message dans une discussion OnionShare, le "
+"message est envoyé au serveur à travers la connexion ognon E2EE, qui l’envoi "
+"ensuite à tout les autres membres de la salle de discussion en utilisant "
+"WebSockets, à travers leurs connexions oignon E2EE."
#: ../../source/features.rst:154
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
msgstr ""
+"OnionShare n'implémente aucun chiffrement de lui même. A la place, il "
+"utilise le chiffrement des services ognon Tor."
#~ msgid "How OnionShare works"
#~ msgstr ""
diff --git a/docs/source/locale/fr/LC_MESSAGES/help.po b/docs/source/locale/fr/LC_MESSAGES/help.po
index 6247d1c5..bd870673 100644
--- a/docs/source/locale/fr/LC_MESSAGES/help.po
+++ b/docs/source/locale/fr/LC_MESSAGES/help.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: 5IGI0 <5IGI0@protonmail.com>\n"
+"PO-Revision-Date: 2021-10-21 05:01+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -25,17 +25,20 @@ msgstr "Obtenir de l'aide"
#: ../../source/help.rst:5
msgid "Read This Website"
-msgstr ""
+msgstr "Lire ce site Web"
#: ../../source/help.rst:7
msgid ""
"You will find instructions on how to use OnionShare. Look through all of "
"the sections first to see if anything answers your questions."
msgstr ""
+"Vous trouverez ici des informations sur comment utiliser OnionShare. "
+"Regardez les autres parties d'abord afin de voir si vos questions n'ont pas "
+"déjà été répondues."
#: ../../source/help.rst:10
msgid "Check the GitHub Issues"
-msgstr ""
+msgstr "Vérifiez les signalement de problèmes sur GitHub (GitHub Issues)"
#: ../../source/help.rst:12
msgid ""
@@ -47,7 +50,7 @@ msgstr ""
#: ../../source/help.rst:15
msgid "Submit an Issue Yourself"
-msgstr ""
+msgstr "Signaler un problème"
#: ../../source/help.rst:17
msgid ""
@@ -60,13 +63,15 @@ msgstr ""
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
-msgstr ""
+msgstr "Rejoindre notre équipe Keybase"
#: ../../source/help.rst:22
msgid ""
"See :ref:`collaborating` on how to join the Keybase team used to discuss "
"the project."
msgstr ""
+"Voir :ref:`collaborer` sur comment rejoindre l'équipe Keybase utilisée pour "
+"discuter du projet."
#~ msgid "If you need help with OnionShare, please follow the instructions below."
#~ msgstr ""
diff --git a/docs/source/locale/fr/LC_MESSAGES/install.po b/docs/source/locale/fr/LC_MESSAGES/install.po
index af2c1017..324c441b 100644
--- a/docs/source/locale/fr/LC_MESSAGES/install.po
+++ b/docs/source/locale/fr/LC_MESSAGES/install.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: 5IGI0 <5IGI0@protonmail.com>\n"
+"PO-Revision-Date: 2021-10-24 21:38+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -32,8 +32,8 @@ msgid ""
"You can download OnionShare for Windows and macOS from the `OnionShare "
"website <https://onionshare.org/>`_."
msgstr ""
-"Vous pouvez télécharger OnionShare sur Windows et macOS sur `le site "
-"d'OnionShare <https://onionshare.org/>`_."
+"Vous pouvez télécharger OnionShare pour Windows et macOS depuis le `site web "
+"OnionShare <https://onionshare.org/>`_."
#: ../../source/install.rst:12
msgid "Install in Linux"
@@ -57,26 +57,34 @@ msgid ""
"Snap support is built-in to Ubuntu and Fedora comes with Flatpak support,"
" but which you use is up to you. Both work in all Linux distributions."
msgstr ""
+"Snap est supporté de manière native dans Ubuntu et Fedora intègre Flatpak, "
+"mais c'est à vous de décider lequel vous souhaitez utiliser. Les deux "
+"marchent sur toutes les distributions Linux."
#: ../../source/install.rst:19
msgid ""
"**Install OnionShare using Flatpak**: "
"https://flathub.org/apps/details/org.onionshare.OnionShare"
msgstr ""
+"**Installer OnionShare en utilisant Flatpak** : https://flathub.org/apps/"
+"details/org.onionshare.OnionShare"
#: ../../source/install.rst:21
msgid "**Install OnionShare using Snap**: https://snapcraft.io/onionshare"
msgstr ""
+"**Installer OnionShare en utilisant Snap** : https://snapcraft.io/onionshare"
#: ../../source/install.rst:23
msgid ""
"You can also download and install PGP-signed ``.flatpak`` or ``.snap`` "
"packages from https://onionshare.org/dist/ if you prefer."
msgstr ""
+"Vous pouvez aussi télécharger et installer des paquets ``.flatpak`` ou ``."
+"snap`` signé avec PGP depuis https://onionshare.org/dist/ si vous préférer."
#: ../../source/install.rst:28
msgid "Verifying PGP signatures"
-msgstr ""
+msgstr "Vérifier les signatures PGP"
#: ../../source/install.rst:30
msgid ""
@@ -86,10 +94,15 @@ msgid ""
"binaries include operating system-specific signatures, and you can just "
"rely on those alone if you'd like."
msgstr ""
+"Vous pouvez vérifier que les paquets que vous téléchargés n'ont pas été "
+"falsifiés en vérifiant la signature PGP. Pour Windows et macOS, cette étape "
+"est optionnelle et procure une défense en profondeur : les exécutables "
+"OnionShare incluent des signatures spécifiques aux systèmes, et vous pouvez "
+"vous reposer uniquement sur celles-là si vous le souhaitez."
#: ../../source/install.rst:34
msgid "Signing key"
-msgstr ""
+msgstr "Clé de signature"
#: ../../source/install.rst:36
msgid ""
@@ -99,6 +112,11 @@ msgid ""
"<https://keys.openpgp.org/vks/v1/by-"
"fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73>`_."
msgstr ""
+"Les paquets sont signés par Micah Lee, développeur principal, utilisant sa "
+"clé PGP publique ayant comme empreinte "
+"``927F419D7EC82C2F149C1BD1403C2657CD994F73``. Vous pouvez téléchargez sa clé "
+"`depuis le serveur de clé openpgp.org. <https://keys.openpgp.org/vks/v1/"
+"by-fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73>`_."
#: ../../source/install.rst:38
msgid ""
@@ -106,10 +124,13 @@ msgid ""
"probably want `GPGTools <https://gpgtools.org/>`_, and for Windows you "
"probably want `Gpg4win <https://www.gpg4win.org/>`_."
msgstr ""
+"Vous devez avoir installé GnuPG pour vérifier les signatures. Pour macOS, "
+"vous voudrez probablement utilisé `GPGTools <https://gpgtools.org/>`_, et "
+"pour Windows `Gpg4win <https://www.gpg4win.org/>`_."
#: ../../source/install.rst:41
msgid "Signatures"
-msgstr ""
+msgstr "Signatures"
#: ../../source/install.rst:43
msgid ""
@@ -119,10 +140,15 @@ msgid ""
"OnionShare. You can also find them on the `GitHub Releases page "
"<https://github.com/micahflee/onionshare/releases>`_."
msgstr ""
+"Vous pouvez trouver les signatures (en tant fichiers \".asc\"), ainsi que "
+"les fichiers Windows, macOS, Flatpak, Snap et sources, à https://onionshare."
+"org/dist/ in les dossiers correspondants à chaque version d'OnionShare. Vous "
+"pouvez aussi les trouvez sur `la page des versions GitHub <https://github."
+"com/micahflee/onionshare/releases>`_."
#: ../../source/install.rst:47
msgid "Verifying"
-msgstr ""
+msgstr "Vérifier"
#: ../../source/install.rst:49
msgid ""
@@ -130,10 +156,13 @@ msgid ""
"downloaded the binary and and ``.asc`` signature, you can verify the "
"binary for macOS in a terminal like this::"
msgstr ""
+"Une fois que vous avez importé la clé publique de Micah dans votre porte-clé "
+"GnuPG, télécharger l'exécutable et la signature \".asc\", vous pouvez "
+"vérifier l’exécutable pour macOS dans un terminal comme ceci ::"
#: ../../source/install.rst:53
msgid "Or for Windows, in a command-prompt like this::"
-msgstr ""
+msgstr "Ou pour Windows, dans l'invite de commande comme ceci : :"
#: ../../source/install.rst:57
msgid "The expected output looks like this::"
@@ -158,7 +187,7 @@ msgstr ""
"Si vous voulez en apprendre plus sur la vérification des signatures PGP, le "
"guide de `Qubes OS <https://www.qubes-os.org/security/verifying-signatures/>`"
"_ et du `Projet Tor <https://support.torproject.org/tbb/"
-"how-to-verify-signature/>`_ peuvent être utiles."
+"how-to-verify-signature/>`_ peuvent être utiles."
#~ msgid "Install on Windows or macOS"
#~ msgstr ""
diff --git a/docs/source/locale/fr/LC_MESSAGES/tor.po b/docs/source/locale/fr/LC_MESSAGES/tor.po
index 5c1763f6..1218b25d 100644
--- a/docs/source/locale/fr/LC_MESSAGES/tor.po
+++ b/docs/source/locale/fr/LC_MESSAGES/tor.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: 2021-05-21 21:32+0000\n"
-"Last-Translator: AO Localisation Lab <ao@localizationlab.org>\n"
+"PO-Revision-Date: 2021-10-22 20:45+0000\n"
+"Last-Translator: aezjrareareare <jeromechaland@riseup.net>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -164,10 +164,18 @@ msgid ""
"Connection to Tor\" button. If all goes well, you should see \"Connected "
"to the Tor controller\"."
msgstr ""
+"Ouvrez OnionShare et cliquer l'icône \"⚙\". Dessous « Comment OnionShare "
+"devrait-il se connecter à Tor ? » choisissez « Se connecter en utilisant le "
+"port de contrôle », et configurez « Port de contrôle » à ``127.0.0.1`` et « "
+"Port » à ``9051``. En dessous de « Paramètres d’authentification de Tor » "
+"choisissez « Mot de passe » et définissez le mot de passe du port de "
+"contrôle que vous avez sélectionné au-dessus. Cliquer sur le bouton « Tester "
+"la connexion à Tor ». Si tout se passe bien, vous devriez voir « Vous êtes "
+"connecté au contrôleur Tor. »."
#: ../../source/tor.rst:61
msgid "Using a system ``tor`` in macOS"
-msgstr ""
+msgstr "Utilisez un système ``tor`` sur macOS"
#: ../../source/tor.rst:63
msgid ""
@@ -220,6 +228,10 @@ msgid ""
"`official repository <https://support.torproject.org/apt/tor-deb-"
"repo/>`_."
msgstr ""
+"Tout d'abord, installez le paquet ``tor``. Si vous utilisez Debian, Ubuntu, "
+"ou une distribution Linux similaire, il est recommandé d'utilisé le `"
+"répertoire officiel <https://support.torproject.org/apt/tor-deb-repo/>`_ du "
+"projet Tor."
#: ../../source/tor.rst:91
msgid ""
@@ -227,12 +239,18 @@ msgid ""
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
"connect to your system ``tor``'s control socket file."
msgstr ""
+"Ensuite, ajoutez votre utilisateur au groupe qui peut faire tourner le "
+"processus ``tor`` (dans le cas de Debian et Ubuntu, ``debian-tor`) et "
+"configurez OnionShare pour se connecter au fichier de contrôle de "
+"l'interface de connexion de votre système ``tor``."
#: ../../source/tor.rst:93
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
msgstr ""
+"Ajoutez votre utilisateur au groupe ``debian-tor`` en exécutant cette "
+"commande (remplacez ``username`` par votre nom d'utilisateur) ::"
#: ../../source/tor.rst:97
msgid ""
@@ -243,10 +261,17 @@ msgid ""
"\"No authentication, or cookie authentication\". Click the \"Test "
"Connection to Tor\" button."
msgstr ""
+"Redémarrez votre ordinateur. Après qu'il ait redémarré, ouvrez OnionShare et "
+"cliquer l'icône \"⚙\". Dessous « Comment OnionShare devrait-il se connecter "
+"à Tor ? » choisissez « Se connecter en utilisant un fichier d’interface de "
+"connexion ». Définissez le fichier d’interface de connexion comme étant ``/"
+"var/run/tor/control``. En dessous de « Paramètres d’authentification de Tor »"
+" choisissez « Pas d’authentification, ou authentification par témoin ». "
+"Cliquer sur le bouton « Tester la connexion à Tor »."
#: ../../source/tor.rst:107
msgid "Using Tor bridges"
-msgstr ""
+msgstr "Utilisez les ponts Tor"
#: ../../source/tor.rst:109
msgid ""
@@ -267,6 +292,11 @@ msgid ""
"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
"need to use a bridge, try the built-in obfs4 ones first."
msgstr ""
+"Vous pouvez utiliser les transports enfichables fournis dans obfs4, ceux "
+"fournis dans les transports enfichables meek_lite (Azure), ou des ponts "
+"personnalisés, que vous pouvez obtenir depuis `la base de données des ponts "
+"Tor <https://bridges.torproject.org/>`_. Si vous avez besoin d'utiliser un "
+"pont, essayer ceux fournis dans obfs4 en premier."
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
diff --git a/docs/source/locale/gl/LC_MESSAGES/develop.po b/docs/source/locale/gl/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..4b9cca53
--- /dev/null
+++ b/docs/source/locale/gl/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/gu/LC_MESSAGES/develop.po b/docs/source/locale/gu/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..d78443dc
--- /dev/null
+++ b/docs/source/locale/gu/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: gu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/hu/LC_MESSAGES/develop.po b/docs/source/locale/hu/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..177bb74a
--- /dev/null
+++ b/docs/source/locale/hu/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/id/LC_MESSAGES/advanced.po b/docs/source/locale/id/LC_MESSAGES/advanced.po
new file mode 100644
index 00000000..3da1e968
--- /dev/null
+++ b/docs/source/locale/id/LC_MESSAGES/advanced.po
@@ -0,0 +1,129 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-09-09 19:49-0700\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/advanced.rst:2
+msgid "Advanced Usage"
+msgstr ""
+
+#: ../../source/advanced.rst:7
+msgid "Save Tabs"
+msgstr ""
+
+#: ../../source/advanced.rst:9
+msgid "Everything in OnionShare is temporary by default. If you close an OnionShare tab, its address no longer exists and it can't be used again. Sometimes you might want an OnionShare service to be persistent. This is useful if you want to host a website available from the same OnionShare address even if you reboot your computer."
+msgstr ""
+
+#: ../../source/advanced.rst:13
+msgid "To make any tab persistent, check the \"Save this tab, and automatically open it when I open OnionShare\" box before starting the server. When a tab is saved a purple pin icon appears to the left of its server status."
+msgstr ""
+
+#: ../../source/advanced.rst:18
+msgid "When you quit OnionShare and then open it again, your saved tabs will start opened. You'll have to manually start each service, but when you do they will start with the same OnionShare address and private key."
+msgstr ""
+
+#: ../../source/advanced.rst:21
+msgid "If you save a tab, a copy of that tab's onion service secret key will be stored on your computer with your OnionShare settings."
+msgstr ""
+
+#: ../../source/advanced.rst:26
+msgid "Turn Off Private Key"
+msgstr ""
+
+#: ../../source/advanced.rst:28
+msgid "By default, all OnionShare services are protected with a private key, which Tor calls \"client authentication\"."
+msgstr ""
+
+#: ../../source/advanced.rst:30
+msgid "When browsing to an OnionShare service in Tor Browser, Tor Browser will prompt for the private key to be entered."
+msgstr ""
+
+#: ../../source/advanced.rst:32
+msgid "Sometimes you might want your OnionShare service to be accessible to the public, like if you want to set up an OnionShare receive service so the public can securely and anonymously send you files. In this case, it's better to disable the private key altogether."
+msgstr ""
+
+#: ../../source/advanced.rst:35
+msgid "To turn off the private key for any tab, check the \"This is a public OnionShare service (disables private key)\" box before starting the server. Then the server will be public and won't need a private key to view in Tor Browser."
+msgstr ""
+
+#: ../../source/advanced.rst:40
+msgid "Custom Titles"
+msgstr ""
+
+#: ../../source/advanced.rst:42
+msgid "By default, when people load an OnionShare service in Tor Browser they see the default title for the type of service. For example, the default title of a chat service is \"OnionShare Chat\"."
+msgstr ""
+
+#: ../../source/advanced.rst:44
+msgid "If you want to choose a custom title, set the \"Custom title\" setting before starting a server."
+msgstr ""
+
+#: ../../source/advanced.rst:47
+msgid "Scheduled Times"
+msgstr ""
+
+#: ../../source/advanced.rst:49
+msgid "OnionShare supports scheduling exactly when a service should start and stop. Before starting a server, click \"Show advanced settings\" in its tab and then check the boxes next to either \"Start onion service at scheduled time\", \"Stop onion service at scheduled time\", or both, and set the respective desired dates and times."
+msgstr ""
+
+#: ../../source/advanced.rst:52
+msgid "If you scheduled a service to start in the future, when you click the \"Start sharing\" button you will see a timer counting down until it starts. If you scheduled it to stop in the future, after it's started you will see a timer counting down to when it will stop automatically."
+msgstr ""
+
+#: ../../source/advanced.rst:55
+msgid "**Scheduling an OnionShare service to automatically start can be used as a dead man's switch**, where your service will be made public at a given time in the future if anything happens to you. If nothing happens to you, you can cancel the service before it's scheduled to start."
+msgstr ""
+
+#: ../../source/advanced.rst:60
+msgid "**Scheduling an OnionShare service to automatically stop can be useful to limit exposure**, like if you want to share secret documents while making sure they're not available on the internet for more than a few days."
+msgstr ""
+
+#: ../../source/advanced.rst:67
+msgid "Command-line Interface"
+msgstr ""
+
+#: ../../source/advanced.rst:69
+msgid "In addition to its graphical interface, OnionShare has a command-line interface."
+msgstr ""
+
+#: ../../source/advanced.rst:71
+msgid "You can install just the command-line version of OnionShare using ``pip3``::"
+msgstr ""
+
+#: ../../source/advanced.rst:75
+msgid "Note that you will also need the ``tor`` package installed. In macOS, install it with: ``brew install tor``"
+msgstr ""
+
+#: ../../source/advanced.rst:77
+msgid "Then run it like this::"
+msgstr ""
+
+#: ../../source/advanced.rst:81
+msgid "For information about installing it on different operating systems, see the `CLI readme file <https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ in the git repository."
+msgstr ""
+
+#: ../../source/advanced.rst:83
+msgid "If you installed OnionShare using the Linux Snapcraft package, you can also just run ``onionshare.cli`` to access the command-line interface version."
+msgstr ""
+
+#: ../../source/advanced.rst:86
+msgid "Usage"
+msgstr ""
+
+#: ../../source/advanced.rst:88
+msgid "You can browse the command-line documentation by running ``onionshare --help``::"
+msgstr ""
diff --git a/docs/source/locale/ja/LC_MESSAGES/advanced.po b/docs/source/locale/ja/LC_MESSAGES/advanced.po
index 8b9457ea..31b78cde 100644
--- a/docs/source/locale/ja/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/ja/LC_MESSAGES/advanced.po
@@ -3,27 +3,29 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2022-01-11 05:54+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10.1\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/advanced.rst:2
msgid "Advanced Usage"
-msgstr ""
+msgstr "先進の使用"
#: ../../source/advanced.rst:7
msgid "Save Tabs"
-msgstr ""
+msgstr "タブを保存する"
#: ../../source/advanced.rst:9
msgid ""
@@ -33,6 +35,9 @@ msgid ""
"useful if you want to host a website available from the same OnionShare "
"address even if you reboot your computer."
msgstr ""
+"OnionShareのデフォルト設定では、全ての機能は一時的です。OnionShareタブを閉じると、そのアドレスは消えて再びに使えません。場合によっては"
+"永続的なOnionShareサービスが必要かもしれない。例えばパソコンを再起動しても、永続的なアドレスでOnionShareウェブサイトをホストしたい場合"
+"には役立つでしょう。"
#: ../../source/advanced.rst:13
msgid ""
@@ -40,6 +45,8 @@ msgid ""
"open it when I open OnionShare\" box before starting the server. When a "
"tab is saved a purple pin icon appears to the left of its server status."
msgstr ""
+"タブを永続的にするのに、サービスを実行する前に「このタブを保存し、OnionShareがスタートアップの時に自動的に開く」というボックスをチェックする。保"
+"存された場合、紫色のピンはタブの左側に表示されます。"
#: ../../source/advanced.rst:18
msgid ""
@@ -52,7 +59,7 @@ msgstr ""
msgid ""
"If you save a tab, a copy of that tab's onion service secret key will be "
"stored on your computer with your OnionShare settings."
-msgstr ""
+msgstr "タブを保存すると、そのonionサービスの秘密鍵はOnionShare設定と一緒にパソコンに保存されます。"
#: ../../source/advanced.rst:26
msgid "Turn Off Passwords"
@@ -85,7 +92,7 @@ msgstr ""
#: ../../source/advanced.rst:38
msgid "Scheduled Times"
-msgstr ""
+msgstr "予定した時間"
#: ../../source/advanced.rst:40
msgid ""
@@ -95,6 +102,9 @@ msgid ""
"scheduled time\", \"Stop onion service at scheduled time\", or both, and "
"set the respective desired dates and times."
msgstr ""
+"OnionShareでは、サービスの開始・停止する時間を予定することができます。サーバーを起動する前に、そのタブに「詳細設定を表示」をクリックして、「 "
+"指定の日時にonionサービスを起動する 」または「 指定の日時にonionサービスを停止する "
+"」それとも両方のボックスをチェックして、希望日時を入力する。"
#: ../../source/advanced.rst:43
msgid ""
@@ -103,6 +113,9 @@ msgid ""
"starts. If you scheduled it to stop in the future, after it's started you"
" will see a timer counting down to when it will stop automatically."
msgstr ""
+"サービスを将来に起動するよう設定した場合、「 共有を開始 "
+"」ボタンをクリックすると開始時間までの減算カウンターが表示されます。将来に停止するよう設定した場合、「 共有を開始 "
+"」ボタンをクリックすると普通に開始して、停止する時間までの減算カウンターは表示されます。"
#: ../../source/advanced.rst:46
msgid ""
@@ -111,6 +124,8 @@ msgid ""
"time in the future if anything happens to you. If nothing happens to you,"
" you can cancel the service before it's scheduled to start."
msgstr ""
+"**自動的な起動を予定することで、OnionShareのサービスを「デッドマン装置」として使えます。** "
+"最悪の事態が起きた場合、特定時間にサービスは自動的に立ち上がります。何も起きなかったら、立ち上がる時点の前に停止できます。"
#: ../../source/advanced.rst:51
msgid ""
@@ -122,29 +137,31 @@ msgstr ""
#: ../../source/advanced.rst:56
msgid "Command-line Interface"
-msgstr ""
+msgstr "コマンドライン・インターフェース"
#: ../../source/advanced.rst:58
msgid ""
"In addition to its graphical interface, OnionShare has a command-line "
"interface."
-msgstr ""
+msgstr "グラフィカル・インターフェースに加えて、OnionShareにはコマンドライン・インターフェースがあります。"
#: ../../source/advanced.rst:60
msgid ""
"You can install just the command-line version of OnionShare using "
"``pip3``::"
-msgstr ""
+msgstr "``pip3``:: を利用して、OnionShareのコマンドライン版のみをインストールできます。"
#: ../../source/advanced.rst:64
msgid ""
"Note that you will also need the ``tor`` package installed. In macOS, "
"install it with: ``brew install tor``"
msgstr ""
+"``tor`` パッケージもインストールする必要があるとご了承ください。macOSの場合は ``brew install tor`` "
+"でインストールできます"
#: ../../source/advanced.rst:66
msgid "Then run it like this::"
-msgstr ""
+msgstr "そして以下のコマンドで実行できます ::"
#: ../../source/advanced.rst:70
msgid ""
@@ -152,16 +169,18 @@ msgid ""
"also just run ``onionshare.cli`` to access the command-line interface "
"version."
msgstr ""
+"LinuxのSnapcraftパッケージでOnionShareをインストールした場合、``onionshare.cli`` "
+"を実行するだけでコマンドライン・インターフェイスをアクセスできます。"
#: ../../source/advanced.rst:73
msgid "Usage"
-msgstr ""
+msgstr "使用方法"
#: ../../source/advanced.rst:75
msgid ""
"You can browse the command-line documentation by running ``onionshare "
"--help``::"
-msgstr ""
+msgstr "コマンドラインのドキュメンテーションを閲覧するには、 ``onionshare --help``::"
#: ../../source/advanced.rst:132
msgid "Legacy Addresses"
@@ -401,4 +420,3 @@ msgstr ""
#~ " services will soon be removed from"
#~ " OnionShare as well."
#~ msgstr ""
-
diff --git a/docs/source/locale/ja/LC_MESSAGES/features.po b/docs/source/locale/ja/LC_MESSAGES/features.po
index e71451fb..912833f1 100644
--- a/docs/source/locale/ja/LC_MESSAGES/features.po
+++ b/docs/source/locale/ja/LC_MESSAGES/features.po
@@ -3,23 +3,25 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-12-10 02:52+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
msgid "How OnionShare Works"
-msgstr ""
+msgstr "OnionShareの仕組みの説明"
#: ../../source/features.rst:6
msgid ""
@@ -27,6 +29,9 @@ msgid ""
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
"<https://community.torproject.org/onion-services/>`_."
msgstr ""
+"ウェブサーバーが自宅のパソコンでローカルに作られ、`Tor <https://www.torproject.org/>`_ネットワーク上で "
+"`「オニオン・サービス」 <https://community.torproject.org/onion-services/"
+">`_として閲覧できるようにされます。."
#: ../../source/features.rst:8
msgid ""
@@ -64,10 +69,13 @@ msgid ""
"Tor onion services too, it also protects your anonymity. See the "
":doc:`security design </security>` for more info."
msgstr ""
+"ウェブサーバーは自宅のパソコンだからこそ、開発者さえも、*第三者はOnionShare内のコンテンツにアクセスできない。*完全にプライベートです。そしてO"
+"nionShareはTorのオニオン・サービスに基づいているので、匿名性も守られています。詳しくは「`security design "
+"</security>`」という:doc:を訪れて下さい。"
#: ../../source/features.rst:21
msgid "Share Files"
-msgstr ""
+msgstr "ファイルを共有"
#: ../../source/features.rst:23
msgid ""
@@ -75,12 +83,14 @@ msgid ""
"anonymously. Open a share tab, drag in the files and folders you wish to "
"share, and click \"Start sharing\"."
msgstr ""
+"OnionShareで、ファイルやフォルダーを安全そして匿名で他の人と共有できます。共有タブを開いて、共有したいファイルをドラッグアンドドロップして、「共"
+"有を開始」をクリックする。"
#: ../../source/features.rst:27 ../../source/features.rst:93
msgid ""
"After you add files, you'll see some settings. Make sure you choose the "
"setting you're interested in before you start sharing."
-msgstr ""
+msgstr "ファイルを追加したら、設定は表示されます。共有を開始する前に、ふさわしい設定を選択して下さい。"
#: ../../source/features.rst:31
msgid ""
@@ -96,7 +106,7 @@ msgid ""
"Also, if you uncheck this box, people will be able to download the "
"individual files you share rather than a single compressed version of all"
" the files."
-msgstr ""
+msgstr "このチェックを外すと、全ファイルの圧縮された版ではなく各ファイルを別々にダウンロードできるようにします。"
#: ../../source/features.rst:36
msgid ""
@@ -105,6 +115,8 @@ msgid ""
" website down. You can also click the \"↑\" icon in the top-right corner "
"to show the history and progress of people downloading files from you."
msgstr ""
+"共有の始めたい時に、「共有を開始」ボタンをクリックして下さい。いつでも「共有を停止」ボタンをクリックしたら、もしくはOnionShareを閉じたらウェブサ"
+"イトは停止されます。右上にある「↑」ボタンをクリックすると、ファイルのダウンロード状態・歴史は表示されます。"
#: ../../source/features.rst:40
msgid ""
@@ -144,7 +156,7 @@ msgstr ""
msgid ""
"You can also click the down \"↓\" icon in the top-right corner to show "
"the history and progress of people sending files to you."
-msgstr ""
+msgstr "右上にある「↓」ボタンをクリックすると、ファイルのアップロード状態・歴史は表示されます。"
#: ../../source/features.rst:60
msgid "Here is what it looks like for someone sending you files."
@@ -166,10 +178,13 @@ msgid ""
"quite as secure version of `SecureDrop <https://securedrop.org/>`_, the "
"whistleblower submission system."
msgstr ""
+"OnionShareのファイル受信サービスは匿名情報筋から安全に文書を受け入るのにジャーナリストなどに役立つでしょう。このように使うと、OnionShar"
+"eはライトウェイト、単純、そして安全性の少し低い`SecureDrop <https://securedrop.org/"
+">`_(安全に匿名情報源から情報を入手するためのシステム)の代替品になります。"
#: ../../source/features.rst:69
msgid "Use at your own risk"
-msgstr ""
+msgstr "自己責任で使って下さい"
#: ../../source/features.rst:71
msgid ""
@@ -188,10 +203,13 @@ msgid ""
"<https://tails.boum.org/>`_ or in a `Qubes <https://qubes-os.org/>`_ "
"disposableVM."
msgstr ""
+"OnionShareでオフィス文書やPDFを受信する場合、`Dangerzone <https://dangerzone.rocks/"
+">`_を使って安全に開けるようなPDFファイルに変換できます。さらに、`Tails <https://tails.boum.org/>`_または`"
+"Qubes <https://qubes-os.org/>`_ の使い捨て仮想マシンを使ってより安全に信頼できないファイルを開くことができます。"
#: ../../source/features.rst:76
msgid "Tips for running a receive service"
-msgstr ""
+msgstr "ファイル受信サービスを管理するアドバイス"
#: ../../source/features.rst:78
msgid ""
@@ -210,7 +228,7 @@ msgstr ""
#: ../../source/features.rst:83
msgid "Host a Website"
-msgstr ""
+msgstr "ウェブサイトをホストする"
#: ../../source/features.rst:85
msgid ""
@@ -218,6 +236,8 @@ msgid ""
"the files and folders that make up the static content there, and click "
"\"Start sharing\" when you are ready."
msgstr ""
+"OnionShareでスタティック型のウェブサイトをホストするのに、ウェブサイトのタブを開いて、スタティック型のコンテンツが含まれるファイルやフォルダーを"
+"ドラッグアンドドロップして、そして「共有を開始」をクリックする。"
#: ../../source/features.rst:89
msgid ""
@@ -228,17 +248,20 @@ msgid ""
"websites that execute code or use databases. So you can't for example use"
" WordPress.)"
msgstr ""
+"``index.html``ファイルも追加すると、ウェブサイトがロードされる時にレンダーリングされます。サイトを構成するHTMLファイル、CSSファイル、"
+"JavaScriptファイル、そして画像データも追加する必要があります。(OnionShareはスタティック型のウェブサイトのみをホストできることをご了承"
+"ください。コードを実行するまたデータベースを利用するウェブサイトをホストできません。例えばWordPressを使えません。)"
#: ../../source/features.rst:91
msgid ""
"If you don't have an ``index.html`` file, it will show a directory "
"listing instead, and people loading it can look through the files and "
"download them."
-msgstr ""
+msgstr "``index.html``ファイルがない場合はディレクトリのリストは表示され、サイトをロードする人々はファイルを閲覧、ダウンロードできます。"
#: ../../source/features.rst:98
msgid "Content Security Policy"
-msgstr ""
+msgstr "コンテンツセキュリティポリシー"
#: ../../source/features.rst:100
msgid ""
@@ -259,7 +282,7 @@ msgstr ""
#: ../../source/features.rst:105
msgid "Tips for running a website service"
-msgstr ""
+msgstr "ウェブサイトのサービスを管理するアドバイス"
#: ../../source/features.rst:107
msgid ""
@@ -279,13 +302,14 @@ msgstr ""
#: ../../source/features.rst:113
msgid "Chat Anonymously"
-msgstr ""
+msgstr "匿名でチャット"
#: ../../source/features.rst:115
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
+"OnionShareを使って、何も記録しないプライベート、安全なチャットルームを作れます。チャットタブを開いて、「チャットサーバーを始動」をクリックする。"
#: ../../source/features.rst:119
msgid ""
@@ -302,6 +326,8 @@ msgid ""
"participate must have their Tor Browser security level set to "
"\"Standard\" or \"Safer\", instead of \"Safest\"."
msgstr ""
+"他の人はTorブラウザでOnionShareのアドレスを訪れたらチャットに参加できます。チャットルームにはJavaScriptが必要だから、参加したい方は"
+"Torブラウザのセキュリティレベルを「最も安全」ではなく「標準」または「より安全」に設定する必要があります。"
#: ../../source/features.rst:127
msgid ""
@@ -310,12 +336,14 @@ msgid ""
"and pressing ↵. Since the chat history isn't saved anywhere, it doesn't "
"get displayed at all, even if others were already chatting in the room."
msgstr ""
+"チャットルームに入る方はランダムのユーザ名を付けられます。左パネルにあるボックスに新しいユーザ名を入力して「↵」を押すと変更できます。入る前に他のユーザが"
+"チャットしてたかどうかにもかかわらず、チャット歴史はどこにも保存されていないので表示されません。"
#: ../../source/features.rst:133
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
-msgstr ""
+msgstr "OnionShareのチャットルームに、皆は匿名です。誰でも自由にユーザ名を変更できる、そして身元を認証する方法はありません。"
#: ../../source/features.rst:136
msgid ""
@@ -324,16 +352,18 @@ msgid ""
"messages, you can be reasonably confident the people joining the chat "
"room are your friends."
msgstr ""
+"でもOnionShareのチャットルームを作って、安全な通信でアドレスを信頼できる友達の少人数グループのみと共有すれば、チャットルームに入るユーザは実際に"
+"友達だとそれなりに確信できるでしょう。"
#: ../../source/features.rst:139
msgid "How is this useful?"
-msgstr ""
+msgstr "これは何の役に立ちますか?"
#: ../../source/features.rst:141
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
-msgstr ""
+msgstr "どうぜ暗号化メッセンジャーアプリを使う必要あるなら、OnionShareのチャットルームには何の意味がありますか?より少ない痕跡を残します。"
#: ../../source/features.rst:143
msgid ""
@@ -359,7 +389,7 @@ msgstr ""
#: ../../source/features.rst:150
msgid "How does the encryption work?"
-msgstr ""
+msgstr "暗号化の仕組みは何ですか?"
#: ../../source/features.rst:152
msgid ""
@@ -370,12 +400,15 @@ msgid ""
"other members of the chat room using WebSockets, through their E2EE onion"
" connections."
msgstr ""
+"OnionShareはTorオニオンサービスに頼るので、TorブラウザとOnionShareの間の接続は全て終端間暗号化されている(E2EE)。メッセージ"
+"はOnionShareチャットルームに投稿されるとき、E2EEオニオン接続を介してサーバーに送られて、サーバーがWebSocketを使ってE2EEオニオン"
+"接続を介して他のユーザに送ります。"
#: ../../source/features.rst:154
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
-msgstr ""
+msgstr "OnionShare自体はチャットの暗号を実行せず、Torオニオンサービスの暗号に頼ります。"
#~ msgid "How OnionShare works"
#~ msgstr ""
@@ -764,4 +797,3 @@ msgstr ""
#~ "WebSockets, through their E2EE onion "
#~ "connections."
#~ msgstr ""
-
diff --git a/docs/source/locale/ja/LC_MESSAGES/help.po b/docs/source/locale/ja/LC_MESSAGES/help.po
index d1eb81e9..8002b28b 100644
--- a/docs/source/locale/ja/LC_MESSAGES/help.po
+++ b/docs/source/locale/ja/LC_MESSAGES/help.po
@@ -3,37 +3,39 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-12-10 02:52+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
msgid "Getting Help"
-msgstr ""
+msgstr "サポートを受ける方法"
#: ../../source/help.rst:5
msgid "Read This Website"
-msgstr ""
+msgstr "このサイトを見て回る"
#: ../../source/help.rst:7
msgid ""
"You will find instructions on how to use OnionShare. Look through all of "
"the sections first to see if anything answers your questions."
-msgstr ""
+msgstr "OnionShareの説明書をここにアクセスできます。まずは見て回って、質問に回答する情報があるかどうかを確かめて下さい。"
#: ../../source/help.rst:10
msgid "Check the GitHub Issues"
-msgstr ""
+msgstr "GitHubのissuesをチェック"
#: ../../source/help.rst:12
msgid ""
@@ -45,7 +47,7 @@ msgstr ""
#: ../../source/help.rst:15
msgid "Submit an Issue Yourself"
-msgstr ""
+msgstr "新しいissueを提出する"
#: ../../source/help.rst:17
msgid ""
@@ -58,13 +60,13 @@ msgstr ""
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
-msgstr ""
+msgstr "Keybaseチームに参加する"
#: ../../source/help.rst:22
msgid ""
"See :ref:`collaborating` on how to join the Keybase team used to discuss "
"the project."
-msgstr ""
+msgstr "プロジェクトを議論するためのKeybaseチームに参加する方法の詳しくは:ref:`協力`を訪れて下さい。"
#~ msgid "If you need help with OnionShare, please follow the instructions below."
#~ msgstr ""
@@ -117,4 +119,3 @@ msgstr ""
#~ "that we use to discuss the "
#~ "project."
#~ msgstr ""
-
diff --git a/docs/source/locale/ja/LC_MESSAGES/index.po b/docs/source/locale/ja/LC_MESSAGES/index.po
index 2ad2653c..ba5b8e7c 100644
--- a/docs/source/locale/ja/LC_MESSAGES/index.po
+++ b/docs/source/locale/ja/LC_MESSAGES/index.po
@@ -3,27 +3,30 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:46-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-12-10 02:52+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/index.rst:2
msgid "OnionShare's documentation"
-msgstr ""
+msgstr "OnionShareのドキュメンテーション"
#: ../../source/index.rst:6
msgid ""
"OnionShare is an open source tool that lets you securely and anonymously "
"share files, host websites, and chat with friends using the Tor network."
msgstr ""
-
+"OnionShareはTorネットワークを利用して安全そして匿名でファイルを共有させる、ウェブサイトをホストさせる、そして友達とチャットさせるオープンソー"
+"スのツールです。"
diff --git a/docs/source/locale/ja/LC_MESSAGES/security.po b/docs/source/locale/ja/LC_MESSAGES/security.po
index 05816266..666a5baf 100644
--- a/docs/source/locale/ja/LC_MESSAGES/security.po
+++ b/docs/source/locale/ja/LC_MESSAGES/security.po
@@ -3,35 +3,37 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-12-10 02:52+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/security.rst:2
msgid "Security Design"
-msgstr ""
+msgstr "セキュリティー設計"
#: ../../source/security.rst:4
msgid "Read :ref:`how_it_works` first to get a handle on how OnionShare works."
-msgstr ""
+msgstr "まずはOnionShareの仕組みを理解するには、:ref:`how_it_works`を訪れて下さい。"
#: ../../source/security.rst:6
msgid "Like all software, OnionShare may contain bugs or vulnerabilities."
-msgstr ""
+msgstr "全てのソフトウェアのように、OnionShareにバグや脆弱性があるかもしれない。"
#: ../../source/security.rst:9
msgid "What OnionShare protects against"
-msgstr ""
+msgstr "OnionShareが防衛できる脅威"
#: ../../source/security.rst:11
msgid ""
@@ -42,6 +44,9 @@ msgid ""
"server for that too. This avoids the traditional model of having to trust"
" the computers of others."
msgstr ""
+"**第三者はOnionShare内のデータやプロセスにアクセスできません。** OnionShareでは、全てのサービスは自宅のパソコンから直接にホストさ"
+"れます。OnionShareでファイルを共有するときに、外部サーバーにアップロードされません。OnionShareのチャットルームを作るときにも、自宅のパ"
+"ソコンはサーバー役になります。つまり、第三者のパソコンを信頼するという従来型モデルの必要がありません。"
#: ../../source/security.rst:13
msgid ""
@@ -53,6 +58,9 @@ msgid ""
"Browser with OnionShare's onion service, the traffic is encrypted using "
"the onion service's private key."
msgstr ""
+"**ネットワーク上の盗聴者がOnionShareで送受信されるデータを傍受できません。** TorオニオンサービスとTorブラウザの間の接続は終端間暗号化"
+"されます。つまり、ネットワーク盗聴者は解読できないTorトラフィックしか傍受できません。たとえ盗聴者は悪用rendezvousノードを使ってTorブラウザ"
+"/OnionShareのオニオンサービス間のトラフィックをルーティングしても、オニオンサービスの秘密鍵で暗号化されるから解読できません。"
#: ../../source/security.rst:15
msgid ""
@@ -62,6 +70,8 @@ msgid ""
"Browser users, the Tor Browser users and eavesdroppers can't learn the "
"identity of the OnionShare user."
msgstr ""
+"**OnionShareユーザの匿名性はTorに保護されます。** OnionShareとTorブラウザはユーザの匿名性を保護します。OnionShare"
+"ユーザが匿名でTorブラウザのユーザとアドレスを共有する限り、誰もがOnionShareユーザの身元を突き止めることができません。"
#: ../../source/security.rst:17
msgid ""
@@ -79,7 +89,7 @@ msgstr ""
#: ../../source/security.rst:20
msgid "What OnionShare doesn't protect against"
-msgstr ""
+msgstr "OnionShareが防衛できない脅威"
#: ../../source/security.rst:22
msgid ""
@@ -241,4 +251,3 @@ msgstr ""
#~ " share the address. This isn't "
#~ "necessary unless anonymity is a goal."
#~ msgstr ""
-
diff --git a/docs/source/locale/ja/LC_MESSAGES/sphinx.po b/docs/source/locale/ja/LC_MESSAGES/sphinx.po
index f2cc8ed5..ab86033a 100644
--- a/docs/source/locale/ja/LC_MESSAGES/sphinx.po
+++ b/docs/source/locale/ja/LC_MESSAGES/sphinx.po
@@ -3,25 +3,26 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:37-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-12-10 02:52+0000\n"
+"Last-Translator: Taro Tanaka <anon_japan@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/_templates/versions.html:10
msgid "Versions"
-msgstr ""
+msgstr "バージョン"
#: ../../source/_templates/versions.html:18
msgid "Languages"
-msgstr ""
-
+msgstr "言語"
diff --git a/docs/source/locale/lt/LC_MESSAGES/develop.po b/docs/source/locale/lt/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..7028dc31
--- /dev/null
+++ b/docs/source/locale/lt/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/pa/LC_MESSAGES/develop.po b/docs/source/locale/pa/LC_MESSAGES/develop.po
new file mode 100644
index 00000000..479ca7a7
--- /dev/null
+++ b/docs/source/locale/pa/LC_MESSAGES/develop.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) Micah Lee, et al.
+# This file is distributed under the same license as the OnionShare package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OnionShare 2.4.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: pa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../source/develop.rst:2
+msgid "Developing OnionShare"
+msgstr ""
+
+#: ../../source/develop.rst:7
+msgid "Collaborating"
+msgstr ""
+
+#: ../../source/develop.rst:9
+msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
+msgstr ""
+
+#: ../../source/develop.rst:12
+msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
+msgstr ""
+
+#: ../../source/develop.rst:15
+msgid "Contributing Code"
+msgstr ""
+
+#: ../../source/develop.rst:17
+msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
+msgstr ""
+
+#: ../../source/develop.rst:19
+msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
+msgstr ""
+
+#: ../../source/develop.rst:22
+msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
+msgstr ""
+
+#: ../../source/develop.rst:27
+msgid "Starting Development"
+msgstr ""
+
+#: ../../source/develop.rst:29
+msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
+msgstr ""
+
+#: ../../source/develop.rst:32
+msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
+msgstr ""
+
+#: ../../source/develop.rst:35
+msgid "Debugging tips"
+msgstr ""
+
+#: ../../source/develop.rst:38
+msgid "Verbose mode"
+msgstr ""
+
+#: ../../source/develop.rst:40
+msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:117
+msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:121
+msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
+msgstr ""
+
+#: ../../source/develop.rst:124
+msgid "Local Only"
+msgstr ""
+
+#: ../../source/develop.rst:126
+msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
+msgstr ""
+
+#: ../../source/develop.rst:165
+msgid "In this case, you load the URL ``http://127.0.0.1:17641`` in a normal web-browser like Firefox, instead of using the Tor Browser. The private key is not actually needed in local-only mode, so you can ignore it."
+msgstr ""
+
+#: ../../source/develop.rst:168
+msgid "Contributing Translations"
+msgstr ""
+
+#: ../../source/develop.rst:170
+msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
+msgstr ""
+
+#: ../../source/develop.rst:172
+msgid "To help translate, make a Hosted Weblate account and start contributing."
+msgstr ""
+
+#: ../../source/develop.rst:175
+msgid "Suggestions for Original English Strings"
+msgstr ""
+
+#: ../../source/develop.rst:177
+msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
+msgstr ""
+
+#: ../../source/develop.rst:179
+msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
+msgstr ""
+
+#: ../../source/develop.rst:183
+msgid "Status of Translations"
+msgstr ""
+
+#: ../../source/develop.rst:184
+msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
+msgstr ""
diff --git a/docs/source/locale/pl/LC_MESSAGES/advanced.po b/docs/source/locale/pl/LC_MESSAGES/advanced.po
index ba8a6f64..60d262ab 100644
--- a/docs/source/locale/pl/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/pl/LC_MESSAGES/advanced.po
@@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
+"PO-Revision-Date: 2021-10-16 21:34+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/advanced.rst:2
@@ -58,6 +59,10 @@ msgid ""
"start opened. You'll have to manually start each service, but when you do"
" they will start with the same OnionShare address and private key."
msgstr ""
+"Gdy zamkniesz OnionShare, a następnie otworzysz go ponownie, zapisane karty "
+"również zostaną otwarte. Będziesz musiał ręcznie uruchomić każdą usługę, ale "
+"kiedy to zrobisz, uruchomią się z tym samym adresem OnionShare i kluczem "
+"prywatnym."
#: ../../source/advanced.rst:21
msgid ""
@@ -69,19 +74,23 @@ msgstr ""
#: ../../source/advanced.rst:26
msgid "Turn Off Private Key"
-msgstr ""
+msgstr "Wyłączanie obsługi Klucza Prywatnego"
#: ../../source/advanced.rst:28
msgid ""
"By default, all OnionShare services are protected with a private key, "
"which Tor calls \"client authentication\"."
msgstr ""
+"Domyślnie wszystkie usługi OnionShare są chronione kluczem prywatnym, Tor "
+"nazywa to „uwierzytelnianiem klienta”."
#: ../../source/advanced.rst:30
msgid ""
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
"prompt for the private key to be entered."
msgstr ""
+"Podczas przeglądania usługi OnionShare w przeglądarce Tor, przeglądarka Tor "
+"poprosi o wprowadzenie klucza prywatnego."
#: ../../source/advanced.rst:32
msgid ""
@@ -90,6 +99,10 @@ msgid ""
"public can securely and anonymously send you files. In this case, it's "
"better to disable the private key altogether."
msgstr ""
+"Czasami możesz chcieć, aby Twoja usługa OnionShare była dostępna publicznie, "
+"na przykład jeśli chcesz skonfigurować usługę odbioru OnionShare, aby inni "
+"mogli bezpiecznie i anonimowo wysyłać Ci pliki. W takim przypadku lepiej "
+"całkowicie wyłączyć obsługę klucza prywatnego."
#: ../../source/advanced.rst:35
msgid ""
@@ -98,10 +111,14 @@ msgid ""
"server. Then the server will be public and won't need a private key to "
"view in Tor Browser."
msgstr ""
+"Aby wyłączyć obsługę klucza prywatnego dla dowolnej karty, zaznacz pole „To "
+"jest usługa publiczna OnionShare (wyłącza klucz prywatny)” przed "
+"uruchomieniem serwera. Wtedy serwer będzie publiczny i nie będzie "
+"potrzebował klucza prywatnego do przeglądania w przeglądarce Tor."
#: ../../source/advanced.rst:40
msgid "Custom Titles"
-msgstr ""
+msgstr "Tytuły Niestandardowe"
#: ../../source/advanced.rst:42
msgid ""
@@ -109,12 +126,17 @@ msgid ""
"see the default title for the type of service. For example, the default "
"title of a chat service is \"OnionShare Chat\"."
msgstr ""
+"Domyślnie, gdy ludzie ładują usługę OnionShare w przeglądarce Tor, widzą "
+"domyślny tytuł dla danego typu usługi. Na przykład domyślny tytuł usługi "
+"czatu to „OnionShare Chat”."
#: ../../source/advanced.rst:44
msgid ""
"If you want to choose a custom title, set the \"Custom title\" setting "
"before starting a server."
msgstr ""
+"Jeśli chcesz wybrać tytuł niestandardowy, ustaw „Tytuł niestandardowy” przed "
+"uruchomieniem serwera."
#: ../../source/advanced.rst:47
msgid "Scheduled Times"
@@ -167,6 +189,10 @@ msgid ""
"making sure they're not available on the internet for more than a few "
"days."
msgstr ""
+"**Zaplanowanie automatycznego zatrzymania usługi OnionShare może być "
+"przydatne do ograniczenia ekspozycji**, na przykład, jeśli chcesz udostępnić "
+"tajne dokumenty, upewniając się, że nie są one dostępne w Internecie dłużej "
+"niż kilka dni."
#: ../../source/advanced.rst:67
msgid "Command-line Interface"
@@ -207,6 +233,9 @@ msgid ""
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
"in the git repository."
msgstr ""
+"Aby uzyskać informacje o instalowaniu go w różnych systemach operacyjnych, "
+"zobacz plik `CLI readme <https://github.com/onionshare/onionshare/blob/"
+"develop/cli/README.md>`_ w repozytorium git."
#: ../../source/advanced.rst:83
msgid ""
@@ -530,4 +559,3 @@ msgstr ""
#~ " services will be removed from "
#~ "OnionShare before then."
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/develop.po b/docs/source/locale/pl/LC_MESSAGES/develop.po
index 868ebaa6..037a9001 100644
--- a/docs/source/locale/pl/LC_MESSAGES/develop.po
+++ b/docs/source/locale/pl/LC_MESSAGES/develop.po
@@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
+"PO-Revision-Date: 2021-10-13 16:36+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
@@ -67,6 +68,8 @@ msgid ""
"OnionShare source code is to be found in this Git repository: "
"https://github.com/onionshare/onionshare"
msgstr ""
+"Kod źródłowy OnionShare można znaleźć w tym repozytorium Git: https://github."
+"com/onionshare/onionshare"
#: ../../source/develop.rst:19
msgid ""
@@ -76,6 +79,11 @@ msgid ""
"<https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if "
"there are any you'd like to tackle."
msgstr ""
+"Jeśli chcesz wnieść swój wkład do kodu OnionShare, warto dołączyć do grupy "
+"Keybase by zadawać pytania dotyczące tego, nad czym zamierzasz pracować. "
+"Powinieneś również przejrzeć wszystkie `otwarte problemy <https://github.com/"
+"onionshare/onionshare/issues>`_ na GitHub, aby zobaczyć, czy są jakieś, "
+"którymi chciałbyś się zająć."
#: ../../source/develop.rst:22
msgid ""
@@ -101,6 +109,12 @@ msgid ""
"file to learn how to set up your development environment for the "
"graphical version."
msgstr ""
+"OnionShare jest rozwijany przy użyciu Pythona. Aby rozpocząć pracę, sklonuj "
+"repozytorium Git z https://github.com/onionshare/onionshare/, a następnie "
+"zapoznaj się z plikiem ``cli/README.md``, aby dowiedzieć się, jak "
+"skonfigurować środowisko programistyczne dla wersji wiersza poleceń , oraz "
+"plik ``desktop/README.md``, aby dowiedzieć się, jak skonfigurować środowisko "
+"programistyczne dla wersji graficznej."
#: ../../source/develop.rst:32
msgid ""
@@ -172,6 +186,10 @@ msgid ""
"web-browser like Firefox, instead of using the Tor Browser. The private "
"key is not actually needed in local-only mode, so you can ignore it."
msgstr ""
+"W tym przypadku ładujemy adres URL ``http://127.0.0.1:17641`` w normalnej "
+"przeglądarce internetowej, takiej jak Firefox, zamiast używać przeglądarki "
+"Tor. Klucz prywatny nie jest właściwie potrzebny w trybie lokalnym, więc "
+"możesz go zignorować."
#: ../../source/develop.rst:168
msgid "Contributing Translations"
@@ -488,4 +506,3 @@ msgstr ""
#~ "a normal web-browser like Firefox, "
#~ "instead of using the Tor Browser."
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/features.po b/docs/source/locale/pl/LC_MESSAGES/features.po
index 27f9859d..52e1d1c2 100644
--- a/docs/source/locale/pl/LC_MESSAGES/features.po
+++ b/docs/source/locale/pl/LC_MESSAGES/features.po
@@ -7,16 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: 2021-09-19 15:37+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -29,21 +30,21 @@ msgid ""
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
"<https://community.torproject.org/onion-services/>`_."
msgstr ""
-"Serwery webowe są uruchamiane lokalnie na Twoim komputerze i udostępniane"
-" innym osobom jako `usługi cebulowe <https://community.torproject.org"
-"/onion-services/> `_`Tor <https://www.torproject.org/>`_ ."
+"Serwery webowe są uruchamiane lokalnie na Twoim komputerze i udostępniane "
+"innym osobom jako `usługi cebulowe <https://community.torproject.org/"
+"onion-services/>`_ `Tor <https://www.torproject.org/>`_ ."
#: ../../source/features.rst:8
msgid "By default, OnionShare web addresses are protected with a private key."
-msgstr ""
+msgstr "Domyślnie adresy internetowe OnionShare są chronione kluczem prywatnym."
#: ../../source/features.rst:10
msgid "OnionShare addresses look something like this::"
-msgstr ""
+msgstr "Adresy OnionShare wyglądają mniej więcej tak:"
#: ../../source/features.rst:14
msgid "And private keys might look something like this::"
-msgstr ""
+msgstr "A klucze prywatne mogą wyglądać mniej więcej tak:"
#: ../../source/features.rst:18
msgid ""
@@ -52,6 +53,11 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
+"Odpowiadasz za bezpieczne udostępnianie tego adresu URL i klucza prywatnego "
+"za pomocą wybranego kanału komunikacji, takiego jak zaszyfrowana wiadomość "
+"na czacie, lub korzystanie z czegoś mniej bezpiecznego, takiego jak "
+"niezaszyfrowana poczta e-mail, w zależności od Twojego `modelu zagrożenia "
+"<https://ssd.eff.org/module/your-security-plan>`_."
#: ../../source/features.rst:20
msgid ""
@@ -60,6 +66,10 @@ msgid ""
" Tor Browser will then prompt for the private key, which the people can "
"also then copy and paste in."
msgstr ""
+"Osoby, do których wysyłasz adres URL, muszą skopiować go i wkleić do swojej "
+"przeglądarki Tor <https://www.torproject.org/>`_, aby uzyskać dostęp do "
+"usługi OnionShare. Przeglądarka Tor poprosi ich o klucz prywatny, który "
+"również mogą skopiować i wkleić."
#: ../../source/features.rst:24
msgid ""
@@ -68,6 +78,11 @@ msgid ""
"until your laptop is unsuspended and on the internet again. OnionShare "
"works best when working with people in real-time."
msgstr ""
+"Jeśli uruchomisz OnionShare na swoim laptopie, aby wysłać komuś pliki, a "
+"następnie uśpisz go przed wysłaniem plików, usługa nie będzie dostępna, "
+"dopóki Twój laptop nie zostanie wybudzony i ponownie będzie dostępny w "
+"Internecie. OnionShare działa najlepiej podczas pracy z ludźmi w czasie "
+"rzeczywistym."
#: ../../source/features.rst:26
msgid ""
@@ -114,6 +129,10 @@ msgid ""
" files have been sent (uncheck to allow downloading individual files)\" "
"box."
msgstr ""
+"Gdy tylko ktoś zakończy pobieranie twoich plików, OnionShare automatycznie "
+"zatrzyma serwer, usuwając witrynę z Internetu. Aby umożliwić pobieranie ich "
+"wielu osobom, odznacz pole „Zatrzymaj udostępnianie po wysłaniu plików ("
+"odznacz, aby zezwolić na pobieranie pojedynczych plików)”."
#: ../../source/features.rst:42
msgid ""
@@ -145,6 +164,10 @@ msgid ""
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
+"Teraz, gdy uruchomiłeś usługę OnionShare, skopiuj adres i klucz prywatny i "
+"wyślij je do osoby, której chcesz udostępnić pliki. Jeśli pliki muszą "
+"pozostać bezpieczne lub dana osoba jest w inny sposób narażona na "
+"niebezpieczeństwo, użyj szyfrowanej aplikacji do przesyłania wiadomości."
#: ../../source/features.rst:50
msgid ""
@@ -152,10 +175,13 @@ msgid ""
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
+"Następnie osoba ta musi załadować adres w przeglądarce Tor. Po zalogowaniu "
+"się kluczem prywatnym pliki można pobrać bezpośrednio z Twojego komputera, "
+"klikając znajdujący się w rogu link „Pobierz pliki”."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
-msgstr ""
+msgstr "Odbieranie plików i wiadomości"
#: ../../source/features.rst:57
msgid ""
@@ -164,10 +190,14 @@ msgid ""
"anonymous dropbox. Open a receive tab and choose the settings that you "
"want."
msgstr ""
+"Możesz użyć OnionShare, aby umożliwić ludziom anonimowe przesyłanie plików i "
+"wiadomości bezpośrednio do twojego komputera, zasadniczo zmieniając go w "
+"anonimową skrzynkę. Otwórz kartę odbioru i wybierz żądane ustawienia."
#: ../../source/features.rst:62
msgid "You can browse for a folder to save messages and files that get submitted."
msgstr ""
+"Możesz wybrać folder, w którym zapisywane będą przesłane wiadomości i pliki."
#: ../../source/features.rst:64
msgid ""
@@ -175,6 +205,10 @@ msgid ""
"uploads, and you can check \"Disable uploading files\" if you want to "
"only allow submitting text messages, like for an anonymous contact form."
msgstr ""
+"Możesz zaznaczyć „Wyłącz przesyłanie tekstu”, jeśli chcesz zezwolić tylko na "
+"przesyłanie plików i możesz zaznaczyć „Wyłącz przesyłanie plików\", jeśli "
+"chcesz zezwolić tylko na przesyłanie wiadomości tekstowych, na przykład w "
+"przypadku anonimowego formularza kontaktowego."
#: ../../source/features.rst:66
msgid ""
@@ -190,6 +224,17 @@ msgid ""
"your receive mode service, @webhookbot will send you a message on Keybase"
" letting you know as soon as it happens."
msgstr ""
+"Możesz zaznaczyć „Użyj webhooka powiadomień”, a następnie wybrać adres URL "
+"webhooka, jeśli chcesz otrzymywać powiadomienia, gdy ktoś przesyła pliki lub "
+"wiadomości do Twojej usługi OnionShare. Jeśli korzystasz z tej funkcji, "
+"OnionShare wyśle żądanie HTTP POST do tego adresu URL za każdym razem, gdy "
+"ktoś prześle pliki lub wiadomości. Na przykład, jeśli chcesz otrzymać "
+"zaszyfrowaną wiadomość tekstową w aplikacji `Keybase <https://keybase.io/>`"
+"_, możesz rozpocząć rozmowę z `@webhookbot <https://keybase.io/webhookbot >`"
+"_, wpisz ``!webhook create onionshare-alerts``, a odpowie adresem URL. Użyj "
+"go jako adresu URL webhooka powiadomień. Jeśli ktoś prześle plik do Twojej "
+"usługi odbiorczej, @webhookbot wyśle Ci wiadomość na Keybase, informując "
+"Cię, gdy tylko to nastąpi."
#: ../../source/features.rst:71
msgid ""
@@ -198,6 +243,10 @@ msgid ""
" be able to submit files and messages which get uploaded to your "
"computer."
msgstr ""
+"Kiedy będziesz gotowy, kliknij „Rozpocznij tryb odbierania”. Uruchomi to "
+"usługę OnionShare. Każdy, kto załaduje ten adres w swojej przeglądarce Tor, "
+"będzie mógł przesyłać pliki i wiadomości, które zostaną przesłane na twój "
+"komputer."
#: ../../source/features.rst:75
msgid ""
@@ -209,7 +258,7 @@ msgstr ""
#: ../../source/features.rst:77
msgid "Here is what it looks like for someone sending you files and messages."
-msgstr ""
+msgstr "Oto, jak wygląda gdy ktoś wysyła Ci pliki i wiadomości."
#: ../../source/features.rst:81
msgid ""
@@ -218,6 +267,10 @@ msgid ""
"folder on your computer, automatically organized into separate subfolders"
" based on the time that the files get uploaded."
msgstr ""
+"Gdy ktoś przesyła pliki lub wiadomości do Twojej usługi odbiorczej, "
+"domyślnie są one zapisywane w folderze o nazwie „OnionShare” w folderze "
+"domowym na komputerze, automatycznie uporządkowane w osobnych podfolderach "
+"na podstawie czasu przesłania plików."
#: ../../source/features.rst:83
msgid ""
@@ -244,6 +297,11 @@ msgid ""
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
+"Podobnie jak w przypadku złośliwych załączników do wiadomości e-mail, "
+"możliwe jest, że ktoś spróbuje zaatakować Twój komputer, przesyłając "
+"złośliwy plik do usługi OnionShare. OnionShare nie dodaje żadnych "
+"mechanizmów bezpieczeństwa, które chronią Twój system przed złośliwymi "
+"plikami."
#: ../../source/features.rst:90
msgid ""
@@ -265,6 +323,8 @@ msgstr ""
#: ../../source/features.rst:92
msgid "However, it is always safe to open text messages sent through OnionShare."
msgstr ""
+"Jednak zawsze bezpiecznie jest otwierać wiadomości tekstowe wysyłane za "
+"pośrednictwem OnionShare."
#: ../../source/features.rst:95
msgid "Tips for running a receive service"
@@ -277,6 +337,10 @@ msgid ""
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
+"Jeśli chcesz hostować własną anonimową skrzynkę wrzutową za pomocą "
+"OnionShare, zalecamy, abyś zrobił to na oddzielnym, wydzielonym komputerze, "
+"który jest zawsze włączony i połączony z Internetem, a nie na tym, z którego "
+"korzystasz regularnie."
#: ../../source/features.rst:99
msgid ""
@@ -285,6 +349,11 @@ msgid ""
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
+"Jeśli zamierzasz umieścić adres OnionShare na swojej stronie internetowej "
+"lub profilach w mediach społecznościowych, zapisz kartę (zobacz "
+":ref:`save_tabs`) i uruchom ją jako usługę publiczną (zobacz "
+":ref:`turn_off_private_key`). Dobrym pomysłem jest również nadanie jej "
+"własnego tytułu (zobacz :ref:`custom_titles`)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -338,24 +407,38 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
+"Domyślnie OnionShare pomaga zabezpieczyć witrynę, ustawiając ścisłą „"
+"Politykę Bezpieczeństwa Treści <https://en.wikipedia.org/wiki/"
+"Content_Security_Policy>”_. Zapobiega to jednak ładowaniu zawartości stron "
+"trzecich na stronie internetowej."
#: ../../source/features.rst:121
+#, fuzzy
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
"Jeśli chcesz załadować zawartość z witryn internetowych stron trzecich, "
"na przykład zasoby lub biblioteki JavaScript z sieci CDN, przed "
"uruchomieniem usługi zaznacz pole „Nie wysyłaj nagłówka Content Security "
"Policy (pozwala Twojej witrynie korzystanie z zasobów innych firm)”."
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Wskazówki dotyczące prowadzenia serwisu internetowego"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -364,18 +447,26 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
+"Jeśli chcesz prowadzić długoterminową witrynę internetową za pomocą "
+"OnionShare (czyli nie tylko po to, aby szybko komuś coś pokazać), zaleca się "
+"zrobić to na osobnym, dedykowanym komputerze, który jest zawsze włączony i "
+"podłączony do internetu, a nie na tym, który używasz regularnie. Zapisz "
+"kartę (patrz :ref:`save_tabs`), aby móc wznowić witrynę z tym samym adresem, "
+"gdy zamkniesz OnionShare i otworzysz ponownie później."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
+"Jeśli twoja strona ma być udostępniona publicznie, powinieneś uruchomić ją "
+"jako usługę publiczną (zobacz :ref:`turn_off_private_key`)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Czatuj anonimowo"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
@@ -384,15 +475,20 @@ msgstr ""
"który niczego nie rejestruje. Wystarczy otworzyć zakładkę czatu i kliknąć"
" „Uruchom serwer czatu”."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
+"Po uruchomieniu serwera skopiuj adres OnionShare i klucz prywatny i wyślij "
+"je do osób, które chcesz zaprosić do anonimowego pokoju rozmów. Jeśli ważne "
+"jest, aby dokładnie ograniczyć liczbę osób, które mogą dołączyć, użyj "
+"aplikacji do szyfrowania wiadomości, aby wysłać adres OnionShare i klucz "
+"prywatny."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -404,7 +500,7 @@ msgstr ""
"uczestniczyć, musi mieć ustawiony poziom bezpieczeństwa przeglądarki Tor "
"na „Standardowy” lub „Bezpieczniejszy”, zamiast „Najbezpieczniejszy”."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -416,7 +512,7 @@ msgstr ""
"↵. Ponieważ historia czatu nie jest nigdzie zapisywana, nie jest w ogóle "
"wyświetlana, nawet jeśli inni już rozmawiali w tym czacie."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -424,7 +520,7 @@ msgstr ""
"W czacie OnionShare wszyscy są anonimowi. Każdy może zmienić swoje imię "
"na dowolne i nie ma żadnej możliwości potwierdzenia czyjejś tożsamości."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -436,11 +532,11 @@ msgstr ""
"wiadomości, możesz mieć wystarczającą pewność, że osoby dołączające do "
"pokoju rozmów są Twoimi przyjaciółmi."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Jak to jest przydatne?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -448,7 +544,7 @@ msgstr ""
"Jeśli musisz już korzystać z aplikacji do szyfrowania wiadomości, jaki "
"jest sens używania czatu OnionShare? Pozostawia mniej śladów."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -459,8 +555,16 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
-
-#: ../../source/features.rst:165
+"Jeśli na przykład wyślesz wiadomość do grupy w aplikacji Signal, kopia "
+"Twojej wiadomości trafi na każde urządzenie (smartfony i komputery, jeśli "
+"posiadają Signal Desktop) każdego członka grupy. Nawet jeśli znikanie "
+"wiadomości jest włączone, trudno jest potwierdzić, że wszystkie kopie "
+"wiadomości zostały faktycznie usunięte ze wszystkich urządzeń oraz z innych "
+"miejsc (takich jak bazy danych powiadomień), w których mogły zostać "
+"zapisane. Pokoje rozmów OnionShare nie przechowują nigdzie żadnych "
+"wiadomości, więc problem jest zredukowany do minimum."
+
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -469,12 +573,17 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
+"Pokoje rozmów OnionShare mogą być również przydatne dla osób, które chcą "
+"rozmawiać z kimś anonimowo i bezpiecznie bez konieczności tworzenia kont. Na "
+"przykład źródło może wysłać dziennikarzowi adres OnionShare przy użyciu "
+"jednorazowego adresu e-mail, a następnie czekać, aż dziennikarz dołączy do "
+"pokoju rozmów, a wszystko to bez narażania swojej anonimowości."
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Jak działa szyfrowanie?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -490,7 +599,7 @@ msgstr ""
" wszystkich innych uczestników czatu za pomocą WebSockets, za "
"pośrednictwem połączeń cebulowych E2EE."
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
@@ -1087,4 +1196,3 @@ msgstr ""
#~ "to join the chat room, all without"
#~ " compromosing their anonymity."
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/help.po b/docs/source/locale/pl/LC_MESSAGES/help.po
index 029d839b..142ef675 100644
--- a/docs/source/locale/pl/LC_MESSAGES/help.po
+++ b/docs/source/locale/pl/LC_MESSAGES/help.po
@@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
+"PO-Revision-Date: 2021-10-14 18:35+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
@@ -46,6 +47,10 @@ msgid ""
"someone else has encountered the same problem and either raised it with "
"the developers, or maybe even posted a solution."
msgstr ""
+"Jeśli to czego szukasz nie znajduje się na stronie, sprawdź `wątki z GitHub "
+"<https://github.com/onionshare/onionshare/issues>`_. Możliwe, że ktoś inny "
+"napotkał ten sam problem i albo zgłosił go twórcom, albo może nawet "
+"opublikował rozwiązanie."
#: ../../source/help.rst:15
msgid "Submit an Issue Yourself"
@@ -59,6 +64,10 @@ msgid ""
"`creating a GitHub account <https://help.github.com/articles/signing-up-"
"for-a-new-github-account/>`_."
msgstr ""
+"Jeśli nie możesz znaleźć rozwiązania lub chcesz zadać pytanie lub "
+"zasugerować nową funkcję, proszę `zgłoś problem <https://github.com/"
+"onionshare/onionshare/issues/new>`_. Wymaga to `utworzenia konta GitHub "
+"<https://help.github.com/articles/signing-up-for-a-new-github-account/>`_."
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
@@ -144,4 +153,3 @@ msgstr ""
#~ "<https://help.github.com/articles/signing-up-for-a-new-"
#~ "github-account/>`_."
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/install.po b/docs/source/locale/pl/LC_MESSAGES/install.po
index f5aa8d80..addf056e 100644
--- a/docs/source/locale/pl/LC_MESSAGES/install.po
+++ b/docs/source/locale/pl/LC_MESSAGES/install.po
@@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
+"PO-Revision-Date: 2021-10-14 18:35+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/install.rst:2
@@ -37,7 +38,7 @@ msgstr ""
#: ../../source/install.rst:12
msgid "Linux"
-msgstr ""
+msgstr "Linux"
#: ../../source/install.rst:14
msgid ""
@@ -86,7 +87,7 @@ msgstr ""
#: ../../source/install.rst:28
msgid "Command-line only"
-msgstr ""
+msgstr "Wiersz poleceń"
#: ../../source/install.rst:30
msgid ""
@@ -94,6 +95,9 @@ msgid ""
"operating system using the Python package manager ``pip``. See :ref:`cli`"
" for more information."
msgstr ""
+"Możesz zainstalować tylko wersję wiersza poleceń OnionShare na dowolnym "
+"systemie operacyjnym za pomocą menedżera pakietów Python ``pip``. Zobacz "
+":ref:`cli`, aby uzyskać więcej informacji."
#: ../../source/install.rst:35
msgid "Verifying PGP signatures"
@@ -189,6 +193,11 @@ msgid ""
" the package, it only means you haven't defined a level of \"trust\" of "
"Micah's PGP key.)"
msgstr ""
+"Jeśli nie widzisz ``Good signature from``, może to oznaczać problem z "
+"integralnością pliku (złośliwy lub inny) i nie powinieneś instalować "
+"pakietu. (Pokazane powyżej ostrzeżenie ``WARNING:`` nie jest problemem z "
+"pakietem, oznacza tylko, że nie zdefiniowałeś poziomu \"zaufania\" klucza "
+"PGP Micah.)"
#: ../../source/install.rst:78
msgid ""
@@ -403,4 +412,3 @@ msgstr ""
#~ " level of 'trust' of Micah's PGP "
#~ "key.)"
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/security.po b/docs/source/locale/pl/LC_MESSAGES/security.po
index e93d08e6..84ab9b21 100644
--- a/docs/source/locale/pl/LC_MESSAGES/security.po
+++ b/docs/source/locale/pl/LC_MESSAGES/security.po
@@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-17 14:39-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
+"PO-Revision-Date: 2021-10-13 17:58+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/security.rst:2
@@ -96,6 +97,14 @@ msgid ""
"access it (unless the OnionShare user chooses make their service public "
"by turning off the private key -- see :ref:`turn_off_private_key`)."
msgstr ""
+"**Jeśli atakujący dowie się o usłudze cebulowej, nadal nie ma dostępu do "
+"niczego z nią związanego.** Wcześniejsze ataki na sieć Tor, mające na celu "
+"enumerację usług cebulowych, pozwoliły atakującemu odkryć prywatne adresy ``."
+"onion``. Jeśli atakujący wykryje prywatny adres OnionShare, będzie musiał "
+"również odgadnąć klucz prywatny używany do uwierzytelnienia klienta, aby "
+"uzyskać do niego dostęp (chyba że użytkownik OnionShare wybierze "
+"upublicznienie swojej usługi poprzez wyłączenie klucza prywatnego - patrz "
+":ref:` turn_off_private_key`)."
#: ../../source/security.rst:20
msgid "What OnionShare doesn't protect against"
@@ -114,6 +123,17 @@ msgid ""
"or in person. This isn't necessary when using OnionShare for something "
"that isn't secret."
msgstr ""
+"**Ogłaszanie adresu OnionShare i klucza prywatnego może nie być bezpieczne.**"
+" Przekazanie ludziom adresu OnionShare jest obowiązkiem użytkownika "
+"OnionShare. Jeśli zostanie wysłany w sposób niepewny (na przykład za "
+"pośrednictwem wiadomości e-mail monitorowanej przez atakującego), "
+"podsłuchujący może stwierdzić, że jest używany OnionShare. Jeśli "
+"podsłuchiwacz załaduje adres w przeglądarce Tor, gdy usługa jest nadal "
+"aktywna, może uzyskać do niej dostęp. Aby tego uniknąć, adres musi być "
+"przekazany w bezpieczny sposób, za pomocą zaszyfrowanej wiadomości tekstowej "
+"(prawdopodobnie z włączonymi znikającymi wiadomościami), zaszyfrowanej "
+"wiadomości e-mail lub osobiście. Nie jest to konieczne, gdy używasz "
+"OnionShare do czegoś, co nie jest tajne."
#: ../../source/security.rst:24
msgid ""
@@ -123,6 +143,11 @@ msgid ""
"accessed over Tor, can be used to share the address. This isn't necessary"
" unless anonymity is a goal."
msgstr ""
+"**Ogłaszanie adresu i klucza prywatnego OnionShare może nie być anonimowe.** "
+"Należy podjąć dodatkowe środki ostrożności, aby zapewnić anonimowość "
+"przekazywania adresu OnionShare. Do udostępnienia adresu można użyć nowego "
+"konta e-mail lub czatu, dostępnego tylko przez Tor. Nie jest to konieczne, "
+"chyba że Twoim celem jest anonimowość."
#~ msgid "Security design"
#~ msgstr ""
@@ -316,4 +341,3 @@ msgstr ""
#~ " isn't necessary unless anonymity is "
#~ "a goal."
#~ msgstr ""
-
diff --git a/docs/source/locale/pl/LC_MESSAGES/tor.po b/docs/source/locale/pl/LC_MESSAGES/tor.po
index 6700bae7..5c7cf486 100644
--- a/docs/source/locale/pl/LC_MESSAGES/tor.po
+++ b/docs/source/locale/pl/LC_MESSAGES/tor.po
@@ -7,16 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
"PO-Revision-Date: 2021-09-19 15:37+0000\n"
"Last-Translator: Rafał Godek <p3run@tutanota.com>\n"
-"Language: pl\n"
"Language-Team: pl <LL@li.org>\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && "
-"(n%100<10 || n%100>=20) ? 1 : 2\n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -24,16 +25,17 @@ msgid "Connecting to Tor"
msgstr "Łączenie się z siecią Tor"
#: ../../source/tor.rst:4
+#, fuzzy
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
"Wybierz sposób połączenia OnionShare z siecią Tor, klikając ikonę „⚙” w "
"prawym dolnym rogu okna OnionShare, aby przejść do jego ustawień."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "Użyj ``tor`` dołączonego do OnionShare"
+msgid "Use the Tor version built into OnionShare"
+msgstr ""
#: ../../source/tor.rst:11
msgid ""
@@ -57,10 +59,48 @@ msgstr ""
"systemu ``tor``."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr ""
+
+#: ../../source/tor.rst:20
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Spróbuj automatycznej konfiguracji przy pomocy Tor Browser"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
@@ -72,11 +112,11 @@ msgstr ""
"przeglądarki Tor. Pamiętaj, że aby to zadziałało, musisz mieć otwartą "
"przeglądarkę Tor w tle podczas korzystania z OnionShare."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Używanie systemowego ``tor`` w systemie Windows"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
@@ -84,20 +124,19 @@ msgstr ""
"To dość zaawansowane. Musisz wiedzieć, jak edytować pliki tekstowe i "
"robić różne rzeczy jako administrator."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
" and copy the extracted folder to ``C:\\Program Files (x86)\\`` Rename "
"the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
msgstr ""
-"Pobierz paczkę Tor Windows Expert Bundle`z "
-"<https://www.torproject.org/download/tor/>`_. Wyodrębnij skompresowany "
-"plik i skopiuj rozpakowany folder do ``C:\\Program Files (x86)\\`` Zmień "
-"nazwę wyodrębnionego folderu zawierającego ``Data`` i ``Tor`` na ``tor-"
-"win32``."
+"Pobierz paczkę Tor Windows Expert Bundle `z <https://www.torproject.org/"
+"download/tor/>`_. Wyodrębnij skompresowany plik i skopiuj rozpakowany folder "
+"do ``C:\\Program Files (x86)\\`` Zmień nazwę wyodrębnionego folderu "
+"zawierającego ``Data`` i ``Tor`` na ``tor-win32``."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -111,7 +150,7 @@ msgstr ""
"administrator i użyj ``tor. exe --hash-password`` aby wygenerować hash "
"hasła. Na przykład::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -121,7 +160,7 @@ msgstr ""
"zignorować). W przypadku powyższego przykładu jest to "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -131,7 +170,7 @@ msgstr ""
"win32\\torrc`` i umieść w nim zahashowane hasło, zastępując "
"``HashedControlPassword`` tym, który właśnie wygenerowałeś::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -143,11 +182,11 @@ msgstr ""
"`<https://2019.www.torproject.org/docs/faq.html .en#NTService>`_). Jak "
"poniżej::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Systemowy proces ``tor`` działa teraz w systemie Windows!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -165,11 +204,11 @@ msgstr ""
"przycisk „Sprawdź połączenie z siecią Tor”. Jeśli wszystko pójdzie "
"dobrze, powinieneś zobaczyć „Połączono z kontrolerem Tor”."
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "Używanie systemowego ``tor`` w systemie macOS"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -177,15 +216,15 @@ msgstr ""
"Najpierw zainstaluj `Homebrew <https://brew.sh/>`_, jeśli jeszcze go nie "
"masz, a następnie zainstaluj Tora::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr "Teraz skonfiguruj Tora, aby zezwalał na połączenia z OnionShare::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "Uruchom systemową usługę Tor::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -202,17 +241,17 @@ msgstr ""
"ustaw hasło na hasło portu sterowania wybrane powyżej. Kliknij przycisk "
"„Sprawdź połączenie z siecią Tor”."
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
"Jeśli wszystko pójdzie dobrze, powinieneś zobaczyć „Połączono z "
"kontrolerem Tor”."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Używanie systemowego ``tor`` w systemie Linux"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -223,7 +262,7 @@ msgstr ""
"podobnej dystrybucji Linuksa, zaleca się użycie `oficjalnego repozytorium"
" Projektu Tor <https://support.torproject.org/apt/tor-deb-repo/>`_."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
@@ -233,7 +272,7 @@ msgstr ""
"``tor`` (w przypadku Debiana i Ubuntu, ``debian-tor``) i skonfiguruj "
"OnionShare, aby połączyć z Twoim systemem sterujący plik gniazda ``tor``."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -241,7 +280,7 @@ msgstr ""
"Dodaj swojego użytkownika do grupy ``debian-tor``, uruchamiając to "
"polecenie (zamień ``username`` na swoją rzeczywistą nazwę użytkownika)::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -257,34 +296,6 @@ msgstr ""
"uwierzytelniania Tor” wybierz „Bez uwierzytelniania lub uwierzytelnianie "
"za pomocą cookie”. Kliknij przycisk „Sprawdź połączenie z siecią Tor”."
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Używanie mostków Tor"
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr "Aby skonfigurować mostki, kliknij ikonę „⚙” w OnionShare."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Możesz użyć wbudowanych transportów wtykowych obfs4, wbudowanych "
-"transportów wtykowych meek_lite (Azure) lub niestandardowych mostków, "
-"które możesz uzyskać z `BridgeDB <https://bridges.torproject.org/>`_ "
-"Tora. Jeśli potrzebujesz użyć mostka, wypróbuj najpierw wbudowane obfs4."
-
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -529,3 +540,41 @@ msgstr ""
#~ "bridge."
#~ msgstr ""
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "Użyj ``tor`` dołączonego do OnionShare"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Używanie mostków Tor"
+
+#~ msgid ""
+#~ "If your access to the internet is"
+#~ " censored, you can configure OnionShare "
+#~ "to connect to the Tor network "
+#~ "using `Tor bridges "
+#~ "<https://2019.www.torproject.org/docs/bridges.html.en>`_. If "
+#~ "OnionShare connects to Tor without one,"
+#~ " you don't need to use a "
+#~ "bridge."
+#~ msgstr ""
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr "Aby skonfigurować mostki, kliknij ikonę „⚙” w OnionShare."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Możesz użyć wbudowanych transportów wtykowych"
+#~ " obfs4, wbudowanych transportów wtykowych "
+#~ "meek_lite (Azure) lub niestandardowych "
+#~ "mostków, które możesz uzyskać z "
+#~ "`BridgeDB <https://bridges.torproject.org/>`_ Tora. "
+#~ "Jeśli potrzebujesz użyć mostka, wypróbuj "
+#~ "najpierw wbudowane obfs4."
+
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/advanced.po b/docs/source/locale/pt_BR/LC_MESSAGES/advanced.po
index f22dd42e..2f9cc266 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/advanced.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/advanced.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"PO-Revision-Date: 2021-12-02 14:52+0000\n"
+"Last-Translator: Venilson Carneiro <venilsoncarneiro@pm.me>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/advanced.rst:2
@@ -57,6 +58,10 @@ msgid ""
"start opened. You'll have to manually start each service, but when you do"
" they will start with the same OnionShare address and private key."
msgstr ""
+"Quando você sair do OnionShare e depois entrar novamente, suas abas salvas "
+"começarão a ser abertas. Você terá que iniciar manualmente cada serviço, mas "
+"quando o fizer, eles começarão com o mesmo endereço e chave privada do "
+"OnionShare."
#: ../../source/advanced.rst:21
msgid ""
@@ -69,19 +74,23 @@ msgstr ""
#: ../../source/advanced.rst:26
msgid "Turn Off Private Key"
-msgstr ""
+msgstr "Desligar Chave Privada"
#: ../../source/advanced.rst:28
msgid ""
"By default, all OnionShare services are protected with a private key, "
"which Tor calls \"client authentication\"."
msgstr ""
+"Por padrão, todos os serviços do OnionShare são protegidos com uma chave "
+"privada, que o Tor chama de \"autenticação de cliente\"."
#: ../../source/advanced.rst:30
msgid ""
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
"prompt for the private key to be entered."
msgstr ""
+"Ao navegar para um serviço OnionShare no Tor Browser, o Tor Browser irá "
+"solicitar que a chave privada seja inserida."
#: ../../source/advanced.rst:32
msgid ""
@@ -90,6 +99,10 @@ msgid ""
"public can securely and anonymously send you files. In this case, it's "
"better to disable the private key altogether."
msgstr ""
+"Às vezes você pode querer que seu serviço OnionShare seja acessível ao "
+"público, como quando você quiser configurar um serviço OnionShare para que o "
+"público possa enviar arquivos de forma segura e anônima para você. Neste "
+"caso, é melhor desativar a chave privada por completo."
#: ../../source/advanced.rst:35
msgid ""
@@ -98,10 +111,14 @@ msgid ""
"server. Then the server will be public and won't need a private key to "
"view in Tor Browser."
msgstr ""
+"Para desligar a chave privada para qualquer aba, marque a caixa \"Este é um "
+"serviço público OnionShare (desativa a chave privada)\" antes de iniciar o "
+"servidor. Então o servidor será público e não precisará de uma chave privada "
+"para visualizar no Tor Browser."
#: ../../source/advanced.rst:40
msgid "Custom Titles"
-msgstr ""
+msgstr "Títulos Personalizados"
#: ../../source/advanced.rst:42
msgid ""
@@ -109,12 +126,17 @@ msgid ""
"see the default title for the type of service. For example, the default "
"title of a chat service is \"OnionShare Chat\"."
msgstr ""
+"Por padrão, quando as pessoas carregam um serviço OnionShare no Tor Browser "
+"elas vêem o título padrão para o tipo de serviço. Por exemplo, o título "
+"padrão de um serviço de bate-papo é \"OnionShare Chat\"."
#: ../../source/advanced.rst:44
msgid ""
"If you want to choose a custom title, set the \"Custom title\" setting "
"before starting a server."
msgstr ""
+"Se você quiser escolher um título personalizado, defina a configuração "
+"\"Título personalizado\" antes de iniciar um servidor."
#: ../../source/advanced.rst:47
msgid "Scheduled Times"
@@ -167,6 +189,10 @@ msgid ""
"making sure they're not available on the internet for more than a few "
"days."
msgstr ""
+"**Agendar um serviço OnionShare para parar automaticamente pode ser útil "
+"para limitar a exposição**, como quando você quiser compartilhar documentos "
+"secretos enquanto se certifica de que eles não estão disponíveis na internet "
+"por mais de alguns dias."
#: ../../source/advanced.rst:67
msgid "Command-line Interface"
@@ -207,6 +233,9 @@ msgid ""
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
"in the git repository."
msgstr ""
+"Para informações sobre como instalá-lo em diferentes sistemas operacionais, "
+"veja o arquivo `CLI readme <https://github.com/onionshare/onionshare/blob/"
+"develop/cli/README.md>`_ no repositório do git."
#: ../../source/advanced.rst:83
msgid ""
@@ -533,4 +562,3 @@ msgstr ""
#~ " services will be removed from "
#~ "OnionShare before then."
#~ msgstr ""
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/develop.po b/docs/source/locale/pt_BR/LC_MESSAGES/develop.po
index d22494a1..37262656 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/develop.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/develop.po
@@ -8,19 +8,20 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"PO-Revision-Date: 2021-10-23 18:43+0000\n"
+"Last-Translator: Gabriel Cardoso <g.cardoso@mailfence.com>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/develop.rst:2
msgid "Developing OnionShare"
-msgstr "Desenvolvendo OnionShare"
+msgstr "Desenvolvimento do OnionShare"
#: ../../source/develop.rst:7
msgid "Collaborating"
@@ -65,6 +66,8 @@ msgid ""
"OnionShare source code is to be found in this Git repository: "
"https://github.com/onionshare/onionshare"
msgstr ""
+"O código fonte do OnionShare pode ser encontrado neste repositório Git: "
+"https://github.com/onionshare/onionshare"
#: ../../source/develop.rst:19
msgid ""
@@ -74,6 +77,10 @@ msgid ""
"<https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if "
"there are any you'd like to tackle."
msgstr ""
+"Se você gostaria de contribuir com o código OnionShare, junte-se à Keybase e "
+"faça perguntas sobre o que você está pensando em trabalhar. Você também deve "
+"rever todas as \"questões abertas <https://github.com/onionshare/onionshare/"
+"issues>`_ no GitHub para ver se há alguma que você gostaria de resolver."
#: ../../source/develop.rst:22
msgid ""
@@ -99,6 +106,12 @@ msgid ""
"file to learn how to set up your development environment for the "
"graphical version."
msgstr ""
+"O OnionShare é desenvolvido em Python. Para começar, clone o repositório Git "
+"em https://github.com/onionshare/onionshare/ e depois consulte o arquivo ``"
+"cli/README.md`` para aprender como configurar seu ambiente de "
+"desenvolvimento para a versão de linha de comando, e o arquivo ``desktop/"
+"README.md` para aprender como configurar seu ambiente de desenvolvimento "
+"para a versão gráfica."
#: ../../source/develop.rst:32
msgid ""
@@ -171,6 +184,10 @@ msgid ""
"web-browser like Firefox, instead of using the Tor Browser. The private "
"key is not actually needed in local-only mode, so you can ignore it."
msgstr ""
+"Neste caso, você carrega a URL ``http://127.0.0.1:17641`` em um navegador "
+"normal, como o Firefox, em vez de utilizar o Tor Browser. A chave privada "
+"não é realmente necessária no modo apenas local, portanto, você pode "
+"ignorá-la."
#: ../../source/develop.rst:168
msgid "Contributing Translations"
@@ -488,4 +505,3 @@ msgstr ""
#~ "a normal web-browser like Firefox, "
#~ "instead of using the Tor Browser."
#~ msgstr ""
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/features.po b/docs/source/locale/pt_BR/LC_MESSAGES/features.po
index 8b9a6eb7..aa0d01d4 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/features.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/features.po
@@ -7,15 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-12-02 14:52+0000\n"
+"Last-Translator: Venilson Carneiro <venilsoncarneiro@pm.me>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -35,14 +36,16 @@ msgstr ""
#: ../../source/features.rst:8
msgid "By default, OnionShare web addresses are protected with a private key."
msgstr ""
+"Por padrão, os endereços web do OnionShare são protegidos com uma chave "
+"privada."
#: ../../source/features.rst:10
msgid "OnionShare addresses look something like this::"
-msgstr ""
+msgstr "Os endereços do OnionShare parecem com o seguinte::"
#: ../../source/features.rst:14
msgid "And private keys might look something like this::"
-msgstr ""
+msgstr "E as chaves privadas podem parecer com algo assim::"
#: ../../source/features.rst:18
msgid ""
@@ -51,6 +54,11 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
+"Você é responsável por compartilhar com segurança essa URL e chave privada "
+"utilizando um canal de comunicação de sua escolha como em uma mensagem de "
+"bate-papo criptografada, ou utilizando algo menos seguro como e-mail não "
+"criptografado, dependendo de seu \"modelo de ameaça <https://ssd.eff.org/"
+"module/your-security-plan>`_."
#: ../../source/features.rst:20
msgid ""
@@ -59,6 +67,10 @@ msgid ""
" Tor Browser will then prompt for the private key, which the people can "
"also then copy and paste in."
msgstr ""
+"As pessoas para as quais você envia o URL, depois deverão copiá-lo e colá-lo "
+"em seu `Navegador Tor <https://www.torproject.org/>`_ para acessar o serviço "
+"OnionShare. O Tor Browser solicitará então a chave privada, que as pessoas "
+"também podem então copiar e colar."
#: ../../source/features.rst:24
msgid ""
@@ -67,6 +79,10 @@ msgid ""
"until your laptop is unsuspended and on the internet again. OnionShare "
"works best when working with people in real-time."
msgstr ""
+"Se você executar o OnionShare em seu laptop para enviar arquivos a alguém, e "
+"depois o suspender antes que os arquivos sejam enviados, o serviço não "
+"estará disponível até que seu laptop fique ativo e na internet novamente. O "
+"OnionShare funciona melhor quando se trabalha com pessoas em tempo real."
#: ../../source/features.rst:26
msgid ""
@@ -92,10 +108,10 @@ msgid ""
"anonymously. Open a share tab, drag in the files and folders you wish to "
"share, and click \"Start sharing\"."
msgstr ""
-"Você pode usar o OnionShare para enviar arquivos e pastas para as pessoas"
-" de forma segura e anônima. Abra uma guia de compartilhamento, arraste os"
-" arquivos e pastas que deseja compartilhar e clique em \"Iniciar "
-"compartilhamento\"."
+"Você pode usar o OnionShare para enviar arquivos e pastas para as pessoas de "
+"forma segura e anônima. Abra uma guia de compartilhamento, arraste os "
+"arquivos e pastas que deseja compartilhar e clique em \"Começar a "
+"compartilhar\"."
#: ../../source/features.rst:35 ../../source/features.rst:112
msgid ""
@@ -114,6 +130,11 @@ msgid ""
" files have been sent (uncheck to allow downloading individual files)\" "
"box."
msgstr ""
+"Assim que alguém terminar de baixar seus arquivos, OnionShare parará "
+"automaticamente o servidor, removendo o website da internet. Para permitir "
+"que várias pessoas os baixem, desmarque a caixa \"Parar de compartilhar após "
+"o envio dos arquivos (desmarque para permitir o download de arquivos "
+"individuais)\"."
#: ../../source/features.rst:42
msgid ""
@@ -145,6 +166,10 @@ msgid ""
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
+"Agora que você tem o OnionShare, copie o endereço e a chave privada e envie-"
+"o para a pessoa que você deseja receber os arquivos. Se os arquivos "
+"precisarem ficar seguros, ou se a pessoa estiver exposta ao perigo, use um "
+"aplicativo de mensagens criptografadas."
#: ../../source/features.rst:50
msgid ""
@@ -152,10 +177,13 @@ msgid ""
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
+"Essa pessoa então deve carregar o endereço no Tor Browser. Após o login com "
+"a chave privada, os arquivos podem ser baixados diretamente de seu "
+"computador, clicando no link \"Baixar arquivos\"."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
-msgstr ""
+msgstr "Receber Arquivos e Mensagens"
#: ../../source/features.rst:57
msgid ""
@@ -164,10 +192,16 @@ msgid ""
"anonymous dropbox. Open a receive tab and choose the settings that you "
"want."
msgstr ""
+"Você pode usar o OnionShare para permitir que as pessoas enviem arquivos e "
+"mensagens anonimamente, diretamente ao seu computador, essencialmente "
+"transformando-o em uma caixa de depósitos anônima. Abra uma aba de "
+"recebimento e escolha as configurações que você deseja."
#: ../../source/features.rst:62
msgid "You can browse for a folder to save messages and files that get submitted."
msgstr ""
+"Você pode procurar por uma pasta para salvar as mensagens e os arquivos que "
+"são enviados."
#: ../../source/features.rst:64
msgid ""
@@ -175,6 +209,10 @@ msgid ""
"uploads, and you can check \"Disable uploading files\" if you want to "
"only allow submitting text messages, like for an anonymous contact form."
msgstr ""
+"Você pode marcar \"Desativar envio de texto\" se quiser permitir apenas o "
+"upload de arquivos, e você pode marcar \"Desativar o carregamento de "
+"arquivos\" se quiser permitir apenas o envio de mensagens de texto, como "
+"para um formulário de contato anônimo."
#: ../../source/features.rst:66
msgid ""
@@ -190,6 +228,18 @@ msgid ""
"your receive mode service, @webhookbot will send you a message on Keybase"
" letting you know as soon as it happens."
msgstr ""
+"Você pode verificar \"Use o webhook de notificação\" e então escolher uma "
+"URL webhook se você quiser ser notificado quando alguém enviar arquivos ou "
+"mensagens para seu serviço OnionShare. Se você usar este recurso, o "
+"OnionShare fará um pedido HTTP POST para esta URL sempre que alguém enviar "
+"arquivos ou mensagens. Por exemplo, se você quiser obter uma mensagem de "
+"texto criptografada no aplicativo de mensagens `Keybase <https://keybase.io/"
+">`_, você pode iniciar uma conversa com `@webhookbot <https://keybase.io/"
+"webhookbot>`_, digite ``!webhook create onionshare-alerts```, e ele "
+"responderá com uma URL. Use isso como a URL do webhook de notificação. Se "
+"alguém carregar um arquivo para seu serviço de modo de recebimento, @"
+"webhookbot lhe enviará uma mensagem no Keybase para que você saiba assim que "
+"acontecer."
#: ../../source/features.rst:71
msgid ""
@@ -198,6 +248,10 @@ msgid ""
" be able to submit files and messages which get uploaded to your "
"computer."
msgstr ""
+"Quando você estiver pronto, clique em \"Começar o Modo Recepção\". Isto "
+"inicia o serviço OnionShare. Qualquer pessoa que carregue este endereço em "
+"seu navegador Tor poderá enviar arquivos e mensagens que serão carregados em "
+"seu computador."
#: ../../source/features.rst:75
msgid ""
@@ -210,7 +264,7 @@ msgstr ""
#: ../../source/features.rst:77
msgid "Here is what it looks like for someone sending you files and messages."
-msgstr ""
+msgstr "Eis como parece a alguém que lhe envia arquivos e mensagens."
#: ../../source/features.rst:81
msgid ""
@@ -219,6 +273,10 @@ msgid ""
"folder on your computer, automatically organized into separate subfolders"
" based on the time that the files get uploaded."
msgstr ""
+"Quando alguém envia arquivos ou mensagens ao seu serviço de recepção, por "
+"padrão eles são salvos em uma pasta chamada \"OnionShare\" na pasta home do "
+"seu computador, automaticamente organizada em subpastas separadas com base "
+"no tempo em que os arquivos são carregados."
#: ../../source/features.rst:83
msgid ""
@@ -245,6 +303,10 @@ msgid ""
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
+"Assim como com anexos de e-mail maliciosos, é possível que alguém tente "
+"atacar seu computador carregando um arquivo malicioso em seu serviço "
+"OnionShare. O OnionShare não acrescenta nenhum mecanismo de segurança para "
+"proteger seu sistema contra arquivos maliciosos."
#: ../../source/features.rst:90
msgid ""
@@ -265,6 +327,8 @@ msgstr ""
#: ../../source/features.rst:92
msgid "However, it is always safe to open text messages sent through OnionShare."
msgstr ""
+"No entanto, é sempre seguro abrir mensagens de texto enviadas através do "
+"OnionShare."
#: ../../source/features.rst:95
msgid "Tips for running a receive service"
@@ -277,6 +341,10 @@ msgid ""
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
+"Se você quiser hospedar sua própria caixa de depósitos anônima usando "
+"OnionShare, é recomendado que você o faça em um computador separado e "
+"dedicado, sempre ligado e conectado à Internet, e não naquele que você usa "
+"regularmente."
#: ../../source/features.rst:99
msgid ""
@@ -285,6 +353,10 @@ msgid ""
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
+"Se você pretende colocar o endereço OnionShare em seu website ou perfis de "
+"mídia social, salve a aba (veja :ref:`save_tabs`) e execute-o como um "
+"serviço público (veja :ref:`turn_off_private_key`). Também é uma boa idéia "
+"dar-lhe um título personalizado (veja :ref:`custom_titles`)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -296,9 +368,9 @@ msgid ""
"the files and folders that make up the static content there, and click "
"\"Start sharing\" when you are ready."
msgstr ""
-"Para hospedar um site HTML estático com o OnionShare, abra uma guia do "
-"site, arraste os arquivos e pastas que compõem o conteúdo estático e "
-"clique em \"Iniciar compartilhamento\" quando estiver pronto."
+"Para hospedar um site HTML estático com o OnionShare, abra uma guia do site, "
+"arraste os arquivos e pastas que compõem o conteúdo estático e clique em "
+"\"Começar a compartilhar\" quando estiver pronto."
#: ../../source/features.rst:108
msgid ""
@@ -338,24 +410,41 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
+"Por padrão, o OnionShare ajuda a proteger seu website, definindo um rígido "
+"cabeçalho \"Política de Segurança de Conteúdo <https://en.wikipedia.org/wiki/"
+"Content_Security_Policy>`. Entretanto, isto impede que o conteúdo de "
+"terceiros seja carregado dentro da página da web."
#: ../../source/features.rst:121
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
"Se você deseja carregar conteúdo de sites de terceiros, como ativos ou "
-"bibliotecas JavaScript de CDNs, marque a caixa \"Não enviar o cabeçalho "
-"da Política de Segurança de Conteúdo (permite que seu site use recursos "
-"de terceiros)\" antes de iniciar o serviço."
+"bibliotecas JavaScript de CDNs, você tem duas opções:"
+
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+"Você pode desativar o envio de um cabeçalho da Política de Segurança de "
+"Conteúdo marcando a caixa \"Não enviar cabeçalho da Política de Segurança de "
+"Conteúdo (permite que seu website use recursos de terceiros)\" antes de "
+"iniciar o serviço."
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+"Você pode enviar um cabeçalho personalizado da Política de Segurança de "
+"Conteúdo."
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Dicas para executar um serviço de website"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -364,35 +453,48 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
+"Se você quiser hospedar um website de longo prazo usando OnionShare (ou "
+"seja, não apenas para mostrar algo rapidamente a alguém), é recomendável que "
+"você o faça em um computador separado e dedicado que esteja sempre ligado e "
+"conectado à Internet, e não naquele que você usa regularmente. Salve a aba ("
+"veja :ref:`save_tabs`) para que você possa retomar o site com o mesmo "
+"endereço se fechar o OnionShare e poder reabri-lo mais tarde."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
msgstr ""
+"Se seu website for destinado ao público, você deve administrá-lo como um "
+"serviço público (ver :ref:`turn_off_private_key`)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Converse anonimamente"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
-"Você pode usar o OnionShare para configurar uma sala de bate-papo privada"
-" e segura que não registra nada. Basta abrir uma guia de bate-papo e "
-"clicar em \"Iniciar servidor de bate-papo\"."
+"Você pode usar o OnionShare para configurar uma sala de bate-papo privada e "
+"segura que não registra nada. Basta abrir uma guia de bate-papo e clicar em "
+"\"Iniciar um servidor de conversas\"."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
+"Depois de iniciar o servidor, copie o endereço e a chave privada do "
+"OnionShare e envie-os para as pessoas que você quiser na sala de bate-papo "
+"anônima. Se for importante limitar exatamente quem pode participar, use um "
+"aplicativo de mensagens criptografadas para enviar o endereço e a chave "
+"privada do OnionShare."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -405,7 +507,7 @@ msgstr ""
"navegador Tor definido como \"Padrão\" ou \"Mais seguro\", em vez de \" O"
" Mais seguro\"."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -418,7 +520,7 @@ msgstr ""
"lugar, ele não é exibido de forma alguma, mesmo se outras pessoas já "
"estivessem conversando na sala."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -427,7 +529,7 @@ msgstr ""
"alterar seu nome para qualquer coisa e não há como confirmar a identidade"
" de ninguém."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -439,11 +541,11 @@ msgstr ""
"usando mensagens criptografadas, você pode ter uma certeza razoável de "
"que as pessoas que entram na sala de bate-papo são seus amigos."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Como isso é útil?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -452,7 +554,7 @@ msgstr ""
"criptografadas, para começar, qual é o ponto de uma sala de bate-papo "
"OnionShare? Deixa menos vestígios."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -463,8 +565,16 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
-
-#: ../../source/features.rst:165
+"Se você, por exemplo, enviar uma mensagem a um grupo do Signal, uma cópia de "
+"sua mensagem ficará em cada dispositivo (os smartphones e os computadores, "
+"se eles instalarem o Signal Desktop) de cada membro do grupo. Mesmo que as "
+"mensagens efêmeras sejam ativadas, é difícil confirmar que todas as cópias "
+"das mensagens são realmente excluídas de todos os dispositivos, e de "
+"qualquer outro lugar (como bancos de dados de notificações) para onde elas "
+"possam ter sido salvas. As salas de bate-papo no OnionShare não armazenam "
+"nenhuma mensagem em nenhum lugar, portanto o problema é reduzido ao mínimo."
+
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -473,12 +583,18 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
-
-#: ../../source/features.rst:169
+"As salas de bate-papo do OnionShare também podem ser úteis para pessoas que "
+"desejam conversar anonimamente e com segurança com alguém sem a necessidade "
+"de criar contas. Por exemplo, uma fonte pode enviar um endereço OnionShare "
+"para um jornalista usando um endereço de e-mail descartável e depois esperar "
+"que o jornalista entre na sala de bate-papo, tudo sem comprometer seu "
+"anonimato."
+
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Como funciona a criptografia?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -494,7 +610,7 @@ msgstr ""
" para todos os outros membros da sala de bate-papo usando WebSockets, por"
" meio de suas conexões onion E2EE."
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
@@ -1091,4 +1207,3 @@ msgstr ""
#~ "to join the chat room, all without"
#~ " compromosing their anonymity."
#~ msgstr ""
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/help.po b/docs/source/locale/pt_BR/LC_MESSAGES/help.po
index fea1761e..afce95ef 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/help.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/help.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"PO-Revision-Date: 2021-10-23 18:43+0000\n"
+"Last-Translator: Gabriel Cardoso <g.cardoso@mailfence.com>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
@@ -45,6 +46,10 @@ msgid ""
"someone else has encountered the same problem and either raised it with "
"the developers, or maybe even posted a solution."
msgstr ""
+"Se não estiver no site, por favor verifique o `GitHub issues <https://github."
+"com/onionshare/onionshare/issues>`_. É possível que outra pessoa tenha "
+"encontrado o mesmo problema e o tenha levantado com os desenvolvedores, ou "
+"talvez até mesmo postado uma solução."
#: ../../source/help.rst:15
msgid "Submit an Issue Yourself"
@@ -58,6 +63,11 @@ msgid ""
"`creating a GitHub account <https://help.github.com/articles/signing-up-"
"for-a-new-github-account/>`_."
msgstr ""
+"Se você não conseguir encontrar uma solução, desejar fazer uma pergunta ou "
+"sugerir uma nova funcionalidade, por favor `submeta um problema "
+"<https://github.com/onionshare/onionshare/issues/new>`_. Isto requer `criar "
+"uma conta GitHub <https://help.github.com/articles/"
+"signing-up-for-a-new-github-account/>`_."
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
@@ -143,4 +153,3 @@ msgstr ""
#~ "<https://help.github.com/articles/signing-up-for-a-new-"
#~ "github-account/>`_."
#~ msgstr ""
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/install.po b/docs/source/locale/pt_BR/LC_MESSAGES/install.po
index 1fce8385..9d5b2a93 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/install.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/install.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-02-23 15:50+0000\n"
-"Last-Translator: Elton Viana Gonçalves da Luz "
-"<eltongoncalves94@hotmail.com>\n"
-"Language: pt_BR\n"
+"PO-Revision-Date: 2021-12-02 14:52+0000\n"
+"Last-Translator: Gabriel Cardoso <g.cardoso@mailfence.com>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/install.rst:2
@@ -37,7 +37,7 @@ msgstr ""
#: ../../source/install.rst:12
msgid "Linux"
-msgstr ""
+msgstr "Linux"
#: ../../source/install.rst:14
msgid ""
@@ -84,7 +84,7 @@ msgstr ""
#: ../../source/install.rst:28
msgid "Command-line only"
-msgstr ""
+msgstr "Somente linha de comando"
#: ../../source/install.rst:30
msgid ""
@@ -92,6 +92,9 @@ msgid ""
"operating system using the Python package manager ``pip``. See :ref:`cli`"
" for more information."
msgstr ""
+"Você pode instalar apenas a versão de linha de comando do OnionShare em "
+"qualquer sistema operacional utilizando o gerenciador de pacotes Python "
+"``pip```. Veja :ref:`cli` para mais informações."
#: ../../source/install.rst:35
msgid "Verifying PGP signatures"
@@ -181,7 +184,6 @@ msgid "The expected output looks like this::"
msgstr "O resultado esperado se parece com isso::"
#: ../../source/install.rst:76
-#, fuzzy
msgid ""
"If you don't see ``Good signature from``, there might be a problem with "
"the integrity of the file (malicious or otherwise), and you should not "
@@ -192,8 +194,8 @@ msgstr ""
"Se você não ver 'Boa assinatura de', pode haver um problema com a "
"integridade do arquivo (malicioso ou outro) e você não deve instalar o "
"pacote. (O \"AVISO:\" mostrado acima não é um problema com o pacote, "
-"significa apenas que você ainda não definiu nenhum nível de 'confiança' "
-"da chave PGP de Micah.)"
+"significa apenas que você ainda não definiu nenhum nível de 'confiança' da "
+"chave PGP de Micah.)"
#: ../../source/install.rst:78
msgid ""
@@ -395,4 +397,3 @@ msgstr ""
#~ msgid "Install in Linux"
#~ msgstr "Instalar no Linux"
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/security.po b/docs/source/locale/pt_BR/LC_MESSAGES/security.po
index 034e0a77..d65bc1ec 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/security.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/security.po
@@ -8,14 +8,15 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-17 14:39-0700\n"
-"PO-Revision-Date: 2021-09-18 20:19+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"PO-Revision-Date: 2021-10-23 18:43+0000\n"
+"Last-Translator: Gabriel Cardoso <g.cardoso@mailfence.com>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/security.rst:2
@@ -95,6 +96,14 @@ msgid ""
"access it (unless the OnionShare user chooses make their service public "
"by turning off the private key -- see :ref:`turn_off_private_key`)."
msgstr ""
+"**Se um atacante tomar conhecimento acerca do onion service, ele ainda não "
+"poderá acessar nada.** Ataques anteriores contra a rede Tor para enumerar os "
+"serviços permitiram que o atacante descobrisse endereços privados ``.onion```"
+". Se um ataque descobrir um endereço privado do OnionShare, ele também "
+"precisará adivinhar a chave privada utilizada para autenticação do cliente "
+"para acessá-lo (a menos que o usuário do OnionShare escolha tornar seu "
+"serviço público desligando a chave privada -- veja "
+":ref:`turn_off_private_key`)."
#: ../../source/security.rst:20
msgid "What OnionShare doesn't protect against"
@@ -113,6 +122,16 @@ msgid ""
"or in person. This isn't necessary when using OnionShare for something "
"that isn't secret."
msgstr ""
+"**Comunicar o endereço OnionShare e a chave privada pode não ser seguro.** "
+"Comunicar o endereço OnionShare às pessoas é de responsabilidade do usuário "
+"do OnionShare. Se enviado de forma insegura (por exemplo, através de uma "
+"mensagem de e-mail monitorada por um atacante), um espião pode notar que o "
+"OnionShare está sendo usado. Se o espião carregar o endereço no Tor Browser "
+"enquanto o serviço ainda estiver ativo, ele poderá acessá-lo. Para evitar "
+"isso, o endereço deve ser comunicado com segurança, através de mensagem de "
+"texto criptografada (provavelmente com o modo de mensagens efêmeras ativado)"
+", e-mail criptografado ou pessoalmente. Isto não é necessário ao usar o "
+"OnionShare para algo que não é secreto."
#: ../../source/security.rst:24
msgid ""
@@ -122,6 +141,11 @@ msgid ""
"accessed over Tor, can be used to share the address. This isn't necessary"
" unless anonymity is a goal."
msgstr ""
+"**A comunicação do endereço e da chave privada do OnionShare pode não ser "
+"anônimo.** Devem ser tomadas precauções adicionais para garantir que o "
+"endereço do OnionShare seja comunicado anonimamente. Uma nova conta de e-"
+"mail ou chat, acessada apenas pelo Tor, pode ser usada para compartilhar o "
+"endereço. Isto não é necessário, a menos que o anonimato seja um objetivo."
#~ msgid "Security design"
#~ msgstr ""
@@ -315,4 +339,3 @@ msgstr ""
#~ " isn't necessary unless anonymity is "
#~ "a goal."
#~ msgstr ""
-
diff --git a/docs/source/locale/pt_BR/LC_MESSAGES/tor.po b/docs/source/locale/pt_BR/LC_MESSAGES/tor.po
index 03579d6f..342515d1 100644
--- a/docs/source/locale/pt_BR/LC_MESSAGES/tor.po
+++ b/docs/source/locale/pt_BR/LC_MESSAGES/tor.po
@@ -7,15 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:16-0700\n"
-"PO-Revision-Date: 2021-09-19 15:37+0000\n"
-"Last-Translator: souovan <souovan@protonmail.com>\n"
-"Language: pt_BR\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-12-02 14:52+0000\n"
+"Last-Translator: Venilson Carneiro <venilsoncarneiro@pm.me>\n"
"Language-Team: pt_BR <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -24,15 +25,15 @@ msgstr "Conectando ao Tor"
#: ../../source/tor.rst:4
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
-"Escolha um jeito de conectar o OnionShare ao Tor clicando no icone \"⚙\" "
-"no canto inferior direito da janela do OnionShare para acessar as opções."
+"Escolha uma forma de conectar o OnionShare ao Tor clicando no icone \"⚙\" no "
+"canto inferior direito da janela do OnionShare para acessar as opções."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "Use o ``tor`` empacotado com o OnionShare"
+msgid "Use the Tor version built into OnionShare"
+msgstr "Use a versão do Tor que está integrada no OnionShare"
#: ../../source/tor.rst:11
msgid ""
@@ -56,10 +57,63 @@ msgstr ""
"o Navegador Tor ou o sistema ``tor`` por conta própria."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr "Contornando a Censura"
+
+#: ../../source/tor.rst:20
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+"Se o seu acesso à internet for censurado, você pode configurar o OnionShare "
+"para conectar-se à rede Tor usando `Tor bridges <https://tb-manual.torproject"
+".org/bridges/>` _. Se o OnionShare se conectar à rede Tor sem o uso de uma "
+"bridge, você não precisa usa-las."
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+"Para usar uma ponte, abra a aba Configurações do Tor. Você deve selecionar "
+"\"Use the Tor version built into OnionShare\" e marcar a caixa de seleção "
+"\"Use a bridge\"."
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+"Tente usar primeiro uma ponte embutida. Recomenda-se utilizar pontes \"obfs4"
+"\" ou \"snowflake\" em vez de utilizar \"meek-azure\"."
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+"Se o uso de uma ponte integrada não funcionar, você pode solicitar uma ponte "
+"ao torproject.org. Você terá que resolver um CAPTCHA para poder solicitar "
+"uma ponte. (Isto torna mais difícil para os governos ou ISPs (provedores de "
+"internet) bloquearem o acesso às pontes Tor)."
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+"Você também tem a opção de usar uma ponte que você teve acesso a partir de "
+"uma fonte confiável."
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Tentativa de configuração automática com o navegador Tor"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
@@ -71,11 +125,11 @@ msgstr ""
"do navegador Tor. Lembre-se de que você precisa manter o navegador Tor "
"aberto em segundo plano enquanto usa o OnionShare para que isso funcione."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Usando um sistema ``tor``no Windows"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
@@ -83,7 +137,7 @@ msgstr ""
"Isso é bastante avançado. Você precisará saber como editar arquivos de "
"texto simples e fazer coisas como administrador."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -96,7 +150,7 @@ msgstr ""
"`` Renomeie a pasta extraída com `` Data`` e `` Tor`` nela para `` tor-"
"win32``."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -110,7 +164,7 @@ msgstr ""
"cmd``) como administrador e use `` tor. exe --hash-password`` para gerar "
"um hash de sua senha. Por exemplo::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -120,7 +174,7 @@ msgstr ""
"ignorar). No caso do exemplo acima, é `` 16: "
"00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -130,7 +184,7 @@ msgstr ""
"tor-win32 \\ torrc`` e coloque sua saída de senha hash nele, substituindo"
" o `` HashedControlPassword`` pelo que você acabou de gerar ::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -142,11 +196,11 @@ msgstr ""
" descrito em `<https://2019.www.torproject.org/docs/faq.html .en # "
"NTService> `_). Assim::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Você agora está executando um processo `` tor`` do sistema no Windows!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -164,11 +218,11 @@ msgstr ""
"escolheu acima. Clique no botão \"Testar conexão com o Tor\". Se tudo "
"correr bem, você deverá ver \"Conectado ao controlador Tor\"."
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "Usando um sistema `` tor`` no macOS"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -176,15 +230,15 @@ msgstr ""
"Primeiro, instale o `Homebrew <https://brew.sh/>` _ se você ainda não o "
"tiver, e então instale o Tor ::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr "Agora configure o Tor para permitir conexões do OnionShare ::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "E inicie o serviço Tor do sistema ::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -199,15 +253,15 @@ msgstr ""
" autenticação ou autenticação de cookie\". Clique no botão \"Testar "
"conexão com o Tor\"."
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr "Se tudo correr bem, você deverá ver \"Conectado ao controlador Tor\"."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Usando um sistema `` tor`` no Linux"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -219,7 +273,7 @@ msgstr ""
"`repositório oficial do Projeto Tor <https://support.torproject.org/apt"
"/tor-deb-repo/>` _."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
@@ -229,7 +283,7 @@ msgstr ""
" (no caso do Debian e Ubuntu, `` debian-tor``) e configure o OnionShare "
"para se conectar ao arquivo de soquete de controle do sistema `` tor``."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -237,7 +291,7 @@ msgstr ""
"Adicione seu usuário ao grupo `` debian-tor`` executando este comando "
"(substitua `` username`` pelo seu nome de usuário real) ::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -253,34 +307,6 @@ msgstr ""
"autenticação Tor\", escolha \"Sem autenticação ou autenticação de "
"cookie\". Clique no botão \"Testar conexão com o Tor\"."
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Usando pontes Tor"
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr "Para configurar pontes, clique no ícone \"⚙\" no OnionShare."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Você pode usar os transportes plugáveis obfs4 integrados, os transportes "
-"plugáveis meek_lite (Azure) integrados ou pontes personalizadas, que "
-"podem ser obtidas no `BridgeDB <https://bridges.torproject.org/>` _ do "
-"Tor. Se você precisa usar uma ponte, tente primeiro as obfs4 integradas."
-
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -525,3 +551,41 @@ msgstr ""
#~ "bridge."
#~ msgstr ""
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "Use o ``tor`` empacotado com o OnionShare"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Usando pontes Tor"
+
+#~ msgid ""
+#~ "If your access to the internet is"
+#~ " censored, you can configure OnionShare "
+#~ "to connect to the Tor network "
+#~ "using `Tor bridges "
+#~ "<https://2019.www.torproject.org/docs/bridges.html.en>`_. If "
+#~ "OnionShare connects to Tor without one,"
+#~ " you don't need to use a "
+#~ "bridge."
+#~ msgstr ""
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr "Para configurar pontes, clique no ícone \"⚙\" no OnionShare."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Você pode usar os transportes plugáveis"
+#~ " obfs4 integrados, os transportes plugáveis"
+#~ " meek_lite (Azure) integrados ou pontes "
+#~ "personalizadas, que podem ser obtidas no"
+#~ " `BridgeDB <https://bridges.torproject.org/>` _ "
+#~ "do Tor. Se você precisa usar uma"
+#~ " ponte, tente primeiro as obfs4 "
+#~ "integradas."
diff --git a/docs/source/locale/pt_PT/LC_MESSAGES/tor.po b/docs/source/locale/pt_PT/LC_MESSAGES/tor.po
index f73d3756..af0678ff 100644
--- a/docs/source/locale/pt_PT/LC_MESSAGES/tor.po
+++ b/docs/source/locale/pt_PT/LC_MESSAGES/tor.po
@@ -3,23 +3,25 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-10-23 18:43+0000\n"
+"Last-Translator: Gabriel Cardoso <g.cardoso@mailfence.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: pt_PT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.9-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
msgid "Connecting to Tor"
-msgstr ""
+msgstr "A Conectar ao Tor"
#: ../../source/tor.rst:4
msgid ""
@@ -443,4 +445,3 @@ msgstr ""
#~ "if you don't already have it. "
#~ "Then, install Tor::"
#~ msgstr ""
-
diff --git a/docs/source/locale/ru/LC_MESSAGES/features.po b/docs/source/locale/ru/LC_MESSAGES/features.po
index 5e4c3466..160834bf 100644
--- a/docs/source/locale/ru/LC_MESSAGES/features.po
+++ b/docs/source/locale/ru/LC_MESSAGES/features.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-25 12:36+0000\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-12-16 21:41+0000\n"
"Last-Translator: Alexander Tarasenko <alexound.login@gmail.com>\n"
"Language-Team: ru <LL@li.org>\n"
"Language: ru\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -54,11 +54,11 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
-"Вы несёте ответственность за безопасную передачу URL и секретного ключа с "
-"использованием различных каналов связи, таких как зашифрованный чат или что-"
-"то менее безопасное, как например незашифрованное сообщение электронной "
-"почты, в зависимости от вашей `модели угрозы <https://ssd.eff.org/module/"
-"your-security-plan>`_."
+"Вы несёте ответственность за безопасную передачу URL и секретного ключа с"
+" использованием различных каналов связи, таких как зашифрованный чат или "
+"что-то менее безопасное, как например незашифрованное сообщение "
+"электронной почты, в зависимости от вашей `модели угрозы "
+"<https://ssd.eff.org/module/your-security-plan>`_."
#: ../../source/features.rst:20
msgid ""
@@ -67,10 +67,11 @@ msgid ""
" Tor Browser will then prompt for the private key, which the people can "
"also then copy and paste in."
msgstr ""
-"Чтобы получить доступ к сервисам OnionShare, получатели веб-адреса должны "
-"скопировать и вставить его в адресную строку `Tor Browser <https://www."
-"torproject.org/>`_. Tor Browser запросит секретный ключ, который получатели "
-"таже могут скопировать и вставить в соответствующую форму."
+"Чтобы получить доступ к сервисам OnionShare, получатели веб-адреса должны"
+" скопировать и вставить его в адресную строку `Tor Browser "
+"<https://www.torproject.org/>`_. Tor Browser запросит секретный ключ, "
+"который получатели таже могут скопировать и вставить в соответствующую "
+"форму."
#: ../../source/features.rst:24
msgid ""
@@ -79,12 +80,12 @@ msgid ""
"until your laptop is unsuspended and on the internet again. OnionShare "
"works best when working with people in real-time."
msgstr ""
-"Если OnionShare запускается на ноутбуке и используется для отправки файлов, "
-"то, в случае перехода операционной системы в \"спящий режим\", сервис "
-"OnionShare будет недоступен до тех пор, пока у ноутбука не будет "
+"Если OnionShare запускается на ноутбуке и используется для отправки "
+"файлов, то, в случае перехода операционной системы в \"спящий режим\", "
+"сервис OnionShare будет недоступен до тех пор, пока у ноутбука не будет "
"восстановлено соединение с сетью Internet. Рекомендуется использовать "
-"OnionShare для взаимодействия с другими людьми в режиме \"реального времени\""
-"."
+"OnionShare для взаимодействия с другими людьми в режиме \"реального "
+"времени\"."
#: ../../source/features.rst:26
msgid ""
@@ -135,9 +136,9 @@ msgid ""
msgstr ""
"Как только завершится первая загрузка файлов, OnionShare автоматически "
"остановит сервер и удалит веб-сайт из сети Internet. Чтобы разрешить "
-"нескольким людями загружать Ваши файлы, снимите флажок с настройки \"Закрыть "
-"доступ к файлам после их отправки (отмените чтобы разрешить скачивание "
-"отдельных файлов)\"."
+"нескольким людями загружать Ваши файлы, снимите флажок с настройки "
+"\"Закрыть доступ к файлам после их отправки (отмените чтобы разрешить "
+"скачивание отдельных файлов)\"."
#: ../../source/features.rst:42
msgid ""
@@ -168,10 +169,11 @@ msgid ""
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
-"Теперь, когда у вас есть адрес сервиса OnionShare, его нужно скопировать и "
-"отправить получателю файлов. Если файлы должны оставаться в безопасности или "
-"получатель по той или иной причине находится под угрозой, для передачи "
-"адреса используйте приложение для обмена зашифроваными сообщениями."
+"Теперь, когда у вас есть адрес сервиса OnionShare, его нужно скопировать "
+"и отправить получателю файлов. Если файлы должны оставаться в "
+"безопасности или получатель по той или иной причине находится под "
+"угрозой, для передачи адреса используйте приложение для обмена "
+"зашифроваными сообщениями."
#: ../../source/features.rst:50
msgid ""
@@ -179,10 +181,10 @@ msgid ""
"with the private key, the files can be downloaded directly from your "
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
-"Полученный веб-адрес получателю нужно ввести в адресную строку Tor Browser. "
-"После того, как получатель пройдёт авторизацию при помощи секретного ключа, "
-"он сможет загрузить файлы прямо на свой компьютер, нажав на ссылку "
-"\"Загрузить Файлы\"."
+"Полученный веб-адрес получателю нужно ввести в адресную строку Tor "
+"Browser. После того, как получатель пройдёт авторизацию при помощи "
+"секретного ключа, он сможет загрузить файлы прямо на свой компьютер, "
+"нажав на ссылку \"Загрузить Файлы\"."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
@@ -302,10 +304,10 @@ msgid ""
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
-"Как и вредоносные приложения к письмам электронной почты, загружаемые на Ваш "
-"компьютер при помощи OnionShare файлы могут быть использованы для атаки. "
-"OnionShare не содержит какого-либо защитного механизма операционной системы "
-"от вредоносных файлов."
+"Как и вредоносные приложения к письмам электронной почты, загружаемые на "
+"Ваш компьютер при помощи OnionShare файлы могут быть использованы для "
+"атаки. OnionShare не содержит какого-либо защитного механизма "
+"операционной системы от вредоносных файлов."
#: ../../source/features.rst:90
msgid ""
@@ -340,8 +342,8 @@ msgid ""
" and connected to the internet, and not on the one you use on a regular "
"basis."
msgstr ""
-"Если нужно разместить свой собственный анонимный почтовый ящик для приёма "
-"документов, рекомендуется сделать это при помощи отдельного компьютера, "
+"Если нужно разместить свой собственный анонимный почтовый ящик для приёма"
+" документов, рекомендуется сделать это при помощи отдельного компьютера, "
"который не используется для обычной работы и постоянно подключён к сети "
"питания и Интернету."
@@ -352,11 +354,11 @@ msgid ""
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
-"Если планируется разместить адрес сервиса OnionShare на своём веб-сайте или "
-"в социальных сетях, рекомендуется сохранить вкладку (подробнее "
+"Если планируется разместить адрес сервиса OnionShare на своём веб-сайте "
+"или в социальных сетях, рекомендуется сохранить вкладку (подробнее "
":ref:`save_tabs`) и сделать сервис общедоступным (подробнее "
-":ref:`turn_off_private_key`). Также рекомендуется дать ему какое-то название "
-"(подробнее :ref:`custom_titles`)."
+":ref:`turn_off_private_key`). Также рекомендуется дать ему какое-то "
+"название (подробнее :ref:`custom_titles`)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -413,29 +415,40 @@ msgid ""
"page."
msgstr ""
"По умолчанию OnionShare помогает защитить веб-сайт пользователя, "
-"устанавливая строгую `Политика безопасности контента <https://en.wikipedia."
-"org/wiki/Content_Security_Policy>`_ . Тем не менее, это исключает "
-"возможность загрузки и использования на веб-странице содержимого из "
-"сторонних источников."
+"устанавливая строгую `Политика безопасности контента "
+"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_ . Тем не менее,"
+" это исключает возможность загрузки и использования на веб-странице "
+"содержимого из сторонних источников."
#: ../../source/features.rst:121
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
-"Если требуется загрузить и использовать содержимое из сторонних "
-"иточников, например активы или библиотеки JavaScript из CDN, то нужно "
-"установить флажок \"Не отправлять заголовок политики безопасности "
-"контента\" перед запуском сервиса. Это позволит вебсайту использовать "
-"сторонние источники содержимого."
+"Если требуется загрузить и использовать содержимое из сторонних иточников, "
+"например активы или библиотеки JavaScript из CDN, у вас есть две возможности:"
+
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+"Вы можете отключить отправку заголовка \"Content Security Policy\" отметив "
+"флажок \"Не отправлять заголовок Contenct Security Policy (разрешить сайту "
+"использовать сторонние ресурсы)\" перед запуском сервиса."
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr ""
+"Вы можете отправить самостоятельно настроенный заголовок Content Security "
+"Policy."
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Советы по использованию сервсиа размещения вебсайтов"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -451,7 +464,7 @@ msgstr ""
"чтобы в дальнейшем можно было восстановить доступ к веб-сайту с тем же "
"адресом, на случай перезапуска OnionShare."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
@@ -459,11 +472,11 @@ msgstr ""
"Если планируется сделать сайт общедоступным, рекомендуется отключить "
"использование секретного ключа (подробнее :ref:`turn_off_private_key`)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Анонимный чат"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
@@ -472,19 +485,20 @@ msgstr ""
"чата, который не хранит какие-либо логи. Для этого, нужно открыть вкладку"
" чата и нажать кнопку \"Запустить сервер чата\"."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
"important to limit exactly who can join, use an encrypted messaging app "
"to send out the OnionShare address and private key."
msgstr ""
-"После запуска сервера, нужно скопировать адрес OnionShare и секретный ключ и "
-"и отправить людям, с которыми планируется анонимная переписка. Если нужно "
-"ограничить круг участников чата, используйте для рассылки адреса и "
-"секретного ключа OnionShare приложение для обмена зашифрованными сообщениями."
+"После запуска сервера, нужно скопировать адрес OnionShare и секретный "
+"ключ и и отправить людям, с которыми планируется анонимная переписка. "
+"Если нужно ограничить круг участников чата, используйте для рассылки "
+"адреса и секретного ключа OnionShare приложение для обмена зашифрованными"
+" сообщениями."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -496,7 +510,7 @@ msgstr ""
"предполагаемому участнику необходимо выставить уровень безопасности "
"\"Обычный\" или \"Высокий\", вместо \"Высший\"."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -509,7 +523,7 @@ msgstr ""
"сохраняется, это имя нигде не отбражается, даже если в чате уже были "
"участники."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -518,7 +532,7 @@ msgstr ""
"изменить своё имя и нет никакого способа определить/подтвердить личность "
"такого участника."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -530,11 +544,11 @@ msgstr ""
"сообщений, можно быть достаточно уверенным, что в чате присутствуют "
"друзья."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Насколько это полезно?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -542,7 +556,7 @@ msgstr ""
"Какая может быть польза от чата OnionShare при наличии приложений для "
"обмена зашифрованными сообщениями? OnionShare оставляет меньше следов."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -553,14 +567,15 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
-"Если, например, вы отправите сообщение в групповой чат мессенджера Signal, "
-"копия вашего сообщения окажется на устройстве каждого из участников ("
-"смартфоны и/или персональные комьютеры). Даже если включен режим \"исчезающих"
-" сообщений\", нельзя быть уверенным в том, что они окажутся удалены со всех "
-"устройств или из других мест (базы данных уведомлений и т.д.) Чаты "
-"OnionShare нигде не хранятся, так что возможные риски сведены к минимуму."
-
-#: ../../source/features.rst:165
+"Если, например, вы отправите сообщение в групповой чат мессенджера "
+"Signal, копия вашего сообщения окажется на устройстве каждого из "
+"участников (смартфоны и/или персональные комьютеры). Даже если включен "
+"режим \"исчезающих сообщений\", нельзя быть уверенным в том, что они "
+"окажутся удалены со всех устройств или из других мест (базы данных "
+"уведомлений и т.д.) Чаты OnionShare нигде не хранятся, так что возможные "
+"риски сведены к минимуму."
+
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -570,16 +585,17 @@ msgid ""
"anonymity."
msgstr ""
"OnionShare также может быть полезен для людей, которым нужна анонимная и "
-"безопасная переписка без создания каких-либо учётных записей. Например, с "
-"журналистом может связаться 'источник': прислать адрес OnionShare при помощи "
-"временной электронной почты и затем подождать пока журналист, присоединится "
-"к чату. При таком сценарии источник не подвергает опасности свою анонимность."
+"безопасная переписка без создания каких-либо учётных записей. Например, с"
+" журналистом может связаться 'источник': прислать адрес OnionShare при "
+"помощи временной электронной почты и затем подождать пока журналист, "
+"присоединится к чату. При таком сценарии источник не подвергает опасности"
+" свою анонимность."
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Как работает шифрование?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -594,7 +610,7 @@ msgstr ""
"onion соединение. Далее, сообщение рассылается всем участникам чата при "
"помощи WebSockets, также при использовании E2EE и onion соединений."
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
diff --git a/docs/source/locale/ru/LC_MESSAGES/tor.po b/docs/source/locale/ru/LC_MESSAGES/tor.po
index edcc7566..3320f6ee 100644
--- a/docs/source/locale/ru/LC_MESSAGES/tor.po
+++ b/docs/source/locale/ru/LC_MESSAGES/tor.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-23 15:36+0000\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-12-17 04:52+0000\n"
"Last-Translator: Alexander Tarasenko <alexound.login@gmail.com>\n"
"Language-Team: ru <LL@li.org>\n"
"Language: ru\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -26,16 +26,16 @@ msgstr "Подключение к сети Тор"
#: ../../source/tor.rst:4
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
-"Чтобы выбрать способ подключения OnionShare к сети Tor, нажмите на значок"
-" \"⚙\" в нижнем правом углу окна OnionShare. Так Вы попадёте в настройки "
+"Чтобы выбрать способ подключения OnionShare к сети Tor, нажмите на значок \"⚙"
+"\" в нижнем правом углу окна OnionShare. Так Вы попадёте в настройки "
"приложения."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "Использование версии ``tor``, которая поставляется вместе с OnionShare"
+msgid "Use the Tor version built into OnionShare"
+msgstr "Использовать версию Tor встроенную в OnionShare"
#: ../../source/tor.rst:11
msgid ""
@@ -58,10 +58,63 @@ msgstr ""
"использование, системного ``tor`` или Tor Browser."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr "Обойти цензуру"
+
+#: ../../source/tor.rst:20
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+"Если доступ к сети Интернет подвергается цензуре, можно настроить "
+"подключение OnionShare к сети Tor при помощи `мостов Tor` <https://2019.www."
+"torproject.org/docs/bridges.html.en>`_. Если OnionShare успешно подключается "
+"к сети Tor, использование сетевого моста необязательно."
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+"Чтобы изспользовать мост, откройте вкладку \"Настройки Tor\". Нужно выбрать "
+"пункт \"Использовать версию Tor встроенную в OnionShare\" и установить "
+"флажок \"Использовать мост\"."
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+"Попробуйте сначала использовать встроенные мосты. Бльше рекомендуется "
+"использование мостов `obfs4` или `snowflake`, нежели `meek-azure`."
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+"Если встроенный мост не работает, вы можете запросить мост с сайта "
+"torproject.org. Вам придётся пройти проверку CAPTCHA чтобы запросить мост. ("
+"Это затрудняет правительству и поставщикам услуг интернета блокировку мостов "
+"Tor.)"
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+"Также вы можете использовать мост, о котором вы узнали из доверенного "
+"источника."
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Попытка автоматической конфигурации при помощи Tor Browser"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
@@ -75,11 +128,11 @@ msgstr ""
"запущен в фоновом режиме в течение всего времени использования "
"OnionShare."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Использование системного процесса ``tor`` в ОС Windows"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
@@ -88,7 +141,7 @@ msgstr ""
"редактирование конфигурационных файлов и администрирование операционной "
"системы."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -100,7 +153,7 @@ msgstr ""
"скопируйте содержимое в директорию ``C:\\Program Files (x86)\\``. "
"Переименуйте директорию, содержащую ``Data`` и ``Tor`` в ``tor-win32``."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -114,7 +167,7 @@ msgstr ""
"``cmd`` с правами администратора и выполните команду ``tor.exe --hash-"
"password`` чтобы захешировать придуманный пароль. Например::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -124,7 +177,7 @@ msgstr ""
"(которые можно проигнорировать). В примере, показанном выше, это "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -134,7 +187,7 @@ msgstr ""
"win32\\torrc`` и записать туда только что созданный, захешированный "
"пароль, заменив ``HashedControlPassword``::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -147,11 +200,11 @@ msgstr ""
"<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_. "
"Например::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Теперь ``tor`` запущен как системный процесс в ОС Windows!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -170,11 +223,11 @@ msgstr ""
"кнопку \"Проверить подключение к сети Tor\". Если всё прошло хорошо, то "
"появится сообщение \"Подключено к контроллеру Tor\"."
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "Использование системного процесса ``tor`` в macOS"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -182,15 +235,15 @@ msgstr ""
"Прежде всего, при необходимости установите `Homebrew <https://brew.sh/>`_"
" . Затем установите Tor::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr "Теперь настройте Tor так, чтобы OnionShare мог его использовать::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "И запустите сервис Tor::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -206,17 +259,17 @@ msgstr ""
"cookie-аутентификация\". Нажмите кнопку \"Проверить подключение к сети "
"Tor\"."
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
"Если всё прошло хорошо, то появится сообщение \"Подключено к контроллеру "
"Tor\"."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Использование системного ``tor`` в ОС Linux"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -228,7 +281,7 @@ msgstr ""
"репозиторий <https://support.torproject.org/apt/tor-deb-repo/>`_ Tor "
"Project."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
@@ -239,7 +292,7 @@ msgstr ""
"``debian-tor``) и настроить подключение OnionShare к системному процессу "
"``tor`` при помощи файла сокета."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -247,7 +300,7 @@ msgstr ""
"Добавьте свого пользователя в группу ``debian-tor`` при помощи команды "
"(измените ``username`` на имя своего пользователя))::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -264,41 +317,6 @@ msgstr ""
"cookie-аутентификация\". Нажмите кнопку \"Проверить подключение к сети "
"Tor\"."
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Использование мостов \"Tor\""
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-"В случае, если доступ к сети Интернет подвергается цензуре, можно настроить "
-"подключение OnionShare к сети Tor при помощи `мостов Tor` <https://2019.www."
-"torproject.org/docs/bridges.html.en>`_. В случае, если OnionShare успешно "
-"подключается к сети Tor, использование сетевого моста необязательно."
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr ""
-"Чтобы настроить использование мостов, нажмите на значок \"⚙\" в "
-"OnionShare."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Возможно использование встроенных obfs4 или meek_lite(Azure) подключаемых"
-" транспортов или пользовательских мостов, настройки которых можно "
-"получить здесь: `Tor's BridgeDB <https://bridges.torproject.org/>`_. Если"
-" использование мостов необходимо, рекомендуется в первую очередь "
-"попробовать транспорты obfs4."
-
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -531,3 +549,32 @@ msgstr ""
#~ "if you don't already have it. "
#~ "Then, install Tor::"
#~ msgstr ""
+
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "Использование версии ``tor``, которая поставляется вместе с OnionShare"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Использование мостов \"Tor\""
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr ""
+#~ "Чтобы настроить использование мостов, нажмите"
+#~ " на значок \"⚙\" в OnionShare."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Возможно использование встроенных obfs4 или"
+#~ " meek_lite(Azure) подключаемых транспортов или"
+#~ " пользовательских мостов, настройки которых "
+#~ "можно получить здесь: `Tor's BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. Если использование"
+#~ " мостов необходимо, рекомендуется в первую"
+#~ " очередь попробовать транспорты obfs4."
diff --git a/docs/source/locale/sr@latin/LC_MESSAGES/index.po b/docs/source/locale/sr@latin/LC_MESSAGES/index.po
index bac96959..32898daf 100644
--- a/docs/source/locale/sr@latin/LC_MESSAGES/index.po
+++ b/docs/source/locale/sr@latin/LC_MESSAGES/index.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:46-0700\n"
-"PO-Revision-Date: 2021-03-02 16:50+0000\n"
-"Last-Translator: Filipovic Dragan <filipovic@tutanota.com>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: tics tics <ticse@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sr@latin\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.5\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/index.rst:2
@@ -29,3 +29,6 @@ msgid ""
"OnionShare is an open source tool that lets you securely and anonymously "
"share files, host websites, and chat with friends using the Tor network."
msgstr ""
+"OnionShare je alat otvorenog koda koji vam omogućuje sigurno i anonimno "
+"deljenje datoteka, hosting web stranica i ćaskanje sa prijateljima koristeći "
+"Tor mrežu."
diff --git a/docs/source/locale/sr@latin/LC_MESSAGES/install.po b/docs/source/locale/sr@latin/LC_MESSAGES/install.po
index 8a1e3472..72107f80 100644
--- a/docs/source/locale/sr@latin/LC_MESSAGES/install.po
+++ b/docs/source/locale/sr@latin/LC_MESSAGES/install.po
@@ -3,33 +3,38 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: tics tics <ticse@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: sr@latin\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/install.rst:2
msgid "Installation"
-msgstr ""
+msgstr "Instalacija"
#: ../../source/install.rst:5
msgid "Windows or macOS"
-msgstr ""
+msgstr "Windows ili macOS"
#: ../../source/install.rst:7
msgid ""
"You can download OnionShare for Windows and macOS from the `OnionShare "
"website <https://onionshare.org/>`_."
msgstr ""
+"OnionShare za Windows i macOS možete preuzeti sa `OnionShare web stranice "
+"https://onionshare.org/`_."
#: ../../source/install.rst:12
msgid "Install in Linux"
@@ -43,32 +48,43 @@ msgid ""
"that you'll always use the newest version and run OnionShare inside of a "
"sandbox."
msgstr ""
+"Postoje različiti načini za instaliranje OnionShare za Linux, ali "
+"preporučeni način je korišćenje ili `Flatpak https://flatpak.org/`_ ili `"
+"Snap https://snapcraft.io/`_ paketa. Flatpak i Snap osiguravaju da ćete uvek "
+"koristiti najnoviju verziju i pokrenuti OnionShare unutar sandbox-a."
#: ../../source/install.rst:17
msgid ""
"Snap support is built-in to Ubuntu and Fedora comes with Flatpak support,"
" but which you use is up to you. Both work in all Linux distributions."
msgstr ""
+"Snap podrška je ugrađena u Ubuntu, a Fedora dolazi sa Flatpak podrškom, ali "
+"koju ćete koristiti je na vama. Oba rade u svim Linux distribucijama."
#: ../../source/install.rst:19
msgid ""
"**Install OnionShare using Flatpak**: "
"https://flathub.org/apps/details/org.onionshare.OnionShare"
msgstr ""
+"**Instalirajte OnionShare koristeći Flatpak**: https://flathub.org/apps/"
+"details/org.onionshare.OnionShare"
#: ../../source/install.rst:21
msgid "**Install OnionShare using Snap**: https://snapcraft.io/onionshare"
msgstr ""
+"**Instalirajte OnionShare koristeći Snap**: https://snapcraft.io/onionshare"
#: ../../source/install.rst:23
msgid ""
"You can also download and install PGP-signed ``.flatpak`` or ``.snap`` "
"packages from https://onionshare.org/dist/ if you prefer."
msgstr ""
+"Takođe možete preuzeti i instalirati PGP-potpisane ``.flatpak`` ili ``.snap``"
+" pakete sa https://onionshare.org/dist/ ako želite."
#: ../../source/install.rst:28
msgid "Verifying PGP signatures"
-msgstr ""
+msgstr "Provera PGP potpisa"
#: ../../source/install.rst:30
msgid ""
@@ -78,10 +94,14 @@ msgid ""
"binaries include operating system-specific signatures, and you can just "
"rely on those alone if you'd like."
msgstr ""
+"Možete proveriti da li je paket koji preuzmete legitiman i da nije menjan "
+"tako što ćete provjeriti njegov PGP potpis. Za Windows i macOS, ovaj korak "
+"je opcija i pruža zaštitu: OnionShare binarne datoteke uključuju potpise "
+"specifične za operativni sistem i možete se osloniti samo na njih ako želite."
#: ../../source/install.rst:34
msgid "Signing key"
-msgstr ""
+msgstr "Ključ za potpisivanje"
#: ../../source/install.rst:36
msgid ""
@@ -91,6 +111,10 @@ msgid ""
"<https://keys.openpgp.org/vks/v1/by-"
"fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73>`_."
msgstr ""
+"Pakete je potpisao Micah Lee, glavni programer, koristeći svoj PGP javni "
+"ključ sa otiskom prsta ``927F419D7EC82C2F149C1BD1403C2657CD994F73``. Možete "
+"preuzeti Micahov ključ `sa servera ključeva keys.openpgp.org https://keys."
+"openpgp.org/vks/v1/by-fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73`_."
#: ../../source/install.rst:38
msgid ""
@@ -98,10 +122,13 @@ msgid ""
"probably want `GPGTools <https://gpgtools.org/>`_, and for Windows you "
"probably want `Gpg4win <https://www.gpg4win.org/>`_."
msgstr ""
+"Morate imati instaliran GnuPG za proveru potpisa. Za macOS vam verovatno "
+"treba `GPGTools https://gpgtools.org/`_, a za Windows `Gpg4win https://www."
+"gpg4win.org/`_."
#: ../../source/install.rst:41
msgid "Signatures"
-msgstr ""
+msgstr "Potpisi"
#: ../../source/install.rst:43
msgid ""
@@ -111,10 +138,15 @@ msgid ""
"OnionShare. You can also find them on the `GitHub Releases page "
"<https://github.com/micahflee/onionshare/releases>`_."
msgstr ""
+"Potpise (kao ``.asc`` datoteke), kao i Windows, macOS, Flatpak, Snap i "
+"izvorne pakete, možete pronaći na https://onionshare.org/dist/ u "
+"direktorijumima imenovanim za svaku verziju OnionShare. Možete ih pronaći i "
+"na stranici `GitHub izdanja https://github.com/micahflee/onionshare/"
+"releases`_."
#: ../../source/install.rst:47
msgid "Verifying"
-msgstr ""
+msgstr "Verifikacija"
#: ../../source/install.rst:49
msgid ""
@@ -122,14 +154,17 @@ msgid ""
"downloaded the binary and and ``.asc`` signature, you can verify the "
"binary for macOS in a terminal like this::"
msgstr ""
+"Nakon što uvezete Micahov javni ključ u svoj GnuPG , preuzmete binarni i i ``"
+".asc`` potpis, možete proveriti binarni ključ za macOS u terminalu na "
+"sledeći način:"
#: ../../source/install.rst:53
msgid "Or for Windows, in a command-prompt like this::"
-msgstr ""
+msgstr "Ili za Windows, u komandnoj liniji poput ove:"
#: ../../source/install.rst:57
msgid "The expected output looks like this::"
-msgstr ""
+msgstr "Očekivani ispis izgleda ovako:"
#: ../../source/install.rst:69
msgid ""
@@ -147,6 +182,10 @@ msgid ""
" the `Tor Project <https://support.torproject.org/tbb/how-to-verify-"
"signature/>`_ may be useful."
msgstr ""
+"Ako želite saznati više o proveri PGP potpisa, uputstva za `Qubes OS "
+"https://www.qubes-os.org/security/verifying-signatures/`_ i `Tor Project "
+"https://support.torproject. org/tbb/how-to-verify-signature/`_ mogu biti "
+"korisna."
#~ msgid "Install on Windows or macOS"
#~ msgstr ""
@@ -333,4 +372,3 @@ msgstr ""
#~ "Project <https://support.torproject.org/tbb/how-to-"
#~ "verify-signature/>`_ may be helpful."
#~ msgstr ""
-
diff --git a/docs/source/locale/sr@latin/LC_MESSAGES/tor.po b/docs/source/locale/sr@latin/LC_MESSAGES/tor.po
index f73d3756..90160a42 100644
--- a/docs/source/locale/sr@latin/LC_MESSAGES/tor.po
+++ b/docs/source/locale/sr@latin/LC_MESSAGES/tor.po
@@ -3,23 +3,26 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-27 22:53+0000\n"
+"Last-Translator: tics tics <ticse@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: sr@latin\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
msgid "Connecting to Tor"
-msgstr ""
+msgstr "Povezivanje sa Tor-om"
#: ../../source/tor.rst:4
msgid ""
@@ -36,6 +39,9 @@ msgid ""
"This is the default, simplest and most reliable way that OnionShare "
"connects to Tor. For this reason, it's recommended for most users."
msgstr ""
+"Ovo je podrazumevani, naj jednostavniji i najpouzdaniji način na koji se "
+"OnionShare povezuje sa Tor-om. Iz tog razloga se preporučuje većini "
+"korisnika."
#: ../../source/tor.rst:14
msgid ""
@@ -44,10 +50,13 @@ msgid ""
"with other ``tor`` processes on your computer, so you can use the Tor "
"Browser or the system ``tor`` on their own."
msgstr ""
+"Kada otvorite OnionShare, on pokreće već konfigurisani ``tor`` proces u "
+"pozadini koji OnionShare koristi. Ne ometa druge ``tor`` procese na vašem "
+"računaru, tako da možete koristiti Tor Browser ili sistem ``tor`` nezavisno."
#: ../../source/tor.rst:18
msgid "Attempt auto-configuration with Tor Browser"
-msgstr ""
+msgstr "Pokušaj automatsku konfiguraciju Tor Browser-a"
#: ../../source/tor.rst:20
msgid ""
@@ -56,16 +65,22 @@ msgid ""
"process from the Tor Browser. Keep in mind you need to keep Tor Browser "
"open in the background while you're using OnionShare for this to work."
msgstr ""
+"Ako ste `preuzeli Tor Browser https://www.torproject.org`_ i ne želite da se "
+"pokreću dva ``tor`` procesa, možete koristiti proces ``tor`` iz Tor Browser-"
+"a. Imajte na umu da trebate držati Tor Browser otvoren u pozadini dok "
+"koristite OnionShare da bi ovo funkcionisalo."
#: ../../source/tor.rst:24
msgid "Using a system ``tor`` in Windows"
-msgstr ""
+msgstr "Korišćenje sistemskog ``tor`` u Windows-u"
#: ../../source/tor.rst:26
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
msgstr ""
+"Ovo je dosta napredno. Morate znati kako da uređujete tekstualne datoteke uz "
+"korišćenje administratorskih privilegija."
#: ../../source/tor.rst:28
msgid ""
@@ -74,6 +89,10 @@ msgid ""
" and copy the extracted folder to ``C:\\Program Files (x86)\\`` Rename "
"the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
msgstr ""
+"Preuzmite Tor Windows Expert Bundle `sa https://www.torproject.org/download/"
+"tor/`_. Otpakujte kompresovanu datoteku i kopirajte dobijeni direktorijum u "
+"``C:\\\\Program Files (x86)\\\\`` Preimenujte direktorijum koji sadrži "
+"``Data`` i ``Tor`` u novo ime``tor-win32``."
#: ../../source/tor.rst:32
msgid ""
@@ -83,6 +102,11 @@ msgid ""
"administrator, and use ``tor.exe --hash-password`` to generate a hash of "
"your password. For example::"
msgstr ""
+"Napravite lozinku za control port. (Korišćenje 7 reči u nizu kao što je ``"
+"comprised stumble rummage work avenging construct volatile`` je dobra ideja "
+"za lozinku.) Sada otvorite komandnu liniju (``cmd``) kao administrator i "
+"koristite ``tor. exe --hash-password`` da generišete hash vaše lozinke. Na "
+"primer::"
#: ../../source/tor.rst:39
msgid ""
@@ -90,6 +114,9 @@ msgid ""
"can ignore). In the case of the above example, it is "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
msgstr ""
+"Izlaz hashed lozinke se prikazuje nakon nekih upozorenja (koja možete "
+"zanemariti). U slučaju gornjeg primera, to je "
+"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
#: ../../source/tor.rst:41
msgid ""
@@ -97,6 +124,9 @@ msgid ""
"win32\\torrc`` and put your hashed password output in it, replacing the "
"``HashedControlPassword`` with the one you just generated::"
msgstr ""
+"Sada kreirajte novu tekstualnu datoteku na ``C:\\\\Program Files (x86"
+")\\\\tor-win32\\\\torrc`` i unesite svoju hashed lozinku u nju, zamenjujući "
+"``HashedControlPassword`` s onom koju ste upravo generisali::"
#: ../../source/tor.rst:46
msgid ""
@@ -105,10 +135,14 @@ msgid ""
"`<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Like "
"this::"
msgstr ""
+"U administratorskoj komandnoj liniji, instalirajte ``tor`` kao servis "
+"koristeći odgovarajuću datoteku ``torrc`` koju ste upravo kreirali (kako je "
+"opisano u `https://2019.www.torproject.org/docs/faq.html. en#NTService`_). "
+"Kao ovo::"
#: ../../source/tor.rst:50
msgid "You are now running a system ``tor`` process in Windows!"
-msgstr ""
+msgstr "Sada imate pokrenut sistemski ``tor`` proces u Windows-u!"
#: ../../source/tor.rst:52
msgid ""
@@ -120,24 +154,33 @@ msgid ""
"Connection to Tor\" button. If all goes well, you should see \"Connected "
"to the Tor controller\"."
msgstr ""
+"Otvorite OnionShare i kliknite na ikonu '⚙' u njemu. Pod 'Kako bi se "
+"OnionShare trebao povezati s Torom?' odaberite 'Poveži se pomoću kontrolnog "
+"porta' i postavite 'Kontrolni port' na ``127.0.0.1`` i 'Port' na ``9051``. "
+"Pod 'Postavke autentifikacije Tor-a' odaberite 'Lozinka' i postavite lozinku "
+"na lozinku kontrolnog porta koju ste odabrali gore. Kliknite na dugme 'Test "
+"Connection to Tor'. Ako sve prođe kako treba, trebali biste videti 'Povezano "
+"s Tor kontrolerom'."
#: ../../source/tor.rst:61
msgid "Using a system ``tor`` in macOS"
-msgstr ""
+msgstr "Korišćenje sistema ``tor`` u macOS-u"
#: ../../source/tor.rst:63
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
msgstr ""
+"Prvo instalirajte `Homebrew https://brew.sh/`_ ako ga već nemate, a zatim "
+"instalirajte Tor::"
#: ../../source/tor.rst:67
msgid "Now configure Tor to allow connections from OnionShare::"
-msgstr ""
+msgstr "Sada konfigurišite Tor da dozvoli konekcije sa OnionShare::"
#: ../../source/tor.rst:74
msgid "And start the system Tor service::"
-msgstr ""
+msgstr "I pokrenite sistemski Tor servis::"
#: ../../source/tor.rst:78
msgid ""
@@ -147,14 +190,21 @@ msgid ""
"Under \"Tor authentication settings\" choose \"No authentication, or "
"cookie authentication\". Click the \"Test Connection to Tor\" button."
msgstr ""
+"Otvorite OnionShare i kliknite na ikonu '⚙' u njemu. Pod 'Kako bi se "
+"OnionShare trebao povezati s Torom?' odaberite 'Poveži se pomoću datoteke "
+"socketa' i postavite datoteku socketa na ``/usr/local/var/run/tor/control."
+"socket``. U odeljku 'Tor autentifikacijske postavke' odaberite 'Bez "
+"autentifikacije ili autentifikacije putem kolačića'. Kliknite na dugme 'Test "
+"Connection to Tor'."
#: ../../source/tor.rst:84 ../../source/tor.rst:104
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
+"Ako sve prođe kako treba, trebali biste videti 'Povezano s Tor kontrolerom'."
#: ../../source/tor.rst:87
msgid "Using a system ``tor`` in Linux"
-msgstr ""
+msgstr "Korišćenje sistemskog ``tor`` na Linuxu"
#: ../../source/tor.rst:89
msgid ""
@@ -163,6 +213,9 @@ msgid ""
"`official repository <https://support.torproject.org/apt/tor-deb-"
"repo/>`_."
msgstr ""
+"Prvo instalirajte ``tor`` paket. Ako koristite Debian, Ubuntu ili sličnu "
+"Linux distribuciju, preporučuje se korišćenje `official repository projekta "
+"Tor https://support.torproject.org/apt/tor-deb-repo/`_."
#: ../../source/tor.rst:91
msgid ""
@@ -170,12 +223,17 @@ msgid ""
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
"connect to your system ``tor``'s control socket file."
msgstr ""
+"Zatim dodajte svog korisnika u grupu koja pokreće proces ``tor`` (u slučaju "
+"Debiana i Ubuntua, ``debian-tor``) i konfigurišite OnionShare da se poveže "
+"sa vašim sistemom ``tor`` control socket file."
#: ../../source/tor.rst:93
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
msgstr ""
+"Dodajte svog korisnika u grupu ``debian-tor`` pokretanjem ove komande ("
+"zamenite ``username`` svojim stvarnim korisničkim imenom)::"
#: ../../source/tor.rst:97
msgid ""
@@ -186,6 +244,12 @@ msgid ""
"\"No authentication, or cookie authentication\". Click the \"Test "
"Connection to Tor\" button."
msgstr ""
+"Ponovo pokrenite računar. Nakon što se ponovo pokrene, otvorite OnionShare i "
+"kliknite na ikonu '⚙' u njemu. Pod 'Kako bi se OnionShare trebao povezati s "
+"Torom?' izaberite 'Poveži se koristeći socket file'. Postavite socket file "
+"na ``/var/run/tor/control``. U odeljku 'Tor autentifikacijske postavke' "
+"odaberite 'Bez autentifikacije ili autentifikacije putem kolačića'. Kliknite "
+"na dugme 'Test Connection to Tor'."
#: ../../source/tor.rst:107
msgid "Using Tor bridges"
@@ -443,4 +507,3 @@ msgstr ""
#~ "if you don't already have it. "
#~ "Then, install Tor::"
#~ msgstr ""
-
diff --git a/docs/source/locale/tr/LC_MESSAGES/features.po b/docs/source/locale/tr/LC_MESSAGES/features.po
index 9e1f5e7f..430183a2 100644
--- a/docs/source/locale/tr/LC_MESSAGES/features.po
+++ b/docs/source/locale/tr/LC_MESSAGES/features.po
@@ -7,16 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-10-02 12:36+0000\n"
-"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-11-25 15:52+0000\n"
+"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
"Language-Team: tr <LL@li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -36,8 +36,7 @@ msgstr ""
#: ../../source/features.rst:8
msgid "By default, OnionShare web addresses are protected with a private key."
-msgstr ""
-"Varsayılan olarak, OnionShare web adresleri kişisel bir anahtarla korunur."
+msgstr "Varsayılan olarak, OnionShare web adresleri kişisel bir anahtarla korunur."
#: ../../source/features.rst:10
msgid "OnionShare addresses look something like this::"
@@ -54,11 +53,11 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
-"`Tehdit modelinize <https://ssd.eff.org/module/your-security-plan>`_ bağlı "
-"olarak, bu adresi ve kişisel anahtarı, şifreli bir sohbet iletisi gibi "
-"seçtiğiniz bir iletişim kanalını kullanarak veya şifrelenmemiş e-posta gibi "
-"daha az güvenli bir şey kullanarak güvenli bir şekilde paylaşmaktan siz "
-"sorumlusunuz."
+"`Tehdit modelinize <https://ssd.eff.org/module/your-security-plan>`_ "
+"bağlı olarak, bu adresi ve kişisel anahtarı, şifreli bir sohbet iletisi "
+"gibi seçtiğiniz bir iletişim kanalını kullanarak veya şifrelenmemiş "
+"e-posta gibi daha az güvenli bir şey kullanarak güvenli bir şekilde "
+"paylaşmaktan siz sorumlusunuz."
#: ../../source/features.rst:20
msgid ""
@@ -68,9 +67,9 @@ msgid ""
"also then copy and paste in."
msgstr ""
"Adresi gönderdiğiniz kişiler, OnionShare hizmetine erişmek için adresi "
-"kopyalayıp `Tor Browser <https://www.torproject.org/>`_ içine yapıştırır. "
-"Tor Browser daha sonra kişilerin kopyalayıp yapıştırabilecekleri kişisel "
-"anahtarı isteyecektir."
+"kopyalayıp `Tor Browser <https://www.torproject.org/>`_ içine yapıştırır."
+" Tor Browser daha sonra kişilerin kopyalayıp yapıştırabilecekleri kişisel"
+" anahtarı isteyecektir."
#: ../../source/features.rst:24
msgid ""
@@ -80,10 +79,10 @@ msgid ""
"works best when working with people in real-time."
msgstr ""
"Birine dosya göndermek için dizüstü bilgisayarınızda OnionShare "
-"çalıştırırsanız ve dosyalar gönderilmeden önce onu askıya alırsanız, dizüstü "
-"bilgisayarınız devam ettirilip tekrar İnternet bağlantısı kurana kadar "
-"hizmet kullanılamayacaktır. OnionShare, insanlarla gerçek zamanlı olarak "
-"çalışırken en iyi şekilde çalışır."
+"çalıştırırsanız ve dosyalar gönderilmeden önce onu askıya alırsanız, "
+"dizüstü bilgisayarınız devam ettirilip tekrar İnternet bağlantısı kurana "
+"kadar hizmet kullanılamayacaktır. OnionShare, insanlarla gerçek zamanlı "
+"olarak çalışırken en iyi şekilde çalışır."
#: ../../source/features.rst:26
msgid ""
@@ -111,16 +110,16 @@ msgid ""
msgstr ""
"OnionShare uygulamasını, dosya ve klasörleri insanlara güvenli ve anonim "
"olarak göndermek için kullanabilirsiniz. Bir paylaşım sekmesi açın, "
-"paylaşmak istediğiniz dosya ve klasörleri sürükleyin ve \"Paylaşımı başlat\" "
-"üzerine tıklayın."
+"paylaşmak istediğiniz dosya ve klasörleri sürükleyin ve \"Paylaşımı "
+"başlat\" üzerine tıklayın."
#: ../../source/features.rst:35 ../../source/features.rst:112
msgid ""
"After you add files, you'll see some settings. Make sure you choose the "
"setting you're interested in before you start sharing."
msgstr ""
-"Dosyaları ekledikten sonra bazı ayarlar göreceksiniz. Paylaşımı başlatmadan "
-"önce istediğiniz ayarı seçtiğinizden emin olun."
+"Dosyaları ekledikten sonra bazı ayarlar göreceksiniz. Paylaşımı "
+"başlatmadan önce istediğiniz ayarı seçtiğinizden emin olun."
#: ../../source/features.rst:39
msgid ""
@@ -131,10 +130,11 @@ msgid ""
"box."
msgstr ""
"Birisi dosyalarınızı indirmeyi bitirir bitirmez, OnionShare sunucuyu "
-"otomatik olarak durduracak ve web sitesini İnternet üzerinden kaldıracaktır. "
-"Birden çok kişinin bunları indirmesine izin vermek için, \"Dosyalar "
-"gönderildikten sonra paylaşım durdurulsun (dosyaların tek tek indirilmesine "
-"izin vermek için işareti kaldırın)\" seçeneğinin işaretini kaldırın."
+"otomatik olarak durduracak ve web sitesini İnternet üzerinden "
+"kaldıracaktır. Birden çok kişinin bunları indirmesine izin vermek için, "
+"\"Dosyalar gönderildikten sonra paylaşım durdurulsun (dosyaların tek tek "
+"indirilmesine izin vermek için işareti kaldırın)\" seçeneğinin işaretini "
+"kaldırın."
#: ../../source/features.rst:42
msgid ""
@@ -153,10 +153,10 @@ msgid ""
"to show the history and progress of people downloading files from you."
msgstr ""
"Paylaşmaya hazır olduğunuzda, \"Paylaşımı başlat\" düğmesine tıklayın. "
-"İstediğiniz zaman \"Paylaşımı durdur\" düğmesine tıklayarak veya OnionShare "
-"uygulamasından çıkarak web sitesini anında kapatabilirsiniz. Ayrıca, sizden "
-"dosya indiren kişilerin geçmişini ve ilerlemesini göstermek için sağ üst "
-"köşedeki \"↑\" simgesine tıklayabilirsiniz."
+"İstediğiniz zaman \"Paylaşımı durdur\" düğmesine tıklayarak veya "
+"OnionShare uygulamasından çıkarak web sitesini anında kapatabilirsiniz. "
+"Ayrıca, sizden dosya indiren kişilerin geçmişini ve ilerlemesini "
+"göstermek için sağ üst köşedeki \"↑\" simgesine tıklayabilirsiniz."
#: ../../source/features.rst:48
msgid ""
@@ -177,8 +177,8 @@ msgid ""
"computer by clicking the \"Download Files\" link in the corner."
msgstr ""
"Bu kişi daha sonra adresi Tor Browser ile açmalıdır. Kişisel anahtar ile "
-"oturum açtıktan sonra, köşedeki \"Dosyaları indir\" bağlantısına tıklayarak "
-"dosyalar doğrudan bilgisayarınızdan indirilebilir."
+"oturum açtıktan sonra, köşedeki \"Dosyaları indir\" bağlantısına "
+"tıklayarak dosyalar doğrudan bilgisayarınızdan indirilebilir."
#: ../../source/features.rst:55
msgid "Receive Files and Messages"
@@ -191,14 +191,15 @@ msgid ""
"anonymous dropbox. Open a receive tab and choose the settings that you "
"want."
msgstr ""
-"OnionShare uygulamasını, kullanıcıların dosya ve iletilerini anonim olarak "
-"doğrudan bilgisayarınıza göndermesine izin vermek için kullanabilirsiniz. "
-"Bir alma sekmesi açın ve istediğiniz ayarları seçin."
+"OnionShare uygulamasını, kullanıcıların dosya ve iletilerini anonim "
+"olarak doğrudan bilgisayarınıza göndermesine izin vermek için "
+"kullanabilirsiniz. Bir alma sekmesi açın ve istediğiniz ayarları seçin."
#: ../../source/features.rst:62
msgid "You can browse for a folder to save messages and files that get submitted."
msgstr ""
-"Gönderilen iletileri ve dosyaları kaydetmek için bir klasöre gidebilirsiniz."
+"Gönderilen iletileri ve dosyaları kaydetmek için bir klasöre "
+"gidebilirsiniz."
#: ../../source/features.rst:64
msgid ""
@@ -206,10 +207,10 @@ msgid ""
"uploads, and you can check \"Disable uploading files\" if you want to "
"only allow submitting text messages, like for an anonymous contact form."
msgstr ""
-"Yalnız dosya yüklemelerine izin vermek istiyorsanız \"Metin gönderilemesin\" "
-"seçeneğini işaretleyebilir ve anonim bir iletişim formu gibi yalnızca metin "
-"iletilerinin gönderilmesine izin vermek istiyorsanız \"Dosya yüklenemesin\" "
-"seçeneğini işaretleyebilirsiniz."
+"Yalnız dosya yüklemelerine izin vermek istiyorsanız \"Metin "
+"gönderilemesin\" seçeneğini işaretleyebilir ve anonim bir iletişim formu "
+"gibi yalnızca metin iletilerinin gönderilmesine izin vermek istiyorsanız "
+"\"Dosya yüklenemesin\" seçeneğini işaretleyebilirsiniz."
#: ../../source/features.rst:66
msgid ""
@@ -229,13 +230,14 @@ msgstr ""
"bilgilendirilmek istiyorsanız, \"Bildirim web kancası kullanılsın\" "
"seçeneğini işaretleyebilir ve ardından bir web kancası adresi "
"seçebilirsiniz. Bu özelliği kullanırsanız, OnionShare, birisi dosya veya "
-"ileti gönderdiğinde bu adrese bir HTTP POST isteği yapar. Örneğin, `Keybase "
-"<https://keybase.io/>`_ iletişim uygulamasında şifreli bir metin iletisi "
-"almak istiyorsanız, `@webhookbot <https://keybase.io/webhookbot>`_ ile bir "
-"konuşma başlatabilir, ``!webhook create onionshare-alerts`` yazabilirsiniz "
-"ve bot size bir adres ile yanıt verir. Bunu bildirim web kancası adresi "
-"olarak kullanın. Birisi alma kipi hizmetinize bir dosya yüklerse, bu olur "
-"olmaz @webhookbot size Keybase üzerinde bir ileti göndererek haber verir."
+"ileti gönderdiğinde bu adrese bir HTTP POST isteği yapar. Örneğin, "
+"`Keybase <https://keybase.io/>`_ iletişim uygulamasında şifreli bir metin"
+" iletisi almak istiyorsanız, `@webhookbot "
+"<https://keybase.io/webhookbot>`_ ile bir konuşma başlatabilir, "
+"``!webhook create onionshare-alerts`` yazabilirsiniz ve bot size bir "
+"adres ile yanıt verir. Bunu bildirim web kancası adresi olarak kullanın. "
+"Birisi alma kipi hizmetinize bir dosya yüklerse, bu olur olmaz "
+"@webhookbot size Keybase üzerinde bir ileti göndererek haber verir."
#: ../../source/features.rst:71
msgid ""
@@ -245,8 +247,8 @@ msgid ""
"computer."
msgstr ""
"Hazır olduğunuzda, \"Alma kipi başlatılsın\" düğmesine tıklayın. Bu, "
-"OnionShare hizmetini başlatır. Bu adresi Tor Browser ile yükleyen herkes, "
-"bilgisayarınıza yüklenecek olan dosya ve iletileri gönderebilir."
+"OnionShare hizmetini başlatır. Bu adresi Tor Browser ile yükleyen herkes,"
+" bilgisayarınıza yüklenecek olan dosya ve iletileri gönderebilir."
#: ../../source/features.rst:75
msgid ""
@@ -297,10 +299,10 @@ msgid ""
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
-"Kötü niyetli e-posta eklerinde olduğu gibi, birisinin OnionShare hizmetinize "
-"kötü amaçlı bir dosya yükleyerek bilgisayarınıza saldırmaya çalışması "
-"mümkündür. OnionShare, sisteminizi kötü amaçlı dosyalardan korumak için "
-"herhangi bir güvenlik yöntemi içermez."
+"Kötü niyetli e-posta eklerinde olduğu gibi, birisinin OnionShare "
+"hizmetinize kötü amaçlı bir dosya yükleyerek bilgisayarınıza saldırmaya "
+"çalışması mümkündür. OnionShare, sisteminizi kötü amaçlı dosyalardan "
+"korumak için herhangi bir güvenlik yöntemi içermez."
#: ../../source/features.rst:90
msgid ""
@@ -321,8 +323,8 @@ msgstr ""
#: ../../source/features.rst:92
msgid "However, it is always safe to open text messages sent through OnionShare."
msgstr ""
-"Bununla birlikte, OnionShare aracılığıyla gönderilen metin iletilerini açmak "
-"her zaman güvenlidir."
+"Bununla birlikte, OnionShare aracılığıyla gönderilen metin iletilerini "
+"açmak her zaman güvenlidir."
#: ../../source/features.rst:95
msgid "Tips for running a receive service"
@@ -337,8 +339,8 @@ msgid ""
msgstr ""
"OnionShare kullanarak kendi anonim depolama alanınızı barındırmak "
"istiyorsanız, bunu düzenli olarak kullandığınız bilgisayarda değil, her "
-"zaman açık ve İnternete bağlı ayrı, özel bir bilgisayarda yapmanız tavsiye "
-"edilir."
+"zaman açık ve İnternete bağlı ayrı, özel bir bilgisayarda yapmanız "
+"tavsiye edilir."
#: ../../source/features.rst:99
msgid ""
@@ -348,10 +350,10 @@ msgid ""
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
"OnionShare adresini web sitenize veya sosyal ağ profillerinize koymayı "
-"düşünüyorsanız, sekmeyi kaydedin (:ref:`save_tabs`bölümüne bakın) ve herkese "
-"açık bir hizmet olarak çalıştırın (:ref:`turn_off_private_key` bölümüne "
-"bakın). Özel bir başlık vermek de iyi bir fikirdir (:ref:`custom_titles` "
-"bölümüne bakın)."
+"düşünüyorsanız, sekmeyi kaydedin (:ref:`save_tabs`bölümüne bakın) ve "
+"herkese açık bir hizmet olarak çalıştırın (:ref:`turn_off_private_key` "
+"bölümüne bakın). Özel bir başlık vermek de iyi bir fikirdir "
+"(:ref:`custom_titles` bölümüne bakın)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -363,9 +365,9 @@ msgid ""
"the files and folders that make up the static content there, and click "
"\"Start sharing\" when you are ready."
msgstr ""
-"OnionShare ile statik bir HTML web sitesi barındırmak için bir web sitesi "
-"sekmesi açın, statik içeriği oluşturan dosya ve klasörleri oraya sürükleyin "
-"ve hazır olduğunuzda \"Paylaşımı başlat\" düğmesine tıklayın."
+"OnionShare ile statik bir HTML web sitesi barındırmak için bir web sitesi"
+" sekmesi açın, statik içeriği oluşturan dosya ve klasörleri oraya "
+"sürükleyin ve hazır olduğunuzda \"Paylaşımı başlat\" düğmesine tıklayın."
#: ../../source/features.rst:108
msgid ""
@@ -377,11 +379,11 @@ msgid ""
" WordPress.)"
msgstr ""
"Bir ``index.html`` dosyası eklerseniz, birisi web sitenizi yüklediğinde "
-"görüntülenir. Web sitesini oluşturan diğer HTML, CSS, JavaScript dosyalarını "
-"ve görselleri de eklemelisiniz. (OnionShare uygulamasının yalnız *statik* "
-"web sitelerini barındırmayı desteklediğini unutmayın. Kod çalıştıran veya "
-"veri tabanları kullanan web sitelerini barındıramaz. Örneğin WordPress "
-"kullanamazsınız.)"
+"görüntülenir. Web sitesini oluşturan diğer HTML, CSS, JavaScript "
+"dosyalarını ve görselleri de eklemelisiniz. (OnionShare uygulamasının "
+"yalnız *statik* web sitelerini barındırmayı desteklediğini unutmayın. Kod"
+" çalıştıran veya veri tabanları kullanan web sitelerini barındıramaz. "
+"Örneğin WordPress kullanamazsınız.)"
#: ../../source/features.rst:110
msgid ""
@@ -404,28 +406,40 @@ msgid ""
"However, this prevents third-party content from loading inside the web "
"page."
msgstr ""
-"OnionShare, varsayılan olarak katı bir `İçerik güvenliği ilkesi <https://en."
-"wikipedia.org/wiki/Content_Security_Policy>`_ başlığı ayarlayarak web "
-"sitenizin güvenliğini sağlamaya yardımcı olur. Ancak bu, web sayfasında "
-"üçüncü taraf içeriğinin yüklenmesini engeller."
+"OnionShare, varsayılan olarak katı bir `İçerik güvenliği ilkesi "
+"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_ başlığı "
+"ayarlayarak web sitenizin güvenliğini sağlamaya yardımcı olur. Ancak bu, "
+"web sayfasında üçüncü taraf içeriğinin yüklenmesini engeller."
#: ../../source/features.rst:121
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
-"İçerik aktarım ağlarından (CDN) varlıklar veya JavaScript kitaplıkları gibi "
-"üçüncü taraf web sitelerinden içerik yüklemek istiyorsanız, hizmeti "
-"başlatmadan önce \"İçerik güvenliği ilkesi başlığı gönderme (web sitenizin "
-"üçüncü taraf kaynaklarını kullanmasına izin verir)\" seçeneğini işaretleyin."
+"İçerik aktarım ağlarından (CDN) varlıklar veya JavaScript kütüphaneleri gibi "
+"üçüncü taraf web sitelerinden içerik yüklemek istiyorsanız, iki seçeneğiniz "
+"vardır:"
+
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+"Hizmeti başlatmadan önce \"İçerik güvenliği ilkesi başlığı gönderme (web "
+"sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)\" kutusunu "
+"işaretleyerek bir İçerik Güvenliği ilkesi başlığı göndermeyi devre dışı "
+"bırakabilirsiniz."
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr "Özel bir İçerik Güvenliği İlkesi başlığı gönderebilirsiniz."
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Web sitesi hizmeti çalıştırma ipuçları"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -434,14 +448,15 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
-"OnionShare kullanarak (birine hızlı bir şekilde bir şey görüntülemek yerine) "
-"uzun vadeli bir web sitesi barındırmak istiyorsanız, bunu düzenli olarak "
-"kullandığınız bilgisayarda değil, her zaman açık ve İnternet bağlantısı "
-"ayrı, özel bir bilgisayarda yapmanız tavsiye edilir. OnionShare uygulamasını "
-"kapatıp daha sonra yeniden açmanız halinde web sitesini aynı adresle devam "
-"ettirebilmek için sekmeyi kaydedin (:ref:`save_tabs` bölümüne bakın)."
+"OnionShare kullanarak (birine hızlı bir şekilde bir şey görüntülemek "
+"yerine) uzun vadeli bir web sitesi barındırmak istiyorsanız, bunu düzenli"
+" olarak kullandığınız bilgisayarda değil, her zaman açık ve İnternet "
+"bağlantısı ayrı, özel bir bilgisayarda yapmanız tavsiye edilir. "
+"OnionShare uygulamasını kapatıp daha sonra yeniden açmanız halinde web "
+"sitesini aynı adresle devam ettirebilmek için sekmeyi kaydedin "
+"(:ref:`save_tabs` bölümüne bakın)."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
@@ -449,20 +464,20 @@ msgstr ""
"Web siteniz herkesin kullanımına yönelikse, onu herkese açık bir hizmet "
"olarak çalıştırmalısınız (:ref:`turn_off_private_key` bölümüne bakın)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Anonim Olarak Sohbet Etmek"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
msgstr ""
"Hiçbir şey kaydetmeyen kişisel, güvenli bir sohbet odası kurmak için "
-"OnionShare kullanabilirsiniz. Bir sohbet sekmesi açın ve \"Sohbet sunucusu "
-"başlat\" düğmesine tıklayın."
+"OnionShare kullanabilirsiniz. Bir sohbet sekmesi açın ve \"Sohbet "
+"sunucusu başlat\" düğmesine tıklayın."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
@@ -470,12 +485,12 @@ msgid ""
"to send out the OnionShare address and private key."
msgstr ""
"Sunucuyu başlattıktan sonra, OnionShare adresini ve kişisel anahtarı "
-"kopyalayın ve anonim sohbet odasında olmasını istediğiniz kişilere gönderin. "
-"Tam olarak kimlerin katılabileceğini sınırlamak önemliyse, OnionShare "
-"adresini ve kişisel anahtarı göndermek için şifreli bir iletişim uygulaması "
-"kullanın."
+"kopyalayın ve anonim sohbet odasında olmasını istediğiniz kişilere "
+"gönderin. Tam olarak kimlerin katılabileceğini sınırlamak önemliyse, "
+"OnionShare adresini ve kişisel anahtarı göndermek için şifreli bir "
+"iletişim uygulaması kullanın."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -483,11 +498,11 @@ msgid ""
"\"Standard\" or \"Safer\", instead of \"Safest\"."
msgstr ""
"İnsanlar OnionShare adresini Tor Browser ile açarak sohbet odasına "
-"katılabilirler. Sohbet odası için JavasScript desteği gereklidir, bu nedenle "
-"katılmak isteyenler Tor Browser güvenlik düzeyini \"En güvenli\" yerine "
-"\"Standart\" veya \"Daha güvenli\" olarak ayarlamalıdır."
+"katılabilirler. Sohbet odası için JavasScript desteği gereklidir, bu "
+"nedenle katılmak isteyenler Tor Browser güvenlik düzeyini \"En güvenli\" "
+"yerine \"Standart\" veya \"Daha güvenli\" olarak ayarlamalıdır."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -499,7 +514,7 @@ msgstr ""
"Sohbet geçmişi herhangi bir yere kaydedilmediğinden, başkaları odada "
"sohbet ediyor olsa bile bu hiç görüntülenmez."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -508,7 +523,7 @@ msgstr ""
"bir şeyle değiştirebilir ve herhangi birinin kimliğini doğrulamanın bir "
"yolu yoktur."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -517,14 +532,14 @@ msgid ""
msgstr ""
"Bununla birlikte, bir OnionShare sohbet odası oluşturur ve adresi "
"şifrelenmiş iletiler kullanarak güvenli bir şekilde yalnız küçük bir "
-"güvenilir arkadaş grubuna gönderirseniz, sohbet odasına katılan kişilerin "
-"arkadaşlarınız olduğundan hemen hemen emin olabilirsiniz."
+"güvenilir arkadaş grubuna gönderirseniz, sohbet odasına katılan kişilerin"
+" arkadaşlarınız olduğundan hemen hemen emin olabilirsiniz."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Bunun ne faydası var?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -532,7 +547,7 @@ msgstr ""
"Zaten şifrelenmiş bir iletişim uygulaması kullanmanız gerekiyorsa, "
"OnionShare sohbet odasından başlamanın ne anlamı var? Daha az iz bırakır."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -543,15 +558,16 @@ msgid ""
"rooms don't store any messages anywhere, so the problem is reduced to a "
"minimum."
msgstr ""
-"Örneğin bir Signal grubuna bir ileti gönderirseniz, iletinizin bir kopyası "
-"grubun her bir üyesinin her aygıtında (akıllı telefonlar ve Signal "
-"Masaüstünü kurdularsa bilgisayarlar) bulunur. Kaybolan iletiler açık olsa "
-"bile, iletilerin tüm kopyalarının tüm aygıtlardan ve kaydedilmiş "
-"olabilecekleri diğer yerlerden (bildirim veri tabanları gibi) gerçekten "
-"silindiğini doğrulamak zordur. OnionShare sohbet odaları hiçbir yerde "
-"herhangi bir ileti saklamaz, bu nedenle sorun en aza indirilir."
-
-#: ../../source/features.rst:165
+"Örneğin bir Signal grubuna bir ileti gönderirseniz, iletinizin bir "
+"kopyası grubun her bir üyesinin her aygıtında (akıllı telefonlar ve "
+"Signal Masaüstünü kurdularsa bilgisayarlar) bulunur. Kaybolan iletiler "
+"açık olsa bile, iletilerin tüm kopyalarının tüm aygıtlardan ve "
+"kaydedilmiş olabilecekleri diğer yerlerden (bildirim veri tabanları gibi)"
+" gerçekten silindiğini doğrulamak zordur. OnionShare sohbet odaları "
+"hiçbir yerde herhangi bir ileti saklamaz, bu nedenle sorun en aza "
+"indirilir."
+
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -561,17 +577,17 @@ msgid ""
"anonymity."
msgstr ""
"OnionShare sohbet odaları, herhangi bir hesap oluşturmaya gerek kalmadan "
-"biriyle anonim ve güvenli bir şekilde sohbet etmek isteyen kişiler için de "
-"kullanışlı olabilir. Örneğin, bir kaynak tek kullanımlık bir e-posta "
+"biriyle anonim ve güvenli bir şekilde sohbet etmek isteyen kişiler için "
+"de kullanışlı olabilir. Örneğin, bir kaynak tek kullanımlık bir e-posta "
"adresini kullanarak bir gazeteciye OnionShare adresini gönderebilir ve "
"ardından anonimliklerinden ödün vermeden gazetecinin sohbet odasına "
"katılmasını bekleyebilir."
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Şifreleme nasıl çalışır?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -580,14 +596,14 @@ msgid ""
"other members of the chat room using WebSockets, through their E2EE onion"
" connections."
msgstr ""
-"OnionShare, Tor Onion hizmetlerine dayandığından, Tor Browser ve OnionShare "
-"arasındaki bağlantıların tümü uçtan uca şifrelenmiştir (E2EE). Birisi bir "
-"OnionShare sohbet odasına bir ileti gönderdiğinde, bunu E2EE onion "
-"bağlantısı üzerinden sunucuya gönderir ve ardından sunucu bunu WebSockets "
-"kullanarak E2EE onion bağlantıları aracılığıyla sohbet odasının diğer tüm "
-"üyelerine gönderir."
-
-#: ../../source/features.rst:173
+"OnionShare, Tor Onion hizmetlerine dayandığından, Tor Browser ve "
+"OnionShare arasındaki bağlantıların tümü uçtan uca şifrelenmiştir (E2EE)."
+" Birisi bir OnionShare sohbet odasına bir ileti gönderdiğinde, bunu E2EE "
+"onion bağlantısı üzerinden sunucuya gönderir ve ardından sunucu bunu "
+"WebSockets kullanarak E2EE onion bağlantıları aracılığıyla sohbet "
+"odasının diğer tüm üyelerine gönderir."
+
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
diff --git a/docs/source/locale/tr/LC_MESSAGES/tor.po b/docs/source/locale/tr/LC_MESSAGES/tor.po
index 9bf9b2f2..2d283c08 100644
--- a/docs/source/locale/tr/LC_MESSAGES/tor.po
+++ b/docs/source/locale/tr/LC_MESSAGES/tor.po
@@ -7,16 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-10-02 12:36+0000\n"
-"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-11-25 15:52+0000\n"
+"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
"Language-Team: tr <LL@li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -25,23 +25,24 @@ msgstr "Tor Bağlantısı Kurmak"
#: ../../source/tor.rst:4
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
-"OnionShare penceresinin sağ alt kısmındaki \"⚙\" simgesine tıklayarak "
+"OnionShare penceresinin sağ alt kısmındaki Tor onion simgesine tıklayarak "
"ayarlara gidin ve OnionShare ile Tor bağlantısı kurmanın bir yolunu seçin."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "OnionShare ile birlikte gelen ``tor`` işlemi kullanılsın"
+msgid "Use the Tor version built into OnionShare"
+msgstr "OnionShare üzerindeki Tor sürümü kullanılsın"
#: ../../source/tor.rst:11
msgid ""
"This is the default, simplest and most reliable way that OnionShare "
"connects to Tor. For this reason, it's recommended for most users."
msgstr ""
-"Bu varsayılan seçenektir, OnionShare ile Tor bağlantısı kurmanın en basit ve "
-"en güvenilir yoludur. Bu nedenle çoğu kullanıcı için bu seçenek önerilir."
+"Bu varsayılan seçenektir, OnionShare ile Tor bağlantısı kurmanın en basit"
+" ve en güvenilir yoludur. Bu nedenle çoğu kullanıcı için bu seçenek "
+"önerilir."
#: ../../source/tor.rst:14
msgid ""
@@ -50,40 +51,94 @@ msgid ""
"with other ``tor`` processes on your computer, so you can use the Tor "
"Browser or the system ``tor`` on their own."
msgstr ""
-"OnionShare uygulamasını açtığınızda, kendisinin kullanması için arka planda "
-"önceden yapılandırılmış bir ``tor`` işlemi başlatır. Bu bilgisayarınızdaki "
-"diğer ``tor`` işlemlerine müdahale etmez, böylece Tor Browser veya sistemin "
-"``tor`` işlemini kendi başına kullanabilirsiniz."
+"OnionShare uygulamasını açtığınızda, kendisinin kullanması için arka "
+"planda önceden yapılandırılmış bir ``tor`` işlemi başlatır. Bu "
+"bilgisayarınızdaki diğer ``tor`` işlemlerine müdahale etmez, böylece Tor "
+"Browser veya sistemin ``tor`` işlemini kendi başına kullanabilirsiniz."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr "Sansürden Kurtulma"
+
+#: ../../source/tor.rst:20
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+"İnternet erişiminiz sansürleniyorsa, OnionShare uygulamasını Tor ağına `Tor "
+"köprüleri <https://tb-manual.torproject.org/bridges/>`_ kullanarak "
+"bağlanacak şekilde yapılandırabilirsiniz. OnionShare, Tor köprüsü olmadan "
+"bağlanıyorsa köprü kullanmanıza gerek yoktur."
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+"Bir köprü kullanmak için Tor Ayarları sekmesini açın. \"OnionShare "
+"üzerindeki Tor sürümü kullanılsın\" seçeneğini seçmeli ve \"Köprü kullan\" "
+"onay kutusunu işaretlemelisiniz."
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+"Önce yerleşik bir köprü kullanmayı deneyin. `meek-azure` yerine `obfs4` veya "
+"`snowflake` köprülerinin kullanılması tavsiye edilir."
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+"Yerleşik bir köprü kullanmak işe yaramazsa, torproject.org'dan bir köprü "
+"talep edebilirsiniz. Köprü talep etmek için bir CAPTCHA çözmeniz gerekecek. ("
+"Bu, hükümetlerin veya ISS'lerin Tor köprülerine erişimi engellemesini "
+"zorlaştırır.)"
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+"Ayrıca güvenilir bir kaynaktan öğrendiğiniz bir köprüyü kullanma seçeneğiniz "
+"de vardır."
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Tor Browser ile otomatik yapılandırma denensin"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
"process from the Tor Browser. Keep in mind you need to keep Tor Browser "
"open in the background while you're using OnionShare for this to work."
msgstr ""
-"`Tor Browser indirdiyseniz <https://www.torproject.org>`_ ve iki tane ``tor``"
-" işleminin çalışmasını istemiyorsanız Tor Browser'ın ``tor`` işlemini "
-"kullanabilirsiniz. Bunun çalışması için OnionShare kullanırken arka planda "
-"Tor Browser uygulamasını açık tutmanız gerektiğini unutmayın."
+"`Tor Browser indirdiyseniz <https://www.torproject.org>`_ ve iki tane "
+"``tor`` işleminin çalışmasını istemiyorsanız Tor Browser'ın ``tor`` "
+"işlemini kullanabilirsiniz. Bunun çalışması için OnionShare kullanırken "
+"arka planda Tor Browser uygulamasını açık tutmanız gerektiğini unutmayın."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Windows üzerinde sistem ``tor` hizmetini kullanmak"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
msgstr ""
-"Bu seçenek oldukça ileridir. Düz metin dosyalarını nasıl düzenleyeceğinizi "
-"ve yönetici olarak işleri nasıl yapacağınızı bilmeniz gerekir."
+"Bu seçenek oldukça ileridir. Düz metin dosyalarını nasıl "
+"düzenleyeceğinizi ve yönetici olarak işleri nasıl yapacağınızı bilmeniz "
+"gerekir."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -91,11 +146,12 @@ msgid ""
"the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
msgstr ""
"`Buradan <https://www.torproject.org/download/tor/>`_ Tor Windows Uzman "
-"Paketini indirin. Sıkıştırılmış dosyayı ayıklayın ve ayıklanan klasörü ``C:"
-"\\Program Files (x86)\\`` içine taşıyın. ``Data`` ve ``Tor`` klasörlerinin "
-"bulunduğu ayıklanmış klasörü ``tor-win32`` olarak yeniden adlandırın."
+"Paketini indirin. Sıkıştırılmış dosyayı ayıklayın ve ayıklanan klasörü "
+"``C:\\Program Files (x86)\\`` içine taşıyın. ``Data`` ve ``Tor`` "
+"klasörlerinin bulunduğu ayıklanmış klasörü ``tor-win32`` olarak yeniden "
+"adlandırın."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -103,13 +159,13 @@ msgid ""
"administrator, and use ``tor.exe --hash-password`` to generate a hash of "
"your password. For example::"
msgstr ""
-"Bir denetim kapı numarası parolası oluşturun. (Parola için ``içeren yanılma "
-"araştır çalış intikam oluştur değişken`` gibi 7 sözcükten oluşan bir dizi "
-"kullanmak iyi bir fikir olacaktır). Sonra yönetici olarak bir komut istemi "
-"(``cmd``) açın ve parolanızın karıştırılan kodunu oluşturmak için ``tor.exe "
-"--hash-password`` komutunu kullanın. Örneğin::"
+"Bir denetim kapı numarası parolası oluşturun. (Parola için ``içeren "
+"yanılma araştır çalış intikam oluştur değişken`` gibi 7 sözcükten oluşan "
+"bir dizi kullanmak iyi bir fikir olacaktır). Sonra yönetici olarak bir "
+"komut istemi (``cmd``) açın ve parolanızın karıştırılan kodunu oluşturmak"
+" için ``tor.exe --hash-password`` komutunu kullanın. Örneğin::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -120,7 +176,7 @@ msgstr ""
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF`` "
"olacaktır."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -131,7 +187,7 @@ msgstr ""
"oluşturduğunuzla değiştirerek içine parolanızın karıştırılan çıktısını "
"koyun::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -144,11 +200,11 @@ msgstr ""
"`<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Bunun "
"gibi::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Artık Windows üzerinde bir sistem ``tor`` işlemi çalıştırıyorsunuz!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -158,20 +214,21 @@ msgid ""
"Connection to Tor\" button. If all goes well, you should see \"Connected "
"to the Tor controller\"."
msgstr ""
-"OnionShare uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare ile "
-"Tor bağlantısı nasıl kurulmalı?\" altındaki \"Denetim kapı numarası "
-"kullanarak bağlan\" seçeneğini seçin ve \"Denetim kapı numarası\" değerini "
-"``127.0.0.1`` ve \"Kapı numarası\" değerini ``9051`` olarak ayarlayın. \"Tor "
-"kimlik doğrulama ayarları\" altında \"Parola\" seçeneğini seçin ve parolayı "
-"yukarıda seçtiğiniz denetim kapı noktası parolası olarak ayarlayın. \"Tor "
-"bağlantısını sına\" düğmesine tıklayın. Her şey yolunda giderse, \"Tor "
-"denetleyicisi ile bağlantı kuruldu\" ifadesini göreceksiniz."
-
-#: ../../source/tor.rst:61
+"OnionShare uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare "
+"ile Tor bağlantısı nasıl kurulmalı?\" altındaki \"Denetim kapı numarası "
+"kullanarak bağlan\" seçeneğini seçin ve \"Denetim kapı numarası\" "
+"değerini ``127.0.0.1`` ve \"Kapı numarası\" değerini ``9051`` olarak "
+"ayarlayın. \"Tor kimlik doğrulama ayarları\" altında \"Parola\" "
+"seçeneğini seçin ve parolayı yukarıda seçtiğiniz denetim kapı noktası "
+"parolası olarak ayarlayın. \"Tor bağlantısını sına\" düğmesine tıklayın. "
+"Her şey yolunda giderse, \"Tor denetleyicisi ile bağlantı kuruldu\" "
+"ifadesini göreceksiniz."
+
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "macOS üzerinde sistem ``tor` işlemini kullanmak"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -179,17 +236,17 @@ msgstr ""
"Henüz kurmadıysanız, önce `Homebrew <https://brew.sh/>`_ ve ardından Tor "
"kurun::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr ""
"Sonra Tor hizmetini OnionShare uygulamasından gelen bağlantılara izin "
"verecek şekilde yapılandırın::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "Ve sistem Tor hizmetini başlatın::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -197,46 +254,48 @@ msgid ""
"Under \"Tor authentication settings\" choose \"No authentication, or "
"cookie authentication\". Click the \"Test Connection to Tor\" button."
msgstr ""
-"OnionShare uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare ile "
-"Tor bağlantısı nasıl kurulmalı?\" altındaki \"Soket dosyası kullanılarak "
-"bağlantı kurulsun\" seçeneğini seçin ve soket dosyasını ``/usr/local/var/run/"
-"tor/control.socket`` olarak ayarlayın. \"Tor kimlik doğrulama ayarları\" "
-"altında \"Kimlik doğrulama yok, veya çerez doğrulaması\" seçeneğini seçin. "
-"\"Tor bağlantısını sına\" düğmesine tıklayın."
-
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+"OnionShare uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare "
+"ile Tor bağlantısı nasıl kurulmalı?\" altındaki \"Soket dosyası "
+"kullanılarak bağlantı kurulsun\" seçeneğini seçin ve soket dosyasını "
+"``/usr/local/var/run/tor/control.socket`` olarak ayarlayın. \"Tor kimlik "
+"doğrulama ayarları\" altında \"Kimlik doğrulama yok, veya çerez "
+"doğrulaması\" seçeneğini seçin. \"Tor bağlantısını sına\" düğmesine "
+"tıklayın."
+
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr ""
"Her şey yolunda giderse, \"Tor denetleyicisi ile bağlantı kuruldu\" "
"ifadesini göreceksiniz."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Linux üzerinde sistem ``tor` işlemini kullanmak"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
"`official repository <https://support.torproject.org/apt/tor-deb-"
"repo/>`_."
msgstr ""
-"Önce ``tor`` paketini kurun. Debian, Ubuntu veya benzer bir Linux dağıtımı "
-"kullanıyorsanız, Tor projesinin `resmi deposunu <https://support.torproject."
-"org/apt/tor-deb-repo/>`_ kullanmanız önerilir."
+"Önce ``tor`` paketini kurun. Debian, Ubuntu veya benzer bir Linux "
+"dağıtımı kullanıyorsanız, Tor projesinin `resmi deposunu "
+"<https://support.torproject.org/apt/tor-deb-repo/>`_ kullanmanız "
+"önerilir."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
"connect to your system ``tor``'s control socket file."
msgstr ""
-"Ardından, kullanıcınızı ``tor`` işlemini çalıştıran gruba ekleyin (Debian ve "
-"Ubuntu için bu ``debian-tor`` olacak) ve OnionShare uygulamasını "
-"sisteminizin ``tor`` işleminin denetim soketi dosyasına bağlanacak şekilde "
-"yapılandırın."
+"Ardından, kullanıcınızı ``tor`` işlemini çalıştıran gruba ekleyin (Debian"
+" ve Ubuntu için bu ``debian-tor`` olacak) ve OnionShare uygulamasını "
+"sisteminizin ``tor`` işleminin denetim soketi dosyasına bağlanacak "
+"şekilde yapılandırın."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -244,7 +303,7 @@ msgstr ""
"Bu komutu çalıştırarak kullanıcınızı ``debian-tor`` grubuna ekleyin "
"(``username`` ifadesini gerçek kullanıcı adınızla değiştirin)::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -253,47 +312,13 @@ msgid ""
"\"No authentication, or cookie authentication\". Click the \"Test "
"Connection to Tor\" button."
msgstr ""
-"Bilgisayarınızı yeniden başlatın. Yeniden başlatıldıktan sonra OnionShare "
-"uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare ile Tor "
+"Bilgisayarınızı yeniden başlatın. Yeniden başlatıldıktan sonra OnionShare"
+" uygulamasını açın ve \"⚙\" simgesine tıklayın. \"OnionShare ile Tor "
"bağlantısı nasıl kurulmalı?\" altındaki \"Soket dosyası kullanılarak "
-"bağlantı kurulsun\" seçeneğini seçin. Soket dosyasını ``/var/run/tor/"
-"control`` olarak ayarlayın. \"Tor kimlik doğrulama ayarları\" altında "
-"\"Kimlik doğrulama yok, veya çerez doğrulaması\" seçeneğini seçin. \"Tor "
-"Bağlantısını Test Et\" düğmesine tıklayın."
-
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Tor köprülerini kullanmak"
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-"İnternet erişiminiz sansürleniyorsa, OnionShare uygulamasını Tor ağına `Tor "
-"köprüleri <https://2019.www.torproject.org/docs/bridges.html.en>`_ "
-"kullanarak bağlanacak şekilde yapılandırabilirsiniz. OnionShare, Tor köprüsü "
-"olmadan bağlanıyorsa köprü kullanmanıza gerek yoktur."
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr ""
-"Köprüleri yapılandırmak için OnionShare uygulamasındaki \"⚙\" simgesine "
-"tıklayın."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Yerleşik obfs4 değiştirilebilir taşıyıcıları, yerleşik meek_lite (Azure) "
-"değiştirilebilir taşıyıcıları veya Tor `BridgeDB <https://bridges.torproject."
-"org/>`_ adresinden edinebileceğiniz özel köprüleri kullanabilirsiniz. Bir "
-"köprü kullanmanız gerekirse, önce yerleşik obfs4 olanları deneyin."
+"bağlantı kurulsun\" seçeneğini seçin. Soket dosyasını "
+"``/var/run/tor/control`` olarak ayarlayın. \"Tor kimlik doğrulama "
+"ayarları\" altında \"Kimlik doğrulama yok, veya çerez doğrulaması\" "
+"seçeneğini seçin. \"Tor Bağlantısını Test Et\" düğmesine tıklayın."
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -527,3 +552,32 @@ msgstr ""
#~ "if you don't already have it. "
#~ "Then, install Tor::"
#~ msgstr ""
+
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "OnionShare ile birlikte gelen ``tor`` işlemi kullanılsın"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Tor köprülerini kullanmak"
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr ""
+#~ "Köprüleri yapılandırmak için OnionShare "
+#~ "uygulamasındaki \"⚙\" simgesine tıklayın."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Yerleşik obfs4 değiştirilebilir taşıyıcıları, "
+#~ "yerleşik meek_lite (Azure) değiştirilebilir "
+#~ "taşıyıcıları veya Tor `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_ adresinden "
+#~ "edinebileceğiniz özel köprüleri kullanabilirsiniz."
+#~ " Bir köprü kullanmanız gerekirse, önce "
+#~ "yerleşik obfs4 olanları deneyin."
diff --git a/docs/source/locale/uk/LC_MESSAGES/features.po b/docs/source/locale/uk/LC_MESSAGES/features.po
index 54b331d0..490a5c8b 100644
--- a/docs/source/locale/uk/LC_MESSAGES/features.po
+++ b/docs/source/locale/uk/LC_MESSAGES/features.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-11 01:40+0000\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-11-25 15:52+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
@@ -53,10 +53,10 @@ msgid ""
"or using something less secure like unencrypted email, depending on your "
"`threat model <https://ssd.eff.org/module/your-security-plan>`_."
msgstr ""
-"Ви відповідальні за таємницю надсилання цієї URL-адреси та приватного ключа "
-"за допомогою вибраного вами каналу зв'язку, як-от у зашифрованому "
-"повідомленні чату, або за використання менш захищеного повідомлення, як от "
-"незашифрований електронний лист, залежно від вашої `моделі загрози "
+"Ви відповідальні за таємницю надсилання цієї URL-адреси та приватного "
+"ключа за допомогою вибраного вами каналу зв'язку, як-от у зашифрованому "
+"повідомленні чату, або за використання менш захищеного повідомлення, як "
+"от незашифрований електронний лист, залежно від вашої `моделі загрози "
"<https://ssd.eff.org/module/your-security-plan>`_."
#: ../../source/features.rst:20
@@ -66,10 +66,10 @@ msgid ""
" Tor Browser will then prompt for the private key, which the people can "
"also then copy and paste in."
msgstr ""
-"Люди, яким ви надсилаєте URL-адресу, повинні копіювати та вставити її до `"
-"Tor Browser <https://www.torproject.org/>`_, щоб отримати доступ до служби "
-"OnionShare. Далі Tor Browser запитає приватний ключ, який люди також можуть "
-"скопіювати та вставити."
+"Люди, яким ви надсилаєте URL-адресу, повинні копіювати та вставити її до "
+"`Tor Browser <https://www.torproject.org/>`_, щоб отримати доступ до "
+"служби OnionShare. Далі Tor Browser запитає приватний ключ, який люди "
+"також можуть скопіювати та вставити."
#: ../../source/features.rst:24
msgid ""
@@ -80,9 +80,9 @@ msgid ""
msgstr ""
"Якщо ви запустили OnionShare на ноутбуці, щоб надіслати комусь файли, а "
"потім зупинили його роботу до завершення надсилання файлів, служба буде "
-"недоступна, доки роботу ноутбука не буде поновлено і він знову з'єднається з "
-"інтернетом. OnionShare найкраще працює під час роботи з людьми в режимі "
-"реального часу."
+"недоступна, доки роботу ноутбука не буде поновлено і він знову "
+"з'єднається з інтернетом. OnionShare найкраще працює під час роботи з "
+"людьми в режимі реального часу."
#: ../../source/features.rst:26
msgid ""
@@ -129,10 +129,10 @@ msgid ""
" files have been sent (uncheck to allow downloading individual files)\" "
"box."
msgstr ""
-"Як тільки хтось завершує завантажувати ваші файли, OnionShare автоматично "
-"зупиняє сервер, прибравши вебсайт з інтернету. Якщо ви хочете дозволити "
-"кільком людям завантажувати ці файли, приберіть позначку біля пункту «"
-"Закрити доступ, коли файли надіслано (приберіть позначку, щоб дозволити "
+"Як тільки хтось завершує завантажувати ваші файли, OnionShare автоматично"
+" зупиняє сервер, прибравши вебсайт з інтернету. Якщо ви хочете дозволити "
+"кільком людям завантажувати ці файли, приберіть позначку біля пункту "
+"«Закрити доступ, коли файли надіслано (приберіть позначку, щоб дозволити "
"завантаження окремих файлів)»."
#: ../../source/features.rst:42
@@ -164,10 +164,10 @@ msgid ""
" stay secure, or the person is otherwise exposed to danger, use an "
"encrypted messaging app."
msgstr ""
-"Тепер, коли у вас є OnionShare, скопіюйте адресу й приватний та надішліть їх "
-"особі, якій ви хочете надіслати файли. Якщо файли повинні бути захищеними "
-"або особа перебуває у небезпеці, скористайтеся застосунком повідомлень з "
-"шифруванням."
+"Тепер, коли у вас є OnionShare, скопіюйте адресу й приватний та надішліть"
+" їх особі, якій ви хочете надіслати файли. Якщо файли повинні бути "
+"захищеними або особа перебуває у небезпеці, скористайтеся застосунком "
+"повідомлень з шифруванням."
#: ../../source/features.rst:50
msgid ""
@@ -298,10 +298,10 @@ msgid ""
"OnionShare service. OnionShare does not add any safety mechanisms to "
"protect your system from malicious files."
msgstr ""
-"Як і у випадку зі шкідливими вкладеннями електронної пошти, можливо, хтось "
-"спробує зламати ваш комп’ютер, вивантаживши зловмисний файл до вашої служби "
-"OnionShare. Вона не додає жодних механізмів безпеки для захисту вашої "
-"системи від шкідливих файлів."
+"Як і у випадку зі шкідливими вкладеннями електронної пошти, можливо, "
+"хтось спробує зламати ваш комп’ютер, вивантаживши зловмисний файл до "
+"вашої служби OnionShare. Вона не додає жодних механізмів безпеки для "
+"захисту вашої системи від шкідливих файлів."
#: ../../source/features.rst:90
msgid ""
@@ -337,9 +337,9 @@ msgid ""
"basis."
msgstr ""
"Якщо ви хочете розмістити свою власну анонімну скриньку за допомогою "
-"OnionShare, радимо робити це на окремому виділеному комп’ютері, який завжди "
-"ввімкнено та під'єднано до інтернету, а не на тому, яким ви користуєтеся "
-"регулярно."
+"OnionShare, радимо робити це на окремому виділеному комп’ютері, який "
+"завжди ввімкнено та під'єднано до інтернету, а не на тому, яким ви "
+"користуєтеся регулярно."
#: ../../source/features.rst:99
msgid ""
@@ -348,11 +348,11 @@ msgid ""
"public service (see :ref:`turn_off_private_key`). It's also a good idea "
"to give it a custom title (see :ref:`custom_titles`)."
msgstr ""
-"Якщо ви маєте намір розмістити адресу OnionShare на своєму вебсайті або в "
-"профілях суспільних мереж, вам слід зберегти вкладку (докладніше "
+"Якщо ви маєте намір розмістити адресу OnionShare на своєму вебсайті або в"
+" профілях суспільних мереж, вам слід зберегти вкладку (докладніше "
":ref:`save_tabs`) і запустити її загальнодоступною службою (докладніше "
-":ref:`turn_off_private_key`). Також непогано дати йому власний заголовок ("
-"докладніше :ref:`custom_titles`)."
+":ref:`turn_off_private_key`). Також непогано дати йому власний заголовок "
+"(докладніше :ref:`custom_titles`)."
#: ../../source/features.rst:102
msgid "Host a Website"
@@ -396,7 +396,7 @@ msgstr ""
#: ../../source/features.rst:117
msgid "Content Security Policy"
-msgstr "Політика безпеки вмісту"
+msgstr "Content Security Policy"
#: ../../source/features.rst:119
msgid ""
@@ -407,27 +407,37 @@ msgid ""
"page."
msgstr ""
"Типово OnionShare допоможе захистити ваш вебсайт, встановивши строгий "
-"заголовок `політики безпеки вмісту <https://en.wikipedia.org/wiki/"
+"заголовок `Content Security Policy <https://en.wikipedia.org/wiki/"
"Content_Security_Policy>`_. Однак, це запобігає завантаженню сторонніх "
"матеріалів на вебсторінку."
#: ../../source/features.rst:121
msgid ""
"If you want to load content from third-party websites, like assets or "
-"JavaScript libraries from CDNs, check the \"Don't send Content Security "
-"Policy header (allows your website to use third-party resources)\" box "
-"before starting the service."
+"JavaScript libraries from CDNs, you have two options:"
msgstr ""
-"Якщо ви хочете завантажити вміст зі сторонніх вебсайтів, як-от активи або"
-" бібліотеки JavaScript із CDN, то перед запуском служби потрібно "
-"встановити позначку «Не надсилати заголовок політики безпеки вмісту "
-"(дозволяє вебсайту застосовувати сторонні ресурси)»."
+"Якщо ви хочете завантажити вміст зі сторонніх вебсайтів, як-от активи або "
+"бібліотеки JavaScript із CDN, у вас є два варіанти:"
+
+#: ../../source/features.rst:123
+msgid ""
+"You can disable sending a Content Security Policy header by checking the "
+"\"Don't send Content Security Policy header (allows your website to use "
+"third-party resources)\" box before starting the service."
+msgstr ""
+"Перед запуском служби можна вимкнути надсилання заголовка Content Security "
+"Policy, позначивши прапорцем «Не надсилати заголовок Content Security Policy "
+"(дозволяє вебсайту використовувати сторонні ресурси)»."
#: ../../source/features.rst:124
+msgid "You can send a custom Content Security Policy header."
+msgstr "Ви можете надіслати власний заголовок Content Security Policy."
+
+#: ../../source/features.rst:127
msgid "Tips for running a website service"
msgstr "Поради щодо запуску служби розміщення вебсайту"
-#: ../../source/features.rst:126
+#: ../../source/features.rst:129
msgid ""
"If you want to host a long-term website using OnionShare (meaning not "
"just to quickly show someone something), it's recommended you do it on a "
@@ -436,14 +446,14 @@ msgid ""
" (see :ref:`save_tabs`) so you can resume the website with the same "
"address if you close OnionShare and re-open it later."
msgstr ""
-"Якщо ви хочете розмістити постійний вебсайт за допомогою OnionShare (це не "
-"просто для того, щоб швидко комусь щось показати), радимо робити це на "
-"окремо виділеному комп’ютері, який завжди ввімкнено та під'єднано до "
-"інтернету, а не на той, яким ви користуєтеся регулярно. Збережіть вкладку ("
-"подробиці про :ref:`save_tabs`), щоб ви могли відновити вебсайт з тією ж "
-"адресою, якщо закриєте OnionShare і знову відкриєте його пізніше."
+"Якщо ви хочете розмістити постійний вебсайт за допомогою OnionShare (це "
+"не просто для того, щоб швидко комусь щось показати), радимо робити це на"
+" окремо виділеному комп’ютері, який завжди ввімкнено та під'єднано до "
+"інтернету, а не на той, яким ви користуєтеся регулярно. Збережіть вкладку"
+" (подробиці про :ref:`save_tabs`), щоб ви могли відновити вебсайт з тією "
+"ж адресою, якщо закриєте OnionShare і знову відкриєте його пізніше."
-#: ../../source/features.rst:129
+#: ../../source/features.rst:132
msgid ""
"If your website is intended for the public, you should run it as a public"
" service (see :ref:`turn_off_private_key`)."
@@ -452,11 +462,11 @@ msgstr ""
"запустити його загальнодоступною службою (подробиці "
":ref:`turn_off_private_key`)."
-#: ../../source/features.rst:132
+#: ../../source/features.rst:135
msgid "Chat Anonymously"
msgstr "Спілкуйтеся таємно"
-#: ../../source/features.rst:134
+#: ../../source/features.rst:137
msgid ""
"You can use OnionShare to set up a private, secure chat room that doesn't"
" log anything. Just open a chat tab and click \"Start chat server\"."
@@ -465,7 +475,7 @@ msgstr ""
"захищеної кімнати чату, яка нічого не реєструє. Просто відкрийте вкладку "
"чату та натисніть «Запустити сервер чату»."
-#: ../../source/features.rst:138
+#: ../../source/features.rst:141
msgid ""
"After you start the server, copy the OnionShare address and private key "
"and send them to the people you want in the anonymous chat room. If it's "
@@ -473,12 +483,12 @@ msgid ""
"to send out the OnionShare address and private key."
msgstr ""
"Після запуску сервера скопіюйте адресу OnionShare і приватний ключ та "
-"надішліть їх людям, які мають приєднатися до цієї анонімної кімнати бесіди. "
-"Якщо важливо обмежити коло учасників, ви повинні скористатися застосунком "
-"обміну зашифрованими повідомленнями для надсилання адреси й приватного ключа "
-"OnionShare."
+"надішліть їх людям, які мають приєднатися до цієї анонімної кімнати "
+"бесіди. Якщо важливо обмежити коло учасників, ви повинні скористатися "
+"застосунком обміну зашифрованими повідомленнями для надсилання адреси й "
+"приватного ключа OnionShare."
-#: ../../source/features.rst:143
+#: ../../source/features.rst:146
msgid ""
"People can join the chat room by loading its OnionShare address in Tor "
"Browser. The chat room requires JavasScript, so everyone who wants to "
@@ -490,7 +500,7 @@ msgstr ""
"участь, повинні встановити рівень безпеки на «Стандартний» або "
"«Безпечніший» замість «Найбезпечніший»."
-#: ../../source/features.rst:146
+#: ../../source/features.rst:149
msgid ""
"When someone joins the chat room they get assigned a random name. They "
"can change their name by typing a new name in the box in the left panel "
@@ -502,7 +512,7 @@ msgstr ""
"натиснувши ↵. Попередні повідомлення взагалі не з'являться, навіть якщо "
"інші вже спілкувалися в чаті, оскільки історія чату ніде не зберігається."
-#: ../../source/features.rst:152
+#: ../../source/features.rst:155
msgid ""
"In an OnionShare chat room, everyone is anonymous. Anyone can change "
"their name to anything, and there is no way to confirm anyone's identity."
@@ -510,7 +520,7 @@ msgstr ""
"У чаті OnionShare всі анонімні. Будь-хто може змінити своє ім'я на яке "
"завгодно і жодного способу підтвердження особи не існує."
-#: ../../source/features.rst:155
+#: ../../source/features.rst:158
msgid ""
"However, if you create an OnionShare chat room and securely send the "
"address only to a small group of trusted friends using encrypted "
@@ -522,11 +532,11 @@ msgstr ""
"то ви можете бути обґрунтовано впевнені, що люди, які приєднуються до "
"чату, є вашими друзями."
-#: ../../source/features.rst:158
+#: ../../source/features.rst:161
msgid "How is this useful?"
msgstr "Чим це корисно?"
-#: ../../source/features.rst:160
+#: ../../source/features.rst:163
msgid ""
"If you need to already be using an encrypted messaging app, what's the "
"point of an OnionShare chat room to begin with? It leaves less traces."
@@ -535,7 +545,7 @@ msgstr ""
"повідомленнями, то який сенс спілкування в OnionShare? Він залишає менше "
"слідів."
-#: ../../source/features.rst:162
+#: ../../source/features.rst:165
msgid ""
"If you for example send a message to a Signal group, a copy of your "
"message ends up on each device (the smartphones, and computers if they "
@@ -547,14 +557,15 @@ msgid ""
"minimum."
msgstr ""
"Наприклад, якщо ви надсилаєте повідомлення у групі Signal, копія "
-"повідомлення потрапляє на кожен пристрій (смартфони та комп'ютери, якщо вони "
-"встановили Signal Desktop) кожного учасника групи. Навіть якщо увімкнено "
-"зникнення повідомлень, важко впевнитися, що всі копії повідомлень справді "
-"видалено з усіх пристроїв та з будь-яких інших місць (наприклад, баз даних "
-"сповіщень), до яких, можливо, їх було збережено. Кімнати бесід OnionShare "
-"ніде не зберігають жодних повідомлень, тому проблема зводиться до мінімуму."
+"повідомлення потрапляє на кожен пристрій (смартфони та комп'ютери, якщо "
+"вони встановили Signal Desktop) кожного учасника групи. Навіть якщо "
+"увімкнено зникнення повідомлень, важко впевнитися, що всі копії "
+"повідомлень справді видалено з усіх пристроїв та з будь-яких інших місць "
+"(наприклад, баз даних сповіщень), до яких, можливо, їх було збережено. "
+"Кімнати бесід OnionShare ніде не зберігають жодних повідомлень, тому "
+"проблема зводиться до мінімуму."
-#: ../../source/features.rst:165
+#: ../../source/features.rst:168
msgid ""
"OnionShare chat rooms can also be useful for people wanting to chat "
"anonymously and securely with someone without needing to create any "
@@ -563,17 +574,18 @@ msgid ""
"journalist to join the chat room, all without compromosing their "
"anonymity."
msgstr ""
-"Кімнати бесід OnionShare також можуть бути корисними для людей, які хочуть "
-"анонімно та безпечно спілкуватися з кимось, не створюючи жодних облікових "
-"записів. Наприклад, джерело може надіслати журналісту адресу OnionShare за "
-"допомогою одноразової адреси електронної пошти, а потім зачекати, поки "
-"журналіст приєднається до бесіди й усе це без шкоди їхній анонімності."
+"Кімнати бесід OnionShare також можуть бути корисними для людей, які "
+"хочуть анонімно та безпечно спілкуватися з кимось, не створюючи жодних "
+"облікових записів. Наприклад, джерело може надіслати журналісту адресу "
+"OnionShare за допомогою одноразової адреси електронної пошти, а потім "
+"зачекати, поки журналіст приєднається до бесіди й усе це без шкоди їхній "
+"анонімності."
-#: ../../source/features.rst:169
+#: ../../source/features.rst:172
msgid "How does the encryption work?"
msgstr "Як працює шифрування?"
-#: ../../source/features.rst:171
+#: ../../source/features.rst:174
msgid ""
"Because OnionShare relies on Tor onion services, connections between the "
"Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When "
@@ -588,7 +600,7 @@ msgstr ""
"сервер через E2EE onion з'єднання, який потім надсилає його всім іншим "
"учасникам чату за допомогою WebSockets через їхні E2EE onion з'єднання."
-#: ../../source/features.rst:173
+#: ../../source/features.rst:176
msgid ""
"OnionShare doesn't implement any chat encryption on its own. It relies on"
" the Tor onion service's encryption instead."
diff --git a/docs/source/locale/uk/LC_MESSAGES/install.po b/docs/source/locale/uk/LC_MESSAGES/install.po
index 7a123e7f..283a49ef 100644
--- a/docs/source/locale/uk/LC_MESSAGES/install.po
+++ b/docs/source/locale/uk/LC_MESSAGES/install.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-11 01:40+0000\n"
+"PO-Revision-Date: 2021-10-08 07:03+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -22,7 +22,7 @@ msgstr ""
#: ../../source/install.rst:2
msgid "Installation"
-msgstr "Встановлення"
+msgstr "Установлення"
#: ../../source/install.rst:5
msgid "Windows or macOS"
diff --git a/docs/source/locale/uk/LC_MESSAGES/tor.po b/docs/source/locale/uk/LC_MESSAGES/tor.po
index 3f355495..6aeca61e 100644
--- a/docs/source/locale/uk/LC_MESSAGES/tor.po
+++ b/docs/source/locale/uk/LC_MESSAGES/tor.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
-"POT-Creation-Date: 2021-09-09 19:15-0700\n"
-"PO-Revision-Date: 2021-09-10 20:35+0000\n"
+"POT-Creation-Date: 2021-11-23 19:33-0800\n"
+"PO-Revision-Date: 2021-11-25 15:52+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: none\n"
"Language: uk\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/tor.rst:2
@@ -26,15 +26,16 @@ msgstr "З'єднання з Tor"
#: ../../source/tor.rst:4
msgid ""
-"Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the"
-" bottom right of the OnionShare window to get to its settings."
+"Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in"
+" the bottom right of the OnionShare window to open the Tor Settings tab."
msgstr ""
-"Виберіть спосіб під'єднання OnionShare до Tor, натиснувши піктограму «⚙» "
-"у нижньому правому куті вікна OnionShare, щоб перейти до його параметрів."
+"Виберіть спосіб під'єднання OnionShare до Tor, натиснувши піктограму Tor "
+"onion у нижньому правому куті вікна OnionShare, щоб перейти до вкладки "
+"налаштувань Tor."
#: ../../source/tor.rst:9
-msgid "Use the ``tor`` bundled with OnionShare"
-msgstr "Використовуйте ``tor``, який постачається в комплекті з OnionShare"
+msgid "Use the Tor version built into OnionShare"
+msgstr "Використовуйте версію Tor, вбудовану в OnionShare"
#: ../../source/tor.rst:11
msgid ""
@@ -57,10 +58,63 @@ msgstr ""
"використовувати браузер Tor або систему ``tor`` ."
#: ../../source/tor.rst:18
+msgid "Getting Around Censorship"
+msgstr "Обхід цензури"
+
+#: ../../source/tor.rst:20
+msgid ""
+"If your access to the internet is censored, you can configure OnionShare "
+"to connect to the Tor network using `Tor bridges <https://tb-"
+"manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without "
+"one, you don't need to use a bridge."
+msgstr ""
+"Якщо ваш доступ до інтернету цензуровано, ви можете налаштувати OnionShare "
+"для з'єднання з мережею Tor за допомогою `мостів Tor <https://tb-manual."
+"torproject.org/bridges/>`_. Якщо OnionShare під'єднано до Tor без них, вам "
+"не потрібно користуватися мостом."
+
+#: ../../source/tor.rst:22
+msgid ""
+"To use a bridge, open the Tor Settings tab. You must select \"Use the Tor"
+" version built into OnionShare\" and check the \"Use a bridge\" checkbox."
+msgstr ""
+"Щоб використовувати міст, відкрийте вкладку Налаштування Tor. Ви повинні "
+"вибрати «Використовувати версію Tor, вбудовану в OnionShare» і встановити "
+"прапорець «Використовувати міст»."
+
+#: ../../source/tor.rst:25
+msgid ""
+"Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges "
+"is recommended over using `meek-azure`."
+msgstr ""
+"Спочатку спробуйте використовувати вбудований міст. Радимо користуватися "
+"мостами `obfs4` або `snowflake`, а `meek-azure` — лише якщо це утруднено."
+
+#: ../../source/tor.rst:29
+msgid ""
+"If using a built-in bridge doesn't work, you can request a bridge from "
+"torproject.org. You will have to solve a CAPTCHA in order to request a "
+"bridge. (This makes it more difficult for governments or ISPs to block "
+"access to Tor bridges.)"
+msgstr ""
+"Якщо використання вбудованого мосту не працює, ви можете запитати міст у "
+"torproject.org. Вам доведеться розв'язати CAPTCHA, щоб запитати міст. (Це "
+"ускладнює урядамв або постачальникам інтернету блокування доступу до мостів "
+"Tor.)"
+
+#: ../../source/tor.rst:33
+msgid ""
+"You also have the option of using a bridge that you learned about from a "
+"trusted source."
+msgstr ""
+"У вас також є можливість використовувати міст, про який ви дізналися з "
+"надійного джерела."
+
+#: ../../source/tor.rst:36
msgid "Attempt auto-configuration with Tor Browser"
msgstr "Спроба автоматичного налаштування за допомогою браузера Tor"
-#: ../../source/tor.rst:20
+#: ../../source/tor.rst:38
msgid ""
"If you have `downloaded the Tor Browser <https://www.torproject.org>`_ "
"and don't want two ``tor`` processes running, you can use the ``tor`` "
@@ -73,11 +127,11 @@ msgstr ""
"працювало, потрібно тримати браузер Tor у фоновому режимі під час "
"використання OnionShare."
-#: ../../source/tor.rst:24
+#: ../../source/tor.rst:42
msgid "Using a system ``tor`` in Windows"
msgstr "Користування системним ``tor`` на Windows"
-#: ../../source/tor.rst:26
+#: ../../source/tor.rst:44
msgid ""
"This is fairly advanced. You'll need to know how edit plaintext files and"
" do stuff as an administrator."
@@ -85,7 +139,7 @@ msgstr ""
"Це досить просунуто. Вам потрібно знати, як редагувати файли зі звичайним"
" текстом та виконувати дії від імені адміністратором."
-#: ../../source/tor.rst:28
+#: ../../source/tor.rst:46
msgid ""
"Download the Tor Windows Expert Bundle `from "
"<https://www.torproject.org/download/tor/>`_. Extract the compressed file"
@@ -97,7 +151,7 @@ msgstr ""
" копіюйте видобуту теку до ``C:\\Program Files (x86)\\`` й перейменуйте "
"теку з ``Data`` та ``Tor`` в середині на ``tor-win32``."
-#: ../../source/tor.rst:32
+#: ../../source/tor.rst:50
msgid ""
"Make up a control port password. (Using 7 words in a sequence like "
"``comprised stumble rummage work avenging construct volatile`` is a good "
@@ -111,7 +165,7 @@ msgstr ""
"адміністратор і використовуйте ``tor.exe --hash-password``, щоб створити "
"хеш вашого пароля. Наприклад::"
-#: ../../source/tor.rst:39
+#: ../../source/tor.rst:57
msgid ""
"The hashed password output is displayed after some warnings (which you "
"can ignore). In the case of the above example, it is "
@@ -121,7 +175,7 @@ msgstr ""
"знехтувати). У моєму випадку це було "
"``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
-#: ../../source/tor.rst:41
+#: ../../source/tor.rst:59
msgid ""
"Now create a new text file at ``C:\\Program Files (x86)\\tor-"
"win32\\torrc`` and put your hashed password output in it, replacing the "
@@ -131,7 +185,7 @@ msgstr ""
"win32\\torrc`` та помістіть свій хешований пароль до теки, замінивши "
"``HashedControlPassword`` на той, який ви щойно створили::"
-#: ../../source/tor.rst:46
+#: ../../source/tor.rst:64
msgid ""
"In your administrator command prompt, install ``tor`` as a service using "
"the appropriate ``torrc`` file you just created (as described in "
@@ -143,11 +197,11 @@ msgstr ""
"описано у "
"`<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Як це::"
-#: ../../source/tor.rst:50
+#: ../../source/tor.rst:68
msgid "You are now running a system ``tor`` process in Windows!"
msgstr "Тепер ви використовуєте системний процес ``tor`` на Windows!"
-#: ../../source/tor.rst:52
+#: ../../source/tor.rst:70
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using control port\", and "
@@ -165,11 +219,11 @@ msgstr ""
"вибрали раніше. Натисніть кнопку «Перевірити з'єднання з Tor». Якщо все "
"добре, ви побачите «З'єднано з контролером Tor»."
-#: ../../source/tor.rst:61
+#: ../../source/tor.rst:79
msgid "Using a system ``tor`` in macOS"
msgstr "Користування системним ``tor`` на macOS"
-#: ../../source/tor.rst:63
+#: ../../source/tor.rst:81
msgid ""
"First, install `Homebrew <https://brew.sh/>`_ if you don't already have "
"it, and then install Tor::"
@@ -177,15 +231,15 @@ msgstr ""
"Спочатку встановіть `Homebrew <https://brew.sh/>`_, якщо у вас його ще "
"немає. Потім встановіть Tor::"
-#: ../../source/tor.rst:67
+#: ../../source/tor.rst:85
msgid "Now configure Tor to allow connections from OnionShare::"
msgstr "Тепер налаштуйте Tor, щоб дозволити з'єднання з OnionShare::"
-#: ../../source/tor.rst:74
+#: ../../source/tor.rst:92
msgid "And start the system Tor service::"
msgstr "І запустіть системну Tor-службу::"
-#: ../../source/tor.rst:78
+#: ../../source/tor.rst:96
msgid ""
"Open OnionShare and click the \"⚙\" icon in it. Under \"How should "
"OnionShare connect to Tor?\" choose \"Connect using socket file\", and "
@@ -200,15 +254,15 @@ msgstr ""
"автентифікації Tor» виберіть «Без автентифікації або автентифікація через"
" cookie». Натисніть кнопку «Перевірити з'єднання з Tor»."
-#: ../../source/tor.rst:84 ../../source/tor.rst:104
+#: ../../source/tor.rst:102 ../../source/tor.rst:122
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
msgstr "Якщо все добре, ви побачите «З'єднано з контролером Tor»."
-#: ../../source/tor.rst:87
+#: ../../source/tor.rst:105
msgid "Using a system ``tor`` in Linux"
msgstr "Користування системним ``tor`` на Linux"
-#: ../../source/tor.rst:89
+#: ../../source/tor.rst:107
msgid ""
"First, install the ``tor`` package. If you're using Debian, Ubuntu, or a "
"similar Linux distro, It is recommended to use the Tor Project's "
@@ -219,7 +273,7 @@ msgstr ""
"Ubuntu або подібний дистрибутив Linux, я раджу вам використовувати "
"`офіційне сховище <https://support.torproject.org/apt/tor-deb-repo/>`_."
-#: ../../source/tor.rst:91
+#: ../../source/tor.rst:109
msgid ""
"Next, add your user to the group that runs the ``tor`` process (in the "
"case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to "
@@ -229,7 +283,7 @@ msgstr ""
" з Debian і Ubuntu, ``debian-tor``) і налаштуйте OnionShare для "
"під'єднання до файлу керування сокетом ``tor`` вашої системи."
-#: ../../source/tor.rst:93
+#: ../../source/tor.rst:111
msgid ""
"Add your user to the ``debian-tor`` group by running this command "
"(replace ``username`` with your actual username)::"
@@ -237,7 +291,7 @@ msgstr ""
"Додайте свого користувача до групи ``debian-tor``, запустивши цю команду "
"(замініть ``username`` вашим іменем користувача)::"
-#: ../../source/tor.rst:97
+#: ../../source/tor.rst:115
msgid ""
"Reboot your computer. After it boots up again, open OnionShare and click "
"the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" "
@@ -253,39 +307,6 @@ msgstr ""
"автентифікації Tor» виберіть «Без автентифікації або автентифікація через"
" cookie». Натисніть кнопку «Перевірити з'єднання з Tor»."
-#: ../../source/tor.rst:107
-msgid "Using Tor bridges"
-msgstr "Користування мостами Tor"
-
-#: ../../source/tor.rst:109
-msgid ""
-"If your access to the internet is censored, you can configure OnionShare "
-"to connect to the Tor network using `Tor bridges "
-"<https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare "
-"connects to Tor without one, you don't need to use a bridge."
-msgstr ""
-"Якщо ваш доступ до інтернету цензуровано, ви можете налаштувати OnionShare "
-"для з'єднання з мережею Tor за допомогою `мостів Tor <https://2019.www."
-"torproject.org/docs/bridges.html.en>`_. Якщо OnionShare під'єднано до Tor "
-"без них, вам не потрібно користуватися мостом."
-
-#: ../../source/tor.rst:111
-msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
-msgstr "Щоб налаштувати мости, клацніть піктограму «⚙» в OnionShare."
-
-#: ../../source/tor.rst:113
-msgid ""
-"You can use the built-in obfs4 pluggable transports, the built-in "
-"meek_lite (Azure) pluggable transports, or custom bridges, which you can "
-"obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you "
-"need to use a bridge, try the built-in obfs4 ones first."
-msgstr ""
-"Ви можете використовувати вбудовані під'єднувані транспорти obfs4, "
-"вбудовані під'єднувані транспорти meek_lite (Azure) або власні мости, які"
-" ви можете отримати від Tor `BridgeDB "
-"<https://bridges.torproject.org/>`_. Якщо вам потрібно використовувати "
-"міст, спершу спробуйте вбудовані obfs4."
-
#~ msgid "Using a system Tor in Mac OS X"
#~ msgstr ""
@@ -440,3 +461,31 @@ msgstr ""
#~ " теку до ``C:\\Program Files (x86)\\`` "
#~ "і перейменуйте теку з ``Data`` та "
#~ "``Tor`` в середині на ``tor-win32``."
+
+#~ msgid "Use the ``tor`` bundled with OnionShare"
+#~ msgstr "Використовуйте ``tor``, який постачається в комплекті з OnionShare"
+
+#~ msgid "Using Tor bridges"
+#~ msgstr "Користування мостами Tor"
+
+#~ msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
+#~ msgstr "Щоб налаштувати мости, клацніть піктограму «⚙» в OnionShare."
+
+#~ msgid ""
+#~ "You can use the built-in obfs4 "
+#~ "pluggable transports, the built-in "
+#~ "meek_lite (Azure) pluggable transports, or "
+#~ "custom bridges, which you can obtain "
+#~ "from Tor's `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. If you need "
+#~ "to use a bridge, try the built-"
+#~ "in obfs4 ones first."
+#~ msgstr ""
+#~ "Ви можете використовувати вбудовані "
+#~ "під'єднувані транспорти obfs4, вбудовані "
+#~ "під'єднувані транспорти meek_lite (Azure) або"
+#~ " власні мости, які ви можете отримати"
+#~ " від Tor `BridgeDB "
+#~ "<https://bridges.torproject.org/>`_. Якщо вам "
+#~ "потрібно використовувати міст, спершу "
+#~ "спробуйте вбудовані obfs4."
diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/features.po b/docs/source/locale/zh_CN/LC_MESSAGES/features.po
index e71451fb..612c1c5b 100644
--- a/docs/source/locale/zh_CN/LC_MESSAGES/features.po
+++ b/docs/source/locale/zh_CN/LC_MESSAGES/features.po
@@ -3,23 +3,25 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: Blax <blacxbloc@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/features.rst:4
msgid "How OnionShare Works"
-msgstr ""
+msgstr "OnionShare 如何运作"
#: ../../source/features.rst:6
msgid ""
@@ -27,6 +29,8 @@ msgid ""
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
"<https://community.torproject.org/onion-services/>`_."
msgstr ""
+"网络服务器在你的计算机上本地启动,并作为`Tor <https://www.torproject.org/>` `onion services "
+"<https://community.torproject.org/onion-services/>` 让其他人访问。"
#: ../../source/features.rst:8
msgid ""
@@ -64,23 +68,26 @@ msgid ""
"Tor onion services too, it also protects your anonymity. See the "
":doc:`security design </security>` for more info."
msgstr ""
+"因为你自己的电脑是网络服务器,*任何第三方都不能获知 OnionShare *中发生的任何事情,甚至是 OnionShare "
+"的开发者也不能。它是完全私有的。而 OnionShare 也是基于 Tor Onion service,所以它也保护了你的匿名性。请参阅 :doc:`"
+"security design </security>` 以了解更多信息。"
#: ../../source/features.rst:21
msgid "Share Files"
-msgstr ""
+msgstr "共享文件"
#: ../../source/features.rst:23
msgid ""
"You can use OnionShare to send files and folders to people securely and "
"anonymously. Open a share tab, drag in the files and folders you wish to "
"share, and click \"Start sharing\"."
-msgstr ""
+msgstr "你可以使用 OnionShare 来安全且匿名地发送文件和文件夹给别人。打开一个共享标签页,拖入你想共享的文件和文件夹,然后点击“开始共享”。"
#: ../../source/features.rst:27 ../../source/features.rst:93
msgid ""
"After you add files, you'll see some settings. Make sure you choose the "
"setting you're interested in before you start sharing."
-msgstr ""
+msgstr "在你添加了文件后,你会看到一些设定选项。请确保你在开始分享前选中了那些你感兴趣的选项。"
#: ../../source/features.rst:31
msgid ""
@@ -764,4 +771,3 @@ msgstr ""
#~ "WebSockets, through their E2EE onion "
#~ "connections."
#~ msgstr ""
-
diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/help.po b/docs/source/locale/zh_CN/LC_MESSAGES/help.po
index d1eb81e9..55118393 100644
--- a/docs/source/locale/zh_CN/LC_MESSAGES/help.po
+++ b/docs/source/locale/zh_CN/LC_MESSAGES/help.po
@@ -3,37 +3,39 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: Blax <blacxbloc@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/help.rst:2
msgid "Getting Help"
-msgstr ""
+msgstr "获取帮助"
#: ../../source/help.rst:5
msgid "Read This Website"
-msgstr ""
+msgstr "查阅该网站"
#: ../../source/help.rst:7
msgid ""
"You will find instructions on how to use OnionShare. Look through all of "
"the sections first to see if anything answers your questions."
-msgstr ""
+msgstr "你将找到有关如何使用 OnionShare 的说明。先浏览一下所有的章节,看看是否有能回答你的问题的。"
#: ../../source/help.rst:10
msgid "Check the GitHub Issues"
-msgstr ""
+msgstr "查看 Github Issues"
#: ../../source/help.rst:12
msgid ""
@@ -45,7 +47,7 @@ msgstr ""
#: ../../source/help.rst:15
msgid "Submit an Issue Yourself"
-msgstr ""
+msgstr "亲自提交一个 Issue"
#: ../../source/help.rst:17
msgid ""
@@ -58,13 +60,13 @@ msgstr ""
#: ../../source/help.rst:20
msgid "Join our Keybase Team"
-msgstr ""
+msgstr "加入我们的 Keybase Team"
#: ../../source/help.rst:22
msgid ""
"See :ref:`collaborating` on how to join the Keybase team used to discuss "
"the project."
-msgstr ""
+msgstr "请查阅 :ref:`collaborating` 关于如何加入 Keybase team 来讨论这个项目。"
#~ msgid "If you need help with OnionShare, please follow the instructions below."
#~ msgstr ""
@@ -117,4 +119,3 @@ msgstr ""
#~ "that we use to discuss the "
#~ "project."
#~ msgstr ""
-
diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/index.po b/docs/source/locale/zh_CN/LC_MESSAGES/index.po
index 2ad2653c..f6847006 100644
--- a/docs/source/locale/zh_CN/LC_MESSAGES/index.po
+++ b/docs/source/locale/zh_CN/LC_MESSAGES/index.po
@@ -3,27 +3,28 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:46-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: Blax <blacxbloc@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/index.rst:2
msgid "OnionShare's documentation"
-msgstr ""
+msgstr "OnionShare 文档"
#: ../../source/index.rst:6
msgid ""
"OnionShare is an open source tool that lets you securely and anonymously "
"share files, host websites, and chat with friends using the Tor network."
-msgstr ""
-
+msgstr "OnionShare 是一个开源工具,能让你通过 Tor 网络,安全且匿名地共享文件、托管网站以及跟朋友交流。"
diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/install.po b/docs/source/locale/zh_CN/LC_MESSAGES/install.po
index 8a1e3472..7947c3a8 100644
--- a/docs/source/locale/zh_CN/LC_MESSAGES/install.po
+++ b/docs/source/locale/zh_CN/LC_MESSAGES/install.po
@@ -3,33 +3,37 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: Blax <blacxbloc@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.9.0\n"
#: ../../source/install.rst:2
msgid "Installation"
-msgstr ""
+msgstr "安装"
#: ../../source/install.rst:5
msgid "Windows or macOS"
-msgstr ""
+msgstr "安装到 Windows 或 macOS"
#: ../../source/install.rst:7
msgid ""
"You can download OnionShare for Windows and macOS from the `OnionShare "
"website <https://onionshare.org/>`_."
msgstr ""
+"你可以从 `OnionShare website <https://onionshare.org/>` 下载适用于 Windows 和 macOS 的 "
+"OnionShare。"
#: ../../source/install.rst:12
msgid "Install in Linux"
@@ -43,32 +47,41 @@ msgid ""
"that you'll always use the newest version and run OnionShare inside of a "
"sandbox."
msgstr ""
+"这有几种方式安装适用于 Linux 的 OnionShare,但推荐使用 `Flatpak <https://flatpak.org/>` 或 `"
+"Snap <https://snapcraft.io/>` 的软件包来安装。Flatpak 和 Snap 确保你将总能使用最新版本的 "
+"OnionShare 并在一个沙箱里运行它。"
#: ../../source/install.rst:17
msgid ""
"Snap support is built-in to Ubuntu and Fedora comes with Flatpak support,"
" but which you use is up to you. Both work in all Linux distributions."
msgstr ""
+"Ubuntu 内建对 Snap 的支持而 Fedora 附带对 Flatpak 的支持,但选择哪一种取决于你。这两种都能在所有的 Linux "
+"发行版上使用。"
#: ../../source/install.rst:19
msgid ""
"**Install OnionShare using Flatpak**: "
"https://flathub.org/apps/details/org.onionshare.OnionShare"
msgstr ""
+"**使用 Flatpak 安装 OnionShare**: https://flathub.org/apps/details/org.onionshare"
+".OnionShare"
#: ../../source/install.rst:21
msgid "**Install OnionShare using Snap**: https://snapcraft.io/onionshare"
-msgstr ""
+msgstr "**使用 Snap 安装 OnionShare**: https://snapcraft.io/onionshare"
#: ../../source/install.rst:23
msgid ""
"You can also download and install PGP-signed ``.flatpak`` or ``.snap`` "
"packages from https://onionshare.org/dist/ if you prefer."
msgstr ""
+"如果你愿意的话,你也可以从 https://onionshare.org/dist/ 下载和安装 PGP 签署过的 ``.flatpak`` 或 ``."
+"snap`` 软件包。"
#: ../../source/install.rst:28
msgid "Verifying PGP signatures"
-msgstr ""
+msgstr "验证 PGP 签名"
#: ../../source/install.rst:30
msgid ""
@@ -78,10 +91,12 @@ msgid ""
"binaries include operating system-specific signatures, and you can just "
"rely on those alone if you'd like."
msgstr ""
+"你可以通过验证其 PGP 签名来验证你下载的软件包是可靠且未被篡改过的。对于 Windows 和 macOS 来说,这一步是可选的,并提供更深层次的保护:"
+"OnionShare 的二进制文件中包含操作系统特定的数字签名,如果你愿意的话,你可以只依赖这些签名。"
#: ../../source/install.rst:34
msgid "Signing key"
-msgstr ""
+msgstr "签名密钥"
#: ../../source/install.rst:36
msgid ""
@@ -91,6 +106,10 @@ msgid ""
"<https://keys.openpgp.org/vks/v1/by-"
"fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73>`_."
msgstr ""
+"软件包由核心开发者 Micah Lee 通过使用他的 PGP 公钥签名,其指纹为 "
+"``927F419D7EC82C2F149C1BD1403C2657CD994F73``。你可以下载 Micah 的公钥 `从 "
+"keys.openpgp.org keyserver <https://keys.openpgp.org/vks/v1/by-fingerprint/"
+"927F419D7EC82C2F149C1BD1403C2657CD994F73>`。"
#: ../../source/install.rst:38
msgid ""
@@ -98,10 +117,12 @@ msgid ""
"probably want `GPGTools <https://gpgtools.org/>`_, and for Windows you "
"probably want `Gpg4win <https://www.gpg4win.org/>`_."
msgstr ""
+"你必须安装 GnuPG 来验证签名,对于 macOS 你可能想要 `GPGTools <https://gpgtools.org/>`,对于 "
+"Windows 你可能想要 `Gpg4win <https://www.gpg4win.org/>`。"
#: ../../source/install.rst:41
msgid "Signatures"
-msgstr ""
+msgstr "签名"
#: ../../source/install.rst:43
msgid ""
@@ -111,10 +132,13 @@ msgid ""
"OnionShare. You can also find them on the `GitHub Releases page "
"<https://github.com/micahflee/onionshare/releases>`_."
msgstr ""
+"你可以在 https://onionshare.org/dist/ 下以 OnionShare 每个版本命名的文件夹中找到这些签名(以 ``.asc`` "
+"文件形式),以及对应 Windows、macOS、Flatpak、Snap 的 OnionShare 安装包和源码包。你也能在 `GitHub "
+"Releases page <https://github.com/micahflee/onionshare/releases>` 上找到它们。"
#: ../../source/install.rst:47
msgid "Verifying"
-msgstr ""
+msgstr "验证"
#: ../../source/install.rst:49
msgid ""
@@ -122,14 +146,16 @@ msgid ""
"downloaded the binary and and ``.asc`` signature, you can verify the "
"binary for macOS in a terminal like this::"
msgstr ""
+"只要你导入过 Micah 的公钥到你的 GnuPG 密钥串上,下载好(被 Micah 的密钥签署过的)二进制文件和 ``.asc`` 签名文件,"
+"你就可以在 macOS 的终端中验证这个二进制文件,像这样:"
#: ../../source/install.rst:53
msgid "Or for Windows, in a command-prompt like this::"
-msgstr ""
+msgstr "或是在 Windows 的命令提示符(cmd)中:"
#: ../../source/install.rst:57
msgid "The expected output looks like this::"
-msgstr ""
+msgstr "期望的输出看起来像是这样:"
#: ../../source/install.rst:69
msgid ""
@@ -147,6 +173,9 @@ msgid ""
" the `Tor Project <https://support.torproject.org/tbb/how-to-verify-"
"signature/>`_ may be useful."
msgstr ""
+"如果你想了解更多有关验证 PGP 签名的知识,这几篇指南 `Qubes OS <https://www.qubes-os.org/security/"
+"verifying-signatures/>` 和 `Tor Project <https://support.torproject.org/tbb/"
+"how-to-verify-signature/>` 可能会有帮助。"
#~ msgid "Install on Windows or macOS"
#~ msgstr ""
@@ -333,4 +362,3 @@ msgstr ""
#~ "Project <https://support.torproject.org/tbb/how-to-"
#~ "verify-signature/>`_ may be helpful."
#~ msgstr ""
-
diff --git a/docs/source/locale/zh_CN/LC_MESSAGES/sphinx.po b/docs/source/locale/zh_CN/LC_MESSAGES/sphinx.po
index f2cc8ed5..d82be56f 100644
--- a/docs/source/locale/zh_CN/LC_MESSAGES/sphinx.po
+++ b/docs/source/locale/zh_CN/LC_MESSAGES/sphinx.po
@@ -3,25 +3,26 @@
# This file is distributed under the same license as the OnionShare package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3\n"
-"Report-Msgid-Bugs-To: \n"
+"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
"POT-Creation-Date: 2020-09-03 11:37-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2021-11-26 18:53+0000\n"
+"Last-Translator: Blax <blacxbloc@protonmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.10-dev\n"
"Generated-By: Babel 2.8.0\n"
#: ../../source/_templates/versions.html:10
msgid "Versions"
-msgstr ""
+msgstr "版本"
#: ../../source/_templates/versions.html:18
msgid "Languages"
-msgstr ""
-
+msgstr "语言"
diff --git a/docs/source/tor.rst b/docs/source/tor.rst
index e0b02d27..a883dfb7 100644
--- a/docs/source/tor.rst
+++ b/docs/source/tor.rst
@@ -1,12 +1,12 @@
Connecting to Tor
=================
-Pick a way to connect OnionShare to Tor by clicking the "⚙" icon in the bottom right of the OnionShare window to get to its settings.
+Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in the bottom right of the OnionShare window to open the Tor Settings tab.
-.. image:: _static/screenshots/settings.png
+.. image:: _static/screenshots/tor-settings.png
-Use the ``tor`` bundled with OnionShare
----------------------------------------
+Use the Tor version built into OnionShare
+-----------------------------------------
This is the default, simplest and most reliable way that OnionShare connects to Tor.
For this reason, it's recommended for most users.
@@ -14,6 +14,24 @@ For this reason, it's recommended for most users.
When you open OnionShare, it launches an already configured ``tor`` process in the background for OnionShare to use.
It doesn't interfere with other ``tor`` processes on your computer, so you can use the Tor Browser or the system ``tor`` on their own.
+Getting Around Censorship
+-------------------------
+
+If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://tb-manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without one, you don't need to use a bridge.
+
+To use a bridge, open the Tor Settings tab.
+You must select "Use the Tor version built into OnionShare" and check the "Use a bridge" checkbox.
+
+Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges is recommended over using `meek-azure`.
+
+.. image:: _static/screenshots/tor-settings-bridges.png
+
+If using a built-in bridge doesn't work, you can request a bridge from torproject.org. You will have to solve a CAPTCHA in order to request a bridge. (This makes it more difficult for governments or ISPs to block access to Tor bridges.)
+
+.. image:: _static/screenshots/tor-settings-moat.png
+
+You also have the option of using a bridge that you learned about from a trusted source.
+
Attempt auto-configuration with Tor Browser
-------------------------------------------
@@ -102,13 +120,3 @@ Under "Tor authentication settings" choose "No authentication, or cookie authent
Click the "Test Connection to Tor" button.
If all goes well, you should see "Connected to the Tor controller".
-
-Using Tor bridges
------------------
-
-If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare connects to Tor without one, you don't need to use a bridge.
-
-To configure bridges, click the "⚙" icon in OnionShare.
-
-You can use the built-in obfs4 pluggable transports, the built-in meek_lite (Azure) pluggable transports, or custom bridges, which you can obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_.
-If you need to use a bridge, try the built-in obfs4 ones first.
diff --git a/licenses/license-onionshare.txt b/licenses/license-onionshare.txt
index 77d05583..791c7620 100644
--- a/licenses/license-onionshare.txt
+++ b/licenses/license-onionshare.txt
@@ -3,7 +3,7 @@ Copyright (C) 2014-2018 Micah Lee <micah@micahflee.com>
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -647,7 +647,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
@@ -666,11 +666,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
+<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 2ee174df..e64b4af1 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -3,9 +3,9 @@ base: core18
version: '2.4.1'
summary: Securely and anonymously share files, host websites, and chat using Tor
description: |
- OnionShare lets you securely and anonymously send and receive files. It works by starting
- a web server, making it accessible as a Tor onion service, and generating an unguessable
- web address so others can download files from you, or upload files to you. It does _not_
+ OnionShare lets you securely and anonymously send and receive files. It works by starting
+ a web server, making it accessible as a Tor onion service, and generating an unguessable
+ web address so others can download files from you, or upload files to you. It does _not_
require setting up a separate server or using a third party file-sharing service.
grade: stable # stable or devel
@@ -24,7 +24,7 @@ apps:
- removable-media
environment:
LANG: C.UTF-8
-
+
cli:
common-id: org.onionshare.OnionShareCli
command: onionshare-cli
@@ -38,7 +38,7 @@ apps:
parts:
onionshare:
- source: ./desktop/src
+ source: ./desktop
plugin: python
python-version: python3
python-packages:
@@ -147,7 +147,7 @@ parts:
- libssl-dev
- zlib1g-dev
after: [libevent]
-
+
libevent:
source: https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
source-checksum: sha256/92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb