@intlayer/docs 8.4.6 → 8.4.8

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.
Files changed (33) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  2. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  3. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  4. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  5. package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  6. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  7. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  8. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  9. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  10. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
  11. package/docs/ar/configuration.md +300 -264
  12. package/docs/cs/configuration.md +958 -0
  13. package/docs/de/configuration.md +285 -249
  14. package/docs/en/configuration.md +115 -137
  15. package/docs/en-GB/configuration.md +272 -237
  16. package/docs/es/configuration.md +161 -125
  17. package/docs/fr/configuration.md +137 -101
  18. package/docs/it/configuration.md +294 -259
  19. package/docs/ja/configuration.md +269 -233
  20. package/docs/nl/configuration.md +958 -0
  21. package/docs/pt/configuration.md +311 -275
  22. package/docs/ru/configuration.md +287 -272
  23. package/docs/tr/configuration.md +265 -229
  24. package/package.json +6 -6
  25. package/docs/bn/configuration.md +0 -922
  26. package/docs/hi/configuration.md +0 -922
  27. package/docs/id/configuration.md +0 -922
  28. package/docs/ko/configuration.md +0 -922
  29. package/docs/pl/configuration.md +0 -922
  30. package/docs/uk/configuration.md +0 -922
  31. package/docs/ur/configuration.md +0 -922
  32. package/docs/vi/configuration.md +0 -922
  33. package/docs/zh/configuration.md +0 -922
@@ -1,922 +0,0 @@
1
- ---
2
- createdAt: 2024-08-13
3
- updatedAt: 2026-03-20
4
- title: Cấu hình (Configuration)
5
- description: Tìm hiểu cách cấu hình Intlayer cho ứng dụng của bạn. Hiểu các cài đặt và tùy chọn khác nhau có sẵn để tùy chỉnh Intlayer theo nhu cầu của bạn.
6
- keywords:
7
- - Cấu hình
8
- - Cài đặt
9
- - Tùy chỉnh
10
- - Intlayer
11
- - Tùy chọn
12
- slugs:
13
- - doc
14
- - concept
15
- - configuration
16
- history:
17
- - version: 8.4.0
18
- date: 2026-03-20
19
- changes: Thêm ký hiệu đối tượng theo từng ngôn ngữ cho 'compiler.output' và 'dictionary.fill'
20
- - version: 8.3.0
21
- date: 2026-03-11
22
- changes: Chuyển 'baseDir' từ cấu hình 'content' sang cấu hình 'system'
23
- - version: 8.2.0
24
- date: 2026-03-09
25
- changes: Cập nhật các tùy chọn của trình biên dịch (compiler), thêm hỗ trợ cho 'output' và 'noMetadata'
26
- - version: 8.1.7
27
- date: 2026-02-25
28
- changes: Cập nhật tùy chọn trình biên dịch
29
- - version: 8.1.5
30
- date: 2026-02-23
31
- changes: Thêm tùy chọn trình biên dịch 'build-only' và tiền tố từ điển
32
- - version: 8.0.6
33
- date: 2026-02-12
34
- changes: Thêm hỗ trợ cho các nhà cung cấp Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face và Together.ai
35
- - version: 8.0.5
36
- date: 2026-02-06
37
- changes: Thêm `dataSerialization` vào cấu hình AI
38
- - version: 8.0.0
39
- date: 2026-01-24
40
- changes: Đổi tên chế độ nhập `live` thành `fetch` để mô tả tốt hơn cơ chế cơ bản.
41
- - version: 8.0.0
42
- date: 2026-01-22
43
- changes: Chuyển cấu hình build `importMode` sang cấu hình từ điển `dictionary`.
44
- - version: 8.0.0
45
- date: 2026-01-22
46
- changes: Thêm tùy chọn `rewrite` cho cấu hình routing
47
- - version: 8.0.0
48
- date: 2026-01-18
49
- changes: Tách cấu hình hệ thống khỏi cấu hình nội dung. Chuyển các đường dẫn nội bộ vào thuộc tính `system`. Thêm `codeDir` để tách biệt các tệp nội dung và chuyển đổi mã.
50
- - version: 8.0.0
51
- date: 2026-01-18
52
- changes: Thêm các tùy chọn từ điển `location` và `schema`
53
- - version: 7.5.1
54
- date: 2026-01-10
55
- changes: Thêm hỗ trợ cho các định dạng tệp JSON5 và JSONC
56
- - version: 7.5.0
57
- date: 2025-12-17
58
- changes: Thêm tùy chọn `buildMode`
59
- - version: 7.0.0
60
- date: 2025-10-25
61
- changes: Thêm cấu hình `dictionary`
62
- - version: 7.0.0
63
- date: 2025-10-21
64
- changes: Thay thế `middleware` bằng cấu hình routing `routing`
65
- - version: 7.0.0
66
- date: 2025-10-12
67
- changes: Thêm tùy chọn `formatCommand`
68
- - version: 6.2.0
69
- date: 2025-10-12
70
- changes: Cập nhật tùy chọn `excludedPath`
71
- - version: 6.0.2
72
- date: 2025-09-23
73
- changes: Thêm tùy chọn `outputFormat`
74
- - version: 6.0.0
75
- date: 2025-09-21
76
- changes: Xóa trường `dictionaryOutput` và trường `i18nextResourcesDir`
77
- - version: 6.0.0
78
- date: 2025-09-16
79
- changes: Thêm chế độ nhập `live`
80
- - version: 6.0.0
81
- date: 2025-09-04
82
- changes: Thay thế trường `hotReload` bằng `liveSync`, và thêm các trường `liveSyncPort` và `liveSyncURL`
83
- - version: 5.6.1
84
- date: 2025-07-25
85
- changes: Thay thế `activateDynamicImport` bằng tùy chọn `importMode`
86
- - version: 5.6.0
87
- date: 2025-07-13
88
- changes: Thay đổi contentDir mặc định từ `['src']` thành `['.']`
89
- - version: 5.5.11
90
- date: 2025-06-29
91
- changes: Thêm các lệnh `docs`
92
- ---
93
-
94
- # Tài liệu Cấu hình Intlayer
95
-
96
- ## Tổng quan
97
-
98
- Các tệp cấu hình Intlayer cho phép bạn tùy chỉnh các khía cạnh khác nhau của plugin, chẳng hạn như quốc tế hóa (internationalization), middleware và xử lý nội dung. Tài liệu này cung cấp mô tả chi tiết về từng thuộc tính trong cấu hình.
99
-
100
- ---
101
-
102
- ## Mục lục
103
-
104
- <TOC/>
105
-
106
- ---
107
-
108
- ## Các định dạng tệp cấu hình được hỗ trợ
109
-
110
- Intlayer chấp nhận các định dạng tệp cấu hình JSON, JS, MJS và TS:
111
-
112
- - `intlayer.config.ts`
113
- - `intlayer.config.js`
114
- - `intlayer.config.json`
115
- - `intlayer.config.json5`
116
- - `intlayer.config.jsonc`
117
- - `intlayer.config.cjs`
118
- - `intlayer.config.mjs`
119
- - `.intlayerrc`
120
-
121
- ---
122
-
123
- ## Ví dụ tệp cấu hình
124
-
125
- ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
126
- import { Locales, type IntlayerConfig } from "intlayer";
127
- import { nextjsRewrite } from "intlayer/routing";
128
- import { z } from "zod";
129
-
130
- /**
131
- * Ví dụ tệp cấu hình Intlayer hiển thị tất cả các tùy chọn có sẵn.
132
- */
133
- const config: IntlayerConfig = {
134
- /**
135
- * Cấu hình cài đặt quốc tế hóa.
136
- */
137
- internationalization: {
138
- /**
139
- * Danh sách các ngôn ngữ (locales) được hỗ trợ trong ứng dụng.
140
- * Mặc định: [Locales.ENGLISH]
141
- */
142
- locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
143
-
144
- /**
145
- * Danh sách các ngôn ngữ bắt buộc phải được định nghĩa trong mỗi từ điển.
146
- * Nếu để trống, tất cả các ngôn ngữ đều bắt buộc trong chế độ `strict`.
147
- * Mặc định: []
148
- */
149
- requiredLocales: [Locales.ENGLISH],
150
-
151
- /**
152
- * Mức độ nghiêm ngặt cho nội dung được quốc tế hóa.
153
- * - "strict": Báo lỗi nếu thiếu bất kỳ ngôn ngữ nào đã khai báo hoặc nếu không được khai báo.
154
- * - "inclusive": Cảnh báo nếu thiếu ngôn ngữ đã khai báo.
155
- * - "loose": Chấp nhận bất kỳ ngôn ngữ nào hiện có.
156
- * Mặc định: "inclusive"
157
- */
158
- strictMode: "inclusive",
159
-
160
- /**
161
- * Ngôn ngữ mặc định được sử dụng làm phương án dự phòng (fallback) trong trường hợp không tìm thấy ngôn ngữ yêu cầu.
162
- * Mặc định: Locales.ENGLISH
163
- */
164
- defaultLocale: Locales.ENGLISH,
165
- },
166
-
167
- /**
168
- * Các cài đặt kiểm soát hoạt động của từ điển và hành vi dự phòng.
169
- */
170
- dictionary: {
171
- /**
172
- * Kiểm soát cách nhập từ điển.
173
- * - "static": Được nhập tĩnh tại thời điểm build.
174
- * - "dynamic": Được nhập động bằng Suspense.
175
- * - "fetch": Được truy xuất động qua Live Sync API.
176
- * Mặc định: "static"
177
- */
178
- importMode: "static",
179
-
180
- /**
181
- * Chiến lược tự động điền các bản dịch còn thiếu bằng AI.
182
- * Có thể là giá trị boolean hoặc một mẫu đường dẫn để lưu nội dung được điền.
183
- * Mặc định: true
184
- */
185
- fill: true,
186
-
187
- /**
188
- * Vị trí vật lý của các tệp từ điển.
189
- * - "local": Được lưu trữ trong hệ thống tệp cục bộ.
190
- * - "remote": Được lưu trữ trong Intlayer CMS.
191
- * - "hybrid": Được lưu trữ cả cục bộ và trong Intlayer CMS.
192
- * - "plugin" (hoặc bất kỳ chuỗi tùy chỉnh nào): Được cung cấp bởi một plugin hoặc nguồn tùy chỉnh.
193
- * Mặc định: "local"
194
- */
195
- location: "local",
196
-
197
- /**
198
- * Nội dung có nên được tự động chuyển đổi hay không (ví dụ: Markdown sang HTML).
199
- * Mặc định: false
200
- */
201
- contentAutoTransformation: false,
202
- },
203
-
204
- /**
205
- * Cấu hình routing và middleware.
206
- */
207
- routing: {
208
- /**
209
- * Chiến lược định tuyến ngôn ngữ.
210
- * - "prefix-no-default": Thêm tiền tố cho tất cả trừ ngôn ngữ mặc định (ví dụ: /dashboard, /fr/dashboard).
211
- * - "prefix-all": Thêm tiền tố cho tất cả các ngôn ngữ (ví dụ: /en/dashboard, /fr/dashboard).
212
- * - "no-prefix": Không có ngôn ngữ trong URL.
213
- * - "search-params": Sử dụng ?locale=...
214
- * Mặc định: "prefix-no-default"
215
- */
216
- mode: "prefix-no-default",
217
-
218
- /**
219
- * Nơi lưu trữ ngôn ngữ đã chọn của người dùng.
220
- * Tùy chọn: 'cookie', 'localStorage', 'sessionStorage', 'header' hoặc mảng của chúng.
221
- * Mặc định: ['cookie', 'header']
222
- */
223
- storage: ["cookie", "header"],
224
-
225
- /**
226
- * Đường dẫn cơ sở cho các URL của ứng dụng.
227
- * Mặc định: ""
228
- */
229
- basePath: "",
230
-
231
- /**
232
- * Các quy tắc ghi đè URL tùy chỉnh cho các đường dẫn cụ thể theo từng ngôn ngữ.
233
- */
234
- rewrite: nextjsRewrite({
235
- "/[locale]/about": {
236
- en: "/[locale]/about",
237
- fr: "/[locale]/a-propos",
238
- },
239
- }),
240
- },
241
-
242
- /**
243
- * Các cài đặt liên quan đến việc tìm kiếm và xử lý tệp nội dung.
244
- */
245
- content: {
246
- /**
247
- * Phần mở rộng tệp để quét từ điển.
248
- * Mặc định: ['.content.ts', '.content.js', '.content.json', v.v.]
249
- */
250
- fileExtensions: [".content.ts", ".content.js", ".content.json"],
251
-
252
- /**
253
- * Các thư mục chứa các tệp .content.
254
- * Mặc định: ["."]
255
- */
256
- contentDir: ["src"],
257
-
258
- /**
259
- * Nơi chứa mã nguồn.
260
- * Được sử dụng để tối ưu hóa build và chuyển đổi mã.
261
- * Mặc định: ["."]
262
- */
263
- codeDir: ["src"],
264
-
265
- /**
266
- * Các mẫu bị loại trừ khỏi quá trình quét.
267
- * Mặc định: ['node_modules', '.intlayer', v.v.]
268
- */
269
- excludedPath: ["node_modules"],
270
-
271
- /**
272
- * Có theo dõi các thay đổi và build lại từ điển trong quá trình phát triển không.
273
- * Mặc định: true trong môi trường phát triển
274
- */
275
- watch: true,
276
-
277
- /**
278
- * Lệnh được sử dụng để định dạng các tệp .content mới tạo / cập nhật.
279
- */
280
- formatCommand: 'npx prettier --write "{{file}}"',
281
- },
282
-
283
- /**
284
- * Cấu hình Trình chỉnh sửa trực quan (Visual Editor).
285
- */
286
- editor: {
287
- /**
288
- * Có bật trình chỉnh sửa trực quan hay không.
289
- * Mặc định: false
290
- */
291
- enabled: true,
292
-
293
- /**
294
- * URL ứng dụng của bạn để xác thực nguồn (origin validation).
295
- * Mặc định: ""
296
- */
297
- applicationURL: "http://localhost:3000",
298
-
299
- /**
300
- * Cổng cho máy chủ trình chỉnh sửa cục bộ.
301
- * Mặc định: 8000
302
- */
303
- port: 8000,
304
-
305
- /**
306
- * URL công khai cho trình chỉnh sửa.
307
- * Mặc định: "http://localhost:8000"
308
- */
309
- editorURL: "http://localhost:8000",
310
-
311
- /**
312
- * URL của Intlayer CMS.
313
- * Mặc định: "https://app.intlayer.org"
314
- */
315
- cmsURL: "https://app.intlayer.org",
316
-
317
- /**
318
- * URL của Backend API.
319
- * Mặc định: "https://back.intlayer.org"
320
- */
321
- backendURL: "https://back.intlayer.org",
322
-
323
- /**
324
- * Có bật đồng bộ nội dung thời gian thực không.
325
- * Mặc định: false
326
- */
327
- liveSync: true,
328
- },
329
-
330
- /**
331
- * Các cài đặt cho việc dịch và build dựa trên AI.
332
- */
333
- ai: {
334
- /**
335
- * Nhà cung cấp AI sẽ sử dụng.
336
- * Tùy chọn: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
- * Mặc định: 'openai'
338
- */
339
- provider: "openai",
340
-
341
- /**
342
- * Model của nhà cung cấp đã chọn để sử dụng.
343
- */
344
- model: "gpt-4o",
345
-
346
- /**
347
- * API key của nhà cung cấp.
348
- */
349
- apiKey: process.env.OPENAI_API_KEY,
350
-
351
- /**
352
- * Ngữ cảnh toàn cục để hướng dẫn AI khi build các bản dịch.
353
- */
354
- applicationContext: "Đây là một ứng dụng đặt vé du lịch.",
355
-
356
- /**
357
- * URL đường dẫn cơ sở cho AI API.
358
- */
359
- baseURL: "http://localhost:3000",
360
-
361
- /**
362
- * Tuần tự hóa dữ liệu (Data Serialization)
363
- *
364
- * Tùy chọn:
365
- * - "json": Mặc định, mạnh mẽ; tiêu tốn nhiều token hơn.
366
- * - "toon": Tiêu tốn ít token hơn, có thể không nhất quán như JSON.
367
- *
368
- * Mặc định: "json"
369
- */
370
- dataSerialization: "json",
371
- },
372
-
373
- /**
374
- * Các cài đặt build và tối ưu hóa.
375
- */
376
- build: {
377
- /**
378
- * Chế độ thực thi build.
379
- * - "auto": Sẽ được build tự động trong quá trình build ứng dụng.
380
- * - "manual": Yêu cầu lệnh build rõ ràng.
381
- * Mặc định: "auto"
382
- */
383
- mode: "auto",
384
-
385
- /**
386
- * Có tối ưu hóa bundle cuối cùng bằng cách loại bỏ các từ điển không sử dụng không.
387
- * Mặc định: true trong môi trường production
388
- */
389
- optimize: true,
390
-
391
- /**
392
- * Định dạng đầu ra cho các tệp từ điển được tạo.
393
- * Mặc định: ['cjs', 'esm']
394
- */
395
- outputFormat: ["cjs", "esm"],
396
-
397
- /**
398
- * Xác định xem tiến trình build có nên kiểm tra các kiểu TypeScript hay không.
399
- * Mặc định: false
400
- */
401
- checkTypes: false,
402
- },
403
-
404
- /**
405
- * Cấu hình trình ghi nhật ký (Logger).
406
- */
407
- log: {
408
- /**
409
- * Mức độ ghi nhật ký.
410
- * - "default": Ghi nhật ký tiêu chuẩn.
411
- * - "verbose": Ghi nhật ký gỡ lỗi chuyên sâu.
412
- * - "disabled": Tắt ghi nhật ký.
413
- * Mặc định: "default"
414
- */
415
- mode: "default",
416
-
417
- /**
418
- * Tiền tố cho tất cả các thông báo nhật ký.
419
- * Mặc định: "[intlayer]"
420
- */
421
- prefix: "[intlayer]",
422
- },
423
-
424
- /**
425
- * Cấu hình hệ thống (Để sử dụng nâng cao)
426
- */
427
- system: {
428
- /**
429
- * Thư mục để lưu trữ các từ điển đã được bản địa hóa.
430
- */
431
- dictionariesDir: ".intlayer/dictionary",
432
-
433
- /**
434
- * Thư mục cho việc mở rộng module TypeScript (module augmentation).
435
- */
436
- moduleAugmentationDir: ".intlayer/types",
437
-
438
- /**
439
- * Thư mục để lưu trữ các từ điển chưa hợp nhất (unmerged).
440
- */
441
- unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
442
-
443
- /**
444
- * Thư mục để lưu trữ các kiểu từ điển.
445
- */
446
- typesDir: ".intlayer/types",
447
-
448
- /**
449
- * Thư mục chứa các tệp ứng dụng chính.
450
- */
451
- mainDir: ".intlayer/main",
452
-
453
- /**
454
- * Thư mục chứa các tệp cấu hình.
455
- */
456
- configDir: ".intlayer/config",
457
-
458
- /**
459
- * Thư mục chứa các tệp bộ nhớ đệm (cache).
460
- */
461
- cacheDir: ".intlayer/cache",
462
- },
463
-
464
- /**
465
- * Cấu hình Trình biên dịch (Để sử dụng nâng cao)
466
- */
467
- compiler: {
468
- /**
469
- * Xác định xem trình biên dịch có nên được bật hay không.
470
- *
471
- * - false: Tắt trình biên dịch.
472
- * - true: Bật trình biên dịch.
473
- * - "build-only": Bỏ qua trình biên dịch trong quá trình phát triển và tăng tốc thời gian khởi động.
474
- *
475
- * Mặc định: false
476
- */
477
- enabled: true,
478
-
479
- /**
480
- * Định nghĩa đường dẫn cho các tệp đầu ra. Thay thế `outputDir`.
481
- *
482
- * - Các đường dẫn có `./` được giải quyết tương đối với thư mục thành phần.
483
- * - Các đường dẫn có `/` được giải quyết tương đối với thư mục gốc của dự án (`baseDir`).
484
- *
485
- * - Việc bao gồm biến `{{locale}}` trong đường dẫn sẽ kích hoạt việc tạo các từ điển riêng biệt cho từng ngôn ngữ.
486
- *
487
- * Ví dụ:
488
- * ```ts
489
- * {
490
- * // Tạo các tệp .content.ts đa ngôn ngữ bên cạnh thành phần
491
- * output: ({ fileName, extension }) => `./${fileName}${extension}`,
492
- *
493
- * // output: './{{fileName}}{{extension}}', // Tương đương khi sử dụng template string
494
- * }
495
- * ```
496
- *
497
- * ```ts
498
- * {
499
- * // Tạo các tệp JSON tập trung cho từng ngôn ngữ tại thư mục gốc của dự án
500
- * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
501
- *
502
- * // output: '/locales/{{locale}}/{{key}}.content.json', // Tương đương khi sử dụng template string
503
- * }
504
- * ```
505
- *
506
- * Danh sách các biến:
507
- * - `fileName`: Tên tệp.
508
- * - `key`: Khóa nội dung (key).
509
- * - `locale`: Ngôn ngữ nội dung.
510
- * - `extension`: Phần mở rộng tệp.
511
- * - `componentFileName`: Tên tệp thành phần.
512
- * - `componentExtension`: Phần mở rộng tệp thành phần.
513
- * - `format`: Định dạng từ điển.
514
- * - `componentFormat`: Định dạng từ điển thành phần.
515
- * - `componentDirPath`: Đường dẫn thư mục thành phần.
516
- */
517
- output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
518
-
519
- /**
520
- * Xác định xem các thành phần có nên được lưu sau khi được chuyển đổi hay không.
521
- * Theo cách này, trình biên dịch có thể chỉ chạy một lần để chuyển đổi ứng dụng của bạn và sau đó được gỡ bỏ.
522
- */
523
- saveComponents: false,
524
-
525
- /**
526
- * Chỉ chèn nội dung vào tệp được tạo. Hữu ích cho đầu ra JSON theo từng ngôn ngữ cho i18next hoặc ICU MessageFormat.
527
- */
528
- noMetadata: false,
529
-
530
- /**
531
- * Tiền tố khóa từ điển
532
- */
533
- dictionaryKeyPrefix: "", // Thêm một tiền tố tùy chọn vào các khóa từ điển được trích xuất
534
- },
535
-
536
- /**
537
- * Các schema tùy chỉnh (Schemas) để xác thực nội dung từ điển.
538
- */
539
- schemas: {
540
- "my-schema": z.object({
541
- title: z.string(),
542
- }),
543
- },
544
-
545
- /**
546
- * Cấu hình các plugin (Plugins).
547
- */
548
- plugins: [],
549
- };
550
-
551
- export default config;
552
- ````
553
-
554
- ---
555
-
556
- ## Tham chiếu cấu hình (Configuration Reference)
557
-
558
- Các phần sau đây mô tả các tùy chọn cấu hình khác nhau có sẵn trong Intlayer.
559
-
560
- ---
561
-
562
- ### Cấu hình quốc tế hóa (Internationalization Configuration)
563
-
564
- Định nghĩa các cài đặt liên quan đến quốc tế hóa, bao gồm các ngôn ngữ có sẵn và ngôn ngữ mặc định cho ứng dụng.
565
-
566
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
567
- | ----------------- | ---------- | ------------------------------------------------------------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
568
- | `locales` | `string[]` | Danh sách các ngôn ngữ được hỗ trợ trong ứng dụng. Mặc định: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
569
- | `requiredLocales` | `string[]` | Danh sách các ngôn ngữ bắt buộc trong ứng dụng. Mặc định: `[]` | `[]` | Nếu để trống, tất cả các ngôn ngữ đều bắt buộc trong chế độ `strict`. Đảm bảo các ngôn ngữ bắt buộc cũng được định nghĩa trong trường `locales`. |
570
- | `strictMode` | `string` | Đảm bảo triển khai mạnh mẽ nội dung được quốc tế hóa thông qua việc sử dụng TypeScript. Mặc định: `inclusive` | | Nếu `"strict"`: hàm `t` yêu cầu mọi ngôn ngữ đã khai báo phải được định nghĩa — báo lỗi nếu thiếu hoặc không được khai báo. Nếu `"inclusive"`: cảnh báo về các ngôn ngữ bị thiếu nhưng chấp nhận các ngôn ngữ chưa khai báo hiện có. Nếu `"loose"`: chấp nhận bất kỳ ngôn ngữ nào hiện có. |
571
- | `defaultLocale` | `string` | Ngôn ngữ mặc định được sử dụng làm dự phòng nếu không tìm thấy ngôn ngữ yêu cầu. Mặc định: `Locales.ENGLISH` | `'en'` | Được sử dụng để xác định ngôn ngữ khi không có ngôn ngữ nào được chỉ định trong URL, cookie hoặc header. |
572
-
573
- ---
574
-
575
- ### Cấu hình trình chỉnh sửa (Editor Configuration)
576
-
577
- Định nghĩa các cài đặt liên quan đến trình chỉnh sửa tích hợp, bao gồm cổng máy chủ và trạng thái hoạt động.
578
-
579
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
580
- | ---------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
581
- | `applicationURL` | `string` | URL ứng dụng của bạn. Mặc định: `''` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Được sử dụng để hạn chế các nguồn (origins) của trình chỉnh sửa vì lý do bảo mật. Nếu được đặt thành `'*'`, trình chỉnh sửa có thể được truy cập từ bất kỳ nguồn nào. |
582
- | `port` | `number` | Cổng được sử dụng bởi máy chủ Trình chỉnh sửa trực quan. Mặc định: `8000` | | |
583
- | `editorURL` | `string` | URL máy chủ trình chỉnh sửa. Mặc định: `'http://localhost:8000'` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Được sử dụng để hạn chế các nguồn có thể tương tác với ứng dụng. Nếu được đặt thành `'*'`, có thể truy cập từ bất kỳ nguồn nào. Phải được đặt nếu bạn thay đổi cổng hoặc trình chỉnh sửa được host trên một domain khác. |
584
- | `cmsURL` | `string` | URL của Intlayer CMS. Mặc định: `'https://intlayer.org'` | `'https://intlayer.org'` | |
585
- | `backendURL` | `string` | URL của máy chủ backend. Mặc định: `https://back.intlayer.org` | `http://localhost:4000` | |
586
- | `enabled` | `boolean` | Xác định xem ứng dụng có tương tác với trình chỉnh sửa trực quan hay không. Mặc định: `true` | `process.env.NODE_ENV !== 'production'` | Nếu là `false`, trình chỉnh sửa không thể tương tác với ứng dụng. Tắt nó cho các môi trường cụ thể giúp tăng cường bảo mật. |
587
- | `clientId` | `string &#124; undefined` | Cho phép các gói intlayer xác thực với backend bằng oAuth2. Để nhận access token, hãy truy cập [intlayer.org/project](https://app.intlayer.org/project). Mặc định: `undefined` | | Giữ bí mật; lưu trữ trong biến môi trường. |
588
- | `clientSecret` | `string &#124; undefined` | Cho phép các gói intlayer xác thực với backend bằng oAuth2. Để nhận access token, hãy truy cập [intlayer.org/project](https://app.intlayer.org/project). Mặc định: `undefined` | | Giữ bí mật; lưu trữ trong biến môi trường. |
589
- | `dictionaryPriorityStrategy` | `string` | Chiến lược ưu tiên từ điển khi tồn tại cả từ điển cục bộ và từ xa. Mặc định: `'local_first'` | `'distant_first'` | `'distant_first'`: Ưu tiên từ xa thay vì cục bộ. `'local_first'`: Ưu tiên cục bộ thay vì từ xa. |
590
- | `liveSync` | `boolean` | Xác định xem máy chủ ứng dụng có nên hot reload nội dung khi phát hiện thay đổi trong CMS / Trình chỉnh sửa trực quan / Backend hay không. Mặc định: `true` | `true` | Khi một từ điển được thêm/cập nhật, ứng dụng sẽ cập nhật nội dung trang. Live sync thuê ngoài nội dung cho một máy chủ khác, điều này có thể ảnh hưởng nhẹ đến hiệu năng. Khuyến nghị host cả hai trên cùng một máy. |
591
- | `liveSyncPort` | `number` | Cổng máy chủ Live Sync. Mặc định: `4000` | `4000` | |
592
- | `liveSyncURL` | `string` | URL máy chủ Live Sync. Mặc định: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | Chỉ đến localhost theo mặc định; có thể thay đổi thành máy chủ live sync từ xa. |
593
-
594
- ### Cấu hình routing (Routing Configuration)
595
-
596
- Các cài đặt kiểm soát hành vi định tuyến, bao gồm cấu trúc URL, lưu trữ ngôn ngữ và xử lý middleware.
597
-
598
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
599
- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
600
- | `mode` | `'prefix-no-default' &#124; 'prefix-all' &#124; 'no-prefix' &#124; 'search-params'` | Chế độ routing URL để xử lý ngôn ngữ. Mặc định: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) hoặc `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: ngôn ngữ được xử lý bằng các phương tiện khác. `'search-params'`: sử dụng `/dashboard?locale=fr` | Không ảnh hưởng đến quản lý cookie hoặc lưu trữ ngôn ngữ (locale storage). |
601
- | `storage` | `false &#124; 'cookie' &#124; 'localStorage' &#124; 'sessionStorage' &#124; 'header' &#124; CookiesAttributes &#124; StorageAttributes &#124; Array` | Cấu hình để lưu trữ ngôn ngữ trên client. Mặc định: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Xem bảng Tùy chọn lưu trữ bên dưới. |
602
- | `basePath` | `string` | Đường dẫn cơ sở cho các URL của ứng dụng. Mặc định: `''` | `'/my-app'` | Nếu ứng dụng nằm trên `https://example.com/my-app`, basePath là `'/my-app'` và các URL trở thành `https://example.com/my-app/en`. |
603
- | `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | Các quy tắc ghi đè URL tùy chỉnh thay thế chế độ định tuyến mặc định cho các đường dẫn cụ thể. Hỗ trợ các tham số động `[param]`. Mặc định: `undefined` | Xem ví dụ bên dưới | Các quy tắc ghi đè có ưu tiên hơn `mode`. Hoạt động với Next.js và Vite. `getLocalizedUrl()` tự động áp dụng các quy tắc phù hợp. Xem [Ghi đè URL tùy chỉnh](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/custom_url_rewrites.md). |
604
-
605
- **Ví dụ về `rewrite`**:
606
-
607
- ```typescript
608
- routing: {
609
- mode: "prefix-no-default", // Chiến lược dự phòng
610
- rewrite: nextjsRewrite({
611
- "/about": {
612
- en: "/about",
613
- fr: "/a-propos",
614
- },
615
- "/product/[slug]": {
616
- en: "/product/[slug]",
617
- fr: "/produit/[slug]",
618
- },
619
- "/blog/[category]/[id]": {
620
- en: "/blog/[category]/[id]",
621
- fr: "/journal/[category]/[id]",
622
- },
623
- }),
624
- }
625
- ```
626
-
627
- #### Tùy chọn lưu trữ (Storage Options)
628
-
629
- | Giá trị | Mô tả | Lưu ý |
630
- | ------------------ | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
631
- | `'cookie'` | Lưu ngôn ngữ trong cookie — có thể truy cập từ cả phía client và server. | Để tuân thủ GDPR, hãy đảm bảo đã nhận được sự đồng ý thích hợp của người dùng. Có thể tùy chỉnh qua `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). |
632
- | `'localStorage'` | Lưu ngôn ngữ trong trình duyệt mà không có ngày hết hạn — chỉ phía client. | Không hết hạn trừ khi bị xóa rõ ràng. Proxy của Intlayer không thể truy cập cái này. Có thể tùy chỉnh qua `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). |
633
- | `'sessionStorage'` | Lưu ngôn ngữ trong suốt thời gian của phiên trang — chỉ phía client. | Bị xóa khi đóng tab/cửa sổ. Proxy của Intlayer không thể truy cập cái này. Có thể tùy chỉnh qua `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). |
634
- | `'header'` | Lưu hoặc truyền ngôn ngữ qua các HTTP header — chỉ phía server. | Hữu ích cho các cuộc gọi API. Phía client không thể truy cập. Có thể tùy chỉnh qua `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). |
635
-
636
- #### Thuộc tính Cookie (Cookie Attributes)
637
-
638
- Khi sử dụng lưu trữ qua cookie, bạn có thể cấu hình các thuộc tính cookie bổ sung:
639
-
640
- | Trường | Kiểu | Mô tả |
641
- | ---------- | ------------------------------------- | ------------------------------------------------ |
642
- | `name` | `string` | Tên của cookie. Mặc định: `'INTLAYER_LOCALE'` |
643
- | `domain` | `string` | Domain của cookie. Mặc định: `undefined` |
644
- | `path` | `string` | Đường dẫn của cookie. Mặc định: `undefined` |
645
- | `secure` | `boolean` | Yêu cầu HTTPS. Mặc định: `undefined` |
646
- | `httpOnly` | `boolean` | Cờ HTTP-only. Mặc định: `undefined` |
647
- | `sameSite` | `'strict' &#124; 'lax' &#124; 'none'` | Chính sách SameSite. |
648
- | `expires` | `Date &#124; number` | Ngày hết hạn hoặc số ngày. Mặc định: `undefined` |
649
-
650
- #### Thuộc tính lưu trữ ngôn ngữ (Locale Storage Attributes)
651
-
652
- Khi sử dụng localStorage hoặc sessionStorage:
653
-
654
- | Trường | Kiểu | Mô tả |
655
- | ------ | ---------------------------------------- | --------------------------------------------------- |
656
- | `type` | `'localStorage' &#124; 'sessionStorage'` | Kiểu lưu trữ. |
657
- | `name` | `string` | Tên của khóa lưu trữ. Mặc định: `'INTLAYER_LOCALE'` |
658
-
659
- #### Các ví dụ cấu hình
660
-
661
- Dưới đây là một số ví dụ cấu hình phổ biến cho cấu trúc định tuyến v7 mới:
662
-
663
- **Cấu hình cơ bản (Mặc định)**:
664
-
665
- ```typescript
666
- import { Locales, type IntlayerConfig } from "intlayer";
667
- // intlayer.config.ts
668
- const config: IntlayerConfig = {
669
- internationalization: {
670
- locales: ["en", "fr", "es"],
671
- defaultLocale: "en",
672
- },
673
- routing: {
674
- mode: "prefix-no-default",
675
- storage: "localStorage",
676
- basePath: "",
677
- },
678
- };
679
-
680
- export default config;
681
- ```
682
-
683
- **Cấu hình tuân thủ GDPR**:
684
-
685
- ```typescript
686
- import { Locales, type IntlayerConfig } from "intlayer";
687
- // intlayer.config.ts
688
- const config: IntlayerConfig = {
689
- internationalization: {
690
- locales: ["en", "fr", "es"],
691
- defaultLocale: "en",
692
- },
693
- routing: {
694
- mode: "prefix-no-default",
695
- storage: [
696
- {
697
- type: "localStorage",
698
- name: "user-locale",
699
- },
700
- {
701
- type: "cookie",
702
- name: "user-locale",
703
- secure: true,
704
- sameSite: "strict",
705
- httpOnly: false,
706
- },
707
- ],
708
- basePath: "",
709
- },
710
- };
711
-
712
- export default config;
713
- ```
714
-
715
- **Chế độ tham số tìm kiếm (Search Parameters Mode)**:
716
-
717
- ```typescript
718
- import { Locales, type IntlayerConfig } from "intlayer";
719
- // intlayer.config.ts
720
- const config: IntlayerConfig = {
721
- internationalization: {
722
- locales: ["en", "fr", "es"],
723
- defaultLocale: "en",
724
- },
725
- routing: {
726
- mode: "search-params",
727
- storage: "localStorage",
728
- basePath: "",
729
- },
730
- };
731
-
732
- export default config;
733
- ```
734
-
735
- **Chế độ không tiền tố (No Prefix Mode) với lưu trữ tùy chỉnh**:
736
-
737
- ```typescript
738
- import { Locales, type IntlayerConfig } from "intlayer";
739
- // intlayer.config.ts
740
- const config: IntlayerConfig = {
741
- internationalization: {
742
- locales: ["en", "fr", "es"],
743
- defaultLocale: "en",
744
- },
745
- routing: {
746
- mode: "no-prefix",
747
- storage: {
748
- type: "sessionStorage",
749
- name: "app-locale",
750
- },
751
- basePath: "/my-app",
752
- },
753
- };
754
-
755
- export default config;
756
- ```
757
-
758
- **Ghi đè URL tùy chỉnh với đường dẫn động**:
759
-
760
- ```typescript
761
- // intlayer.config.ts
762
- import { nextjsRewrite } from "intlayer/routing";
763
-
764
- const config: IntlayerConfig = {
765
- internationalization: {
766
- locales: ["en", "fr"],
767
- defaultLocale: "en",
768
- },
769
- routing: {
770
- mode: "prefix-no-default", // Chiến lược dự phòng cho các đường dẫn không được ghi đè
771
- storage: "cookie",
772
- rewrite: nextjsRewrite({
773
- "/about": {
774
- en: "/about",
775
- fr: "/a-propos",
776
- },
777
- "/product/[slug]": {
778
- en: "/product/[slug]",
779
- fr: "/produit/[slug]",
780
- },
781
- "/blog/[category]/[id]": {
782
- en: "/blog/[category]/[id]",
783
- fr: "/journal/[category]/[id]",
784
- },
785
- }),
786
- },
787
- };
788
-
789
- export default config;
790
- ```
791
-
792
- ---
793
-
794
- ### Cấu hình nội dung (Content Configuration)
795
-
796
- Các cài đặt liên quan đến việc xử lý nội dung trong ứng dụng (tên thư mục, phần mở rộng tệp và các cấu hình phái sinh).
797
-
798
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
799
- | ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
800
- | `watch` | `boolean` | Xác định xem Intlayer có nên theo dõi các thay đổi trong các tệp khai báo nội dung để build lại từ điển hay không. Mặc định: `process.env.NODE_ENV === 'development'` | | |
801
- | `fileExtensions` | `string[]` | Các phần mở rộng tệp được sử dụng để quét các tệp khai báo nội dung. Mặc định: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
802
- | `contentDir` | `string[]` | Đường dẫn đến các thư mục chứa các tệp khai báo nội dung. Mặc định: `['.']` | `['src/content']` | |
803
- | `codeDir` | `string[]` | Đường dẫn đến các thư mục chứa các tệp mã nguồn của ứng dụng. Mặc định: `['.']` | `['src']` | Được sử dụng để tối ưu hóa build và đảm bảo rằng việc chuyển đổi mã và hot reload chỉ được áp dụng cho các tệp cần thiết. |
804
- | `excludedPath` | `string[]` | Các đường dẫn bị loại trừ khỏi việc quét nội dung. Mặc định: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
805
- | `formatCommand` | `string` | Lệnh sẽ được chạy để định dạng các tệp nội dung mới tạo hoặc cập nhật. Mặc định: `undefined` | `'npx prettier --write "{{file}}"'` | Được sử dụng trong quá trình trích xuất nội dung hoặc qua trình chỉnh sửa trực quan. |
806
-
807
- ---
808
-
809
- ### Cấu hình từ điển (Dictionary Configuration)
810
-
811
- Các cài đặt kiểm soát hoạt động của từ điển, bao gồm hành vi tự động điền và tạo nội dung.
812
-
813
- Cấu hình từ điển này có hai mục đích chính:
814
-
815
- 1. **Giá trị mặc định**: Định nghĩa các giá trị mặc định khi tạo các tệp khai báo nội dung.
816
- 2. **Hành vi dự phòng**: Cho phép thiết lập hành vi của các hoạt động từ điển trên toàn cầu, cung cấp các giá trị dự phòng khi các trường cụ thể không được định nghĩa.
817
-
818
- Để biết thêm thông tin về cách áp dụng các tệp khai báo nội dung và giá trị cấu hình, hãy xem [tài liệu tệp nội dung](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/content_file.md).
819
-
820
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
821
- | --------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
822
- | `fill` | `boolean &#124; FilePathPattern &#124; Partial<Record<Locale, boolean &#124; FilePathPattern>>` | Kiểm soát cách tạo các tệp đầu ra tự động điền (dịch bằng AI). Mặc định: `true` | Xem ví dụ bên dưới | `true`: đường dẫn mặc định (cùng tệp với nguồn). `false`: tắt. Các mẫu chuỗi/hàm tạo các tệp theo từng ngôn ngữ. Đối tượng theo từng ngôn ngữ: mỗi ngôn ngữ ánh xạ tới mẫu riêng; `false` sẽ bỏ qua ngôn ngữ đó. Việc bao gồm biến `{{locale}}` sẽ kích hoạt việc tạo theo từng ngôn ngữ. `fill` ở cấp độ từ điển luôn được ưu tiên hơn cấu hình toàn cầu này. |
823
- | `importMode` | `'static' &#124; 'dynamic' &#124; 'fetch'` | Kiểm soát cách nhập từ điển. Mặc định: `'static'` | `'dynamic'` | `'static'`: Được nhập tĩnh. `'dynamic'`: Được nhập động qua 'Suspense'. `'fetch'`: Được truy xuất động qua 'Live Sync API'. Không ảnh hưởng đến `getIntlayer`, `getDictionary`, `useDictionary`, v.v. |
824
- | `location` | `'local' &#124; 'remote' &#124; 'hybrid' &#124; string` | Nơi lưu trữ từ điển. Mặc định: `'local'` | `'remote'` | `'local'`: hệ thống tệp. `'remote'`: Intlayer CMS. `'hybrid'`: cả hai. |
825
- | `contentAutoTransformation` | `boolean` | Có nên tự động chuyển đổi các tệp nội dung hay không (ví dụ: từ Markdown sang HTML). Mặc định: `false` | `true` | Hữu ích để xử lý các trường Markdown qua @intlayer/markdown. |
826
-
827
- **Ví dụ về `fill`**:
828
-
829
- ```ts
830
- dictionary: {
831
- fill: {
832
- en: '/locales/en/{{key}}.content.json',
833
- fr: ({ key }) => `/locales/fr/${key}.content.json`,
834
- es: false,
835
- }
836
- }
837
- ```
838
-
839
- ---
840
-
841
- ### Cấu hình AI (AI Configuration)
842
-
843
- Định nghĩa các cài đặt cho các tính năng được hỗ trợ bởi AI của Intlayer, chẳng hạn như bản dịch build.
844
-
845
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
846
- | -------------------- | ---------------------- | ------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------- |
847
- | `provider` | `string` | Nhà cung cấp AI sẽ sử dụng. | `'openai'`, `'anthropic'`, `'googlevertex'` | |
848
- | `model` | `string` | Model AI sẽ sử dụng. | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
849
- | `apiKey` | `string` | API key cho nhà cung cấp đã chọn. | `process.env.OPENAI_API_KEY` | |
850
- | `applicationContext` | `string` | Ngữ cảnh bổ sung về ứng dụng của bạn để cải thiện độ chính xác của bản dịch AI. | `'Nền tảng học tập cho trẻ em.'` | |
851
- | `baseURL` | `string` | URL đường dẫn cơ sở tùy chọn cho các cuộc gọi API. | | Hữu ích nếu bạn đang sử dụng proxy hoặc triển khai AI cục bộ. |
852
- | `dataSerialization` | `'json' &#124; 'toon'` | Định nghĩa cách gửi dữ liệu cho AI. Mặc định: `'json'` | `'json'` | `'json'`: mạnh mẽ và chính xác hơn. `'toon'`: tiêu tốn ít token hơn nhưng có thể kém ổn định hơn. |
853
-
854
- ---
855
-
856
- ### Cấu hình build (Build Configuration)
857
-
858
- Các cài đặt của quá trình build và tối ưu hóa Intlayer.
859
-
860
- | Trường | Kiểu | Mô tả | Ví dụ | Lưu ý |
861
- | -------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- | ----- | ----- |
862
- | `mode` | `'auto' &#124; 'manual'` | Xác định xem Intlayer có nên chạy tự động trong các bước pre-build của ứng dụng hay không. Mặc định: `'auto'` | | |
863
- | `optimize` | `boolean` | Xác định xem các từ điển đã biên dịch có nên được tối ưu hóa cho runtime không. Mặc định: `true` trong production | | |
864
- | `outputFormat` | `('cjs' &#124; 'esm')[]` | Định dạng đầu ra cho các tệp từ điển được tạo. Mặc định: `['cjs', 'esm']` | | |
865
- | `checkTypes` | `boolean` | Xác định xem Intlayer có nên kiểm tra các kiểu trong các tệp được tạo hay không. Mặc định: `false` | | |
866
-
867
- ---
868
-
869
- ### Cấu hình hệ thống (System Configuration)
870
-
871
- Các cài đặt này dành cho các trường hợp sử dụng nâng cao và cho cấu hình nội bộ của Intlayer.
872
-
873
- | Trường | Kiểu | Mô tả | Mặc định |
874
- | ------------------------- | -------- | ------------------------------------------- | --------------------------------- |
875
- | `dictionariesDir` | `string` | Thư mục từ điển đã biên dịch. | `'.intlayer/dictionary'` |
876
- | `moduleAugmentationDir` | `string` | Thư mục cho việc mở rộng module TypeScript. | `'.intlayer/types'` |
877
- | `unmergedDictionariesDir` | `string` | Thư mục từ điển chưa hợp nhất. | `'.intlayer/unmerged_dictionary'` |
878
- | `typesDir` | `string` | Thư mục các kiểu đã tạo. | `'.intlayer/types'` |
879
- | `mainDir` | `string` | Thư mục tệp Intlayer chính. | `'.intlayer/main'` |
880
- | `configDir` | `string` | Thư mục các tệp cấu hình đã biên dịch. | `'.intlayer/config'` |
881
- | `cacheDir` | `string` | Thư mục các tệp bộ nhớ đệm. | `'.intlayer/cache'` |
882
-
883
- ---
884
-
885
- ### Cấu hình trình biên dịch (Compiler Configuration)
886
-
887
- Cài đặt cho trình biên dịch Intlayer (`intlayer compiler`).
888
-
889
- | Trường | Kiểu | Mô tả | Mặc định |
890
- | --------------------- | ------------------------ | --------------------------------------------------------------------------------------------- | -------- |
891
- | `enabled` | `boolean` | Xác định xem trình biên dịch có hoạt động không. | `false` |
892
- | `output` | `string &#124; Function` | Đường dẫn đầu ra cho các từ điển được trích xuất. | |
893
- | `saveComponents` | `boolean` | Xác định xem các tệp nguồn gốc có nên được ghi đè bằng các phiên bản đã chuyển đổi hay không. | `false` |
894
- | `noMetadata` | `boolean` | Nếu là `true`, trình biên dịch sẽ không bao gồm metadata trong các tệp được tạo. | `false` |
895
- | `dictionaryKeyPrefix` | `string` | Tiền tố khóa từ điển tùy chọn. | `''` |
896
-
897
- ---
898
-
899
- ### Cấu hình trình ghi nhật ký (Logger Configuration)
900
-
901
- Các cài đặt để tùy chỉnh đầu ra nhật ký của Intlayer.
902
-
903
- | Trường | Kiểu | Mô tả | Mặc định |
904
- | -------- | ---------------------------------------------- | -------------------------- | -------------- |
905
- | `mode` | `'default' &#124; 'verbose' &#124; 'disabled'` | Chế độ ghi nhật ký. | `'default'` |
906
- | `prefix` | `string` | Tiền tố thông báo nhật ký. | `'[intlayer]'` |
907
-
908
- ---
909
-
910
- ### Schema tùy chỉnh (Custom Schemas)
911
-
912
- | Trường | Kiểu | Mô tả |
913
- | --------- | --------------------------- | ---------------------------------------------------------------------------- |
914
- | `schemas` | `Record<string, ZodSchema>` | Cho phép bạn định nghĩa các Zod schema để xác thực cấu trúc của các từ điển. |
915
-
916
- ---
917
-
918
- ### Plugin (Plugins)
919
-
920
- | Trường | Kiểu | Mô tả |
921
- | --------- | ------------------ | -------------------------------------------- |
922
- | `plugins` | `IntlayerPlugin[]` | Danh sách các plugin Intlayer cần kích hoạt. |