Index: ui/base/l10n/l10n_util.cc |
diff --git a/ui/base/l10n/l10n_util.cc b/ui/base/l10n/l10n_util.cc |
index 44d8df505471a3b163fbd0a238fead49b4795b89..7315573fc287b2763d5eed6484c0fb5e43166c4b 100644 |
--- a/ui/base/l10n/l10n_util.cc |
+++ b/ui/base/l10n/l10n_util.cc |
@@ -311,6 +311,11 @@ std::string GetCanonicalLocale(const std::string& locale) { |
return base::i18n::GetCanonicalLocale(locale.c_str()); |
} |
+std::string GetLanguage(const std::string& locale) { |
+ const std::string::size_type hyphen_pos = locale.find('-'); |
+ return std::string(locale, 0, hyphen_pos); |
+} |
+ |
bool CheckAndResolveLocale(const std::string& locale, |
std::string* resolved_locale) { |
#if defined(OS_MACOSX) |
@@ -334,10 +339,9 @@ bool CheckAndResolveLocale(const std::string& locale, |
// does not support but available on Windows. We fall |
// back to en-US in GetApplicationLocale so that it's a not critical, |
// but we can do better. |
- std::string::size_type hyphen_pos = locale.find('-'); |
- std::string lang(locale, 0, hyphen_pos); |
- if (hyphen_pos != std::string::npos && hyphen_pos > 0) { |
- std::string region(locale, hyphen_pos + 1); |
+ const std::string lang(GetLanguage(locale)); |
+ if (lang != locale) { |
+ std::string region(locale, lang.size()); |
std::string tmp_locale(lang); |
// Map es-RR other than es-ES to es-419 (Chrome's Latin American |
// Spanish locale). |