From 8de06749963b5d3242fe5d7a08602f78b89e57ec Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Thu, 28 Mar 2024 04:23:14 +0100 Subject: [PATCH] feat(translate_apps): on update from apps to weblate, app new strings from apps --- .../push_or_update_apps_on_repository.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/translate_apps/push_or_update_apps_on_repository.py b/tools/translate_apps/push_or_update_apps_on_repository.py index 3bff1dc3..4f532351 100644 --- a/tools/translate_apps/push_or_update_apps_on_repository.py +++ b/tools/translate_apps/push_or_update_apps_on_repository.py @@ -154,6 +154,30 @@ def extract_strings_to_translate_from_apps(apps, translations_repository): json.dumps(translations["en"], indent=4, sort_keys=True), ) + # add strings that aren't already present but don't overwrite existing ones + for language, translated_strings in translations.items(): + if language == "en": + continue + + # if the translation file doesn't exist yet, dump it + if not (translations_path / f"{language}.json").exists(): + translations_repository.write_file( + translations_path / f"{language}.json", + json.dumps(translated_strings, indent=4, sort_keys=True), + ) + else: # if it exists, only add keys that aren't already present + language_file = json.load((translations_path / f"{language}.json").open()) + for key, translated_string in translated_strings.items(): + if key not in language_file: + language_file[key] = translated_string + language_file = json.load( + (translations_path / f"{language}.json").open() + ) + translations_repository.write_file( + translations_path / f"{language}.json", + json.dumps(language_file, indent=4, sort_keys=True), + ) + # if something has been modified if translations_repository.run_command("git status -s", capture_output=True).strip(): translations_repository.run_command("git status -s")