# new LocaleMatcher(options)
Parameters:
Name | Type | Description |
---|---|---|
options |
Object
|
parameters to initialize this matcher |
Members
Methods
# getLikelyLocale() → {Locale}
Return an Locale instance that is fully specified based on partial information given to the constructor of this locale matcher instance. For example, if the locale spec given to this locale matcher instance is simply "ru" (for the Russian language), then it will fill in the missing region and script tags and return a locale with the specifier "ru-Cyrl-RU". (ie. Russian language, Cyrillic, Russian Federation). Any one or two of the language, script, or region parts may be left unspecified, and the other one or two parts will be filled in automatically. If this class has no information about the given locale, then the locale of this locale matcher instance is returned unchanged.
the most likely completion of the partial locale given to the constructor of this locale matcher instance
# getLikelyLocaleMinimal() → {Locale}
Return an Locale instance that is specified based on partial information given to the constructor of this locale matcher instance but which leaves out any part of the locale specifier that is so common that it is understood. For example, if the locale spec given to this locale matcher instance is simply "ru" (for the Russian language), then it will fill in the missing region and/or script tags and return a locale with the specifier "ru-RU". (ie. Russian language, Russian Federation). Note that the default script "Cyrl" is left out because the vast majority of text written in Russian is written with the Cyrllic script, so that part of the locale is understood and is commonly left out.
Any one or two of the language, script, or region parts may be left unspecified, and the other one or two parts will be filled in automatically. If this class has no information about the given locale, then the locale of this locale matcher instance is returned unchanged.
This method returns the same information as getLikelyLocale but with the very common parts left out.
the most likely "minimal" completion of the partial locale given to the constructor of this locale matcher instance where the commonly understood parts are left out.
# getLocale() → {Locale|undefined}
Return the locale used to construct this instance.
the locale for this matcher
Locale
|
undefined
# getMacroLanguage() → {string}
Return the macrolanguage associated with this locale. If the locale's language is not part of a macro-language, then the locale's language is returned as-is.
the ISO code for the macrolanguage associated with this locale, or language of the locale
string
# getRegionContainment() → {Array.<string>}
Return the list of regions that this locale is contained within. Regions are nested, so locales can be in multiple regions. (eg. US is in Northern North America, North America, the Americas, the World.) Most regions are specified using UN.49 region numbers, though some, like "EU", are letters. If the locale is underspecified, this method will use the most likely locale method to get the region first. For example, the locale "ja" (Japanese) is most likely "ja-JP" (Japanese for Japan), and the region containment info for Japan is returned.
an array of region specifiers that this locale is within
Array.<string>
# match(locale) → {number}
Return the degree that the given locale matches the current locale of this matcher. This method returns an integer from 0 to 100. A value of 100 is a 100% match, meaning that the two locales are exactly equivalent to each other. (eg. "ja-JP" and "ja-JP") A value of 0 means that there 0% match or that the two locales have nothing in common. (eg. "en-US" and "ja-JP")
Locale matching is not the same as equivalence, as the degree of matching is returned. (See Locale.equals for equivalence.)
The match score is calculated based on matching the 4 locale components, weighted by importance:
- language - this accounts for 50% of the match score
- region - accounts for 25% of the match score
- script - accounts for 20% of the match score
- variant - accounts for 5% of the match score
The score is affected by the following things:
- A large language score is given when the language components of the locales match exactly.
- Higher language scores are given when the languages are linguistically close to each other, such as dialects.
- A small score is given when two languages are in the same linguistic family, but one is not a dialect of the other, such as German and Dutch.
- A large region score is given when two locales share the same region.
- A smaller region score is given when one region is contained within another. For example, Hong Kong is part of China, so a moderate score is given instead of a full score.
- A small score is given if two regions are geographically close to each other or are tied by history. For example, Ireland and Great Britain are both adjacent and tied by history, so they receive a moderate score.
- A high script score is given if the two locales share the same script. The legibility of a common script means that there is some small kinship of the different languages.
- A high variant score is given if the two locales share the same variant. Full score is given when both locales have no variant at all.
- Locale components that are unspecified in both locales are given high scores.
- Locales where a particular locale component is missing in only one locale can still match when the default for that locale component matches the component in the other locale. The default value for the missing component is determined using the likely locales data. (See getLikelyLocale()) For example, "en-US" and "en-Latn-US" receive a high script score because the default script for "en" is "Latn".
The intention of this method is that it can be used to determine compatibility of locales. For example, when a user signs up for an account on a web site, the locales that the web site supports and the locale of the user's browser may differ, and the site needs to pick the best locale to show the user. Let's say the web site supports a selection of European languages such as "it-IT", "fr-FR", "de-DE", and "en-GB". The user's browser may be set to "it-CH". The web site code can then match "it-CH" against each of the supported locales to find the one with the highest score. In this case, the best match would be "it-IT" because it shares a language and script in common with "it-CH" and differs only in the region component. It is not a 100% match, but it is pretty good. The web site may decide if the match scores all fall below a chosen threshold (perhaps 50%?), it should show the user the default language "en-GB", because that is probably a better choice than any other supported locale.
Parameters:
Name | Type | Description |
---|---|---|
locale |
Locale
|
the other locale to match against the current one |
an integer from 0 to 100 that indicates the degree to which these locales match each other
number
# smallestCommonRegion(otherLocale) → {string}
Find the smallest region that contains both the current locale and the other locale. If the current or other locales are underspecified, this method will use the most likely locale method to get their regions first. For example, the locale "ja" (Japanese) is most likely "ja-JP" (Japanese for Japan), and the region containment info for Japan is checked against the other locale's region containment info.
Parameters:
Name | Type | Description |
---|---|---|
otherLocale |
string
|
Locale
|
a locale specifier or a Locale instance to compare against |
the region specifier of the smallest region containing both the current locale and other locale
string