| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767 |
- "use strict";
- (wx["webpackJsonp"] = wx["webpackJsonp"] || []).push([["vendors-node_modules_taro_weapp_prebundle_i18next_js"],{
- /***/ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js":
- /*!**************************************************************!*\
- !*** ./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js ***!
- \**************************************************************/
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ __commonJS: function() { return /* binding */ __commonJS; },
- /* harmony export */ __esm: function() { return /* binding */ __esm; },
- /* harmony export */ __export: function() { return /* binding */ __export; },
- /* harmony export */ __toCommonJS: function() { return /* binding */ __toCommonJS; },
- /* harmony export */ __toESM: function() { return /* binding */ __toESM; }
- /* harmony export */ });
- var __create = Object.create;
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __getProtoOf = Object.getPrototypeOf;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __esm = (fn, res)=>function __init() {
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
- };
- var __commonJS = (cb, mod)=>function __require() {
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = {
- exports: {}
- }).exports, mod), mod.exports;
- };
- var __export = (target, all)=>{
- for(var name in all)__defProp(target, name, {
- get: all[name],
- enumerable: true
- });
- };
- var __copyProps = (to, from, except, desc)=>{
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
- get: ()=>from[key],
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
- });
- }
- return to;
- };
- var __toESM = (mod, isNodeMode, target)=>(target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
- value: mod,
- enumerable: true
- }) : target, mod));
- var __toCommonJS = (mod)=>__copyProps(__defProp({}, "__esModule", {
- value: true
- }), mod);
- /***/ }),
- /***/ "./node_modules/.taro/weapp/prebundle/i18next.js":
- /*!*******************************************************!*\
- !*** ./node_modules/.taro/weapp/prebundle/i18next.js ***!
- \*******************************************************/
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ changeLanguage: function() { return /* binding */ changeLanguage; },
- /* harmony export */ createInstance: function() { return /* binding */ createInstance; },
- /* harmony export */ "default": function() { return /* binding */ i18next_default; },
- /* harmony export */ dir: function() { return /* binding */ dir; },
- /* harmony export */ exists: function() { return /* binding */ exists; },
- /* harmony export */ getFixedT: function() { return /* binding */ getFixedT; },
- /* harmony export */ hasLoadedNamespace: function() { return /* binding */ hasLoadedNamespace; },
- /* harmony export */ init: function() { return /* binding */ init; },
- /* harmony export */ loadLanguages: function() { return /* binding */ loadLanguages; },
- /* harmony export */ loadNamespaces: function() { return /* binding */ loadNamespaces; },
- /* harmony export */ loadResources: function() { return /* binding */ loadResources; },
- /* harmony export */ reloadResources: function() { return /* binding */ reloadResources; },
- /* harmony export */ setDefaultNamespace: function() { return /* binding */ setDefaultNamespace; },
- /* harmony export */ t: function() { return /* binding */ t; },
- /* harmony export */ use: function() { return /* binding */ use; }
- /* harmony export */ });
- /* harmony import */ var _chunk_P7VEE7PG_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chunk-P7VEE7PG.js */ "./node_modules/.taro/weapp/prebundle/chunk-P7VEE7PG.js");
- function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
- return obj;
- }
- function _objectSpread(target) {
- for(var i = 1; i < arguments.length; i++){
- var source = arguments[i] != null ? arguments[i] : {};
- var ownKeys = Object.keys(source);
- if (typeof Object.getOwnPropertySymbols === 'function') {
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
- ownKeys.forEach(function(key) {
- _defineProperty(target, key, source[key]);
- });
- }
- return target;
- }
- function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- if (enumerableOnly) {
- symbols = symbols.filter(function(sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- }
- keys.push.apply(keys, symbols);
- }
- return keys;
- }
- function _objectSpreadProps(target, source) {
- source = source != null ? source : {};
- if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
- } else {
- ownKeys(Object(source)).forEach(function(key) {
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
- });
- }
- return target;
- }
- // node_modules/i18next/dist/esm/i18next.js
- var consoleLogger = {
- type: "logger",
- log (args) {
- this.output("log", args);
- },
- warn (args) {
- this.output("warn", args);
- },
- error (args) {
- this.output("error", args);
- },
- output (type, args) {
- if (console && console[type]) console[type].apply(console, args);
- }
- };
- var Logger = class {
- init(concreteLogger) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- this.prefix = options.prefix || "i18next:";
- this.logger = concreteLogger || consoleLogger;
- this.options = options;
- this.debug = options.debug;
- }
- log() {
- for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
- args[_key] = arguments[_key];
- }
- return this.forward(args, "log", "", true);
- }
- warn() {
- for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){
- args[_key2] = arguments[_key2];
- }
- return this.forward(args, "warn", "", true);
- }
- error() {
- for(var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++){
- args[_key3] = arguments[_key3];
- }
- return this.forward(args, "error", "");
- }
- deprecate() {
- for(var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++){
- args[_key4] = arguments[_key4];
- }
- return this.forward(args, "warn", "WARNING DEPRECATED: ", true);
- }
- forward(args, lvl, prefix, debugOnly) {
- if (debugOnly && !this.debug) return null;
- if (typeof args[0] === "string") args[0] = `${prefix}${this.prefix} ${args[0]}`;
- return this.logger[lvl](args);
- }
- create(moduleName) {
- return new Logger(this.logger, _objectSpread({}, {
- prefix: `${this.prefix}:${moduleName}:`
- }, this.options));
- }
- clone(options) {
- options = options || this.options;
- options.prefix = options.prefix || this.prefix;
- return new Logger(this.logger, options);
- }
- constructor(concreteLogger){
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- this.init(concreteLogger, options);
- }
- };
- var baseLogger = new Logger();
- var EventEmitter = class {
- on(events, listener) {
- events.split(" ").forEach((event)=>{
- this.observers[event] = this.observers[event] || [];
- this.observers[event].push(listener);
- });
- return this;
- }
- off(event, listener) {
- if (!this.observers[event]) return;
- if (!listener) {
- delete this.observers[event];
- return;
- }
- this.observers[event] = this.observers[event].filter((l)=>l !== listener);
- }
- emit(event) {
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
- args[_key - 1] = arguments[_key];
- }
- if (this.observers[event]) {
- const cloned = [].concat(this.observers[event]);
- cloned.forEach((observer)=>{
- observer(...args);
- });
- }
- if (this.observers["*"]) {
- const cloned1 = [].concat(this.observers["*"]);
- cloned1.forEach((observer)=>{
- observer.apply(observer, [
- event,
- ...args
- ]);
- });
- }
- }
- constructor(){
- this.observers = {};
- }
- };
- function defer() {
- let res;
- let rej;
- const promise = new Promise((resolve, reject)=>{
- res = resolve;
- rej = reject;
- });
- promise.resolve = res;
- promise.reject = rej;
- return promise;
- }
- function makeString(object) {
- if (object == null) return "";
- return "" + object;
- }
- function copy(a, s, t2) {
- a.forEach((m)=>{
- if (s[m]) t2[m] = s[m];
- });
- }
- function getLastOfPath(object, path, Empty) {
- function cleanKey(key) {
- return key && key.indexOf("###") > -1 ? key.replace(/###/g, ".") : key;
- }
- function canNotTraverseDeeper() {
- return !object || typeof object === "string";
- }
- const stack = typeof path !== "string" ? [].concat(path) : path.split(".");
- while(stack.length > 1){
- if (canNotTraverseDeeper()) return {};
- const key = cleanKey(stack.shift());
- if (!object[key] && Empty) object[key] = new Empty();
- if (Object.prototype.hasOwnProperty.call(object, key)) {
- object = object[key];
- } else {
- object = {};
- }
- }
- if (canNotTraverseDeeper()) return {};
- return {
- obj: object,
- k: cleanKey(stack.shift())
- };
- }
- function setPath(object, path, newValue) {
- const { obj , k } = getLastOfPath(object, path, Object);
- obj[k] = newValue;
- }
- function pushPath(object, path, newValue, concat) {
- const { obj , k } = getLastOfPath(object, path, Object);
- obj[k] = obj[k] || [];
- if (concat) obj[k] = obj[k].concat(newValue);
- if (!concat) obj[k].push(newValue);
- }
- function getPath(object, path) {
- const { obj , k } = getLastOfPath(object, path);
- if (!obj) return void 0;
- return obj[k];
- }
- function getPathWithDefaults(data, defaultData, key) {
- const value = getPath(data, key);
- if (value !== void 0) {
- return value;
- }
- return getPath(defaultData, key);
- }
- function deepExtend(target, source, overwrite) {
- for(const prop in source){
- if (prop !== "__proto__" && prop !== "constructor") {
- if (prop in target) {
- if (typeof target[prop] === "string" || target[prop] instanceof String || typeof source[prop] === "string" || source[prop] instanceof String) {
- if (overwrite) target[prop] = source[prop];
- } else {
- deepExtend(target[prop], source[prop], overwrite);
- }
- } else {
- target[prop] = source[prop];
- }
- }
- }
- return target;
- }
- function regexEscape(str) {
- return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
- }
- var _entityMap = {
- "&": "&",
- "<": "<",
- ">": ">",
- '"': """,
- "'": "'",
- "/": "/"
- };
- function escape(data) {
- if (typeof data === "string") {
- return data.replace(/[&<>"'\/]/g, (s)=>_entityMap[s]);
- }
- return data;
- }
- var chars = [
- " ",
- ",",
- "?",
- "!",
- ";"
- ];
- function looksLikeObjectPath(key, nsSeparator, keySeparator) {
- nsSeparator = nsSeparator || "";
- keySeparator = keySeparator || "";
- const possibleChars = chars.filter((c)=>nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);
- if (possibleChars.length === 0) return true;
- const r = new RegExp(`(${possibleChars.map((c)=>c === "?" ? "\\?" : c).join("|")})`);
- let matched = !r.test(key);
- if (!matched) {
- const ki = key.indexOf(keySeparator);
- if (ki > 0 && !r.test(key.substring(0, ki))) {
- matched = true;
- }
- }
- return matched;
- }
- function deepFind(obj, path) {
- let keySeparator = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ".";
- if (!obj) return void 0;
- if (obj[path]) return obj[path];
- const paths = path.split(keySeparator);
- let current = obj;
- for(let i = 0; i < paths.length; ++i){
- if (!current) return void 0;
- if (typeof current[paths[i]] === "string" && i + 1 < paths.length) {
- return void 0;
- }
- if (current[paths[i]] === void 0) {
- let j = 2;
- let p = paths.slice(i, i + j).join(keySeparator);
- let mix = current[p];
- while(mix === void 0 && paths.length > i + j){
- j++;
- p = paths.slice(i, i + j).join(keySeparator);
- mix = current[p];
- }
- if (mix === void 0) return void 0;
- if (mix === null) return null;
- if (path.endsWith(p)) {
- if (typeof mix === "string") return mix;
- if (p && typeof mix[p] === "string") return mix[p];
- }
- const joinedPath = paths.slice(i + j).join(keySeparator);
- if (joinedPath) return deepFind(mix, joinedPath, keySeparator);
- return void 0;
- }
- current = current[paths[i]];
- }
- return current;
- }
- function getCleanedCode(code) {
- if (code && code.indexOf("_") > 0) return code.replace("_", "-");
- return code;
- }
- var ResourceStore = class extends EventEmitter {
- addNamespaces(ns) {
- if (this.options.ns.indexOf(ns) < 0) {
- this.options.ns.push(ns);
- }
- }
- removeNamespaces(ns) {
- const index = this.options.ns.indexOf(ns);
- if (index > -1) {
- this.options.ns.splice(index, 1);
- }
- }
- getResource(lng, ns, key) {
- let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
- const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
- const ignoreJSONStructure = options.ignoreJSONStructure !== void 0 ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;
- let path = [
- lng,
- ns
- ];
- if (key && typeof key !== "string") path = path.concat(key);
- if (key && typeof key === "string") path = path.concat(keySeparator ? key.split(keySeparator) : key);
- if (lng.indexOf(".") > -1) {
- path = lng.split(".");
- }
- const result = getPath(this.data, path);
- if (result || !ignoreJSONStructure || typeof key !== "string") return result;
- return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);
- }
- addResource(lng, ns, key, value) {
- let options = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
- silent: false
- };
- const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
- let path = [
- lng,
- ns
- ];
- if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);
- if (lng.indexOf(".") > -1) {
- path = lng.split(".");
- value = ns;
- ns = path[1];
- }
- this.addNamespaces(ns);
- setPath(this.data, path, value);
- if (!options.silent) this.emit("added", lng, ns, key, value);
- }
- addResources(lng, ns, resources) {
- let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {
- silent: false
- };
- for(const m in resources){
- if (typeof resources[m] === "string" || Object.prototype.toString.apply(resources[m]) === "[object Array]") this.addResource(lng, ns, m, resources[m], {
- silent: true
- });
- }
- if (!options.silent) this.emit("added", lng, ns, resources);
- }
- addResourceBundle(lng, ns, resources, deep, overwrite) {
- let options = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : {
- silent: false
- };
- let path = [
- lng,
- ns
- ];
- if (lng.indexOf(".") > -1) {
- path = lng.split(".");
- deep = resources;
- resources = ns;
- ns = path[1];
- }
- this.addNamespaces(ns);
- let pack = getPath(this.data, path) || {};
- if (deep) {
- deepExtend(pack, resources, overwrite);
- } else {
- pack = _objectSpread({}, pack, resources);
- }
- setPath(this.data, path, pack);
- if (!options.silent) this.emit("added", lng, ns, resources);
- }
- removeResourceBundle(lng, ns) {
- if (this.hasResourceBundle(lng, ns)) {
- delete this.data[lng][ns];
- }
- this.removeNamespaces(ns);
- this.emit("removed", lng, ns);
- }
- hasResourceBundle(lng, ns) {
- return this.getResource(lng, ns) !== void 0;
- }
- getResourceBundle(lng, ns) {
- if (!ns) ns = this.options.defaultNS;
- if (this.options.compatibilityAPI === "v1") return _objectSpread({}, {}, this.getResource(lng, ns));
- return this.getResource(lng, ns);
- }
- getDataByLanguage(lng) {
- return this.data[lng];
- }
- hasLanguageSomeTranslations(lng) {
- const data = this.getDataByLanguage(lng);
- const n = data && Object.keys(data) || [];
- return !!n.find((v)=>data[v] && Object.keys(data[v]).length > 0);
- }
- toJSON() {
- return this.data;
- }
- constructor(data){
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
- ns: [
- "translation"
- ],
- defaultNS: "translation"
- };
- super();
- this.data = data || {};
- this.options = options;
- if (this.options.keySeparator === void 0) {
- this.options.keySeparator = ".";
- }
- if (this.options.ignoreJSONStructure === void 0) {
- this.options.ignoreJSONStructure = true;
- }
- }
- };
- var postProcessor = {
- processors: {},
- addPostProcessor (module) {
- this.processors[module.name] = module;
- },
- handle (processors, value, key, options, translator) {
- processors.forEach((processor)=>{
- if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);
- });
- return value;
- }
- };
- var checkedLoadedFor = {};
- var Translator = class extends EventEmitter {
- changeLanguage(lng) {
- if (lng) this.language = lng;
- }
- exists(key) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
- interpolation: {}
- };
- if (key === void 0 || key === null) {
- return false;
- }
- const resolved = this.resolve(key, options);
- return resolved && resolved.res !== void 0;
- }
- extractFromKey(key, options) {
- let nsSeparator = options.nsSeparator !== void 0 ? options.nsSeparator : this.options.nsSeparator;
- if (nsSeparator === void 0) nsSeparator = ":";
- const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
- let namespaces = options.ns || this.options.defaultNS || [];
- const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;
- const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);
- if (wouldCheckForNsInKey && !seemsNaturalLanguage) {
- const m = key.match(this.interpolator.nestingRegexp);
- if (m && m.length > 0) {
- return {
- key,
- namespaces
- };
- }
- const parts = key.split(nsSeparator);
- if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();
- key = parts.join(keySeparator);
- }
- if (typeof namespaces === "string") namespaces = [
- namespaces
- ];
- return {
- key,
- namespaces
- };
- }
- translate(keys, options, lastKey) {
- if (typeof options !== "object" && this.options.overloadTranslationOptionHandler) {
- options = this.options.overloadTranslationOptionHandler(arguments);
- }
- if (typeof options === "object") options = _objectSpread({}, options);
- if (!options) options = {};
- if (keys === void 0 || keys === null) return "";
- if (!Array.isArray(keys)) keys = [
- String(keys)
- ];
- const returnDetails = options.returnDetails !== void 0 ? options.returnDetails : this.options.returnDetails;
- const keySeparator = options.keySeparator !== void 0 ? options.keySeparator : this.options.keySeparator;
- const { key , namespaces } = this.extractFromKey(keys[keys.length - 1], options);
- const namespace = namespaces[namespaces.length - 1];
- const lng = options.lng || this.language;
- const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;
- if (lng && lng.toLowerCase() === "cimode") {
- if (appendNamespaceToCIMode) {
- const nsSeparator = options.nsSeparator || this.options.nsSeparator;
- if (returnDetails) {
- return {
- res: `${namespace}${nsSeparator}${key}`,
- usedKey: key,
- exactUsedKey: key,
- usedLng: lng,
- usedNS: namespace
- };
- }
- return `${namespace}${nsSeparator}${key}`;
- }
- if (returnDetails) {
- return {
- res: key,
- usedKey: key,
- exactUsedKey: key,
- usedLng: lng,
- usedNS: namespace
- };
- }
- return key;
- }
- const resolved = this.resolve(keys, options);
- let res = resolved && resolved.res;
- const resUsedKey = resolved && resolved.usedKey || key;
- const resExactUsedKey = resolved && resolved.exactUsedKey || key;
- const resType = Object.prototype.toString.apply(res);
- const noObject = [
- "[object Number]",
- "[object Function]",
- "[object RegExp]"
- ];
- const joinArrays = options.joinArrays !== void 0 ? options.joinArrays : this.options.joinArrays;
- const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;
- const handleAsObject = typeof res !== "string" && typeof res !== "boolean" && typeof res !== "number";
- if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === "string" && resType === "[object Array]")) {
- if (!options.returnObjects && !this.options.returnObjects) {
- if (!this.options.returnedObjectHandler) {
- this.logger.warn("accessing an object - but returnObjects options is not enabled!");
- }
- const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpreadProps(_objectSpread({}, options), {
- ns: namespaces
- })) : `key '${key} (${this.language})' returned an object instead of string.`;
- if (returnDetails) {
- resolved.res = r;
- return resolved;
- }
- return r;
- }
- if (keySeparator) {
- const resTypeIsArray = resType === "[object Array]";
- const copy2 = resTypeIsArray ? [] : {};
- const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;
- for(const m in res){
- if (Object.prototype.hasOwnProperty.call(res, m)) {
- const deepKey = `${newKeyToUse}${keySeparator}${m}`;
- copy2[m] = this.translate(deepKey, _objectSpread({}, options, {
- joinArrays: false,
- ns: namespaces
- }));
- if (copy2[m] === deepKey) copy2[m] = res[m];
- }
- }
- res = copy2;
- }
- } else if (handleAsObjectInI18nFormat && typeof joinArrays === "string" && resType === "[object Array]") {
- res = res.join(joinArrays);
- if (res) res = this.extendTranslation(res, keys, options, lastKey);
- } else {
- let usedDefault = false;
- let usedKey = false;
- const needsPluralHandling = options.count !== void 0 && typeof options.count !== "string";
- const hasDefaultValue = Translator.hasDefaultValue(options);
- const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : "";
- const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {
- ordinal: false
- }) : "";
- const defaultValue = options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;
- if (!this.isValidLookup(res) && hasDefaultValue) {
- usedDefault = true;
- res = defaultValue;
- }
- if (!this.isValidLookup(res)) {
- usedKey = true;
- res = key;
- }
- const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;
- const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? void 0 : res;
- const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;
- if (usedKey || usedDefault || updateMissing) {
- this.logger.log(updateMissing ? "updateKey" : "missingKey", lng, namespace, key, updateMissing ? defaultValue : res);
- if (keySeparator) {
- const fk = this.resolve(key, _objectSpreadProps(_objectSpread({}, options), {
- keySeparator: false
- }));
- if (fk && fk.res) this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.");
- }
- let lngs = [];
- const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);
- if (this.options.saveMissingTo === "fallback" && fallbackLngs && fallbackLngs[0]) {
- for(let i = 0; i < fallbackLngs.length; i++){
- lngs.push(fallbackLngs[i]);
- }
- } else if (this.options.saveMissingTo === "all") {
- lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);
- } else {
- lngs.push(options.lng || this.language);
- }
- const send = (l, k, specificDefaultValue)=>{
- const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;
- if (this.options.missingKeyHandler) {
- this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);
- } else if (this.backendConnector && this.backendConnector.saveMissing) {
- this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);
- }
- this.emit("missingKey", l, namespace, k, res);
- };
- if (this.options.saveMissing) {
- if (this.options.saveMissingPlurals && needsPluralHandling) {
- lngs.forEach((language)=>{
- this.pluralResolver.getSuffixes(language, options).forEach((suffix)=>{
- send([
- language
- ], key + suffix, options[`defaultValue${suffix}`] || defaultValue);
- });
- });
- } else {
- send(lngs, key, defaultValue);
- }
- }
- }
- res = this.extendTranslation(res, keys, options, resolved, lastKey);
- if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;
- if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {
- if (this.options.compatibilityAPI !== "v1") {
- res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : void 0);
- } else {
- res = this.options.parseMissingKeyHandler(res);
- }
- }
- }
- if (returnDetails) {
- resolved.res = res;
- return resolved;
- }
- return res;
- }
- extendTranslation(res, key, options, resolved, lastKey) {
- var _this = this;
- if (this.i18nFormat && this.i18nFormat.parse) {
- res = this.i18nFormat.parse(res, _objectSpread({}, this.options.interpolation.defaultVariables, options), options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {
- resolved
- });
- } else if (!options.skipInterpolation) {
- if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {
- interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)
- }));
- const skipOnVariables = typeof res === "string" && (options && options.interpolation && options.interpolation.skipOnVariables !== void 0 ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);
- let nestBef;
- if (skipOnVariables) {
- const nb = res.match(this.interpolator.nestingRegexp);
- nestBef = nb && nb.length;
- }
- let data = options.replace && typeof options.replace !== "string" ? options.replace : options;
- if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);
- res = this.interpolator.interpolate(res, data, options.lng || this.language, options);
- if (skipOnVariables) {
- const na = res.match(this.interpolator.nestingRegexp);
- const nestAft = na && na.length;
- if (nestBef < nestAft) options.nest = false;
- }
- if (!options.lng && this.options.compatibilityAPI !== "v1" && resolved && resolved.res) options.lng = resolved.usedLng;
- if (options.nest !== false) res = this.interpolator.nest(res, function() {
- for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
- args[_key] = arguments[_key];
- }
- if (lastKey && lastKey[0] === args[0] && !options.context) {
- _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);
- return null;
- }
- return _this.translate(...args, key);
- }, options);
- if (options.interpolation) this.interpolator.reset();
- }
- const postProcess = options.postProcess || this.options.postProcess;
- const postProcessorNames = typeof postProcess === "string" ? [
- postProcess
- ] : postProcess;
- if (res !== void 0 && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {
- res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({
- i18nResolved: resolved
- }, options) : options, this);
- }
- return res;
- }
- resolve(keys) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- let found;
- let usedKey;
- let exactUsedKey;
- let usedLng;
- let usedNS;
- if (typeof keys === "string") keys = [
- keys
- ];
- keys.forEach((k)=>{
- if (this.isValidLookup(found)) return;
- const extracted = this.extractFromKey(k, options);
- const key = extracted.key;
- usedKey = key;
- let namespaces = extracted.namespaces;
- if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);
- const needsPluralHandling = options.count !== void 0 && typeof options.count !== "string";
- const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();
- const needsContextHandling = options.context !== void 0 && (typeof options.context === "string" || typeof options.context === "number") && options.context !== "";
- const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);
- namespaces.forEach((ns)=>{
- if (this.isValidLookup(found)) return;
- usedNS = ns;
- if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {
- checkedLoadedFor[`${codes[0]}-${ns}`] = true;
- this.logger.warn(`key "${usedKey}" for languages "${codes.join(", ")}" won't get resolved as namespace "${usedNS}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
- }
- codes.forEach((code)=>{
- if (this.isValidLookup(found)) return;
- usedLng = code;
- const finalKeys = [
- key
- ];
- if (this.i18nFormat && this.i18nFormat.addLookupKeys) {
- this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);
- } else {
- let pluralSuffix;
- if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);
- const zeroSuffix = `${this.options.pluralSeparator}zero`;
- const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;
- if (needsPluralHandling) {
- finalKeys.push(key + pluralSuffix);
- if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {
- finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));
- }
- if (needsZeroSuffixLookup) {
- finalKeys.push(key + zeroSuffix);
- }
- }
- if (needsContextHandling) {
- const contextKey = `${key}${this.options.contextSeparator}${options.context}`;
- finalKeys.push(contextKey);
- if (needsPluralHandling) {
- finalKeys.push(contextKey + pluralSuffix);
- if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {
- finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));
- }
- if (needsZeroSuffixLookup) {
- finalKeys.push(contextKey + zeroSuffix);
- }
- }
- }
- }
- let possibleKey;
- while(possibleKey = finalKeys.pop()){
- if (!this.isValidLookup(found)) {
- exactUsedKey = possibleKey;
- found = this.getResource(code, ns, possibleKey, options);
- }
- }
- });
- });
- });
- return {
- res: found,
- usedKey,
- exactUsedKey,
- usedLng,
- usedNS
- };
- }
- isValidLookup(res) {
- return res !== void 0 && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === "");
- }
- getResource(code, ns, key) {
- let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
- if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);
- return this.resourceStore.getResource(code, ns, key, options);
- }
- static hasDefaultValue(options) {
- const prefix = "defaultValue";
- for(const option in options){
- if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && void 0 !== options[option]) {
- return true;
- }
- }
- return false;
- }
- constructor(services){
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- super();
- copy([
- "resourceStore",
- "languageUtils",
- "pluralResolver",
- "interpolator",
- "backendConnector",
- "i18nFormat",
- "utils"
- ], services, this);
- this.options = options;
- if (this.options.keySeparator === void 0) {
- this.options.keySeparator = ".";
- }
- this.logger = baseLogger.create("translator");
- }
- };
- function capitalize(string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
- }
- var LanguageUtil = class {
- getScriptPartFromCode(code) {
- code = getCleanedCode(code);
- if (!code || code.indexOf("-") < 0) return null;
- const p = code.split("-");
- if (p.length === 2) return null;
- p.pop();
- if (p[p.length - 1].toLowerCase() === "x") return null;
- return this.formatLanguageCode(p.join("-"));
- }
- getLanguagePartFromCode(code) {
- code = getCleanedCode(code);
- if (!code || code.indexOf("-") < 0) return code;
- const p = code.split("-");
- return this.formatLanguageCode(p[0]);
- }
- formatLanguageCode(code) {
- if (typeof code === "string" && code.indexOf("-") > -1) {
- const specialCases = [
- "hans",
- "hant",
- "latn",
- "cyrl",
- "cans",
- "mong",
- "arab"
- ];
- let p = code.split("-");
- if (this.options.lowerCaseLng) {
- p = p.map((part)=>part.toLowerCase());
- } else if (p.length === 2) {
- p[0] = p[0].toLowerCase();
- p[1] = p[1].toUpperCase();
- if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
- } else if (p.length === 3) {
- p[0] = p[0].toLowerCase();
- if (p[1].length === 2) p[1] = p[1].toUpperCase();
- if (p[0] !== "sgn" && p[2].length === 2) p[2] = p[2].toUpperCase();
- if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());
- if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());
- }
- return p.join("-");
- }
- return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;
- }
- isSupportedCode(code) {
- if (this.options.load === "languageOnly" || this.options.nonExplicitSupportedLngs) {
- code = this.getLanguagePartFromCode(code);
- }
- return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;
- }
- getBestMatchFromCodes(codes) {
- if (!codes) return null;
- let found;
- codes.forEach((code)=>{
- if (found) return;
- const cleanedLng = this.formatLanguageCode(code);
- if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;
- });
- if (!found && this.options.supportedLngs) {
- codes.forEach((code)=>{
- if (found) return;
- const lngOnly = this.getLanguagePartFromCode(code);
- if (this.isSupportedCode(lngOnly)) return found = lngOnly;
- found = this.options.supportedLngs.find((supportedLng)=>{
- if (supportedLng === lngOnly) return supportedLng;
- if (supportedLng.indexOf("-") < 0 && lngOnly.indexOf("-") < 0) return;
- if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;
- });
- });
- }
- if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];
- return found;
- }
- getFallbackCodes(fallbacks, code) {
- if (!fallbacks) return [];
- if (typeof fallbacks === "function") fallbacks = fallbacks(code);
- if (typeof fallbacks === "string") fallbacks = [
- fallbacks
- ];
- if (Object.prototype.toString.apply(fallbacks) === "[object Array]") return fallbacks;
- if (!code) return fallbacks.default || [];
- let found = fallbacks[code];
- if (!found) found = fallbacks[this.getScriptPartFromCode(code)];
- if (!found) found = fallbacks[this.formatLanguageCode(code)];
- if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];
- if (!found) found = fallbacks.default;
- return found || [];
- }
- toResolveHierarchy(code, fallbackCode) {
- const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);
- const codes = [];
- const addCode = (c)=>{
- if (!c) return;
- if (this.isSupportedCode(c)) {
- codes.push(c);
- } else {
- this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);
- }
- };
- if (typeof code === "string" && (code.indexOf("-") > -1 || code.indexOf("_") > -1)) {
- if (this.options.load !== "languageOnly") addCode(this.formatLanguageCode(code));
- if (this.options.load !== "languageOnly" && this.options.load !== "currentOnly") addCode(this.getScriptPartFromCode(code));
- if (this.options.load !== "currentOnly") addCode(this.getLanguagePartFromCode(code));
- } else if (typeof code === "string") {
- addCode(this.formatLanguageCode(code));
- }
- fallbackCodes.forEach((fc)=>{
- if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));
- });
- return codes;
- }
- constructor(options){
- this.options = options;
- this.supportedLngs = this.options.supportedLngs || false;
- this.logger = baseLogger.create("languageUtils");
- }
- };
- var sets = [
- {
- lngs: [
- "ach",
- "ak",
- "am",
- "arn",
- "br",
- "fil",
- "gun",
- "ln",
- "mfe",
- "mg",
- "mi",
- "oc",
- "pt",
- "pt-BR",
- "tg",
- "tl",
- "ti",
- "tr",
- "uz",
- "wa"
- ],
- nr: [
- 1,
- 2
- ],
- fc: 1
- },
- {
- lngs: [
- "af",
- "an",
- "ast",
- "az",
- "bg",
- "bn",
- "ca",
- "da",
- "de",
- "dev",
- "el",
- "en",
- "eo",
- "es",
- "et",
- "eu",
- "fi",
- "fo",
- "fur",
- "fy",
- "gl",
- "gu",
- "ha",
- "hi",
- "hu",
- "hy",
- "ia",
- "it",
- "kk",
- "kn",
- "ku",
- "lb",
- "mai",
- "ml",
- "mn",
- "mr",
- "nah",
- "nap",
- "nb",
- "ne",
- "nl",
- "nn",
- "no",
- "nso",
- "pa",
- "pap",
- "pms",
- "ps",
- "pt-PT",
- "rm",
- "sco",
- "se",
- "si",
- "so",
- "son",
- "sq",
- "sv",
- "sw",
- "ta",
- "te",
- "tk",
- "ur",
- "yo"
- ],
- nr: [
- 1,
- 2
- ],
- fc: 2
- },
- {
- lngs: [
- "ay",
- "bo",
- "cgg",
- "fa",
- "ht",
- "id",
- "ja",
- "jbo",
- "ka",
- "km",
- "ko",
- "ky",
- "lo",
- "ms",
- "sah",
- "su",
- "th",
- "tt",
- "ug",
- "vi",
- "wo",
- "zh"
- ],
- nr: [
- 1
- ],
- fc: 3
- },
- {
- lngs: [
- "be",
- "bs",
- "cnr",
- "dz",
- "hr",
- "ru",
- "sr",
- "uk"
- ],
- nr: [
- 1,
- 2,
- 5
- ],
- fc: 4
- },
- {
- lngs: [
- "ar"
- ],
- nr: [
- 0,
- 1,
- 2,
- 3,
- 11,
- 100
- ],
- fc: 5
- },
- {
- lngs: [
- "cs",
- "sk"
- ],
- nr: [
- 1,
- 2,
- 5
- ],
- fc: 6
- },
- {
- lngs: [
- "csb",
- "pl"
- ],
- nr: [
- 1,
- 2,
- 5
- ],
- fc: 7
- },
- {
- lngs: [
- "cy"
- ],
- nr: [
- 1,
- 2,
- 3,
- 8
- ],
- fc: 8
- },
- {
- lngs: [
- "fr"
- ],
- nr: [
- 1,
- 2
- ],
- fc: 9
- },
- {
- lngs: [
- "ga"
- ],
- nr: [
- 1,
- 2,
- 3,
- 7,
- 11
- ],
- fc: 10
- },
- {
- lngs: [
- "gd"
- ],
- nr: [
- 1,
- 2,
- 3,
- 20
- ],
- fc: 11
- },
- {
- lngs: [
- "is"
- ],
- nr: [
- 1,
- 2
- ],
- fc: 12
- },
- {
- lngs: [
- "jv"
- ],
- nr: [
- 0,
- 1
- ],
- fc: 13
- },
- {
- lngs: [
- "kw"
- ],
- nr: [
- 1,
- 2,
- 3,
- 4
- ],
- fc: 14
- },
- {
- lngs: [
- "lt"
- ],
- nr: [
- 1,
- 2,
- 10
- ],
- fc: 15
- },
- {
- lngs: [
- "lv"
- ],
- nr: [
- 1,
- 2,
- 0
- ],
- fc: 16
- },
- {
- lngs: [
- "mk"
- ],
- nr: [
- 1,
- 2
- ],
- fc: 17
- },
- {
- lngs: [
- "mnk"
- ],
- nr: [
- 0,
- 1,
- 2
- ],
- fc: 18
- },
- {
- lngs: [
- "mt"
- ],
- nr: [
- 1,
- 2,
- 11,
- 20
- ],
- fc: 19
- },
- {
- lngs: [
- "or"
- ],
- nr: [
- 2,
- 1
- ],
- fc: 2
- },
- {
- lngs: [
- "ro"
- ],
- nr: [
- 1,
- 2,
- 20
- ],
- fc: 20
- },
- {
- lngs: [
- "sl"
- ],
- nr: [
- 5,
- 1,
- 2,
- 3
- ],
- fc: 21
- },
- {
- lngs: [
- "he",
- "iw"
- ],
- nr: [
- 1,
- 2,
- 20,
- 21
- ],
- fc: 22
- }
- ];
- var _rulesPluralsTypes = {
- 1: function(n) {
- return Number(n > 1);
- },
- 2: function(n) {
- return Number(n != 1);
- },
- 3: function(n) {
- return 0;
- },
- 4: function(n) {
- return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
- },
- 5: function(n) {
- return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);
- },
- 6: function(n) {
- return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);
- },
- 7: function(n) {
- return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
- },
- 8: function(n) {
- return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);
- },
- 9: function(n) {
- return Number(n >= 2);
- },
- 10: function(n) {
- return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);
- },
- 11: function(n) {
- return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);
- },
- 12: function(n) {
- return Number(n % 10 != 1 || n % 100 == 11);
- },
- 13: function(n) {
- return Number(n !== 0);
- },
- 14: function(n) {
- return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);
- },
- 15: function(n) {
- return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
- },
- 16: function(n) {
- return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);
- },
- 17: function(n) {
- return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);
- },
- 18: function(n) {
- return Number(n == 0 ? 0 : n == 1 ? 1 : 2);
- },
- 19: function(n) {
- return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);
- },
- 20: function(n) {
- return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);
- },
- 21: function(n) {
- return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);
- },
- 22: function(n) {
- return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);
- }
- };
- var nonIntlVersions = [
- "v1",
- "v2",
- "v3"
- ];
- var intlVersions = [
- "v4"
- ];
- var suffixesOrder = {
- zero: 0,
- one: 1,
- two: 2,
- few: 3,
- many: 4,
- other: 5
- };
- function createRules() {
- const rules = {};
- sets.forEach((set)=>{
- set.lngs.forEach((l)=>{
- rules[l] = {
- numbers: set.nr,
- plurals: _rulesPluralsTypes[set.fc]
- };
- });
- });
- return rules;
- }
- var PluralResolver = class {
- addRule(lng, obj) {
- this.rules[lng] = obj;
- }
- getRule(code) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- if (this.shouldUseIntlApi()) {
- try {
- return new Intl.PluralRules(getCleanedCode(code), {
- type: options.ordinal ? "ordinal" : "cardinal"
- });
- } catch (e) {
- return;
- }
- }
- return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];
- }
- needsPlural(code) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- const rule = this.getRule(code, options);
- if (this.shouldUseIntlApi()) {
- return rule && rule.resolvedOptions().pluralCategories.length > 1;
- }
- return rule && rule.numbers.length > 1;
- }
- getPluralFormsOfKey(code, key) {
- let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
- return this.getSuffixes(code, options).map((suffix)=>`${key}${suffix}`);
- }
- getSuffixes(code) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- const rule = this.getRule(code, options);
- if (!rule) {
- return [];
- }
- if (this.shouldUseIntlApi()) {
- return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2)=>suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map((pluralCategory)=>`${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ""}${pluralCategory}`);
- }
- return rule.numbers.map((number)=>this.getSuffix(code, number, options));
- }
- getSuffix(code, count) {
- let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
- const rule = this.getRule(code, options);
- if (rule) {
- if (this.shouldUseIntlApi()) {
- return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ""}${rule.select(count)}`;
- }
- return this.getSuffixRetroCompatible(rule, count);
- }
- this.logger.warn(`no plural rule found for: ${code}`);
- return "";
- }
- getSuffixRetroCompatible(rule, count) {
- const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));
- let suffix = rule.numbers[idx];
- if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
- if (suffix === 2) {
- suffix = "plural";
- } else if (suffix === 1) {
- suffix = "";
- }
- }
- const returnSuffix = ()=>this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();
- if (this.options.compatibilityJSON === "v1") {
- if (suffix === 1) return "";
- if (typeof suffix === "number") return `_plural_${suffix.toString()}`;
- return returnSuffix();
- } else if (this.options.compatibilityJSON === "v2") {
- return returnSuffix();
- } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {
- return returnSuffix();
- }
- return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();
- }
- shouldUseIntlApi() {
- return !nonIntlVersions.includes(this.options.compatibilityJSON);
- }
- constructor(languageUtils){
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- this.languageUtils = languageUtils;
- this.options = options;
- this.logger = baseLogger.create("pluralResolver");
- if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === "undefined" || !Intl.PluralRules)) {
- this.options.compatibilityJSON = "v3";
- this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.");
- }
- this.rules = createRules();
- }
- };
- function deepFindWithDefaults(data, defaultData, key) {
- let keySeparator = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ".";
- let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : true;
- let path = getPathWithDefaults(data, defaultData, key);
- if (!path && ignoreJSONStructure && typeof key === "string") {
- path = deepFind(data, key, keySeparator);
- if (path === void 0) path = deepFind(defaultData, key, keySeparator);
- }
- return path;
- }
- var Interpolator = class {
- init() {
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- if (!options.interpolation) options.interpolation = {
- escapeValue: true
- };
- const iOpts = options.interpolation;
- this.escape = iOpts.escape !== void 0 ? iOpts.escape : escape;
- this.escapeValue = iOpts.escapeValue !== void 0 ? iOpts.escapeValue : true;
- this.useRawValueToEscape = iOpts.useRawValueToEscape !== void 0 ? iOpts.useRawValueToEscape : false;
- this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || "{{";
- this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || "}}";
- this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
- this.unescapePrefix = iOpts.unescapeSuffix ? "" : iOpts.unescapePrefix || "-";
- this.unescapeSuffix = this.unescapePrefix ? "" : iOpts.unescapeSuffix || "";
- this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape("$t(");
- this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(")");
- this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ",";
- this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1e3;
- this.alwaysFormat = iOpts.alwaysFormat !== void 0 ? iOpts.alwaysFormat : false;
- this.resetRegExp();
- }
- reset() {
- if (this.options) this.init(this.options);
- }
- resetRegExp() {
- const regexpStr = `${this.prefix}(.+?)${this.suffix}`;
- this.regexp = new RegExp(regexpStr, "g");
- const regexpUnescapeStr = `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;
- this.regexpUnescape = new RegExp(regexpUnescapeStr, "g");
- const nestingRegexpStr = `${this.nestingPrefix}(.+?)${this.nestingSuffix}`;
- this.nestingRegexp = new RegExp(nestingRegexpStr, "g");
- }
- interpolate(str, data, lng, options) {
- let match;
- let value;
- let replaces;
- const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};
- function regexSafe(val) {
- return val.replace(/\$/g, "$$$$");
- }
- const handleFormat = (key)=>{
- if (key.indexOf(this.formatSeparator) < 0) {
- const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);
- return this.alwaysFormat ? this.format(path, void 0, lng, _objectSpreadProps(_objectSpread({}, options, data), {
- interpolationkey: key
- })) : path;
- }
- const p = key.split(this.formatSeparator);
- const k = p.shift().trim();
- const f = p.join(this.formatSeparator).trim();
- return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, _objectSpreadProps(_objectSpread({}, options, data), {
- interpolationkey: k
- }));
- };
- this.resetRegExp();
- const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;
- const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== void 0 ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;
- const todos = [
- {
- regex: this.regexpUnescape,
- safeValue: (val)=>regexSafe(val)
- },
- {
- regex: this.regexp,
- safeValue: (val)=>this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)
- }
- ];
- todos.forEach((todo)=>{
- replaces = 0;
- while(match = todo.regex.exec(str)){
- const matchedVar = match[1].trim();
- value = handleFormat(matchedVar);
- if (value === void 0) {
- if (typeof missingInterpolationHandler === "function") {
- const temp = missingInterpolationHandler(str, match, options);
- value = typeof temp === "string" ? temp : "";
- } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {
- value = "";
- } else if (skipOnVariables) {
- value = match[0];
- continue;
- } else {
- this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);
- value = "";
- }
- } else if (typeof value !== "string" && !this.useRawValueToEscape) {
- value = makeString(value);
- }
- const safeValue = todo.safeValue(value);
- str = str.replace(match[0], safeValue);
- if (skipOnVariables) {
- todo.regex.lastIndex += value.length;
- todo.regex.lastIndex -= match[0].length;
- } else {
- todo.regex.lastIndex = 0;
- }
- replaces++;
- if (replaces >= this.maxReplaces) {
- break;
- }
- }
- });
- return str;
- }
- nest(str, fc) {
- let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
- let match;
- let value;
- let clonedOptions;
- function handleHasOptions(key, inheritedOptions) {
- const sep = this.nestingOptionsSeparator;
- if (key.indexOf(sep) < 0) return key;
- const c = key.split(new RegExp(`${sep}[ ]*{`));
- let optionsString = `{${c[1]}`;
- key = c[0];
- optionsString = this.interpolate(optionsString, clonedOptions);
- const matchedSingleQuotes = optionsString.match(/'/g);
- const matchedDoubleQuotes = optionsString.match(/"/g);
- if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {
- optionsString = optionsString.replace(/'/g, '"');
- }
- try {
- clonedOptions = JSON.parse(optionsString);
- if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);
- } catch (e) {
- this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);
- return `${key}${sep}${optionsString}`;
- }
- delete clonedOptions.defaultValue;
- return key;
- }
- while(match = this.nestingRegexp.exec(str)){
- let formatters = [];
- clonedOptions = _objectSpread({}, options);
- clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== "string" ? clonedOptions.replace : clonedOptions;
- clonedOptions.applyPostProcessor = false;
- delete clonedOptions.defaultValue;
- let doReduce = false;
- if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {
- const r = match[1].split(this.formatSeparator).map((elem)=>elem.trim());
- match[1] = r.shift();
- formatters = r;
- doReduce = true;
- }
- value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);
- if (value && match[0] === str && typeof value !== "string") return value;
- if (typeof value !== "string") value = makeString(value);
- if (!value) {
- this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);
- value = "";
- }
- if (doReduce) {
- value = formatters.reduce((v, f)=>this.format(v, f, options.lng, _objectSpreadProps(_objectSpread({}, options), {
- interpolationkey: match[1].trim()
- })), value.trim());
- }
- str = str.replace(match[0], value);
- this.regexp.lastIndex = 0;
- }
- return str;
- }
- constructor(){
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- this.logger = baseLogger.create("interpolator");
- this.options = options;
- this.format = options.interpolation && options.interpolation.format || ((value)=>value);
- this.init(options);
- }
- };
- function parseFormatStr(formatStr) {
- let formatName = formatStr.toLowerCase().trim();
- const formatOptions = {};
- if (formatStr.indexOf("(") > -1) {
- const p = formatStr.split("(");
- formatName = p[0].toLowerCase().trim();
- const optStr = p[1].substring(0, p[1].length - 1);
- if (formatName === "currency" && optStr.indexOf(":") < 0) {
- if (!formatOptions.currency) formatOptions.currency = optStr.trim();
- } else if (formatName === "relativetime" && optStr.indexOf(":") < 0) {
- if (!formatOptions.range) formatOptions.range = optStr.trim();
- } else {
- const opts = optStr.split(";");
- opts.forEach((opt)=>{
- if (!opt) return;
- const [key, ...rest] = opt.split(":");
- const val = rest.join(":").trim().replace(/^'+|'+$/g, "");
- if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;
- if (val === "false") formatOptions[key.trim()] = false;
- if (val === "true") formatOptions[key.trim()] = true;
- if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);
- });
- }
- }
- return {
- formatName,
- formatOptions
- };
- }
- function createCachedFormatter(fn) {
- const cache = {};
- return function invokeFormatter(val, lng, options) {
- const key = lng + JSON.stringify(options);
- let formatter = cache[key];
- if (!formatter) {
- formatter = fn(getCleanedCode(lng), options);
- cache[key] = formatter;
- }
- return formatter(val);
- };
- }
- var Formatter = class {
- init(services) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
- interpolation: {}
- };
- const iOpts = options.interpolation;
- this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ",";
- }
- add(name, fc) {
- this.formats[name.toLowerCase().trim()] = fc;
- }
- addCached(name, fc) {
- this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);
- }
- format(value, format, lng) {
- let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
- const formats = format.split(this.formatSeparator);
- const result = formats.reduce((mem, f)=>{
- const { formatName , formatOptions } = parseFormatStr(f);
- if (this.formats[formatName]) {
- let formatted = mem;
- try {
- const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};
- const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;
- formatted = this.formats[formatName](mem, l, _objectSpread({}, formatOptions, options, valOptions));
- } catch (error) {
- this.logger.warn(error);
- }
- return formatted;
- } else {
- this.logger.warn(`there was no format function for ${formatName}`);
- }
- return mem;
- }, value);
- return result;
- }
- constructor(){
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- this.logger = baseLogger.create("formatter");
- this.options = options;
- this.formats = {
- number: createCachedFormatter((lng, opt)=>{
- const formatter = new Intl.NumberFormat(lng, _objectSpread({}, opt));
- return (val)=>formatter.format(val);
- }),
- currency: createCachedFormatter((lng, opt)=>{
- const formatter = new Intl.NumberFormat(lng, _objectSpreadProps(_objectSpread({}, opt), {
- style: "currency"
- }));
- return (val)=>formatter.format(val);
- }),
- datetime: createCachedFormatter((lng, opt)=>{
- const formatter = new Intl.DateTimeFormat(lng, _objectSpread({}, opt));
- return (val)=>formatter.format(val);
- }),
- relativetime: createCachedFormatter((lng, opt)=>{
- const formatter = new Intl.RelativeTimeFormat(lng, _objectSpread({}, opt));
- return (val)=>formatter.format(val, opt.range || "day");
- }),
- list: createCachedFormatter((lng, opt)=>{
- const formatter = new Intl.ListFormat(lng, _objectSpread({}, opt));
- return (val)=>formatter.format(val);
- })
- };
- this.init(options);
- }
- };
- function removePending(q, name) {
- if (q.pending[name] !== void 0) {
- delete q.pending[name];
- q.pendingCount--;
- }
- }
- var Connector = class extends EventEmitter {
- queueLoad(languages, namespaces, options, callback) {
- const toLoad = {};
- const pending = {};
- const toLoadLanguages = {};
- const toLoadNamespaces = {};
- languages.forEach((lng)=>{
- let hasAllNamespaces = true;
- namespaces.forEach((ns)=>{
- const name = `${lng}|${ns}`;
- if (!options.reload && this.store.hasResourceBundle(lng, ns)) {
- this.state[name] = 2;
- } else if (this.state[name] < 0) ;
- else if (this.state[name] === 1) {
- if (pending[name] === void 0) pending[name] = true;
- } else {
- this.state[name] = 1;
- hasAllNamespaces = false;
- if (pending[name] === void 0) pending[name] = true;
- if (toLoad[name] === void 0) toLoad[name] = true;
- if (toLoadNamespaces[ns] === void 0) toLoadNamespaces[ns] = true;
- }
- });
- if (!hasAllNamespaces) toLoadLanguages[lng] = true;
- });
- if (Object.keys(toLoad).length || Object.keys(pending).length) {
- this.queue.push({
- pending,
- pendingCount: Object.keys(pending).length,
- loaded: {},
- errors: [],
- callback
- });
- }
- return {
- toLoad: Object.keys(toLoad),
- pending: Object.keys(pending),
- toLoadLanguages: Object.keys(toLoadLanguages),
- toLoadNamespaces: Object.keys(toLoadNamespaces)
- };
- }
- loaded(name, err, data) {
- const s = name.split("|");
- const lng = s[0];
- const ns = s[1];
- if (err) this.emit("failedLoading", lng, ns, err);
- if (data) {
- this.store.addResourceBundle(lng, ns, data);
- }
- this.state[name] = err ? -1 : 2;
- const loaded = {};
- this.queue.forEach((q)=>{
- pushPath(q.loaded, [
- lng
- ], ns);
- removePending(q, name);
- if (err) q.errors.push(err);
- if (q.pendingCount === 0 && !q.done) {
- Object.keys(q.loaded).forEach((l)=>{
- if (!loaded[l]) loaded[l] = {};
- const loadedKeys = q.loaded[l];
- if (loadedKeys.length) {
- loadedKeys.forEach((n)=>{
- if (loaded[l][n] === void 0) loaded[l][n] = true;
- });
- }
- });
- q.done = true;
- if (q.errors.length) {
- q.callback(q.errors);
- } else {
- q.callback();
- }
- }
- });
- this.emit("loaded", loaded);
- this.queue = this.queue.filter((q)=>!q.done);
- }
- read(lng, ns, fcName) {
- let tried = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
- let wait = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : this.retryTimeout;
- let callback = arguments.length > 5 ? arguments[5] : void 0;
- if (!lng.length) return callback(null, {});
- if (this.readingCalls >= this.maxParallelReads) {
- this.waitingReads.push({
- lng,
- ns,
- fcName,
- tried,
- wait,
- callback
- });
- return;
- }
- this.readingCalls++;
- const resolver = (err, data)=>{
- this.readingCalls--;
- if (this.waitingReads.length > 0) {
- const next = this.waitingReads.shift();
- this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);
- }
- if (err && data && tried < this.maxRetries) {
- setTimeout(()=>{
- this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);
- }, wait);
- return;
- }
- callback(err, data);
- };
- const fc = this.backend[fcName].bind(this.backend);
- if (fc.length === 2) {
- try {
- const r = fc(lng, ns);
- if (r && typeof r.then === "function") {
- r.then((data)=>resolver(null, data)).catch(resolver);
- } else {
- resolver(null, r);
- }
- } catch (err) {
- resolver(err);
- }
- return;
- }
- return fc(lng, ns, resolver);
- }
- prepareLoading(languages, namespaces) {
- let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
- let callback = arguments.length > 3 ? arguments[3] : void 0;
- if (!this.backend) {
- this.logger.warn("No backend was added via i18next.use. Will not load resources.");
- return callback && callback();
- }
- if (typeof languages === "string") languages = this.languageUtils.toResolveHierarchy(languages);
- if (typeof namespaces === "string") namespaces = [
- namespaces
- ];
- const toLoad = this.queueLoad(languages, namespaces, options, callback);
- if (!toLoad.toLoad.length) {
- if (!toLoad.pending.length) callback();
- return null;
- }
- toLoad.toLoad.forEach((name)=>{
- this.loadOne(name);
- });
- }
- load(languages, namespaces, callback) {
- this.prepareLoading(languages, namespaces, {}, callback);
- }
- reload(languages, namespaces, callback) {
- this.prepareLoading(languages, namespaces, {
- reload: true
- }, callback);
- }
- loadOne(name) {
- let prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
- const s = name.split("|");
- const lng = s[0];
- const ns = s[1];
- this.read(lng, ns, "read", void 0, void 0, (err, data)=>{
- if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);
- if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);
- this.loaded(name, err, data);
- });
- }
- saveMissing(languages, namespace, key, fallbackValue, isUpdate) {
- let options = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : {};
- let clb = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : ()=>{};
- if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {
- this.logger.warn(`did not save key "${key}" as the namespace "${namespace}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
- return;
- }
- if (key === void 0 || key === null || key === "") return;
- if (this.backend && this.backend.create) {
- const opts = _objectSpreadProps(_objectSpread({}, options), {
- isUpdate
- });
- const fc = this.backend.create.bind(this.backend);
- if (fc.length < 6) {
- try {
- let r;
- if (fc.length === 5) {
- r = fc(languages, namespace, key, fallbackValue, opts);
- } else {
- r = fc(languages, namespace, key, fallbackValue);
- }
- if (r && typeof r.then === "function") {
- r.then((data)=>clb(null, data)).catch(clb);
- } else {
- clb(null, r);
- }
- } catch (err) {
- clb(err);
- }
- } else {
- fc(languages, namespace, key, fallbackValue, clb, opts);
- }
- }
- if (!languages || !languages[0]) return;
- this.store.addResource(languages[0], namespace, key, fallbackValue);
- }
- constructor(backend, store, services){
- let options = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
- super();
- this.backend = backend;
- this.store = store;
- this.services = services;
- this.languageUtils = services.languageUtils;
- this.options = options;
- this.logger = baseLogger.create("backendConnector");
- this.waitingReads = [];
- this.maxParallelReads = options.maxParallelReads || 10;
- this.readingCalls = 0;
- this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;
- this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;
- this.state = {};
- this.queue = [];
- if (this.backend && this.backend.init) {
- this.backend.init(services, options.backend, options);
- }
- }
- };
- function get() {
- return {
- debug: false,
- initImmediate: true,
- ns: [
- "translation"
- ],
- defaultNS: [
- "translation"
- ],
- fallbackLng: [
- "dev"
- ],
- fallbackNS: false,
- supportedLngs: false,
- nonExplicitSupportedLngs: false,
- load: "all",
- preload: false,
- simplifyPluralSuffix: true,
- keySeparator: ".",
- nsSeparator: ":",
- pluralSeparator: "_",
- contextSeparator: "_",
- partialBundledLanguages: false,
- saveMissing: false,
- updateMissing: false,
- saveMissingTo: "fallback",
- saveMissingPlurals: true,
- missingKeyHandler: false,
- missingInterpolationHandler: false,
- postProcess: false,
- postProcessPassResolved: false,
- returnNull: false,
- returnEmptyString: true,
- returnObjects: false,
- joinArrays: false,
- returnedObjectHandler: false,
- parseMissingKeyHandler: false,
- appendNamespaceToMissingKey: false,
- appendNamespaceToCIMode: false,
- overloadTranslationOptionHandler: function handle(args) {
- let ret = {};
- if (typeof args[1] === "object") ret = args[1];
- if (typeof args[1] === "string") ret.defaultValue = args[1];
- if (typeof args[2] === "string") ret.tDescription = args[2];
- if (typeof args[2] === "object" || typeof args[3] === "object") {
- const options = args[3] || args[2];
- Object.keys(options).forEach((key)=>{
- ret[key] = options[key];
- });
- }
- return ret;
- },
- interpolation: {
- escapeValue: true,
- format: (value, format, lng, options)=>value,
- prefix: "{{",
- suffix: "}}",
- formatSeparator: ",",
- unescapePrefix: "-",
- nestingPrefix: "$t(",
- nestingSuffix: ")",
- nestingOptionsSeparator: ",",
- maxReplaces: 1e3,
- skipOnVariables: true
- }
- };
- }
- function transformOptions(options) {
- if (typeof options.ns === "string") options.ns = [
- options.ns
- ];
- if (typeof options.fallbackLng === "string") options.fallbackLng = [
- options.fallbackLng
- ];
- if (typeof options.fallbackNS === "string") options.fallbackNS = [
- options.fallbackNS
- ];
- if (options.supportedLngs && options.supportedLngs.indexOf("cimode") < 0) {
- options.supportedLngs = options.supportedLngs.concat([
- "cimode"
- ]);
- }
- return options;
- }
- function noop() {}
- function bindMemberFunctions(inst) {
- const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));
- mems.forEach((mem)=>{
- if (typeof inst[mem] === "function") {
- inst[mem] = inst[mem].bind(inst);
- }
- });
- }
- var I18n = class extends EventEmitter {
- init() {
- var _this = this;
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- let callback = arguments.length > 1 ? arguments[1] : void 0;
- if (typeof options === "function") {
- callback = options;
- options = {};
- }
- if (!options.defaultNS && options.defaultNS !== false && options.ns) {
- if (typeof options.ns === "string") {
- options.defaultNS = options.ns;
- } else if (options.ns.indexOf("translation") < 0) {
- options.defaultNS = options.ns[0];
- }
- }
- const defOpts = get();
- this.options = _objectSpread({}, defOpts, this.options, transformOptions(options));
- if (this.options.compatibilityAPI !== "v1") {
- this.options.interpolation = _objectSpread({}, defOpts.interpolation, this.options.interpolation);
- }
- if (options.keySeparator !== void 0) {
- this.options.userDefinedKeySeparator = options.keySeparator;
- }
- if (options.nsSeparator !== void 0) {
- this.options.userDefinedNsSeparator = options.nsSeparator;
- }
- function createClassOnDemand(ClassOrObject) {
- if (!ClassOrObject) return null;
- if (typeof ClassOrObject === "function") return new ClassOrObject();
- return ClassOrObject;
- }
- if (!this.options.isClone) {
- if (this.modules.logger) {
- baseLogger.init(createClassOnDemand(this.modules.logger), this.options);
- } else {
- baseLogger.init(null, this.options);
- }
- let formatter;
- if (this.modules.formatter) {
- formatter = this.modules.formatter;
- } else if (typeof Intl !== "undefined") {
- formatter = Formatter;
- }
- const lu = new LanguageUtil(this.options);
- this.store = new ResourceStore(this.options.resources, this.options);
- const s = this.services;
- s.logger = baseLogger;
- s.resourceStore = this.store;
- s.languageUtils = lu;
- s.pluralResolver = new PluralResolver(lu, {
- prepend: this.options.pluralSeparator,
- compatibilityJSON: this.options.compatibilityJSON,
- simplifyPluralSuffix: this.options.simplifyPluralSuffix
- });
- if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {
- s.formatter = createClassOnDemand(formatter);
- s.formatter.init(s, this.options);
- this.options.interpolation.format = s.formatter.format.bind(s.formatter);
- }
- s.interpolator = new Interpolator(this.options);
- s.utils = {
- hasLoadedNamespace: this.hasLoadedNamespace.bind(this)
- };
- s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);
- s.backendConnector.on("*", function(event) {
- for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
- args[_key - 1] = arguments[_key];
- }
- _this.emit(event, ...args);
- });
- if (this.modules.languageDetector) {
- s.languageDetector = createClassOnDemand(this.modules.languageDetector);
- if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);
- }
- if (this.modules.i18nFormat) {
- s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);
- if (s.i18nFormat.init) s.i18nFormat.init(this);
- }
- this.translator = new Translator(this.services, this.options);
- this.translator.on("*", function(event) {
- for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++){
- args[_key2 - 1] = arguments[_key2];
- }
- _this.emit(event, ...args);
- });
- this.modules.external.forEach((m)=>{
- if (m.init) m.init(this);
- });
- }
- this.format = this.options.interpolation.format;
- if (!callback) callback = noop;
- if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {
- const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
- if (codes.length > 0 && codes[0] !== "dev") this.options.lng = codes[0];
- }
- if (!this.services.languageDetector && !this.options.lng) {
- this.logger.warn("init: no languageDetector is used and no lng is defined");
- }
- const storeApi = [
- "getResource",
- "hasResourceBundle",
- "getResourceBundle",
- "getDataByLanguage"
- ];
- storeApi.forEach((fcName)=>{
- this[fcName] = function() {
- return _this.store[fcName](...arguments);
- };
- });
- const storeApiChained = [
- "addResource",
- "addResources",
- "addResourceBundle",
- "removeResourceBundle"
- ];
- storeApiChained.forEach((fcName)=>{
- this[fcName] = function() {
- _this.store[fcName](...arguments);
- return _this;
- };
- });
- const deferred = defer();
- const load = ()=>{
- const finish = (err, t2)=>{
- if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn("init: i18next is already initialized. You should call init just once!");
- this.isInitialized = true;
- if (!this.options.isClone) this.logger.log("initialized", this.options);
- this.emit("initialized", this.options);
- deferred.resolve(t2);
- callback(err, t2);
- };
- if (this.languages && this.options.compatibilityAPI !== "v1" && !this.isInitialized) return finish(null, this.t.bind(this));
- this.changeLanguage(this.options.lng, finish);
- };
- if (this.options.resources || !this.options.initImmediate) {
- load();
- } else {
- setTimeout(load, 0);
- }
- return deferred;
- }
- loadResources(language) {
- let callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;
- let usedCallback = callback;
- const usedLng = typeof language === "string" ? language : this.language;
- if (typeof language === "function") usedCallback = language;
- if (!this.options.resources || this.options.partialBundledLanguages) {
- if (usedLng && usedLng.toLowerCase() === "cimode" && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();
- const toLoad = [];
- const append = (lng)=>{
- if (!lng) return;
- if (lng === "cimode") return;
- const lngs = this.services.languageUtils.toResolveHierarchy(lng);
- lngs.forEach((l)=>{
- if (l === "cimode") return;
- if (toLoad.indexOf(l) < 0) toLoad.push(l);
- });
- };
- if (!usedLng) {
- const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
- fallbacks.forEach((l)=>append(l));
- } else {
- append(usedLng);
- }
- if (this.options.preload) {
- this.options.preload.forEach((l)=>append(l));
- }
- this.services.backendConnector.load(toLoad, this.options.ns, (e)=>{
- if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);
- usedCallback(e);
- });
- } else {
- usedCallback(null);
- }
- }
- reloadResources(lngs, ns, callback) {
- const deferred = defer();
- if (!lngs) lngs = this.languages;
- if (!ns) ns = this.options.ns;
- if (!callback) callback = noop;
- this.services.backendConnector.reload(lngs, ns, (err)=>{
- deferred.resolve();
- callback(err);
- });
- return deferred;
- }
- use(module) {
- if (!module) throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");
- if (!module.type) throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");
- if (module.type === "backend") {
- this.modules.backend = module;
- }
- if (module.type === "logger" || module.log && module.warn && module.error) {
- this.modules.logger = module;
- }
- if (module.type === "languageDetector") {
- this.modules.languageDetector = module;
- }
- if (module.type === "i18nFormat") {
- this.modules.i18nFormat = module;
- }
- if (module.type === "postProcessor") {
- postProcessor.addPostProcessor(module);
- }
- if (module.type === "formatter") {
- this.modules.formatter = module;
- }
- if (module.type === "3rdParty") {
- this.modules.external.push(module);
- }
- return this;
- }
- setResolvedLanguage(l) {
- if (!l || !this.languages) return;
- if ([
- "cimode",
- "dev"
- ].indexOf(l) > -1) return;
- for(let li = 0; li < this.languages.length; li++){
- const lngInLngs = this.languages[li];
- if ([
- "cimode",
- "dev"
- ].indexOf(lngInLngs) > -1) continue;
- if (this.store.hasLanguageSomeTranslations(lngInLngs)) {
- this.resolvedLanguage = lngInLngs;
- break;
- }
- }
- }
- changeLanguage(lng, callback) {
- var _this2 = this;
- this.isLanguageChangingTo = lng;
- const deferred = defer();
- this.emit("languageChanging", lng);
- const setLngProps = (l)=>{
- this.language = l;
- this.languages = this.services.languageUtils.toResolveHierarchy(l);
- this.resolvedLanguage = void 0;
- this.setResolvedLanguage(l);
- };
- const done = (err, l)=>{
- if (l) {
- setLngProps(l);
- this.translator.changeLanguage(l);
- this.isLanguageChangingTo = void 0;
- this.emit("languageChanged", l);
- this.logger.log("languageChanged", l);
- } else {
- this.isLanguageChangingTo = void 0;
- }
- deferred.resolve(function() {
- return _this2.t(...arguments);
- });
- if (callback) callback(err, function() {
- return _this2.t(...arguments);
- });
- };
- const setLng = (lngs)=>{
- if (!lng && !lngs && this.services.languageDetector) lngs = [];
- const l = typeof lngs === "string" ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);
- if (l) {
- if (!this.language) {
- setLngProps(l);
- }
- if (!this.translator.language) this.translator.changeLanguage(l);
- if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);
- }
- this.loadResources(l, (err)=>{
- done(err, l);
- });
- };
- if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {
- setLng(this.services.languageDetector.detect());
- } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {
- if (this.services.languageDetector.detect.length === 0) {
- this.services.languageDetector.detect().then(setLng);
- } else {
- this.services.languageDetector.detect(setLng);
- }
- } else {
- setLng(lng);
- }
- return deferred;
- }
- getFixedT(lng, ns, keyPrefix) {
- var _this3 = this;
- const fixedT = function(key, opts) {
- let options;
- if (typeof opts !== "object") {
- for(var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++){
- rest[_key3 - 2] = arguments[_key3];
- }
- options = _this3.options.overloadTranslationOptionHandler([
- key,
- opts
- ].concat(rest));
- } else {
- options = _objectSpread({}, opts);
- }
- options.lng = options.lng || fixedT.lng;
- options.lngs = options.lngs || fixedT.lngs;
- options.ns = options.ns || fixedT.ns;
- options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;
- const keySeparator = _this3.options.keySeparator || ".";
- let resultKey;
- if (options.keyPrefix && Array.isArray(key)) {
- resultKey = key.map((k)=>`${options.keyPrefix}${keySeparator}${k}`);
- } else {
- resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;
- }
- return _this3.t(resultKey, options);
- };
- if (typeof lng === "string") {
- fixedT.lng = lng;
- } else {
- fixedT.lngs = lng;
- }
- fixedT.ns = ns;
- fixedT.keyPrefix = keyPrefix;
- return fixedT;
- }
- t() {
- return this.translator && this.translator.translate(...arguments);
- }
- exists() {
- return this.translator && this.translator.exists(...arguments);
- }
- setDefaultNamespace(ns) {
- this.options.defaultNS = ns;
- }
- hasLoadedNamespace(ns) {
- let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- if (!this.isInitialized) {
- this.logger.warn("hasLoadedNamespace: i18next was not initialized", this.languages);
- return false;
- }
- if (!this.languages || !this.languages.length) {
- this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty", this.languages);
- return false;
- }
- const lng = options.lng || this.resolvedLanguage || this.languages[0];
- const fallbackLng = this.options ? this.options.fallbackLng : false;
- const lastLng = this.languages[this.languages.length - 1];
- if (lng.toLowerCase() === "cimode") return true;
- const loadNotPending = (l, n)=>{
- const loadState = this.services.backendConnector.state[`${l}|${n}`];
- return loadState === -1 || loadState === 2;
- };
- if (options.precheck) {
- const preResult = options.precheck(this, loadNotPending);
- if (preResult !== void 0) return preResult;
- }
- if (this.hasResourceBundle(lng, ns)) return true;
- if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;
- if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
- return false;
- }
- loadNamespaces(ns, callback) {
- const deferred = defer();
- if (!this.options.ns) {
- if (callback) callback();
- return Promise.resolve();
- }
- if (typeof ns === "string") ns = [
- ns
- ];
- ns.forEach((n)=>{
- if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);
- });
- this.loadResources((err)=>{
- deferred.resolve();
- if (callback) callback(err);
- });
- return deferred;
- }
- loadLanguages(lngs, callback) {
- const deferred = defer();
- if (typeof lngs === "string") lngs = [
- lngs
- ];
- const preloaded = this.options.preload || [];
- const newLngs = lngs.filter((lng)=>preloaded.indexOf(lng) < 0);
- if (!newLngs.length) {
- if (callback) callback();
- return Promise.resolve();
- }
- this.options.preload = preloaded.concat(newLngs);
- this.loadResources((err)=>{
- deferred.resolve();
- if (callback) callback(err);
- });
- return deferred;
- }
- dir(lng) {
- if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);
- if (!lng) return "rtl";
- const rtlLngs = [
- "ar",
- "shu",
- "sqr",
- "ssh",
- "xaa",
- "yhd",
- "yud",
- "aao",
- "abh",
- "abv",
- "acm",
- "acq",
- "acw",
- "acx",
- "acy",
- "adf",
- "ads",
- "aeb",
- "aec",
- "afb",
- "ajp",
- "apc",
- "apd",
- "arb",
- "arq",
- "ars",
- "ary",
- "arz",
- "auz",
- "avl",
- "ayh",
- "ayl",
- "ayn",
- "ayp",
- "bbz",
- "pga",
- "he",
- "iw",
- "ps",
- "pbt",
- "pbu",
- "pst",
- "prp",
- "prd",
- "ug",
- "ur",
- "ydd",
- "yds",
- "yih",
- "ji",
- "yi",
- "hbo",
- "men",
- "xmn",
- "fa",
- "jpr",
- "peo",
- "pes",
- "prs",
- "dv",
- "sam",
- "ckb"
- ];
- const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());
- return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf("-arab") > 1 ? "rtl" : "ltr";
- }
- static createInstance() {
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- let callback = arguments.length > 1 ? arguments[1] : void 0;
- return new I18n(options, callback);
- }
- cloneInstance() {
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- let callback = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;
- const forkResourceStore = options.forkResourceStore;
- if (forkResourceStore) delete options.forkResourceStore;
- const mergedOptions = _objectSpread({}, this.options, options, {
- isClone: true
- });
- const clone = new I18n(mergedOptions);
- if (options.debug !== void 0 || options.prefix !== void 0) {
- clone.logger = clone.logger.clone(options);
- }
- const membersToCopy = [
- "store",
- "services",
- "language"
- ];
- membersToCopy.forEach((m)=>{
- clone[m] = this[m];
- });
- clone.services = _objectSpread({}, this.services);
- clone.services.utils = {
- hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
- };
- if (forkResourceStore) {
- clone.store = new ResourceStore(this.store.data, mergedOptions);
- clone.services.resourceStore = clone.store;
- }
- clone.translator = new Translator(clone.services, mergedOptions);
- clone.translator.on("*", function(event) {
- for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++){
- args[_key4 - 1] = arguments[_key4];
- }
- clone.emit(event, ...args);
- });
- clone.init(mergedOptions, callback);
- clone.translator.options = mergedOptions;
- clone.translator.backendConnector.services.utils = {
- hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)
- };
- return clone;
- }
- toJSON() {
- return {
- options: this.options,
- store: this.store,
- language: this.language,
- languages: this.languages,
- resolvedLanguage: this.resolvedLanguage
- };
- }
- constructor(){
- let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- let callback = arguments.length > 1 ? arguments[1] : void 0;
- super();
- this.options = transformOptions(options);
- this.services = {};
- this.logger = baseLogger;
- this.modules = {
- external: []
- };
- bindMemberFunctions(this);
- if (callback && !this.isInitialized && !options.isClone) {
- if (!this.options.initImmediate) {
- this.init(options, callback);
- return this;
- }
- setTimeout(()=>{
- this.init(options, callback);
- }, 0);
- }
- }
- };
- var instance = I18n.createInstance();
- instance.createInstance = I18n.createInstance;
- var createInstance = instance.createInstance;
- var dir = instance.dir;
- var init = instance.init;
- var loadResources = instance.loadResources;
- var reloadResources = instance.reloadResources;
- var use = instance.use;
- var changeLanguage = instance.changeLanguage;
- var getFixedT = instance.getFixedT;
- var t = instance.t;
- var exists = instance.exists;
- var setDefaultNamespace = instance.setDefaultNamespace;
- var hasLoadedNamespace = instance.hasLoadedNamespace;
- var loadNamespaces = instance.loadNamespaces;
- var loadLanguages = instance.loadLanguages;
- // entry:i18next
- var i18next_default = instance;
- /***/ })
- }]);
|