relative-time-format
Version:
A convenient Intl.RelativeTimeFormat polyfill
41 lines (36 loc) • 1.27 kB
JavaScript
/**
* Returns a `locale` for which a function exists in `./PluralRuleFunctions.js`.
* @param {string} locale
* @return {string}
* @example
* getPluralRulesLocale("ru-RU-Cyrl") // Returns "ru".
*/
export default function getPluralRulesLocale(locale) {
// "pt" language is the only one having different pluralization rules
// for the one ("pt") (Portuguese) locale and the other ("pt-PT") (European Portuguese).
// http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
// (see the entries for "pt" and "pt_PT" there)
if (locale === 'pt-PT') {
return locale;
}
return getLanguageFromLanguageTag(locale);
}
/**
* Extracts language from an IETF BCP 47 language tag.
* @param {string} languageTag - IETF BCP 47 language tag.
* @return {string}
* @example
* // Returns "he"
* getLanguageFromLanguageTag("he-IL-u-ca-hebrew-tz-jeruslm")
* // Returns "ar"
* getLanguageFromLanguageTag("ar-u-nu-latn")
*/
var LANGUAGE_REG_EXP = /^([a-z0-9]+)/i;
function getLanguageFromLanguageTag(languageTag) {
var match = languageTag.match(LANGUAGE_REG_EXP);
if (!match) {
throw new TypeError("Invalid locale: ".concat(languageTag));
}
return match[1];
}
//# sourceMappingURL=getPluralRulesLocale.js.map