64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Locales = exports.defaultLocaleResolver = void 0;
|
|
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
const defaultLocaleResolver = (i18n, locale) => {
|
|
const locales = [];
|
|
const list = [];
|
|
locales.push(locale);
|
|
if (!locale) {
|
|
locales.push(i18n.locale);
|
|
}
|
|
if (i18n.enableFallback) {
|
|
locales.push(i18n.defaultLocale);
|
|
}
|
|
locales
|
|
.filter(Boolean)
|
|
.map((entry) => entry.toString())
|
|
.forEach(function (currentLocale) {
|
|
if (!list.includes(currentLocale)) {
|
|
list.push(currentLocale);
|
|
}
|
|
if (!i18n.enableFallback) {
|
|
return;
|
|
}
|
|
const codes = currentLocale.split("-");
|
|
if (codes.length === 3) {
|
|
list.push(`${codes[0]}-${codes[1]}`);
|
|
}
|
|
list.push(codes[0]);
|
|
});
|
|
return (0, uniq_1.default)(list);
|
|
};
|
|
exports.defaultLocaleResolver = defaultLocaleResolver;
|
|
class Locales {
|
|
constructor(i18n) {
|
|
this.i18n = i18n;
|
|
this.registry = {};
|
|
this.register("default", exports.defaultLocaleResolver);
|
|
}
|
|
register(locale, localeResolver) {
|
|
if (typeof localeResolver !== "function") {
|
|
const result = localeResolver;
|
|
localeResolver = (() => result);
|
|
}
|
|
this.registry[locale] = localeResolver;
|
|
}
|
|
get(locale) {
|
|
let locales = this.registry[locale] ||
|
|
this.registry[this.i18n.locale] ||
|
|
this.registry.default;
|
|
if (typeof locales === "function") {
|
|
locales = locales(this.i18n, locale);
|
|
}
|
|
if (!(locales instanceof Array)) {
|
|
locales = [locales];
|
|
}
|
|
return locales;
|
|
}
|
|
}
|
|
exports.Locales = Locales;
|
|
//# sourceMappingURL=Locales.js.map
|