@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.
- package/blog/ar/internationalization_and_SEO.md +0 -4
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/de/internationalization_and_SEO.md +0 -2
- package/blog/en/internationalization_and_SEO.md +0 -2
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/en-GB/internationalization_and_SEO.md +0 -2
- package/blog/es/internationalization_and_SEO.md +0 -4
- package/blog/fr/internationalization_and_SEO.md +0 -2
- package/blog/hi/internationalization_and_SEO.md +0 -2
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/it/internationalization_and_SEO.md +0 -2
- package/blog/ja/internationalization_and_SEO.md +0 -2
- package/blog/ko/internationalization_and_SEO.md +0 -2
- package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/pt/internationalization_and_SEO.md +0 -4
- package/blog/ru/internationalization_and_SEO.md +0 -4
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +2 -2
- package/blog/zh/internationalization_and_SEO.md +0 -4
- package/docs/ar/intlayer_with_nextjs_14.md +9 -9
- package/docs/ar/intlayer_with_nextjs_15.md +9 -8
- package/docs/ar/intlayer_with_nextjs_16.md +2 -56
- package/docs/ar/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/ar/intlayer_with_react_router_v7.md +6 -6
- package/docs/ar/intlayer_with_tanstack.md +46 -31
- package/docs/ar/intlayer_with_vite+preact.md +7 -7
- package/docs/ar/intlayer_with_vite+react.md +7 -7
- package/docs/ar/intlayer_with_vite+vue.md +9 -9
- package/docs/de/intlayer_with_nextjs_14.md +9 -9
- package/docs/de/intlayer_with_nextjs_15.md +9 -8
- package/docs/de/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/de/intlayer_with_react_router_v7.md +6 -6
- package/docs/de/intlayer_with_tanstack.md +46 -31
- package/docs/de/intlayer_with_vite+preact.md +7 -7
- package/docs/de/intlayer_with_vite+react.md +7 -7
- package/docs/de/intlayer_with_vite+vue.md +9 -9
- package/docs/en/interest_of_intlayer.md +1 -1
- package/docs/en/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/en/intlayer_with_react_router_v7.md +6 -6
- package/docs/en/intlayer_with_tanstack.md +57 -33
- package/docs/en/intlayer_with_vite+preact.md +8 -8
- package/docs/en/intlayer_with_vite+react.md +8 -8
- package/docs/en/intlayer_with_vite+vue.md +8 -8
- package/docs/en/releases/v6.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_14.md +9 -9
- package/docs/en-GB/intlayer_with_nextjs_15.md +9 -8
- package/docs/en-GB/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/en-GB/intlayer_with_react_router_v7.md +6 -6
- package/docs/en-GB/intlayer_with_tanstack.md +46 -31
- package/docs/en-GB/intlayer_with_vite+preact.md +7 -7
- package/docs/en-GB/intlayer_with_vite+react.md +7 -7
- package/docs/en-GB/intlayer_with_vite+vue.md +9 -9
- package/docs/es/intlayer_with_nextjs_14.md +9 -9
- package/docs/es/intlayer_with_nextjs_15.md +9 -8
- package/docs/es/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/es/intlayer_with_react_router_v7.md +6 -6
- package/docs/es/intlayer_with_tanstack.md +15 -10
- package/docs/es/intlayer_with_vite+preact.md +7 -7
- package/docs/es/intlayer_with_vite+react.md +7 -7
- package/docs/es/intlayer_with_vite+vue.md +9 -9
- package/docs/fr/intlayer_with_nextjs_14.md +9 -9
- package/docs/fr/intlayer_with_nextjs_15.md +9 -8
- package/docs/fr/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/fr/intlayer_with_react_router_v7.md +6 -6
- package/docs/fr/intlayer_with_tanstack.md +46 -31
- package/docs/fr/intlayer_with_vite+preact.md +7 -7
- package/docs/fr/intlayer_with_vite+react.md +7 -7
- package/docs/fr/intlayer_with_vite+vue.md +9 -9
- package/docs/hi/intlayer_with_nextjs_14.md +9 -9
- package/docs/hi/intlayer_with_nextjs_15.md +9 -8
- package/docs/hi/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/hi/intlayer_with_react_router_v7.md +6 -6
- package/docs/hi/intlayer_with_tanstack.md +15 -10
- package/docs/hi/intlayer_with_vite+preact.md +7 -7
- package/docs/hi/intlayer_with_vite+react.md +7 -7
- package/docs/hi/intlayer_with_vite+vue.md +9 -9
- package/docs/id/interest_of_intlayer.md +1 -1
- package/docs/id/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/id/intlayer_with_react_router_v7.md +6 -6
- package/docs/id/intlayer_with_tanstack.md +15 -10
- package/docs/id/intlayer_with_vite+preact.md +9 -9
- package/docs/id/intlayer_with_vite+react.md +8 -8
- package/docs/id/intlayer_with_vite+vue.md +8 -8
- package/docs/id/releases/v6.md +1 -1
- package/docs/it/intlayer_with_nextjs_14.md +9 -9
- package/docs/it/intlayer_with_nextjs_15.md +9 -8
- package/docs/it/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/it/intlayer_with_react_router_v7.md +6 -6
- package/docs/it/intlayer_with_tanstack.md +46 -31
- package/docs/it/intlayer_with_vite+preact.md +7 -7
- package/docs/it/intlayer_with_vite+react.md +7 -7
- package/docs/it/intlayer_with_vite+vue.md +9 -9
- package/docs/ja/intlayer_with_nextjs_14.md +9 -9
- package/docs/ja/intlayer_with_nextjs_15.md +9 -8
- package/docs/ja/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/ja/intlayer_with_react_router_v7.md +6 -6
- package/docs/ja/intlayer_with_tanstack.md +16 -10
- package/docs/ja/intlayer_with_vite+preact.md +7 -7
- package/docs/ja/intlayer_with_vite+react.md +7 -7
- package/docs/ja/intlayer_with_vite+vue.md +9 -9
- package/docs/ko/intlayer_with_nextjs_14.md +9 -9
- package/docs/ko/intlayer_with_nextjs_15.md +9 -8
- package/docs/ko/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/ko/intlayer_with_react_router_v7.md +6 -6
- package/docs/ko/intlayer_with_tanstack.md +46 -31
- package/docs/ko/intlayer_with_vite+preact.md +7 -7
- package/docs/ko/intlayer_with_vite+react.md +7 -7
- package/docs/ko/intlayer_with_vite+vue.md +9 -9
- package/docs/pl/interest_of_intlayer.md +1 -1
- package/docs/pl/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/pl/intlayer_with_react_router_v7.md +6 -6
- package/docs/pl/intlayer_with_tanstack.md +15 -10
- package/docs/pl/intlayer_with_vite+preact.md +10 -10
- package/docs/pl/intlayer_with_vite+react.md +8 -8
- package/docs/pl/intlayer_with_vite+vue.md +8 -8
- package/docs/pl/releases/v6.md +1 -1
- package/docs/pt/intlayer_with_nextjs_14.md +9 -9
- package/docs/pt/intlayer_with_nextjs_15.md +9 -8
- package/docs/pt/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/pt/intlayer_with_react_router_v7.md +2 -2
- package/docs/pt/intlayer_with_tanstack.md +46 -31
- package/docs/pt/intlayer_with_vite+preact.md +7 -7
- package/docs/pt/intlayer_with_vite+react.md +7 -7
- package/docs/pt/intlayer_with_vite+vue.md +9 -9
- package/docs/ru/intlayer_with_nextjs_14.md +9 -9
- package/docs/ru/intlayer_with_nextjs_15.md +9 -8
- package/docs/ru/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/ru/intlayer_with_react_router_v7.md +6 -6
- package/docs/ru/intlayer_with_tanstack.md +15 -10
- package/docs/ru/intlayer_with_vite+preact.md +7 -7
- package/docs/ru/intlayer_with_vite+react.md +7 -7
- package/docs/ru/intlayer_with_vite+vue.md +9 -9
- package/docs/tr/interest_of_intlayer.md +1 -1
- package/docs/tr/intlayer_with_nextjs_15.md +9 -8
- package/docs/tr/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/tr/intlayer_with_react_router_v7.md +6 -6
- package/docs/tr/intlayer_with_tanstack.md +46 -31
- package/docs/tr/intlayer_with_vite+preact.md +8 -8
- package/docs/tr/intlayer_with_vite+react.md +8 -8
- package/docs/tr/intlayer_with_vite+vue.md +8 -8
- package/docs/vi/interest_of_intlayer.md +1 -1
- package/docs/vi/intlayer_with_nextjs_15.md +1 -0
- package/docs/vi/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/vi/intlayer_with_react_router_v7.md +6 -6
- package/docs/vi/intlayer_with_tanstack.md +46 -31
- package/docs/vi/intlayer_with_vite+preact.md +9 -9
- package/docs/vi/intlayer_with_vite+react.md +8 -8
- package/docs/vi/intlayer_with_vite+vue.md +8 -8
- package/docs/vi/releases/v6.md +1 -1
- package/docs/zh/intlayer_with_nextjs_14.md +9 -9
- package/docs/zh/intlayer_with_nextjs_15.md +9 -8
- package/docs/zh/intlayer_with_nextjs_page_router.md +7 -10
- package/docs/zh/intlayer_with_react_router_v7.md +6 -6
- package/docs/zh/intlayer_with_tanstack.md +14 -8
- package/docs/zh/intlayer_with_vite+preact.md +7 -7
- package/docs/zh/intlayer_with_vite+react.md +7 -7
- package/docs/zh/intlayer_with_vite+vue.md +7 -7
- package/frequent_questions/ar/domain_routing.md +1 -1
- package/frequent_questions/de/domain_routing.md +1 -1
- package/frequent_questions/en/domain_routing.md +1 -1
- package/frequent_questions/en/package_version_error.md +29 -1
- package/frequent_questions/en-GB/domain_routing.md +1 -1
- package/frequent_questions/es/domain_routing.md +1 -1
- package/frequent_questions/fr/domain_routing.md +1 -1
- package/frequent_questions/hi/domain_routing.md +1 -1
- package/frequent_questions/id/domain_routing.md +1 -1
- package/frequent_questions/it/domain_routing.md +1 -1
- package/frequent_questions/it/package_version_error.md +4 -4
- package/frequent_questions/ja/domain_routing.md +1 -1
- package/frequent_questions/ko/domain_routing.md +1 -1
- package/frequent_questions/pl/domain_routing.md +1 -1
- package/frequent_questions/pt/domain_routing.md +1 -1
- package/frequent_questions/ru/domain_routing.md +1 -1
- package/frequent_questions/tr/domain_routing.md +1 -1
- package/frequent_questions/vi/domain_routing.md +1 -1
- package/frequent_questions/zh/domain_routing.md +1 -1
- 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 {
|
|
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 {
|
|
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 {
|
|
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:
|
|
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={() =>
|
|
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={() =>
|
|
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={() =>
|
|
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 {
|
|
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={() =>
|
|
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 `
|
|
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 `
|
|
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,
|
|
416
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
417
417
|
|
|
418
418
|
// https://vitejs.dev/config/
|
|
419
419
|
export default defineConfig({
|
|
420
|
-
plugins: [react(), intlayer(),
|
|
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({
|
|
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
|
|
295
|
+
const localizedTo = `/${LOCALE_ROUTE}${to}` as any;
|
|
288
296
|
|
|
289
|
-
return navigate({
|
|
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 {
|
|
364
|
-
|
|
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={() =>
|
|
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 `
|
|
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 `
|
|
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,
|
|
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
|
-
|
|
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 `
|
|
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,
|
|
1051
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1052
1052
|
|
|
1053
1053
|
// https://vitejs.dev/config/
|
|
1054
1054
|
export default defineConfig({
|
|
1055
|
-
plugins: [preact(), intlayer(),
|
|
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,
|
|
1062
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1063
1063
|
|
|
1064
1064
|
// https://vitejs.dev/config/
|
|
1065
1065
|
export default defineConfig({
|
|
1066
|
-
plugins: [preact(), intlayer(),
|
|
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,
|
|
1073
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
1074
1074
|
|
|
1075
1075
|
// https://vitejs.dev/config/
|
|
1076
1076
|
module.exports = defineConfig({
|
|
1077
|
-
plugins: [preact(), intlayer(),
|
|
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 `
|
|
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,
|
|
1020
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1021
1021
|
|
|
1022
1022
|
// https://vitejs.dev/config/
|
|
1023
1023
|
export default defineConfig({
|
|
1024
|
-
plugins: [react(), intlayer(),
|
|
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,
|
|
1031
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1032
1032
|
|
|
1033
1033
|
// https://vitejs.dev/config/
|
|
1034
1034
|
export default defineConfig({
|
|
1035
|
-
plugins: [react(), intlayer(),
|
|
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,
|
|
1042
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
1043
1043
|
|
|
1044
1044
|
// https://vitejs.dev/config/
|
|
1045
1045
|
module.exports = defineConfig({
|
|
1046
|
-
plugins: [react(), intlayer(),
|
|
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 `
|
|
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,
|
|
660
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
661
661
|
|
|
662
662
|
// https://vitejs.dev/config/
|
|
663
663
|
export default defineConfig({
|
|
664
|
-
plugins: [vue(), intlayer(),
|
|
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,
|
|
671
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
672
672
|
|
|
673
673
|
// https://vitejs.dev/config/
|
|
674
674
|
export default defineConfig({
|
|
675
|
-
plugins: [vue(), intlayer(),
|
|
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,
|
|
682
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
683
683
|
|
|
684
684
|
// https://vitejs.dev/config/
|
|
685
685
|
module.exports = defineConfig({
|
|
686
|
-
plugins: [vue(), intlayer(),
|
|
686
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
687
687
|
});
|
|
688
688
|
const { defineConfig } = require("vite");
|
|
689
689
|
const vue = require("@vitejs/plugin-vue");
|
|
690
|
-
const { 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(),
|
|
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 } =
|
|
932
|
-
|
|
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={() =>
|
|
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 } =
|
|
984
|
-
|
|
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={() =>
|
|
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
|
-
|
|
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
|
-
|
|
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 } =
|
|
1163
|
-
|
|
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={() =>
|
|
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 } =
|
|
1215
|
-
|
|
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={() =>
|
|
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 } =
|
|
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={() =>
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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:
|
|
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={() =>
|
|
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={() =>
|
|
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={() =>
|
|
1202
|
+
onClick={() => setLocale(localeItem)}
|
|
1206
1203
|
>
|
|
1207
1204
|
<span>
|
|
1208
1205
|
{/* लोकल - उदाहरण के लिए FR */}
|