MCPcopy Create free account
hub / github.com/deathkiller/jazz2-native / TryLoadPreferredLanguage

Method TryLoadPreferredLanguage

Sources/Jazz2/PreferencesCache.cpp:971–1003  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

969 }
970
971 void PreferencesCache::TryLoadPreferredLanguage()
972 {
973 auto& i18n = I18n::Get();
974 auto& resolver = ContentResolver::Get();
975
976 Array<String> languages = I18n::GetPreferredLanguages();
977 for (String language : languages) {
978 if (!language.empty() && language.size() < sizeof(PreferencesCache::Language)) {
979 if (language == "en"_s) {
980 break;
981 }
982 if (i18n.LoadFromFile(fs::CombinePath({ resolver.GetCachePath(), "Translations"_s, String(language + ".mo"_s) })) ||
983 i18n.LoadFromFile(fs::CombinePath({ resolver.GetContentPath(), "Translations"_s, String(language + ".mo"_s) }))) {
984 std::memcpy(PreferencesCache::Language, language.data(), language.size());
985 std::memset(PreferencesCache::Language + language.size(), '\0', sizeof(PreferencesCache::Language) - language.size());
986 break;
987 }
988 }
989
990 StringView baseLanguage = I18n::TryRemoveLanguageSpecifiers(language);
991 if (baseLanguage != language && !baseLanguage.empty() && baseLanguage.size() < sizeof(PreferencesCache::Language)) {
992 if (baseLanguage == "en"_s) {
993 break;
994 }
995 if (i18n.LoadFromFile(fs::CombinePath({ resolver.GetCachePath(), "Translations"_s, String(baseLanguage + ".mo"_s) })) ||
996 i18n.LoadFromFile(fs::CombinePath({ resolver.GetContentPath(), "Translations"_s, String(baseLanguage + ".mo"_s) }))) {
997 std::memcpy(PreferencesCache::Language, baseLanguage.data(), baseLanguage.size());
998 std::memset(PreferencesCache::Language + baseLanguage.size(), '\0', sizeof(PreferencesCache::Language) - baseLanguage.size());
999 break;
1000 }
1001 }
1002 }
1003 }
1004}

Callers

nothing calls this directly

Calls 7

GetCachePathMethod · 0.80
GetContentPathMethod · 0.80
StringClass · 0.50
emptyMethod · 0.45
sizeMethod · 0.45
LoadFromFileMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected