UNPKG

react-i18next

Version:

Internationalization for react done right. Using the i18next i18n ecosystem.

2 lines (1 loc) • 26.2 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("i18next")):"function"==typeof define&&define.amd?define(["exports","react","i18next"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactI18next={},e.React,e.i18next)}(this,function(e,t,n){"use strict";const r={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,"!doctype":!0,"!DOCTYPE":!0},s=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function i(e){const t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(r[n[1]]||"/"===e.charAt(e.length-2))&&(t.voidElement=!0),t.name.startsWith("!--"))){const t=e.indexOf("--\x3e");return{type:"comment",comment:-1!==t?e.slice(4,t):""}}const i=new RegExp(s);let a=null;for(;a=i.exec(e),null!==a;)if(a[0].trim())if(a[1]){const e=a[1].trim();let n=[e,null];const r=e.indexOf("=");r>-1&&(n=[e.slice(0,r),e.slice(r+1)]),t.attrs[n[0]]=n[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return t}const a=/<!--[\s\S]*?-->|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,o=/<\/?([^\s]+?)[/\s>]/,c=/^\s*$/,l=/^(script|style)$/i,u="\0",p=Object.create(null);function d(e){e.forEach(function(e){if("text"!==e.type)if("comment"!==e.type){for(const t in e.attrs){const n=e.attrs[t];"string"==typeof n&&n.indexOf(u)>-1&&(e.attrs[t]=n.split(u).join("<"))}e.children.length&&d(e.children)}else e.comment=e.comment.split(u).join("<");else e.content=e.content.split(u).join("<")})}function f(e,t){switch(t.type){case"text":return e+t.content;case"tag":{const n=t.voidElement&&"!doctype"!==t.name.toLowerCase()?"/>":">";return e+="<"+t.name+(t.attrs?function(e){const t=[];for(const n in e)null===e[n]?t.push(n):t.push(n+'="'+String(e[n]).replace(/"/g,"&quot;")+'"');return t.length?" "+t.join(" "):""}(t.attrs):"")+n,t.voidElement?e:e+t.children.reduce(f,"")+"</"+t.name+">"}case"comment":return e+="\x3c!--"+t.comment+"--\x3e"}}var g={parse:function(e,t){const n=t&&t.components||p,r=t&&t.allowedTags;let s=!1;if(r){const t="function"==typeof r?r:function(e){return r.indexOf(e)>-1};let n,i="",c=0;for(a.lastIndex=0;n=a.exec(e);){const r=n[0];i+=e.slice(c,n.index);const l=r.match(o);r.startsWith("\x3c!--")||l&&t(l[1])?(i+=r,c=n.index+r.length):(s=!0,i+=u,c=n.index+1,a.lastIndex=c)}e=i+e.slice(c)}const f=[],g=[];let m,h,y=-1,x=!1,b=0;if(0!==e.indexOf("<")){const t=e.indexOf("<");f.push({type:"text",content:-1===t?e:e.substring(0,t)})}const E=[];let v;for(;v=a.exec(e);)E.push(v);return E.forEach(function(e,t){const n=e[0];if(!n)return;if(n.startsWith("\x3c!--"))return;let r=0,s=0,i=-1,a=null;for(let e=0;e<n.length;e++){const t=n.charAt(e);a?t===a&&(a=null):'"'===t||"'"===t?a=t:"<"===t?(r++,2===r&&(i=e)):">"===t&&s++}const o=i>-1&&/[a-zA-Z0-9\-!/]/.test(n.charAt(i+1));if(r>s&&o){const e=n.substring(0,i),r=n.substring(e.length);E[t][0]=r,E[t].index+=e.length}}),E.forEach(function(t,r){const s=t[0];if(!s)return;const a=t.index;if(a<b)return;if(x){if(s!=="</"+m.name+">")return;x=!1}const o="/"!==s.charAt(1),u=s.startsWith("\x3c!--"),p=a+s.length,d=e.charAt(p),v=E[r+1];let N,I;if("<"===d&&v){const t=e.substring(p,v.index);N=t.split("<").length>t.split(">").length}if(u){const t=i(s);if(y<0)return f.push(t),f;I=g[y],I.children.push(t);const n=e.slice(p,v?v.index:void 0);return n.length>0&&I.children.push({type:"text",content:n}),f}if(o){y++,m=i(s),"tag"===m.type&&n[m.name]&&(m.type="component",x=!0);let t=!1;if(!x&&!m.voidElement&&l.test(m.name)){t=!0,h||(h=e.toLowerCase());const n=h.indexOf("</"+m.name.toLowerCase()+">",p),r=-1===n?e.length:n,s=e.slice(p,r);s&&m.children.push({type:"text",content:s}),b=r}m.voidElement||x||t||!d||"<"===d||m.children.push({type:"text",content:e.slice(p,v?v.index:void 0)}),0===y&&f.push(m),I=g[y-1],I&&I.children.push(m),g[y]=m}if((!o||m.voidElement)&&(y>-1&&(m.voidElement||m.name===s.slice(2,-1))&&(y--,m=-1===y?f:g[y]),!x&&("<"!==d||N)&&d)){I=-1===y?f:g[y].children;const t=v?v.index:-1;let n=e.slice(p,-1===t?void 0:t);c.test(n)&&(n=" "),(t>-1&&y+I.length>=0||" "!==n)&&I.push({type:"text",content:n})}}),s&&d(f),f},stringify:function(e){return e.reduce(function(e,t){return e+f("",t)},"")}};const m=(e,t,n,r)=>{const s=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(s,"warn","react-i18next::",!0);S(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...s):console?.warn&&console.warn(...s)},h=new WeakMap,y=new Set,x=(e,t,n,r)=>{if(S(n)){let t=y;const r=e?.services?.logger||e;if(O(r)&&(t=h.get(r),t||h.set(r,t=new Set)),t.has(n))return;t.add(n)}m(e,t,n,r)},b=()=>{try{return!1}catch(e){return!1}},E=(e,t)=>()=>{e.isInitialized?t():e.once("initialized",()=>t())},v=(e,t,n)=>{e.loadNamespaces(t,E(e,n))},N=(e,t,n,r)=>{if(S(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return v(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,E(e,r))},I=e=>e.displayName||e.name||(S(e)&&e.length>0?e:"Unknown"),S=e=>"string"==typeof e,O=e=>"object"==typeof e&&null!==e,T=e=>{const t=e?.services?.i18nFormat;return"function"==typeof t?.parse?t:void 0},w={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},k=e=>{if(!e)return e;const t={};return Object.keys(e).forEach(n=>{const r=e[n];t[n]=S(r)?r.replace(/[&<>"']/g,e=>w[e]):r}),t},A=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,$={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},R=e=>$[e];let C={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:e=>e.replace(A,R),transDefaultProps:void 0};const P=()=>C;let j;const _=e=>{j=e},V=()=>j,L=(e,t)=>{if(!e)return!1;const n=e.props?.children??e.children;return t?n.length>0:!!n},D=e=>{if(!e)return[];const t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?U(t):t},U=e=>Array.isArray(e)?e:[e],K=(e,n,r,s)=>{if(!e)return"";let i="";const a=U(e),o=n?.transSupportBasicHtmlNodes?n.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((e,a)=>{if(S(e))i+=`${e}`;else{if(t.isValidElement(e)){const{props:t,type:c}=e,l=Object.keys(t).length,u=o.indexOf(c)>-1,p=t.children;if(!p&&u&&!l)return void(i+=`<${c}/>`);if(!p&&(!u||l)||t.i18nIsDynamicList)return void(i+=`<${a}></${a}>`);if(u&&l<=1){const e=S(p)?p:K(p,n,r,s);return void(i+=`<${c}>${e}</${c}>`)}const d=K(p,n,r,s);return void(i+=`<${a}>${d}</${a}>`)}if(null!==e){if(O(e)){const{format:t,...n}=e,a=Object.keys(n);if(1===a.length){const e=t?`${a[0]}, ${t}`:a[0];return void(i+=`{{${e}}}`)}return!a.length&&1===Object.keys(e).length&&"format"in e?void(i+="{{format}}"):void m(r,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:s,child:e})}m(r,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:s,child:e})}else m(r,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:s})}}),i},F=(e,n,r,s,i,a)=>{if(""===r)return[];const o=i.transKeepBasicHtmlNodesFor||[],c=r&&new RegExp(o.map(e=>`<${e}`).join("|")).test(r),l="function"==typeof i.unescape?i.unescape:P().unescape;if(!e&&!n&&!c)return[S(r)?l(r):r];const u=n??{},p=e=>{U(e).forEach(e=>{S(e)||(L(e)?p(D(e)):O(e)&&!t.isValidElement(e)&&Object.assign(u,e))})};p(e);const d=Object.keys(u),f=g.parse(`<0>${r}</0>`,{allowedTags:e=>/^\d+$/.test(e)||o.indexOf(e)>-1||d.indexOf(e)>-1}),m={...u,...a},h=(e,n,r)=>{const s=D(e),i=x(s,n.children,r);return(e=>U(e).every(t.isValidElement))(s)&&0===i.length||e.props?.i18nIsDynamicList?s:i},y=(e,n,r,s,i)=>{e.dummy?(e.children=n,r.push(t.cloneElement(e,{key:s},i?void 0:n))):r.push(...t.Children.map([e],e=>{if(e.type===t.Fragment||void 0!==e.props?.i18nIsDynamicList){const r={key:s};return e&&e.props&&Object.keys(e.props).forEach(t=>{"children"!==t&&"i18nIsDynamicList"!==t&&(r[t]=e.props[t])}),t.createElement(e.type,r,i?null:n)}const r={key:s};return e&&e.props&&Object.keys(e.props).forEach(t=>{"ref"!==t&&"children"!==t&&(r[t]=e.props[t])}),t.cloneElement(e,r,i?null:n)}))},x=(e,r,a)=>{const u=U(e),p=U(r),d={};return p.reduce((e,r,p)=>{const f=r.children?.[0]?.content&&s.services.interpolator.interpolate(r.children[0].content,m,s.language),g=f?l(f):f;if("tag"===r.type){let f=u[parseInt(r.name,10)];!f&&n&&(f=n[r.name]),1===a.length&&!f&&O(a[0])&&(f=a[0][r.name]),f||(f={});const b={...r.attrs};Object.keys(b).forEach(e=>{const t=b[e];S(t)&&(b[e]=l(t))});const E=0!==Object.keys(b).length?((e,t)=>{const n={...t};return n.props={...t.props,...e.props},n})({props:b},f):f,v=t.isValidElement(E),N=v&&L(r,!0)&&!r.voidElement,I=c&&O(E)&&E.dummy&&!v,T=O(n)&&Object.hasOwnProperty.call(n,r.name);if(S(E)){const t=s.services.interpolator.interpolate(E,m,s.language);e.push(t)}else if(L(E)||N){const t=h(E,r,a);y(E,t,e,p)}else if(I){const t=x(u,r.children,a);y(E,t,e,p)}else if(Number.isNaN(parseFloat(r.name)))if(T){const t=h(E,r,a);y(E,t,e,p,r.voidElement)}else if(i.transSupportBasicHtmlNodes&&o.indexOf(r.name)>-1)if(r.voidElement)e.push(t.createElement(r.name,{key:`${r.name}-${p}`}));else{const n=d[r.name]||0;let s;d[r.name]=n+1;let i=0;for(let e=0;e<u.length;e+=1){const a=u[e];if(t.isValidElement(a)&&a.type===r.name){if(i===n){s=a;break}i+=1}}const o=s?U(D(s)):u,c=x(o,r.children,a);e.push(t.createElement(r.name,{key:`${r.name}-${p}`},c))}else if(r.voidElement)e.push(`<${r.name} />`);else{const t=x(u,r.children,a);e.push(`<${r.name}>${t}</${r.name}>`)}else if(O(E)&&!v){const t=r.children[0]?g:null;t&&e.push(t)}else y(E,g,e,p,1!==r.children.length||!g)}else if("text"===r.type){const n=i.transWrapTextNodes,a=l(s.services.interpolator.interpolate(r.content,m,s.language));n?e.push(t.createElement(n,{key:`${r.name}-${p}`},a)):e.push(a)}return e},[])},b=x([{dummy:!0,children:e||[]}],f,U(e||[]));return D(b[0])};function q({i18nComponent:e}){return e}const W=(e,n,r)=>{const s=e.key||n,i=t.cloneElement(e,{key:s});return!i.props||!i.props.children||r.indexOf(`${n}/>`)<0&&r.indexOf(`${n} />`)<0?i:t.createElement(q,{key:s,i18nComponent:i})},z=(e,t,n,r)=>e?Array.isArray(e)?((e,t)=>e.map((e,n)=>W(e,n,t)))(e,t):O(e)?((e,t)=>{const n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:W(e[r],r,t)})}),n})(e,t):(x(n,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:r}),null):null;function H({children:e,count:r,parent:s,i18nKey:i,context:a,tOptions:o={},values:c,defaults:l,components:u,ns:p,i18n:d,t:f,shouldUnescape:g,...m}){const h=d||V();if(!h)return x(h,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.",{i18nKey:i}),e;const y=f||h.t.bind(h)||(e=>e),E={...P(),...h.options?.react};let v=p||(y.ns?void 0:h.options?.defaultNS||"translation");S(v)&&(v=[v]);const{transDefaultProps:N}=E,I=N?.tOptions?{...N.tOptions,...o}:o;void 0===g&&void 0===N?.shouldUnescape||!b()||x(h,"DEPRECATED_OPTION","Trans: shouldUnescape is ignored, Trans always decodes HTML entities now. Remove it from your Trans props and transDefaultProps.",{i18nKey:i});const w=N?.values?{...N.values,...c}:c,A=N?.components?{...N.components,...u}:u,$=K(e,E,h,i),R=Array.isArray(i)?i[i.length-1]:i,C=l||I?.defaultValue||$||E.transEmptyNodeValue||("function"==typeof R?n.keyFromSelector(R):R),{hashTransKey:j}=E,_=i||(j?j($||C):$||C);c=h.options?.interpolation?.defaultVariables?{...h.options.interpolation.defaultVariables,...w}:w;const q=(e=>{const n={};if(!e)return n;const r=e=>{U(e).forEach(e=>{S(e)||(L(e)?r(D(e)):O(e)&&!t.isValidElement(e)&&Object.assign(n,e))})};return r(e),n})(e);q&&"number"==typeof q.count&&void 0===r&&(r=q.count),void 0===r&&(r=I?.count);const W=c||void 0!==r&&!h.options?.interpolation?.alwaysFormat||!e,H=T(h),M=W&&(H?!H.options?.escapeVariables:!1===(I.interpolation?.escapeValue??h.options?.interpolation?.escapeValue));let B=W?I.interpolation:{interpolation:{...I.interpolation,prefix:"#$?",suffix:"?$#"}};M&&!H&&(B={interpolation:{...I.interpolation,escapeValue:!0}});const Y={...h.options?.interpolation,...I.interpolation},Z=Y.escape||h.services?.interpolator?.escape,X=Object.keys(q).map(e=>`${Y.prefix??"{{"}${e}${Y.suffix??"}}"}`),G=W&&!H&&X.length>0&&!1!==Y.skipOnVariables&&!I.missingInterpolationHandler&&!h.options?.missingInterpolationHandler&&"function"==typeof Z&&X.every(e=>Z(e)===e),J=M&&H?k:e=>e,Q={...J(I),context:a||I.context,count:r,...J(c),...G&&{missingInterpolationHandler:(e,t,n)=>n&&Object.prototype.hasOwnProperty.call(n,t[1].trim())?"":t[0]},...B,defaultValue:C,ns:v};let ee=_?y(_,Q):C;ee===_&&C&&(ee=C);const te=z(A,ee,h,i);let ne=te||e,re=null;var se;O(se=te)&&!Array.isArray(se)&&Object.keys(se).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0)?(re=te,ne=e):te&&!Array.isArray(te)&&(re=te,ne=void 0);const ie=F(ne,re,ee,h,E,Q),ae=s??E.defaultTransParent;return ae?t.createElement(ae,m,ie):ie}const M={type:"3rdParty",init(e){_(e)}},B=t.createContext();class Y{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Z=e=>async t=>({...await(e.getInitialProps?.(t))??{},...X()}),X=()=>{const e=V();if(!e)return console.warn("react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next"),{};const t=e.reportNamespaces?.getUsedNamespaces()??[],n={},r={};return e.languages.forEach(n=>{r[n]={},t.forEach(t=>{r[n][t]=e.getResourceBundle(n,t)||{}})}),n.initialI18nStore=r,n.initialLanguage=e.language,n},G=e=>`${e.language}|${e.resolvedLanguage}|${e.languages?.join(",")}`,J=e=>new Proxy(e,{get:(e,t)=>"__original"===t?e:Reflect.get(e,t)}),Q={t:(e,t)=>{if(S(t))return t;if(O(t)&&S(t.defaultValue))return t.defaultValue;if("function"==typeof e)return"";if(Array.isArray(e)){const t=e[e.length-1];return"function"==typeof t?"":t}return e},ready:!1},ee=()=>()=>{},te=(e,{bindI18n:t,bindI18nStore:n},r)=>(t&&e.on(t,r),n&&e.store.on(n,r),()=>{t&&e.off(t,r),n&&e.store.off(n,r)}),ne=e=>{const{bindI18n:n,bindI18nStore:r}={...P(),...e?.options?.react},s=t.useRef(0),i=t.useCallback(t=>e?te(e,{bindI18n:n,bindI18nStore:r},()=>{s.current+=1,t()}):()=>{},[e,n,r]),a=()=>n&&e?`${s.current}|${G(e)}`:String(s.current);t.useSyncExternalStore(i,a,a)},re=(e,r={})=>{const{i18n:s}=r,{i18n:i,defaultNS:a}=t.useContext(B)||{},o=s||i||V();o&&!o.reportNamespaces&&(o.reportNamespaces=new Y),o||x(o,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.");const c=t.useMemo(()=>({...P(),...o?.options?.react,...r}),[o,r]),{useSuspense:l,keyPrefix:u,bindI18n:p,bindI18nStore:d}=c,f=e||a||o?.options?.defaultNS,g=S(f)?[f]:f||["translation"],m=JSON.stringify(g),h=t.useMemo(()=>g,[m]);o?.reportNamespaces?.addUsedNamespaces?.(h);const y=t.useRef(0),E=t.useCallback(e=>{if(!o)return ee;return te(o,{bindI18n:p,bindI18nStore:d},()=>{y.current+=1,e()})},[o,p,d]),I=t.useRef(),O=t.useCallback(()=>{if(!o)return Q;const e=!(!o.isInitialized&&!o.initializedStoreOnce)&&h.every(e=>((e,t,n={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}):(x(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0))(e,o,c)),t=r.lng||o.language,s=y.current,i="function"==typeof u?n.keyFromSelector(u,{...o.options,ns:h}):u,a=I.current;if(a&&a.i18n===o&&a.ready===e&&a.lng===t&&a.namespaces===h&&a.keyPrefix===i&&a.revision===s)return a;const l={t:o.getFixedT(t,"fallback"===c.nsMode?h:h[0],u,{scopeNs:h}),i18n:o,ready:e,lng:t,namespaces:h,keyPrefix:i,revision:s};return I.current=l,l},[o,h,u,c,r.lng]),[T,w]=t.useState(0);let k,{t:A,ready:$}=t.useSyncExternalStore(E,O,O);o&&l&&!$&&(k=new Promise(e=>{const t=()=>e();r.lng?N(o,r.lng,h,t):v(o,h,t)}),({t:A,ready:$}=O())),t.useEffect(()=>{if(o&&!$&&!l){const e=()=>w(e=>e+1);r.lng?N(o,r.lng,h,e):v(o,h,e)}},[o,r.lng,h,$,l,T]);const R=o||{},C=t.useRef(null),j=t.useMemo(()=>{const e=R,t=G(e);C.current?.original===e&&C.current.lang===t||(C.current={original:e,lang:t,wrapper:J(e)});const n=C.current.wrapper,r=$||l?A:(...e)=>(x(o,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),A(...e)),s=[r,n,$];return s.t=r,s.i18n=n,s.ready=$,s},[A,R,$,R.resolvedLanguage,R.language,R.languages]);if(o&&l&&!$)throw b()&&x(o,"SUSPENDED_WHILE_LOADING","useTranslation: suspended while translations are loading (useSuspense is true by default). Add a <Suspense> boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook"),k;return j};class se extends Error{constructor(e,t,n){super(e),this.name="TranslationParserError",this.position=t,this.translationString=n,Error.captureStackTrace&&Error.captureStackTrace(this,se)}}const ie={"&nbsp;":" ","&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&apos;":"'","&copy;":"©","&reg;":"®","&trade;":"™","&hellip;":"…","&ndash;":"–","&mdash;":"—","&lsquo;":"‘","&rsquo;":"’","&sbquo;":"‚","&ldquo;":"“","&rdquo;":"”","&bdquo;":"„","&dagger;":"†","&Dagger;":"‡","&bull;":"•","&prime;":"′","&Prime;":"″","&lsaquo;":"‹","&rsaquo;":"›","&sect;":"§","&para;":"¶","&middot;":"·","&ensp;":" ","&emsp;":" ","&thinsp;":" ","&euro;":"€","&pound;":"£","&yen;":"¥","&cent;":"¢","&curren;":"¤","&times;":"×","&divide;":"÷","&minus;":"−","&plusmn;":"±","&ne;":"≠","&le;":"≤","&ge;":"≥","&asymp;":"≈","&equiv;":"≡","&infin;":"∞","&int;":"∫","&sum;":"∑","&prod;":"∏","&radic;":"√","&part;":"∂","&permil;":"‰","&deg;":"°","&micro;":"µ","&larr;":"←","&uarr;":"↑","&rarr;":"→","&darr;":"↓","&harr;":"↔","&crarr;":"↵","&lArr;":"⇐","&uArr;":"⇑","&rArr;":"⇒","&dArr;":"⇓","&hArr;":"⇔","&alpha;":"α","&beta;":"β","&gamma;":"γ","&delta;":"δ","&epsilon;":"ε","&zeta;":"ζ","&eta;":"η","&theta;":"θ","&iota;":"ι","&kappa;":"κ","&lambda;":"λ","&mu;":"μ","&nu;":"ν","&xi;":"ξ","&omicron;":"ο","&pi;":"π","&rho;":"ρ","&sigma;":"σ","&tau;":"τ","&upsilon;":"υ","&phi;":"φ","&chi;":"χ","&psi;":"ψ","&omega;":"ω","&Alpha;":"Α","&Beta;":"Β","&Gamma;":"Γ","&Delta;":"Δ","&Epsilon;":"Ε","&Zeta;":"Ζ","&Eta;":"Η","&Theta;":"Θ","&Iota;":"Ι","&Kappa;":"Κ","&Lambda;":"Λ","&Mu;":"Μ","&Nu;":"Ν","&Xi;":"Ξ","&Omicron;":"Ο","&Pi;":"Π","&Rho;":"Ρ","&Sigma;":"Σ","&Tau;":"Τ","&Upsilon;":"Υ","&Phi;":"Φ","&Chi;":"Χ","&Psi;":"Ψ","&Omega;":"Ω","&Agrave;":"À","&Aacute;":"Á","&Acirc;":"Â","&Atilde;":"Ã","&Auml;":"Ä","&Aring;":"Å","&AElig;":"Æ","&Ccedil;":"Ç","&Egrave;":"È","&Eacute;":"É","&Ecirc;":"Ê","&Euml;":"Ë","&Igrave;":"Ì","&Iacute;":"Í","&Icirc;":"Î","&Iuml;":"Ï","&ETH;":"Ð","&Ntilde;":"Ñ","&Ograve;":"Ò","&Oacute;":"Ó","&Ocirc;":"Ô","&Otilde;":"Õ","&Ouml;":"Ö","&Oslash;":"Ø","&Ugrave;":"Ù","&Uacute;":"Ú","&Ucirc;":"Û","&Uuml;":"Ü","&Yacute;":"Ý","&THORN;":"Þ","&szlig;":"ß","&agrave;":"à","&aacute;":"á","&acirc;":"â","&atilde;":"ã","&auml;":"ä","&aring;":"å","&aelig;":"æ","&ccedil;":"ç","&egrave;":"è","&eacute;":"é","&ecirc;":"ê","&euml;":"ë","&igrave;":"ì","&iacute;":"í","&icirc;":"î","&iuml;":"ï","&eth;":"ð","&ntilde;":"ñ","&ograve;":"ò","&oacute;":"ó","&ocirc;":"ô","&otilde;":"õ","&ouml;":"ö","&oslash;":"ø","&ugrave;":"ù","&uacute;":"ú","&ucirc;":"û","&uuml;":"ü","&yacute;":"ý","&thorn;":"þ","&yuml;":"ÿ","&iexcl;":"¡","&iquest;":"¿","&fnof;":"ƒ","&circ;":"ˆ","&tilde;":"˜","&OElig;":"Œ","&oelig;":"œ","&Scaron;":"Š","&scaron;":"š","&Yuml;":"Ÿ","&ordf;":"ª","&ordm;":"º","&macr;":"¯","&acute;":"´","&cedil;":"¸","&sup1;":"¹","&sup2;":"²","&sup3;":"³","&frac14;":"¼","&frac12;":"½","&frac34;":"¾","&spades;":"♠","&clubs;":"♣","&hearts;":"♥","&diams;":"♦","&loz;":"◊","&oline;":"‾","&frasl;":"⁄","&weierp;":"℘","&image;":"ℑ","&real;":"ℜ","&alefsym;":"ℵ"},ae=/&(?:#(\d+)|#x([0-9a-fA-F]+)|[A-Za-z][A-Za-z0-9]*);/g,oe=(e,t)=>t<=1114111?String.fromCodePoint(t):e,ce=(e,n=[])=>{if(!e)return[];const r=(e=>{const t=[];let n=0,r="";const s=()=>{r&&(t.push({type:"Text",value:r,position:n-r.length}),r="")};for(;n<e.length;){const i=e[n];if("<"===i){const a=e.slice(n).match(/^<(\d+)>/);if(a)s(),t.push({type:"TagOpen",value:a[0],position:n,tagNumber:parseInt(a[1],10)}),n+=a[0].length;else{const a=e.slice(n).match(/^<\/(\d+)>/);a?(s(),t.push({type:"TagClose",value:a[0],position:n,tagNumber:parseInt(a[1],10)}),n+=a[0].length):(r+=i,n+=1)}}else r+=i,n+=1}return s(),t})(e),s=[],i=[],a=new Set;if(r.forEach(r=>{switch(r.type){case"Text":{const e=r.value.replace(ae,(e,t,n)=>t?oe(e,parseInt(t,10)):n?oe(e,parseInt(n,16)):Object.prototype.hasOwnProperty.call(ie,e)?ie[e]:e);(i.length>0?i[i.length-1].children:s).push(e)}break;case"TagOpen":{const{tagNumber:e}=r,t=(()=>{if(0===i.length)return n;const e=i[i.length-1];return e.declaration.props?.children&&Array.isArray(e.declaration.props.children)?e.declaration.props.children:e.declarations})(),o=t[e];if(!o){a.add(e);const t=`<${e}>`;(i.length>0?i[i.length-1].children:s).push(t);break}i.push({tagNumber:e,children:[],position:r.position,declaration:o,declarations:t})}break;case"TagClose":{const{tagNumber:n}=r;if(a.has(n)){const e=`</${n}>`;(i.length>0?i[i.length-1].children:s).push(e),a.delete(n);break}if(0===i.length)throw new se(`Unexpected closing tag </${n}> at position ${r.position}`,r.position,e);const o=i.pop();if(o.tagNumber!==n)throw new se(`Mismatched tags: expected </${o.tagNumber}> but got </${n}> at position ${r.position}`,r.position,e);const c=((e,n,r)=>{const{type:s,props:i={}}=e;if(i.children&&Array.isArray(i.children)&&r){const{children:e,...r}=i;return t.createElement(s,r,...n)}return 0===n.length?t.createElement(s,i):1===n.length?t.createElement(s,i,n[0]):t.createElement(s,i,...n)})(o.declaration,o.children,o.declarations);(i.length>0?i[i.length-1].children:s).push(c)}}}),i.length>0){const t=i[i.length-1];throw new se(`Unclosed tag <${t.tagNumber}> at position ${t.position}`,t.position,e)}return s};function le({i18nKey:e,defaultTranslation:n,content:r,ns:s,values:i={},i18n:a,t:o}){const c=a||V();if(!c)return x(c,"NO_I18NEXT_INSTANCE","IcuTrans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:e}),t.createElement(t.Fragment,{},n);const l=o||c.t?.bind(c)||(e=>e);let u=s||l.ns||c.options?.defaultNS;u=S(u)?[u]:u||["translation"];const p={...c.options?.interpolation?.defaultVariables,...i},d=T(c),f=d?!d.options?.escapeVariables:!1===c.options?.interpolation?.escapeValue,g=l(e||n,{defaultValue:n,...f&&d?k(p):p,...f&&!d&&{interpolation:{escapeValue:!0}},ns:u});try{const e=ce(g,r);return t.createElement(t.Fragment,{},...e)}catch(n){return m(c,"ICU_TRANS_RENDER_ERROR",`IcuTrans component error for key "${e}": ${n.message}`,{i18nKey:e,error:n}),t.createElement(t.Fragment,{},g)}}function ue({i18nKey:e,defaultTranslation:n,content:r,ns:s,values:i={},i18n:a,t:o}){const{i18n:c,defaultNS:l}=t.useContext(B)||{},u=a||c||V();ne(u);const p=o||u?.t.bind(u);return le({i18nKey:e,defaultTranslation:n,content:r,ns:s||p?.ns||l||u?.options?.defaultNS,values:i,i18n:u,t:o})}le.displayName="IcuTransWithoutContext",ue.displayName="IcuTrans";const pe=(e,n,r={})=>{const{i18n:s}=r,{i18n:i}=t.useContext(B)||{},a=s||i||V();a?a.options?.isClone||(!e||a.initializedStoreOnce||a.services?.resourceStore?a.hydrate(e,n):x(a,"I18N_NOT_INITIALIZED","useSSR: i18n instance was found but not initialized (services.resourceStore is missing). Make sure you call i18next.init() before using useSSR, e.g. at module level, not only in getStaticProps/getServerSideProps.")):x(a,"NO_I18NEXT_INSTANCE","useSSR: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.")};e.I18nContext=B,e.I18nextProvider=function({i18n:e,defaultNS:n,children:r}){const s=t.useMemo(()=>({i18n:e,defaultNS:n}),[e,n]);return t.createElement(B.Provider,{value:s},r)},e.IcuTrans=ue,e.IcuTransWithoutContext=le,e.Trans=function({children:e,count:n,parent:r,i18nKey:s,context:i,tOptions:a={},values:o,defaults:c,components:l,ns:u,i18n:p,t:d,shouldUnescape:f,...g}){const{i18n:m,defaultNS:h}=t.useContext(B)||{},y=p||m||V();ne(y);const x=d||y?.t.bind(y);return H({children:e,count:n,parent:r,i18nKey:s,context:i,tOptions:a,values:o,defaults:c,components:l,ns:u||(x?.ns?void 0:h||y?.options?.defaultNS),i18n:y,t:d,shouldUnescape:f,...g})},e.TransWithoutContext=H,e.Translation=({ns:e,children:t,...n})=>{const[r,s,i]=re(e,n);return t(r,{i18n:s,lng:s?.language},i)},e.composeInitialProps=Z,e.getDefaults=P,e.getI18n=V,e.getInitialProps=X,e.initReactI18next=M,e.nodesToString=K,e.setDefaults=(e={})=>{C={...C,...e}},e.setI18n=_,e.useSSR=pe,e.useTranslation=re,e.withSSR=()=>function(e){function n({initialI18nStore:n,initialLanguage:r,...s}){return pe(n,r),t.createElement(e,{...s})}return n.getInitialProps=Z(e),n.displayName=`withI18nextSSR(${I(e)})`,n.WrappedComponent=e,n},e.withTranslation=(e,n={})=>function(r){function s({forwardedRef:s,...i}){const[a,o,c]=re(e,{...i,keyPrefix:n.keyPrefix}),l={...i,t:a,i18n:o,tReady:c};return n.withRef&&s?l.ref=s:!n.withRef&&s&&(l.forwardedRef=s),t.createElement(r,l)}s.displayName=`withI18nextTranslation(${I(r)})`,s.WrappedComponent=r;return n.withRef?t.forwardRef((e,n)=>t.createElement(s,Object.assign({},e,{forwardedRef:n}))):s}});