react-i18next 11.16.11 → 11.17.2

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 CHANGED
@@ -1,3 +1,15 @@
1
+ ### 11.17.2
2
+
3
+ - reset t if ns changes in useTranslation [1518](https://github.com/i18next/react-i18next/pull/1518)
4
+
5
+ ### 11.17.1
6
+
7
+ - Stricter typescript type for Trans components prop [1516](https://github.com/i18next/react-i18next/pull/1516)
8
+
9
+ ### 11.17.0
10
+
11
+ - Add support for keyPrefix in withTranslation [1512](https://github.com/i18next/react-i18next/pull/1512)
12
+
1
13
  ### 11.16.11
2
14
 
3
15
  - types: fix Translation component types regression [1511](https://github.com/i18next/react-i18next/pull/1511)
@@ -772,6 +772,14 @@ define(['exports', 'react'], function (exports, React) { 'use strict';
772
772
  return useAsParent ? React__default.createElement(useAsParent, additionalProps, content) : content;
773
773
  }
774
774
 
775
+ var usePrevious = function usePrevious(value, ignore) {
776
+ var ref = React.useRef();
777
+ React.useEffect(function () {
778
+ ref.current = ignore ? ref.current : value;
779
+ }, [value, ignore]);
780
+ return ref.current;
781
+ };
782
+
775
783
  function useTranslation(ns) {
776
784
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
777
785
  var i18nFromProps = props.i18n;
@@ -819,6 +827,8 @@ define(['exports', 'react'], function (exports, React) { 'use strict';
819
827
  t = _useState2[0],
820
828
  setT = _useState2[1];
821
829
 
830
+ var joinedNS = namespaces.join();
831
+ var previousJoinedNS = usePrevious(joinedNS);
822
832
  var isMounted = React.useRef(true);
823
833
  React.useEffect(function () {
824
834
  var bindI18n = i18nOptions.bindI18n,
@@ -831,6 +841,10 @@ define(['exports', 'react'], function (exports, React) { 'use strict';
831
841
  });
832
842
  }
833
843
 
844
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
845
+ setT(getT);
846
+ }
847
+
834
848
  function boundReset() {
835
849
  if (isMounted.current) setT(getT);
836
850
  }
@@ -846,7 +860,7 @@ define(['exports', 'react'], function (exports, React) { 'use strict';
846
860
  return i18n.store.off(e, boundReset);
847
861
  });
848
862
  };
849
- }, [i18n, namespaces.join()]);
863
+ }, [i18n, joinedNS]);
850
864
  var isInitial = React.useRef(true);
851
865
  React.useEffect(function () {
852
866
  if (isMounted.current && !isInitial.current) {
@@ -876,7 +890,9 @@ define(['exports', 'react'], function (exports, React) { 'use strict';
876
890
  var forwardedRef = _ref.forwardedRef,
877
891
  rest = _objectWithoutProperties(_ref, _excluded$1);
878
892
 
879
- var _useTranslation = useTranslation(ns, rest),
893
+ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, {
894
+ keyPrefix: options.keyPrefix
895
+ })),
880
896
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
881
897
  t = _useTranslation2[0],
882
898
  i18n = _useTranslation2[1],
@@ -1 +1 @@
1
- define(["exports","react"],(function(e,n){"use strict";var t="default"in n?n.default:n;function r(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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function w(e){return O[e]}var x,S={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},j=t.createContext();function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};S=a(a({},S),e)}function N(){return S}var k=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function I(e){x=e}function P(){return x}var C={type:"3rdParty",init:function(e){E(e.options.react),I(e)}};function R(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,x,S,j,E=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var k=0!==Object.keys(c.attrs).length?(x={props:c.attrs},(j=a({},S=N)).props=Object.assign(x.props,S.props),j):N,I=t.isValidElement(k),P=I&&F(c,!0)&&!c.voidElement,C=l&&"object"===i(k)&&k.dummy&&!I,R="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof k){var T=r.services.interpolator.interpolate(k,d,r.language);n.push(T)}else if(F(k)||P){m(k,g(k,c,f),n,v)}else if(C){var A=h(p,c.children,f);n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(R)m(k,g(k,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(k)||I)1===c.children.length&&E?n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),E)):n.push(t.cloneElement(k,a(a({},k.props),{},{key:v})));else{var B=c.children[0]?E:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,w)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}function q(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(j)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new k),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],w=b[1],x=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){x.current&&w(v)}return x.current=!0,h||d||B(s,m,(function(){x.current&&w(v)})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){x.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)}))}}),[s,m.join()]);var S=n.useRef(!0);n.useEffect((function(){x.current&&!S.current&&w(v),S.current=!1}),[s]);var E=[O,s,h];if(E.t=O,E.i18n=s,E.ready=h,h)return E;if(!h&&!d)return E;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var Y=["forwardedRef"];var _=["ns","children"];function J(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(j)||{},o=i.i18n,c=a||o||P();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))}var Z=["initialI18nStore","initialLanguage"];e.I18nContext=j,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(j.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),w=n.useContext(j)||{},x=w.i18n,S=w.defaultNS,E=v||x||P();if(!E)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var k=y||E.t.bind(E)||function(e){return e};l&&(p.context=l);var I=a(a({},N()),E.options&&E.options.react),C=h||k.ns||S||E.options&&E.options.defaultNS;C="string"==typeof C?[C]:C||["translation"];var R=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,I)||I.transEmptyNodeValue||u,T=I.hashTransKey,L=u||(T?T(R):R),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:R,ns:C}),D=$(m||r,L?k(L,U):R,E,I,U,b),H=void 0!==c?c:I.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(q(n,s(e,_)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=R,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=C,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=E,e.setI18n=I,e.time=function(){return""},e.useSSR=J,e.useTranslation=q,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,Z);return J(r,i),t.createElement(e,a({},o))}return n.getInitialProps=R(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,Y),l=u(q(e,c),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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
+ define(["exports","react"],(function(e,n){"use strict";var t="default"in n?n.default:n;function r(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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function x(e){return O[e]}var w,E={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},S=t.createContext();function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};E=a(a({},E),e)}function N(){return E}var k=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function I(e){w=e}function P(){return w}var C={type:"3rdParty",init:function(e){j(e.options.react),I(e)}};function R(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,w,E,S,j=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var k=0!==Object.keys(c.attrs).length?(w={props:c.attrs},(S=a({},E=N)).props=Object.assign(w.props,E.props),S):N,I=t.isValidElement(k),P=I&&F(c,!0)&&!c.voidElement,C=l&&"object"===i(k)&&k.dummy&&!I,R="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof k){var T=r.services.interpolator.interpolate(k,d,r.language);n.push(T)}else if(F(k)||P){m(k,g(k,c,f),n,v)}else if(C){var A=h(p,c.children,f);n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(R)m(k,g(k,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(k)||I)1===c.children.length&&j?n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),j)):n.push(t.cloneElement(k,a(a({},k.props),{},{key:v})));else{var B=c.children[0]?j:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,x)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(S)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new k),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],x=b[1],w=m.join(),E=q(w),j=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){j.current&&x(v)}return j.current=!0,h||d||B(s,m,(function(){j.current&&x(v)})),h&&E&&E!==w&&j.current&&x(v),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){j.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)}))}}),[s,w]);var I=n.useRef(!0);n.useEffect((function(){j.current&&!I.current&&x(v),I.current=!1}),[s]);var C=[O,s,h];if(C.t=O,C.i18n=s,C.ready=h,h)return C;if(!h&&!d)return C;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(S)||{},o=i.i18n,c=a||o||P();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))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=S,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(S.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),x=n.useContext(S)||{},w=x.i18n,E=x.defaultNS,j=v||w||P();if(!j)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var k=y||j.t.bind(j)||function(e){return e};l&&(p.context=l);var I=a(a({},N()),j.options&&j.options.react),C=h||k.ns||E||j.options&&j.options.defaultNS;C="string"==typeof C?[C]:C||["translation"];var R=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,I)||I.transEmptyNodeValue||u,T=I.hashTransKey,L=u||(T?T(R):R),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:R,ns:C}),D=$(m||r,L?k(L,U):R,j,I,U,b),H=void 0!==c?c:I.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(Y(n,s(e,J)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=R,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=C,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=j,e.setI18n=I,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,G);return Z(r,i),t.createElement(e,a({},o))}return n.getInitialProps=R(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,_),l=u(Y(e,a(a({},c),{},{keyPrefix:n.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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})}));
@@ -21,6 +21,14 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
21
21
 
22
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
+ var usePrevious = function usePrevious(value, ignore) {
25
+ var ref = (0, _react.useRef)();
26
+ (0, _react.useEffect)(function () {
27
+ ref.current = ignore ? ref.current : value;
28
+ }, [value, ignore]);
29
+ return ref.current;
30
+ };
31
+
24
32
  function useTranslation(ns) {
25
33
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
26
34
  var i18nFromProps = props.i18n;
@@ -68,6 +76,8 @@ function useTranslation(ns) {
68
76
  t = _useState2[0],
69
77
  setT = _useState2[1];
70
78
 
79
+ var joinedNS = namespaces.join();
80
+ var previousJoinedNS = usePrevious(joinedNS);
71
81
  var isMounted = (0, _react.useRef)(true);
72
82
  (0, _react.useEffect)(function () {
73
83
  var bindI18n = i18nOptions.bindI18n,
@@ -80,6 +90,10 @@ function useTranslation(ns) {
80
90
  });
81
91
  }
82
92
 
93
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
94
+ setT(getT);
95
+ }
96
+
83
97
  function boundReset() {
84
98
  if (isMounted.current) setT(getT);
85
99
  }
@@ -95,7 +109,7 @@ function useTranslation(ns) {
95
109
  return i18n.store.off(e, boundReset);
96
110
  });
97
111
  };
98
- }, [i18n, namespaces.join()]);
112
+ }, [i18n, joinedNS]);
99
113
  var isInitial = (0, _react.useRef)(true);
100
114
  (0, _react.useEffect)(function () {
101
115
  if (isMounted.current && !isInitial.current) {
@@ -32,7 +32,9 @@ function withTranslation(ns) {
32
32
  var forwardedRef = _ref.forwardedRef,
33
33
  rest = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
34
34
 
35
- var _useTranslation = (0, _useTranslation3.useTranslation)(ns, rest),
35
+ var _useTranslation = (0, _useTranslation3.useTranslation)(ns, _objectSpread(_objectSpread({}, rest), {}, {
36
+ keyPrefix: options.keyPrefix
37
+ })),
36
38
  _useTranslation2 = (0, _slicedToArray2["default"])(_useTranslation, 3),
37
39
  t = _useTranslation2[0],
38
40
  i18n = _useTranslation2[1],
@@ -8,6 +8,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8
8
  import { useState, useEffect, useContext, useRef } from 'react';
9
9
  import { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';
10
10
  import { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';
11
+
12
+ var usePrevious = function usePrevious(value, ignore) {
13
+ var ref = useRef();
14
+ useEffect(function () {
15
+ ref.current = ignore ? ref.current : value;
16
+ }, [value, ignore]);
17
+ return ref.current;
18
+ };
19
+
11
20
  export function useTranslation(ns) {
12
21
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
22
  var i18nFromProps = props.i18n;
@@ -55,6 +64,8 @@ export function useTranslation(ns) {
55
64
  t = _useState2[0],
56
65
  setT = _useState2[1];
57
66
 
67
+ var joinedNS = namespaces.join();
68
+ var previousJoinedNS = usePrevious(joinedNS);
58
69
  var isMounted = useRef(true);
59
70
  useEffect(function () {
60
71
  var bindI18n = i18nOptions.bindI18n,
@@ -67,6 +78,10 @@ export function useTranslation(ns) {
67
78
  });
68
79
  }
69
80
 
81
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
82
+ setT(getT);
83
+ }
84
+
70
85
  function boundReset() {
71
86
  if (isMounted.current) setT(getT);
72
87
  }
@@ -82,7 +97,7 @@ export function useTranslation(ns) {
82
97
  return i18n.store.off(e, boundReset);
83
98
  });
84
99
  };
85
- }, [i18n, namespaces.join()]);
100
+ }, [i18n, joinedNS]);
86
101
  var isInitial = useRef(true);
87
102
  useEffect(function () {
88
103
  if (isMounted.current && !isInitial.current) {
@@ -17,7 +17,9 @@ export function withTranslation(ns) {
17
17
  var forwardedRef = _ref.forwardedRef,
18
18
  rest = _objectWithoutProperties(_ref, _excluded);
19
19
 
20
- var _useTranslation = useTranslation(ns, rest),
20
+ var _useTranslation = useTranslation(ns, _objectSpread(_objectSpread({}, rest), {}, {
21
+ keyPrefix: options.keyPrefix
22
+ })),
21
23
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
22
24
  t = _useTranslation2[0],
23
25
  i18n = _useTranslation2[1],
@@ -776,6 +776,14 @@
776
776
  return useAsParent ? React__default.createElement(useAsParent, additionalProps, content) : content;
777
777
  }
778
778
 
779
+ var usePrevious = function usePrevious(value, ignore) {
780
+ var ref = React.useRef();
781
+ React.useEffect(function () {
782
+ ref.current = ignore ? ref.current : value;
783
+ }, [value, ignore]);
784
+ return ref.current;
785
+ };
786
+
779
787
  function useTranslation(ns) {
780
788
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
781
789
  var i18nFromProps = props.i18n;
@@ -823,6 +831,8 @@
823
831
  t = _useState2[0],
824
832
  setT = _useState2[1];
825
833
 
834
+ var joinedNS = namespaces.join();
835
+ var previousJoinedNS = usePrevious(joinedNS);
826
836
  var isMounted = React.useRef(true);
827
837
  React.useEffect(function () {
828
838
  var bindI18n = i18nOptions.bindI18n,
@@ -835,6 +845,10 @@
835
845
  });
836
846
  }
837
847
 
848
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
849
+ setT(getT);
850
+ }
851
+
838
852
  function boundReset() {
839
853
  if (isMounted.current) setT(getT);
840
854
  }
@@ -850,7 +864,7 @@
850
864
  return i18n.store.off(e, boundReset);
851
865
  });
852
866
  };
853
- }, [i18n, namespaces.join()]);
867
+ }, [i18n, joinedNS]);
854
868
  var isInitial = React.useRef(true);
855
869
  React.useEffect(function () {
856
870
  if (isMounted.current && !isInitial.current) {
@@ -880,7 +894,9 @@
880
894
  var forwardedRef = _ref.forwardedRef,
881
895
  rest = _objectWithoutProperties(_ref, _excluded$1);
882
896
 
883
- var _useTranslation = useTranslation(ns, rest),
897
+ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, {
898
+ keyPrefix: options.keyPrefix
899
+ })),
884
900
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
885
901
  t = _useTranslation2[0],
886
902
  i18n = _useTranslation2[1],
@@ -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,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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function x(e){return O[e]}var w,j={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},S=t.createContext();function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};j=a(a({},j),e)}function N(){return j}var I=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function k(e){w=e}function P(){return w}var R={type:"3rdParty",init:function(e){E(e.options.react),k(e)}};function C(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,w,j,S,E=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var I=0!==Object.keys(c.attrs).length?(w={props:c.attrs},(S=a({},j=N)).props=Object.assign(w.props,j.props),S):N,k=t.isValidElement(I),P=k&&F(c,!0)&&!c.voidElement,R=l&&"object"===i(I)&&I.dummy&&!k,C="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof I){var T=r.services.interpolator.interpolate(I,d,r.language);n.push(T)}else if(F(I)||P){m(I,g(I,c,f),n,v)}else if(R){var A=h(p,c.children,f);n.push(t.cloneElement(I,a(a({},I.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(C)m(I,g(I,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(I)||k)1===c.children.length&&E?n.push(t.cloneElement(I,a(a({},I.props),{},{key:v}),E)):n.push(t.cloneElement(I,a(a({},I.props),{},{key:v})));else{var B=c.children[0]?E:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,x)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}function q(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(S)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new I),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],x=b[1],w=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){w.current&&x(v)}return w.current=!0,h||d||B(s,m,(function(){w.current&&x(v)})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){w.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)}))}}),[s,m.join()]);var j=n.useRef(!0);n.useEffect((function(){w.current&&!j.current&&x(v),j.current=!1}),[s]);var E=[O,s,h];if(E.t=O,E.i18n=s,E.ready=h,h)return E;if(!h&&!d)return E;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var Y=["forwardedRef"];var _=["ns","children"];function J(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(S)||{},o=i.i18n,c=a||o||P();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))}var Z=["initialI18nStore","initialLanguage"];e.I18nContext=S,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(S.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),x=n.useContext(S)||{},w=x.i18n,j=x.defaultNS,E=v||w||P();if(!E)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var I=y||E.t.bind(E)||function(e){return e};l&&(p.context=l);var k=a(a({},N()),E.options&&E.options.react),R=h||I.ns||j||E.options&&E.options.defaultNS;R="string"==typeof R?[R]:R||["translation"];var C=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,k)||k.transEmptyNodeValue||u,T=k.hashTransKey,L=u||(T?T(C):C),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:C,ns:R}),D=$(m||r,L?I(L,U):C,E,k,U,b),H=void 0!==c?c:k.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(q(n,s(e,_)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=C,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=R,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=E,e.setI18n=k,e.time=function(){return""},e.useSSR=J,e.useTranslation=q,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,Z);return J(r,i),t.createElement(e,a({},o))}return n.getInitialProps=C(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,Y),l=u(q(e,c),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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,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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function x(e){return O[e]}var w,j={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},E=t.createContext();function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};j=a(a({},j),e)}function N(){return j}var k=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function I(e){w=e}function P(){return w}var R={type:"3rdParty",init:function(e){S(e.options.react),I(e)}};function C(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,w,j,E,S=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var k=0!==Object.keys(c.attrs).length?(w={props:c.attrs},(E=a({},j=N)).props=Object.assign(w.props,j.props),E):N,I=t.isValidElement(k),P=I&&F(c,!0)&&!c.voidElement,R=l&&"object"===i(k)&&k.dummy&&!I,C="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof k){var T=r.services.interpolator.interpolate(k,d,r.language);n.push(T)}else if(F(k)||P){m(k,g(k,c,f),n,v)}else if(R){var A=h(p,c.children,f);n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(C)m(k,g(k,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(k)||I)1===c.children.length&&S?n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),S)):n.push(t.cloneElement(k,a(a({},k.props),{},{key:v})));else{var B=c.children[0]?S:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,x)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(E)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new k),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],x=b[1],w=m.join(),j=q(w),S=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){S.current&&x(v)}return S.current=!0,h||d||B(s,m,(function(){S.current&&x(v)})),h&&j&&j!==w&&S.current&&x(v),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){S.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)}))}}),[s,w]);var I=n.useRef(!0);n.useEffect((function(){S.current&&!I.current&&x(v),I.current=!1}),[s]);var R=[O,s,h];if(R.t=O,R.i18n=s,R.ready=h,h)return R;if(!h&&!d)return R;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(E)||{},o=i.i18n,c=a||o||P();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))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=E,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(E.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),x=n.useContext(E)||{},w=x.i18n,j=x.defaultNS,S=v||w||P();if(!S)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var k=y||S.t.bind(S)||function(e){return e};l&&(p.context=l);var I=a(a({},N()),S.options&&S.options.react),R=h||k.ns||j||S.options&&S.options.defaultNS;R="string"==typeof R?[R]:R||["translation"];var C=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,I)||I.transEmptyNodeValue||u,T=I.hashTransKey,L=u||(T?T(C):C),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:C,ns:R}),D=$(m||r,L?k(L,U):C,S,I,U,b),H=void 0!==c?c:I.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(Y(n,s(e,J)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=C,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=R,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=S,e.setI18n=I,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,G);return Z(r,i),t.createElement(e,a({},o))}return n.getInitialProps=C(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,_),l=u(Y(e,a(a({},c),{},{keyPrefix:n.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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/index.d.ts CHANGED
@@ -34,7 +34,7 @@ export interface TransProps<E extends Element = HTMLDivElement>
34
34
  extends React.HTMLProps<E>,
35
35
  Partial<WithT> {
36
36
  children?: React.ReactNode;
37
- components?: readonly React.ReactNode[] | { readonly [tagName: string]: React.ReactNode };
37
+ components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement };
38
38
  count?: number;
39
39
  context?: string;
40
40
  defaults?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-i18next",
3
- "version": "11.16.11",
3
+ "version": "11.17.2",
4
4
  "description": "Internationalization for react done right. Using the i18next i18n ecosystem.",
5
5
  "main": "dist/commonjs/index.js",
6
6
  "types": "./index.d.ts",
@@ -117,9 +117,9 @@
117
117
  "test:watch": "cross-env BABEL_ENV=development jest --no-cache --watch",
118
118
  "test:coverage": "cross-env BABEL_ENV=development jest --no-cache --coverage",
119
119
  "test:lint": "eslint ./src ./test",
120
- "test:typescript": "tslint --project tsconfig.json '**/*.ts'",
121
- "test:typescript:noninterop": "tslint --project tsconfig.nonEsModuleInterop.json '**/*.ts'",
122
- "test:typescript:customtypes": "tslint --project ./test/typescript/custom-types/tsconfig.json '**/*.ts'",
120
+ "test:typescript": "tslint --project tsconfig.json '**/*.{ts,tsx}'",
121
+ "test:typescript:noninterop": "tslint --project tsconfig.nonEsModuleInterop.json '**/*.{ts,tsx}'",
122
+ "test:typescript:customtypes": "tslint --project ./test/typescript/custom-types/tsconfig.json '**/*.{ts,tsx}'",
123
123
  "contributors:add": "all-contributors add",
124
124
  "contributors:generate": "all-contributors generate",
125
125
  "prettier": "prettier --write \"{,**/}*.{ts,tsx,js,json,md}\""
package/react-i18next.js CHANGED
@@ -776,6 +776,14 @@
776
776
  return useAsParent ? React__default.createElement(useAsParent, additionalProps, content) : content;
777
777
  }
778
778
 
779
+ var usePrevious = function usePrevious(value, ignore) {
780
+ var ref = React.useRef();
781
+ React.useEffect(function () {
782
+ ref.current = ignore ? ref.current : value;
783
+ }, [value, ignore]);
784
+ return ref.current;
785
+ };
786
+
779
787
  function useTranslation(ns) {
780
788
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
781
789
  var i18nFromProps = props.i18n;
@@ -823,6 +831,8 @@
823
831
  t = _useState2[0],
824
832
  setT = _useState2[1];
825
833
 
834
+ var joinedNS = namespaces.join();
835
+ var previousJoinedNS = usePrevious(joinedNS);
826
836
  var isMounted = React.useRef(true);
827
837
  React.useEffect(function () {
828
838
  var bindI18n = i18nOptions.bindI18n,
@@ -835,6 +845,10 @@
835
845
  });
836
846
  }
837
847
 
848
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
849
+ setT(getT);
850
+ }
851
+
838
852
  function boundReset() {
839
853
  if (isMounted.current) setT(getT);
840
854
  }
@@ -850,7 +864,7 @@
850
864
  return i18n.store.off(e, boundReset);
851
865
  });
852
866
  };
853
- }, [i18n, namespaces.join()]);
867
+ }, [i18n, joinedNS]);
854
868
  var isInitial = React.useRef(true);
855
869
  React.useEffect(function () {
856
870
  if (isMounted.current && !isInitial.current) {
@@ -880,7 +894,9 @@
880
894
  var forwardedRef = _ref.forwardedRef,
881
895
  rest = _objectWithoutProperties(_ref, _excluded$1);
882
896
 
883
- var _useTranslation = useTranslation(ns, rest),
897
+ var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, {
898
+ keyPrefix: options.keyPrefix
899
+ })),
884
900
  _useTranslation2 = _slicedToArray(_useTranslation, 3),
885
901
  t = _useTranslation2[0],
886
902
  i18n = _useTranslation2[1],
@@ -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,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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function x(e){return O[e]}var w,j={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},S=t.createContext();function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};j=a(a({},j),e)}function N(){return j}var I=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function k(e){w=e}function P(){return w}var R={type:"3rdParty",init:function(e){E(e.options.react),k(e)}};function C(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,w,j,S,E=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var I=0!==Object.keys(c.attrs).length?(w={props:c.attrs},(S=a({},j=N)).props=Object.assign(w.props,j.props),S):N,k=t.isValidElement(I),P=k&&F(c,!0)&&!c.voidElement,R=l&&"object"===i(I)&&I.dummy&&!k,C="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof I){var T=r.services.interpolator.interpolate(I,d,r.language);n.push(T)}else if(F(I)||P){m(I,g(I,c,f),n,v)}else if(R){var A=h(p,c.children,f);n.push(t.cloneElement(I,a(a({},I.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(C)m(I,g(I,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(I)||k)1===c.children.length&&E?n.push(t.cloneElement(I,a(a({},I.props),{},{key:v}),E)):n.push(t.cloneElement(I,a(a({},I.props),{},{key:v})));else{var B=c.children[0]?E:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,x)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}function q(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(S)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new I),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],x=b[1],w=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){w.current&&x(v)}return w.current=!0,h||d||B(s,m,(function(){w.current&&x(v)})),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){w.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)}))}}),[s,m.join()]);var j=n.useRef(!0);n.useEffect((function(){w.current&&!j.current&&x(v),j.current=!1}),[s]);var E=[O,s,h];if(E.t=O,E.i18n=s,E.ready=h,h)return E;if(!h&&!d)return E;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var Y=["forwardedRef"];var _=["ns","children"];function J(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(S)||{},o=i.i18n,c=a||o||P();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))}var Z=["initialI18nStore","initialLanguage"];e.I18nContext=S,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(S.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),x=n.useContext(S)||{},w=x.i18n,j=x.defaultNS,E=v||w||P();if(!E)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var I=y||E.t.bind(E)||function(e){return e};l&&(p.context=l);var k=a(a({},N()),E.options&&E.options.react),R=h||I.ns||j||E.options&&E.options.defaultNS;R="string"==typeof R?[R]:R||["translation"];var C=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,k)||k.transEmptyNodeValue||u,T=k.hashTransKey,L=u||(T?T(C):C),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:C,ns:R}),D=$(m||r,L?I(L,U):C,E,k,U,b),H=void 0!==c?c:k.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(q(n,s(e,_)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=C,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=R,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=E,e.setI18n=k,e.time=function(){return""},e.useSSR=J,e.useTranslation=q,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,Z);return J(r,i),t.createElement(e,a({},o))}return n.getInitialProps=C(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,Y),l=u(q(e,c),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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,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 a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){c(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e){return(i="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 o(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 c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function u(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==t)return;var r,a,i=[],o=!0,c=!1;try{for(t=t.call(e);!(o=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);o=!0);}catch(e){c=!0,a=e}finally{try{o||null==t.return||t.return()}finally{if(c)throw a}}return i}(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,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function d(e){var n={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},t=e.match(/<\/?([^\s]+?)[/\s>]/);if(t&&(n.name=t[1],(f[t[1]]||"/"===e.charAt(e.length-2))&&(n.voidElement=!0),n.name.startsWith("!--"))){var r=e.indexOf("--\x3e");return{type:"comment",comment:-1!==r?e.slice(4,r):""}}for(var a=new RegExp(p),i=null;null!==(i=a.exec(e));)if(i[0].trim())if(i[1]){var o=i[1].trim(),c=[o,""];o.indexOf("=")>-1&&(c=o.split("=")),n.attrs[c[0]]=c[1],a.lastIndex--}else i[2]&&(n.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1));return n}var g=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,m=/^\s*$/,h=Object.create(null);var v=function(e,n){n||(n={}),n.components||(n.components=h);var t,r=[],a=[],i=-1,o=!1;if(0!==e.indexOf("<")){var c=e.indexOf("<");r.push({type:"text",content:-1===c?e:e.substring(0,c)})}return e.replace(g,(function(c,s){if(o){if(c!=="</"+t.name+">")return;o=!1}var u,l="/"!==c.charAt(1),f=c.startsWith("\x3c!--"),p=s+c.length,g=e.charAt(p);if(f){var h=d(c);return i<0?(r.push(h),r):((u=a[i]).children.push(h),r)}if(l&&(i++,"tag"===(t=d(c)).type&&n.components[t.name]&&(t.type="component",o=!0),t.voidElement||o||!g||"<"===g||t.children.push({type:"text",content:e.slice(p,e.indexOf("<",p))}),0===i&&r.push(t),(u=a[i-1])&&u.children.push(t),a[i]=t),(!l||t.voidElement)&&(i>-1&&(t.voidElement||t.name===c.slice(2,-1))&&(i--,t=-1===i?r:a[i]),!o&&"<"!==g&&g)){u=-1===i?r:a[i].children;var v=e.indexOf("<",p),y=e.slice(p,-1===v?void 0:v);m.test(y)&&(y=" "),(v>-1&&i+u.length>=0||" "!==y)&&u.push({type:"text",content:y})}})),r},y="".replace,b=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,O={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'};function x(e){return O[e]}var w,j={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},E=t.createContext();function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};j=a(a({},j),e)}function N(){return j}var k=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)}}])&&o(n.prototype,t),r&&o(n,r),e}();function I(e){w=e}function P(){return w}var R={type:"3rdParty",init:function(e){S(e.options.react),I(e)}};function C(e){return function(n){return new Promise((function(t){var r=T();e.getInitialProps?e.getInitialProps(n).then((function(e){t(a(a({},e),r))})):t(r)}))}}function T(){var e=P(),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 A(){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 L={};function z(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];"string"==typeof n[0]&&L[n[0]]||("string"==typeof n[0]&&(L[n[0]]=new Date),A.apply(void 0,n))}function B(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 U(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.languages[0],a=!!n.options&&n.options.fallbackLng,i=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&&(!n.options.resources||n.options.partialBundledLanguages))||!(!o(r,e)||a&&!o(i,e))))}function D(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.languages||!n.languages.length)return z("i18n.languages were undefined or empty",n.languages),!0;var r=void 0!==n.options.ignoreJSONStructure;return r?n.hasLoadedNamespace(e,{precheck:function(n,r){if(t.bindI18n&&t.bindI18n.indexOf("languageChanging")>-1&&n.services.backendConnector.backend&&n.isLanguageChangingTo&&!r(n.isLanguageChangingTo,e))return!1}}):U(e,n,t)}function H(e){return e.displayName||e.name||("string"==typeof e&&e.length>0?e:"Unknown")}var K=["format"],V=["children","count","parent","i18nKey","context","tOptions","values","defaults","components","ns","i18n","t","shouldUnescape"];function F(e,n){if(!e)return!1;var t=e.props?e.props.children:e.children;return n?t.length>0:!!t}function W(e){return e?e&&e.children?e.children:e.props&&e.props.children:[]}function M(e){return Array.isArray(e)?e:[e]}function $(e,n,r,o,c,s){if(""===n)return[];var u=o.transKeepBasicHtmlNodesFor||[],l=n&&new RegExp(u.join("|")).test(n);if(!e&&!l)return[n];var f={};!function e(n){M(n).forEach((function(n){"string"!=typeof n&&(F(n)?e(W(n)):"object"!==i(n)||t.isValidElement(n)||Object.assign(f,n))}))}(e);var p=v("<0>".concat(n,"</0>")),d=a(a({},f),c);function g(e,n,r){var a=W(e),i=h(a,n.children,r);return function(e){return"[object Array]"===Object.prototype.toString.call(e)&&e.every((function(e){return t.isValidElement(e)}))}(a)&&0===i.length?a:i}function m(e,n,r,i,o){e.dummy&&(e.children=n),r.push(t.cloneElement(e,a(a({},e.props),{},{key:i}),o?void 0:n))}function h(n,c,f){var p=M(n);return M(c).reduce((function(n,c,v){var O,w,j,E,S=c.children&&c.children[0]&&c.children[0].content&&r.services.interpolator.interpolate(c.children[0].content,d,r.language);if("tag"===c.type){var N=p[parseInt(c.name,10)];!N&&1===f.length&&f[0][c.name]&&(N=f[0][c.name]),N||(N={});var k=0!==Object.keys(c.attrs).length?(w={props:c.attrs},(E=a({},j=N)).props=Object.assign(w.props,j.props),E):N,I=t.isValidElement(k),P=I&&F(c,!0)&&!c.voidElement,R=l&&"object"===i(k)&&k.dummy&&!I,C="object"===i(e)&&null!==e&&Object.hasOwnProperty.call(e,c.name);if("string"==typeof k){var T=r.services.interpolator.interpolate(k,d,r.language);n.push(T)}else if(F(k)||P){m(k,g(k,c,f),n,v)}else if(R){var A=h(p,c.children,f);n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),A))}else if(Number.isNaN(parseFloat(c.name))){if(C)m(k,g(k,c,f),n,v,c.voidElement);else if(o.transSupportBasicHtmlNodes&&u.indexOf(c.name)>-1)if(c.voidElement)n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)}));else{var L=h(p,c.children,f);n.push(t.createElement(c.name,{key:"".concat(c.name,"-").concat(v)},L))}else if(c.voidElement)n.push("<".concat(c.name," />"));else{var z=h(p,c.children,f);n.push("<".concat(c.name,">").concat(z,"</").concat(c.name,">"))}}else if("object"!==i(k)||I)1===c.children.length&&S?n.push(t.cloneElement(k,a(a({},k.props),{},{key:v}),S)):n.push(t.cloneElement(k,a(a({},k.props),{},{key:v})));else{var B=c.children[0]?S:null;B&&n.push(B)}}else if("text"===c.type){var U=o.transWrapTextNodes,D=s?(O=r.services.interpolator.interpolate(c.content,d,r.language),y.call(O,b,x)):r.services.interpolator.interpolate(c.content,d,r.language);U?n.push(t.createElement(U,{key:"".concat(c.name,"-").concat(v)},D)):n.push(D)}return n}),[])}return W(h([{dummy:!0,children:e||[]}],p,M(e||[]))[0])}var q=function(e,t){var r=n.useRef();return n.useEffect((function(){r.current=t?r.current:e}),[e,t]),r.current};function Y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.i18n,i=n.useContext(E)||{},o=i.i18n,c=i.defaultNS,s=r||o||P();if(s&&!s.reportNamespaces&&(s.reportNamespaces=new k),!s){z("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}s.options.react&&void 0!==s.options.react.wait&&z("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var p=a(a(a({},N()),s.options.react),t),d=p.useSuspense,g=p.keyPrefix,m=e||c||s.options&&s.options.defaultNS;m="string"==typeof m?[m]:m||["translation"],s.reportNamespaces.addUsedNamespaces&&s.reportNamespaces.addUsedNamespaces(m);var h=(s.isInitialized||s.initializedStoreOnce)&&m.every((function(e){return D(e,s,p)}));function v(){return s.getFixedT(null,"fallback"===p.nsMode?m:m[0],g)}var y=n.useState(v),b=u(y,2),O=b[0],x=b[1],w=m.join(),j=q(w),S=n.useRef(!0);n.useEffect((function(){var e=p.bindI18n,n=p.bindI18nStore;function t(){S.current&&x(v)}return S.current=!0,h||d||B(s,m,(function(){S.current&&x(v)})),h&&j&&j!==w&&S.current&&x(v),e&&s&&s.on(e,t),n&&s&&s.store.on(n,t),function(){S.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)}))}}),[s,w]);var I=n.useRef(!0);n.useEffect((function(){S.current&&!I.current&&x(v),I.current=!1}),[s]);var R=[O,s,h];if(R.t=O,R.i18n=s,R.ready=h,h)return R;if(!h&&!d)return R;throw new Promise((function(e){B(s,m,(function(){e()}))}))}var _=["forwardedRef"];var J=["ns","children"];function Z(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=r.i18n,i=n.useContext(E)||{},o=i.i18n,c=a||o||P();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))}var G=["initialI18nStore","initialLanguage"];e.I18nContext=E,e.I18nextProvider=function(e){var t=e.i18n,r=e.defaultNS,a=e.children,i=n.useMemo((function(){return{i18n:t,defaultNS:r}}),[t,r]);return n.createElement(E.Provider,{value:i},a)},e.Trans=function(e){var r=e.children,o=e.count,c=e.parent,u=e.i18nKey,l=e.context,f=e.tOptions,p=void 0===f?{}:f,d=e.values,g=e.defaults,m=e.components,h=e.ns,v=e.i18n,y=e.t,b=e.shouldUnescape,O=s(e,V),x=n.useContext(E)||{},w=x.i18n,j=x.defaultNS,S=v||w||P();if(!S)return z("You will need to pass in an i18next instance by using i18nextReactModule"),r;var k=y||S.t.bind(S)||function(e){return e};l&&(p.context=l);var I=a(a({},N()),S.options&&S.options.react),R=h||k.ns||j||S.options&&S.options.defaultNS;R="string"==typeof R?[R]:R||["translation"];var C=g||function e(n,r){if(!n)return"";var a="",o=M(n),c=r.transSupportBasicHtmlNodes&&r.transKeepBasicHtmlNodesFor?r.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,r);a+="<".concat(o,">").concat(p,"</").concat(o,">")}else a+="<".concat(o,"></").concat(o,">")}else if(null===n)A("Trans: the passed in value is invalid - seems you passed in a null child.");else if("object"===i(n)){var d=n.format,g=s(n,K),m=Object.keys(g);if(1===m.length){var h=d?"".concat(m[0],", ").concat(d):m[0];a+="{{".concat(h,"}}")}else A("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.",n)}else A("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}(r,I)||I.transEmptyNodeValue||u,T=I.hashTransKey,L=u||(T?T(C):C),B=d?p.interpolation:{interpolation:a(a({},p.interpolation),{},{prefix:"#$?",suffix:"?$#"})},U=a(a(a(a({},p),{},{count:o},d),B),{},{defaultValue:C,ns:R}),D=$(m||r,L?k(L,U):C,S,I,U,b),H=void 0!==c?c:I.defaultTransParent;return H?t.createElement(H,O,D):D},e.Translation=function(e){var n=e.ns,t=e.children,r=u(Y(n,s(e,J)),3),a=r[0],i=r[1],o=r[2];return t(a,{i18n:i,lng:i.language},o)},e.composeInitialProps=C,e.date=function(){return""},e.getDefaults=N,e.getI18n=P,e.getInitialProps=T,e.initReactI18next=R,e.number=function(){return""},e.plural=function(){return""},e.select=function(){return""},e.selectOrdinal=function(){return""},e.setDefaults=S,e.setI18n=I,e.time=function(){return""},e.useSSR=Z,e.useTranslation=Y,e.withSSR=function(){return function(e){function n(n){var r=n.initialI18nStore,i=n.initialLanguage,o=s(n,G);return Z(r,i),t.createElement(e,a({},o))}return n.getInitialProps=C(e),n.displayName="withI18nextSSR(".concat(H(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 o=i.forwardedRef,c=s(i,_),l=u(Y(e,a(a({},c),{},{keyPrefix:n.keyPrefix})),3),f=l[0],p=l[1],d=l[2],g=a(a({},c),{},{t:f,i18n:p,tReady:d});return n.withRef&&o?g.ref=o:!n.withRef&&o&&(g.forwardedRef=o),t.createElement(r,g)}i.displayName="withI18nextTranslation(".concat(H(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})}));
@@ -2,6 +2,14 @@ import { useState, useEffect, useContext, useRef } from 'react';
2
2
  import { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';
3
3
  import { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';
4
4
 
5
+ const usePrevious = (value, ignore) => {
6
+ const ref = useRef();
7
+ useEffect(() => {
8
+ ref.current = ignore ? ref.current : value;
9
+ }, [value, ignore]);
10
+ return ref.current;
11
+ };
12
+
5
13
  export function useTranslation(ns, props = {}) {
6
14
  // assert we have the needed i18nInstance
7
15
  const { i18n: i18nFromProps } = props;
@@ -48,6 +56,9 @@ export function useTranslation(ns, props = {}) {
48
56
  }
49
57
  const [t, setT] = useState(getT);
50
58
 
59
+ const joinedNS = namespaces.join();
60
+ const previousJoinedNS = usePrevious(joinedNS);
61
+
51
62
  const isMounted = useRef(true);
52
63
  useEffect(() => {
53
64
  const { bindI18n, bindI18nStore } = i18nOptions;
@@ -61,6 +72,10 @@ export function useTranslation(ns, props = {}) {
61
72
  });
62
73
  }
63
74
 
75
+ if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
76
+ setT(getT);
77
+ }
78
+
64
79
  function boundReset() {
65
80
  if (isMounted.current) setT(getT);
66
81
  }
@@ -76,7 +91,7 @@ export function useTranslation(ns, props = {}) {
76
91
  if (bindI18nStore && i18n)
77
92
  bindI18nStore.split(' ').forEach((e) => i18n.store.off(e, boundReset));
78
93
  };
79
- }, [i18n, namespaces.join()]); // re-run effect whenever list of namespaces changes
94
+ }, [i18n, joinedNS]); // re-run effect whenever list of namespaces changes
80
95
 
81
96
  // t is correctly initialized by useState hook. We only need to update it after i18n
82
97
  // instance was replaced (for example in the provider).
@@ -5,7 +5,7 @@ import { getDisplayName } from './utils';
5
5
  export function withTranslation(ns, options = {}) {
6
6
  return function Extend(WrappedComponent) {
7
7
  function I18nextWithTranslation({ forwardedRef, ...rest }) {
8
- const [t, i18n, ready] = useTranslation(ns, rest);
8
+ const [t, i18n, ready] = useTranslation(ns, { ...rest, keyPrefix: options.keyPrefix });
9
9
 
10
10
  const passDownProps = {
11
11
  ...rest,
package/ts4.1/index.d.ts CHANGED
@@ -264,7 +264,7 @@ export type TransProps<
264
264
  E = React.HTMLProps<HTMLDivElement>
265
265
  > = E & {
266
266
  children?: TransChild | TransChild[];
267
- components?: readonly React.ReactNode[] | { readonly [tagName: string]: React.ReactNode };
267
+ components?: readonly React.ReactElement[] | { readonly [tagName: string]: React.ReactElement };
268
268
  count?: number;
269
269
  context?: string;
270
270
  defaults?: string;