@bleedingdev/modern-js-plugin-i18n 3.8.1-ultramodern.2 → 3.8.1-ultramodern.4

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.
Files changed (35) hide show
  1. package/dist/cjs/runtime/i18n/detection/detector.js +1 -1
  2. package/dist/cjs/runtime/i18n/detection/index.js +0 -6
  3. package/dist/cjs/runtime/i18n/detection/initOptions.js +0 -22
  4. package/dist/cjs/runtime/i18n/detection/language.js +2 -14
  5. package/dist/cjs/runtime/i18n/detection/priority.js +0 -1
  6. package/dist/cjs/runtime/pluginSetup.js +0 -1
  7. package/dist/cjs/server/detectorOptions.js +1 -7
  8. package/dist/esm/runtime/i18n/detection/detector.mjs +2 -2
  9. package/dist/esm/runtime/i18n/detection/index.mjs +2 -2
  10. package/dist/esm/runtime/i18n/detection/initOptions.mjs +1 -20
  11. package/dist/esm/runtime/i18n/detection/language.mjs +1 -10
  12. package/dist/esm/runtime/i18n/detection/priority.mjs +0 -1
  13. package/dist/esm/runtime/pluginSetup.mjs +0 -1
  14. package/dist/esm/server/detectorOptions.mjs +1 -7
  15. package/dist/esm-node/runtime/i18n/detection/detector.mjs +2 -2
  16. package/dist/esm-node/runtime/i18n/detection/index.mjs +2 -2
  17. package/dist/esm-node/runtime/i18n/detection/initOptions.mjs +1 -20
  18. package/dist/esm-node/runtime/i18n/detection/language.mjs +1 -10
  19. package/dist/esm-node/runtime/i18n/detection/priority.mjs +0 -1
  20. package/dist/esm-node/runtime/pluginSetup.mjs +0 -1
  21. package/dist/esm-node/server/detectorOptions.mjs +1 -7
  22. package/dist/types/runtime/i18n/detection/index.d.ts +2 -3
  23. package/dist/types/runtime/i18n/detection/initOptions.d.ts +0 -5
  24. package/dist/types/runtime/i18n/detection/language.d.ts +0 -5
  25. package/dist/types/runtime/i18n/detection/types.d.ts +1 -13
  26. package/dist/types/server/detectorOptions.d.ts +1 -1
  27. package/package.json +10 -10
  28. package/src/runtime/i18n/detection/detector.ts +2 -2
  29. package/src/runtime/i18n/detection/index.ts +2 -8
  30. package/src/runtime/i18n/detection/initOptions.ts +0 -35
  31. package/src/runtime/i18n/detection/language.ts +0 -29
  32. package/src/runtime/i18n/detection/priority.ts +0 -1
  33. package/src/runtime/i18n/detection/types.ts +1 -18
  34. package/src/runtime/pluginSetup.ts +0 -1
  35. package/src/server/detectorOptions.ts +1 -10
@@ -77,7 +77,7 @@ const detectLanguageFromI18nextDetector = async (i18nInstance, options)=>{
77
77
  }
78
78
  if (detectorInstance.isInitialized && detectorInstance.language) {
79
79
  const currentLang = detectorInstance.language;
80
- if ((0, external_language_js_namespaceObject.isLanguageSupported)(currentLang, options.languages)) return currentLang;
80
+ if ((0, external_language_js_namespaceObject.getSupportedLanguage)(currentLang, options.languages)) return currentLang;
81
81
  }
82
82
  } catch (error) {} finally{
83
83
  if (isTemporary && detectorInstance !== i18nInstance) external_cache_js_namespaceObject.detectorInstanceCache.set(i18nInstance, {
@@ -28,29 +28,23 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- buildInitOptions: ()=>external_initOptions_js_namespaceObject.buildInitOptions,
32
31
  cacheUserLanguage: ()=>external_middleware_js_namespaceObject.cacheUserLanguage,
33
32
  detectLanguageWithPriority: ()=>external_priority_js_namespaceObject.detectLanguageWithPriority,
34
33
  exportServerLngToWindow: ()=>external_ssr_js_namespaceObject.exportServerLngToWindow,
35
- getLanguageFromSSRData: ()=>external_ssr_js_namespaceObject.getLanguageFromSSRData,
36
34
  mergeDetectionOptions: ()=>external_initOptions_js_namespaceObject.mergeDetectionOptions
37
35
  });
38
36
  const external_initOptions_js_namespaceObject = require("./initOptions.js");
39
37
  const external_middleware_js_namespaceObject = require("./middleware.js");
40
38
  const external_priority_js_namespaceObject = require("./priority.js");
41
39
  const external_ssr_js_namespaceObject = require("./ssr.js");
42
- exports.buildInitOptions = __webpack_exports__.buildInitOptions;
43
40
  exports.cacheUserLanguage = __webpack_exports__.cacheUserLanguage;
44
41
  exports.detectLanguageWithPriority = __webpack_exports__.detectLanguageWithPriority;
45
42
  exports.exportServerLngToWindow = __webpack_exports__.exportServerLngToWindow;
46
- exports.getLanguageFromSSRData = __webpack_exports__.getLanguageFromSSRData;
47
43
  exports.mergeDetectionOptions = __webpack_exports__.mergeDetectionOptions;
48
44
  for(var __rspack_i in __webpack_exports__)if (-1 === [
49
- "buildInitOptions",
50
45
  "cacheUserLanguage",
51
46
  "detectLanguageWithPriority",
52
47
  "exportServerLngToWindow",
53
- "getLanguageFromSSRData",
54
48
  "mergeDetectionOptions"
55
49
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
56
50
  Object.defineProperty(exports, '__esModule', {
@@ -28,29 +28,9 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- buildInitOptions: ()=>buildInitOptions,
32
31
  mergeDetectionOptions: ()=>mergeDetectionOptions
33
32
  });
34
- const runtime_namespaceObject = require("@modern-js/runtime");
35
33
  const external_config_js_namespaceObject = require("./config.js");
36
- const buildInitOptions = (params)=>{
37
- const { finalLanguage, fallbackLanguage, languages, userInitOptions, mergedDetection, mergeBackend } = params;
38
- return {
39
- ...userInitOptions || {},
40
- lng: finalLanguage,
41
- fallbackLng: fallbackLanguage,
42
- supportedLngs: languages,
43
- detection: mergedDetection,
44
- backend: mergeBackend,
45
- interpolation: {
46
- ...userInitOptions?.interpolation || {},
47
- escapeValue: userInitOptions?.interpolation?.escapeValue ?? false
48
- },
49
- react: {
50
- useSuspense: (0, runtime_namespaceObject.isBrowser)()
51
- }
52
- };
53
- };
54
34
  const mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
55
35
  let mergedDetection;
56
36
  mergedDetection = i18nextDetector ? (0, external_config_js_namespaceObject.mergeDetectionOptions)(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
@@ -58,10 +38,8 @@ const mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, u
58
38
  if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
59
39
  return mergedDetection;
60
40
  };
61
- exports.buildInitOptions = __webpack_exports__.buildInitOptions;
62
41
  exports.mergeDetectionOptions = __webpack_exports__.mergeDetectionOptions;
63
42
  for(var __rspack_i in __webpack_exports__)if (-1 === [
64
- "buildInitOptions",
65
43
  "mergeDetectionOptions"
66
44
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
67
45
  Object.defineProperty(exports, '__esModule', {
@@ -28,18 +28,9 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  const normalizeLanguageCode = (language)=>{
31
- if (!language) return language;
32
31
  const baseLang = language.split('-')[0];
33
32
  return baseLang;
34
33
  };
35
- const isLanguageSupported = (language, supportedLanguages)=>{
36
- if (!language) return false;
37
- if (0 === supportedLanguages.length) return true;
38
- if (supportedLanguages.includes(language)) return true;
39
- const baseLang = normalizeLanguageCode(language);
40
- if (baseLang !== language && supportedLanguages.includes(baseLang)) return true;
41
- return false;
42
- };
43
34
  const getSupportedLanguage = (language, supportedLanguages)=>{
44
35
  if (!language) return;
45
36
  if (0 === supportedLanguages.length) return language;
@@ -48,14 +39,11 @@ const getSupportedLanguage = (language, supportedLanguages)=>{
48
39
  if (baseLang !== language && supportedLanguages.includes(baseLang)) return baseLang;
49
40
  };
50
41
  __webpack_require__.d(__webpack_exports__, {}, {
51
- getSupportedLanguage: getSupportedLanguage,
52
- isLanguageSupported: isLanguageSupported
42
+ getSupportedLanguage: getSupportedLanguage
53
43
  });
54
44
  exports.getSupportedLanguage = __webpack_exports__.getSupportedLanguage;
55
- exports.isLanguageSupported = __webpack_exports__.isLanguageSupported;
56
45
  for(var __rspack_i in __webpack_exports__)if (-1 === [
57
- "getSupportedLanguage",
58
- "isLanguageSupported"
46
+ "getSupportedLanguage"
59
47
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
60
48
  Object.defineProperty(exports, '__esModule', {
61
49
  value: true
@@ -48,7 +48,6 @@ const detectLanguageWithPriority = async (i18nInstance, options)=>{
48
48
  i18nextDetector,
49
49
  detection,
50
50
  userInitOptions,
51
- mergedBackend: options.mergedBackend,
52
51
  ssrContext
53
52
  });
54
53
  const finalLanguage = detectedLanguage || userInitOptions?.lng || fallbackLanguage;
@@ -74,7 +74,6 @@ async function setupI18nBeforeRender(context, options) {
74
74
  i18nextDetector,
75
75
  detection,
76
76
  userInitOptions,
77
- mergedBackend,
78
77
  pathname,
79
78
  ssrContext: context.ssrContext
80
79
  });
@@ -45,12 +45,6 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
45
45
  'cookie',
46
46
  'header'
47
47
  ];
48
- const honoOrder = detectionOrder.map((item)=>{
49
- if ('querystring' === item) return 'querystring';
50
- if ('cookie' === item) return 'cookie';
51
- if ('header' === item) return 'header';
52
- return item;
53
- });
54
48
  const caches = false === mergedDetection.caches ? false : Array.isArray(mergedDetection.caches) && !mergedDetection.caches.includes('cookie') ? false : [
55
49
  'cookie'
56
50
  ];
@@ -75,7 +69,7 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
75
69
  fallbackLanguage
76
70
  ],
77
71
  fallbackLanguage,
78
- order: honoOrder,
72
+ order: detectionOrder,
79
73
  lookupQueryString: mergedDetection.lookupQuerystring || config_js_namespaceObject.DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupQuerystring || 'lng',
80
74
  lookupCookie: mergedDetection.lookupCookie || config_js_namespaceObject.DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupCookie || 'i18next',
81
75
  lookupFromHeaderKey: mergedDetection.lookupHeader || config_js_namespaceObject.DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupHeader || 'accept-language',
@@ -1,7 +1,7 @@
1
1
  import { isBrowser } from "@modern-js/runtime";
2
2
  import { buildDetectorConfigKey, createDetectorInstance, detectorInstanceCache, pickSafeDetectionOptions } from "./cache.mjs";
3
3
  import { mergeDetectionOptions } from "./initOptions.mjs";
4
- import { getSupportedLanguage, isLanguageSupported } from "./language.mjs";
4
+ import { getSupportedLanguage } from "./language.mjs";
5
5
  import { detectLanguage, useI18nextLanguageDetector } from "./middleware.mjs";
6
6
  const initializeI18nForDetector = async (i18nInstance, options)=>{
7
7
  const mergedDetection = mergeDetectionOptions(options.i18nextDetector, options.detection, options.localePathRedirect, options.userInitOptions);
@@ -45,7 +45,7 @@ const detectLanguageFromI18nextDetector = async (i18nInstance, options)=>{
45
45
  }
46
46
  if (detectorInstance.isInitialized && detectorInstance.language) {
47
47
  const currentLang = detectorInstance.language;
48
- if (isLanguageSupported(currentLang, options.languages)) return currentLang;
48
+ if (getSupportedLanguage(currentLang, options.languages)) return currentLang;
49
49
  }
50
50
  } catch (error) {} finally{
51
51
  if (isTemporary && detectorInstance !== i18nInstance) detectorInstanceCache.set(i18nInstance, {
@@ -1,4 +1,4 @@
1
- export { buildInitOptions, mergeDetectionOptions } from "./initOptions.mjs";
1
+ export { mergeDetectionOptions } from "./initOptions.mjs";
2
2
  export { cacheUserLanguage } from "./middleware.mjs";
3
3
  export { detectLanguageWithPriority } from "./priority.mjs";
4
- export { exportServerLngToWindow, getLanguageFromSSRData } from "./ssr.mjs";
4
+ export { exportServerLngToWindow } from "./ssr.mjs";
@@ -1,23 +1,4 @@
1
- import { isBrowser } from "@modern-js/runtime";
2
1
  import { mergeDetectionOptions } from "./config.mjs";
3
- const buildInitOptions = (params)=>{
4
- const { finalLanguage, fallbackLanguage, languages, userInitOptions, mergedDetection, mergeBackend } = params;
5
- return {
6
- ...userInitOptions || {},
7
- lng: finalLanguage,
8
- fallbackLng: fallbackLanguage,
9
- supportedLngs: languages,
10
- detection: mergedDetection,
11
- backend: mergeBackend,
12
- interpolation: {
13
- ...userInitOptions?.interpolation || {},
14
- escapeValue: userInitOptions?.interpolation?.escapeValue ?? false
15
- },
16
- react: {
17
- useSuspense: isBrowser()
18
- }
19
- };
20
- };
21
2
  const initOptions_mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
22
3
  let mergedDetection;
23
4
  mergedDetection = i18nextDetector ? mergeDetectionOptions(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
@@ -25,4 +6,4 @@ const initOptions_mergeDetectionOptions = (i18nextDetector, detection, localePat
25
6
  if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
26
7
  return mergedDetection;
27
8
  };
28
- export { buildInitOptions, initOptions_mergeDetectionOptions as mergeDetectionOptions };
9
+ export { initOptions_mergeDetectionOptions as mergeDetectionOptions };
@@ -1,16 +1,7 @@
1
1
  const normalizeLanguageCode = (language)=>{
2
- if (!language) return language;
3
2
  const baseLang = language.split('-')[0];
4
3
  return baseLang;
5
4
  };
6
- const isLanguageSupported = (language, supportedLanguages)=>{
7
- if (!language) return false;
8
- if (0 === supportedLanguages.length) return true;
9
- if (supportedLanguages.includes(language)) return true;
10
- const baseLang = normalizeLanguageCode(language);
11
- if (baseLang !== language && supportedLanguages.includes(baseLang)) return true;
12
- return false;
13
- };
14
5
  const getSupportedLanguage = (language, supportedLanguages)=>{
15
6
  if (!language) return;
16
7
  if (0 === supportedLanguages.length) return language;
@@ -18,4 +9,4 @@ const getSupportedLanguage = (language, supportedLanguages)=>{
18
9
  const baseLang = normalizeLanguageCode(language);
19
10
  if (baseLang !== language && supportedLanguages.includes(baseLang)) return baseLang;
20
11
  };
21
- export { getSupportedLanguage, isLanguageSupported };
12
+ export { getSupportedLanguage };
@@ -16,7 +16,6 @@ const detectLanguageWithPriority = async (i18nInstance, options)=>{
16
16
  i18nextDetector,
17
17
  detection,
18
18
  userInitOptions,
19
- mergedBackend: options.mergedBackend,
20
19
  ssrContext
21
20
  });
22
21
  const finalLanguage = detectedLanguage || userInitOptions?.lng || fallbackLanguage;
@@ -42,7 +42,6 @@ async function setupI18nBeforeRender(context, options) {
42
42
  i18nextDetector,
43
43
  detection,
44
44
  userInitOptions,
45
- mergedBackend,
46
45
  pathname,
47
46
  ssrContext: context.ssrContext
48
47
  });
@@ -13,12 +13,6 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
13
13
  'cookie',
14
14
  'header'
15
15
  ];
16
- const honoOrder = detectionOrder.map((item)=>{
17
- if ('querystring' === item) return 'querystring';
18
- if ('cookie' === item) return 'cookie';
19
- if ('header' === item) return 'header';
20
- return item;
21
- });
22
16
  const caches = false === mergedDetection.caches ? false : Array.isArray(mergedDetection.caches) && !mergedDetection.caches.includes('cookie') ? false : [
23
17
  'cookie'
24
18
  ];
@@ -43,7 +37,7 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
43
37
  fallbackLanguage
44
38
  ],
45
39
  fallbackLanguage,
46
- order: honoOrder,
40
+ order: detectionOrder,
47
41
  lookupQueryString: mergedDetection.lookupQuerystring || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupQuerystring || 'lng',
48
42
  lookupCookie: mergedDetection.lookupCookie || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupCookie || 'i18next',
49
43
  lookupFromHeaderKey: mergedDetection.lookupHeader || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupHeader || 'accept-language',
@@ -2,7 +2,7 @@ import "node:module";
2
2
  import { isBrowser } from "@modern-js/runtime";
3
3
  import { buildDetectorConfigKey, createDetectorInstance, detectorInstanceCache, pickSafeDetectionOptions } from "./cache.mjs";
4
4
  import { mergeDetectionOptions } from "./initOptions.mjs";
5
- import { getSupportedLanguage, isLanguageSupported } from "./language.mjs";
5
+ import { getSupportedLanguage } from "./language.mjs";
6
6
  import { detectLanguage, useI18nextLanguageDetector } from "./middleware.mjs";
7
7
  const initializeI18nForDetector = async (i18nInstance, options)=>{
8
8
  const mergedDetection = mergeDetectionOptions(options.i18nextDetector, options.detection, options.localePathRedirect, options.userInitOptions);
@@ -46,7 +46,7 @@ const detectLanguageFromI18nextDetector = async (i18nInstance, options)=>{
46
46
  }
47
47
  if (detectorInstance.isInitialized && detectorInstance.language) {
48
48
  const currentLang = detectorInstance.language;
49
- if (isLanguageSupported(currentLang, options.languages)) return currentLang;
49
+ if (getSupportedLanguage(currentLang, options.languages)) return currentLang;
50
50
  }
51
51
  } catch (error) {} finally{
52
52
  if (isTemporary && detectorInstance !== i18nInstance) detectorInstanceCache.set(i18nInstance, {
@@ -1,5 +1,5 @@
1
1
  import "node:module";
2
- export { buildInitOptions, mergeDetectionOptions } from "./initOptions.mjs";
2
+ export { mergeDetectionOptions } from "./initOptions.mjs";
3
3
  export { cacheUserLanguage } from "./middleware.mjs";
4
4
  export { detectLanguageWithPriority } from "./priority.mjs";
5
- export { exportServerLngToWindow, getLanguageFromSSRData } from "./ssr.mjs";
5
+ export { exportServerLngToWindow } from "./ssr.mjs";
@@ -1,24 +1,5 @@
1
1
  import "node:module";
2
- import { isBrowser } from "@modern-js/runtime";
3
2
  import { mergeDetectionOptions } from "./config.mjs";
4
- const buildInitOptions = (params)=>{
5
- const { finalLanguage, fallbackLanguage, languages, userInitOptions, mergedDetection, mergeBackend } = params;
6
- return {
7
- ...userInitOptions || {},
8
- lng: finalLanguage,
9
- fallbackLng: fallbackLanguage,
10
- supportedLngs: languages,
11
- detection: mergedDetection,
12
- backend: mergeBackend,
13
- interpolation: {
14
- ...userInitOptions?.interpolation || {},
15
- escapeValue: userInitOptions?.interpolation?.escapeValue ?? false
16
- },
17
- react: {
18
- useSuspense: isBrowser()
19
- }
20
- };
21
- };
22
3
  const initOptions_mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
23
4
  let mergedDetection;
24
5
  mergedDetection = i18nextDetector ? mergeDetectionOptions(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
@@ -26,4 +7,4 @@ const initOptions_mergeDetectionOptions = (i18nextDetector, detection, localePat
26
7
  if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
27
8
  return mergedDetection;
28
9
  };
29
- export { buildInitOptions, initOptions_mergeDetectionOptions as mergeDetectionOptions };
10
+ export { initOptions_mergeDetectionOptions as mergeDetectionOptions };
@@ -1,17 +1,8 @@
1
1
  import "node:module";
2
2
  const normalizeLanguageCode = (language)=>{
3
- if (!language) return language;
4
3
  const baseLang = language.split('-')[0];
5
4
  return baseLang;
6
5
  };
7
- const isLanguageSupported = (language, supportedLanguages)=>{
8
- if (!language) return false;
9
- if (0 === supportedLanguages.length) return true;
10
- if (supportedLanguages.includes(language)) return true;
11
- const baseLang = normalizeLanguageCode(language);
12
- if (baseLang !== language && supportedLanguages.includes(baseLang)) return true;
13
- return false;
14
- };
15
6
  const getSupportedLanguage = (language, supportedLanguages)=>{
16
7
  if (!language) return;
17
8
  if (0 === supportedLanguages.length) return language;
@@ -19,4 +10,4 @@ const getSupportedLanguage = (language, supportedLanguages)=>{
19
10
  const baseLang = normalizeLanguageCode(language);
20
11
  if (baseLang !== language && supportedLanguages.includes(baseLang)) return baseLang;
21
12
  };
22
- export { getSupportedLanguage, isLanguageSupported };
13
+ export { getSupportedLanguage };
@@ -17,7 +17,6 @@ const detectLanguageWithPriority = async (i18nInstance, options)=>{
17
17
  i18nextDetector,
18
18
  detection,
19
19
  userInitOptions,
20
- mergedBackend: options.mergedBackend,
21
20
  ssrContext
22
21
  });
23
22
  const finalLanguage = detectedLanguage || userInitOptions?.lng || fallbackLanguage;
@@ -43,7 +43,6 @@ async function setupI18nBeforeRender(context, options) {
43
43
  i18nextDetector,
44
44
  detection,
45
45
  userInitOptions,
46
- mergedBackend,
47
46
  pathname,
48
47
  ssrContext: context.ssrContext
49
48
  });
@@ -14,12 +14,6 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
14
14
  'cookie',
15
15
  'header'
16
16
  ];
17
- const honoOrder = detectionOrder.map((item)=>{
18
- if ('querystring' === item) return 'querystring';
19
- if ('cookie' === item) return 'cookie';
20
- if ('header' === item) return 'header';
21
- return item;
22
- });
23
17
  const caches = false === mergedDetection.caches ? false : Array.isArray(mergedDetection.caches) && !mergedDetection.caches.includes('cookie') ? false : [
24
18
  'cookie'
25
19
  ];
@@ -44,7 +38,7 @@ const convertToHonoLanguageDetectorOptions = (languages, fallbackLanguage, detec
44
38
  fallbackLanguage
45
39
  ],
46
40
  fallbackLanguage,
47
- order: honoOrder,
41
+ order: detectionOrder,
48
42
  lookupQueryString: mergedDetection.lookupQuerystring || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupQuerystring || 'lng',
49
43
  lookupCookie: mergedDetection.lookupCookie || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupCookie || 'i18next',
50
44
  lookupFromHeaderKey: mergedDetection.lookupHeader || DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupHeader || 'accept-language',
@@ -1,5 +1,4 @@
1
- export { buildInitOptions, mergeDetectionOptions } from './initOptions';
1
+ export { mergeDetectionOptions } from './initOptions';
2
2
  export { cacheUserLanguage } from './middleware';
3
3
  export { detectLanguageWithPriority } from './priority';
4
- export { exportServerLngToWindow, getLanguageFromSSRData } from './ssr';
5
- export type { BaseLanguageDetectionOptions, BuildInitOptionsParams, LanguageDetectionOptions, LanguageDetectionResult, } from './types';
4
+ export { exportServerLngToWindow } from './ssr';
@@ -1,9 +1,4 @@
1
1
  import type { I18nInitOptions, LanguageDetectorOptions } from '../instance';
2
- import type { BuildInitOptionsParams } from './types';
3
- /**
4
- * Build i18n initialization options
5
- */
6
- export declare const buildInitOptions: (params: BuildInitOptionsParams) => I18nInitOptions;
7
2
  /**
8
3
  * Merge detection and backend options
9
4
  */
@@ -1,8 +1,3 @@
1
- /**
2
- * Check if a language is supported
3
- * Also checks the base language code (e.g., 'zh-CN' matches 'zh')
4
- */
5
- export declare const isLanguageSupported: (language: string | undefined, supportedLanguages: string[]) => boolean;
6
1
  /**
7
2
  * Get the supported language that matches the given language
8
3
  * Returns the exact match if available, otherwise returns the base language code match
@@ -1,4 +1,4 @@
1
- import type { BackendOptions, I18nInitOptions, LanguageDetectorOptions } from '../instance';
1
+ import type { I18nInitOptions, LanguageDetectorOptions } from '../instance';
2
2
  export interface LanguageDetectionSsrContext {
3
3
  request?: unknown;
4
4
  }
@@ -9,7 +9,6 @@ export interface BaseLanguageDetectionOptions {
9
9
  i18nextDetector: boolean;
10
10
  detection?: LanguageDetectorOptions;
11
11
  userInitOptions?: I18nInitOptions;
12
- mergedBackend?: BackendOptions;
13
12
  }
14
13
  export interface LanguageDetectionOptions extends BaseLanguageDetectionOptions {
15
14
  pathname: string;
@@ -19,14 +18,3 @@ export interface LanguageDetectionResult {
19
18
  detectedLanguage?: string;
20
19
  finalLanguage: string;
21
20
  }
22
- /**
23
- * Options for building i18n init options
24
- */
25
- export interface BuildInitOptionsParams {
26
- finalLanguage: string;
27
- fallbackLanguage: string;
28
- languages: string[];
29
- userInitOptions?: I18nInitOptions;
30
- mergedDetection?: LanguageDetectorOptions;
31
- mergeBackend?: BackendOptions;
32
- }
@@ -5,7 +5,7 @@ import type { LanguageDetectorOptions } from '../runtime/i18n/instance';
5
5
  export declare const convertToHonoLanguageDetectorOptions: (languages: string[], fallbackLanguage: string, detectionOptions?: LanguageDetectorOptions) => {
6
6
  supportedLanguages: string[];
7
7
  fallbackLanguage: string;
8
- order: ("cookie" | "header" | "path" | "querystring")[];
8
+ order: ('querystring' | 'cookie' | 'header' | 'path')[];
9
9
  lookupQueryString: string;
10
10
  lookupCookie: string;
11
11
  lookupFromHeaderKey: string;
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.8.1-ultramodern.2",
20
+ "version": "3.8.1-ultramodern.4",
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
@@ -91,12 +91,12 @@
91
91
  }
92
92
  },
93
93
  "dependencies": {
94
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.8.1-ultramodern.2",
95
- "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.8.1-ultramodern.2",
96
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.8.1-ultramodern.2",
97
- "@modern-js/server-runtime": "npm:@bleedingdev/modern-js-server-runtime@3.8.1-ultramodern.2",
98
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.8.1-ultramodern.2",
99
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.8.1-ultramodern.2",
94
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.8.1-ultramodern.4",
95
+ "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.8.1-ultramodern.4",
96
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.8.1-ultramodern.4",
97
+ "@modern-js/server-runtime": "npm:@bleedingdev/modern-js-server-runtime@3.8.1-ultramodern.4",
98
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.8.1-ultramodern.4",
99
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.8.1-ultramodern.4",
100
100
  "@swc/helpers": "^0.5.23",
101
101
  "i18next-browser-languagedetector": "^8.2.1",
102
102
  "i18next-chained-backend": "^5.0.5",
@@ -105,7 +105,7 @@
105
105
  "i18next-http-middleware": "^3.9.7"
106
106
  },
107
107
  "peerDependencies": {
108
- "@modern-js/runtime": "3.8.1-ultramodern.2",
108
+ "@modern-js/runtime": "3.8.1-ultramodern.4",
109
109
  "i18next": ">=25.7.4",
110
110
  "react": ">=18",
111
111
  "react-dom": ">=18",
@@ -120,8 +120,8 @@
120
120
  }
121
121
  },
122
122
  "devDependencies": {
123
- "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.8.1-ultramodern.2",
124
- "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.8.1-ultramodern.2",
123
+ "@modern-js/app-tools": "npm:@bleedingdev/modern-js-app-tools@3.8.1-ultramodern.4",
124
+ "@modern-js/runtime": "npm:@bleedingdev/modern-js-runtime@3.8.1-ultramodern.4",
125
125
  "@rslib/core": "0.23.2",
126
126
  "@types/node": "^26.2.0",
127
127
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  import { mergeDetectionOptions } from './initOptions';
12
12
 
13
- import { getSupportedLanguage, isLanguageSupported } from './language';
13
+ import { getSupportedLanguage } from './language';
14
14
 
15
15
  import { detectLanguage, useI18nextLanguageDetector } from './middleware';
16
16
 
@@ -136,7 +136,7 @@ export const detectLanguageFromI18nextDetector = async (
136
136
  // Fallback to instance's current language if detector didn't detect
137
137
  if (detectorInstance.isInitialized && detectorInstance.language) {
138
138
  const currentLang = detectorInstance.language;
139
- if (isLanguageSupported(currentLang, options.languages)) {
139
+ if (getSupportedLanguage(currentLang, options.languages)) {
140
140
  return currentLang;
141
141
  }
142
142
  }
@@ -1,10 +1,4 @@
1
- export { buildInitOptions, mergeDetectionOptions } from './initOptions';
1
+ export { mergeDetectionOptions } from './initOptions';
2
2
  export { cacheUserLanguage } from './middleware';
3
3
  export { detectLanguageWithPriority } from './priority';
4
- export { exportServerLngToWindow, getLanguageFromSSRData } from './ssr';
5
- export type {
6
- BaseLanguageDetectionOptions,
7
- BuildInitOptionsParams,
8
- LanguageDetectionOptions,
9
- LanguageDetectionResult,
10
- } from './types';
4
+ export { exportServerLngToWindow } from './ssr';
@@ -1,42 +1,7 @@
1
- import { isBrowser } from '@modern-js/runtime';
2
1
  import type { I18nInitOptions, LanguageDetectorOptions } from '../instance';
3
2
 
4
3
  import { mergeDetectionOptions as mergeDetectionOptionsUtil } from './config';
5
4
 
6
- import type { BuildInitOptionsParams } from './types';
7
-
8
- /**
9
- * Build i18n initialization options
10
- */
11
- export const buildInitOptions = (
12
- params: BuildInitOptionsParams,
13
- ): I18nInitOptions => {
14
- const {
15
- finalLanguage,
16
- fallbackLanguage,
17
- languages,
18
- userInitOptions,
19
- mergedDetection,
20
- mergeBackend,
21
- } = params;
22
-
23
- return {
24
- ...(userInitOptions || {}),
25
- lng: finalLanguage,
26
- fallbackLng: fallbackLanguage,
27
- supportedLngs: languages,
28
- detection: mergedDetection,
29
- backend: mergeBackend,
30
- interpolation: {
31
- ...(userInitOptions?.interpolation || {}),
32
- escapeValue: userInitOptions?.interpolation?.escapeValue ?? false,
33
- },
34
- react: {
35
- useSuspense: isBrowser(),
36
- },
37
- } as any;
38
- };
39
-
40
5
  /**
41
6
  * Merge detection and backend options
42
7
  */
@@ -2,40 +2,11 @@
2
2
  * Normalize language code (e.g., 'zh-CN' -> 'zh', 'en-US' -> 'en')
3
3
  */
4
4
  const normalizeLanguageCode = (language: string): string => {
5
- if (!language) {
6
- return language;
7
- }
8
5
  // Extract base language code (before hyphen)
9
6
  const baseLang = language.split('-')[0];
10
7
  return baseLang;
11
8
  };
12
9
 
13
- /**
14
- * Check if a language is supported
15
- * Also checks the base language code (e.g., 'zh-CN' matches 'zh')
16
- */
17
- export const isLanguageSupported = (
18
- language: string | undefined,
19
- supportedLanguages: string[],
20
- ): boolean => {
21
- if (!language) {
22
- return false;
23
- }
24
- if (supportedLanguages.length === 0) {
25
- return true;
26
- }
27
- // Check exact match first
28
- if (supportedLanguages.includes(language)) {
29
- return true;
30
- }
31
- // Check base language code match (e.g., 'zh-CN' matches 'zh')
32
- const baseLang = normalizeLanguageCode(language);
33
- if (baseLang !== language && supportedLanguages.includes(baseLang)) {
34
- return true;
35
- }
36
- return false;
37
- };
38
-
39
10
  /**
40
11
  * Get the supported language that matches the given language
41
12
  * Returns the exact match if available, otherwise returns the base language code match
@@ -68,7 +68,6 @@ export const detectLanguageWithPriority = async (
68
68
  i18nextDetector,
69
69
  detection,
70
70
  userInitOptions,
71
- mergedBackend: options.mergedBackend,
72
71
  ssrContext,
73
72
  });
74
73
  }
@@ -1,8 +1,4 @@
1
- import type {
2
- BackendOptions,
3
- I18nInitOptions,
4
- LanguageDetectorOptions,
5
- } from '../instance';
1
+ import type { I18nInitOptions, LanguageDetectorOptions } from '../instance';
6
2
 
7
3
  export interface LanguageDetectionSsrContext {
8
4
  request?: unknown;
@@ -15,7 +11,6 @@ export interface BaseLanguageDetectionOptions {
15
11
  i18nextDetector: boolean;
16
12
  detection?: LanguageDetectorOptions;
17
13
  userInitOptions?: I18nInitOptions;
18
- mergedBackend?: BackendOptions;
19
14
  }
20
15
 
21
16
  export interface LanguageDetectionOptions extends BaseLanguageDetectionOptions {
@@ -27,15 +22,3 @@ export interface LanguageDetectionResult {
27
22
  detectedLanguage?: string;
28
23
  finalLanguage: string;
29
24
  }
30
-
31
- /**
32
- * Options for building i18n init options
33
- */
34
- export interface BuildInitOptionsParams {
35
- finalLanguage: string;
36
- fallbackLanguage: string;
37
- languages: string[];
38
- userInitOptions?: I18nInitOptions;
39
- mergedDetection?: LanguageDetectorOptions;
40
- mergeBackend?: BackendOptions;
41
- }
@@ -138,7 +138,6 @@ export async function setupI18nBeforeRender(
138
138
  i18nextDetector,
139
139
  detection,
140
140
  userInitOptions,
141
- mergedBackend,
142
141
  pathname,
143
142
  ssrContext: context.ssrContext,
144
143
  });
@@ -29,15 +29,6 @@ export const convertToHonoLanguageDetectorOptions = (
29
29
  const detectionOrder =
30
30
  order.length > 0 ? order : ['querystring', 'cookie', 'header'];
31
31
 
32
- // Map i18next order to hono order
33
- const honoOrder = detectionOrder.map(item => {
34
- // Map 'querystring' to 'querystring', 'cookie' to 'cookie', 'header' to 'header'
35
- if (item === 'querystring') return 'querystring';
36
- if (item === 'cookie') return 'cookie';
37
- if (item === 'header') return 'header';
38
- return item;
39
- }) as ('querystring' | 'cookie' | 'header' | 'path')[];
40
-
41
32
  // Determine caches option
42
33
  // hono languageDetector expects: false | "cookie"[] | undefined
43
34
  const caches: false | ['cookie'] | undefined =
@@ -85,7 +76,7 @@ export const convertToHonoLanguageDetectorOptions = (
85
76
  return {
86
77
  supportedLanguages: languages.length > 0 ? languages : [fallbackLanguage],
87
78
  fallbackLanguage,
88
- order: honoOrder,
79
+ order: detectionOrder as ('querystring' | 'cookie' | 'header' | 'path')[],
89
80
  lookupQueryString:
90
81
  mergedDetection.lookupQuerystring ||
91
82
  DEFAULT_I18NEXT_DETECTION_OPTIONS.lookupQuerystring ||