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 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'docs/README.md') 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% +======================== +``` -- 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(-) (limited to 'docs/README.md') 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