summaryrefslogtreecommitdiff
path: root/client-web/scripts/translate_argos.py
diff options
context:
space:
mode:
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"])))
+