Chromium Code Reviews

Unified Diff: chrome/browser/chromeos/dom_ui/language_options_handler.cc

Issue 3080026: Implement "Display Chrome OS in this language" button. (Closed)
Patch Set: address comments Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: chrome/browser/chromeos/dom_ui/language_options_handler.cc
diff --git a/chrome/browser/chromeos/dom_ui/language_options_handler.cc b/chrome/browser/chromeos/dom_ui/language_options_handler.cc
index 7bbdbb8a644aea7b35a10f027a8e2297e05463dd..e75f7ad1507bf9ef36e85844880e4521b7dfd7d6 100644
--- a/chrome/browser/chromeos/dom_ui/language_options_handler.cc
+++ b/chrome/browser/chromeos/dom_ui/language_options_handler.cc
@@ -5,11 +5,14 @@
#include "chrome/browser/chromeos/dom_ui/language_options_handler.h"
#include "app/l10n_util.h"
-#include "base/values.h"
#include "base/utf_string_conversions.h"
+#include "base/values.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/cros/input_method_library.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "chrome/browser/pref_service.h"
+#include "chrome/common/pref_names.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -44,11 +47,23 @@ void LanguageOptionsHandler::GetLocalizedValues(
l10n_util::GetStringF(
IDS_OPTIONS_SETTINGS_LANGUAGES_DISPLAY_IN_THIS_LANGUAGE,
l10n_util::GetString(IDS_PRODUCT_OS_NAME)));
+ localized_strings->SetString(L"restart_required",
+ l10n_util::GetString(IDS_OPTIONS_RESTART_REQUIRED));
+ // The followigns are resources, rather than local strings.
+ localized_strings->SetString(L"currentUiLanguageCode",
+ UTF8ToWide(g_browser_process->GetApplicationLocale()));
localized_strings->Set(L"inputMethodList", GetInputMethodList());
localized_strings->Set(L"languageList", GetLanguageList());
}
+void LanguageOptionsHandler::RegisterMessages() {
+ DCHECK(dom_ui_);
+ dom_ui_->RegisterMessageCallback("uiLanguageChange",
+ NewCallback(this,
+ &LanguageOptionsHandler::UiLanguageChangeCallback));
+}
+
ListValue* LanguageOptionsHandler::GetInputMethodList() {
using chromeos::CrosLibrary;
@@ -88,3 +103,25 @@ ListValue* LanguageOptionsHandler::GetLanguageList() {
return language_list;
}
+
+void LanguageOptionsHandler::UiLanguageChangeCallback(
+ const Value* value) {
+ if (!value || !value->IsType(Value::TYPE_LIST)) {
+ NOTREACHED();
+ LOG(INFO) << "NOTREACHED";
+ return;
+ }
+ const ListValue* list_value = static_cast<const ListValue*>(value);
+ std::string language_code;
+ if (list_value->GetSize() != 1 ||
+ !list_value->GetString(0, &language_code)) {
+ NOTREACHED();
+ LOG(INFO) << "NOTREACHED";
+ return;
+ }
+ PrefService* prefs = g_browser_process->local_state();
+ prefs->SetString(prefs::kApplicationLocale, language_code);
+ prefs->SavePersistentPrefs();
+ dom_ui_->CallJavascriptFunction(
+ L"options.LanguageOptions.uiLanguageSaved");
+}

Powered by Google App Engine