diff options
author | hajimehoshi <hajimehoshi@chromium.org> | 2014-11-12 20:05:53 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-13 04:06:16 +0000 |
commit | 098153f8613fa71e15397537baa0a1310d82cd07 (patch) | |
tree | 5c522dde7dd5d17c19b8f712d6dc879dd62c1dee /components/translate/core/browser | |
parent | 1bc033c4375e34fa4ccfc4913e2a9582442f2446 (diff) | |
download | chromium_src-098153f8613fa71e15397537baa0a1310d82cd07.zip chromium_src-098153f8613fa71e15397537baa0a1310d82cd07.tar.gz chromium_src-098153f8613fa71e15397537baa0a1310d82cd07.tar.bz2 |
Convert Chinese lang codes with a region code to a compatible lang code
Convert zh-HK, zh-MO, zh-SG to their compatible language codes such as
zh-CN and zh-TW. This will help to show Translate UI on websites in
the Chinese langs with the region codes.
BUG=409606
TEST=components_unittests --gtest_filter=Language*:Translate*, unit_tests --gtest_filter=Translate*, browser_tests --gtest_filter=ChromeRenderViewTest.LanguageCommonMistakesAreCorrected
Review URL: https://codereview.chromium.org/715593002
Cr-Commit-Position: refs/heads/master@{#303981}
Diffstat (limited to 'components/translate/core/browser')
-rw-r--r-- | components/translate/core/browser/translate_manager.cc | 7 | ||||
-rw-r--r-- | components/translate/core/browser/translate_prefs.cc | 25 | ||||
-rw-r--r-- | components/translate/core/browser/translate_prefs.h | 6 |
3 files changed, 8 insertions, 30 deletions
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc index 6fa1aa4..065e102 100644 --- a/components/translate/core/browser/translate_manager.cc +++ b/components/translate/core/browser/translate_manager.cc @@ -28,6 +28,7 @@ #include "components/translate/core/common/translate_constants.h" #include "components/translate/core/common/translate_pref_names.h" #include "components/translate/core/common/translate_switches.h" +#include "components/translate/core/common/translate_util.h" #include "net/base/url_util.h" #include "net/http/http_status_code.h" @@ -350,9 +351,9 @@ void TranslateManager::OnTranslateScriptFetchComplete( // static std::string TranslateManager::GetTargetLanguage( const std::vector<std::string>& accept_languages_list) { - std::string ui_lang = TranslatePrefs::ConvertLangCodeForTranslation( - TranslateDownloadManager::GetLanguageCode( - TranslateDownloadManager::GetInstance()->application_locale())); + std::string ui_lang = TranslateDownloadManager::GetLanguageCode( + TranslateDownloadManager::GetInstance()->application_locale()); + translate::ToTranslateLanguageSynonym(&ui_lang); if (TranslateDownloadManager::IsSupportedLanguage(ui_lang)) return ui_lang; diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc index 4f9c2a7..a7cd5c1 100644 --- a/components/translate/core/browser/translate_prefs.cc +++ b/components/translate/core/browser/translate_prefs.cc @@ -492,38 +492,21 @@ void TranslatePrefs::CreateBlockedLanguages( for (std::vector<std::string>::const_iterator it = accept_languages.begin(); it != accept_languages.end(); ++it) { - std::string converted_lang = ConvertLangCodeForTranslation(*it); + std::string lang = *it; + translate::ToTranslateLanguageSynonym(&lang); // Regarding http://crbug.com/36182, even though English exists in Accept // language list, English could be translated on non-English locale. - if (converted_lang == "en" && !is_ui_english) + if (lang == "en" && !is_ui_english) continue; - result.insert(converted_lang); + result.insert(lang); } blocked_languages->insert( blocked_languages->begin(), result.begin(), result.end()); } -// static -std::string TranslatePrefs::ConvertLangCodeForTranslation( - const std::string& lang) { - std::vector<std::string> tokens; - base::SplitString(lang, '-', &tokens); - if (tokens.size() < 1) - return lang; - - std::string main_part = tokens[0]; - - // Translate doesn't support General Chinese and the sub code is necessary. - if (main_part == "zh") - return lang; - - translate::ToTranslateLanguageSynonym(&main_part); - return main_part; -} - bool TranslatePrefs::IsValueInList(const base::ListValue* list, const std::string& in_value) const { for (size_t i = 0; i < list->GetSize(); ++i) { diff --git a/components/translate/core/browser/translate_prefs.h b/components/translate/core/browser/translate_prefs.h index c1b89c5..8625ee3 100644 --- a/components/translate/core/browser/translate_prefs.h +++ b/components/translate/core/browser/translate_prefs.h @@ -115,12 +115,6 @@ class TranslatePrefs { static void MigrateUserPrefs(PrefService* user_prefs, const char* accept_languages_pref); - // Converts the language code for Translate. This removes the sub code (like - // -US) except for Chinese, and converts the synonyms. - // The same logic exists at language_options.js, and please keep consistency - // with the JavaScript file. - static std::string ConvertLangCodeForTranslation(const std::string& lang); - private: friend class TranslatePrefsTest; FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, CreateBlockedLanguages); |