* rough multiple language demo * more wrappings * stash * add some bad translations * updates * map from french to spanish still has same problem of needing to call setText on everything * add files * restart UI * use return code * relative path * more translations * don't loop restart * Toggle and prime translations * try on device * try QComboBox with readable style * stash * not yet scrollable * stash * dynamic translations (doesn't work for dynamic widget strings yet) * clean up multiple option selector * store languages in json * try transparent * Try transparent popup * see how this looks * tweaks * clean up * update names * Add Chinese (Simplified) translations * Do missing French translations * unit tests caught that :) * fix test * fix other test (on PC) * add entries to dialog to test * add cancel button, clean up a bit * just chinese * some clean up * use quotes * clean up * Just quit, set timeout to 0 * half a second * use exitcode * don't print if it's expected * this comment is outdated * update translations * Update translations * re-order input classes * Update line numbers * use enabled property for button style * Get rid of ListWidget * Update line numbers * Log failed to load language * Log failed to load language * Move to utils and fix english logging extra line * Update translations * spacing * looks a bit better * try this instead of exitcode fixes fix * only one function * comment * Update line numbers * fixup some japanese translations * clean up multi option dialog * Update line numbers old-commit-hash: 949de4d2b6b293d9f77d83c58212f5dee176cbf1
38 lines
1.2 KiB
Python
Executable File
38 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import json
|
|
import os
|
|
|
|
from common.basedir import BASEDIR
|
|
|
|
UI_DIR = os.path.join(BASEDIR, "selfdrive", "ui")
|
|
TRANSLATIONS_DIR = os.path.join(UI_DIR, "translations")
|
|
LANGUAGES_FILE = os.path.join(TRANSLATIONS_DIR, "languages.json")
|
|
|
|
|
|
def update_translations(release=False, translations_dir=TRANSLATIONS_DIR):
|
|
with open(LANGUAGES_FILE, "r") as f:
|
|
translation_files = json.load(f)
|
|
|
|
for name, file in translation_files.items():
|
|
if not len(file):
|
|
print(f"{name} has no translation file, skipping...")
|
|
continue
|
|
|
|
tr_file = os.path.join(translations_dir, f"{file}.ts")
|
|
ret = os.system(f"lupdate -recursive {UI_DIR} -ts {tr_file}")
|
|
assert ret == 0
|
|
|
|
if release:
|
|
ret = os.system(f"lrelease {tr_file}")
|
|
assert ret == 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Update translation files for UI",
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument("--release", action="store_true", help="Create compiled QM translation files used by UI")
|
|
args = parser.parse_args()
|
|
|
|
update_translations(args.release)
|