piral-translate
Version:
Plugin for providing translated messages in Piral.
2 lines (1 loc) • 5.86 kB
JavaScript
var piralTranslate=(()=>{var R=Object.create;var f=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var l=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),U=(e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})},T=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of G(t))!$.call(e,a)&&a!==n&&f(e,a,{get:()=>t[a],enumerable:!(r=F(t,a))||r.enumerable});return e};var j=(e,t,n)=>(n=e!=null?R(N(e)):{},T(t||!e||!e.__esModule?f(n,"default",{value:e,enumerable:!0}):n,e)),D=e=>T(f({},"__esModule",{value:!0}),e);var z=I((pe,h)=>{"use strict";var B=function(t){return V(t)&&!K(t)};function V(e){return!!e&&typeof e=="object"}function K(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||q(e)}var Y=typeof Symbol=="function"&&Symbol.for,Z=Y?Symbol.for("react.element"):60103;function q(e){return e.$$typeof===Z}function H(e){return Array.isArray(e)?[]:{}}function g(e,t){return t.clone!==!1&&t.isMergeableObject(e)?c(H(e),e,t):e}function J(e,t,n){return e.concat(t).map(function(r){return g(r,n)})}function Q(e,t){if(!t.customMerge)return c;var n=t.customMerge(e);return typeof n=="function"?n:c}function W(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function x(e){return Object.keys(e).concat(W(e))}function A(e,t){try{return t in e}catch{return!1}}function X(e,t){return A(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function ee(e,t,n){var r={};return n.isMergeableObject(e)&&x(e).forEach(function(a){r[a]=g(e[a],n)}),x(t).forEach(function(a){X(e,a)||(A(e,a)&&n.isMergeableObject(t[a])?r[a]=Q(a,n)(e[a],t[a],n):r[a]=g(t[a],n))}),r}function c(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||J,n.isMergeableObject=n.isMergeableObject||B,n.cloneUnlessOtherwiseSpecified=g;var r=Array.isArray(t),a=Array.isArray(e),s=r===a;return s?r?n.arrayMerge(e,t,n):ee(e,t,n):g(t,n)}c.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,a){return c(r,a,n)},{})};var te=c;h.exports=te});var ue={};U(ue,{Languages:()=>ge,PiralLanguagesPicker:()=>M,createLocaleApi:()=>se,getUserLocale:()=>ie,setupLocalizer:()=>_,useDynamicLanguage:()=>le,useTranslate:()=>ce});var O=l("piral-core"),M=(0,O.getPiralComponent)("LanguagesPicker");var C=j(z());function P(e){return{selectLanguage(t,n){t.dispatch(r=>{e.language=n;let a=r.language.selected,s=n;return setTimeout(()=>{t.emit("select-language",{previousLanguage:a,currentLanguage:s})},0),{...r,language:{...r.language,loading:n===void 0,selected:n}}})},translate(t,n,r){return e&&e.localizeGlobal(n,r)},setTranslations(t,n,r){e.messages[n]=r.global;for(let a of r.locals){let s=t.apis[a.name];if(s){let o=s.getTranslations();o[n]=a.value,s.setTranslations(o)}}},getTranslations(t,n){return{global:e.messages[n],locals:Object.keys(t.apis).map(r=>({name:r,value:t.apis[r].getTranslations()[n]}))}}}}function ne(e){let t={};return S(e,t),t}function S(e,t,n=""){if(typeof e=="string"){t[n]=e;return}if(typeof e=="object"&&e!==null){Object.keys(e).forEach(r=>{S(e[r],t,n?`${n}.${r}`:r)});return}}function m(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,ne(n)]))}function re(e,t){return t?"...":""}function ae(e,t){return e.replace(/{{\s*([A-Za-z0-9_.]+)\s*}}/g,(n,r)=>r in t?t[r]??"":`{{${r}}}`)}var p=class{constructor(t,n,r,a=re){this.language=n;this.languages=r;this.fallback=a;this.messages=m(t)}localizeGlobal(t,n){return this.localizeBase(t,n)}localizeLocal(t,n,r){let a=this.translateMessage(t,n,r);return a===void 0?this.localizeBase(n,r):a}localizeBase(t,n){let r=this.translateMessage(this.messages,t,n);return r===void 0?this.fallback(t,this.language,this.messages,n):r}translateMessage(t,n,r){let a=this.language,s=a&&t[a],o=s&&s[n];return o&&(r?ae(o,r):o)}};var E=l("piral-core"),v=e=>(0,E.defaultRender)(void 0);function _(e={}){let t=e.messages||{},n=Object.keys(t),r=n[0]||"en",a=e.language,o=(typeof a=="function"?a(n,r,"en"):a)||r;return new p(t,o,n.length?n:[o],e.fallback)}function se(e=_()){return t=>(t.defineActions(P(e)),t.dispatch(n=>({...n,components:{LanguagesPicker:v,...n.components},language:{loading:!1,available:e.languages,selected:e.language}})),n=>{let r={},a=s=>{r=m(s)};return{addTranslations(s,o=!0){let i=e.messages;a(C.all(o?[i,...s]:[...s,i]))},getCurrentLanguage(s){let o=t.readState(i=>i.language.selected);if(s){s(o);let i=L=>{s(L.currentLanguage)};return n.on("select-language",i),()=>n.off("select-language",i)}return o},setTranslations:a,getTranslations(){return r},translate(s,o){return e.localizeLocal(r,s,o)}}})}var b=l("piral-core");function oe(e,t){let n=b.cookie.getItem("_culture")||b.storage.getItem("locale");return n||(t?t.toLowerCase().substring(0,2):navigator.language?navigator.language.substring(0,2):e)}function ie(e,t,n){let r=oe(t,n||"");return e.indexOf(r)!==-1?r:t}var d=l("react"),u=l("piral-core");function le(e,t){let[n,r]=(0,d.useState)(e),{selectLanguage:a,setTranslations:s,getTranslations:o}=(0,u.useActions)();return(0,d.useEffect)(()=>{let i=!0,L=o(n);return a(void 0),t(n,L).then(y=>{i&&(s(n,y),a(n))},y=>console.error(y)),()=>{i=!1}},[n]),[n,r]}function ce(){let{translate:e}=(0,u.useActions)();return(0,u.useGlobalState)(t=>t.language.selected),e}var k=j(l("react")),w=l("piral-core");var ge=()=>{let{available:e,selected:t}=(0,w.useGlobalState)(n=>n.language);return k.createElement(M,{selected:t,available:e})};return D(ue);})();