@intlayer/docs 8.9.7 → 8.10.0-canary.0

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 (851) hide show
  1. package/README.md +14 -0
  2. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  3. package/blog/en/vue-i18n_vs_intlayer.md +0 -2
  4. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  5. package/blog/id/vue-i18n_vs_intlayer.md +0 -2
  6. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  7. package/blog/pl/vue-i18n_vs_intlayer.md +0 -2
  8. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +0 -2
  9. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  10. package/blog/tr/vue-i18n_vs_intlayer.md +0 -2
  11. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  12. package/blog/uk/vue-i18n_vs_intlayer.md +0 -2
  13. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +0 -2
  14. package/blog/vi/vue-i18n_vs_intlayer.md +0 -2
  15. package/dist/cjs/blog.cjs.map +1 -1
  16. package/dist/cjs/common.cjs.map +1 -1
  17. package/dist/cjs/doc.cjs.map +1 -1
  18. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  19. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  20. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  21. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  22. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  23. package/dist/cjs/legal.cjs.map +1 -1
  24. package/dist/esm/blog.mjs.map +1 -1
  25. package/dist/esm/common.mjs.map +1 -1
  26. package/dist/esm/doc.mjs.map +1 -1
  27. package/dist/esm/frequentQuestions.mjs.map +1 -1
  28. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  29. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  30. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  31. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  32. package/dist/esm/legal.mjs.map +1 -1
  33. package/dist/types/blog.d.ts.map +1 -1
  34. package/dist/types/common.d.ts.map +1 -1
  35. package/dist/types/doc.d.ts.map +1 -1
  36. package/dist/types/frequentQuestions.d.ts.map +1 -1
  37. package/dist/types/legal.d.ts.map +1 -1
  38. package/docs/ar/benchmark/nextjs.md +20 -11
  39. package/docs/ar/benchmark/solid.md +14 -5
  40. package/docs/ar/benchmark/svelte.md +14 -5
  41. package/docs/ar/benchmark/tanstack.md +16 -7
  42. package/docs/ar/benchmark/vue.md +14 -5
  43. package/docs/ar/configuration.md +6 -6
  44. package/docs/ar/custom_domains.md +11 -11
  45. package/docs/ar/dictionary/content_file.md +41 -0
  46. package/docs/ar/interest_of_intlayer.md +0 -2
  47. package/docs/ar/intlayer_with_analog.md +1 -1
  48. package/docs/ar/intlayer_with_angular.md +1 -1
  49. package/docs/ar/intlayer_with_astro.md +1 -1
  50. package/docs/ar/intlayer_with_astro_lit.md +2 -2
  51. package/docs/ar/intlayer_with_astro_preact.md +3 -3
  52. package/docs/ar/intlayer_with_astro_react.md +2 -2
  53. package/docs/ar/intlayer_with_astro_solid.md +3 -3
  54. package/docs/ar/intlayer_with_astro_svelte.md +1 -1
  55. package/docs/ar/intlayer_with_astro_vanilla.md +1 -1
  56. package/docs/ar/intlayer_with_astro_vue.md +1 -1
  57. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  58. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  59. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  60. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  61. package/docs/ar/intlayer_with_nuxt.md +1 -1
  62. package/docs/ar/intlayer_with_react_native+expo.md +2 -2
  63. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  64. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  65. package/docs/ar/intlayer_with_storybook.md +7 -7
  66. package/docs/ar/intlayer_with_svelte_kit.md +1 -1
  67. package/docs/ar/intlayer_with_tanstack+solid.md +1 -1
  68. package/docs/ar/intlayer_with_tanstack.md +1 -1
  69. package/docs/ar/intlayer_with_vanilla.md +2 -2
  70. package/docs/ar/intlayer_with_vite+lit.md +1 -1
  71. package/docs/ar/intlayer_with_vite+preact.md +1 -1
  72. package/docs/ar/intlayer_with_vite+react.md +1 -1
  73. package/docs/ar/intlayer_with_vite+react_compiler.md +1 -1
  74. package/docs/ar/intlayer_with_vite+svelte.md +2 -2
  75. package/docs/ar/intlayer_with_vite+vanilla.md +4 -4
  76. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  77. package/docs/ar/readme.md +13 -0
  78. package/docs/bn/cli/init.md +1 -1
  79. package/docs/bn/configuration.md +6 -6
  80. package/docs/bn/custom_domains.md +11 -11
  81. package/docs/bn/interest_of_intlayer.md +0 -2
  82. package/docs/bn/intlayer_with_storybook.md +7 -7
  83. package/docs/bn/intlayer_with_vanilla.md +2 -2
  84. package/docs/bn/intlayer_with_vite+lit.md +3 -3
  85. package/docs/bn/intlayer_with_vite+vanilla.md +5 -5
  86. package/docs/cs/cli/init.md +1 -1
  87. package/docs/cs/configuration.md +6 -6
  88. package/docs/cs/custom_domains.md +11 -11
  89. package/docs/cs/interest_of_intlayer.md +0 -2
  90. package/docs/cs/intlayer_with_storybook.md +7 -7
  91. package/docs/cs/intlayer_with_vanilla.md +2 -2
  92. package/docs/cs/intlayer_with_vite+lit.md +3 -3
  93. package/docs/cs/intlayer_with_vite+vanilla.md +5 -5
  94. package/docs/de/benchmark/nextjs.md +15 -6
  95. package/docs/de/benchmark/solid.md +14 -5
  96. package/docs/de/benchmark/svelte.md +14 -5
  97. package/docs/de/benchmark/tanstack.md +15 -6
  98. package/docs/de/benchmark/vue.md +14 -5
  99. package/docs/de/configuration.md +6 -6
  100. package/docs/de/custom_domains.md +11 -11
  101. package/docs/de/dictionary/content_file.md +41 -0
  102. package/docs/de/dictionary/markdown.md +36 -1
  103. package/docs/de/interest_of_intlayer.md +0 -2
  104. package/docs/de/intlayer_with_analog.md +1 -1
  105. package/docs/de/intlayer_with_angular.md +1 -1
  106. package/docs/de/intlayer_with_astro.md +1 -1
  107. package/docs/de/intlayer_with_astro_lit.md +2 -2
  108. package/docs/de/intlayer_with_astro_preact.md +3 -3
  109. package/docs/de/intlayer_with_astro_react.md +2 -2
  110. package/docs/de/intlayer_with_astro_solid.md +3 -3
  111. package/docs/de/intlayer_with_astro_svelte.md +1 -1
  112. package/docs/de/intlayer_with_astro_vanilla.md +1 -1
  113. package/docs/de/intlayer_with_astro_vue.md +1 -1
  114. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  115. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  116. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  117. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/de/intlayer_with_nuxt.md +1 -1
  119. package/docs/de/intlayer_with_react_native+expo.md +2 -2
  120. package/docs/de/intlayer_with_react_router_v7.md +1 -1
  121. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
  122. package/docs/de/intlayer_with_storybook.md +7 -7
  123. package/docs/de/intlayer_with_svelte_kit.md +1 -1
  124. package/docs/de/intlayer_with_tanstack+solid.md +1 -1
  125. package/docs/de/intlayer_with_tanstack.md +1 -1
  126. package/docs/de/intlayer_with_vanilla.md +2 -2
  127. package/docs/de/intlayer_with_vite+lit.md +2 -2
  128. package/docs/de/intlayer_with_vite+preact.md +2 -2
  129. package/docs/de/intlayer_with_vite+react.md +2 -2
  130. package/docs/de/intlayer_with_vite+react_compiler.md +2 -2
  131. package/docs/de/intlayer_with_vite+solid.md +1 -1
  132. package/docs/de/intlayer_with_vite+svelte.md +3 -3
  133. package/docs/de/intlayer_with_vite+vanilla.md +5 -5
  134. package/docs/de/intlayer_with_vite+vue.md +2 -2
  135. package/docs/de/readme.md +13 -0
  136. package/docs/en/agent_skills.md +2 -2
  137. package/docs/en/benchmark/___nextjs.md +1 -1
  138. package/docs/en/benchmark/___tanstack.md +2 -2
  139. package/docs/en/benchmark/nextjs.md +11 -2
  140. package/docs/en/benchmark/solid.md +10 -1
  141. package/docs/en/benchmark/svelte.md +10 -1
  142. package/docs/en/benchmark/tanstack.md +10 -1
  143. package/docs/en/benchmark/vue.md +10 -1
  144. package/docs/en/configuration.md +7 -7
  145. package/docs/en/custom_domains.md +11 -11
  146. package/docs/en/dictionary/content_file.md +41 -0
  147. package/docs/en/dictionary/markdown.md +38 -1
  148. package/docs/en/interest_of_intlayer.md +0 -2
  149. package/docs/en/intlayer_with_analog.md +1 -1
  150. package/docs/en/intlayer_with_angular.md +1 -1
  151. package/docs/en/intlayer_with_astro.md +1 -1
  152. package/docs/en/intlayer_with_astro_lit.md +4 -4
  153. package/docs/en/intlayer_with_astro_preact.md +3 -3
  154. package/docs/en/intlayer_with_astro_react.md +2 -2
  155. package/docs/en/intlayer_with_astro_solid.md +3 -3
  156. package/docs/en/intlayer_with_astro_svelte.md +1 -1
  157. package/docs/en/intlayer_with_astro_vanilla.md +1 -1
  158. package/docs/en/intlayer_with_astro_vue.md +1 -1
  159. package/docs/en/intlayer_with_nextjs_14.md +1 -1
  160. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  161. package/docs/en/intlayer_with_nextjs_page_router.md +2 -2
  162. package/docs/en/intlayer_with_nuxt.md +1 -1
  163. package/docs/en/intlayer_with_react_native+expo.md +1 -1
  164. package/docs/en/intlayer_with_react_router_v7.md +1 -1
  165. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +1 -1
  166. package/docs/en/intlayer_with_storybook.md +7 -7
  167. package/docs/en/intlayer_with_svelte_kit.md +1 -1
  168. package/docs/en/intlayer_with_tanstack+solid.md +1 -1
  169. package/docs/en/intlayer_with_tanstack.md +1 -1
  170. package/docs/en/intlayer_with_vanilla.md +2 -2
  171. package/docs/en/intlayer_with_vite+lit.md +2 -2
  172. package/docs/en/intlayer_with_vite+preact.md +1 -1
  173. package/docs/en/intlayer_with_vite+react.md +1 -1
  174. package/docs/en/intlayer_with_vite+react_compiler.md +1 -1
  175. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  176. package/docs/en/intlayer_with_vite+vanilla.md +4 -4
  177. package/docs/en/intlayer_with_vite+vue.md +1 -1
  178. package/docs/en/readme.md +13 -0
  179. package/docs/en-GB/agent_skills.md +2 -2
  180. package/docs/en-GB/benchmark/nextjs.md +16 -7
  181. package/docs/en-GB/benchmark/solid.md +14 -5
  182. package/docs/en-GB/benchmark/svelte.md +14 -5
  183. package/docs/en-GB/benchmark/tanstack.md +16 -7
  184. package/docs/en-GB/benchmark/vue.md +14 -5
  185. package/docs/en-GB/cli/init.md +1 -1
  186. package/docs/en-GB/configuration.md +7 -7
  187. package/docs/en-GB/custom_domains.md +11 -11
  188. package/docs/en-GB/dictionary/content_file.md +41 -0
  189. package/docs/en-GB/dictionary/markdown.md +37 -1
  190. package/docs/en-GB/interest_of_intlayer.md +0 -2
  191. package/docs/en-GB/intlayer_with_analog.md +1 -1
  192. package/docs/en-GB/intlayer_with_angular.md +1 -1
  193. package/docs/en-GB/intlayer_with_astro.md +1 -1
  194. package/docs/en-GB/intlayer_with_astro_lit.md +2 -2
  195. package/docs/en-GB/intlayer_with_astro_preact.md +3 -3
  196. package/docs/en-GB/intlayer_with_astro_react.md +2 -2
  197. package/docs/en-GB/intlayer_with_astro_solid.md +3 -3
  198. package/docs/en-GB/intlayer_with_astro_svelte.md +1 -1
  199. package/docs/en-GB/intlayer_with_astro_vanilla.md +1 -1
  200. package/docs/en-GB/intlayer_with_astro_vue.md +1 -1
  201. package/docs/en-GB/intlayer_with_nextjs_14.md +2 -2
  202. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  203. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  204. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  205. package/docs/en-GB/intlayer_with_nuxt.md +1 -1
  206. package/docs/en-GB/intlayer_with_react_native+expo.md +2 -2
  207. package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
  208. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  209. package/docs/en-GB/intlayer_with_storybook.md +7 -7
  210. package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
  211. package/docs/en-GB/intlayer_with_tanstack+solid.md +1 -1
  212. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  213. package/docs/en-GB/intlayer_with_vanilla.md +2 -2
  214. package/docs/en-GB/intlayer_with_vite+lit.md +2 -2
  215. package/docs/en-GB/intlayer_with_vite+preact.md +1 -1
  216. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  217. package/docs/en-GB/intlayer_with_vite+react_compiler.md +1 -1
  218. package/docs/en-GB/intlayer_with_vite+svelte.md +2 -2
  219. package/docs/en-GB/intlayer_with_vite+vanilla.md +4 -4
  220. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  221. package/docs/en-GB/readme.md +13 -0
  222. package/docs/es/agent_skills.md +2 -2
  223. package/docs/es/benchmark/nextjs.md +15 -6
  224. package/docs/es/benchmark/solid.md +14 -5
  225. package/docs/es/benchmark/svelte.md +14 -5
  226. package/docs/es/benchmark/tanstack.md +15 -6
  227. package/docs/es/benchmark/vue.md +14 -5
  228. package/docs/es/configuration.md +1 -1
  229. package/docs/es/custom_domains.md +11 -11
  230. package/docs/es/dictionary/content_file.md +41 -0
  231. package/docs/es/dictionary/markdown.md +36 -1
  232. package/docs/es/interest_of_intlayer.md +0 -2
  233. package/docs/es/intlayer_with_analog.md +1 -1
  234. package/docs/es/intlayer_with_angular.md +1 -1
  235. package/docs/es/intlayer_with_astro.md +1 -1
  236. package/docs/es/intlayer_with_astro_lit.md +2 -2
  237. package/docs/es/intlayer_with_astro_preact.md +3 -3
  238. package/docs/es/intlayer_with_astro_react.md +2 -2
  239. package/docs/es/intlayer_with_astro_solid.md +3 -3
  240. package/docs/es/intlayer_with_astro_svelte.md +1 -1
  241. package/docs/es/intlayer_with_astro_vanilla.md +1 -1
  242. package/docs/es/intlayer_with_astro_vue.md +1 -1
  243. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  244. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  245. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  246. package/docs/es/intlayer_with_nextjs_page_router.md +2 -2
  247. package/docs/es/intlayer_with_nuxt.md +1 -1
  248. package/docs/es/intlayer_with_react_native+expo.md +2 -2
  249. package/docs/es/intlayer_with_react_router_v7.md +1 -1
  250. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +1 -1
  251. package/docs/es/intlayer_with_storybook.md +5 -5
  252. package/docs/es/intlayer_with_svelte_kit.md +1 -1
  253. package/docs/es/intlayer_with_tanstack+solid.md +1 -1
  254. package/docs/es/intlayer_with_tanstack.md +1 -1
  255. package/docs/es/intlayer_with_vanilla.md +2 -2
  256. package/docs/es/intlayer_with_vite+lit.md +2 -2
  257. package/docs/es/intlayer_with_vite+preact.md +2 -2
  258. package/docs/es/intlayer_with_vite+react.md +2 -2
  259. package/docs/es/intlayer_with_vite+react_compiler.md +2 -2
  260. package/docs/es/intlayer_with_vite+solid.md +1 -1
  261. package/docs/es/intlayer_with_vite+svelte.md +3 -3
  262. package/docs/es/intlayer_with_vite+vanilla.md +4 -4
  263. package/docs/es/intlayer_with_vite+vue.md +2 -2
  264. package/docs/es/readme.md +13 -0
  265. package/docs/fr/agent_skills.md +2 -2
  266. package/docs/fr/benchmark/nextjs.md +20 -11
  267. package/docs/fr/benchmark/solid.md +14 -5
  268. package/docs/fr/benchmark/svelte.md +14 -5
  269. package/docs/fr/benchmark/tanstack.md +16 -7
  270. package/docs/fr/benchmark/vue.md +14 -5
  271. package/docs/fr/configuration.md +6 -6
  272. package/docs/fr/custom_domains.md +11 -11
  273. package/docs/fr/dictionary/content_file.md +41 -0
  274. package/docs/fr/dictionary/markdown.md +36 -1
  275. package/docs/fr/interest_of_intlayer.md +0 -2
  276. package/docs/fr/intlayer_with_analog.md +1 -1
  277. package/docs/fr/intlayer_with_angular.md +1 -1
  278. package/docs/fr/intlayer_with_astro.md +1 -1
  279. package/docs/fr/intlayer_with_astro_lit.md +4 -4
  280. package/docs/fr/intlayer_with_astro_preact.md +3 -3
  281. package/docs/fr/intlayer_with_astro_react.md +2 -2
  282. package/docs/fr/intlayer_with_astro_solid.md +3 -3
  283. package/docs/fr/intlayer_with_astro_svelte.md +1 -1
  284. package/docs/fr/intlayer_with_astro_vanilla.md +1 -1
  285. package/docs/fr/intlayer_with_astro_vue.md +1 -1
  286. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  287. package/docs/fr/intlayer_with_nextjs_15.md +2 -2
  288. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  289. package/docs/fr/intlayer_with_nextjs_page_router.md +2 -2
  290. package/docs/fr/intlayer_with_nuxt.md +1 -1
  291. package/docs/fr/intlayer_with_react_native+expo.md +2 -2
  292. package/docs/fr/intlayer_with_react_router_v7.md +1 -1
  293. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  294. package/docs/fr/intlayer_with_storybook.md +7 -7
  295. package/docs/fr/intlayer_with_svelte_kit.md +1 -1
  296. package/docs/fr/intlayer_with_tanstack+solid.md +1 -1
  297. package/docs/fr/intlayer_with_tanstack.md +1 -1
  298. package/docs/fr/intlayer_with_vanilla.md +2 -2
  299. package/docs/fr/intlayer_with_vite+lit.md +3 -3
  300. package/docs/fr/intlayer_with_vite+preact.md +2 -2
  301. package/docs/fr/intlayer_with_vite+react.md +2 -2
  302. package/docs/fr/intlayer_with_vite+react_compiler.md +2 -2
  303. package/docs/fr/intlayer_with_vite+solid.md +1 -1
  304. package/docs/fr/intlayer_with_vite+svelte.md +3 -3
  305. package/docs/fr/intlayer_with_vite+vanilla.md +5 -5
  306. package/docs/fr/intlayer_with_vite+vue.md +2 -2
  307. package/docs/fr/readme.md +15 -0
  308. package/docs/hi/benchmark/nextjs.md +20 -11
  309. package/docs/hi/benchmark/solid.md +14 -5
  310. package/docs/hi/benchmark/svelte.md +14 -5
  311. package/docs/hi/benchmark/tanstack.md +16 -7
  312. package/docs/hi/benchmark/vue.md +14 -5
  313. package/docs/hi/cli/init.md +1 -1
  314. package/docs/hi/configuration.md +6 -6
  315. package/docs/hi/custom_domains.md +11 -11
  316. package/docs/hi/dictionary/content_file.md +41 -0
  317. package/docs/hi/dictionary/markdown.md +36 -1
  318. package/docs/hi/interest_of_intlayer.md +0 -2
  319. package/docs/hi/intlayer_with_analog.md +1 -1
  320. package/docs/hi/intlayer_with_angular.md +1 -1
  321. package/docs/hi/intlayer_with_astro.md +1 -1
  322. package/docs/hi/intlayer_with_astro_lit.md +2 -2
  323. package/docs/hi/intlayer_with_astro_preact.md +3 -3
  324. package/docs/hi/intlayer_with_astro_react.md +2 -2
  325. package/docs/hi/intlayer_with_astro_solid.md +3 -3
  326. package/docs/hi/intlayer_with_astro_svelte.md +1 -1
  327. package/docs/hi/intlayer_with_astro_vanilla.md +1 -1
  328. package/docs/hi/intlayer_with_astro_vue.md +1 -1
  329. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  330. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  331. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  332. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  333. package/docs/hi/intlayer_with_nuxt.md +1 -1
  334. package/docs/hi/intlayer_with_react_native+expo.md +2 -2
  335. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  336. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  337. package/docs/hi/intlayer_with_storybook.md +7 -7
  338. package/docs/hi/intlayer_with_svelte_kit.md +1 -1
  339. package/docs/hi/intlayer_with_tanstack+solid.md +1 -1
  340. package/docs/hi/intlayer_with_tanstack.md +1 -1
  341. package/docs/hi/intlayer_with_vanilla.md +2 -2
  342. package/docs/hi/intlayer_with_vite+lit.md +3 -3
  343. package/docs/hi/intlayer_with_vite+preact.md +2 -2
  344. package/docs/hi/intlayer_with_vite+react.md +2 -2
  345. package/docs/hi/intlayer_with_vite+react_compiler.md +2 -2
  346. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  347. package/docs/hi/intlayer_with_vite+svelte.md +3 -3
  348. package/docs/hi/intlayer_with_vite+vanilla.md +5 -5
  349. package/docs/hi/intlayer_with_vite+vue.md +2 -2
  350. package/docs/hi/readme.md +14 -1
  351. package/docs/id/agent_skills.md +2 -2
  352. package/docs/id/benchmark/nextjs.md +20 -11
  353. package/docs/id/benchmark/solid.md +14 -5
  354. package/docs/id/benchmark/svelte.md +14 -5
  355. package/docs/id/benchmark/tanstack.md +16 -7
  356. package/docs/id/benchmark/vue.md +14 -5
  357. package/docs/id/cli/init.md +1 -1
  358. package/docs/id/configuration.md +6 -6
  359. package/docs/id/custom_domains.md +11 -11
  360. package/docs/id/dictionary/content_file.md +41 -0
  361. package/docs/id/dictionary/markdown.md +36 -1
  362. package/docs/id/interest_of_intlayer.md +0 -2
  363. package/docs/id/intlayer_with_analog.md +1 -1
  364. package/docs/id/intlayer_with_angular.md +1 -1
  365. package/docs/id/intlayer_with_astro.md +1 -1
  366. package/docs/id/intlayer_with_astro_lit.md +2 -2
  367. package/docs/id/intlayer_with_astro_preact.md +3 -3
  368. package/docs/id/intlayer_with_astro_react.md +2 -2
  369. package/docs/id/intlayer_with_astro_solid.md +3 -3
  370. package/docs/id/intlayer_with_astro_svelte.md +1 -1
  371. package/docs/id/intlayer_with_astro_vanilla.md +1 -1
  372. package/docs/id/intlayer_with_astro_vue.md +1 -1
  373. package/docs/id/intlayer_with_nextjs_14.md +1 -1
  374. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  375. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  376. package/docs/id/intlayer_with_nextjs_page_router.md +2 -2
  377. package/docs/id/intlayer_with_nuxt.md +1 -1
  378. package/docs/id/intlayer_with_react_native+expo.md +1 -1
  379. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  380. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +1 -1
  381. package/docs/id/intlayer_with_storybook.md +7 -7
  382. package/docs/id/intlayer_with_svelte_kit.md +1 -1
  383. package/docs/id/intlayer_with_tanstack+solid.md +1 -1
  384. package/docs/id/intlayer_with_tanstack.md +1 -1
  385. package/docs/id/intlayer_with_vanilla.md +2 -2
  386. package/docs/id/intlayer_with_vite+lit.md +2 -2
  387. package/docs/id/intlayer_with_vite+preact.md +1 -1
  388. package/docs/id/intlayer_with_vite+react.md +1 -1
  389. package/docs/id/intlayer_with_vite+react_compiler.md +1 -1
  390. package/docs/id/intlayer_with_vite+svelte.md +2 -2
  391. package/docs/id/intlayer_with_vite+vanilla.md +4 -4
  392. package/docs/id/intlayer_with_vite+vue.md +1 -1
  393. package/docs/id/readme.md +13 -0
  394. package/docs/it/benchmark/nextjs.md +18 -9
  395. package/docs/it/benchmark/solid.md +14 -5
  396. package/docs/it/benchmark/svelte.md +14 -5
  397. package/docs/it/benchmark/tanstack.md +16 -7
  398. package/docs/it/benchmark/vue.md +14 -5
  399. package/docs/it/configuration.md +6 -6
  400. package/docs/it/custom_domains.md +11 -11
  401. package/docs/it/dictionary/content_file.md +41 -0
  402. package/docs/it/dictionary/markdown.md +36 -1
  403. package/docs/it/interest_of_intlayer.md +0 -2
  404. package/docs/it/intlayer_with_analog.md +1 -1
  405. package/docs/it/intlayer_with_angular.md +1 -1
  406. package/docs/it/intlayer_with_astro.md +1 -1
  407. package/docs/it/intlayer_with_astro_lit.md +2 -2
  408. package/docs/it/intlayer_with_astro_preact.md +3 -3
  409. package/docs/it/intlayer_with_astro_react.md +2 -2
  410. package/docs/it/intlayer_with_astro_solid.md +3 -3
  411. package/docs/it/intlayer_with_astro_svelte.md +1 -1
  412. package/docs/it/intlayer_with_astro_vanilla.md +1 -1
  413. package/docs/it/intlayer_with_astro_vue.md +1 -1
  414. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  415. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  416. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  417. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  418. package/docs/it/intlayer_with_nuxt.md +1 -1
  419. package/docs/it/intlayer_with_react_native+expo.md +2 -2
  420. package/docs/it/intlayer_with_react_router_v7.md +1 -1
  421. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +1 -1
  422. package/docs/it/intlayer_with_storybook.md +7 -7
  423. package/docs/it/intlayer_with_svelte_kit.md +1 -1
  424. package/docs/it/intlayer_with_tanstack+solid.md +1 -1
  425. package/docs/it/intlayer_with_tanstack.md +1 -1
  426. package/docs/it/intlayer_with_vanilla.md +2 -2
  427. package/docs/it/intlayer_with_vite+lit.md +2 -2
  428. package/docs/it/intlayer_with_vite+preact.md +2 -2
  429. package/docs/it/intlayer_with_vite+react.md +2 -2
  430. package/docs/it/intlayer_with_vite+react_compiler.md +2 -2
  431. package/docs/it/intlayer_with_vite+solid.md +1 -1
  432. package/docs/it/intlayer_with_vite+svelte.md +3 -3
  433. package/docs/it/intlayer_with_vite+vanilla.md +5 -5
  434. package/docs/it/intlayer_with_vite+vue.md +1 -1
  435. package/docs/it/readme.md +13 -0
  436. package/docs/ja/benchmark/nextjs.md +15 -6
  437. package/docs/ja/benchmark/solid.md +10 -1
  438. package/docs/ja/benchmark/svelte.md +10 -1
  439. package/docs/ja/benchmark/tanstack.md +15 -6
  440. package/docs/ja/benchmark/vue.md +10 -1
  441. package/docs/ja/configuration.md +1 -1
  442. package/docs/ja/custom_domains.md +9 -9
  443. package/docs/ja/dictionary/content_file.md +41 -0
  444. package/docs/ja/dictionary/markdown.md +36 -1
  445. package/docs/ja/interest_of_intlayer.md +0 -2
  446. package/docs/ja/intlayer_with_analog.md +1 -1
  447. package/docs/ja/intlayer_with_angular.md +1 -1
  448. package/docs/ja/intlayer_with_astro.md +1 -1
  449. package/docs/ja/intlayer_with_astro_lit.md +2 -2
  450. package/docs/ja/intlayer_with_astro_preact.md +2 -2
  451. package/docs/ja/intlayer_with_astro_react.md +1 -1
  452. package/docs/ja/intlayer_with_astro_solid.md +1 -1
  453. package/docs/ja/intlayer_with_astro_svelte.md +1 -1
  454. package/docs/ja/intlayer_with_astro_vanilla.md +1 -1
  455. package/docs/ja/intlayer_with_astro_vue.md +1 -1
  456. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  457. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  458. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  459. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  460. package/docs/ja/intlayer_with_nuxt.md +1 -1
  461. package/docs/ja/intlayer_with_react_native+expo.md +2 -2
  462. package/docs/ja/intlayer_with_react_router_v7.md +2 -2
  463. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +1 -1
  464. package/docs/ja/intlayer_with_storybook.md +5 -5
  465. package/docs/ja/intlayer_with_svelte_kit.md +1 -1
  466. package/docs/ja/intlayer_with_tanstack+solid.md +1 -1
  467. package/docs/ja/intlayer_with_tanstack.md +1 -1
  468. package/docs/ja/intlayer_with_vanilla.md +2 -2
  469. package/docs/ja/intlayer_with_vite+lit.md +1 -1
  470. package/docs/ja/intlayer_with_vite+preact.md +1 -1
  471. package/docs/ja/intlayer_with_vite+react.md +1 -1
  472. package/docs/ja/intlayer_with_vite+react_compiler.md +1 -1
  473. package/docs/ja/intlayer_with_vite+svelte.md +2 -2
  474. package/docs/ja/intlayer_with_vite+vanilla.md +2 -2
  475. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  476. package/docs/ja/readme.md +13 -0
  477. package/docs/ko/benchmark/nextjs.md +15 -6
  478. package/docs/ko/benchmark/solid.md +13 -4
  479. package/docs/ko/benchmark/svelte.md +13 -4
  480. package/docs/ko/benchmark/tanstack.md +15 -6
  481. package/docs/ko/benchmark/vue.md +13 -4
  482. package/docs/ko/configuration.md +1 -1
  483. package/docs/ko/custom_domains.md +9 -9
  484. package/docs/ko/dictionary/content_file.md +41 -0
  485. package/docs/ko/dictionary/markdown.md +36 -1
  486. package/docs/ko/interest_of_intlayer.md +0 -2
  487. package/docs/ko/intlayer_with_analog.md +1 -1
  488. package/docs/ko/intlayer_with_angular.md +1 -1
  489. package/docs/ko/intlayer_with_astro.md +1 -1
  490. package/docs/ko/intlayer_with_astro_lit.md +2 -2
  491. package/docs/ko/intlayer_with_astro_preact.md +2 -2
  492. package/docs/ko/intlayer_with_astro_react.md +1 -1
  493. package/docs/ko/intlayer_with_astro_solid.md +1 -1
  494. package/docs/ko/intlayer_with_astro_svelte.md +1 -1
  495. package/docs/ko/intlayer_with_astro_vanilla.md +1 -1
  496. package/docs/ko/intlayer_with_astro_vue.md +1 -1
  497. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  498. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  499. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  500. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  501. package/docs/ko/intlayer_with_nuxt.md +1 -1
  502. package/docs/ko/intlayer_with_react_native+expo.md +2 -2
  503. package/docs/ko/intlayer_with_react_router_v7.md +1 -1
  504. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  505. package/docs/ko/intlayer_with_storybook.md +5 -5
  506. package/docs/ko/intlayer_with_svelte_kit.md +1 -1
  507. package/docs/ko/intlayer_with_tanstack+solid.md +1 -1
  508. package/docs/ko/intlayer_with_tanstack.md +1 -1
  509. package/docs/ko/intlayer_with_vanilla.md +2 -2
  510. package/docs/ko/intlayer_with_vite+lit.md +2 -2
  511. package/docs/ko/intlayer_with_vite+preact.md +2 -2
  512. package/docs/ko/intlayer_with_vite+react.md +2 -2
  513. package/docs/ko/intlayer_with_vite+react_compiler.md +2 -2
  514. package/docs/ko/intlayer_with_vite+solid.md +1 -1
  515. package/docs/ko/intlayer_with_vite+svelte.md +3 -3
  516. package/docs/ko/intlayer_with_vite+vanilla.md +3 -3
  517. package/docs/ko/intlayer_with_vite+vue.md +2 -2
  518. package/docs/ko/readme.md +13 -0
  519. package/docs/nl/configuration.md +6 -6
  520. package/docs/nl/custom_domains.md +11 -11
  521. package/docs/nl/interest_of_intlayer.md +0 -2
  522. package/docs/nl/intlayer_with_storybook.md +7 -7
  523. package/docs/nl/intlayer_with_vanilla.md +2 -2
  524. package/docs/nl/intlayer_with_vite+lit.md +2 -2
  525. package/docs/nl/intlayer_with_vite+vanilla.md +4 -4
  526. package/docs/pl/agent_skills.md +2 -2
  527. package/docs/pl/benchmark/nextjs.md +20 -11
  528. package/docs/pl/benchmark/solid.md +15 -6
  529. package/docs/pl/benchmark/svelte.md +15 -6
  530. package/docs/pl/benchmark/tanstack.md +16 -7
  531. package/docs/pl/benchmark/vue.md +16 -7
  532. package/docs/pl/configuration.md +6 -6
  533. package/docs/pl/custom_domains.md +11 -11
  534. package/docs/pl/dictionary/content_file.md +41 -0
  535. package/docs/pl/dictionary/markdown.md +36 -1
  536. package/docs/pl/interest_of_intlayer.md +0 -2
  537. package/docs/pl/intlayer_with_analog.md +1 -1
  538. package/docs/pl/intlayer_with_angular.md +1 -1
  539. package/docs/pl/intlayer_with_astro.md +1 -1
  540. package/docs/pl/intlayer_with_astro_lit.md +2 -2
  541. package/docs/pl/intlayer_with_astro_preact.md +3 -3
  542. package/docs/pl/intlayer_with_astro_react.md +2 -2
  543. package/docs/pl/intlayer_with_astro_solid.md +3 -3
  544. package/docs/pl/intlayer_with_astro_svelte.md +1 -1
  545. package/docs/pl/intlayer_with_astro_vanilla.md +1 -1
  546. package/docs/pl/intlayer_with_astro_vue.md +1 -1
  547. package/docs/pl/intlayer_with_nextjs_14.md +1 -1
  548. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  549. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  550. package/docs/pl/intlayer_with_nextjs_page_router.md +2 -2
  551. package/docs/pl/intlayer_with_nuxt.md +1 -1
  552. package/docs/pl/intlayer_with_react_native+expo.md +1 -1
  553. package/docs/pl/intlayer_with_react_router_v7.md +1 -1
  554. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +1 -1
  555. package/docs/pl/intlayer_with_storybook.md +7 -7
  556. package/docs/pl/intlayer_with_svelte_kit.md +1 -1
  557. package/docs/pl/intlayer_with_tanstack+solid.md +1 -1
  558. package/docs/pl/intlayer_with_tanstack.md +1 -1
  559. package/docs/pl/intlayer_with_vanilla.md +2 -2
  560. package/docs/pl/intlayer_with_vite+lit.md +3 -3
  561. package/docs/pl/intlayer_with_vite+preact.md +2 -2
  562. package/docs/pl/intlayer_with_vite+react.md +2 -2
  563. package/docs/pl/intlayer_with_vite+react_compiler.md +2 -2
  564. package/docs/pl/intlayer_with_vite+solid.md +1 -1
  565. package/docs/pl/intlayer_with_vite+svelte.md +3 -3
  566. package/docs/pl/intlayer_with_vite+vanilla.md +5 -5
  567. package/docs/pl/intlayer_with_vite+vue.md +2 -2
  568. package/docs/pl/readme.md +13 -0
  569. package/docs/pt/benchmark/nextjs.md +20 -11
  570. package/docs/pt/benchmark/solid.md +14 -5
  571. package/docs/pt/benchmark/svelte.md +14 -5
  572. package/docs/pt/benchmark/tanstack.md +16 -7
  573. package/docs/pt/benchmark/vue.md +14 -5
  574. package/docs/pt/configuration.md +6 -6
  575. package/docs/pt/custom_domains.md +11 -11
  576. package/docs/pt/dictionary/content_file.md +41 -0
  577. package/docs/pt/dictionary/markdown.md +36 -1
  578. package/docs/pt/interest_of_intlayer.md +0 -2
  579. package/docs/pt/intlayer_with_analog.md +1 -1
  580. package/docs/pt/intlayer_with_angular.md +1 -1
  581. package/docs/pt/intlayer_with_astro.md +1 -1
  582. package/docs/pt/intlayer_with_astro_lit.md +1 -1
  583. package/docs/pt/intlayer_with_astro_preact.md +3 -3
  584. package/docs/pt/intlayer_with_astro_react.md +2 -2
  585. package/docs/pt/intlayer_with_astro_solid.md +3 -3
  586. package/docs/pt/intlayer_with_astro_svelte.md +1 -1
  587. package/docs/pt/intlayer_with_astro_vanilla.md +1 -1
  588. package/docs/pt/intlayer_with_astro_vue.md +1 -1
  589. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  590. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  591. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  592. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  593. package/docs/pt/intlayer_with_nuxt.md +1 -1
  594. package/docs/pt/intlayer_with_react_native+expo.md +2 -2
  595. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +1 -1
  596. package/docs/pt/intlayer_with_storybook.md +7 -7
  597. package/docs/pt/intlayer_with_svelte_kit.md +1 -1
  598. package/docs/pt/intlayer_with_tanstack+solid.md +1 -1
  599. package/docs/pt/intlayer_with_tanstack.md +1 -1
  600. package/docs/pt/intlayer_with_vanilla.md +2 -2
  601. package/docs/pt/intlayer_with_vite+lit.md +3 -3
  602. package/docs/pt/intlayer_with_vite+preact.md +2 -2
  603. package/docs/pt/intlayer_with_vite+react.md +2 -2
  604. package/docs/pt/intlayer_with_vite+react_compiler.md +2 -2
  605. package/docs/pt/intlayer_with_vite+solid.md +1 -1
  606. package/docs/pt/intlayer_with_vite+svelte.md +3 -3
  607. package/docs/pt/intlayer_with_vite+vanilla.md +5 -5
  608. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  609. package/docs/pt/readme.md +13 -0
  610. package/docs/ru/agent_skills.md +1 -1
  611. package/docs/ru/benchmark/index.md +2 -2
  612. package/docs/ru/benchmark/nextjs.md +28 -19
  613. package/docs/ru/benchmark/solid.md +16 -7
  614. package/docs/ru/benchmark/svelte.md +17 -8
  615. package/docs/ru/benchmark/tanstack.md +20 -11
  616. package/docs/ru/benchmark/vue.md +19 -10
  617. package/docs/ru/bundle_optimization.md +1 -1
  618. package/docs/ru/cli/index.md +23 -23
  619. package/docs/ru/cli/init.md +7 -7
  620. package/docs/ru/cli/standalone.md +5 -5
  621. package/docs/ru/compiler.md +3 -3
  622. package/docs/ru/configuration.md +8 -8
  623. package/docs/ru/custom_domains.md +12 -12
  624. package/docs/ru/dictionary/content_file.md +41 -0
  625. package/docs/ru/dictionary/html.md +6 -6
  626. package/docs/ru/dictionary/markdown.md +42 -7
  627. package/docs/ru/interest_of_intlayer.md +3 -5
  628. package/docs/ru/intlayer_with_analog.md +1 -1
  629. package/docs/ru/intlayer_with_angular.md +1 -1
  630. package/docs/ru/intlayer_with_astro.md +2 -2
  631. package/docs/ru/intlayer_with_astro_lit.md +5 -5
  632. package/docs/ru/intlayer_with_astro_preact.md +4 -4
  633. package/docs/ru/intlayer_with_astro_react.md +3 -3
  634. package/docs/ru/intlayer_with_astro_solid.md +4 -4
  635. package/docs/ru/intlayer_with_astro_svelte.md +2 -2
  636. package/docs/ru/intlayer_with_astro_vanilla.md +2 -2
  637. package/docs/ru/intlayer_with_astro_vue.md +2 -2
  638. package/docs/ru/intlayer_with_fastify.md +1 -1
  639. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  640. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  641. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  642. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  643. package/docs/ru/intlayer_with_nuxt.md +1 -1
  644. package/docs/ru/intlayer_with_react_native+expo.md +2 -2
  645. package/docs/ru/intlayer_with_react_router_v7.md +1 -1
  646. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +1 -1
  647. package/docs/ru/intlayer_with_storybook.md +10 -10
  648. package/docs/ru/intlayer_with_svelte_kit.md +1 -1
  649. package/docs/ru/intlayer_with_tanstack+solid.md +7 -7
  650. package/docs/ru/intlayer_with_tanstack.md +1 -1
  651. package/docs/ru/intlayer_with_vanilla.md +4 -4
  652. package/docs/ru/intlayer_with_vite+lit.md +5 -5
  653. package/docs/ru/intlayer_with_vite+preact.md +2 -2
  654. package/docs/ru/intlayer_with_vite+react.md +2 -2
  655. package/docs/ru/intlayer_with_vite+react_compiler.md +2 -2
  656. package/docs/ru/intlayer_with_vite+solid.md +1 -1
  657. package/docs/ru/intlayer_with_vite+svelte.md +3 -3
  658. package/docs/ru/intlayer_with_vite+vanilla.md +7 -7
  659. package/docs/ru/intlayer_with_vite+vue.md +2 -2
  660. package/docs/ru/readme.md +13 -0
  661. package/docs/tr/benchmark/nextjs.md +16 -7
  662. package/docs/tr/benchmark/solid.md +14 -5
  663. package/docs/tr/benchmark/svelte.md +14 -5
  664. package/docs/tr/benchmark/tanstack.md +16 -7
  665. package/docs/tr/benchmark/vue.md +14 -5
  666. package/docs/tr/configuration.md +6 -6
  667. package/docs/tr/custom_domains.md +11 -11
  668. package/docs/tr/dictionary/content_file.md +41 -0
  669. package/docs/tr/dictionary/markdown.md +36 -1
  670. package/docs/tr/interest_of_intlayer.md +0 -2
  671. package/docs/tr/intlayer_with_analog.md +1 -1
  672. package/docs/tr/intlayer_with_angular.md +1 -1
  673. package/docs/tr/intlayer_with_astro.md +1 -1
  674. package/docs/tr/intlayer_with_astro_lit.md +2 -2
  675. package/docs/tr/intlayer_with_astro_preact.md +3 -3
  676. package/docs/tr/intlayer_with_astro_react.md +2 -2
  677. package/docs/tr/intlayer_with_astro_solid.md +3 -3
  678. package/docs/tr/intlayer_with_astro_svelte.md +1 -1
  679. package/docs/tr/intlayer_with_astro_vanilla.md +1 -1
  680. package/docs/tr/intlayer_with_astro_vue.md +1 -1
  681. package/docs/tr/intlayer_with_nextjs_15.md +2 -2
  682. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  683. package/docs/tr/intlayer_with_nextjs_page_router.md +2 -2
  684. package/docs/tr/intlayer_with_nuxt.md +1 -1
  685. package/docs/tr/intlayer_with_react_native+expo.md +2 -2
  686. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  687. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  688. package/docs/tr/intlayer_with_storybook.md +7 -7
  689. package/docs/tr/intlayer_with_svelte_kit.md +1 -1
  690. package/docs/tr/intlayer_with_tanstack+solid.md +1 -1
  691. package/docs/tr/intlayer_with_tanstack.md +1 -1
  692. package/docs/tr/intlayer_with_vanilla.md +2 -2
  693. package/docs/tr/intlayer_with_vite+lit.md +3 -3
  694. package/docs/tr/intlayer_with_vite+preact.md +2 -2
  695. package/docs/tr/intlayer_with_vite+react.md +2 -2
  696. package/docs/tr/intlayer_with_vite+react_compiler.md +2 -2
  697. package/docs/tr/intlayer_with_vite+solid.md +1 -1
  698. package/docs/tr/intlayer_with_vite+svelte.md +3 -3
  699. package/docs/tr/intlayer_with_vite+vanilla.md +5 -5
  700. package/docs/tr/intlayer_with_vite+vue.md +2 -2
  701. package/docs/tr/readme.md +13 -0
  702. package/docs/uk/agent_skills.md +1 -1
  703. package/docs/uk/benchmark/index.md +2 -2
  704. package/docs/uk/benchmark/nextjs.md +29 -20
  705. package/docs/uk/benchmark/solid.md +16 -7
  706. package/docs/uk/benchmark/svelte.md +17 -8
  707. package/docs/uk/benchmark/tanstack.md +21 -12
  708. package/docs/uk/benchmark/vue.md +20 -11
  709. package/docs/uk/bundle_optimization.md +1 -1
  710. package/docs/uk/cli/index.md +21 -21
  711. package/docs/uk/cli/init.md +9 -9
  712. package/docs/uk/cli/standalone.md +16 -16
  713. package/docs/uk/compiler.md +3 -3
  714. package/docs/uk/configuration.md +8 -8
  715. package/docs/uk/custom_domains.md +12 -12
  716. package/docs/uk/dictionary/content_file.md +41 -0
  717. package/docs/uk/dictionary/markdown.md +36 -1
  718. package/docs/uk/interest_of_intlayer.md +2 -4
  719. package/docs/uk/intlayer_with_analog.md +1 -1
  720. package/docs/uk/intlayer_with_angular.md +1 -1
  721. package/docs/uk/intlayer_with_astro.md +2 -2
  722. package/docs/uk/intlayer_with_astro_lit.md +3 -3
  723. package/docs/uk/intlayer_with_astro_preact.md +4 -4
  724. package/docs/uk/intlayer_with_astro_react.md +3 -3
  725. package/docs/uk/intlayer_with_astro_solid.md +4 -4
  726. package/docs/uk/intlayer_with_astro_svelte.md +2 -2
  727. package/docs/uk/intlayer_with_astro_vanilla.md +2 -2
  728. package/docs/uk/intlayer_with_astro_vue.md +2 -2
  729. package/docs/uk/intlayer_with_fastify.md +1 -1
  730. package/docs/uk/intlayer_with_nextjs_14.md +1 -1
  731. package/docs/uk/intlayer_with_nextjs_15.md +1 -1
  732. package/docs/uk/intlayer_with_nextjs_16.md +1 -1
  733. package/docs/uk/intlayer_with_nextjs_page_router.md +2 -2
  734. package/docs/uk/intlayer_with_nuxt.md +1 -1
  735. package/docs/uk/intlayer_with_react_native+expo.md +1 -1
  736. package/docs/uk/intlayer_with_react_router_v7.md +1 -1
  737. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +1 -1
  738. package/docs/uk/intlayer_with_storybook.md +9 -9
  739. package/docs/uk/intlayer_with_svelte_kit.md +1 -1
  740. package/docs/uk/intlayer_with_tanstack+solid.md +4 -4
  741. package/docs/uk/intlayer_with_tanstack.md +1 -1
  742. package/docs/uk/intlayer_with_vanilla.md +3 -3
  743. package/docs/uk/intlayer_with_vite+lit.md +4 -4
  744. package/docs/uk/intlayer_with_vite+preact.md +2 -2
  745. package/docs/uk/intlayer_with_vite+react.md +2 -2
  746. package/docs/uk/intlayer_with_vite+react_compiler.md +2 -2
  747. package/docs/uk/intlayer_with_vite+solid.md +1 -1
  748. package/docs/uk/intlayer_with_vite+svelte.md +3 -3
  749. package/docs/uk/intlayer_with_vite+vanilla.md +6 -6
  750. package/docs/uk/intlayer_with_vite+vue.md +2 -2
  751. package/docs/uk/readme.md +13 -0
  752. package/docs/ur/cli/init.md +1 -1
  753. package/docs/ur/configuration.md +6 -6
  754. package/docs/ur/custom_domains.md +11 -11
  755. package/docs/ur/interest_of_intlayer.md +0 -2
  756. package/docs/ur/intlayer_with_storybook.md +7 -7
  757. package/docs/ur/intlayer_with_vanilla.md +2 -2
  758. package/docs/ur/intlayer_with_vite+lit.md +2 -2
  759. package/docs/ur/intlayer_with_vite+vanilla.md +4 -4
  760. package/docs/vi/agent_skills.md +2 -2
  761. package/docs/vi/benchmark/nextjs.md +20 -11
  762. package/docs/vi/benchmark/solid.md +14 -5
  763. package/docs/vi/benchmark/svelte.md +14 -5
  764. package/docs/vi/benchmark/tanstack.md +16 -7
  765. package/docs/vi/benchmark/vue.md +14 -5
  766. package/docs/vi/cli/init.md +1 -1
  767. package/docs/vi/configuration.md +6 -6
  768. package/docs/vi/custom_domains.md +11 -11
  769. package/docs/vi/dictionary/content_file.md +41 -0
  770. package/docs/vi/dictionary/markdown.md +36 -1
  771. package/docs/vi/interest_of_intlayer.md +0 -2
  772. package/docs/vi/intlayer_with_analog.md +1 -1
  773. package/docs/vi/intlayer_with_angular.md +1 -1
  774. package/docs/vi/intlayer_with_astro.md +1 -1
  775. package/docs/vi/intlayer_with_astro_lit.md +2 -2
  776. package/docs/vi/intlayer_with_astro_preact.md +3 -3
  777. package/docs/vi/intlayer_with_astro_react.md +2 -2
  778. package/docs/vi/intlayer_with_astro_solid.md +3 -3
  779. package/docs/vi/intlayer_with_astro_svelte.md +1 -1
  780. package/docs/vi/intlayer_with_astro_vanilla.md +1 -1
  781. package/docs/vi/intlayer_with_astro_vue.md +1 -1
  782. package/docs/vi/intlayer_with_nextjs_14.md +1 -1
  783. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  784. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  785. package/docs/vi/intlayer_with_nextjs_page_router.md +2 -2
  786. package/docs/vi/intlayer_with_nuxt.md +1 -1
  787. package/docs/vi/intlayer_with_react_native+expo.md +1 -1
  788. package/docs/vi/intlayer_with_react_router_v7.md +1 -1
  789. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  790. package/docs/vi/intlayer_with_storybook.md +7 -7
  791. package/docs/vi/intlayer_with_svelte_kit.md +1 -1
  792. package/docs/vi/intlayer_with_tanstack+solid.md +1 -1
  793. package/docs/vi/intlayer_with_tanstack.md +1 -1
  794. package/docs/vi/intlayer_with_vanilla.md +2 -2
  795. package/docs/vi/intlayer_with_vite+lit.md +2 -2
  796. package/docs/vi/intlayer_with_vite+preact.md +1 -1
  797. package/docs/vi/intlayer_with_vite+react.md +1 -1
  798. package/docs/vi/intlayer_with_vite+react_compiler.md +1 -1
  799. package/docs/vi/intlayer_with_vite+svelte.md +2 -2
  800. package/docs/vi/intlayer_with_vite+vanilla.md +4 -4
  801. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  802. package/docs/vi/readme.md +13 -0
  803. package/docs/zh/benchmark/nextjs.md +20 -11
  804. package/docs/zh/benchmark/solid.md +10 -1
  805. package/docs/zh/benchmark/svelte.md +10 -1
  806. package/docs/zh/benchmark/tanstack.md +16 -7
  807. package/docs/zh/benchmark/vue.md +10 -1
  808. package/docs/zh/cli/init.md +1 -1
  809. package/docs/zh/configuration.md +6 -6
  810. package/docs/zh/custom_domains.md +11 -11
  811. package/docs/zh/dictionary/content_file.md +41 -0
  812. package/docs/zh/dictionary/markdown.md +36 -1
  813. package/docs/zh/interest_of_intlayer.md +0 -2
  814. package/docs/zh/intlayer_with_analog.md +1 -1
  815. package/docs/zh/intlayer_with_angular.md +1 -1
  816. package/docs/zh/intlayer_with_astro.md +1 -1
  817. package/docs/zh/intlayer_with_astro_lit.md +2 -2
  818. package/docs/zh/intlayer_with_astro_preact.md +3 -3
  819. package/docs/zh/intlayer_with_astro_react.md +2 -2
  820. package/docs/zh/intlayer_with_astro_solid.md +3 -3
  821. package/docs/zh/intlayer_with_astro_svelte.md +1 -1
  822. package/docs/zh/intlayer_with_astro_vanilla.md +1 -1
  823. package/docs/zh/intlayer_with_astro_vue.md +1 -1
  824. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  825. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  826. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  827. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  828. package/docs/zh/intlayer_with_nuxt.md +1 -1
  829. package/docs/zh/intlayer_with_react_native+expo.md +2 -2
  830. package/docs/zh/intlayer_with_react_router_v7.md +1 -1
  831. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +1 -1
  832. package/docs/zh/intlayer_with_storybook.md +7 -7
  833. package/docs/zh/intlayer_with_svelte_kit.md +1 -1
  834. package/docs/zh/intlayer_with_tanstack+solid.md +1 -1
  835. package/docs/zh/intlayer_with_tanstack.md +1 -1
  836. package/docs/zh/intlayer_with_vanilla.md +2 -2
  837. package/docs/zh/intlayer_with_vite+lit.md +2 -2
  838. package/docs/zh/intlayer_with_vite+preact.md +1 -1
  839. package/docs/zh/intlayer_with_vite+react.md +1 -1
  840. package/docs/zh/intlayer_with_vite+react_compiler.md +1 -1
  841. package/docs/zh/intlayer_with_vite+svelte.md +2 -2
  842. package/docs/zh/intlayer_with_vite+vanilla.md +4 -4
  843. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  844. package/docs/zh/readme.md +13 -0
  845. package/docs/zh-TW/interest_of_intlayer.md +0 -2
  846. package/frequent_questions/ru/intlayerNode.md +2 -2
  847. package/frequent_questions/uk/intlayerNode.md +2 -2
  848. package/package.json +7 -7
  849. package/src/blog.ts +4 -1
  850. package/src/frequentQuestions.ts +4 -1
  851. package/src/legal.ts +4 -1
@@ -34,7 +34,7 @@ history:
34
34
  <iframe
35
35
  src="https://ide.intlayer.org/aymericzip/intlayer-vanilla-template?file=intlayer.config.ts"
36
36
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
37
- title="Demo CodeSandbox Intlayer"
37
+ title="Demo CodeSandbox - Intlayer"
38
38
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
39
39
  loading="lazy"
40
40
  />
@@ -45,7 +45,7 @@ history:
45
45
  <iframe
46
46
  src="https://intlayer-vanilla-template.vercel.app"
47
47
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
48
- title="ڈیمو intlayer-vanilla-template"
48
+ title="ڈیمو - intlayer-vanilla-template"
49
49
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
50
50
  loading="lazy"
51
51
  />
@@ -45,7 +45,7 @@ history:
45
45
  <iframe
46
46
  src="https://intlayer-vite-lit-template.vercel.app"
47
47
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
48
- title="ڈیمو intlayer-vite-lit-template"
48
+ title="ڈیمو - intlayer-vite-lit-template"
49
49
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
50
50
  loading="lazy"
51
51
  />
@@ -263,7 +263,7 @@ export default appContent;
263
263
 
264
264
  ### مرحلہ 6: اپنے LitElement میں Intlayer کا استعمال کریں
265
265
 
266
- ایک `LitElement` کے اندر `useIntlayer` کا استعمال کریں۔ یہ ایک `ReactiveController` پراکسی واپس کرتا ہے جو فعال مقام تبدیل ہونے پر خود بخود دوبارہ رینڈرنگ شروع کر دیتا ہے کسی اضافی سیٹ اپ کی ضرورت نہیں ہے۔
266
+ ایک `LitElement` کے اندر `useIntlayer` کا استعمال کریں۔ یہ ایک `ReactiveController` پراکسی واپس کرتا ہے جو فعال مقام تبدیل ہونے پر خود بخود دوبارہ رینڈرنگ شروع کر دیتا ہے - کسی اضافی سیٹ اپ کی ضرورت نہیں ہے۔
267
267
 
268
268
  ```typescript fileName="src/my-element.ts" codeFormat="typescript"
269
269
  import { LitElement, html } from "lit";
@@ -35,7 +35,7 @@ history:
35
35
  <iframe
36
36
  src="https://ide.intlayer.org/aymericzip/intlayer-vite-vanilla-template?file=intlayer.config.ts"
37
37
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
38
- title="Demo CodeSandbox Intlayer"
38
+ title="Demo CodeSandbox - Intlayer"
39
39
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
40
40
  loading="lazy"
41
41
  />
@@ -46,7 +46,7 @@ history:
46
46
  <iframe
47
47
  src="https://intlayer-vite-vanilla.vercel.app"
48
48
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
49
- title="ڈیمو intlayer-vite-vanilla-template"
49
+ title="ڈیمو - intlayer-vite-vanilla-template"
50
50
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
51
51
  loading="lazy"
52
52
  />
@@ -255,7 +255,7 @@ export default appContent;
255
255
 
256
256
  ### مرحلہ 6: اپنے JavaScript میں Intlayer کا استعمال کریں
257
257
 
258
- `vanilla-intlayer` لائبریری `react-intlayer` کے سرفیس API کی عکاسی کرتی ہے: `useIntlayer(key, locale?)` براہ راست ترجمہ شدہ مواد واپس کرتا ہے۔ لوکل کی تبدیلیوں کو سبسکرائب کرنے کے لیے نتیجے پر `.onChange()` کو جوڑیں جو کہ React ری رینڈر کا واضح متبادل ہے۔
258
+ `vanilla-intlayer` لائبریری `react-intlayer` کے سرفیس API کی عکاسی کرتی ہے: `useIntlayer(key, locale?)` براہ راست ترجمہ شدہ مواد واپس کرتا ہے۔ لوکل کی تبدیلیوں کو سبسکرائب کرنے کے لیے نتیجے پر `.onChange()` کو جوڑیں - جو کہ React ری رینڈر کا واضح متبادل ہے۔
259
259
 
260
260
  ```typescript fileName="src/main.ts" codeFormat="typescript"
261
261
  import { installIntlayer, useIntlayer } from "vanilla-intlayer";
@@ -456,7 +456,7 @@ const unsubscribe = useDictionaryDynamic(
456
456
  });
457
457
  ```
458
458
 
459
- > ہر لوکل کا بنڈل صرف اس وقت حاصل کیا جاتا ہے جب وہ لوکل فعال ہو جائے اور نتیجہ کیش کر دیا جاتا ہے اسی لوکل پر بعد کی تبدیلیاں فوری ہوتی ہیں۔
459
+ > ہر لوکل کا بنڈل صرف اس وقت حاصل کیا جاتا ہے جب وہ لوکل فعال ہو جائے اور نتیجہ کیش کر دیا جاتا ہے - اسی لوکل پر بعد کی تبدیلیاں فوری ہوتی ہیں۔
460
460
 
461
461
  ### (اختیاری) مرحلہ 13: اپنے اجزاء سے مواد نکالیں (Extract)
462
462
 
@@ -76,7 +76,7 @@ npx skills add aymericzip/intlayer-skills
76
76
 
77
77
  **intlayer-content**
78
78
 
79
- - Dạy agent cách sử dụng các nút nội dung nâng caonhư số nhiều, điều kiện và markdown—để xây dựng các từ điển phong phú, động và được bản địa hóa.
79
+ - Dạy agent cách sử dụng các nút nội dung nâng cao-như số nhiều, điều kiện và markdown-để xây dựng các từ điển phong phú, động và được bản địa hóa.
80
80
 
81
81
  **intlayer-next-js**
82
82
 
@@ -108,7 +108,7 @@ npx skills add aymericzip/intlayer-skills
108
108
 
109
109
  **intlayer-vue**
110
110
 
111
- - Trang bị cho agent các mẫu cụ thể của Vuebao gồm Composables và hỗ trợ Nuxt—để xây dựng các ứng dụng web hiện đại, được bản địa hóa.
111
+ - Trang bị cho agent các mẫu cụ thể của Vue-bao gồm Composables và hỗ trợ Nuxt-để xây dựng các ứng dụng web hiện đại, được bản địa hóa.
112
112
 
113
113
  **intlayer-compiler**
114
114
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Giải pháp i18n tốt nhất cho Next.js năm 2026 - Báo cáo Benchmark
5
5
  description: So sánh các thư viện quốc tế hóa (i18n) cho Next.js như next-intl, next-i18next và Intlayer. Báo cáo hiệu năng chi tiết về kích thước gói bundle, rò rỉ dữ liệu và tính phản ứng.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Thêm so sánh sao GitHub"
20
23
  - version: 8.7.5
21
24
  date: 2026-01-06
22
25
  changes: "Khởi tạo benchmark"
23
26
  ---
24
27
 
25
- # Thư viện i18n cho Next.js Báo cáo Benchmark 2026
28
+ # Thư viện i18n cho Next.js - Báo cáo Benchmark 2026
26
29
 
27
30
  Trang này là báo cáo benchmark cho các giải pháp i18n trên Next.js.
28
31
 
@@ -57,7 +60,7 @@ Ví dụ, trong những trường hợp xấu nhất, sau khi triển khai đa n
57
60
 
58
61
  Một tác động khác của các thư viện i18n là làm chậm quá trình phát triển. Việc chuyển đổi các component thành nội dung đa ngôn ngữ trên nhiều ngôn ngữ khác nhau rất tốn thời gian.
59
62
 
60
- Vì bài toán này khó, nên có nhiều giải pháp tồn tại một số tập trung vào trải nghiệm phát triển (DX), một số khác vào hiệu năng hoặc khả năng mở rộng, v.v.
63
+ Vì bài toán này khó, nên có nhiều giải pháp tồn tại - một số tập trung vào trải nghiệm phát triển (DX), một số khác vào hiệu năng hoặc khả năng mở rộng, v.v.
61
64
 
62
65
  Intlayer cố gắng tối ưu hóa trên tất cả các khía cạnh này.
63
66
 
@@ -95,7 +98,7 @@ Ngay cả khi bạn khai báo các route như `[locale]/page.tsx`, với Webpack
95
98
 
96
99
  Nếu bạn sử dụng cú pháp như `const t = useTranslation()` + `t('object-của-tôi.sub-object.key-của-tôi')`, toàn bộ tệp JSON thường phải nằm trong gói bundle để thư viện có thể phân tích và tìm kiếm khóa (key). Phần lớn nội dung đó sau đó được gửi đi ngay cả khi nó không được sử dụng trên trang.
97
100
 
98
- Để giảm thiểu điều này, một số thư viện yêu cầu bạn khai báo theo từng trang những namespace nào cần tải ví dụ: `next-i18next`, `next-intl`, `lingui`, `next-translate`, `next-international`.
101
+ Để giảm thiểu điều này, một số thư viện yêu cầu bạn khai báo theo từng trang những namespace nào cần tải - ví dụ: `next-i18next`, `next-intl`, `lingui`, `next-translate`, `next-international`.
99
102
 
100
103
  Ngược lại, `Paraglide` thêm một bước bổ sung trước khi build để chuyển đổi tệp JSON thành các biểu tượng phẳng như `const en_my_var = () => 'giá trị của tôi'`. Về lý thuyết, điều đó cho phép loại bỏ mã thừa cho nội dung không dùng đến trên trang. Như chúng ta sẽ thấy, phương pháp đó vẫn có những nhược điểm đánh đổi.
101
104
 
@@ -150,7 +153,7 @@ Tôi đã chạy cùng một ứng dụng đa ngôn ngữ trên trình duyệt t
150
153
 
151
154
  - **Kích thước gói bundle trung bình cho component**: Các thành phần giao diện người dùng (UI) phổ biến được đo lường **từng cái một** thay vì ẩn bên trong một con số khổng lồ của ứng dụng. Nó cho thấy liệu việc quốc tế hóa có âm thầm làm phồng các component hàng ngày hay không. Ví dụ, nếu component của bạn render lại, nó sẽ tải toàn bộ dữ liệu đó từ bộ nhớ. Việc đính kèm một tệp JSON khổng lồ vào bất kỳ component nào giống như việc kết nối một kho lưu trữ lớn các dữ liệu không dùng đến sẽ làm chậm hiệu năng của component của bạn.
152
155
 
153
- - **Khả năng phản ứng khi chuyển đổi ngôn ngữ**: Tôi chuyển đổi ngôn ngữ bằng bộ điều khiển của chính ứng dụng và đo thời gian cho đến khi trang được chuyển đổi rõ ràng những gì một khách truy cập sẽ nhận thấy, không phải là một bước vi mô trong phòng thí nghiệm.
156
+ - **Khả năng phản ứng khi chuyển đổi ngôn ngữ**: Tôi chuyển đổi ngôn ngữ bằng bộ điều khiển của chính ứng dụng và đo thời gian cho đến khi trang được chuyển đổi rõ ràng - những gì một khách truy cập sẽ nhận thấy, không phải là một bước vi mô trong phòng thí nghiệm.
154
157
 
155
158
  - **Công việc render sau khi thay đổi ngôn ngữ**: Một theo dõi hẹp hơn: giao diện mất bao nhiêu công sức để vẽ lại cho ngôn ngữ mới sau khi việc chuyển đổi đang diễn ra. Hữu ích khi thời gian "cảm nhận được" và chi phí framework khác biệt.
156
159
 
@@ -158,11 +161,17 @@ Tôi đã chạy cùng một ứng dụng đa ngôn ngữ trên trình duyệt t
158
161
 
159
162
  - **Thời gian Hydration**: Khi ứng dụng hiển thị nó, khách hàng mất bao lâu để chuyển đổi mã HTML từ máy chủ thành thứ mà bạn thực sự có thể nhấp vào. Dấu gạch ngang trong các bảng có nghĩa là việc triển khai đó không cung cấp một con số hydration đáng tin cậy trong benchmark này.
160
163
 
164
+ ## Sao GitHub
165
+
166
+ Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
167
+
168
+ [![Star History Chart](https://api.star-history.com/chart?repos=i18next%2Fnext-i18next%2Camannn%2Fnext-intl%2Clingui%2Fjs-lingui%2Cvinissimus%2Fnext-translate%2Cinostudio%2Fnext-international%2Copral%2paraglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#i18next/next-i18next&amannn/next-intl&lingui/js-lingui&vinissimus/next-translate&inostudio/next-international&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
169
+
161
170
  ## Kết quả chi tiết
162
171
 
163
- ### 1 Các giải pháp cần tránh
172
+ ### 1 - Các giải pháp cần tránh
164
173
 
165
- Một số giải pháp, chẳng hạn như `gt-next` hoặc `lingo.dev`, rõ ràng là tốt nhất nên tránh. Chúng kết hợp việc phụ thuộc vào nhà cung cấp (vendor lock-in) với việc làm ô nhiễm mã nguồn của bạn. Mặc dù đã dành nhiều giờ để thử triển khai chúng, tôi chưa bao giờ làm cho chúng hoạt động bình thường kể cả trên TanStack Start hay Next.js.
174
+ Một số giải pháp, chẳng hạn như `gt-next` hoặc `lingo.dev`, rõ ràng là tốt nhất nên tránh. Chúng kết hợp việc phụ thuộc vào nhà cung cấp (vendor lock-in) với việc làm ô nhiễm mã nguồn của bạn. Mặc dù đã dành nhiều giờ để thử triển khai chúng, tôi chưa bao giờ làm cho chúng hoạt động bình thường - kể cả trên TanStack Start hay Next.js.
166
175
 
167
176
  Các vấn đề gặp phải:
168
177
 
@@ -176,12 +185,12 @@ Các vấn đề gặp phải:
176
185
 
177
186
  **(Lingo.dev)** (`@lingo.dev/compiler@0.4.0`):
178
187
 
179
- - Vượt quá hạn mức AI, khiến việc xây dựng bị đình trệ hoàn toàn vì vậy bạn không thể đưa lên production nếu không trả tiền.
188
+ - Vượt quá hạn mức AI, khiến việc xây dựng bị đình trệ hoàn toàn - vì vậy bạn không thể đưa lên production nếu không trả tiền.
180
189
  - Trình biên dịch đã bỏ sót gần 40% nội dung đã dịch. Tôi đã phải viết lại tất cả các cấu trúc `.map` thành các khối component phẳng để nó hoạt động.
181
190
  - CLI của họ có rất nhiều lỗi và hay tự ý đặt lại tệp cấu hình không vì lý do gì.
182
191
  - Khi xây dựng, nó đã xóa hoàn toàn các tệp JSON được tạo ra khi có nội dung mới được thêm vào. Kết quả là, một số ít khóa có thể xóa sạch hơn 300 khóa hiện có.
183
192
 
184
- ### 2 Các giải pháp thử nghiệm
193
+ ### 2 - Các giải pháp thử nghiệm
185
194
 
186
195
  **(Wuchale)** (`wuchale@0.22.11`):
187
196
 
@@ -195,7 +204,7 @@ Cuối cùng, so với các giải pháp khác, Paraglide không sử dụng sto
195
204
 
196
205
  > Ghi chú về paraglide: giải pháp này đưa mã vào cơ sở mã của bạn để import, kết quả là chỉ số 'kích thước thư viện' trong báo cáo benchmark gần bằng 0. Việc tạo mã (code generation) là một điều tốt, vì hàm được sử dụng sẽ chỉ bao gồm logic cần thiết (toàn bộ tiền tố so với không có tiền tố, cookie so với lưu trữ, v.v.). So sánh với điều này, Intlayer thực hiện việc lọc này thông qua các lần chèn biến môi trường trong quá trình build để buộc bundler phải loại bỏ mã thừa (tree-shake) cho nội dung tùy thuộc vào logic. Nhờ đó, paraglide và intlayer cuối cùng trở thành các giải pháp nhẹ hơn từ 6 đến 10 lần so với i18next hoặc next-intl.
197
206
 
198
- ### 3 Các giải pháp chấp nhận được
207
+ ### 3 - Các giải pháp chấp nhận được
199
208
 
200
209
  **(Tolgee)** (`@tolgee/react@7.0.0`):
201
210
 
@@ -219,7 +228,7 @@ Các định dạng thông báo cũng khác nhau: `next-intl` sử dụng ICU Me
219
228
 
220
229
  `Lingui` thường được khen ngợi. Cá nhân tôi thấy quy trình `lingui extract` / `lingui compile` phức tạp hơn các lựa chọn thay thế, mà không có ưu điểm rõ ràng. Tôi cũng nhận thấy cú pháp không nhất quán gây nhầm lẫn cho AI (ví dụ: `t()`, `t''`, `i18n.t()`, `<Trans>`).
221
230
 
222
- ### 4 Các khuyến nghị
231
+ ### 4 - Các khuyến nghị
223
232
 
224
233
  **(Next Translate)** (`next-translate@3.1.2`):
225
234
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Giải pháp i18n tốt nhất cho Solid năm 2026 - Báo cáo Benchmark
5
5
  description: So sánh các thư viện quốc tế hóa (i18n) Solid như solid-primitives, solid-i18next và Intlayer. Báo cáo hiệu suất chi tiết về kích thước bundle, rò rỉ và tính phản ứng.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-solid-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Thêm so sánh sao GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Khởi tạo benchmark"
23
26
  ---
24
27
 
25
- # Thư viện i18n cho Solid Báo cáo Benchmark 2026
28
+ # Thư viện i18n cho Solid - Báo cáo Benchmark 2026
26
29
 
27
30
  Trang này là báo cáo benchmark cho các giải pháp i18n trên Solid.
28
31
 
@@ -115,13 +118,19 @@ Chúng tôi đã so sánh **bốn chiến lược tải**:
115
118
  - **Scoped static**: Giữ cho mã được tổ chức (tách biệt logic) mà không cần các request mạng bổ sung phức tạp.
116
119
  - **Scoped dynamic**: Phương pháp tốt nhất cho _code splitting_ và hiệu suất. Giảm thiểu bộ nhớ bằng cách chỉ tải những gì chế độ xem hiện tại và ngôn ngữ đang hoạt động cần.
117
120
 
121
+ ## Sao GitHub
122
+
123
+ Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
124
+
125
+ [![Star History Chart](https://api.star-history.com/chart?repos=solidjs-community%2Fsolid-primitives%2Cmbarzda%2Fsolid-i18next%2Copral%2paraglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#solidjs-community/solid-primitives&mbarzda/solid-i18next&opral/paraglide-js&aymericzip/intlayer)
126
+
118
127
  ## Kết quả chi tiết
119
128
 
120
- ### 1 Các giải pháp cần tránh
129
+ ### 1 - Các giải pháp cần tránh
121
130
 
122
131
  > Không có giải pháp rõ ràng nào cần tránh trong hệ sinh thái Solid.
123
132
 
124
- ### 2 Các giải pháp chấp nhận được
133
+ ### 2 - Các giải pháp chấp nhận được
125
134
 
126
135
  **(solid-i18next)** (`solid-i18next@17.0.2`):
127
136
 
@@ -142,7 +151,7 @@ Nó cũng thiếu lazy loading và scoping namespace để tối ưu hóa kích
142
151
  Cá nhân tôi không thích việc phải tạo lại các file JS trước mỗi lần push, điều này tạo ra rủi ro xung đột merge liên tục thông qua các PR.
143
152
  Cuối cùng, so với các giải pháp khác, Paraglide không sử dụng store (ví dụ: Solid signal) để truy xuất ngôn ngữ hiện tại để render nội dung. Đối với mỗi node được phân tích cú pháp, nó sẽ yêu cầu ngôn ngữ từ localStorage / cookie, v.v. Nó dẫn đến việc thực thi logic không cần thiết ảnh hưởng đến tính phản ứng của component.
144
153
 
145
- ### 3 Khuyến nghị
154
+ ### 3 - Khuyến nghị
146
155
 
147
156
  **(Intlayer)** (`solid-intlayer@8.7.12`):
148
157
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Giải pháp i18n tốt nhất cho Svelte năm 2026 - Báo cáo Benchmark
5
5
  description: So sánh các thư viện quốc tế hóa (i18n) Svelte như svelte-i18n, Paraglide và Intlayer. Báo cáo hiệu suất chi tiết về kích thước bundle, rò rỉ và tính phản ứng.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-svelte-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Thêm so sánh sao GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Khởi tạo benchmark"
23
26
  ---
24
27
 
25
- # Thư viện i18n cho Svelte Báo cáo Benchmark 2026
28
+ # Thư viện i18n cho Svelte - Báo cáo Benchmark 2026
26
29
 
27
30
  Trang này là báo cáo benchmark cho các giải pháp i18n trên Svelte.
28
31
 
@@ -113,13 +116,19 @@ Chúng tôi đã so sánh **bốn chiến lược tải**:
113
116
  - **Scoped static**: Giữ cho mã được tổ chức (tách biệt logic) mà không cần các request mạng bổ sung phức tạp.
114
117
  - **Scoped dynamic**: Phương pháp tốt nhất cho _code splitting_ và hiệu suất. Giảm thiểu bộ nhớ bằng cách chỉ tải những gì chế độ xem hiện tại và ngôn ngữ đang hoạt động cần.
115
118
 
119
+ ## Sao GitHub
120
+
121
+ Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
122
+
123
+ [![Star History Chart](https://api.star-history.com/chart?repos=kaisermann%2Fsvelte-i18n%2Copral%2paraglide-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#kaisermann/svelte-i18n&opral/paraglide-js&aymericzip/intlayer)
124
+
116
125
  ## Kết quả chi tiết
117
126
 
118
- ### 1 Các giải pháp cần tránh
127
+ ### 1 - Các giải pháp cần tránh
119
128
 
120
129
  > Không có giải pháp rõ ràng nào cần tránh trong hệ sinh thái Svelte.
121
130
 
122
- ### 2 Các giải pháp chấp nhận được
131
+ ### 2 - Các giải pháp chấp nhận được
123
132
 
124
133
  **(Paraglide)** (`@inlang/paraglide-js@2.17.0`):
125
134
 
@@ -135,7 +144,7 @@ Cuối cùng, so với các giải pháp khác, Paraglide không sử dụng sto
135
144
 
136
145
  Giải pháp này đáp ứng tất cả các nhu cầu i18n trong một dự án Svelte. Nhưng giống như trường hợp của i18next hoặc các giải pháp i18n lớn khác, nó hơi nặng (~15.9kb, gấp khoảng 7 lần `svelte-intlayer`).
137
146
 
138
- ### 3 Khuyến nghị
147
+ ### 3 - Khuyến nghị
139
148
 
140
149
  **(Intlayer)** (`svelte-intlayer@8.7.12`):
141
150
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Giải pháp i18n tốt nhất cho TanStack Start năm 2026 - Báo cáo Benchmark
5
5
  description: So sánh các thư viện quốc tế hóa cho TanStack Start như react-i18next, use-intl và Intlayer. Báo cáo hiệu năng chi tiết về kích thước gói bundle, rò rỉ dữ liệu và tính phản ứng.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Thêm so sánh sao GitHub"
20
23
  - version: 8.7.5
21
24
  date: 2026-01-06
22
25
  changes: "Khởi tạo benchmark"
23
26
  ---
24
27
 
25
- # Thư viện i18n cho TanStack Start Báo cáo Benchmark 2026
28
+ # Thư viện i18n cho TanStack Start - Báo cáo Benchmark 2026
26
29
 
27
30
  Trang này là báo cáo benchmark cho các giải pháp i18n trên TanStack Start.
28
31
 
@@ -121,9 +124,15 @@ Chúng tôi đã so sánh **bốn chiến lược tải**:
121
124
  - **Scoped static**: Giữ cho mã được tổ chức (tách biệt logic) mà không cần các yêu cầu mạng bổ sung phức tạp.
122
125
  - **Scoped dynamic**: Phương pháp tốt nhất cho việc _chia tách mã_ (code splitting) và hiệu năng. Giảm thiểu bộ nhớ bằng cách chỉ tải những gì cần thiết cho chế độ xem hiện tại và ngôn ngữ đang hoạt động.
123
126
 
127
+ ## Sao GitHub
128
+
129
+ Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
130
+
131
+ [![Star History Chart](https://api.star-history.com/chart?repos=formatjs%2Fformatjs%2Ci18next%2Freact-i18next%2Clingui%2Fjs-lingui%2Camannn%2Fnext-intl%2Copral%2paraglide-js%2Ctolgee%2Ftolgee-js%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&lingui/js-lingui&amannn/next-intl&opral/paraglide-js&tolgee/tolgee-js&aymericzip/intlayer)
132
+
124
133
  ## Kết quả chi tiết
125
134
 
126
- ### 1 Các giải pháp cần tránh
135
+ ### 1 - Các giải pháp cần tránh
127
136
 
128
137
  Một số giải pháp, chẳng hạn như `gt-react` hoặc `lingo.dev`, rõ ràng là những lựa chọn nên tránh xa. Chúng kết hợp việc phụ thuộc vào nhà cung cấp với việc làm ô nhiễm mã nguồn của bạn. Tệ hơn nữa: mặc dù dành nhiều giờ cố gắng triển khai chúng, tôi chưa bao giờ làm cho chúng hoạt động bình thường trên TanStack Start (tương tự như `gt-next` trên Next.js).
129
138
 
@@ -145,13 +154,13 @@ Các vấn đề gặp phải:
145
154
  - Khi xây dựng, nó đã xóa hoàn toàn các tệp JSON được tạo ra khi có nội dung mới được thêm vào. Kết quả là, bạn có thể kết thúc với việc chỉ một vài khóa xóa sạch hàng trăm khóa hiện có.
146
155
  - Tôi đã gặp vấn đề về tính phản ứng với thư viện trên TanStack Start: khi ngôn ngữ thay đổi, tôi phải ép buộc render lại provider để nó hoạt động.
147
156
 
148
- ### 2 Các giải pháp thử nghiệm
157
+ ### 2 - Các giải pháp thử nghiệm
149
158
 
150
159
  **(Wuchale)** (`wuchale@0.22.11`):
151
160
 
152
161
  Ý tưởng đằng sau `Wuchale` rất thú vị nhưng vẫn chưa phải là một giải pháp khả thi. Tôi đã gặp vấn đề về tính phản ứng với thư viện này và phải ép buộc render lại provider để ứng dụng hoạt động trên TanStack Start. Tài liệu cũng khá mơ hồ, khiến việc làm quen khó khăn hơn.
153
162
 
154
- ### 3 Các giải pháp chấp nhận được
163
+ ### 3 - Các giải pháp chấp nhận được
155
164
 
156
165
  **(Paraglide)** (`@inlang/paraglide-js@2.15.1`):
157
166
 
@@ -177,7 +186,7 @@ Trên TanStack Start, bạn tránh được các cạm bẫy đặc thù của N
177
186
 
178
187
  Tuy nhiên, nó có cùng những nhược điểm chính như các ngăn công nghệ được xây dựng trên `t('a.b.c')`: tối ưu hóa là có thể nhưng rất tốn thời gian, và các dự án lớn có rủi ro rơi vào các thực hành xấu (namespace + tải động + kiểu dữ liệu).
179
188
 
180
- Các định dạng thông báo cũng khác nhau: `use-intl` sử dụng ICU MessageFormat, trong khi `i18next` sử dụng định dạng riêng của mình điều này làm phức tạp thêm công cụ hoặc quá trình di chuyển nếu bạn trộn lẫn chúng.
189
+ Các định dạng thông báo cũng khác nhau: `use-intl` sử dụng ICU MessageFormat, trong khi `i18next` sử dụng định dạng riêng của mình - điều này làm phức tạp thêm công cụ hoặc quá trình di chuyển nếu bạn trộn lẫn chúng.
181
190
 
182
191
  **(Lingui)** (`@lingui/core@5.3.0`):
183
192
 
@@ -187,7 +196,7 @@ Các định dạng thông báo cũng khác nhau: `use-intl` sử dụng ICU Mes
187
196
 
188
197
  `react-intl` là một triển khai hiệu năng từ nhóm Format.js. Trải nghiệm phát triển vẫn còn rườm rà: `const intl = useIntl()` + `intl.formatMessage({ id: "xx.xx" })` thêm vào sự phức tạp, công việc JavaScript bổ sung và ràng buộc instance i18n toàn cục vào nhiều nút trong cây React.
189
198
 
190
- ### 4 Các khuyến nghị
199
+ ### 4 - Các khuyến nghị
191
200
 
192
201
  Benchmark TanStack Start này không có đối trọng trực tiếp cho `next-translate` (Next.js plugin + `getStaticProps`). Đối với các nhóm thực sự muốn một API `t()` với một hệ sinh thái chín muồi, `react-i18next` và `use-intl` vẫn là những lựa chọn "hợp lý", nhưng hãy chuẩn bị đầu tư nhiều thời gian tối ưu hóa để tránh rò rỉ.
193
202
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-04-20
3
- updatedAt: 2026-04-21
3
+ updatedAt: 2026-05-18
4
4
  title: Giải pháp i18n tốt nhất cho Vue năm 2026 - Báo cáo Benchmark
5
5
  description: So sánh các thư viện quốc tế hóa (i18n) Vue như vue-i18n, fluent-vue và Intlayer. Báo cáo hiệu suất chi tiết về kích thước bundle, rò rỉ và tính phản ứng.
6
6
  keywords:
@@ -17,12 +17,15 @@ slugs:
17
17
  author: Aymeric PINEAU
18
18
  applicationTemplate: https://github.com/intlayer-org/benchmark-i18n-vue-template
19
19
  history:
20
+ - version: 8.9.8
21
+ date: 2026-05-18
22
+ changes: "Thêm so sánh sao GitHub"
20
23
  - version: 8.7.12
21
24
  date: 2026-01-06
22
25
  changes: "Khởi tạo benchmark"
23
26
  ---
24
27
 
25
- # Thư viện i18n cho Vue Báo cáo Benchmark 2026
28
+ # Thư viện i18n cho Vue - Báo cáo Benchmark 2026
26
29
 
27
30
  Trang này là báo cáo benchmark cho các giải pháp i18n trên Vue.
28
31
 
@@ -135,13 +138,19 @@ Tôi đã chạy cùng một ứng dụng đa ngôn ngữ trong một trình duy
135
138
 
136
139
  - **Thời gian Hydration**: Thời gian client dành để biến server HTML thành giao diện tương tác. Dấu gạch ngang trong các bảng có nghĩa là triển khai đó không cung cấp con số hydration đáng tin cậy trong benchmark này.
137
140
 
141
+ ## Sao GitHub
142
+
143
+ Sao GitHub là một chỉ số mạnh mẽ về mức độ phổ biến của dự án, sự tin tưởng của cộng đồng và mức độ phù hợp lâu dài. Mặc dù không phải là thước đo trực tiếp về chất lượng kỹ thuật, chúng phản ánh số lượng nhà phát triển thấy dự án hữu ích, theo dõi tiến trình của nó và có khả năng áp dụng nó. Để ước tính giá trị của một dự án, các ngôi sao giúp so sánh sức hút giữa các lựa chọn thay thế và cung cấp thông tin chi tiết về sự phát triển của hệ sinh thái.
144
+
145
+ [![Star History Chart](https://api.star-history.com/chart?repos=intlify%2Fvue-i18n%2Cfluent-vue%2Ffluent-vue%2Caymericzip%2Fintlayer&type=date&legend=top-left)](https://www.star-history.com/#intlify/vue-i18n&fluent-vue/fluent-vue&aymericzip/intlayer)
146
+
138
147
  ## Kết quả chi tiết
139
148
 
140
- ### 1 Các giải pháp cần tránh
149
+ ### 1 - Các giải pháp cần tránh
141
150
 
142
151
  > Không có giải pháp rõ ràng nào cần tránh trong hệ sinh thái Vue.
143
152
 
144
- ### 2 Các giải pháp chấp nhận được
153
+ ### 2 - Các giải pháp chấp nhận được
145
154
 
146
155
  **(vue-i18n)** (`vue-i18n@11.4.0`):
147
156
 
@@ -153,7 +162,7 @@ Package này rất nặng (~24.3kb, gấp khoảng 9 lần `vue-intlayer`).
153
162
 
154
163
  - **fluent-vue** đưa ra một nỗ lực đổi mới thông qua định dạng .ftl. Tổ chức tin nhắn tuyệt vời, dễ dàng bắt đầu hơn. Nhưng trong thực tế, việc thiếu an toàn kiểu làm tăng rủi ro lỗi và có thể nhanh chóng trở nên tốn thời gian để debug. Hơn nữa, giải pháp đó tải các tin nhắn bằng một plugin vite bắt buộc tải tất cả nội dung ở tất cả các ngôn ngữ vào mỗi trang. Ngoài ra, đây là một giải pháp cực kỳ nặng (~92.7kb, gấp khoảng 34 lần `vue-intlayer`).
155
164
 
156
- ### 3 Khuyến nghị
165
+ ### 3 - Khuyến nghị
157
166
 
158
167
  **(Intlayer)** (`vue-intlayer@8.7.12`):
159
168
 
@@ -138,7 +138,7 @@ Checking Intlayer configuration...
138
138
 
139
139
  ## Lưu ý:
140
140
 
141
- - Lệnh này mang tính lũy đẳng (idempotent) bạn có thể chạy nó nhiều lần một cách an toàn. Các bước đã được cấu hình sẽ tự động được bỏ qua.
141
+ - Lệnh này mang tính lũy đẳng (idempotent) - bạn có thể chạy nó nhiều lần một cách an toàn. Các bước đã được cấu hình sẽ tự động được bỏ qua.
142
142
  - Nếu tệp cấu hình đã tồn tại, nó sẽ không bị ghi đè.
143
143
  - Các cấu hình TypeScript không có mảng `include` (ví dụ: cấu hình kiểu giải pháp có tham chiếu) sẽ bị bỏ qua.
144
144
  - Lệnh sẽ dừng với thông báo lỗi nếu không tìm thấy `package.json` trong gốc dự án.
@@ -606,7 +606,7 @@ Xác định các cài đặt liên quan đến quốc tế hóa, bao gồm các
606
606
  | ----------------- | --------------------------------------------------------------------------------- | ------------ | ------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
607
607
  | `locales` | Danh sách các locale được hỗ trợ trong ứng dụng. | `string[]` | `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
608
608
  | `requiredLocales` | Danh sách các locale bắt buộc trong ứng dụng. | `string[]` | `[]` | `[]` | • Nếu để trống, tất cả các locale đều bắt buộc trong chế độ `strict`.<br/>• Đảm bảo rằng các locale bắt buộc cũng được định nghĩa trong trường `locales`. |
609
- | `strictMode` | Đảm bảo thực thi mạnh mẽ các nội dung quốc tế hóa bằng TypeScript. | `string` | `'inclusive'` | | • Nếu `"strict"`: Việc định nghĩa mọi locale đã khai báo là bắt buộc cho hàm `t` báo lỗi nếu thiếu hoặc nếu chưa khai báo.<br/>• Nếu `"inclusive"`: Cảnh báo cho các locale bị thiếu nhưng cho phép sử dụng các locale hiện có chưa khai báo.<br/>• Nếu `"loose"`: Chấp nhận bất kỳ locale nào hiện có. |
609
+ | `strictMode` | Đảm bảo thực thi mạnh mẽ các nội dung quốc tế hóa bằng TypeScript. | `string` | `'inclusive'` | | • Nếu `"strict"`: Việc định nghĩa mọi locale đã khai báo là bắt buộc cho hàm `t` - báo lỗi nếu thiếu hoặc nếu chưa khai báo.<br/>• Nếu `"inclusive"`: Cảnh báo cho các locale bị thiếu nhưng cho phép sử dụng các locale hiện có chưa khai báo.<br/>• Nếu `"loose"`: Chấp nhận bất kỳ locale nào hiện có. |
610
610
  | `defaultLocale` | Locale mặc định được sử dụng làm dự phòng nếu locale được yêu cầu không khả dụng. | `string` | `Locales.ENGLISH` | `'en'` | Được sử dụng để xác định locale nếu không được chỉ định trong URL, cookie hoặc header. |
611
611
 
612
612
  ---
@@ -670,10 +670,10 @@ routing: {
670
670
 
671
671
  | Giá trị | Nhận xét | Mô tả |
672
672
  | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
673
- | `'cookie'` | • Đảm bảo sự đồng ý của người dùng phù hợp để thực thi GDPR.<br/>• Có thể cấu hình thông qua `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). | Lưu trữ locale trong cookie có thể truy cập được từ cả client và server. |
674
- | `'localStorage'` | • Không hết hạn trừ khi bị xóa rõ ràng.<br/>• Intlayer Proxy không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). | Lưu trữ locale trong trình duyệt mà không có thời gian hết hạn chỉ phía client. |
675
- | `'sessionStorage'` | • Bị xóa khi cửa sổ/tab trình duyệt đóng lại.<br/>• Intlayer Proxy không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). | Lưu trữ locale trong thời gian diễn ra phiên làm việc của trang chỉ phía client. |
676
- | `'header'` | • Hữu ích cho các lệnh gọi API.<br/>• Phía client không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). | Lưu trữ hoặc chuyển qua locale thông qua các HTTP header chỉ phía server. |
673
+ | `'cookie'` | • Đảm bảo sự đồng ý của người dùng phù hợp để thực thi GDPR.<br/>• Có thể cấu hình thông qua `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). | Lưu trữ locale trong cookie - có thể truy cập được từ cả client và server. |
674
+ | `'localStorage'` | • Không hết hạn trừ khi bị xóa rõ ràng.<br/>• Intlayer Proxy không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). | Lưu trữ locale trong trình duyệt mà không có thời gian hết hạn - chỉ phía client. |
675
+ | `'sessionStorage'` | • Bị xóa khi cửa sổ/tab trình duyệt đóng lại.<br/>• Intlayer Proxy không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). | Lưu trữ locale trong thời gian diễn ra phiên làm việc của trang - chỉ phía client. |
676
+ | `'header'` | • Hữu ích cho các lệnh gọi API.<br/>• Phía client không thể truy cập nó.<br/>• Có thể cấu hình thông qua `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). | Lưu trữ hoặc chuyển qua locale thông qua các HTTP header - chỉ phía server. |
677
677
 
678
678
  #### Thuộc tính Cookie (Cookies Attributes)
679
679
 
@@ -861,7 +861,7 @@ Tham số điều khiển các hoạt động của dictionary, bao gồm hành
861
861
  | `location` | Chỉ ra nơi lưu trữ các tệp dictionary và cách chúng được đồng bộ hóa với CMS. | `'local'` &#124; <br/> `'remote'` &#124; <br/> `'hybrid'` &#124; <br/> `'plugin'` &#124; <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: Chỉ quản lý cục bộ.<br/>• `'remote'`: Chỉ quản lý từ xa (CMS).<br/>• `'hybrid'`: Cả quản lý cục bộ và từ xa.<br/>• `'plugin'` hoặc các chuỗi tùy chỉnh: Quản lý thông qua plugin hoặc nguồn tùy chỉnh. |
862
862
  | `importMode` | Kiểm soát cách các dictionary được import. | `'static'` &#124; <br/> `'dynamic'` &#124; <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: Import tĩnh.<br/>• `'dynamic'`: Import động thông qua Suspense.<br/>• `'fetch'`: Lấy dữ liệu thông qua Live Sync API; dự phòng về `'dynamic'` nếu thất bại.<br/>• Yêu cầu các plugin `@intlayer/babel` và `@intlayer/swc`.<br/>• Các khóa (keys) phải được khai báo tĩnh.<br/>• Bị bỏ qua nếu `optimize` tắt.<br/>• Không ảnh hưởng đến `getIntlayer`, `getDictionary`, v.v. |
863
863
  | `priority` | Độ ưu tiên của dictionary. Khi giải quyết xung đột giữa các dictionary, giá trị cao hơn sẽ giành chiến thắng trước các giá trị thấp hơn. | `number` | `undefined` | `1` | |
864
- | `live` | ĐÃ LỖI THỜI sử dụng `importMode: 'fetch'`. Từng biểu thị nội dung dictionary có nên được lấy dữ liệu động thông qua Live Sync API hay không. | `boolean` | `undefined` | | Được đổi tên thành `importMode: 'fetch'` trong v8.0.0. |
864
+ | `live` | ĐÃ LỖI THỜI - sử dụng `importMode: 'fetch'`. Từng biểu thị nội dung dictionary có nên được lấy dữ liệu động thông qua Live Sync API hay không. | `boolean` | `undefined` | | Được đổi tên thành `importMode: 'fetch'` trong v8.0.0. |
865
865
  | `schema` | Được tạo tự động bởi Intlayer để xác thực JSON schema. | `'https://intlayer.org/schema.json'` | Tự động tạo | | Không chỉnh sửa thủ công. |
866
866
  | `title` | Giúp xác định các dictionary trong editor và CMS. | `string` | `undefined` | `'User Profile'` | |
867
867
  | `tags` | Phân loại các dictionary và cung cấp ngữ cảnh hoặc hướng dẫn cho editor và AI. | `string[]` | `undefined` | `['user', 'profile']` | |
@@ -34,8 +34,8 @@ Bản đồ `domains` trong `routing` liên kết mỗi ngôn ngữ với một
34
34
 
35
35
  Sự khác biệt chính là **tính độc quyền**:
36
36
 
37
- - **Tên miền độc quyền** Chỉ một ngôn ngữ ánh xạ tới tên miền đó (ví dụ: `zh → intlayer.zh`). Bản thân tên miền đó xác định ngôn ngữ, vì vậy không có tiền tố ngôn ngữ nào được thêm vào đường dẫn. `https://intlayer.zh/about` phục vụ nội dung tiếng Trung.
38
- - **Tên miền chung** Nhiều ngôn ngữ ánh xạ tới cùng một tên miền (ví dụ: cả `en` và `fr` đều ánh xạ tới `intlayer.org`). Điều hướng dựa trên tiền tố thông thường sẽ được áp dụng. `intlayer.org/fr/about` phục vụ nội dung tiếng Pháp.
37
+ - **Tên miền độc quyền** - Chỉ một ngôn ngữ ánh xạ tới tên miền đó (ví dụ: `zh → intlayer.zh`). Bản thân tên miền đó xác định ngôn ngữ, vì vậy không có tiền tố ngôn ngữ nào được thêm vào đường dẫn. `https://intlayer.zh/about` phục vụ nội dung tiếng Trung.
38
+ - **Tên miền chung** - Nhiều ngôn ngữ ánh xạ tới cùng một tên miền (ví dụ: cả `en` và `fr` đều ánh xạ tới `intlayer.org`). Điều hướng dựa trên tiền tố thông thường sẽ được áp dụng. `intlayer.org/fr/about` phục vụ nội dung tiếng Pháp.
39
39
 
40
40
  ## Cấu hình
41
41
 
@@ -55,9 +55,9 @@ const config: IntlayerConfig = {
55
55
  routing: {
56
56
  mode: "prefix-no-default",
57
57
  domains: {
58
- // Tên miền chung en và fr sử dụng điều hướng tiền tố trên intlayer.org
58
+ // Tên miền chung - en và fr sử dụng điều hướng tiền tố trên intlayer.org
59
59
  en: "intlayer.org",
60
- // Tên miền độc quyền zh có tên miền riêng, không cần tiền tố /zh/
60
+ // Tên miền độc quyền - zh có tên miền riêng, không cần tiền tố /zh/
61
61
  zh: "intlayer.zh",
62
62
  },
63
63
  },
@@ -96,7 +96,7 @@ getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.org" });
96
96
  ```ts
97
97
  // Trang hiện tại: intlayer.zh/about
98
98
  getLocalizedUrl("/about", "zh", { currentDomain: "intlayer.zh" });
99
- // → "/about" (đã ở đúng tên miền URL tương đối)
99
+ // → "/about" (đã ở đúng tên miền - URL tương đối)
100
100
 
101
101
  getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.zh" });
102
102
  // → "https://intlayer.org/fr/about" (liên kết xuyên tên miền quay lại intlayer.org)
@@ -108,14 +108,14 @@ getLocalizedUrl("/about", "fr", { currentDomain: "intlayer.zh" });
108
108
 
109
109
  1. Tên miền của một URL đầu vào tuyệt đối (ví dụ: `https://intlayer.org/about` → `intlayer.org`).
110
110
  2. `window.location.hostname` trong môi trường trình duyệt.
111
- 3. Nếu không có cái nào khả dụng (SSR không có tùy chọn rõ ràng), một URL tương đối sẽ được trả về cho các ngôn ngữ cùng tên miền và không có URL tuyệt đối nào được tạo đây là phương án dự phòng an toàn.
111
+ 3. Nếu không có cái nào khả dụng (SSR không có tùy chọn rõ ràng), một URL tương đối sẽ được trả về cho các ngôn ngữ cùng tên miền và không có URL tuyệt đối nào được tạo - đây là phương án dự phòng an toàn.
112
112
 
113
113
  ```ts
114
- // Trình duyệt window.location.hostname === 'intlayer.org'
114
+ // Trình duyệt - window.location.hostname === 'intlayer.org'
115
115
  getLocalizedUrl("/about", "zh");
116
116
  // → "https://intlayer.zh/about" (tự động phát hiện từ window)
117
117
 
118
- // Từ một URL tuyệt đối tên miền được phát hiện tự động
118
+ // Từ một URL tuyệt đối - tên miền được phát hiện tự động
119
119
  getLocalizedUrl("https://intlayer.org/about", "zh");
120
120
  // → "https://intlayer.zh/about"
121
121
  ```
@@ -151,14 +151,14 @@ export const config = {
151
151
  };
152
152
  ```
153
153
 
154
- **Chuyển hướng** yêu cầu đến sai tên miền cho một tiền tố ngôn ngữ nhất định:
154
+ **Chuyển hướng** - yêu cầu đến sai tên miền cho một tiền tố ngôn ngữ nhất định:
155
155
 
156
156
  ```
157
157
  GET intlayer.org/zh/about
158
158
  → 301 https://intlayer.zh/about
159
159
  ```
160
160
 
161
- **Ghi lại (Rewrite)** yêu cầu đến tên miền độc quyền của ngôn ngữ mà không có tiền tố:
161
+ **Ghi lại (Rewrite)** - yêu cầu đến tên miền độc quyền của ngôn ngữ mà không có tiền tố:
162
162
 
163
163
  ```
164
164
  GET intlayer.zh/about
@@ -209,7 +209,7 @@ export const LocaleSwitcher = () => {
209
209
  };
210
210
  ```
211
211
 
212
- Không cần cấu hình thêm `useLocale` tự động phát hiện `window.location.hostname` bên trong và quyết định giữa `router.replace` (cùng tên miền) và `window.location.href` (khác tên miền).
212
+ Không cần cấu hình thêm - `useLocale` tự động phát hiện `window.location.hostname` bên trong và quyết định giữa `router.replace` (cùng tên miền) và `window.location.href` (khác tên miền).
213
213
 
214
214
  ## SEO: `hreflang` Liên kết thay thế
215
215