From 9ba14c7a89afac15628fb22ea790f8ed494026f8 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 10 May 2021 15:36:53 -0700 Subject: Remove Finnish, add Indonesian and Serbian (latin) --- cli/onionshare_cli/settings.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/onionshare_cli/settings.py b/cli/onionshare_cli/settings.py index 59fcf8df..54a0fcd9 100644 --- a/cli/onionshare_cli/settings.py +++ b/cli/onionshare_cli/settings.py @@ -64,12 +64,13 @@ class Settings(object): "da": "Dansk", # Danish "nl": "Nederlands", # Dutch "en": "English", # English - "fi": "Suomi", # Finnish + # "fi": "Suomi", # Finnish "fr": "Français", # French "gl": "Galego", # Galician "de": "Deutsch", # German "el": "Ελληνικά", # Greek "is": "Íslenska", # Icelandic + "id": "Bahasa Indonesia", # Indonesian # "ga": "Gaeilge", # Irish "it": "Italiano", # Italian "ja": "日本語", # Japanese @@ -79,10 +80,10 @@ class Settings(object): "pl": "Polski", # Polish "pt_BR": "Português (Brasil)", # Portuguese Brazil "pt_PT": "Português (Portugal)", # Portuguese Portugal - "sk": "Slovenčina", # Slovak # "ro": "Română", # Romanian "ru": "Русский", # Russian - # "sr_Latn": "Srpska (latinica)", # Serbian (latin) + "sr_Latn": "Srpska (latinica)", # Serbian (latin) + "sk": "Slovenčina", # Slovak "es": "Español", # Spanish "sv": "Svenska", # Swedish # "te": "తెలుగు", # Telugu -- cgit v1.2.3-54-g00ecf From f471346f044930ed0f04b9d01e1779884c919d9b Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 10 May 2021 18:05:41 -0700 Subject: Write script that uses the weblate API to help determine which languages are ready for a release --- docs/README.md | 61 +++++++++++++++++++ docs/check-weblate.py | 146 +++++++++++++++++++++++++++++++++++++++++++++ docs/poetry.lock | 162 +++++++++++++++++++++++++++++++++++++++++++++++++- docs/pyproject.toml | 1 + 4 files changed, 369 insertions(+), 1 deletion(-) create mode 100755 docs/check-weblate.py diff --git a/docs/README.md b/docs/README.md index fe026802..b9f868ec 100644 --- a/docs/README.md +++ b/docs/README.md @@ -36,3 +36,64 @@ sphinx-intl update -p build/gettext -l de # Build German translated document make -e SPHINXOPTS="-D language='de'" html ``` + +## Discoving which translations are >90% complete + +Each OnionShare release should only include a language if >90% of the strings have been translated into it. The script `check-weblate.py` script can be used to make a few hundreds weblate API requests to determine this for you automatically. It requires using your weblate API key, which you can find in your [user profile](https://hosted.weblate.org/accounts/profile/#api). + +``` +$ poetry run ./check-weblate.py $WEBLATE_API_KEY +GET https://hosted.weblate.org/api/projects/onionshare/languages/ +GET https://hosted.weblate.org/api/translations/onionshare/translations/hr/ +GET https://hosted.weblate.org/api/translations/onionshare/translations/eo/ +GET https://hosted.weblate.org/api/translations/onionshare/translations/ja/ +<...snip...> +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/he/ | error 404 +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/en/ +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/cs/ | error 404 + +App translations >= 90% +======================= +Arabic (ar), 95.0% +Bengali (bn), 95.0% +Catalan (ca), 93.5% +Chinese (Simplified) (zh_Hans), 98.0% +Chinese (Traditional) (zh_Hant), 95.0% +Croatian (hr), 95.0% +Danish (da), 94.5% +Dutch (nl), 92.6% +English (en), 100.0% +French (fr), 98.0% +Galician (gl), 97.5% +German (de), 95.0% +Greek (el), 98.0% +Icelandic (is), 98.0% +Indonesian (id), 98.0% +Italian (it), 94.5% +Japanese (ja), 94.5% +Kurdish (Central) (ckb), 94.5% +Norwegian Bokmål (nb_NO), 98.0% +Polish (pl), 95.0% +Portuguese (Brazil) (pt_BR), 95.0% +Portuguese (Portugal) (pt_PT), 92.6% +Russian (ru), 95.0% +Serbian (latin) (sr_Latn), 95.0% +Slovak (sk), 94.5% +Spanish (es), 98.0% +Swedish (sv), 94.5% +Turkish (tr), 98.0% +Ukrainian (uk), 98.0% + +App translations >= 75% +======================= +Finnish (fi), 88.1% + +Docs translations >= 90% +======================== +English (en), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% +Turkish (tr), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% +Ukrainian (uk), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% + +Docs translations >= 75% +======================== +``` diff --git a/docs/check-weblate.py b/docs/check-weblate.py new file mode 100755 index 00000000..8283deea --- /dev/null +++ b/docs/check-weblate.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +import sys +import httpx +import asyncio +import time + + +api_token = None +languages = {} +app_translations = {} +docs_translations = {} + + +async def api(path): + url = f"https://hosted.weblate.org{path}" + + async with httpx.AsyncClient() as client: + r = await client.get(url, headers={"Authorization": f"Token {api_token}"}) + + if r.status_code == 200: + print(f"GET {url}") + return r.json() + else: + print(f"GET {url} | error {r.status_code}") + return None + + +async def get_app_translation(lang_code): + global app_translations + obj = await api(f"/api/translations/onionshare/translations/{lang_code}/") + if obj: + app_translations[lang_code] = obj["translated_percent"] + + +async def get_docs_translation(component, lang_code): + global docs_translations + obj = await api(f"/api/translations/onionshare/{component}/{lang_code}/") + if obj: + if component not in docs_translations: + docs_translations[component] = {} + docs_translations[component][lang_code] = obj["translated_percent"] + + +async def app_percent_output(percent_min, percent_max=100): + out = [] + for lang_code in languages: + if ( + app_translations[lang_code] >= percent_min + and app_translations[lang_code] <= percent_max + ): + out.append( + f"{languages[lang_code]} ({lang_code}), {app_translations[lang_code]}%" + ) + + out.sort() + + print(f"App translations >= {percent_min}%") + print("=======================") + print("\n".join(out)) + + print("") + + +async def docs_percent_output(percent_min, percent_max=100): + out = [] + for lang_code in languages: + include_language = True + percentages = [] + + for component in docs_translations: + if lang_code not in docs_translations[component]: + include_language = False + break + + percentages.append(docs_translations[component][lang_code]) + + if ( + docs_translations[component][lang_code] < percent_min + or docs_translations[component][lang_code] > percent_max + ): + include_language = False + break + + if include_language: + percentages = [f"{p}%" for p in percentages] + percentages = ", ".join(percentages) + out.append(f"{languages[lang_code]} ({lang_code}), {percentages}") + + out.sort() + + print(f"Docs translations >= {percent_min}%") + print("========================") + print("\n".join(out)) + + print("") + + +async def main(): + global api_token, languages, app_translations, docs_translations + + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} API_KEY") + print( + "You can find your personal API key at: https://hosted.weblate.org/accounts/profile/#api" + ) + return + + api_token = sys.argv[1] + + # Get the list of languages in the OnionShare project + res = await api("/api/projects/onionshare/languages/") + for obj in res: + languages[obj["code"]] = obj["language"] + + # Get the app translations for each language + await asyncio.gather(*[get_app_translation(lang_code) for lang_code in languages]) + + # Get the documentation translations for each component for each language + for component in [ + "doc-advanced", + "doc-develop", + "doc-features", + "doc-help", + "doc-index", + "doc-install", + "doc-security", + "doc-sphinx", + "doc-tor", + ]: + docs_futures = [] + for lang_code in languages: + docs_futures.append(get_docs_translation(component, lang_code)) + + await asyncio.gather(*docs_futures) + + print("") + + await app_percent_output(90) + await app_percent_output(75, 90) + + await docs_percent_output(90) + await docs_percent_output(75, 90) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/docs/poetry.lock b/docs/poetry.lock index 1be892f9..3bc4f44a 100644 --- a/docs/poetry.lock +++ b/docs/poetry.lock @@ -6,6 +6,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "async-generator" +version = "1.10" +description = "Async generators and context managers for Python 3.5+" +category = "main" +optional = false +python-versions = ">=3.5" + [[package]] name = "babel" version = "2.9.0" @@ -49,6 +57,17 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "contextvars" +version = "2.4" +description = "PEP 567 Backport" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +immutables = ">=0.9" + [[package]] name = "docutils" version = "0.16" @@ -57,6 +76,48 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "h11" +version = "0.12.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "httpcore" +version = "0.13.3" +description = "A minimal low-level HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +h11 = ">=0.11,<0.13" +sniffio = ">=1.0.0,<2.0.0" + +[package.extras] +http2 = ["h2 (>=3,<5)"] + +[[package]] +name = "httpx" +version = "0.18.1" +description = "The next generation HTTP client." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +async-generator = {version = "*", markers = "python_version < \"3.7\""} +certifi = "*" +httpcore = ">=0.13.0,<0.14.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotlicffi (>=1.0.0,<2.0.0)"] +http2 = ["h2 (>=3.0.0,<4.0.0)"] + [[package]] name = "idna" version = "2.10" @@ -73,6 +134,17 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "immutables" +version = "0.15" +description = "Immutable Collections" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)"] + [[package]] name = "jinja2" version = "2.11.2" @@ -149,6 +221,20 @@ urllib3 = ">=1.21.1,<1.27" security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + [[package]] name = "six" version = "1.15.0" @@ -157,6 +243,17 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "sniffio" +version = "1.2.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""} + [[package]] name = "snowballstemmer" version = "2.0.0" @@ -314,13 +411,17 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [metadata] lock-version = "1.1" python-versions = "^3.6" -content-hash = "c10cf732636ae0ea2c57b2a5698505a78b3d396c1656a9cd23f3f86ac825c762" +content-hash = "d146005969ffef66c679fac3bac5aeb4e03b1ec2852e1afefdfe4087a5be789c" [metadata.files] alabaster = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] +async-generator = [ + {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"}, + {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"}, +] babel = [ {file = "Babel-2.9.0-py2.py3-none-any.whl", hash = "sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5"}, {file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"}, @@ -341,10 +442,25 @@ colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] +contextvars = [ + {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"}, +] docutils = [ {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, ] +h11 = [ + {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, + {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, +] +httpcore = [ + {file = "httpcore-0.13.3-py3-none-any.whl", hash = "sha256:ff614f0ef875b9e5fe0bdd459b31ea0eea282ff12dc82add83d68b3811ee94ad"}, + {file = "httpcore-0.13.3.tar.gz", hash = "sha256:5d674b57a11275904d4fd0819ca02f960c538e4472533620f322fc7db1ea0edc"}, +] +httpx = [ + {file = "httpx-0.18.1-py3-none-any.whl", hash = "sha256:ad2e3db847be736edc4b272c4d5788790a7e5789ef132fc6b5fef8aeb9e9f6e0"}, + {file = "httpx-0.18.1.tar.gz", hash = "sha256:0a2651dd2b9d7662c70d12ada5c290abcf57373b9633515fe4baa9f62566086f"}, +] idna = [ {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, @@ -353,6 +469,23 @@ imagesize = [ {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"}, {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"}, ] +immutables = [ + {file = "immutables-0.15-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:6728f4392e3e8e64b593a5a0cd910a1278f07f879795517e09f308daed138631"}, + {file = "immutables-0.15-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f0836cd3bdc37c8a77b192bbe5f41dbcc3ce654db048ebbba89bdfe6db7a1c7a"}, + {file = "immutables-0.15-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8703d8abfd8687932f2a05f38e7de270c3a6ca3bd1c1efb3c938656b3f2f985a"}, + {file = "immutables-0.15-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b8ad986f9b532c026f19585289384b0769188fcb68b37c7f0bd0df9092a6ca54"}, + {file = "immutables-0.15-cp36-cp36m-win_amd64.whl", hash = "sha256:6f117d9206165b9dab8fd81c5129db757d1a044953f438654236ed9a7a4224ae"}, + {file = "immutables-0.15-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b75ade826920c4e490b1bb14cf967ac14e61eb7c5562161c5d7337d61962c226"}, + {file = "immutables-0.15-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b7e13c061785e34f73c4f659861f1b3e4a5fd918e4395c84b21c4e3d449ebe27"}, + {file = "immutables-0.15-cp37-cp37m-win_amd64.whl", hash = "sha256:3035849accee4f4e510ed7c94366a40e0f5fef9069fbe04a35f4787b13610a4a"}, + {file = "immutables-0.15-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:b04fa69174e0c8f815f9c55f2a43fc9e5a68452fab459a08e904a74e8471639f"}, + {file = "immutables-0.15-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:141c2e9ea515a3a815007a429f0b47a578ebeb42c831edaec882a245a35fffca"}, + {file = "immutables-0.15-cp38-cp38-win_amd64.whl", hash = "sha256:cbe8c64640637faa5535d539421b293327f119c31507c33ca880bd4f16035eb6"}, + {file = "immutables-0.15-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a0a4e4417d5ef4812d7f99470cd39347b58cb927365dd2b8da9161040d260db0"}, + {file = "immutables-0.15-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3b15c08c71c59e5b7c2470ef949d49ff9f4263bb77f488422eaa157da84d6999"}, + {file = "immutables-0.15-cp39-cp39-win_amd64.whl", hash = "sha256:2283a93c151566e6830aee0e5bee55fc273455503b43aa004356b50f9182092b"}, + {file = "immutables-0.15.tar.gz", hash = "sha256:3713ab1ebbb6946b7ce1387bb9d1d7f5e09c45add58c2a2ee65f963c171e746b"}, +] jinja2 = [ {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"}, {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"}, @@ -376,20 +509,39 @@ markupsafe = [ {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"}, {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"}, {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, ] packaging = [ @@ -412,10 +564,18 @@ requests = [ {file = "requests-2.25.0-py2.py3-none-any.whl", hash = "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"}, {file = "requests-2.25.0.tar.gz", hash = "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8"}, ] +rfc3986 = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, ] +sniffio = [ + {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, + {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, +] snowballstemmer = [ {file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"}, {file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"}, diff --git a/docs/pyproject.toml b/docs/pyproject.toml index 1b1cb289..fa1c3c55 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -9,6 +9,7 @@ python = "^3.6" sphinx = "^3.2.1" sphinx-rtd-theme = "^0.5.0" sphinx-intl = "^2.0.1" +httpx = "^0.18.1" [tool.poetry.dev-dependencies] -- cgit v1.2.3-54-g00ecf From 632862668368655003e38bdcfe4be3e0ddfdce73 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 10 May 2021 18:19:20 -0700 Subject: Fix check-weblate.py to accurately describe the levels of translations --- docs/README.md | 25 ++++++++++++++++++------- docs/check-weblate.py | 35 +++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/docs/README.md b/docs/README.md index b9f868ec..029217bb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -48,9 +48,13 @@ GET https://hosted.weblate.org/api/translations/onionshare/translations/hr/ GET https://hosted.weblate.org/api/translations/onionshare/translations/eo/ GET https://hosted.weblate.org/api/translations/onionshare/translations/ja/ <...snip...> -GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/he/ | error 404 -GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/en/ -GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/cs/ | error 404 +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/wo/ | error 404 +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/ar/ +GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/it/ + +App translations >= 100% +======================= +English (en), 100.0% App translations >= 90% ======================= @@ -62,7 +66,6 @@ Chinese (Traditional) (zh_Hant), 95.0% Croatian (hr), 95.0% Danish (da), 94.5% Dutch (nl), 92.6% -English (en), 100.0% French (fr), 98.0% Galician (gl), 97.5% German (de), 95.0% @@ -84,16 +87,24 @@ Swedish (sv), 94.5% Turkish (tr), 98.0% Ukrainian (uk), 98.0% -App translations >= 75% +App translations >= 80% ======================= Finnish (fi), 88.1% -Docs translations >= 90% +Docs translations >= 100% ======================== English (en), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% Turkish (tr), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% Ukrainian (uk), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% -Docs translations >= 75% +Docs translations >= 90% +======================== + + +Docs translations >= 80% ======================== +German (de), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% +Greek (el), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% +Russian (ru), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% +Spanish (es), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0% ``` diff --git a/docs/check-weblate.py b/docs/check-weblate.py index 8283deea..c3e1be03 100755 --- a/docs/check-weblate.py +++ b/docs/check-weblate.py @@ -15,7 +15,9 @@ async def api(path): url = f"https://hosted.weblate.org{path}" async with httpx.AsyncClient() as client: - r = await client.get(url, headers={"Authorization": f"Token {api_token}"}) + r = await client.get( + url, headers={"Authorization": f"Token {api_token}"}, timeout=30.0 + ) if r.status_code == 200: print(f"GET {url}") @@ -41,12 +43,12 @@ async def get_docs_translation(component, lang_code): docs_translations[component][lang_code] = obj["translated_percent"] -async def app_percent_output(percent_min, percent_max=100): +async def app_percent_output(percent_min, percent_max=101): out = [] for lang_code in languages: if ( app_translations[lang_code] >= percent_min - and app_translations[lang_code] <= percent_max + and app_translations[lang_code] < percent_max ): out.append( f"{languages[lang_code]} ({lang_code}), {app_translations[lang_code]}%" @@ -61,7 +63,7 @@ async def app_percent_output(percent_min, percent_max=100): print("") -async def docs_percent_output(percent_min, percent_max=100): +async def docs_percent_output(percent_min, exclude=[]): out = [] for lang_code in languages: include_language = True @@ -74,10 +76,7 @@ async def docs_percent_output(percent_min, percent_max=100): percentages.append(docs_translations[component][lang_code]) - if ( - docs_translations[component][lang_code] < percent_min - or docs_translations[component][lang_code] > percent_max - ): + if docs_translations[component][lang_code] < percent_min: include_language = False break @@ -86,13 +85,19 @@ async def docs_percent_output(percent_min, percent_max=100): percentages = ", ".join(percentages) out.append(f"{languages[lang_code]} ({lang_code}), {percentages}") - out.sort() + excluded = [] + for s in out: + if s not in exclude: + excluded.append(s) + + excluded.sort() print(f"Docs translations >= {percent_min}%") print("========================") - print("\n".join(out)) + print("\n".join(excluded)) print("") + return excluded async def main(): @@ -135,11 +140,13 @@ async def main(): print("") - await app_percent_output(90) - await app_percent_output(75, 90) + await app_percent_output(100) + await app_percent_output(90, 100) + await app_percent_output(80, 90) - await docs_percent_output(90) - await docs_percent_output(75, 90) + out100 = await docs_percent_output(100) + out90 = await docs_percent_output(90, out100) + await docs_percent_output(80, out100 + out90) if __name__ == "__main__": -- cgit v1.2.3-54-g00ecf From bf881cbada75ec286230064c93ce07d699b3a4c8 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 10 May 2021 18:26:06 -0700 Subject: Update dev examples in docs --- docs/source/develop.rst | 197 ++++++++++++++++++++++++------------------------ 1 file changed, 100 insertions(+), 97 deletions(-) diff --git a/docs/source/develop.rst b/docs/source/develop.rst index ac8703d2..6ac1da61 100644 --- a/docs/source/develop.rst +++ b/docs/source/develop.rst @@ -41,79 +41,83 @@ When developing, it's convenient to run OnionShare from a terminal and add the ` This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example:: $ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes - OnionShare 2.3 | https://onionshare.org/ - - @@@@@@@@@ - @@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ___ _ - @@@@@@ @@@@@@@@@@@@@ / _ \ (_) - @@@@ @ @@@@@@@@@@@ | | | |_ __ _ ___ _ __ - @@@@@@@@ @@@@@@@@@@ | | | | '_ \| |/ _ \| '_ \ - @@@@@@@@@@@@ @@@@@@@@@@ \ \_/ / | | | | (_) | | | | - @@@@@@@@@@@@@@@@ @@@@@@@@@ \___/|_| |_|_|\___/|_| |_| - @@@@@@@@@ @@@@@@@@@@@@@@@@ _____ _ - @@@@@@@@@@ @@@@@@@@@@@@ / ___| | - @@@@@@@@@@ @@@@@@@@ \ `--.| |__ __ _ _ __ ___ - @@@@@@@@@@@ @ @@@@ `--. \ '_ \ / _` | '__/ _ \ - @@@@@@@@@@@@@ @@@@@@ /\__/ / | | | (_| | | | __/ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \____/|_| |_|\__,_|_| \___| - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@ - @@@@@@@@@ - - [Nov 10 2020 20:50:35] Settings.__init__ - [Nov 10 2020 20:50:35] Settings.load - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt - [Nov 10 2020 20:50:35] ModeSettings.load: creating /home/user/.config/onionshare/persistent/abstain-reprogram-elevate.json - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.public = False - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostart_timer = 0 - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostop_timer = 0 - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.legacy = False - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.client_auth = False - [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: share.autostop_sharing = True - [Nov 10 2020 20:50:35] Web.__init__: is_gui=False, mode=share - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=static - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates - [Nov 10 2020 20:50:35] Web.generate_static_url_path: new static_url_path is /static_qa7rlyxwnfodczrriv3tj5yeoq - [Nov 10 2020 20:50:35] ShareModeWeb.init - [Nov 10 2020 20:50:35] Onion.__init__ - [Nov 10 2020 20:50:35] Onion.connect - [Nov 10 2020 20:50:35] Settings.__init__ - [Nov 10 2020 20:50:35] Settings.load - [Nov 10 2020 20:50:35] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpz53ztq3m - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=torrc_template - [Nov 10 2020 20:50:35] Common.get_resource_path: filename=torrc_template, path=/home/user/code/onionshare/cli/onionshare_cli/resources/torrc_template + ╭───────────────────────────────────────────╮ + │ * ▄▄█████▄▄ * │ + │ ▄████▀▀▀████▄ * │ + │ ▀▀█▀ ▀██▄ │ + │ * ▄█▄ ▀██▄ │ + │ ▄█████▄ ███ -+- │ + │ ███ ▀█████▀ │ + │ ▀██▄ ▀█▀ │ + │ * ▀██▄ ▄█▄▄ * │ + │ * ▀████▄▄▄████▀ │ + │ ▀▀█████▀▀ │ + │ -+- * │ + │ ▄▀▄ ▄▀▀ █ │ + │ █ █ ▀ ▀▄ █ │ + │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │ + │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │ + │ │ + │ v2.3.2.dev1 │ + │ │ + │ https://onionshare.org/ │ + ╰───────────────────────────────────────────╯ + + [May 10 2021 18:24:02] Settings.__init__ + [May 10 2021 18:24:02] Settings.load + [May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json + [May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt + [May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt + [May 10 2021 18:24:02] ModeSettings.load: creating /home/user/.config/onionshare/persistent/tattered-handgun-stress.json + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.title = None + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.public = False + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostart_timer = 0 + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostop_timer = 0 + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.legacy = False + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.client_auth = False + [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: share.autostop_sharing = True + [May 10 2021 18:24:02] Web.__init__: is_gui=False, mode=share + [May 10 2021 18:24:02] Common.get_resource_path: filename=static + [May 10 2021 18:24:02] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static + [May 10 2021 18:24:02] Common.get_resource_path: filename=templates + [May 10 2021 18:24:02] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates + [May 10 2021 18:24:02] Web.generate_static_url_path: new static_url_path is /static_4yxrx2mzi5uzkblklpzd46mwke + [May 10 2021 18:24:02] ShareModeWeb.init + [May 10 2021 18:24:02] Onion.__init__ + [May 10 2021 18:24:02] Onion.connect + [May 10 2021 18:24:02] Settings.__init__ + [May 10 2021 18:24:02] Settings.load + [May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json + [May 10 2021 18:24:02] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpw6u0nz8l + [May 10 2021 18:24:02] Common.get_resource_path: filename=torrc_template + [May 10 2021 18:24:02] Common.get_resource_path: filename=torrc_template, path=/home/user/code/onionshare/cli/onionshare_cli/resources/torrc_template Connecting to the Tor network: 100% - Done - [Nov 10 2020 20:50:42] Onion.connect: Connected to tor 0.4.4.5 - [Nov 10 2020 20:50:42] Settings.load - [Nov 10 2020 20:50:42] Web.generate_password: saved_password=None - [Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt - [Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt - [Nov 10 2020 20:50:42] Web.generate_password: built random password: "pedometer-grower" - [Nov 10 2020 20:50:42] OnionShare.__init__ - [Nov 10 2020 20:50:42] OnionShare.start_onion_service - [Nov 10 2020 20:50:42] Onion.start_onion_service: port=17610 - [Nov 10 2020 20:50:42] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3 - [Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: general.service_id = x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad - [Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: onion.private_key = uIXJzY+88tGSAXAjQxdwkzb2L7jHv467RIX1WDieVkFEZjEA7st2p/6uVCM4KM3L9PdShTPScuUv2IEbVQammA== + [May 10 2021 18:24:10] Onion.connect: Connected to tor 0.4.5.7 + [May 10 2021 18:24:10] Settings.load + [May 10 2021 18:24:10] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json + [May 10 2021 18:24:10] Web.generate_password: saved_password=None + [May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt + [May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt + [May 10 2021 18:24:10] Web.generate_password: built random password: "tipping-colonize" + [May 10 2021 18:24:10] OnionShare.__init__ + [May 10 2021 18:24:10] OnionShare.start_onion_service + [May 10 2021 18:24:10] Onion.start_onion_service: port=17645 + [May 10 2021 18:24:10] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3 + [May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: general.service_id = omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd + [May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: onion.private_key = 6PhomJCjlWicmOyAAe0wnQoEM3vcyHBivrRGDy0hzm900fW5ITDJ6iv2+tluLoueYj81MhmnYeTOHDm8UGOfhg== Compressing files. - [Nov 10 2020 20:50:46] ShareModeWeb.init - [Nov 10 2020 20:50:46] ShareModeWeb.set_file_info_custom - [Nov 10 2020 20:50:46] ShareModeWeb.build_zipfile_list - [Nov 10 2020 20:50:46] Web.start: port=17610 - * Running on http://127.0.0.1:17610/ (Press CTRL+C to quit) - + [May 10 2021 18:24:14] ShareModeWeb.init + [May 10 2021 18:24:14] ShareModeWeb.set_file_info_custom + [May 10 2021 18:24:14] ShareModeWeb.build_zipfile_list + [May 10 2021 18:24:14] Web.start: port=17645 + * Running on http://127.0.0.1:17645/ (Press CTRL+C to quit) + Give this address to the recipient: - http://onionshare:pedometer-grower@x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad.onion - + http://onionshare:tipping-colonize@omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd.onion + Press Ctrl+C to stop the server + You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example:: common.log('OnionShareGui', 'start_server', 'I ran here') @@ -127,38 +131,37 @@ Tor is slow, and it's often convenient to skip starting onion services altogethe You can do this with the ``--local-only`` flag. For example:: $ poetry run onionshare-cli --local-only --receive - OnionShare 2.3 | https://onionshare.org/ - - @@@@@@@@@ - @@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ___ _ - @@@@@@ @@@@@@@@@@@@@ / _ \ (_) - @@@@ @ @@@@@@@@@@@ | | | |_ __ _ ___ _ __ - @@@@@@@@ @@@@@@@@@@ | | | | '_ \| |/ _ \| '_ \ - @@@@@@@@@@@@ @@@@@@@@@@ \ \_/ / | | | | (_) | | | | - @@@@@@@@@@@@@@@@ @@@@@@@@@ \___/|_| |_|_|\___/|_| |_| - @@@@@@@@@ @@@@@@@@@@@@@@@@ _____ _ - @@@@@@@@@@ @@@@@@@@@@@@ / ___| | - @@@@@@@@@@ @@@@@@@@ \ `--.| |__ __ _ _ __ ___ - @@@@@@@@@@@ @ @@@@ `--. \ '_ \ / _` | '__/ _ \ - @@@@@@@@@@@@@ @@@@@@ /\__/ / | | | (_| | | | __/ - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \____/|_| |_|\__,_|_| \___| - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@@@@@@@ - @@@@@@@@@@@@@@@@@@@ - @@@@@@@@@ - - * Running on http://127.0.0.1:17635/ (Press CTRL+C to quit) - + ╭───────────────────────────────────────────╮ + │ * ▄▄█████▄▄ * │ + │ ▄████▀▀▀████▄ * │ + │ ▀▀█▀ ▀██▄ │ + │ * ▄█▄ ▀██▄ │ + │ ▄█████▄ ███ -+- │ + │ ███ ▀█████▀ │ + │ ▀██▄ ▀█▀ │ + │ * ▀██▄ ▄█▄▄ * │ + │ * ▀████▄▄▄████▀ │ + │ ▀▀█████▀▀ │ + │ -+- * │ + │ ▄▀▄ ▄▀▀ █ │ + │ █ █ ▀ ▀▄ █ │ + │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │ + │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │ + │ │ + │ v2.3.2.dev1 │ + │ │ + │ https://onionshare.org/ │ + ╰───────────────────────────────────────────╯ + + * Running on http://127.0.0.1:17617/ (Press CTRL+C to quit) + Files sent to you appear in this folder: /home/user/OnionShare - + Warning: Receive mode lets people upload files to your computer. Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing. - + Give this address to the sender: - http://onionshare:train-system@127.0.0.1:17635 - + http://onionshare:ended-blah@127.0.0.1:17617 + Press Ctrl+C to stop the server In this case, you load the URL ``http://onionshare:train-system@127.0.0.1:17635`` in a normal web-browser like Firefox, instead of using the Tor Browser. -- cgit v1.2.3-54-g00ecf From cd5eff4ba795c2c66be68ff3dd246b71fdfba457 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 10 May 2021 18:26:53 -0700 Subject: Build docs --- docs/gettext/.doctrees/advanced.doctree | Bin 30413 -> 30413 bytes docs/gettext/.doctrees/develop.doctree | Bin 35678 -> 37736 bytes docs/gettext/.doctrees/environment.pickle | Bin 37841 -> 37975 bytes docs/gettext/.doctrees/features.doctree | Bin 47169 -> 47169 bytes docs/gettext/.doctrees/help.doctree | Bin 7679 -> 7679 bytes docs/gettext/.doctrees/index.doctree | Bin 3439 -> 3439 bytes docs/gettext/.doctrees/install.doctree | Bin 20613 -> 20613 bytes docs/gettext/.doctrees/security.doctree | Bin 13526 -> 13526 bytes docs/gettext/.doctrees/tor.doctree | Bin 30114 -> 30114 bytes docs/gettext/develop.pot | 28 ++++++++++++++-------------- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/gettext/.doctrees/advanced.doctree b/docs/gettext/.doctrees/advanced.doctree index f3300dc9..3a142d54 100644 Binary files a/docs/gettext/.doctrees/advanced.doctree and b/docs/gettext/.doctrees/advanced.doctree differ diff --git a/docs/gettext/.doctrees/develop.doctree b/docs/gettext/.doctrees/develop.doctree index c50d1041..8c48f7e0 100644 Binary files a/docs/gettext/.doctrees/develop.doctree and b/docs/gettext/.doctrees/develop.doctree differ diff --git a/docs/gettext/.doctrees/environment.pickle b/docs/gettext/.doctrees/environment.pickle index 4127bd0e..4b580f66 100644 Binary files a/docs/gettext/.doctrees/environment.pickle and b/docs/gettext/.doctrees/environment.pickle differ diff --git a/docs/gettext/.doctrees/features.doctree b/docs/gettext/.doctrees/features.doctree index d5025345..339a9870 100644 Binary files a/docs/gettext/.doctrees/features.doctree and b/docs/gettext/.doctrees/features.doctree differ diff --git a/docs/gettext/.doctrees/help.doctree b/docs/gettext/.doctrees/help.doctree index 9af01519..32e71df0 100644 Binary files a/docs/gettext/.doctrees/help.doctree and b/docs/gettext/.doctrees/help.doctree differ diff --git a/docs/gettext/.doctrees/index.doctree b/docs/gettext/.doctrees/index.doctree index bcb4fc44..6ae4d2f8 100644 Binary files a/docs/gettext/.doctrees/index.doctree and b/docs/gettext/.doctrees/index.doctree differ diff --git a/docs/gettext/.doctrees/install.doctree b/docs/gettext/.doctrees/install.doctree index 5e50e29a..ec507658 100644 Binary files a/docs/gettext/.doctrees/install.doctree and b/docs/gettext/.doctrees/install.doctree differ diff --git a/docs/gettext/.doctrees/security.doctree b/docs/gettext/.doctrees/security.doctree index 7cd39d9e..0d5182b7 100644 Binary files a/docs/gettext/.doctrees/security.doctree and b/docs/gettext/.doctrees/security.doctree differ diff --git a/docs/gettext/.doctrees/tor.doctree b/docs/gettext/.doctrees/tor.doctree index ca578150..378ebe7d 100644 Binary files a/docs/gettext/.doctrees/tor.doctree and b/docs/gettext/.doctrees/tor.doctree differ diff --git a/docs/gettext/develop.pot b/docs/gettext/develop.pot index 734070ed..8ef36381 100644 --- a/docs/gettext/develop.pot +++ b/docs/gettext/develop.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: OnionShare 2.3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-05-03 21:48-0700\n" +"POT-Creation-Date: 2021-05-10 18:26-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -72,54 +72,54 @@ msgstr "" msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::" msgstr "" -#: ../../source/develop.rst:117 +#: ../../source/develop.rst:121 msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::" msgstr "" -#: ../../source/develop.rst:121 +#: ../../source/develop.rst:125 msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated." msgstr "" -#: ../../source/develop.rst:124 +#: ../../source/develop.rst:128 msgid "Local Only" msgstr "" -#: ../../source/develop.rst:126 +#: ../../source/develop.rst:130 msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::" msgstr "" -#: ../../source/develop.rst:164 +#: ../../source/develop.rst:167 msgid "In this case, you load the URL ``http://onionshare:train-system@127.0.0.1:17635`` in a normal web-browser like Firefox, instead of using the Tor Browser." msgstr "" -#: ../../source/develop.rst:167 +#: ../../source/develop.rst:170 msgid "Contributing Translations" msgstr "" -#: ../../source/develop.rst:169 +#: ../../source/develop.rst:172 msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate `_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed." msgstr "" -#: ../../source/develop.rst:171 +#: ../../source/develop.rst:174 msgid "To help translate, make a Hosted Weblate account and start contributing." msgstr "" -#: ../../source/develop.rst:174 +#: ../../source/develop.rst:177 msgid "Suggestions for Original English Strings" msgstr "" -#: ../../source/develop.rst:176 +#: ../../source/develop.rst:179 msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation." msgstr "" -#: ../../source/develop.rst:178 +#: ../../source/develop.rst:181 msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes." msgstr "" -#: ../../source/develop.rst:182 +#: ../../source/develop.rst:185 msgid "Status of Translations" msgstr "" -#: ../../source/develop.rst:183 +#: ../../source/develop.rst:186 msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net" msgstr "" -- cgit v1.2.3-54-g00ecf