@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
|
@@ -674,46 +674,46 @@ import LocaleSwitcher from "@components/LocaleSwitcher.vue";
|
|
|
674
674
|
</template>
|
|
675
675
|
```
|
|
676
676
|
|
|
677
|
-
Paralelamente, você também pode usar o `
|
|
677
|
+
Paralelamente, você também pode usar o `intlayerProxy` para adicionar roteamento no lado do servidor à sua aplicação. Este plugin detectará automaticamente o idioma atual com base na URL e definirá o cookie de idioma apropriado. Se nenhum idioma for especificado, o plugin determinará o idioma mais adequado com base nas preferências de idioma do navegador do usuário. Se nenhum idioma for detectado, ele redirecionará para o idioma padrão.
|
|
678
678
|
|
|
679
679
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
680
680
|
import { defineConfig } from "vite";
|
|
681
681
|
import vue from "@vitejs/plugin-vue";
|
|
682
|
-
import { intlayer,
|
|
682
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
683
683
|
|
|
684
684
|
// https://vitejs.dev/config/
|
|
685
685
|
export default defineConfig({
|
|
686
|
-
plugins: [vue(), intlayer(),
|
|
686
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
687
687
|
});
|
|
688
688
|
```
|
|
689
689
|
|
|
690
690
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
691
691
|
import { defineConfig } from "vite";
|
|
692
692
|
import vue from "@vitejs/plugin-vue";
|
|
693
|
-
import { intlayer,
|
|
693
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
694
694
|
|
|
695
695
|
// https://vitejs.dev/config/
|
|
696
696
|
export default defineConfig({
|
|
697
|
-
plugins: [vue(), intlayer(),
|
|
697
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
698
698
|
});
|
|
699
699
|
```
|
|
700
700
|
|
|
701
701
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
702
702
|
const { defineConfig } = require("vite");
|
|
703
703
|
const vue = require("@vitejs/plugin-vue");
|
|
704
|
-
const { intlayer,
|
|
704
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
705
705
|
|
|
706
706
|
// https://vitejs.dev/config/
|
|
707
707
|
module.exports = defineConfig({
|
|
708
|
-
plugins: [vue(), intlayer(),
|
|
708
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
709
709
|
});
|
|
710
710
|
const { defineConfig } = require("vite");
|
|
711
711
|
const vue = require("@vitejs/plugin-vue");
|
|
712
|
-
const { intlayer,
|
|
712
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
713
713
|
|
|
714
714
|
// https://vitejs.dev/config/
|
|
715
715
|
module.exports = defineConfig({
|
|
716
|
-
plugins: [vue(), intlayer(),
|
|
716
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
717
717
|
});
|
|
718
718
|
```
|
|
719
719
|
|
|
@@ -917,8 +917,8 @@ import { type FC } from "react";
|
|
|
917
917
|
import Link from "next/link";
|
|
918
918
|
|
|
919
919
|
const LocaleSwitcher: FC = () => {
|
|
920
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
921
|
-
|
|
920
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
921
|
+
useLocale();
|
|
922
922
|
|
|
923
923
|
return (
|
|
924
924
|
<div>
|
|
@@ -930,7 +930,7 @@ const LocaleSwitcher: FC = () => {
|
|
|
930
930
|
hrefLang={localeItem}
|
|
931
931
|
key={localeItem}
|
|
932
932
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
933
|
-
onClick={() =>
|
|
933
|
+
onClick={() => setLocale(localeItem)}
|
|
934
934
|
>
|
|
935
935
|
<span>
|
|
936
936
|
{/* Локаль - например, FR */}
|
|
@@ -969,8 +969,8 @@ import { useLocale } from "next-intlayer";
|
|
|
969
969
|
import Link from "next/link";
|
|
970
970
|
|
|
971
971
|
const LocaleSwitcher = () => {
|
|
972
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
973
|
-
|
|
972
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
973
|
+
useLocale();
|
|
974
974
|
|
|
975
975
|
return (
|
|
976
976
|
<div>
|
|
@@ -982,7 +982,7 @@ const LocaleSwitcher = () => {
|
|
|
982
982
|
hrefLang={localeItem}
|
|
983
983
|
key={localeItem}
|
|
984
984
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
985
|
-
onClick={() =>
|
|
985
|
+
onClick={() => setLocale(localeItem)}
|
|
986
986
|
>
|
|
987
987
|
<span>
|
|
988
988
|
{/* Локаль - например, FR */}
|
|
@@ -1021,8 +1021,8 @@ const { useLocale } = require("next-intlayer");
|
|
|
1021
1021
|
const Link = require("next/link");
|
|
1022
1022
|
|
|
1023
1023
|
const LocaleSwitcher = () => {
|
|
1024
|
-
const { locale, pathWithoutLocale, availableLocales } = useLocale();
|
|
1025
|
-
|
|
1024
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } = useLocale();
|
|
1025
|
+
|
|
1026
1026
|
|
|
1027
1027
|
return (
|
|
1028
1028
|
<div>
|
|
@@ -1035,7 +1035,7 @@ const LocaleSwitcher = () => {
|
|
|
1035
1035
|
key={localeItem}
|
|
1036
1036
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1037
1037
|
onClick={() =>
|
|
1038
|
-
|
|
1038
|
+
setLocaleInStorage(localeItem)
|
|
1039
1039
|
}
|
|
1040
1040
|
>
|
|
1041
1041
|
<span>
|
|
@@ -1190,8 +1190,8 @@ import { useLocale } from "next-intlayer";
|
|
|
1190
1190
|
import Link from "next/link";
|
|
1191
1191
|
|
|
1192
1192
|
export const LocaleSwitcher: FC = () => {
|
|
1193
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1194
|
-
|
|
1193
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1194
|
+
useLocale();
|
|
1195
1195
|
|
|
1196
1196
|
return (
|
|
1197
1197
|
<div>
|
|
@@ -1203,7 +1203,7 @@ export const LocaleSwitcher: FC = () => {
|
|
|
1203
1203
|
hrefLang={localeItem}
|
|
1204
1204
|
key={localeItem}
|
|
1205
1205
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1206
|
-
onClick={() =>
|
|
1206
|
+
onClick={() => setLocale(localeItem)}
|
|
1207
1207
|
>
|
|
1208
1208
|
<span>
|
|
1209
1209
|
{/* Локаль - например, FR */}
|
|
@@ -1242,8 +1242,8 @@ import { useLocale } from "next-intlayer";
|
|
|
1242
1242
|
import Link from "next/link";
|
|
1243
1243
|
|
|
1244
1244
|
export const LocaleSwitcher = () => {
|
|
1245
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1246
|
-
|
|
1245
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1246
|
+
useLocale();
|
|
1247
1247
|
|
|
1248
1248
|
return (
|
|
1249
1249
|
<div>
|
|
@@ -1255,7 +1255,7 @@ export const LocaleSwitcher = () => {
|
|
|
1255
1255
|
hrefLang={localeItem}
|
|
1256
1256
|
key={localeItem}
|
|
1257
1257
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1258
|
-
onClick={() =>
|
|
1258
|
+
onClick={() => setLocale(localeItem)}
|
|
1259
1259
|
>
|
|
1260
1260
|
<span>
|
|
1261
1261
|
{/* Локаль - например, FR */}
|
|
@@ -1294,7 +1294,8 @@ const { useLocale } = require("next-intlayer");
|
|
|
1294
1294
|
const Link = require("next/link");
|
|
1295
1295
|
|
|
1296
1296
|
export const LocaleSwitcher = () => {
|
|
1297
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1297
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1298
|
+
useLocale();
|
|
1298
1299
|
|
|
1299
1300
|
return (
|
|
1300
1301
|
<div>
|
|
@@ -1306,7 +1307,7 @@ export const LocaleSwitcher = () => {
|
|
|
1306
1307
|
hrefLang={localeItem}
|
|
1307
1308
|
key={localeItem}
|
|
1308
1309
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1309
|
-
onClick={() =>
|
|
1310
|
+
onClick={() => setLocale(localeItem)}
|
|
1310
1311
|
>
|
|
1311
1312
|
<span>
|
|
1312
1313
|
{/* Локаль - например, FR */}
|
|
@@ -151,7 +151,7 @@ export default withIntlayer(nextConfig);
|
|
|
151
151
|
Настройте middleware для автоматического определения и обработки предпочтительной локали пользователя:
|
|
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).
|
|
@@ -1119,7 +1119,6 @@ import Link from "next/link";
|
|
|
1119
1119
|
|
|
1120
1120
|
const LocaleSwitcher: FC = () => {
|
|
1121
1121
|
const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
|
|
1122
|
-
const { setLocaleCookie } = useLocaleCookie();
|
|
1123
1122
|
|
|
1124
1123
|
return (
|
|
1125
1124
|
<div>
|
|
@@ -1131,7 +1130,7 @@ const LocaleSwitcher: FC = () => {
|
|
|
1131
1130
|
hrefLang={localeItem}
|
|
1132
1131
|
key={localeItem}
|
|
1133
1132
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1134
|
-
onClick={() =>
|
|
1133
|
+
onClick={() => setLocale(localeItem)}
|
|
1135
1134
|
>
|
|
1136
1135
|
<span>
|
|
1137
1136
|
{/* Локаль - например, FR */}
|
|
@@ -1169,7 +1168,6 @@ import Link from "next/link";
|
|
|
1169
1168
|
|
|
1170
1169
|
const LocaleSwitcher = () => {
|
|
1171
1170
|
const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
|
|
1172
|
-
const { setLocaleCookie } = useLocaleCookie();
|
|
1173
1171
|
|
|
1174
1172
|
return (
|
|
1175
1173
|
<div>
|
|
@@ -1181,7 +1179,7 @@ const LocaleSwitcher = () => {
|
|
|
1181
1179
|
hrefLang={localeItem}
|
|
1182
1180
|
key={localeItem}
|
|
1183
1181
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1184
|
-
onClick={() =>
|
|
1182
|
+
onClick={() => setLocale(localeItem)}
|
|
1185
1183
|
>
|
|
1186
1184
|
<span>
|
|
1187
1185
|
{/* Локаль - например, FR */}
|
|
@@ -1219,7 +1217,6 @@ const Link = require("next/link");
|
|
|
1219
1217
|
|
|
1220
1218
|
const LocaleSwitcher = () => {
|
|
1221
1219
|
const { locale, pathWithoutLocale, availableLocales } = useLocalePageRouter();
|
|
1222
|
-
const { setLocaleCookie } = useLocaleCookie();
|
|
1223
1220
|
|
|
1224
1221
|
return (
|
|
1225
1222
|
<select>
|
|
@@ -1229,7 +1226,7 @@ const LocaleSwitcher = () => {
|
|
|
1229
1226
|
href={getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
1230
1227
|
hrefLang={localeItem}
|
|
1231
1228
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1232
|
-
onClick={() =>
|
|
1229
|
+
onClick={() => setLocale(localeItem)}
|
|
1233
1230
|
>
|
|
1234
1231
|
<span>
|
|
1235
1232
|
{/* Локаль - например, FR */}
|
|
@@ -318,7 +318,7 @@ import {
|
|
|
318
318
|
getLocalizedUrl,
|
|
319
319
|
getPathWithoutLocale,
|
|
320
320
|
} from "intlayer";
|
|
321
|
-
import {
|
|
321
|
+
import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
|
|
322
322
|
import { Link, useLocation } from "react-router";
|
|
323
323
|
|
|
324
324
|
export const LocaleSwitcher: FC = () => {
|
|
@@ -336,7 +336,7 @@ export const LocaleSwitcher: FC = () => {
|
|
|
336
336
|
<Link
|
|
337
337
|
aria-current={localeItem === locale ? "page" : undefined}
|
|
338
338
|
aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeItem)}`}
|
|
339
|
-
onClick={() =>
|
|
339
|
+
onClick={() => setLocale(localeItem)}
|
|
340
340
|
to={getLocalizedUrl(pathWithoutLocale, localeItem)}
|
|
341
341
|
>
|
|
342
342
|
<span>
|
|
@@ -405,18 +405,18 @@ export default function RootLayout() {
|
|
|
405
405
|
|
|
406
406
|
### Шаг 11: Добавьте middleware (необязательно)
|
|
407
407
|
|
|
408
|
-
Вы также можете использовать `
|
|
408
|
+
Вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
409
409
|
|
|
410
|
-
> Обратите внимание, что для использования `
|
|
410
|
+
> Обратите внимание, что для использования `intlayerProxy` в продакшене необходимо переместить пакет `vite-intlayer` из `devDependencies` в `dependencies`.
|
|
411
411
|
|
|
412
412
|
```typescript {3,7} fileName="vite.config.ts"
|
|
413
413
|
import { defineConfig } from "vite";
|
|
414
414
|
import react from "@vitejs/plugin-react-swc";
|
|
415
|
-
import { intlayer,
|
|
415
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
416
416
|
|
|
417
417
|
// https://vitejs.dev/config/
|
|
418
418
|
export default defineConfig({
|
|
419
|
-
plugins: [react(), intlayer(),
|
|
419
|
+
plugins: [react(), intlayer(), intlayerProxy()],
|
|
420
420
|
});
|
|
421
421
|
```
|
|
422
422
|
|
|
@@ -231,12 +231,13 @@ type RemoveLocaleFromString<S extends string> = CollapseDoubleSlashes<
|
|
|
231
231
|
|
|
232
232
|
export const LocalizedLink: FC<LocalizedLinkProps> = (props) => {
|
|
233
233
|
const { locale } = useLocale();
|
|
234
|
+
const { localePrefix } = getPrefix(locale);
|
|
234
235
|
|
|
235
236
|
return (
|
|
236
237
|
<Link
|
|
237
238
|
{...props}
|
|
238
239
|
params={{
|
|
239
|
-
locale,
|
|
240
|
+
locale: localePrefix,
|
|
240
241
|
...(typeof props?.params === "object" ? props?.params : {}),
|
|
241
242
|
}}
|
|
242
243
|
to={`/${LOCALE_ROUTE}${props.to}` as LinkComponentProps["to"]}
|
|
@@ -363,8 +364,13 @@ function RouteComponent() {
|
|
|
363
364
|
import type { FC } from "react";
|
|
364
365
|
|
|
365
366
|
import { useLocation } from "@tanstack/react-router";
|
|
366
|
-
import {
|
|
367
|
-
|
|
367
|
+
import {
|
|
368
|
+
getHTMLTextDir,
|
|
369
|
+
getLocaleName,
|
|
370
|
+
getPathWithoutLocale,
|
|
371
|
+
getPrefix,
|
|
372
|
+
} from "intlayer";
|
|
373
|
+
import { setLocaleInStorage, useIntlayer, useLocale } from "react-intlayer";
|
|
368
374
|
|
|
369
375
|
import { LocalizedLink, To } from "./localized-link";
|
|
370
376
|
|
|
@@ -383,9 +389,8 @@ export const LocaleSwitcher: FC = () => {
|
|
|
383
389
|
<LocalizedLink
|
|
384
390
|
aria-current={localeEl === locale ? "page" : undefined}
|
|
385
391
|
aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeEl)}`}
|
|
386
|
-
onClick={() =>
|
|
387
|
-
params={{ locale: localeEl }}
|
|
388
|
-
to={pathWithoutLocale as To}
|
|
392
|
+
onClick={() => setLocaleInStorage(localeEl)}
|
|
393
|
+
params={{ locale: getPrefix(localeEl).localePrefix }}
|
|
389
394
|
>
|
|
390
395
|
<span>
|
|
391
396
|
{/* Локаль - например, FR */}
|
|
@@ -463,15 +468,15 @@ function LayoutComponent() {
|
|
|
463
468
|
|
|
464
469
|
### Шаг 11: Добавление middleware (необязательно)
|
|
465
470
|
|
|
466
|
-
Вы также можете использовать `
|
|
471
|
+
Вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующий cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
467
472
|
|
|
468
|
-
> Обратите внимание, что для использования `
|
|
473
|
+
> Обратите внимание, что для использования `intlayerProxy` в продакшене необходимо переместить пакет `vite-intlayer` из `devDependencies` в `dependencies`.
|
|
469
474
|
|
|
470
475
|
```typescript {3,7} fileName="vite.config.ts"
|
|
471
476
|
import { reactRouter } from "@react-router/dev/vite";
|
|
472
477
|
import tailwindcss from "@tailwindcss/vite";
|
|
473
478
|
import { defineConfig } from "vite";
|
|
474
|
-
import { intlayer,
|
|
479
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
475
480
|
import tsconfigPaths from "vite-tsconfig-paths";
|
|
476
481
|
|
|
477
482
|
export default defineConfig({
|
|
@@ -480,7 +485,7 @@ export default defineConfig({
|
|
|
480
485
|
reactRouter(),
|
|
481
486
|
tsconfigPaths(),
|
|
482
487
|
intlayer(),
|
|
483
|
-
|
|
488
|
+
intlayerProxy(),
|
|
484
489
|
],
|
|
485
490
|
});
|
|
486
491
|
```
|
|
@@ -1056,38 +1056,38 @@ const App = () => (
|
|
|
1056
1056
|
module.exports = App;
|
|
1057
1057
|
```
|
|
1058
1058
|
|
|
1059
|
-
Параллельно вы также можете использовать `
|
|
1059
|
+
Параллельно вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
1060
1060
|
|
|
1061
1061
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
1062
1062
|
import { defineConfig } from "vite";
|
|
1063
1063
|
import preact from "@preact/preset-vite";
|
|
1064
|
-
import { intlayer,
|
|
1064
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1065
1065
|
|
|
1066
1066
|
// https://vitejs.dev/config/
|
|
1067
1067
|
export default defineConfig({
|
|
1068
|
-
plugins: [preact(), intlayer(),
|
|
1068
|
+
plugins: [preact(), intlayer(), intlayerProxy()],
|
|
1069
1069
|
});
|
|
1070
1070
|
```
|
|
1071
1071
|
|
|
1072
1072
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
1073
1073
|
import { defineConfig } from "vite";
|
|
1074
1074
|
import preact from "@preact/preset-vite";
|
|
1075
|
-
import { intlayer,
|
|
1075
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1076
1076
|
|
|
1077
1077
|
// https://vitejs.dev/config/
|
|
1078
1078
|
export default defineConfig({
|
|
1079
|
-
plugins: [preact(), intlayer(),
|
|
1079
|
+
plugins: [preact(), intlayer(), intlayerProxy()],
|
|
1080
1080
|
});
|
|
1081
1081
|
```
|
|
1082
1082
|
|
|
1083
1083
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
1084
1084
|
const { defineConfig } = require("vite");
|
|
1085
1085
|
const preact = require("@preact/preset-vite");
|
|
1086
|
-
const { intlayer,
|
|
1086
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
1087
1087
|
|
|
1088
1088
|
// https://vitejs.dev/config/
|
|
1089
1089
|
module.exports = defineConfig({
|
|
1090
|
-
plugins: [preact(), intlayer(),
|
|
1090
|
+
plugins: [preact(), intlayer(), intlayerProxy()],
|
|
1091
1091
|
});
|
|
1092
1092
|
```
|
|
1093
1093
|
|
|
@@ -1017,38 +1017,38 @@ const App = () => (
|
|
|
1017
1017
|
);
|
|
1018
1018
|
```
|
|
1019
1019
|
|
|
1020
|
-
Параллельно вы также можете использовать `
|
|
1020
|
+
Параллельно вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
1021
1021
|
|
|
1022
1022
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
1023
1023
|
import { defineConfig } from "vite";
|
|
1024
1024
|
import react from "@vitejs/plugin-react-swc";
|
|
1025
|
-
import { intlayer,
|
|
1025
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1026
1026
|
|
|
1027
1027
|
// https://vitejs.dev/config/
|
|
1028
1028
|
export default defineConfig({
|
|
1029
|
-
plugins: [react(), intlayer(),
|
|
1029
|
+
plugins: [react(), intlayer(), intlayerProxy()],
|
|
1030
1030
|
});
|
|
1031
1031
|
```
|
|
1032
1032
|
|
|
1033
1033
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
1034
1034
|
import { defineConfig } from "vite";
|
|
1035
1035
|
import react from "@vitejs/plugin-react-swc";
|
|
1036
|
-
import { intlayer,
|
|
1036
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
1037
1037
|
|
|
1038
1038
|
// https://vitejs.dev/config/
|
|
1039
1039
|
export default defineConfig({
|
|
1040
|
-
plugins: [react(), intlayer(),
|
|
1040
|
+
plugins: [react(), intlayer(), intlayerProxy()],
|
|
1041
1041
|
});
|
|
1042
1042
|
```
|
|
1043
1043
|
|
|
1044
1044
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
1045
1045
|
const { defineConfig } = require("vite");
|
|
1046
1046
|
const react = require("@vitejs/plugin-react-swc");
|
|
1047
|
-
const { intlayer,
|
|
1047
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
1048
1048
|
|
|
1049
1049
|
// https://vitejs.dev/config/
|
|
1050
1050
|
module.exports = defineConfig({
|
|
1051
|
-
plugins: [react(), intlayer(),
|
|
1051
|
+
plugins: [react(), intlayer(), intlayerProxy()],
|
|
1052
1052
|
});
|
|
1053
1053
|
```
|
|
1054
1054
|
|
|
@@ -679,46 +679,46 @@ import LocaleSwitcher from "@components/LocaleSwitcher.vue"; // Импорт п
|
|
|
679
679
|
</template>
|
|
680
680
|
```
|
|
681
681
|
|
|
682
|
-
Параллельно вы также можете использовать `
|
|
682
|
+
Параллельно вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующий cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
683
683
|
|
|
684
684
|
```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
|
|
685
685
|
import { defineConfig } from "vite";
|
|
686
686
|
import vue from "@vitejs/plugin-vue";
|
|
687
|
-
import { intlayer,
|
|
687
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
688
688
|
|
|
689
689
|
// https://vitejs.dev/config/
|
|
690
690
|
export default defineConfig({
|
|
691
|
-
plugins: [vue(), intlayer(),
|
|
691
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
692
692
|
});
|
|
693
693
|
```
|
|
694
694
|
|
|
695
695
|
```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
|
|
696
696
|
import { defineConfig } from "vite";
|
|
697
697
|
import vue from "@vitejs/plugin-vue";
|
|
698
|
-
import { intlayer,
|
|
698
|
+
import { intlayer, intlayerProxy } from "vite-intlayer";
|
|
699
699
|
|
|
700
700
|
// https://vitejs.dev/config/
|
|
701
701
|
export default defineConfig({
|
|
702
|
-
plugins: [vue(), intlayer(),
|
|
702
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
703
703
|
});
|
|
704
704
|
```
|
|
705
705
|
|
|
706
706
|
```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
|
|
707
707
|
const { defineConfig } = require("vite");
|
|
708
708
|
const vue = require("@vitejs/plugin-vue");
|
|
709
|
-
const { intlayer,
|
|
709
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
710
710
|
|
|
711
711
|
// https://vitejs.dev/config/
|
|
712
712
|
module.exports = defineConfig({
|
|
713
|
-
plugins: [vue(), intlayer(),
|
|
713
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
714
714
|
});
|
|
715
715
|
const { defineConfig } = require("vite");
|
|
716
716
|
const vue = require("@vitejs/plugin-vue");
|
|
717
|
-
const { intlayer,
|
|
717
|
+
const { intlayer, intlayerProxy } = require("vite-intlayer");
|
|
718
718
|
|
|
719
719
|
// https://vitejs.dev/config/
|
|
720
720
|
module.exports = defineConfig({
|
|
721
|
-
plugins: [vue(), intlayer(),
|
|
721
|
+
plugins: [vue(), intlayer(), intlayerProxy()],
|
|
722
722
|
});
|
|
723
723
|
```
|
|
724
724
|
|
|
@@ -275,7 +275,7 @@ Bu yaklaşım şunları yapmanıza izin verir:
|
|
|
275
275
|
|
|
276
276
|
GitHub yıldızları, bir projenin popülaritesinin, topluluk güveninin ve uzun vadeli öneminin güçlü bir göstergesidir. Teknik kalitenin doğrudan bir ölçüsü olmasa da, kaç geliştiricinin projeyi yararlı bulduğunu, ilerlemesini takip ettiğini ve muhtemelen benimsediğini yansıtır. Bir projenin değerini tahmin etmek için yıldızlar, alternatifler arasındaki çekişmeyi karşılaştırmaya ve ekosistem büyümesine ilişkin içgörüler sağlamaya yardımcı olur.
|
|
277
277
|
|
|
278
|
-
[](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&i18next/i18next&i18next/next-i18next&lingui/js-lingui&amannn/next-intl&intlify/vue-i18n&aymericzip/intlayer)
|
|
278
|
+
[](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&i18next/i18next&i18next/next-i18next&lingui/js-lingui&amannn/next-intl&intlify/vue-i18n&opral/monorepo&aymericzip/intlayer)
|
|
279
279
|
|
|
280
280
|
---
|
|
281
281
|
|
|
@@ -1151,8 +1151,8 @@ import { useLocale } from "next-intlayer";
|
|
|
1151
1151
|
import Link from "next/link";
|
|
1152
1152
|
|
|
1153
1153
|
export const LocaleSwitcher: FC = () => {
|
|
1154
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1155
|
-
|
|
1154
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1155
|
+
useLocale();
|
|
1156
1156
|
|
|
1157
1157
|
return (
|
|
1158
1158
|
<div>
|
|
@@ -1164,7 +1164,7 @@ export const LocaleSwitcher: FC = () => {
|
|
|
1164
1164
|
hrefLang={localeItem}
|
|
1165
1165
|
key={localeItem}
|
|
1166
1166
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1167
|
-
onClick={() =>
|
|
1167
|
+
onClick={() => setLocale(localeItem)}
|
|
1168
1168
|
>
|
|
1169
1169
|
<span>
|
|
1170
1170
|
{/* Yerel ayar - örn. FR */}
|
|
@@ -1203,8 +1203,8 @@ import { useLocale } from "next-intlayer";
|
|
|
1203
1203
|
import Link from "next/link";
|
|
1204
1204
|
|
|
1205
1205
|
export const LocaleSwitcher = () => {
|
|
1206
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1207
|
-
|
|
1206
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1207
|
+
useLocale();
|
|
1208
1208
|
|
|
1209
1209
|
return (
|
|
1210
1210
|
<div>
|
|
@@ -1216,7 +1216,7 @@ export const LocaleSwitcher = () => {
|
|
|
1216
1216
|
hrefLang={localeItem}
|
|
1217
1217
|
key={localeItem}
|
|
1218
1218
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1219
|
-
onClick={() =>
|
|
1219
|
+
onClick={() => setLocale(localeItem)}
|
|
1220
1220
|
>
|
|
1221
1221
|
<span>
|
|
1222
1222
|
{/* Yerel ayar - örn. FR */}
|
|
@@ -1255,7 +1255,8 @@ const { useLocale } = require("next-intlayer");
|
|
|
1255
1255
|
const Link = require("next/link");
|
|
1256
1256
|
|
|
1257
1257
|
export const LocaleSwitcher = () => {
|
|
1258
|
-
const { locale, pathWithoutLocale, availableLocales } =
|
|
1258
|
+
const { locale, pathWithoutLocale, availableLocales, setLocale } =
|
|
1259
|
+
useLocale();
|
|
1259
1260
|
|
|
1260
1261
|
return (
|
|
1261
1262
|
<div>
|
|
@@ -1267,7 +1268,7 @@ export const LocaleSwitcher = () => {
|
|
|
1267
1268
|
hrefLang={localeItem}
|
|
1268
1269
|
key={localeItem}
|
|
1269
1270
|
aria-current={locale === localeItem ? "page" : undefined}
|
|
1270
|
-
onClick={() =>
|
|
1271
|
+
onClick={() => setLocale(localeItem)}
|
|
1271
1272
|
>
|
|
1272
1273
|
<span>
|
|
1273
1274
|
{/* Yerel ayar - örn. FR */}
|