diff --git a/qt/i18n/extract-po-string.py b/qt/i18n/extract-po-string.py new file mode 100644 index 000000000..4a2076659 --- /dev/null +++ b/qt/i18n/extract-po-string.py @@ -0,0 +1,41 @@ +import os +import sys + +import polib + +# extract a translated string from the gettext catalogs and insert it into ftl +# eg: +# $ python extract-po-string.py media-check.ftl delete-unused "Delete Unused Media" 1 +ftl_filename, key, msgid, dry_run = sys.argv[1:] + +print("Loading catalogs...") +base = "po/desktop" +langs = [d for d in os.listdir(base) if d != "anki.pot"] +cats = [] +for lang in langs: + po_path = os.path.join(base, lang, "anki.po") + cat = polib.pofile(po_path) + cats.append((lang, cat)) + +to_insert = [] +for (lang, cat) in cats: + for entry in cat: + if entry.msgid == msgid: + if entry.msgstr: + print(lang, "has", entry.msgstr) + to_insert.append((lang, entry.msgstr)) + break + +for lang, translation in to_insert: + dir = os.path.join("ftl", "core", lang) + ftl_path = os.path.join(dir, ftl_filename) + + if dry_run == "1": + continue + + if not os.path.exists(dir): + os.mkdir(dir) + + open(ftl_path, "a").write(f"\n{key} = {translation}\n") + +print("done") diff --git a/qt/i18n/requirements.txt b/qt/i18n/requirements.txt new file mode 100644 index 000000000..23e5826d6 --- /dev/null +++ b/qt/i18n/requirements.txt @@ -0,0 +1 @@ +polib