Commit 47f3934d authored by tkent@chromium.org's avatar tkent@chromium.org

Language.{h,cpp} clean-up.

- Remove userPreferredLanguagesOverride().  It's unused.
- Rename canonicalizedLanguageIdentifier() to canonicalizeLanguageIdentifier().
- Make sure that platformLanguage() and userPreferredLanguages() return language
  codes with '-'.
- Optimize platformLanguage().  It shouldn't create a Vector every time.

BUG=

Review URL: https://codereview.chromium.org/703043002

git-svn-id: svn://svn.chromium.org/blink/trunk@184894 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent a34f93ad
......@@ -31,39 +31,45 @@
namespace blink {
static String canonicalizeLanguageIdentifier(const String& languageCode)
{
String lowercaseLanguageCode = languageCode.lower();
// Platform::defaultLocale() might provide a language code with '_'.
lowercaseLanguageCode.replace('_', '-');
return lowercaseLanguageCode;
}
static const AtomicString& platformLanguage()
{
DEFINE_STATIC_LOCAL(AtomicString, computedDefaultLanguage, ());
if (computedDefaultLanguage.isEmpty()) {
computedDefaultLanguage = blink::Platform::current()->defaultLocale();
computedDefaultLanguage = AtomicString(canonicalizeLanguageIdentifier(Platform::current()->defaultLocale()));
ASSERT(!computedDefaultLanguage.isEmpty());
}
return computedDefaultLanguage;
}
AtomicString defaultLanguage()
{
Vector<AtomicString> languages = userPreferredLanguages();
if (!languages.isEmpty())
return languages[0];
return emptyAtom;
}
static Vector<AtomicString>& preferredLanguagesOverride()
{
DEFINE_STATIC_LOCAL(Vector<AtomicString>, override, ());
return override;
}
Vector<AtomicString> userPreferredLanguagesOverride()
void overrideUserPreferredLanguages(const Vector<AtomicString>& override)
{
return preferredLanguagesOverride();
Vector<AtomicString>& canonicalized = preferredLanguagesOverride();
canonicalized.resize(0);
canonicalized.reserveCapacity(override.size());
for (const auto& lang : override)
canonicalized.append(canonicalizeLanguageIdentifier(lang));
}
void overrideUserPreferredLanguages(const Vector<AtomicString>& override)
AtomicString defaultLanguage()
{
preferredLanguagesOverride() = override;
Vector<AtomicString>& override = preferredLanguagesOverride();
if (!override.isEmpty())
return override[0];
return platformLanguage();
}
Vector<AtomicString> userPreferredLanguages()
......@@ -78,16 +84,6 @@ Vector<AtomicString> userPreferredLanguages()
return languages;
}
static String canonicalLanguageIdentifier(const String& languageCode)
{
String lowercaseLanguageCode = languageCode.lower();
if (lowercaseLanguageCode.length() >= 3 && lowercaseLanguageCode[2] == '_')
lowercaseLanguageCode.replace(2, 1, "-");
return lowercaseLanguageCode;
}
size_t indexOfBestMatchingLanguageInList(const AtomicString& language, const Vector<AtomicString>& languageList)
{
AtomicString languageWithoutLocaleMatch;
......@@ -97,7 +93,7 @@ size_t indexOfBestMatchingLanguageInList(const AtomicString& language, const Vec
bool canMatchLanguageOnly = (language.length() == 2 || (language.length() >= 3 && language[2] == '-'));
for (size_t i = 0; i < languageList.size(); ++i) {
String canonicalizedLanguageFromList = canonicalLanguageIdentifier(languageList[i]);
String canonicalizedLanguageFromList = canonicalizeLanguageIdentifier(languageList[i]);
if (language == canonicalizedLanguageFromList)
return i;
......
......@@ -32,9 +32,13 @@
namespace blink {
// Returns lowercased BCP-47 language tag such as "en-us". This is the UI
// locale of the browser application.
PLATFORM_EXPORT AtomicString defaultLanguage();
// Returns a list of lowercased BCP-47 language tags. This never returns
// multiple values in production. This is not a value of Accept-Languages
// header. See ChromeClient::acceptLanguages.
PLATFORM_EXPORT Vector<AtomicString> userPreferredLanguages();
PLATFORM_EXPORT Vector<AtomicString> userPreferredLanguagesOverride();
PLATFORM_EXPORT void overrideUserPreferredLanguages(const Vector<AtomicString>&);
PLATFORM_EXPORT size_t indexOfBestMatchingLanguageInList(const AtomicString& language, const Vector<AtomicString>& languageList);
......
......@@ -49,7 +49,7 @@ var WeekDay = {
var global = {
picker: null,
params: {
locale: "en_US",
locale: "en-US",
weekStartDay: WeekDay.Sunday,
dayLabels: ["S", "M", "T", "W", "T", "F", "S"],
shortMonthLabels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"],
......@@ -75,7 +75,7 @@ function hasInaccuratePointingDevice() {
* @return {!string} lowercase locale name. e.g. "en-us"
*/
function getLocale() {
return (global.params.locale || "en-us").toLowerCase().replace(/_/g, '-');
return global.params.locale || "en-us";
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment