@intlayer/docs 7.1.0 → 7.1.1-canary.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.
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
@@ -151,7 +151,7 @@ export default withIntlayer(nextConfig);
151
151
  Configurez le middleware pour détecter automatiquement et gérer la langue préférée de l'utilisateur :
152
152
 
153
153
  ```typescript fileName="src/middleware.ts" codeFormat="typescript"
154
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
154
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
155
155
 
156
156
  export const config = {
157
157
  matcher:
@@ -160,7 +160,7 @@ export const config = {
160
160
  ```
161
161
 
162
162
  ```javascript fileName="src/middleware.mjs" codeFormat="esm"
163
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
163
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
164
164
 
165
165
  export const config = {
166
166
  matcher:
@@ -169,14 +169,14 @@ export const config = {
169
169
  ```
170
170
 
171
171
  ```javascript fileName="src/middleware.cjs" codeFormat="commonjs"
172
- const { intlayerMiddleware } = require("next-intlayer/middleware");
172
+ const { intlayerProxy } = require("next-intlayer/middleware");
173
173
 
174
174
  const config = {
175
175
  matcher:
176
176
  "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
177
177
  };
178
178
 
179
- module.exports = { middleware: intlayerMiddleware, config };
179
+ module.exports = { middleware: intlayerProxy, config };
180
180
  ```
181
181
 
182
182
  > Adaptez le paramètre `matcher` pour correspondre aux routes de votre application. Pour plus de détails, consultez la [documentation Next.js sur la configuration du 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
  {/* Locale - ex. 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
  {/* Locale - par exemple 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
  {/* Locale - par exemple FR */}
@@ -319,7 +319,7 @@ import {
319
319
  getLocalizedUrl,
320
320
  getPathWithoutLocale,
321
321
  } from "intlayer";
322
- import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
322
+ import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
323
323
  import { Link, useLocation } from "react-router";
324
324
 
325
325
  export const LocaleSwitcher: FC = () => {
@@ -337,7 +337,7 @@ export const LocaleSwitcher: FC = () => {
337
337
  <Link
338
338
  aria-current={localeItem === locale ? "page" : undefined}
339
339
  aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeItem)}`}
340
- onClick={() => setLocaleCookie(localeItem)}
340
+ onClick={() => setLocale(localeItem)}
341
341
  to={getLocalizedUrl(pathWithoutLocale, localeItem)}
342
342
  >
343
343
  <span>
@@ -406,18 +406,18 @@ export default function RootLayout() {
406
406
 
407
407
  ### Étape 11 : Ajouter un middleware (Optionnel)
408
408
 
409
- Vous pouvez également utiliser le `intlayerMiddleware` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
409
+ Vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
410
410
 
411
- > Notez que pour utiliser le `intlayerMiddleware` en production, vous devez déplacer le package `vite-intlayer` de `devDependencies` vers `dependencies`.
411
+ > Notez que pour utiliser le `intlayerProxy` en production, vous devez déplacer le package `vite-intlayer` de `devDependencies` vers `dependencies`.
412
412
 
413
413
  ```typescript {3,7} fileName="vite.config.ts"
414
414
  import { defineConfig } from "vite";
415
415
  import react from "@vitejs/plugin-react-swc";
416
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
416
+ import { intlayer, intlayerProxy } from "vite-intlayer";
417
417
 
418
418
  // https://vitejs.dev/config/
419
419
  export default defineConfig({
420
- plugins: [react(), intlayer(), intlayerMiddleware()],
420
+ plugins: [react(), intlayer(), intlayerProxy()],
421
421
  });
422
422
  ```
423
423
 
@@ -199,6 +199,7 @@ import type { FC } from "react";
199
199
 
200
200
  import { Link, type LinkComponentProps } from "@tanstack/react-router";
201
201
  import { useLocale } from "react-intlayer";
202
+ import { getPrefix } from "intlayer";
202
203
 
203
204
  export const LOCALE_ROUTE = "{-$locale}" as const;
204
205
 
@@ -228,12 +229,13 @@ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
228
229
 
229
230
  export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
230
231
  const { locale } = useLocale();
232
+ const { localePrefix } = getPrefix(locale);
231
233
 
232
234
  return (
233
235
  <Link
234
236
  {...props}
235
237
  params={{
236
- locale,
238
+ locale: localePrefix,
237
239
  ...(typeof props?.params === "object" ? props?.params : {}),
238
240
  }}
239
241
  to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
@@ -250,43 +252,52 @@ Ce composant a deux objectifs :
250
252
  Ensuite, nous pouvons créer un hook `useLocalizedNavigate` pour la navigation programmatique :
251
253
 
252
254
  ```tsx fileName="src/hooks/useLocalizedNavigate.tsx"
253
- import { useLocale } from "react-intlayer";
254
255
  import { useNavigate } from "@tanstack/react-router";
256
+ import { getPrefix } from "intlayer";
257
+ import { useLocale } from "react-intlayer";
255
258
  import { LOCALE_ROUTE } from "@/components/localized-link";
256
259
  import type { FileRouteTypes } from "@/routeTree.gen";
257
260
 
261
+ type StripLocalePrefix<T extends string> = T extends
262
+ | `/${typeof LOCALE_ROUTE}`
263
+ | `/${typeof LOCALE_ROUTE}/`
264
+ ? "/"
265
+ : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
266
+ ? `/${Rest}`
267
+ : never;
268
+
269
+ type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
270
+
271
+ type LocalizedNavigate = {
272
+ (to: LocalizedTo): ReturnType<ReturnType<typeof useNavigate>>;
273
+ (
274
+ opts: { to: LocalizedTo } & Record<string, unknown>
275
+ ): ReturnType<ReturnType<typeof useNavigate>>;
276
+ };
277
+
258
278
  export const useLocalizedNavigate = () => {
259
279
  const navigate = useNavigate();
260
280
 
261
281
  const { locale } = useLocale();
262
282
 
263
- type StripLocalePrefix<T extends string> = T extends
264
- | `/${typeof LOCALE_ROUTE}`
265
- | `/${typeof LOCALE_ROUTE}/`
266
- ? "/"
267
- : T extends `/${typeof LOCALE_ROUTE}/${infer Rest}`
268
- ? `/${Rest}`
269
- : never;
270
-
271
- type LocalizedTo = StripLocalePrefix<FileRouteTypes["to"]>;
272
-
273
- interface LocalizedNavigate {
274
- (to: LocalizedTo): ReturnType<typeof navigate>;
275
- (
276
- opts: { to: LocalizedTo } & Record<string, unknown>
277
- ): ReturnType<typeof navigate>;
278
- }
279
-
280
283
  const localizedNavigate: LocalizedNavigate = (args: any) => {
284
+ const { localePrefix } = getPrefix(locale);
285
+
281
286
  if (typeof args === "string") {
282
- return navigate({ to: `/${LOCALE_ROUTE}${args}`, params: { locale } });
287
+ return navigate({
288
+ to: `/${LOCALE_ROUTE}${args}`,
289
+ params: { locale: localePrefix },
290
+ });
283
291
  }
284
292
 
285
293
  const { to, ...rest } = args;
286
294
 
287
- const localedTo = `/${LOCALE_ROUTE}${to}` as any;
295
+ const localizedTo = `/${LOCALE_ROUTE}${to}` as any;
288
296
 
289
- return navigate({ to: localedTo, params: { locale, ...rest } as any });
297
+ return navigate({
298
+ to: localizedTo,
299
+ params: { locale: localePrefix, ...rest } as any,
300
+ });
290
301
  };
291
302
 
292
303
  return localizedNavigate;
@@ -360,8 +371,13 @@ Créez un composant pour permettre aux utilisateurs de changer de langue :
360
371
  import type { FC } from "react";
361
372
 
362
373
  import { useLocation } from "@tanstack/react-router";
363
- import { getHTMLTextDir, getLocaleName, getPathWithoutLocale } from "intlayer";
364
- import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
374
+ import {
375
+ getHTMLTextDir,
376
+ getLocaleName,
377
+ getPathWithoutLocale,
378
+ getPrefix,
379
+ } from "intlayer";
380
+ import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
365
381
 
366
382
  import { LocalizedLink, To } from "./localized-link";
367
383
 
@@ -380,9 +396,8 @@ export const LocaleSwitcher: FC = () => {
380
396
  <LocalizedLink
381
397
  aria-current={localeEl === locale ? "page" : undefined}
382
398
  aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
383
- onClick={() => setLocaleCookie(localeEl)}
384
- params={{ locale: localeEl }}
385
- to={pathWithoutLocale as To}
399
+ onClick={() => setLocaleInStorage(localeEl)}
400
+ params={{ locale: getPrefix(localeEl).localePrefix }}
386
401
  >
387
402
  <span>
388
403
  {/* Locale - ex. FR */}
@@ -460,15 +475,15 @@ function LayoutComponent() {
460
475
 
461
476
  ### Étape 11 : Ajouter un middleware (Optionnel)
462
477
 
463
- Vous pouvez également utiliser le `intlayerMiddleware` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
478
+ Vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
464
479
 
465
- > Notez que pour utiliser le `intlayerMiddleware` en production, vous devez déplacer le paquet `vite-intlayer` de `devDependencies` vers `dependencies`.
480
+ > Notez que pour utiliser le `intlayerProxy` en production, vous devez déplacer le paquet `vite-intlayer` de `devDependencies` vers `dependencies`.
466
481
 
467
482
  ```typescript {3,7} fileName="vite.config.ts"
468
483
  import { reactRouter } from "@react-router/dev/vite";
469
484
  import tailwindcss from "@tailwindcss/vite";
470
485
  import { defineConfig } from "vite";
471
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
486
+ import { intlayer, intlayerProxy } from "vite-intlayer";
472
487
  import tsconfigPaths from "vite-tsconfig-paths";
473
488
 
474
489
  export default defineConfig({
@@ -477,7 +492,7 @@ export default defineConfig({
477
492
  reactRouter(),
478
493
  tsconfigPaths(),
479
494
  intlayer(),
480
- intlayerMiddleware(),
495
+ intlayerProxy(),
481
496
  ],
482
497
  });
483
498
  ```
@@ -1043,38 +1043,38 @@ const App = () => (
1043
1043
  module.exports = App;
1044
1044
  ```
1045
1045
 
1046
- En parallèle, vous pouvez également utiliser le `intlayerMiddleware` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
1046
+ En parallèle, vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
1047
1047
 
1048
1048
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
1049
1049
  import { defineConfig } from "vite";
1050
1050
  import preact from "@preact/preset-vite";
1051
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1051
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1052
1052
 
1053
1053
  // https://vitejs.dev/config/
1054
1054
  export default defineConfig({
1055
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1055
+ plugins: [preact(), intlayer(), intlayerProxy()],
1056
1056
  });
1057
1057
  ```
1058
1058
 
1059
1059
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
1060
1060
  import { defineConfig } from "vite";
1061
1061
  import preact from "@preact/preset-vite";
1062
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1062
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1063
1063
 
1064
1064
  // https://vitejs.dev/config/
1065
1065
  export default defineConfig({
1066
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1066
+ plugins: [preact(), intlayer(), intlayerProxy()],
1067
1067
  });
1068
1068
  ```
1069
1069
 
1070
1070
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
1071
1071
  const { defineConfig } = require("vite");
1072
1072
  const preact = require("@preact/preset-vite");
1073
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
1073
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
1074
1074
 
1075
1075
  // https://vitejs.dev/config/
1076
1076
  module.exports = defineConfig({
1077
- plugins: [preact(), intlayer(), intlayerMiddleware()],
1077
+ plugins: [preact(), intlayer(), intlayerProxy()],
1078
1078
  });
1079
1079
  ```
1080
1080
 
@@ -1012,38 +1012,38 @@ const App = () => (
1012
1012
  );
1013
1013
  ```
1014
1014
 
1015
- En parallèle, vous pouvez également utiliser le `intlayerMiddleware` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
1015
+ En parallèle, vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
1016
1016
 
1017
1017
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
1018
1018
  import { defineConfig } from "vite";
1019
1019
  import react from "@vitejs/plugin-react-swc";
1020
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1020
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1021
1021
 
1022
1022
  // https://vitejs.dev/config/
1023
1023
  export default defineConfig({
1024
- plugins: [react(), intlayer(), intlayerMiddleware()],
1024
+ plugins: [react(), intlayer(), intlayerProxy()],
1025
1025
  });
1026
1026
  ```
1027
1027
 
1028
1028
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
1029
1029
  import { defineConfig } from "vite";
1030
1030
  import react from "@vitejs/plugin-react-swc";
1031
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
1031
+ import { intlayer, intlayerProxy } from "vite-intlayer";
1032
1032
 
1033
1033
  // https://vitejs.dev/config/
1034
1034
  export default defineConfig({
1035
- plugins: [react(), intlayer(), intlayerMiddleware()],
1035
+ plugins: [react(), intlayer(), intlayerProxy()],
1036
1036
  });
1037
1037
  ```
1038
1038
 
1039
1039
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
1040
1040
  const { defineConfig } = require("vite");
1041
1041
  const react = require("@vitejs/plugin-react-swc");
1042
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
1042
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
1043
1043
 
1044
1044
  // https://vitejs.dev/config/
1045
1045
  module.exports = defineConfig({
1046
- plugins: [react(), intlayer(), intlayerMiddleware()],
1046
+ plugins: [react(), intlayer(), intlayerProxy()],
1047
1047
  });
1048
1048
  ```
1049
1049
 
@@ -652,46 +652,46 @@ import LocaleSwitcher from "@components/LocaleSwitcher.vue";
652
652
  </template>
653
653
  ```
654
654
 
655
- Parallèlement, vous pouvez également utiliser le `intlayerMiddleware` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
655
+ Parallèlement, vous pouvez également utiliser le `intlayerProxy` pour ajouter un routage côté serveur à votre application. Ce plugin détectera automatiquement la locale actuelle en fonction de l'URL et définira le cookie de locale approprié. Si aucune locale n'est spécifiée, le plugin déterminera la locale la plus appropriée en fonction des préférences linguistiques du navigateur de l'utilisateur. Si aucune locale n'est détectée, il redirigera vers la locale par défaut.
656
656
 
657
657
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
658
658
  import { defineConfig } from "vite";
659
659
  import vue from "@vitejs/plugin-vue";
660
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
660
+ import { intlayer, intlayerProxy } from "vite-intlayer";
661
661
 
662
662
  // https://vitejs.dev/config/
663
663
  export default defineConfig({
664
- plugins: [vue(), intlayer(), intlayerMiddleware()],
664
+ plugins: [vue(), intlayer(), intlayerProxy()],
665
665
  });
666
666
  ```
667
667
 
668
668
  ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
669
669
  import { defineConfig } from "vite";
670
670
  import vue from "@vitejs/plugin-vue";
671
- import { intlayer, intlayerMiddleware } from "vite-intlayer";
671
+ import { intlayer, intlayerProxy } from "vite-intlayer";
672
672
 
673
673
  // https://vitejs.dev/config/
674
674
  export default defineConfig({
675
- plugins: [vue(), intlayer(), intlayerMiddleware()],
675
+ plugins: [vue(), intlayer(), intlayerProxy()],
676
676
  });
677
677
  ```
678
678
 
679
679
  ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
680
680
  const { defineConfig } = require("vite");
681
681
  const vue = require("@vitejs/plugin-vue");
682
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
682
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
683
683
 
684
684
  // https://vitejs.dev/config/
685
685
  module.exports = defineConfig({
686
- plugins: [vue(), intlayer(), intlayerMiddleware()],
686
+ plugins: [vue(), intlayer(), intlayerProxy()],
687
687
  });
688
688
  const { defineConfig } = require("vite");
689
689
  const vue = require("@vitejs/plugin-vue");
690
- const { intlayer, intlayerMiddleware } = require("vite-intlayer");
690
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
691
691
 
692
692
  // https://vitejs.dev/config/
693
693
  module.exports = defineConfig({
694
- plugins: [vue(), intlayer(), intlayerMiddleware()],
694
+ plugins: [vue(), intlayer(), intlayerProxy()],
695
695
  });
696
696
  ```
697
697
 
@@ -928,8 +928,8 @@ import { type FC } from "react";
928
928
  import Link from "next/link";
929
929
 
930
930
  const LocaleSwitcher: FC = () => {
931
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
932
- const { setLocaleCookie } = useLocaleCookie();
931
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
932
+ useLocale();
933
933
 
934
934
  return (
935
935
  <div>
@@ -941,7 +941,7 @@ const LocaleSwitcher: FC = () => {
941
941
  hrefLang={localeItem}
942
942
  key={localeItem}
943
943
  aria-current={locale === localeItem ? "page" : undefined}
944
- onClick={() => setLocaleCookie(localeItem)}
944
+ onClick={() => setLocale(localeItem)}
945
945
  >
946
946
  <span>
947
947
  {/* लोकेल - जैसे FR */}
@@ -980,8 +980,8 @@ import { useLocale } from "next-intlayer";
980
980
  import Link from "next/link";
981
981
 
982
982
  const LocaleSwitcher = () => {
983
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
984
- const { setLocaleCookie } = useLocaleCookie();
983
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
984
+ useLocale();
985
985
 
986
986
  return (
987
987
  <div>
@@ -993,7 +993,7 @@ const LocaleSwitcher = () => {
993
993
  hrefLang={localeItem}
994
994
  key={localeItem}
995
995
  aria-current={locale === localeItem ? "page" : undefined}
996
- onClick={() => setLocaleCookie(localeItem)}
996
+ onClick={() => setLocale(localeItem)}
997
997
  >
998
998
  <span>
999
999
  {/* लोकेल - जैसे FR */}
@@ -1032,8 +1032,8 @@ const { useLocale } = require("next-intlayer");
1032
1032
  const Link = require("next/link");
1033
1033
 
1034
1034
  const LocaleSwitcher = () => {
1035
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1036
- const { setLocaleCookie } = useLocaleCookie();
1035
+ const { locale, pathWithoutLocale, availableLocales, setLocale } = useLocale();
1036
+
1037
1037
 
1038
1038
  return (
1039
1039
  <div>
@@ -1046,7 +1046,7 @@ const LocaleSwitcher = () => {
1046
1046
  key={localeItem}
1047
1047
  aria-current={locale === localeItem ? "page" : undefined}
1048
1048
  onClick={() =>
1049
- setLocaleCookie(localeItem)
1049
+ setLocaleInStorage(localeItem)
1050
1050
  }
1051
1051
  >
1052
1052
  <span>
@@ -1159,8 +1159,8 @@ import { useLocale } from "next-intlayer";
1159
1159
  import Link from "next/link";
1160
1160
 
1161
1161
  export const LocaleSwitcher: FC = () => {
1162
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1163
- const { setLocaleCookie } = useLocaleCookie();
1162
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1163
+ useLocale();
1164
1164
 
1165
1165
  return (
1166
1166
  <div>
@@ -1172,7 +1172,7 @@ export const LocaleSwitcher: FC = () => {
1172
1172
  hrefLang={localeItem}
1173
1173
  key={localeItem}
1174
1174
  aria-current={locale === localeItem ? "page" : undefined}
1175
- onClick={() => setLocaleCookie(localeItem)}
1175
+ onClick={() => setLocale(localeItem)}
1176
1176
  >
1177
1177
  <span>
1178
1178
  {/* लोकल - उदाहरण के लिए FR */}
@@ -1211,8 +1211,8 @@ import { useLocale } from "next-intlayer";
1211
1211
  import Link from "next/link";
1212
1212
 
1213
1213
  export const LocaleSwitcher = () => {
1214
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1215
- const { setLocaleCookie } = useLocaleCookie();
1214
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1215
+ useLocale();
1216
1216
 
1217
1217
  return (
1218
1218
  <div>
@@ -1224,7 +1224,7 @@ export const LocaleSwitcher = () => {
1224
1224
  hrefLang={localeItem}
1225
1225
  key={localeItem}
1226
1226
  aria-current={locale === localeItem ? "page" : undefined}
1227
- onClick={() => setLocaleCookie(localeItem)}
1227
+ onClick={() => setLocale(localeItem)}
1228
1228
  >
1229
1229
  <span>
1230
1230
  {/* लोकल - उदाहरण के लिए FR */}
@@ -1263,7 +1263,8 @@ const { useLocale } = require("next-intlayer");
1263
1263
  const Link = require("next/link");
1264
1264
 
1265
1265
  export const LocaleSwitcher = () => {
1266
- const { locale, pathWithoutLocale, availableLocales } = useLocale();
1266
+ const { locale, pathWithoutLocale, availableLocales, setLocale } =
1267
+ useLocale();
1267
1268
 
1268
1269
  return (
1269
1270
  <div>
@@ -1275,7 +1276,7 @@ export const LocaleSwitcher = () => {
1275
1276
  hrefLang={localeItem}
1276
1277
  key={localeItem}
1277
1278
  aria-current={locale === localeItem ? "page" : undefined}
1278
- onClick={() => setLocaleCookie(localeItem)}
1279
+ onClick={() => setLocale(localeItem)}
1279
1280
  >
1280
1281
  <span>
1281
1282
  {/* स्थानीय भाषा - उदाहरण के लिए FR */}
@@ -151,7 +151,7 @@ export default withIntlayer(nextConfig);
151
151
  मिडलवेयर सेट करें ताकि उपयोगकर्ता की पसंदीदा स्थानीय भाषा को स्वचालित रूप से पहचानकर संभाला जा सके:
152
152
 
153
153
  ```typescript fileName="src/middleware.ts" codeFormat="typescript"
154
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
154
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
155
155
 
156
156
  export const config = {
157
157
  matcher:
@@ -160,7 +160,7 @@ export const config = {
160
160
  ```
161
161
 
162
162
  ```javascript fileName="src/middleware.mjs" codeFormat="esm"
163
- export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
163
+ export { intlayerProxy as middleware } from "next-intlayer/middleware";
164
164
 
165
165
  export const config = {
166
166
  matcher:
@@ -169,14 +169,14 @@ export const config = {
169
169
  ```
170
170
 
171
171
  ```javascript fileName="src/middleware.cjs" codeFormat="commonjs"
172
- const { intlayerMiddleware } = require("next-intlayer/middleware");
172
+ const { intlayerProxy } = require("next-intlayer/middleware");
173
173
 
174
174
  const config = {
175
175
  matcher:
176
176
  "/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
177
177
  };
178
178
 
179
- module.exports = { middleware: intlayerMiddleware, config };
179
+ module.exports = { middleware: intlayerProxy, config };
180
180
  ```
181
181
 
182
182
  > अपने एप्लिकेशन के रूट्स से मेल खाने के लिए `matcher` पैरामीटर को अनुकूलित करें। अधिक जानकारी के लिए, [Next.js दस्तावेज़ीकरण में matcher को कॉन्फ़िगर करने](https://nextjs.org/docs/app/building-your-application/routing/middleware) पर जाएं।
@@ -1092,7 +1092,6 @@ import Link from "next/link";
1092
1092
 
1093
1093
  const LocaleSwitcher: FC = () => {
1094
1094
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1095
- const { setLocaleCookie } = useLocaleCookie();
1096
1095
 
1097
1096
  return (
1098
1097
  <div>
@@ -1104,7 +1103,7 @@ const LocaleSwitcher: FC = () => {
1104
1103
  hrefLang={localeItem}
1105
1104
  key={localeItem}
1106
1105
  aria-current={locale === localeItem ? "page" : undefined}
1107
- onClick={() => setLocaleCookie(localeItem)}
1106
+ onClick={() => setLocale(localeItem)}
1108
1107
  >
1109
1108
  <span>
1110
1109
  {/* लोकल - उदाहरण के लिए FR */}
@@ -1142,7 +1141,6 @@ import Link from "next/link";
1142
1141
 
1143
1142
  const LocaleSwitcher = () => {
1144
1143
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1145
- const { setLocaleCookie } = useLocaleCookie();
1146
1144
 
1147
1145
  return (
1148
1146
  <div>
@@ -1154,7 +1152,7 @@ const LocaleSwitcher = () => {
1154
1152
  hrefLang={localeItem}
1155
1153
  key={localeItem}
1156
1154
  aria-current={locale === localeItem ? "page" : undefined}
1157
- onClick={() => setLocaleCookie(localeItem)}
1155
+ onClick={() => setLocale(localeItem)}
1158
1156
  >
1159
1157
  <span>
1160
1158
  {/* लोकल - उदाहरण के लिए FR */}
@@ -1192,7 +1190,6 @@ const Link = require("next/link");
1192
1190
 
1193
1191
  const LocaleSwitcher = () => {
1194
1192
  const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
1195
- const { setLocaleCookie } = useLocaleCookie();
1196
1193
 
1197
1194
  return (
1198
1195
  <select>
@@ -1202,7 +1199,7 @@ const LocaleSwitcher = () => {
1202
1199
  href={getLocalizedUrl(pathWithoutLocale, localeItem)}
1203
1200
  hrefLang={localeItem}
1204
1201
  aria-current={locale === localeItem ? "page" : undefined}
1205
- onClick={() => setLocaleCookie(localeItem)}
1202
+ onClick={() => setLocale(localeItem)}
1206
1203
  >
1207
1204
  <span>
1208
1205
  {/* लोकल - उदाहरण के लिए FR */}