react-i18next 11.6.0 → 11.7.3
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 +16 -0
- package/README.md +1 -1
- package/dist/amd/react-i18next.js +72 -39
- package/dist/amd/react-i18next.min.js +1 -1
- package/dist/commonjs/I18nextProvider.js +6 -3
- package/dist/commonjs/Trans.js +39 -23
- package/dist/commonjs/context.js +3 -3
- package/dist/commonjs/useTranslation.js +3 -4
- package/dist/commonjs/withSSR.js +1 -1
- package/dist/commonjs/withTranslation.js +2 -2
- package/dist/es/I18nextProvider.js +7 -4
- package/dist/es/Trans.js +38 -23
- package/dist/es/context.js +3 -3
- package/dist/es/useTranslation.js +3 -4
- package/dist/es/withSSR.js +1 -1
- package/dist/es/withTranslation.js +2 -2
- package/dist/umd/react-i18next.js +72 -39
- package/dist/umd/react-i18next.min.js +1 -1
- package/package.json +1 -1
- package/react-i18next.js +72 -39
- package/react-i18next.min.js +1 -1
- package/src/I18nextProvider.js +9 -5
- package/src/Trans.js +32 -17
- package/src/index.d.ts +3 -3
- package/src/useTranslation.js +1 -2
- package/src/utils.js +22 -0
package/react-i18next.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
var React__default = 'default' in React ? React['default'] : React;
|
|
8
8
|
|
|
9
9
|
function _typeof(obj) {
|
|
10
|
+
"@babel/helpers - typeof";
|
|
11
|
+
|
|
10
12
|
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
11
13
|
_typeof = function (obj) {
|
|
12
14
|
return typeof obj;
|
|
@@ -76,13 +78,13 @@
|
|
|
76
78
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
77
79
|
|
|
78
80
|
if (i % 2) {
|
|
79
|
-
ownKeys(source, true).forEach(function (key) {
|
|
81
|
+
ownKeys(Object(source), true).forEach(function (key) {
|
|
80
82
|
_defineProperty(target, key, source[key]);
|
|
81
83
|
});
|
|
82
84
|
} else if (Object.getOwnPropertyDescriptors) {
|
|
83
85
|
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
84
86
|
} else {
|
|
85
|
-
ownKeys(source).forEach(function (key) {
|
|
87
|
+
ownKeys(Object(source)).forEach(function (key) {
|
|
86
88
|
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
87
89
|
});
|
|
88
90
|
}
|
|
@@ -128,7 +130,7 @@
|
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
function _slicedToArray(arr, i) {
|
|
131
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
|
133
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
function _arrayWithHoles(arr) {
|
|
@@ -136,10 +138,7 @@
|
|
|
136
138
|
}
|
|
137
139
|
|
|
138
140
|
function _iterableToArrayLimit(arr, i) {
|
|
139
|
-
if (!(Symbol.iterator in Object(arr)
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
141
|
+
if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
|
|
143
142
|
var _arr = [];
|
|
144
143
|
var _n = true;
|
|
145
144
|
var _d = false;
|
|
@@ -165,8 +164,25 @@
|
|
|
165
164
|
return _arr;
|
|
166
165
|
}
|
|
167
166
|
|
|
167
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
168
|
+
if (!o) return;
|
|
169
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
170
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
171
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
172
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
173
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function _arrayLikeToArray(arr, len) {
|
|
177
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
178
|
+
|
|
179
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
180
|
+
|
|
181
|
+
return arr2;
|
|
182
|
+
}
|
|
183
|
+
|
|
168
184
|
function _nonIterableRest() {
|
|
169
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
|
185
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
170
186
|
}
|
|
171
187
|
|
|
172
188
|
var voidElements = {
|
|
@@ -381,7 +397,7 @@
|
|
|
381
397
|
var I18nContext = React__default.createContext();
|
|
382
398
|
function setDefaults() {
|
|
383
399
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
384
|
-
defaultOptions = _objectSpread2({}, defaultOptions,
|
|
400
|
+
defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options);
|
|
385
401
|
}
|
|
386
402
|
function getDefaults() {
|
|
387
403
|
return defaultOptions;
|
|
@@ -431,7 +447,7 @@
|
|
|
431
447
|
|
|
432
448
|
if (ForComponent.getInitialProps) {
|
|
433
449
|
ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {
|
|
434
|
-
resolve(_objectSpread2({}, componentsInitialProps,
|
|
450
|
+
resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps));
|
|
435
451
|
});
|
|
436
452
|
} else {
|
|
437
453
|
resolve(i18nInitialProps);
|
|
@@ -612,9 +628,22 @@
|
|
|
612
628
|
}
|
|
613
629
|
|
|
614
630
|
getData(children);
|
|
615
|
-
var interpolatedString = i18n.services.interpolator.interpolate(targetString, _objectSpread2({}, data,
|
|
631
|
+
var interpolatedString = i18n.services.interpolator.interpolate(targetString, _objectSpread2(_objectSpread2({}, data), combinedTOpts), i18n.language);
|
|
616
632
|
var ast = htmlParseStringify2.parse("<0>".concat(interpolatedString, "</0>"));
|
|
617
633
|
|
|
634
|
+
function renderInner(child, node, rootReactNode) {
|
|
635
|
+
var childs = getChildren(child);
|
|
636
|
+
var mappedChildren = mapAST(childs, node.children, rootReactNode);
|
|
637
|
+
return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
function pushTranslatedJSX(child, inner, mem, i) {
|
|
641
|
+
if (child.dummy) child.children = inner;
|
|
642
|
+
mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
|
|
643
|
+
key: i
|
|
644
|
+
}), inner));
|
|
645
|
+
}
|
|
646
|
+
|
|
618
647
|
function mapAST(reactNode, astNode, rootReactNode) {
|
|
619
648
|
var reactNodes = getAsArray(reactNode);
|
|
620
649
|
var astNodes = getAsArray(astNode);
|
|
@@ -629,52 +658,54 @@
|
|
|
629
658
|
props: node.attrs
|
|
630
659
|
}, tmp) : tmp;
|
|
631
660
|
var isElement = React__default.isValidElement(child);
|
|
661
|
+
var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
|
|
662
|
+
var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;
|
|
663
|
+
var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);
|
|
632
664
|
|
|
633
665
|
if (typeof child === 'string') {
|
|
634
666
|
mem.push(child);
|
|
635
|
-
} else if (hasChildren(child) ||
|
|
636
|
-
var
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
if (child.dummy) child.children = inner;
|
|
640
|
-
mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
|
|
641
|
-
key: i
|
|
642
|
-
}), inner));
|
|
643
|
-
} else if (emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement) {
|
|
667
|
+
} else if (hasChildren(child) || isValidTranslationWithChildren) {
|
|
668
|
+
var inner = renderInner(child, node, rootReactNode);
|
|
669
|
+
pushTranslatedJSX(child, inner, mem, i);
|
|
670
|
+
} else if (isEmptyTransWithHTML) {
|
|
644
671
|
var _inner = mapAST(reactNodes, node.children, rootReactNode);
|
|
645
672
|
|
|
646
|
-
mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
|
|
673
|
+
mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
|
|
647
674
|
key: i
|
|
648
675
|
}), _inner));
|
|
649
676
|
} else if (Number.isNaN(parseFloat(node.name))) {
|
|
650
|
-
if (
|
|
677
|
+
if (isKnownComponent) {
|
|
678
|
+
var _inner2 = renderInner(child, node, rootReactNode);
|
|
679
|
+
|
|
680
|
+
pushTranslatedJSX(child, _inner2, mem, i);
|
|
681
|
+
} else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
|
|
651
682
|
if (node.voidElement) {
|
|
652
683
|
mem.push(React__default.createElement(node.name, {
|
|
653
684
|
key: "".concat(node.name, "-").concat(i)
|
|
654
685
|
}));
|
|
655
686
|
} else {
|
|
656
|
-
var
|
|
687
|
+
var _inner3 = mapAST(reactNodes, node.children, rootReactNode);
|
|
657
688
|
|
|
658
689
|
mem.push(React__default.createElement(node.name, {
|
|
659
690
|
key: "".concat(node.name, "-").concat(i)
|
|
660
|
-
},
|
|
691
|
+
}, _inner3));
|
|
661
692
|
}
|
|
662
693
|
} else if (node.voidElement) {
|
|
663
694
|
mem.push("<".concat(node.name, " />"));
|
|
664
695
|
} else {
|
|
665
|
-
var
|
|
696
|
+
var _inner4 = mapAST(reactNodes, node.children, rootReactNode);
|
|
666
697
|
|
|
667
|
-
mem.push("<".concat(node.name, ">").concat(
|
|
698
|
+
mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">"));
|
|
668
699
|
}
|
|
669
700
|
} else if (_typeof(child) === 'object' && !isElement) {
|
|
670
701
|
var content = node.children[0] ? translationContent : null;
|
|
671
702
|
if (content) mem.push(content);
|
|
672
703
|
} else if (node.children.length === 1 && translationContent) {
|
|
673
|
-
mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
|
|
704
|
+
mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
|
|
674
705
|
key: i
|
|
675
706
|
}), translationContent));
|
|
676
707
|
} else {
|
|
677
|
-
mem.push(React__default.cloneElement(child, _objectSpread2({}, child.props, {
|
|
708
|
+
mem.push(React__default.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
|
|
678
709
|
key: i
|
|
679
710
|
})));
|
|
680
711
|
}
|
|
@@ -714,7 +745,7 @@
|
|
|
714
745
|
var i18n = i18nFromProps || i18nFromContext || getI18n();
|
|
715
746
|
|
|
716
747
|
if (!i18n) {
|
|
717
|
-
warnOnce('You will need pass in an i18next instance by using i18nextReactModule');
|
|
748
|
+
warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');
|
|
718
749
|
return children;
|
|
719
750
|
}
|
|
720
751
|
|
|
@@ -722,7 +753,7 @@
|
|
|
722
753
|
return k;
|
|
723
754
|
};
|
|
724
755
|
|
|
725
|
-
var reactI18nextOptions = _objectSpread2({}, getDefaults(),
|
|
756
|
+
var reactI18nextOptions = _objectSpread2(_objectSpread2({}, getDefaults()), i18n.options && i18n.options.react);
|
|
726
757
|
|
|
727
758
|
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
728
759
|
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
|
|
@@ -736,9 +767,9 @@
|
|
|
736
767
|
}
|
|
737
768
|
};
|
|
738
769
|
|
|
739
|
-
var combinedTOpts = _objectSpread2({}, tOptions, {
|
|
770
|
+
var combinedTOpts = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, tOptions), {}, {
|
|
740
771
|
count: count
|
|
741
|
-
}, values, {},
|
|
772
|
+
}, values), interpolationOverride), {}, {
|
|
742
773
|
defaultValue: defaultValue,
|
|
743
774
|
ns: namespaces
|
|
744
775
|
});
|
|
@@ -761,7 +792,7 @@
|
|
|
761
792
|
if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
|
|
762
793
|
|
|
763
794
|
if (!i18n) {
|
|
764
|
-
warnOnce('You will need pass in an i18next instance by using initReactI18next');
|
|
795
|
+
warnOnce('You will need to pass in an i18next instance by using initReactI18next');
|
|
765
796
|
|
|
766
797
|
var notReadyT = function notReadyT(k) {
|
|
767
798
|
return Array.isArray(k) ? k[k.length - 1] : k;
|
|
@@ -774,7 +805,7 @@
|
|
|
774
805
|
return retNotReady;
|
|
775
806
|
}
|
|
776
807
|
|
|
777
|
-
var i18nOptions = _objectSpread2({}, getDefaults(),
|
|
808
|
+
var i18nOptions = _objectSpread2(_objectSpread2(_objectSpread2({}, getDefaults()), i18n.options.react), props);
|
|
778
809
|
|
|
779
810
|
var useSuspense = i18nOptions.useSuspense;
|
|
780
811
|
var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
@@ -831,7 +862,6 @@
|
|
|
831
862
|
if (!ready && !useSuspense) return ret;
|
|
832
863
|
throw new Promise(function (resolve) {
|
|
833
864
|
loadNamespaces(i18n, namespaces, function () {
|
|
834
|
-
if (isMounted.current) setT(getT());
|
|
835
865
|
resolve();
|
|
836
866
|
});
|
|
837
867
|
});
|
|
@@ -850,7 +880,7 @@
|
|
|
850
880
|
i18n = _useTranslation2[1],
|
|
851
881
|
ready = _useTranslation2[2];
|
|
852
882
|
|
|
853
|
-
var passDownProps = _objectSpread2({}, rest, {
|
|
883
|
+
var passDownProps = _objectSpread2(_objectSpread2({}, rest), {}, {
|
|
854
884
|
t: t,
|
|
855
885
|
i18n: i18n,
|
|
856
886
|
tReady: ready
|
|
@@ -899,11 +929,14 @@
|
|
|
899
929
|
var i18n = _ref.i18n,
|
|
900
930
|
defaultNS = _ref.defaultNS,
|
|
901
931
|
children = _ref.children;
|
|
902
|
-
|
|
903
|
-
|
|
932
|
+
var value = React.useMemo(function () {
|
|
933
|
+
return {
|
|
904
934
|
i18n: i18n,
|
|
905
935
|
defaultNS: defaultNS
|
|
906
|
-
}
|
|
936
|
+
};
|
|
937
|
+
}, [i18n, defaultNS]);
|
|
938
|
+
return React.createElement(I18nContext.Provider, {
|
|
939
|
+
value: value
|
|
907
940
|
}, children);
|
|
908
941
|
}
|
|
909
942
|
|
package/react-i18next.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e=e||self).ReactI18next={},e.React)}(this,(function(e,n){"use strict";var t="default"in n?n.default:n;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(t,!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(t).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var t=[],r=!0,i=!1,a=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(i)throw a}}return t}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var l={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},f=/([\w-]+)|=|(['"])([.\s\S]*?)\2/g,p=/(?:<!--[\S\s]*?-->|<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>)/g,d=Object.create?Object.create(null):{};function g(e,n,t,r,i){var a=n.indexOf("<",r),o=n.slice(r,-1===a?void 0:a);/^\s*$/.test(o)&&(o=" "),(!i&&a>-1&&t+e.length>=0||" "!==o)&&e.push({type:"text",content:o})}function m(e,n){switch(n.type){case"text":return e+n.content;case"tag":return e+="<"+n.name+(n.attrs?function(e){var n=[];for(var t in e)n.push(t+'="'+e[t]+'"');return n.length?" "+n.join(" "):""}(n.attrs):"")+(n.voidElement?"/>":">"),n.voidElement?e:e+n.children.reduce(m,"")+"</"+n.name+">"}}var h,y={parse:function(e,n){n||(n={}),n.components||(n.components=d);var t,r=[],i=-1,a=[],o={},c=!1;return e.replace(p,(function(s,u){if(c){if(s!=="</"+t.name+">")return;c=!1}var p,d="/"!==s.charAt(1),m=0===s.indexOf("\x3c!--"),h=u+s.length,y=e.charAt(h);d&&!m&&(i++,"tag"===(t=function(e){var n,t=0,r=!0,i={type:"tag",name:"",voidElement:!1,attrs:{},children:[]};return e.replace(f,(function(a){if("="===a)return r=!0,void t++;r?0===t?((l[a]||"/"===e.charAt(e.length-2))&&(i.voidElement=!0),i.name=a):(i.attrs[n]=a.replace(/^['"]|['"]$/g,""),n=void 0):(n&&(i.attrs[n]=n),n=a),t++,r=!1})),i}(s)).type&&n.components[t.name]&&(t.type="component",c=!0),t.voidElement||c||!y||"<"===y||g(t.children,e,i,h,n.ignoreWhitespace),o[t.tagName]=t,0===i&&r.push(t),(p=a[i-1])&&p.children.push(t),a[i]=t),(m||!d||t.voidElement)&&(m||i--,!c&&"<"!==y&&y&&g(p=-1===i?r:a[i].children,e,i,h,n.ignoreWhitespace))})),!r.length&&e.length&&g(r,e,0,0,n.ignoreWhitespace),r},stringify:function(e){return e.reduce((function(e,n){return e+m("",n)}),"")}},v={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},b=t.createContext();function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v=c({},v,{},e)}function w(){return v}var j=function(){function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.usedNamespaces={}}var n,t,r;return n=e,(t=[{key:"addUsedNamespaces",value:function(e){var n=this;e.forEach((function(e){n.usedNamespaces[e]||(n.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}])&&i(n.prototype,t),r&&i(n,r),e}();function E(e){h=e}function S(){return h}var x={type:"3rdParty",init:function(e){O(e.options.react),E(e)}};function N(e){return function(n){return new Promise((function(t){var r=k();e.getInitialProps?e.getInitialProps(n).then((function(e){t(c({},e,{},r))})):t(r)}))}}function k(){var e=S(),n=e.reportNamespaces?e.reportNamespaces.getUsedNamespaces():[],t={},r={};return e.languages.forEach((function(t){r[t]={},n.forEach((function(n){r[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=r,t.initialLanguage=e.language,t}function I(){if(console&&console.warn){for(var e,n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];"string"==typeof t[0]&&(t[0]="react-i18next:: ".concat(t[0])),(e=console).warn.apply(e,t)}}var P={};function R(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&P[n[0]]||("string"==typeof n[0]&&(P[n[0]]=new Date),I.apply(void 0,n))}function C(e,n,t){e.loadNamespaces(n,(function(){if(e.isInitialized)t();else{e.on("initialized",(function n(){setTimeout((function(){e.off("initialized",n)}),0),t()}))}}))}function T(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}function A(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function L(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function z(e){return Array.isArray(e)?e:[e]}function D(e,n,i,a,o){if(""===n)return[];var s=a.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.join("|")).test(n);if(!e&&!u)return[n];var l={};!function e(n){z(n).forEach((function(n){"string"!=typeof n&&(A(n)?e(L(n)):"object"!==r(n)||t.isValidElement(n)||Object.assign(l,n))}))}(e);var f=i.services.interpolator.interpolate(n,c({},l,{},o),i.language);var p=function e(n,i,o){var l=z(n);return z(i).reduce((function(n,i,f){var p,d,g,m=i.children&&i.children[0]&&i.children[0].content;if("tag"===i.type){var h=l[parseInt(i.name,10)];!h&&1===o.length&&o[0][i.name]&&(h=o[0][i.name]),h||(h={});var y=0!==Object.keys(i.attrs).length?(p={props:i.attrs},(g=c({},d=h)).props=Object.assign(p.props,d.props),g):h,v=t.isValidElement(y);if("string"==typeof y)n.push(y);else if(A(y)||v&&A(i,!0)&&!i.voidElement){var b=L(y),O=e(b,i.children,o),w=function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(b)&&0===O.length?b:O;y.dummy&&(y.children=w),n.push(t.cloneElement(y,c({},y.props,{key:f}),w))}else if(u&&"object"===r(y)&&y.dummy&&!v){var j=e(l,i.children,o);n.push(t.cloneElement(y,c({},y.props,{key:f}),j))}else if(Number.isNaN(parseFloat(i.name)))if(a.transSupportBasicHtmlNodes&&s.indexOf(i.name)>-1)if(i.voidElement)n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)}));else{var E=e(l,i.children,o);n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)},E))}else if(i.voidElement)n.push("<".concat(i.name," />"));else{var S=e(l,i.children,o);n.push("<".concat(i.name,">").concat(S,"</").concat(i.name,">"))}else if("object"!==r(y)||v)1===i.children.length&&m?n.push(t.cloneElement(y,c({},y.props,{key:f}),m)):n.push(t.cloneElement(y,c({},y.props,{key:f})));else{var x=i.children[0]?m:null;x&&n.push(x)}}else"text"===i.type&&n.push(i.content);return n}),[])}([{dummy:!0,children:e}],y.parse("<0>".concat(f,"</0>")),z(e||[]));return L(p[0])}function B(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(b)||{},a=i.i18n,o=i.defaultNS,s=r||a||S();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new j),!s){R("You will need pass in an i18next instance by using initReactI18next");var l=function(e){return Array.isArray(e)?e[e.length-1]:e},f=[l,{},!1];return f.t=l,f.i18n={},f.ready=!1,f}var p=c({},w(),{},s.options.react,{},t),d=p.useSuspense,g=e||o||s.options&&s.options.defaultNS;g="string"==typeof g?[g]:g||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(g);var m=(s.isInitialized||s.initializedStoreOnce)&&g.every((function(e){return function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return R("i18n.languages were undefined or empty",n.languages),!0;var r=n.languages[0],i=!!n.options&&n.options.fallbackLng,a=n.languages[n.languages.length-1];if("cimode"===r.toLowerCase())return!0;var o=function(e,t){var r=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===r||2===r};return!(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!o(n.isLanguageChangingTo,e))&&(!!n.hasResourceBundle(r,e)||(!n.services.backendConnector.backend||!(!o(r,e)||i&&!o(a,e))))}(e,s,p)}));function h(){return{t:s.getFixedT(null,"fallback"===p.nsMode?g:g[0])}}var y=u(n.useState(h()),2),v=y[0],O=y[1],E=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){E.current&&O(h())}return E.current=!0,m||d||C(s,g,(function(){E.current&&O(h())})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){E.current=!1,e&&s&&e.split(" ").forEach((function(e){return s.off(e,t)})),n&&s&&n.split(" ").forEach((function(e){return s.store.off(e,t)}))}}),[g.join()]);var x=[v.t,s,m];if(x.t=v.t,x.i18n=s,x.ready=m,m)return x;if(!m&&!d)return x;throw new Promise((function(e){C(s,g,(function(){E.current&&O(h()),e()}))}))}function V(e,t){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).i18n,i=(n.useContext(b)||{}).i18n,a=r||i||S();a.options&&a.options.isClone||(e&&!a.initializedStoreOnce&&(a.services.resourceStore.data=e,a.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),a.options.ns),a.initializedStoreOnce=!0,a.isInitialized=!0),t&&!a.initializedLanguageOnce&&(a.changeLanguage(t),a.initializedLanguageOnce=!0))}e.I18nContext=b,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,i=e.children;return n.createElement(b.Provider,{value:{i18n:t,defaultNS:r}},i)},e.Trans=function(e){var i=e.children,a=e.count,o=e.parent,u=e.i18nKey,l=e.tOptions,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,h=e.t,y=s(e,["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"]),v=n.useContext(b)||{},O=v.i18n,j=v.defaultNS,E=m||O||S();if(!E)return R("You will need pass in an i18next instance by using i18nextReactModule"),i;var x=h||E.t.bind(E)||function(e){return e},N=c({},w(),{},E.options&&E.options.react),k=g||x.ns||j||E.options&&E.options.defaultNS;k="string"==typeof k?[k]:k||["translation"];var P=p||function e(n,i){if(!n)return"";var a="",o=z(n),c=i.transKeepBasicHtmlNodesFor||[];return o.forEach((function(n,o){if("string"==typeof n)a+="".concat(n);else if(t.isValidElement(n)){var u=Object.keys(n.props).length,l=c.indexOf(n.type)>-1,f=n.props.children;if(!f&&l&&0===u)a+="<".concat(n.type,"/>");else if(f||l&&0===u)if(n.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(n.type,">").concat(f,"</").concat(n.type,">");else{var p=e(f,i);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if("object"===r(n)){var d=n.format,g=s(n,["format"]),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else I("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else I("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.",n)})),a}(i,N)||N.transEmptyNodeValue||u,C=N.hashTransKey,T=u||(C?C(P):P),A=c({},l,{count:a},f,{},f?{}:{interpolation:{prefix:"#$?",suffix:"?$#"}},{defaultValue:P,ns:k}),L=D(d||i,T?x(T,A):P,E,N,A),B=void 0!==o?o:N.defaultTransParent;return B?t.createElement(B,y,L):L},e.Translation=function(e){var n=e.ns,t=e.children,r=u(B(n,s(e,["ns","children"])),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=N,e.getDefaults=w,e.getI18n=S,e.getInitialProps=k,e.initReactI18next=x,e.setDefaults=O,e.setI18n=E,e.useSSR=V,e.useTranslation=B,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,a=s(n,["initialI18nStore","initialLanguage"]);return V(r,i),t.createElement(e,c({},a))}return n.getInitialProps=N(e),n.displayName="withI18nextSSR(".concat(T(e),")"),n.WrappedComponent=e,n}},e.withTranslation=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function i(i){var a=i.forwardedRef,o=s(i,["forwardedRef"]),l=u(B(e,o),3),f=c({},o,{t:l[0],i18n:l[1],tReady:l[2]});return n.withRef&&a?f.ref=a:!n.withRef&&a&&(f.forwardedRef=a),t.createElement(r,f)}i.displayName="withI18nextTranslation(".concat(T(r),")"),i.WrappedComponent=r;return n.withRef?t.forwardRef((function(e,n){return t.createElement(i,Object.assign({},e,{forwardedRef:n}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e=e||self).ReactI18next={},e.React)}(this,(function(e,n){"use strict";var t="default"in n?n.default:n;function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],r=!0,i=!1,a=void 0;try{for(var o,c=e[Symbol.iterator]();!(r=(o=c.next()).done)&&(t.push(o.value),!n||t.length!==n);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==c.return||c.return()}finally{if(i)throw a}}return t}(e,n)||function(e,n){if(!e)return;if("string"==typeof e)return l(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l(e,n)}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var f={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/([\w-]+)|=|(['"])([.\s\S]*?)\2/g,d=/(?:<!--[\S\s]*?-->|<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>)/g,g=Object.create?Object.create(null):{};function m(e,n,t,r,i){var a=n.indexOf("<",r),o=n.slice(r,-1===a?void 0:a);/^\s*$/.test(o)&&(o=" "),(!i&&a>-1&&t+e.length>=0||" "!==o)&&e.push({type:"text",content:o})}var y,h=function(e,n){n||(n={}),n.components||(n.components=g);var t,r=[],i=-1,a=[],o={},c=!1;return e.replace(d,(function(s,u){if(c){if(s!=="</"+t.name+">")return;c=!1}var l,d="/"!==s.charAt(1),g=0===s.indexOf("\x3c!--"),y=u+s.length,h=e.charAt(y);d&&!g&&(i++,"tag"===(t=function(e){var n,t=0,r=!0,i={type:"tag",name:"",voidElement:!1,attrs:{},children:[]};return e.replace(p,(function(a){if("="===a)return r=!0,void t++;r?0===t?((f[a]||"/"===e.charAt(e.length-2))&&(i.voidElement=!0),i.name=a):(i.attrs[n]=a.replace(/^['"]|['"]$/g,""),n=void 0):(n&&(i.attrs[n]=n),n=a),t++,r=!1})),i}(s)).type&&n.components[t.name]&&(t.type="component",c=!0),t.voidElement||c||!h||"<"===h||m(t.children,e,i,y,n.ignoreWhitespace),o[t.tagName]=t,0===i&&r.push(t),(l=a[i-1])&&l.children.push(t),a[i]=t),(g||!d||t.voidElement)&&(g||i--,!c&&"<"!==h&&h&&m(l=-1===i?r:a[i].children,e,i,y,n.ignoreWhitespace))})),!r.length&&e.length&&m(r,e,0,0,n.ignoreWhitespace),r},v={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},b=t.createContext();function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v=c(c({},v),e)}function j(){return v}var w=function(){function e(){!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.usedNamespaces={}}var n,t,r;return n=e,(t=[{key:"addUsedNamespaces",value:function(e){var n=this;e.forEach((function(e){n.usedNamespaces[e]||(n.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}])&&i(n.prototype,t),r&&i(n,r),e}();function S(e){y=e}function E(){return y}var N={type:"3rdParty",init:function(e){O(e.options.react),S(e)}};function x(e){return function(n){return new Promise((function(t){var r=I();e.getInitialProps?e.getInitialProps(n).then((function(e){t(c(c({},e),r))})):t(r)}))}}function I(){var e=E(),n=e.reportNamespaces?e.reportNamespaces.getUsedNamespaces():[],t={},r={};return e.languages.forEach((function(t){r[t]={},n.forEach((function(n){r[t][n]=e.getResourceBundle(t,n)||{}}))})),t.initialI18nStore=r,t.initialLanguage=e.language,t}function k(){if(console&&console.warn){for(var e,n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];"string"==typeof t[0]&&(t[0]="react-i18next:: ".concat(t[0])),(e=console).warn.apply(e,t)}}var P={};function R(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&P[n[0]]||("string"==typeof n[0]&&(P[n[0]]=new Date),k.apply(void 0,n))}function C(e,n,t){e.loadNamespaces(n,(function(){if(e.isInitialized)t();else{e.on("initialized",(function n(){setTimeout((function(){e.off("initialized",n)}),0),t()}))}}))}function A(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return R("i18n.languages were undefined or empty",n.languages),!0;var r=n.languages[0],i=!!n.options&&n.options.fallbackLng,a=n.languages[n.languages.length-1];if("cimode"===r.toLowerCase())return!0;var o=function(e,t){var r=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===r||2===r};return!(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!o(n.isLanguageChangingTo,e))&&(!!n.hasResourceBundle(r,e)||(!n.services.backendConnector.backend||!(!o(r,e)||i&&!o(a,e))))}function T(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}function L(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function z(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function D(e){return Array.isArray(e)?e:[e]}function B(e,n,i,a,o){if(""===n)return[];var s=a.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.join("|")).test(n);if(!e&&!u)return[n];var l={};!function e(n){D(n).forEach((function(n){"string"!=typeof n&&(L(n)?e(z(n)):"object"!==r(n)||t.isValidElement(n)||Object.assign(l,n))}))}(e);var f=i.services.interpolator.interpolate(n,c(c({},l),o),i.language),p=h("<0>".concat(f,"</0>"));function d(e,n,r){var i=z(e),a=m(i,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(i)&&0===a.length?i:a}function g(e,n,r,i){e.dummy&&(e.children=n),r.push(t.cloneElement(e,c(c({},e.props),{},{key:i}),n))}function m(n,i,o){var l=D(n);return D(i).reduce((function(n,i,f){var p,y,h,v=i.children&&i.children[0]&&i.children[0].content;if("tag"===i.type){var b=l[parseInt(i.name,10)];!b&&1===o.length&&o[0][i.name]&&(b=o[0][i.name]),b||(b={});var O=0!==Object.keys(i.attrs).length?(p={props:i.attrs},(h=c({},y=b)).props=Object.assign(p.props,y.props),h):b,j=t.isValidElement(O),w=j&&L(i,!0)&&!i.voidElement,S=u&&"object"===r(O)&&O.dummy&&!j,E="object"===r(e)&&null!==e&&Object.hasOwnProperty.call(e,i.name);if("string"==typeof O)n.push(O);else if(L(O)||w){g(O,d(O,i,o),n,f)}else if(S){var N=m(l,i.children,o);n.push(t.cloneElement(O,c(c({},O.props),{},{key:f}),N))}else if(Number.isNaN(parseFloat(i.name))){if(E)g(O,d(O,i,o),n,f);else if(a.transSupportBasicHtmlNodes&&s.indexOf(i.name)>-1)if(i.voidElement)n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)}));else{var x=m(l,i.children,o);n.push(t.createElement(i.name,{key:"".concat(i.name,"-").concat(f)},x))}else if(i.voidElement)n.push("<".concat(i.name," />"));else{var I=m(l,i.children,o);n.push("<".concat(i.name,">").concat(I,"</").concat(i.name,">"))}}else if("object"!==r(O)||j)1===i.children.length&&v?n.push(t.cloneElement(O,c(c({},O.props),{},{key:f}),v)):n.push(t.cloneElement(O,c(c({},O.props),{},{key:f})));else{var k=i.children[0]?v:null;k&&n.push(k)}}else"text"===i.type&&n.push(i.content);return n}),[])}return z(m([{dummy:!0,children:e}],p,D(e||[]))[0])}function U(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(b)||{},a=i.i18n,o=i.defaultNS,s=r||a||E();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new w),!s){R("You will need to pass in an i18next instance by using initReactI18next");var l=function(e){return Array.isArray(e)?e[e.length-1]:e},f=[l,{},!1];return f.t=l,f.i18n={},f.ready=!1,f}var p=c(c(c({},j()),s.options.react),t),d=p.useSuspense,g=e||o||s.options&&s.options.defaultNS;g="string"==typeof g?[g]:g||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(g);var m=(s.isInitialized||s.initializedStoreOnce)&&g.every((function(e){return A(e,s,p)}));function y(){return{t:s.getFixedT(null,"fallback"===p.nsMode?g:g[0])}}var h=n.useState(y()),v=u(h,2),O=v[0],S=v[1],N=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){N.current&&S(y())}return N.current=!0,m||d||C(s,g,(function(){N.current&&S(y())})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){N.current=!1,e&&s&&e.split(" ").forEach((function(e){return s.off(e,t)})),n&&s&&n.split(" ").forEach((function(e){return s.store.off(e,t)}))}}),[g.join()]);var x=[O.t,s,m];if(x.t=O.t,x.i18n=s,x.ready=m,m)return x;if(!m&&!d)return x;throw new Promise((function(e){C(s,g,(function(){e()}))}))}function V(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.i18n,a=n.useContext(b)||{},o=a.i18n,c=i||o||E();c.options&&c.options.isClone||(e&&!c.initializedStoreOnce&&(c.services.resourceStore.data=e,c.options.ns=Object.values(e).reduce((function(e,n){return Object.keys(n).forEach((function(n){e.indexOf(n)<0&&e.push(n)})),e}),c.options.ns),c.initializedStoreOnce=!0,c.isInitialized=!0),t&&!c.initializedLanguageOnce&&(c.changeLanguage(t),c.initializedLanguageOnce=!0))}e.I18nContext=b,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,i=e.children,a=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(b.Provider,{value:a},i)},e.Trans=function(e){var i=e.children,a=e.count,o=e.parent,u=e.i18nKey,l=e.tOptions,f=e.values,p=e.defaults,d=e.components,g=e.ns,m=e.i18n,y=e.t,h=s(e,["children","count","parent","i18nKey","tOptions","values","defaults","components","ns","i18n","t"]),v=n.useContext(b)||{},O=v.i18n,w=v.defaultNS,S=m||O||E();if(!S)return R("You will need to pass in an i18next instance by using i18nextReactModule"),i;var N=y||S.t.bind(S)||function(e){return e},x=c(c({},j()),S.options&&S.options.react),I=g||N.ns||w||S.options&&S.options.defaultNS;I="string"==typeof I?[I]:I||["translation"];var P=p||function e(n,i){if(!n)return"";var a="",o=D(n),c=i.transKeepBasicHtmlNodesFor||[];return o.forEach((function(n,o){if("string"==typeof n)a+="".concat(n);else if(t.isValidElement(n)){var u=Object.keys(n.props).length,l=c.indexOf(n.type)>-1,f=n.props.children;if(!f&&l&&0===u)a+="<".concat(n.type,"/>");else if(f||l&&0===u)if(n.props.i18nIsDynamicList)a+="<".concat(o,"></").concat(o,">");else if(l&&1===u&&"string"==typeof f)a+="<".concat(n.type,">").concat(f,"</").concat(n.type,">");else{var p=e(f,i);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if("object"===r(n)){var d=n.format,g=s(n,["format"]),m=Object.keys(g);if(1===m.length){var y=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(y,"}}")}else k("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else k("Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.",n)})),a}(i,x)||x.transEmptyNodeValue||u,C=x.hashTransKey,A=u||(C?C(P):P),T=f?{}:{interpolation:{prefix:"#$?",suffix:"?$#"}},L=c(c(c(c({},l),{},{count:a},f),T),{},{defaultValue:P,ns:I}),z=B(d||i,A?N(A,L):P,S,x,L),U=void 0!==o?o:x.defaultTransParent;return U?t.createElement(U,h,z):z},e.Translation=function(e){var n=e.ns,t=e.children,r=u(U(n,s(e,["ns","children"])),3),i=r[0],a=r[1],o=r[2];return t(i,{i18n:a,lng:a.language},o)},e.composeInitialProps=x,e.getDefaults=j,e.getI18n=E,e.getInitialProps=I,e.initReactI18next=N,e.setDefaults=O,e.setI18n=S,e.useSSR=V,e.useTranslation=U,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,a=s(n,["initialI18nStore","initialLanguage"]);return V(r,i),t.createElement(e,c({},a))}return n.getInitialProps=x(e),n.displayName="withI18nextSSR(".concat(T(e),")"),n.WrappedComponent=e,n}},e.withTranslation=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function i(i){var a=i.forwardedRef,o=s(i,["forwardedRef"]),l=u(U(e,o),3),f=l[0],p=l[1],d=l[2],g=c(c({},o),{},{t:f,i18n:p,tReady:d});return n.withRef&&a?g.ref=a:!n.withRef&&a&&(g.forwardedRef=a),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(T(r),")"),i.WrappedComponent=r;return n.withRef?t.forwardRef((function(e,n){return t.createElement(i,Object.assign({},e,{forwardedRef:n}))})):i}},Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/src/I18nextProvider.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { createElement } from 'react';
|
|
1
|
+
import { createElement, useMemo } from 'react';
|
|
2
2
|
import { I18nContext } from './context';
|
|
3
3
|
|
|
4
4
|
export function I18nextProvider({ i18n, defaultNS, children }) {
|
|
5
|
+
const value = useMemo(
|
|
6
|
+
() => ({
|
|
7
|
+
i18n,
|
|
8
|
+
defaultNS,
|
|
9
|
+
}),
|
|
10
|
+
[i18n, defaultNS],
|
|
11
|
+
);
|
|
5
12
|
return createElement(
|
|
6
13
|
I18nContext.Provider,
|
|
7
14
|
{
|
|
8
|
-
value
|
|
9
|
-
i18n,
|
|
10
|
-
defaultNS,
|
|
11
|
-
},
|
|
15
|
+
value,
|
|
12
16
|
},
|
|
13
17
|
children,
|
|
14
18
|
);
|
package/src/Trans.js
CHANGED
|
@@ -135,6 +135,18 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
|
|
|
135
135
|
// -> avoids issues in parser removing prepending text nodes
|
|
136
136
|
const ast = HTML.parse(`<0>${interpolatedString}</0>`);
|
|
137
137
|
|
|
138
|
+
function renderInner(child, node, rootReactNode) {
|
|
139
|
+
const childs = getChildren(child);
|
|
140
|
+
const mappedChildren = mapAST(childs, node.children, rootReactNode);
|
|
141
|
+
// console.warn('INNER', node.name, node, child, childs, node.children, mappedChildren);
|
|
142
|
+
return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function pushTranslatedJSX(child, inner, mem, i) {
|
|
146
|
+
if (child.dummy) child.children = inner; // needed on preact!
|
|
147
|
+
mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
|
|
148
|
+
}
|
|
149
|
+
|
|
138
150
|
// reactNode (the jsx root element or child)
|
|
139
151
|
// astNode (the translation string as html ast)
|
|
140
152
|
// rootReactNode (the most outer jsx children array or trans components prop)
|
|
@@ -154,28 +166,28 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
|
|
|
154
166
|
Object.keys(node.attrs).length !== 0 ? mergeProps({ props: node.attrs }, tmp) : tmp;
|
|
155
167
|
|
|
156
168
|
const isElement = React.isValidElement(child);
|
|
169
|
+
|
|
170
|
+
const isValidTranslationWithChildren =
|
|
171
|
+
isElement && hasChildren(node, true) && !node.voidElement;
|
|
172
|
+
|
|
173
|
+
const isEmptyTransWithHTML =
|
|
174
|
+
emptyChildrenButNeedsHandling && typeof child === 'object' && child.dummy && !isElement;
|
|
175
|
+
|
|
176
|
+
const isKnownComponent =
|
|
177
|
+
typeof children === 'object' &&
|
|
178
|
+
children !== null &&
|
|
179
|
+
Object.hasOwnProperty.call(children, node.name);
|
|
157
180
|
// console.warn('CHILD', node.name, node, isElement, child);
|
|
158
181
|
|
|
159
182
|
if (typeof child === 'string') {
|
|
160
183
|
mem.push(child);
|
|
161
184
|
} else if (
|
|
162
185
|
hasChildren(child) || // the jsx element has children -> loop
|
|
163
|
-
|
|
164
|
-
) {
|
|
165
|
-
const childs = getChildren(child);
|
|
166
|
-
const mappedChildren = mapAST(childs, node.children, rootReactNode);
|
|
167
|
-
// console.warn('INNER', node.name, node, child, childs, node.children, mappedChildren);
|
|
168
|
-
const inner =
|
|
169
|
-
hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
|
|
170
|
-
|
|
171
|
-
if (child.dummy) child.children = inner; // needed on preact!
|
|
172
|
-
mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
|
|
173
|
-
} else if (
|
|
174
|
-
emptyChildrenButNeedsHandling &&
|
|
175
|
-
typeof child === 'object' &&
|
|
176
|
-
child.dummy &&
|
|
177
|
-
!isElement
|
|
186
|
+
isValidTranslationWithChildren // valid jsx element with no children but the translation has -> loop
|
|
178
187
|
) {
|
|
188
|
+
const inner = renderInner(child, node, rootReactNode);
|
|
189
|
+
pushTranslatedJSX(child, inner, mem, i);
|
|
190
|
+
} else if (isEmptyTransWithHTML) {
|
|
179
191
|
// we have a empty Trans node (the dummy element) with a targetstring that contains html tags needing
|
|
180
192
|
// conversion to react nodes
|
|
181
193
|
// so we just need to map the inner stuff
|
|
@@ -186,7 +198,10 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
|
|
|
186
198
|
);
|
|
187
199
|
mem.push(React.cloneElement(child, { ...child.props, key: i }, inner));
|
|
188
200
|
} else if (Number.isNaN(parseFloat(node.name))) {
|
|
189
|
-
if (
|
|
201
|
+
if (isKnownComponent) {
|
|
202
|
+
const inner = renderInner(child, node, rootReactNode);
|
|
203
|
+
pushTranslatedJSX(child, inner, mem, i);
|
|
204
|
+
} else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
|
|
190
205
|
if (node.voidElement) {
|
|
191
206
|
mem.push(React.createElement(node.name, { key: `${node.name}-${i}` }));
|
|
192
207
|
} else {
|
|
@@ -256,7 +271,7 @@ export function Trans({
|
|
|
256
271
|
const i18n = i18nFromProps || i18nFromContext || getI18n();
|
|
257
272
|
|
|
258
273
|
if (!i18n) {
|
|
259
|
-
warnOnce('You will need pass in an i18next instance by using i18nextReactModule');
|
|
274
|
+
warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');
|
|
260
275
|
return children;
|
|
261
276
|
}
|
|
262
277
|
|
package/src/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export interface TransProps<E extends Element = HTMLDivElement>
|
|
|
33
33
|
extends React.HTMLProps<E>,
|
|
34
34
|
Partial<WithT> {
|
|
35
35
|
children?: React.ReactNode;
|
|
36
|
-
components?: readonly React.ReactNode[];
|
|
36
|
+
components?: readonly React.ReactNode[] | { [tagName: string]: React.ReactNode };
|
|
37
37
|
count?: number;
|
|
38
38
|
defaults?: string;
|
|
39
39
|
i18n?: i18n;
|
|
@@ -46,7 +46,7 @@ export interface TransProps<E extends Element = HTMLDivElement>
|
|
|
46
46
|
}
|
|
47
47
|
export function Trans<E extends Element = HTMLDivElement>(props: TransProps<E>): React.ReactElement;
|
|
48
48
|
|
|
49
|
-
export function useSSR(initialI18nStore:
|
|
49
|
+
export function useSSR(initialI18nStore: Resource, initialLanguage: string): void;
|
|
50
50
|
|
|
51
51
|
export interface UseTranslationOptions {
|
|
52
52
|
i18n?: i18n;
|
|
@@ -102,7 +102,7 @@ export interface I18nextProviderProps {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
export const I18nextProvider: React.FunctionComponent<I18nextProviderProps>;
|
|
105
|
-
export const I18nContext: React.Context<i18n>;
|
|
105
|
+
export const I18nContext: React.Context<{ i18n: i18n }>;
|
|
106
106
|
|
|
107
107
|
export interface TranslationProps {
|
|
108
108
|
children: (
|
package/src/useTranslation.js
CHANGED
|
@@ -9,7 +9,7 @@ export function useTranslation(ns, props = {}) {
|
|
|
9
9
|
const i18n = i18nFromProps || i18nFromContext || getI18n();
|
|
10
10
|
if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
|
|
11
11
|
if (!i18n) {
|
|
12
|
-
warnOnce('You will need pass in an i18next instance by using initReactI18next');
|
|
12
|
+
warnOnce('You will need to pass in an i18next instance by using initReactI18next');
|
|
13
13
|
const notReadyT = k => (Array.isArray(k) ? k[k.length - 1] : k);
|
|
14
14
|
const retNotReady = [notReadyT, {}, false];
|
|
15
15
|
retNotReady.t = notReadyT;
|
|
@@ -85,7 +85,6 @@ export function useTranslation(ns, props = {}) {
|
|
|
85
85
|
// not yet loaded namespaces -> load them -> and trigger suspense
|
|
86
86
|
throw new Promise(resolve => {
|
|
87
87
|
loadNamespaces(i18n, namespaces, () => {
|
|
88
|
-
if (isMounted.current) setT(getT());
|
|
89
88
|
resolve();
|
|
90
89
|
});
|
|
91
90
|
});
|
package/src/utils.js
CHANGED
|
@@ -41,6 +41,28 @@ export function loadNamespaces(i18n, ns, cb) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export function hasLoadedNamespace(ns, i18n, options = {}) {
|
|
44
|
+
/*
|
|
45
|
+
|
|
46
|
+
IN I18NEXT > v19.4.5 WE CAN (INTRODUCED JUNE 2020)
|
|
47
|
+
|
|
48
|
+
return i18n.hasLoadedNamespace(ns, {
|
|
49
|
+
precheck: (i18nInstance, loadNotPending) => {
|
|
50
|
+
if (
|
|
51
|
+
options.bindI18n &&
|
|
52
|
+
options.bindI18n.indexOf('languageChanging') > -1 &&
|
|
53
|
+
i18n.services.backendConnector.backend &&
|
|
54
|
+
i18n.isLanguageChangingTo &&
|
|
55
|
+
!loadNotPending(i18n.isLanguageChangingTo, ns)
|
|
56
|
+
)
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
// WILL BE BREAKING AS DEPENDS ON SPECIFIC I18NEXT VERSION
|
|
62
|
+
// WAIT A LITTLE FOR I18NEXT BEING UPDATED IN THE WILD
|
|
63
|
+
|
|
64
|
+
*/
|
|
65
|
+
|
|
44
66
|
if (!i18n.languages || !i18n.languages.length) {
|
|
45
67
|
warnOnce('i18n.languages were undefined or empty', i18n.languages);
|
|
46
68
|
return true;
|