diff --git a/i18n/manuskript.pro b/i18n/manuskript.pro index 0b59b1be..6b8e3a69 100644 --- a/i18n/manuskript.pro +++ b/i18n/manuskript.pro @@ -102,4 +102,4 @@ TRANSLATIONS += manuskript_pt_BR.ts TRANSLATIONS += manuskript_pt_PT.ts TRANSLATIONS += manuskript_ru.ts TRANSLATIONS += manuskript_sv.ts -TRANSLATIONS += manuskript_zh.ts +TRANSLATIONS += manuskript_zh_CN.ts diff --git a/i18n/manuskript_zh.qm b/i18n/manuskript_zh_CN.qm similarity index 100% rename from i18n/manuskript_zh.qm rename to i18n/manuskript_zh_CN.qm diff --git a/i18n/manuskript_zh.ts b/i18n/manuskript_zh_CN.ts similarity index 100% rename from i18n/manuskript_zh.ts rename to i18n/manuskript_zh_CN.ts diff --git a/manuskript/main.py b/manuskript/main.py index a9428b35..24063bfc 100644 --- a/manuskript/main.py +++ b/manuskript/main.py @@ -40,19 +40,31 @@ def prepare(tests=False): appTranslator = QTranslator() # By default: locale - translation = appPath(os.path.join("i18n", "manuskript_{}.qm".format(locale))) + + def extractLocale(filename): + # len("manuskript_") = 13, len(".qm") = 3 + return filename[11:-3] if len(filename) >= 16 else "" + + def tryLoadTranslation(translation, source): + if appTranslator.load(appPath(os.path.join("i18n", translation))): + app.installTranslator(appTranslator) + print(app.tr("Loaded translation from {}: {}.").format(source, translation)) + return True + else: + print(app.tr("Note: No translator found or loaded from {} for locale {}."). + format(source, extractLocale(translation))) + return False # Load translation from settings + translation = "" if settings.contains("applicationTranslation"): - translation = appPath(os.path.join("i18n", settings.value("applicationTranslation"))) + translation = settings.value("applicationTranslation") print("Found translation in settings:", translation) - if appTranslator.load(translation): - app.installTranslator(appTranslator) - print(app.tr("Loaded translation: {}.").format(translation)) - - else: - print(app.tr("Note: No translator found or loaded for locale {}.").format(locale)) + if (translation != "" and not tryLoadTranslation(translation, "settings")) or translation == "": + # load from settings failed or not set, fallback + translation = "manuskript_{}.qm".format(locale) + tryLoadTranslation(translation, "system locale") QIcon.setThemeSearchPaths(QIcon.themeSearchPaths() + [appPath("icons")]) QIcon.setThemeName("NumixMsk") diff --git a/manuskript/settingsWindow.py b/manuskript/settingsWindow.py index 22a16f1f..a8a13a41 100644 --- a/manuskript/settingsWindow.py +++ b/manuskript/settingsWindow.py @@ -86,7 +86,7 @@ class settingsWindow(QWidget, Ui_Settings): tr["Portuguese (Portugal)"] = "manuskript_pt_PT.qm" tr["Russian"] = "manuskript_ru.qm" tr["Svenska"] = "manuskript_sv.qm" - tr["Chinese"] = "manuskript_zh.qm" + tr["Chinese (Simplified)"] = "manuskript_zh_CN.qm" self.translations = tr for name in tr: