@intlayer/docs 9.3.0 → 9.3.2

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 (217) hide show
  1. package/README.md +24 -24
  2. package/blog/ar/rag_powered_documentation_assistant.md +1 -1
  3. package/blog/pl/rag_powered_documentation_assistant.md +1 -1
  4. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  5. package/dist/cjs/authors2.cjs +0 -1
  6. package/dist/cjs/common.cjs.map +1 -1
  7. package/dist/cjs/generated/blog.entry.cjs +4 -2
  8. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  9. package/dist/cjs/generated/docs.entry.cjs +24 -2
  10. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  11. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
  12. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  13. package/dist/cjs/generated/legal.entry.cjs +4 -2
  14. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +4 -2
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +24 -2
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +4 -2
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/generated/docs.entry.d.ts +1 -0
  24. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  25. package/docs/ar/configuration.md +10 -10
  26. package/docs/ar/eslint.md +336 -0
  27. package/docs/ar/interest_of_intlayer.md +24 -22
  28. package/docs/ar/intlayer_with_express.md +1 -1
  29. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  30. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  31. package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
  32. package/docs/ar/intlayer_with_tanstack.md +5 -3
  33. package/docs/ar/lsp.md +114 -175
  34. package/docs/ar/readme.md +25 -25
  35. package/docs/bn/configuration.md +10 -10
  36. package/docs/bn/eslint.md +336 -0
  37. package/docs/bn/interest_of_intlayer.md +24 -22
  38. package/docs/cs/configuration.md +10 -10
  39. package/docs/cs/eslint.md +336 -0
  40. package/docs/cs/interest_of_intlayer.md +24 -22
  41. package/docs/de/configuration.md +10 -10
  42. package/docs/de/eslint.md +336 -0
  43. package/docs/de/interest_of_intlayer.md +24 -22
  44. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  45. package/docs/de/intlayer_with_tanstack+solid.md +5 -3
  46. package/docs/de/intlayer_with_tanstack.md +5 -3
  47. package/docs/de/lsp.md +111 -172
  48. package/docs/de/readme.md +24 -24
  49. package/docs/en/configuration.md +10 -10
  50. package/docs/en/eslint.md +336 -0
  51. package/docs/en/interest_of_intlayer.md +24 -22
  52. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  53. package/docs/en/intlayer_with_tanstack+solid.md +5 -3
  54. package/docs/en/intlayer_with_tanstack.md +5 -3
  55. package/docs/en/lsp.md +109 -170
  56. package/docs/en/readme.md +24 -24
  57. package/docs/en-GB/configuration.md +10 -10
  58. package/docs/en-GB/eslint.md +336 -0
  59. package/docs/en-GB/interest_of_intlayer.md +24 -22
  60. package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
  61. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  62. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  63. package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
  64. package/docs/en-GB/intlayer_with_tanstack.md +5 -3
  65. package/docs/en-GB/lsp.md +109 -170
  66. package/docs/en-GB/readme.md +24 -24
  67. package/docs/es/configuration.md +10 -10
  68. package/docs/es/eslint.md +336 -0
  69. package/docs/es/interest_of_intlayer.md +24 -22
  70. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  71. package/docs/es/intlayer_with_tanstack+solid.md +5 -3
  72. package/docs/es/intlayer_with_tanstack.md +5 -3
  73. package/docs/es/lsp.md +114 -175
  74. package/docs/es/readme.md +24 -24
  75. package/docs/fr/configuration.md +10 -10
  76. package/docs/fr/eslint.md +336 -0
  77. package/docs/fr/interest_of_intlayer.md +24 -22
  78. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  79. package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
  80. package/docs/fr/intlayer_with_tanstack.md +5 -3
  81. package/docs/fr/lsp.md +110 -171
  82. package/docs/fr/readme.md +24 -24
  83. package/docs/hi/configuration.md +10 -10
  84. package/docs/hi/eslint.md +336 -0
  85. package/docs/hi/interest_of_intlayer.md +24 -22
  86. package/docs/hi/intlayer_with_express.md +1 -1
  87. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  88. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  89. package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
  90. package/docs/hi/intlayer_with_tanstack.md +5 -3
  91. package/docs/hi/intlayer_with_vite+svelte.md +2 -2
  92. package/docs/hi/lsp.md +113 -174
  93. package/docs/hi/readme.md +24 -24
  94. package/docs/id/configuration.md +10 -10
  95. package/docs/id/eslint.md +336 -0
  96. package/docs/id/interest_of_intlayer.md +24 -22
  97. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  98. package/docs/id/intlayer_with_tanstack+solid.md +5 -3
  99. package/docs/id/intlayer_with_tanstack.md +5 -3
  100. package/docs/id/lsp.md +113 -174
  101. package/docs/id/readme.md +24 -24
  102. package/docs/it/configuration.md +10 -10
  103. package/docs/it/eslint.md +336 -0
  104. package/docs/it/interest_of_intlayer.md +24 -22
  105. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  106. package/docs/it/intlayer_with_tanstack+solid.md +5 -3
  107. package/docs/it/intlayer_with_tanstack.md +5 -3
  108. package/docs/it/lsp.md +115 -176
  109. package/docs/it/readme.md +24 -24
  110. package/docs/ja/configuration.md +10 -10
  111. package/docs/ja/eslint.md +336 -0
  112. package/docs/ja/interest_of_intlayer.md +24 -22
  113. package/docs/ja/intlayer_with_react_router_v7.md +1 -146
  114. package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
  115. package/docs/ja/intlayer_with_tanstack.md +5 -3
  116. package/docs/ja/intlayer_with_vite+react.md +5 -1
  117. package/docs/ja/lsp.md +113 -174
  118. package/docs/ja/readme.md +24 -24
  119. package/docs/ko/configuration.md +10 -10
  120. package/docs/ko/eslint.md +336 -0
  121. package/docs/ko/interest_of_intlayer.md +24 -22
  122. package/docs/ko/intlayer_with_lynx+react.md +4 -0
  123. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  124. package/docs/ko/intlayer_with_storybook.md +5 -5
  125. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  126. package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
  127. package/docs/ko/intlayer_with_tanstack.md +5 -3
  128. package/docs/ko/lsp.md +112 -173
  129. package/docs/ko/readme.md +24 -24
  130. package/docs/nl/configuration.md +10 -10
  131. package/docs/nl/eslint.md +336 -0
  132. package/docs/nl/interest_of_intlayer.md +24 -22
  133. package/docs/pl/configuration.md +10 -10
  134. package/docs/pl/eslint.md +336 -0
  135. package/docs/pl/interest_of_intlayer.md +4 -2
  136. package/docs/pl/intlayer_with_astro.md +1 -114
  137. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  138. package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
  139. package/docs/pl/intlayer_with_tanstack.md +5 -3
  140. package/docs/pl/lsp.md +115 -176
  141. package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
  142. package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
  143. package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
  144. package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
  145. package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
  146. package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
  147. package/docs/pl/readme.md +24 -24
  148. package/docs/pt/configuration.md +10 -10
  149. package/docs/pt/eslint.md +336 -0
  150. package/docs/pt/interest_of_intlayer.md +24 -22
  151. package/docs/pt/intlayer_with_astro.md +1 -114
  152. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  153. package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
  154. package/docs/pt/intlayer_with_tanstack.md +5 -3
  155. package/docs/pt/lsp.md +113 -174
  156. package/docs/pt/readme.md +24 -24
  157. package/docs/ru/configuration.md +10 -10
  158. package/docs/ru/eslint.md +336 -0
  159. package/docs/ru/interest_of_intlayer.md +24 -22
  160. package/docs/ru/intlayer_with_nextjs_14.md +1 -1
  161. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  162. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  163. package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
  164. package/docs/ru/intlayer_with_tanstack.md +5 -3
  165. package/docs/ru/lsp.md +112 -173
  166. package/docs/ru/readme.md +24 -24
  167. package/docs/tr/configuration.md +10 -10
  168. package/docs/tr/eslint.md +336 -0
  169. package/docs/tr/interest_of_intlayer.md +24 -22
  170. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  171. package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
  172. package/docs/tr/intlayer_with_tanstack.md +5 -3
  173. package/docs/tr/lsp.md +113 -174
  174. package/docs/tr/readme.md +24 -24
  175. package/docs/uk/configuration.md +10 -10
  176. package/docs/uk/eslint.md +336 -0
  177. package/docs/uk/interest_of_intlayer.md +4 -2
  178. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  179. package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
  180. package/docs/uk/intlayer_with_tanstack.md +5 -3
  181. package/docs/uk/lsp.md +113 -174
  182. package/docs/uk/packages/angular-intlayer/exports.md +2 -2
  183. package/docs/uk/per_locale_file.md +1 -1
  184. package/docs/uk/readme.md +24 -24
  185. package/docs/ur/configuration.md +10 -10
  186. package/docs/ur/eslint.md +336 -0
  187. package/docs/ur/interest_of_intlayer.md +24 -22
  188. package/docs/vi/configuration.md +10 -10
  189. package/docs/vi/eslint.md +336 -0
  190. package/docs/vi/interest_of_intlayer.md +24 -22
  191. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  192. package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
  193. package/docs/vi/intlayer_with_tanstack.md +5 -3
  194. package/docs/vi/lsp.md +115 -176
  195. package/docs/vi/readme.md +24 -24
  196. package/docs/zh/configuration.md +10 -10
  197. package/docs/zh/eslint.md +336 -0
  198. package/docs/zh/interest_of_intlayer.md +24 -22
  199. package/docs/zh/intlayer_with_create_react_app.md +4 -0
  200. package/docs/zh/intlayer_with_lynx+react.md +4 -0
  201. package/docs/zh/intlayer_with_nextjs_14.md +0 -2
  202. package/docs/zh/intlayer_with_nextjs_15.md +0 -2
  203. package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
  204. package/docs/zh/intlayer_with_nuxt.md +1 -1
  205. package/docs/zh/intlayer_with_react_router_v7.md +4 -0
  206. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
  207. package/docs/zh/intlayer_with_solid_start.md +1 -1
  208. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  209. package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
  210. package/docs/zh/intlayer_with_tanstack.md +5 -3
  211. package/docs/zh/intlayer_with_vite+vue.md +0 -2
  212. package/docs/zh/lsp.md +113 -174
  213. package/docs/zh/readme.md +21 -21
  214. package/docs/zh-TW/eslint.md +336 -0
  215. package/docs/zh-TW/interest_of_intlayer.md +24 -22
  216. package/package.json +6 -6
  217. package/src/generated/docs.entry.ts +20 -0
package/docs/vi/lsp.md CHANGED
@@ -1,12 +1,14 @@
1
1
  ---
2
2
  createdAt: 2025-06-07
3
- updatedAt: 2026-05-31
4
- title: Máy chủ Intlayer LSP
5
- description: Tìm hiểu cách Máy chủ Ngôn ngữ Intlayer cung cấp tính năng Đi tới Định nghĩa (Go-to-Definition) các tính năng IDE khác cho useIntlayer, getIntlayer các lệnh gọi liên quan trên tất cả các trình soạn thảo được hỗ trợ.
3
+ updatedAt: 2026-08-10
4
+ title: Máy chủ LSP Intlayer
5
+ description: Tìm hiểu cách máy chủ ngôn ngữ Intlayer mang đến khả năng đi tới định nghĩa, tìm tham chiếu, xem trước khi chuột, tự động hoàn thành khóa chẩn đoán cho IDE tác nhân AI của bạn.
6
6
  keywords:
7
7
  - LSP
8
- - Máy chủ Ngôn ngữ
9
- - Đi tới Định nghĩa
8
+ - Máy chủ ngôn ngữ
9
+ - Go to Definition
10
+ - Tự động hoàn thành
11
+ - Chẩn đoán
10
12
  - IDE
11
13
  - Intlayer
12
14
  - VS Code
@@ -16,56 +18,58 @@ slugs:
16
18
  - doc
17
19
  - lsp
18
20
  history:
21
+ - version: 9.1.3
22
+ date: 2026-08-10
23
+ changes: "Bổ sung tìm tham chiếu, xem nhanh khi rê chuột, tự động hoàn thành và chẩn đoán"
19
24
  - version: 8.12.0
20
25
  date: 2026-06-01
21
26
  changes: "Release LSP"
22
27
  author: aymericzip
23
28
  ---
24
29
 
25
- # Máy chủ Intlayer LSP
30
+ # Máy chủ LSP Intlayer
26
31
 
27
- **Máy chủ Ngôn ngữ Intlayer (LSP)** là một triển khai của [Giao thức Máy chủ Ngôn ngữ (LSP)](https://microsoft.github.io/language-server-protocol/) nhằm nâng cao IDE của bạn bằng trí thông minh nhận biết cấu trúc Intlayer. Hiện tại, máy chủ cung cấp tính năng **Đi tới Định nghĩa (Go to Definition)** cho các lệnh gọi khóa từ điển, cho phép bạn nhảy trực tiếp từ `useIntlayer("my-key")` trong thành phần của mình sang tệp `.content.ts` khai báo khóa đó.
32
+ **Máy chủ ngôn ngữ Intlayer** là một hiện thực của [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/) giúp IDE tác nhân AI của bạn hiểu Intlayer. kết nối một lệnh gọi như `useIntlayer("home")` với tệp `.content.ts` khai báo nó, theo cả hai chiều.
28
33
 
29
34
  ---
30
35
 
31
- ## Tại sao nên sử dụng LSP?
36
+ ## Tính năng
32
37
 
33
- Khi bạn sử dụng Intlayer, kết nối giữa một lệnh gọi như `useIntlayer("homepage")` và khai báo của nó trong `src/homepage.content.ts` là ẩn định. Nếu không có công cụ, bạn phải tìm kiếm tệp theo cách thủ công. LSP làm cho liên kết đó trở nên rõ ràng:
38
+ | Tính năng | Phím tắt | tả |
39
+ | -------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------- |
40
+ | **Đi tới định nghĩa** | `F12` / `Cmd+Nhấp` | Nhảy từ một khóa từ điển hoặc chỗ dùng một trường tới khai báo của nó trong tệp nội dung |
41
+ | **Tìm tất cả tham chiếu** | `Shift+F12` | Từ một tệp nội dung, liệt kê mọi vị trí gọi có dùng khóa hoặc trường đó |
42
+ | **Xem nhanh khi rê chuột** | rê con trỏ | Xem trước các trường của một từ điển, hoặc giá trị đã dịch của một trường, mà không rời khỏi tệp |
43
+ | **Tự động hoàn thành** | `"` `'` `` ` `` `.` | Gợi ý các khóa từ điển đã khai báo bên trong getter, và các trường nội dung sau `.` hoặc khi phá cấu trúc |
44
+ | **Chẩn đoán** | tự động | Cảnh báo khi một khóa không được khai báo trong bất kỳ tệp nội dung nào |
34
45
 
35
- **Nhận thức của tác nhân AI**
46
+ hai hành vi bổ sung đáng lưu ý:
36
47
 
37
- Các tác nhân lập trình AI (Cursor, Windsurf, GitHub Copilot, Claude Code, Codex) dựa vào máy chủ ngôn ngữ để giải quyết các ký hiệu và hiểu mối quan hệ chéo giữa các tệp. Khi Intlayer LSP đang chạy, các tác nhân có thể đi theo lệnh gọi `useIntlayer("key")` trở lại khai báo của nó, mang lại cho chúng ngữ cảnh chính xác về các khóa nội dung có sẵn, cấu trúc của từng từ điển và tệp nào cần đọc hoặc chỉnh sửa.
48
+ - **Từ điển được hợp nhất** một khóa trải trên nhiều tệp nội dung sẽ trả về một kết quả cho mỗi tệp, nhờ đó bạn có thể tới từng khai báo.
49
+ - **Hỗ trợ monorepo** — máy chủ phân giải tệp `intlayer.config.*` _gần nhất_ với mỗi tệp, nhờ đó nhiều dự án trong cùng một workspace đều có từ điển riêng.
38
50
 
39
- **Đi tới Định nghĩa**
51
+ ### Các lệnh gọi được hỗ trợ
40
52
 
41
- Đặt con trỏ của bạn lên bất kỳ chuỗi khóa từ điển nào bên trong lệnh gọi getter được hỗ trợ nhấn `F12` (hoặc `Cmd/Ctrl+Click`). Trình soạn thảo sẽ mở tệp khai báo nội dung và đặt con trỏ vào dòng `key:`.
53
+ Khóa được đọc từ một đối số chuỗi theo vị trí, hoặc từ một đối tượng tùy chọn (`{ namespace }`, `{ id }`).
42
54
 
43
- **Hỗ trợ từ điển được gộp**
55
+ | Thư viện | Lệnh gọi |
56
+ | --------------------------- | -------------------------------------------------------- |
57
+ | **Intlayer** | `useIntlayer`, `getIntlayer` |
58
+ | **i18next / react-i18next** | `useTranslation`, `getFixedT`, `t`, `Trans` |
59
+ | **next-intl / use-intl** | `useTranslations`, `getTranslations`, `createTranslator` |
60
+ | **react-intl** | `formatMessage`, `FormattedMessage` |
61
+ | **Lingui** | `useLingui`, `t`, `Trans`, `_` |
62
+ | **vue-i18n** | `useI18n` |
44
63
 
45
- Một khóa thể được chia ra nhiều tệp nội dung khác nhau (Intlayer sẽ gộp chúng lại). Máy chủ trả về một vị trí (`Location`) trên mỗi tệp nguồn để bạn thể điều hướng đến từng khai báo.
64
+ Điều này áp dụng cho mọi gói `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `intlayer`), cũng như cho các gói adapter compat cho phép bạn giữ nguyên pháp i18n hiện có.
46
65
 
47
- **Hoạt động mọi nơi**
48
-
49
- Hỗ trợ tất cả các gói `*-intlayer` (`next-intlayer`, `react-intlayer`, `vue-intlayer`, `svelte-intlayer`, `solid-intlayer`, `preact-intlayer`, `angular-intlayer`, `lit-intlayer`, `express-intlayer`, `hono-intlayer`, `fastify-intlayer`, `adonis-intlayer`, `intlayer`).
50
-
51
- ### Các lệnh gọi getter được hỗ trợ
52
-
53
- Máy chủ phát hiện các lệnh gọi hàm sau và trích xuất đối số chuỗi ký tự đầu tiên làm khóa từ điển:
54
-
55
- | Hàm | Ví dụ |
56
- | ------------- | ----------------------------- |
57
- | `useIntlayer` | `useIntlayer("hero")` |
58
- | `getIntlayer` | `getIntlayer("hero", locale)` |
59
-
60
- Các generic của TypeScript và các đối số bổ sung đều bị bỏ qua — chỉ chuỗi khóa mới quan trọng.
61
-
62
- > `useDictionary` và `getDictionary` nhận một đối tượng `Dictionary` đã được nhập làm đối số đầu tiên của chúng thay vì một khóa chuỗi, do đó chúng không được hưởng lợi từ tính năng Đi tới Định nghĩa và không được theo dõi bởi máy chủ.
66
+ > Từ điển được đọc từ kết quả build, vì vậy hãy chạy `npx intlayer build` — hoặc giữ máy chủ phát triển đang chạy — để máy chủ có dữ liệu mà phân giải.
63
67
 
64
68
  ---
65
69
 
66
70
  ## Cài đặt
67
71
 
68
- Máy chủ LSP được phân phối như một phần của `@intlayer/lsp`:
72
+ Máy chủ được phát hành dưới dạng tệp nhị phân `intlayer-lsp` trong `@intlayer/lsp`:
69
73
 
70
74
  ```bash packageManager="npm"
71
75
  npm install --save-dev @intlayer/lsp
@@ -83,43 +87,43 @@ pnpm add --save-dev @intlayer/lsp
83
87
  bun add --dev @intlayer/lsp
84
88
  ```
85
89
 
86
- Gói này cung cấp tệp nhị phân `intlayer-lsp`, được trình soạn thảo sử dụng làm tệp thực thi của máy chủ.
90
+ Hãy cài đặt toàn cục (`npm install -g @intlayer/lsp`) nếu trình soạn thảo của bạn cần `intlayer-lsp` nằm trong `PATH` — đây là trường hợp của plugin Claude Code và của mọi cấu hình bên dưới gọi trực tiếp tệp nhị phân.
87
91
 
88
92
  ---
89
93
 
90
- ## Thiết lập như một Plugin Claude Code
94
+ ## Thiết lập
91
95
 
92
- Intlayer LSP có sẵn dưới dạng **plugin Claude Code** được lưu trữ trực tiếp trong kho lưu trữ GitHub của Intlayer. Việc cài đặt nó giúp Claude Code có nhận thức gốc về tính năng Đi tới Định nghĩa cho tất cả các lệnh gọi `useIntlayer` / `getIntlayer` của bạn.
96
+ <Tabs defaultTab="vscode">
97
+ <Tab label="VS Code" value="vscode">
93
98
 
94
- ### 1. Cài đặt tệp nhị phân máy chủ ngôn ngữ
99
+ Cài [tiện ích mở rộng Intlayer cho VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension). Máy chủ ngôn ngữ đã được đóng gói kèm từ v8.12.0 và tự khởi động — **không cần cấu hình gì**.
95
100
 
96
- ```bash packageManager="npm"
97
- npm install -g @intlayer/lsp
98
- ```
101
+ Xem [tài liệu tiện ích mở rộng VS Code](https://intlayer.org/doc/vs-code-extension) để biết các tính năng khác.
99
102
 
100
- ```bash packageManager="yarn"
101
- yarn global add @intlayer/lsp
102
- ```
103
+ </Tab>
104
+ <Tab label="Cursor / Windsurf" value="cursor">
103
105
 
104
- ```bash packageManager="pnpm"
105
- pnpm add -g @intlayer/lsp
106
- ```
106
+ [Cursor](https://www.cursor.com/) và [Windsurf](https://windsurf.com/) là các bản fork của VS Code và dùng chung hệ sinh thái tiện ích mở rộng. Chỉ cần cài [tiện ích mở rộng Intlayer cho VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension) một lần là máy chủ tự kích hoạt — **không cần cấu hình gì**.
107
+
108
+ </Tab>
109
+ <Tab label="Claude Code" value="claude-code">
107
110
 
108
- Thao tác này sẽ đặt tệp nhị phân `intlayer-lsp` vào biến môi trường PATH của bạn, đây tệp được gọi bởi mục `lspServers` trong plugin.
111
+ Intlayer cung cấp một **plugin cho Claude Code** được lưu trữ ngay trong kho Intlayer. giúp Claude Code phân giải hiệu thật sự cho các khóa từ điển thay vì phải dùng `grep`.
109
112
 
110
- ### 2. Đăng thị trường Intlayer và cài đặt plugin
113
+ Đưa tệp nhị phân vào `PATH`, sau đó đăng ký marketplace và cài plugin:
111
114
 
112
115
  ```bash
116
+ npm install -g @intlayer/lsp
117
+
113
118
  claude plugin marketplace add intlayer@github:aymericzip/intlayer
114
119
  claude plugin install intlayer-lsp@intlayer
115
- claude plugin enable intlayer-lsp@intlayer
116
120
  ```
117
121
 
118
- Claude Code sẽ thêm `"intlayer-lsp@intlayer": true` vào danh sách `enabledPlugins` của bạn tự động khởi động máy chủ ngôn ngữ trên các loại tệp được hỗ trợ (`.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.svelte`).
122
+ `install` cũng đồng thời bật plugin. **Hãy khởi động lại Claude Code** các máy chủ ngôn ngữ được nạp lúc khởi động, nên trước đó plugin chưa tác dụng.
119
123
 
120
- ### 3. Bật công cụ LSP (nếu chưa hoạt động)
124
+ Sau đó Claude Code sẽ khởi chạy máy chủ trên các tệp `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`, `.astro` và `.svelte`, đồng thời dùng `goToDefinition`, `findReferences` và `hover` khi duyệt mã của bạn.
121
125
 
122
- Một số phiên bản Claude Code yêu cầu cờ tính năng LSP phải được đặt. Thêm nội dung sau vào tệp `~/.claude/settings.json` của bạn nếu tính năng Đi tới Định nghĩa không hoạt động sau khi cài đặt:
126
+ Nếu đi tới định nghĩa vẫn không hoạt động, phiên bản Claude Code của bạn thể đang giới hạn công cụ LSP sau một cờ:
123
127
 
124
128
  ```json fileName="~/.claude/settings.json"
125
129
  {
@@ -129,61 +133,10 @@ Một số phiên bản Claude Code yêu cầu cờ tính năng LSP phải đư
129
133
  }
130
134
  ```
131
135
 
132
- Khởi động lại Claude Code — từ giờ nó sẽ sử dụng `goToDefinition`, `findReferences` và các thao tác LSP khác khi điều hướng cơ sở mã Intlayer của bạn thay vì sử dụng `grep`.
133
-
134
- ---
135
-
136
- ## Thiết lập trong VS Code (thông qua tiện ích mở rộng — khuyến nghị)
137
-
138
- Nếu bạn đã cài đặt [tiện ích mở rộng Intlayer VS Code](https://marketplace.visualstudio.com/items?itemName=Intlayer.intlayer-vs-code-extension), máy chủ ngôn ngữ sẽ tự động bắt đầu. Không cần cấu hình thêm. LSP được tích hợp trực tiếp vào tiện ích mở rộng VSCode từ phiên bản 8.12.0.
139
-
140
- > Xem [tài liệu tiện ích mở rộng VS Code](https://intlayer.org/doc/vs-code-extension) để biết cách cài đặt và các tính năng khác.
141
-
142
- ---
143
-
144
- ## Thiết lập thủ công trong VS Code
145
-
146
- Nếu bạn không sử dụng tiện ích mở rộng Intlayer, bạn có thể kết nối máy chủ ngôn ngữ theo cách thủ công bằng cách sử dụng một tiện ích mở rộng ứng dụng khách LSP chung như [**vscode-glspc**](https://marketplace.visualstudio.com/items?itemName=sibiraj-s.vscode-scss-formatter) hoặc bằng cách viết một tiện ích mở rộng nhỏ của riêng bạn. Phương pháp khuyến nghị là sử dụng tiện ích mở rộng Intlayer.
147
-
148
- Để tham khảo, máy chủ được khởi chạy thông qua tệp nhị phân `intlayer-lsp` qua stdio:
149
-
150
- ```json fileName=".vscode/settings.json"
151
- {
152
- "intlayer.languageServer.command": "npx",
153
- "intlayer.languageServer.args": ["@intlayer/lsp"]
154
- }
155
- ```
156
-
157
- Tiện ích mở rộng Intlayer đọc các cài đặt này để khởi chạy máy chủ. Nếu bạn chỉ dựa vào tiện ích mở rộng, không cần cài đặt thủ công.
158
-
159
- ---
160
-
161
- ## Thiết lập trong Cursor
162
-
163
- [Cursor](https://www.cursor.com/) là một bản phân nhánh của VS Code với các tính năng AI tích hợp. Nó sử dụng cùng một hệ sinh thái tiện ích mở rộng, vì vậy **tiện ích mở rộng Intlayer VS Code** hoạt động mà không cần bất kỳ cấu hình bổ sung nào — hãy cài đặt nó một lần và Cursor sẽ tự động phát hiện.
164
-
165
- Nếu bạn thích cấu hình thủ công, Cursor cũng đọc tệp `.vscode/settings.json` từ thư mục gốc của không gian làm việc, do đó đoạn mã VS Code ở trên sẽ áp dụng trực tiếp.
166
-
167
- ---
168
-
169
- ## Thiết lập trong Windsurf
170
-
171
- [Windsurf](https://windsurf.com/) (phát triển bởi Codeium) là một trình soạn thảo dựa trên VS Code khác. Cài đặt tiện ích mở rộng Intlayer từ VS Code Marketplace và máy chủ ngôn ngữ sẽ tự động được kích hoạt, giống hệt như trong VS Code và Cursor.
172
-
173
- Để cấu hình thủ công, hãy tạo tệp `.vscode/settings.json` tại thư mục gốc của dự án:
174
-
175
- ```json fileName=".vscode/settings.json"
176
- {
177
- "intlayer.languageServer.command": "npx",
178
- "intlayer.languageServer.args": ["@intlayer/lsp"]
179
- }
180
- ```
181
-
182
- ---
183
-
184
- ## Thiết lập trong Zed
136
+ </Tab>
137
+ <Tab label="Zed" value="zed">
185
138
 
186
- [Zed](https://zed.dev/) hỗ trợ LSP gốc thông qua cài đặt ngôn ngữ của nó. Thêm một mục trong cài đặt người dùng Zed của bạn (`~/.config/zed/settings.json`):
139
+ Zed hỗ trợ LSP sẵn có. Hãy thêm máy chủ vào thiết lập người dùng của bạn:
187
140
 
188
141
  ```json fileName="~/.config/zed/settings.json"
189
142
  {
@@ -196,47 +149,21 @@ Nếu bạn thích cấu hình thủ công, Cursor cũng đọc tệp `.vscode/s
196
149
  }
197
150
  },
198
151
  "languages": {
199
- "TypeScript": {
200
- "language_servers": ["intlayer-lsp", "..."]
201
- },
202
- "TSX": {
203
- "language_servers": ["intlayer-lsp", "..."]
204
- },
205
- "JavaScript": {
206
- "language_servers": ["intlayer-lsp", "..."]
207
- },
208
- "Vue.js": {
209
- "language_servers": ["intlayer-lsp", "..."]
210
- },
211
- "Svelte": {
212
- "language_servers": ["intlayer-lsp", "..."]
213
- }
152
+ "TypeScript": { "language_servers": ["intlayer-lsp", "..."] },
153
+ "TSX": { "language_servers": ["intlayer-lsp", "..."] },
154
+ "JavaScript": { "language_servers": ["intlayer-lsp", "..."] },
155
+ "Vue.js": { "language_servers": ["intlayer-lsp", "..."] },
156
+ "Svelte": { "language_servers": ["intlayer-lsp", "..."] }
214
157
  }
215
158
  }
216
159
  ```
217
160
 
218
- Dấu giữ chỗ `"..."` yêu cầu Zed giữ các máy chủ ngôn ngữ mặc định của cùng với máy chủ Intlayer.
219
-
220
- ---
221
-
222
- ## Thiết lập cho CLI Tác nhân AI (Claude Code, Codex, v.v.)
223
-
224
- **Claude Code** có hỗ trợ plugin LSP hạng nhất — hãy làm theo các bước [thiết lập Plugin Claude Code](#thiết-lập-như-một-plugin-claude-code) ở trên để có được trải nghiệm Đi tới Định nghĩa đầy đủ trực tiếp trong các phiên terminal của bạn.
161
+ hiệu `"..."` giữ lại các máy chủ ngôn ngữ mặc định của Zed bên cạnh máy chủ của Intlayer.
225
162
 
226
- **OpenAI Codex** và các công cụ dựa trên terminal khác chưa hoạt động như máy chủ khách LSP — chúng đọc và ghi tệp trực tiếp thay vì duy trì một phiên máy chủ ngôn ngữ liên tục. Đối với những công cụ đó, giá trị của việc chạy LSP đến một cách gián tiếp: khi máy chủ hoạt động trong một trình soạn thảo đồng hành (VS Code, Cursor, Windsurf, ...), chỉ mục trực tiếp của trình soạn thảo sẽ có sẵn cho bất kỳ tác nhân AI nào có thể truy vấn nó thông qua ngữ cảnh do trình soạn thảo cung cấp (ví dụ: Cursor Composer, Windsurf Cascade, GitHub Copilot Chat).
163
+ </Tab>
164
+ <Tab label="Neovim" value="neovim">
227
165
 
228
- Nếu bạn chỉ làm việc trong terminal không mở trình soạn thảo, bạn có thể khởi động máy chủ ngôn ngữ trong nền để nó sẵn sàng cho bất kỳ trình soạn thảo nào sau đó kết nối với cùng một không gian làm việc:
229
-
230
- ```bash
231
- # Giữ cho máy chủ tiếp tục chạy trong nền
232
- npx @intlayer/lsp &
233
- ```
234
-
235
- ---
236
-
237
- ## Thiết lập thủ công trong Neovim
238
-
239
- Sử dụng [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), đăng ký cấu hình máy chủ tùy chỉnh:
166
+ Dùng [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig), hãy đăng một cấu hình máy chủ tùy chỉnh:
240
167
 
241
168
  ```lua fileName="~/.config/nvim/init.lua"
242
169
  local lspconfig = require('lspconfig')
@@ -245,7 +172,7 @@ local configs = require('lspconfig.configs')
245
172
  if not configs.intlayer_lsp then
246
173
  configs.intlayer_lsp = {
247
174
  default_config = {
248
- -- Khởi chạy máy chủ bằng npx để bạn không cần cài đặt toàn cục
175
+ -- Khởi chạy máy chủ bằng npx để không cần cài đặt toàn cục
249
176
  cmd = { 'npx', '--yes', '@intlayer/lsp' },
250
177
  filetypes = {
251
178
  'typescript',
@@ -267,21 +194,10 @@ end
267
194
  lspconfig.intlayer_lsp.setup({})
268
195
  ```
269
196
 
270
- Sau khi khởi động lại Neovim, việc nhấn `gd` trên một khóa Intlayer sẽ kích hoạt Đi tới Định nghĩa.
271
-
272
- ---
273
-
274
- ## Thiết lập thủ công trong các Trình soạn thảo khác
275
-
276
- Bất kỳ trình soạn thảo nào hỗ trợ Giao thức Máy chủ Ngôn ngữ đều có thể sử dụng `@intlayer/lsp`. Máy chủ:
197
+ Sau khi khởi động lại Neovim, `gd` trên một khóa từ điển sẽ chạy Đi tới định nghĩa và `gr` sẽ chạy Tìm tham chiếu.
277
198
 
278
- - **Truyền tải** – Node.js IPC / stdio (tiêu chuẩn)
279
- - **Tệp thực thi** – `npx @intlayer/lsp` (hoặc tệp nhị phân `intlayer-lsp` được cài đặt cục bộ)
280
- - **Khả năng** – `definitionProvider: true`, `textDocumentSync: Incremental`
281
-
282
- Tham khảo tài liệu LSP của trình soạn thảo của bạn để biết định dạng cấu hình chính xác (ví dụ: `languageserver.json` cho [coc.nvim](https://github.com/neoclide/coc.nvim), hoặc cài đặt ứng dụng khách LSP trong [Helix](https://helix-editor.com)).
283
-
284
- ### Ví dụ: coc.nvim
199
+ </Tab>
200
+ <Tab label="coc.nvim" value="coc">
285
201
 
286
202
  ```json fileName="~/.config/nvim/coc-settings.json"
287
203
  {
@@ -307,9 +223,14 @@ Tham khảo tài liệu LSP của trình soạn thảo của bạn để biết
307
223
  }
308
224
  ```
309
225
 
310
- ### Ví dụ: Helix
226
+ </Tab>
227
+ <Tab label="Helix" value="helix">
311
228
 
312
229
  ```toml fileName="~/.config/helix/languages.toml"
230
+ [language-server.intlayer-lsp]
231
+ command = "npx"
232
+ args = ["@intlayer/lsp"]
233
+
313
234
  [[language]]
314
235
  name = "typescript"
315
236
  language-servers = ["intlayer-lsp", "typescript-language-server"]
@@ -317,36 +238,54 @@ language-servers = ["intlayer-lsp", "typescript-language-server"]
317
238
  [[language]]
318
239
  name = "tsx"
319
240
  language-servers = ["intlayer-lsp", "typescript-language-server"]
320
-
321
- [language-server.intlayer-lsp]
322
- command = "npx"
323
- args = ["@intlayer/lsp"]
324
241
  ```
325
242
 
243
+ </Tab>
244
+ <Tab label="Trình soạn thảo khác" value="other">
245
+
246
+ Mọi trình soạn thảo hỗ trợ LSP đều có thể chạy `@intlayer/lsp`. Hãy trỏ nó tới:
247
+
248
+ - **Tệp thực thi** — `npx @intlayer/lsp`, hoặc tệp nhị phân `intlayer-lsp`
249
+ - **Phương thức truyền** — stdio (chuẩn)
250
+ - **Khả năng** — `definitionProvider`, `referencesProvider`, `hoverProvider`, `completionProvider` (ký tự kích hoạt `"` `'` `` ` `` `.`), chẩn đoán dạng push, `textDocumentSync: Incremental`
251
+ - **Mẫu thư mục gốc** — `intlayer.config.ts`, `intlayer.config.js`, `package.json`
252
+
253
+ Hãy tham khảo tài liệu LSP của trình soạn thảo để biết định dạng cấu hình chính xác.
254
+
255
+ </Tab>
256
+ </Tabs>
257
+
326
258
  ---
327
259
 
328
- ## Cách hoạt động
260
+ ## Ghi chú về tác nhân AI trên terminal
329
261
 
330
- Khi máy chủ khởi động, sẽ giải quyết cấu hình Intlayer từ thư mục gốc của không gian làm việc bằng cách sử dụng `getConfiguration()`. Điều này cung cấp cho nó các đường dẫn `build` và `system` cần thiết để tìm các từ điển được biên dịch.
262
+ **Claude Code** hoạt động như một client LSP thực thụ xem tab trên.
331
263
 
332
- Trên mỗi yêu cầu **Đi tới Định nghĩa**:
264
+ **OpenAI Codex** phần lớn công cụ terminal khác không phải là client LSP: chúng đọc và ghi tệp trực tiếp. Chạy riêng máy chủ không giúp ích cho chúng; giá trị đến từ việc máy chủ đang hoạt động trong một trình soạn thảo đi kèm mà tác nhân có thể truy vấn chỉ mục (Cursor Composer, Windsurf Cascade, Copilot Chat).
333
265
 
334
- 1. Máy chủ đọc toàn bộ văn bản của tài liệu đang mở.
335
- 2. Nó quét các lệnh gọi getter (`useIntlayer`, `getIntlayer`, v.v.) bằng cách sử dụng một biểu thức chính quy.
336
- 3. Nó kiểm tra xem vị trí con trỏ có nằm trong một trong những lệnh gọi đó hay không.
337
- 4. Nếu có, nó sẽ trích xuất khóa từ điển (nhóm chụp 3 của biểu thức chính quy) và gọi `getUnmergedDictionaries()` để xác định vị trí của từng tệp nội dung khai báo khóa đó.
338
- 5. Nó đọc từng tệp phù hợp và tìm dòng chính xác chứa `key: "<key>"` để định vị con trỏ một cách chính xác.
339
- 6. Nó trả về một mảng gồm các đối tượng `Location` — một đối tượng trên mỗi tệp nguồn.
266
+ ---
340
267
 
341
- Cấu hình được giải quyết một cách lazy và được lưu vào bộ nhớ cache cho mỗi phiên; nó sẽ được đặt lại trên mỗi yêu cầu `initialize` (ví dụ: khi bạn mở một thư mục không gian làm việc mới).
268
+ ## Cách hoạt động
269
+
270
+ Với mỗi tệp, máy chủ tìm tệp `intlayer.config.*` gần nhất và nạp cấu hình của dự án đó để tìm các từ điển đã biên dịch. Cấu hình, từ điển và danh sách tệp nguồn được lưu vào bộ nhớ đệm với TTL ngắn, và bị vô hiệu mỗi khi một tệp nội dung đang được theo dõi thay đổi.
271
+
272
+ Khi có yêu cầu, máy chủ phân tích tài liệu (qua [oxc](https://oxc.rs/)) và xem xét vị trí con trỏ:
273
+
274
+ 1. **Trên một chuỗi khóa** (`useIntlayer("home")`) → trả về mọi tệp nội dung khai báo khóa đó, đặt con trỏ tại dòng `key:` của nó.
275
+ 2. **Trên một chỗ dùng trường** (`content.title`, một thuộc tính được phá cấu trúc, `t('path.to.field')`, `<Trans>`, …) → truy ngược biến về từ điển của nó và trả về trường tương ứng bên trong các tệp nội dung.
276
+ 3. **Từ một tệp nội dung** → chạy tra cứu ngược, quét mã nguồn dự án để tìm các vị trí gọi khóa hoặc trường đó.
342
277
 
343
278
  ---
344
279
 
345
280
  ## Khắc phục sự cố
346
281
 
347
- | Triệu chứng | Nguyên nhân có thể | Giải pháp |
348
- | -------------------------------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------- |
349
- | Đi tới Định nghĩa không hoạt động | Máy chủ không chạy | Kiểm tra xem `@intlayer/lsp` đã được cài đặt chưa và trình soạn thảo có đang khởi chạy nó không |
350
- | Phát hiện sai thư mục gốc | Nhiều thư mục không gian làm việc | Đảm bảo thư mục chứa `intlayer.config.ts` thư mục không gian làm việc đầu tiên |
351
- | Không tìm thấy định nghĩa cho một khóa | Cấu hình chưa được giải quyết | Xác minh xem `intlayer.config.ts` (hoặc `.js`) tồn tại trong thư mục gốc của không gian làm việc không |
352
- | Máy chủ gặp sự cố khi khởi động | Phiên bản Node.js quá | Yêu cầu Node.js 14.18 |
282
+ | Hiện tượng | Nguyên nhân có thể | Cách khắc phục |
283
+ | ------------------------------------------------------------------ | ------------------------------ | ----------------------------------------------------------------------------- |
284
+ | Hoàn toàn không xảy ra | Máy chủ không chạy | Kiểm tra `@intlayer/lsp` đã được cài và trình soạn thảo có khởi chạy nó không |
285
+ | Chạy được trong trình soạn thảo nhưng không chạy trong Claude Code | Cài plugin giữa phiên làm việc | Khởi động lại Claude Code máy chủ ngôn ngữ được nạp lúc khởi động |
286
+ | Không tìm thấy định nghĩa cho một khóa | Từ điển chưa được build | Chạy `npx intlayer build`, hoặc khởi động máy chủ phát triển |
287
+ | Mọi khóa đều bị báo chưa khai báo | Chưa phân giải được cấu hình | Kiểm tra có tệp `intlayer.config.ts` (hoặc `.js`) gốc dự án |
288
+ | Dùng nhầm dự án trong monorepo | Thiếu cấu hình cho từng gói | Thêm `intlayer.config.*` vào mỗi gói có khai báo nội dung riêng |
289
+ | Máy chủ sập khi khởi động | Phiên bản Node.js quá cũ | Yêu cầu Node.js ≥ 14.18 |
290
+
291
+ Trong VS Code, máy chủ ghi log vào **Xem → Output → “Intlayer LSP”** — hữu ích để xác nhận cấu hình nào đã được phân giải và tìm thấy bao nhiêu từ điển.
package/docs/vi/readme.md CHANGED
@@ -46,27 +46,27 @@ Với **các tệp nội dung theo từng locale**, **tự động hoàn thành
46
46
 
47
47
  ## Các lợi ích chính của Intlayer:
48
48
 
49
- | Tính năng | Mô tả |
50
- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Hỗ trợ" width="700"> | **Hỗ trợ đa Framework**<br><br>Intlayer tương thích với tất cả các framework và thư viện lớn, bao gồm Next.js, React, Vite, Vue.js, Nuxt, Preact, Express và nhiều hơn nữa. |
52
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Quản lý nội dung bằng JavaScript**<br><br>Khai thác sự linh hoạt của JavaScript để định nghĩa và quản lý nội dung của bạn một cách hiệu quả. <br><br> - [Khai báo nội dung](https://intlayer.org/doc/concept/content) |
53
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Tệp nội dung" width="700"> | **Tệp Khai Báo Nội Dung Theo Mỗi Locale**<br><br>Tăng tốc phát triển của bạn bằng cách khai báo nội dung một lần, trước khi tự động sinh.<br><br> - [Tệp Khai Báo Nội Dung Theo Mỗi Locale](https://intlayer.org/doc/concept/per-locale-file) |
54
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Trình biên dịch**<br><br>Trình biên dịch Intlayer tự động trích xuất nội dung từ các component và tạo ra các tệp từ điển.<br><br> - [Compiler](https://intlayer.org/doc/compiler) |
55
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Môi Trường An Toàn Kiểu**<br><br>Tận dụng TypeScript để đảm bảo định nghĩa nội dung và mã của bạn không có lỗi, đồng thời hưởng lợi từ tính năng tự động hoàn thành trong IDE.<br><br> - [Cấu hình TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Cấu hình" width="700"> | **Cài Đặt Đơn Giản Hóa**<br><br>Bắt đầu nhanh chóng với cấu hình tối thiểu. Dễ dàng điều chỉnh các thiết lập cho quốc tế hóa, định tuyến, AI, build và xử lý nội dung.<br><br> - [Khám phá tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
57
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Truy xuất" width="700"> | **Truy Xuất Nội Dung Đơn Giản Hóa**<br><br>Không cần gọi hàm `t` cho từng phần nội dung. Truy xuất toàn bộ nội dung của bạn trực tiếp bằng một hook duy nhất.<br><br> - [Tích hợp React](https://intlayer.org/doc/environment/create-react-app) |
58
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Server Component" width="700"> | **Triển Khai Thành Phần Server Nhất Quán**<br><br>Phù hợp hoàn hảo cho các thành phần server của Next.js, sử dụng cùng một triển khai cho cả thành phần client và server, không cần truyền hàm `t` của bạn qua từng thành phần server.<br><br> - [Thành phần Server](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
59
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Cấu trúc" width="700"> | **Codebase Có Tổ Chức**<br><br>Giữ cho codebase của bạn có tổ chức hơn: 1 component = 1 từ điển trong cùng một thư mục. Các bản dịch gần với các component tương ứng, nâng cao khả năng bảo trì và sự rõ ràng.<br><br> - [Cách Intlayer hoạt động](https://intlayer.org/doc/concept/how-works-intlayer) |
60
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Routing" width="700"> | **Định Tuyến Nâng Cao**<br><br>Hỗ trợ đầy đủ định tuyến ứng dụng, thích nghi mượt mà với các cấu trúc ứng dụng phức tạp, dành cho Next.js, React, Vite, Vue.js, v.v.<br><br> - [Khám phá tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
61
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Hỗ Trợ Markdown**<br><br>Nhập và giải thích các tệp locale và Markdown từ xa cho nội dung đa ngôn ngữ như chính sách bảo mật, tài liệu, v.v. Giải thích và làm cho metadata của Markdown có thể truy cập trong mã của bạn.<br><br> - [Tệp nội dung](https://intlayer.org/doc/concept/content/file) |
62
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="CMS" width="700"> | **Editor Trực Quan & CMS Miễn Phí**<br><br>Một trình soạn thảo trực quan và CMS miễn phí có sẵn cho người viết nội dung, loại bỏ nhu cầu sử dụng nền tảng bản địa hóa. Giữ nội dung của bạn đồng bộ bằng cách sử dụng Git, hoặc ngoại hóa hoàn toàn hoặc một phần với CMS.<br><br> - [Trình Soạn Thảo Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Nội dung có thể Tree-shake**<br><br>Nội dung có thể tree-shake, giảm kích thước của gói cuối cùng. Tải nội dung theo từng component, loại trừ bất kỳ nội dung không sử dụng nào khỏi gói của bạn. Hỗ trợ lazy loading để nâng cao hiệu quả tải ứng dụng. <br><br> - [Tối ưu hóa xây dựng ứng dụng](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
64
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Static Rendering**<br><br>Không chặn Kết xuất Tĩnh. <br><br> - [Tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
65
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Dịch thuật dựa trên AI**<br><br>Biến trang web của bạn thành 231 ngôn ngữ chỉ với một cú nhấp chuột bằng cách sử dụng các công cụ dịch thuật tiên tiến dựa trên AI của Intlayer với nhà cung cấp AI / khóa API của riêng bạn. <br><br> - [Tích hợp CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI của Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Tự động điền](https://intlayer.org/doc/concept/auto-fill) |
66
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Tích hợp Server MCP**<br><br>Cung cấp một máy chủ MCP (Model Context Protocol) cho tự động hóa IDE, cho phép quản lý nội dung và quy trình làm việc i18n liền mạch trực tiếp trong môi trường phát triển của bạn. <br><br> - [Máy Chủ MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/mcp_server.md) |
67
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="VSCode" width="700"> | **Tiện ích mở rộng VSCode**<br><br>Intlayer cung cấp một tiện ích mở rộng VSCode giúp bạn quản lý nội dung và bản dịch, xây dựng từ điển của bạn, dịch nội dung, và nhiều hơn thế nữa. <br><br> - [Tiện Ích Mở Rộng VSCode](https://intlayer.org/doc/vs-code-extension) |
68
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Khả năng tương tác**<br><br>Cho phép tương thích liên vận với react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer và react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer và next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer và next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer và vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) |
69
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Interoperability" width="700"> | **Hiệu năng & Điểm chuẩn**<br><br>Sử dụng tree-shaking nâng cao và tải động để tăng hiệu năng và giữ cho giải pháp nhẹ nhất có thể. <br><br> - [Hiệu năng & Điểm chuẩn](https://intlayer.org/doc/benchmark) |
49
+ | Tính năng | Mô tả |
50
+ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
51
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Hỗ trợ" width="700"> | **Hỗ trợ đa Framework**<br><br>Intlayer tương thích với tất cả các framework và thư viện lớn, bao gồm Next.js, React, Vite, Vue.js, Nuxt, Preact, Express và nhiều hơn nữa. |
52
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="JavaScript" width="700"> | **Quản lý nội dung bằng JavaScript**<br><br>Khai thác sự linh hoạt của JavaScript để định nghĩa và quản lý nội dung của bạn một cách hiệu quả. <br><br> - [Khai báo nội dung](https://intlayer.org/doc/concept/content) |
53
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Tệp nội dung" width="700"> | **Tệp Khai Báo Nội Dung Theo Mỗi Locale**<br><br>Tăng tốc phát triển của bạn bằng cách khai báo nội dung một lần, trước khi tự động sinh.<br><br> - [Tệp Khai Báo Nội Dung Theo Mỗi Locale](https://intlayer.org/doc/concept/per-locale-file) |
54
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Compiler" width="700"> | **Trình biên dịch**<br><br>Trình biên dịch Intlayer tự động trích xuất nội dung từ các component và tạo ra các tệp từ điển.<br><br> - [Compiler](https://intlayer.org/doc/compiler) |
55
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="TypeScript" width="700"> | **Môi Trường An Toàn Kiểu**<br><br>Tận dụng TypeScript để đảm bảo định nghĩa nội dung và mã của bạn không có lỗi, đồng thời hưởng lợi từ tính năng tự động hoàn thành trong IDE.<br><br> - [Cấu hình TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Cấu hình" width="700"> | **Cài Đặt Đơn Giản Hóa**<br><br>Bắt đầu nhanh chóng với cấu hình tối thiểu. Dễ dàng điều chỉnh các thiết lập cho quốc tế hóa, định tuyến, AI, build và xử lý nội dung.<br><br> - [Khám phá tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
57
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Truy xuất" width="700"> | **Truy Xuất Nội Dung Đơn Giản Hóa**<br><br>Không cần gọi hàm `t` cho từng phần nội dung. Truy xuất toàn bộ nội dung của bạn trực tiếp bằng một hook duy nhất.<br><br> - [Tích hợp React](https://intlayer.org/doc/environment/create-react-app) |
58
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Server Component" width="700"> | **Triển Khai Thành Phần Server Nhất Quán**<br><br>Phù hợp hoàn hảo cho các thành phần server của Next.js, sử dụng cùng một triển khai cho cả thành phần client và server, không cần truyền hàm `t` của bạn qua từng thành phần server.<br><br> - [Thành phần Server](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
59
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Cấu trúc" width="700"> | **Codebase Có Tổ Chức**<br><br>Giữ cho codebase của bạn có tổ chức hơn: 1 component = 1 từ điển trong cùng một thư mục. Các bản dịch gần với các component tương ứng, nâng cao khả năng bảo trì và sự rõ ràng.<br><br> - [Cách Intlayer hoạt động](https://intlayer.org/doc/concept/how-works-intlayer) |
60
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Routing" width="700"> | **Định Tuyến Nâng Cao**<br><br>Hỗ trợ đầy đủ định tuyến ứng dụng, thích nghi mượt mà với các cấu trúc ứng dụng phức tạp, dành cho Next.js, React, Vite, Vue.js, v.v.<br><br> - [Khám phá tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
61
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Markdown" width="700"> | **Hỗ Trợ Markdown**<br><br>Nhập và giải thích các tệp locale và Markdown từ xa cho nội dung đa ngôn ngữ như chính sách bảo mật, tài liệu, v.v. Giải thích và làm cho metadata của Markdown có thể truy cập trong mã của bạn.<br><br> - [Tệp nội dung](https://intlayer.org/doc/concept/content/file) |
62
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="CMS" width="700"> | **Editor Trực Quan & CMS Miễn Phí**<br><br>Một trình soạn thảo trực quan và CMS miễn phí có sẵn cho người viết nội dung, loại bỏ nhu cầu sử dụng nền tảng bản địa hóa. Giữ nội dung của bạn đồng bộ bằng cách sử dụng Git, hoặc ngoại hóa hoàn toàn hoặc một phần với CMS.<br><br> - [Trình Soạn Thảo Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
63
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Bundle" width="700"> | **Nội dung có thể Tree-shake**<br><br>Nội dung có thể tree-shake, giảm kích thước của gói cuối cùng. Tải nội dung theo từng component, loại trừ bất kỳ nội dung không sử dụng nào khỏi gói của bạn. Hỗ trợ lazy loading để nâng cao hiệu quả tải ứng dụng. <br><br> - [Tối ưu hóa xây dựng ứng dụng](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
64
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Static Rendering" width="700"> | **Static Rendering**<br><br>Không chặn Kết xuất Tĩnh. <br><br> - [Tích hợp Next.js](https://intlayer.org/doc/environment/nextjs) |
65
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="AI" width="700"> | **Dịch thuật dựa trên AI**<br><br>Biến trang web của bạn thành 231 ngôn ngữ chỉ với một cú nhấp chuột bằng cách sử dụng các công cụ dịch thuật tiên tiến dựa trên AI của Intlayer với nhà cung cấp AI / khóa API của riêng bạn. <br><br> - [Tích hợp CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI của Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Tự động điền](https://intlayer.org/doc/concept/auto-fill) |
66
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="MCP" width="700"> | **Tích hợp Server MCP**<br><br>Cung cấp một máy chủ MCP (Model Context Protocol) cho tự động hóa IDE, cho phép quản lý nội dung và quy trình làm việc i18n liền mạch trực tiếp trong môi trường phát triển của bạn. <br><br> - [Máy Chủ MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/mcp_server.md) |
67
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="VSCode" width="700"> | **Tiện ích mở rộng VSCode**<br><br>Intlayer cung cấp một tiện ích mở rộng VSCode giúp bạn quản lý nội dung và bản dịch, xây dựng từ điển của bạn, dịch nội dung, và nhiều hơn thế nữa. <br><br> - [Tiện Ích Mở Rộng VSCode](https://intlayer.org/doc/vs-code-extension) |
68
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Interoperability" width="700"> | **Khả năng tương tác**<br><br>Cho phép tương thích liên vận với react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer và react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer và next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer và next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer và vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Compat adapter của Intlayer](https://intlayer.org/doc/compatibility) |
69
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Interoperability" width="700"> | **Hiệu năng & Điểm chuẩn**<br><br>Sử dụng tree-shaking nâng cao và tải động để tăng hiệu năng và giữ cho giải pháp nhẹ nhất có thể. <br><br> - [Hiệu năng & Điểm chuẩn](https://intlayer.org/doc/benchmark) |
70
70
 
71
71
  ---
72
72
 
@@ -173,7 +173,7 @@ Khám phá tài liệu toàn diện của chúng tôi để bắt đầu với I
173
173
  <li><a href="https://intlayer.org/doc/concept/cms" rel=''>Intlayer CMS</a></li>
174
174
  <li><a href="https://intlayer.org/doc/concept/content" rel=''>Từ điển</a>
175
175
  <ul>
176
- <li><a href="https://intlayer.org/doc/concept/content/per-locale-file" rel=''>Tệp khai báo nội dung theo mỗi locale</a></li>
176
+ <li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Tệp khai báo nội dung theo mỗi locale</a></li>
177
177
  <li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Dịch thuật</a></li>
178
178
  <li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Liệt kê</a></li>
179
179
  <li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Điều kiện</a></li>
@@ -194,7 +194,7 @@ Khám phá tài liệu toàn diện của chúng tôi để bắt đầu với I
194
194
  <ul>
195
195
  <li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
196
196
  <li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
197
- <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-Page-Router" rel=''>Next.js Page Router</a></li>
197
+ <li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
198
198
  <li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>Next.js sử dụng trình biên dịch</a></li>
199
199
  </ul>
200
200
  </li>
@@ -223,7 +223,7 @@ Khám phá tài liệu toàn diện của chúng tôi để bắt đầu với I
223
223
  <li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
224
224
  <li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
225
225
  <li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
226
- <li><a href="https://intlayer.org/doc/environment/vite-and-nuxt" rel=''>Vite + Nuxt</a></li>
226
+ <li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
227
227
  <li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
228
228
  <li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
229
229
  <li>