diff --git a/Commons/I18n.qml b/Commons/I18n.qml index 20e59297..31319011 100644 --- a/Commons/I18n.qml +++ b/Commons/I18n.qml @@ -170,11 +170,24 @@ Singleton { // Detect user's favorite locale - languages for (var i = 0; i < Qt.locale().uiLanguages.length; i++) { - const userLang = Qt.locale().uiLanguages[i].substring(0, 2) - if (availableLanguages.includes(userLang)) { - setLanguage(userLang) + const fullUserLang = Qt.locale().uiLanguages[i] + + // Try full code match (such as zh CN, en US) + if (availableLanguages.includes(fullUserLang)) { + Logger.log("I18n", `Exact match found: "${fullUserLang}"`) + setLanguage(fullUserLang) return } + + // If full code match fails, try short code matching (such as zh, en) + const shortUserLang = fullUserLang.substring(0, 2) + if (availableLanguages.includes(shortUserLang)) { + Logger.log("I18n", `Short code match found: "${shortUserLang}" from "${fullUserLang}"`) + setLanguage(shortUserLang) + return + } + + Logger.log("I18n", `No match for system language: "${fullUserLang}"`) } // Fallback to first available language (preferably "en" if available)