OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/language_combobox_model.h" | 5 #include "chrome/browser/language_combobox_model.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/i18n/rtl.h" |
8 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
9 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/metrics/user_metrics.h" | 11 #include "chrome/browser/metrics/user_metrics.h" |
11 #include "chrome/browser/pref_service.h" | 12 #include "chrome/browser/pref_service.h" |
12 #include "grit/generated_resources.h" | 13 #include "grit/generated_resources.h" |
13 #include "unicode/uloc.h" | 14 #include "unicode/uloc.h" |
14 | 15 |
15 /////////////////////////////////////////////////////////////////////////////// | 16 /////////////////////////////////////////////////////////////////////////////// |
16 // LanguageList used to enumerate native names corresponding to the | 17 // LanguageList used to enumerate native names corresponding to the |
17 // language code (e.g. English (United States) for en-US) | 18 // language code (e.g. English (United States) for en-US) |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 // If the name is the same in the native language and local language, | 80 // If the name is the same in the native language and local language, |
80 // don't show it twice. | 81 // don't show it twice. |
81 if (it->second.native_name == locale_names_[index]) | 82 if (it->second.native_name == locale_names_[index]) |
82 return it->second.native_name; | 83 return it->second.native_name; |
83 | 84 |
84 // We must add directionality formatting to both the native name and the | 85 // We must add directionality formatting to both the native name and the |
85 // locale name in order to avoid text rendering problems such as misplaced | 86 // locale name in order to avoid text rendering problems such as misplaced |
86 // parentheses or languages appearing in the wrong order. | 87 // parentheses or languages appearing in the wrong order. |
87 std::wstring locale_name_localized; | 88 std::wstring locale_name_localized; |
88 std::wstring locale_name; | 89 std::wstring locale_name; |
89 if (l10n_util::AdjustStringForLocaleDirection(locale_names_[index], | 90 if (base::i18n::AdjustStringForLocaleDirection(locale_names_[index], |
90 &locale_name_localized)) | 91 &locale_name_localized)) |
91 locale_name.assign(locale_name_localized); | 92 locale_name.assign(locale_name_localized); |
92 else | 93 else |
93 locale_name.assign(locale_names_[index]); | 94 locale_name.assign(locale_names_[index]); |
94 | 95 |
95 std::wstring native_name_localized; | 96 std::wstring native_name_localized; |
96 std::wstring native_name; | 97 std::wstring native_name; |
97 if (l10n_util::AdjustStringForLocaleDirection(it->second.native_name, | 98 if (base::i18n::AdjustStringForLocaleDirection(it->second.native_name, |
98 &native_name_localized)) | 99 &native_name_localized)) |
99 native_name.assign(native_name_localized); | 100 native_name.assign(native_name_localized); |
100 else | 101 else |
101 native_name.assign(it->second.native_name); | 102 native_name.assign(it->second.native_name); |
102 | 103 |
103 // We used to have a localizable template here, but none of translators | 104 // We used to have a localizable template here, but none of translators |
104 // changed the format. We also want to switch the order of locale_name | 105 // changed the format. We also want to switch the order of locale_name |
105 // and native_name without going back to translators. | 106 // and native_name without going back to translators. |
106 std::wstring formatted_item; | 107 std::wstring formatted_item; |
107 SStringPrintf(&formatted_item, L"%ls - %ls", locale_name.c_str(), | 108 SStringPrintf(&formatted_item, L"%ls - %ls", locale_name.c_str(), |
108 native_name.c_str()); | 109 native_name.c_str()); |
109 if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) | 110 if (base::i18n::IsRTL()) |
110 // Somehow combo box (even with LAYOUTRTL flag) doesn't get this | 111 // Somehow combo box (even with LAYOUTRTL flag) doesn't get this |
111 // right so we add RTL BDO (U+202E) to set the direction | 112 // right so we add RTL BDO (U+202E) to set the direction |
112 // explicitly. | 113 // explicitly. |
113 formatted_item.insert(0, L"\x202E"); | 114 formatted_item.insert(0, L"\x202E"); |
114 return formatted_item; | 115 return formatted_item; |
115 } | 116 } |
116 | 117 |
117 // Return the locale for the given index. E.g., may return pt-BR. | 118 // Return the locale for the given index. E.g., may return pt-BR. |
118 std::string LanguageList::GetLocaleFromIndex(int index) const { | 119 std::string LanguageList::GetLocaleFromIndex(int index) const { |
119 DCHECK(static_cast<int>(locale_names_.size()) > index); | 120 DCHECK(static_cast<int>(locale_names_.size()) > index); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 local_state = g_browser_process->local_state(); | 163 local_state = g_browser_process->local_state(); |
163 else | 164 else |
164 local_state = profile_->GetPrefs(); | 165 local_state = profile_->GetPrefs(); |
165 | 166 |
166 DCHECK(local_state); | 167 DCHECK(local_state); |
167 const std::string& current_locale = | 168 const std::string& current_locale = |
168 WideToASCII(local_state->GetString(prefs.c_str())); | 169 WideToASCII(local_state->GetString(prefs.c_str())); |
169 | 170 |
170 return GetIndexFromLocale(current_locale); | 171 return GetIndexFromLocale(current_locale); |
171 } | 172 } |
OLD | NEW |