mirror of
https://github.com/onionshare/onionshare.git
synced 2025-04-29 14:19:30 -04:00
Compare commits
42 commits
Author | SHA1 | Date | |
---|---|---|---|
|
16644b009f | ||
|
6041dcaf69 | ||
|
42c050361b | ||
|
c420f4c0aa | ||
|
fe65b97656 | ||
|
1b0cd5440a | ||
|
b62e23bf35 | ||
|
2c15e5b0d0 | ||
|
7eff566b05 | ||
|
3c29b4f1de | ||
|
239d2cd460 | ||
|
db10da294f | ||
|
303c83604c | ||
|
73f153af3b | ||
|
10eacf9bcc | ||
|
875e346225 | ||
|
6ad3427f1c | ||
|
ed9ba67c88 | ||
|
66199a858b | ||
|
b9920d61ba | ||
|
c8a7cd02e1 | ||
|
b2556a56e0 | ||
|
d4ffd4bcb3 | ||
|
2d8e9d1339 | ||
|
863bc4c47c | ||
|
c7a4740529 | ||
|
ef43fc6762 | ||
|
e76511aaa9 | ||
|
96b838ec3e | ||
|
9aedb2933e | ||
|
7b950bfdd0 | ||
|
5572a5eb04 | ||
|
19c0a615e7 | ||
|
9c7d38f8c6 | ||
|
887b967278 | ||
|
17f67d2a39 | ||
|
45440f7c14 | ||
|
639a69a603 | ||
|
9b30742aac | ||
|
47abe542ff | ||
|
c7a36543ec | ||
|
0dd5ce5a5b |
30 changed files with 485 additions and 292 deletions
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
|
@ -41,7 +41,7 @@ jobs:
|
|||
key: ${{ runner.os }}-win64-tor-${{ hashFiles('desktop/scripts/get-tor.py') }}
|
||||
|
||||
- name: Get tor binaries from Tor Browser (64-bit)
|
||||
run: cd desktop && C:\hostedtoolcache\windows\Python\3.12.8\x64\Scripts\poetry run python .\scripts\get-tor.py win64
|
||||
run: cd desktop && C:\hostedtoolcache\windows\Python\3.12.8\x64\Scripts\poetry run python .\scripts\get-tor.py windows-x86_64
|
||||
|
||||
- name: Install Go >=1.23.5
|
||||
uses: actions/setup-go@v5
|
||||
|
@ -116,7 +116,7 @@ jobs:
|
|||
path: ~\onionshare-win64.zip
|
||||
|
||||
build-mac-intel:
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-13
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
@ -212,6 +212,10 @@ jobs:
|
|||
cp -r /Volumes/Postgres-2.6.5-14/Postgres.app /Applications/
|
||||
hdiutil detach /Volumes/Postgres-2.6.5-14
|
||||
|
||||
- name: Touch dylib file for build to finish
|
||||
run: |
|
||||
touch /usr/local/lib/libmimerapi.dylib
|
||||
|
||||
- name: Build OnionShare
|
||||
run: |
|
||||
cd desktop
|
||||
|
|
64
RELEASE.md
64
RELEASE.md
|
@ -93,7 +93,9 @@ To test locally:
|
|||
|
||||
To test in the edge branch:
|
||||
|
||||
With every commit to the `main` branch, Snapcraft's CI should trigger builds. Make sure the builds all succeeded at https://snapcraft.io/onionshare/builds (you must be logged in), and test them. You can install them with: `snap install onionshare --edge`
|
||||
With every commit to the `main` branch, Snapcraft's CI should trigger builds. If you just merged to `main` and consider this to be what will become the new version's 'tag', you can also click 'Trigger a build' in the Snapcraft.io web interface.
|
||||
|
||||
Make sure the builds all succeeded at https://snapcraft.io/onionshare/builds (you must be logged in), and test them. You can install them with: `snap install onionshare --edge`
|
||||
|
||||
### Make sure the Flatpak packaging works
|
||||
|
||||
|
@ -152,7 +154,7 @@ git checkout v$VERSION
|
|||
|
||||
### Linux Snapcraft release
|
||||
|
||||
From https://snapcraft.io/onionshare/releases (you must be logged in), promote the release from latest/edge to latest/beta, then latest/candidate, then latest/stable.
|
||||
From https://snapcraft.io/onionshare/releases (you must be logged in), find the release that corresponds to the recent builds that ran against our `main` branch (the Build ID mentioned can be cross-referenced to the build log, as the ID appears in the log). You can then 'promote' that release from latest/edge to latest/beta, then latest/candidate, then latest/stable.
|
||||
|
||||
### Linux Flatpak release
|
||||
|
||||
|
@ -167,7 +169,7 @@ From https://snapcraft.io/onionshare/releases (you must be logged in), promote t
|
|||
Create a Windows 11 VM, and set it up like this:
|
||||
|
||||
- Install [git for Windows](https://git-scm.com/download/win).
|
||||
- Install the latest version of 3.11 [from python.org](https://www.python.org/downloads/).
|
||||
- Install the latest version of 3.12 [from python.org](https://www.python.org/downloads/).
|
||||
- Install [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/), making sure to check "Desktop development with C++".
|
||||
- Download and install [7-Zip (x64)](https://7-zip.org/). Add `C:\Program Files\7-Zip` to your path.
|
||||
- Download and install [gpg4win](https://gpg4win.org/). Add `C:\Program Files (x86)\GnuPG\bin` to your path.
|
||||
|
@ -211,7 +213,7 @@ Set up the VM like this:
|
|||
|
||||
- Install [Homebrew](https://brew.sh/)
|
||||
- `brew install create-dmg libiodbc`
|
||||
- Install the latest Python 3.11 from https://www.python.org/downloads/
|
||||
- Install the latest Python 3.12 from https://www.python.org/downloads/
|
||||
- Install ARM64 version of Go from https://go.dev/dl/
|
||||
- Install "Postgres.app with PostgreSQL 16 (Universal)" from https://postgresapp.com/downloads.html
|
||||
|
||||
|
@ -223,16 +225,16 @@ If you've used this git repo for a previous release, clean it up:
|
|||
cd desktop
|
||||
rm -rf build dist
|
||||
# Delete the old poetry environment
|
||||
poetry env remove $(poetry env list | grep "(Activated)" | cut -d" " -f1)
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry env remove $(poetry env list | grep "(Activated)" | cut -d" " -f1)
|
||||
```
|
||||
|
||||
Install and build dependencies:
|
||||
|
||||
```sh
|
||||
cd desktop
|
||||
python3 -m pip install poetry
|
||||
/Library/Frameworks/Python.framework/Versions/3.11/bin/poetry install
|
||||
/Library/Frameworks/Python.framework/Versions/3.11/bin/poetry run python ./scripts/get-tor.py macos
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/python3 -m pip install poetry
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry install
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/get-tor.py macos
|
||||
./scripts/build-pt-obfs4proxy.sh
|
||||
./scripts/build-pt-snowflake.sh
|
||||
./scripts/build-pt-meek.sh
|
||||
|
@ -241,42 +243,62 @@ python3 -m pip install poetry
|
|||
Make the Apple Silicon app bundle:
|
||||
|
||||
```sh
|
||||
/Library/Frameworks/Python.framework/Versions/3.11/bin/poetry run python ./setup-freeze.py bdist_mac
|
||||
/Library/Frameworks/Python.framework/Versions/3.11/bin/poetry run python ./scripts/build-macos.py cleanup-build
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./setup-freeze.py bdist_mac
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py cleanup-build
|
||||
```
|
||||
|
||||
The Apple Silicon app bundle will be in `build` folder called `OnionShare.app`.
|
||||
|
||||
Github Actions will build the Intel app bundle. Find the Github Actions `build` workflow, switch to the summary tab, and download the `mac-intel-build` artifact. Extract it, and you'll get the Intel `OnionShare.app` folder.
|
||||
|
||||
Let's create some consistent directories for the next step:
|
||||
|
||||
```sh
|
||||
mkdir ~/tmp/intel
|
||||
mkdir ~/tmp/arm64
|
||||
mkdir ~/tmp/universal
|
||||
```
|
||||
|
||||
Now move the `build/OnionShare.app` into `~/tmp/arm64`, and extract the Intel .app from the Github Actions build artifact above, and move it into `~/tmp/intel`.
|
||||
|
||||
Next, merge these two app bundles into a single universal2 app bundle:
|
||||
|
||||
```sh
|
||||
poetry run ./scripts/macos-merge-universal.py [intel_app_path] [silicon_app_path] [universal2_app_path]
|
||||
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run ./scripts/macos-merge-universal.py ~/tmp/intel/OnionShare.app ~/tmp/arm64/OnionShare.app ~/tmp/universal/OnionShare.app
|
||||
```
|
||||
|
||||
Finally, code sign and package the universal2 app bundle:
|
||||
You will need to have obtained a Developer ID Certificate from our Apple team account. The 'Development certificates' don't work for production-ready code-signing.
|
||||
|
||||
Only Glenn as the 'Account Holder' can request Developer ID certs, so you will need to provide him a CSR to do so. Refer to https://developer.apple.com/help/account/create-certificates/create-developer-id-certificates/ and https://developer.apple.com/help/account/create-certificates/create-a-certificate-signing-request/ . The private key will be in your keychain. Glenn can send you the cert once it's issued, and you should add that to your keychain too.
|
||||
|
||||
Finally, code sign and package the universal2 app bundle.
|
||||
|
||||
```sh
|
||||
poetry run python ./scripts/build-macos.py codesign [universal2_app_path]
|
||||
poetry run python ./scripts/build-macos.py package [universal2_app_path]
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py codesign ~/tmp/universal/OnionShare.app
|
||||
/Library/Frameworks/Python.framework/Versions/3.12/bin/poetry run python ./scripts/build-macos.py package ~/tmp/universal/OnionShare.app
|
||||
```
|
||||
|
||||
The will create `dist/OnionShare-$VERSION.dmg`.
|
||||
The will create `dist/OnionShare-$VERSION.dmg` in the `desktop` directory that you're still cd'd into.
|
||||
|
||||
Now, notarize the release.
|
||||
Now, notarize the release. You will need an app-specific Apple ID password set up. You will also need to change the `--apple-id` to your Apple ID email. The team ID below, however, is consistent to all of us, it's the Science & Design team ID.
|
||||
|
||||
```sh
|
||||
export APPLE_PASSWORD="changeme" # app-specific Apple ID password
|
||||
export APPLE_PASSWORD="changeme" # This must be an app-specific Apple ID password, not your main Apple ID password
|
||||
export VERSION=$(cat ../cli/onionshare_cli/resources/version.txt)
|
||||
|
||||
# Notarize it
|
||||
xcrun notarytool submit --apple-id "micah@micahflee.com" --team-id N9B95FDWH4 --password "$APPLE_PASSWORD" --progress --wait dist/OnionShare-$VERSION.dmg
|
||||
xcrun notarytool submit --apple-id "you@example.com" --team-id 7WLJ4UBL5L --password "$APPLE_PASSWORD" --progress --wait dist/OnionShare-$VERSION.dmg
|
||||
```
|
||||
|
||||
If this is your first time notarizing with this Apple ID, it can take a very long time (like 9 hours), because Apple builds up a sort of 'signature' of your request and this kind of app. All subsequent notarizations (for future releases) should be much faster (a couple of minutes).
|
||||
|
||||
```sh
|
||||
# After it's approved, staple the ticket
|
||||
xcrun stapler staple dist/OnionShare-$VERSION.dmg
|
||||
```
|
||||
|
||||
This will create `desktop/dist/OnionShare-$VERSION.dmg`, signed and notarized.
|
||||
This will (re)create `desktop/dist/OnionShare-$VERSION.dmg`, signed and notarized. The dmg is now ready for release.
|
||||
|
||||
### Source package
|
||||
|
||||
|
@ -334,6 +356,4 @@ poetry publish --build
|
|||
|
||||
### Update the community
|
||||
|
||||
- Upload all 10 files to the OnionShare team Keybase filesystem
|
||||
- Email the [onionshare-dev](https://lists.riseup.net/www/subscribe/onionshare-dev) mailing list announcing the release
|
||||
- Blog, tweet, toot, etc.
|
||||
- Blog, toot, etc.
|
||||
|
|
|
@ -46,7 +46,7 @@ then
|
|||
echo "Tag does not verify"
|
||||
exit 1
|
||||
fi
|
||||
cat ../verify.txt | grep -e "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73" -e "using RSA key 2E530667425F4B93874935707B7F1772C0C6FCBF"
|
||||
cat ../verify.txt | grep -e "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73" -e "using RSA key 2E530667425F4B93874935707B7F1772C0C6FCBF" -e "using RSA key 3804565A5EFA6C11AFDA0E5359B3F0C24135C6A9"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Tag signed with wrong key"
|
||||
|
|
|
@ -614,7 +614,7 @@ class AutoStopTimer(threading.Thread):
|
|||
|
||||
self.common = common
|
||||
|
||||
self.setDaemon(True)
|
||||
self.daemon = True
|
||||
self.time = time
|
||||
|
||||
def run(self):
|
||||
|
|
28
cli/poetry.lock
generated
28
cli/poetry.lock
generated
|
@ -1,4 +1,4 @@
|
|||
# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "bidict"
|
||||
|
@ -608,11 +608,11 @@ greenlet = [
|
|||
"zope.interface" = "*"
|
||||
|
||||
[package.extras]
|
||||
dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"]
|
||||
dnspython = ["dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\""]
|
||||
docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"]
|
||||
monitor = ["psutil (>=5.7.0)"]
|
||||
recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"]
|
||||
test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests", "setuptools"]
|
||||
monitor = ["psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""]
|
||||
recommended = ["cffi (>=1.12.2) ; platform_python_implementation == \"CPython\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""]
|
||||
test = ["cffi (>=1.12.2) ; platform_python_implementation == \"CPython\"", "coverage (>=5.0) ; sys_platform != \"win32\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "objgraph", "psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\"", "requests", "setuptools"]
|
||||
|
||||
[[package]]
|
||||
name = "gevent-websocket"
|
||||
|
@ -754,14 +754,14 @@ files = [
|
|||
|
||||
[[package]]
|
||||
name = "jinja2"
|
||||
version = "3.1.5"
|
||||
version = "3.1.6"
|
||||
description = "A very fast and expressive template engine."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
|
||||
{file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
|
||||
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
|
||||
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -895,7 +895,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
|
||||
test = ["enum34 ; python_version <= \"3.4\"", "ipaddress ; python_version < \"3.0\"", "mock ; python_version < \"3.0\"", "pywin32 ; sys_platform == \"win32\"", "wmi ; sys_platform == \"win32\""]
|
||||
|
||||
[[package]]
|
||||
name = "pycparser"
|
||||
|
@ -1085,13 +1085,13 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"]
|
||||
core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""]
|
||||
core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
|
||||
[[package]]
|
||||
name = "simple-websocket"
|
||||
|
@ -1172,7 +1172,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
||||
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
||||
h2 = ["h2 (>=4,<5)"]
|
||||
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
zstd = ["zstandard (>=0.18.0)"]
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
## Building OnionShare
|
||||
|
||||
If you are running Linux, you can make use of the script `setup-project.sh` in the parent directory, which automates most of the steps below.
|
||||
|
||||
Otherwise, please continue to read on.
|
||||
|
||||
Start by getting the source code and changing to the `desktop` folder:
|
||||
|
||||
```sh
|
||||
|
@ -35,7 +39,7 @@ poetry install
|
|||
- Download and install [7-Zip (x64)](https://7-zip.org/). Add `C:\Program Files\7-Zip` to your path.
|
||||
- Download and install [gpg4win](https://gpg4win.org/). Add `C:\Program Files (x86)\GnuPG\bin` to your path.
|
||||
|
||||
Download Tor Browser and extract the binaries for your platform. The platform must be `win64`, `macos`, or `linux-x86_64`.
|
||||
Download Tor Browser and extract the binaries for your platform. The platform must be `windows-x86_64`, `macos`, or `linux-x86_64`.
|
||||
|
||||
```sh
|
||||
poetry run python ./scripts/get-tor.py [platform]
|
||||
|
|
|
@ -256,5 +256,6 @@
|
|||
"gui_receive_url_public_description": "يمكن <b>لأي شخص</b> لديه عنوان OnionShare هذا <b>رفع</b> الملفات إلى حاسوبك باستخدام <b>متصفح تور </b>: <img src='{}' />",
|
||||
"gui_chat_mode_explainer": "وضع المحادثة يتيح لك المحادثة بشكل تفاعلي مع الآخرين، في متصفح تور.<br><br><b>لا يتم تخزين سجل المحادثة في OnionShare. سوف يختفي سجل المحادثة عند إغلاق متصفح تور.</b>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "ابدأ خدمة البصل هذه تلقائيًا عند بدء تشغيل Onionshare",
|
||||
"gui_settings_license_label": "تم ترخيص Onionshare بموجب GPL v3.<br> يمكن الاطلاع على تراخيص الطرف الثالث هنا:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>"
|
||||
"gui_settings_license_label": "تم ترخيص Onionshare بموجب GPL v3.<br> يمكن الاطلاع على تراخيص الطرف الثالث هنا:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>",
|
||||
"error_generic": "كان هناك خطأ غير متوقع مع OnionShare:\n{}"
|
||||
}
|
||||
|
|
|
@ -256,5 +256,6 @@
|
|||
"history_receive_read_message_button": "Прочитане",
|
||||
"gui_chat_mode_explainer": "Режимът за бързи съобщения ви дава възможност да обменяте съобщения в реално време посредством четеца Тор.<br><br><b>Хронологията на разговора не се пази в OnionShare. Тя изчезва при затваряне на четеца.<b>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Стартиране на тази услуга на Onion при отваряне на OnionShare",
|
||||
"gui_settings_license_label": "OnionShare се разпространява под GPL v3.<br>Лицензите на трети страни могат да бъдат видяни тук:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>"
|
||||
"gui_settings_license_label": "OnionShare се разпространява под GPL v3.<br>Лицензите на трети страни могат да бъдат видяни тук:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>",
|
||||
"error_generic": "Неочаквана грешка в OnionShare:\n{}"
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
"gui_tor_connection_canceled": "Konnte keine Verbindung mit Tor herstellen.\n\nStelle sicher, dass du mit dem Internet verbunden bist, öffne OnionShare erneut und richte die Verbindung mit Tor ein.",
|
||||
"gui_share_url_description": "<b>Jeder</b> kann mit dieser OnionShare-Adresse und dem privaten Schlüssel deine Dateien mit dem <b>Tor-Browser</b> <b>herunterladen</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Jeder</b> mit dieser OnionShare-Adresse und dem privaten Schlüssel kann mit dem <b>Tor-Browser</b> Dateien auf deinen Computer <b>hochladen</b>: <img src='{}' />",
|
||||
"gui_url_label_persistent": "Diese Freigabe wird nicht automatisch beendet.<br><br>Jede folgende Freigabe wird die Adresse erneut nutzen. (Um Adressen nur einmal zu nutzen, schalte „Nutze beständige Adressen“ in den Einstellungen aus.)",
|
||||
"gui_url_label_persistent": "Diese Freigabe wird nicht automatisch beendet.<br><br>Jede folgende Freigabe wird die Adresse erneut nutzen. (Um Adressen nur einmal zu nutzen, schalte „Diese Registerkarte immer öffnen, wenn OnionShare gestartet wird“ in den Einstellungen aus.)",
|
||||
"gui_url_label_stay_open": "Diese Freigabe wird nicht automatisch beendet.",
|
||||
"gui_url_label_onetime": "Diese Freigabe wird nach dem ersten vollständigen Download beendet.",
|
||||
"gui_status_indicator_share_working": "Starte…",
|
||||
|
@ -91,7 +91,7 @@
|
|||
"systray_page_loaded_title": "Seite geladen",
|
||||
"gui_add_files": "Dateien hinzufügen",
|
||||
"gui_add_folder": "Ordner hinzufügen",
|
||||
"gui_url_label_onetime_and_persistent": "Diese Freigabe wird nicht automatisch stoppen. >br><br>Jede nachfolgende Freigabe wird die gleiche Adresse nutzen. (Um jedes Mal eine andere Adresse zu nutzen, schalte „Nutze eine gleichbleibende Adresse“ in den Einstellungen aus.)",
|
||||
"gui_url_label_onetime_and_persistent": "Diese Freigabe wird nicht automatisch stoppen. >br><br>Jede nachfolgende Freigabe wird die gleiche Adresse nutzen. (Um jedes Mal eine andere Adresse zu nutzen, schalte \"Diese Registerkarte immer öffnen, wenn OnionShare gestartet wird\" in den Einstellungen aus.)",
|
||||
"error_cannot_create_data_dir": "Der Ordner für die OnionShare-Dateien konnte nicht erstellt werden: {}",
|
||||
"systray_page_loaded_message": "OnionShare-Adresse geladen",
|
||||
"systray_share_started_title": "Freigabe gestartet",
|
||||
|
@ -138,7 +138,7 @@
|
|||
"mode_settings_autostop_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt stoppen",
|
||||
"mode_settings_autostart_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt starten",
|
||||
"mode_settings_public_checkbox": "Dies ist ein öffentlicher OnionShare-Dienst (deaktiviert den privaten Schlüssel)",
|
||||
"mode_settings_persistent_checkbox": "Diesen Tab immer öffnen, wenn OnionShare gestartet wird",
|
||||
"mode_settings_persistent_checkbox": "Diesen Tab immer öffnen, wenn OnionShare gestartet wird (die Onion-Adresse bleibt gleich)",
|
||||
"mode_settings_advanced_toggle_hide": "Erweiterte Einstellungen ausblenden",
|
||||
"mode_settings_advanced_toggle_show": "Erweiterte Einstellungen anzeigen",
|
||||
"gui_quit_warning_cancel": "Abbrechen",
|
||||
|
@ -254,5 +254,8 @@
|
|||
"gui_autoconnect_try_again_without_a_bridge": "Erneuter Versuch ohne Brücken",
|
||||
"waitress_web_server_error": "Beim Starten des Webservers ist ein Problem aufgetreten",
|
||||
"gui_close_tab_warning_chat_description": "Tab schließen, der einen Chat-Server hostet?",
|
||||
"gui_chat_mode_explainer": "Im Chat-Modus kannst du interaktiv mit anderen im Tor-Browser chatten.<br><br><b>Der Chatverlauf wird nicht in OnionShare gespeichert. Der Chatverlauf verschwindet, wenn du den Tor-Browser schließt.</b>"
|
||||
"gui_chat_mode_explainer": "Im Chat-Modus kannst du interaktiv mit anderen im Tor-Browser chatten.<br><br><b>Der Chatverlauf wird nicht in OnionShare gespeichert. Der Chatverlauf verschwindet, wenn du den Tor-Browser schließt.</b>",
|
||||
"error_generic": "Es ist ein unerwarteter Fehler bei OnionShare aufgetreten:\n{}",
|
||||
"gui_settings_license_label": "OnionShare ist unter der GPL v3 lizenziert.<br>Lizenzen von Drittanbietern können hier eingesehen werden:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Diesen Onion-Dienst automatisch starten, wenn OnionShare startet"
|
||||
}
|
||||
|
|
|
@ -60,10 +60,10 @@
|
|||
"gui_tor_connection_lost": "Vous êtes déconnecté de Tor.",
|
||||
"gui_share_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de 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_persistent": "Ce partage ne s’arrêtera pas automatiquement.<br><br>Tout partage subséquent réutilise l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Toujours ouvrir cet onglet lors du démarrage d’OnionShare » 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é.",
|
||||
"gui_url_label_onetime_and_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_onetime_and_persistent": "Ce partage ne s’arrêtera pas automatiquement.<br><br>Tout partage subséquent réutilise l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Toujours ouvrir cet onglet lors du démarrage d’OnionShare » dans les paramètres.)",
|
||||
"gui_status_indicator_share_stopped": "Arrêté",
|
||||
"gui_status_indicator_share_working": "Démarrage…",
|
||||
"gui_status_indicator_share_started": "Partage en cours",
|
||||
|
@ -255,5 +255,7 @@
|
|||
"waitress_web_server_error": "Un problème est survenu lors du démarrage du serveur Web",
|
||||
"gui_close_tab_warning_chat_description": "Fermer l’onglet qui héberge un serveur de dialogue en ligne ?",
|
||||
"gui_chat_mode_explainer": "Le mode conversation vous permet de discuter interactivement avec d’autres dans le Navigateur Tor.br><br><b>L’historique des conversations n’est pas enregistré dans OnionShare. L’historique des conversations disparaît en cas de fermeture du Navigateur Tor.</b>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Démarrer automatiquement ce service oignon lors du démarrage d’OnionShare"
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Démarrer automatiquement ce service oignon lors du démarrage d’OnionShare",
|
||||
"error_generic": "Une erreur inattendue est survenue dans OnionShare :\n{}",
|
||||
"gui_settings_license_label": "OnionShare est sous licence GPL v3.<br>Les licences des tiers peuvent être consultées ici :<br><a href=\"https://github.com/onionshare/onionshare/tree/main/licenses\">https://github.com/onionshare/onionshare/tree/main/licenses</a>"
|
||||
}
|
||||
|
|
|
@ -251,7 +251,7 @@
|
|||
"gui_autoconnect_circumventing_censorship_requesting_bridges": "Tor Censorship Circumvention API にブリッジをリクエストしています…",
|
||||
"gui_autoconnect_circumventing_censorship_got_bridges": "ブリッジを確立しました。Tor に再接続しています…",
|
||||
"gui_autoconnect_could_not_connect_to_tor_api": "Tor の API に接続できませんでした。インターネットに接続していることを確認してから再度試してください。",
|
||||
"gui_general_settings_window_title": "基本設定",
|
||||
"gui_general_settings_window_title": "一般",
|
||||
"gui_close_tab_warning_chat_description": "チャットサーバーをホスト中のタブを閉じてもよろしいですか?",
|
||||
"waitress_web_server_error": "ウェブサーバーを起動する際に問題が生じました",
|
||||
"gui_chat_mode_explainer": "チャットモードを使用すると、Tor Browser で他のユーザーとチャットを行うことができるようになります。<br><br><b>チャットの履歴は OnionShare には保存されません。Tor Browser を終了すると、チャットの履歴は消去されます。</b>",
|
||||
|
|
|
@ -78,10 +78,10 @@
|
|||
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Час автостопу не може бути однаковим або ранішим за час автозапуску. Налаштуйте його, щоб почати надсилання.",
|
||||
"gui_share_url_description": "<b>Будь-хто</b>, за допомогою цієї адреси та приватного ключа, може <b>завантажити</b> ваші файли, через <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Будь-хто</b>, за допомогою цієї адреси та приватного ключа, може <b>вивантажити</b> файли на ваш комп'ютер через <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_url_label_persistent": "Це надсилання не припинятиметься автоматично.<br><br>Кожне наступне надсилання використовує ту ж адресу. (Для використання одноразової адреси, вимкніть «Використовувати постійну адресу» в налаштуваннях.)",
|
||||
"gui_url_label_persistent": "Це надсилання не припинятиметься автоматично.<br><br>Кожне наступне надсилання використовує ту ж адресу. (Щоб використовувати одноразову адресу, вимкніть «Завжди відкривати цю вкладку під час запуску OnionShare» в налаштуваннях.)",
|
||||
"gui_url_label_stay_open": "Це надсилання не припинятиметься автоматично.",
|
||||
"gui_url_label_onetime": "Це надсилання не припинятиметься після першого виконання.",
|
||||
"gui_url_label_onetime_and_persistent": "Це надсилання не припинятиметься автоматично.<br><br>Кожне наступне надсилання використовує ту ж адресу. (Для використання одноразової адреси, вимкніть \"Використовувати постійну адресу\" в параметрах.)",
|
||||
"gui_url_label_onetime_and_persistent": "Це надсилання не припинятиметься автоматично.<br><br>Кожне наступне надсилання використовує ту ж адресу. (Щоб використовувати одноразову адресу, вимкніть \"Завжди відкривати цю вкладку під час запуску OnionShare\" в налаштуваннях.)",
|
||||
"gui_status_indicator_share_stopped": "Зупинено",
|
||||
"gui_status_indicator_share_working": "Запуск…",
|
||||
"gui_status_indicator_share_scheduled": "Заплановано…",
|
||||
|
@ -255,5 +255,7 @@
|
|||
"waitress_web_server_error": "Під час запуску вебсервера сталася помилка",
|
||||
"gui_close_tab_warning_chat_description": "Закрити вкладку, на якій розміщено чат-сервер?",
|
||||
"gui_chat_mode_explainer": "Режим бесіди дозволяє вам інтерактивно спілкуватися з іншими користувачами в Браузері Tor.<br><br><b>Історія бесід не зберігається в OnionShare. Історія бесід зникне, коли ви закриєте Браузер Tor.</b>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Автоматично запускати цю onion-службу під час запуску OnionShare"
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "Автоматично запускати цю onion-службу під час запуску OnionShare",
|
||||
"error_generic": "В OnionShare сталася непередбачувана помилка:\n{}",
|
||||
"gui_settings_license_label": "OnionShare має ліцензію GPL v3.<br>Ліцензії третіх сторін можна переглянути тут:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>"
|
||||
}
|
||||
|
|
|
@ -256,5 +256,6 @@
|
|||
"gui_close_tab_warning_chat_description": "是否关闭托管聊天服务的标签页?",
|
||||
"gui_chat_mode_explainer": "聊天模式可让您在 Tor 浏览器中与其他人进行互动聊天。<br><br><b>OnionShare 中不存储聊天记录。关闭 Tor 浏览器后,聊天记录将消失。</b>",
|
||||
"mode_settings_persistent_autostart_on_launch_checkbox": "OnionShare 启动时自动启动此洋葱服务",
|
||||
"gui_settings_license_label": "OnionShare 采用 GPL v3 许可。可在此处查看第三方许可:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>"
|
||||
"gui_settings_license_label": "OnionShare 采用 GPL v3 许可。可在此处查看第三方许可:<br><a href='https://github.com/onionshare/onionshare/tree/main/licenses'>https://github.com/onionshare/onionshare/tree/main/licenses</a>",
|
||||
"error_generic": "OnionShare 出现意外错误:\n{}"
|
||||
}
|
||||
|
|
36
desktop/poetry.lock
generated
36
desktop/poetry.lock
generated
|
@ -1,4 +1,4 @@
|
|||
# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "bidict"
|
||||
|
@ -699,7 +699,7 @@ files = [
|
|||
[package.extras]
|
||||
docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
|
||||
testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"]
|
||||
typing = ["typing-extensions (>=4.12.2)"]
|
||||
typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""]
|
||||
|
||||
[[package]]
|
||||
name = "flask"
|
||||
|
@ -821,11 +821,11 @@ greenlet = [
|
|||
"zope.interface" = "*"
|
||||
|
||||
[package.extras]
|
||||
dnspython = ["dnspython (>=1.16.0,<2.0)", "idna"]
|
||||
dnspython = ["dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\""]
|
||||
docs = ["furo", "repoze.sphinx.autointerface", "sphinx", "sphinxcontrib-programoutput", "zope.schema"]
|
||||
monitor = ["psutil (>=5.7.0)"]
|
||||
recommended = ["cffi (>=1.12.2)", "dnspython (>=1.16.0,<2.0)", "idna", "psutil (>=5.7.0)"]
|
||||
test = ["cffi (>=1.12.2)", "coverage (>=5.0)", "dnspython (>=1.16.0,<2.0)", "idna", "objgraph", "psutil (>=5.7.0)", "requests", "setuptools"]
|
||||
monitor = ["psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""]
|
||||
recommended = ["cffi (>=1.12.2) ; platform_python_implementation == \"CPython\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\""]
|
||||
test = ["cffi (>=1.12.2) ; platform_python_implementation == \"CPython\"", "coverage (>=5.0) ; sys_platform != \"win32\"", "dnspython (>=1.16.0,<2.0) ; python_version < \"3.10\"", "idna ; python_version < \"3.10\"", "objgraph", "psutil (>=5.7.0) ; sys_platform != \"win32\" or platform_python_implementation == \"CPython\"", "requests", "setuptools"]
|
||||
|
||||
[[package]]
|
||||
name = "gevent-websocket"
|
||||
|
@ -964,7 +964,7 @@ zipp = ">=0.5"
|
|||
[package.extras]
|
||||
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
perf = ["ipython"]
|
||||
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"]
|
||||
testing = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)", "pytest-ruff"]
|
||||
|
||||
[[package]]
|
||||
name = "iniconfig"
|
||||
|
@ -994,15 +994,15 @@ files = [
|
|||
|
||||
[[package]]
|
||||
name = "jinja2"
|
||||
version = "3.1.5"
|
||||
version = "3.1.6"
|
||||
description = "A very fast and expressive template engine."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
markers = "platform_machine == \"x86_64\" or platform_machine == \"i686\" or platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or sys_platform != \"linux\" or platform_machine != \"x86_64\" and platform_machine != \"i686\" and platform_machine != \"aarch64\" and platform_machine != \"armv7l\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\""
|
||||
files = [
|
||||
{file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
|
||||
{file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
|
||||
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
|
||||
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -1315,7 +1315,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
|
||||
test = ["enum34 ; python_version <= \"3.4\"", "ipaddress ; python_version < \"3.0\"", "mock ; python_version < \"3.0\"", "pywin32 ; sys_platform == \"win32\"", "wmi ; sys_platform == \"win32\""]
|
||||
|
||||
[[package]]
|
||||
name = "pycparser"
|
||||
|
@ -1622,13 +1622,13 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"]
|
||||
core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""]
|
||||
core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
|
||||
[[package]]
|
||||
name = "shiboken6"
|
||||
|
@ -1729,7 +1729,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
||||
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
||||
h2 = ["h2 (>=4,<5)"]
|
||||
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
zstd = ["zstandard (>=0.18.0)"]
|
||||
|
@ -1816,11 +1816,11 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
type = ["pytest-mypy"]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import os
|
||||
import inspect
|
||||
import click
|
||||
import platform
|
||||
import subprocess
|
||||
import shutil
|
||||
import glob
|
||||
|
@ -16,7 +17,7 @@ root = os.path.dirname(
|
|||
)
|
||||
desktop_dir = os.path.join(root, "desktop")
|
||||
|
||||
identity_name_application = "Developer ID Application: Micah Lee (N9B95FDWH4)"
|
||||
identity_name_application = "Developer ID Application: Science & Design, Inc. (7WLJ4UBL5L)"
|
||||
entitlements_plist_path = f"{desktop_dir}/package/Entitlements.plist"
|
||||
|
||||
|
||||
|
@ -122,7 +123,6 @@ def cleanup_build():
|
|||
"QtQuickShapes",
|
||||
"QtQuickTest",
|
||||
"QtNetwork",
|
||||
"QtSvg",
|
||||
"QtDesignerComponents",
|
||||
"QtMultimediaWidgets",
|
||||
"QtQmlModels",
|
||||
|
@ -228,6 +228,18 @@ def cleanup_build():
|
|||
else:
|
||||
print(f"Cannot delete, filename not found: {filename}")
|
||||
|
||||
# Set a symlink for Qt's platforms and imageformats plugins, which seems to be necessary only on arm
|
||||
if platform.system() == "Darwin" and platform.processor() == "arm":
|
||||
platforms_target_path = os.path.join("..", "Resources", "lib", "PySide6", "Qt", "plugins", "platforms")
|
||||
platforms_symlink_path = os.path.join(app_path, "Contents", "MacOS", "platforms")
|
||||
|
||||
os.symlink(platforms_target_path, platforms_symlink_path)
|
||||
|
||||
imageformats_target_path = os.path.join("..", "Resources", "lib", "PySide6", "Qt", "plugins", "imageformats")
|
||||
imageformats_symlink_path = os.path.join(app_path, "Contents", "MacOS", "imageformats")
|
||||
os.symlink(imageformats_target_path, imageformats_symlink_path)
|
||||
|
||||
|
||||
after_size = get_size(f"{app_path}")
|
||||
freed_bytes = before_size - after_size
|
||||
freed_mb = int(freed_bytes / 1024 / 1024)
|
||||
|
|
|
@ -12,7 +12,7 @@ import tempfile
|
|||
import gnupg
|
||||
|
||||
torbrowser_latest_url = (
|
||||
"https://aus1.torproject.org/torbrowser/update_3/release/downloads.json"
|
||||
"https://aus1.torproject.org/torbrowser/update_3/release"
|
||||
)
|
||||
tor_dev_fingerprint = "EF6E286DDA85EA2A4BA7DE684E2C6E8793298290"
|
||||
|
||||
|
@ -24,13 +24,12 @@ working_path = os.path.join(root_path, "build", "tor")
|
|||
|
||||
|
||||
def get_latest_tor_version_urls(platform):
|
||||
r = requests.get(torbrowser_latest_url)
|
||||
if r.status_code != 200 or platform not in r.json()["downloads"]:
|
||||
print("Tor browser latest version url not working")
|
||||
sys.exit(-1)
|
||||
r = requests.get(f"{torbrowser_latest_url}/download-{platform}.json")
|
||||
if r.status_code != 200:
|
||||
raise RuntimeError("Tor browser latest version url not working")
|
||||
|
||||
platform_url = r.json()["downloads"][platform]["ALL"]["binary"]
|
||||
platform_sig_url = r.json()["downloads"][platform]["ALL"]["sig"]
|
||||
platform_url = r.json()["binary"]
|
||||
platform_sig_url = r.json()["sig"]
|
||||
platform_filename = platform_url.split("/")[-1]
|
||||
|
||||
return platform_url, platform_filename, platform_sig_url
|
||||
|
@ -120,6 +119,9 @@ def get_tor_macos(gpg, torkey, macos_url, macos_filename, expected_macos_sig):
|
|||
dist_path = os.path.join(root_path, "onionshare", "resources", "tor")
|
||||
if not os.path.exists(dist_path):
|
||||
os.makedirs(dist_path, exist_ok=True)
|
||||
tor_lib_dir = os.path.join(root_path, "onionshare", "resources", "tor", "lib")
|
||||
if not os.path.exists(tor_lib_dir):
|
||||
os.makedirs(tor_lib_dir, exist_ok=True)
|
||||
|
||||
# Make sure the working folder exists
|
||||
if not os.path.exists(working_path):
|
||||
|
@ -163,10 +165,17 @@ def get_tor_macos(gpg, torkey, macos_url, macos_filename, expected_macos_sig):
|
|||
os.path.join(dist_path, "tor"),
|
||||
)
|
||||
os.chmod(os.path.join(dist_path, "tor"), 0o755)
|
||||
# This is necessary for cx_freeze itself to work...
|
||||
shutil.copyfile(
|
||||
os.path.join(dmg_tor_path, "MacOS", "Tor", "libevent-2.1.7.dylib"),
|
||||
os.path.join(dist_path, "libevent-2.1.7.dylib"),
|
||||
)
|
||||
# ...but the libevent-2.1.7.dylib now seems to also need to be in a 'lib'
|
||||
# subfolder of the tor/ folder to work on MacOS, so copy it there too.
|
||||
shutil.copyfile(
|
||||
os.path.join(dmg_tor_path, "MacOS", "Tor", "libevent-2.1.7.dylib"),
|
||||
os.path.join(tor_lib_dir, "libevent-2.1.7.dylib"),
|
||||
)
|
||||
|
||||
# Eject dmg
|
||||
subprocess.call(["diskutil", "eject", "/Volumes/Tor Browser"])
|
||||
|
@ -310,7 +319,7 @@ def main(platform):
|
|||
"""
|
||||
Download Tor Browser and extract tor binaries
|
||||
"""
|
||||
valid_platforms = ["win64", "macos", "linux-x86_64"]
|
||||
valid_platforms = ["windows-x86_64", "macos", "linux-x86_64"]
|
||||
if platform not in valid_platforms:
|
||||
click.echo(f"platform must be one of: {valid_platforms}")
|
||||
return
|
||||
|
@ -327,7 +336,7 @@ def main(platform):
|
|||
)
|
||||
print(f"Imported Tor GPG key: {torkey.fingerprints}")
|
||||
|
||||
if platform == "win64":
|
||||
if platform == "windows-x86_64":
|
||||
get_tor_windows(
|
||||
gpg, torkey, platform_url, platform_filename, expected_platform_sig
|
||||
)
|
||||
|
|
|
@ -77,6 +77,7 @@ build_exe_options = {
|
|||
"shiboken6",
|
||||
"PySide6.QtCore",
|
||||
"PySide6.QtGui",
|
||||
"PySide6.QtSvg",
|
||||
"PySide6.QtWidgets",
|
||||
],
|
||||
"excludes": [
|
||||
|
@ -139,6 +140,7 @@ if platform.system() == "Darwin" and platform.processor() == "arm":
|
|||
"shiboken6",
|
||||
"PySide6.QtCore",
|
||||
"PySide6.QtGui",
|
||||
"PySide6.QtSvg",
|
||||
"PySide6.QtWidgets",
|
||||
]
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
VERSION=$(cat ../cli/onionshare_cli/resources/version.txt)
|
||||
|
||||
# Supported locales
|
||||
LOCALES="en sq bg zh_Hans de el ga ja pl ru es tr uk"
|
||||
LOCALES="en sq bg zh_CN de el ga ja pl ru es tr uk"
|
||||
|
||||
# Generate English .po files
|
||||
make gettext
|
||||
|
|
32
docs/poetry.lock
generated
32
docs/poetry.lock
generated
|
@ -1,4 +1,4 @@
|
|||
# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "alabaster"
|
||||
|
@ -32,7 +32,7 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
|
|||
|
||||
[package.extras]
|
||||
doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
|
||||
test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
|
||||
test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""]
|
||||
trio = ["trio (>=0.26.1)"]
|
||||
|
||||
[[package]]
|
||||
|
@ -48,7 +48,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"]
|
||||
dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
|
@ -273,7 +273,7 @@ httpcore = "==1.*"
|
|||
idna = "*"
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli", "brotlicffi"]
|
||||
brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""]
|
||||
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
||||
http2 = ["h2 (>=3,<5)"]
|
||||
socks = ["socksio (==1.*)"]
|
||||
|
@ -323,24 +323,24 @@ files = [
|
|||
zipp = ">=3.20"
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
perf = ["ipython"]
|
||||
test = ["flufl.flake8", "importlib_resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"]
|
||||
test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"]
|
||||
type = ["pytest-mypy"]
|
||||
|
||||
[[package]]
|
||||
name = "jinja2"
|
||||
version = "3.1.5"
|
||||
version = "3.1.6"
|
||||
description = "A very fast and expressive template engine."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
|
||||
{file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
|
||||
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
|
||||
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
@ -482,13 +482,13 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"]
|
||||
core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""]
|
||||
core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
|
||||
[[package]]
|
||||
name = "sniffio"
|
||||
|
@ -776,7 +776,7 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
||||
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
||||
h2 = ["h2 (>=4,<5)"]
|
||||
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
zstd = ["zstandard (>=0.18.0)"]
|
||||
|
@ -795,11 +795,11 @@ files = [
|
|||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
type = ["pytest-mypy"]
|
||||
|
||||
[metadata]
|
||||
|
|
|
@ -10,7 +10,7 @@ languages = [
|
|||
("English", "en"), # English
|
||||
("Shqip", "sq"), # Albanian
|
||||
("Български", "bg"), #Bulgarian
|
||||
("中文 (简体)", "zh_Hans"), # Simplified Chinese
|
||||
("中文 (简体)", "zh_CN"), # Simplified Chinese
|
||||
("Deutsch", "de"), # German
|
||||
("Ελληνικά", "el"), # Greek
|
||||
("Gaeilge", "ga"), # Irish
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2024-01-25 13:17+0000\n"
|
||||
"Last-Translator: emma peel <emma.peel@riseup.net>\n"
|
||||
"PO-Revision-Date: 2025-02-24 06:08+0000\n"
|
||||
"Last-Translator: curtisb <curtisbaltimore@protonmail.com>\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 5.4-dev\n"
|
||||
"X-Generator: Weblate 5.10.1-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/develop.rst:2
|
||||
|
@ -42,10 +42,10 @@ msgstr ""
|
|||
"die künftige Entwicklung zu schmieden. (Außerdem ist dies ein einfacher Weg, "
|
||||
"um Ende zu Ende verschlüsselte Nachrichten, z.B. OnionShare-Adressen, an "
|
||||
"andere Leute in der OnionShare-Community zu senden.) Um Keybase zu nutzen, "
|
||||
"lade die Keybase-App <https://keybase.io/download>`_ herunter, erstelle dir "
|
||||
"lade die `Keybase-App <https://keybase.io/download>`_ herunter, erstelle dir "
|
||||
"einen Account und `trete diesem Team bei <https://keybase.io/team/"
|
||||
"onionshare>`_. In der App, gehe auf „Teams“, klicke auf “Team beitreten“ und "
|
||||
"gib „onionshare“ ein."
|
||||
"onionshare>`_. In der App, gehe auf \"Teams\", klicke auf \"Team beitreten\" "
|
||||
"und gib \"onionshare\" ein."
|
||||
|
||||
#: ../../source/develop.rst:12
|
||||
msgid ""
|
||||
|
@ -137,19 +137,19 @@ msgid ""
|
|||
"reloaded), and other debug info. For example::"
|
||||
msgstr ""
|
||||
"Beim Entwickeln ist es hilfreich, OnionShare über die Kommandozeile "
|
||||
"auszuführen und dabei die ``--verbose``- (oder ``-v``-) Flagge zu setzen. "
|
||||
"auszuführen und dabei die ``--verbose`` (oder ``-v``-) Flagge zu setzen. "
|
||||
"Dadurch werden viele hilfreiche Nachrichten auf der Kommandozeile "
|
||||
"ausgegeben, zum Bespiel wenn bestimmte Objekte initialisiert wurden oder "
|
||||
"wenn Ereignisse eintreten (Klicken von Buttons, Speichern oder Auffrischen "
|
||||
"von Einstellungen o.ä.), sowie andere Debug-Informationen. Zum Beispiel::"
|
||||
"von Einstellungen), sowie andere Debug-Informationen. Zum Beispiel:"
|
||||
|
||||
#: ../../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 ""
|
||||
"Du kannst deine eigenen Debug-Nachrichten einbauen, indem du die ``Common."
|
||||
"log``-Methode aus ``onionshare/common.py`` ausführst. Zum Beispiel::"
|
||||
"Du kannst deine eigenen Debug-Nachrichten einbauen, indem du die "
|
||||
"``Common.log``-Methode aus ``onionshare/common.py`` ausführst. Zum Beispiel:"
|
||||
|
||||
#: ../../source/develop.rst:121
|
||||
msgid ""
|
||||
|
@ -172,8 +172,8 @@ msgid ""
|
|||
"flag. For example::"
|
||||
msgstr ""
|
||||
"Tor ist langsam, und oft ist es ratsam, bei der Entwicklung keine Onion-"
|
||||
"Dienste zu starten. Dies kannst du mit der ``--local-only``-Flagge tun. Zum "
|
||||
"Beispiel::"
|
||||
"Dienste zu starten. Dies kannst du mit dem ``--local-only``-Flag tun. Zum "
|
||||
"Beispiel:"
|
||||
|
||||
#: ../../source/develop.rst:165
|
||||
msgid ""
|
||||
|
|
|
@ -6,16 +6,17 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2024-01-25 13:17+0000\n"
|
||||
"Last-Translator: emma peel <emma.peel@riseup.net>\n"
|
||||
"PO-Revision-Date: 2025-02-24 06:08+0000\n"
|
||||
"Last-Translator: curtisb <curtisbaltimore@protonmail.com>\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 5.10.1-dev\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#: ../../source/features.rst:4
|
||||
|
@ -358,7 +359,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/features.rst:102
|
||||
msgid "Other caveats to be aware of in Receive Mode"
|
||||
msgstr ""
|
||||
msgstr "Weitere Vorbehalte im Empfangsmodus sind zu beachten"
|
||||
|
||||
#: ../../source/features.rst:104
|
||||
msgid ""
|
||||
|
@ -367,6 +368,10 @@ msgid ""
|
|||
"mode. Try Bronze or Gold to see if you are able to upload a message or a "
|
||||
"file."
|
||||
msgstr ""
|
||||
"Es gibt Berichte, dass OnionBrowser auf iOS-Geräten nicht in der Lage ist, "
|
||||
"Dateien auf einen OnionShare im Empfangsmodus hochzuladen, wenn der "
|
||||
"Sicherheitsmodus 'Silber' eingestellt ist. Versuche Bronze oder Gold, um zu "
|
||||
"sehen, ob du eine Nachricht oder eine Datei hochladen kannst."
|
||||
|
||||
#: ../../source/features.rst:107
|
||||
msgid "Host a Website"
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2024-01-25 13:17+0000\n"
|
||||
"Last-Translator: emma peel <emma.peel@riseup.net>\n"
|
||||
"PO-Revision-Date: 2025-02-24 06:08+0000\n"
|
||||
"Last-Translator: curtisb <curtisbaltimore@protonmail.com>\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 5.4-dev\n"
|
||||
"X-Generator: Weblate 5.10.1-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/help.rst:2
|
||||
|
@ -47,11 +47,11 @@ msgid ""
|
|||
"encountered the same problem and either raised it with the developers, or "
|
||||
"maybe even posted a solution."
|
||||
msgstr ""
|
||||
"Falls du auf dieser Webseite keine Lösung findest, siehe dir bitte die "
|
||||
"`GitHub-Seite <https://github.com/micahflee/onionshare/issues>`_ an. "
|
||||
"Möglicherweise ist bereits jemand anderes auf das gleiche Problem gestoßen "
|
||||
"und hat es den Entwicklern gemeldet, und vielleicht wurde dort sogar schon "
|
||||
"eine Lösung gepostet."
|
||||
"Falls du auf dieser Webseite keine Lösung findest, siehe bitte die `GitHub "
|
||||
"issues <https://github.com/onionshare/issues>`_ durch. Möglicherweise ist "
|
||||
"bereits jemand anderes auf das gleiche Problem gestoßen und hat es den "
|
||||
"Entwicklern gemeldet, und vielleicht wurde dort sogar schon eine Lösung "
|
||||
"gepostet."
|
||||
|
||||
#: ../../source/help.rst:15
|
||||
msgid "Submit an Issue Yourself"
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2024-04-15 10:02+0000\n"
|
||||
"PO-Revision-Date: 2025-02-24 06:08+0000\n"
|
||||
"Last-Translator: curtisb <curtisbaltimore@protonmail.com>\n"
|
||||
"Language-Team: de <LL@li.org>\n"
|
||||
"Language: de\n"
|
||||
|
@ -16,6 +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 5.10.1-dev\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#: ../../source/install.rst:2
|
||||
|
@ -393,15 +394,14 @@ msgid "Signing key"
|
|||
msgstr "Signaturschlüssel"
|
||||
|
||||
#: ../../source/install.rst:117
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Packages are signed by the core developer who is responsible for the "
|
||||
"particular release. Here is the GPG key information for each of the core "
|
||||
"developers of OnionShare:"
|
||||
msgstr ""
|
||||
"Pakete werden von dem Kernentwickler signiert, der für die jeweilige Version "
|
||||
"verantwortlich ist. Nachfolgend findest du die Informationen zu den Core-"
|
||||
"Entwicklern von OnionShare:"
|
||||
"verantwortlich ist. Hier sind die GPG-Schlüsselinformationen für jeden der "
|
||||
"Hauptentwickler von OnionShare:"
|
||||
|
||||
#: ../../source/install.rst:120
|
||||
msgid "Micah Lee:"
|
||||
|
@ -447,26 +447,24 @@ msgstr ""
|
|||
|
||||
#: ../../source/install.rst:128
|
||||
msgid "Miguel Jacq:"
|
||||
msgstr ""
|
||||
msgstr "Miguel Jacq:"
|
||||
|
||||
#: ../../source/install.rst:129
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"PGP public key fingerprint ``00AE817C24A10C2540461A9C1D7CDE0234DB458D``."
|
||||
msgstr ""
|
||||
"PGP-Fingerabdruck des öffentlichen Schlüssels "
|
||||
"``927F419D7EC82C2F149C1BD1403C2657CD994F73``."
|
||||
"``00AE817C24A10C2540461A9C1D7CDE0234DB458D``."
|
||||
|
||||
#: ../../source/install.rst:130
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"You can download Miguel's key `from the keys.openpgp.org keyserver <https://"
|
||||
"keys.openpgp.org/vks/v1/by-"
|
||||
"fingerprint/00AE817C24A10C2540461A9C1D7CDE0234DB458D>`_."
|
||||
msgstr ""
|
||||
"Du kannst Micahs Schlüssel vom Schlüsselserver `keys.openpgp.org keyserver "
|
||||
"<https://keys.openpgp.org/vks/v1/by-"
|
||||
"fingerprint/927F419D7EC82C2F149C1BD1403C2657CD994F73>`_ herunterladen."
|
||||
"Du kannst Miguels Schlüssel `vom Schlüsselserver keys.openpgp.org keyserver "
|
||||
"<https://keys.openpgp.org/vks/v1/by-fingerprint/"
|
||||
"00AE817C24A10C2540461A9C1D7CDE0234DB458D>`_ herunterladen."
|
||||
|
||||
#: ../../source/install.rst:132
|
||||
msgid ""
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2025-02-19 11:29+0000\n"
|
||||
"Last-Translator: Himmel <Himmel@users.noreply.hosted.weblate.org>\n"
|
||||
"PO-Revision-Date: 2025-02-26 08:24+0000\n"
|
||||
"Last-Translator: Himmel <himmel@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: ja <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 5.10.1-dev\n"
|
||||
"X-Generator: Weblate 5.10.2-dev\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../source/advanced.rst:2
|
||||
|
@ -450,6 +450,9 @@ msgid ""
|
|||
"versions use this configuration file. The CLI also lets you specify a path "
|
||||
"to a custom configuration file with ``--config``."
|
||||
msgstr ""
|
||||
"OnionShare は、その設定を JSON ファイルに保存します。CLI "
|
||||
"版とデスクトップ版の両方で、この構成ファイルを使用します。CLI では、"
|
||||
"カスタム構成ファイルへのパスを ``--config`` で指定することもできます。"
|
||||
|
||||
#: ../../source/advanced.rst:319
|
||||
msgid ""
|
||||
|
@ -457,27 +460,30 @@ msgid ""
|
|||
"configuration file has other parameters not listed here, they may be "
|
||||
"obsolete from older OnionShare versions."
|
||||
msgstr ""
|
||||
"構成ファイルのパラメーターとその意味を以下に示します。ここに記載されていない"
|
||||
"パラメーターが構成ファイルに含まれている場合は、古い OnionShare "
|
||||
"バージョンでは使用されていない可能性があります。"
|
||||
|
||||
#: ../../source/advanced.rst:322 ../../source/advanced.rst:402
|
||||
#: ../../source/advanced.rst:413 ../../source/advanced.rst:424
|
||||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Parameter"
|
||||
msgstr ""
|
||||
msgstr "パラメーター"
|
||||
|
||||
#: ../../source/advanced.rst:322 ../../source/advanced.rst:402
|
||||
#: ../../source/advanced.rst:413 ../../source/advanced.rst:424
|
||||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "種類"
|
||||
|
||||
#: ../../source/advanced.rst:322 ../../source/advanced.rst:402
|
||||
#: ../../source/advanced.rst:413 ../../source/advanced.rst:424
|
||||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Explanation"
|
||||
msgstr ""
|
||||
msgstr "説明"
|
||||
|
||||
#: ../../source/advanced.rst:324
|
||||
msgid "version"
|
||||
|
@ -495,16 +501,16 @@ msgstr "バージョン"
|
|||
#: ../../source/advanced.rst:452 ../../source/advanced.rst:453
|
||||
#: ../../source/advanced.rst:465
|
||||
msgid "``string``"
|
||||
msgstr ""
|
||||
msgstr "``string``"
|
||||
|
||||
#: ../../source/advanced.rst:324
|
||||
msgid ""
|
||||
"The version of OnionShare. You should not ever need to change this value."
|
||||
msgstr ""
|
||||
msgstr "OnionShare のバージョン。この値を変更する必要は一切ありません。"
|
||||
|
||||
#: ../../source/advanced.rst:325
|
||||
msgid "connection_type"
|
||||
msgstr ""
|
||||
msgstr "connection_type"
|
||||
|
||||
#: ../../source/advanced.rst:325
|
||||
msgid ""
|
||||
|
@ -512,85 +518,104 @@ msgid ""
|
|||
"'automatic' (use Tor Browser's Tor connection), 'control_port' or "
|
||||
"'socket_file'. Default: 'bundled'"
|
||||
msgstr ""
|
||||
"OnionShare が Tor に接続する方法。有効なオプションは 'bundled'、'automatic' ("
|
||||
"Tor Browser の Tor 接続を使う)、'control_port' または 'socket_file' "
|
||||
"です。デフォルト: 'bundled'"
|
||||
|
||||
#: ../../source/advanced.rst:326
|
||||
msgid "control_port_address"
|
||||
msgstr ""
|
||||
msgstr "control_port_address"
|
||||
|
||||
#: ../../source/advanced.rst:326
|
||||
msgid ""
|
||||
"The IP address of Tor's Control port, if ``connection_type`` is set to "
|
||||
"'control_port'. Default: '127.0.0.1'"
|
||||
msgstr ""
|
||||
"``connection_type`` が 'control_port' に設定されている場合の、Tor "
|
||||
"の制御ポートの IP アドレス。デフォルト: '127.0.0.1'"
|
||||
|
||||
#: ../../source/advanced.rst:327
|
||||
msgid "control_port_port"
|
||||
msgstr ""
|
||||
msgstr "control_port_port"
|
||||
|
||||
#: ../../source/advanced.rst:327 ../../source/advanced.rst:329
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "``integer``"
|
||||
msgstr ""
|
||||
msgstr "``integer``"
|
||||
|
||||
#: ../../source/advanced.rst:327
|
||||
msgid ""
|
||||
"The port number of Tor's Control port, if ``connection_type`` is set to "
|
||||
"'control_port'. Default: '9051'"
|
||||
msgstr ""
|
||||
"``connection_type`` が 'control_port' に設定されている場合の、Tor "
|
||||
"の制御ポートのポート番号。デフォルト: '9051'"
|
||||
|
||||
#: ../../source/advanced.rst:328
|
||||
msgid "socks_address"
|
||||
msgstr ""
|
||||
msgstr "socks_address"
|
||||
|
||||
#: ../../source/advanced.rst:328
|
||||
msgid ""
|
||||
"The IP address of Tor's SOCKS proxy, if ``connection_type`` is set to "
|
||||
"'control_port' or 'socket_file'. Default: '127.0.0.1'"
|
||||
msgstr ""
|
||||
"``connection_type`` が 'control_port' または 'socket_file' "
|
||||
"に設定されている場合の、Tor の SOCKS プロキシの IP アドレス。デフォルト: "
|
||||
"'127.0.0.1'"
|
||||
|
||||
#: ../../source/advanced.rst:329
|
||||
msgid "socks_port"
|
||||
msgstr ""
|
||||
msgstr "socks_port"
|
||||
|
||||
#: ../../source/advanced.rst:329
|
||||
msgid ""
|
||||
"The port number of Tor's SOCKS proxy, if ``connection_type`` is set to "
|
||||
"'control_port' or 'socket_file'. Default: ''9050'"
|
||||
msgstr ""
|
||||
"``connection_type`` が 'control_port' または 'socket_file' "
|
||||
"に設定されている場合の、Tor の SOCKS プロキシのポート番号。デフォルト: '9050'"
|
||||
|
||||
#: ../../source/advanced.rst:330
|
||||
msgid "socket_file_path"
|
||||
msgstr ""
|
||||
msgstr "socket_file_path"
|
||||
|
||||
#: ../../source/advanced.rst:330
|
||||
msgid ""
|
||||
"The path to Tor's socket file, if ``connection_type`` is set to "
|
||||
"'socket_file'. Default: '/var/run/tor/control'"
|
||||
msgstr ""
|
||||
"``connection_type`` が 'socket_file' に設定されている場合の、Tor "
|
||||
"のソケットファイルへのパス。デフォルト: '/var/run/tor/control'"
|
||||
|
||||
#: ../../source/advanced.rst:331
|
||||
msgid "auth_type"
|
||||
msgstr ""
|
||||
msgstr "auth_type"
|
||||
|
||||
#: ../../source/advanced.rst:331
|
||||
msgid ""
|
||||
"If access to Tor's control port requires a password, this can be set to "
|
||||
"'password', otherwise 'no_auth'. Default: 'no_auth'"
|
||||
msgstr ""
|
||||
"Tor の制御ポートへのアクセスにパスワードが必要な場合は 'password'、"
|
||||
"そうでなければ 'no_auth' を設定します。デフォルト: 'no_auth'"
|
||||
|
||||
#: ../../source/advanced.rst:332
|
||||
msgid "auth_password"
|
||||
msgstr ""
|
||||
msgstr "auth_password"
|
||||
|
||||
#: ../../source/advanced.rst:332
|
||||
msgid ""
|
||||
"If access to Tor's control port requires a password, and ``auth_type`` is "
|
||||
"set to 'password', specify the password here. Default: ''"
|
||||
msgstr ""
|
||||
"Tor の制御ポートへのアクセスにパスワードが必要で、``auth_type`` が "
|
||||
"'password' に設定されている場合は、ここでパスワードを指定します。デフォルト: "
|
||||
"''"
|
||||
|
||||
#: ../../source/advanced.rst:333
|
||||
msgid "auto_connect"
|
||||
msgstr ""
|
||||
msgstr "auto_connect"
|
||||
|
||||
#: ../../source/advanced.rst:333 ../../source/advanced.rst:334
|
||||
#: ../../source/advanced.rst:336 ../../source/advanced.rst:344
|
||||
|
@ -601,43 +626,45 @@ msgstr ""
|
|||
#: ../../source/advanced.rst:455 ../../source/advanced.rst:464
|
||||
#: ../../source/advanced.rst:466
|
||||
msgid "``boolean``"
|
||||
msgstr ""
|
||||
msgstr "``boolean``"
|
||||
|
||||
#: ../../source/advanced.rst:333
|
||||
msgid ""
|
||||
"Whether OnionShare should automatically connect to Tor when it starts. "
|
||||
"Default: False"
|
||||
msgstr ""
|
||||
msgstr "OnionShare の起動時に Tor に自動的に接続するかどうか。デフォルト: False"
|
||||
|
||||
#: ../../source/advanced.rst:334
|
||||
msgid "use_autoupdate"
|
||||
msgstr ""
|
||||
msgstr "use_autoupdate"
|
||||
|
||||
#: ../../source/advanced.rst:334
|
||||
msgid ""
|
||||
"Whether OnionShare should automatically check for updates (over Tor). This "
|
||||
"setting is only valid for MacOS or Windows installations. Default: True."
|
||||
msgstr ""
|
||||
"OnionShare が (Tor 経由で) 更新を自動的に確認するかどうか。この設定は、MacOS "
|
||||
"または Windows インストールでのみ有効です。デフォルト: True"
|
||||
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "autoupdate_timestamp"
|
||||
msgstr ""
|
||||
msgstr "autoupdate_timestamp"
|
||||
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "The last time OnionShare checked for updates. Default: None"
|
||||
msgstr ""
|
||||
msgstr "OnionShare が最後に更新を確認した時刻。デフォルト: None"
|
||||
|
||||
#: ../../source/advanced.rst:336
|
||||
msgid "bridges_enabled"
|
||||
msgstr ""
|
||||
msgstr "bridges_enabled"
|
||||
|
||||
#: ../../source/advanced.rst:336
|
||||
msgid "Whether to connect to Tor using bridges. Default: False"
|
||||
msgstr ""
|
||||
msgstr "ブリッジを使用して Tor に接続するかどうか。デフォルト: False"
|
||||
|
||||
#: ../../source/advanced.rst:337
|
||||
msgid "bridges_type"
|
||||
msgstr ""
|
||||
msgstr "bridges_type"
|
||||
|
||||
#: ../../source/advanced.rst:337
|
||||
msgid ""
|
||||
|
@ -646,10 +673,15 @@ msgid ""
|
|||
"Tor), \"moat\" (request bridges from Tor's Moat API), or \"custom\" (user-"
|
||||
"supplied bridges). Default: \"built-in\""
|
||||
msgstr ""
|
||||
"``bridges_enabled`` が True の場合、ブリッジを読み込む場所。オプションには"
|
||||
"、\"built-in\" (OnionShare に付属し、Tor "
|
||||
"から更新される可能性のあるブリッジ)、\"moat\" (Tor の Moat API "
|
||||
"からブリッジをリクエストする)、\"custom\" (ユーザーが指定するブリッジ) "
|
||||
"があります。デフォルト: \"built-in\""
|
||||
|
||||
#: ../../source/advanced.rst:338
|
||||
msgid "bridges_builtin_pt"
|
||||
msgstr ""
|
||||
msgstr "bridges_builtin_pt"
|
||||
|
||||
#: ../../source/advanced.rst:338
|
||||
msgid ""
|
||||
|
@ -657,20 +689,26 @@ msgid ""
|
|||
"bridge protocol to use. Options are \"obfs4\", \"meek-azure\" or "
|
||||
"\"snowflake\". Default: \"obfs4\""
|
||||
msgstr ""
|
||||
"``bridges_type`` が \"built-in\" "
|
||||
"に設定されている場合、使用するブリッジプロトコルのタイプを指定します。"
|
||||
"オプションは \"obfs4\"、\"meek-azure\"、または \"snowflake\" "
|
||||
"です。デフォルト: \"obfs4\""
|
||||
|
||||
#: ../../source/advanced.rst:339
|
||||
msgid "bridges_moat"
|
||||
msgstr ""
|
||||
msgstr "bridges_moat"
|
||||
|
||||
#: ../../source/advanced.rst:339
|
||||
msgid ""
|
||||
"When ``bridges_type`` is set to \"moat\", the bridges returned from Tor's "
|
||||
"Moat API are stored here. Default: \"\""
|
||||
msgstr ""
|
||||
"``bridges_type`` が \"moat\" に設定されている場合、Tor の Moat API "
|
||||
"から返されたブリッジはここに保存されます。デフォルト: \"\""
|
||||
|
||||
#: ../../source/advanced.rst:340
|
||||
msgid "bridges_custom"
|
||||
msgstr ""
|
||||
msgstr "bridges_custom"
|
||||
|
||||
#: ../../source/advanced.rst:340
|
||||
msgid ""
|
||||
|
@ -678,29 +716,35 @@ msgid ""
|
|||
"user are stored here. Separate each bridge line in the string with '\\n'. "
|
||||
"Default: \"\""
|
||||
msgstr ""
|
||||
"``bridges_type`` が \"custom\" "
|
||||
"に設定されている場合、ユーザが指定したブリッジはここに保存されます。"
|
||||
"文字列内の各ブリッジラインは '\\n"
|
||||
"' で区切ります。デフォルト: \"\""
|
||||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid "bridges_builtin"
|
||||
msgstr ""
|
||||
msgstr "bridges_builtin"
|
||||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid "``dict``"
|
||||
msgstr ""
|
||||
msgstr "``dict``"
|
||||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid ""
|
||||
"When ``bridges_type`` is set to \"built-in\", OnionShare obtains the latest "
|
||||
"built-in bridges recommended by Tor and stores them here. Default: {}"
|
||||
msgstr ""
|
||||
"``bridges_type`` が \"built-in\" に設定されている場合、OnionShare は Tor "
|
||||
"が推奨する最新の内蔵ブリッジを取得し、ここに保存します。デフォルト: {}"
|
||||
|
||||
#: ../../source/advanced.rst:342
|
||||
msgid "persistent_tabs"
|
||||
msgstr ""
|
||||
msgstr "persistent_tabs"
|
||||
|
||||
#: ../../source/advanced.rst:342 ../../source/advanced.rst:442
|
||||
#: ../../source/advanced.rst:467
|
||||
msgid "``list``"
|
||||
msgstr ""
|
||||
msgstr "``list``"
|
||||
|
||||
#: ../../source/advanced.rst:342
|
||||
msgid ""
|
||||
|
@ -711,10 +755,16 @@ msgid ""
|
|||
"identifier, in a subfolder of the OnionShare configuration folder called "
|
||||
"'persistent'. Default: []"
|
||||
msgstr ""
|
||||
"ユーザがタブを 'saved' (OnionShare が起動するたびに永続的に保存され、Onion "
|
||||
"アドレスが変更されないことを意味する) "
|
||||
"と定義した場合、これらのタブにはランダムな識別子が与えられ、ここにリストされ"
|
||||
"ます。永続 Onion は、この識別子と同じ名前の JSON ファイルとして、"
|
||||
"\"persistent\" という名前の OnionShare "
|
||||
"構成フォルダーのサブフォルダーに保存されます。デフォルト: []"
|
||||
|
||||
#: ../../source/advanced.rst:343
|
||||
msgid "locale"
|
||||
msgstr ""
|
||||
msgstr "locale"
|
||||
|
||||
#: ../../source/advanced.rst:343
|
||||
msgid ""
|
||||
|
@ -722,20 +772,27 @@ msgid ""
|
|||
"For valid locale codes, see 'available_locales' in https://github.com/"
|
||||
"onionshare/onionshare/blob/main/cli/onionshare_cli/settings.py"
|
||||
msgstr ""
|
||||
"OnionShare で使用される言語。デフォルト: なし ('en' と同じ) "
|
||||
"。有効なロケールコードについては、https://github.com/onionshare/onionshare/"
|
||||
"blob/main/cli/onionshare_cli/settings.py の 'available_locales' "
|
||||
"をご覧ください。"
|
||||
|
||||
#: ../../source/advanced.rst:344
|
||||
msgid "theme"
|
||||
msgstr ""
|
||||
msgstr "theme"
|
||||
|
||||
#: ../../source/advanced.rst:344
|
||||
msgid ""
|
||||
"The theme for the OnionShare desktop app. Valid options are 0 (automatically "
|
||||
"detect the user's computer's light or dark theme), 1 (light) or 2 (dark)."
|
||||
msgstr ""
|
||||
"OnionShare デスクトップアプリのテーマ。有効なオプションは、0 "
|
||||
"(ユーザーのコンピューターのライトテーマまたはダークテーマを自動的に検出)、1 "
|
||||
"(ライト)、または 2 (ダーク) です。"
|
||||
|
||||
#: ../../source/advanced.rst:349
|
||||
msgid "Configuration file parameters for persistent onions"
|
||||
msgstr ""
|
||||
msgstr "永続 Onion の構成ファイルパラメーター"
|
||||
|
||||
#: ../../source/advanced.rst:351
|
||||
msgid ""
|
||||
|
@ -743,109 +800,121 @@ msgid ""
|
|||
"are stored in its own JSON file. The path to this file can be specified for "
|
||||
"the CLI tool with ``--persistent``."
|
||||
msgstr ""
|
||||
"前述のように、各永続 Onion には独自のパラメーターがあり、独自の JSON "
|
||||
"ファイルに保存されます。このファイルへのパスは、CLI ツールで ``--persistent``"
|
||||
" を使用して指定できます。"
|
||||
|
||||
#: ../../source/advanced.rst:353
|
||||
msgid "Here is an example persistent JSON configuration::"
|
||||
msgstr ""
|
||||
msgstr "永続的な JSON 構成の例を以下に示します。"
|
||||
|
||||
#: ../../source/advanced.rst:396
|
||||
msgid ""
|
||||
"Below are the configuration file parameters for a persistent onion and what "
|
||||
"they mean, for each section in the JSON"
|
||||
msgstr ""
|
||||
msgstr "JSON 内の各セクションについて、永続的 Onion "
|
||||
"の構成ファイルパラメーターとその意味を以下に示します"
|
||||
|
||||
#: ../../source/advanced.rst:399
|
||||
msgid "onion"
|
||||
msgstr ""
|
||||
msgstr "onion"
|
||||
|
||||
#: ../../source/advanced.rst:404
|
||||
#, fuzzy
|
||||
msgid "private_key"
|
||||
msgstr "秘密鍵を無効にする"
|
||||
msgstr "private_key"
|
||||
|
||||
#: ../../source/advanced.rst:404
|
||||
msgid "Base64-encoded private key of the onion service"
|
||||
msgstr ""
|
||||
msgstr "Onion Service の Base64 エンコードされた秘密鍵"
|
||||
|
||||
#: ../../source/advanced.rst:405
|
||||
msgid "client_auth_priv_key"
|
||||
msgstr ""
|
||||
msgstr "client_auth_priv_key"
|
||||
|
||||
#: ../../source/advanced.rst:405
|
||||
msgid ""
|
||||
"The private key when using Client Authentication. Send this to the user."
|
||||
msgstr ""
|
||||
msgstr "クライアント認証を使用する場合の秘密鍵。これをユーザーに送信します。"
|
||||
|
||||
#: ../../source/advanced.rst:406
|
||||
msgid "client_auth_pub_key"
|
||||
msgstr ""
|
||||
msgstr "client_auth_pub_key"
|
||||
|
||||
#: ../../source/advanced.rst:406
|
||||
msgid ""
|
||||
"The public key when using Client Authentication. Used on OnionShare's side."
|
||||
msgstr ""
|
||||
msgstr "クライアント認証を使用する場合の公開鍵。OnionShare 側で使用されます。"
|
||||
|
||||
#: ../../source/advanced.rst:410
|
||||
msgid "persistent"
|
||||
msgstr "永続"
|
||||
msgstr "persistent"
|
||||
|
||||
#: ../../source/advanced.rst:415
|
||||
msgid "mode"
|
||||
msgstr ""
|
||||
msgstr "mode"
|
||||
|
||||
#: ../../source/advanced.rst:415
|
||||
msgid ""
|
||||
"The mode used by this persistent onion. Options are \"share\", \"receive\", "
|
||||
"\"website\" or \"chat\"."
|
||||
msgstr ""
|
||||
"この永続 Onion が使用するモード。オプションは \"share\"、\"receive\"、"
|
||||
"\"website\"、\"chat\" です。"
|
||||
|
||||
#: ../../source/advanced.rst:416
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
msgstr "enabled"
|
||||
|
||||
#: ../../source/advanced.rst:416
|
||||
msgid ""
|
||||
"Whether persistence is enabled for this onion. When the persistent option is "
|
||||
"unchecked in the desktop, this entire JSON file is deleted. Default: true"
|
||||
msgstr ""
|
||||
"この Onion "
|
||||
"に対して永続性が有効かどうか。デスクトップで永続オプションをオフにすると、"
|
||||
"この JSON ファイル全体が削除されます。デフォルト: true"
|
||||
|
||||
#: ../../source/advanced.rst:417
|
||||
msgid "autostart_on_launch"
|
||||
msgstr ""
|
||||
msgstr "autostart_on_launch"
|
||||
|
||||
#: ../../source/advanced.rst:417
|
||||
msgid ""
|
||||
"Whether to automatically start this persistent onion when OnionShare starts "
|
||||
"and once Tor is connected. Default: false"
|
||||
msgstr ""
|
||||
msgstr "OnionShare の起動時および Tor の接続時に、この永続 Onion "
|
||||
"を自動的に開始するかどうか。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:421
|
||||
msgid "general"
|
||||
msgstr ""
|
||||
msgstr "general"
|
||||
|
||||
#: ../../source/advanced.rst:426
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
msgstr "title"
|
||||
|
||||
#: ../../source/advanced.rst:426
|
||||
msgid ""
|
||||
"An optional custom title for displaying on the onion service. Default: null "
|
||||
"(\"OnionShare\" will be shown instead)"
|
||||
msgstr ""
|
||||
"Onion Service に表示するオプションのカスタムタイトル。デフォルト: null ("
|
||||
"代わりに \"OnionShare\" が表示されます)"
|
||||
|
||||
#: ../../source/advanced.rst:427
|
||||
msgid "public"
|
||||
msgstr "公開"
|
||||
msgstr "public"
|
||||
|
||||
#: ../../source/advanced.rst:427
|
||||
msgid ""
|
||||
"Whether the onion service can be accessed with or without a Private Key "
|
||||
"(Client Authentication). If true, no Private Key is required."
|
||||
msgstr ""
|
||||
msgstr "秘密鍵 (クライアント認証) を使用して Onion Service にアクセスできるかどうか。"
|
||||
"true の場合、秘密鍵は必要ありません。"
|
||||
|
||||
#: ../../source/advanced.rst:428
|
||||
msgid "autostart_timer"
|
||||
msgstr ""
|
||||
msgstr "autostart_timer"
|
||||
|
||||
#: ../../source/advanced.rst:428
|
||||
msgid ""
|
||||
|
@ -853,10 +922,14 @@ msgid ""
|
|||
"time can be set in the desktop app or specified in seconds with ``--auto-"
|
||||
"start-timer`` with the CLI tool. Default: false"
|
||||
msgstr ""
|
||||
"Onion Service "
|
||||
"が特定の時刻に開始するように構成されているかどうか。時間はデスクトップアプリ"
|
||||
"で設定するか、CLI ツールの ``--auto-start-timer`` "
|
||||
"で秒単位で指定することができます。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:429
|
||||
msgid "autostop_timer"
|
||||
msgstr ""
|
||||
msgstr "autostop_timer"
|
||||
|
||||
#: ../../source/advanced.rst:429
|
||||
msgid ""
|
||||
|
@ -864,116 +937,125 @@ msgid ""
|
|||
"can be set in the desktop app or specified in seconds with ``--auto-stop-"
|
||||
"timer`` with the CLI tool. Default: false"
|
||||
msgstr ""
|
||||
"Onion Service "
|
||||
"が特定の時刻に停止するように構成されているかどうか。時間はデスクトップアプリ"
|
||||
"で設定するか、CLI ツールの ``--auto-stop-timer`` "
|
||||
"で秒単位で指定できます。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:430
|
||||
msgid "service_id"
|
||||
msgstr ""
|
||||
msgstr "service_id"
|
||||
|
||||
#: ../../source/advanced.rst:430
|
||||
msgid ""
|
||||
"The 32-character onion service URL, without the scheme and without the '."
|
||||
"onion' suffix."
|
||||
msgstr ""
|
||||
msgstr "スキームと接尾辞「.onion」を含まない32文字の Onion Service の URL。"
|
||||
|
||||
#: ../../source/advanced.rst:433
|
||||
msgid ""
|
||||
"The below are settings specific to the 'mode' specified in the "
|
||||
"``persistent`` section above."
|
||||
msgstr ""
|
||||
msgstr "以下は、上記の ``persistent`` セクションで指定した「mode」に固有の設定です。"
|
||||
|
||||
#: ../../source/advanced.rst:436
|
||||
msgid "share"
|
||||
msgstr "共有"
|
||||
msgstr "share"
|
||||
|
||||
#: ../../source/advanced.rst:441
|
||||
msgid "autostop_sharing"
|
||||
msgstr ""
|
||||
msgstr "autostop_sharing"
|
||||
|
||||
#: ../../source/advanced.rst:441
|
||||
msgid ""
|
||||
"Whether to automatically stop the share once files are downloaded the first "
|
||||
"time. Default: true"
|
||||
msgstr ""
|
||||
msgstr "ファイルが最初にダウンロードされた際に共有を自動的に停止するかどうか。デフォ"
|
||||
"ルト: true"
|
||||
|
||||
#: ../../source/advanced.rst:442 ../../source/advanced.rst:467
|
||||
msgid "filenames"
|
||||
msgstr ""
|
||||
msgstr "filenames"
|
||||
|
||||
#: ../../source/advanced.rst:442 ../../source/advanced.rst:467
|
||||
msgid "A list of files to share. Default: []"
|
||||
msgstr ""
|
||||
msgstr "共有するファイルのリスト。デフォルト: []"
|
||||
|
||||
#: ../../source/advanced.rst:443 ../../source/advanced.rst:466
|
||||
msgid "log_filenames"
|
||||
msgstr ""
|
||||
msgstr "log_filenames"
|
||||
|
||||
#: ../../source/advanced.rst:443 ../../source/advanced.rst:466
|
||||
msgid ""
|
||||
"Whether to log URL requests to stdout when using the CLI tool. Default: false"
|
||||
msgstr ""
|
||||
msgstr "CLI ツールの使用時に URL 要求を stdout に記録するかどうか。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:447
|
||||
msgid "receive"
|
||||
msgstr ""
|
||||
msgstr "receive"
|
||||
|
||||
#: ../../source/advanced.rst:452
|
||||
msgid "data_dir"
|
||||
msgstr ""
|
||||
msgstr "data_dir"
|
||||
|
||||
#: ../../source/advanced.rst:452
|
||||
msgid ""
|
||||
"The path where received files or text messages will be stored. Default: the "
|
||||
"'OnionShare' folder of the user's home directory."
|
||||
msgstr ""
|
||||
msgstr "受信したファイルまたはテキストメッセージが格納されるパス。デフォルト: "
|
||||
"ユーザーのホームディレクトリーの「OnionShare」フォルダー。"
|
||||
|
||||
#: ../../source/advanced.rst:453
|
||||
msgid "webhook_url"
|
||||
msgstr ""
|
||||
msgstr "webhook_url"
|
||||
|
||||
#: ../../source/advanced.rst:453
|
||||
msgid ""
|
||||
"A webhook URL that OnionShare will POST to when it receives files or text "
|
||||
"messages. Default: null"
|
||||
msgstr ""
|
||||
msgstr "OnionShare がファイルまたはテキストメッセージを受信したときに POST する "
|
||||
"webhook URL。デフォルト: null"
|
||||
|
||||
#: ../../source/advanced.rst:454
|
||||
msgid "disable_text"
|
||||
msgstr ""
|
||||
msgstr "disable_text"
|
||||
|
||||
#: ../../source/advanced.rst:454
|
||||
msgid "Whether to disable receiving text messages. Default: false"
|
||||
msgstr ""
|
||||
msgstr "テキストメッセージの受信を無効にするかどうか。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:455
|
||||
msgid "disable_files"
|
||||
msgstr ""
|
||||
msgstr "disable_files"
|
||||
|
||||
#: ../../source/advanced.rst:455
|
||||
msgid "Whether to disable receiving files. Default: false"
|
||||
msgstr ""
|
||||
msgstr "ファイルの受信を無効にするかどうか。デフォルト: false"
|
||||
|
||||
#: ../../source/advanced.rst:459
|
||||
msgid "website"
|
||||
msgstr ""
|
||||
msgstr "website"
|
||||
|
||||
#: ../../source/advanced.rst:464
|
||||
msgid "disable_csp"
|
||||
msgstr ""
|
||||
msgstr "disable_csp"
|
||||
|
||||
#: ../../source/advanced.rst:464
|
||||
msgid ""
|
||||
"If set to ``true``, OnionShare won't set its default Content Security Policy "
|
||||
"header for the website. Default: ``false``"
|
||||
msgstr ""
|
||||
"``true`` に設定すると、OnionShare "
|
||||
"はウェブサイトのデフォルトのコンテンツセキュリティポリシーヘッダーを設定しま"
|
||||
"せん。デフォルト: ``false``"
|
||||
|
||||
#: ../../source/advanced.rst:465
|
||||
#, fuzzy
|
||||
msgid "custom_csp"
|
||||
msgstr "カスタムタイトル"
|
||||
msgstr "custom_csp"
|
||||
|
||||
#: ../../source/advanced.rst:465
|
||||
msgid "A custom Content Security Policy header to send instead of the default."
|
||||
msgstr ""
|
||||
msgstr "デフォルトの代わりに送信するカスタムコンテンツセキュリティポリシーヘッダー。"
|
||||
|
||||
#: ../../source/advanced.rst:471
|
||||
msgid "chat"
|
||||
|
@ -981,7 +1063,7 @@ msgstr "チャット"
|
|||
|
||||
#: ../../source/advanced.rst:473
|
||||
msgid "There are currently no configurable settings for the Chat mode."
|
||||
msgstr ""
|
||||
msgstr "現在、チャットモードの設定はありません。"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Everything in OnionShare is temporary by default. If you close an "
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
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: 2025-02-18 17:24+1100\n"
|
||||
"PO-Revision-Date: 2025-02-14 00:02+0000\n"
|
||||
"PO-Revision-Date: 2025-02-21 23:07+0000\n"
|
||||
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: uk\n"
|
||||
|
@ -17,6 +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 5.10.1-dev\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../source/advanced.rst:2
|
||||
|
@ -447,7 +448,7 @@ msgstr "Windows: ``%APPDATA%\\OnionShare``"
|
|||
|
||||
#: ../../source/advanced.rst:315
|
||||
msgid "Configuration file parameters"
|
||||
msgstr ""
|
||||
msgstr "Параметри конфігураційного файлу"
|
||||
|
||||
#: ../../source/advanced.rst:317
|
||||
msgid ""
|
||||
|
@ -468,25 +469,25 @@ msgstr ""
|
|||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Parameter"
|
||||
msgstr ""
|
||||
msgstr "Параметр"
|
||||
|
||||
#: ../../source/advanced.rst:322 ../../source/advanced.rst:402
|
||||
#: ../../source/advanced.rst:413 ../../source/advanced.rst:424
|
||||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Тип"
|
||||
|
||||
#: ../../source/advanced.rst:322 ../../source/advanced.rst:402
|
||||
#: ../../source/advanced.rst:413 ../../source/advanced.rst:424
|
||||
#: ../../source/advanced.rst:439 ../../source/advanced.rst:450
|
||||
#: ../../source/advanced.rst:462
|
||||
msgid "Explanation"
|
||||
msgstr ""
|
||||
msgstr "Пояснення"
|
||||
|
||||
#: ../../source/advanced.rst:324
|
||||
msgid "version"
|
||||
msgstr ""
|
||||
msgstr "версія"
|
||||
|
||||
#: ../../source/advanced.rst:324 ../../source/advanced.rst:325
|
||||
#: ../../source/advanced.rst:326 ../../source/advanced.rst:328
|
||||
|
@ -500,7 +501,7 @@ msgstr ""
|
|||
#: ../../source/advanced.rst:452 ../../source/advanced.rst:453
|
||||
#: ../../source/advanced.rst:465
|
||||
msgid "``string``"
|
||||
msgstr ""
|
||||
msgstr "``string``"
|
||||
|
||||
#: ../../source/advanced.rst:324
|
||||
msgid ""
|
||||
|
@ -509,7 +510,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:325
|
||||
msgid "connection_type"
|
||||
msgstr ""
|
||||
msgstr "connection_type"
|
||||
|
||||
#: ../../source/advanced.rst:325
|
||||
msgid ""
|
||||
|
@ -520,7 +521,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:326
|
||||
msgid "control_port_address"
|
||||
msgstr ""
|
||||
msgstr "control_port_address"
|
||||
|
||||
#: ../../source/advanced.rst:326
|
||||
msgid ""
|
||||
|
@ -530,12 +531,12 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:327
|
||||
msgid "control_port_port"
|
||||
msgstr ""
|
||||
msgstr "control_port_port"
|
||||
|
||||
#: ../../source/advanced.rst:327 ../../source/advanced.rst:329
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "``integer``"
|
||||
msgstr ""
|
||||
msgstr "``integer``"
|
||||
|
||||
#: ../../source/advanced.rst:327
|
||||
msgid ""
|
||||
|
@ -545,7 +546,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:328
|
||||
msgid "socks_address"
|
||||
msgstr ""
|
||||
msgstr "socks_address"
|
||||
|
||||
#: ../../source/advanced.rst:328
|
||||
msgid ""
|
||||
|
@ -555,7 +556,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:329
|
||||
msgid "socks_port"
|
||||
msgstr ""
|
||||
msgstr "socks_port"
|
||||
|
||||
#: ../../source/advanced.rst:329
|
||||
msgid ""
|
||||
|
@ -565,7 +566,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:330
|
||||
msgid "socket_file_path"
|
||||
msgstr ""
|
||||
msgstr "socket_file_path"
|
||||
|
||||
#: ../../source/advanced.rst:330
|
||||
msgid ""
|
||||
|
@ -575,7 +576,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:331
|
||||
msgid "auth_type"
|
||||
msgstr ""
|
||||
msgstr "auth_type"
|
||||
|
||||
#: ../../source/advanced.rst:331
|
||||
msgid ""
|
||||
|
@ -585,7 +586,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:332
|
||||
msgid "auth_password"
|
||||
msgstr ""
|
||||
msgstr "auth_password"
|
||||
|
||||
#: ../../source/advanced.rst:332
|
||||
msgid ""
|
||||
|
@ -595,7 +596,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:333
|
||||
msgid "auto_connect"
|
||||
msgstr ""
|
||||
msgstr "auto_connect"
|
||||
|
||||
#: ../../source/advanced.rst:333 ../../source/advanced.rst:334
|
||||
#: ../../source/advanced.rst:336 ../../source/advanced.rst:344
|
||||
|
@ -606,7 +607,7 @@ msgstr ""
|
|||
#: ../../source/advanced.rst:455 ../../source/advanced.rst:464
|
||||
#: ../../source/advanced.rst:466
|
||||
msgid "``boolean``"
|
||||
msgstr ""
|
||||
msgstr "``boolean``"
|
||||
|
||||
#: ../../source/advanced.rst:333
|
||||
msgid ""
|
||||
|
@ -616,7 +617,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:334
|
||||
msgid "use_autoupdate"
|
||||
msgstr ""
|
||||
msgstr "use_autoupdate"
|
||||
|
||||
#: ../../source/advanced.rst:334
|
||||
msgid ""
|
||||
|
@ -626,7 +627,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "autoupdate_timestamp"
|
||||
msgstr ""
|
||||
msgstr "autoupdate_timestamp"
|
||||
|
||||
#: ../../source/advanced.rst:335
|
||||
msgid "The last time OnionShare checked for updates. Default: None"
|
||||
|
@ -634,7 +635,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:336
|
||||
msgid "bridges_enabled"
|
||||
msgstr ""
|
||||
msgstr "bridges_enabled"
|
||||
|
||||
#: ../../source/advanced.rst:336
|
||||
msgid "Whether to connect to Tor using bridges. Default: False"
|
||||
|
@ -642,7 +643,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:337
|
||||
msgid "bridges_type"
|
||||
msgstr ""
|
||||
msgstr "bridges_type"
|
||||
|
||||
#: ../../source/advanced.rst:337
|
||||
msgid ""
|
||||
|
@ -654,7 +655,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:338
|
||||
msgid "bridges_builtin_pt"
|
||||
msgstr ""
|
||||
msgstr "bridges_builtin_pt"
|
||||
|
||||
#: ../../source/advanced.rst:338
|
||||
msgid ""
|
||||
|
@ -665,7 +666,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:339
|
||||
msgid "bridges_moat"
|
||||
msgstr ""
|
||||
msgstr "bridges_moat"
|
||||
|
||||
#: ../../source/advanced.rst:339
|
||||
msgid ""
|
||||
|
@ -675,7 +676,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:340
|
||||
msgid "bridges_custom"
|
||||
msgstr ""
|
||||
msgstr "bridges_custom"
|
||||
|
||||
#: ../../source/advanced.rst:340
|
||||
msgid ""
|
||||
|
@ -686,11 +687,11 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid "bridges_builtin"
|
||||
msgstr ""
|
||||
msgstr "bridges_builtin"
|
||||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid "``dict``"
|
||||
msgstr ""
|
||||
msgstr "``dict``"
|
||||
|
||||
#: ../../source/advanced.rst:341
|
||||
msgid ""
|
||||
|
@ -700,12 +701,12 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:342
|
||||
msgid "persistent_tabs"
|
||||
msgstr ""
|
||||
msgstr "persistent_tabs"
|
||||
|
||||
#: ../../source/advanced.rst:342 ../../source/advanced.rst:442
|
||||
#: ../../source/advanced.rst:467
|
||||
msgid "``list``"
|
||||
msgstr ""
|
||||
msgstr "``list``"
|
||||
|
||||
#: ../../source/advanced.rst:342
|
||||
msgid ""
|
||||
|
@ -719,7 +720,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:343
|
||||
msgid "locale"
|
||||
msgstr ""
|
||||
msgstr "locale"
|
||||
|
||||
#: ../../source/advanced.rst:343
|
||||
msgid ""
|
||||
|
@ -730,7 +731,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:344
|
||||
msgid "theme"
|
||||
msgstr ""
|
||||
msgstr "theme"
|
||||
|
||||
#: ../../source/advanced.rst:344
|
||||
msgid ""
|
||||
|
@ -761,12 +762,11 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:399
|
||||
msgid "onion"
|
||||
msgstr ""
|
||||
msgstr "onion"
|
||||
|
||||
#: ../../source/advanced.rst:404
|
||||
#, fuzzy
|
||||
msgid "private_key"
|
||||
msgstr "Вимкнути приватний ключ"
|
||||
msgstr "private_key"
|
||||
|
||||
#: ../../source/advanced.rst:404
|
||||
msgid "Base64-encoded private key of the onion service"
|
||||
|
@ -774,7 +774,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:405
|
||||
msgid "client_auth_priv_key"
|
||||
msgstr ""
|
||||
msgstr "client_auth_priv_key"
|
||||
|
||||
#: ../../source/advanced.rst:405
|
||||
msgid ""
|
||||
|
@ -783,7 +783,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:406
|
||||
msgid "client_auth_pub_key"
|
||||
msgstr ""
|
||||
msgstr "client_auth_pub_key"
|
||||
|
||||
#: ../../source/advanced.rst:406
|
||||
msgid ""
|
||||
|
@ -796,7 +796,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:415
|
||||
msgid "mode"
|
||||
msgstr ""
|
||||
msgstr "mode"
|
||||
|
||||
#: ../../source/advanced.rst:415
|
||||
msgid ""
|
||||
|
@ -806,7 +806,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:416
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
msgstr "enabled"
|
||||
|
||||
#: ../../source/advanced.rst:416
|
||||
msgid ""
|
||||
|
@ -816,7 +816,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:417
|
||||
msgid "autostart_on_launch"
|
||||
msgstr ""
|
||||
msgstr "autostart_on_launch"
|
||||
|
||||
#: ../../source/advanced.rst:417
|
||||
msgid ""
|
||||
|
@ -826,11 +826,11 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:421
|
||||
msgid "general"
|
||||
msgstr ""
|
||||
msgstr "general"
|
||||
|
||||
#: ../../source/advanced.rst:426
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
msgstr "title"
|
||||
|
||||
#: ../../source/advanced.rst:426
|
||||
msgid ""
|
||||
|
@ -840,7 +840,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:427
|
||||
msgid "public"
|
||||
msgstr ""
|
||||
msgstr "public"
|
||||
|
||||
#: ../../source/advanced.rst:427
|
||||
msgid ""
|
||||
|
@ -850,7 +850,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:428
|
||||
msgid "autostart_timer"
|
||||
msgstr ""
|
||||
msgstr "autostart_timer"
|
||||
|
||||
#: ../../source/advanced.rst:428
|
||||
msgid ""
|
||||
|
@ -861,7 +861,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:429
|
||||
msgid "autostop_timer"
|
||||
msgstr ""
|
||||
msgstr "autostop_timer"
|
||||
|
||||
#: ../../source/advanced.rst:429
|
||||
msgid ""
|
||||
|
@ -872,7 +872,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:430
|
||||
msgid "service_id"
|
||||
msgstr ""
|
||||
msgstr "service_id"
|
||||
|
||||
#: ../../source/advanced.rst:430
|
||||
msgid ""
|
||||
|
@ -887,13 +887,12 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: ../../source/advanced.rst:436
|
||||
#, fuzzy
|
||||
msgid "share"
|
||||
msgstr "Користування"
|
||||
msgstr "share"
|
||||
|
||||
#: ../../source/advanced.rst:441
|
||||
msgid "autostop_sharing"
|
||||
msgstr ""
|
||||
msgstr "autostop_sharing"
|
||||
|
||||
#: ../../source/advanced.rst:441
|
||||
msgid ""
|
||||
|
@ -903,7 +902,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:442 ../../source/advanced.rst:467
|
||||
msgid "filenames"
|
||||
msgstr ""
|
||||
msgstr "filenames"
|
||||
|
||||
#: ../../source/advanced.rst:442 ../../source/advanced.rst:467
|
||||
msgid "A list of files to share. Default: []"
|
||||
|
@ -911,7 +910,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:443 ../../source/advanced.rst:466
|
||||
msgid "log_filenames"
|
||||
msgstr ""
|
||||
msgstr "log_filenames"
|
||||
|
||||
#: ../../source/advanced.rst:443 ../../source/advanced.rst:466
|
||||
msgid ""
|
||||
|
@ -920,11 +919,11 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:447
|
||||
msgid "receive"
|
||||
msgstr ""
|
||||
msgstr "receive"
|
||||
|
||||
#: ../../source/advanced.rst:452
|
||||
msgid "data_dir"
|
||||
msgstr ""
|
||||
msgstr "data_dir"
|
||||
|
||||
#: ../../source/advanced.rst:452
|
||||
msgid ""
|
||||
|
@ -934,7 +933,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:453
|
||||
msgid "webhook_url"
|
||||
msgstr ""
|
||||
msgstr "webhook_url"
|
||||
|
||||
#: ../../source/advanced.rst:453
|
||||
msgid ""
|
||||
|
@ -944,7 +943,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:454
|
||||
msgid "disable_text"
|
||||
msgstr ""
|
||||
msgstr "disable_text"
|
||||
|
||||
#: ../../source/advanced.rst:454
|
||||
msgid "Whether to disable receiving text messages. Default: false"
|
||||
|
@ -952,7 +951,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:455
|
||||
msgid "disable_files"
|
||||
msgstr ""
|
||||
msgstr "disable_files"
|
||||
|
||||
#: ../../source/advanced.rst:455
|
||||
msgid "Whether to disable receiving files. Default: false"
|
||||
|
@ -960,11 +959,11 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:459
|
||||
msgid "website"
|
||||
msgstr ""
|
||||
msgstr "вебсайт"
|
||||
|
||||
#: ../../source/advanced.rst:464
|
||||
msgid "disable_csp"
|
||||
msgstr ""
|
||||
msgstr "disable_csp"
|
||||
|
||||
#: ../../source/advanced.rst:464
|
||||
msgid ""
|
||||
|
@ -973,9 +972,8 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#: ../../source/advanced.rst:465
|
||||
#, fuzzy
|
||||
msgid "custom_csp"
|
||||
msgstr "Власні заголовки"
|
||||
msgstr "custom_csp"
|
||||
|
||||
#: ../../source/advanced.rst:465
|
||||
msgid "A custom Content Security Policy header to send instead of the default."
|
||||
|
@ -983,7 +981,7 @@ msgstr ""
|
|||
|
||||
#: ../../source/advanced.rst:471
|
||||
msgid "chat"
|
||||
msgstr ""
|
||||
msgstr "chat"
|
||||
|
||||
#: ../../source/advanced.rst:473
|
||||
msgid "There are currently no configurable settings for the Chat mode."
|
||||
|
|
|
@ -79,8 +79,8 @@ sources:
|
|||
url: https://files.pythonhosted.org/packages/68/5f/447e04e828f47465eeab35b5d408b7ebaaaee207f48b7136c5a7267a30ae/itsdangerous-2.1.2-py3-none-any.whl
|
||||
sha256: 2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44
|
||||
- type: file
|
||||
url: https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl
|
||||
sha256: aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
|
||||
url: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
|
||||
sha256: 85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
|
||||
- type: file
|
||||
url: https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz
|
||||
sha256: d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b
|
||||
|
|
49
setup-project.sh
Executable file
49
setup-project.sh
Executable file
|
@ -0,0 +1,49 @@
|
|||
#!/bin/bash
|
||||
OS=$(uname -s)
|
||||
|
||||
if [ "$OS" == "Linux" ]; then
|
||||
# Check poetry installation and exit if no installation found.
|
||||
if ! command -v poetry 2>&1 >/dev/null
|
||||
then
|
||||
echo "Could not detect Poetry installation. Please make sure you install Poetry first.
|
||||
See https://python-poetry.org/docs/#installation or run pip3 install poetry"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check golang installation and exit if no installation found.
|
||||
if ! command -v go 2>&1 >/dev/null
|
||||
then
|
||||
echo "Could not detect Go installation. Please make sure you install Go first.
|
||||
See https://go.dev/doc/install"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# setup environment
|
||||
cd cli
|
||||
poetry install
|
||||
echo "OnionShare CLI is installed!"
|
||||
cd ../desktop
|
||||
poetry install
|
||||
|
||||
# setup tor
|
||||
poetry run python ./scripts/get-tor.py linux-x86_64
|
||||
echo "Tor is installed"
|
||||
|
||||
# compile dependencies
|
||||
./scripts/build-pt-obfs4proxy.sh
|
||||
./scripts/build-pt-snowflake.sh
|
||||
./scripts/build-pt-meek.sh
|
||||
|
||||
# add alias
|
||||
echo "alias onionshare='cd $(pwd) && poetry run onionshare'" >> ~/.bash_aliases
|
||||
echo "alias onionshare-cli='cd $(pwd) && poetry run onionshare-cli'" >> ~/.bash_aliases
|
||||
source ~/.bash_aliases
|
||||
|
||||
echo "OnionShare Desktop is now installed"
|
||||
echo "Try running 'onionshare' to start onionshare server from source tree"
|
||||
echo "Restart a new terminal if the above doesnt work"
|
||||
echo "Checkout desktop/README.md for more info"
|
||||
else
|
||||
echo "This script only works in linux distros, Try cli/README.md, desktop/README.md for installation steps"
|
||||
exit 1
|
||||
fi
|
|
@ -455,9 +455,9 @@ idna==3.10 ; python_version >= "3.10" and python_version < "3.13" \
|
|||
itsdangerous==2.1.2 ; python_version >= "3.10" and python_version < "3.13" \
|
||||
--hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \
|
||||
--hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a
|
||||
jinja2==3.1.5 ; python_version >= "3.10" and python_version < "3.13" \
|
||||
--hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
|
||||
--hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
|
||||
jinja2==3.1.6 ; python_version >= "3.10" and python_version < "3.13" \
|
||||
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
|
||||
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
|
||||
markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "3.13" \
|
||||
--hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \
|
||||
--hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \
|
||||
|
|
|
@ -455,9 +455,9 @@ idna==3.10 ; python_version >= "3.10" and python_version < "3.13" and (platform_
|
|||
itsdangerous==2.1.2 ; python_version >= "3.10" and python_version < "3.13" and (platform_machine == "x86_64" or platform_machine == "i686" or platform_machine == "aarch64" or platform_machine == "armv7l" or platform_machine == "ppc64le" or platform_machine == "s390x" or sys_platform != "linux" or platform_machine != "x86_64" and platform_machine != "i686" and platform_machine != "aarch64" and platform_machine != "armv7l" and platform_machine != "ppc64le" and platform_machine != "s390x") \
|
||||
--hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \
|
||||
--hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a
|
||||
jinja2==3.1.5 ; python_version >= "3.10" and python_version < "3.13" and (platform_machine == "x86_64" or platform_machine == "i686" or platform_machine == "aarch64" or platform_machine == "armv7l" or platform_machine == "ppc64le" or platform_machine == "s390x" or sys_platform != "linux" or platform_machine != "x86_64" and platform_machine != "i686" and platform_machine != "aarch64" and platform_machine != "armv7l" and platform_machine != "ppc64le" and platform_machine != "s390x") \
|
||||
--hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
|
||||
--hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
|
||||
jinja2==3.1.6 ; python_version >= "3.10" and python_version < "3.13" and (platform_machine == "x86_64" or platform_machine == "i686" or platform_machine == "aarch64" or platform_machine == "armv7l" or platform_machine == "ppc64le" or platform_machine == "s390x" or sys_platform != "linux" or platform_machine != "x86_64" and platform_machine != "i686" and platform_machine != "aarch64" and platform_machine != "armv7l" and platform_machine != "ppc64le" and platform_machine != "s390x") \
|
||||
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
|
||||
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
|
||||
markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "3.13" and (platform_machine == "x86_64" or platform_machine == "i686" or platform_machine == "aarch64" or platform_machine == "armv7l" or platform_machine == "ppc64le" or platform_machine == "s390x" or sys_platform != "linux" or platform_machine != "x86_64" and platform_machine != "i686" and platform_machine != "aarch64" and platform_machine != "armv7l" and platform_machine != "ppc64le" and platform_machine != "s390x") \
|
||||
--hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \
|
||||
--hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \
|
||||
|
|
Loading…
Add table
Reference in a new issue