@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-09-09
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Tanstack Start i18n - 如何翻译Tanstack Start 应用 2026
|
|
5
5
|
description: 学习如何使用 Intlayer 为您的 Tanstack Start 应用添加国际化 (i18n)。按照本综合指南,使您的应用支持多语言并具备基于区域设置的路由功能。
|
|
6
6
|
keywords:
|
|
@@ -777,6 +777,164 @@ Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库
|
|
|
777
777
|
|
|
778
778
|
---
|
|
779
779
|
|
|
780
|
+
### (可选) 步骤 1 : 提取组件内容
|
|
781
|
+
|
|
782
|
+
如果您有现有的代码库,转换数千个文件可能会非常耗时。
|
|
783
|
+
|
|
784
|
+
为了简化此过程,Intlayer 提出了 [编译器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) / [提取器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 来转换您的组件并提取内容。
|
|
785
|
+
|
|
786
|
+
要进行设置,您可以在 `intlayer.config.ts` 文件中添加 `compiler` 部分:
|
|
787
|
+
|
|
788
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
789
|
+
import { type IntlayerConfig } from "intlayer";
|
|
790
|
+
|
|
791
|
+
const config: IntlayerConfig = {
|
|
792
|
+
// ... 您的其他配置
|
|
793
|
+
compiler: {
|
|
794
|
+
/**
|
|
795
|
+
* 指示是否应启用编译器。
|
|
796
|
+
*/
|
|
797
|
+
enabled: true,
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* 定义输出文件路径
|
|
801
|
+
*/
|
|
802
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
803
|
+
|
|
804
|
+
/**
|
|
805
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
806
|
+
*/
|
|
807
|
+
saveComponents: false,
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* 字典键前缀
|
|
811
|
+
*/
|
|
812
|
+
dictionaryKeyPrefix: "",
|
|
813
|
+
},
|
|
814
|
+
};
|
|
815
|
+
|
|
816
|
+
export default config;
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
820
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
821
|
+
const config = {
|
|
822
|
+
// ... 您的其他配置
|
|
823
|
+
compiler: {
|
|
824
|
+
/**
|
|
825
|
+
* 指示是否应启用编译器。
|
|
826
|
+
*/
|
|
827
|
+
enabled: true,
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* 定义输出文件路径
|
|
831
|
+
*/
|
|
832
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
836
|
+
*/
|
|
837
|
+
saveComponents: false,
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* 字典键前缀
|
|
841
|
+
*/
|
|
842
|
+
dictionaryKeyPrefix: "",
|
|
843
|
+
},
|
|
844
|
+
};
|
|
845
|
+
|
|
846
|
+
export default config;
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
850
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
851
|
+
const config = {
|
|
852
|
+
// ... 您的其他配置
|
|
853
|
+
compiler: {
|
|
854
|
+
/**
|
|
855
|
+
* 指示是否应启用编译器。
|
|
856
|
+
*/
|
|
857
|
+
enabled: true,
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* 定义输出文件路径
|
|
861
|
+
*/
|
|
862
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
863
|
+
|
|
864
|
+
/**
|
|
865
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
866
|
+
*/
|
|
867
|
+
saveComponents: false,
|
|
868
|
+
|
|
869
|
+
/**
|
|
870
|
+
* 字典键前缀
|
|
871
|
+
*/
|
|
872
|
+
dictionaryKeyPrefix: "",
|
|
873
|
+
},
|
|
874
|
+
};
|
|
875
|
+
|
|
876
|
+
module.exports = config;
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
<Tabs>
|
|
880
|
+
<Tab value='提取命令'>
|
|
881
|
+
|
|
882
|
+
运行提取器以转换组件并提取内容
|
|
883
|
+
|
|
884
|
+
```bash packageManager="npm"
|
|
885
|
+
npx intlayer extract
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
```bash packageManager="pnpm"
|
|
889
|
+
pnpm intlayer extract
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
```bash packageManager="yarn"
|
|
893
|
+
yarn intlayer extract
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
```bash packageManager="bun"
|
|
897
|
+
bunx intlayer extract
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
</Tab>
|
|
901
|
+
<Tab value='Babel 编译器'>
|
|
902
|
+
|
|
903
|
+
更新您的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
904
|
+
|
|
905
|
+
```ts fileName="vite.config.ts"
|
|
906
|
+
import { defineConfig } from "vite";
|
|
907
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
908
|
+
|
|
909
|
+
export default defineConfig({
|
|
910
|
+
plugins: [
|
|
911
|
+
intlayer(),
|
|
912
|
+
intlayerCompiler(), // 添加编译器插件
|
|
913
|
+
],
|
|
914
|
+
});
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
```bash packageManager="npm"
|
|
918
|
+
npm run build # 或 npm run dev
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
```bash packageManager="pnpm"
|
|
922
|
+
pnpm run build # 或 pnpm run dev
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
```bash packageManager="yarn"
|
|
926
|
+
yarn build # 或 yarn dev
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
```bash packageManager="bun"
|
|
930
|
+
bun run build # Or bun run dev
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
</Tab>
|
|
934
|
+
</Tabs>
|
|
935
|
+
|
|
936
|
+
---
|
|
937
|
+
|
|
780
938
|
### Git 配置
|
|
781
939
|
|
|
782
940
|
建议忽略 Intlayer 生成的文件。这样可以避免将它们提交到您的 Git 仓库中。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + Preact i18n - 如何翻译Preact 应用 2026
|
|
5
5
|
description: 了解如何使您的 Vite 和 Preact 网站支持多语言。按照文档进行国际化(i18n)和翻译。
|
|
6
6
|
keywords:
|
|
@@ -27,7 +27,7 @@ history:
|
|
|
27
27
|
# 使用 Intlayer 翻译您的 Vite 和 Preact 网站 | 国际化 (i18n)
|
|
28
28
|
|
|
29
29
|
<Tabs defaultTab="video">
|
|
30
|
-
<Tab label="
|
|
30
|
+
<Tab label="视频" value="video">
|
|
31
31
|
|
|
32
32
|
<iframe title="The best i18n solution for Vite and Preact? Discover Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?si=VaKmrYMmXjo3xpk2"/>
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ history:
|
|
|
37
37
|
<iframe
|
|
38
38
|
src="https://stackblitz.com/github/aymericzip/intlayer-vite-preact-template?embed=1&ctl=1&file=intlayer.config.ts"
|
|
39
39
|
className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
|
|
40
|
-
title="Demo CodeSandbox -
|
|
40
|
+
title="Demo CodeSandbox - 如何使用 Intlayer 实现应用国际化"
|
|
41
41
|
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
|
|
42
42
|
loading="lazy"
|
|
43
43
|
/>
|
|
@@ -1361,6 +1361,162 @@ Intlayer 使用模块增强来利用 TypeScript 的优势,使您的代码库
|
|
|
1361
1361
|
|
|
1362
1362
|
---
|
|
1363
1363
|
|
|
1364
|
+
### (可选) 步骤 1 : 提取组件内容
|
|
1365
|
+
|
|
1366
|
+
如果您有现有的代码库,转换数千个文件可能会非常耗时。
|
|
1367
|
+
|
|
1368
|
+
为了简化此过程,Intlayer 提出了 [编译器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) / [提取器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 来转换您的组件并提取内容。
|
|
1369
|
+
|
|
1370
|
+
要进行设置,您可以在 `intlayer.config.ts` 文件中添加 `compiler` 部分:
|
|
1371
|
+
|
|
1372
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1373
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1374
|
+
|
|
1375
|
+
const config: IntlayerConfig = {
|
|
1376
|
+
// ... 您的其他配置
|
|
1377
|
+
compiler: {
|
|
1378
|
+
/**
|
|
1379
|
+
* 指示是否应启用编译器。
|
|
1380
|
+
*/
|
|
1381
|
+
enabled: true,
|
|
1382
|
+
|
|
1383
|
+
/**
|
|
1384
|
+
* 定义输出文件路径
|
|
1385
|
+
*/
|
|
1386
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1387
|
+
|
|
1388
|
+
/**
|
|
1389
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1390
|
+
*/
|
|
1391
|
+
saveComponents: false,
|
|
1392
|
+
|
|
1393
|
+
/**
|
|
1394
|
+
* 字典键前缀
|
|
1395
|
+
*/
|
|
1396
|
+
dictionaryKeyPrefix: "",
|
|
1397
|
+
},
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
export default config;
|
|
1401
|
+
```
|
|
1402
|
+
|
|
1403
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1404
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1405
|
+
const config = {
|
|
1406
|
+
// ... 您的其他配置
|
|
1407
|
+
compiler: {
|
|
1408
|
+
/**
|
|
1409
|
+
* 指示是否应启用编译器。
|
|
1410
|
+
*/
|
|
1411
|
+
enabled: true,
|
|
1412
|
+
|
|
1413
|
+
/**
|
|
1414
|
+
* 定义输出文件路径
|
|
1415
|
+
*/
|
|
1416
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1417
|
+
|
|
1418
|
+
/**
|
|
1419
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1420
|
+
*/
|
|
1421
|
+
saveComponents: false,
|
|
1422
|
+
|
|
1423
|
+
/**
|
|
1424
|
+
* 字典键前缀
|
|
1425
|
+
*/
|
|
1426
|
+
dictionaryKeyPrefix: "",
|
|
1427
|
+
},
|
|
1428
|
+
};
|
|
1429
|
+
|
|
1430
|
+
export default config;
|
|
1431
|
+
```
|
|
1432
|
+
|
|
1433
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1434
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1435
|
+
const config = {
|
|
1436
|
+
// ... 您的其他配置
|
|
1437
|
+
compiler: {
|
|
1438
|
+
/**
|
|
1439
|
+
* 指示是否应启用编译器。
|
|
1440
|
+
*/
|
|
1441
|
+
enabled: true,
|
|
1442
|
+
|
|
1443
|
+
/**
|
|
1444
|
+
* 定义输出文件路径
|
|
1445
|
+
*/
|
|
1446
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1450
|
+
*/
|
|
1451
|
+
saveComponents: false,
|
|
1452
|
+
|
|
1453
|
+
/**
|
|
1454
|
+
* 字典键前缀
|
|
1455
|
+
*/
|
|
1456
|
+
dictionaryKeyPrefix: "",
|
|
1457
|
+
},
|
|
1458
|
+
};
|
|
1459
|
+
|
|
1460
|
+
module.exports = config;
|
|
1461
|
+
```
|
|
1462
|
+
|
|
1463
|
+
<Tabs>
|
|
1464
|
+
<Tab value='提取命令'>
|
|
1465
|
+
|
|
1466
|
+
运行提取器以转换组件并提取内容
|
|
1467
|
+
|
|
1468
|
+
```bash packageManager="npm"
|
|
1469
|
+
npx intlayer extract
|
|
1470
|
+
```
|
|
1471
|
+
|
|
1472
|
+
```bash packageManager="pnpm"
|
|
1473
|
+
pnpm intlayer extract
|
|
1474
|
+
```
|
|
1475
|
+
|
|
1476
|
+
```bash packageManager="yarn"
|
|
1477
|
+
yarn intlayer extract
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
```bash packageManager="bun"
|
|
1481
|
+
bunx intlayer extract
|
|
1482
|
+
```
|
|
1483
|
+
|
|
1484
|
+
</Tab>
|
|
1485
|
+
<Tab value='Babel 编译器'>
|
|
1486
|
+
|
|
1487
|
+
更新您的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
1488
|
+
|
|
1489
|
+
```ts fileName="vite.config.ts"
|
|
1490
|
+
import { defineConfig } from "vite";
|
|
1491
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1492
|
+
|
|
1493
|
+
export default defineConfig({
|
|
1494
|
+
plugins: [
|
|
1495
|
+
intlayer(),
|
|
1496
|
+
intlayerCompiler(), // 添加编译器插件
|
|
1497
|
+
],
|
|
1498
|
+
});
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
```bash packageManager="npm"
|
|
1502
|
+
npm run build # 或 npm run dev
|
|
1503
|
+
```
|
|
1504
|
+
|
|
1505
|
+
```bash packageManager="pnpm"
|
|
1506
|
+
pnpm run build # 或 pnpm run dev
|
|
1507
|
+
```
|
|
1508
|
+
|
|
1509
|
+
```bash packageManager="yarn"
|
|
1510
|
+
yarn build # 或 yarn dev
|
|
1511
|
+
```
|
|
1512
|
+
|
|
1513
|
+
```bash packageManager="bun"
|
|
1514
|
+
bun run build # Or bun run dev
|
|
1515
|
+
```
|
|
1516
|
+
|
|
1517
|
+
</Tab>
|
|
1518
|
+
</Tabs>
|
|
1519
|
+
|
|
1364
1520
|
### 深入了解
|
|
1365
1521
|
|
|
1366
1522
|
要进一步了解,您可以实现 [可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md) 或使用 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md) 将内容外部化。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-03-07
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + React i18n - 如何翻译React 应用 2026
|
|
5
5
|
description: 学习如何使用 Intlayer 为您的 Vite 和 React 应用添加国际化 (i18n)。按照本指南使您的应用支持多语言。
|
|
6
6
|
keywords:
|
|
@@ -1405,6 +1405,162 @@ Intlayer 使用模块增强(module augmentation)来利用 TypeScript 的优
|
|
|
1405
1405
|
|
|
1406
1406
|
---
|
|
1407
1407
|
|
|
1408
|
+
### (可选) 步骤 1 : 提取组件内容
|
|
1409
|
+
|
|
1410
|
+
如果您有现有的代码库,转换数千个文件可能会非常耗时。
|
|
1411
|
+
|
|
1412
|
+
为了简化此过程,Intlayer 提出了 [编译器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/compiler.md) / [提取器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/cli/extract.md) 来转换您的组件并提取内容。
|
|
1413
|
+
|
|
1414
|
+
要进行设置,您可以在 `intlayer.config.ts` 文件中添加 `compiler` 部分:
|
|
1415
|
+
|
|
1416
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1417
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1418
|
+
|
|
1419
|
+
const config: IntlayerConfig = {
|
|
1420
|
+
// ... 您的其他配置
|
|
1421
|
+
compiler: {
|
|
1422
|
+
/**
|
|
1423
|
+
* 指示是否应启用编译器。
|
|
1424
|
+
*/
|
|
1425
|
+
enabled: true,
|
|
1426
|
+
|
|
1427
|
+
/**
|
|
1428
|
+
* 定义输出文件路径
|
|
1429
|
+
*/
|
|
1430
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1431
|
+
|
|
1432
|
+
/**
|
|
1433
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1434
|
+
*/
|
|
1435
|
+
saveComponents: false,
|
|
1436
|
+
|
|
1437
|
+
/**
|
|
1438
|
+
* 字典键前缀
|
|
1439
|
+
*/
|
|
1440
|
+
dictionaryKeyPrefix: "",
|
|
1441
|
+
},
|
|
1442
|
+
};
|
|
1443
|
+
|
|
1444
|
+
export default config;
|
|
1445
|
+
```
|
|
1446
|
+
|
|
1447
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1448
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1449
|
+
const config = {
|
|
1450
|
+
// ... 您的其他配置
|
|
1451
|
+
compiler: {
|
|
1452
|
+
/**
|
|
1453
|
+
* 指示是否应启用编译器。
|
|
1454
|
+
*/
|
|
1455
|
+
enabled: true,
|
|
1456
|
+
|
|
1457
|
+
/**
|
|
1458
|
+
* 定义输出文件路径
|
|
1459
|
+
*/
|
|
1460
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1461
|
+
|
|
1462
|
+
/**
|
|
1463
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1464
|
+
*/
|
|
1465
|
+
saveComponents: false,
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* 字典键前缀
|
|
1469
|
+
*/
|
|
1470
|
+
dictionaryKeyPrefix: "",
|
|
1471
|
+
},
|
|
1472
|
+
};
|
|
1473
|
+
|
|
1474
|
+
export default config;
|
|
1475
|
+
```
|
|
1476
|
+
|
|
1477
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1478
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1479
|
+
const config = {
|
|
1480
|
+
// ... 您的其他配置
|
|
1481
|
+
compiler: {
|
|
1482
|
+
/**
|
|
1483
|
+
* 指示是否应启用编译器。
|
|
1484
|
+
*/
|
|
1485
|
+
enabled: true,
|
|
1486
|
+
|
|
1487
|
+
/**
|
|
1488
|
+
* 定义输出文件路径
|
|
1489
|
+
*/
|
|
1490
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* 指示在转换后是否应保存组件。这样,编译器只需运行一次即可转换应用程序,然后即可将其删除。
|
|
1494
|
+
*/
|
|
1495
|
+
saveComponents: false,
|
|
1496
|
+
|
|
1497
|
+
/**
|
|
1498
|
+
* 字典键前缀
|
|
1499
|
+
*/
|
|
1500
|
+
dictionaryKeyPrefix: "",
|
|
1501
|
+
},
|
|
1502
|
+
};
|
|
1503
|
+
|
|
1504
|
+
module.exports = config;
|
|
1505
|
+
```
|
|
1506
|
+
|
|
1507
|
+
<Tabs>
|
|
1508
|
+
<Tab value='提取命令'>
|
|
1509
|
+
|
|
1510
|
+
运行提取器以转换组件并提取内容
|
|
1511
|
+
|
|
1512
|
+
```bash packageManager="npm"
|
|
1513
|
+
npx intlayer extract
|
|
1514
|
+
```
|
|
1515
|
+
|
|
1516
|
+
```bash packageManager="pnpm"
|
|
1517
|
+
pnpm intlayer extract
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1520
|
+
```bash packageManager="yarn"
|
|
1521
|
+
yarn intlayer extract
|
|
1522
|
+
```
|
|
1523
|
+
|
|
1524
|
+
```bash packageManager="bun"
|
|
1525
|
+
bunx intlayer extract
|
|
1526
|
+
```
|
|
1527
|
+
|
|
1528
|
+
</Tab>
|
|
1529
|
+
<Tab value='Babel 编译器'>
|
|
1530
|
+
|
|
1531
|
+
更新您的 `vite.config.ts` 以包含 `intlayerCompiler` 插件:
|
|
1532
|
+
|
|
1533
|
+
```ts fileName="vite.config.ts"
|
|
1534
|
+
import { defineConfig } from "vite";
|
|
1535
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1536
|
+
|
|
1537
|
+
export default defineConfig({
|
|
1538
|
+
plugins: [
|
|
1539
|
+
intlayer(),
|
|
1540
|
+
intlayerCompiler(), // 添加编译器插件
|
|
1541
|
+
],
|
|
1542
|
+
});
|
|
1543
|
+
```
|
|
1544
|
+
|
|
1545
|
+
```bash packageManager="npm"
|
|
1546
|
+
npm run build # 或 npm run dev
|
|
1547
|
+
```
|
|
1548
|
+
|
|
1549
|
+
```bash packageManager="pnpm"
|
|
1550
|
+
pnpm run build # 或 pnpm run dev
|
|
1551
|
+
```
|
|
1552
|
+
|
|
1553
|
+
```bash packageManager="yarn"
|
|
1554
|
+
yarn build # 或 yarn dev
|
|
1555
|
+
```
|
|
1556
|
+
|
|
1557
|
+
```bash packageManager="bun"
|
|
1558
|
+
bun run build # Or bun run dev
|
|
1559
|
+
```
|
|
1560
|
+
|
|
1561
|
+
</Tab>
|
|
1562
|
+
</Tabs>
|
|
1563
|
+
|
|
1408
1564
|
### 深入了解
|
|
1409
1565
|
|
|
1410
1566
|
要进一步使用,您可以实现[可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)或使用[内容管理系统(CMS)](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)将内容外部化。
|