aboutsummaryrefslogtreecommitdiff
path: root/client-web/scripts/translate_argos.py
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-04-03 21:18:52 +0200
committermetamuffin <metamuffin@disroot.org>2024-04-03 21:18:52 +0200
commit406a82f82eb77bd0480594b8e43a8f0085e2262b (patch)
tree1ee40d58719f77fdf06e9ab2eac575fb6bcec93b /client-web/scripts/translate_argos.py
parentedbe7ad1be0a52dd4220f65d1ac98163a0a1b774 (diff)
downloadkeks-meet-406a82f82eb77bd0480594b8e43a8f0085e2262b.tar
keks-meet-406a82f82eb77bd0480594b8e43a8f0085e2262b.tar.bz2
keks-meet-406a82f82eb77bd0480594b8e43a8f0085e2262b.tar.zst
autogenerate es translation
Diffstat (limited to 'client-web/scripts/translate_argos.py')
-rw-r--r--client-web/scripts/translate_argos.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/client-web/scripts/translate_argos.py b/client-web/scripts/translate_argos.py
new file mode 100644
index 0000000..2f45446
--- /dev/null
+++ b/client-web/scripts/translate_argos.py
@@ -0,0 +1,31 @@
+import json
+import sys
+from argostranslate import translate
+
+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")
+
+
+ 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"])))
+