diff options
author | hajimehoshi@chromium.org <hajimehoshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-26 12:18:54 +0000 |
---|---|---|
committer | hajimehoshi@chromium.org <hajimehoshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-26 12:18:54 +0000 |
commit | 70fdfb9e7d51896ed32c26d22e4ab7544b7d2c73 (patch) | |
tree | 8678f5f5b8b4342a5d5fb0230525a6c9ea9e0f28 /chrome/browser/translate/translate_accept_languages.cc | |
parent | 82937ed28f8548241243a828ae68f90125c95bff (diff) | |
download | chromium_src-70fdfb9e7d51896ed32c26d22e4ab7544b7d2c73.zip chromium_src-70fdfb9e7d51896ed32c26d22e4ab7544b7d2c73.tar.gz chromium_src-70fdfb9e7d51896ed32c26d22e4ab7544b7d2c73.tar.bz2 |
Translate: Have TranslateManager::IsAcceptLanguage("en") return true if English is an Accept language
If a language was listed as Accept languages, webpages in the language were not translated. English language is listed by default, and to avoid bothering users, TranslateManager::IsAcceptLanguage always returned false when 'English' was passed. See also: https://code.google.com/p/chromium/issues/detail?id=36182
For now, with the flag --enable-translate-settings, Accept languages don't matter for Translation and the users can configure Translate settings on the settings UI. This CL removes the obsolete logic.
BUG=253794
TEST=unit_tests, browser_tests
Review URL: https://chromiumcodereview.appspot.com/17639009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208689 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/translate/translate_accept_languages.cc')
-rw-r--r-- | chrome/browser/translate/translate_accept_languages.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/chrome/browser/translate/translate_accept_languages.cc b/chrome/browser/translate/translate_accept_languages.cc index 6de5225..df2f4cc 100644 --- a/chrome/browser/translate/translate_accept_languages.cc +++ b/chrome/browser/translate/translate_accept_languages.cc @@ -5,6 +5,7 @@ #include "chrome/browser/translate/translate_accept_languages.h" #include "base/bind.h" +#include "base/command_line.h" #include "base/prefs/pref_change_registrar.h" #include "base/prefs/pref_service.h" #include "base/strings/string_split.h" @@ -13,6 +14,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/translate/translate_manager.h" #include "chrome/common/chrome_notification_types.h" +#include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "chrome/common/translate/translate_util.h" #include "content/public/browser/notification_source.h" @@ -89,6 +91,11 @@ void TranslateAcceptLanguages::InitAcceptLanguages(PrefService* prefs) { std::string app_locale = g_browser_process->GetApplicationLocale(); std::string ui_lang = TranslateManager::GetLanguageCode(app_locale); bool is_ui_english = StartsWithASCII(ui_lang, "en-", false); + + CommandLine* command_line = CommandLine::ForCurrentProcess(); + bool enable_translate_settings = + command_line->HasSwitch(switches::kEnableTranslateSettings); + for (iter = accept_langs_list.begin(); iter != accept_langs_list.end(); ++iter) { // Get rid of the locale extension if any (ex: en-US -> en), but for Chinese @@ -97,6 +104,7 @@ void TranslateAcceptLanguages::InitAcceptLanguages(PrefService* prefs) { size_t index = iter->find("-"); if (index != std::string::npos && *iter != "zh-CN" && *iter != "zh-TW") accept_lang = iter->substr(0, index); + // Special-case English until we resolve bug 36182 properly. // Add English only if the UI language is not English. This will annoy // users of non-English Chrome who can comprehend English until English is @@ -104,8 +112,12 @@ void TranslateAcceptLanguages::InitAcceptLanguages(PrefService* prefs) { // TODO(jungshik): Once we determine that it's safe to remove English from // the default Accept-Language values for most locales, remove this // special-casing. - if (accept_lang != "en" || is_ui_english) - accept_langs_set.insert(accept_lang); + // TODO(hajimehoshi): We can remove this special-casing if the Translate + // settings UI is enabled by default. + if (!enable_translate_settings && accept_lang == "en" && !is_ui_english) + continue; + + accept_langs_set.insert(accept_lang); } accept_languages_[prefs] = accept_langs_set; } |