@modern-js/plugin-i18n 3.0.0-alpha.1 → 3.0.0
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/dist/cjs/cli/{index.cjs → index.js} +4 -4
- package/dist/cjs/runtime/{I18nLink.cjs → I18nLink.js} +4 -4
- package/dist/cjs/runtime/{context.cjs → context.js} +14 -10
- package/dist/cjs/runtime/{hooks.cjs → hooks.js} +10 -10
- package/dist/cjs/runtime/i18n/backend/{config.cjs → config.js} +2 -2
- package/dist/cjs/runtime/i18n/backend/{index.cjs → index.js} +12 -12
- package/dist/cjs/runtime/i18n/backend/{middleware.common.cjs → middleware.common.js} +7 -7
- package/dist/cjs/runtime/i18n/backend/{middleware.cjs → middleware.js} +2 -2
- package/dist/cjs/runtime/i18n/backend/{middleware.node.cjs → middleware.node.js} +2 -2
- package/dist/cjs/runtime/i18n/detection/{config.cjs → config.js} +2 -2
- package/dist/cjs/runtime/i18n/detection/{index.cjs → index.js} +10 -10
- package/dist/cjs/runtime/i18n/detection/{middleware.cjs → middleware.js} +5 -5
- package/dist/cjs/runtime/i18n/{index.cjs → index.js} +5 -5
- package/dist/cjs/runtime/i18n/{instance.cjs → instance.js} +1 -1
- package/dist/cjs/runtime/i18n/{utils.cjs → utils.js} +15 -15
- package/dist/cjs/runtime/{index.cjs → index.js} +35 -35
- package/dist/cjs/runtime/{utils.cjs → utils.js} +4 -2
- package/dist/cjs/server/{index.cjs → index.js} +28 -7
- package/dist/cjs/shared/{detection.cjs → detection.js} +5 -5
- package/dist/{esm-node/cli/index.js → esm/cli/index.mjs} +1 -1
- package/dist/esm/runtime/{I18nLink.js → I18nLink.mjs} +2 -2
- package/dist/{esm-node/runtime/context.js → esm/runtime/context.mjs} +6 -2
- package/dist/{esm-node/runtime/hooks.js → esm/runtime/hooks.mjs} +2 -2
- package/dist/{esm-node/runtime/i18n/backend/config.js → esm/runtime/i18n/backend/config.mjs} +1 -1
- package/dist/{esm-node/runtime/i18n/backend/index.js → esm/runtime/i18n/backend/index.mjs} +2 -2
- package/dist/esm/runtime/i18n/backend/{middleware.common.js → middleware.common.mjs} +2 -2
- package/dist/esm/runtime/i18n/backend/{middleware.js → middleware.mjs} +1 -1
- package/dist/{esm-node/runtime/i18n/backend/middleware.node.js → esm/runtime/i18n/backend/middleware.node.mjs} +1 -1
- package/dist/{esm-node/runtime/i18n/detection/config.js → esm/runtime/i18n/detection/config.mjs} +1 -1
- package/dist/esm/runtime/i18n/detection/{index.js → index.mjs} +4 -4
- package/dist/{esm-node/runtime/i18n/detection/middleware.js → esm/runtime/i18n/detection/middleware.mjs} +1 -1
- package/dist/esm/runtime/i18n/index.mjs +3 -0
- package/dist/{esm-node/runtime/i18n/instance.js → esm/runtime/i18n/instance.mjs} +1 -1
- package/dist/{esm-node/runtime/i18n/utils.js → esm/runtime/i18n/utils.mjs} +5 -5
- package/dist/esm/runtime/{index.js → index.mjs} +15 -15
- package/dist/{esm-node/runtime/utils.js → esm/runtime/utils.mjs} +4 -2
- package/dist/{esm-node/server/index.js → esm/server/index.mjs} +23 -2
- package/dist/{esm-node/shared/detection.js → esm/shared/detection.mjs} +1 -1
- package/dist/{esm/cli/index.js → esm-node/cli/index.mjs} +2 -1
- package/dist/esm-node/runtime/{I18nLink.js → I18nLink.mjs} +3 -2
- package/dist/{esm/runtime/context.js → esm-node/runtime/context.mjs} +7 -2
- package/dist/{esm/runtime/hooks.js → esm-node/runtime/hooks.mjs} +3 -2
- package/dist/{esm/runtime/i18n/backend/config.js → esm-node/runtime/i18n/backend/config.mjs} +2 -1
- package/dist/{esm/runtime/i18n/backend/defaults.js → esm-node/runtime/i18n/backend/defaults.mjs} +1 -0
- package/dist/{esm/runtime/i18n/backend/defaults.node.js → esm-node/runtime/i18n/backend/defaults.node.mjs} +1 -0
- package/dist/{esm/runtime/i18n/backend/index.js → esm-node/runtime/i18n/backend/index.mjs} +3 -2
- package/dist/esm-node/runtime/i18n/backend/{middleware.common.js → middleware.common.mjs} +3 -2
- package/dist/esm-node/runtime/i18n/backend/{middleware.js → middleware.mjs} +2 -1
- package/dist/{esm/runtime/i18n/backend/middleware.node.js → esm-node/runtime/i18n/backend/middleware.node.mjs} +2 -1
- package/dist/{esm/runtime/i18n/backend/sdk-backend.js → esm-node/runtime/i18n/backend/sdk-backend.mjs} +1 -0
- package/dist/{esm/runtime/i18n/detection/config.js → esm-node/runtime/i18n/detection/config.mjs} +2 -1
- package/dist/esm-node/runtime/i18n/detection/{index.js → index.mjs} +5 -4
- package/dist/{esm/runtime/i18n/detection/middleware.js → esm-node/runtime/i18n/detection/middleware.mjs} +2 -1
- package/dist/{esm/runtime/i18n/detection/middleware.node.js → esm-node/runtime/i18n/detection/middleware.node.mjs} +1 -0
- package/dist/esm-node/runtime/i18n/index.mjs +4 -0
- package/dist/{esm/runtime/i18n/instance.js → esm-node/runtime/i18n/instance.mjs} +2 -1
- package/dist/{esm/runtime/i18n/utils.js → esm-node/runtime/i18n/utils.mjs} +6 -5
- package/dist/esm-node/runtime/{index.js → index.mjs} +16 -15
- package/dist/esm-node/runtime/types.mjs +1 -0
- package/dist/{esm/runtime/utils.js → esm-node/runtime/utils.mjs} +5 -2
- package/dist/{esm/server/index.js → esm-node/server/index.mjs} +24 -2
- package/dist/{esm/shared/deepMerge.js → esm-node/shared/deepMerge.mjs} +1 -0
- package/dist/{esm/shared/detection.js → esm-node/shared/detection.mjs} +2 -1
- package/dist/esm-node/shared/type.mjs +1 -0
- package/dist/{esm/shared/utils.js → esm-node/shared/utils.mjs} +1 -0
- package/dist/types/runtime/i18n/instance.d.ts +2 -2
- package/package.json +41 -41
- package/src/runtime/context.tsx +25 -0
- package/src/runtime/i18n/detection/config.ts +1 -1
- package/src/runtime/i18n/instance.ts +3 -3
- package/src/runtime/index.tsx +5 -3
- package/src/runtime/utils.ts +14 -2
- package/src/server/index.ts +34 -0
- package/dist/esm/runtime/i18n/index.js +0 -3
- package/dist/esm/runtime/types.js +0 -0
- package/dist/esm/shared/type.js +0 -0
- package/dist/esm-node/runtime/i18n/index.js +0 -3
- /package/dist/cjs/runtime/i18n/backend/{defaults.cjs → defaults.js} +0 -0
- /package/dist/cjs/runtime/i18n/backend/{defaults.node.cjs → defaults.node.js} +0 -0
- /package/dist/cjs/runtime/i18n/backend/{sdk-backend.cjs → sdk-backend.js} +0 -0
- /package/dist/cjs/runtime/i18n/detection/{middleware.node.cjs → middleware.node.js} +0 -0
- /package/dist/cjs/runtime/{types.cjs → types.js} +0 -0
- /package/dist/cjs/shared/{deepMerge.cjs → deepMerge.js} +0 -0
- /package/dist/cjs/shared/{type.cjs → type.js} +0 -0
- /package/dist/cjs/shared/{utils.cjs → utils.js} +0 -0
- /package/dist/{esm-node/runtime/i18n/backend/defaults.js → esm/runtime/i18n/backend/defaults.mjs} +0 -0
- /package/dist/{esm-node/runtime/i18n/backend/defaults.node.js → esm/runtime/i18n/backend/defaults.node.mjs} +0 -0
- /package/dist/{esm-node/runtime/i18n/backend/sdk-backend.js → esm/runtime/i18n/backend/sdk-backend.mjs} +0 -0
- /package/dist/{esm-node/runtime/i18n/detection/middleware.node.js → esm/runtime/i18n/detection/middleware.node.mjs} +0 -0
- /package/dist/{esm-node/runtime/types.js → esm/runtime/types.mjs} +0 -0
- /package/dist/{esm-node/shared/deepMerge.js → esm/shared/deepMerge.mjs} +0 -0
- /package/dist/{esm-node/shared/type.js → esm/shared/type.mjs} +0 -0
- /package/dist/{esm-node/shared/utils.js → esm/shared/utils.mjs} +0 -0
|
@@ -41,7 +41,7 @@ var external_fs_default = /*#__PURE__*/ __webpack_require__.n(external_fs_namesp
|
|
|
41
41
|
const external_path_namespaceObject = require("path");
|
|
42
42
|
var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
|
|
43
43
|
const server_core_namespaceObject = require("@modern-js/server-core");
|
|
44
|
-
const
|
|
44
|
+
const utils_js_namespaceObject = require("../shared/utils.js");
|
|
45
45
|
function hasJsonFiles(dirPath) {
|
|
46
46
|
try {
|
|
47
47
|
if (!external_fs_default().existsSync(dirPath) || !external_fs_default().statSync(dirPath).isDirectory()) return false;
|
|
@@ -77,12 +77,12 @@ const i18nPlugin = (options = {})=>({
|
|
|
77
77
|
setup: (api)=>{
|
|
78
78
|
const { localeDetection, backend, transformRuntimeConfig, customPlugin, ...restOptions } = options;
|
|
79
79
|
api._internalRuntimePlugins(({ entrypoint, plugins })=>{
|
|
80
|
-
const localeDetectionOptions = localeDetection ? (0,
|
|
80
|
+
const localeDetectionOptions = localeDetection ? (0, utils_js_namespaceObject.getLocaleDetectionOptions)(entrypoint.entryName, localeDetection) : void 0;
|
|
81
81
|
let backendOptions;
|
|
82
82
|
const { appDirectory } = api.getAppContext();
|
|
83
83
|
const normalizedConfig = api.getNormalizedConfig();
|
|
84
84
|
if (backend) {
|
|
85
|
-
const entryBackendOptions = (0,
|
|
85
|
+
const entryBackendOptions = (0, utils_js_namespaceObject.getBackendOptions)(entrypoint.entryName, backend);
|
|
86
86
|
if (entryBackendOptions?.enabled === false) backendOptions = entryBackendOptions;
|
|
87
87
|
else if (entryBackendOptions?.loadPath || entryBackendOptions?.addPath) backendOptions = {
|
|
88
88
|
...entryBackendOptions,
|
|
@@ -97,7 +97,7 @@ const i18nPlugin = (options = {})=>({
|
|
|
97
97
|
} else backendOptions = entryBackendOptions;
|
|
98
98
|
} else {
|
|
99
99
|
const hasLocales = detectLocalesDirectory(appDirectory, normalizedConfig);
|
|
100
|
-
if (hasLocales) backendOptions = (0,
|
|
100
|
+
if (hasLocales) backendOptions = (0, utils_js_namespaceObject.getBackendOptions)(entrypoint.entryName, {
|
|
101
101
|
enabled: true
|
|
102
102
|
});
|
|
103
103
|
}
|
|
@@ -29,8 +29,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
});
|
|
30
30
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
31
31
|
const router_namespaceObject = require("@modern-js/runtime/router");
|
|
32
|
-
const
|
|
33
|
-
const
|
|
32
|
+
const external_context_js_namespaceObject = require("./context.js");
|
|
33
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
34
34
|
const useRouterHooks = ()=>{
|
|
35
35
|
const inRouter = (0, router_namespaceObject.useInRouterContext)();
|
|
36
36
|
return {
|
|
@@ -41,9 +41,9 @@ const useRouterHooks = ()=>{
|
|
|
41
41
|
};
|
|
42
42
|
const I18nLink = ({ to, children, ...props })=>{
|
|
43
43
|
const { Link, params, hasRouter } = useRouterHooks();
|
|
44
|
-
const { language, supportedLanguages } = (0,
|
|
44
|
+
const { language, supportedLanguages } = (0, external_context_js_namespaceObject.useModernI18n)();
|
|
45
45
|
const currentLang = language;
|
|
46
|
-
const localizedTo = (0,
|
|
46
|
+
const localizedTo = (0, external_utils_js_namespaceObject.buildLocalizedUrl)(to, currentLang, supportedLanguages);
|
|
47
47
|
if ('development' === process.env.NODE_ENV && hasRouter && !params.lang) console.warn("I18nLink is being used outside of a :lang dynamic route context. This may cause unexpected behavior. Please ensure I18nLink is used within a route that has a :lang parameter.");
|
|
48
48
|
if (!hasRouter || !Link) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("a", {
|
|
49
49
|
href: localizedTo,
|
|
@@ -30,8 +30,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
30
30
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
31
31
|
const runtime_namespaceObject = require("@modern-js/runtime");
|
|
32
32
|
const external_react_namespaceObject = require("react");
|
|
33
|
-
const
|
|
34
|
-
const
|
|
33
|
+
const index_js_namespaceObject = require("./i18n/detection/index.js");
|
|
34
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
35
35
|
const ModernI18nContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(null);
|
|
36
36
|
const ModernI18nProvider = ({ children, value })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ModernI18nContext.Provider, {
|
|
37
37
|
value: value,
|
|
@@ -41,7 +41,7 @@ const useModernI18n = ()=>{
|
|
|
41
41
|
const context = (0, external_react_namespaceObject.useContext)(ModernI18nContext);
|
|
42
42
|
if (!context) throw new Error('useModernI18n must be used within a ModernI18nProvider');
|
|
43
43
|
const { language: contextLanguage, i18nInstance, languages, localePathRedirect, ignoreRedirectRoutes, updateLanguage } = context;
|
|
44
|
-
const { navigate, location, hasRouter } = (0,
|
|
44
|
+
const { navigate, location, hasRouter } = (0, external_utils_js_namespaceObject.useRouterHooks)();
|
|
45
45
|
const currentLanguage = contextLanguage;
|
|
46
46
|
const changeLanguage = (0, external_react_namespaceObject.useCallback)(async (newLang)=>{
|
|
47
47
|
try {
|
|
@@ -50,14 +50,16 @@ const useModernI18n = ()=>{
|
|
|
50
50
|
await i18nInstance?.changeLanguage?.(newLang);
|
|
51
51
|
if ((0, runtime_namespaceObject.isBrowser)()) {
|
|
52
52
|
const detectionOptions = i18nInstance.options?.detection;
|
|
53
|
-
(0,
|
|
53
|
+
(0, index_js_namespaceObject.cacheUserLanguage)(i18nInstance, newLang, detectionOptions);
|
|
54
54
|
}
|
|
55
55
|
if (localePathRedirect && (0, runtime_namespaceObject.isBrowser)() && hasRouter && navigate && location) {
|
|
56
56
|
const currentPath = location.pathname;
|
|
57
|
-
const entryPath = (0,
|
|
57
|
+
const entryPath = (0, external_utils_js_namespaceObject.getEntryPath)();
|
|
58
58
|
const relativePath = currentPath.replace(entryPath, '');
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const pathLanguage = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(currentPath, languages || [], localePathRedirect);
|
|
60
|
+
if (pathLanguage.detected && pathLanguage.language === newLang) return;
|
|
61
|
+
if (!(0, external_utils_js_namespaceObject.shouldIgnoreRedirect)(relativePath, languages || [], ignoreRedirectRoutes)) {
|
|
62
|
+
const newPath = (0, external_utils_js_namespaceObject.buildLocalizedUrl)(relativePath, newLang, languages || []);
|
|
61
63
|
const newUrl = entryPath + newPath + location.search + location.hash;
|
|
62
64
|
await navigate(newUrl, {
|
|
63
65
|
replace: true
|
|
@@ -65,10 +67,12 @@ const useModernI18n = ()=>{
|
|
|
65
67
|
}
|
|
66
68
|
} else if (localePathRedirect && (0, runtime_namespaceObject.isBrowser)() && !hasRouter) {
|
|
67
69
|
const currentPath = window.location.pathname;
|
|
68
|
-
const entryPath = (0,
|
|
70
|
+
const entryPath = (0, external_utils_js_namespaceObject.getEntryPath)();
|
|
69
71
|
const relativePath = currentPath.replace(entryPath, '');
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
const pathLanguage = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(currentPath, languages || [], localePathRedirect);
|
|
73
|
+
if (pathLanguage.detected && pathLanguage.language === newLang) return;
|
|
74
|
+
if (!(0, external_utils_js_namespaceObject.shouldIgnoreRedirect)(relativePath, languages || [], ignoreRedirectRoutes)) {
|
|
75
|
+
const newPath = (0, external_utils_js_namespaceObject.buildLocalizedUrl)(relativePath, newLang, languages || []);
|
|
72
76
|
const newUrl = entryPath + newPath + window.location.search + window.location.hash;
|
|
73
77
|
window.history.pushState(null, '', newUrl);
|
|
74
78
|
}
|
|
@@ -31,8 +31,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
});
|
|
32
32
|
const runtime_namespaceObject = require("@modern-js/runtime");
|
|
33
33
|
const external_react_namespaceObject = require("react");
|
|
34
|
-
const
|
|
35
|
-
const
|
|
34
|
+
const index_js_namespaceObject = require("./i18n/detection/index.js");
|
|
35
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
36
36
|
function createMinimalI18nInstance(language) {
|
|
37
37
|
const minimalInstance = {
|
|
38
38
|
language,
|
|
@@ -100,7 +100,7 @@ function useSdkResourcesLoader(i18nInstance, setForceUpdate) {
|
|
|
100
100
|
}
|
|
101
101
|
function useClientSideRedirect(i18nInstance, localePathRedirect, languages, fallbackLanguage, ignoreRedirectRoutes) {
|
|
102
102
|
const hasRedirectedRef = (0, external_react_namespaceObject.useRef)(false);
|
|
103
|
-
const { navigate, location, hasRouter } = (0,
|
|
103
|
+
const { navigate, location, hasRouter } = (0, external_utils_js_namespaceObject.useRouterHooks)();
|
|
104
104
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
105
105
|
if ('browser' !== process.env.MODERN_TARGET) return;
|
|
106
106
|
if (!localePathRedirect || !i18nInstance) return;
|
|
@@ -113,13 +113,13 @@ function useClientSideRedirect(i18nInstance, localePathRedirect, languages, fall
|
|
|
113
113
|
const currentPathname = hasRouter && location ? location.pathname : window.location.pathname;
|
|
114
114
|
const currentSearch = hasRouter && location ? location.search : window.location.search;
|
|
115
115
|
const currentHash = hasRouter && location ? location.hash : window.location.hash;
|
|
116
|
-
const entryPath = (0,
|
|
116
|
+
const entryPath = (0, external_utils_js_namespaceObject.getEntryPath)();
|
|
117
117
|
const relativePath = currentPathname.replace(entryPath, '');
|
|
118
|
-
if ((0,
|
|
119
|
-
const pathDetection = (0,
|
|
118
|
+
if ((0, external_utils_js_namespaceObject.shouldIgnoreRedirect)(relativePath, languages, ignoreRedirectRoutes)) return;
|
|
119
|
+
const pathDetection = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(currentPathname, languages, localePathRedirect);
|
|
120
120
|
if (pathDetection.detected) return;
|
|
121
121
|
const targetLanguage = i18nInstance.language || fallbackLanguage || languages[0] || 'en';
|
|
122
|
-
const newPath = (0,
|
|
122
|
+
const newPath = (0, external_utils_js_namespaceObject.buildLocalizedUrl)(relativePath, targetLanguage, languages);
|
|
123
123
|
const newUrl = entryPath + newPath + currentSearch + currentHash;
|
|
124
124
|
if (newUrl !== currentPathname + currentSearch + currentHash) {
|
|
125
125
|
hasRedirectedRef.current = true;
|
|
@@ -143,8 +143,8 @@ function useLanguageSync(i18nInstance, localePathRedirect, languages, runtimeCon
|
|
|
143
143
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
144
144
|
if (!i18nInstance) return;
|
|
145
145
|
if (localePathRedirect) {
|
|
146
|
-
const currentPathname = (0,
|
|
147
|
-
const pathDetection = (0,
|
|
146
|
+
const currentPathname = (0, external_utils_js_namespaceObject.getPathname)(runtimeContextRef.current);
|
|
147
|
+
const pathDetection = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(currentPathname, languages, localePathRedirect);
|
|
148
148
|
if (pathDetection.detected && pathDetection.language) {
|
|
149
149
|
const currentLang = pathDetection.language;
|
|
150
150
|
if (currentLang !== prevLangRef.current) {
|
|
@@ -154,7 +154,7 @@ function useLanguageSync(i18nInstance, localePathRedirect, languages, runtimeCon
|
|
|
154
154
|
i18nInstance.changeLanguage?.(currentLang);
|
|
155
155
|
if ((0, runtime_namespaceObject.isBrowser)()) {
|
|
156
156
|
const detectionOptions = i18nInstance.options?.detection;
|
|
157
|
-
(0,
|
|
157
|
+
(0, index_js_namespaceObject.cacheUserLanguage)(i18nInstance, currentLang, detectionOptions);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -26,9 +26,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
mergeBackendOptions: ()=>mergeBackendOptions
|
|
28
28
|
});
|
|
29
|
-
const
|
|
29
|
+
const deepMerge_js_namespaceObject = require("../../../shared/deepMerge.js");
|
|
30
30
|
function mergeBackendOptions(defaultOptions, cliOptions = {}, userOptions) {
|
|
31
|
-
return (0,
|
|
31
|
+
return (0, deepMerge_js_namespaceObject.deepMerge)((0, deepMerge_js_namespaceObject.deepMerge)(defaultOptions, cliOptions), userOptions ?? {});
|
|
32
32
|
}
|
|
33
33
|
exports.mergeBackendOptions = __webpack_exports__.mergeBackendOptions;
|
|
34
34
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -26,8 +26,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
mergeBackendOptions: ()=>mergeBackendOptions
|
|
28
28
|
});
|
|
29
|
-
const
|
|
30
|
-
const
|
|
29
|
+
const external_config_js_namespaceObject = require("./config.js");
|
|
30
|
+
const external_defaults_js_namespaceObject = require("./defaults.js");
|
|
31
31
|
function hasSdkFunction(backend, userInitOptions) {
|
|
32
32
|
return 'function' == typeof userInitOptions?.backend?.sdk || !!backend?.enabled && !!backend?.sdk && 'function' == typeof backend.sdk;
|
|
33
33
|
}
|
|
@@ -42,27 +42,27 @@ function hasLoadPath(backend, userInitOptions) {
|
|
|
42
42
|
}
|
|
43
43
|
function ensureDefaultLoadPath(merged, backend, isExplicitLoadPath = false) {
|
|
44
44
|
if (backend?.enabled && !isExplicitLoadPath && !merged.loadPath) {
|
|
45
|
-
merged.loadPath =
|
|
46
|
-
merged.addPath =
|
|
45
|
+
merged.loadPath = external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.loadPath;
|
|
46
|
+
merged.addPath = external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.addPath;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
function getFinalLoadPath(mergedOptions, backend, userInitOptions) {
|
|
50
|
-
return mergedOptions?.loadPath || userInitOptions?.backend?.loadPath || (backend?.enabled ?
|
|
50
|
+
return mergedOptions?.loadPath || userInitOptions?.backend?.loadPath || (backend?.enabled ? external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.loadPath : void 0);
|
|
51
51
|
}
|
|
52
52
|
function getFinalSdk(mergedOptions, backend, userInitOptions) {
|
|
53
53
|
return mergedOptions?.sdk || userInitOptions?.backend?.sdk || (backend?.sdk && 'function' == typeof backend.sdk ? backend.sdk : void 0);
|
|
54
54
|
}
|
|
55
55
|
function buildChainedBackendConfig(backend, userInitOptions) {
|
|
56
|
-
const merged = (0,
|
|
56
|
+
const merged = (0, external_config_js_namespaceObject.mergeBackendOptions)(external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS, backend, userInitOptions?.backend);
|
|
57
57
|
const { isExplicit } = hasLoadPath(backend, userInitOptions);
|
|
58
58
|
ensureDefaultLoadPath(merged, backend, isExplicit);
|
|
59
|
-
const mergedOptions = (0,
|
|
59
|
+
const mergedOptions = (0, external_defaults_js_namespaceObject.convertBackendOptions)(merged);
|
|
60
60
|
const finalLoadPath = getFinalLoadPath(mergedOptions, backend, userInitOptions);
|
|
61
61
|
const finalSdk = getFinalSdk(mergedOptions, backend, userInitOptions);
|
|
62
62
|
const chainedBackendOptions = [
|
|
63
63
|
{
|
|
64
64
|
loadPath: finalLoadPath,
|
|
65
|
-
addPath: mergedOptions?.addPath ||
|
|
65
|
+
addPath: mergedOptions?.addPath || external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.addPath
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
sdk: finalSdk
|
|
@@ -80,17 +80,17 @@ function buildChainedBackendConfig(backend, userInitOptions) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
function buildSdkOnlyBackendConfig(backend, userInitOptions) {
|
|
83
|
-
const merged = (0,
|
|
84
|
-
return (0,
|
|
83
|
+
const merged = (0, external_config_js_namespaceObject.mergeBackendOptions)({}, backend, userInitOptions?.backend);
|
|
84
|
+
return (0, external_defaults_js_namespaceObject.convertBackendOptions)(merged) || {};
|
|
85
85
|
}
|
|
86
86
|
function buildHttpFsBackendConfig(backend, userInitOptions) {
|
|
87
87
|
if (!backend?.enabled && !userInitOptions?.backend) return;
|
|
88
|
-
const mergedBackend = backend?.enabled ? (0,
|
|
88
|
+
const mergedBackend = backend?.enabled ? (0, external_config_js_namespaceObject.mergeBackendOptions)(external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS, backend, userInitOptions?.backend) : userInitOptions?.backend;
|
|
89
89
|
if (mergedBackend) {
|
|
90
90
|
const { isExplicit } = hasLoadPath(backend, userInitOptions);
|
|
91
91
|
ensureDefaultLoadPath(mergedBackend, backend, isExplicit);
|
|
92
92
|
}
|
|
93
|
-
return (0,
|
|
93
|
+
return (0, external_defaults_js_namespaceObject.convertBackendOptions)(mergedBackend) || {};
|
|
94
94
|
}
|
|
95
95
|
const mergeBackendOptions = (backend, userInitOptions)=>{
|
|
96
96
|
const sdkFunction = hasSdkFunction(backend, userInitOptions);
|
|
@@ -37,8 +37,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
37
37
|
});
|
|
38
38
|
const external_i18next_chained_backend_namespaceObject = require("i18next-chained-backend");
|
|
39
39
|
var external_i18next_chained_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_chained_backend_namespaceObject);
|
|
40
|
-
const
|
|
41
|
-
const
|
|
40
|
+
const external_instance_js_namespaceObject = require("../instance.js");
|
|
41
|
+
const external_sdk_backend_js_namespaceObject = require("./sdk-backend.js");
|
|
42
42
|
function checkBackendConfig(backend) {
|
|
43
43
|
const hasSdk = backend?.sdk && 'function' == typeof backend.sdk;
|
|
44
44
|
const hasLoadPath = !!backend?.loadPath;
|
|
@@ -54,7 +54,7 @@ function buildChainedBackendConfig(backend, BackendWithSave) {
|
|
|
54
54
|
if (backend._chainedBackendConfig) return {
|
|
55
55
|
backends: [
|
|
56
56
|
BackendWithSave,
|
|
57
|
-
|
|
57
|
+
external_sdk_backend_js_namespaceObject.SdkBackend
|
|
58
58
|
],
|
|
59
59
|
backendOptions: backend._chainedBackendConfig.backendOptions,
|
|
60
60
|
cacheHitMode
|
|
@@ -62,7 +62,7 @@ function buildChainedBackendConfig(backend, BackendWithSave) {
|
|
|
62
62
|
return {
|
|
63
63
|
backends: [
|
|
64
64
|
BackendWithSave,
|
|
65
|
-
|
|
65
|
+
external_sdk_backend_js_namespaceObject.SdkBackend
|
|
66
66
|
],
|
|
67
67
|
backendOptions: [
|
|
68
68
|
{
|
|
@@ -78,7 +78,7 @@ function buildChainedBackendConfig(backend, BackendWithSave) {
|
|
|
78
78
|
}
|
|
79
79
|
function setupChainedBackend(i18nInstance, backend, BackendWithSave) {
|
|
80
80
|
i18nInstance.use(external_i18next_chained_backend_default());
|
|
81
|
-
const actualInstance = (0,
|
|
81
|
+
const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
|
|
82
82
|
if (actualInstance?.options) actualInstance.options.backend = buildChainedBackendConfig(backend, BackendWithSave);
|
|
83
83
|
if (i18nInstance.options) i18nInstance.options.backend = buildChainedBackendConfig(backend, BackendWithSave);
|
|
84
84
|
}
|
|
@@ -90,8 +90,8 @@ function useI18nextBackendCommon(i18nInstance, BackendWithSave, BackendBase, bac
|
|
|
90
90
|
if (!backend) return i18nInstance.use(BackendBase);
|
|
91
91
|
const { hasSdk, hasLoadPath, useChained } = checkBackendConfig(backend);
|
|
92
92
|
if (useChained || hasLoadPath && hasSdk) return void setupChainedBackend(i18nInstance, backend, BackendWithSave);
|
|
93
|
-
if (hasSdk) return i18nInstance.use(
|
|
94
|
-
const actualInstance = (0,
|
|
93
|
+
if (hasSdk) return i18nInstance.use(external_sdk_backend_js_namespaceObject.SdkBackend);
|
|
94
|
+
const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
|
|
95
95
|
if (actualInstance?.options) actualInstance.options.backend = cleanBackendConfig(backend);
|
|
96
96
|
if (i18nInstance.options) i18nInstance.options.backend = cleanBackendConfig(backend);
|
|
97
97
|
return i18nInstance.use(BackendBase);
|
|
@@ -38,11 +38,11 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
38
38
|
});
|
|
39
39
|
const external_i18next_http_backend_namespaceObject = require("i18next-http-backend");
|
|
40
40
|
var external_i18next_http_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_http_backend_namespaceObject);
|
|
41
|
-
const
|
|
41
|
+
const external_middleware_common_js_namespaceObject = require("./middleware.common.js");
|
|
42
42
|
class HttpBackendWithSave extends external_i18next_http_backend_default() {
|
|
43
43
|
save(_language, _namespace, _data) {}
|
|
44
44
|
}
|
|
45
|
-
const useI18nextBackend = (i18nInstance, backend)=>(0,
|
|
45
|
+
const useI18nextBackend = (i18nInstance, backend)=>(0, external_middleware_common_js_namespaceObject.useI18nextBackendCommon)(i18nInstance, HttpBackendWithSave, external_i18next_http_backend_default(), backend);
|
|
46
46
|
exports.HttpBackendWithSave = __webpack_exports__.HttpBackendWithSave;
|
|
47
47
|
exports.useI18nextBackend = __webpack_exports__.useI18nextBackend;
|
|
48
48
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -39,12 +39,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
39
39
|
});
|
|
40
40
|
const external_i18next_fs_backend_namespaceObject = require("i18next-fs-backend");
|
|
41
41
|
var external_i18next_fs_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_fs_backend_namespaceObject);
|
|
42
|
-
const
|
|
42
|
+
const external_middleware_common_js_namespaceObject = require("./middleware.common.js");
|
|
43
43
|
class FsBackendWithSave extends external_i18next_fs_backend_default() {
|
|
44
44
|
save(_language, _namespace, _data) {}
|
|
45
45
|
}
|
|
46
46
|
const HttpBackendWithSave = FsBackendWithSave;
|
|
47
|
-
const useI18nextBackend = (i18nInstance, backend)=>(0,
|
|
47
|
+
const useI18nextBackend = (i18nInstance, backend)=>(0, external_middleware_common_js_namespaceObject.useI18nextBackendCommon)(i18nInstance, FsBackendWithSave, external_i18next_fs_backend_default(), backend);
|
|
48
48
|
exports.FsBackendWithSave = __webpack_exports__.FsBackendWithSave;
|
|
49
49
|
exports.HttpBackendWithSave = __webpack_exports__.HttpBackendWithSave;
|
|
50
50
|
exports.useI18nextBackend = __webpack_exports__.useI18nextBackend;
|
|
@@ -27,7 +27,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
27
27
|
mergeDetectionOptions: ()=>mergeDetectionOptions,
|
|
28
28
|
DEFAULT_I18NEXT_DETECTION_OPTIONS: ()=>DEFAULT_I18NEXT_DETECTION_OPTIONS
|
|
29
29
|
});
|
|
30
|
-
const
|
|
30
|
+
const deepMerge_js_namespaceObject = require("../../../shared/deepMerge.js");
|
|
31
31
|
const DEFAULT_I18NEXT_DETECTION_OPTIONS = {
|
|
32
32
|
caches: [
|
|
33
33
|
'cookie',
|
|
@@ -50,7 +50,7 @@ const DEFAULT_I18NEXT_DETECTION_OPTIONS = {
|
|
|
50
50
|
lookupHeader: 'accept-language'
|
|
51
51
|
};
|
|
52
52
|
function mergeDetectionOptions(cliOptions, userOptions, defaultOptions = DEFAULT_I18NEXT_DETECTION_OPTIONS) {
|
|
53
|
-
return (0,
|
|
53
|
+
return (0, deepMerge_js_namespaceObject.deepMerge)((0, deepMerge_js_namespaceObject.deepMerge)(defaultOptions, cliOptions ?? {}), userOptions ?? {});
|
|
54
54
|
}
|
|
55
55
|
exports.DEFAULT_I18NEXT_DETECTION_OPTIONS = __webpack_exports__.DEFAULT_I18NEXT_DETECTION_OPTIONS;
|
|
56
56
|
exports.mergeDetectionOptions = __webpack_exports__.mergeDetectionOptions;
|
|
@@ -29,13 +29,13 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
mergeDetectionOptions: ()=>mergeDetectionOptions,
|
|
30
30
|
getLanguageFromSSRData: ()=>getLanguageFromSSRData,
|
|
31
31
|
detectLanguageWithPriority: ()=>detectLanguageWithPriority,
|
|
32
|
-
cacheUserLanguage: ()=>
|
|
32
|
+
cacheUserLanguage: ()=>external_middleware_js_namespaceObject.cacheUserLanguage
|
|
33
33
|
});
|
|
34
34
|
const runtime_namespaceObject = require("@modern-js/runtime");
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
35
|
+
const external_utils_js_namespaceObject = require("../../utils.js");
|
|
36
|
+
const external_instance_js_namespaceObject = require("../instance.js");
|
|
37
|
+
const external_config_js_namespaceObject = require("./config.js");
|
|
38
|
+
const external_middleware_js_namespaceObject = require("./middleware.js");
|
|
39
39
|
const detectorInstanceCache = new WeakMap();
|
|
40
40
|
const DETECTOR_SAFE_OPTION_KEYS = [
|
|
41
41
|
'lowerCaseLng',
|
|
@@ -146,7 +146,7 @@ const detectLanguageFromPathPriority = (pathname, languages, localePathRedirect)
|
|
|
146
146
|
if (!languages || 0 === languages.length) return;
|
|
147
147
|
if (!pathname || '' === pathname.trim()) return;
|
|
148
148
|
try {
|
|
149
|
-
const pathDetection = (0,
|
|
149
|
+
const pathDetection = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(pathname, languages, localePathRedirect);
|
|
150
150
|
if (true === pathDetection.detected && pathDetection.language) return pathDetection.language;
|
|
151
151
|
} catch (error) {}
|
|
152
152
|
};
|
|
@@ -207,7 +207,7 @@ const initializeI18nForDetector = async (i18nInstance, options)=>{
|
|
|
207
207
|
useSuspense: false
|
|
208
208
|
}
|
|
209
209
|
};
|
|
210
|
-
(0,
|
|
210
|
+
(0, external_middleware_js_namespaceObject.useI18nextLanguageDetector)(instance);
|
|
211
211
|
if (instance.isInitialized) {
|
|
212
212
|
if (isTemporary) await instance.init(initOptions);
|
|
213
213
|
} else await instance.init(initOptions);
|
|
@@ -223,7 +223,7 @@ const detectLanguageFromI18nextDetector = async (i18nInstance, options)=>{
|
|
|
223
223
|
try {
|
|
224
224
|
const request = options.ssrContext?.request;
|
|
225
225
|
if (!(0, runtime_namespaceObject.isBrowser)() && !request) return;
|
|
226
|
-
const detectorLang = (0,
|
|
226
|
+
const detectorLang = (0, external_middleware_js_namespaceObject.detectLanguage)(detectorInstance, request, mergedDetection);
|
|
227
227
|
if (detectorLang) {
|
|
228
228
|
const supportedLang = getSupportedLanguage(detectorLang, options.languages);
|
|
229
229
|
if (supportedLang) return supportedLang;
|
|
@@ -249,7 +249,7 @@ const detectLanguageWithPriority = async (i18nInstance, options)=>{
|
|
|
249
249
|
let detectedLanguage;
|
|
250
250
|
detectedLanguage = detectLanguageFromSSR(languages);
|
|
251
251
|
if (!detectedLanguage) detectedLanguage = detectLanguageFromPathPriority(pathname, languages, localePathRedirect);
|
|
252
|
-
if (!detectedLanguage && i18nextDetector) detectedLanguage = (0,
|
|
252
|
+
if (!detectedLanguage && i18nextDetector) detectedLanguage = (0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) ? (0, external_middleware_js_namespaceObject.readLanguageFromStorage)(mergeDetectionOptions(i18nextDetector, detection, localePathRedirect, userInitOptions)) : await detectLanguageFromI18nextDetector(i18nInstance, {
|
|
253
253
|
languages,
|
|
254
254
|
fallbackLanguage,
|
|
255
255
|
localePathRedirect,
|
|
@@ -285,7 +285,7 @@ const buildInitOptions = (params)=>{
|
|
|
285
285
|
};
|
|
286
286
|
const mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
|
|
287
287
|
let mergedDetection;
|
|
288
|
-
mergedDetection = i18nextDetector ? (0,
|
|
288
|
+
mergedDetection = i18nextDetector ? (0, external_config_js_namespaceObject.mergeDetectionOptions)(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
|
|
289
289
|
if (!mergedDetection || 'object' != typeof mergedDetection) mergedDetection = {};
|
|
290
290
|
if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
|
|
291
291
|
return mergedDetection;
|
|
@@ -41,11 +41,11 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
41
41
|
const runtime_namespaceObject = require("@modern-js/runtime");
|
|
42
42
|
const external_i18next_browser_languagedetector_namespaceObject = require("i18next-browser-languagedetector");
|
|
43
43
|
var external_i18next_browser_languagedetector_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_browser_languagedetector_namespaceObject);
|
|
44
|
-
const
|
|
44
|
+
const external_instance_js_namespaceObject = require("../instance.js");
|
|
45
45
|
const useI18nextLanguageDetector = (i18nInstance)=>{
|
|
46
46
|
if (!i18nInstance.isInitialized) {
|
|
47
|
-
if ((0,
|
|
48
|
-
const actualInstance = (0,
|
|
47
|
+
if ((0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance)) {
|
|
48
|
+
const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
|
|
49
49
|
if (actualInstance && !actualInstance.isInitialized) actualInstance.use(external_i18next_browser_languagedetector_default());
|
|
50
50
|
}
|
|
51
51
|
return i18nInstance.use(external_i18next_browser_languagedetector_default());
|
|
@@ -111,7 +111,7 @@ const readLanguageFromStorage = (detectionOptions)=>{
|
|
|
111
111
|
};
|
|
112
112
|
const detectLanguage = (i18nInstance, _request, detectionOptions)=>{
|
|
113
113
|
try {
|
|
114
|
-
const actualInstance = (0,
|
|
114
|
+
const actualInstance = (0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) ? (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance) : i18nInstance;
|
|
115
115
|
const isInitialized = i18nInstance.isInitialized || actualInstance?.isInitialized;
|
|
116
116
|
const detector = actualInstance?.services?.languageDetector || i18nInstance.services?.languageDetector;
|
|
117
117
|
if (detector && 'function' == typeof detector.detect) {
|
|
@@ -143,7 +143,7 @@ const detectLanguage = (i18nInstance, _request, detectionOptions)=>{
|
|
|
143
143
|
const cacheUserLanguage = (i18nInstance, language, detectionOptions)=>{
|
|
144
144
|
if ("u" < typeof window) return;
|
|
145
145
|
try {
|
|
146
|
-
const actualInstance = (0,
|
|
146
|
+
const actualInstance = (0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) ? (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance) : i18nInstance;
|
|
147
147
|
const detector = actualInstance?.services?.languageDetector || i18nInstance.services?.languageDetector;
|
|
148
148
|
if (detector && 'function' == typeof detector.cacheUserLanguage) try {
|
|
149
149
|
detector.cacheUserLanguage(language);
|
|
@@ -24,12 +24,12 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
getI18nInstance: ()=>
|
|
28
|
-
isI18nInstance: ()=>
|
|
29
|
-
assertI18nInstance: ()=>
|
|
27
|
+
getI18nInstance: ()=>external_instance_js_namespaceObject.getI18nInstance,
|
|
28
|
+
isI18nInstance: ()=>external_instance_js_namespaceObject.isI18nInstance,
|
|
29
|
+
assertI18nInstance: ()=>external_utils_js_namespaceObject.assertI18nInstance
|
|
30
30
|
});
|
|
31
|
-
const
|
|
32
|
-
const
|
|
31
|
+
const external_instance_js_namespaceObject = require("./instance.js");
|
|
32
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
33
33
|
exports.assertI18nInstance = __webpack_exports__.assertI18nInstance;
|
|
34
34
|
exports.getI18nInstance = __webpack_exports__.getI18nInstance;
|
|
35
35
|
exports.isI18nInstance = __webpack_exports__.isI18nInstance;
|
|
@@ -32,13 +32,13 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
32
32
|
ensureLanguageMatch: ()=>ensureLanguageMatch
|
|
33
33
|
});
|
|
34
34
|
const runtime_namespaceObject = require("@modern-js/runtime");
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
35
|
+
const index_js_namespaceObject = require("./backend/index.js");
|
|
36
|
+
const middleware_js_namespaceObject = require("./backend/middleware.js");
|
|
37
|
+
const sdk_backend_js_namespaceObject = require("./backend/sdk-backend.js");
|
|
38
|
+
const external_detection_index_js_namespaceObject = require("./detection/index.js");
|
|
39
|
+
const external_instance_js_namespaceObject = require("./instance.js");
|
|
40
40
|
function assertI18nInstance(obj) {
|
|
41
|
-
if (!(0,
|
|
41
|
+
if (!(0, external_instance_js_namespaceObject.isI18nInstance)(obj)) throw new Error('Object does not implement I18nInstance interface');
|
|
42
42
|
}
|
|
43
43
|
const buildInitOptions = async (finalLanguage, fallbackLanguage, languages, mergedDetection, mergedBackend, userInitOptions, useSuspense, i18nInstance)=>{
|
|
44
44
|
const defaultUseSuspense = void 0 !== useSuspense ? useSuspense : (0, runtime_namespaceObject.isBrowser)() ? userInitOptions?.react?.useSuspense ?? true : false;
|
|
@@ -71,8 +71,8 @@ const buildInitOptions = async (finalLanguage, fallbackLanguage, languages, merg
|
|
|
71
71
|
HttpBackend = i18nInstance.options.backend.backends[0];
|
|
72
72
|
SdkBackendClass = i18nInstance.options.backend.backends[1];
|
|
73
73
|
} else {
|
|
74
|
-
HttpBackend =
|
|
75
|
-
SdkBackendClass =
|
|
74
|
+
HttpBackend = middleware_js_namespaceObject.HttpBackendWithSave;
|
|
75
|
+
SdkBackendClass = sdk_backend_js_namespaceObject.SdkBackend;
|
|
76
76
|
}
|
|
77
77
|
initOptions.backend = {
|
|
78
78
|
backends: [
|
|
@@ -101,18 +101,18 @@ const changeI18nLanguage = async (i18nInstance, newLang, options)=>{
|
|
|
101
101
|
await i18nInstance.changeLanguage?.(newLang);
|
|
102
102
|
if ((0, runtime_namespaceObject.isBrowser)()) {
|
|
103
103
|
const detectionOptions = options?.detectionOptions || i18nInstance.options?.detection;
|
|
104
|
-
(0,
|
|
104
|
+
(0, external_detection_index_js_namespaceObject.cacheUserLanguage)(i18nInstance, newLang, detectionOptions);
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
107
|
const initializeI18nInstance = async (i18nInstance, finalLanguage, fallbackLanguage, languages, mergedDetection, mergedBackend, userInitOptions, useSuspense)=>{
|
|
108
108
|
if (!i18nInstance.isInitialized) {
|
|
109
109
|
const initOptions = await buildInitOptions(finalLanguage, fallbackLanguage, languages, mergedDetection, mergedBackend, userInitOptions, useSuspense, i18nInstance);
|
|
110
|
-
const actualInstance = (0,
|
|
110
|
+
const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
|
|
111
111
|
const savedBackendConfig = actualInstance?.options?.backend || i18nInstance.options?.backend;
|
|
112
112
|
const isChainedBackendFromSaved = savedBackendConfig?.backends && Array.isArray(savedBackendConfig.backends);
|
|
113
113
|
await i18nInstance.init(initOptions);
|
|
114
114
|
if (mergedBackend) {
|
|
115
|
-
if ((0,
|
|
115
|
+
if ((0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) && actualInstance?.options) {
|
|
116
116
|
if (isChainedBackendFromSaved && initOptions.backend) actualInstance.options.backend = {
|
|
117
117
|
...initOptions.backend,
|
|
118
118
|
backends: savedBackendConfig.backends
|
|
@@ -138,7 +138,7 @@ const initializeI18nInstance = async (i18nInstance, finalLanguage, fallbackLangu
|
|
|
138
138
|
const ns = Array.isArray(defaultNS) ? defaultNS[0] : defaultNS;
|
|
139
139
|
let retries = 20;
|
|
140
140
|
while(retries > 0){
|
|
141
|
-
const actualInstance = (0,
|
|
141
|
+
const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
|
|
142
142
|
const store = actualInstance.store;
|
|
143
143
|
if (store?.data?.[finalLanguage]?.[ns]) break;
|
|
144
144
|
await new Promise((resolve)=>setTimeout(resolve, 100));
|
|
@@ -151,17 +151,17 @@ function hasOptions(instance) {
|
|
|
151
151
|
return void 0 !== instance.options && null !== instance.options;
|
|
152
152
|
}
|
|
153
153
|
const setupClonedInstance = async (i18nInstance, finalLanguage, fallbackLanguage, languages, backendEnabled, backend, i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
|
|
154
|
-
const mergedBackend = (0,
|
|
154
|
+
const mergedBackend = (0, index_js_namespaceObject.mergeBackendOptions)(backend, userInitOptions);
|
|
155
155
|
const hasSdkConfig = 'function' == typeof userInitOptions?.backend?.sdk || mergedBackend?.sdk && 'function' == typeof mergedBackend.sdk;
|
|
156
156
|
if (backendEnabled || hasSdkConfig) {
|
|
157
|
-
(0,
|
|
157
|
+
(0, middleware_js_namespaceObject.useI18nextBackend)(i18nInstance, mergedBackend);
|
|
158
158
|
if (mergedBackend && hasOptions(i18nInstance)) i18nInstance.options.backend = {
|
|
159
159
|
...i18nInstance.options.backend,
|
|
160
160
|
...mergedBackend
|
|
161
161
|
};
|
|
162
162
|
if (i18nInstance.isInitialized) await ensureLanguageMatch(i18nInstance, finalLanguage);
|
|
163
163
|
else {
|
|
164
|
-
const mergedDetection = (0,
|
|
164
|
+
const mergedDetection = (0, external_detection_index_js_namespaceObject.mergeDetectionOptions)(i18nextDetector, detection, localePathRedirect, userInitOptions);
|
|
165
165
|
await initializeI18nInstance(i18nInstance, finalLanguage, fallbackLanguage, languages, mergedDetection, mergedBackend, userInitOptions, false);
|
|
166
166
|
}
|
|
167
167
|
} else await ensureLanguageMatch(i18nInstance, finalLanguage);
|