UNPKG

@re-flex/i18n

Version:

Re-flex UI Lozalization Package

3 lines (2 loc) 2.3 kB
var e=require("react"),n=require("@re-flex/object-path");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=/*#__PURE__*/t(e),r=/*#__PURE__*/t(n),i=new(/*#__PURE__*/function(){function e(){this.updater=void 0,this.httpConfig=void 0,this.browserLanguage=navigator.languages&&navigator.languages[0]||navigator.language,this.initialLanguage="en",this.currentLanguage="en",this.resources=new r.default({}),this.languages=void 0,this.namespaces=void 0,this.currentLanguage="en",this.initialLanguage="en"}var n=e.prototype;return n.httpBackendAdapter=function(){var e=this;if(this.httpConfig){var n=this.namespaces.map(function(n){var t={lng:e.currentLanguage,ns:n};return{namespace:n,path:e.httpConfig.path.replace(/{{\s*\w+\s*}}/gim,function(e){var n=e.replace(/{{\s*|\s*}}/gim,"");return t[n]})}});Promise.all(n.map(function(n){var t,a=n.namespace;return fetch(n.path,{headers:null==(t=e.httpConfig)?void 0:t.headers}).then(function(e){return e.json()}).then(function(e){var n;return(n={})[a]=e,n})})).then(function(n){e.resources=new r.default(Object.assign.apply(Object,[{}].concat(n))),e.updater&&e.updater()})}else console.warn("HTTP config is not assigned")},n.init=function(e){var n=e.initialLanguage,t=e.httpConfig,a=e.resources,i=e.languages,u=e.namespaces;a&&(this.resources=new r.default(a)),i&&(this.languages=i),u&&(this.namespaces=u),n&&(this.initialLanguage=n,this.currentLanguage=n),t&&(this.httpConfig=t,this.httpBackendAdapter())},n.onLoadNamepaces=function(e){},n.onChangeLanguage=function(e){},n.changeLanguage=function(e){this.currentLanguage=e,this.httpBackendAdapter(),this.updater&&this.updater()},n.translate=function(e,n){var t=this.resources.get([this.currentLanguage,e].join("."));return void 0===t?e:(n&&(t=t.replace(/{{\s*\w+\s*}}/gim,function(e){var t=e.replace(/{{\s*|\s*}}/gim,"");return n[t]})),t)},e}()),u=e.createContext(null),s=u.Provider;exports.I18n=i,exports.I18nProvider=function(n){var t=n.children,r=e.useState(0),u=r[0],o=r[1];return e.useLayoutEffect(function(){i.updater=function(){return o(function(e){return e+1})}},[]),a.default.createElement(s,{value:{version:u,i18n:i}},t)},exports.useTranslate=function(){var n=e.useContext(u).i18n;return{t:function(e,t){return n.translate(e,t)},i18n:n}}; //# sourceMappingURL=i18n.js.map