diff options
author | metamuffin <metamuffin@disroot.org> | 2024-04-03 18:08:52 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-04-03 18:08:52 +0200 |
commit | edbe7ad1be0a52dd4220f65d1ac98163a0a1b774 (patch) | |
tree | 01dce2d09562b0c52c6c8b370ef889fe0e057fbf /client-web/scripts | |
parent | 93d09d0aaef7586389daa360c1a361e915c4a228 (diff) | |
download | keks-meet-edbe7ad1be0a52dd4220f65d1ac98163a0a1b774.tar keks-meet-edbe7ad1be0a52dd4220f65d1ac98163a0a1b774.tar.bz2 keks-meet-edbe7ad1be0a52dd4220f65d1ac98163a0a1b774.tar.zst |
autogenerate japanese translation
Diffstat (limited to 'client-web/scripts')
-rw-r--r-- | client-web/scripts/apply_translations.ts | 0 | ||||
-rw-r--r-- | client-web/scripts/find_missing_translations.ts (renamed from client-web/scripts/autogen_locale.ts) | 13 | ||||
-rw-r--r-- | client-web/scripts/reformat_json.ts | 16 | ||||
-rw-r--r-- | client-web/scripts/translate.py | 37 |
4 files changed, 46 insertions, 20 deletions
diff --git a/client-web/scripts/apply_translations.ts b/client-web/scripts/apply_translations.ts new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/client-web/scripts/apply_translations.ts diff --git a/client-web/scripts/autogen_locale.ts b/client-web/scripts/find_missing_translations.ts index c2f3d5b..d39590a 100644 --- a/client-web/scripts/autogen_locale.ts +++ b/client-web/scripts/find_missing_translations.ts @@ -1,10 +1,12 @@ // deno-lint-ignore-file no-explicit-any +/// <reference lib="deno.worker" /> import { LOCALES } from "../source/locale/mod.ts"; -const global_lc = "en-US" +const global_lc = "en" function traverse_object(target: any, current: any): any { if (typeof target == "string") return target + if (typeof target == "function") return undefined const out = {} as any for (const key in target) { if (!current) { @@ -20,9 +22,8 @@ function traverse_object(target: any, current: any): any { const master = LOCALES[global_lc] for (const lc in LOCALES) { if (lc == global_lc) continue - const k = JSON.stringify(traverse_object(master, LOCALES[lc])); - if (k.length <= 2) continue - console.log( - `New strings required in ${lc}:\n\t${k}` - ); + if (lc.search("-") != -1) continue + const k = traverse_object(master, LOCALES[lc]); + if (JSON.stringify(k).length <= 2) continue + console.log(JSON.stringify({ source: global_lc, target: lc, strings: k })); } diff --git a/client-web/scripts/reformat_json.ts b/client-web/scripts/reformat_json.ts new file mode 100644 index 0000000..35fc1dd --- /dev/null +++ b/client-web/scripts/reformat_json.ts @@ -0,0 +1,16 @@ + + + + +const decoder = new TextDecoder(); +let text = "" +for await (const chunk of Deno.stdin.readable) { + text += decoder.decode(chunk); +} + +for (const ob of text.split("\n")) { + if (!ob.length) continue + console.log(JSON.stringify(JSON.parse(ob), null, 4)); +} + + diff --git a/client-web/scripts/translate.py b/client-web/scripts/translate.py index 8e7de0c..2f45446 100644 --- a/client-web/scripts/translate.py +++ b/client-web/scripts/translate.py @@ -2,21 +2,30 @@ import json import sys from argostranslate import translate -srclang = "en" -dstlang = sys.argv[1] +for line in sys.stdin: + task = json.loads(line) + srclang = task["source"] + dstlang = task["target"] -installed_languages = { lang.code: lang for lang in translate.load_installed_languages() } -if srclang not in installed_languages: - raise Exception(f"need language {srclang}") -if dstlang not in installed_languages: - raise Exception(f"need language {dstlang}") -srclang = installed_languages[srclang] -dstlang = installed_languages[dstlang] -translator = srclang.get_translation(dstlang) -if translator is None: - raise Exception("no translator available") + installed_languages = { lang.code: lang for lang in translate.load_installed_languages() } + if srclang not in installed_languages: + raise Exception(f"need language {srclang}") + if dstlang not in installed_languages: + raise Exception(f"need language {dstlang}") + srclang = installed_languages[srclang] + dstlang = installed_languages[dstlang] + translator = srclang.get_translation(dstlang) + if translator is None: + raise Exception("no translator available") -print(json.loads("".join(sys.stdin))) + def tr(key, ob): + if ob == None: return None + if isinstance(ob, list): return [ tr(None,e) for e in ob ] + if isinstance(ob, dict): return { k: tr(k,v) for k, v in ob.items() } + if isinstance(ob, str): + print(f"{srclang.code}->{dstlang.code} {key}", file=sys.stderr) + return translator.translate(ob) + + print(json.dumps(tr("root", task["strings"]))) -print(translator.translate("Hello world")) |