blob: 2f454460a66f4f2e8592f3716e71a52c8ac0626d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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"])))
|