UNPKG

i18n-js

Version:

A small library to provide I18n on JavaScript.

64 lines 1.99 kB
"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