@andre1502/react-utilities 0.9.4 → 0.9.5
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/README.md +16 -12
- package/dist/I18n/I18n.d.ts +15 -3
- package/dist/I18n/I18n.js +36 -15
- package/dist/I18n/I18n.js.map +1 -1
- package/dist/{I18n-BXs9DtEN.js → I18n-DDRri5uR.js} +36 -17
- package/dist/I18n-DDRri5uR.js.map +1 -0
- package/dist/{I18n-CrUfKIV0.js → I18n-qeRA3rLa.js} +36 -17
- package/dist/I18n-qeRA3rLa.js.map +1 -0
- package/dist/i18n.cjs +1 -1
- package/dist/i18n.mjs +1 -1
- package/dist/index-rn.cjs +1 -1
- package/dist/index-rn.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/I18n/I18n.ts +48 -26
- package/dist/I18n-BXs9DtEN.js.map +0 -1
- package/dist/I18n-CrUfKIV0.js.map +0 -1
package/README.md
CHANGED
@@ -364,13 +364,16 @@ import { EnvironmentEnum, initI18n } from '@andre1502/react-utilities/i18n';
|
|
364
364
|
|
365
365
|
const localLang = 'en-US';
|
366
366
|
const fallbackLang = 'en-US';
|
367
|
-
const langCacheExpiredTimeMs = 60 * 60 * 1000;
|
367
|
+
const langCacheExpiredTimeMs = 24 * 60 * 60 * 1000;
|
368
368
|
|
369
369
|
// translation language from json file.
|
370
370
|
const resources = {
|
371
371
|
'en-US': { translation: enUS },
|
372
372
|
};
|
373
373
|
|
374
|
+
// determine whether need to use backend support to load resources.
|
375
|
+
const useBackend = false;
|
376
|
+
|
374
377
|
// optional, if false or undefined will use resources value
|
375
378
|
const withLocalstorageBackend = false;
|
376
379
|
|
@@ -381,15 +384,16 @@ const cdnUrl = 'http://cdnurl.com';
|
|
381
384
|
// optional, if false or undefined disable debug mode
|
382
385
|
const debug = false;
|
383
386
|
|
384
|
-
initI18n(
|
385
|
-
initReactI18next,
|
386
|
-
localLang,
|
387
|
-
fallbackLang,
|
388
|
-
langCacheExpiredTimeMs,
|
389
|
-
resources,
|
390
|
-
version,
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
387
|
+
initI18n({
|
388
|
+
initReactI18next: initReactI18next,
|
389
|
+
localLang: localLang,
|
390
|
+
fallbackLang: fallbackLang,
|
391
|
+
langCacheExpiredTimeMs: langCacheExpiredTimeMs,
|
392
|
+
resources: resources,
|
393
|
+
version: version,
|
394
|
+
useBackend: useBackend,
|
395
|
+
withLocalstorageBackend: withLocalstorageBackend,
|
396
|
+
cdnUrl: cdnUrl,
|
397
|
+
debug: debug,
|
398
|
+
});
|
395
399
|
```
|
package/dist/I18n/I18n.d.ts
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
import { ThirdPartyModule } from 'i18next';
|
2
2
|
declare const getV: (divider: number) => number;
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
export interface InitI18nProps {
|
4
|
+
initReactI18next: ThirdPartyModule;
|
5
|
+
lang: string;
|
6
|
+
fallbackLang: string;
|
7
|
+
langCacheExpiredTimeMs: number;
|
8
|
+
resources: {
|
9
|
+
[key: string]: any;
|
10
|
+
};
|
11
|
+
version: string;
|
12
|
+
useBackend: boolean;
|
13
|
+
withLocalstorageBackend?: boolean;
|
14
|
+
cdnUrl?: string;
|
15
|
+
debug?: boolean;
|
16
|
+
}
|
17
|
+
declare const initI18n: ({ initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs, resources, version, useBackend, withLocalstorageBackend, cdnUrl, debug, }: InitI18nProps) => void;
|
6
18
|
export { getV, initI18n };
|
package/dist/I18n/I18n.js
CHANGED
@@ -11,19 +11,34 @@ var _i18nextLocalstorageBackend = _interopRequireDefault(require("i18next-locals
|
|
11
11
|
var _i18nextResourcesToBackend = _interopRequireDefault(require("i18next-resources-to-backend"));
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
13
13
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
14
16
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
15
17
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
16
18
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
17
19
|
var getV = exports.getV = function getV(divider) {
|
18
20
|
return Math.floor(Date.now() / divider);
|
19
21
|
};
|
20
|
-
var initI18n = exports.initI18n = function initI18n(
|
22
|
+
var initI18n = exports.initI18n = function initI18n(_ref) {
|
23
|
+
var initReactI18next = _ref.initReactI18next,
|
24
|
+
lang = _ref.lang,
|
25
|
+
fallbackLang = _ref.fallbackLang,
|
26
|
+
langCacheExpiredTimeMs = _ref.langCacheExpiredTimeMs,
|
27
|
+
resources = _ref.resources,
|
28
|
+
version = _ref.version,
|
29
|
+
useBackend = _ref.useBackend,
|
30
|
+
_ref$withLocalstorage = _ref.withLocalstorageBackend,
|
31
|
+
withLocalstorageBackend = _ref$withLocalstorage === void 0 ? false : _ref$withLocalstorage,
|
32
|
+
_ref$cdnUrl = _ref.cdnUrl,
|
33
|
+
cdnUrl = _ref$cdnUrl === void 0 ? '' : _ref$cdnUrl,
|
34
|
+
_ref$debug = _ref.debug,
|
35
|
+
debug = _ref$debug === void 0 ? false : _ref$debug;
|
21
36
|
var backends = [];
|
22
37
|
var backendOptions = [];
|
23
38
|
var langs = Object.keys(resources);
|
24
39
|
|
25
40
|
// https://www.i18next.com/how-to/backend-fallback
|
26
|
-
if (withLocalstorageBackend) {
|
41
|
+
if (useBackend && withLocalstorageBackend) {
|
27
42
|
var versions = {};
|
28
43
|
langs.forEach(function (value) {
|
29
44
|
return Object.assign(versions, _defineProperty({}, value, version));
|
@@ -38,7 +53,7 @@ var initI18n = exports.initI18n = function initI18n(initReactI18next, lang, fall
|
|
38
53
|
versions: versions
|
39
54
|
});
|
40
55
|
}
|
41
|
-
if (cdnUrl) {
|
56
|
+
if (useBackend && cdnUrl) {
|
42
57
|
backends.push(_i18nextHttpBackend["default"]);
|
43
58
|
backendOptions.push({
|
44
59
|
// load resources from url path
|
@@ -50,7 +65,9 @@ var initI18n = exports.initI18n = function initI18n(initReactI18next, lang, fall
|
|
50
65
|
reloadInterval: langCacheExpiredTimeMs // can be used to reload resources in a specific interval (milliseconds) (useful in server environments)
|
51
66
|
});
|
52
67
|
}
|
53
|
-
|
68
|
+
if (useBackend) {
|
69
|
+
backends.push((0, _i18nextResourcesToBackend["default"])(resources));
|
70
|
+
}
|
54
71
|
|
55
72
|
// https://www.i18next.com/misc/creating-own-plugins#languagedetector
|
56
73
|
var languageDetector = {
|
@@ -65,7 +82,7 @@ var initI18n = exports.initI18n = function initI18n(initReactI18next, lang, fall
|
|
65
82
|
}
|
66
83
|
};
|
67
84
|
var config = {
|
68
|
-
debug: debug
|
85
|
+
debug: debug,
|
69
86
|
compatibilityJSON: 'v4',
|
70
87
|
ns: ['translation'],
|
71
88
|
defaultNS: 'translation',
|
@@ -74,20 +91,24 @@ var initI18n = exports.initI18n = function initI18n(initReactI18next, lang, fall
|
|
74
91
|
load: 'currentOnly',
|
75
92
|
keySeparator: false,
|
76
93
|
nonExplicitSupportedLngs: true,
|
77
|
-
backend: {
|
78
|
-
backends: backends,
|
79
|
-
backendOptions: backendOptions,
|
80
|
-
cacheHitMode: 'refreshAndUpdateStore',
|
81
|
-
reloadInterval: langCacheExpiredTimeMs,
|
82
|
-
refreshExpirationTime: langCacheExpiredTimeMs // only after determined time it should trigger a refresh if necessary
|
83
|
-
},
|
84
|
-
react: {
|
85
|
-
bindI18nStore: 'added' // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated
|
86
|
-
},
|
87
94
|
interpolation: {
|
88
95
|
escapeValue: false // react already safes from xss
|
89
96
|
}
|
90
97
|
};
|
98
|
+
if (useBackend) {
|
99
|
+
config = _objectSpread(_objectSpread({}, config), {}, {
|
100
|
+
backend: {
|
101
|
+
backends: backends,
|
102
|
+
backendOptions: backendOptions,
|
103
|
+
cacheHitMode: 'refreshAndUpdateStore',
|
104
|
+
reloadInterval: langCacheExpiredTimeMs,
|
105
|
+
refreshExpirationTime: langCacheExpiredTimeMs // only after determined time it should trigger a refresh if necessary
|
106
|
+
},
|
107
|
+
react: {
|
108
|
+
bindI18nStore: 'added' // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated
|
109
|
+
}
|
110
|
+
});
|
111
|
+
}
|
91
112
|
if (!_i18next["default"].isInitialized) {
|
92
113
|
_i18next["default"].use(_i18nextChainedBackend["default"]).use(languageDetector).use(initReactI18next) // passes i18n down to react-i18next
|
93
114
|
.init(config, function (ex, t) {
|
package/dist/I18n/I18n.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"I18n.js","names":["_i18next","_interopRequireDefault","require","_i18nextChainedBackend","_i18nextHttpBackend","_i18nextLocalstorageBackend","_i18nextResourcesToBackend","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","toPrimitive","call","TypeError","String","Number","getV","exports","divider","Math","floor","Date","now","initI18n","initReactI18next","lang","fallbackLang","langCacheExpiredTimeMs","resources","version","withLocalstorageBackend","cdnUrl","debug","backends","backendOptions","langs","keys","versions","forEach","assign","push","LocalStorageBackend","prefix","expirationTime","HttpBackend","loadPath","concat","queryStringParams","v","reloadInterval","ResourcesToBackend","languageDetector","type","name","async","init","detect","callback","config","compatibilityJSON","ns","defaultNS","lng","fallbackLng","load","keySeparator","nonExplicitSupportedLngs","backend","cacheHitMode","refreshExpirationTime","react","bindI18nStore","interpolation","escapeValue","i18next","isInitialized","use","ChainedBackend","ex","console","error"],"sources":["../../src/I18n/I18n.ts"],"sourcesContent":["import i18next, { InitOptions, ThirdPartyModule } from 'i18next';\nimport ChainedBackend from 'i18next-chained-backend';\nimport HttpBackend from 'i18next-http-backend';\nimport LocalStorageBackend from 'i18next-localstorage-backend';\nimport ResourcesToBackend from 'i18next-resources-to-backend';\n\nconst getV = (divider: number): number => {\n return Math.floor(Date.now() / divider);\n};\n\nconst initI18n = (\n initReactI18next: ThirdPartyModule,\n lang: string,\n fallbackLang: string,\n langCacheExpiredTimeMs: number,\n resources: { [key: string]: any },\n version: string,\n withLocalstorageBackend?: boolean,\n cdnUrl?: string,\n debug?: boolean,\n) => {\n let backends: Array<any> = [];\n let backendOptions: Array<any> = [];\n const langs = Object.keys(resources);\n\n // https://www.i18next.com/how-to/backend-fallback\n if (withLocalstorageBackend) {\n const versions: { [key: string]: string } = {};\n\n langs.forEach((value) => Object.assign(versions, { [value]: version }));\n\n backends.push(LocalStorageBackend);\n backendOptions.push({\n // prefix for stored languages\n prefix: `i18next_res_`,\n\n // expiration\n expirationTime: langCacheExpiredTimeMs,\n\n // language versions\n versions: versions,\n });\n }\n\n if (cdnUrl) {\n backends.push(HttpBackend);\n backendOptions.push({\n // load resources from url path\n loadPath: `${cdnUrl}/locales/{{lng}}.json`,\n // adds parameters to resource URL. 'example.com' -> 'example.com?v=1.3.5'\n queryStringParams: {\n v: `${version}.${getV(langCacheExpiredTimeMs)}`,\n },\n\n reloadInterval: langCacheExpiredTimeMs, // can be used to reload resources in a specific interval (milliseconds) (useful in server environments)\n });\n }\n\n backends.push(ResourcesToBackend(resources));\n\n // https://www.i18next.com/misc/creating-own-plugins#languagedetector\n const languageDetector: any = {\n type: 'languageDetector',\n name: 'customDetector',\n async: false,\n init: () => {\n /* use services and options */\n },\n detect: (callback: any) => {\n return lang;\n },\n };\n\n const config: InitOptions = {\n debug: debug ?? false,\n compatibilityJSON: 'v4',\n ns: ['translation'],\n defaultNS: 'translation',\n lng: lang,\n fallbackLng: fallbackLang,\n load: 'currentOnly',\n keySeparator: false,\n nonExplicitSupportedLngs: true,\n backend: {\n backends: backends,\n backendOptions: backendOptions,\n cacheHitMode: 'refreshAndUpdateStore',\n reloadInterval: langCacheExpiredTimeMs,\n refreshExpirationTime: langCacheExpiredTimeMs, // only after determined time it should trigger a refresh if necessary\n },\n react: {\n bindI18nStore: 'added', // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated\n },\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n };\n\n if (!i18next.isInitialized) {\n i18next\n .use(ChainedBackend)\n .use(languageDetector)\n .use(initReactI18next) // passes i18n down to react-i18next\n .init(config, (ex, t) => {\n if (ex) {\n console.error(`Error when i18n init`, ex);\n return;\n }\n });\n }\n};\n\nexport { getV, initI18n };\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"I18n.js","names":["_i18next","_interopRequireDefault","require","_i18nextChainedBackend","_i18nextHttpBackend","_i18nextLocalstorageBackend","_i18nextResourcesToBackend","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","ownKeys","r","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","toPrimitive","call","TypeError","String","Number","getV","exports","divider","Math","floor","Date","now","initI18n","_ref","initReactI18next","lang","fallbackLang","langCacheExpiredTimeMs","resources","version","useBackend","_ref$withLocalstorage","withLocalstorageBackend","_ref$cdnUrl","cdnUrl","_ref$debug","debug","backends","backendOptions","langs","versions","assign","LocalStorageBackend","prefix","expirationTime","HttpBackend","loadPath","concat","queryStringParams","v","reloadInterval","ResourcesToBackend","languageDetector","type","name","async","init","detect","callback","config","compatibilityJSON","ns","defaultNS","lng","fallbackLng","load","keySeparator","nonExplicitSupportedLngs","interpolation","escapeValue","backend","cacheHitMode","refreshExpirationTime","react","bindI18nStore","i18next","isInitialized","use","ChainedBackend","ex","console","error"],"sources":["../../src/I18n/I18n.ts"],"sourcesContent":["import i18next, { InitOptions, ThirdPartyModule } from 'i18next';\nimport ChainedBackend from 'i18next-chained-backend';\nimport HttpBackend from 'i18next-http-backend';\nimport LocalStorageBackend from 'i18next-localstorage-backend';\nimport ResourcesToBackend from 'i18next-resources-to-backend';\n\nconst getV = (divider: number): number => {\n return Math.floor(Date.now() / divider);\n};\n\nexport interface InitI18nProps {\n initReactI18next: ThirdPartyModule;\n lang: string;\n fallbackLang: string;\n langCacheExpiredTimeMs: number;\n resources: { [key: string]: any };\n version: string;\n useBackend: boolean;\n withLocalstorageBackend?: boolean;\n cdnUrl?: string;\n debug?: boolean;\n}\n\nconst initI18n = ({\n initReactI18next,\n lang,\n fallbackLang,\n langCacheExpiredTimeMs,\n resources,\n version,\n useBackend,\n withLocalstorageBackend = false,\n cdnUrl = '',\n debug = false,\n}: InitI18nProps) => {\n let backends: Array<any> = [];\n let backendOptions: Array<any> = [];\n const langs = Object.keys(resources);\n\n // https://www.i18next.com/how-to/backend-fallback\n if (useBackend && withLocalstorageBackend) {\n const versions: { [key: string]: string } = {};\n\n langs.forEach((value) => Object.assign(versions, { [value]: version }));\n\n backends.push(LocalStorageBackend);\n backendOptions.push({\n // prefix for stored languages\n prefix: `i18next_res_`,\n\n // expiration\n expirationTime: langCacheExpiredTimeMs,\n\n // language versions\n versions: versions,\n });\n }\n\n if (useBackend && cdnUrl) {\n backends.push(HttpBackend);\n backendOptions.push({\n // load resources from url path\n loadPath: `${cdnUrl}/locales/{{lng}}.json`,\n // adds parameters to resource URL. 'example.com' -> 'example.com?v=1.3.5'\n queryStringParams: {\n v: `${version}.${getV(langCacheExpiredTimeMs)}`,\n },\n\n reloadInterval: langCacheExpiredTimeMs, // can be used to reload resources in a specific interval (milliseconds) (useful in server environments)\n });\n }\n\n if (useBackend) {\n backends.push(ResourcesToBackend(resources));\n }\n\n // https://www.i18next.com/misc/creating-own-plugins#languagedetector\n const languageDetector: any = {\n type: 'languageDetector',\n name: 'customDetector',\n async: false,\n init: () => {\n /* use services and options */\n },\n detect: (callback: any) => {\n return lang;\n },\n };\n\n let config: InitOptions = {\n debug: debug,\n compatibilityJSON: 'v4',\n ns: ['translation'],\n defaultNS: 'translation',\n lng: lang,\n fallbackLng: fallbackLang,\n load: 'currentOnly',\n keySeparator: false,\n nonExplicitSupportedLngs: true,\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n };\n\n if (useBackend) {\n config = {\n ...config,\n backend: {\n backends: backends,\n backendOptions: backendOptions,\n cacheHitMode: 'refreshAndUpdateStore',\n reloadInterval: langCacheExpiredTimeMs,\n refreshExpirationTime: langCacheExpiredTimeMs, // only after determined time it should trigger a refresh if necessary\n },\n react: {\n bindI18nStore: 'added', // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated\n },\n };\n }\n\n if (!i18next.isInitialized) {\n i18next\n .use(ChainedBackend)\n .use(languageDetector)\n .use(initReactI18next) // passes i18n down to react-i18next\n .init(config, (ex, t) => {\n if (ex) {\n console.error(`Error when i18n init`, ex);\n return;\n }\n });\n }\n};\n\nexport { getV, initI18n };\n"],"mappings":"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","ignoreList":[]}
|
@@ -3201,12 +3201,24 @@ var resourcesToBackend = function resourcesToBackend(res) {
|
|
3201
3201
|
const getV = divider => {
|
3202
3202
|
return Math.floor(Date.now() / divider);
|
3203
3203
|
};
|
3204
|
-
const initI18n =
|
3204
|
+
const initI18n = _ref => {
|
3205
|
+
let {
|
3206
|
+
initReactI18next,
|
3207
|
+
lang,
|
3208
|
+
fallbackLang,
|
3209
|
+
langCacheExpiredTimeMs,
|
3210
|
+
resources,
|
3211
|
+
version,
|
3212
|
+
useBackend,
|
3213
|
+
withLocalstorageBackend = false,
|
3214
|
+
cdnUrl = '',
|
3215
|
+
debug = false
|
3216
|
+
} = _ref;
|
3205
3217
|
let backends = [];
|
3206
3218
|
let backendOptions = [];
|
3207
3219
|
const langs = Object.keys(resources);
|
3208
3220
|
// https://www.i18next.com/how-to/backend-fallback
|
3209
|
-
if (withLocalstorageBackend) {
|
3221
|
+
if (useBackend && withLocalstorageBackend) {
|
3210
3222
|
const versions = {};
|
3211
3223
|
langs.forEach(value => Object.assign(versions, {
|
3212
3224
|
[value]: version
|
@@ -3221,7 +3233,7 @@ const initI18n = (initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs,
|
|
3221
3233
|
versions: versions
|
3222
3234
|
});
|
3223
3235
|
}
|
3224
|
-
if (cdnUrl) {
|
3236
|
+
if (useBackend && cdnUrl) {
|
3225
3237
|
backends.push(Backend);
|
3226
3238
|
backendOptions.push({
|
3227
3239
|
// load resources from url path
|
@@ -3233,7 +3245,9 @@ const initI18n = (initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs,
|
|
3233
3245
|
reloadInterval: langCacheExpiredTimeMs // can be used to reload resources in a specific interval (milliseconds) (useful in server environments)
|
3234
3246
|
});
|
3235
3247
|
}
|
3236
|
-
|
3248
|
+
if (useBackend) {
|
3249
|
+
backends.push(resourcesToBackend(resources));
|
3250
|
+
}
|
3237
3251
|
// https://www.i18next.com/misc/creating-own-plugins#languagedetector
|
3238
3252
|
const languageDetector = {
|
3239
3253
|
type: 'languageDetector',
|
@@ -3246,8 +3260,8 @@ const initI18n = (initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs,
|
|
3246
3260
|
return lang;
|
3247
3261
|
}
|
3248
3262
|
};
|
3249
|
-
|
3250
|
-
debug: debug
|
3263
|
+
let config = {
|
3264
|
+
debug: debug,
|
3251
3265
|
compatibilityJSON: 'v4',
|
3252
3266
|
ns: ['translation'],
|
3253
3267
|
defaultNS: 'translation',
|
@@ -3256,20 +3270,25 @@ const initI18n = (initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs,
|
|
3256
3270
|
load: 'currentOnly',
|
3257
3271
|
keySeparator: false,
|
3258
3272
|
nonExplicitSupportedLngs: true,
|
3259
|
-
backend: {
|
3260
|
-
backends: backends,
|
3261
|
-
backendOptions: backendOptions,
|
3262
|
-
cacheHitMode: 'refreshAndUpdateStore',
|
3263
|
-
reloadInterval: langCacheExpiredTimeMs,
|
3264
|
-
refreshExpirationTime: langCacheExpiredTimeMs // only after determined time it should trigger a refresh if necessary
|
3265
|
-
},
|
3266
|
-
react: {
|
3267
|
-
bindI18nStore: 'added' // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated
|
3268
|
-
},
|
3269
3273
|
interpolation: {
|
3270
3274
|
escapeValue: false // react already safes from xss
|
3271
3275
|
}
|
3272
3276
|
};
|
3277
|
+
if (useBackend) {
|
3278
|
+
config = {
|
3279
|
+
...config,
|
3280
|
+
backend: {
|
3281
|
+
backends: backends,
|
3282
|
+
backendOptions: backendOptions,
|
3283
|
+
cacheHitMode: 'refreshAndUpdateStore',
|
3284
|
+
reloadInterval: langCacheExpiredTimeMs,
|
3285
|
+
refreshExpirationTime: langCacheExpiredTimeMs // only after determined time it should trigger a refresh if necessary
|
3286
|
+
},
|
3287
|
+
react: {
|
3288
|
+
bindI18nStore: 'added' // this way, when the HttpBackend delivers new translations (thanks to refreshAndUpdateStore), the UI gets updated
|
3289
|
+
}
|
3290
|
+
};
|
3291
|
+
}
|
3273
3292
|
if (!instance.isInitialized) {
|
3274
3293
|
instance.use(Backend$1).use(languageDetector).use(initReactI18next) // passes i18n down to react-i18next
|
3275
3294
|
.init(config, (ex, t) => {
|
@@ -3282,4 +3301,4 @@ const initI18n = (initReactI18next, lang, fallbackLang, langCacheExpiredTimeMs,
|
|
3282
3301
|
};
|
3283
3302
|
|
3284
3303
|
export { getV as g, initI18n as i };
|
3285
|
-
//# sourceMappingURL=I18n-
|
3304
|
+
//# sourceMappingURL=I18n-DDRri5uR.js.map
|