UNPKG

@voerkai18n/runtime

Version:
6 lines 24.3 kB
import {Mixin}from'ts-mixer';import {asyncSignal}from'asyncsignal';import {FlexVars}from'flexvars';/*** * ---=== VoerkaI18n Runtime ===--- * https://zhangfisher.github.io/voerka-i18n/* */ var se=Object.defineProperty;var ye=(i,e,t)=>e in i?se(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t;var a=(i,e)=>se(i,"name",{value:e,configurable:true}),y=(i=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(i,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):i)(function(i){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var c=(i,e,t)=>ye(i,typeof e!="symbol"?e+"":e,t);var v,re=(v=class{constructor(e){this._listeners=new Map,this._lastMessage={},this.options=Object.assign({ignoreError:false},e);}get listeners(){return this._listeners}on(){let e=arguments[0],t=arguments[1],s=arguments[2],{objectify:r=true,count:g=-1}=Object.assign({},s);this._listeners.has(e)||this._listeners.set(e,new Map);let o=++v.listenerSeqId,n=this._listeners.get(e);return n?.set(o,[t,g]),this._emitRetainEvent(e,o,n),r?{off:a(()=>{n?.delete(o),n?.size==0&&this._listeners.delete(e);},"off")}:o}onAny(e,t){return this.on("*",e,t)}_emitRetainEvent(e,t,s){e in this._lastMessage&&this._executeListener(t,s,this._lastMessage[e]);}once(e,t,s){return this.on(e,t,Object.assign({},s,{count:1}))}_forEachListeners(e){let t=false;for(let[s,r]of this._listeners.entries()){if(t)break;for(let[g,[o,n]]of r.entries()){if(t)break;t=e({event:s,listenerId:g,listener:o,count:n,eventListeners:r})===false;}}}_forEachEventListeners(e,t){let s=false,r=[[e,this._listeners.get(e)]];for(let[g,o]of r)if(o)for(let[n,[l,h]]of o){if(s)break;s=t({event:g,listenerId:n,listener:l,count:h,eventListeners:o})===false;}}off(){if(arguments.length==1){if(typeof arguments[0]=="number")this._forEachListeners(({listenerId:e,eventListeners:t,event:s})=>{if(e==arguments[0])return t.delete(e),this._listeners.get(s)?.size==0&&this._listeners.delete(s),false});else if(typeof arguments[0]=="function"){let e=arguments[0];this._forEachListeners(({listenerId:t,listener:s,eventListeners:r,event:g})=>{s==e&&(r.delete(t),this._listeners.get(g)?.size==0&&this._listeners.delete(g));});}}else arguments.length==2&&typeof arguments[0]=="string"&&typeof arguments[1]=="function"&&this._forEachEventListeners(arguments[0],({event:e,listenerId:t,listener:s,eventListeners:r})=>{e==arguments[0]&&s==arguments[1]&&(r.delete(t),this._listeners.get(e)?.size==0&&this._listeners.delete(e));});}waitFor(e,t=0){return new Promise((s,r)=>{let g,o=false,n;t>0&&(g=setTimeout(()=>{o=true,this.off(n),r(new Error("Timeout"));},t)),n=this.once(e,l=>{o||(clearTimeout(g),s(l));});})}offAll(e){e?this._listeners.delete(e):this._listeners.clear();}_executeListener(e,t,s){if(!t)return;let r=t.get(e);if(r)try{return r[0](s)}catch(g){if(!this.options.ignoreError)throw g}finally{r[1]>-1&&(r[1]=r[1]-1,r[1]==0&&t.delete(e));}}_executeListeners(e,t,s){let r=[];return this._forEachEventListeners(e,({event:g,listenerId:o,eventListeners:n})=>{r.push(this._executeListener(o,n,t)),typeof s=="function"&&s(o),n.size==0&&this._listeners.delete(g);}),r}emit(e,t,s){return s&&(this._lastMessage[e]=t),this._executeListeners(e,t)}async emitAsync(e,t,s){return await Promise.allSettled(this.emit(e,t,s))}},a(v,"l"),v);re.listenerSeqId=0;var M=re;(i=>typeof y<"u"?y:typeof Proxy<"u"?new Proxy(i,{get:a((e,t)=>(typeof y<"u"?y:e)[t],"get")}):i)(function(i){if(typeof y<"u")return y.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});function ie(){return Date.now().toString()+parseInt(String(Math.random()*1e3))}a(ie,"getId");function x(i,e=false){if(typeof i=="number")return true;if(typeof i!="string"||e)return false;try{if(i.includes(".")){let t=parseFloat(i);return i.endsWith(".")?!isNaN(t)&&String(t).length===i.length-1:!isNaN(t)&&String(t).length===i.length}else {let t=parseInt(i);return !isNaN(t)&&String(t).length===i.length}}catch{return false}}a(x,"r");function P(i){return x(i)}a(P,"isMessageId");function ae(i){return i&&typeof i=="object"&&i.__VoerkaI18nScope__}a(ae,"isI18nScope");async function ne(i){let e=await i.call(this);return e&&"__esModule"in e||Symbol.toStringTag in e?e.default:e}a(ne,"loadAsyncModule");function oe(i){return i&&typeof i.get=="function"&&typeof i.set=="function"&&typeof i.remove=="function"}a(oe,"isStorage");async function ge(i){return (await Promise.allSettled(i)).map(t=>t.status==="fulfilled"?t.value:t.reason)}a(ge,"execAsyncs");function C(){try{return typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"}catch{return false}}a(C,"isBrowser");var b=class b extends M{constructor(t){super();c(this,"__VoerkaI18nManager__",true);c(this,"_scopes",[]);c(this,"_appScope");if(b.instance)return b.instance;if(!t)throw new Error("create VoerkaI18nManager failed, appScope is required");this._registerAppScope(t),this._registerScopes(),this._loadPlugins(),b.instance=this,globalThis.VoerkaI18n=this;}get debug(){return this.scope.debug}get logger(){return this.scope.logger}get scopes(){return this._scopes}get activeLanguage(){return this._appScope.activeLanguage}get defaultLanguage(){return this._appScope.defaultLanguage}get loader(){return this._appScope.loader}get storage(){return this.scope.storage}get languages(){return this.scope.languages}get scope(){return this._appScope}_registerScopes(){let t=globalThis.__VoerkaI18nScopes__;t&&Array.isArray(t)&&t.forEach(s=>this.register(s)),delete globalThis.__VoerkaI18nScopes__;}getScope(t){return this._scopes.find(s=>s.id===t)}_loadPlugins(){let t=globalThis.__VoerkaI18nPlugins__;t&&Array.isArray(t)&&t.forEach(s=>s(this)),delete globalThis.__VoerkaI18nPlugins__;}registerPlugin(t){typeof t=="function"&&t(this);}_registerAppScope(t){this._scopes.push(t),this._appScope=t,this.logger.debug("VoerkaI18nScope<"+t.id+"> is registered as appScope"),this.emitAsync("init",()=>this._appScope.activeLanguage,true);}register(t){if(!ae(t))throw new Error("register scope failed, invalid scope");this._scopes.push(t),t.bind(this),this.logger.debug(`VoerkaI18nScope<${t.id}> is registered`);}async change(t){await this._refreshScopes(t);let s=this._appScope.activeLanguage;return this.scope.saveLanguage(),this.emit("change",s,true),this.logger.info("language changed to: "+s),s}async _refreshScopes(t){let s=this._scopes.map(r=>r.refresh(t));await ge(s);}async refresh(){return await this._refreshScopes(this.activeLanguage)}ready(t,s){return this.waitFor("ready",s).then(r=>{t&&t.call(this,r);})}clearPatchedMessages(){this._scopes.forEach(t=>t.clearPatchedMessages());}hasLanguage(t){return this.languages.findIndex(s=>s.name==t)!=-1}clearLanguage(){this.scope.clearLanguage();}saveLanguage(){this.scope.saveLanguage();}restoreLanguage(){this.scope.restoreLanguage();}};a(b,"VoerkaI18nManager"),c(b,"instance");var L=b;var T={get(i){if(globalThis.localStorage)return globalThis.localStorage.getItem(i)},set(i,e){globalThis.localStorage&&globalThis.localStorage.setItem(i,e);},remove(i){globalThis.localStorage&&globalThis.localStorage.removeItem(i);}};var pt="en",le=[{name:"zh",title:"\u4E2D\u6587",default:true,active:true},{name:"en",title:"\u82F1\u6587"}],mt=["String","Number","Boolean","Object","Array","Function","Error","Symbol","RegExp","Date","Null","Undefined","Set","Map","WeakSet","WeakMap"],dt=Symbol("VoerkaI18nFormatter"),_t=Symbol("VoerkaI18nFormatterBuilder"),yt={debug:true,storage:T,languages:[{name:"zh",title:"\u4E2D\u6587",default:true,active:true},{name:"en",title:"\u82F1\u6587"}]},vt="vt-msg",bt="data-id",xt="data-scope";var R=class R{constructor(){c(this,"_eventEmitter");}_getEventEmitter(){return this.attached?this.manager:(this._eventEmitter||(this._eventEmitter=new M),this._eventEmitter)}on(e,t){return this._getEventEmitter().on(e,t)}once(e,t){return this._getEventEmitter().once(e,t)}off(e,t){return this._getEventEmitter().off(e,t)}waitFor(e,t){return this._getEventEmitter().waitFor(e,t)}async emit(e,t,s){return await this._getEventEmitter().emitAsync(e,t,s)}};a(R,"EventEmitterMixin");var A=R;function f(i){return i&&typeof i=="function"}a(f,"t");function d(i){if(typeof i!="object"||i===null)return false;var e=Object.getPrototypeOf(i);if(e===null)return true;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return e===t}a(d,"o");var S,ce=(S=class extends Error{},a(S,"m"),S),ve=0;function K(i,e={timeout:0}){let t=false,s=false,r=false,g,o,n=0,l,h=++ve,u=a(function(){clearTimeout(n),t=false,s=false,r=false,l=new Promise((m,w)=>{g=m,o=w;});},"g");u();async function p(m=0,w){if(typeof i=="function"&&i()){t=true;return}return (t||s)&&u(),m>0&&(n=setTimeout(()=>{t=true;try{w instanceof Error?o(w):g(w);}catch{}},m)),r=true,l}return a(p,"o"),p.id=h,p.resolve=m=>{if(clearTimeout(n),!!r&&!(t||s)){if(typeof i=="function"&&i())if(i())g(m);else return;else g(m);t=true;}},p.reject=m=>{clearTimeout(n),r&&(t||s||(o(typeof m=="string"?new Error(m):m instanceof Error?m:new Error),s=true));},p.destroy=()=>{clearTimeout(n),r&&o(new ce),t=false,r=false,s=false,l=null;},p.reset=u,p.isResolved=()=>t,p.isRejected=()=>s,p.isPending=()=>r,p}a(K,"p");var q=class q{constructor(){c(this,"_patching");}_getPatchKey(e){return `voerkai18n_${this.id}_${e}_patched_messages`}clearPatchedMessages(e){if(this.storage){let t=e?[e]:this.languages.map(s=>s.name);for(let s of t)this.storage.remove(this._getPatchKey(s));}}async _patch(e){this._patching=K(),e||(e=this.activeLanguage),this._restorePatchedMessages(this.activeMessages,e);try{if(f(this.loader)){let t=await this._loadMessagesFromLoader(e);d(t)&&(Object.assign(this._activeMessages,t),this._setPatchedMessages(t,e),this.emit("patched",{language:e,scope:this.id}));}}catch(t){this.logger.warn(`\u4ECE\u8FDC\u7A0B\u52A0\u8F7D\u8BED\u8A00\u8865\u4E01\u5305<${e}>\u65F6\u51FA\u9519: ${t.stack}(scope=${this.id})`);}finally{this._patching?.resolve(),this._patching=void 0;}}_restorePatchedMessages(e,t){let s=this._getPatchedMessages(t);d(s)&&(Object.assign(e,s),this.emit("restore",{language:t,scope:this.id}),this.logger.debug(`\u6210\u529F\u6062\u590D\u8865\u4E01\u8BED\u8A00\u5305<${t}>(scope=${this.id})`));}_setPatchedMessages(e,t){if(!(!this.attached&&!this.storage))try{this.storage&&this.storage.set(this._getPatchKey(t),JSON.stringify(e));}catch(s){this.logger.error(`\u4FDD\u5B58\u8BED\u8A00\u5305\u8865\u4E01(${t})\u65F6\u51FA\u9519: ${s.stack}(scope=${this.id})`);}}_getPatchedMessages(e){try{return this.storage&&this.options.cachePatch?this.storage.get(this._getPatchKey(e)):{}}catch(t){return this.logger.error(`\u8BFB\u53D6\u8BED\u8A00\u5305\u8865\u4E01(${e})\u65F6\u51FA\u9519:${t.stack}(scope=${this.id})`),{}}}};a(q,"PatchMessageMixin");var I=q;var z=class z extends Error{};a(z,"VoerkaI18nError");var _=z,D=class D extends _{};a(D,"VoerkaI18nInvalidLanguageError");var he=D,W=class W extends _{};a(W,"VoerkaI18nOnlyOneAppScopeError");var ue=W,B=class B extends _{};a(B,"VoerkaI18nChangeLanguageError");var fe=B,U=class U extends _{};a(U,"VoerkaI18nLoadLanguageError");var E=U;var J=class J{constructor(){c(this,"_refreshSignal");}async refresh(e,t){this._refreshSignal||(this._refreshSignal=asyncSignal()),e||(e=this.activeLanguage);let s=e,r,{patch:g,fallback:o}=Object.assign({fallback:false,patch:true},t);try{r=await this._loadLanguageMessages(e),this._activeMessages=r,r&&!r.$remote&&g&&await this._patch(e);}catch(n){if(n&&n instanceof _){let l=this.getFallbackLanguage(e);l&&l!==e&&(s=await this.refresh(l,{patch:g,fallback:true}));}}finally{o||(this._activeLanguage=s,(typeof this.messages[s]=="function"||!(s in this.messages))&&(this.messages[s]=this._activeMessages),this._activeParagraphs=this.paragraphs[s],this._refreshSignal.resolve(),this._refreshSignal=void 0,await this.emit("scope/change",s,true));}return this._setLanguageAttr(),s}async _loadLanguageMessages(e){this.logger.debug(`\u51C6\u5907\u52A0\u8F7D\u8BED\u8A00\u5305:${e}`);let t=this.messages[e],s;if(d(t))s=t;else if(f(t))try{s=await ne.call(this,t);}catch(r){this.logger.error(`\u52A0\u8F7D\u5F02\u6B65\u8BED\u8A00\u5305<${e}>\u5931\u8D25:${r.message}`),s=void 0;}if(!s&&f(this.loader))try{let r=await this._loadMessagesFromLoader(e);d(r)?s=Object.assign({$remote:!0},this.messages[this.defaultLanguage],r):this.logger.error(`\u9519\u8BEF\u7684\u8BED\u8A00\u5305<${e}>\u6570\u636E:${r}`);}catch(r){throw new E(r.message)}if(!d(s))throw new E(e);return s}async _loadMessagesFromLoader(e){if(f(this.loader))return await this.loader.call(this,e,this)}ready(){let e=typeof arguments[0]=="function"?arguments[0]:void 0,t=typeof arguments[0]=="number"?arguments[0]:arguments[1];if(typeof e=="function")this.manager.ready(e,t);else return new Promise(s=>{this.manager.ready(s,t);})}async changing(e){!this._refreshSignal&&!this._patching||await Promise.all([this._refreshSignal?.(e),this._patching?.(e)]);}};a(J,"ChangeLanguageMixin");var j=J;var Le={warn:console.warn,error:console.error,info:console.info,debug:console.debug};function pe(i){let e,t=[],s=a((r,...g)=>{let o=g.join(" ");if(e){if(!e.debug)return;e.emit("log",{level:r,message:o});}else if(e=globalThis.VoerkaI18n,e&&e instanceof L)if(e.debug){t.push([r,o]);let n=a((l,h)=>{i?i(l,h):Le[l](h);},"log");e.on("log",({level:l,message:h})=>n(l,h)),t.forEach(([l,h])=>n(l,h));}else t.splice(0,t.length);else t.push([r,o]);},"logOutput");return {warn:a((...r)=>s("warn",...r),"warn"),error:a((...r)=>s("error",...r),"error"),info:a((...r)=>s("info",...r),"info"),debug:a((...r)=>s("debug",...r),"debug")}}a(pe,"createLogger");var G=class G extends Error{constructor(e){super(`Formatters of language<${e}> is not loaded,try to call load()`);}};a(G,"FormattersNotLoadedError");var me=G,H=class H{constructor(e){c(this,"_formatters",[]);c(this,"_scope");this._scope=e,this._formatters=e?.options.formatters,this._registerFormatters();}get scope(){return this._scope}get formatters(){return this._formatters}_registerFormatters(){this._formatters&&this._formatters.forEach(e=>{Array.isArray(e)?this.register.apply(this,e):this.register.apply(this,[e]);});}_addFormatter(e){try{if(this.scope.interpolator.addFilter(e),e){let t=this.scope.manager.scope;t.id!==this.scope.id&&t.interpolator.addFilter(e);}}catch(t){this.scope.logger.error(`fail while register formatter<${e.name}>\uFF1A${t.stack}`);}}register(e,t,s){let r=this.scope,g=e.next;e.next=function(o,n,l){let h=l.getConfig;return l.getConfig=()=>Object.assign({},s,t?.[r.activeLanguage],h(e.name)),g.call(this,o,n,l)},this._addFormatter(e);}};a(H,"VoerkaI18nFormatterManager");var k=H;function de(i){return i&&typeof i=="object"&&i.__VoerkaI18nManager__}a(de,"isI18nManger");var Q=class Q{getLanguage(e){let t=this.languages.findIndex(s=>s.name==e);if(t!==-1)return this.languages[t]}getFallbackLanguage(e){let t=this.getLanguage(e);return t&&t.fallback||this.options.fallback||this._defaultLanguage}hasLanguage(e){return this.languages.findIndex(t=>t.name==e)!=-1}};a(Q,"LanguageMixin");var $=Q;var X=class X{_getPluraMessage(e,t){try{return Array.isArray(e)?e.length>t?e[t]:e[e.length-1]:e}catch{return Array.isArray(e)?e[0]:e}}_getPluraValue(e){let t=null,s=[];if(d(e)){let r=e;for(let[g,o]of Object.entries(r)){if(f(o))try{r[g]=o();}catch{r[g]=o;}let n=typeof r[g]=="number";(t==null&&n||g.startsWith("$")&&n)&&(t=r[g]);}s=[r];}else Array.isArray(e)?s=e.map(r=>{try{r=f(r)?r():r,x(r)&&!t&&(t=parseInt(r));}catch{return String(r)}return r}):e!==void 0&&(t=x(e)?parseInt(e):0,s=[e]);return [t,s]}_getTranslateComponent(){if(!this._translateComponent){let e=this.options.component||this.appScope.options.component;typeof e=="function"?this._translateComponent=e.call(this,this):(this._translateComponent=()=>{},this.logger.warn("No translate component builder configured"));}return this._translateComponent}_getTranslateTransformer(){if(!this._translateTransformer){let e=this.options.transform||this.appScope.options.transform;typeof e=="function"&&(this._translateTransformer=e.call(this,this));}return this._translateTransformer}_getActiveMessages(e){return typeof this.messages[e]=="function"?(this.logger.warn(`When the t function specifies the language <${e}> , only synchronized language packs can be used`),this.activeMessages):this.messages[e]}translate(e,t,s){if(typeof e!="string")return this.logger.debug(`failed to translate message:${e},it is not a string`),"";let r=s?.language||this.activeLanguage,g=this._getActiveMessages(r);e=e.replace(/\n/g,"\\n");let o=e;if(typeof e!="string")return e;let n=t===void 0?[]:f(t)?t():t;try{if(P(e))o=g[e]||e;else {let u=this.idMap[e];o=g[u]||g[e]||e;}let[l,h]=this._getPluraValue(n);Array.isArray(o)&&o.length>0&&(l!==null?o=this._getPluraMessage(o,l):o=o[0]),n.length,o=this.interpolator.replace(o,...h),this._translateTransformer&&s?.transform&&(o=this._translateTransformer(o,h,s));}catch(l){this.logger.error(`\u7FFB\u8BD1\u5931\u8D25\uFF1A${l.stack}`);}return o}};a(X,"TranslateMixin");var V=X;var Y=class Y{_getStorage(){let e=this.storage;return oe(e)?e:void 0}_getStorageKey(){return this.options.storageKey.replace("{scope}",this.id)}restoreLanguage(){let e=this._getStorage();if(e){let t=this._getStorageKey(),s=e.get(t);if(!s||!this.hasLanguage(s))return;this._activeLanguage=s,this.logger.debug(`\u4ECE\u5B58\u50A8<${t}>\u4E2D\u6062\u590D\u4FDD\u5B58\u7684\u8BED\u8A00\uFF1A${s}`);}}saveLanguage(){let e=this._getStorage();if(e){if(!this._activeLanguage)return;let t=this._getStorageKey();e.set(t,this.activeLanguage),this.logger.debug(`\u5F53\u524D\u8BED\u8A00\u5DF2\u4FDD\u5B58\u5230\u5B58\u50A8${t}=${this.activeLanguage}`);}}clearLanguage(){let e=this._getStorage();e&&e.remove(this._getStorageKey());}};a(Y,"RestoreMixin");var F=Y;function Z(i,e,t){let{defaultValue:s,delimiter:r,matched:g}=Object.assign({delimiter:"."},t);if(!i||typeof e!="string")return s;if(!e)return i;let o=e.split(r),n=i,l,h;try{for(let u of o)if(n instanceof Map||n instanceof WeakMap){if(!n.has(u))return s;l=n,h=u,n=n.get(u);}else if(n instanceof Set){let p=parseInt(u,10);if(p>=n.size)return s;l=n,h=p,n=[...n][p];}else if(n&&typeof n=="object"&&u in n)l=n,h=Array.isArray(n)?parseInt(u):u,n=n[u];else return s}catch{return s}return typeof g=="function"&&g({value:n,parent:l,indexOrKey:h}),n}a(Z,"u");var ee=class ee{constructor(){c(this,"_flexVars");}_initInterpolators(){this._flexVars=new FlexVars({filterContext:{getConfig:a(e=>{let t=this.activeMessages.$config||{};return e?Z(t,e):t},"getConfig"),scope:this}});}};a(ee,"InterpolatorMixin");var N=ee;function te(i,...e){if(e.length===0)return i;let t=e.map((s,r)=>{let g=Object.entries(s||{});return g.some(([o,n])=>n===void 0)?g.reduce((o,[n,l])=>(l!==void 0&&(o[n]=l),o),{}):s});return Object.assign(i,...t)}a(te,"u");var O=class O extends Mixin(A,I,j,$,V,N,F){constructor(t){super();c(this,"__VoerkaI18nScope__",true);c(this,"_options");c(this,"_manager");c(this,"_formatterManager",null);c(this,"_logger");c(this,"_defaultLanguage","zh-CN");c(this,"_activeLanguage","zh-CN");c(this,"_activeMessages",{});c(this,"_patchedMessages",{});c(this,"_translateComponent");c(this,"_translateTransformer");c(this,"_activeParagraphs",{});c(this,"$id",++O.idSeq);this._options=te({id:ie(),library:false,debug:false,injectLangAttr:true,languages:[],messages:{},paragraphs:{},idMap:{},formatters:[],attached:true,storageKey:"language",cachePatch:true},t),this._init();}get id(){return this._options.id}get options(){return this._options}get attached(){return this._options.attached}get debug(){return this._options.debug}get library(){return this._options.library}get formatters(){return this._formatterManager}get defaultLanguage(){return this._defaultLanguage}get defaultMessages(){return this.messages[this.defaultLanguage]}get messages(){return this._options.messages}get paragraphs(){return this._options.paragraphs}get idMap(){return this._options.idMap}get languages(){return this._options.languages}get manager(){return this._manager}get appScope(){return this._manager.scope}get interpolator(){return this._flexVars}get logger(){return this._logger}get t(){return this.translate.bind(this)}get Translate(){return this._getTranslateComponent()}get activeMessages(){return this._activeMessages}get activeParagraphs(){return this._activeParagraphs}get activeLanguage(){return this._activeLanguage}get storage(){return this.getScopeOption("storage")}get loader(){return this.getScopeOption("loader")}get $t(){return (t,s,r)=>(this._getTranslateTransformer(),r||(r={}),r.transform=true,this.translate(t,s,r))}getScopeOption(t){let s=this._options;return this.attached?s[t]||(this.library?this._manager[t]:void 0):s[t]}_initOptions(){if(!Array.isArray(this.languages))this.logger.warn("[VoerkaI18n] invalid language settings, will use default language settings."),this._options.languages=Object.assign([],le);else if(this.languages.length==0)throw new Error("[VoerkaI18n] must provide valid language settings.");let t,s;this.languages.forEach(g=>{g.default&&(s=g.name),g.active&&(t=g.name);});let r=this._options.messages;if(s in r||(s=Object.keys(r)[0]),t in r||(t=s),!(s in r))throw new Error("[VoerkaI18n] invalid language configuration, must provide valid default and active languages.");if(this._activeLanguage=t,this._defaultLanguage=s,!this._options.library&&!this._options.storage&&(this._options.storage=T),f(this.messages[this._defaultLanguage]))throw new Error("[VoerkaI18n] default language pack must be static content, can't use async load way.");this._activeMessages=this.messages[this._activeLanguage],this._activeParagraphs=this.paragraphs[this._activeLanguage];}_init(){this._logger=pe(this._options.log),this._initOptions(),this.library||this.restoreLanguage(),this._initInterpolators(),this.registerToManager(),this._formatterManager=new k(this);}bind(t){this._manager=t,this._manager.once("init",this._initRefresh.bind(this));}_initRefresh(t){if(this.library)this.refresh(t&&t());else {let s=[];(this._defaultLanguage!==this._activeLanguage||f(this.activeMessages))&&s.push(this.refresh(void 0,{patch:false})),s.push(this._patch()),Promise.all(s).then(()=>{this.emit("ready",this.activeLanguage,true),this._setLanguageAttr();});}}registerToManager(){if(!this.attached)return;let t=!this.options.library;t&&(globalThis.VoerkaI18n&&globalThis.VoerkaI18n.scope&&C()&&console.warn("Only can have one i18nScope with library=false"),this._manager=new L(this));let s=globalThis.VoerkaI18n;s&&de(s)?t?this._initRefresh():s.register(this):(globalThis.__VoerkaI18nScopes__||(globalThis.__VoerkaI18nScopes__=[]),globalThis.__VoerkaI18nScopes__.push(this));}async change(t){let s=this.activeLanguage;return this.attached?s=await this._manager.change(t):s=await this.refresh(t),s}_setLanguageAttr(){if(!(this.library||!C()))try{let t=this._options.injectLangAttr;if(!t)return;let s=t===!0?document.body:document.body.querySelector(t);s&&s.setAttribute("lang",this.activeLanguage);}catch{}}getRawMessage(t){if(P(t)){if(t in this.defaultMessages)return this.defaultMessages[t]}else return t}getMessageId(t){if(P(t))return t;if(t in this.idMap)return this.idMap[t]}};a(O,"VoerkaI18nScope"),c(O,"idSeq",0);var _e=O;function ir(i,e,t){return s=>{let r=i.next;return i.next=function(g,o,n){let l=n.getConfig;return n.getConfig=()=>Object.assign({},t,e?.[s.activeLanguage],l(i.name)),r.call(this,g,o,n)},i}}a(ir,"createFormatter");function hr(i){let e=globalThis.VoerkaI18n;e?e.registerPlugin(i):(globalThis.__VoerkaI18nPlugins__||(globalThis.__VoerkaI18nPlugins__=[]),globalThis.__VoerkaI18nPlugins__.push(i));}a(hr,"definePlugin");export{mt as DataTypes,pt as DefaultFallbackLanguage,le as DefaultLanguageSettings,me as FormattersNotLoadedError,T as LocalStorage,vt as TEleClassName,bt as TEleMsgIdAttr,xt as TEleScopeIdAttr,dt as VOERKAI18N_FORMATTER,_t as VOERKAI18N_FORMATTER_BUILDER,fe as VoerkaI18nChangeLanguageError,_ as VoerkaI18nError,k as VoerkaI18nFormatterManager,he as VoerkaI18nInvalidLanguageError,E as VoerkaI18nLoadLanguageError,L as VoerkaI18nManager,ue as VoerkaI18nOnlyOneAppScopeError,_e as VoerkaI18nScope,ir as createFormatter,yt as defaultLanguageSettings,hr as definePlugin,ge as execAsyncs,ie as getId,C as isBrowser,ae as isI18nScope,P as isMessageId,oe as isStorage,ne as loadAsyncModule};//# sourceMappingURL=index.mjs.map //# sourceMappingURL=index.mjs.map