UNPKG

1.38 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = getPluralRulesLocale;
7
8/**
9 * Returns a `locale` for which a function exists in `./PluralRuleFunctions.js`.
10 * @param {string} locale
11 * @return {string}
12 * @example
13 * getPluralRulesLocale("ru-RU-Cyrl") // Returns "ru".
14 */
15function getPluralRulesLocale(locale) {
16 // "pt" language is the only one having different pluralization rules
17 // for the one ("pt") (Portuguese) locale and the other ("pt-PT") (European Portuguese).
18 // http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
19 // (see the entries for "pt" and "pt_PT" there)
20 if (locale === 'pt-PT') {
21 return locale;
22 }
23
24 return getLanguageFromLanguageTag(locale);
25}
26/**
27 * Extracts language from an IETF BCP 47 language tag.
28 * @param {string} languageTag - IETF BCP 47 language tag.
29 * @return {string}
30 * @example
31 * // Returns "he"
32 * getLanguageFromLanguageTag("he-IL-u-ca-hebrew-tz-jeruslm")
33 * // Returns "ar"
34 * getLanguageFromLanguageTag("ar-u-nu-latn")
35 */
36
37
38var LANGUAGE_REG_EXP = /^([a-z0-9]+)/i;
39
40function getLanguageFromLanguageTag(languageTag) {
41 var match = languageTag.match(LANGUAGE_REG_EXP);
42
43 if (!match) {
44 throw new TypeError("Invalid locale: ".concat(languageTag));
45 }
46
47 return match[1];
48}
49//# sourceMappingURL=getPluralRulesLocale.js.map
\No newline at end of file