Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: chrome/browser/translate/translate_prefs.cc

Issue 23522021: Translate: Bug fix: Remove the language sub code when merging to the blocked language list (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/translate/translate_prefs_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/translate/translate_prefs.h" 5 #include "chrome/browser/translate/translate_prefs.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/string_split.h" 8 #include "base/strings/string_split.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 26 matching lines...) Expand all
37 37
38 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist; 38 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist;
39 const ListValue* list = prefs->GetList(key); 39 const ListValue* list = prefs->GetList(key);
40 for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { 40 for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) {
41 std::string lang; 41 std::string lang;
42 (*it)->GetAsString(&lang); 42 (*it)->GetAsString(&lang);
43 languages->push_back(lang); 43 languages->push_back(lang);
44 } 44 }
45 } 45 }
46 46
47 // Converts the language code for Translate. This removes the sub code (like
48 // -US) except for Chinese, and converts the synonyms.
Takashi Toyoshima 2013/09/06 06:20:21 Please add a comment to be consistent with languag
hajimehoshi 2013/09/06 06:29:18 Done.
49 std::string ConvertLangCodeForTranslation(const std::string &lang) {
50 std::vector<std::string> tokens;
51 base::SplitString(lang, '-', &tokens);
52 if (tokens.size() < 1)
53 NOTREACHED();
54
55 std::string main_part = tokens[0];
56
57 // Translate doesn't support General Chinese and the sub code is necessary.
58 if (main_part == "zh")
59 return lang;
60
61 TranslateUtil::ToTranslateLanguageSynonym(&main_part);
62 return main_part;
63 }
64
47 } // namespace 65 } // namespace
48 66
49 namespace { 67 namespace {
50 68
51 void AppendLanguageToAcceptLanguages(PrefService* prefs, 69 void AppendLanguageToAcceptLanguages(PrefService* prefs,
52 const std::string& language) { 70 const std::string& language) {
53 if (!TranslateAcceptLanguages::CanBeAcceptLanguage(language)) 71 if (!TranslateAcceptLanguages::CanBeAcceptLanguage(language))
54 return; 72 return;
55 73
56 std::string accept_language = language; 74 std::string accept_language = language;
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 result.insert(*it); 401 result.insert(*it);
384 } 402 }
385 403
386 const std::string& app_locale = g_browser_process->GetApplicationLocale(); 404 const std::string& app_locale = g_browser_process->GetApplicationLocale();
387 std::string ui_lang = TranslateManager::GetLanguageCode(app_locale); 405 std::string ui_lang = TranslateManager::GetLanguageCode(app_locale);
388 bool is_ui_english = ui_lang == "en" || 406 bool is_ui_english = ui_lang == "en" ||
389 StartsWithASCII(ui_lang, "en-", false); 407 StartsWithASCII(ui_lang, "en-", false);
390 408
391 for (std::vector<std::string>::const_iterator it = accept_languages.begin(); 409 for (std::vector<std::string>::const_iterator it = accept_languages.begin();
392 it != accept_languages.end(); ++it) { 410 it != accept_languages.end(); ++it) {
393 std::string lang = *it; 411 std::string converted_lang = ConvertLangCodeForTranslation(*it);
394 TranslateUtil::ToTranslateLanguageSynonym(&lang);
395 412
396 // Regarding http://crbug.com/36182, even though English exists in Accept 413 // Regarding http://crbug.com/36182, even though English exists in Accept
397 // language list, English could be translated on non-English locale. 414 // language list, English could be translated on non-English locale.
398 if (lang == "en" && !is_ui_english) 415 if (converted_lang == "en" && !is_ui_english)
399 continue; 416 continue;
400 417
401 result.insert(lang); 418 result.insert(converted_lang);
402 } 419 }
403 420
404 blocked_languages->insert(blocked_languages->begin(), 421 blocked_languages->insert(blocked_languages->begin(),
405 result.begin(), result.end()); 422 result.begin(), result.end());
406 } 423 }
407 424
408 bool TranslatePrefs::IsValueInList(const ListValue* list, 425 bool TranslatePrefs::IsValueInList(const ListValue* list,
409 const std::string& in_value) const { 426 const std::string& in_value) const {
410 for (size_t i = 0; i < list->GetSize(); ++i) { 427 for (size_t i = 0; i < list->GetSize(); ++i) {
411 std::string value; 428 std::string value;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 475
459 bool TranslatePrefs::IsListEmpty(const char* pref_id) const { 476 bool TranslatePrefs::IsListEmpty(const char* pref_id) const {
460 const ListValue* blacklist = prefs_->GetList(pref_id); 477 const ListValue* blacklist = prefs_->GetList(pref_id);
461 return (blacklist == NULL || blacklist->empty()); 478 return (blacklist == NULL || blacklist->empty());
462 } 479 }
463 480
464 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const { 481 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const {
465 const DictionaryValue* dict = prefs_->GetDictionary(pref_id); 482 const DictionaryValue* dict = prefs_->GetDictionary(pref_id);
466 return (dict == NULL || dict->empty()); 483 return (dict == NULL || dict->empty());
467 } 484 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/translate/translate_prefs_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698