@formatjs/intl-getcanonicallocales
Version:
Intl.getCanonicalLocales polyfill
33 lines (32 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emitUnicodeLanguageId = emitUnicodeLanguageId;
exports.emitUnicodeLocaleId = emitUnicodeLocaleId;
var tslib_1 = require("tslib");
function emitUnicodeLanguageId(lang) {
if (!lang) {
return '';
}
return tslib_1.__spreadArray([lang.lang, lang.script, lang.region], (lang.variants || []), true).filter(Boolean)
.join('-');
}
function emitUnicodeLocaleId(_a) {
var lang = _a.lang, extensions = _a.extensions;
var chunks = [emitUnicodeLanguageId(lang)];
for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {
var ext = extensions_1[_i];
chunks.push(ext.type);
switch (ext.type) {
case 'u':
chunks.push.apply(chunks, tslib_1.__spreadArray(tslib_1.__spreadArray([], ext.attributes, false), ext.keywords.reduce(function (all, kv) { return all.concat(kv); }, []), false));
break;
case 't':
chunks.push.apply(chunks, tslib_1.__spreadArray([emitUnicodeLanguageId(ext.lang)], ext.fields.reduce(function (all, kv) { return all.concat(kv); }, []), false));
break;
default:
chunks.push(ext.value);
break;
}
}
return chunks.filter(Boolean).join('-');
}