react-i18next 11.3.3 → 11.5.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 +16 -0
- package/README.md +4 -4
- package/dist/amd/react-i18next.js +94 -67
- package/dist/amd/react-i18next.min.js +1 -1
- package/dist/commonjs/I18nextProvider.js +2 -5
- package/dist/commonjs/Trans.js +61 -39
- package/dist/commonjs/context.js +2 -15
- package/dist/commonjs/useSSR.js +2 -3
- package/dist/commonjs/useTranslation.js +9 -9
- package/dist/commonjs/withSSR.js +1 -1
- package/dist/commonjs/withTranslation.js +1 -1
- package/dist/es/I18nextProvider.js +3 -4
- package/dist/es/Trans.js +61 -39
- package/dist/es/context.js +2 -11
- package/dist/es/useSSR.js +3 -4
- package/dist/es/useTranslation.js +11 -11
- package/dist/es/withSSR.js +1 -1
- package/dist/es/withTranslation.js +1 -1
- package/dist/umd/react-i18next.js +94 -67
- package/dist/umd/react-i18next.min.js +1 -1
- package/package.json +5 -3
- package/react-i18next.js +94 -67
- package/react-i18next.min.js +1 -1
- package/src/I18nextProvider.js +3 -5
- package/src/Trans.js +66 -60
- package/src/context.js +0 -9
- package/src/useSSR.js +3 -4
- package/src/useTranslation.js +9 -17
- package/.DS_Store +0 -0
- package/.vscode/settings.json +0 -2
- package/src/.DS_Store +0 -0
package/dist/commonjs/context.js
CHANGED
|
@@ -5,8 +5,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.usedI18nextProvider = usedI18nextProvider;
|
|
9
|
-
exports.getHasUsedI18nextProvider = getHasUsedI18nextProvider;
|
|
10
8
|
exports.setDefaults = setDefaults;
|
|
11
9
|
exports.getDefaults = getDefaults;
|
|
12
10
|
exports.setI18n = setI18n;
|
|
@@ -25,7 +23,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
25
23
|
|
|
26
24
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
27
25
|
|
|
28
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
26
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
29
27
|
|
|
30
28
|
var defaultOptions = {
|
|
31
29
|
bindI18n: 'languageChanged',
|
|
@@ -38,20 +36,11 @@ var defaultOptions = {
|
|
|
38
36
|
useSuspense: true
|
|
39
37
|
};
|
|
40
38
|
var i18nInstance;
|
|
41
|
-
var hasUsedI18nextProvider;
|
|
42
39
|
|
|
43
40
|
var I18nContext = _react["default"].createContext();
|
|
44
41
|
|
|
45
42
|
exports.I18nContext = I18nContext;
|
|
46
43
|
|
|
47
|
-
function usedI18nextProvider(used) {
|
|
48
|
-
hasUsedI18nextProvider = used;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function getHasUsedI18nextProvider() {
|
|
52
|
-
return hasUsedI18nextProvider;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
44
|
function setDefaults() {
|
|
56
45
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
57
46
|
defaultOptions = _objectSpread({}, defaultOptions, {}, options);
|
|
@@ -61,9 +50,7 @@ function getDefaults() {
|
|
|
61
50
|
return defaultOptions;
|
|
62
51
|
}
|
|
63
52
|
|
|
64
|
-
var ReportNamespaces =
|
|
65
|
-
/*#__PURE__*/
|
|
66
|
-
function () {
|
|
53
|
+
var ReportNamespaces = /*#__PURE__*/function () {
|
|
67
54
|
function ReportNamespaces() {
|
|
68
55
|
(0, _classCallCheck2["default"])(this, ReportNamespaces);
|
|
69
56
|
this.usedNamespaces = {};
|
package/dist/commonjs/useSSR.js
CHANGED
|
@@ -12,12 +12,11 @@ var _context = require("./context");
|
|
|
12
12
|
function useSSR(initialI18nStore, initialLanguage) {
|
|
13
13
|
var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
14
14
|
var i18nFromProps = props.i18n;
|
|
15
|
-
var ReactI18nContext = (0, _react.useContext)(_context.I18nContext);
|
|
16
15
|
|
|
17
|
-
var _ref = (0,
|
|
16
|
+
var _ref = (0, _react.useContext)(_context.I18nContext) || {},
|
|
18
17
|
i18nFromContext = _ref.i18n;
|
|
19
18
|
|
|
20
|
-
var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)(); // opt out if is a cloned instance, eg. created by i18next-
|
|
19
|
+
var i18n = i18nFromProps || i18nFromContext || (0, _context.getI18n)(); // opt out if is a cloned instance, eg. created by i18next-http-middleware on request
|
|
21
20
|
// -> do not set initial stuff on server side
|
|
22
21
|
|
|
23
22
|
if (i18n.options && i18n.options.isClone) return; // nextjs / SSR: getting data from next.js or other ssr stack
|
|
@@ -19,15 +19,14 @@ var _utils = require("./utils");
|
|
|
19
19
|
|
|
20
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
21
21
|
|
|
22
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
23
23
|
|
|
24
24
|
function useTranslation(ns) {
|
|
25
25
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
26
|
// assert we have the needed i18nInstance
|
|
27
27
|
var i18nFromProps = props.i18n;
|
|
28
|
-
var ReactI18nContext = (0, _react.useContext)(_context.I18nContext);
|
|
29
28
|
|
|
30
|
-
var _ref = (0,
|
|
29
|
+
var _ref = (0, _react.useContext)(_context.I18nContext) || {},
|
|
31
30
|
i18nFromContext = _ref.i18n,
|
|
32
31
|
defaultNSFromContext = _ref.defaultNS;
|
|
33
32
|
|
|
@@ -73,20 +72,21 @@ function useTranslation(ns) {
|
|
|
73
72
|
setT = _useState2[1]; // seems we can't have functions as value -> wrap it in obj
|
|
74
73
|
|
|
75
74
|
|
|
75
|
+
var isMounted = (0, _react.useRef)(true);
|
|
76
76
|
(0, _react.useEffect)(function () {
|
|
77
|
-
var isMounted = true;
|
|
78
77
|
var bindI18n = i18nOptions.bindI18n,
|
|
79
|
-
bindI18nStore = i18nOptions.bindI18nStore;
|
|
78
|
+
bindI18nStore = i18nOptions.bindI18nStore;
|
|
79
|
+
isMounted.current = true; // if not ready and not using suspense load the namespaces
|
|
80
80
|
// in side effect and do not call resetT if unmounted
|
|
81
81
|
|
|
82
82
|
if (!ready && !useSuspense) {
|
|
83
83
|
(0, _utils.loadNamespaces)(i18n, namespaces, function () {
|
|
84
|
-
if (isMounted) setT(getT());
|
|
84
|
+
if (isMounted.current) setT(getT());
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
function boundReset() {
|
|
89
|
-
if (isMounted) setT(getT());
|
|
89
|
+
if (isMounted.current) setT(getT());
|
|
90
90
|
} // bind events to trigger change, like languageChanged
|
|
91
91
|
|
|
92
92
|
|
|
@@ -94,7 +94,7 @@ function useTranslation(ns) {
|
|
|
94
94
|
if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset); // unbinding on unmount
|
|
95
95
|
|
|
96
96
|
return function () {
|
|
97
|
-
isMounted = false;
|
|
97
|
+
isMounted.current = false;
|
|
98
98
|
if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {
|
|
99
99
|
return i18n.off(e, boundReset);
|
|
100
100
|
});
|
|
@@ -115,7 +115,7 @@ function useTranslation(ns) {
|
|
|
115
115
|
|
|
116
116
|
throw new Promise(function (resolve) {
|
|
117
117
|
(0, _utils.loadNamespaces)(i18n, namespaces, function () {
|
|
118
|
-
setT(getT());
|
|
118
|
+
if (isMounted.current) setT(getT());
|
|
119
119
|
resolve();
|
|
120
120
|
});
|
|
121
121
|
});
|
package/dist/commonjs/withSSR.js
CHANGED
|
@@ -21,7 +21,7 @@ var _utils = require("./utils");
|
|
|
21
21
|
|
|
22
22
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
23
23
|
|
|
24
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
24
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
25
25
|
|
|
26
26
|
function withSSR() {
|
|
27
27
|
return function Extend(WrappedComponent) {
|
|
@@ -21,7 +21,7 @@ var _utils = require("./utils");
|
|
|
21
21
|
|
|
22
22
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
23
23
|
|
|
24
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
24
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
25
25
|
|
|
26
26
|
function withTranslation(ns) {
|
|
27
27
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { I18nContext
|
|
1
|
+
import { createElement } from 'react';
|
|
2
|
+
import { I18nContext } from './context';
|
|
3
3
|
export function I18nextProvider(_ref) {
|
|
4
4
|
var i18n = _ref.i18n,
|
|
5
5
|
defaultNS = _ref.defaultNS,
|
|
6
6
|
children = _ref.children;
|
|
7
|
-
|
|
8
|
-
return React.createElement(I18nContext.Provider, {
|
|
7
|
+
return createElement(I18nContext.Provider, {
|
|
9
8
|
value: {
|
|
10
9
|
i18n: i18n,
|
|
11
10
|
defaultNS: defaultNS
|
package/dist/es/Trans.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
2
|
import _typeof from "@babel/runtime/helpers/typeof";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
4
|
|
|
5
5
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
6
6
|
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
8
8
|
|
|
9
9
|
import React, { useContext } from 'react';
|
|
10
10
|
import HTML from 'html-parse-stringify2';
|
|
11
|
-
import { getI18n,
|
|
11
|
+
import { getI18n, I18nContext, getDefaults } from './context';
|
|
12
12
|
import { warn, warnOnce } from './utils';
|
|
13
13
|
|
|
14
14
|
function hasChildren(node) {
|
|
@@ -31,44 +31,63 @@ function getAsArray(data) {
|
|
|
31
31
|
return Array.isArray(data) ? data : [data];
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
function mergeProps(source, target) {
|
|
35
|
+
var newTarget = _objectSpread({}, target); // overwrite source.props when target.props already set
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
newTarget.props = Object.assign(source.props, target.props);
|
|
39
|
+
return newTarget;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function nodesToString(children, i18nOptions) {
|
|
35
43
|
if (!children) return '';
|
|
36
|
-
var stringNode =
|
|
44
|
+
var stringNode = ''; // do not use `React.Children.toArray`, will fail at object children
|
|
45
|
+
|
|
37
46
|
var childrenArray = getAsArray(children);
|
|
38
|
-
var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
|
|
39
|
-
childrenArray.forEach(function (child, i) {
|
|
40
|
-
var elementKey = "".concat(i);
|
|
47
|
+
var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || []; // e.g. lorem <br/> ipsum {{ messageCount, format }} dolor <strong>bold</strong> amet
|
|
41
48
|
|
|
49
|
+
childrenArray.forEach(function (child, childIndex) {
|
|
42
50
|
if (typeof child === 'string') {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (child.props && child.props.i18nIsDynamicList) {
|
|
48
|
-
// we got a dynamic list like "<ul>{['a', 'b'].map(item => ( <li key={item}>{item}</li> ))}</ul>""
|
|
49
|
-
// the result should be "<0></0>" and not "<0><0>a</0><1>b</1></0>"
|
|
50
|
-
stringNode = "".concat(stringNode, "<").concat(elementTag, "></").concat(elementTag, ">");
|
|
51
|
-
} else {
|
|
52
|
-
// regular case mapping the inner children
|
|
53
|
-
stringNode = "".concat(stringNode, "<").concat(elementTag, ">").concat(nodesToString('', getChildren(child), i + 1, i18nOptions), "</").concat(elementTag, ">");
|
|
54
|
-
}
|
|
51
|
+
// actual e.g. lorem
|
|
52
|
+
// expected e.g. lorem
|
|
53
|
+
stringNode += "".concat(child);
|
|
55
54
|
} else if (React.isValidElement(child)) {
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
var childPropsCount = Object.keys(child.props).length;
|
|
56
|
+
var shouldKeepChild = keepArray.indexOf(child.type) > -1;
|
|
57
|
+
var childChildren = child.props.children;
|
|
58
|
+
|
|
59
|
+
if (!childChildren && shouldKeepChild && childPropsCount === 0) {
|
|
60
|
+
// actual e.g. lorem <br/> ipsum
|
|
61
|
+
// expected e.g. lorem <br/> ipsum
|
|
62
|
+
stringNode += "<".concat(child.type, "/>");
|
|
63
|
+
} else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {
|
|
64
|
+
// actual e.g. lorem <hr className="test" /> ipsum
|
|
65
|
+
// expected e.g. lorem <0></0> ipsum
|
|
66
|
+
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
|
|
67
|
+
} else if (child.props.i18nIsDynamicList) {
|
|
68
|
+
// we got a dynamic list like
|
|
69
|
+
// e.g. <ul i18nIsDynamicList>{['a', 'b'].map(item => ( <li key={item}>{item}</li> ))}</ul>
|
|
70
|
+
// expected e.g. "<0></0>", not e.g. "<0><0>a</0><1>b</1></0>"
|
|
71
|
+
stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
|
|
72
|
+
} else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {
|
|
73
|
+
// actual e.g. dolor <strong>bold</strong> amet
|
|
74
|
+
// expected e.g. dolor <strong>bold</strong> amet
|
|
75
|
+
stringNode += "<".concat(child.type, ">").concat(childChildren, "</").concat(child.type, ">");
|
|
58
76
|
} else {
|
|
59
|
-
|
|
77
|
+
// regular case mapping the inner children
|
|
78
|
+
var content = nodesToString(childChildren, i18nOptions);
|
|
79
|
+
stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">");
|
|
60
80
|
}
|
|
61
81
|
} else if (_typeof(child) === 'object') {
|
|
62
|
-
|
|
82
|
+
// e.g. lorem {{ value, format }} ipsum
|
|
83
|
+
var format = child.format,
|
|
84
|
+
clone = _objectWithoutProperties(child, ["format"]);
|
|
63
85
|
|
|
64
|
-
var format = clone.format;
|
|
65
|
-
delete clone.format;
|
|
66
86
|
var keys = Object.keys(clone);
|
|
67
87
|
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
stringNode = "".concat(stringNode, "{{").concat(keys[0], "}}");
|
|
88
|
+
if (keys.length === 1) {
|
|
89
|
+
var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0];
|
|
90
|
+
stringNode += "{{".concat(value, "}}");
|
|
72
91
|
} else {
|
|
73
92
|
// not a valid interpolation object (can only contain one value plus format)
|
|
74
93
|
warn("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.", child);
|
|
@@ -111,7 +130,10 @@ function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts) {
|
|
|
111
130
|
var translationContent = node.children && node.children[0] && node.children[0].content;
|
|
112
131
|
|
|
113
132
|
if (node.type === 'tag') {
|
|
114
|
-
var
|
|
133
|
+
var tmp = reactNodes[parseInt(node.name, 10)] || {};
|
|
134
|
+
var child = Object.keys(node.attrs).length !== 0 ? mergeProps({
|
|
135
|
+
props: node.attrs
|
|
136
|
+
}, tmp) : tmp;
|
|
115
137
|
var isElement = React.isValidElement(child);
|
|
116
138
|
|
|
117
139
|
if (typeof child === 'string') {
|
|
@@ -210,9 +232,7 @@ export function Trans(_ref) {
|
|
|
210
232
|
tFromProps = _ref.t,
|
|
211
233
|
additionalProps = _objectWithoutProperties(_ref, ["children", "count", "parent", "i18nKey", "tOptions", "values", "defaults", "components", "ns", "i18n", "t"]);
|
|
212
234
|
|
|
213
|
-
var
|
|
214
|
-
|
|
215
|
-
var _ref2 = getHasUsedI18nextProvider() ? ReactI18nContext || {} : {},
|
|
235
|
+
var _ref2 = useContext(I18nContext) || {},
|
|
216
236
|
i18nFromContext = _ref2.i18n,
|
|
217
237
|
defaultNSFromContext = _ref2.defaultNS;
|
|
218
238
|
|
|
@@ -227,13 +247,12 @@ export function Trans(_ref) {
|
|
|
227
247
|
return k;
|
|
228
248
|
};
|
|
229
249
|
|
|
230
|
-
var reactI18nextOptions = _objectSpread({}, getDefaults(), {}, i18n.options && i18n.options.react);
|
|
250
|
+
var reactI18nextOptions = _objectSpread({}, getDefaults(), {}, i18n.options && i18n.options.react); // prepare having a namespace
|
|
231
251
|
|
|
232
|
-
var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent; // prepare having a namespace
|
|
233
252
|
|
|
234
253
|
var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
|
|
235
254
|
namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
|
|
236
|
-
var defaultValue = defaults || nodesToString(
|
|
255
|
+
var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;
|
|
237
256
|
var hashTransKey = reactI18nextOptions.hashTransKey;
|
|
238
257
|
var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);
|
|
239
258
|
var interpolationOverride = values ? {} : {
|
|
@@ -251,6 +270,9 @@ export function Trans(_ref) {
|
|
|
251
270
|
});
|
|
252
271
|
|
|
253
272
|
var translation = key ? t(key, combinedTOpts) : defaultValue;
|
|
254
|
-
|
|
255
|
-
|
|
273
|
+
var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts); // allows user to pass `null` to `parent`
|
|
274
|
+
// and override `defaultTransParent` if is present
|
|
275
|
+
|
|
276
|
+
var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;
|
|
277
|
+
return useAsParent ? React.createElement(useAsParent, additionalProps, content) : content;
|
|
256
278
|
}
|
package/dist/es/context.js
CHANGED
|
@@ -4,7 +4,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
4
4
|
|
|
5
5
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
6
6
|
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
var defaultOptions = {
|
|
@@ -18,14 +18,7 @@ var defaultOptions = {
|
|
|
18
18
|
useSuspense: true
|
|
19
19
|
};
|
|
20
20
|
var i18nInstance;
|
|
21
|
-
var hasUsedI18nextProvider;
|
|
22
21
|
export var I18nContext = React.createContext();
|
|
23
|
-
export function usedI18nextProvider(used) {
|
|
24
|
-
hasUsedI18nextProvider = used;
|
|
25
|
-
}
|
|
26
|
-
export function getHasUsedI18nextProvider() {
|
|
27
|
-
return hasUsedI18nextProvider;
|
|
28
|
-
}
|
|
29
22
|
export function setDefaults() {
|
|
30
23
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
31
24
|
defaultOptions = _objectSpread({}, defaultOptions, {}, options);
|
|
@@ -33,9 +26,7 @@ export function setDefaults() {
|
|
|
33
26
|
export function getDefaults() {
|
|
34
27
|
return defaultOptions;
|
|
35
28
|
}
|
|
36
|
-
export var ReportNamespaces =
|
|
37
|
-
/*#__PURE__*/
|
|
38
|
-
function () {
|
|
29
|
+
export var ReportNamespaces = /*#__PURE__*/function () {
|
|
39
30
|
function ReportNamespaces() {
|
|
40
31
|
_classCallCheck(this, ReportNamespaces);
|
|
41
32
|
|
package/dist/es/useSSR.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { useContext } from 'react';
|
|
2
|
-
import { getI18n,
|
|
2
|
+
import { getI18n, I18nContext } from './context';
|
|
3
3
|
export function useSSR(initialI18nStore, initialLanguage) {
|
|
4
4
|
var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
5
5
|
var i18nFromProps = props.i18n;
|
|
6
|
-
var ReactI18nContext = useContext(I18nContext);
|
|
7
6
|
|
|
8
|
-
var _ref =
|
|
7
|
+
var _ref = useContext(I18nContext) || {},
|
|
9
8
|
i18nFromContext = _ref.i18n;
|
|
10
9
|
|
|
11
|
-
var i18n = i18nFromProps || i18nFromContext || getI18n(); // opt out if is a cloned instance, eg. created by i18next-
|
|
10
|
+
var i18n = i18nFromProps || i18nFromContext || getI18n(); // opt out if is a cloned instance, eg. created by i18next-http-middleware on request
|
|
12
11
|
// -> do not set initial stuff on server side
|
|
13
12
|
|
|
14
13
|
if (i18n.options && i18n.options.isClone) return; // nextjs / SSR: getting data from next.js or other ssr stack
|
|
@@ -3,18 +3,17 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
3
3
|
|
|
4
4
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
5
5
|
|
|
6
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
7
|
|
|
8
|
-
import { useState, useEffect, useContext } from 'react';
|
|
9
|
-
import { getI18n, getDefaults, ReportNamespaces,
|
|
8
|
+
import { useState, useEffect, useContext, useRef } from 'react';
|
|
9
|
+
import { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';
|
|
10
10
|
import { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';
|
|
11
11
|
export function useTranslation(ns) {
|
|
12
12
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
13
13
|
// assert we have the needed i18nInstance
|
|
14
14
|
var i18nFromProps = props.i18n;
|
|
15
|
-
var ReactI18nContext = useContext(I18nContext);
|
|
16
15
|
|
|
17
|
-
var _ref =
|
|
16
|
+
var _ref = useContext(I18nContext) || {},
|
|
18
17
|
i18nFromContext = _ref.i18n,
|
|
19
18
|
defaultNSFromContext = _ref.defaultNS;
|
|
20
19
|
|
|
@@ -60,20 +59,21 @@ export function useTranslation(ns) {
|
|
|
60
59
|
setT = _useState2[1]; // seems we can't have functions as value -> wrap it in obj
|
|
61
60
|
|
|
62
61
|
|
|
62
|
+
var isMounted = useRef(true);
|
|
63
63
|
useEffect(function () {
|
|
64
|
-
var isMounted = true;
|
|
65
64
|
var bindI18n = i18nOptions.bindI18n,
|
|
66
|
-
bindI18nStore = i18nOptions.bindI18nStore;
|
|
65
|
+
bindI18nStore = i18nOptions.bindI18nStore;
|
|
66
|
+
isMounted.current = true; // if not ready and not using suspense load the namespaces
|
|
67
67
|
// in side effect and do not call resetT if unmounted
|
|
68
68
|
|
|
69
69
|
if (!ready && !useSuspense) {
|
|
70
70
|
loadNamespaces(i18n, namespaces, function () {
|
|
71
|
-
if (isMounted) setT(getT());
|
|
71
|
+
if (isMounted.current) setT(getT());
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
function boundReset() {
|
|
76
|
-
if (isMounted) setT(getT());
|
|
76
|
+
if (isMounted.current) setT(getT());
|
|
77
77
|
} // bind events to trigger change, like languageChanged
|
|
78
78
|
|
|
79
79
|
|
|
@@ -81,7 +81,7 @@ export function useTranslation(ns) {
|
|
|
81
81
|
if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset); // unbinding on unmount
|
|
82
82
|
|
|
83
83
|
return function () {
|
|
84
|
-
isMounted = false;
|
|
84
|
+
isMounted.current = false;
|
|
85
85
|
if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {
|
|
86
86
|
return i18n.off(e, boundReset);
|
|
87
87
|
});
|
|
@@ -102,7 +102,7 @@ export function useTranslation(ns) {
|
|
|
102
102
|
|
|
103
103
|
throw new Promise(function (resolve) {
|
|
104
104
|
loadNamespaces(i18n, namespaces, function () {
|
|
105
|
-
setT(getT());
|
|
105
|
+
if (isMounted.current) setT(getT());
|
|
106
106
|
resolve();
|
|
107
107
|
});
|
|
108
108
|
});
|
package/dist/es/withSSR.js
CHANGED
|
@@ -3,7 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
3
3
|
|
|
4
4
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
5
5
|
|
|
6
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
6
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
7
|
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import { useSSR } from './useSSR';
|
|
@@ -4,7 +4,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
4
4
|
|
|
5
5
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
6
6
|
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { useTranslation } from './useTranslation';
|