mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-15 02:12:29 +12:00
fix #428: zh translation suffix doesn't match system locale; new behavior: load translation from settings first
This commit is contained in:
parent
cbf35fa373
commit
3d6080f3c0
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue