react-i18next 15.5.2 → 15.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/amd/react-i18next.js +100 -101
- package/dist/amd/react-i18next.min.js +1 -1
- package/dist/commonjs/I18nextProvider.js +5 -6
- package/dist/commonjs/Trans.js +16 -17
- package/dist/commonjs/TransWithoutContext.js +33 -22
- package/dist/commonjs/Translation.js +5 -6
- package/dist/commonjs/defaults.js +1 -2
- package/dist/commonjs/useSSR.js +1 -2
- package/dist/commonjs/useTranslation.js +1 -2
- package/dist/commonjs/utils.js +1 -2
- package/dist/commonjs/withSSR.js +5 -6
- package/dist/commonjs/withTranslation.js +27 -31
- package/dist/es/TransWithoutContext.js +17 -5
- package/dist/es/package.json +1 -1
- package/dist/umd/react-i18next.js +100 -101
- package/dist/umd/react-i18next.min.js +1 -1
- package/package.json +32 -32
- package/react-i18next.js +100 -101
- package/react-i18next.min.js +1 -1
- package/src/TransWithoutContext.js +32 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
### 15.6.0
|
|
2
|
+
|
|
3
|
+
fix: passing components as object should still allow for indexed matching of children [1854](https://github.com/i18next/react-i18next/pull/1854)
|
|
4
|
+
|
|
5
|
+
### 15.5.3
|
|
6
|
+
|
|
7
|
+
chore: update `@babel/runtime` [1851](https://github.com/i18next/react-i18next/pull/1851)
|
|
8
|
+
|
|
1
9
|
### 15.5.2
|
|
2
10
|
|
|
3
11
|
fix element.ref access issue with react 19 [1846](https://github.com/i18next/react-i18next/pull/1846)
|
|
@@ -28,12 +28,12 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
28
28
|
var r = {
|
|
29
29
|
type: "tag",
|
|
30
30
|
name: "",
|
|
31
|
-
voidElement:
|
|
31
|
+
voidElement: false,
|
|
32
32
|
attrs: {},
|
|
33
33
|
children: []
|
|
34
34
|
},
|
|
35
35
|
i = n.match(/<\/?([^\s]+?)[/\s>]/);
|
|
36
|
-
if (i && (r.name = i[1], (e[i[1]] || "/" === n.charAt(n.length - 2)) && (r.voidElement =
|
|
36
|
+
if (i && (r.name = i[1], (e[i[1]] || "/" === n.charAt(n.length - 2)) && (r.voidElement = true), r.name.startsWith("!--"))) {
|
|
37
37
|
var s = n.indexOf("--\x3e");
|
|
38
38
|
return {
|
|
39
39
|
type: "comment",
|
|
@@ -71,7 +71,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
71
71
|
c = [],
|
|
72
72
|
o = [],
|
|
73
73
|
l = -1,
|
|
74
|
-
m =
|
|
74
|
+
m = false;
|
|
75
75
|
if (0 !== e.indexOf("<")) {
|
|
76
76
|
var u = e.indexOf("<");
|
|
77
77
|
c.push({
|
|
@@ -82,7 +82,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
82
82
|
return e.replace(r, function (r, s) {
|
|
83
83
|
if (m) {
|
|
84
84
|
if (r !== "</" + a.name + ">") return;
|
|
85
|
-
m =
|
|
85
|
+
m = false;
|
|
86
86
|
}
|
|
87
87
|
var u,
|
|
88
88
|
f = "/" !== r.charAt(1),
|
|
@@ -93,7 +93,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
93
93
|
var v = n(r);
|
|
94
94
|
return l < 0 ? (c.push(v), c) : ((u = o[l]).children.push(v), c);
|
|
95
95
|
}
|
|
96
|
-
if (f && (l++, "tag" === (a = n(r)).type && t.components[a.name] && (a.type = "component", m =
|
|
96
|
+
if (f && (l++, "tag" === (a = n(r)).type && t.components[a.name] && (a.type = "component", m = true), a.voidElement || m || !d || "<" === d || a.children.push({
|
|
97
97
|
type: "text",
|
|
98
98
|
content: e.slice(p, e.indexOf("<", p))
|
|
99
99
|
}), 0 === l && c.push(a), (u = o[l - 1]) && u.children.push(a), o[l] = a), (!f || a.voidElement) && (l > -1 && (a.voidElement || a.name === r.slice(2, -1)) && (l--, a = -1 === l ? c : o[l]), !m && "<" !== d && d)) {
|
|
@@ -159,8 +159,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
159
159
|
});
|
|
160
160
|
i18n.loadLanguages(lng, loadedClb(i18n, cb));
|
|
161
161
|
};
|
|
162
|
-
const hasLoadedNamespace =
|
|
163
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
162
|
+
const hasLoadedNamespace = (ns, i18n, options = {}) => {
|
|
164
163
|
if (!i18n.languages || !i18n.languages.length) {
|
|
165
164
|
warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {
|
|
166
165
|
languages: i18n.languages
|
|
@@ -214,8 +213,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
214
213
|
useSuspense: true,
|
|
215
214
|
unescape
|
|
216
215
|
};
|
|
217
|
-
const setDefaults =
|
|
218
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
216
|
+
const setDefaults = (options = {}) => {
|
|
219
217
|
defaultOptions = {
|
|
220
218
|
...defaultOptions,
|
|
221
219
|
...options
|
|
@@ -313,12 +311,12 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
313
311
|
});
|
|
314
312
|
return stringNode;
|
|
315
313
|
};
|
|
316
|
-
const renderNodes = (children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {
|
|
314
|
+
const renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {
|
|
317
315
|
if (targetString === '') return [];
|
|
318
316
|
const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
|
|
319
317
|
const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);
|
|
320
|
-
if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];
|
|
321
|
-
const data = {};
|
|
318
|
+
if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];
|
|
319
|
+
const data = knownComponentsMap ?? {};
|
|
322
320
|
const getData = childs => {
|
|
323
321
|
const childrenArray = getAsArray(childs);
|
|
324
322
|
childrenArray.forEach(child => {
|
|
@@ -364,6 +362,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
364
362
|
const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);
|
|
365
363
|
if (node.type === 'tag') {
|
|
366
364
|
let tmp = reactNodes[parseInt(node.name, 10)];
|
|
365
|
+
if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];
|
|
367
366
|
if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];
|
|
368
367
|
if (!tmp) tmp = {};
|
|
369
368
|
const child = Object.keys(node.attrs).length !== 0 ? mergeProps({
|
|
@@ -372,7 +371,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
372
371
|
const isElement = react.isValidElement(child);
|
|
373
372
|
const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
|
|
374
373
|
const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;
|
|
375
|
-
const isKnownComponent = isObject(
|
|
374
|
+
const isKnownComponent = isObject(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);
|
|
376
375
|
if (isString(child)) {
|
|
377
376
|
const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);
|
|
378
377
|
mem.push(value);
|
|
@@ -467,23 +466,27 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
467
466
|
});
|
|
468
467
|
return null;
|
|
469
468
|
};
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
469
|
+
const isComponentsMap = object => {
|
|
470
|
+
if (!isObject(object)) return false;
|
|
471
|
+
if (Array.isArray(object)) return false;
|
|
472
|
+
return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);
|
|
473
|
+
};
|
|
474
|
+
function Trans$1({
|
|
475
|
+
children,
|
|
476
|
+
count,
|
|
477
|
+
parent,
|
|
478
|
+
i18nKey,
|
|
479
|
+
context,
|
|
480
|
+
tOptions = {},
|
|
481
|
+
values,
|
|
482
|
+
defaults,
|
|
483
|
+
components,
|
|
484
|
+
ns,
|
|
485
|
+
i18n: i18nFromProps,
|
|
486
|
+
t: tFromProps,
|
|
487
|
+
shouldUnescape,
|
|
488
|
+
...additionalProps
|
|
489
|
+
}) {
|
|
487
490
|
const i18n = i18nFromProps || getI18n();
|
|
488
491
|
if (!i18n) {
|
|
489
492
|
warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using i18nextReactModule`, {
|
|
@@ -530,7 +533,13 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
530
533
|
};
|
|
531
534
|
const translation = key ? t(key, combinedTOpts) : defaultValue;
|
|
532
535
|
const generatedComponents = generateComponents(components, translation, i18n, i18nKey);
|
|
533
|
-
|
|
536
|
+
let indexedChildren = generatedComponents || children;
|
|
537
|
+
let componentsMap = null;
|
|
538
|
+
if (isComponentsMap(generatedComponents)) {
|
|
539
|
+
componentsMap = generatedComponents;
|
|
540
|
+
indexedChildren = children;
|
|
541
|
+
}
|
|
542
|
+
const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);
|
|
534
543
|
const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;
|
|
535
544
|
return useAsParent ? react.createElement(useAsParent, additionalProps, content) : content;
|
|
536
545
|
}
|
|
@@ -581,23 +590,22 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
581
590
|
return ret;
|
|
582
591
|
};
|
|
583
592
|
|
|
584
|
-
function Trans(
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
} = _ref;
|
|
593
|
+
function Trans({
|
|
594
|
+
children,
|
|
595
|
+
count,
|
|
596
|
+
parent,
|
|
597
|
+
i18nKey,
|
|
598
|
+
context,
|
|
599
|
+
tOptions = {},
|
|
600
|
+
values,
|
|
601
|
+
defaults,
|
|
602
|
+
components,
|
|
603
|
+
ns,
|
|
604
|
+
i18n: i18nFromProps,
|
|
605
|
+
t: tFromProps,
|
|
606
|
+
shouldUnescape,
|
|
607
|
+
...additionalProps
|
|
608
|
+
}) {
|
|
601
609
|
const {
|
|
602
610
|
i18n: i18nFromContext,
|
|
603
611
|
defaultNS: defaultNSFromContext
|
|
@@ -631,8 +639,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
631
639
|
};
|
|
632
640
|
const alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);
|
|
633
641
|
const useMemoizedT = (i18n, language, namespace, keyPrefix) => react.useCallback(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);
|
|
634
|
-
const useTranslation =
|
|
635
|
-
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
642
|
+
const useTranslation = (ns, props = {}) => {
|
|
636
643
|
const {
|
|
637
644
|
i18n: i18nFromProps
|
|
638
645
|
} = props;
|
|
@@ -728,46 +735,41 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
728
735
|
});
|
|
729
736
|
};
|
|
730
737
|
|
|
731
|
-
const withTranslation = function (
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
passDownProps.ref = forwardedRef;
|
|
751
|
-
} else if (!options.withRef && forwardedRef) {
|
|
752
|
-
passDownProps.forwardedRef = forwardedRef;
|
|
753
|
-
}
|
|
754
|
-
return react.createElement(WrappedComponent, passDownProps);
|
|
738
|
+
const withTranslation = (ns, options = {}) => function Extend(WrappedComponent) {
|
|
739
|
+
function I18nextWithTranslation({
|
|
740
|
+
forwardedRef,
|
|
741
|
+
...rest
|
|
742
|
+
}) {
|
|
743
|
+
const [t, i18n, ready] = useTranslation(ns, {
|
|
744
|
+
...rest,
|
|
745
|
+
keyPrefix: options.keyPrefix
|
|
746
|
+
});
|
|
747
|
+
const passDownProps = {
|
|
748
|
+
...rest,
|
|
749
|
+
t,
|
|
750
|
+
i18n,
|
|
751
|
+
tReady: ready
|
|
752
|
+
};
|
|
753
|
+
if (options.withRef && forwardedRef) {
|
|
754
|
+
passDownProps.ref = forwardedRef;
|
|
755
|
+
} else if (!options.withRef && forwardedRef) {
|
|
756
|
+
passDownProps.forwardedRef = forwardedRef;
|
|
755
757
|
}
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
};
|
|
758
|
+
return react.createElement(WrappedComponent, passDownProps);
|
|
759
|
+
}
|
|
760
|
+
I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;
|
|
761
|
+
I18nextWithTranslation.WrappedComponent = WrappedComponent;
|
|
762
|
+
const forwardRef = (props, ref) => react.createElement(I18nextWithTranslation, Object.assign({}, props, {
|
|
763
|
+
forwardedRef: ref
|
|
764
|
+
}));
|
|
765
|
+
return options.withRef ? react.forwardRef(forwardRef) : I18nextWithTranslation;
|
|
763
766
|
};
|
|
764
767
|
|
|
765
|
-
const Translation =
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
} = _ref;
|
|
768
|
+
const Translation = ({
|
|
769
|
+
ns,
|
|
770
|
+
children,
|
|
771
|
+
...options
|
|
772
|
+
}) => {
|
|
771
773
|
const [t, i18n, ready] = useTranslation(ns, options);
|
|
772
774
|
return children(t, {
|
|
773
775
|
i18n,
|
|
@@ -775,12 +777,11 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
775
777
|
}, ready);
|
|
776
778
|
};
|
|
777
779
|
|
|
778
|
-
function I18nextProvider(
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
} = _ref;
|
|
780
|
+
function I18nextProvider({
|
|
781
|
+
i18n,
|
|
782
|
+
defaultNS,
|
|
783
|
+
children
|
|
784
|
+
}) {
|
|
784
785
|
const value = react.useMemo(() => ({
|
|
785
786
|
i18n,
|
|
786
787
|
defaultNS
|
|
@@ -790,8 +791,7 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
790
791
|
}, children);
|
|
791
792
|
}
|
|
792
793
|
|
|
793
|
-
const useSSR =
|
|
794
|
-
let props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
794
|
+
const useSSR = (initialI18nStore, initialLanguage, props = {}) => {
|
|
795
795
|
const {
|
|
796
796
|
i18n: i18nFromProps
|
|
797
797
|
} = props;
|
|
@@ -818,12 +818,11 @@ define(['exports', 'react'], (function (exports, react) { 'use strict';
|
|
|
818
818
|
};
|
|
819
819
|
|
|
820
820
|
const withSSR = () => function Extend(WrappedComponent) {
|
|
821
|
-
function I18nextWithSSR(
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
} = _ref;
|
|
821
|
+
function I18nextWithSSR({
|
|
822
|
+
initialI18nStore,
|
|
823
|
+
initialLanguage,
|
|
824
|
+
...rest
|
|
825
|
+
}) {
|
|
827
826
|
useSSR(initialI18nStore, initialLanguage);
|
|
828
827
|
return react.createElement(WrappedComponent, {
|
|
829
828
|
...rest
|
|
@@ -1 +1 @@
|
|
|
1
|
-
define(["exports","react"],(function(e,n){"use strict";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var s=t({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}),r=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function a(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(s[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var a=e.indexOf("--\x3e");return{type:"comment",comment:-1!==a?e.slice(4,a):""}}for(var i=new RegExp(r),o=null;null!==(o=i.exec(e));)if(o[0].trim())if(o[1]){var l=o[1].trim(),c=[l,""];l.indexOf("=")>-1&&(c=l.split("=")),n.attrs[c[0]]=c[1],i.lastIndex--}else o[2]&&(n.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return n}var i=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,o=/^\s*$/,l=Object.create(null);var c=function(e,n){n||(n={}),n.components||(n.components=l);var t,s=[],r=[],c=-1,u=!1;if(0!==e.indexOf("<")){var p=e.indexOf("<");s.push({type:"text",content:-1===p?e:e.substring(0,p)})}return e.replace(i,(function(i,l){if(u){if(i!=="</"+t.name+">")return;u=!1}var p,d="/"!==i.charAt(1),f=i.startsWith("\x3c!--"),g=l+i.length,m=e.charAt(g);if(f){var h=a(i);return c<0?(s.push(h),s):((p=r[c]).children.push(h),s)}if(d&&(c++,"tag"===(t=a(i)).type&&n.components[t.name]&&(t.type="component",u=!0),t.voidElement||u||!m||"<"===m||t.children.push({type:"text",content:e.slice(g,e.indexOf("<",g))}),0===c&&s.push(t),(p=r[c-1])&&p.children.push(t),r[c]=t),(!d||t.voidElement)&&(c>-1&&(t.voidElement||t.name===i.slice(2,-1))&&(c--,t=-1===c?s:r[c]),!u&&"<"!==m&&m)){p=-1===c?s:r[c].children;var y=e.indexOf("<",g),v=e.slice(g,-1===y?void 0:y);o.test(v)&&(v=" "),(y>-1&&c+p.length>=0||" "!==v)&&p.push({type:"text",content:v})}})),s};const u=(e,n,t,s)=>{const r=[t,{code:n,...s||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);y(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...r):console?.warn&&console.warn(...r)},p={},d=(e,n,t,s)=>{y(t)&&p[t]||(y(t)&&(p[t]=new Date),u(e,n,t,s))},f=(e,n)=>()=>{if(e.isInitialized)n();else{const t=()=>{setTimeout((()=>{e.off("initialized",t)}),0),n()};e.on("initialized",t)}},g=(e,n,t)=>{e.loadNamespaces(n,f(e,t))},m=(e,n,t,s)=>{if(y(t)&&(t=[t]),e.options.preload&&e.options.preload.indexOf(n)>-1)return g(e,t,s);t.forEach((n=>{e.options.ns.indexOf(n)<0&&e.options.ns.push(n)})),e.loadLanguages(n,f(e,s))},h=e=>e.displayName||e.name||(y(e)&&e.length>0?e:"Unknown"),y=e=>"string"==typeof e,v=e=>"object"==typeof e&&null!==e,N=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,x={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},E=e=>x[e];let b={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:e=>e.replace(N,E)};const O=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b={...b,...e}},I=()=>b;let S;const w=e=>{S=e},$=()=>S,k=(e,n)=>{if(!e)return!1;const t=e.props?.children??e.children;return n?t.length>0:!!t},T=e=>{if(!e)return[];const n=e.props?.children??e.children;return e.props?.i18nIsDynamicList?A(n):n},A=e=>Array.isArray(e)?e:[e],R=(e,t,s,r)=>{if(!e)return"";let a="";const i=A(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return i.forEach(((e,i)=>{if(y(e))a+=`${e}`;else if(n.isValidElement(e)){const{props:n,type:l}=e,c=Object.keys(n).length,u=o.indexOf(l)>-1,p=n.children;if(!p&&u&&!c)return void(a+=`<${l}/>`);if(!p&&(!u||c)||n.i18nIsDynamicList)return void(a+=`<${i}></${i}>`);if(u&&1===c&&y(p))return void(a+=`<${l}>${p}</${l}>`);const d=R(p,t,s,r);a+=`<${i}>${d}</${i}>`}else if(null!==e)if(v(e)){const{format:n,...t}=e,i=Object.keys(t);if(1===i.length){const e=n?`${i[0]}, ${n}`:i[0];return void(a+=`{{${e}}}`)}u(s,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:r,child:e})}else u(s,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:r,child:e});else u(s,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:r})})),a},j=(e,t,s,r,a,i)=>{if(""===t)return[];const o=r.transKeepBasicHtmlNodesFor||[],l=t&&new RegExp(o.map((e=>`<${e}`)).join("|")).test(t);if(!e&&!l&&!i)return[t];const u={},p=e=>{A(e).forEach((e=>{y(e)||(k(e)?p(T(e)):v(e)&&!n.isValidElement(e)&&Object.assign(u,e))}))};p(e);const d=c(`<0>${t}</0>`),f={...u,...a},g=(e,t,s)=>{const r=T(e),a=h(r,t.children,s);return(e=>Array.isArray(e)&&e.every(n.isValidElement))(r)&&0===a.length||e.props?.i18nIsDynamicList?r:a},m=(e,t,s,r,a)=>{e.dummy?(e.children=t,s.push(n.cloneElement(e,{key:r},a?void 0:t))):s.push(...n.Children.map([e],(e=>{const s={...e.props};return delete s.i18nIsDynamicList,n.createElement(e.type,{...s,key:r,ref:e.props.ref??e.ref},a?null:t)})))},h=(t,a,c)=>{const u=A(t);return A(a).reduce(((t,a,p)=>{const d=a.children?.[0]?.content&&s.services.interpolator.interpolate(a.children[0].content,f,s.language);if("tag"===a.type){let i=u[parseInt(a.name,10)];1!==c.length||i||(i=c[0][a.name]),i||(i={});const N=0!==Object.keys(a.attrs).length?((e,n)=>{const t={...n};return t.props=Object.assign(e.props,n.props),t})({props:a.attrs},i):i,x=n.isValidElement(N),E=x&&k(a,!0)&&!a.voidElement,b=l&&v(N)&&N.dummy&&!x,O=v(e)&&Object.hasOwnProperty.call(e,a.name);if(y(N)){const e=s.services.interpolator.interpolate(N,f,s.language);t.push(e)}else if(k(N)||E){const e=g(N,a,c);m(N,e,t,p)}else if(b){const e=h(u,a.children,c);m(N,e,t,p)}else if(Number.isNaN(parseFloat(a.name)))if(O){const e=g(N,a,c);m(N,e,t,p,a.voidElement)}else if(r.transSupportBasicHtmlNodes&&o.indexOf(a.name)>-1)if(a.voidElement)t.push(n.createElement(a.name,{key:`${a.name}-${p}`}));else{const e=h(u,a.children,c);t.push(n.createElement(a.name,{key:`${a.name}-${p}`},e))}else if(a.voidElement)t.push(`<${a.name} />`);else{const e=h(u,a.children,c);t.push(`<${a.name}>${e}</${a.name}>`)}else if(v(N)&&!x){const e=a.children[0]?d:null;e&&t.push(e)}else m(N,d,t,p,1!==a.children.length||!d)}else if("text"===a.type){const e=r.transWrapTextNodes,o=i?r.unescape(s.services.interpolator.interpolate(a.content,f,s.language)):s.services.interpolator.interpolate(a.content,f,s.language);e?t.push(n.createElement(e,{key:`${a.name}-${p}`},o)):t.push(o)}return t}),[])},N=h([{dummy:!0,children:e||[]}],d,A(e||[]));return T(N[0])},C=(e,t,s)=>{const r=e.key||t,a=n.cloneElement(e,{key:r});if(!a.props||!a.props.children||s.indexOf(`${t}/>`)<0&&s.indexOf(`${t} />`)<0)return a;return n.createElement((function(){return n.createElement(n.Fragment,null,a)}),{key:r})},L=(e,n,t,s)=>e?Array.isArray(e)?((e,n)=>e.map(((e,t)=>C(e,t,n))))(e,n):v(e)?((e,n)=>{const t={};return Object.keys(e).forEach((s=>{Object.assign(t,{[s]:C(e[s],s,n)})})),t})(e,n):(d(t,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:s}),null):null;function P(e){let{children:t,count:s,parent:r,i18nKey:a,context:i,tOptions:o={},values:l,defaults:c,components:u,ns:p,i18n:f,t:g,shouldUnescape:m,...h}=e;const v=f||$();if(!v)return d(v,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:a}),t;const N=g||v.t.bind(v)||(e=>e),x={...I(),...v.options?.react};let E=p||N.ns||v.options?.defaultNS;E=y(E)?[E]:E||["translation"];const b=R(t,x,v,a),O=c||b||x.transEmptyNodeValue||a,{hashTransKey:S}=x,w=a||(S?S(b||O):b||O);v.options?.interpolation?.defaultVariables&&(l=l&&Object.keys(l).length>0?{...l,...v.options.interpolation.defaultVariables}:{...v.options.interpolation.defaultVariables});const k=l||void 0!==s&&!v.options?.interpolation?.alwaysFormat||!t?o.interpolation:{interpolation:{...o.interpolation,prefix:"#$?",suffix:"?$#"}},T={...o,context:i||o.context,count:s,...l,...k,defaultValue:O,ns:E},A=w?N(w,T):O,C=L(u,A,v,a),P=j(C||t,A,v,x,T,m),V=r??x.defaultTransParent;return V?n.createElement(V,h,P):P}const V={type:"3rdParty",init(e){O(e.options.react),w(e)}},_=n.createContext();class D{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach((e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)}))}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const K=e=>async n=>({...await(e.getInitialProps?.(n))??{},...z()}),z=()=>{const e=$(),n=e.reportNamespaces?.getUsedNamespaces()??[],t={},s={};return e.languages.forEach((t=>{s[t]={},n.forEach((n=>{s[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=s,t.initialLanguage=e.language,t};const U=(e,n,t,s)=>e.getFixedT(n,t,s),F=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{i18n:s}=t,{i18n:r,defaultNS:a}=n.useContext(_)||{},i=s||r||$();if(i&&!i.reportNamespaces&&(i.reportNamespaces=new D),!i){d(i,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,n)=>y(n)?n:v(n)&&y(n.defaultValue)?n.defaultValue:Array.isArray(e)?e[e.length-1]:e,n=[e,{},!1];return n.t=e,n.i18n={},n.ready=!1,n}i.options.react?.wait&&d(i,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const o={...I(),...i.options.react,...t},{useSuspense:l,keyPrefix:c}=o;let u=e||a||i.options?.defaultNS;u=y(u)?[u]:u||["translation"],i.reportNamespaces.addUsedNamespaces?.(u);const p=(i.isInitialized||i.initializedStoreOnce)&&u.every((e=>function(e,n){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.languages&&n.languages.length?n.hasLoadedNamespace(e,{lng:t.lng,precheck:(n,s)=>{if(t.bindI18n?.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!s(n.isLanguageChangingTo,e))return!1}}):(d(n,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:n.languages}),!0)}(e,i,o))),f=((e,t,s,r)=>n.useCallback(U(e,t,s,r),[e,t,s,r]))(i,t.lng||null,"fallback"===o.nsMode?u:u[0],c),h=()=>f,N=()=>U(i,t.lng||null,"fallback"===o.nsMode?u:u[0],c),[x,E]=n.useState(h);let b=u.join();t.lng&&(b=`${t.lng}${b}`);const O=((e,t)=>{const s=n.useRef();return n.useEffect((()=>{s.current=e}),[e,t]),s.current})(b),S=n.useRef(!0);n.useEffect((()=>{const{bindI18n:e,bindI18nStore:n}=o;S.current=!0,p||l||(t.lng?m(i,t.lng,u,(()=>{S.current&&E(N)})):g(i,u,(()=>{S.current&&E(N)}))),p&&O&&O!==b&&S.current&&E(N);const s=()=>{S.current&&E(N)};return e&&i?.on(e,s),n&&i?.store.on(n,s),()=>{S.current=!1,i&&e?.split(" ").forEach((e=>i.off(e,s))),n&&i&&n.split(" ").forEach((e=>i.store.off(e,s)))}}),[i,b]),n.useEffect((()=>{S.current&&p&&E(h)}),[i,c,p]);const w=[x,i,p];if(w.t=x,w.i18n=i,w.ready=p,p)return w;if(!p&&!l)return w;throw new Promise((e=>{t.lng?m(i,t.lng,u,(()=>e())):g(i,u,(()=>e()))}))};const B=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{i18n:r}=s,{i18n:a}=n.useContext(_)||{},i=r||a||$();i.options?.isClone||(e&&!i.initializedStoreOnce&&(i.services.resourceStore.data=e,i.options.ns=Object.values(e).reduce(((e,n)=>(Object.keys(n).forEach((n=>{e.indexOf(n)<0&&e.push(n)})),e)),i.options.ns),i.initializedStoreOnce=!0,i.isInitialized=!0),t&&!i.initializedLanguageOnce&&(i.changeLanguage(t),i.initializedLanguageOnce=!0))};e.I18nContext=_,e.I18nextProvider=function(e){let{i18n:t,defaultNS:s,children:r}=e;const a=n.useMemo((()=>({i18n:t,defaultNS:s})),[t,s]);return n.createElement(_.Provider,{value:a},r)},e.Trans=function(e){let{children:t,count:s,parent:r,i18nKey:a,context:i,tOptions:o={},values:l,defaults:c,components:u,ns:p,i18n:d,t:f,shouldUnescape:g,...m}=e;const{i18n:h,defaultNS:y}=n.useContext(_)||{},v=d||h||$(),N=f||v?.t.bind(v);return P({children:t,count:s,parent:r,i18nKey:a,context:i,tOptions:o,values:l,defaults:c,components:u,ns:p||N?.ns||y||v?.options?.defaultNS,i18n:v,t:f,shouldUnescape:g,...m})},e.TransWithoutContext=P,e.Translation=e=>{let{ns:n,children:t,...s}=e;const[r,a,i]=F(n,s);return t(r,{i18n:a,lng:a.language},i)},e.composeInitialProps=K,e.date=()=>"",e.getDefaults=I,e.getI18n=$,e.getInitialProps=z,e.initReactI18next=V,e.number=()=>"",e.plural=()=>"",e.select=()=>"",e.selectOrdinal=()=>"",e.setDefaults=O,e.setI18n=w,e.time=()=>"",e.useSSR=B,e.useTranslation=F,e.withSSR=()=>function(e){function t(t){let{initialI18nStore:s,initialLanguage:r,...a}=t;return B(s,r),n.createElement(e,{...a})}return t.getInitialProps=K(e),t.displayName=`withI18nextSSR(${h(e)})`,t.WrappedComponent=e,t},e.withTranslation=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(s){function r(r){let{forwardedRef:a,...i}=r;const[o,l,c]=F(e,{...i,keyPrefix:t.keyPrefix}),u={...i,t:o,i18n:l,tReady:c};return t.withRef&&a?u.ref=a:!t.withRef&&a&&(u.forwardedRef=a),n.createElement(s,u)}r.displayName=`withI18nextTranslation(${h(s)})`,r.WrappedComponent=s;return t.withRef?n.forwardRef(((e,t)=>n.createElement(r,Object.assign({},e,{forwardedRef:t})))):r}}}));
|
|
1
|
+
define(["exports","react"],(function(e,n){"use strict";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var s=t({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}),r=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function a(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(s[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var a=e.indexOf("--\x3e");return{type:"comment",comment:-1!==a?e.slice(4,a):""}}for(var i=new RegExp(r),o=null;null!==(o=i.exec(e));)if(o[0].trim())if(o[1]){var l=o[1].trim(),c=[l,""];l.indexOf("=")>-1&&(c=l.split("=")),n.attrs[c[0]]=c[1],i.lastIndex--}else o[2]&&(n.attrs[o[2]]=o[3].trim().substring(1,o[3].length-1));return n}var i=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,o=/^\s*$/,l=Object.create(null);var c=function(e,n){n||(n={}),n.components||(n.components=l);var t,s=[],r=[],c=-1,u=!1;if(0!==e.indexOf("<")){var p=e.indexOf("<");s.push({type:"text",content:-1===p?e:e.substring(0,p)})}return e.replace(i,(function(i,l){if(u){if(i!=="</"+t.name+">")return;u=!1}var p,d="/"!==i.charAt(1),f=i.startsWith("\x3c!--"),m=l+i.length,g=e.charAt(m);if(f){var h=a(i);return c<0?(s.push(h),s):((p=r[c]).children.push(h),s)}if(d&&(c++,"tag"===(t=a(i)).type&&n.components[t.name]&&(t.type="component",u=!0),t.voidElement||u||!g||"<"===g||t.children.push({type:"text",content:e.slice(m,e.indexOf("<",m))}),0===c&&s.push(t),(p=r[c-1])&&p.children.push(t),r[c]=t),(!d||t.voidElement)&&(c>-1&&(t.voidElement||t.name===i.slice(2,-1))&&(c--,t=-1===c?s:r[c]),!u&&"<"!==g&&g)){p=-1===c?s:r[c].children;var y=e.indexOf("<",m),N=e.slice(m,-1===y?void 0:y);o.test(N)&&(N=" "),(y>-1&&c+p.length>=0||" "!==N)&&p.push({type:"text",content:N})}})),s};const u=(e,n,t,s)=>{const r=[t,{code:n,...s||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);y(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...r):console?.warn&&console.warn(...r)},p={},d=(e,n,t,s)=>{y(t)&&p[t]||(y(t)&&(p[t]=new Date),u(e,n,t,s))},f=(e,n)=>()=>{if(e.isInitialized)n();else{const t=()=>{setTimeout((()=>{e.off("initialized",t)}),0),n()};e.on("initialized",t)}},m=(e,n,t)=>{e.loadNamespaces(n,f(e,t))},g=(e,n,t,s)=>{if(y(t)&&(t=[t]),e.options.preload&&e.options.preload.indexOf(n)>-1)return m(e,t,s);t.forEach((n=>{e.options.ns.indexOf(n)<0&&e.options.ns.push(n)})),e.loadLanguages(n,f(e,s))},h=e=>e.displayName||e.name||(y(e)&&e.length>0?e:"Unknown"),y=e=>"string"==typeof e,N=e=>"object"==typeof e&&null!==e,x=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,b={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},v=e=>b[e];let E={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:e=>e.replace(x,v)};const O=(e={})=>{E={...E,...e}},I=()=>E;let S;const w=e=>{S=e},$=()=>S,k=(e,n)=>{if(!e)return!1;const t=e.props?.children??e.children;return n?t.length>0:!!t},T=e=>{if(!e)return[];const n=e.props?.children??e.children;return e.props?.i18nIsDynamicList?A(n):n},A=e=>Array.isArray(e)?e:[e],R=(e,t,s,r)=>{if(!e)return"";let a="";const i=A(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return i.forEach(((e,i)=>{if(y(e))a+=`${e}`;else if(n.isValidElement(e)){const{props:n,type:l}=e,c=Object.keys(n).length,u=o.indexOf(l)>-1,p=n.children;if(!p&&u&&!c)return void(a+=`<${l}/>`);if(!p&&(!u||c)||n.i18nIsDynamicList)return void(a+=`<${i}></${i}>`);if(u&&1===c&&y(p))return void(a+=`<${l}>${p}</${l}>`);const d=R(p,t,s,r);a+=`<${i}>${d}</${i}>`}else if(null!==e)if(N(e)){const{format:n,...t}=e,i=Object.keys(t);if(1===i.length){const e=n?`${i[0]}, ${n}`:i[0];return void(a+=`{{${e}}}`)}u(s,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:r,child:e})}else u(s,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:r,child:e});else u(s,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:r})})),a},j=(e,t,s,r,a,i,o)=>{if(""===s)return[];const l=a.transKeepBasicHtmlNodesFor||[],u=s&&new RegExp(l.map((e=>`<${e}`)).join("|")).test(s);if(!(e||t||u||o))return[s];const p=t??{},d=e=>{A(e).forEach((e=>{y(e)||(k(e)?d(T(e)):N(e)&&!n.isValidElement(e)&&Object.assign(p,e))}))};d(e);const f=c(`<0>${s}</0>`),m={...p,...i},g=(e,t,s)=>{const r=T(e),a=x(r,t.children,s);return(e=>Array.isArray(e)&&e.every(n.isValidElement))(r)&&0===a.length||e.props?.i18nIsDynamicList?r:a},h=(e,t,s,r,a)=>{e.dummy?(e.children=t,s.push(n.cloneElement(e,{key:r},a?void 0:t))):s.push(...n.Children.map([e],(e=>{const s={...e.props};return delete s.i18nIsDynamicList,n.createElement(e.type,{...s,key:r,ref:e.props.ref??e.ref},a?null:t)})))},x=(e,s,i)=>{const c=A(e);return A(s).reduce(((e,s,p)=>{const d=s.children?.[0]?.content&&r.services.interpolator.interpolate(s.children[0].content,m,r.language);if("tag"===s.type){let o=c[parseInt(s.name,10)];!o&&t&&(o=t[s.name]),1!==i.length||o||(o=i[0][s.name]),o||(o={});const f=0!==Object.keys(s.attrs).length?((e,n)=>{const t={...n};return t.props=Object.assign(e.props,n.props),t})({props:s.attrs},o):o,b=n.isValidElement(f),v=b&&k(s,!0)&&!s.voidElement,E=u&&N(f)&&f.dummy&&!b,O=N(t)&&Object.hasOwnProperty.call(t,s.name);if(y(f)){const n=r.services.interpolator.interpolate(f,m,r.language);e.push(n)}else if(k(f)||v){const n=g(f,s,i);h(f,n,e,p)}else if(E){const n=x(c,s.children,i);h(f,n,e,p)}else if(Number.isNaN(parseFloat(s.name)))if(O){const n=g(f,s,i);h(f,n,e,p,s.voidElement)}else if(a.transSupportBasicHtmlNodes&&l.indexOf(s.name)>-1)if(s.voidElement)e.push(n.createElement(s.name,{key:`${s.name}-${p}`}));else{const t=x(c,s.children,i);e.push(n.createElement(s.name,{key:`${s.name}-${p}`},t))}else if(s.voidElement)e.push(`<${s.name} />`);else{const n=x(c,s.children,i);e.push(`<${s.name}>${n}</${s.name}>`)}else if(N(f)&&!b){const n=s.children[0]?d:null;n&&e.push(n)}else h(f,d,e,p,1!==s.children.length||!d)}else if("text"===s.type){const t=a.transWrapTextNodes,i=o?a.unescape(r.services.interpolator.interpolate(s.content,m,r.language)):r.services.interpolator.interpolate(s.content,m,r.language);t?e.push(n.createElement(t,{key:`${s.name}-${p}`},i)):e.push(i)}return e}),[])},b=x([{dummy:!0,children:e||[]}],f,A(e||[]));return T(b[0])},C=(e,t,s)=>{const r=e.key||t,a=n.cloneElement(e,{key:r});if(!a.props||!a.props.children||s.indexOf(`${t}/>`)<0&&s.indexOf(`${t} />`)<0)return a;return n.createElement((function(){return n.createElement(n.Fragment,null,a)}),{key:r})},L=(e,n,t,s)=>e?Array.isArray(e)?((e,n)=>e.map(((e,t)=>C(e,t,n))))(e,n):N(e)?((e,n)=>{const t={};return Object.keys(e).forEach((s=>{Object.assign(t,{[s]:C(e[s],s,n)})})),t})(e,n):(d(t,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:s}),null):null,P=e=>!!N(e)&&(!Array.isArray(e)&&Object.keys(e).reduce(((e,n)=>e&&Number.isNaN(Number.parseFloat(n))),!0));function V({children:e,count:t,parent:s,i18nKey:r,context:a,tOptions:i={},values:o,defaults:l,components:c,ns:u,i18n:p,t:f,shouldUnescape:m,...g}){const h=p||$();if(!h)return d(h,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:r}),e;const N=f||h.t.bind(h)||(e=>e),x={...I(),...h.options?.react};let b=u||N.ns||h.options?.defaultNS;b=y(b)?[b]:b||["translation"];const v=R(e,x,h,r),E=l||v||x.transEmptyNodeValue||r,{hashTransKey:O}=x,S=r||(O?O(v||E):v||E);h.options?.interpolation?.defaultVariables&&(o=o&&Object.keys(o).length>0?{...o,...h.options.interpolation.defaultVariables}:{...h.options.interpolation.defaultVariables});const w=o||void 0!==t&&!h.options?.interpolation?.alwaysFormat||!e?i.interpolation:{interpolation:{...i.interpolation,prefix:"#$?",suffix:"?$#"}},k={...i,context:a||i.context,count:t,...o,...w,defaultValue:E,ns:b},T=S?N(S,k):E,A=L(c,T,h,r);let C=A||e,V=null;P(A)&&(V=A,C=e);const _=j(C,V,T,h,x,k,m),D=s??x.defaultTransParent;return D?n.createElement(D,g,_):_}const _={type:"3rdParty",init(e){O(e.options.react),w(e)}},D=n.createContext();class K{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 n=>({...await(e.getInitialProps?.(n))??{},...U()}),U=()=>{const e=$(),n=e.reportNamespaces?.getUsedNamespaces()??[],t={},s={};return e.languages.forEach((t=>{s[t]={},n.forEach((n=>{s[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=s,t.initialLanguage=e.language,t};const F=(e,n,t,s)=>e.getFixedT(n,t,s),B=(e,t={})=>{const{i18n:s}=t,{i18n:r,defaultNS:a}=n.useContext(D)||{},i=s||r||$();if(i&&!i.reportNamespaces&&(i.reportNamespaces=new K),!i){d(i,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,n)=>y(n)?n:N(n)&&y(n.defaultValue)?n.defaultValue:Array.isArray(e)?e[e.length-1]:e,n=[e,{},!1];return n.t=e,n.i18n={},n.ready=!1,n}i.options.react?.wait&&d(i,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const o={...I(),...i.options.react,...t},{useSuspense:l,keyPrefix:c}=o;let u=e||a||i.options?.defaultNS;u=y(u)?[u]:u||["translation"],i.reportNamespaces.addUsedNamespaces?.(u);const p=(i.isInitialized||i.initializedStoreOnce)&&u.every((e=>((e,n,t={})=>n.languages&&n.languages.length?n.hasLoadedNamespace(e,{lng:t.lng,precheck:(n,s)=>{if(t.bindI18n?.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!s(n.isLanguageChangingTo,e))return!1}}):(d(n,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:n.languages}),!0))(e,i,o))),f=((e,t,s,r)=>n.useCallback(F(e,t,s,r),[e,t,s,r]))(i,t.lng||null,"fallback"===o.nsMode?u:u[0],c),h=()=>f,x=()=>F(i,t.lng||null,"fallback"===o.nsMode?u:u[0],c),[b,v]=n.useState(h);let E=u.join();t.lng&&(E=`${t.lng}${E}`);const O=((e,t)=>{const s=n.useRef();return n.useEffect((()=>{s.current=e}),[e,t]),s.current})(E),S=n.useRef(!0);n.useEffect((()=>{const{bindI18n:e,bindI18nStore:n}=o;S.current=!0,p||l||(t.lng?g(i,t.lng,u,(()=>{S.current&&v(x)})):m(i,u,(()=>{S.current&&v(x)}))),p&&O&&O!==E&&S.current&&v(x);const s=()=>{S.current&&v(x)};return e&&i?.on(e,s),n&&i?.store.on(n,s),()=>{S.current=!1,i&&e?.split(" ").forEach((e=>i.off(e,s))),n&&i&&n.split(" ").forEach((e=>i.store.off(e,s)))}}),[i,E]),n.useEffect((()=>{S.current&&p&&v(h)}),[i,c,p]);const w=[b,i,p];if(w.t=b,w.i18n=i,w.ready=p,p)return w;if(!p&&!l)return w;throw new Promise((e=>{t.lng?g(i,t.lng,u,(()=>e())):m(i,u,(()=>e()))}))};const W=(e,t,s={})=>{const{i18n:r}=s,{i18n:a}=n.useContext(D)||{},i=r||a||$();i.options?.isClone||(e&&!i.initializedStoreOnce&&(i.services.resourceStore.data=e,i.options.ns=Object.values(e).reduce(((e,n)=>(Object.keys(n).forEach((n=>{e.indexOf(n)<0&&e.push(n)})),e)),i.options.ns),i.initializedStoreOnce=!0,i.isInitialized=!0),t&&!i.initializedLanguageOnce&&(i.changeLanguage(t),i.initializedLanguageOnce=!0))};e.I18nContext=D,e.I18nextProvider=function({i18n:e,defaultNS:t,children:s}){const r=n.useMemo((()=>({i18n:e,defaultNS:t})),[e,t]);return n.createElement(D.Provider,{value:r},s)},e.Trans=function({children:e,count:t,parent:s,i18nKey:r,context:a,tOptions:i={},values:o,defaults:l,components:c,ns:u,i18n:p,t:d,shouldUnescape:f,...m}){const{i18n:g,defaultNS:h}=n.useContext(D)||{},y=p||g||$(),N=d||y?.t.bind(y);return V({children:e,count:t,parent:s,i18nKey:r,context:a,tOptions:i,values:o,defaults:l,components:c,ns:u||N?.ns||h||y?.options?.defaultNS,i18n:y,t:d,shouldUnescape:f,...m})},e.TransWithoutContext=V,e.Translation=({ns:e,children:n,...t})=>{const[s,r,a]=B(e,t);return n(s,{i18n:r,lng:r.language},a)},e.composeInitialProps=z,e.date=()=>"",e.getDefaults=I,e.getI18n=$,e.getInitialProps=U,e.initReactI18next=_,e.number=()=>"",e.plural=()=>"",e.select=()=>"",e.selectOrdinal=()=>"",e.setDefaults=O,e.setI18n=w,e.time=()=>"",e.useSSR=W,e.useTranslation=B,e.withSSR=()=>function(e){function t({initialI18nStore:t,initialLanguage:s,...r}){return W(t,s),n.createElement(e,{...r})}return t.getInitialProps=z(e),t.displayName=`withI18nextSSR(${h(e)})`,t.WrappedComponent=e,t},e.withTranslation=(e,t={})=>function(s){function r({forwardedRef:r,...a}){const[i,o,l]=B(e,{...a,keyPrefix:t.keyPrefix}),c={...a,t:i,i18n:o,tReady:l};return t.withRef&&r?c.ref=r:!t.withRef&&r&&(c.forwardedRef=r),n.createElement(s,c)}r.displayName=`withI18nextTranslation(${h(s)})`,r.WrappedComponent=s;return t.withRef?n.forwardRef(((e,t)=>n.createElement(r,Object.assign({},e,{forwardedRef:t})))):r}}));
|
|
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.I18nextProvider = I18nextProvider;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _context = require("./context.js");
|
|
9
|
-
function I18nextProvider(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} = _ref;
|
|
9
|
+
function I18nextProvider({
|
|
10
|
+
i18n,
|
|
11
|
+
defaultNS,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
15
14
|
const value = (0, _react.useMemo)(() => ({
|
|
16
15
|
i18n,
|
|
17
16
|
defaultNS
|
package/dist/commonjs/Trans.js
CHANGED
|
@@ -13,23 +13,22 @@ Object.defineProperty(exports, "nodesToString", {
|
|
|
13
13
|
var _react = require("react");
|
|
14
14
|
var _TransWithoutContext = require("./TransWithoutContext.js");
|
|
15
15
|
var _context = require("./context.js");
|
|
16
|
-
function Trans(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} = _ref;
|
|
16
|
+
function Trans({
|
|
17
|
+
children,
|
|
18
|
+
count,
|
|
19
|
+
parent,
|
|
20
|
+
i18nKey,
|
|
21
|
+
context,
|
|
22
|
+
tOptions = {},
|
|
23
|
+
values,
|
|
24
|
+
defaults,
|
|
25
|
+
components,
|
|
26
|
+
ns,
|
|
27
|
+
i18n: i18nFromProps,
|
|
28
|
+
t: tFromProps,
|
|
29
|
+
shouldUnescape,
|
|
30
|
+
...additionalProps
|
|
31
|
+
}) {
|
|
33
32
|
const {
|
|
34
33
|
i18n: i18nFromContext,
|
|
35
34
|
defaultNS: defaultNSFromContext
|
|
@@ -96,12 +96,12 @@ const nodesToString = (children, i18nOptions, i18n, i18nKey) => {
|
|
|
96
96
|
return stringNode;
|
|
97
97
|
};
|
|
98
98
|
exports.nodesToString = nodesToString;
|
|
99
|
-
const renderNodes = (children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {
|
|
99
|
+
const renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {
|
|
100
100
|
if (targetString === '') return [];
|
|
101
101
|
const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
|
|
102
102
|
const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);
|
|
103
|
-
if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];
|
|
104
|
-
const data = {};
|
|
103
|
+
if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];
|
|
104
|
+
const data = knownComponentsMap ?? {};
|
|
105
105
|
const getData = childs => {
|
|
106
106
|
const childrenArray = getAsArray(childs);
|
|
107
107
|
childrenArray.forEach(child => {
|
|
@@ -147,6 +147,7 @@ const renderNodes = (children, targetString, i18n, i18nOptions, combinedTOpts, s
|
|
|
147
147
|
const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);
|
|
148
148
|
if (node.type === 'tag') {
|
|
149
149
|
let tmp = reactNodes[parseInt(node.name, 10)];
|
|
150
|
+
if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];
|
|
150
151
|
if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];
|
|
151
152
|
if (!tmp) tmp = {};
|
|
152
153
|
const child = Object.keys(node.attrs).length !== 0 ? mergeProps({
|
|
@@ -155,7 +156,7 @@ const renderNodes = (children, targetString, i18n, i18nOptions, combinedTOpts, s
|
|
|
155
156
|
const isElement = (0, _react.isValidElement)(child);
|
|
156
157
|
const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
|
|
157
158
|
const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && (0, _utils.isObject)(child) && child.dummy && !isElement;
|
|
158
|
-
const isKnownComponent = (0, _utils.isObject)(
|
|
159
|
+
const isKnownComponent = (0, _utils.isObject)(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);
|
|
159
160
|
if ((0, _utils.isString)(child)) {
|
|
160
161
|
const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);
|
|
161
162
|
mem.push(value);
|
|
@@ -250,23 +251,27 @@ const generateComponents = (components, translation, i18n, i18nKey) => {
|
|
|
250
251
|
});
|
|
251
252
|
return null;
|
|
252
253
|
};
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
254
|
+
const isComponentsMap = object => {
|
|
255
|
+
if (!(0, _utils.isObject)(object)) return false;
|
|
256
|
+
if (Array.isArray(object)) return false;
|
|
257
|
+
return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);
|
|
258
|
+
};
|
|
259
|
+
function Trans({
|
|
260
|
+
children,
|
|
261
|
+
count,
|
|
262
|
+
parent,
|
|
263
|
+
i18nKey,
|
|
264
|
+
context,
|
|
265
|
+
tOptions = {},
|
|
266
|
+
values,
|
|
267
|
+
defaults,
|
|
268
|
+
components,
|
|
269
|
+
ns,
|
|
270
|
+
i18n: i18nFromProps,
|
|
271
|
+
t: tFromProps,
|
|
272
|
+
shouldUnescape,
|
|
273
|
+
...additionalProps
|
|
274
|
+
}) {
|
|
270
275
|
const i18n = i18nFromProps || (0, _i18nInstance.getI18n)();
|
|
271
276
|
if (!i18n) {
|
|
272
277
|
(0, _utils.warnOnce)(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using i18nextReactModule`, {
|
|
@@ -313,7 +318,13 @@ function Trans(_ref) {
|
|
|
313
318
|
};
|
|
314
319
|
const translation = key ? t(key, combinedTOpts) : defaultValue;
|
|
315
320
|
const generatedComponents = generateComponents(components, translation, i18n, i18nKey);
|
|
316
|
-
|
|
321
|
+
let indexedChildren = generatedComponents || children;
|
|
322
|
+
let componentsMap = null;
|
|
323
|
+
if (isComponentsMap(generatedComponents)) {
|
|
324
|
+
componentsMap = generatedComponents;
|
|
325
|
+
indexedChildren = children;
|
|
326
|
+
}
|
|
327
|
+
const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);
|
|
317
328
|
const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;
|
|
318
329
|
return useAsParent ? (0, _react.createElement)(useAsParent, additionalProps, content) : content;
|
|
319
330
|
}
|
|
@@ -5,12 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Translation = void 0;
|
|
7
7
|
var _useTranslation = require("./useTranslation.js");
|
|
8
|
-
const Translation =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} = _ref;
|
|
8
|
+
const Translation = ({
|
|
9
|
+
ns,
|
|
10
|
+
children,
|
|
11
|
+
...options
|
|
12
|
+
}) => {
|
|
14
13
|
const [t, i18n, ready] = (0, _useTranslation.useTranslation)(ns, options);
|
|
15
14
|
return children(t, {
|
|
16
15
|
i18n,
|
|
@@ -15,8 +15,7 @@ let defaultOptions = {
|
|
|
15
15
|
useSuspense: true,
|
|
16
16
|
unescape: _unescape.unescape
|
|
17
17
|
};
|
|
18
|
-
const setDefaults =
|
|
19
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
18
|
+
const setDefaults = (options = {}) => {
|
|
20
19
|
defaultOptions = {
|
|
21
20
|
...defaultOptions,
|
|
22
21
|
...options
|
package/dist/commonjs/useSSR.js
CHANGED
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useSSR = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _context = require("./context.js");
|
|
9
|
-
const useSSR =
|
|
10
|
-
let props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
9
|
+
const useSSR = (initialI18nStore, initialLanguage, props = {}) => {
|
|
11
10
|
const {
|
|
12
11
|
i18n: i18nFromProps
|
|
13
12
|
} = props;
|
|
@@ -16,8 +16,7 @@ const usePrevious = (value, ignore) => {
|
|
|
16
16
|
};
|
|
17
17
|
const alwaysNewT = (i18n, language, namespace, keyPrefix) => i18n.getFixedT(language, namespace, keyPrefix);
|
|
18
18
|
const useMemoizedT = (i18n, language, namespace, keyPrefix) => (0, _react.useCallback)(alwaysNewT(i18n, language, namespace, keyPrefix), [i18n, language, namespace, keyPrefix]);
|
|
19
|
-
const useTranslation =
|
|
20
|
-
let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
19
|
+
const useTranslation = (ns, props = {}) => {
|
|
21
20
|
const {
|
|
22
21
|
i18n: i18nFromProps
|
|
23
22
|
} = props;
|
package/dist/commonjs/utils.js
CHANGED
|
@@ -53,8 +53,7 @@ const loadLanguages = (i18n, lng, ns, cb) => {
|
|
|
53
53
|
i18n.loadLanguages(lng, loadedClb(i18n, cb));
|
|
54
54
|
};
|
|
55
55
|
exports.loadLanguages = loadLanguages;
|
|
56
|
-
const hasLoadedNamespace =
|
|
57
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
56
|
+
const hasLoadedNamespace = (ns, i18n, options = {}) => {
|
|
58
57
|
if (!i18n.languages || !i18n.languages.length) {
|
|
59
58
|
warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {
|
|
60
59
|
languages: i18n.languages
|
package/dist/commonjs/withSSR.js
CHANGED
|
@@ -9,12 +9,11 @@ var _useSSR = require("./useSSR.js");
|
|
|
9
9
|
var _context = require("./context.js");
|
|
10
10
|
var _utils = require("./utils.js");
|
|
11
11
|
const withSSR = () => function Extend(WrappedComponent) {
|
|
12
|
-
function I18nextWithSSR(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} = _ref;
|
|
12
|
+
function I18nextWithSSR({
|
|
13
|
+
initialI18nStore,
|
|
14
|
+
initialLanguage,
|
|
15
|
+
...rest
|
|
16
|
+
}) {
|
|
18
17
|
(0, _useSSR.useSSR)(initialI18nStore, initialLanguage);
|
|
19
18
|
return (0, _react.createElement)(WrappedComponent, {
|
|
20
19
|
...rest
|