diff options
author | sidchat@google.com <sidchat@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-23 18:49:18 +0000 |
---|---|---|
committer | sidchat@google.com <sidchat@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-23 18:49:18 +0000 |
commit | 8f9f4f0ce600435ca36fd5b44d324b48fde73228 (patch) | |
tree | c838e599587d355fec6b1ed188d89a89b90ad780 | |
parent | 9143697300f15a47688bce3d39fdb7323f081717 (diff) | |
download | chromium_src-8f9f4f0ce600435ca36fd5b44d324b48fde73228.zip chromium_src-8f9f4f0ce600435ca36fd5b44d324b48fde73228.tar.gz chromium_src-8f9f4f0ce600435ca36fd5b44d324b48fde73228.tar.bz2 |
Get rid of unnecessary region code from spellcheck language/locale codes
Issue=6329
Review URL: http://codereview.chromium.org/18694
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8565 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/spellchecker.cc | 86 | ||||
-rw-r--r-- | chrome/browser/spellchecker.h | 5 |
2 files changed, 59 insertions, 32 deletions
diff --git a/chrome/browser/spellchecker.cc b/chrome/browser/spellchecker.cc index 4269f70..797f184 100644 --- a/chrome/browser/spellchecker.cc +++ b/chrome/browser/spellchecker.cc @@ -31,38 +31,44 @@ using base::TimeTicks; static const int kMaxSuggestions = 5; // Max number of dictionary suggestions. namespace { -const wchar_t* const g_supported_spellchecker_languages[] = { - L"en-US", - L"en-GB", - L"fr-FR", - L"it-IT", - L"de-DE", - L"es-ES", - L"nl-NL", - L"pt-BR", - L"ru-RU", - L"pl-PL", +static const struct { + // The language. + const wchar_t* language; + + // The corresponding language and region, used by the dictionaries. + const wchar_t* language_region; +} g_supported_spellchecker_languages[] = { + {L"en-US", L"en-US"}, + {L"en-GB", L"en-GB"}, + {L"fr", L"fr-FR"}, + {L"it", L"it-IT"}, + {L"de", L"de-DE"}, + {L"es", L"es-ES"}, + {L"nl", L"nl-NL"}, + {L"pt-BR", L"pt-BR"}, + {L"ru", L"ru-RU"}, + {L"pl", L"pl-PL"}, // L"th-TH", // Not to be included in Spellchecker as per B=1277824 - L"sv-SE", - L"da-DK", - L"pt-PT", - L"ro-RO", + {L"sv", L"sv-SE"}, + {L"da", L"da-DK"}, + {L"pt-PT", L"pt-PT"}, + {L"ro", L"ro-RO"}, // L"hu-HU", // Not to be included in Spellchecker as per B=1277824 - L"he-IL", - L"id-ID", - L"cs-CZ", - L"el-GR", - L"nb-NO", - L"vi-VN", + {L"he", L"he-IL"}, + {L"id", L"id-ID"}, + {L"cs", L"cs-CZ"}, + {L"el", L"el-GR"}, + {L"nb", L"nb-NO"}, + {L"vi", L"vi-VN"}, // L"bg-BG", // Not to be included in Spellchecker as per B=1277824 - L"hr-HR", - L"lt-LT", - L"sk-SK", - L"sl-SI", - L"ca-ES", - L"lv-LV", + {L"hr", L"hr-HR"}, + {L"lt", L"lt-LT"}, + {L"sk", L"sk-SK"}, + {L"sl", L"sl-SI"}, + {L"ca", L"ca-ES"}, + {L"lv", L"lv-LV"}, // L"uk-UA", // Not to be included in Spellchecker as per B=1277824 - L"hi-IN", + {L"hi", L"hi-IN"}, // // TODO(Sidchat): Uncomment/remove languages as and when they get resolved. // @@ -72,14 +78,28 @@ const wchar_t* const g_supported_spellchecker_languages[] = { void SpellChecker::SpellCheckLanguages(Languages* languages) { for (size_t i = 0; i < arraysize(g_supported_spellchecker_languages); ++i) - languages->push_back(g_supported_spellchecker_languages[i]); + languages->push_back(g_supported_spellchecker_languages[i].language); +} + +// This function returns the language-region version of language name. +// e.g. returns hi-IN for hi. +SpellChecker::Language SpellChecker::GetSpellCheckLanguageRegion( + Language input_language) { + for (size_t i = 0; i < arraysize(g_supported_spellchecker_languages); ++i) { + Language language(g_supported_spellchecker_languages[i].language); + if (language == input_language) + return Language(g_supported_spellchecker_languages[i].language_region); + } + + return input_language; } SpellChecker::Language SpellChecker::GetCorrespondingSpellCheckLanguage( const Language& language) { // Look for exact match in the Spell Check language list. for (size_t i = 0; i < arraysize(g_supported_spellchecker_languages); ++i) { - Language spellcheck_language(g_supported_spellchecker_languages[i]); + Language spellcheck_language( + g_supported_spellchecker_languages[i].language); if (spellcheck_language == language) return language; } @@ -93,7 +113,8 @@ SpellChecker::Language SpellChecker::GetCorrespondingSpellCheckLanguage( // TODO(jungshik): Add a better fallback. Language language_part(language, 0, language.find(L'-')); for (size_t i = 0; i < arraysize(g_supported_spellchecker_languages); ++i) { - Language spellcheck_language(g_supported_spellchecker_languages[i]); + Language spellcheck_language( + g_supported_spellchecker_languages[i].language_region); if (spellcheck_language.substr(0, spellcheck_language.find(L'-')) == language_part) return spellcheck_language; @@ -298,7 +319,7 @@ void SpellChecker::set_file_is_downloading(bool value) { // This part of the code is used for spell checking. // ################################################################ -std::wstring SpellChecker::GetVersionedFileName(const Language& language, +std::wstring SpellChecker::GetVersionedFileName(const Language& input_language, const std::wstring& dict_dir) { // The default version string currently in use. static const wchar_t kDefaultVersionString[] = L"-1-2"; @@ -328,6 +349,7 @@ std::wstring SpellChecker::GetVersionedFileName(const Language& language, // Generate the bdict file name using default version string or special // version string, depending on the language. + std::wstring language = GetSpellCheckLanguageRegion(input_language); std::wstring versioned_bdict_file_name(language + kDefaultVersionString + L".bdic"); std::string language_string(WideToUTF8(language)); diff --git a/chrome/browser/spellchecker.h b/chrome/browser/spellchecker.h index 1e97605..50fa60e 100644 --- a/chrome/browser/spellchecker.h +++ b/chrome/browser/spellchecker.h @@ -88,6 +88,11 @@ class SpellChecker : public base::RefCountedThreadSafe<SpellChecker> { Profile* profile, Languages* display_languages); + // This function returns the corresponding language-region code for the + // spell check language. For example, for hi, it returns hi-IN. + static Language GetSpellCheckLanguageRegion(Language input_language); + + private: // Download dictionary files when required. class DictionaryDownloadController; |