pre-commit: speed up translation step (#30966)
* formatting fix * fix missing class attr warning * add translation_files option, remove pluralonly, type hint * updates * update old-commit-hash: bef6d7f0bb1f985fa959627d674210c46870d914
This commit is contained in:
@@ -22,6 +22,9 @@ FORMAT_ARG = re.compile("%[0-9]+")
|
||||
|
||||
@parameterized_class(("name", "file"), translation_files.items())
|
||||
class TestTranslations(unittest.TestCase):
|
||||
name: str
|
||||
file: str
|
||||
|
||||
@staticmethod
|
||||
def _read_translation_file(path, file):
|
||||
tr_file = os.path.join(path, f"{file}.ts")
|
||||
@@ -30,12 +33,12 @@ class TestTranslations(unittest.TestCase):
|
||||
|
||||
def test_missing_translation_files(self):
|
||||
self.assertTrue(os.path.exists(os.path.join(TRANSLATIONS_DIR, f"{self.file}.ts")),
|
||||
f"{self.name} has no XML translation file, run selfdrive/ui/update_translations.py")
|
||||
f"{self.name} has no XML translation file, run selfdrive/ui/update_translations.py")
|
||||
|
||||
def test_translations_updated(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
shutil.copytree(TRANSLATIONS_DIR, tmpdir, dirs_exist_ok=True)
|
||||
update_translations(plural_only=["main_en"], translations_dir=tmpdir)
|
||||
update_translations(translation_files=[self.file], translations_dir=tmpdir)
|
||||
|
||||
cur_translations = self._read_translation_file(TRANSLATIONS_DIR, self.file)
|
||||
new_translations = self._read_translation_file(tmpdir, self.file)
|
||||
|
||||
@@ -9,6 +9,7 @@ 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")
|
||||
TRANSLATIONS_INCLUDE_FILE = os.path.join(TRANSLATIONS_DIR, "alerts_generated.h")
|
||||
PLURAL_ONLY = ["main_en"] # base language, only create entries for strings with plural forms
|
||||
|
||||
|
||||
def generate_translations_include():
|
||||
@@ -22,21 +23,20 @@ def generate_translations_include():
|
||||
with open(TRANSLATIONS_INCLUDE_FILE, "w") as f:
|
||||
f.write(content)
|
||||
|
||||
def update_translations(vanish=False, plural_only=None, translations_dir=TRANSLATIONS_DIR):
|
||||
|
||||
def update_translations(vanish: bool = False, translation_files: None | list[str] = None, translations_dir: str = TRANSLATIONS_DIR):
|
||||
generate_translations_include()
|
||||
|
||||
if plural_only is None:
|
||||
plural_only = []
|
||||
if translation_files is None:
|
||||
with open(LANGUAGES_FILE, "r") as f:
|
||||
translation_files = json.load(f).values()
|
||||
|
||||
with open(LANGUAGES_FILE, "r") as f:
|
||||
translation_files = json.load(f)
|
||||
|
||||
for file in translation_files.values():
|
||||
for file in translation_files:
|
||||
tr_file = os.path.join(translations_dir, f"{file}.ts")
|
||||
args = f"lupdate -locations none -recursive {UI_DIR} -ts {tr_file} -I {BASEDIR}"
|
||||
if vanish:
|
||||
args += " -no-obsolete"
|
||||
if file in plural_only:
|
||||
if file in PLURAL_ONLY:
|
||||
args += " -pluralonly"
|
||||
ret = os.system(args)
|
||||
assert ret == 0
|
||||
@@ -46,8 +46,6 @@ if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Update translation files for UI",
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
parser.add_argument("--vanish", action="store_true", help="Remove translations with source text no longer found")
|
||||
parser.add_argument("--plural-only", type=str, nargs="*", default=["main_en"],
|
||||
help="Translation codes to only create plural translations for (ie. the base language)")
|
||||
args = parser.parse_args()
|
||||
|
||||
update_translations(args.vanish, args.plural_only)
|
||||
update_translations(args.vanish)
|
||||
|
||||
Reference in New Issue
Block a user