@osaedasia/oresume
Version:
A user-friendly library for generating complete Single Page Applications (SPAs)
2 lines (1 loc) • 1.11 kB
JavaScript
import{Observable as e}from"../observer/Observable.js";import{Scribe as r}from"@osaedasia/scribe";class t{_resources;_generatedObservables;_languageService;_resourceProxy;constructor(e){this._languageService=e,this._resources=new Map,this._generatedObservables=new Map,this._resourceProxy=new Proxy({},{get:(e,r)=>this._getObservable(r)})}get res(){return this._resourceProxy}addResource(e,r){this._resources.set(e,r)}_getObservable(r){const t=this._generatedObservables.get(r);if(void 0!==t)return t;const s=new e(this._getKeyValue(this._languageService.countryCode.state,r));return s.listen(this._languageService.countryCode,(e=>{s.state=this._getKeyValue(e,r)})),this._generatedObservables.set(r,s),s}_getKeyValue(e,t){const s=e=>{const s=this._resources.get(e);if(!s)return r.warning(`The language code '${e}' for the key '${String(t)}' does not exist in the localized resource.`),null;const n=s[t].trim();return n||(r.warning(`The key '${String(t)}' of the code '${e}' is empty.`),null)},n=s(e);if(null!==n)return n;return s(this._languageService.defaultLanguage)??""}}export{t as LocalizedResource};