From a9da67e000c497adfa8bcd824a7fa002f1f5f343 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Mon, 30 May 2022 08:21:57 +0200 Subject: [PATCH] PICARD-2493: Ensure translation domains get used even if some translation files are missing --- picard/i18n.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/picard/i18n.py b/picard/i18n.py index d082a8b25..b28aff861 100644 --- a/picard/i18n.py +++ b/picard/i18n.py @@ -80,6 +80,15 @@ def _try_set_locale(language): return language # Just return the language, so at least UI translation works +def _load_translation(domain, localedir, logger): + try: + logger("Loading gettext translation for %s, localedir=%r", domain, localedir) + return gettext.translation(domain, localedir) + except OSError as e: + logger(e) + return gettext.NullTranslations() + + def setup_gettext(localedir, ui_language=None, logger=None): """Setup locales, load translations, install gettext functions.""" if not logger: @@ -95,18 +104,10 @@ def setup_gettext(localedir, ui_language=None, logger=None): os.environ['LANGUAGE'] = os.environ['LANG'] = current_locale QLocale.setDefault(QLocale(current_locale)) logger("Using locale %r", current_locale) - try: - logger("Loading gettext translation, localedir=%r", localedir) - trans = gettext.translation("picard", localedir) - logger("Loading gettext translation (picard-countries), localedir=%r", localedir) - trans_countries = gettext.translation("picard-countries", localedir) - logger("Loading gettext translation (picard-attributes), localedir=%r", localedir) - trans_attributes = gettext.translation("picard-attributes", localedir) - except OSError as e: - logger(e) - trans = gettext.NullTranslations() - trans_countries = gettext.NullTranslations() - trans_attributes = gettext.NullTranslations() + + trans = _load_translation('picard', localedir, logger) + trans_countries = _load_translation('picard-countries', localedir, logger) + trans_attributes = _load_translation('picard-attributes', localedir, logger) trans.install(['ngettext']) builtins.__dict__['gettext_countries'] = trans_countries.gettext