@intlayer/docs 8.3.0-canary.4 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/docs/ar/compiler.md +84 -49
  2. package/docs/ar/configuration.md +80 -37
  3. package/docs/ar/intlayer_with_nextjs_16.md +174 -1
  4. package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
  5. package/docs/ar/intlayer_with_react_router_v7.md +224 -1
  6. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
  7. package/docs/ar/intlayer_with_svelte_kit.md +175 -2
  8. package/docs/ar/intlayer_with_tanstack.md +176 -1
  9. package/docs/ar/intlayer_with_vite+preact.md +174 -1
  10. package/docs/ar/intlayer_with_vite+react.md +174 -1
  11. package/docs/ar/intlayer_with_vite+solid.md +174 -1
  12. package/docs/ar/intlayer_with_vite+svelte.md +174 -1
  13. package/docs/ar/intlayer_with_vite+vue.md +174 -1
  14. package/docs/de/compiler.md +83 -48
  15. package/docs/de/configuration.md +434 -212
  16. package/docs/de/intlayer_with_nextjs_16.md +176 -1
  17. package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
  18. package/docs/de/intlayer_with_react_router_v7.md +225 -2
  19. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
  20. package/docs/de/intlayer_with_svelte_kit.md +158 -2
  21. package/docs/de/intlayer_with_tanstack.md +159 -1
  22. package/docs/de/intlayer_with_vite+preact.md +157 -1
  23. package/docs/de/intlayer_with_vite+react.md +157 -1
  24. package/docs/de/intlayer_with_vite+solid.md +159 -3
  25. package/docs/de/intlayer_with_vite+svelte.md +157 -1
  26. package/docs/de/intlayer_with_vite+vue.md +157 -1
  27. package/docs/en/compiler.md +60 -33
  28. package/docs/en/configuration.md +80 -57
  29. package/docs/en/intlayer_with_nextjs_16.md +176 -0
  30. package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
  31. package/docs/en/intlayer_with_react_router_v7.md +159 -0
  32. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
  33. package/docs/en/intlayer_with_svelte_kit.md +159 -0
  34. package/docs/en/intlayer_with_tanstack.md +160 -1
  35. package/docs/en/intlayer_with_vite+preact.md +159 -0
  36. package/docs/en/intlayer_with_vite+react.md +159 -0
  37. package/docs/en/intlayer_with_vite+solid.md +148 -27
  38. package/docs/en/intlayer_with_vite+svelte.md +159 -0
  39. package/docs/en/intlayer_with_vite+vue.md +142 -41
  40. package/docs/en-GB/compiler.md +66 -34
  41. package/docs/en-GB/configuration.md +78 -36
  42. package/docs/es/compiler.md +83 -48
  43. package/docs/es/configuration.md +429 -206
  44. package/docs/es/intlayer_with_adonisjs.md +1 -1
  45. package/docs/es/intlayer_with_express.md +1 -1
  46. package/docs/es/intlayer_with_fastify.md +1 -1
  47. package/docs/es/intlayer_with_hono.md +1 -1
  48. package/docs/es/intlayer_with_nestjs.md +1 -1
  49. package/docs/es/intlayer_with_nextjs_16.md +176 -3
  50. package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
  51. package/docs/es/intlayer_with_nuxt.md +1 -1
  52. package/docs/es/intlayer_with_react_router_v7.md +227 -4
  53. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
  54. package/docs/es/intlayer_with_svelte_kit.md +158 -2
  55. package/docs/es/intlayer_with_tanstack.md +160 -2
  56. package/docs/es/intlayer_with_vite+preact.md +162 -6
  57. package/docs/es/intlayer_with_vite+react.md +160 -4
  58. package/docs/es/intlayer_with_vite+solid.md +163 -7
  59. package/docs/es/intlayer_with_vite+svelte.md +157 -1
  60. package/docs/es/intlayer_with_vite+vue.md +165 -9
  61. package/docs/fr/compiler.md +81 -46
  62. package/docs/fr/configuration.md +355 -134
  63. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  64. package/docs/fr/intlayer_with_express.md +1 -1
  65. package/docs/fr/intlayer_with_fastify.md +1 -1
  66. package/docs/fr/intlayer_with_hono.md +1 -1
  67. package/docs/fr/intlayer_with_nestjs.md +1 -1
  68. package/docs/fr/intlayer_with_nextjs_16.md +183 -7
  69. package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
  70. package/docs/fr/intlayer_with_react_router_v7.md +229 -3
  71. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
  72. package/docs/fr/intlayer_with_svelte_kit.md +158 -2
  73. package/docs/fr/intlayer_with_tanstack.md +159 -1
  74. package/docs/fr/intlayer_with_vite+preact.md +164 -8
  75. package/docs/fr/intlayer_with_vite+react.md +162 -6
  76. package/docs/fr/intlayer_with_vite+solid.md +163 -7
  77. package/docs/fr/intlayer_with_vite+svelte.md +157 -1
  78. package/docs/fr/intlayer_with_vite+vue.md +164 -8
  79. package/docs/hi/compiler.md +81 -46
  80. package/docs/hi/configuration.md +87 -44
  81. package/docs/hi/intlayer_with_nextjs_16.md +174 -1
  82. package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
  83. package/docs/hi/intlayer_with_react_router_v7.md +224 -1
  84. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  85. package/docs/hi/intlayer_with_svelte_kit.md +158 -2
  86. package/docs/hi/intlayer_with_tanstack.md +159 -1
  87. package/docs/hi/intlayer_with_vite+preact.md +157 -1
  88. package/docs/hi/intlayer_with_vite+react.md +157 -1
  89. package/docs/hi/intlayer_with_vite+solid.md +157 -1
  90. package/docs/hi/intlayer_with_vite+svelte.md +157 -1
  91. package/docs/hi/intlayer_with_vite+vue.md +157 -1
  92. package/docs/id/compiler.md +84 -51
  93. package/docs/id/configuration.md +83 -45
  94. package/docs/id/intlayer_with_nextjs_16.md +174 -1
  95. package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
  96. package/docs/id/intlayer_with_react_router_v7.md +224 -1
  97. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
  98. package/docs/id/intlayer_with_svelte_kit.md +158 -2
  99. package/docs/id/intlayer_with_tanstack.md +159 -1
  100. package/docs/id/intlayer_with_vite+preact.md +157 -1
  101. package/docs/id/intlayer_with_vite+react.md +157 -1
  102. package/docs/id/intlayer_with_vite+solid.md +157 -1
  103. package/docs/id/intlayer_with_vite+svelte.md +157 -1
  104. package/docs/id/intlayer_with_vite+vue.md +157 -1
  105. package/docs/it/compiler.md +81 -46
  106. package/docs/it/configuration.md +426 -204
  107. package/docs/it/intlayer_with_nextjs_16.md +174 -1
  108. package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
  109. package/docs/it/intlayer_with_react_router_v7.md +225 -2
  110. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
  111. package/docs/it/intlayer_with_svelte_kit.md +158 -2
  112. package/docs/it/intlayer_with_tanstack.md +159 -1
  113. package/docs/it/intlayer_with_vite+preact.md +157 -1
  114. package/docs/it/intlayer_with_vite+react.md +157 -1
  115. package/docs/it/intlayer_with_vite+solid.md +159 -3
  116. package/docs/it/intlayer_with_vite+svelte.md +157 -1
  117. package/docs/it/intlayer_with_vite+vue.md +157 -1
  118. package/docs/ja/compiler.md +94 -58
  119. package/docs/ja/configuration.md +88 -45
  120. package/docs/ja/intlayer_with_nextjs_16.md +174 -1
  121. package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
  122. package/docs/ja/intlayer_with_react_router_v7.md +184 -394
  123. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
  124. package/docs/ja/intlayer_with_svelte_kit.md +119 -595
  125. package/docs/ja/intlayer_with_tanstack.md +131 -642
  126. package/docs/ja/intlayer_with_vite+preact.md +111 -1231
  127. package/docs/ja/intlayer_with_vite+react.md +129 -1304
  128. package/docs/ja/intlayer_with_vite+solid.md +159 -3
  129. package/docs/ja/intlayer_with_vite+svelte.md +157 -1
  130. package/docs/ja/intlayer_with_vite+vue.md +157 -1
  131. package/docs/ko/compiler.md +88 -52
  132. package/docs/ko/configuration.md +87 -44
  133. package/docs/ko/intlayer_with_nextjs_16.md +174 -1
  134. package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
  135. package/docs/ko/intlayer_with_react_router_v7.md +225 -2
  136. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
  137. package/docs/ko/intlayer_with_svelte_kit.md +158 -2
  138. package/docs/ko/intlayer_with_tanstack.md +159 -1
  139. package/docs/ko/intlayer_with_vite+preact.md +157 -1
  140. package/docs/ko/intlayer_with_vite+react.md +157 -1
  141. package/docs/ko/intlayer_with_vite+solid.md +159 -3
  142. package/docs/ko/intlayer_with_vite+svelte.md +157 -1
  143. package/docs/ko/intlayer_with_vite+vue.md +157 -1
  144. package/docs/pl/compiler.md +84 -51
  145. package/docs/pl/configuration.md +83 -37
  146. package/docs/pl/intlayer_with_nextjs_16.md +174 -1
  147. package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
  148. package/docs/pl/intlayer_with_react_router_v7.md +224 -1
  149. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
  150. package/docs/pl/intlayer_with_svelte_kit.md +158 -2
  151. package/docs/pl/intlayer_with_tanstack.md +159 -1
  152. package/docs/pl/intlayer_with_vite+preact.md +157 -1
  153. package/docs/pl/intlayer_with_vite+react.md +157 -1
  154. package/docs/pl/intlayer_with_vite+solid.md +157 -1
  155. package/docs/pl/intlayer_with_vite+svelte.md +157 -1
  156. package/docs/pl/intlayer_with_vite+vue.md +157 -1
  157. package/docs/pt/compiler.md +81 -46
  158. package/docs/pt/configuration.md +404 -194
  159. package/docs/pt/intlayer_with_nextjs_16.md +174 -1
  160. package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
  161. package/docs/pt/intlayer_with_react_router_v7.md +224 -1
  162. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
  163. package/docs/pt/intlayer_with_svelte_kit.md +158 -2
  164. package/docs/pt/intlayer_with_tanstack.md +159 -1
  165. package/docs/pt/intlayer_with_vite+preact.md +157 -1
  166. package/docs/pt/intlayer_with_vite+react.md +157 -1
  167. package/docs/pt/intlayer_with_vite+solid.md +157 -1
  168. package/docs/pt/intlayer_with_vite+svelte.md +157 -1
  169. package/docs/pt/intlayer_with_vite+vue.md +157 -1
  170. package/docs/ru/compiler.md +90 -57
  171. package/docs/ru/configuration.md +76 -46
  172. package/docs/ru/intlayer_with_nextjs_16.md +174 -1
  173. package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
  174. package/docs/ru/intlayer_with_react_router_v7.md +224 -1
  175. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
  176. package/docs/ru/intlayer_with_svelte_kit.md +158 -2
  177. package/docs/ru/intlayer_with_tanstack.md +159 -1
  178. package/docs/ru/intlayer_with_vite+preact.md +157 -1
  179. package/docs/ru/intlayer_with_vite+react.md +157 -1
  180. package/docs/ru/intlayer_with_vite+solid.md +157 -1
  181. package/docs/ru/intlayer_with_vite+svelte.md +157 -1
  182. package/docs/ru/intlayer_with_vite+vue.md +157 -1
  183. package/docs/tr/compiler.md +85 -52
  184. package/docs/tr/configuration.md +83 -40
  185. package/docs/tr/intlayer_with_nextjs_16.md +174 -1
  186. package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
  187. package/docs/tr/intlayer_with_react_router_v7.md +224 -1
  188. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
  189. package/docs/tr/intlayer_with_svelte_kit.md +158 -2
  190. package/docs/tr/intlayer_with_tanstack.md +159 -1
  191. package/docs/tr/intlayer_with_vite+preact.md +157 -1
  192. package/docs/tr/intlayer_with_vite+react.md +157 -1
  193. package/docs/tr/intlayer_with_vite+solid.md +157 -1
  194. package/docs/tr/intlayer_with_vite+svelte.md +157 -1
  195. package/docs/tr/intlayer_with_vite+vue.md +157 -1
  196. package/docs/uk/compiler.md +96 -61
  197. package/docs/uk/configuration.md +83 -37
  198. package/docs/uk/intlayer_with_nextjs_16.md +174 -1
  199. package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
  200. package/docs/uk/intlayer_with_react_router_v7.md +224 -1
  201. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
  202. package/docs/uk/intlayer_with_svelte_kit.md +157 -1
  203. package/docs/uk/intlayer_with_tanstack.md +159 -1
  204. package/docs/uk/intlayer_with_vite+preact.md +157 -1
  205. package/docs/uk/intlayer_with_vite+react.md +157 -1
  206. package/docs/uk/intlayer_with_vite+solid.md +157 -1
  207. package/docs/uk/intlayer_with_vite+svelte.md +157 -1
  208. package/docs/uk/intlayer_with_vite+vue.md +157 -1
  209. package/docs/vi/compiler.md +85 -50
  210. package/docs/vi/configuration.md +85 -39
  211. package/docs/vi/intlayer_with_nextjs_16.md +174 -1
  212. package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
  213. package/docs/vi/intlayer_with_react_router_v7.md +224 -1
  214. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  215. package/docs/vi/intlayer_with_svelte_kit.md +158 -2
  216. package/docs/vi/intlayer_with_tanstack.md +159 -1
  217. package/docs/vi/intlayer_with_vite+preact.md +157 -1
  218. package/docs/vi/intlayer_with_vite+react.md +157 -1
  219. package/docs/vi/intlayer_with_vite+solid.md +157 -1
  220. package/docs/vi/intlayer_with_vite+svelte.md +157 -1
  221. package/docs/vi/intlayer_with_vite+vue.md +157 -1
  222. package/docs/zh/compiler.md +84 -49
  223. package/docs/zh/configuration.md +80 -37
  224. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  225. package/docs/zh/intlayer_with_express.md +1 -1
  226. package/docs/zh/intlayer_with_fastify.md +1 -1
  227. package/docs/zh/intlayer_with_hono.md +1 -1
  228. package/docs/zh/intlayer_with_nestjs.md +1 -1
  229. package/docs/zh/intlayer_with_nextjs_16.md +174 -1
  230. package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
  231. package/docs/zh/intlayer_with_react_router_v7.md +227 -4
  232. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
  233. package/docs/zh/intlayer_with_svelte_kit.md +158 -2
  234. package/docs/zh/intlayer_with_tanstack.md +159 -1
  235. package/docs/zh/intlayer_with_vite+preact.md +159 -3
  236. package/docs/zh/intlayer_with_vite+react.md +157 -1
  237. package/docs/zh/intlayer_with_vite+solid.md +161 -5
  238. package/docs/zh/intlayer_with_vite+svelte.md +157 -1
  239. package/docs/zh/intlayer_with_vite+vue.md +158 -2
  240. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-09
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Tanstack Start i18n - Cách dịch ứng dụng Tanstack Start năm 2026
5
5
  description: Tìm hiểu cách thêm quốc tế hóa (i18n) vào ứng dụng Tanstack Start của bạn bằng cách sử dụng Intlayer. Theo dõi hướng dẫn toàn diện này để làm cho ứng dụng của bạn đa ngôn ngữ với định tuyến nhận biết locale.
6
6
  keywords:
@@ -773,6 +773,164 @@ Intlayer sử dụng module augmentation để tận dụng các lợi ích củ
773
773
 
774
774
  ---
775
775
 
776
+ ### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
777
+
778
+ Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
779
+
780
+ Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
781
+
782
+ Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
783
+
784
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
785
+ import { type IntlayerConfig } from "intlayer";
786
+
787
+ const config: IntlayerConfig = {
788
+ // ... Phần còn lại của cấu hình
789
+ compiler: {
790
+ /**
791
+ * Cho biết trình biên dịch có nên được bật hay không.
792
+ */
793
+ enabled: true,
794
+
795
+ /**
796
+ * Xác định đường dẫn các tệp đầu ra
797
+ */
798
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
799
+
800
+ /**
801
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
802
+ */
803
+ saveComponents: false,
804
+
805
+ /**
806
+ * Tiền tố khóa từ điển
807
+ */
808
+ dictionaryKeyPrefix: "",
809
+ },
810
+ };
811
+
812
+ export default config;
813
+ ```
814
+
815
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
816
+ /** @type {import('intlayer').IntlayerConfig} */
817
+ const config = {
818
+ // ... Phần còn lại của cấu hình
819
+ compiler: {
820
+ /**
821
+ * Cho biết trình biên dịch có nên được bật hay không.
822
+ */
823
+ enabled: true,
824
+
825
+ /**
826
+ * Xác định đường dẫn các tệp đầu ra
827
+ */
828
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
829
+
830
+ /**
831
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
832
+ */
833
+ saveComponents: false,
834
+
835
+ /**
836
+ * Tiền tố khóa từ điển
837
+ */
838
+ dictionaryKeyPrefix: "",
839
+ },
840
+ };
841
+
842
+ export default config;
843
+ ```
844
+
845
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
846
+ /** @type {import('intlayer').IntlayerConfig} */
847
+ const config = {
848
+ // ... Phần còn lại của cấu hình
849
+ compiler: {
850
+ /**
851
+ * Cho biết trình biên dịch có nên được bật hay không.
852
+ */
853
+ enabled: true,
854
+
855
+ /**
856
+ * Xác định đường dẫn các tệp đầu ra
857
+ */
858
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
859
+
860
+ /**
861
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
862
+ */
863
+ saveComponents: false,
864
+
865
+ /**
866
+ * Tiền tố khóa từ điển
867
+ */
868
+ dictionaryKeyPrefix: "",
869
+ },
870
+ };
871
+
872
+ module.exports = config;
873
+ ```
874
+
875
+ <Tabs>
876
+ <Tab value='Lệnh trích xuất'>
877
+
878
+ Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
879
+
880
+ ```bash packageManager="npm"
881
+ npx intlayer extract
882
+ ```
883
+
884
+ ```bash packageManager="pnpm"
885
+ pnpm intlayer extract
886
+ ```
887
+
888
+ ```bash packageManager="yarn"
889
+ yarn intlayer extract
890
+ ```
891
+
892
+ ```bash packageManager="bun"
893
+ bunx intlayer extract
894
+ ```
895
+
896
+ </Tab>
897
+ <Tab value='Trình biên dịch Babel'>
898
+
899
+ Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
900
+
901
+ ```ts fileName="vite.config.ts"
902
+ import { defineConfig } from "vite";
903
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
904
+
905
+ export default defineConfig({
906
+ plugins: [
907
+ intlayer(),
908
+ intlayerCompiler(), // Thêm plugin trình biên dịch
909
+ ],
910
+ });
911
+ ```
912
+
913
+ ```bash packageManager="npm"
914
+ npm run build # Hoặc npm run dev
915
+ ```
916
+
917
+ ```bash packageManager="pnpm"
918
+ pnpm run build # Or pnpm run dev
919
+ ```
920
+
921
+ ```bash packageManager="yarn"
922
+ yarn build # Or yarn dev
923
+ ```
924
+
925
+ ```bash packageManager="bun"
926
+ bun run build # Or bun run dev
927
+ ```
928
+
929
+ </Tab>
930
+ </Tabs>
931
+
932
+ ---
933
+
776
934
  ### Cấu hình Git
777
935
 
778
936
  Khuyến nghị bạn nên bỏ qua các file được tạo bởi Intlayer. Điều này giúp bạn tránh việc commit chúng vào kho Git của mình.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Vite + Preact i18n - Cách dịch ứng dụng Preact năm 2026
5
5
  description: Khám phá cách làm cho trang web Vite và Preact của bạn đa ngôn ngữ. Theo dõi tài liệu để quốc tế hóa (i18n) và dịch nó.
6
6
  keywords:
@@ -1364,6 +1364,162 @@ Tiện ích mở rộng này cung cấp:
1364
1364
 
1365
1365
  ---
1366
1366
 
1367
+ ### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
1368
+
1369
+ Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
1370
+
1371
+ Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
1372
+
1373
+ Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
1374
+
1375
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
1376
+ import { type IntlayerConfig } from "intlayer";
1377
+
1378
+ const config: IntlayerConfig = {
1379
+ // ... Phần còn lại của cấu hình
1380
+ compiler: {
1381
+ /**
1382
+ * Cho biết trình biên dịch có nên được bật hay không.
1383
+ */
1384
+ enabled: true,
1385
+
1386
+ /**
1387
+ * Xác định đường dẫn các tệp đầu ra
1388
+ */
1389
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1390
+
1391
+ /**
1392
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1393
+ */
1394
+ saveComponents: false,
1395
+
1396
+ /**
1397
+ * Tiền tố khóa từ điển
1398
+ */
1399
+ dictionaryKeyPrefix: "",
1400
+ },
1401
+ };
1402
+
1403
+ export default config;
1404
+ ```
1405
+
1406
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
1407
+ /** @type {import('intlayer').IntlayerConfig} */
1408
+ const config = {
1409
+ // ... Phần còn lại của cấu hình
1410
+ compiler: {
1411
+ /**
1412
+ * Cho biết trình biên dịch có nên được bật hay không.
1413
+ */
1414
+ enabled: true,
1415
+
1416
+ /**
1417
+ * Xác định đường dẫn các tệp đầu ra
1418
+ */
1419
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1420
+
1421
+ /**
1422
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1423
+ */
1424
+ saveComponents: false,
1425
+
1426
+ /**
1427
+ * Tiền tố khóa từ điển
1428
+ */
1429
+ dictionaryKeyPrefix: "",
1430
+ },
1431
+ };
1432
+
1433
+ export default config;
1434
+ ```
1435
+
1436
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
1437
+ /** @type {import('intlayer').IntlayerConfig} */
1438
+ const config = {
1439
+ // ... Phần còn lại của cấu hình
1440
+ compiler: {
1441
+ /**
1442
+ * Cho biết trình biên dịch có nên được bật hay không.
1443
+ */
1444
+ enabled: true,
1445
+
1446
+ /**
1447
+ * Xác định đường dẫn các tệp đầu ra
1448
+ */
1449
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1450
+
1451
+ /**
1452
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1453
+ */
1454
+ saveComponents: false,
1455
+
1456
+ /**
1457
+ * Tiền tố khóa từ điển
1458
+ */
1459
+ dictionaryKeyPrefix: "",
1460
+ },
1461
+ };
1462
+
1463
+ module.exports = config;
1464
+ ```
1465
+
1466
+ <Tabs>
1467
+ <Tab value='Lệnh trích xuất'>
1468
+
1469
+ Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
1470
+
1471
+ ```bash packageManager="npm"
1472
+ npx intlayer extract
1473
+ ```
1474
+
1475
+ ```bash packageManager="pnpm"
1476
+ pnpm intlayer extract
1477
+ ```
1478
+
1479
+ ```bash packageManager="yarn"
1480
+ yarn intlayer extract
1481
+ ```
1482
+
1483
+ ```bash packageManager="bun"
1484
+ bunx intlayer extract
1485
+ ```
1486
+
1487
+ </Tab>
1488
+ <Tab value='Trình biên dịch Babel'>
1489
+
1490
+ Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
1491
+
1492
+ ```ts fileName="vite.config.ts"
1493
+ import { defineConfig } from "vite";
1494
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
1495
+
1496
+ export default defineConfig({
1497
+ plugins: [
1498
+ intlayer(),
1499
+ intlayerCompiler(), // Thêm plugin trình biên dịch
1500
+ ],
1501
+ });
1502
+ ```
1503
+
1504
+ ```bash packageManager="npm"
1505
+ npm run build # Hoặc npm run dev
1506
+ ```
1507
+
1508
+ ```bash packageManager="pnpm"
1509
+ pnpm run build # Or pnpm run dev
1510
+ ```
1511
+
1512
+ ```bash packageManager="yarn"
1513
+ yarn build # Or yarn dev
1514
+ ```
1515
+
1516
+ ```bash packageManager="bun"
1517
+ bun run build # Or bun run dev
1518
+ ```
1519
+
1520
+ </Tab>
1521
+ </Tabs>
1522
+
1367
1523
  ### Đi xa hơn
1368
1524
 
1369
1525
  Để đi xa hơn, bạn có thể triển khai [trình chỉnh sửa trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_visual_editor.md) hoặc bên ngoài hóa nội dung của bạn bằng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-03-07
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Vite + React i18n - Cách dịch ứng dụng React năm 2026
5
5
  description: Tìm hiểu cách thêm quốc tế hóa (i18n) vào ứng dụng Vite và React của bạn bằng cách sử dụng Intlayer. Theo dõi hướng dẫn này để làm cho ứng dụng của bạn đa ngôn ngữ.
6
6
  keywords:
@@ -1413,6 +1413,162 @@ Tiện ích mở rộng này cung cấp:
1413
1413
 
1414
1414
  ---
1415
1415
 
1416
+ ### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
1417
+
1418
+ Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
1419
+
1420
+ Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
1421
+
1422
+ Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
1423
+
1424
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
1425
+ import { type IntlayerConfig } from "intlayer";
1426
+
1427
+ const config: IntlayerConfig = {
1428
+ // ... Phần còn lại của cấu hình
1429
+ compiler: {
1430
+ /**
1431
+ * Cho biết trình biên dịch có nên được bật hay không.
1432
+ */
1433
+ enabled: true,
1434
+
1435
+ /**
1436
+ * Xác định đường dẫn các tệp đầu ra
1437
+ */
1438
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1439
+
1440
+ /**
1441
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1442
+ */
1443
+ saveComponents: false,
1444
+
1445
+ /**
1446
+ * Tiền tố khóa từ điển
1447
+ */
1448
+ dictionaryKeyPrefix: "",
1449
+ },
1450
+ };
1451
+
1452
+ export default config;
1453
+ ```
1454
+
1455
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
1456
+ /** @type {import('intlayer').IntlayerConfig} */
1457
+ const config = {
1458
+ // ... Phần còn lại của cấu hình
1459
+ compiler: {
1460
+ /**
1461
+ * Cho biết trình biên dịch có nên được bật hay không.
1462
+ */
1463
+ enabled: true,
1464
+
1465
+ /**
1466
+ * Xác định đường dẫn các tệp đầu ra
1467
+ */
1468
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1469
+
1470
+ /**
1471
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1472
+ */
1473
+ saveComponents: false,
1474
+
1475
+ /**
1476
+ * Tiền tố khóa từ điển
1477
+ */
1478
+ dictionaryKeyPrefix: "",
1479
+ },
1480
+ };
1481
+
1482
+ export default config;
1483
+ ```
1484
+
1485
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
1486
+ /** @type {import('intlayer').IntlayerConfig} */
1487
+ const config = {
1488
+ // ... Phần còn lại của cấu hình
1489
+ compiler: {
1490
+ /**
1491
+ * Cho biết trình biên dịch có nên được bật hay không.
1492
+ */
1493
+ enabled: true,
1494
+
1495
+ /**
1496
+ * Xác định đường dẫn các tệp đầu ra
1497
+ */
1498
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1499
+
1500
+ /**
1501
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
1502
+ */
1503
+ saveComponents: false,
1504
+
1505
+ /**
1506
+ * Tiền tố khóa từ điển
1507
+ */
1508
+ dictionaryKeyPrefix: "",
1509
+ },
1510
+ };
1511
+
1512
+ module.exports = config;
1513
+ ```
1514
+
1515
+ <Tabs>
1516
+ <Tab value='Lệnh trích xuất'>
1517
+
1518
+ Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
1519
+
1520
+ ```bash packageManager="npm"
1521
+ npx intlayer extract
1522
+ ```
1523
+
1524
+ ```bash packageManager="pnpm"
1525
+ pnpm intlayer extract
1526
+ ```
1527
+
1528
+ ```bash packageManager="yarn"
1529
+ yarn intlayer extract
1530
+ ```
1531
+
1532
+ ```bash packageManager="bun"
1533
+ bunx intlayer extract
1534
+ ```
1535
+
1536
+ </Tab>
1537
+ <Tab value='Trình biên dịch Babel'>
1538
+
1539
+ Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
1540
+
1541
+ ```ts fileName="vite.config.ts"
1542
+ import { defineConfig } from "vite";
1543
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
1544
+
1545
+ export default defineConfig({
1546
+ plugins: [
1547
+ intlayer(),
1548
+ intlayerCompiler(), // Thêm plugin trình biên dịch
1549
+ ],
1550
+ });
1551
+ ```
1552
+
1553
+ ```bash packageManager="npm"
1554
+ npm run build # Hoặc npm run dev
1555
+ ```
1556
+
1557
+ ```bash packageManager="pnpm"
1558
+ pnpm run build # Or pnpm run dev
1559
+ ```
1560
+
1561
+ ```bash packageManager="yarn"
1562
+ yarn build # Or yarn dev
1563
+ ```
1564
+
1565
+ ```bash packageManager="bun"
1566
+ bun run build # Or bun run dev
1567
+ ```
1568
+
1569
+ </Tab>
1570
+ </Tabs>
1571
+
1416
1572
  ### Tiến xa hơn
1417
1573
 
1418
1574
  Để tiến xa hơn, bạn có thể triển khai [trình soạn thảo trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) hoặc tách nội dung của bạn ra ngoài bằng cách sử dụng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Vite + Solid i18n - Cách dịch ứng dụng Solid năm 2026
5
5
  description: Khám phá cách làm cho trang web Vite và Solid của bạn đa ngôn ngữ. Theo dõi tài liệu để quốc tế hóa (i18n) và dịch nó.
6
6
  keywords:
@@ -576,6 +576,162 @@ Tiện ích mở rộng này cung cấp:
576
576
 
577
577
  ---
578
578
 
579
+ ### (Tùy chọn) Bước 1 : Trích xuất nội dung các thành phần của bạn
580
+
581
+ Nếu bạn có một cơ sở mã hiện có, việc chuyển đổi hàng nghìn tệp có thể tốn nhiều thời gian.
582
+
583
+ Để đơn giản hóa quy trình này, Intlayer đề xuất một [trình biên dịch](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/compiler.md) / [trình trích xuất](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/cli/extract.md) để chuyển đổi các thành phần của bạn và trích xuất nội dung.
584
+
585
+ Để thiết lập, bạn có thể thêm phần `compiler` vào tệp `intlayer.config.ts` của mình:
586
+
587
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
588
+ import { type IntlayerConfig } from "intlayer";
589
+
590
+ const config: IntlayerConfig = {
591
+ // ... Phần còn lại của cấu hình
592
+ compiler: {
593
+ /**
594
+ * Cho biết trình biên dịch có nên được bật hay không.
595
+ */
596
+ enabled: true,
597
+
598
+ /**
599
+ * Xác định đường dẫn các tệp đầu ra
600
+ */
601
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
602
+
603
+ /**
604
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
605
+ */
606
+ saveComponents: false,
607
+
608
+ /**
609
+ * Tiền tố khóa từ điển
610
+ */
611
+ dictionaryKeyPrefix: "",
612
+ },
613
+ };
614
+
615
+ export default config;
616
+ ```
617
+
618
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
619
+ /** @type {import('intlayer').IntlayerConfig} */
620
+ const config = {
621
+ // ... Phần còn lại của cấu hình
622
+ compiler: {
623
+ /**
624
+ * Cho biết trình biên dịch có nên được bật hay không.
625
+ */
626
+ enabled: true,
627
+
628
+ /**
629
+ * Xác định đường dẫn các tệp đầu ra
630
+ */
631
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
632
+
633
+ /**
634
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
635
+ */
636
+ saveComponents: false,
637
+
638
+ /**
639
+ * Tiền tố khóa từ điển
640
+ */
641
+ dictionaryKeyPrefix: "",
642
+ },
643
+ };
644
+
645
+ export default config;
646
+ ```
647
+
648
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
649
+ /** @type {import('intlayer').IntlayerConfig} */
650
+ const config = {
651
+ // ... Phần còn lại của cấu hình
652
+ compiler: {
653
+ /**
654
+ * Cho biết trình biên dịch có nên được bật hay không.
655
+ */
656
+ enabled: true,
657
+
658
+ /**
659
+ * Xác định đường dẫn các tệp đầu ra
660
+ */
661
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
662
+
663
+ /**
664
+ * Cho biết các thành phần có nên được lưu sau khi chuyển đổi hay không. Bằng cách đó, trình biên dịch có thể được chạy chỉ một lần để chuyển đổi ứng dụng, sau đó có thể được gỡ bỏ.
665
+ */
666
+ saveComponents: false,
667
+
668
+ /**
669
+ * Tiền tố khóa từ điển
670
+ */
671
+ dictionaryKeyPrefix: "",
672
+ },
673
+ };
674
+
675
+ module.exports = config;
676
+ ```
677
+
678
+ <Tabs>
679
+ <Tab value='Lệnh trích xuất'>
680
+
681
+ Chạy trình trích xuất để chuyển đổi các thành phần và trích xuất nội dung
682
+
683
+ ```bash packageManager="npm"
684
+ npx intlayer extract
685
+ ```
686
+
687
+ ```bash packageManager="pnpm"
688
+ pnpm intlayer extract
689
+ ```
690
+
691
+ ```bash packageManager="yarn"
692
+ yarn intlayer extract
693
+ ```
694
+
695
+ ```bash packageManager="bun"
696
+ bunx intlayer extract
697
+ ```
698
+
699
+ </Tab>
700
+ <Tab value='Trình biên dịch Babel'>
701
+
702
+ Cập nhật `vite.config.ts` của bạn để bao gồm plugin `intlayerCompiler`:
703
+
704
+ ```ts fileName="vite.config.ts"
705
+ import { defineConfig } from "vite";
706
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
707
+
708
+ export default defineConfig({
709
+ plugins: [
710
+ intlayer(),
711
+ intlayerCompiler(), // Thêm plugin trình biên dịch
712
+ ],
713
+ });
714
+ ```
715
+
716
+ ```bash packageManager="npm"
717
+ npm run build # Hoặc npm run dev
718
+ ```
719
+
720
+ ```bash packageManager="pnpm"
721
+ pnpm run build # Or pnpm run dev
722
+ ```
723
+
724
+ ```bash packageManager="yarn"
725
+ yarn build # Or yarn dev
726
+ ```
727
+
728
+ ```bash packageManager="bun"
729
+ bun run build # Or bun run dev
730
+ ```
731
+
732
+ </Tab>
733
+ </Tabs>
734
+
579
735
  ### Tiến xa hơn
580
736
 
581
737
  Để tiến xa hơn, bạn có thể triển khai [trình soạn thảo trực quan](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_visual_editor.md) hoặc tách nội dung của bạn ra bên ngoài bằng cách sử dụng [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/vi/intlayer_CMS.md).