Disable tracking untranslated strings

This commit is contained in:
Isaiah Odhner 2023-06-27 15:33:56 -04:00
parent 91e6b13eda
commit 2334e168be
2 changed files with 26 additions and 12 deletions

View File

@ -70,6 +70,7 @@
"Playscii", "Playscii",
"polyline", "polyline",
"psutil", "psutil",
"pybabel",
"pycache", "pycache",
"pyfiglet", "pyfiglet",
"Pylance", "Pylance",
@ -107,6 +108,8 @@
"vkey", "vkey",
"webp", "webp",
"webstorm", "webstorm",
"wstorm" "wstorm",
"xgettext",
"xpot"
] ]
} }

View File

@ -8,6 +8,14 @@ current_language = base_language
localization_folder = os.path.dirname(__file__) localization_folder = os.path.dirname(__file__)
untranslated_file = os.path.join(localization_folder, "untranslated.txt") 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: def get_direction() -> str:
"""Get the text direction for the current language.""" """Get the text direction for the current language."""
if current_language in ["ar", "he"]: if current_language in ["ar", "he"]:
@ -38,12 +46,13 @@ def load_language(language_code: str):
except Exception as e: except Exception as e:
print(f"Could not load language '{language_code}': {e}") print(f"Could not load language '{language_code}': {e}")
untranslated: set[str] = set() if TRACK_UNTRANSLATED:
try: untranslated: set[str] = set()
with open(untranslated_file, "r") as f: try:
untranslated = set(f.read().splitlines()) with open(untranslated_file, "r") as f:
except FileNotFoundError: untranslated = set(f.read().splitlines())
pass except FileNotFoundError:
pass
def get(base_language_str: str, *interpolations: str) -> str: def get(base_language_str: str, *interpolations: str) -> str:
"""Get a localized string.""" """Get a localized string."""
@ -74,11 +83,13 @@ def get(base_language_str: str, *interpolations: str) -> str:
if base_language_str[-3:] == "...": if base_language_str[-3:] == "...":
return find_localization(base_language_str[:-3]) + "..." return find_localization(base_language_str[:-3]) + "..."
if base_language_str not in untranslated and current_language != base_language: if TRACK_UNTRANSLATED:
untranslated.add(base_language_str) if base_language_str not in untranslated and current_language != base_language:
# append to untranslated strings file untranslated.add(base_language_str)
with open(untranslated_file, "a") as f: # append to untranslated strings file
f.write(base_language_str + "\n") with open(untranslated_file, "a") as f:
f.write(base_language_str + "\n")
return base_language_str return base_language_str
def interpolate(text: str, interpolations: tuple[str]): def interpolate(text: str, interpolations: tuple[str]):