@intlayer/docs 8.3.0-canary.4 → 8.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/compiler.md +84 -49
- package/docs/ar/configuration.md +80 -37
- package/docs/ar/intlayer_with_nextjs_16.md +174 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ar/intlayer_with_react_router_v7.md +224 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ar/intlayer_with_svelte_kit.md +175 -2
- package/docs/ar/intlayer_with_tanstack.md +176 -1
- package/docs/ar/intlayer_with_vite+preact.md +174 -1
- package/docs/ar/intlayer_with_vite+react.md +174 -1
- package/docs/ar/intlayer_with_vite+solid.md +174 -1
- package/docs/ar/intlayer_with_vite+svelte.md +174 -1
- package/docs/ar/intlayer_with_vite+vue.md +174 -1
- package/docs/de/compiler.md +83 -48
- package/docs/de/configuration.md +434 -212
- package/docs/de/intlayer_with_nextjs_16.md +176 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
- package/docs/de/intlayer_with_react_router_v7.md +225 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
- package/docs/de/intlayer_with_svelte_kit.md +158 -2
- package/docs/de/intlayer_with_tanstack.md +159 -1
- package/docs/de/intlayer_with_vite+preact.md +157 -1
- package/docs/de/intlayer_with_vite+react.md +157 -1
- package/docs/de/intlayer_with_vite+solid.md +159 -3
- package/docs/de/intlayer_with_vite+svelte.md +157 -1
- package/docs/de/intlayer_with_vite+vue.md +157 -1
- package/docs/en/compiler.md +60 -33
- package/docs/en/configuration.md +80 -57
- package/docs/en/intlayer_with_nextjs_16.md +176 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
- package/docs/en/intlayer_with_react_router_v7.md +159 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
- package/docs/en/intlayer_with_svelte_kit.md +159 -0
- package/docs/en/intlayer_with_tanstack.md +160 -1
- package/docs/en/intlayer_with_vite+preact.md +159 -0
- package/docs/en/intlayer_with_vite+react.md +159 -0
- package/docs/en/intlayer_with_vite+solid.md +148 -27
- package/docs/en/intlayer_with_vite+svelte.md +159 -0
- package/docs/en/intlayer_with_vite+vue.md +142 -41
- package/docs/en-GB/compiler.md +66 -34
- package/docs/en-GB/configuration.md +78 -36
- package/docs/es/compiler.md +83 -48
- package/docs/es/configuration.md +429 -206
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +176 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +227 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
- package/docs/es/intlayer_with_svelte_kit.md +158 -2
- package/docs/es/intlayer_with_tanstack.md +160 -2
- package/docs/es/intlayer_with_vite+preact.md +162 -6
- package/docs/es/intlayer_with_vite+react.md +160 -4
- package/docs/es/intlayer_with_vite+solid.md +163 -7
- package/docs/es/intlayer_with_vite+svelte.md +157 -1
- package/docs/es/intlayer_with_vite+vue.md +165 -9
- package/docs/fr/compiler.md +81 -46
- package/docs/fr/configuration.md +355 -134
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +183 -7
- package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
- package/docs/fr/intlayer_with_react_router_v7.md +229 -3
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
- package/docs/fr/intlayer_with_svelte_kit.md +158 -2
- package/docs/fr/intlayer_with_tanstack.md +159 -1
- package/docs/fr/intlayer_with_vite+preact.md +164 -8
- package/docs/fr/intlayer_with_vite+react.md +162 -6
- package/docs/fr/intlayer_with_vite+solid.md +163 -7
- package/docs/fr/intlayer_with_vite+svelte.md +157 -1
- package/docs/fr/intlayer_with_vite+vue.md +164 -8
- package/docs/hi/compiler.md +81 -46
- package/docs/hi/configuration.md +87 -44
- package/docs/hi/intlayer_with_nextjs_16.md +174 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/hi/intlayer_with_react_router_v7.md +224 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/hi/intlayer_with_svelte_kit.md +158 -2
- package/docs/hi/intlayer_with_tanstack.md +159 -1
- package/docs/hi/intlayer_with_vite+preact.md +157 -1
- package/docs/hi/intlayer_with_vite+react.md +157 -1
- package/docs/hi/intlayer_with_vite+solid.md +157 -1
- package/docs/hi/intlayer_with_vite+svelte.md +157 -1
- package/docs/hi/intlayer_with_vite+vue.md +157 -1
- package/docs/id/compiler.md +84 -51
- package/docs/id/configuration.md +83 -45
- package/docs/id/intlayer_with_nextjs_16.md +174 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/id/intlayer_with_react_router_v7.md +224 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/id/intlayer_with_svelte_kit.md +158 -2
- package/docs/id/intlayer_with_tanstack.md +159 -1
- package/docs/id/intlayer_with_vite+preact.md +157 -1
- package/docs/id/intlayer_with_vite+react.md +157 -1
- package/docs/id/intlayer_with_vite+solid.md +157 -1
- package/docs/id/intlayer_with_vite+svelte.md +157 -1
- package/docs/id/intlayer_with_vite+vue.md +157 -1
- package/docs/it/compiler.md +81 -46
- package/docs/it/configuration.md +426 -204
- package/docs/it/intlayer_with_nextjs_16.md +174 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/it/intlayer_with_react_router_v7.md +225 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/it/intlayer_with_svelte_kit.md +158 -2
- package/docs/it/intlayer_with_tanstack.md +159 -1
- package/docs/it/intlayer_with_vite+preact.md +157 -1
- package/docs/it/intlayer_with_vite+react.md +157 -1
- package/docs/it/intlayer_with_vite+solid.md +159 -3
- package/docs/it/intlayer_with_vite+svelte.md +157 -1
- package/docs/it/intlayer_with_vite+vue.md +157 -1
- package/docs/ja/compiler.md +94 -58
- package/docs/ja/configuration.md +88 -45
- package/docs/ja/intlayer_with_nextjs_16.md +174 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ja/intlayer_with_react_router_v7.md +184 -394
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ja/intlayer_with_svelte_kit.md +119 -595
- package/docs/ja/intlayer_with_tanstack.md +131 -642
- package/docs/ja/intlayer_with_vite+preact.md +111 -1231
- package/docs/ja/intlayer_with_vite+react.md +129 -1304
- package/docs/ja/intlayer_with_vite+solid.md +159 -3
- package/docs/ja/intlayer_with_vite+svelte.md +157 -1
- package/docs/ja/intlayer_with_vite+vue.md +157 -1
- package/docs/ko/compiler.md +88 -52
- package/docs/ko/configuration.md +87 -44
- package/docs/ko/intlayer_with_nextjs_16.md +174 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ko/intlayer_with_react_router_v7.md +225 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ko/intlayer_with_svelte_kit.md +158 -2
- package/docs/ko/intlayer_with_tanstack.md +159 -1
- package/docs/ko/intlayer_with_vite+preact.md +157 -1
- package/docs/ko/intlayer_with_vite+react.md +157 -1
- package/docs/ko/intlayer_with_vite+solid.md +159 -3
- package/docs/ko/intlayer_with_vite+svelte.md +157 -1
- package/docs/ko/intlayer_with_vite+vue.md +157 -1
- package/docs/pl/compiler.md +84 -51
- package/docs/pl/configuration.md +83 -37
- package/docs/pl/intlayer_with_nextjs_16.md +174 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pl/intlayer_with_react_router_v7.md +224 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pl/intlayer_with_svelte_kit.md +158 -2
- package/docs/pl/intlayer_with_tanstack.md +159 -1
- package/docs/pl/intlayer_with_vite+preact.md +157 -1
- package/docs/pl/intlayer_with_vite+react.md +157 -1
- package/docs/pl/intlayer_with_vite+solid.md +157 -1
- package/docs/pl/intlayer_with_vite+svelte.md +157 -1
- package/docs/pl/intlayer_with_vite+vue.md +157 -1
- package/docs/pt/compiler.md +81 -46
- package/docs/pt/configuration.md +404 -194
- package/docs/pt/intlayer_with_nextjs_16.md +174 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pt/intlayer_with_react_router_v7.md +224 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pt/intlayer_with_svelte_kit.md +158 -2
- package/docs/pt/intlayer_with_tanstack.md +159 -1
- package/docs/pt/intlayer_with_vite+preact.md +157 -1
- package/docs/pt/intlayer_with_vite+react.md +157 -1
- package/docs/pt/intlayer_with_vite+solid.md +157 -1
- package/docs/pt/intlayer_with_vite+svelte.md +157 -1
- package/docs/pt/intlayer_with_vite+vue.md +157 -1
- package/docs/ru/compiler.md +90 -57
- package/docs/ru/configuration.md +76 -46
- package/docs/ru/intlayer_with_nextjs_16.md +174 -1
- package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ru/intlayer_with_react_router_v7.md +224 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ru/intlayer_with_svelte_kit.md +158 -2
- package/docs/ru/intlayer_with_tanstack.md +159 -1
- package/docs/ru/intlayer_with_vite+preact.md +157 -1
- package/docs/ru/intlayer_with_vite+react.md +157 -1
- package/docs/ru/intlayer_with_vite+solid.md +157 -1
- package/docs/ru/intlayer_with_vite+svelte.md +157 -1
- package/docs/ru/intlayer_with_vite+vue.md +157 -1
- package/docs/tr/compiler.md +85 -52
- package/docs/tr/configuration.md +83 -40
- package/docs/tr/intlayer_with_nextjs_16.md +174 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/tr/intlayer_with_react_router_v7.md +224 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/tr/intlayer_with_svelte_kit.md +158 -2
- package/docs/tr/intlayer_with_tanstack.md +159 -1
- package/docs/tr/intlayer_with_vite+preact.md +157 -1
- package/docs/tr/intlayer_with_vite+react.md +157 -1
- package/docs/tr/intlayer_with_vite+solid.md +157 -1
- package/docs/tr/intlayer_with_vite+svelte.md +157 -1
- package/docs/tr/intlayer_with_vite+vue.md +157 -1
- package/docs/uk/compiler.md +96 -61
- package/docs/uk/configuration.md +83 -37
- package/docs/uk/intlayer_with_nextjs_16.md +174 -1
- package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/uk/intlayer_with_react_router_v7.md +224 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/uk/intlayer_with_svelte_kit.md +157 -1
- package/docs/uk/intlayer_with_tanstack.md +159 -1
- package/docs/uk/intlayer_with_vite+preact.md +157 -1
- package/docs/uk/intlayer_with_vite+react.md +157 -1
- package/docs/uk/intlayer_with_vite+solid.md +157 -1
- package/docs/uk/intlayer_with_vite+svelte.md +157 -1
- package/docs/uk/intlayer_with_vite+vue.md +157 -1
- package/docs/vi/compiler.md +85 -50
- package/docs/vi/configuration.md +85 -39
- package/docs/vi/intlayer_with_nextjs_16.md +174 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/vi/intlayer_with_react_router_v7.md +224 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/vi/intlayer_with_svelte_kit.md +158 -2
- package/docs/vi/intlayer_with_tanstack.md +159 -1
- package/docs/vi/intlayer_with_vite+preact.md +157 -1
- package/docs/vi/intlayer_with_vite+react.md +157 -1
- package/docs/vi/intlayer_with_vite+solid.md +157 -1
- package/docs/vi/intlayer_with_vite+svelte.md +157 -1
- package/docs/vi/intlayer_with_vite+vue.md +157 -1
- package/docs/zh/compiler.md +84 -49
- package/docs/zh/configuration.md +80 -37
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +174 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/zh/intlayer_with_react_router_v7.md +227 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
- package/docs/zh/intlayer_with_svelte_kit.md +158 -2
- package/docs/zh/intlayer_with_tanstack.md +159 -1
- package/docs/zh/intlayer_with_vite+preact.md +159 -3
- package/docs/zh/intlayer_with_vite+react.md +157 -1
- package/docs/zh/intlayer_with_vite+solid.md +161 -5
- package/docs/zh/intlayer_with_vite+svelte.md +157 -1
- package/docs/zh/intlayer_with_vite+vue.md +158 -2
- package/package.json +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-12-07
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: React Router v7 i18n - Как перевести приложение React Router v7 в 2026
|
|
5
5
|
description: Узнайте, как добавить интернационализацию (i18n) в ваше приложение на React Router v7 с помощью Intlayer с маршрутизацией на основе файловой системы. Следуйте этому подробному руководству, чтобы сделать ваше приложение многоязычным с маршрутизацией, учитывающей локаль.
|
|
6
6
|
keywords:
|
|
@@ -571,6 +571,230 @@ export const useI18nHTMLAttributes = () => {
|
|
|
571
571
|
|
|
572
572
|
Этот хук уже используется в компоненте layout (`root.tsx`), показанном в Шаге 5.
|
|
573
573
|
|
|
574
|
+
### (Опционально) Шаг 1 : Извлечение содержимого ваших компонентов
|
|
575
|
+
|
|
576
|
+
Если у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
|
|
577
|
+
|
|
578
|
+
Чтобы упростить этот процесс, Intlayer предлагает [компилятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/compiler.md) / [экстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/extract.md) для преобразования ваших компонентов и извлечения содержимого.
|
|
579
|
+
|
|
580
|
+
Чтобы настроить его, вы можете добавить раздел `compiler` в ваш файл `intlayer.config.ts`:
|
|
581
|
+
|
|
582
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
583
|
+
import { type IntlayerConfig } from "intlayer";
|
|
584
|
+
|
|
585
|
+
const config: IntlayerConfig = {
|
|
586
|
+
// ... Остальная часть вашей конфигурации
|
|
587
|
+
compiler: {
|
|
588
|
+
/**
|
|
589
|
+
* Указывает, должен ли быть включен компилятор.
|
|
590
|
+
*/
|
|
591
|
+
enabled: true,
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Определяет путь к выходным файлам
|
|
595
|
+
*/
|
|
596
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
600
|
+
*/
|
|
601
|
+
saveComponents: false,
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Префикс ключа словаря
|
|
605
|
+
*/
|
|
606
|
+
dictionaryKeyPrefix: "",
|
|
607
|
+
},
|
|
608
|
+
};
|
|
609
|
+
|
|
610
|
+
export default config;
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
614
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
615
|
+
const config = {
|
|
616
|
+
// ... Остальная часть вашей конфигурации
|
|
617
|
+
compiler: {
|
|
618
|
+
/**
|
|
619
|
+
* Указывает, должен ли быть включен компилятор.
|
|
620
|
+
*/
|
|
621
|
+
enabled: true,
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Определяет путь к выходным файлам
|
|
625
|
+
*/
|
|
626
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
630
|
+
*/
|
|
631
|
+
saveComponents: false,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Префикс ключа словаря
|
|
635
|
+
*/
|
|
636
|
+
dictionaryKeyPrefix: "",
|
|
637
|
+
},
|
|
638
|
+
};
|
|
639
|
+
|
|
640
|
+
export default config;
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
644
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
645
|
+
const config = {
|
|
646
|
+
// ... Остальная часть вашей конфигурации
|
|
647
|
+
compiler: {
|
|
648
|
+
/**
|
|
649
|
+
* Указывает, должен ли быть включен компилятор.
|
|
650
|
+
*/
|
|
651
|
+
enabled: true,
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Определяет путь к выходным файлам
|
|
655
|
+
*/
|
|
656
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
660
|
+
*/
|
|
661
|
+
saveComponents: false,
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Префикс ключа словаря
|
|
665
|
+
*/
|
|
666
|
+
dictionaryKeyPrefix: "",
|
|
667
|
+
},
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
module.exports = config;
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
<Tabs>
|
|
674
|
+
<Tab value='Команда извлечения'>
|
|
675
|
+
|
|
676
|
+
Запустите экстрактор для преобразования компонентов и извлечения содержимого
|
|
677
|
+
|
|
678
|
+
```bash packageManager="npm"
|
|
679
|
+
npx intlayer extract
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
```bash packageManager="pnpm"
|
|
683
|
+
pnpm intlayer extract
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
```bash packageManager="yarn"
|
|
687
|
+
yarn intlayer extract
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
```bash packageManager="bun"
|
|
691
|
+
bunx intlayer extract
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
</Tab>
|
|
695
|
+
<Tab value='Компилятор Babel'>
|
|
696
|
+
|
|
697
|
+
Обновите ваш `vite.config.ts`, чтобы включить плагин `intlayerCompiler`:
|
|
698
|
+
|
|
699
|
+
```ts fileName="vite.config.ts"
|
|
700
|
+
import { defineConfig } from "vite";
|
|
701
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
702
|
+
|
|
703
|
+
export default defineConfig({
|
|
704
|
+
plugins: [
|
|
705
|
+
intlayer(),
|
|
706
|
+
intlayerCompiler(), // Добавляет плагин компилятора
|
|
707
|
+
],
|
|
708
|
+
});
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
```bash packageManager="npm"
|
|
712
|
+
npm run build # Или npm run dev
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
```bash packageManager="pnpm"
|
|
716
|
+
pnpm run build # Or pnpm run dev
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
```bash packageManager="yarn"
|
|
720
|
+
yarn build # Or yarn dev
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
```bash packageManager="bun"
|
|
724
|
+
bun run build # Or bun run dev
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
</Tab>
|
|
728
|
+
</Tabs>
|
|
729
|
+
|
|
730
|
+
---
|
|
731
|
+
|
|
732
|
+
## Configure TypeScript
|
|
733
|
+
|
|
734
|
+
Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
|
|
735
|
+
|
|
736
|
+
Ensure your TypeScript configuration includes the autogenerated types:
|
|
737
|
+
|
|
738
|
+
```json5 fileName="tsconfig.json"
|
|
739
|
+
{
|
|
740
|
+
// ... your existing configurations
|
|
741
|
+
include: [
|
|
742
|
+
// ... your existing includes
|
|
743
|
+
".intlayer/**/*.ts", // Include the auto-generated types
|
|
744
|
+
],
|
|
745
|
+
}
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
---
|
|
749
|
+
|
|
750
|
+
## Git Configuration
|
|
751
|
+
|
|
752
|
+
It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
|
|
753
|
+
|
|
754
|
+
To do this, you can add the following instructions to your `.gitignore` file:
|
|
755
|
+
|
|
756
|
+
```plaintext fileName=".gitignore"
|
|
757
|
+
# Ignore the files generated by Intlayer
|
|
758
|
+
.intlayer
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
---
|
|
762
|
+
|
|
763
|
+
## VS Code Extension
|
|
764
|
+
|
|
765
|
+
To improve your development experience with Intlayer, you can install the official **Intlayer VS Code Extension**.
|
|
766
|
+
|
|
767
|
+
[Install from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
768
|
+
|
|
769
|
+
This extension provides:
|
|
770
|
+
|
|
771
|
+
- **Autocompletion** for translation keys.
|
|
772
|
+
- **Real-time error detection** for missing translations.
|
|
773
|
+
- **Inline previews** of translated content.
|
|
774
|
+
- **Quick actions** to easily create and update translations.
|
|
775
|
+
|
|
776
|
+
For more details on how to use the extension, refer to the [Intlayer VS Code Extension documentation](https://intlayer.org/doc/vs-code-extension).
|
|
777
|
+
|
|
778
|
+
---
|
|
779
|
+
|
|
780
|
+
## Go Further
|
|
781
|
+
|
|
782
|
+
To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) or externalize your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
## Documentation References
|
|
787
|
+
|
|
788
|
+
- [Intlayer Documentation](https://intlayer.org)
|
|
789
|
+
- [React Router v7 Documentation](https://reactrouter.com/)
|
|
790
|
+
- [React Router fs-routes Documentation](https://reactrouter.com/how-to/file-route-conventions)
|
|
791
|
+
- [useIntlayer hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useIntlayer.md)
|
|
792
|
+
- [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md)
|
|
793
|
+
- [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)
|
|
794
|
+
- [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
|
|
795
|
+
|
|
796
|
+
This comprehensive guide provides everything you need to integrate Intlayer with React Router v7 using file-system based routing for a fully internationalized application with locale-aware routing and TypeScript support.
|
|
797
|
+
|
|
574
798
|
### Шаг 10: Добавьте middleware (необязательно)
|
|
575
799
|
|
|
576
800
|
Вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-11-20
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: SvelteKit i18n - Как перевести приложение SvelteKit в 2026
|
|
5
5
|
description: Узнайте, как сделать ваш сайт на SvelteKit многоязычным. Следуйте документации по интернационализации (i18n) и переводу с использованием серверного рендеринга (SSR).
|
|
6
6
|
keywords:
|
|
@@ -185,7 +185,7 @@ export default heroContent;
|
|
|
185
185
|
|
|
186
186
|
> **Примечание:** `useIntlayer` возвращает Svelte store, поэтому для доступа к его реактивному значению нужно использовать префикс `---
|
|
187
187
|
> createdAt: 2025-11-20
|
|
188
|
-
> updatedAt:
|
|
188
|
+
> updatedAt: 2026-03-12
|
|
189
189
|
> title: Как перевести ваше приложение SvelteKit – руководство по i18n 2026
|
|
190
190
|
> description: Узнайте, как сделать ваш сайт на SvelteKit многоязычным. Следуйте документации по интернационализации (i18n) и переводу с использованием серверного рендеринга (SSR).
|
|
191
191
|
> keywords:
|
|
@@ -744,6 +744,162 @@ export default defineConfig({
|
|
|
744
744
|
|
|
745
745
|
---
|
|
746
746
|
|
|
747
|
+
### (Опционально) Шаг 1 : Извлечение содержимого ваших компонентов
|
|
748
|
+
|
|
749
|
+
Если у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
|
|
750
|
+
|
|
751
|
+
Чтобы упростить этот процесс, Intlayer предлагает [компилятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/compiler.md) / [экстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/extract.md) для преобразования ваших компонентов и извлечения содержимого.
|
|
752
|
+
|
|
753
|
+
Чтобы настроить его, вы можете добавить раздел `compiler` в ваш файл `intlayer.config.ts`:
|
|
754
|
+
|
|
755
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
756
|
+
import { type IntlayerConfig } from "intlayer";
|
|
757
|
+
|
|
758
|
+
const config: IntlayerConfig = {
|
|
759
|
+
// ... Остальная часть вашей конфигурации
|
|
760
|
+
compiler: {
|
|
761
|
+
/**
|
|
762
|
+
* Указывает, должен ли быть включен компилятор.
|
|
763
|
+
*/
|
|
764
|
+
enabled: true,
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Определяет путь к выходным файлам
|
|
768
|
+
*/
|
|
769
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
773
|
+
*/
|
|
774
|
+
saveComponents: false,
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* Префикс ключа словаря
|
|
778
|
+
*/
|
|
779
|
+
dictionaryKeyPrefix: "",
|
|
780
|
+
},
|
|
781
|
+
};
|
|
782
|
+
|
|
783
|
+
export default config;
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
787
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
788
|
+
const config = {
|
|
789
|
+
// ... Остальная часть вашей конфигурации
|
|
790
|
+
compiler: {
|
|
791
|
+
/**
|
|
792
|
+
* Указывает, должен ли быть включен компилятор.
|
|
793
|
+
*/
|
|
794
|
+
enabled: true,
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* Определяет путь к выходным файлам
|
|
798
|
+
*/
|
|
799
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
803
|
+
*/
|
|
804
|
+
saveComponents: false,
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* Префикс ключа словаря
|
|
808
|
+
*/
|
|
809
|
+
dictionaryKeyPrefix: "",
|
|
810
|
+
},
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
export default config;
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
817
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
818
|
+
const config = {
|
|
819
|
+
// ... Остальная часть вашей конфигурации
|
|
820
|
+
compiler: {
|
|
821
|
+
/**
|
|
822
|
+
* Указывает, должен ли быть включен компилятор.
|
|
823
|
+
*/
|
|
824
|
+
enabled: true,
|
|
825
|
+
|
|
826
|
+
/**
|
|
827
|
+
* Определяет путь к выходным файлам
|
|
828
|
+
*/
|
|
829
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
833
|
+
*/
|
|
834
|
+
saveComponents: false,
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* Префикс ключа словаря
|
|
838
|
+
*/
|
|
839
|
+
dictionaryKeyPrefix: "",
|
|
840
|
+
},
|
|
841
|
+
};
|
|
842
|
+
|
|
843
|
+
module.exports = config;
|
|
844
|
+
```
|
|
845
|
+
|
|
846
|
+
<Tabs>
|
|
847
|
+
<Tab value='Команда извлечения'>
|
|
848
|
+
|
|
849
|
+
Запустите экстрактор для преобразования компонентов и извлечения содержимого
|
|
850
|
+
|
|
851
|
+
```bash packageManager="npm"
|
|
852
|
+
npx intlayer extract
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
```bash packageManager="pnpm"
|
|
856
|
+
pnpm intlayer extract
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
```bash packageManager="yarn"
|
|
860
|
+
yarn intlayer extract
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
```bash packageManager="bun"
|
|
864
|
+
bunx intlayer extract
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
</Tab>
|
|
868
|
+
<Tab value='Компилятор Babel'>
|
|
869
|
+
|
|
870
|
+
Обновите ваш `vite.config.ts`, чтобы включить плагин `intlayerCompiler`:
|
|
871
|
+
|
|
872
|
+
```ts fileName="vite.config.ts"
|
|
873
|
+
import { defineConfig } from "vite";
|
|
874
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
875
|
+
|
|
876
|
+
export default defineConfig({
|
|
877
|
+
plugins: [
|
|
878
|
+
intlayer(),
|
|
879
|
+
intlayerCompiler(), // Добавляет плагин компилятора
|
|
880
|
+
],
|
|
881
|
+
});
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
```bash packageManager="npm"
|
|
885
|
+
npm run build # Или npm run dev
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
```bash packageManager="pnpm"
|
|
889
|
+
pnpm run build # Or pnpm run dev
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
```bash packageManager="yarn"
|
|
893
|
+
yarn build # Or yarn dev
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
```bash packageManager="bun"
|
|
897
|
+
bun run build # Or bun run dev
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
</Tab>
|
|
901
|
+
</Tabs>
|
|
902
|
+
|
|
747
903
|
### Дальнейшие шаги
|
|
748
904
|
|
|
749
905
|
- **Визуальный редактор**: Интегрируйте [Визуальный редактор Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md), чтобы редактировать переводы напрямую из пользовательского интерфейса.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Tanstack Start i18n - Как перевести приложение Tanstack Start в 2026
|
|
5
5
|
description: Узнайте, как добавить интернационализацию (i18n) в ваше приложение Tanstack Start с помощью Intlayer. Следуйте этому подробному руководству, чтобы сделать ваше приложение многоязычным с маршрутизацией, учитывающей локаль.
|
|
6
6
|
keywords:
|
|
@@ -773,6 +773,164 @@ Intlayer использует расширение модулей (module augmen
|
|
|
773
773
|
|
|
774
774
|
---
|
|
775
775
|
|
|
776
|
+
### (Опционально) Шаг 1 : Извлечение содержимого ваших компонентов
|
|
777
|
+
|
|
778
|
+
Если у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
|
|
779
|
+
|
|
780
|
+
Чтобы упростить этот процесс, Intlayer предлагает [компилятор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/compiler.md) / [экстрактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/cli/extract.md) для преобразования ваших компонентов и извлечения содержимого.
|
|
781
|
+
|
|
782
|
+
Чтобы настроить его, вы можете добавить раздел `compiler` в ваш файл `intlayer.config.ts`:
|
|
783
|
+
|
|
784
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
785
|
+
import { type IntlayerConfig } from "intlayer";
|
|
786
|
+
|
|
787
|
+
const config: IntlayerConfig = {
|
|
788
|
+
// ... Остальная часть вашей конфигурации
|
|
789
|
+
compiler: {
|
|
790
|
+
/**
|
|
791
|
+
* Указывает, должен ли быть включен компилятор.
|
|
792
|
+
*/
|
|
793
|
+
enabled: true,
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Определяет путь к выходным файлам
|
|
797
|
+
*/
|
|
798
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
802
|
+
*/
|
|
803
|
+
saveComponents: false,
|
|
804
|
+
|
|
805
|
+
/**
|
|
806
|
+
* Префикс ключа словаря
|
|
807
|
+
*/
|
|
808
|
+
dictionaryKeyPrefix: "",
|
|
809
|
+
},
|
|
810
|
+
};
|
|
811
|
+
|
|
812
|
+
export default config;
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
816
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
817
|
+
const config = {
|
|
818
|
+
// ... Остальная часть вашей конфигурации
|
|
819
|
+
compiler: {
|
|
820
|
+
/**
|
|
821
|
+
* Указывает, должен ли быть включен компилятор.
|
|
822
|
+
*/
|
|
823
|
+
enabled: true,
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Определяет путь к выходным файлам
|
|
827
|
+
*/
|
|
828
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
832
|
+
*/
|
|
833
|
+
saveComponents: false,
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* Префикс ключа словаря
|
|
837
|
+
*/
|
|
838
|
+
dictionaryKeyPrefix: "",
|
|
839
|
+
},
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
export default config;
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
846
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
847
|
+
const config = {
|
|
848
|
+
// ... Остальная часть вашей конфигурации
|
|
849
|
+
compiler: {
|
|
850
|
+
/**
|
|
851
|
+
* Указывает, должен ли быть включен компилятор.
|
|
852
|
+
*/
|
|
853
|
+
enabled: true,
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Определяет путь к выходным файлам
|
|
857
|
+
*/
|
|
858
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
862
|
+
*/
|
|
863
|
+
saveComponents: false,
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* Префикс ключа словаря
|
|
867
|
+
*/
|
|
868
|
+
dictionaryKeyPrefix: "",
|
|
869
|
+
},
|
|
870
|
+
};
|
|
871
|
+
|
|
872
|
+
module.exports = config;
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
<Tabs>
|
|
876
|
+
<Tab value='Команда извлечения'>
|
|
877
|
+
|
|
878
|
+
Запустите экстрактор для преобразования компонентов и извлечения содержимого
|
|
879
|
+
|
|
880
|
+
```bash packageManager="npm"
|
|
881
|
+
npx intlayer extract
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
```bash packageManager="pnpm"
|
|
885
|
+
pnpm intlayer extract
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
```bash packageManager="yarn"
|
|
889
|
+
yarn intlayer extract
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
```bash packageManager="bun"
|
|
893
|
+
bunx intlayer extract
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
</Tab>
|
|
897
|
+
<Tab value='Компилятор Babel'>
|
|
898
|
+
|
|
899
|
+
Обновите ваш `vite.config.ts`, чтобы включить плагин `intlayerCompiler`:
|
|
900
|
+
|
|
901
|
+
```ts fileName="vite.config.ts"
|
|
902
|
+
import { defineConfig } from "vite";
|
|
903
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
904
|
+
|
|
905
|
+
export default defineConfig({
|
|
906
|
+
plugins: [
|
|
907
|
+
intlayer(),
|
|
908
|
+
intlayerCompiler(), // Добавляет плагин компилятора
|
|
909
|
+
],
|
|
910
|
+
});
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
```bash packageManager="npm"
|
|
914
|
+
npm run build # Или npm run dev
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
```bash packageManager="pnpm"
|
|
918
|
+
pnpm run build # Or pnpm run dev
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
```bash packageManager="yarn"
|
|
922
|
+
yarn build # Or yarn dev
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
```bash packageManager="bun"
|
|
926
|
+
bun run build # Or bun run dev
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
</Tab>
|
|
930
|
+
</Tabs>
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
776
934
|
### Конфигурация Git
|
|
777
935
|
|
|
778
936
|
Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
|