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.
		
		
		
		
		
			
		
			
				
					126 lines
				
				4.2 KiB
			
		
		
			
		
	
	
					126 lines
				
				4.2 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.setDefaults = setDefaults; | ||
|  | exports.getDefaults = getDefaults; | ||
|  | exports.setI18n = setI18n; | ||
|  | exports.getI18n = getI18n; | ||
|  | exports.composeInitialProps = composeInitialProps; | ||
|  | exports.getInitialProps = getInitialProps; | ||
|  | exports.initReactI18next = exports.ReportNamespaces = exports.I18nContext = void 0; | ||
|  | 
 | ||
|  | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); | ||
|  | 
 | ||
|  | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); | ||
|  | 
 | ||
|  | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
|  | 
 | ||
|  | var _react = require("react"); | ||
|  | 
 | ||
|  | var _unescape = require("./unescape"); | ||
|  | 
 | ||
|  | 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 _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; } | ||
|  | 
 | ||
|  | var defaultOptions = { | ||
|  |   bindI18n: 'languageChanged', | ||
|  |   bindI18nStore: '', | ||
|  |   transEmptyNodeValue: '', | ||
|  |   transSupportBasicHtmlNodes: true, | ||
|  |   transWrapTextNodes: '', | ||
|  |   transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'], | ||
|  |   useSuspense: true, | ||
|  |   unescape: _unescape.unescape | ||
|  | }; | ||
|  | var i18nInstance; | ||
|  | var I18nContext = (0, _react.createContext)(); | ||
|  | exports.I18nContext = I18nContext; | ||
|  | 
 | ||
|  | function setDefaults() { | ||
|  |   var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
|  |   defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options); | ||
|  | } | ||
|  | 
 | ||
|  | function getDefaults() { | ||
|  |   return defaultOptions; | ||
|  | } | ||
|  | 
 | ||
|  | var ReportNamespaces = function () { | ||
|  |   function ReportNamespaces() { | ||
|  |     (0, _classCallCheck2["default"])(this, ReportNamespaces); | ||
|  |     this.usedNamespaces = {}; | ||
|  |   } | ||
|  | 
 | ||
|  |   (0, _createClass2["default"])(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; | ||
|  | }(); | ||
|  | 
 | ||
|  | exports.ReportNamespaces = ReportNamespaces; | ||
|  | 
 | ||
|  | function setI18n(instance) { | ||
|  |   i18nInstance = instance; | ||
|  | } | ||
|  | 
 | ||
|  | function getI18n() { | ||
|  |   return i18nInstance; | ||
|  | } | ||
|  | 
 | ||
|  | var initReactI18next = { | ||
|  |   type: '3rdParty', | ||
|  |   init: function init(instance) { | ||
|  |     setDefaults(instance.options.react); | ||
|  |     setI18n(instance); | ||
|  |   } | ||
|  | }; | ||
|  | exports.initReactI18next = initReactI18next; | ||
|  | 
 | ||
|  | function composeInitialProps(ForComponent) { | ||
|  |   return function (ctx) { | ||
|  |     return new Promise(function (resolve) { | ||
|  |       var i18nInitialProps = getInitialProps(); | ||
|  | 
 | ||
|  |       if (ForComponent.getInitialProps) { | ||
|  |         ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) { | ||
|  |           resolve(_objectSpread(_objectSpread({}, 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; | ||
|  | } |