diff --git a/gen_translations.py b/gen_translations.py index 71af5da11ce446ef5f5f4c6d541a795c1cb4d1fa..3807fcfbc6dc83662cff774eb73b62adfa711d23 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 bc303ad7bf6f3bbe0c9ca7e92888423b075e4bc0..d73f1bcb741c68ff5bbfff42674ffd4b4378ea81 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()