@intlayer/docs 7.1.0 → 7.1.1-canary.1

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 (176) hide show
  1. package/blog/ar/internationalization_and_SEO.md +0 -4
  2. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  3. package/blog/de/internationalization_and_SEO.md +0 -2
  4. package/blog/en/internationalization_and_SEO.md +0 -2
  5. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  6. package/blog/en-GB/internationalization_and_SEO.md +0 -2
  7. package/blog/es/internationalization_and_SEO.md +0 -4
  8. package/blog/fr/internationalization_and_SEO.md +0 -2
  9. package/blog/hi/internationalization_and_SEO.md +0 -2
  10. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  11. package/blog/it/internationalization_and_SEO.md +0 -2
  12. package/blog/ja/internationalization_and_SEO.md +0 -2
  13. package/blog/ko/internationalization_and_SEO.md +0 -2
  14. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  15. package/blog/pt/internationalization_and_SEO.md +0 -4
  16. package/blog/ru/internationalization_and_SEO.md +0 -4
  17. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
  18. package/blog/zh/internationalization_and_SEO.md +0 -4
  19. package/docs/ar/intlayer_with_nextjs_14.md +9 -9
  20. package/docs/ar/intlayer_with_nextjs_15.md +9 -8
  21. package/docs/ar/intlayer_with_nextjs_16.md +2 -56
  22. package/docs/ar/intlayer_with_nextjs_page_router.md +7 -10
  23. package/docs/ar/intlayer_with_react_router_v7.md +6 -6
  24. package/docs/ar/intlayer_with_tanstack.md +46 -31
  25. package/docs/ar/intlayer_with_vite+preact.md +7 -7
  26. package/docs/ar/intlayer_with_vite+react.md +7 -7
  27. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  28. package/docs/de/intlayer_with_nextjs_14.md +9 -9
  29. package/docs/de/intlayer_with_nextjs_15.md +9 -8
  30. package/docs/de/intlayer_with_nextjs_page_router.md +7 -10
  31. package/docs/de/intlayer_with_react_router_v7.md +6 -6
  32. package/docs/de/intlayer_with_tanstack.md +46 -31
  33. package/docs/de/intlayer_with_vite+preact.md +7 -7
  34. package/docs/de/intlayer_with_vite+react.md +7 -7
  35. package/docs/de/intlayer_with_vite+vue.md +9 -9
  36. package/docs/en/interest_of_intlayer.md +1 -1
  37. package/docs/en/intlayer_with_nextjs_page_router.md +7 -10
  38. package/docs/en/intlayer_with_react_router_v7.md +6 -6
  39. package/docs/en/intlayer_with_tanstack.md +57 -33
  40. package/docs/en/intlayer_with_vite+preact.md +8 -8
  41. package/docs/en/intlayer_with_vite+react.md +8 -8
  42. package/docs/en/intlayer_with_vite+vue.md +8 -8
  43. package/docs/en/releases/v6.md +1 -1
  44. package/docs/en-GB/intlayer_with_nextjs_14.md +9 -9
  45. package/docs/en-GB/intlayer_with_nextjs_15.md +9 -8
  46. package/docs/en-GB/intlayer_with_nextjs_page_router.md +7 -10
  47. package/docs/en-GB/intlayer_with_react_router_v7.md +6 -6
  48. package/docs/en-GB/intlayer_with_tanstack.md +46 -31
  49. package/docs/en-GB/intlayer_with_vite+preact.md +7 -7
  50. package/docs/en-GB/intlayer_with_vite+react.md +7 -7
  51. package/docs/en-GB/intlayer_with_vite+vue.md +9 -9
  52. package/docs/es/intlayer_with_nextjs_14.md +9 -9
  53. package/docs/es/intlayer_with_nextjs_15.md +9 -8
  54. package/docs/es/intlayer_with_nextjs_page_router.md +7 -10
  55. package/docs/es/intlayer_with_react_router_v7.md +6 -6
  56. package/docs/es/intlayer_with_tanstack.md +15 -10
  57. package/docs/es/intlayer_with_vite+preact.md +7 -7
  58. package/docs/es/intlayer_with_vite+react.md +7 -7
  59. package/docs/es/intlayer_with_vite+vue.md +9 -9
  60. package/docs/fr/intlayer_with_nextjs_14.md +9 -9
  61. package/docs/fr/intlayer_with_nextjs_15.md +9 -8
  62. package/docs/fr/intlayer_with_nextjs_page_router.md +7 -10
  63. package/docs/fr/intlayer_with_react_router_v7.md +6 -6
  64. package/docs/fr/intlayer_with_tanstack.md +46 -31
  65. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  66. package/docs/fr/intlayer_with_vite+react.md +7 -7
  67. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  68. package/docs/hi/intlayer_with_nextjs_14.md +9 -9
  69. package/docs/hi/intlayer_with_nextjs_15.md +9 -8
  70. package/docs/hi/intlayer_with_nextjs_page_router.md +7 -10
  71. package/docs/hi/intlayer_with_react_router_v7.md +6 -6
  72. package/docs/hi/intlayer_with_tanstack.md +15 -10
  73. package/docs/hi/intlayer_with_vite+preact.md +7 -7
  74. package/docs/hi/intlayer_with_vite+react.md +7 -7
  75. package/docs/hi/intlayer_with_vite+vue.md +9 -9
  76. package/docs/id/interest_of_intlayer.md +1 -1
  77. package/docs/id/intlayer_with_nextjs_page_router.md +7 -10
  78. package/docs/id/intlayer_with_react_router_v7.md +6 -6
  79. package/docs/id/intlayer_with_tanstack.md +15 -10
  80. package/docs/id/intlayer_with_vite+preact.md +9 -9
  81. package/docs/id/intlayer_with_vite+react.md +8 -8
  82. package/docs/id/intlayer_with_vite+vue.md +8 -8
  83. package/docs/id/releases/v6.md +1 -1
  84. package/docs/it/intlayer_with_nextjs_14.md +9 -9
  85. package/docs/it/intlayer_with_nextjs_15.md +9 -8
  86. package/docs/it/intlayer_with_nextjs_page_router.md +7 -10
  87. package/docs/it/intlayer_with_react_router_v7.md +6 -6
  88. package/docs/it/intlayer_with_tanstack.md +46 -31
  89. package/docs/it/intlayer_with_vite+preact.md +7 -7
  90. package/docs/it/intlayer_with_vite+react.md +7 -7
  91. package/docs/it/intlayer_with_vite+vue.md +9 -9
  92. package/docs/ja/intlayer_with_nextjs_14.md +9 -9
  93. package/docs/ja/intlayer_with_nextjs_15.md +9 -8
  94. package/docs/ja/intlayer_with_nextjs_page_router.md +7 -10
  95. package/docs/ja/intlayer_with_react_router_v7.md +6 -6
  96. package/docs/ja/intlayer_with_tanstack.md +16 -10
  97. package/docs/ja/intlayer_with_vite+preact.md +7 -7
  98. package/docs/ja/intlayer_with_vite+react.md +7 -7
  99. package/docs/ja/intlayer_with_vite+vue.md +9 -9
  100. package/docs/ko/intlayer_with_nextjs_14.md +9 -9
  101. package/docs/ko/intlayer_with_nextjs_15.md +9 -8
  102. package/docs/ko/intlayer_with_nextjs_page_router.md +7 -10
  103. package/docs/ko/intlayer_with_react_router_v7.md +6 -6
  104. package/docs/ko/intlayer_with_tanstack.md +46 -31
  105. package/docs/ko/intlayer_with_vite+preact.md +7 -7
  106. package/docs/ko/intlayer_with_vite+react.md +7 -7
  107. package/docs/ko/intlayer_with_vite+vue.md +9 -9
  108. package/docs/pl/interest_of_intlayer.md +1 -1
  109. package/docs/pl/intlayer_with_nextjs_page_router.md +7 -10
  110. package/docs/pl/intlayer_with_react_router_v7.md +6 -6
  111. package/docs/pl/intlayer_with_tanstack.md +15 -10
  112. package/docs/pl/intlayer_with_vite+preact.md +10 -10
  113. package/docs/pl/intlayer_with_vite+react.md +8 -8
  114. package/docs/pl/intlayer_with_vite+vue.md +8 -8
  115. package/docs/pl/releases/v6.md +1 -1
  116. package/docs/pt/intlayer_with_nextjs_14.md +9 -9
  117. package/docs/pt/intlayer_with_nextjs_15.md +9 -8
  118. package/docs/pt/intlayer_with_nextjs_page_router.md +7 -10
  119. package/docs/pt/intlayer_with_react_router_v7.md +2 -2
  120. package/docs/pt/intlayer_with_tanstack.md +46 -31
  121. package/docs/pt/intlayer_with_vite+preact.md +7 -7
  122. package/docs/pt/intlayer_with_vite+react.md +7 -7
  123. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  124. package/docs/ru/intlayer_with_nextjs_14.md +9 -9
  125. package/docs/ru/intlayer_with_nextjs_15.md +9 -8
  126. package/docs/ru/intlayer_with_nextjs_page_router.md +7 -10
  127. package/docs/ru/intlayer_with_react_router_v7.md +6 -6
  128. package/docs/ru/intlayer_with_tanstack.md +15 -10
  129. package/docs/ru/intlayer_with_vite+preact.md +7 -7
  130. package/docs/ru/intlayer_with_vite+react.md +7 -7
  131. package/docs/ru/intlayer_with_vite+vue.md +9 -9
  132. package/docs/tr/interest_of_intlayer.md +1 -1
  133. package/docs/tr/intlayer_with_nextjs_15.md +9 -8
  134. package/docs/tr/intlayer_with_nextjs_page_router.md +7 -10
  135. package/docs/tr/intlayer_with_react_router_v7.md +6 -6
  136. package/docs/tr/intlayer_with_tanstack.md +46 -31
  137. package/docs/tr/intlayer_with_vite+preact.md +8 -8
  138. package/docs/tr/intlayer_with_vite+react.md +8 -8
  139. package/docs/tr/intlayer_with_vite+vue.md +8 -8
  140. package/docs/vi/interest_of_intlayer.md +1 -1
  141. package/docs/vi/intlayer_with_nextjs_15.md +1 -0
  142. package/docs/vi/intlayer_with_nextjs_page_router.md +7 -10
  143. package/docs/vi/intlayer_with_react_router_v7.md +6 -6
  144. package/docs/vi/intlayer_with_tanstack.md +46 -31
  145. package/docs/vi/intlayer_with_vite+preact.md +9 -9
  146. package/docs/vi/intlayer_with_vite+react.md +8 -8
  147. package/docs/vi/intlayer_with_vite+vue.md +8 -8
  148. package/docs/vi/releases/v6.md +1 -1
  149. package/docs/zh/intlayer_with_nextjs_14.md +9 -9
  150. package/docs/zh/intlayer_with_nextjs_15.md +9 -8
  151. package/docs/zh/intlayer_with_nextjs_page_router.md +7 -10
  152. package/docs/zh/intlayer_with_react_router_v7.md +6 -6
  153. package/docs/zh/intlayer_with_tanstack.md +14 -8
  154. package/docs/zh/intlayer_with_vite+preact.md +7 -7
  155. package/docs/zh/intlayer_with_vite+react.md +7 -7
  156. package/docs/zh/intlayer_with_vite+vue.md +7 -7
  157. package/frequent_questions/ar/domain_routing.md +1 -1
  158. package/frequent_questions/de/domain_routing.md +1 -1
  159. package/frequent_questions/en/domain_routing.md +1 -1
  160. package/frequent_questions/en/package_version_error.md +29 -1
  161. package/frequent_questions/en-GB/domain_routing.md +1 -1
  162. package/frequent_questions/es/domain_routing.md +1 -1
  163. package/frequent_questions/fr/domain_routing.md +1 -1
  164. package/frequent_questions/hi/domain_routing.md +1 -1
  165. package/frequent_questions/id/domain_routing.md +1 -1
  166. package/frequent_questions/it/domain_routing.md +1 -1
  167. package/frequent_questions/it/package_version_error.md +4 -4
  168. package/frequent_questions/ja/domain_routing.md +1 -1
  169. package/frequent_questions/ko/domain_routing.md +1 -1
  170. package/frequent_questions/pl/domain_routing.md +1 -1
  171. package/frequent_questions/pt/domain_routing.md +1 -1
  172. package/frequent_questions/ru/domain_routing.md +1 -1
  173. package/frequent_questions/tr/domain_routing.md +1 -1
  174. package/frequent_questions/vi/domain_routing.md +1 -1
  175. package/frequent_questions/zh/domain_routing.md +1 -1
  176. package/package.json +7 -14
@@ -211,6 +211,7 @@ import type { FC } from "react";
211
211
 
212
212
  import { Link, type LinkComponentProps } from "@tanstack/react-router";
213
213
  import { useLocale } from "react-intlayer";
214
+ import { getPrefix } from "intlayer";
214
215
 
215
216
  export const LOCALE_ROUTE = "{-$locale}" as const;
216
217
 
@@ -240,12 +241,13 @@ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
240
241
 
241
242
  export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
242
243
  const { locale } = useLocale();
244
+ const { localePrefix } = getPrefix(locale);
243
245
 
244
246
  return (
245
247
  <Link
246
248
  {...props}
247
249
  params={{
248
- locale,
250
+ locale: localePrefix,
249
251
  ...(typeof props?.params === "object" ? props?.params : {}),
250
252
  }}
251
253
  to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
@@ -262,43 +264,52 @@ Component này có hai mục tiêu:
262
264
  Sau đó, chúng ta có thể tạo một hook `useLocalizedNavigate` để điều hướng theo lập trình:
263
265
 
264
266
  ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
265
- import { useLocale } from "react-intlayer";
266
267
  import { useNavigate } from "@tanstack/react-router";
268
+ import { getPrefix } from "intlayer";
269
+ import { useLocale } from "react-intlayer";
267
270
  import { LOCALE_ROUTE } from "@/components/localized-link";
268
271
  import type { FileRouteTypes } from "@/routeTree.gen";
269
272
 
273
+ type StripLocalePrefix<T extends string> = T extends
274
+ | `/${typeof LOCALE_ROUTE}`
275
+ | `/${typeof LOCALE_ROUTE}/`
276
+ ? "/"
277
+ : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
278
+ ? `/${Rest}`
279
+ : never;
280
+
281
+ type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
282
+
283
+ type LocalizedNavigate = {
284
+ (to: LocalizedTo): ReturnType<ReturnType<typeof useNavigate>>;
285
+ (
286
+ opts: { to: LocalizedTo } & Record<string, unknown>
287
+ ): ReturnType<ReturnType<typeof useNavigate>>;
288
+ };
289
+
270
290
  export const useLocalizedNavigate = () => {
271
291
  const navigate = useNavigate();
272
292
 
273
293
  const { locale } = useLocale();
274
294
 
275
- type StripLocalePrefix<T extends string> = T extends
276
- | `/${typeof LOCALE_ROUTE}`
277
- | `/${typeof LOCALE_ROUTE}/`
278
- ? "/"
279
- : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
280
- ? `/${Rest}`
281
- : never;
282
-
283
- type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
284
-
285
- interface LocalizedNavigate {
286
- (to: LocalizedTo): ReturnType<typeof navigate>;
287
- (
288
- opts: { to: LocalizedTo } & Record<string, unknown>
289
- ): ReturnType<typeof navigate>;
290
- }
291
-
292
295
  const localizedNavigate: LocalizedNavigate = (args: any) => {
296
+ const { localePrefix } = getPrefix(locale);
297
+
293
298
  if (typeof args === "string") {
294
- return navigate({ to: `/${LOCALE_ROUTE}${args}`, params: { locale } });
299
+ return navigate({
300
+ to: `/${LOCALE_ROUTE}${args}`,
301
+ params: { locale: localePrefix },
302
+ });
295
303
  }
296
304
 
297
305
  const { to, ...rest } = args;
298
306
 
299
- const localedTo = `/${LOCALE_ROUTE}${to}` as any;
307
+ const localizedTo = `/${LOCALE_ROUTE}${to}` as any;
300
308
 
301
- return navigate({ to: localedTo, params: { locale, ...rest } as any });
309
+ return navigate({
310
+ to: localizedTo,
311
+ params: { locale: localePrefix, ...rest } as any,
312
+ });
302
313
  };
303
314
 
304
315
  return localizedNavigate;
@@ -372,8 +383,13 @@ Tạo một thành phần để cho phép người dùng thay đổi ngôn ngữ
372
383
  import type { FC } from "react";
373
384
 
374
385
  import { useLocation } from "@tanstack/react-router";
375
- import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
376
- import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
386
+ import {
387
+ getHTMLTextDir,
388
+ getLocaleName,
389
+ getPathWithoutLocale,
390
+ getPrefix,
391
+ } from "intlayer";
392
+ import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
377
393
 
378
394
  import { LocalizedLink, To } from "./localized-link";
379
395
 
@@ -392,9 +408,8 @@ export const LocaleSwitcher: FC = () => {
392
408
  <LocalizedLink
393
409
  aria-current={localeEl === locale ? "page" : undefined}
394
410
  aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
395
- onClick={() => setLocaleCookie(localeEl)}
396
- params={{ locale: localeEl }}
397
- to={pathWithoutLocale as To}
411
+ onClick={() => setLocaleInStorage(localeEl)}
412
+ params={{ locale: getPrefix(localeEl).localePrefix }}
398
413
  >
399
414
  <span>
400
415
  {/* Mã ngôn ngữ - ví dụ: FR */}
@@ -472,15 +487,15 @@ function LayoutComponent() {
472
487
 
473
488
  ### Bước 11: Thêm middleware (Tùy chọn)
474
489
 
475
- Bạn cũng có thể sử dụng `intlayerMiddleware` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
490
+ Bạn cũng có thể sử dụng `intlayerProxy` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
476
491
 
477
- > Lưu ý rằng để sử dụng `intlayerMiddleware` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
492
+ > Lưu ý rằng để sử dụng `intlayerProxy` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
478
493
 
479
494
  ```typescript {3,7} fileName="vite.config.ts"
480
495
  import { reactRouter } from "@react-router/dev/vite";
481
496
  import tailwindcss từ "@tailwindcss/vite";
482
497
  import { defineConfig } từ "vite";
483
- import { intlayer, intlayerMiddleware } từ "vite-intlayer";
498
+ import { intlayer, intlayerProxy } từ "vite-intlayer";
484
499
  import tsconfigPaths from "vite-tsconfig-paths";
485
500
 
486
501
  export default defineConfig({
@@ -489,7 +504,7 @@ export default defineConfig({
489
504
  reactRouter(),
490
505
  tsconfigPaths(),
491
506
  intlayer(),
492
- intlayerMiddleware(),
507
+ intlayerProxy(),
493
508
  ],
494
509
  });
495
510
  ```
@@ -1084,40 +1084,40 @@ const App = () => (
1084
1084
  module.exports = App;
1085
1085
  ```
1086
1086
 
1087
- Trong khi đó, bạn cũng có thể sử dụng `intlayerMiddleware` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
1087
+ Trong khi đó, bạn cũng có thể sử dụng `intlayerProxy` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
1088
1088
 
1089
- > Lưu ý rằng để sử dụng `intlayerMiddleware` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
1089
+ > Lưu ý rằng để sử dụng `intlayerProxy` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
1090
1090
 
1091
1091
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
1092
1092
  import { defineConfig } from "vite";
1093
1093
  import preact from "@preact/preset-vite";
1094
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1094
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1095
1095
 
1096
1096
  // https://vitejs.dev/config/
1097
1097
  export default defineConfig({
1098
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1098
+ plugins: [preact(), intlayer(), intlayerProxy()],
1099
1099
  });
1100
1100
  ```
1101
1101
 
1102
1102
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
1103
1103
  import { defineConfig } from "vite";
1104
1104
  import preact from "@preact/preset-vite";
1105
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1105
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1106
1106
 
1107
1107
  // https://vitejs.dev/config/
1108
1108
  export default defineConfig({
1109
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1109
+ plugins: [preact(), intlayer(), intlayerProxy()],
1110
1110
  });
1111
1111
  ```
1112
1112
 
1113
1113
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
1114
1114
  const { defineConfig } = require("vite");
1115
1115
  const preact = require("@preact/preset-vite");
1116
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
1116
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
1117
1117
 
1118
1118
  // https://vitejs.dev/config/
1119
1119
  module.exports = defineConfig({
1120
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1120
+ plugins: [preact(), intlayer(), intlayerProxy()],
1121
1121
  });
1122
1122
  ```
1123
1123
 
@@ -1138,7 +1138,7 @@ import type { FunctionalComponent } from "preact";
1138
1138
 
1139
1139
  const LocaleSwitcher: FunctionalComponent = () => {
1140
1140
  const location = useLocation();
1141
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1141
+ plugins: [preact(), intlayer(), intlayerProxy()],
1142
1142
  });
1143
1143
  ```
1144
1144
 
@@ -792,40 +792,40 @@ const App = () => (
792
792
  );
793
793
  ```
794
794
 
795
- Song song đó, bạn cũng có thể sử dụng `intlayerMiddleware` để thêm routing phía server cho ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
795
+ Song song đó, bạn cũng có thể sử dụng `intlayerProxy` để thêm routing phía server cho ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng đến locale mặc định.
796
796
 
797
- > Lưu ý rằng để sử dụng `intlayerMiddleware` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
797
+ > Lưu ý rằng để sử dụng `intlayerProxy` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
798
798
 
799
799
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
800
800
  import { defineConfig } from "vite";
801
801
  import react from "@vitejs/plugin-react-swc";
802
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
802
+ import { intlayer, intlayerProxy } from "vite-intlayer";
803
803
 
804
804
  // https://vitejs.dev/config/
805
805
  export default defineConfig({
806
- plugins: [react(), intlayer(), intlayerMiddleware()],
806
+ plugins: [react(), intlayer(), intlayerProxy()],
807
807
  });
808
808
  ```
809
809
 
810
810
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
811
811
  import { defineConfig } from "vite";
812
812
  import react from "@vitejs/plugin-react-swc";
813
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
813
+ import { intlayer, intlayerProxy } from "vite-intlayer";
814
814
 
815
815
  // https://vitejs.dev/config/
816
816
  export default defineConfig({
817
- plugins: [react(), intlayer(), intlayerMiddleware()],
817
+ plugins: [react(), intlayer(), intlayerProxy()],
818
818
  });
819
819
  ```
820
820
 
821
821
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
822
822
  const { defineConfig } = require("vite");
823
823
  const react = require("@vitejs/plugin-react-swc");
824
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
824
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
825
825
 
826
826
  // https://vitejs.dev/config/
827
827
  module.exports = defineConfig({
828
- plugins: [react(), intlayer(), intlayerMiddleware()],
828
+ plugins: [react(), intlayer(), intlayerProxy()],
829
829
  });
830
830
  ```
831
831
 
@@ -682,40 +682,40 @@ import LocaleSwitcher from "@components/LocaleSwitcher.vue";
682
682
  </template>
683
683
  ```
684
684
 
685
- Song song đó, bạn cũng có thể sử dụng `intlayerMiddleware` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên sở thích ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng về locale mặc định.
685
+ Song song đó, bạn cũng có thể sử dụng `intlayerProxy` để thêm routing phía server vào ứng dụng của bạn. Plugin này sẽ tự động phát hiện locale hiện tại dựa trên URL và thiết lập cookie locale phù hợp. Nếu không có locale nào được chỉ định, plugin sẽ xác định locale phù hợp nhất dựa trên sở thích ngôn ngữ trình duyệt của người dùng. Nếu không phát hiện được locale nào, nó sẽ chuyển hướng về locale mặc định.
686
686
 
687
- > Lưu ý rằng để sử dụng `intlayerMiddleware` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
687
+ > Lưu ý rằng để sử dụng `intlayerProxy` trong môi trường production, bạn cần chuyển gói `vite-intlayer` từ `devDependencies` sang `dependencies`.
688
688
 
689
689
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
690
690
  import { defineConfig } from "vite";
691
691
  import vue from "@vitejs/plugin-vue";
692
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
692
+ import { intlayer, intlayerProxy } from "vite-intlayer";
693
693
 
694
694
  // https://vitejs.dev/config/
695
695
  export default defineConfig({
696
- plugins: [vue(), intlayer(), intlayerMiddleware()],
696
+ plugins: [vue(), intlayer(), intlayerProxy()],
697
697
  });
698
698
  ```
699
699
 
700
700
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
701
701
  import { defineConfig } from "vite";
702
702
  import vue from "@vitejs/plugin-vue";
703
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
703
+ import { intlayer, intlayerProxy } from "vite-intlayer";
704
704
 
705
705
  // https://vitejs.dev/config/
706
706
  export default defineConfig({
707
- plugins: [vue(), intlayer(), intlayerMiddleware()],
707
+ plugins: [vue(), intlayer(), intlayerProxy()],
708
708
  });
709
709
  ```
710
710
 
711
711
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
712
712
  const { defineConfig } = require("vite");
713
713
  const vue = require("@vitejs/plugin-vue");
714
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
714
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
715
715
 
716
716
  // https://vitejs.dev/config/
717
717
  module.exports = defineConfig({
718
- plugins: [vue(), intlayer(), intlayerMiddleware()],
718
+ plugins: [vue(), intlayer(), intlayerProxy()],
719
719
  });
720
720
  ```
721
721
 
@@ -277,7 +277,7 @@ Hạn chế này xảy ra vì Turbopack không thể chạy các plugin webpack
277
277
  - Ưu tiên sử dụng tùy chọn toàn cục mới `content.autoFill` để tạo các bản dịch còn thiếu ở quy mô lớn.
278
278
  - Sử dụng `npx intlayer content test` để kiểm tra các PR có bản dịch còn thiếu.
279
279
  - Để có chẩn đoán chi tiết, đặt `log.mode = 'verbose'`.
280
- - Sử dụng `intlayer` thay vì `intlayerPlugin` và `intlayerMiddleware` thay vì `intlayerMiddlewarePlugin` trong cấu hình Vite của bạn.
280
+ - Sử dụng `intlayer` thay vì `intlayerPlugin` và `intlayerProxy` thay vì `intlayerProxyPlugin` trong cấu hình Vite của bạn.
281
281
 
282
282
  ---
283
283
 
@@ -1092,8 +1092,8 @@ import { type FC } from "react";
1092
1092
  import Link from "next/link";
1093
1093
 
1094
1094
  const LocaleSwitcher: FC = () => {
1095
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1096
- const { setLocaleCookie } = useLocaleCookie();
1095
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1096
+ useLocale();
1097
1097
 
1098
1098
  return (
1099
1099
  <div>
@@ -1105,7 +1105,7 @@ const LocaleSwitcher: FC = () => {
1105
1105
  hrefLang={localeItem}
1106
1106
  key={localeItem}
1107
1107
  aria-current={locale === localeItem ? "page" : undefined}
1108
- onClick={() => setLocaleCookie(localeItem)}
1108
+ onClick={() => setLocale(localeItem)}
1109
1109
  >
1110
1110
  <span>
1111
1111
  {/* 语言区域 - 例如 FR */}
@@ -1144,8 +1144,8 @@ import { useLocale } from "next-intlayer";
1144
1144
  import Link from "next/link";
1145
1145
 
1146
1146
  const LocaleSwitcher = () => {
1147
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1148
- const { setLocaleCookie } = useLocaleCookie();
1147
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1148
+ useLocale();
1149
1149
 
1150
1150
  return (
1151
1151
  <div>
@@ -1157,7 +1157,7 @@ const LocaleSwitcher = () => {
1157
1157
  hrefLang={localeItem}
1158
1158
  key={localeItem}
1159
1159
  aria-current={locale === localeItem ? "page" : undefined}
1160
- onClick={() => setLocaleCookie(localeItem)}
1160
+ onClick={() => setLocale(localeItem)}
1161
1161
  >
1162
1162
  <span>
1163
1163
  {/* 语言环境 - 例如 FR */}
@@ -1196,8 +1196,8 @@ const { useLocale } = require("next-intlayer");
1196
1196
  const Link = require("next/link");
1197
1197
 
1198
1198
  const LocaleSwitcher = () => {
1199
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1200
- const { setLocaleCookie } = useLocaleCookie();
1199
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1200
+ useLocale();
1201
1201
 
1202
1202
  return (
1203
1203
  <div>
@@ -1209,7 +1209,7 @@ const LocaleSwitcher = () => {
1209
1209
  hrefLang={localeItem}
1210
1210
  key={localeItem}
1211
1211
  aria-current={locale === localeItem ? "page" : undefined}
1212
- onClick={() => setLocaleCookie(localeItem)}
1212
+ onClick={() => setLocale(localeItem)}
1213
1213
  >
1214
1214
  <span>
1215
1215
  {/* 语言环境 - 例如 FR */}
@@ -1179,8 +1179,8 @@ import { useLocale } from "next-intlayer";
1179
1179
  import Link from "next/link";
1180
1180
 
1181
1181
  export const LocaleSwitcher: FC = () => {
1182
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1183
- const { setLocaleCookie } = useLocaleCookie();
1182
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1183
+ useLocale();
1184
1184
 
1185
1185
  return (
1186
1186
  <div>
@@ -1192,7 +1192,7 @@ export const LocaleSwitcher: FC = () => {
1192
1192
  hrefLang={localeItem}
1193
1193
  key={localeItem}
1194
1194
  aria-current={locale === localeItem ? "page" : undefined}
1195
- onClick={() => setLocaleCookie(localeItem)}
1195
+ onClick={() => setLocale(localeItem)}
1196
1196
  >
1197
1197
  <span>
1198
1198
  {/* 语言环境 - 例如 FR */}
@@ -1231,8 +1231,8 @@ import { useLocale } from "next-intlayer";
1231
1231
  import Link from "next/link";
1232
1232
 
1233
1233
  export const LocaleSwitcher = () => {
1234
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1235
- const { setLocaleCookie } = useLocaleCookie();
1234
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1235
+ useLocale();
1236
1236
 
1237
1237
  return (
1238
1238
  <div>
@@ -1244,7 +1244,7 @@ export const LocaleSwitcher = () => {
1244
1244
  hrefLang={localeItem}
1245
1245
  key={localeItem}
1246
1246
  aria-current={locale === localeItem ? "page" : undefined}
1247
- onClick={() => setLocaleCookie(localeItem)}
1247
+ onClick={() => setLocale(localeItem)}
1248
1248
  >
1249
1249
  <span>
1250
1250
  {/* 语言区域 - 例如 FR */}
@@ -1283,7 +1283,8 @@ const { useLocale } = require("next-intlayer");
1283
1283
  const Link = require("next/link");
1284
1284
 
1285
1285
  export const LocaleSwitcher = () => {
1286
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1286
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1287
+ useLocale();
1287
1288
 
1288
1289
  return (
1289
1290
  <div>
@@ -1295,7 +1296,7 @@ export const LocaleSwitcher = () => {
1295
1296
  hrefLang={localeItem}
1296
1297
  key={localeItem}
1297
1298
  aria-current={locale === localeItem ? "page" : undefined}
1298
- onClick={() => setLocaleCookie(localeItem)}
1299
+ onClick={() => setLocale(localeItem)}
1299
1300
  >
1300
1301
  <span>
1301
1302
  {/* 语言环境 - 例如 FR */}
@@ -149,7 +149,7 @@ export default withIntlayer(nextConfig);
149
149
  设置中间件以自动检测并处理用户的首选语言环境:
150
150
 
151
151
  ```typescript fileName="src/middleware.ts" codeFormat="typescript"
152
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
152
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
153
153
 
154
154
  export const config = {
155
155
  matcher:
@@ -158,7 +158,7 @@ export const config = {
158
158
  ```
159
159
 
160
160
  ```javascript fileName="src/middleware.mjs" codeFormat="esm"
161
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
161
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
162
162
 
163
163
  export const config = {
164
164
  matcher:
@@ -167,14 +167,14 @@ export const config = {
167
167
  ```
168
168
 
169
169
  ```javascript fileName="src/middleware.cjs" codeFormat="commonjs"
170
- const { intlayerMiddleware } = require("next-intlayer/middleware");
170
+ const { intlayerProxy } = require("next-intlayer/middleware");
171
171
 
172
172
  const config = {
173
173
  matcher:
174
174
  "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
175
175
  };
176
176
 
177
- module.exports = { middleware: intlayerMiddleware, config };
177
+ module.exports = { middleware: intlayerProxy, config };
178
178
  ```
179
179
 
180
180
  > 调整 `matcher` 参数以匹配您的应用程序路由。更多详情,请参阅 [Next.js 关于配置 matcher 的文档](https://nextjs.org/docs/app/building-your-application/routing/middleware)。
@@ -1091,7 +1091,6 @@ import Link from "next/link";
1091
1091
 
1092
1092
  const LocaleSwitcher: FC = () => {
1093
1093
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1094
- const { setLocaleCookie } = useLocaleCookie();
1095
1094
 
1096
1095
  return (
1097
1096
  <div>
@@ -1103,7 +1102,7 @@ const LocaleSwitcher: FC = () => {
1103
1102
  hrefLang={localeItem}
1104
1103
  key={localeItem}
1105
1104
  aria-current={locale === localeItem ? "page" : undefined}
1106
- onClick={() => setLocaleCookie(localeItem)}
1105
+ onClick={() => setLocale(localeItem)}
1107
1106
  >
1108
1107
  <span>
1109
1108
  {/* 语言环境 - 例如 FR */}
@@ -1141,7 +1140,6 @@ import Link from "next/link";
1141
1140
 
1142
1141
  const LocaleSwitcher = () => {
1143
1142
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1144
- const { setLocaleCookie } = useLocaleCookie();
1145
1143
 
1146
1144
  return (
1147
1145
  <div>
@@ -1153,7 +1151,7 @@ const LocaleSwitcher = () => {
1153
1151
  hrefLang={localeItem}
1154
1152
  key={localeItem}
1155
1153
  aria-current={locale === localeItem ? "page" : undefined}
1156
- onClick={() => setLocaleCookie(localeItem)}
1154
+ onClick={() => setLocale(localeItem)}
1157
1155
  >
1158
1156
  <span>
1159
1157
  {/* 语言环境 - 例如 FR */}
@@ -1191,7 +1189,6 @@ const Link = require("next/link");
1191
1189
 
1192
1190
  const LocaleSwitcher = () => {
1193
1191
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1194
- const { setLocaleCookie } = useLocaleCookie();
1195
1192
 
1196
1193
  return (
1197
1194
  <select>
@@ -1201,7 +1198,7 @@ const LocaleSwitcher = () => {
1201
1198
  href={getLocalizedUrl(pathWithoutLocale, localeItem)}
1202
1199
  hrefLang={localeItem}
1203
1200
  aria-current={locale === localeItem ? "page" : undefined}
1204
- onClick={() => setLocaleCookie(localeItem)}
1201
+ onClick={() => setLocale(localeItem)}
1205
1202
  >
1206
1203
  <span>
1207
1204
  {/* 语言环境 - 例如 FR */}
@@ -317,7 +317,7 @@ import {
317
317
  getLocalizedUrl,
318
318
  getPathWithoutLocale,
319
319
  } from "intlayer";
320
- import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
320
+ import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
321
321
  import { Link, useLocation } from "react-router";
322
322
 
323
323
  export const LocaleSwitcher: FC = () => {
@@ -335,7 +335,7 @@ export const LocaleSwitcher: FC = () => {
335
335
  <Link
336
336
  aria-current={localeItem === locale ? "page" : undefined}
337
337
  aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeItem)}`}
338
- onClick={() => setLocaleCookie(localeItem)}
338
+ onClick={() => setLocale(localeItem)}
339
339
  to={getLocalizedUrl(pathWithoutLocale, localeItem)}
340
340
  >
341
341
  <span>
@@ -404,18 +404,18 @@ export default function RootLayout() {
404
404
 
405
405
  ### 第11步:添加中间件(可选)
406
406
 
407
- 你也可以使用 `intlayerMiddleware` 为你的应用添加服务器端路由。该插件会根据 URL 自动检测当前的语言环境,并设置相应的语言环境 cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果仍未检测到语言环境,则会重定向到默认语言环境。
407
+ 你也可以使用 `intlayerProxy` 为你的应用添加服务器端路由。该插件会根据 URL 自动检测当前的语言环境,并设置相应的语言环境 cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果仍未检测到语言环境,则会重定向到默认语言环境。
408
408
 
409
- > 注意,要在生产环境中使用 `intlayerMiddleware`,你需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
409
+ > 注意,要在生产环境中使用 `intlayerProxy`,你需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
410
410
 
411
411
  ```typescript {3,7} fileName="vite.config.ts"
412
412
  import { defineConfig } from "vite";
413
413
  import react from "@vitejs/plugin-react-swc";
414
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
414
+ import { intlayer, intlayerProxy } from "vite-intlayer";
415
415
 
416
416
  // https://vitejs.dev/config/
417
417
  export default defineConfig({
418
- plugins: [react(), intlayer(), intlayerMiddleware()],
418
+ plugins: [react(), intlayer(), intlayerProxy()],
419
419
  });
420
420
  ```
421
421
 
@@ -230,12 +230,13 @@ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
230
230
 
231
231
  export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
232
232
  const { locale } = useLocale();
233
+ const { localePrefix } = getPrefix(locale);
233
234
 
234
235
  return (
235
236
  <Link
236
237
  {...props}
237
238
  params={{
238
- locale,
239
+ locale: localePrefix,
239
240
  ...(typeof props?.params === "object" ? props?.params : {}),
240
241
  }}
241
242
  to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
@@ -362,8 +363,13 @@ function RouteComponent() {
362
363
  import type { FC } from "react";
363
364
 
364
365
  import { useLocation } from "@tanstack/react-router";
365
- import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
366
- import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
366
+ import {
367
+ getHTMLTextDir,
368
+ getLocaleName,
369
+ getPathWithoutLocale,
370
+ getPrefix,
371
+ } from "intlayer";
372
+ import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
367
373
 
368
374
  import { LocalizedLink, To } from "./localized-link";
369
375
 
@@ -382,7 +388,7 @@ export const LocaleSwitcher: FC = () => {
382
388
  <LocalizedLink
383
389
  aria-current={localeEl === locale ? "page" : undefined} // 当前语言时设置 aria-current 为 page
384
390
  aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`} // 设置无障碍标签,显示语言切换器标签和语言名称
385
- onClick={() => setLocaleCookie(localeEl)} // 点击时设置语言 cookie
391
+ onClick={() => setLocaleInStorage(localeEl)} // 点击时设置语言 cookie
386
392
  params={{ locale: localeEl }} // 传递语言参数
387
393
  to={pathWithoutLocale as To} // 跳转到不带语言前缀的路径
388
394
  >
@@ -462,15 +468,15 @@ function LayoutComponent() {
462
468
 
463
469
  ### 第11步:添加中间件(可选)
464
470
 
465
- 您还可以使用 `intlayerMiddleware` 为您的应用程序添加服务器端路由。该插件将根据 URL 自动检测当前语言环境,并设置相应的语言环境 Cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果未检测到语言环境,它将重定向到默认语言环境。
471
+ 您还可以使用 `intlayerProxy` 为您的应用程序添加服务器端路由。该插件将根据 URL 自动检测当前语言环境,并设置相应的语言环境 Cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果未检测到语言环境,它将重定向到默认语言环境。
466
472
 
467
- > 注意,要在生产环境中使用 `intlayerMiddleware`,您需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
473
+ > 注意,要在生产环境中使用 `intlayerProxy`,您需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
468
474
 
469
475
  ```typescript {3,7} fileName="vite.config.ts"
470
476
  import { reactRouter } from "@react-router/dev/vite";
471
477
  import tailwindcss from "@tailwindcss/vite";
472
478
  import { defineConfig } from "vite";
473
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
479
+ import { intlayer, intlayerProxy } from "vite-intlayer";
474
480
  import tsconfigPaths from "vite-tsconfig-paths";
475
481
 
476
482
  export default defineConfig({
@@ -479,7 +485,7 @@ export default defineConfig({
479
485
  reactRouter(),
480
486
  tsconfigPaths(),
481
487
  intlayer(),
482
- intlayerMiddleware(),
488
+ intlayerProxy(),
483
489
  ],
484
490
  });
485
491
  ```