From d676999f26e32a5ef72d88a738d34951833a54bb Mon Sep 17 00:00:00 2001 From: vtexier <vit@free.fr> Date: Fri, 6 Mar 2020 10:37:29 +0100 Subject: [PATCH] [fix] fix Qt standardButtons translation run gen_translations.py after this commit --- gen_translations.py | 5 +++++ src/sakia/app.py | 26 ++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/gen_translations.py b/gen_translations.py index 71af5da1..3807fcfb 100644 --- a/gen_translations.py +++ b/gen_translations.py @@ -64,4 +64,9 @@ def build_resources(): prepare_qm() +# add Qt standardButtons qm file +# This file must be copied from Qt libs in the res/i18n/qm folder of the project +qtbase_filename = "qtbase_fr.qm" +if os.path.exists(os.path.join(qm, qtbase_filename)): + qm_shortnames.append(qtbase_filename) build_resources() diff --git a/src/sakia/app.py b/src/sakia/app.py index bc303ad7..d73f1bcb 100644 --- a/src/sakia/app.py +++ b/src/sakia/app.py @@ -5,7 +5,7 @@ import socket import sakia.i18n_rc import async_timeout import aiohttp -from PyQt5.QtCore import QObject, pyqtSignal, QTranslator, QCoreApplication, QLocale, Qt +from PyQt5.QtCore import QObject, pyqtSignal, QTranslator, QCoreApplication, QLocale, Qt, QFile from . import __version__ from .options import SakiaOptions from sakia.data.connectors import BmaConnector @@ -89,6 +89,7 @@ class Application(QObject): _logger = attr.ib(default=attr.Factory(lambda: logging.getLogger("sakia"))) available_version = attr.ib(init=False) _translator = attr.ib(init=False) + _qt_translator = attr.ib(init=False) def __attrs_post_init__(self): super().__init__() @@ -224,13 +225,26 @@ class Application(QObject): self._translator = QTranslator(self.qapp) if locale == "en": QCoreApplication.installTranslator(self._translator) - elif self._translator.load(":/i18n/{0}".format(locale)): + else: + # load chosen language + filepath = ":/i18n/{0}".format(locale) + if not QFile.exists(filepath): + self._logger.debug("File not found: {0}".format(filepath)) + self._translator.load(filepath) if QCoreApplication.installTranslator(self._translator): - self._logger.debug("Loaded i18n/{0}".format(locale)) + self._logger.debug("Loaded {0}".format(filepath)) else: - self._logger.debug("Couldn't load translation") - else: - self._logger.debug("Couldn't load i18n/{0}".format(locale)) + self._logger.debug("Couldn't load {0}".format(filepath)) + # load standardButtons Qt translation + filepath = ":/i18n/qtbase_{0}".format(locale) + if not QFile.exists(filepath): + self._logger.debug("File not found: {0}".format(filepath)) + self._qt_translator = QTranslator(self.qapp) + self._qt_translator.load(filepath) + if QCoreApplication.installTranslator(self._qt_translator): + self._logger.debug("Loaded {0}".format(filepath)) + else: + self._logger.debug("Couldn't load {0}".format(filepath)) def start_coroutines(self): self.network_service.start_coroutines() -- GitLab