From edbe7ad1be0a52dd4220f65d1ac98163a0a1b774 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 3 Apr 2024 18:08:52 +0200 Subject: autogenerate japanese translation --- client-web/scripts/apply_translations.ts | 0 client-web/scripts/autogen_locale.ts | 28 ------------------- client-web/scripts/find_missing_translations.ts | 29 +++++++++++++++++++ client-web/scripts/reformat_json.ts | 16 +++++++++++ client-web/scripts/translate.py | 37 +++++++++++++++---------- 5 files changed, 68 insertions(+), 42 deletions(-) create mode 100644 client-web/scripts/apply_translations.ts delete mode 100644 client-web/scripts/autogen_locale.ts create mode 100644 client-web/scripts/find_missing_translations.ts create mode 100644 client-web/scripts/reformat_json.ts (limited to 'client-web/scripts') diff --git a/client-web/scripts/apply_translations.ts b/client-web/scripts/apply_translations.ts new file mode 100644 index 0000000..e69de29 diff --git a/client-web/scripts/autogen_locale.ts b/client-web/scripts/autogen_locale.ts deleted file mode 100644 index c2f3d5b..0000000 --- a/client-web/scripts/autogen_locale.ts +++ /dev/null @@ -1,28 +0,0 @@ -// deno-lint-ignore-file no-explicit-any -import { LOCALES } from "../source/locale/mod.ts"; - -const global_lc = "en-US" - -function traverse_object(target: any, current: any): any { - if (typeof target == "string") return target - const out = {} as any - for (const key in target) { - if (!current) { - out[key] = target[key] - } else { - if (key in current) continue - out[key] = traverse_object(target[key], current) - } - } - return out -} - -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}` - ); -} diff --git a/client-web/scripts/find_missing_translations.ts b/client-web/scripts/find_missing_translations.ts new file mode 100644 index 0000000..d39590a --- /dev/null +++ b/client-web/scripts/find_missing_translations.ts @@ -0,0 +1,29 @@ +// deno-lint-ignore-file no-explicit-any +/// +import { LOCALES } from "../source/locale/mod.ts"; + +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) { + out[key] = target[key] + } else { + if (key in current) continue + out[key] = traverse_object(target[key], current) + } + } + return out +} + +const master = LOCALES[global_lc] +for (const lc in LOCALES) { + if (lc == global_lc) continue + 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")) -- cgit v1.2.3-70-g09d2