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

@ -132,6 +132,34 @@
"settings.error.select_mapping": "Bitte w\u00e4hlen Sie eine Zuordnung zur Bearbeitung aus", "settings.error.select_mapping": "Bitte w\u00e4hlen Sie eine Zuordnung zur Bearbeitung aus",
"settings.error.select_profile_load": "Bitte w\u00e4hlen Sie ein Profil zum Laden aus", "settings.error.select_profile_load": "Bitte w\u00e4hlen Sie ein Profil zum Laden aus",
"settings.error.select_profile_delete": "Bitte w\u00e4hlen Sie ein Profil zum L\u00f6schen aus", "settings.error.select_profile_delete": "Bitte w\u00e4hlen Sie ein Profil zum L\u00f6schen aus",
"settings.web_source.url_label": "Webanwendungs-URL:",
"settings.web_source.open_btn": "\u00d6ffnen",
"settings.web_source.url_mappings_label": "URL-Zuordnungen (Azure Blob Storage \u2192 Lokale Pfade):",
"settings.web_source.col_url_prefix": "URL-Pr\u00e4fix",
"settings.web_source.col_local_path": "Lokaler Pfad",
"settings.web_source.add_mapping_btn": "Zuordnung hinzuf\u00fcgen",
"settings.web_source.edit_mapping_btn": "Auswahl bearbeiten",
"settings.web_source.remove_mapping_btn": "Auswahl entfernen",
"settings.web_source.add_mapping_title": "URL-Zuordnung hinzuf\u00fcgen",
"settings.web_source.add_mapping_url_prompt": "Azure Blob Storage URL-Pr\u00e4fix eingeben:\n(z.B. https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "Lokalen Dateisystempfad eingeben:\n(z.B. C:\\Freigabe oder /mnt/share)",
"settings.web_source.edit_mapping_title": "URL-Zuordnung bearbeiten",
"settings.web_source.edit_mapping_url_prompt": "Azure Blob Storage URL-Pr\u00e4fix eingeben:",
"settings.web_source.edit_mapping_path_prompt": "Lokalen Dateisystempfad eingeben:",
"settings.web_source.select_mapping_to_edit": "Bitte w\u00e4hlen Sie eine Zuordnung zur Bearbeitung aus",
"settings.logging.level_label": "Protokollstufe:",
"settings.logging.file_label": "Protokolldatei (optional):",
"settings.logging.browse_btn": "Durchsuchen...",
"settings.logging.select_file_title": "Protokolldatei ausw\u00e4hlen",
"settings.paths.select_dir_title": "Verzeichnis ausw\u00e4hlen",
"settings.urls.add_title": "URL hinzuf\u00fcgen",
"settings.urls.add_prompt": "URL-Muster eingeben (z.B. http://example.com oder http://*.example.com):",
"settings.profiles.save_title": "Profil speichern",
"settings.profiles.save_prompt": "Profilnamen eingeben (z.B. Arbeit, Privat):",
"settings.profiles.select_to_load": "Bitte w\u00e4hlen Sie ein Profil zum Laden aus",
"settings.profiles.select_to_delete": "Bitte w\u00e4hlen Sie ein Profil zum L\u00f6schen aus",
"settings.profiles.export_title": "Konfiguration exportieren",
"settings.profiles.import_title": "Konfiguration importieren",
"update.checking.title": "Update-Pr\u00fcfung", "update.checking.title": "Update-Pr\u00fcfung",
"update.checking.label": "Suche nach Updates...", "update.checking.label": "Suche nach Updates...",

View file

@ -132,6 +132,34 @@
"settings.error.select_mapping": "Please select a mapping to edit", "settings.error.select_mapping": "Please select a mapping to edit",
"settings.error.select_profile_load": "Please select a profile to load", "settings.error.select_profile_load": "Please select a profile to load",
"settings.error.select_profile_delete": "Please select a profile to delete", "settings.error.select_profile_delete": "Please select a profile to delete",
"settings.web_source.url_label": "Web Application URL:",
"settings.web_source.open_btn": "Open",
"settings.web_source.url_mappings_label": "URL Mappings (Azure Blob Storage \u2192 Local Paths):",
"settings.web_source.col_url_prefix": "URL Prefix",
"settings.web_source.col_local_path": "Local Path",
"settings.web_source.add_mapping_btn": "Add Mapping",
"settings.web_source.edit_mapping_btn": "Edit Selected",
"settings.web_source.remove_mapping_btn": "Remove Selected",
"settings.web_source.add_mapping_title": "Add URL Mapping",
"settings.web_source.add_mapping_url_prompt": "Enter Azure Blob Storage URL prefix:\n(e.g., https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "Enter local file system path:\n(e.g., C:\\Share or /mnt/share)",
"settings.web_source.edit_mapping_title": "Edit URL Mapping",
"settings.web_source.edit_mapping_url_prompt": "Enter Azure Blob Storage URL prefix:",
"settings.web_source.edit_mapping_path_prompt": "Enter local file system path:",
"settings.web_source.select_mapping_to_edit": "Please select a mapping to edit",
"settings.logging.level_label": "Log Level:",
"settings.logging.file_label": "Log File (optional):",
"settings.logging.browse_btn": "Browse...",
"settings.logging.select_file_title": "Select Log File",
"settings.paths.select_dir_title": "Select Directory to Allow",
"settings.urls.add_title": "Add URL",
"settings.urls.add_prompt": "Enter URL pattern (e.g., http://example.com or http://*.example.com):",
"settings.profiles.save_title": "Save Profile",
"settings.profiles.save_prompt": "Enter profile name (e.g., work, personal):",
"settings.profiles.select_to_load": "Please select a profile to load",
"settings.profiles.select_to_delete": "Please select a profile to delete",
"settings.profiles.export_title": "Export Configuration",
"settings.profiles.import_title": "Import Configuration",
"update.checking.title": "Checking for Updates", "update.checking.title": "Checking for Updates",
"update.checking.label": "Checking for updates...", "update.checking.label": "Checking for updates...",

View file

@ -132,6 +132,34 @@
"settings.error.select_mapping": "Veuillez s\u00e9lectionner un mappage \u00e0 modifier", "settings.error.select_mapping": "Veuillez s\u00e9lectionner un mappage \u00e0 modifier",
"settings.error.select_profile_load": "Veuillez s\u00e9lectionner un profil \u00e0 charger", "settings.error.select_profile_load": "Veuillez s\u00e9lectionner un profil \u00e0 charger",
"settings.error.select_profile_delete": "Veuillez s\u00e9lectionner un profil \u00e0 supprimer", "settings.error.select_profile_delete": "Veuillez s\u00e9lectionner un profil \u00e0 supprimer",
"settings.web_source.url_label": "URL de l'application web\u00a0:",
"settings.web_source.open_btn": "Ouvrir",
"settings.web_source.url_mappings_label": "Mappages d'URL (Azure Blob Storage \u2192 Chemins locaux)\u00a0:",
"settings.web_source.col_url_prefix": "Pr\u00e9fixe URL",
"settings.web_source.col_local_path": "Chemin local",
"settings.web_source.add_mapping_btn": "Ajouter un mappage",
"settings.web_source.edit_mapping_btn": "Modifier la s\u00e9lection",
"settings.web_source.remove_mapping_btn": "Supprimer la s\u00e9lection",
"settings.web_source.add_mapping_title": "Ajouter un mappage d'URL",
"settings.web_source.add_mapping_url_prompt": "Entrez le pr\u00e9fixe URL Azure Blob Storage\u00a0:\n(p.ex. https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "Entrez le chemin du syst\u00e8me de fichiers local\u00a0:\n(p.ex. C:\\Partage ou /mnt/partage)",
"settings.web_source.edit_mapping_title": "Modifier le mappage d'URL",
"settings.web_source.edit_mapping_url_prompt": "Entrez le pr\u00e9fixe URL Azure Blob Storage\u00a0:",
"settings.web_source.edit_mapping_path_prompt": "Entrez le chemin du syst\u00e8me de fichiers local\u00a0:",
"settings.web_source.select_mapping_to_edit": "Veuillez s\u00e9lectionner un mappage \u00e0 modifier",
"settings.logging.level_label": "Niveau de journalisation\u00a0:",
"settings.logging.file_label": "Fichier journal (facultatif)\u00a0:",
"settings.logging.browse_btn": "Parcourir...",
"settings.logging.select_file_title": "S\u00e9lectionner le fichier journal",
"settings.paths.select_dir_title": "S\u00e9lectionner un r\u00e9pertoire autoris\u00e9",
"settings.urls.add_title": "Ajouter une URL",
"settings.urls.add_prompt": "Entrez le mod\u00e8le d'URL (p.ex. http://example.com ou http://*.example.com)\u00a0:",
"settings.profiles.save_title": "Enregistrer le profil",
"settings.profiles.save_prompt": "Entrez le nom du profil (p.ex. travail, personnel)\u00a0:",
"settings.profiles.select_to_load": "Veuillez s\u00e9lectionner un profil \u00e0 charger",
"settings.profiles.select_to_delete": "Veuillez s\u00e9lectionner un profil \u00e0 supprimer",
"settings.profiles.export_title": "Exporter la configuration",
"settings.profiles.import_title": "Importer la configuration",
"update.checking.title": "V\u00e9rification des mises \u00e0 jour", "update.checking.title": "V\u00e9rification des mises \u00e0 jour",
"update.checking.label": "Recherche de mises \u00e0 jour...", "update.checking.label": "Recherche de mises \u00e0 jour...",

View file

@ -132,6 +132,34 @@
"settings.error.select_mapping": "Seleziona una mappatura da modificare", "settings.error.select_mapping": "Seleziona una mappatura da modificare",
"settings.error.select_profile_load": "Seleziona un profilo da caricare", "settings.error.select_profile_load": "Seleziona un profilo da caricare",
"settings.error.select_profile_delete": "Seleziona un profilo da eliminare", "settings.error.select_profile_delete": "Seleziona un profilo da eliminare",
"settings.web_source.url_label": "URL applicazione web:",
"settings.web_source.open_btn": "Apri",
"settings.web_source.url_mappings_label": "Mappature URL (Azure Blob Storage \u2192 Percorsi locali):",
"settings.web_source.col_url_prefix": "Prefisso URL",
"settings.web_source.col_local_path": "Percorso locale",
"settings.web_source.add_mapping_btn": "Aggiungi mappatura",
"settings.web_source.edit_mapping_btn": "Modifica selezionato",
"settings.web_source.remove_mapping_btn": "Rimuovi selezionato",
"settings.web_source.add_mapping_title": "Aggiungi mappatura URL",
"settings.web_source.add_mapping_url_prompt": "Inserisci prefisso URL Azure Blob Storage:\n(es. https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "Inserisci percorso file system locale:\n(es. C:\\Share o /mnt/share)",
"settings.web_source.edit_mapping_title": "Modifica mappatura URL",
"settings.web_source.edit_mapping_url_prompt": "Inserisci prefisso URL Azure Blob Storage:",
"settings.web_source.edit_mapping_path_prompt": "Inserisci percorso file system locale:",
"settings.web_source.select_mapping_to_edit": "Seleziona una mappatura da modificare",
"settings.logging.level_label": "Livello log:",
"settings.logging.file_label": "File log (opzionale):",
"settings.logging.browse_btn": "Sfoglia...",
"settings.logging.select_file_title": "Seleziona file di log",
"settings.paths.select_dir_title": "Seleziona directory da consentire",
"settings.urls.add_title": "Aggiungi URL",
"settings.urls.add_prompt": "Inserisci pattern URL (es. http://example.com o http://*.example.com):",
"settings.profiles.save_title": "Salva profilo",
"settings.profiles.save_prompt": "Inserisci nome profilo (es. lavoro, personale):",
"settings.profiles.select_to_load": "Seleziona un profilo da caricare",
"settings.profiles.select_to_delete": "Seleziona un profilo da eliminare",
"settings.profiles.export_title": "Esporta configurazione",
"settings.profiles.import_title": "Importa configurazione",
"update.checking.title": "Controllo aggiornamenti", "update.checking.title": "Controllo aggiornamenti",
"update.checking.label": "Controllo aggiornamenti...", "update.checking.label": "Controllo aggiornamenti...",

View file

@ -132,6 +132,34 @@
"settings.error.select_mapping": "Выберите сопоставление для редактирования", "settings.error.select_mapping": "Выберите сопоставление для редактирования",
"settings.error.select_profile_load": "Выберите профиль для загрузки", "settings.error.select_profile_load": "Выберите профиль для загрузки",
"settings.error.select_profile_delete": "Выберите профиль для удаления", "settings.error.select_profile_delete": "Выберите профиль для удаления",
"settings.web_source.url_label": "URL веб-приложения:",
"settings.web_source.open_btn": "Открыть",
"settings.web_source.url_mappings_label": "Сопоставления URL (Azure Blob Storage → локальные пути):",
"settings.web_source.col_url_prefix": "Префикс URL",
"settings.web_source.col_local_path": "Локальный путь",
"settings.web_source.add_mapping_btn": "Добавить сопоставление",
"settings.web_source.edit_mapping_btn": "Изменить выбранное",
"settings.web_source.remove_mapping_btn": "Удалить выбранное",
"settings.web_source.add_mapping_title": "Добавить сопоставление URL",
"settings.web_source.add_mapping_url_prompt": "Введите префикс URL Azure Blob Storage:\n(например, https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "Введите локальный путь файловой системы:\n(например, C:\\Share или /mnt/share)",
"settings.web_source.edit_mapping_title": "Изменить сопоставление URL",
"settings.web_source.edit_mapping_url_prompt": "Введите префикс URL Azure Blob Storage:",
"settings.web_source.edit_mapping_path_prompt": "Введите локальный путь файловой системы:",
"settings.web_source.select_mapping_to_edit": "Выберите сопоставление для редактирования",
"settings.logging.level_label": "Уровень логирования:",
"settings.logging.file_label": "Файл журнала (необязательно):",
"settings.logging.browse_btn": "Обзор...",
"settings.logging.select_file_title": "Выберите файл журнала",
"settings.paths.select_dir_title": "Выберите разрешенную папку",
"settings.urls.add_title": "Добавить URL",
"settings.urls.add_prompt": "Введите шаблон URL (например, http://example.com или http://*.example.com):",
"settings.profiles.save_title": "Сохранить профиль",
"settings.profiles.save_prompt": "Введите имя профиля (например, работа, личный):",
"settings.profiles.select_to_load": "Выберите профиль для загрузки",
"settings.profiles.select_to_delete": "Выберите профиль для удаления",
"settings.profiles.export_title": "Экспорт конфигурации",
"settings.profiles.import_title": "Импорт конфигурации",
"update.checking.title": "Проверка обновлений", "update.checking.title": "Проверка обновлений",
"update.checking.label": "Проверка обновлений...", "update.checking.label": "Проверка обновлений...",

View file

@ -132,6 +132,34 @@
"settings.error.select_mapping": "请选择要编辑的映射", "settings.error.select_mapping": "请选择要编辑的映射",
"settings.error.select_profile_load": "请选择要加载的档案", "settings.error.select_profile_load": "请选择要加载的档案",
"settings.error.select_profile_delete": "请选择要删除的档案", "settings.error.select_profile_delete": "请选择要删除的档案",
"settings.web_source.url_label": "Web 应用 URL:",
"settings.web_source.open_btn": "打开",
"settings.web_source.url_mappings_label": "URL 映射Azure Blob Storage → 本地路径):",
"settings.web_source.col_url_prefix": "URL 前缀",
"settings.web_source.col_local_path": "本地路径",
"settings.web_source.add_mapping_btn": "添加映射",
"settings.web_source.edit_mapping_btn": "编辑所选",
"settings.web_source.remove_mapping_btn": "删除所选",
"settings.web_source.add_mapping_title": "添加 URL 映射",
"settings.web_source.add_mapping_url_prompt": "输入 Azure Blob Storage URL 前缀:\n(例如: https://myblob.blob.core.windows.net/container/)",
"settings.web_source.add_mapping_path_prompt": "输入本地文件系统路径:\n(例如: C:\\Share 或 /mnt/share)",
"settings.web_source.edit_mapping_title": "编辑 URL 映射",
"settings.web_source.edit_mapping_url_prompt": "输入 Azure Blob Storage URL 前缀:",
"settings.web_source.edit_mapping_path_prompt": "输入本地文件系统路径:",
"settings.web_source.select_mapping_to_edit": "请选择要编辑的映射",
"settings.logging.level_label": "日志级别:",
"settings.logging.file_label": "日志文件(可选):",
"settings.logging.browse_btn": "浏览...",
"settings.logging.select_file_title": "选择日志文件",
"settings.paths.select_dir_title": "选择允许目录",
"settings.urls.add_title": "添加 URL",
"settings.urls.add_prompt": "输入 URL 模式(例如: http://example.com 或 http://*.example.com:",
"settings.profiles.save_title": "保存档案",
"settings.profiles.save_prompt": "输入配置档案名称(例如: 工作, 个人):",
"settings.profiles.select_to_load": "请选择要加载的档案",
"settings.profiles.select_to_delete": "请选择要删除的档案",
"settings.profiles.export_title": "导出配置",
"settings.profiles.import_title": "导入配置",
"update.checking.title": "检查更新", "update.checking.title": "检查更新",
"update.checking.label": "正在检查更新...", "update.checking.label": "正在检查更新...",

View file

@ -51,6 +51,39 @@ class Translator:
"zh": "中文", "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: def __init__(self) -> None:
self._language: str = "en" self._language: str = "en"
self._translations: Dict[str, str] = {} self._translations: Dict[str, str] = {}
@ -107,7 +140,16 @@ class Translator:
Translated and formatted string. Returns the *key* itself when no Translated and formatted string. Returns the *key* itself when no
translation is found, so missing keys are always visible. 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: if kwargs:
try: try:
text = text.format(**kwargs) text = text.format(**kwargs)

View file

@ -58,3 +58,30 @@ class TestI18n:
available = i18n.get_available_languages() available = i18n.get_available_languages()
assert "en" in available assert "en" in available
assert "fr" in available assert "fr" in available
def test_renamed_settings_keys_fall_back_to_legacy_aliases(self, tmp_path: Path):
"""Renamed keys should resolve via alias mapping to existing translations."""
translations = tmp_path / "translations"
translations.mkdir(parents=True, exist_ok=True)
(translations / "en.json").write_text(
json.dumps(
{
"settings.log_file.browse_btn": "Browse...",
}
),
encoding="utf-8",
)
(translations / "de.json").write_text(
json.dumps(
{
"settings.log_file.browse_btn": "Durchsuchen...",
}
),
encoding="utf-8",
)
i18n._translator = i18n.Translator() # type: ignore[attr-defined]
i18n.initialize("de", translations)
assert i18n.tr("settings.logging.browse_btn") == "Durchsuchen..."