Skip to content

Commit 7ffeb87

Browse files
authored
Pass only a preferred language to the engine (#166)
* Pass only a preferred language to the engine * Log the current language
1 parent c174826 commit 7ffeb87

File tree

1 file changed

+30
-39
lines changed

1 file changed

+30
-39
lines changed

shell/platform/tizen/system_utils_tizen.cc

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,48 +20,39 @@ std::vector<LanguageInfo> GetPreferredLanguageInfo() {
2020
FT_LOG(Error) << "i18n_ulocale_get_default() failed.";
2121
return languages;
2222
}
23-
std::string preferred_locale(locale);
24-
size_t codeset_pos = preferred_locale.find(".");
25-
preferred_locale = preferred_locale.substr(0, codeset_pos);
26-
27-
int32_t count = i18n_ulocale_count_available();
28-
languages.reserve(count);
29-
for (int i = 0; i < count; i++) {
30-
LanguageInfo info;
31-
int ret;
32-
char buffer[128] = {0};
33-
int32_t size;
34-
35-
// The "language" field is required.
36-
locale = i18n_ulocale_get_available(i);
37-
ret = i18n_ulocale_get_language(locale, buffer, sizeof(buffer), &size);
38-
if (ret != I18N_ERROR_NONE || size == 0) {
39-
continue;
40-
}
41-
info.language = std::string(buffer, size);
42-
43-
// "country", "script", and "variant" are optional.
44-
size = i18n_ulocale_get_country(locale, buffer, sizeof(buffer), &ret);
45-
if (ret == I18N_ERROR_NONE && size > 0) {
46-
info.country = std::string(buffer, size);
47-
}
48-
size = i18n_ulocale_get_script(locale, buffer, sizeof(buffer));
49-
if (size > 0) {
50-
info.script = std::string(buffer, size);
51-
}
52-
size = i18n_ulocale_get_variant(locale, buffer, sizeof(buffer));
53-
if (size > 0) {
54-
info.variant = std::string(buffer, size);
55-
}
23+
std::string locale_string(locale);
24+
size_t codeset_pos = locale_string.find(".");
25+
locale_string = locale_string.substr(0, codeset_pos);
26+
locale = locale_string.c_str();
27+
28+
LanguageInfo info;
29+
char buffer[128] = {0};
30+
int32_t size;
31+
32+
// The "language" field is required.
33+
ret = i18n_ulocale_get_language(locale, buffer, sizeof(buffer), &size);
34+
if (ret != I18N_ERROR_NONE || size == 0) {
35+
FT_LOG(Error) << "i18n_ulocale_get_language() failed.";
36+
return languages;
37+
}
38+
info.language = std::string(buffer, size);
5639

57-
if (preferred_locale.compare(locale) == 0) {
58-
languages.insert(languages.begin(), info);
59-
} else {
60-
languages.push_back(info);
61-
}
40+
// "country", "script", and "variant" are optional.
41+
size = i18n_ulocale_get_country(locale, buffer, sizeof(buffer), &ret);
42+
if (ret == I18N_ERROR_NONE && size > 0) {
43+
info.country = std::string(buffer, size);
44+
}
45+
size = i18n_ulocale_get_script(locale, buffer, sizeof(buffer));
46+
if (size > 0) {
47+
info.script = std::string(buffer, size);
48+
}
49+
size = i18n_ulocale_get_variant(locale, buffer, sizeof(buffer));
50+
if (size > 0) {
51+
info.variant = std::string(buffer, size);
6252
}
63-
FT_LOG(Info) << "Found " << languages.size() << " locales.";
53+
FT_LOG(Info) << "Device language: " << info.language << "_" << info.country;
6454

55+
languages.push_back(info);
6556
return languages;
6657
}
6758

0 commit comments

Comments
 (0)