diff --git a/source/Core/Inc/Translation_multi.h b/source/Core/Inc/Translation_multi.h index bd6b2528..4709655c 100644 --- a/source/Core/Inc/Translation_multi.h +++ b/source/Core/Inc/Translation_multi.h @@ -31,6 +31,7 @@ extern FontSection DynamicFontSections[]; struct LanguageMeta { char code[8]; + uint16_t uniqueID; const uint8_t *translation_data; uint16_t translation_size : 15; bool translation_is_compressed : 1; diff --git a/source/Core/LangSupport/lang_multi.cpp b/source/Core/LangSupport/lang_multi.cpp index 13d7cd89..c612d853 100644 --- a/source/Core/LangSupport/lang_multi.cpp +++ b/source/Core/LangSupport/lang_multi.cpp @@ -12,9 +12,11 @@ static uint8_t selectedLangIndex = 255; static void initSelectedLanguageIndex() { if (selectedLangIndex == 255) { - const char *lang = const_cast(systemSettings.uiLanguage); + + const uint16_t wantedLanguageID = getSettingValue(SettingsOptions::UILanguage); + for (size_t i = 0; i < LanguageCount; i++) { - if (strncmp(lang, LanguageMetas[i].code, sizeof(systemSettings.uiLanguage)) == 0) { + if (LanguageMetas[i].uniqueID == wantedLanguageID) { selectedLangIndex = i; return; } @@ -24,10 +26,7 @@ static void initSelectedLanguageIndex() { } } -static void writeSelectedLanguageToSettings() { - char *lang = const_cast(systemSettings.uiLanguage); - strncpy(lang, LanguageMetas[selectedLangIndex].code, sizeof(systemSettings.uiLanguage)); -} +static void writeSelectedLanguageToSettings() { setSettingValue(SettingsOptions::UILanguage, LanguageMetas[selectedLangIndex].uniqueID); } void prepareTranslations() { initSelectedLanguageIndex(); diff --git a/source/Core/Src/Settings.cpp b/source/Core/Src/Settings.cpp index a112a032..9bcd1848 100644 --- a/source/Core/Src/Settings.cpp +++ b/source/Core/Src/Settings.cpp @@ -72,7 +72,7 @@ static const SettingConstants settingsConstants[(int)SettingsOptions::SettingsOp {0, 4, 1, 1}, // HallEffectSensitivity {0, 10, 1, 0}, // AccelMissingWarningCounter {0, 10, 1, 0}, // PDMissingWarningCounter - {0, 0, 0, 0}, // UILanguage + {0, 0xFFFF, 0, 41431 /*EN*/}, // UILanguage {0, 50, 1, 0}, // PDNegTimeout };