feat: Add new translation keys and backward-compatible aliases for web source settings
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions

This commit is contained in:
claudi 2026-04-15 08:03:48 +02:00
parent 3f9fa06fbd
commit bc6c08b6ea
8 changed files with 238 additions and 1 deletions

View file

@ -51,6 +51,39 @@ class Translator:
"zh": "中文",
}
# Backward-compatible key aliases for renamed translation keys.
# This allows newer UI code to reuse existing localized strings.
KEY_ALIASES: Dict[str, str] = {
"settings.web_source.url_label": "settings.web_url.label",
"settings.web_source.open_btn": "settings.web_url.open_btn",
"settings.web_source.url_mappings_label": "settings.url_mappings.label",
"settings.web_source.col_url_prefix": "settings.url_mappings.col_prefix",
"settings.web_source.col_local_path": "settings.url_mappings.col_path",
"settings.web_source.add_mapping_btn": "settings.url_mappings.add_btn",
"settings.web_source.edit_mapping_btn": "settings.url_mappings.edit_btn",
"settings.web_source.remove_mapping_btn": "settings.url_mappings.remove_btn",
"settings.web_source.add_mapping_title": "settings.add_mapping.url_title",
"settings.web_source.add_mapping_url_prompt": "settings.add_mapping.url_prompt",
"settings.web_source.add_mapping_path_prompt": "settings.add_mapping.path_prompt",
"settings.web_source.edit_mapping_title": "settings.edit_mapping.title",
"settings.web_source.edit_mapping_url_prompt": "settings.edit_mapping.url_prompt",
"settings.web_source.edit_mapping_path_prompt": "settings.edit_mapping.path_prompt",
"settings.web_source.select_mapping_to_edit": "settings.error.select_mapping",
"settings.logging.level_label": "settings.log_level.label",
"settings.logging.file_label": "settings.log_file.label",
"settings.logging.browse_btn": "settings.log_file.browse_btn",
"settings.logging.select_file_title": "settings.select_log_file.title",
"settings.paths.select_dir_title": "settings.select_directory.title",
"settings.urls.add_title": "settings.add_url.title",
"settings.urls.add_prompt": "settings.add_url.prompt",
"settings.profiles.save_title": "settings.profile.save.title",
"settings.profiles.save_prompt": "settings.profile.save.prompt",
"settings.profiles.select_to_load": "settings.error.select_profile_load",
"settings.profiles.select_to_delete": "settings.error.select_profile_delete",
"settings.profiles.export_title": "settings.export_config.title",
"settings.profiles.import_title": "settings.import_config.title",
}
def __init__(self) -> None:
self._language: str = "en"
self._translations: Dict[str, str] = {}
@ -107,7 +140,16 @@ class Translator:
Translated and formatted string. Returns the *key* itself when no
translation is found, so missing keys are always visible.
"""
text = self._translations.get(key) or self._fallback.get(key) or key
text = self._translations.get(key) or self._fallback.get(key)
if text is None:
alias_key = self.KEY_ALIASES.get(key)
if alias_key:
text = self._translations.get(alias_key) or self._fallback.get(alias_key)
if text is None:
text = key
if kwargs:
try:
text = text.format(**kwargs)