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

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

Issue 68823004: [Translate] Apply language synonyms to the target language (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
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 <set> 7 #include <set>
8 8
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/prefs/scoped_user_pref_update.h" 10 #include "base/prefs/scoped_user_pref_update.h"
(...skipping 29 matching lines...) Expand all
40 40
41 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist; 41 const char* key = TranslatePrefs::kPrefTranslateLanguageBlacklist;
42 const ListValue* list = prefs->GetList(key); 42 const ListValue* list = prefs->GetList(key);
43 for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) { 43 for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) {
44 std::string lang; 44 std::string lang;
45 (*it)->GetAsString(&lang); 45 (*it)->GetAsString(&lang);
46 languages->push_back(lang); 46 languages->push_back(lang);
47 } 47 }
48 } 48 }
49 49
50 // Converts the language code for Translate. This removes the sub code (like
51 // -US) except for Chinese, and converts the synonyms.
52 // The same logic exists at language_options.js, and please keep consistensy
53 // with the JavaScript file.
54 std::string ConvertLangCodeForTranslation(const std::string &lang) {
55 std::vector<std::string> tokens;
56 base::SplitString(lang, '-', &tokens);
57 if (tokens.size() < 1)
58 return lang;
59
60 std::string main_part = tokens[0];
61
62 // Translate doesn't support General Chinese and the sub code is necessary.
63 if (main_part == "zh")
64 return lang;
65
66 translate::ToTranslateLanguageSynonym(&main_part);
67 return main_part;
68 }
69
70 // Expands language codes to make these more suitable for Accept-Language. 50 // Expands language codes to make these more suitable for Accept-Language.
71 // Example: ['en-US', 'ja', 'en-CA'] => ['en-US', 'en', 'ja', 'en-CA']. 51 // Example: ['en-US', 'ja', 'en-CA'] => ['en-US', 'en', 'ja', 'en-CA'].
72 // 'en' won't appear twice as this function eliminates duplicates. 52 // 'en' won't appear twice as this function eliminates duplicates.
73 void ExpandLanguageCodes(const std::vector<std::string>& languages, 53 void ExpandLanguageCodes(const std::vector<std::string>& languages,
74 std::vector<std::string>* expanded_languages) { 54 std::vector<std::string>* expanded_languages) {
75 DCHECK(expanded_languages); 55 DCHECK(expanded_languages);
76 DCHECK(expanded_languages->empty()); 56 DCHECK(expanded_languages->empty());
77 57
78 // used to eliminate duplicates. 58 // used to eliminate duplicates.
79 std::set<std::string> seen; 59 std::set<std::string> seen;
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 if (converted_lang == "en" && !is_ui_english) 444 if (converted_lang == "en" && !is_ui_english)
465 continue; 445 continue;
466 446
467 result.insert(converted_lang); 447 result.insert(converted_lang);
468 } 448 }
469 449
470 blocked_languages->insert(blocked_languages->begin(), 450 blocked_languages->insert(blocked_languages->begin(),
471 result.begin(), result.end()); 451 result.begin(), result.end());
472 } 452 }
473 453
454 // static
455 std::string TranslatePrefs::ConvertLangCodeForTranslation(
456 const std::string &lang) {
457 std::vector<std::string> tokens;
458 base::SplitString(lang, '-', &tokens);
459 if (tokens.size() < 1)
460 return lang;
461
462 std::string main_part = tokens[0];
463
464 // Translate doesn't support General Chinese and the sub code is necessary.
465 if (main_part == "zh")
466 return lang;
467
468 translate::ToTranslateLanguageSynonym(&main_part);
469 return main_part;
470 }
471
474 bool TranslatePrefs::IsValueInList(const ListValue* list, 472 bool TranslatePrefs::IsValueInList(const ListValue* list,
475 const std::string& in_value) const { 473 const std::string& in_value) const {
476 for (size_t i = 0; i < list->GetSize(); ++i) { 474 for (size_t i = 0; i < list->GetSize(); ++i) {
477 std::string value; 475 std::string value;
478 if (list->GetString(i, &value) && value == in_value) 476 if (list->GetString(i, &value) && value == in_value)
479 return true; 477 return true;
480 } 478 }
481 return false; 479 return false;
482 } 480 }
483 481
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 522
525 bool TranslatePrefs::IsListEmpty(const char* pref_id) const { 523 bool TranslatePrefs::IsListEmpty(const char* pref_id) const {
526 const ListValue* blacklist = prefs_->GetList(pref_id); 524 const ListValue* blacklist = prefs_->GetList(pref_id);
527 return (blacklist == NULL || blacklist->empty()); 525 return (blacklist == NULL || blacklist->empty());
528 } 526 }
529 527
530 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const { 528 bool TranslatePrefs::IsDictionaryEmpty(const char* pref_id) const {
531 const DictionaryValue* dict = prefs_->GetDictionary(pref_id); 529 const DictionaryValue* dict = prefs_->GetDictionary(pref_id);
532 return (dict == NULL || dict->empty()); 530 return (dict == NULL || dict->empty());
533 } 531 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_prefs.h ('k') | components/translate/common/translate_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698