feat(i18n): Implement and refine language selection feature

Introduces a language selection option in settings, allowing users to manually choose an application language or revert to automatic system locale detection. This includes UI updates, settings integration, and improved language detection logic.
This commit is contained in:
loner
2025-10-19 01:29:39 +08:00
parent 80443bb74e
commit 63bd97e76f
3 changed files with 36 additions and 36 deletions
+10 -4
View File
@@ -204,13 +204,19 @@ ColumnLayout {
Layout.fillWidth: true
label: I18n.tr("settings.general.language.select.label")
description: I18n.tr("settings.general.language.select.description")
model: I18n.availableLanguages.map(function(langCode) {
model: [
{ "key": "", "name": I18n.tr("settings.general.language.select.auto-detect") + " (" + I18n.systemDetectedLangCode + ")" }
].concat(I18n.availableLanguages.map(function(langCode) {
return { "key": langCode, "name": langCode }
})
currentKey: Settings.data.general.language !== "" ? Settings.data.general.language : I18n.langCode
}))
currentKey: Settings.data.general.language
onSelected: key => {
Settings.data.general.language = key
I18n.setLanguage(key)
if (key === "") {
I18n.detectLanguage() // Re-detect system language if "Automatic" is selected
} else {
I18n.setLanguage(key) // Set specific language
}
}
}
}