feat: add language change handling and prompts for restart in 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-03-10 14:38:17 +01:00
parent 7daec731ca
commit a48cc01254
5 changed files with 43 additions and 0 deletions

View file

@ -54,6 +54,10 @@
"dialog.domain_changed.msg": "Die Web-Anwendungs-Domain wurde ge\u00e4ndert\n\nSie haben zu einer anderen Domain gewechselt. F\u00fcr maximale Stabilit\u00e4t und korrekte Authentifizierung sollte die Anwendung neu gestartet werden.\n\nProfil und Cache wurden geleert, aber ein Neustart wird empfohlen.",
"dialog.domain_changed.restart_now": "Jetzt neu starten",
"dialog.domain_changed.restart_later": "Sp\u00e4ter neu starten",
"dialog.language_changed.title": "Sprache ge\u00e4ndert",
"dialog.language_changed.msg": "Die Spracheinstellung wurde aktualisiert. Starten Sie jetzt neu, um die ausgew\u00e4hlte Sprache \u00fcberall anzuwenden.",
"dialog.language_changed.restart_now": "Jetzt neu starten",
"dialog.language_changed.restart_later": "Sp\u00e4ter neu starten",
"dialog.restart_failed.title": "Neustart fehlgeschlagen",
"dialog.restart_failed.msg": "Die Anwendung konnte nicht automatisch neu gestartet werden:\n\n{error}\n\nBitte starten Sie manuell neu.",
"dialog.update_timeout.title": "Zeitüberschreitung bei der Update-Pr\u00fcfung",
@ -109,6 +113,7 @@
"settings.profiles.export_btn": "Konfiguration exportieren",
"settings.profiles.import_btn": "Konfiguration importieren",
"settings.general.language_label": "Sprache:",
"settings.general.language_auto": "Systemstandard (Auto)",
"settings.general.language_restart_note": "Sprach\u00e4nderung wirksam nach Neustart.",
"settings.add_mapping.url_title": "URL-Zuordnung hinzuf\u00fcgen",
"settings.add_mapping.url_prompt": "Azure Blob Storage URL-Pr\u00e4fix eingeben:\n(z.B. https://myblob.blob.core.windows.net/container/)",

View file

@ -54,6 +54,10 @@
"dialog.domain_changed.msg": "Web Application Domain Has Changed\n\nYou've switched to a different domain. For maximum stability and to ensure proper authentication, the application should be restarted.\n\nThe profile and cache have been cleared, but we recommend restarting.",
"dialog.domain_changed.restart_now": "Restart Now",
"dialog.domain_changed.restart_later": "Restart Later",
"dialog.language_changed.title": "Language Changed",
"dialog.language_changed.msg": "The language setting was updated. Restart now to apply the selected language everywhere.",
"dialog.language_changed.restart_now": "Restart Now",
"dialog.language_changed.restart_later": "Restart Later",
"dialog.restart_failed.title": "Restart Failed",
"dialog.restart_failed.msg": "Could not automatically restart the application:\n\n{error}\n\nPlease restart manually.",
"dialog.update_timeout.title": "Update Check Timeout",
@ -109,6 +113,7 @@
"settings.profiles.export_btn": "Export Configuration",
"settings.profiles.import_btn": "Import Configuration",
"settings.general.language_label": "Language:",
"settings.general.language_auto": "System Default (Auto)",
"settings.general.language_restart_note": "Language change takes effect after restart.",
"settings.add_mapping.url_title": "Add URL Mapping",
"settings.add_mapping.url_prompt": "Enter Azure Blob Storage URL prefix:\n(e.g., https://myblob.blob.core.windows.net/container/)",

View file

@ -54,6 +54,10 @@
"dialog.domain_changed.msg": "Le domaine de l'application web a chang\u00e9\n\nVous avez chang\u00e9 de domaine. Pour une stabilit\u00e9 maximale et une authentification correcte, il est recommand\u00e9 de red\u00e9marrer l'application.\n\nLe profil et le cache ont \u00e9t\u00e9 vid\u00e9s, mais un red\u00e9marrage est recommand\u00e9.",
"dialog.domain_changed.restart_now": "Red\u00e9marrer maintenant",
"dialog.domain_changed.restart_later": "Red\u00e9marrer plus tard",
"dialog.language_changed.title": "Langue modifi\u00e9e",
"dialog.language_changed.msg": "Le param\u00e8tre de langue a \u00e9t\u00e9 mis \u00e0 jour. Red\u00e9marrez maintenant pour appliquer la langue s\u00e9lectionn\u00e9e partout.",
"dialog.language_changed.restart_now": "Red\u00e9marrer maintenant",
"dialog.language_changed.restart_later": "Red\u00e9marrer plus tard",
"dialog.restart_failed.title": "\u00c9chec du red\u00e9marrage",
"dialog.restart_failed.msg": "Impossible de red\u00e9marrer automatiquement l'application\u00a0:\n\n{error}\n\nVeuillez red\u00e9marrer manuellement.",
"dialog.update_timeout.title": "D\u00e9lai de v\u00e9rification des mises \u00e0 jour d\u00e9pass\u00e9",
@ -109,6 +113,7 @@
"settings.profiles.export_btn": "Exporter la configuration",
"settings.profiles.import_btn": "Importer la configuration",
"settings.general.language_label": "Langue\u00a0:",
"settings.general.language_auto": "Par d\u00e9faut du syst\u00e8me (Auto)",
"settings.general.language_restart_note": "Le changement de langue prend effet apr\u00e8s red\u00e9marrage.",
"settings.add_mapping.url_title": "Ajouter un mappage d'URL",
"settings.add_mapping.url_prompt": "Entrez le pr\u00e9fixe URL Azure Blob Storage\u00a0:\n(p.ex. https://myblob.blob.core.windows.net/container/)",

View file

@ -1662,6 +1662,7 @@ class MainWindow(QMainWindow):
# Store current URL before opening dialog
old_webapp_url = self.config.webapp_url
old_language = self.config.language
# Show dialog
dialog = SettingsDialog(self.config, self)
@ -1669,6 +1670,7 @@ class MainWindow(QMainWindow):
# Check if webapp URL changed
new_webapp_url = self.config.webapp_url
language_changed = old_language != self.config.language
if old_webapp_url != new_webapp_url:
logger.info(f"Web application URL changed: {old_webapp_url}{new_webapp_url}")
@ -1685,6 +1687,10 @@ class MainWindow(QMainWindow):
self.web_view.clear_cache_and_cookies()
QTimer.singleShot(100, self._navigate_home)
if language_changed:
logger.info(f"Language changed: {old_language}{self.config.language}")
self._handle_language_change_restart()
def _check_domain_changed(self, old_url: str, new_url: str) -> bool:
"""Check if the domain/host has changed between two URLs.
@ -1745,6 +1751,27 @@ class MainWindow(QMainWindow):
self.web_view.clear_cache_and_cookies()
self._navigate_home()
def _handle_language_change_restart(self) -> None:
"""Handle language change by prompting for an optional restart."""
from PySide6.QtWidgets import QMessageBox
msg = QMessageBox(self)
msg.setWindowTitle(tr("dialog.language_changed.title"))
msg.setIcon(QMessageBox.Icon.Information)
msg.setText(tr("dialog.language_changed.msg"))
restart_now_btn = msg.addButton(
tr("dialog.language_changed.restart_now"), QMessageBox.ButtonRole.AcceptRole
)
msg.addButton(
tr("dialog.language_changed.restart_later"), QMessageBox.ButtonRole.RejectRole
)
msg.exec()
if msg.clickedButton() == restart_now_btn:
self._restart_application()
def _restart_application(self) -> None:
"""Restart the application automatically.

View file

@ -129,6 +129,7 @@ class SettingsDialog(QDialog):
lang_layout.addWidget(QLabel(tr("settings.general.language_label")))
self.language_combo = QComboBox()
self.language_combo.addItem(tr("settings.general.language_auto"), "auto")
available = get_available_languages()
current_lang = self.config.language
for code, name in available.items():