UNPKG

i18n-js

Version:

A small library to provide I18n on JavaScript.

50 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MissingTranslation = exports.errorStrategy = exports.messageStrategy = exports.guessStrategy = void 0; const helpers_1 = require("./helpers"); const guessStrategy = function (i18n, scope) { if (scope instanceof Array) { scope = scope.join(i18n.defaultSeparator); } const message = scope.split(i18n.defaultSeparator).slice(-1)[0]; return (i18n.missingTranslationPrefix + message .replace("_", " ") .replace(/([a-z])([A-Z])/g, (_match, p1, p2) => `${p1} ${p2.toLowerCase()}`)); }; exports.guessStrategy = guessStrategy; const messageStrategy = (i18n, scope, options) => { const fullScope = (0, helpers_1.getFullScope)(i18n, scope, options); const locale = "locale" in options ? options.locale : i18n.locale; const localeType = (0, helpers_1.inferType)(locale); const fullScopeWithLocale = [ localeType == "string" ? locale : localeType, fullScope, ].join(i18n.defaultSeparator); return `[missing "${fullScopeWithLocale}" translation]`; }; exports.messageStrategy = messageStrategy; const errorStrategy = (i18n, scope, options) => { const fullScope = (0, helpers_1.getFullScope)(i18n, scope, options); const fullScopeWithLocale = [i18n.locale, fullScope].join(i18n.defaultSeparator); throw new Error(`Missing translation: ${fullScopeWithLocale}`); }; exports.errorStrategy = errorStrategy; class MissingTranslation { constructor(i18n) { this.i18n = i18n; this.registry = {}; this.register("guess", exports.guessStrategy); this.register("message", exports.messageStrategy); this.register("error", exports.errorStrategy); } register(name, strategy) { this.registry[name] = strategy; } get(scope, options) { var _a; return this.registry[(_a = options.missingBehavior) !== null && _a !== void 0 ? _a : this.i18n.missingBehavior](this.i18n, scope, options); } } exports.MissingTranslation = MissingTranslation; //# sourceMappingURL=MissingTranslation.js.map