i18n-js
Version:
A small library to provide I18n on JavaScript.
64 lines • 1.99 kB
JavaScript
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
;