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.
 
 
 
 

149 lines
4.9 KiB

  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.usedI18nextProvider = usedI18nextProvider;
  7. exports.getHasUsedI18nextProvider = getHasUsedI18nextProvider;
  8. exports.setDefaults = setDefaults;
  9. exports.getDefaults = getDefaults;
  10. exports.setI18n = setI18n;
  11. exports.getI18n = getI18n;
  12. exports.composeInitialProps = composeInitialProps;
  13. exports.getInitialProps = getInitialProps;
  14. exports.initReactI18next = exports.ReportNamespaces = exports.I18nContext = void 0;
  15. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  16. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  17. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  18. var _react = _interopRequireDefault(require("react"));
  19. 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; }
  20. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  21. var defaultOptions = {
  22. bindI18n: 'languageChanging languageChanged',
  23. bindI18nStore: '',
  24. // nsMode: 'fallback' // loop through all namespaces given to hook, HOC, render prop for key lookup
  25. transEmptyNodeValue: '',
  26. transSupportBasicHtmlNodes: true,
  27. transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],
  28. // hashTransKey: key => key // calculate a key for Trans component based on defaultValue
  29. useSuspense: true
  30. };
  31. var i18nInstance;
  32. var hasUsedI18nextProvider;
  33. var I18nContext = _react["default"].createContext();
  34. exports.I18nContext = I18nContext;
  35. function usedI18nextProvider(used) {
  36. hasUsedI18nextProvider = used;
  37. }
  38. function getHasUsedI18nextProvider() {
  39. return hasUsedI18nextProvider;
  40. }
  41. function setDefaults() {
  42. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  43. defaultOptions = _objectSpread({}, defaultOptions, {}, options);
  44. }
  45. function getDefaults() {
  46. return defaultOptions;
  47. }
  48. var ReportNamespaces =
  49. /*#__PURE__*/
  50. function () {
  51. function ReportNamespaces() {
  52. (0, _classCallCheck2["default"])(this, ReportNamespaces);
  53. this.usedNamespaces = {};
  54. }
  55. (0, _createClass2["default"])(ReportNamespaces, [{
  56. key: "addUsedNamespaces",
  57. value: function addUsedNamespaces(namespaces) {
  58. var _this = this;
  59. namespaces.forEach(function (ns) {
  60. if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;
  61. });
  62. }
  63. }, {
  64. key: "getUsedNamespaces",
  65. value: function getUsedNamespaces() {
  66. return Object.keys(this.usedNamespaces);
  67. }
  68. }]);
  69. return ReportNamespaces;
  70. }();
  71. exports.ReportNamespaces = ReportNamespaces;
  72. function setI18n(instance) {
  73. i18nInstance = instance;
  74. }
  75. function getI18n() {
  76. return i18nInstance;
  77. }
  78. var initReactI18next = {
  79. type: '3rdParty',
  80. init: function init(instance) {
  81. setDefaults(instance.options.react);
  82. setI18n(instance);
  83. }
  84. };
  85. exports.initReactI18next = initReactI18next;
  86. function composeInitialProps(ForComponent) {
  87. return function (ctx) {
  88. return new Promise(function (resolve) {
  89. var i18nInitialProps = getInitialProps();
  90. if (ForComponent.getInitialProps) {
  91. ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {
  92. resolve(_objectSpread({}, componentsInitialProps, {}, i18nInitialProps));
  93. });
  94. } else {
  95. resolve(i18nInitialProps);
  96. }
  97. });
  98. }; // Avoid async for now - so we do not need to pull in regenerator
  99. // return async ctx => {
  100. // const componentsInitialProps = ForComponent.getInitialProps
  101. // ? await ForComponent.getInitialProps(ctx)
  102. // : {};
  103. // const i18nInitialProps = getInitialProps();
  104. // return {
  105. // ...componentsInitialProps,
  106. // ...i18nInitialProps,
  107. // };
  108. // };
  109. }
  110. function getInitialProps() {
  111. var i18n = getI18n();
  112. var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];
  113. var ret = {};
  114. var initialI18nStore = {};
  115. i18n.languages.forEach(function (l) {
  116. initialI18nStore[l] = {};
  117. namespaces.forEach(function (ns) {
  118. initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};
  119. });
  120. });
  121. ret.initialI18nStore = initialI18nStore;
  122. ret.initialLanguage = i18n.language;
  123. return ret;
  124. }