fix #428: zh translation suffix doesn't match system locale; new behavior: load translation from settings first

This commit is contained in:
LingSamuel 2018-12-07 15:32:22 +08:00 committed by Curtis Gedak
parent cbf35fa373
commit 3d6080f3c0
5 changed files with 22 additions and 10 deletions

View file

@ -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

View file

@ -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")

View file

@ -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: