From 2334e168be78fea75c5edbe3b5d90742bec7c3c9 Mon Sep 17 00:00:00 2001 From: Isaiah Odhner Date: Tue, 27 Jun 2023 15:33:56 -0400 Subject: [PATCH] Disable tracking untranslated strings --- cspell.json | 5 +++- src/textual_paint/localization/i18n.py | 33 +++++++++++++++++--------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/cspell.json b/cspell.json index 1c8c738..88cb3fc 100644 --- a/cspell.json +++ b/cspell.json @@ -70,6 +70,7 @@ "Playscii", "polyline", "psutil", + "pybabel", "pycache", "pyfiglet", "Pylance", @@ -107,6 +108,8 @@ "vkey", "webp", "webstorm", - "wstorm" + "wstorm", + "xgettext", + "xpot" ] } diff --git a/src/textual_paint/localization/i18n.py b/src/textual_paint/localization/i18n.py index f407587..eb81695 100644 --- a/src/textual_paint/localization/i18n.py +++ b/src/textual_paint/localization/i18n.py @@ -8,6 +8,14 @@ current_language = base_language localization_folder = os.path.dirname(__file__) untranslated_file = os.path.join(localization_folder, "untranslated.txt") +TRACK_UNTRANSLATED = False +"""Whether to update the untranslated.txt file with any untranslated strings. + +This should be disabled in production. +A better way to do this would be static source code analysis, using xgettext, pybabel, or xpot. +https://docs.python.org/3/library/gettext.html#internationalizing-your-programs-and-modules +""" + def get_direction() -> str: """Get the text direction for the current language.""" if current_language in ["ar", "he"]: @@ -38,12 +46,13 @@ def load_language(language_code: str): except Exception as e: print(f"Could not load language '{language_code}': {e}") -untranslated: set[str] = set() -try: - with open(untranslated_file, "r") as f: - untranslated = set(f.read().splitlines()) -except FileNotFoundError: - pass +if TRACK_UNTRANSLATED: + untranslated: set[str] = set() + try: + with open(untranslated_file, "r") as f: + untranslated = set(f.read().splitlines()) + except FileNotFoundError: + pass def get(base_language_str: str, *interpolations: str) -> str: """Get a localized string.""" @@ -74,11 +83,13 @@ def get(base_language_str: str, *interpolations: str) -> str: if base_language_str[-3:] == "...": return find_localization(base_language_str[:-3]) + "..." - if base_language_str not in untranslated and current_language != base_language: - untranslated.add(base_language_str) - # append to untranslated strings file - with open(untranslated_file, "a") as f: - f.write(base_language_str + "\n") + if TRACK_UNTRANSLATED: + if base_language_str not in untranslated and current_language != base_language: + untranslated.add(base_language_str) + # append to untranslated strings file + with open(untranslated_file, "a") as f: + f.write(base_language_str + "\n") + return base_language_str def interpolate(text: str, interpolations: tuple[str]):