You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1066 lines
						
					
					
						
							36 KiB
						
					
					
				
			
		
		
	
	
							1066 lines
						
					
					
						
							36 KiB
						
					
					
				| (function (global, factory) {
 | |
|   typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
 | |
|   typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
 | |
|   (global = global || self, factory(global.ReactI18next = {}, global.React));
 | |
| }(this, function (exports, react) { 'use strict';
 | |
| 
 | |
|   function ownKeys(object, enumerableOnly) {
 | |
|     var keys = Object.keys(object);
 | |
| 
 | |
|     if (Object.getOwnPropertySymbols) {
 | |
|       var symbols = Object.getOwnPropertySymbols(object);
 | |
| 
 | |
|       if (enumerableOnly) {
 | |
|         symbols = symbols.filter(function (sym) {
 | |
|           return Object.getOwnPropertyDescriptor(object, sym).enumerable;
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       keys.push.apply(keys, symbols);
 | |
|     }
 | |
| 
 | |
|     return keys;
 | |
|   }
 | |
| 
 | |
|   function _objectSpread2(target) {
 | |
|     for (var i = 1; i < arguments.length; i++) {
 | |
|       var source = arguments[i] != null ? arguments[i] : {};
 | |
| 
 | |
|       if (i % 2) {
 | |
|         ownKeys(Object(source), true).forEach(function (key) {
 | |
|           _defineProperty(target, key, source[key]);
 | |
|         });
 | |
|       } else if (Object.getOwnPropertyDescriptors) {
 | |
|         Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
 | |
|       } else {
 | |
|         ownKeys(Object(source)).forEach(function (key) {
 | |
|           Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
 | |
|         });
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return target;
 | |
|   }
 | |
| 
 | |
|   function _typeof(obj) {
 | |
|     "@babel/helpers - typeof";
 | |
| 
 | |
|     if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
 | |
|       _typeof = function (obj) {
 | |
|         return typeof obj;
 | |
|       };
 | |
|     } else {
 | |
|       _typeof = function (obj) {
 | |
|         return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     return _typeof(obj);
 | |
|   }
 | |
| 
 | |
|   function _classCallCheck(instance, Constructor) {
 | |
|     if (!(instance instanceof Constructor)) {
 | |
|       throw new TypeError("Cannot call a class as a function");
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function _defineProperties(target, props) {
 | |
|     for (var i = 0; i < props.length; i++) {
 | |
|       var descriptor = props[i];
 | |
|       descriptor.enumerable = descriptor.enumerable || false;
 | |
|       descriptor.configurable = true;
 | |
|       if ("value" in descriptor) descriptor.writable = true;
 | |
|       Object.defineProperty(target, descriptor.key, descriptor);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function _createClass(Constructor, protoProps, staticProps) {
 | |
|     if (protoProps) _defineProperties(Constructor.prototype, protoProps);
 | |
|     if (staticProps) _defineProperties(Constructor, staticProps);
 | |
|     return Constructor;
 | |
|   }
 | |
| 
 | |
|   function _defineProperty(obj, key, value) {
 | |
|     if (key in obj) {
 | |
|       Object.defineProperty(obj, key, {
 | |
|         value: value,
 | |
|         enumerable: true,
 | |
|         configurable: true,
 | |
|         writable: true
 | |
|       });
 | |
|     } else {
 | |
|       obj[key] = value;
 | |
|     }
 | |
| 
 | |
|     return obj;
 | |
|   }
 | |
| 
 | |
|   function _objectWithoutPropertiesLoose(source, excluded) {
 | |
|     if (source == null) return {};
 | |
|     var target = {};
 | |
|     var sourceKeys = Object.keys(source);
 | |
|     var key, i;
 | |
| 
 | |
|     for (i = 0; i < sourceKeys.length; i++) {
 | |
|       key = sourceKeys[i];
 | |
|       if (excluded.indexOf(key) >= 0) continue;
 | |
|       target[key] = source[key];
 | |
|     }
 | |
| 
 | |
|     return target;
 | |
|   }
 | |
| 
 | |
|   function _objectWithoutProperties(source, excluded) {
 | |
|     if (source == null) return {};
 | |
| 
 | |
|     var target = _objectWithoutPropertiesLoose(source, excluded);
 | |
| 
 | |
|     var key, i;
 | |
| 
 | |
|     if (Object.getOwnPropertySymbols) {
 | |
|       var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
 | |
| 
 | |
|       for (i = 0; i < sourceSymbolKeys.length; i++) {
 | |
|         key = sourceSymbolKeys[i];
 | |
|         if (excluded.indexOf(key) >= 0) continue;
 | |
|         if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
 | |
|         target[key] = source[key];
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return target;
 | |
|   }
 | |
| 
 | |
|   function _slicedToArray(arr, i) {
 | |
|     return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
 | |
|   }
 | |
| 
 | |
|   function _arrayWithHoles(arr) {
 | |
|     if (Array.isArray(arr)) return arr;
 | |
|   }
 | |
| 
 | |
|   function _iterableToArrayLimit(arr, i) {
 | |
|     var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
 | |
| 
 | |
|     if (_i == null) return;
 | |
|     var _arr = [];
 | |
|     var _n = true;
 | |
|     var _d = false;
 | |
| 
 | |
|     var _s, _e;
 | |
| 
 | |
|     try {
 | |
|       for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
 | |
|         _arr.push(_s.value);
 | |
| 
 | |
|         if (i && _arr.length === i) break;
 | |
|       }
 | |
|     } catch (err) {
 | |
|       _d = true;
 | |
|       _e = err;
 | |
|     } finally {
 | |
|       try {
 | |
|         if (!_n && _i["return"] != null) _i["return"]();
 | |
|       } finally {
 | |
|         if (_d) throw _e;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return _arr;
 | |
|   }
 | |
| 
 | |
|   function _unsupportedIterableToArray(o, minLen) {
 | |
|     if (!o) return;
 | |
|     if (typeof o === "string") return _arrayLikeToArray(o, minLen);
 | |
|     var n = Object.prototype.toString.call(o).slice(8, -1);
 | |
|     if (n === "Object" && o.constructor) n = o.constructor.name;
 | |
|     if (n === "Map" || n === "Set") return Array.from(o);
 | |
|     if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
 | |
|   }
 | |
| 
 | |
|   function _arrayLikeToArray(arr, len) {
 | |
|     if (len == null || len > arr.length) len = arr.length;
 | |
| 
 | |
|     for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
 | |
| 
 | |
|     return arr2;
 | |
|   }
 | |
| 
 | |
|   function _nonIterableRest() {
 | |
|     throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
 | |
|   }
 | |
| 
 | |
|   var voidElements = {
 | |
|     "area": true,
 | |
|     "base": true,
 | |
|     "br": true,
 | |
|     "col": true,
 | |
|     "embed": true,
 | |
|     "hr": true,
 | |
|     "img": true,
 | |
|     "input": true,
 | |
|     "link": true,
 | |
|     "meta": true,
 | |
|     "param": true,
 | |
|     "source": true,
 | |
|     "track": true,
 | |
|     "wbr": true
 | |
|   };
 | |
| 
 | |
|   var t = /\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;
 | |
| 
 | |
|   function n(n) {
 | |
|     var r = {
 | |
|       type: "tag",
 | |
|       name: "",
 | |
|       voidElement: !1,
 | |
|       attrs: {},
 | |
|       children: []
 | |
|     },
 | |
|         i = n.match(/<\/?([^\s]+?)[/\s>]/);
 | |
| 
 | |
|     if (i && (r.name = i[1], (voidElements[i[1]] || "/" === n.charAt(n.length - 2)) && (r.voidElement = !0), r.name.startsWith("!--"))) {
 | |
|       var s = n.indexOf("--\x3e");
 | |
|       return {
 | |
|         type: "comment",
 | |
|         comment: -1 !== s ? n.slice(4, s) : ""
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     for (var a = new RegExp(t), c = null; null !== (c = a.exec(n));) {
 | |
|       if (c[0].trim()) if (c[1]) {
 | |
|         var o = c[1].trim(),
 | |
|             l = [o, ""];
 | |
|         o.indexOf("=") > -1 && (l = o.split("=")), r.attrs[l[0]] = l[1], a.lastIndex--;
 | |
|       } else c[2] && (r.attrs[c[2]] = c[3].trim().substring(1, c[3].length - 1));
 | |
|     }
 | |
| 
 | |
|     return r;
 | |
|   }
 | |
| 
 | |
|   var r = /<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,
 | |
|       i = /^\s*$/,
 | |
|       s = Object.create(null);
 | |
| 
 | |
|   function a(e, t) {
 | |
|     switch (t.type) {
 | |
|       case "text":
 | |
|         return e + t.content;
 | |
| 
 | |
|       case "tag":
 | |
|         return e += "<" + t.name + (t.attrs ? function (e) {
 | |
|           var t = [];
 | |
| 
 | |
|           for (var n in e) {
 | |
|             t.push(n + '="' + e[n] + '"');
 | |
|           }
 | |
| 
 | |
|           return t.length ? " " + t.join(" ") : "";
 | |
|         }(t.attrs) : "") + (t.voidElement ? "/>" : ">"), t.voidElement ? e : e + t.children.reduce(a, "") + "</" + t.name + ">";
 | |
| 
 | |
|       case "comment":
 | |
|         return e + "\x3c!--" + t.comment + "--\x3e";
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   var c = {
 | |
|     parse: function parse(e, t) {
 | |
|       t || (t = {}), t.components || (t.components = s);
 | |
|       var a,
 | |
|           c = [],
 | |
|           o = [],
 | |
|           l = -1,
 | |
|           m = !1;
 | |
| 
 | |
|       if (0 !== e.indexOf("<")) {
 | |
|         var u = e.indexOf("<");
 | |
|         c.push({
 | |
|           type: "text",
 | |
|           content: -1 === u ? e : e.substring(0, u)
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       return e.replace(r, function (r, s) {
 | |
|         if (m) {
 | |
|           if (r !== "</" + a.name + ">") return;
 | |
|           m = !1;
 | |
|         }
 | |
| 
 | |
|         var u,
 | |
|             f = "/" !== r.charAt(1),
 | |
|             h = r.startsWith("\x3c!--"),
 | |
|             p = s + r.length,
 | |
|             d = e.charAt(p);
 | |
| 
 | |
|         if (h) {
 | |
|           var v = n(r);
 | |
|           return l < 0 ? (c.push(v), c) : ((u = o[l]).children.push(v), c);
 | |
|         }
 | |
| 
 | |
|         if (f && (l++, "tag" === (a = n(r)).type && t.components[a.name] && (a.type = "component", m = !0), a.voidElement || m || !d || "<" === d || a.children.push({
 | |
|           type: "text",
 | |
|           content: e.slice(p, e.indexOf("<", p))
 | |
|         }), 0 === l && c.push(a), (u = o[l - 1]) && u.children.push(a), o[l] = a), (!f || a.voidElement) && (l > -1 && (a.voidElement || a.name === r.slice(2, -1)) && (l--, a = -1 === l ? c : o[l]), !m && "<" !== d && d)) {
 | |
|           u = -1 === l ? c : o[l].children;
 | |
|           var x = e.indexOf("<", p),
 | |
|               g = e.slice(p, -1 === x ? void 0 : x);
 | |
|           i.test(g) && (g = " "), (x > -1 && l + u.length >= 0 || " " !== g) && u.push({
 | |
|             type: "text",
 | |
|             content: g
 | |
|           });
 | |
|         }
 | |
|       }), c;
 | |
|     },
 | |
|     stringify: function stringify(e) {
 | |
|       return e.reduce(function (e, t) {
 | |
|         return e + a("", t);
 | |
|       }, "");
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;
 | |
|   var htmlEntities = {
 | |
|     '&': '&',
 | |
|     '&': '&',
 | |
|     '<': '<',
 | |
|     '<': '<',
 | |
|     '>': '>',
 | |
|     '>': '>',
 | |
|     ''': "'",
 | |
|     ''': "'",
 | |
|     '"': '"',
 | |
|     '"': '"',
 | |
|     ' ': ' ',
 | |
|     ' ': ' ',
 | |
|     '©': '©',
 | |
|     '©': '©',
 | |
|     '®': '®',
 | |
|     '®': '®',
 | |
|     '…': '…',
 | |
|     '…': '…',
 | |
|     '/': '/',
 | |
|     '/': '/'
 | |
|   };
 | |
| 
 | |
|   var unescapeHtmlEntity = function unescapeHtmlEntity(m) {
 | |
|     return htmlEntities[m];
 | |
|   };
 | |
| 
 | |
|   var unescape = function unescape(text) {
 | |
|     return text.replace(matchHtmlEntity, unescapeHtmlEntity);
 | |
|   };
 | |
| 
 | |
|   var defaultOptions = {
 | |
|     bindI18n: 'languageChanged',
 | |
|     bindI18nStore: '',
 | |
|     transEmptyNodeValue: '',
 | |
|     transSupportBasicHtmlNodes: true,
 | |
|     transWrapTextNodes: '',
 | |
|     transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],
 | |
|     useSuspense: true,
 | |
|     unescape: unescape
 | |
|   };
 | |
|   var i18nInstance;
 | |
|   var I18nContext = react.createContext();
 | |
|   function setDefaults() {
 | |
|     var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
 | |
|     defaultOptions = _objectSpread2(_objectSpread2({}, defaultOptions), options);
 | |
|   }
 | |
|   function getDefaults() {
 | |
|     return defaultOptions;
 | |
|   }
 | |
|   var ReportNamespaces = function () {
 | |
|     function ReportNamespaces() {
 | |
|       _classCallCheck(this, ReportNamespaces);
 | |
| 
 | |
|       this.usedNamespaces = {};
 | |
|     }
 | |
| 
 | |
|     _createClass(ReportNamespaces, [{
 | |
|       key: "addUsedNamespaces",
 | |
|       value: function addUsedNamespaces(namespaces) {
 | |
|         var _this = this;
 | |
| 
 | |
|         namespaces.forEach(function (ns) {
 | |
|           if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;
 | |
|         });
 | |
|       }
 | |
|     }, {
 | |
|       key: "getUsedNamespaces",
 | |
|       value: function getUsedNamespaces() {
 | |
|         return Object.keys(this.usedNamespaces);
 | |
|       }
 | |
|     }]);
 | |
| 
 | |
|     return ReportNamespaces;
 | |
|   }();
 | |
|   function setI18n(instance) {
 | |
|     i18nInstance = instance;
 | |
|   }
 | |
|   function getI18n() {
 | |
|     return i18nInstance;
 | |
|   }
 | |
|   var initReactI18next = {
 | |
|     type: '3rdParty',
 | |
|     init: function init(instance) {
 | |
|       setDefaults(instance.options.react);
 | |
|       setI18n(instance);
 | |
|     }
 | |
|   };
 | |
|   function composeInitialProps(ForComponent) {
 | |
|     return function (ctx) {
 | |
|       return new Promise(function (resolve) {
 | |
|         var i18nInitialProps = getInitialProps();
 | |
| 
 | |
|         if (ForComponent.getInitialProps) {
 | |
|           ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {
 | |
|             resolve(_objectSpread2(_objectSpread2({}, componentsInitialProps), i18nInitialProps));
 | |
|           });
 | |
|         } else {
 | |
|           resolve(i18nInitialProps);
 | |
|         }
 | |
|       });
 | |
|     };
 | |
|   }
 | |
|   function getInitialProps() {
 | |
|     var i18n = getI18n();
 | |
|     var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];
 | |
|     var ret = {};
 | |
|     var initialI18nStore = {};
 | |
|     i18n.languages.forEach(function (l) {
 | |
|       initialI18nStore[l] = {};
 | |
|       namespaces.forEach(function (ns) {
 | |
|         initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};
 | |
|       });
 | |
|     });
 | |
|     ret.initialI18nStore = initialI18nStore;
 | |
|     ret.initialLanguage = i18n.language;
 | |
|     return ret;
 | |
|   }
 | |
| 
 | |
|   function warn() {
 | |
|     if (console && console.warn) {
 | |
|       var _console;
 | |
| 
 | |
|       for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
 | |
|         args[_key] = arguments[_key];
 | |
|       }
 | |
| 
 | |
|       if (typeof args[0] === 'string') args[0] = "react-i18next:: ".concat(args[0]);
 | |
| 
 | |
|       (_console = console).warn.apply(_console, args);
 | |
|     }
 | |
|   }
 | |
|   var alreadyWarned = {};
 | |
|   function warnOnce() {
 | |
|     for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
 | |
|       args[_key2] = arguments[_key2];
 | |
|     }
 | |
| 
 | |
|     if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;
 | |
|     if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();
 | |
|     warn.apply(void 0, args);
 | |
|   }
 | |
|   function loadNamespaces(i18n, ns, cb) {
 | |
|     i18n.loadNamespaces(ns, function () {
 | |
|       if (i18n.isInitialized) {
 | |
|         cb();
 | |
|       } else {
 | |
|         var initialized = function initialized() {
 | |
|           setTimeout(function () {
 | |
|             i18n.off('initialized', initialized);
 | |
|           }, 0);
 | |
|           cb();
 | |
|         };
 | |
| 
 | |
|         i18n.on('initialized', initialized);
 | |
|       }
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   function oldI18nextHasLoadedNamespace(ns, i18n) {
 | |
|     var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
 | |
|     var lng = i18n.languages[0];
 | |
|     var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;
 | |
|     var lastLng = i18n.languages[i18n.languages.length - 1];
 | |
|     if (lng.toLowerCase() === 'cimode') return true;
 | |
| 
 | |
|     var loadNotPending = function loadNotPending(l, n) {
 | |
|       var loadState = i18n.services.backendConnector.state["".concat(l, "|").concat(n)];
 | |
|       return loadState === -1 || loadState === 2;
 | |
|     };
 | |
| 
 | |
|     if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;
 | |
|     if (i18n.hasResourceBundle(lng, ns)) return true;
 | |
|     if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;
 | |
|     if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   function hasLoadedNamespace(ns, i18n) {
 | |
|     var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
 | |
| 
 | |
|     if (!i18n.languages || !i18n.languages.length) {
 | |
|       warnOnce('i18n.languages were undefined or empty', i18n.languages);
 | |
|       return true;
 | |
|     }
 | |
| 
 | |
|     var isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;
 | |
| 
 | |
|     if (!isNewerI18next) {
 | |
|       return oldI18nextHasLoadedNamespace(ns, i18n, options);
 | |
|     }
 | |
| 
 | |
|     return i18n.hasLoadedNamespace(ns, {
 | |
|       precheck: function precheck(i18nInstance, loadNotPending) {
 | |
|         if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
 | |
|       }
 | |
|     });
 | |
|   }
 | |
|   function getDisplayName(Component) {
 | |
|     return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');
 | |
|   }
 | |
| 
 | |
|   var _excluded = ["format"],
 | |
|       _excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"];
 | |
| 
 | |
|   function hasChildren(node, checkLength) {
 | |
|     if (!node) return false;
 | |
|     var base = node.props ? node.props.children : node.children;
 | |
|     if (checkLength) return base.length > 0;
 | |
|     return !!base;
 | |
|   }
 | |
| 
 | |
|   function getChildren(node) {
 | |
|     if (!node) return [];
 | |
|     return node.props ? node.props.children : node.children;
 | |
|   }
 | |
| 
 | |
|   function hasValidReactChildren(children) {
 | |
|     if (Object.prototype.toString.call(children) !== '[object Array]') return false;
 | |
|     return children.every(function (child) {
 | |
|       return react.isValidElement(child);
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   function getAsArray(data) {
 | |
|     return Array.isArray(data) ? data : [data];
 | |
|   }
 | |
| 
 | |
|   function mergeProps(source, target) {
 | |
|     var newTarget = _objectSpread2({}, target);
 | |
| 
 | |
|     newTarget.props = Object.assign(source.props, target.props);
 | |
|     return newTarget;
 | |
|   }
 | |
| 
 | |
|   function nodesToString(children, i18nOptions) {
 | |
|     if (!children) return '';
 | |
|     var stringNode = '';
 | |
|     var childrenArray = getAsArray(children);
 | |
|     var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];
 | |
|     childrenArray.forEach(function (child, childIndex) {
 | |
|       if (typeof child === 'string') {
 | |
|         stringNode += "".concat(child);
 | |
|       } else if (react.isValidElement(child)) {
 | |
|         var childPropsCount = Object.keys(child.props).length;
 | |
|         var shouldKeepChild = keepArray.indexOf(child.type) > -1;
 | |
|         var childChildren = child.props.children;
 | |
| 
 | |
|         if (!childChildren && shouldKeepChild && childPropsCount === 0) {
 | |
|           stringNode += "<".concat(child.type, "/>");
 | |
|         } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {
 | |
|           stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
 | |
|         } else if (child.props.i18nIsDynamicList) {
 | |
|           stringNode += "<".concat(childIndex, "></").concat(childIndex, ">");
 | |
|         } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {
 | |
|           stringNode += "<".concat(child.type, ">").concat(childChildren, "</").concat(child.type, ">");
 | |
|         } else {
 | |
|           var content = nodesToString(childChildren, i18nOptions);
 | |
|           stringNode += "<".concat(childIndex, ">").concat(content, "</").concat(childIndex, ">");
 | |
|         }
 | |
|       } else if (child === null) {
 | |
|         warn("Trans: the passed in value is invalid - seems you passed in a null child.");
 | |
|       } else if (_typeof(child) === 'object') {
 | |
|         var format = child.format,
 | |
|             clone = _objectWithoutProperties(child, _excluded);
 | |
| 
 | |
|         var keys = Object.keys(clone);
 | |
| 
 | |
|         if (keys.length === 1) {
 | |
|           var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0];
 | |
|           stringNode += "{{".concat(value, "}}");
 | |
|         } else {
 | |
|           warn("react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.", child);
 | |
|         }
 | |
|       } else {
 | |
|         warn("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}}.", child);
 | |
|       }
 | |
|     });
 | |
|     return stringNode;
 | |
|   }
 | |
| 
 | |
|   function renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {
 | |
|     if (targetString === '') return [];
 | |
|     var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];
 | |
|     var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);
 | |
|     if (!children && !emptyChildrenButNeedsHandling) return [targetString];
 | |
|     var data = {};
 | |
| 
 | |
|     function getData(childs) {
 | |
|       var childrenArray = getAsArray(childs);
 | |
|       childrenArray.forEach(function (child) {
 | |
|         if (typeof child === 'string') return;
 | |
|         if (hasChildren(child)) getData(getChildren(child));else if (_typeof(child) === 'object' && !react.isValidElement(child)) Object.assign(data, child);
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     getData(children);
 | |
|     var ast = c.parse("<0>".concat(targetString, "</0>"));
 | |
| 
 | |
|     var opts = _objectSpread2(_objectSpread2({}, data), combinedTOpts);
 | |
| 
 | |
|     function renderInner(child, node, rootReactNode) {
 | |
|       var childs = getChildren(child);
 | |
|       var mappedChildren = mapAST(childs, node.children, rootReactNode);
 | |
|       return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;
 | |
|     }
 | |
| 
 | |
|     function pushTranslatedJSX(child, inner, mem, i, isVoid) {
 | |
|       if (child.dummy) child.children = inner;
 | |
|       mem.push(react.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
 | |
|         key: i
 | |
|       }), isVoid ? undefined : inner));
 | |
|     }
 | |
| 
 | |
|     function mapAST(reactNode, astNode, rootReactNode) {
 | |
|       var reactNodes = getAsArray(reactNode);
 | |
|       var astNodes = getAsArray(astNode);
 | |
|       return astNodes.reduce(function (mem, node, i) {
 | |
|         var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);
 | |
| 
 | |
|         if (node.type === 'tag') {
 | |
|           var tmp = reactNodes[parseInt(node.name, 10)];
 | |
|           if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];
 | |
|           if (!tmp) tmp = {};
 | |
|           var child = Object.keys(node.attrs).length !== 0 ? mergeProps({
 | |
|             props: node.attrs
 | |
|           }, tmp) : tmp;
 | |
|           var isElement = react.isValidElement(child);
 | |
|           var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;
 | |
|           var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;
 | |
|           var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);
 | |
| 
 | |
|           if (typeof child === 'string') {
 | |
|             var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);
 | |
|             mem.push(value);
 | |
|           } else if (hasChildren(child) || isValidTranslationWithChildren) {
 | |
|               var inner = renderInner(child, node, rootReactNode);
 | |
|               pushTranslatedJSX(child, inner, mem, i);
 | |
|             } else if (isEmptyTransWithHTML) {
 | |
|             var _inner = mapAST(reactNodes, node.children, rootReactNode);
 | |
| 
 | |
|             mem.push(react.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
 | |
|               key: i
 | |
|             }), _inner));
 | |
|           } else if (Number.isNaN(parseFloat(node.name))) {
 | |
|             if (isKnownComponent) {
 | |
|               var _inner2 = renderInner(child, node, rootReactNode);
 | |
| 
 | |
|               pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);
 | |
|             } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {
 | |
|               if (node.voidElement) {
 | |
|                 mem.push(react.createElement(node.name, {
 | |
|                   key: "".concat(node.name, "-").concat(i)
 | |
|                 }));
 | |
|               } else {
 | |
|                 var _inner3 = mapAST(reactNodes, node.children, rootReactNode);
 | |
| 
 | |
|                 mem.push(react.createElement(node.name, {
 | |
|                   key: "".concat(node.name, "-").concat(i)
 | |
|                 }, _inner3));
 | |
|               }
 | |
|             } else if (node.voidElement) {
 | |
|               mem.push("<".concat(node.name, " />"));
 | |
|             } else {
 | |
|               var _inner4 = mapAST(reactNodes, node.children, rootReactNode);
 | |
| 
 | |
|               mem.push("<".concat(node.name, ">").concat(_inner4, "</").concat(node.name, ">"));
 | |
|             }
 | |
|           } else if (_typeof(child) === 'object' && !isElement) {
 | |
|             var content = node.children[0] ? translationContent : null;
 | |
|             if (content) mem.push(content);
 | |
|           } else if (node.children.length === 1 && translationContent) {
 | |
|             mem.push(react.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
 | |
|               key: i
 | |
|             }), translationContent));
 | |
|           } else {
 | |
|             mem.push(react.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
 | |
|               key: i
 | |
|             })));
 | |
|           }
 | |
|         } else if (node.type === 'text') {
 | |
|           var wrapTextNodes = i18nOptions.transWrapTextNodes;
 | |
| 
 | |
|           var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);
 | |
| 
 | |
|           if (wrapTextNodes) {
 | |
|             mem.push(react.createElement(wrapTextNodes, {
 | |
|               key: "".concat(node.name, "-").concat(i)
 | |
|             }, _content));
 | |
|           } else {
 | |
|             mem.push(_content);
 | |
|           }
 | |
|         }
 | |
| 
 | |
|         return mem;
 | |
|       }, []);
 | |
|     }
 | |
| 
 | |
|     var result = mapAST([{
 | |
|       dummy: true,
 | |
|       children: children || []
 | |
|     }], ast, getAsArray(children || []));
 | |
|     return getChildren(result[0]);
 | |
|   }
 | |
| 
 | |
|   function Trans(_ref) {
 | |
|     var children = _ref.children,
 | |
|         count = _ref.count,
 | |
|         parent = _ref.parent,
 | |
|         i18nKey = _ref.i18nKey,
 | |
|         context = _ref.context,
 | |
|         _ref$tOptions = _ref.tOptions,
 | |
|         tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,
 | |
|         values = _ref.values,
 | |
|         defaults = _ref.defaults,
 | |
|         components = _ref.components,
 | |
|         ns = _ref.ns,
 | |
|         i18nFromProps = _ref.i18n,
 | |
|         tFromProps = _ref.t,
 | |
|         shouldUnescape = _ref.shouldUnescape,
 | |
|         additionalProps = _objectWithoutProperties(_ref, _excluded2);
 | |
| 
 | |
|     var _ref2 = react.useContext(I18nContext) || {},
 | |
|         i18nFromContext = _ref2.i18n,
 | |
|         defaultNSFromContext = _ref2.defaultNS;
 | |
| 
 | |
|     var i18n = i18nFromProps || i18nFromContext || getI18n();
 | |
| 
 | |
|     if (!i18n) {
 | |
|       warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');
 | |
|       return children;
 | |
|     }
 | |
| 
 | |
|     var t = tFromProps || i18n.t.bind(i18n) || function (k) {
 | |
|       return k;
 | |
|     };
 | |
| 
 | |
|     if (context) tOptions.context = context;
 | |
| 
 | |
|     var reactI18nextOptions = _objectSpread2(_objectSpread2({}, getDefaults()), i18n.options && i18n.options.react);
 | |
| 
 | |
|     var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
 | |
|     namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
 | |
|     var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;
 | |
|     var hashTransKey = reactI18nextOptions.hashTransKey;
 | |
|     var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);
 | |
|     var interpolationOverride = values ? tOptions.interpolation : {
 | |
|       interpolation: _objectSpread2(_objectSpread2({}, tOptions.interpolation), {}, {
 | |
|         prefix: '#$?',
 | |
|         suffix: '?$#'
 | |
|       })
 | |
|     };
 | |
| 
 | |
|     var combinedTOpts = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, tOptions), {}, {
 | |
|       count: count
 | |
|     }, values), interpolationOverride), {}, {
 | |
|       defaultValue: defaultValue,
 | |
|       ns: namespaces
 | |
|     });
 | |
| 
 | |
|     var translation = key ? t(key, combinedTOpts) : defaultValue;
 | |
|     var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);
 | |
|     var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;
 | |
|     return useAsParent ? react.createElement(useAsParent, additionalProps, content) : content;
 | |
|   }
 | |
| 
 | |
|   var usePrevious = function usePrevious(value, ignore) {
 | |
|     var ref = react.useRef();
 | |
|     react.useEffect(function () {
 | |
|       ref.current = ignore ? ref.current : value;
 | |
|     }, [value, ignore]);
 | |
|     return ref.current;
 | |
|   };
 | |
| 
 | |
|   function useTranslation(ns) {
 | |
|     var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 | |
|     var i18nFromProps = props.i18n;
 | |
| 
 | |
|     var _ref = react.useContext(I18nContext) || {},
 | |
|         i18nFromContext = _ref.i18n,
 | |
|         defaultNSFromContext = _ref.defaultNS;
 | |
| 
 | |
|     var i18n = i18nFromProps || i18nFromContext || getI18n();
 | |
|     if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();
 | |
| 
 | |
|     if (!i18n) {
 | |
|       warnOnce('You will need to pass in an i18next instance by using initReactI18next');
 | |
| 
 | |
|       var notReadyT = function notReadyT(k) {
 | |
|         return Array.isArray(k) ? k[k.length - 1] : k;
 | |
|       };
 | |
| 
 | |
|       var retNotReady = [notReadyT, {}, false];
 | |
|       retNotReady.t = notReadyT;
 | |
|       retNotReady.i18n = {};
 | |
|       retNotReady.ready = false;
 | |
|       return retNotReady;
 | |
|     }
 | |
| 
 | |
|     if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');
 | |
| 
 | |
|     var i18nOptions = _objectSpread2(_objectSpread2(_objectSpread2({}, getDefaults()), i18n.options.react), props);
 | |
| 
 | |
|     var useSuspense = i18nOptions.useSuspense,
 | |
|         keyPrefix = i18nOptions.keyPrefix;
 | |
|     var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;
 | |
|     namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];
 | |
|     if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);
 | |
|     var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {
 | |
|       return hasLoadedNamespace(n, i18n, i18nOptions);
 | |
|     });
 | |
| 
 | |
|     function getT() {
 | |
|       return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);
 | |
|     }
 | |
| 
 | |
|     var _useState = react.useState(getT),
 | |
|         _useState2 = _slicedToArray(_useState, 2),
 | |
|         t = _useState2[0],
 | |
|         setT = _useState2[1];
 | |
| 
 | |
|     var joinedNS = namespaces.join();
 | |
|     var previousJoinedNS = usePrevious(joinedNS);
 | |
|     var isMounted = react.useRef(true);
 | |
|     react.useEffect(function () {
 | |
|       var bindI18n = i18nOptions.bindI18n,
 | |
|           bindI18nStore = i18nOptions.bindI18nStore;
 | |
|       isMounted.current = true;
 | |
| 
 | |
|       if (!ready && !useSuspense) {
 | |
|         loadNamespaces(i18n, namespaces, function () {
 | |
|           if (isMounted.current) setT(getT);
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {
 | |
|         setT(getT);
 | |
|       }
 | |
| 
 | |
|       function boundReset() {
 | |
|         if (isMounted.current) setT(getT);
 | |
|       }
 | |
| 
 | |
|       if (bindI18n && i18n) i18n.on(bindI18n, boundReset);
 | |
|       if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);
 | |
|       return function () {
 | |
|         isMounted.current = false;
 | |
|         if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {
 | |
|           return i18n.off(e, boundReset);
 | |
|         });
 | |
|         if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {
 | |
|           return i18n.store.off(e, boundReset);
 | |
|         });
 | |
|       };
 | |
|     }, [i18n, joinedNS]);
 | |
|     var isInitial = react.useRef(true);
 | |
|     react.useEffect(function () {
 | |
|       if (isMounted.current && !isInitial.current) {
 | |
|         setT(getT);
 | |
|       }
 | |
| 
 | |
|       isInitial.current = false;
 | |
|     }, [i18n, keyPrefix]);
 | |
|     var ret = [t, i18n, ready];
 | |
|     ret.t = t;
 | |
|     ret.i18n = i18n;
 | |
|     ret.ready = ready;
 | |
|     if (ready) return ret;
 | |
|     if (!ready && !useSuspense) return ret;
 | |
|     throw new Promise(function (resolve) {
 | |
|       loadNamespaces(i18n, namespaces, function () {
 | |
|         resolve();
 | |
|       });
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   var _excluded$1 = ["forwardedRef"];
 | |
|   function withTranslation(ns) {
 | |
|     var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
 | |
|     return function Extend(WrappedComponent) {
 | |
|       function I18nextWithTranslation(_ref) {
 | |
|         var forwardedRef = _ref.forwardedRef,
 | |
|             rest = _objectWithoutProperties(_ref, _excluded$1);
 | |
| 
 | |
|         var _useTranslation = useTranslation(ns, _objectSpread2(_objectSpread2({}, rest), {}, {
 | |
|           keyPrefix: options.keyPrefix
 | |
|         })),
 | |
|             _useTranslation2 = _slicedToArray(_useTranslation, 3),
 | |
|             t = _useTranslation2[0],
 | |
|             i18n = _useTranslation2[1],
 | |
|             ready = _useTranslation2[2];
 | |
| 
 | |
|         var passDownProps = _objectSpread2(_objectSpread2({}, rest), {}, {
 | |
|           t: t,
 | |
|           i18n: i18n,
 | |
|           tReady: ready
 | |
|         });
 | |
| 
 | |
|         if (options.withRef && forwardedRef) {
 | |
|           passDownProps.ref = forwardedRef;
 | |
|         } else if (!options.withRef && forwardedRef) {
 | |
|           passDownProps.forwardedRef = forwardedRef;
 | |
|         }
 | |
| 
 | |
|         return react.createElement(WrappedComponent, passDownProps);
 | |
|       }
 | |
| 
 | |
|       I18nextWithTranslation.displayName = "withI18nextTranslation(".concat(getDisplayName(WrappedComponent), ")");
 | |
|       I18nextWithTranslation.WrappedComponent = WrappedComponent;
 | |
| 
 | |
|       var forwardRef = function forwardRef(props, ref) {
 | |
|         return react.createElement(I18nextWithTranslation, Object.assign({}, props, {
 | |
|           forwardedRef: ref
 | |
|         }));
 | |
|       };
 | |
| 
 | |
|       return options.withRef ? react.forwardRef(forwardRef) : I18nextWithTranslation;
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   var _excluded$2 = ["ns", "children"];
 | |
|   function Translation(props) {
 | |
|     var ns = props.ns,
 | |
|         children = props.children,
 | |
|         options = _objectWithoutProperties(props, _excluded$2);
 | |
| 
 | |
|     var _useTranslation = useTranslation(ns, options),
 | |
|         _useTranslation2 = _slicedToArray(_useTranslation, 3),
 | |
|         t = _useTranslation2[0],
 | |
|         i18n = _useTranslation2[1],
 | |
|         ready = _useTranslation2[2];
 | |
| 
 | |
|     return children(t, {
 | |
|       i18n: i18n,
 | |
|       lng: i18n.language
 | |
|     }, ready);
 | |
|   }
 | |
| 
 | |
|   function I18nextProvider(_ref) {
 | |
|     var i18n = _ref.i18n,
 | |
|         defaultNS = _ref.defaultNS,
 | |
|         children = _ref.children;
 | |
|     var value = react.useMemo(function () {
 | |
|       return {
 | |
|         i18n: i18n,
 | |
|         defaultNS: defaultNS
 | |
|       };
 | |
|     }, [i18n, defaultNS]);
 | |
|     return react.createElement(I18nContext.Provider, {
 | |
|       value: value
 | |
|     }, children);
 | |
|   }
 | |
| 
 | |
|   function useSSR(initialI18nStore, initialLanguage) {
 | |
|     var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
 | |
|     var i18nFromProps = props.i18n;
 | |
| 
 | |
|     var _ref = react.useContext(I18nContext) || {},
 | |
|         i18nFromContext = _ref.i18n;
 | |
| 
 | |
|     var i18n = i18nFromProps || i18nFromContext || getI18n();
 | |
|     if (i18n.options && i18n.options.isClone) return;
 | |
| 
 | |
|     if (initialI18nStore && !i18n.initializedStoreOnce) {
 | |
|       i18n.services.resourceStore.data = initialI18nStore;
 | |
|       i18n.options.ns = Object.values(initialI18nStore).reduce(function (mem, lngResources) {
 | |
|         Object.keys(lngResources).forEach(function (ns) {
 | |
|           if (mem.indexOf(ns) < 0) mem.push(ns);
 | |
|         });
 | |
|         return mem;
 | |
|       }, i18n.options.ns);
 | |
|       i18n.initializedStoreOnce = true;
 | |
|       i18n.isInitialized = true;
 | |
|     }
 | |
| 
 | |
|     if (initialLanguage && !i18n.initializedLanguageOnce) {
 | |
|       i18n.changeLanguage(initialLanguage);
 | |
|       i18n.initializedLanguageOnce = true;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   var _excluded$3 = ["initialI18nStore", "initialLanguage"];
 | |
|   function withSSR() {
 | |
|     return function Extend(WrappedComponent) {
 | |
|       function I18nextWithSSR(_ref) {
 | |
|         var initialI18nStore = _ref.initialI18nStore,
 | |
|             initialLanguage = _ref.initialLanguage,
 | |
|             rest = _objectWithoutProperties(_ref, _excluded$3);
 | |
| 
 | |
|         useSSR(initialI18nStore, initialLanguage);
 | |
|         return react.createElement(WrappedComponent, _objectSpread2({}, rest));
 | |
|       }
 | |
| 
 | |
|       I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);
 | |
|       I18nextWithSSR.displayName = "withI18nextSSR(".concat(getDisplayName(WrappedComponent), ")");
 | |
|       I18nextWithSSR.WrappedComponent = WrappedComponent;
 | |
|       return I18nextWithSSR;
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   var date = function date() {
 | |
|     return '';
 | |
|   };
 | |
|   var time = function time() {
 | |
|     return '';
 | |
|   };
 | |
|   var number = function number() {
 | |
|     return '';
 | |
|   };
 | |
|   var select = function select() {
 | |
|     return '';
 | |
|   };
 | |
|   var plural = function plural() {
 | |
|     return '';
 | |
|   };
 | |
|   var selectOrdinal = function selectOrdinal() {
 | |
|     return '';
 | |
|   };
 | |
| 
 | |
|   exports.I18nContext = I18nContext;
 | |
|   exports.I18nextProvider = I18nextProvider;
 | |
|   exports.Trans = Trans;
 | |
|   exports.Translation = Translation;
 | |
|   exports.composeInitialProps = composeInitialProps;
 | |
|   exports.date = date;
 | |
|   exports.getDefaults = getDefaults;
 | |
|   exports.getI18n = getI18n;
 | |
|   exports.getInitialProps = getInitialProps;
 | |
|   exports.initReactI18next = initReactI18next;
 | |
|   exports.number = number;
 | |
|   exports.plural = plural;
 | |
|   exports.select = select;
 | |
|   exports.selectOrdinal = selectOrdinal;
 | |
|   exports.setDefaults = setDefaults;
 | |
|   exports.setI18n = setI18n;
 | |
|   exports.time = time;
 | |
|   exports.useSSR = useSSR;
 | |
|   exports.useTranslation = useTranslation;
 | |
|   exports.withSSR = withSSR;
 | |
|   exports.withTranslation = withTranslation;
 | |
| 
 | |
|   Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| }));
 |