OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |