@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 - Cách dịch ứng dụng Tanstack Start năm 2026
|
|
5
5
|
description: Tìm hiểu cách thêm quốc tế hóa (i18n) vào ứng dụng Tanstack Start của bạn bằng cách sử dụng Intlayer. Theo dõi hướng dẫn toàn diện này để làm cho ứng dụng của bạn đa ngôn ngữ với định tuyến nhận biết locale.
|
|
6
6
|
keywords:
|
|
@@ -773,6 +773,164 @@ Intlayer sử dụng module augmentation để tận dụng các lợi ích củ
|
|
|
773
773
|
|
|
774
774
|
---
|
|
775
775
|
|
|
776
|
+
### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
|
|
777
|
+
|
|
778
|
+
Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
|
|
779
|
+
|
|
780
|
+
Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
|
|
781
|
+
|
|
782
|
+
Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
|
|
783
|
+
|
|
784
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
785
|
+
import { type IntlayerConfig } from "intlayer";
|
|
786
|
+
|
|
787
|
+
const config: IntlayerConfig = {
|
|
788
|
+
// ... Phần còn lại của cấu hình
|
|
789
|
+
compiler: {
|
|
790
|
+
/**
|
|
791
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
792
|
+
*/
|
|
793
|
+
enabled: true,
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
797
|
+
*/
|
|
798
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
802
|
+
*/
|
|
803
|
+
saveComponents: false,
|
|
804
|
+
|
|
805
|
+
/**
|
|
806
|
+
* Tiền tố khóa từ điển
|
|
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
|
+
// ... Phần còn lại của cấu hình
|
|
819
|
+
compiler: {
|
|
820
|
+
/**
|
|
821
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
822
|
+
*/
|
|
823
|
+
enabled: true,
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
827
|
+
*/
|
|
828
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
832
|
+
*/
|
|
833
|
+
saveComponents: false,
|
|
834
|
+
|
|
835
|
+
/**
|
|
836
|
+
* Tiền tố khóa từ điển
|
|
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
|
+
// ... Phần còn lại của cấu hình
|
|
849
|
+
compiler: {
|
|
850
|
+
/**
|
|
851
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
852
|
+
*/
|
|
853
|
+
enabled: true,
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
857
|
+
*/
|
|
858
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
862
|
+
*/
|
|
863
|
+
saveComponents: false,
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* Tiền tố khóa từ điển
|
|
867
|
+
*/
|
|
868
|
+
dictionaryKeyPrefix: "",
|
|
869
|
+
},
|
|
870
|
+
};
|
|
871
|
+
|
|
872
|
+
module.exports = config;
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
<Tabs>
|
|
876
|
+
<Tab value='Lệnh trích xuất'>
|
|
877
|
+
|
|
878
|
+
Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
|
|
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='Trình biên dịch Babel'>
|
|
898
|
+
|
|
899
|
+
Cập nhật `vite.config.ts` của bạn để bao gồm plugin `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(), // Thêm plugin trình biên dịch
|
|
909
|
+
],
|
|
910
|
+
});
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
```bash packageManager="npm"
|
|
914
|
+
npm run build # Hoặc 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
|
### Cấu hình Git
|
|
777
935
|
|
|
778
936
|
Khuyến nghị bạn nên bỏ qua các file được tạo bởi Intlayer. Điều này giúp bạn tránh việc commit chúng vào kho Git của mình.
|
|
@@ -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 - Cách dịch ứng dụng Preact năm 2026
|
|
5
5
|
description: Khám phá cách làm cho trang web Vite và Preact của bạn đa ngôn ngữ. Theo dõi tài liệu để quốc tế hóa (i18n) và dịch nó.
|
|
6
6
|
keywords:
|
|
@@ -1364,6 +1364,162 @@ Tiện ích mở rộng này cung cấp:
|
|
|
1364
1364
|
|
|
1365
1365
|
---
|
|
1366
1366
|
|
|
1367
|
+
### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
|
|
1368
|
+
|
|
1369
|
+
Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
|
|
1370
|
+
|
|
1371
|
+
Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
|
|
1372
|
+
|
|
1373
|
+
Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
|
|
1374
|
+
|
|
1375
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1376
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1377
|
+
|
|
1378
|
+
const config: IntlayerConfig = {
|
|
1379
|
+
// ... Phần còn lại của cấu hình
|
|
1380
|
+
compiler: {
|
|
1381
|
+
/**
|
|
1382
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1383
|
+
*/
|
|
1384
|
+
enabled: true,
|
|
1385
|
+
|
|
1386
|
+
/**
|
|
1387
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1388
|
+
*/
|
|
1389
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1390
|
+
|
|
1391
|
+
/**
|
|
1392
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1393
|
+
*/
|
|
1394
|
+
saveComponents: false,
|
|
1395
|
+
|
|
1396
|
+
/**
|
|
1397
|
+
* Tiền tố khóa từ điển
|
|
1398
|
+
*/
|
|
1399
|
+
dictionaryKeyPrefix: "",
|
|
1400
|
+
},
|
|
1401
|
+
};
|
|
1402
|
+
|
|
1403
|
+
export default config;
|
|
1404
|
+
```
|
|
1405
|
+
|
|
1406
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1407
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1408
|
+
const config = {
|
|
1409
|
+
// ... Phần còn lại của cấu hình
|
|
1410
|
+
compiler: {
|
|
1411
|
+
/**
|
|
1412
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1413
|
+
*/
|
|
1414
|
+
enabled: true,
|
|
1415
|
+
|
|
1416
|
+
/**
|
|
1417
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1418
|
+
*/
|
|
1419
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1420
|
+
|
|
1421
|
+
/**
|
|
1422
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1423
|
+
*/
|
|
1424
|
+
saveComponents: false,
|
|
1425
|
+
|
|
1426
|
+
/**
|
|
1427
|
+
* Tiền tố khóa từ điển
|
|
1428
|
+
*/
|
|
1429
|
+
dictionaryKeyPrefix: "",
|
|
1430
|
+
},
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
export default config;
|
|
1434
|
+
```
|
|
1435
|
+
|
|
1436
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1437
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1438
|
+
const config = {
|
|
1439
|
+
// ... Phần còn lại của cấu hình
|
|
1440
|
+
compiler: {
|
|
1441
|
+
/**
|
|
1442
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1443
|
+
*/
|
|
1444
|
+
enabled: true,
|
|
1445
|
+
|
|
1446
|
+
/**
|
|
1447
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1448
|
+
*/
|
|
1449
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1450
|
+
|
|
1451
|
+
/**
|
|
1452
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1453
|
+
*/
|
|
1454
|
+
saveComponents: false,
|
|
1455
|
+
|
|
1456
|
+
/**
|
|
1457
|
+
* Tiền tố khóa từ điển
|
|
1458
|
+
*/
|
|
1459
|
+
dictionaryKeyPrefix: "",
|
|
1460
|
+
},
|
|
1461
|
+
};
|
|
1462
|
+
|
|
1463
|
+
module.exports = config;
|
|
1464
|
+
```
|
|
1465
|
+
|
|
1466
|
+
<Tabs>
|
|
1467
|
+
<Tab value='Lệnh trích xuất'>
|
|
1468
|
+
|
|
1469
|
+
Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
|
|
1470
|
+
|
|
1471
|
+
```bash packageManager="npm"
|
|
1472
|
+
npx intlayer extract
|
|
1473
|
+
```
|
|
1474
|
+
|
|
1475
|
+
```bash packageManager="pnpm"
|
|
1476
|
+
pnpm intlayer extract
|
|
1477
|
+
```
|
|
1478
|
+
|
|
1479
|
+
```bash packageManager="yarn"
|
|
1480
|
+
yarn intlayer extract
|
|
1481
|
+
```
|
|
1482
|
+
|
|
1483
|
+
```bash packageManager="bun"
|
|
1484
|
+
bunx intlayer extract
|
|
1485
|
+
```
|
|
1486
|
+
|
|
1487
|
+
</Tab>
|
|
1488
|
+
<Tab value='Trình biên dịch Babel'>
|
|
1489
|
+
|
|
1490
|
+
Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
|
|
1491
|
+
|
|
1492
|
+
```ts fileName="vite.config.ts"
|
|
1493
|
+
import { defineConfig } from "vite";
|
|
1494
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1495
|
+
|
|
1496
|
+
export default defineConfig({
|
|
1497
|
+
plugins: [
|
|
1498
|
+
intlayer(),
|
|
1499
|
+
intlayerCompiler(), // Thêm plugin trình biên dịch
|
|
1500
|
+
],
|
|
1501
|
+
});
|
|
1502
|
+
```
|
|
1503
|
+
|
|
1504
|
+
```bash packageManager="npm"
|
|
1505
|
+
npm run build # Hoặc npm run dev
|
|
1506
|
+
```
|
|
1507
|
+
|
|
1508
|
+
```bash packageManager="pnpm"
|
|
1509
|
+
pnpm run build # Or pnpm run dev
|
|
1510
|
+
```
|
|
1511
|
+
|
|
1512
|
+
```bash packageManager="yarn"
|
|
1513
|
+
yarn build # Or yarn dev
|
|
1514
|
+
```
|
|
1515
|
+
|
|
1516
|
+
```bash packageManager="bun"
|
|
1517
|
+
bun run build # Or bun run dev
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1520
|
+
</Tab>
|
|
1521
|
+
</Tabs>
|
|
1522
|
+
|
|
1367
1523
|
### Đi xa hơn
|
|
1368
1524
|
|
|
1369
1525
|
Để đi xa hơn, bạn có thể triển khai [trình chỉnh sửa trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_visual_editor.md) hoặc bên ngoài hóa nội dung của bạn bằng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/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 - Cách dịch ứng dụng React năm 2026
|
|
5
5
|
description: Tìm hiểu cách thêm quốc tế hóa (i18n) vào ứng dụng Vite và React của bạn bằng cách sử dụng Intlayer. Theo dõi hướng dẫn này để làm cho ứng dụng của bạn đa ngôn ngữ.
|
|
6
6
|
keywords:
|
|
@@ -1413,6 +1413,162 @@ Tiện ích mở rộng này cung cấp:
|
|
|
1413
1413
|
|
|
1414
1414
|
---
|
|
1415
1415
|
|
|
1416
|
+
### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
|
|
1417
|
+
|
|
1418
|
+
Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
|
|
1419
|
+
|
|
1420
|
+
Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
|
|
1421
|
+
|
|
1422
|
+
Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
|
|
1423
|
+
|
|
1424
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
1425
|
+
import { type IntlayerConfig } from "intlayer";
|
|
1426
|
+
|
|
1427
|
+
const config: IntlayerConfig = {
|
|
1428
|
+
// ... Phần còn lại của cấu hình
|
|
1429
|
+
compiler: {
|
|
1430
|
+
/**
|
|
1431
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1432
|
+
*/
|
|
1433
|
+
enabled: true,
|
|
1434
|
+
|
|
1435
|
+
/**
|
|
1436
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1437
|
+
*/
|
|
1438
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1442
|
+
*/
|
|
1443
|
+
saveComponents: false,
|
|
1444
|
+
|
|
1445
|
+
/**
|
|
1446
|
+
* Tiền tố khóa từ điển
|
|
1447
|
+
*/
|
|
1448
|
+
dictionaryKeyPrefix: "",
|
|
1449
|
+
},
|
|
1450
|
+
};
|
|
1451
|
+
|
|
1452
|
+
export default config;
|
|
1453
|
+
```
|
|
1454
|
+
|
|
1455
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
1456
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1457
|
+
const config = {
|
|
1458
|
+
// ... Phần còn lại của cấu hình
|
|
1459
|
+
compiler: {
|
|
1460
|
+
/**
|
|
1461
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1462
|
+
*/
|
|
1463
|
+
enabled: true,
|
|
1464
|
+
|
|
1465
|
+
/**
|
|
1466
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1467
|
+
*/
|
|
1468
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1469
|
+
|
|
1470
|
+
/**
|
|
1471
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1472
|
+
*/
|
|
1473
|
+
saveComponents: false,
|
|
1474
|
+
|
|
1475
|
+
/**
|
|
1476
|
+
* Tiền tố khóa từ điển
|
|
1477
|
+
*/
|
|
1478
|
+
dictionaryKeyPrefix: "",
|
|
1479
|
+
},
|
|
1480
|
+
};
|
|
1481
|
+
|
|
1482
|
+
export default config;
|
|
1483
|
+
```
|
|
1484
|
+
|
|
1485
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
1486
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
1487
|
+
const config = {
|
|
1488
|
+
// ... Phần còn lại của cấu hình
|
|
1489
|
+
compiler: {
|
|
1490
|
+
/**
|
|
1491
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
1492
|
+
*/
|
|
1493
|
+
enabled: true,
|
|
1494
|
+
|
|
1495
|
+
/**
|
|
1496
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
1497
|
+
*/
|
|
1498
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
1499
|
+
|
|
1500
|
+
/**
|
|
1501
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
1502
|
+
*/
|
|
1503
|
+
saveComponents: false,
|
|
1504
|
+
|
|
1505
|
+
/**
|
|
1506
|
+
* Tiền tố khóa từ điển
|
|
1507
|
+
*/
|
|
1508
|
+
dictionaryKeyPrefix: "",
|
|
1509
|
+
},
|
|
1510
|
+
};
|
|
1511
|
+
|
|
1512
|
+
module.exports = config;
|
|
1513
|
+
```
|
|
1514
|
+
|
|
1515
|
+
<Tabs>
|
|
1516
|
+
<Tab value='Lệnh trích xuất'>
|
|
1517
|
+
|
|
1518
|
+
Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
|
|
1519
|
+
|
|
1520
|
+
```bash packageManager="npm"
|
|
1521
|
+
npx intlayer extract
|
|
1522
|
+
```
|
|
1523
|
+
|
|
1524
|
+
```bash packageManager="pnpm"
|
|
1525
|
+
pnpm intlayer extract
|
|
1526
|
+
```
|
|
1527
|
+
|
|
1528
|
+
```bash packageManager="yarn"
|
|
1529
|
+
yarn intlayer extract
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
```bash packageManager="bun"
|
|
1533
|
+
bunx intlayer extract
|
|
1534
|
+
```
|
|
1535
|
+
|
|
1536
|
+
</Tab>
|
|
1537
|
+
<Tab value='Trình biên dịch Babel'>
|
|
1538
|
+
|
|
1539
|
+
Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
|
|
1540
|
+
|
|
1541
|
+
```ts fileName="vite.config.ts"
|
|
1542
|
+
import { defineConfig } from "vite";
|
|
1543
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
1544
|
+
|
|
1545
|
+
export default defineConfig({
|
|
1546
|
+
plugins: [
|
|
1547
|
+
intlayer(),
|
|
1548
|
+
intlayerCompiler(), // Thêm plugin trình biên dịch
|
|
1549
|
+
],
|
|
1550
|
+
});
|
|
1551
|
+
```
|
|
1552
|
+
|
|
1553
|
+
```bash packageManager="npm"
|
|
1554
|
+
npm run build # Hoặc npm run dev
|
|
1555
|
+
```
|
|
1556
|
+
|
|
1557
|
+
```bash packageManager="pnpm"
|
|
1558
|
+
pnpm run build # Or pnpm run dev
|
|
1559
|
+
```
|
|
1560
|
+
|
|
1561
|
+
```bash packageManager="yarn"
|
|
1562
|
+
yarn build # Or yarn dev
|
|
1563
|
+
```
|
|
1564
|
+
|
|
1565
|
+
```bash packageManager="bun"
|
|
1566
|
+
bun run build # Or bun run dev
|
|
1567
|
+
```
|
|
1568
|
+
|
|
1569
|
+
</Tab>
|
|
1570
|
+
</Tabs>
|
|
1571
|
+
|
|
1416
1572
|
### Tiến xa hơn
|
|
1417
1573
|
|
|
1418
1574
|
Để tiến xa hơn, bạn có thể triển khai [trình soạn thảo trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) hoặc tách nội dung của bạn ra ngoài bằng cách sử dụng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt:
|
|
3
|
+
updatedAt: 2026-03-12
|
|
4
4
|
title: Vite + Solid i18n - Cách dịch ứng dụng Solid năm 2026
|
|
5
5
|
description: Khám phá cách làm cho trang web Vite và Solid của bạn đa ngôn ngữ. Theo dõi tài liệu để quốc tế hóa (i18n) và dịch nó.
|
|
6
6
|
keywords:
|
|
@@ -576,6 +576,162 @@ Tiện ích mở rộng này cung cấp:
|
|
|
576
576
|
|
|
577
577
|
---
|
|
578
578
|
|
|
579
|
+
### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
|
|
580
|
+
|
|
581
|
+
Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
|
|
582
|
+
|
|
583
|
+
Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
|
|
584
|
+
|
|
585
|
+
Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
|
|
586
|
+
|
|
587
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
588
|
+
import { type IntlayerConfig } from "intlayer";
|
|
589
|
+
|
|
590
|
+
const config: IntlayerConfig = {
|
|
591
|
+
// ... Phần còn lại của cấu hình
|
|
592
|
+
compiler: {
|
|
593
|
+
/**
|
|
594
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
595
|
+
*/
|
|
596
|
+
enabled: true,
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
600
|
+
*/
|
|
601
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
605
|
+
*/
|
|
606
|
+
saveComponents: false,
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Tiền tố khóa từ điển
|
|
610
|
+
*/
|
|
611
|
+
dictionaryKeyPrefix: "",
|
|
612
|
+
},
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
export default config;
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
619
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
620
|
+
const config = {
|
|
621
|
+
// ... Phần còn lại của cấu hình
|
|
622
|
+
compiler: {
|
|
623
|
+
/**
|
|
624
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
625
|
+
*/
|
|
626
|
+
enabled: true,
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
630
|
+
*/
|
|
631
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
635
|
+
*/
|
|
636
|
+
saveComponents: false,
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* Tiền tố khóa từ điển
|
|
640
|
+
*/
|
|
641
|
+
dictionaryKeyPrefix: "",
|
|
642
|
+
},
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
export default config;
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
649
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
650
|
+
const config = {
|
|
651
|
+
// ... Phần còn lại của cấu hình
|
|
652
|
+
compiler: {
|
|
653
|
+
/**
|
|
654
|
+
* Cho biết trình biên dịch có nên được bật hay không.
|
|
655
|
+
*/
|
|
656
|
+
enabled: true,
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Xác định đường dẫn các tệp đầu ra
|
|
660
|
+
*/
|
|
661
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
|
|
665
|
+
*/
|
|
666
|
+
saveComponents: false,
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Tiền tố khóa từ điển
|
|
670
|
+
*/
|
|
671
|
+
dictionaryKeyPrefix: "",
|
|
672
|
+
},
|
|
673
|
+
};
|
|
674
|
+
|
|
675
|
+
module.exports = config;
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
<Tabs>
|
|
679
|
+
<Tab value='Lệnh trích xuất'>
|
|
680
|
+
|
|
681
|
+
Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
|
|
682
|
+
|
|
683
|
+
```bash packageManager="npm"
|
|
684
|
+
npx intlayer extract
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
```bash packageManager="pnpm"
|
|
688
|
+
pnpm intlayer extract
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
```bash packageManager="yarn"
|
|
692
|
+
yarn intlayer extract
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
```bash packageManager="bun"
|
|
696
|
+
bunx intlayer extract
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
</Tab>
|
|
700
|
+
<Tab value='Trình biên dịch Babel'>
|
|
701
|
+
|
|
702
|
+
Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
|
|
703
|
+
|
|
704
|
+
```ts fileName="vite.config.ts"
|
|
705
|
+
import { defineConfig } from "vite";
|
|
706
|
+
import { intlayer, intlayerCompiler } from "vite-intlayer";
|
|
707
|
+
|
|
708
|
+
export default defineConfig({
|
|
709
|
+
plugins: [
|
|
710
|
+
intlayer(),
|
|
711
|
+
intlayerCompiler(), // Thêm plugin trình biên dịch
|
|
712
|
+
],
|
|
713
|
+
});
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
```bash packageManager="npm"
|
|
717
|
+
npm run build # Hoặc npm run dev
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
```bash packageManager="pnpm"
|
|
721
|
+
pnpm run build # Or pnpm run dev
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
```bash packageManager="yarn"
|
|
725
|
+
yarn build # Or yarn dev
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
```bash packageManager="bun"
|
|
729
|
+
bun run build # Or bun run dev
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
</Tab>
|
|
733
|
+
</Tabs>
|
|
734
|
+
|
|
579
735
|
### Tiến xa hơn
|
|
580
736
|
|
|
581
737
|
Để tiến xa hơn, bạn có thể triển khai [trình soạn thảo trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_visual_editor.md) hoặc tách nội dung của bạn ra bên ngoài bằng cách sử dụng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md).
|