summaryrefslogtreecommitdiffstats
path: root/chrome/browser/translate/translate_accept_languages.cc
diff options
context:
space:
mode:
authorhajimehoshi@chromium.org <hajimehoshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-26 12:18:54 +0000
committerhajimehoshi@chromium.org <hajimehoshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-26 12:18:54 +0000
commit70fdfb9e7d51896ed32c26d22e4ab7544b7d2c73 (patch)
tree8678f5f5b8b4342a5d5fb0230525a6c9ea9e0f28 /chrome/browser/translate/translate_accept_languages.cc
parent82937ed28f8548241243a828ae68f90125c95bff (diff)
downloadchromium_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.cc16
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;
}