@intlayer/docs 8.0.4 → 8.0.5

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 (139) hide show
  1. package/dist/cjs/blog.cjs +1 -0
  2. package/dist/cjs/blog.cjs.map +1 -1
  3. package/dist/cjs/common.cjs +1 -0
  4. package/dist/cjs/common.cjs.map +1 -1
  5. package/dist/cjs/doc.cjs +1 -0
  6. package/dist/cjs/doc.cjs.map +1 -1
  7. package/dist/cjs/frequentQuestions.cjs +1 -0
  8. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  9. package/dist/cjs/generated/blog.entry.cjs +1 -0
  10. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/docs.entry.cjs +21 -0
  12. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/frequentQuestions.entry.cjs +1 -0
  14. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  15. package/dist/cjs/generated/legal.entry.cjs +1 -0
  16. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  17. package/dist/cjs/index.cjs +1 -0
  18. package/dist/cjs/legal.cjs +1 -0
  19. package/dist/cjs/legal.cjs.map +1 -1
  20. package/dist/esm/generated/docs.entry.mjs +20 -0
  21. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  22. package/dist/types/generated/docs.entry.d.ts +1 -0
  23. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  24. package/docs/ar/cli/doc-translate.md +1 -0
  25. package/docs/ar/cli/fill.md +1 -0
  26. package/docs/ar/configuration.md +10 -0
  27. package/docs/ar/intlayer_with_analog.md +371 -0
  28. package/docs/ar/intlayer_with_angular.md +12 -14
  29. package/docs/ar/packages/solid-intlayer/useIntlayer.md +1 -1
  30. package/docs/de/agent_skills.md +53 -0
  31. package/docs/de/cli/doc-translate.md +1 -0
  32. package/docs/de/cli/fill.md +1 -0
  33. package/docs/de/configuration.md +10 -0
  34. package/docs/de/intlayer_with_analog.md +369 -0
  35. package/docs/de/intlayer_with_angular.md +11 -16
  36. package/docs/de/packages/solid-intlayer/useIntlayer.md +1 -1
  37. package/docs/en/agent_skills.md +53 -0
  38. package/docs/en/cli/doc-translate.md +1 -0
  39. package/docs/en/cli/fill.md +1 -0
  40. package/docs/en/configuration.md +21 -1
  41. package/docs/en/intlayer_with_analog.md +4 -12
  42. package/docs/en/intlayer_with_angular.md +13 -15
  43. package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
  44. package/docs/en/packages/solid-intlayer/useIntlayer.md +1 -1
  45. package/docs/en-GB/cli/doc-translate.md +1 -0
  46. package/docs/en-GB/cli/fill.md +1 -0
  47. package/docs/en-GB/configuration.md +10 -0
  48. package/docs/en-GB/intlayer_with_analog.md +369 -0
  49. package/docs/en-GB/intlayer_with_angular.md +12 -14
  50. package/docs/en-GB/packages/solid-intlayer/useIntlayer.md +1 -1
  51. package/docs/es/agent_skills.md +53 -0
  52. package/docs/es/cli/doc-translate.md +1 -0
  53. package/docs/es/cli/fill.md +1 -0
  54. package/docs/es/configuration.md +10 -0
  55. package/docs/es/intlayer_with_analog.md +369 -0
  56. package/docs/es/intlayer_with_angular.md +11 -16
  57. package/docs/es/packages/solid-intlayer/useIntlayer.md +1 -1
  58. package/docs/fr/agent_skills.md +53 -0
  59. package/docs/fr/cli/doc-translate.md +1 -0
  60. package/docs/fr/cli/fill.md +1 -0
  61. package/docs/fr/configuration.md +10 -0
  62. package/docs/fr/intlayer_with_analog.md +369 -0
  63. package/docs/fr/intlayer_with_angular.md +11 -16
  64. package/docs/fr/packages/solid-intlayer/useIntlayer.md +1 -1
  65. package/docs/hi/cli/doc-translate.md +1 -0
  66. package/docs/hi/cli/fill.md +1 -0
  67. package/docs/hi/configuration.md +10 -0
  68. package/docs/hi/intlayer_with_analog.md +371 -0
  69. package/docs/hi/intlayer_with_angular.md +12 -14
  70. package/docs/hi/packages/solid-intlayer/useIntlayer.md +1 -1
  71. package/docs/id/cli/doc-translate.md +1 -0
  72. package/docs/id/cli/fill.md +1 -0
  73. package/docs/id/configuration.md +10 -0
  74. package/docs/id/intlayer_with_analog.md +371 -0
  75. package/docs/id/intlayer_with_angular.md +12 -14
  76. package/docs/id/packages/solid-intlayer/useIntlayer.md +1 -1
  77. package/docs/it/agent_skills.md +53 -0
  78. package/docs/it/cli/doc-translate.md +1 -0
  79. package/docs/it/cli/fill.md +1 -0
  80. package/docs/it/configuration.md +10 -0
  81. package/docs/it/intlayer_with_analog.md +371 -0
  82. package/docs/it/intlayer_with_angular.md +12 -14
  83. package/docs/it/packages/solid-intlayer/useIntlayer.md +1 -1
  84. package/docs/ja/agent_skills.md +53 -0
  85. package/docs/ja/cli/doc-translate.md +1 -0
  86. package/docs/ja/cli/fill.md +1 -0
  87. package/docs/ja/configuration.md +10 -0
  88. package/docs/ja/intlayer_with_analog.md +365 -0
  89. package/docs/ja/intlayer_with_angular.md +12 -14
  90. package/docs/ja/packages/solid-intlayer/useIntlayer.md +1 -1
  91. package/docs/ko/agent_skills.md +53 -0
  92. package/docs/ko/cli/doc-translate.md +1 -0
  93. package/docs/ko/cli/fill.md +1 -0
  94. package/docs/ko/configuration.md +10 -0
  95. package/docs/ko/intlayer_with_analog.md +365 -0
  96. package/docs/ko/intlayer_with_angular.md +12 -14
  97. package/docs/ko/packages/solid-intlayer/useIntlayer.md +1 -1
  98. package/docs/pl/cli/doc-translate.md +1 -0
  99. package/docs/pl/cli/fill.md +1 -0
  100. package/docs/pl/configuration.md +10 -0
  101. package/docs/pl/intlayer_with_analog.md +371 -0
  102. package/docs/pl/intlayer_with_angular.md +12 -14
  103. package/docs/pl/packages/solid-intlayer/useIntlayer.md +1 -1
  104. package/docs/pt/agent_skills.md +53 -0
  105. package/docs/pt/cli/doc-translate.md +1 -0
  106. package/docs/pt/cli/fill.md +1 -0
  107. package/docs/pt/configuration.md +10 -0
  108. package/docs/pt/intlayer_with_analog.md +371 -0
  109. package/docs/pt/intlayer_with_angular.md +12 -14
  110. package/docs/pt/packages/solid-intlayer/useIntlayer.md +1 -1
  111. package/docs/ru/cli/doc-translate.md +1 -0
  112. package/docs/ru/cli/fill.md +1 -0
  113. package/docs/ru/configuration.md +18 -0
  114. package/docs/ru/intlayer_with_analog.md +371 -0
  115. package/docs/ru/intlayer_with_angular.md +12 -14
  116. package/docs/ru/packages/solid-intlayer/useIntlayer.md +1 -1
  117. package/docs/tr/cli/doc-translate.md +1 -0
  118. package/docs/tr/cli/fill.md +1 -0
  119. package/docs/tr/configuration.md +10 -0
  120. package/docs/tr/intlayer_with_analog.md +365 -0
  121. package/docs/tr/intlayer_with_angular.md +12 -14
  122. package/docs/tr/packages/solid-intlayer/useIntlayer.md +1 -1
  123. package/docs/uk/cli/doc-translate.md +1 -0
  124. package/docs/uk/cli/fill.md +1 -0
  125. package/docs/uk/configuration.md +10 -0
  126. package/docs/uk/intlayer_with_analog.md +365 -0
  127. package/docs/uk/intlayer_with_angular.md +12 -14
  128. package/docs/uk/packages/solid-intlayer/useIntlayer.md +1 -1
  129. package/docs/vi/configuration.md +10 -0
  130. package/docs/vi/intlayer_with_analog.md +365 -0
  131. package/docs/vi/intlayer_with_angular.md +12 -14
  132. package/docs/vi/packages/solid-intlayer/useIntlayer.md +1 -1
  133. package/docs/zh/agent_skills.md +53 -0
  134. package/docs/zh/configuration.md +10 -0
  135. package/docs/zh/intlayer_with_analog.md +365 -0
  136. package/docs/zh/intlayer_with_angular.md +12 -14
  137. package/docs/zh/packages/solid-intlayer/useIntlayer.md +1 -1
  138. package/package.json +8 -8
  139. package/src/generated/docs.entry.ts +20 -0
@@ -0,0 +1,365 @@
1
+ ---
2
+ createdAt: 2025-04-18
3
+ updatedAt: 2025-12-30
4
+ title: Analog i18n - Cách dịch ứng dụng Analog của bạn – hướng dẫn 2026
5
+ description: Khám phá cách làm cho ứng dụng Analog của bạn hỗ trợ đa ngôn ngữ. Làm theo tài liệu để quốc tế hóa (i18n) và dịch nó.
6
+ keywords:
7
+ - Quốc tế hóa
8
+ - Tài liệu
9
+ - Intlayer
10
+ - Analog
11
+ - Angular
12
+ - JavaScript
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - analog
17
+ applicationTemplate: https://github.com/aymericzip/intlayer/tree/main/examples/analog-app-template
18
+ history:
19
+ - version: 8.0.4
20
+ date: 2026-01-26
21
+ changes: Khởi tạo lịch sử
22
+ ---
23
+
24
+ # Dịch ứng dụng Analog (Angular) của bạn bằng Intlayer | Quốc tế hóa (i18n)
25
+
26
+ ## Mục lục
27
+
28
+ <TOC/>
29
+
30
+ ## Intlayer là gì?
31
+
32
+ **Intlayer** là một thư viện quốc tế hóa (i18n) nguồn mở sáng tạo được thiết kế để đơn giản hóa việc hỗ trợ đa ngôn ngữ trong các ứng dụng web hiện đại.
33
+
34
+ Với Intlayer, bạn có thể:
35
+
36
+ - **Dễ dàng quản lý các bản dịch** bằng cách sử dụng các từ điển khai báo ở cấp độ thành phần.
37
+ - **Bản địa hóa động các siêu dữ liệu**, các tuyến đường và nội dung.
38
+ - **Đảm bảo hỗ trợ TypeScript** với các kiểu dữ liệu được tự động tạo, cải thiện khả năng tự động hoàn thành và phát hiện lỗi.
39
+ - **Hưởng lợi từ các tính năng nâng cao**, như phát hiện và chuyển đổi ngôn ngữ động.
40
+
41
+ ---
42
+
43
+ ## Hướng dẫn từng bước để thiết lập Intlayer trong ứng dụng Analog
44
+
45
+ <Tabs defaultTab="code">
46
+ <Tab label="Mã nguồn" value="code">
47
+
48
+ <iframe
49
+ src="https://stackblitz.com/github/aymericzip/intlayer/tree/main/examples/vite-analog-app?embed=1&ctl=1&file=intlayer.config.ts"
50
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
51
+ title="Demo CodeSandbox - Cách quốc tế hóa ứng dụng của bạn bằng Intlayer"
52
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
53
+ loading="lazy"
54
+ />
55
+
56
+ </Tab>
57
+ </Tabs>
58
+
59
+ Xem [Mẫu ứng dụng](https://github.com/aymericzip/intlayer/tree/main/examples/analog-app-template) trên GitHub.
60
+
61
+ ### Bước 1: Cài đặt các phụ thuộc
62
+
63
+ Cài đặt các gói cần thiết bằng npm:
64
+
65
+ ```bash packageManager="npm"
66
+ npm install intlayer angular-intlayer vite-intlayer
67
+ npx intlayer init
68
+ ```
69
+
70
+ ```bash packageManager="pnpm"
71
+ pnpm add intlayer angular-intlayer vite-intlayer
72
+ pnpm intlayer init
73
+ ```
74
+
75
+ ```bash packageManager="yarn"
76
+ yarn add intlayer angular-intlayer vite-intlayer
77
+ yarn intlayer init
78
+ ```
79
+
80
+ ```bash packageManager="bun"
81
+ bun add intlayer angular-intlayer vite-intlayer
82
+ bunx intlayer init
83
+ ```
84
+
85
+ - **intlayer**
86
+
87
+ Gói cốt lõi cung cấp các công cụ quốc tế hóa để quản lý cấu hình, dịch thuật, [khai báo nội dung](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/content_file.md), chuyển mã và [các lệnh CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/index.md).
88
+
89
+ - **angular-intlayer**
90
+ Gói tích hợp Intlayer với ứng dụng Angular. Nó cung cấp các trình cung cấp ngữ cảnh (context providers) và các hook cho quốc tế hóa Angular.
91
+
92
+ - **vite-intlayer**
93
+ Gói tích hợp Intlayer với Vite. Nó cung cấp một plugin để xử lý các tệp khai báo nội dung và thiết lập các bí danh (aliases) để đạt hiệu suất tối ưu.
94
+
95
+ ### Bước 2: Cấu hình dự án của bạn
96
+
97
+ Tạo một tệp cấu hình để thiết lập các ngôn ngữ cho ứng dụng của bạn:
98
+
99
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
100
+ import { Locales, type IntlayerConfig } from "intlayer";
101
+
102
+ const config: IntlayerConfig = {
103
+ internationalization: {
104
+ locales: [
105
+ Locales.ENGLISH,
106
+ Locales.FRENCH,
107
+ Locales.SPANISH,
108
+ // Các ngôn ngữ khác của bạn
109
+ ],
110
+ defaultLocale: Locales.ENGLISH,
111
+ },
112
+ };
113
+
114
+ export default config;
115
+ ```
116
+
117
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
118
+ import { Locales } from "intlayer";
119
+
120
+ /** @type {import('intlayer').IntlayerConfig} */
121
+ const config = {
122
+ internationalization: {
123
+ locales: [
124
+ Locales.ENGLISH,
125
+ Locales.FRENCH,
126
+ Locales.SPANISH,
127
+ // Các ngôn ngữ khác của bạn
128
+ ],
129
+ defaultLocale: Locales.ENGLISH,
130
+ },
131
+ };
132
+
133
+ export default config;
134
+ ```
135
+
136
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
137
+ const { Locales } = require("intlayer");
138
+
139
+ /** @type {import('intlayer').IntlayerConfig} */
140
+ const config = {
141
+ internationalization: {
142
+ locales: [
143
+ Locales.ENGLISH,
144
+ Locales.FRENCH,
145
+ Locales.SPANISH,
146
+ // Các ngôn ngữ khác của bạn
147
+ ],
148
+ defaultLocale: Locales.ENGLISH,
149
+ },
150
+ };
151
+
152
+ module.exports = config;
153
+ ```
154
+
155
+ > Thông qua tệp cấu hình này, bạn có thể thiết lập các URL được bản địa hóa, chuyển hướng trung gian (middleware redirection), tên cookie, vị trí và phần mở rộng của các khai báo nội dung của bạn, tắt nhật ký Intlayer trong bảng điều khiển, và nhiều hơn nữa. Để biết danh sách đầy đủ các tham số có sẵn, hãy tham khảo [tài liệu cấu hình](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/configuration.md).
156
+
157
+ ### Bước 3: Tích hợp Intlayer vào cấu hình Vite của bạn
158
+
159
+ Để tích hợp Intlayer với Analog, bạn cần sử dụng plugin `vite-intlayer`.
160
+
161
+ Sửa đổi tệp `vite.config.ts` của bạn:
162
+
163
+ ```typescript fileName="vite.config.ts"
164
+ import { defineConfig } from "vite";
165
+ import { intlayer } from "vite-intlayer";
166
+ import analog from "@analogjs/platform";
167
+
168
+ // https://vitejs.dev/config/
169
+ export default defineConfig(() => ({
170
+ plugins: [
171
+ analog(),
172
+ intlayer(), // Thêm plugin Intlayer
173
+ ],
174
+ }));
175
+ ```
176
+
177
+ > Plugin `intlayer()` cấu hình Vite với Intlayer. Nó xử lý các tệp khai báo nội dung và thiết lập các bí danh để đạt hiệu suất tối ưu.
178
+
179
+ ### Bước 4: Khai báo nội dung của bạn
180
+
181
+ Tạo và quản lý các khai báo nội dung của bạn để lưu trữ các bản dịch:
182
+
183
+ ```tsx fileName="src/app/app.content.ts" contentDeclarationFormat="typescript"
184
+ import { t, type Dictionary } from "intlayer";
185
+
186
+ const appContent = {
187
+ key: "app",
188
+ content: {
189
+ title: t({
190
+ en: "Hello",
191
+ fr: "Bonjour",
192
+ es: "Hola",
193
+ vi: "Xin chào",
194
+ }),
195
+ congratulations: t({
196
+ en: "Congratulations! Your app is running. 🎉",
197
+ fr: "Félicitations! Votre application est en cours d'exécution. 🎉",
198
+ es: "¡Felicidades! Tu aplicación está en ejecución. 🎉",
199
+ vi: "Chúc mừng! Ứng dụng của bạn đang chạy. 🎉",
200
+ }),
201
+ },
202
+ } satisfies Dictionary;
203
+
204
+ export default appContent;
205
+ ```
206
+
207
+ > Các khai báo nội dung của bạn có thể được định nghĩa ở bất kỳ đâu trong ứng dụng của bạn miễn là chúng được bao gồm trong thư mục `contentDir` (mặc định là `./src`). Và khớp với phần mở rộng tệp khai báo nội dung (mặc định là `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
208
+
209
+ > Để biết thêm chi tiết, hãy tham khảo [tài liệu khai báo nội dung](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/dictionary/content_file.md).
210
+
211
+ ### Bước 5: Sử dụng Intlayer trong mã của bạn
212
+
213
+ Để sử dụng các tính năng quốc tế hóa của Intlayer trong suốt ứng dụng Analog của bạn, bạn cần cung cấp Intlayer trong cấu hình ứng dụng của mình.
214
+
215
+ ```typescript fileName="src/app/app.config.ts"
216
+ import { ApplicationConfig } from "@angular/core";
217
+ import { provideIntlayer } from "angular-intlayer";
218
+
219
+ export const appConfig: ApplicationConfig = {
220
+ providers: [
221
+ provideIntlayer(), // Thêm trình cung cấp Intlayer tại đây
222
+ ],
223
+ };
224
+ ```
225
+
226
+ Sau đó, bạn có thể sử dụng hàm `useIntlayer` trong bất kỳ thành phần nào.
227
+
228
+ ```typescript fileName="src/app/pages/index.page.ts"
229
+ import { Component } from "@angular/core";
230
+ import { useIntlayer } from "angular-intlayer";
231
+
232
+ @Component({
233
+ selector: "app-home",
234
+ standalone: true,
235
+ template: `
236
+ <div class="content">
237
+ <h1>{{ content().title }}</h1>
238
+ <p>{{ content().congratulations }}</p>
239
+ </div>
240
+ `,
241
+ })
242
+ export default class HomeComponent {
243
+ content = useIntlayer("app");
244
+ }
245
+ ```
246
+
247
+ Nội dung Intlayer được trả về dưới dạng một `Signal`, vì vậy bạn truy cập các giá trị bằng cách gọi signal: `content().title`.
248
+
249
+ ### (Tùy chọn) Bước 6: Thay đổi ngôn ngữ của nội dung
250
+
251
+ Để thay đổi ngôn ngữ của nội dung, bạn có thể sử dụng hàm `setLocale` được cung cấp bởi hàm `useLocale`. Điều này cho phép bạn thiết lập ngôn ngữ của ứng dụng và cập nhật nội dung tương ứng.
252
+
253
+ Tạo một thành phần để chuyển đổi giữa các ngôn ngữ:
254
+
255
+ ```typescript fileName="src/app/locale-switcher.component.ts"
256
+ import { Component } from "@angular/core";
257
+ import { CommonModule } from "@angular/common";
258
+ import { useLocale } from "angular-intlayer";
259
+
260
+ @Component({
261
+ selector: "app-locale-switcher",
262
+ standalone: true,
263
+ imports: [CommonModule],
264
+ template: `
265
+ <div class="locale-switcher">
266
+ <select
267
+ [value]="locale()"
268
+ (change)="setLocale($any($event.target).value)"
269
+ >
270
+ @for (loc of availableLocales; track loc) {
271
+ <option [value]="loc">{{ loc }}</option>
272
+ }
273
+ </select>
274
+ </div>
275
+ `,
276
+ styles: [
277
+ `
278
+ .locale-switcher {
279
+ margin: 1rem;
280
+ padding: 0.5rem;
281
+ border: 1px solid #ccc;
282
+ border-radius: 4px;
283
+ width: fit-content;
284
+ }
285
+ `,
286
+ ],
287
+ })
288
+ export class LocaleSwitcherComponent {
289
+ localeCtx = useLocale();
290
+
291
+ locale = this.localeCtx.locale;
292
+ availableLocales = this.localeCtx.availableLocales;
293
+ setLocale = this.localeCtx.setLocale;
294
+ }
295
+ ```
296
+
297
+ Sau đó, sử dụng thành phần này trong các trang của bạn:
298
+
299
+ ```typescript fileName="src/app/pages/index.page.ts"
300
+ import { Component } from "@angular/core";
301
+ import { useIntlayer } from "angular-intlayer";
302
+ import { LocaleSwitcherComponent } from "../locale-switcher.component";
303
+
304
+ @Component({
305
+ selector: "app-home",
306
+ standalone: true,
307
+ imports: [LocaleSwitcherComponent],
308
+ template: `
309
+ <app-locale-switcher></app-locale-switcher>
310
+ <div class="content">
311
+ <h1>{{ content().title }}</h1>
312
+ <p>{{ content().congratulations }}</p>
313
+ </div>
314
+ `,
315
+ })
316
+ export default class HomeComponent {
317
+ content = useIntlayer("app");
318
+ }
319
+ ```
320
+
321
+ ### Cấu hình TypeScript
322
+
323
+ Intlayer sử dụng module augmentation để tận dụng các lợi ích của TypeScript và làm cho mã nguồn của bạn mạnh mẽ hơn.
324
+
325
+ ![Autocompletion](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true)
326
+
327
+ ![Translation error](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png?raw=true)
328
+
329
+ Đảm bảo cấu hình TypeScript của bạn bao gồm các kiểu dữ liệu được tự động tạo.
330
+
331
+ ```json5 fileName="tsconfig.json"
332
+ {
333
+ // ... Các cấu hình TypeScript hiện tại của bạn
334
+ "include": [
335
+ // ... Các cấu hình TypeScript hiện tại của bạn
336
+ ".intlayer/**/*.ts", // Bao gồm các kiểu dữ liệu được tự động tạo
337
+ ],
338
+ }
339
+ ```
340
+
341
+ ### Cấu hình Git
342
+
343
+ Khuyên dùng bỏ qua các tệp được tạo bởi Intlayer. Điều này cho phép bạn tránh việc commit chúng vào kho lưu trữ Git của mình.
344
+
345
+ Để thực hiện việc này, bạn có thể thêm các hướng dẫn sau vào tệp `.gitignore` của mình:
346
+
347
+ ```plaintext
348
+ # Bỏ qua các tệp được tạo bởi Intlayer
349
+ .intlayer
350
+ ```
351
+
352
+ ### Tiện ích mở rộng VS Code
353
+
354
+ Để cải thiện trải nghiệm phát triển của bạn với Intlayer, bạn có thể cài đặt **Tiện ích mở rộng Intlayer VS Code** chính thức.
355
+
356
+ [Cài đặt từ VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
357
+
358
+ Tiện ích mở rộng này cung cấp:
359
+
360
+ - **Tự động hoàn thành** cho các khóa dịch.
361
+ - **Phát hiện lỗi thời gian thực** cho các bản dịch bị thiếu.
362
+ - **Xem trước nội tuyến** nội dung đã dịch.
363
+ - **Các hành động nhanh** để dễ dàng tạo và cập nhật các bản dịch.
364
+
365
+ Để biết thêm chi tiết về cách sử dụng tiện ích mở rộng, hãy tham khảo [tài liệu Tiện ích mở rộng Intlayer VS Code](https://intlayer.org/doc/vs-code-extension).
@@ -166,30 +166,28 @@ module.exports = config;
166
166
 
167
167
  Đầu tiên, sửa đổi tệp `angular.json` của bạn để sử dụng trình xây dựng Webpack tùy chỉnh. Cập nhật các cấu hình `build` và `serve`:
168
168
 
169
- ```json fileName="angular.json"
169
+ ```json5 fileName="angular.json"
170
170
  {
171
171
  "projects": {
172
172
  "your-app-name": {
173
173
  "architect": {
174
174
  "build": {
175
- "builder": "@angular-builders/custom-webpack:browser",
175
+ "builder": "@angular-builders/custom-webpack:browser", // replace "@angular-devkit/build-angular:application",
176
176
  "options": {
177
177
  "customWebpackConfig": {
178
- "path": "./webpack.config.ts"
179
- }
180
- }
178
+ "path": "./webpack.config.ts",
179
+ "mergeStrategies": { "module.rules": "prepend" },
180
+ },
181
+ "main": "src/main.ts", // replace "browser": "src/main.ts",
182
+ // ...
183
+ },
181
184
  },
182
185
  "serve": {
183
186
  "builder": "@angular-builders/custom-webpack:dev-server",
184
- "options": {
185
- "customWebpackConfig": {
186
- "path": "./webpack.config.ts"
187
- }
188
- }
189
- }
190
- }
191
- }
192
- }
187
+ },
188
+ },
189
+ },
190
+ },
193
191
  }
194
192
  ```
195
193
 
@@ -33,7 +33,7 @@ Hook `useIntlayer` cho phép bạn lấy nội dung được nội địa hóa t
33
33
  import { useIntlayer } from "solid-intlayer";
34
34
 
35
35
  const MyComponent = () => {
36
- const content = useIntlayer("my_dictionary_key");
36
+ const content = useIntlayer("my-dictionary-key");
37
37
 
38
38
  return (
39
39
  <div>
@@ -0,0 +1,53 @@
1
+ ---
2
+ createdAt: 2026-02-09
3
+ updatedAt: 2026-02-09
4
+ title: 代理技能
5
+ description: 了解如何使用 Intlayer 代理技能来提高 AI 代理对项目的理解。
6
+ keywords:
7
+ - Intlayer
8
+ - 代理技能
9
+ - AI 代理
10
+ - 国际化
11
+ - 文档
12
+ slugs:
13
+ - doc
14
+ - agent_skills
15
+ history:
16
+ - version: 8.0.4
17
+ date: 2026-02-09
18
+ changes: 初始化历史
19
+ ---
20
+
21
+ ## `intlayer init skills` 命令
22
+
23
+ `intlayer init skills` 命令是在项目中设置代理技能的最简单方法。它会检测您的环境并为您喜欢的平台安装必要的配置文件。
24
+
25
+ ```bash
26
+ npx intlayer init skills
27
+ ```
28
+
29
+ 运行此命令时,它将:
30
+
31
+ 1. 检测您正在使用的框架(例如 Next.js、React、Vite)。
32
+ 2. 询问您要为哪些平台安装技能(Cursor、VS Code、OpenCode、Claude Code 等)。
33
+ 3. 生成所需的配置文件(例如 `.cursor/mcp.json`、`.vscode/mcp.json` 或 `.intlayer/skills/*.md`)。
34
+
35
+ ## 支持的平台
36
+
37
+ Intlayer 支持与以下平台集成:
38
+
39
+ ### 1. Cursor
40
+
41
+ Cursor 支持 MCP (Model Context Protocol) 服务器。运行 `intlayer init skills` 将创建一个 `.cursor/mcp.json` 文件,允许 Cursor 与 Intlayer MCP 服务器通信。
42
+
43
+ ### 2. VS Code
44
+
45
+ 对于 VS Code 用户,尤其是那些使用 GitHub Copilot 或其他兼容 MCP 的扩展的用户,该命令会创建一个 `.vscode/mcp.json` 配置。
46
+
47
+ ### 3. OpenCode
48
+
49
+ OpenCode 是一个专为软件工程任务设计的交互式 CLI 代理。Intlayer 提供特定的技能来帮助 OpenCode 协助您完成国际化任务。
50
+
51
+ ### 4. Claude Code
52
+
53
+ 可以通过将生成的配置添加到其桌面或 CLI 设置中,将 Claude Code 配置为使用 Intlayer 技能。
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.0.5
18
+ date: 2026-02-06
19
+ changes: 在 AI 配置中添加 `dataSerialization`
17
20
  - version: 8.0.0
18
21
  date: 2026-01-22
19
22
  changes: Move `importMode` build configuration to `dictionary` configuration.
@@ -889,6 +892,13 @@ Intlayer 支持多个 AI 提供商,以增强灵活性和选择。目前支持
889
892
  - _示例_: `'https://api.openai.com/v1'`
890
893
  - _注意_: 可用于指向本地或自定义的 AI API 端点。
891
894
 
895
+ - **dataSerialization**:
896
+ - _类型_: `'json' | 'toon'`
897
+ - _默认值_: `'json'`
898
+ - _描述_: 用于 Intlayer AI 功能的数据序列化格式。
899
+ - _示例_: `'toon'`
900
+ - _注意_: `json`: 标准、可靠;使用更多令牌。`toon`: 令牌更少,但不如 JSON 一致。
901
+
892
902
  ### 构建配置
893
903
 
894
904
  控制 Intlayer 如何优化和构建您的应用程序国际化的设置。