@intlayer/docs 7.0.7 → 7.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (726) hide show
  1. package/blog/ar/i18n_using_next-i18next.md +1068 -0
  2. package/blog/ar/i18n_using_next-intl.md +768 -0
  3. package/blog/ar/intlayer_with_react-intl.md +0 -4
  4. package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +5 -4
  5. package/blog/de/i18n_using_next-i18next.md +1107 -0
  6. package/blog/de/i18n_using_next-intl.md +760 -0
  7. package/blog/de/intlayer_with_react-intl.md +0 -4
  8. package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  9. package/blog/en/i18n_using_next-i18next.md +1073 -0
  10. package/blog/en/i18n_using_next-intl.md +757 -0
  11. package/blog/en/intlayer_with_i18next.md +71 -8
  12. package/blog/en/intlayer_with_next-i18next.md +71 -8
  13. package/blog/en/intlayer_with_next-intl.md +71 -8
  14. package/blog/en/intlayer_with_react-i18next.md +69 -8
  15. package/blog/en/intlayer_with_react-intl.md +68 -9
  16. package/blog/en/intlayer_with_vue-i18n.md +68 -7
  17. package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  18. package/blog/en/vue-i18n_vs_intlayer.md +2 -0
  19. package/blog/en-GB/i18n_using_next-i18next.md +1074 -0
  20. package/blog/en-GB/i18n_using_next-intl.md +757 -0
  21. package/blog/en-GB/intlayer_with_i18next.md +15 -6
  22. package/blog/en-GB/intlayer_with_next-i18next.md +16 -6
  23. package/blog/en-GB/intlayer_with_next-intl.md +16 -6
  24. package/blog/en-GB/intlayer_with_react-i18next.md +16 -7
  25. package/blog/en-GB/intlayer_with_react-intl.md +14 -9
  26. package/blog/en-GB/intlayer_with_vue-i18n.md +16 -7
  27. package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  28. package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  29. package/blog/en-GB/vue-i18n_vs_intlayer.md +2 -0
  30. package/blog/es/i18n_using_next-i18next.md +1066 -0
  31. package/blog/es/i18n_using_next-intl.md +757 -0
  32. package/blog/es/intlayer_with_react-intl.md +0 -4
  33. package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  34. package/blog/fr/i18n_using_next-i18next.md +1078 -0
  35. package/blog/fr/i18n_using_next-intl.md +759 -0
  36. package/blog/fr/intlayer_with_react-intl.md +0 -4
  37. package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  38. package/blog/hi/i18n_using_next-i18next.md +1068 -0
  39. package/blog/hi/i18n_using_next-intl.md +758 -0
  40. package/blog/hi/intlayer_with_react-intl.md +0 -4
  41. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  42. package/blog/id/i18n_using_next-i18next.md +1078 -0
  43. package/blog/id/i18n_using_next-intl.md +757 -0
  44. package/blog/id/index.md +69 -0
  45. package/blog/id/internationalization_and_SEO.md +364 -0
  46. package/blog/id/intlayer_with_react-intl.md +0 -4
  47. package/blog/id/list_i18n_technologies/CMS/drupal.md +143 -0
  48. package/blog/id/list_i18n_technologies/CMS/wix.md +167 -0
  49. package/blog/id/list_i18n_technologies/CMS/wordpress.md +188 -0
  50. package/blog/id/list_i18n_technologies/frameworks/angular.md +125 -0
  51. package/blog/id/list_i18n_technologies/frameworks/flutter.md +150 -0
  52. package/blog/id/list_i18n_technologies/frameworks/react-native.md +217 -0
  53. package/blog/id/list_i18n_technologies/frameworks/react.md +155 -0
  54. package/blog/id/list_i18n_technologies/frameworks/svelte.md +131 -0
  55. package/blog/id/list_i18n_technologies/frameworks/vue.md +130 -0
  56. package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1500 -0
  57. package/blog/id/nextjs-multilingual-seo-comparison.md +361 -0
  58. package/blog/id/rag_powered_documentation_assistant.md +288 -0
  59. package/blog/id/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  60. package/blog/id/vue-i18n_vs_intlayer.md +278 -0
  61. package/blog/id/what_is_internationalization.md +166 -0
  62. package/blog/it/i18n_using_next-i18next.md +1078 -0
  63. package/blog/it/i18n_using_next-intl.md +758 -0
  64. package/blog/it/intlayer_with_react-intl.md +0 -4
  65. package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +4 -0
  66. package/blog/it/vue-i18n_vs_intlayer.md +2 -0
  67. package/blog/ja/i18n_using_next-i18next.md +1078 -0
  68. package/blog/ja/i18n_using_next-intl.md +758 -0
  69. package/blog/ja/intlayer_with_react-intl.md +0 -4
  70. package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  71. package/blog/ko/i18n_using_next-i18next.md +1075 -0
  72. package/blog/ko/i18n_using_next-intl.md +759 -0
  73. package/blog/ko/intlayer_with_react-intl.md +0 -4
  74. package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  75. package/blog/pl/i18n_using_next-i18next.md +1078 -0
  76. package/blog/pl/i18n_using_next-intl.md +758 -0
  77. package/blog/pl/index.md +69 -0
  78. package/blog/pl/internationalization_and_SEO.md +363 -0
  79. package/blog/pl/intlayer_with_react-intl.md +0 -4
  80. package/blog/pl/list_i18n_technologies/CMS/drupal.md +143 -0
  81. package/blog/pl/list_i18n_technologies/CMS/wix.md +167 -0
  82. package/blog/pl/list_i18n_technologies/CMS/wordpress.md +196 -0
  83. package/blog/pl/list_i18n_technologies/frameworks/angular.md +125 -0
  84. package/blog/pl/list_i18n_technologies/frameworks/flutter.md +151 -0
  85. package/blog/pl/list_i18n_technologies/frameworks/react-native.md +217 -0
  86. package/blog/pl/list_i18n_technologies/frameworks/react.md +155 -0
  87. package/blog/pl/list_i18n_technologies/frameworks/svelte.md +131 -0
  88. package/blog/pl/list_i18n_technologies/frameworks/vue.md +130 -0
  89. package/blog/pl/next-i18next_vs_next-intl_vs_intlayer.md +1501 -0
  90. package/blog/pl/nextjs-multilingual-seo-comparison.md +362 -0
  91. package/blog/pl/rag_powered_documentation_assistant.md +288 -0
  92. package/blog/pl/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  93. package/blog/pl/vue-i18n_vs_intlayer.md +278 -0
  94. package/blog/pl/what_is_internationalization.md +167 -0
  95. package/blog/pt/i18n_using_next-i18next.md +1067 -0
  96. package/blog/pt/i18n_using_next-intl.md +760 -0
  97. package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  98. package/blog/ru/i18n_using_next-i18next.md +1106 -0
  99. package/blog/ru/i18n_using_next-intl.md +759 -0
  100. package/blog/ru/intlayer_with_react-intl.md +0 -4
  101. package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  102. package/blog/tr/i18n_using_next-i18next.md +1078 -0
  103. package/blog/tr/i18n_using_next-intl.md +760 -0
  104. package/blog/tr/intlayer_with_react-intl.md +0 -4
  105. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  106. package/blog/tr/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  107. package/blog/tr/vue-i18n_vs_intlayer.md +2 -0
  108. package/blog/vi/i18n_using_next-i18next.md +1080 -0
  109. package/blog/vi/i18n_using_next-intl.md +758 -0
  110. package/blog/vi/index.md +69 -0
  111. package/blog/vi/internationalization_and_SEO.md +363 -0
  112. package/blog/vi/intlayer_with_react-intl.md +0 -4
  113. package/blog/vi/list_i18n_technologies/CMS/drupal.md +143 -0
  114. package/blog/vi/list_i18n_technologies/CMS/wix.md +167 -0
  115. package/blog/vi/list_i18n_technologies/CMS/wordpress.md +188 -0
  116. package/blog/vi/list_i18n_technologies/frameworks/angular.md +125 -0
  117. package/blog/vi/list_i18n_technologies/frameworks/flutter.md +150 -0
  118. package/blog/vi/list_i18n_technologies/frameworks/react-native.md +217 -0
  119. package/blog/vi/list_i18n_technologies/frameworks/react.md +155 -0
  120. package/blog/vi/list_i18n_technologies/frameworks/svelte.md +131 -0
  121. package/blog/vi/list_i18n_technologies/frameworks/vue.md +130 -0
  122. package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1520 -0
  123. package/blog/vi/nextjs-multilingual-seo-comparison.md +362 -0
  124. package/blog/vi/rag_powered_documentation_assistant.md +288 -0
  125. package/blog/vi/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  126. package/blog/vi/vue-i18n_vs_intlayer.md +278 -0
  127. package/blog/vi/what_is_internationalization.md +168 -0
  128. package/blog/zh/i18n_using_next-i18next.md +1105 -0
  129. package/blog/zh/i18n_using_next-intl.md +758 -0
  130. package/blog/zh/intlayer_with_react-intl.md +0 -4
  131. package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +2 -0
  132. package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +2 -0
  133. package/dist/cjs/common.cjs +0 -4
  134. package/dist/cjs/common.cjs.map +1 -1
  135. package/dist/cjs/generated/blog.entry.cjs +38 -6
  136. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  137. package/dist/cjs/generated/docs.entry.cjs +0 -6
  138. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  139. package/dist/cjs/generated/frequentQuestions.entry.cjs +0 -6
  140. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  141. package/dist/cjs/generated/legal.entry.cjs +0 -6
  142. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  143. package/dist/esm/generated/blog.entry.mjs +38 -0
  144. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  145. package/dist/types/generated/blog.entry.d.ts +2 -0
  146. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  147. package/docs/ar/component_i18n.md +1 -1
  148. package/docs/ar/configuration.md +6 -0
  149. package/docs/ar/intlayer_cli.md +8 -3
  150. package/docs/ar/intlayer_with_next-i18next.md +619 -0
  151. package/docs/ar/intlayer_with_next-intl.md +446 -0
  152. package/docs/ar/intlayer_with_nextjs_16.md +21 -0
  153. package/docs/ar/intlayer_with_tanstack.md +4 -0
  154. package/docs/ar/intlayer_with_vite+react.md +4 -0
  155. package/docs/de/component_i18n.md +1 -1
  156. package/docs/de/configuration.md +6 -0
  157. package/docs/de/intlayer_cli.md +8 -3
  158. package/docs/de/intlayer_with_next-i18next.md +627 -0
  159. package/docs/de/intlayer_with_next-intl.md +451 -0
  160. package/docs/de/intlayer_with_nextjs_16.md +21 -0
  161. package/docs/de/intlayer_with_tanstack.md +4 -0
  162. package/docs/de/intlayer_with_vite+react.md +4 -0
  163. package/docs/en/component_i18n.md +1 -1
  164. package/docs/en/intlayer_cli.md +8 -1
  165. package/docs/en/intlayer_with_astro.md +10 -2
  166. package/docs/en/intlayer_with_create_react_app.md +8 -0
  167. package/docs/en/intlayer_with_lynx+react.md +8 -0
  168. package/docs/en/intlayer_with_nestjs.md +10 -0
  169. package/docs/en/intlayer_with_nextjs_14.md +10 -2
  170. package/docs/en/intlayer_with_nextjs_15.md +21 -4
  171. package/docs/en/intlayer_with_nextjs_16.md +17 -0
  172. package/docs/en/intlayer_with_nuxt.md +8 -0
  173. package/docs/en/intlayer_with_react_native+expo.md +10 -2
  174. package/docs/en/intlayer_with_react_router_v7.md +8 -0
  175. package/docs/en/intlayer_with_tanstack.md +10 -0
  176. package/docs/en/intlayer_with_vite+preact.md +10 -2
  177. package/docs/en/intlayer_with_vite+react.md +21 -4
  178. package/docs/en/intlayer_with_vite+vue.md +10 -2
  179. package/docs/en-GB/component_i18n.md +1 -1
  180. package/docs/en-GB/configuration.md +6 -0
  181. package/docs/en-GB/intlayer_cli.md +8 -3
  182. package/docs/en-GB/intlayer_with_angular.md +4 -4
  183. package/docs/en-GB/intlayer_with_express.md +4 -4
  184. package/docs/en-GB/intlayer_with_lynx+react.md +12 -12
  185. package/{blog/en/_intlayer_with_next-i18next.md → docs/en-GB/intlayer_with_next-i18next.md} +241 -42
  186. package/{blog/en/_intlayer_with_next-intl.md → docs/en-GB/intlayer_with_next-intl.md} +144 -29
  187. package/docs/en-GB/intlayer_with_nextjs_16.md +21 -0
  188. package/docs/en-GB/intlayer_with_tanstack.md +5 -1
  189. package/docs/en-GB/intlayer_with_vite+react.md +4 -0
  190. package/docs/en-GB/packages/next-intlayer/t.md +2 -2
  191. package/docs/es/component_i18n.md +1 -1
  192. package/docs/es/configuration.md +6 -0
  193. package/docs/es/intlayer_cli.md +8 -3
  194. package/docs/es/intlayer_with_next-i18next.md +628 -0
  195. package/docs/es/intlayer_with_next-intl.md +446 -0
  196. package/docs/es/intlayer_with_nextjs_16.md +21 -0
  197. package/docs/es/intlayer_with_tanstack.md +4 -0
  198. package/docs/es/intlayer_with_vite+react.md +4 -0
  199. package/docs/fr/configuration.md +6 -0
  200. package/docs/fr/intlayer_cli.md +8 -3
  201. package/docs/fr/intlayer_with_next-i18next.md +628 -0
  202. package/docs/fr/intlayer_with_next-intl.md +446 -0
  203. package/docs/fr/intlayer_with_nextjs_16.md +23 -2
  204. package/docs/fr/intlayer_with_tanstack.md +4 -0
  205. package/docs/fr/intlayer_with_vite+react.md +4 -0
  206. package/docs/hi/component_i18n.md +1 -1
  207. package/docs/hi/configuration.md +6 -0
  208. package/docs/hi/intlayer_cli.md +8 -0
  209. package/docs/hi/intlayer_with_next-i18next.md +628 -0
  210. package/docs/hi/intlayer_with_next-intl.md +446 -0
  211. package/docs/hi/intlayer_with_nextjs_16.md +21 -0
  212. package/docs/hi/intlayer_with_tanstack.md +4 -0
  213. package/docs/hi/intlayer_with_vite+react.md +4 -0
  214. package/docs/id/CI_CD.md +198 -0
  215. package/docs/id/autoFill.md +284 -0
  216. package/docs/id/component_i18n.md +186 -0
  217. package/docs/id/configuration.md +710 -0
  218. package/docs/id/dictionary/condition.md +231 -0
  219. package/docs/id/dictionary/content_file.md +1092 -0
  220. package/docs/id/dictionary/enumeration.md +245 -0
  221. package/docs/id/dictionary/file.md +237 -0
  222. package/docs/id/dictionary/function_fetching.md +214 -0
  223. package/docs/id/dictionary/gender.md +273 -0
  224. package/docs/id/dictionary/insertion.md +192 -0
  225. package/docs/id/dictionary/markdown.md +381 -0
  226. package/docs/id/dictionary/nesting.md +273 -0
  227. package/docs/id/dictionary/translation.md +310 -0
  228. package/docs/id/formatters.md +596 -0
  229. package/docs/id/how_works_intlayer.md +256 -0
  230. package/docs/id/index.md +176 -0
  231. package/docs/id/interest_of_intlayer.md +293 -0
  232. package/docs/id/intlayer_CMS.md +549 -0
  233. package/docs/id/intlayer_cli.md +850 -0
  234. package/docs/id/intlayer_visual_editor.md +288 -0
  235. package/docs/id/intlayer_with_angular.md +694 -0
  236. package/docs/id/intlayer_with_astro.md +252 -0
  237. package/docs/id/intlayer_with_create_react_app.md +1233 -0
  238. package/docs/id/intlayer_with_express.md +411 -0
  239. package/docs/id/intlayer_with_lynx+react.md +518 -0
  240. package/docs/id/intlayer_with_nestjs.md +272 -0
  241. package/docs/id/intlayer_with_next-i18next.md +628 -0
  242. package/docs/id/intlayer_with_next-intl.md +446 -0
  243. package/docs/id/intlayer_with_nextjs_14.md +1617 -0
  244. package/docs/id/intlayer_with_nextjs_15.md +1698 -0
  245. package/docs/id/intlayer_with_nextjs_16.md +21 -0
  246. package/docs/id/intlayer_with_nextjs_page_router.md +1478 -0
  247. package/docs/id/intlayer_with_nuxt.md +808 -0
  248. package/docs/id/intlayer_with_react_native+expo.md +699 -0
  249. package/docs/id/intlayer_with_react_router_v7.md +496 -0
  250. package/docs/id/intlayer_with_tanstack.md +564 -0
  251. package/docs/id/intlayer_with_vite+preact.md +1737 -0
  252. package/docs/id/intlayer_with_vite+react.md +1413 -0
  253. package/docs/id/intlayer_with_vite+solid.md +289 -0
  254. package/docs/id/intlayer_with_vite+svelte.md +289 -0
  255. package/docs/id/intlayer_with_vite+vue.md +1088 -0
  256. package/docs/id/introduction.md +218 -0
  257. package/docs/id/locale_mapper.md +242 -0
  258. package/docs/id/mcp_server.md +211 -0
  259. package/docs/id/packages/express-intlayer/t.md +458 -0
  260. package/docs/id/packages/intlayer/getConfiguration.md +145 -0
  261. package/docs/id/packages/intlayer/getEnumeration.md +159 -0
  262. package/docs/id/packages/intlayer/getHTMLTextDir.md +122 -0
  263. package/docs/id/packages/intlayer/getLocaleLang.md +81 -0
  264. package/docs/id/packages/intlayer/getLocaleName.md +119 -0
  265. package/docs/id/packages/intlayer/getLocalizedUrl.md +309 -0
  266. package/docs/id/packages/intlayer/getMultilingualUrls.md +223 -0
  267. package/docs/id/packages/intlayer/getPathWithoutLocale.md +75 -0
  268. package/docs/id/packages/intlayer/getTranslation.md +190 -0
  269. package/docs/id/packages/intlayer/getTranslationContent.md +188 -0
  270. package/docs/id/packages/next-intlayer/t.md +352 -0
  271. package/docs/id/packages/next-intlayer/useDictionary.md +271 -0
  272. package/docs/id/packages/next-intlayer/useIntlayer.md +264 -0
  273. package/docs/id/packages/next-intlayer/useLocale.md +166 -0
  274. package/docs/id/packages/react-intlayer/t.md +303 -0
  275. package/docs/id/packages/react-intlayer/useDictionary.md +287 -0
  276. package/docs/id/packages/react-intlayer/useI18n.md +267 -0
  277. package/docs/id/packages/react-intlayer/useIntlayer.md +254 -0
  278. package/docs/id/packages/react-intlayer/useLocale.md +210 -0
  279. package/docs/id/per_locale_file.md +323 -0
  280. package/docs/id/readme.md +261 -0
  281. package/docs/id/releases/v6.md +305 -0
  282. package/docs/id/roadmap.md +362 -0
  283. package/docs/id/testing.md +202 -0
  284. package/docs/id/vs_code_extension.md +126 -0
  285. package/docs/it/component_i18n.md +1 -1
  286. package/docs/it/configuration.md +6 -0
  287. package/docs/it/intlayer_cli.md +8 -3
  288. package/docs/it/intlayer_with_next-i18next.md +628 -0
  289. package/docs/it/intlayer_with_next-intl.md +446 -0
  290. package/docs/it/intlayer_with_nextjs_16.md +21 -0
  291. package/docs/it/intlayer_with_tanstack.md +4 -0
  292. package/docs/it/intlayer_with_vite+react.md +4 -0
  293. package/docs/ja/component_i18n.md +1 -1
  294. package/docs/ja/configuration.md +6 -0
  295. package/docs/ja/intlayer_cli.md +8 -3
  296. package/docs/ja/intlayer_with_next-i18next.md +627 -0
  297. package/docs/ja/intlayer_with_next-intl.md +446 -0
  298. package/docs/ja/intlayer_with_nextjs_16.md +21 -0
  299. package/docs/ja/intlayer_with_tanstack.md +4 -0
  300. package/docs/ja/intlayer_with_vite+react.md +4 -0
  301. package/docs/ko/configuration.md +6 -0
  302. package/docs/ko/intlayer_cli.md +8 -3
  303. package/docs/ko/intlayer_with_next-i18next.md +627 -0
  304. package/docs/ko/intlayer_with_next-intl.md +446 -0
  305. package/docs/ko/intlayer_with_nextjs_16.md +21 -0
  306. package/docs/ko/intlayer_with_tanstack.md +4 -0
  307. package/docs/ko/intlayer_with_vite+react.md +4 -0
  308. package/docs/pl/CI_CD.md +198 -0
  309. package/docs/pl/autoFill.md +284 -0
  310. package/docs/pl/component_i18n.md +186 -0
  311. package/docs/pl/configuration.md +710 -0
  312. package/docs/pl/dictionary/condition.md +232 -0
  313. package/docs/pl/dictionary/content_file.md +1130 -0
  314. package/docs/pl/dictionary/enumeration.md +245 -0
  315. package/docs/pl/dictionary/file.md +234 -0
  316. package/docs/pl/dictionary/function_fetching.md +214 -0
  317. package/docs/pl/dictionary/gender.md +276 -0
  318. package/docs/pl/dictionary/insertion.md +188 -0
  319. package/docs/pl/dictionary/markdown.md +408 -0
  320. package/docs/pl/dictionary/nesting.md +273 -0
  321. package/docs/pl/dictionary/translation.md +310 -0
  322. package/docs/pl/formatters.md +596 -0
  323. package/docs/pl/how_works_intlayer.md +256 -0
  324. package/docs/pl/index.md +176 -0
  325. package/docs/pl/interest_of_intlayer.md +291 -0
  326. package/docs/pl/intlayer_CMS.md +549 -0
  327. package/docs/pl/intlayer_cli.md +857 -0
  328. package/docs/pl/intlayer_visual_editor.md +288 -0
  329. package/docs/pl/intlayer_with_angular.md +690 -0
  330. package/docs/pl/intlayer_with_astro.md +280 -0
  331. package/docs/pl/intlayer_with_create_react_app.md +1235 -0
  332. package/docs/pl/intlayer_with_express.md +411 -0
  333. package/docs/pl/intlayer_with_lynx+react.md +518 -0
  334. package/docs/pl/intlayer_with_nestjs.md +272 -0
  335. package/docs/pl/intlayer_with_next-i18next.md +628 -0
  336. package/docs/pl/intlayer_with_next-intl.md +446 -0
  337. package/docs/pl/intlayer_with_nextjs_14.md +1594 -0
  338. package/docs/pl/intlayer_with_nextjs_15.md +1701 -0
  339. package/docs/pl/intlayer_with_nextjs_16.md +21 -0
  340. package/docs/pl/intlayer_with_nextjs_page_router.md +1513 -0
  341. package/docs/pl/intlayer_with_nuxt.md +885 -0
  342. package/docs/pl/intlayer_with_react_native+expo.md +698 -0
  343. package/docs/pl/intlayer_with_react_router_v7.md +503 -0
  344. package/docs/pl/intlayer_with_tanstack.md +562 -0
  345. package/docs/pl/intlayer_with_vite+preact.md +1736 -0
  346. package/docs/pl/intlayer_with_vite+react.md +1438 -0
  347. package/docs/pl/intlayer_with_vite+solid.md +290 -0
  348. package/docs/pl/intlayer_with_vite+svelte.md +289 -0
  349. package/docs/pl/intlayer_with_vite+vue.md +1116 -0
  350. package/docs/pl/introduction.md +209 -0
  351. package/docs/pl/locale_mapper.md +242 -0
  352. package/docs/pl/mcp_server.md +211 -0
  353. package/docs/pl/packages/express-intlayer/t.md +458 -0
  354. package/docs/pl/packages/intlayer/getConfiguration.md +146 -0
  355. package/docs/pl/packages/intlayer/getEnumeration.md +160 -0
  356. package/docs/pl/packages/intlayer/getHTMLTextDir.md +121 -0
  357. package/docs/pl/packages/intlayer/getLocaleLang.md +81 -0
  358. package/docs/pl/packages/intlayer/getLocaleName.md +118 -0
  359. package/docs/pl/packages/intlayer/getLocalizedUrl.md +300 -0
  360. package/docs/pl/packages/intlayer/getMultilingualUrls.md +221 -0
  361. package/docs/pl/packages/intlayer/getPathWithoutLocale.md +75 -0
  362. package/docs/pl/packages/intlayer/getTranslation.md +190 -0
  363. package/docs/pl/packages/intlayer/getTranslationContent.md +189 -0
  364. package/docs/pl/packages/next-intlayer/t.md +353 -0
  365. package/docs/pl/packages/next-intlayer/useDictionary.md +270 -0
  366. package/docs/pl/packages/next-intlayer/useIntlayer.md +263 -0
  367. package/docs/pl/packages/next-intlayer/useLocale.md +166 -0
  368. package/docs/pl/packages/react-intlayer/t.md +303 -0
  369. package/docs/pl/packages/react-intlayer/useDictionary.md +289 -0
  370. package/docs/pl/packages/react-intlayer/useI18n.md +249 -0
  371. package/docs/pl/packages/react-intlayer/useIntlayer.md +256 -0
  372. package/docs/pl/packages/react-intlayer/useLocale.md +210 -0
  373. package/docs/pl/per_locale_file.md +321 -0
  374. package/docs/pl/readme.md +261 -0
  375. package/docs/pl/releases/v6.md +305 -0
  376. package/docs/pl/roadmap.md +362 -0
  377. package/docs/pl/testing.md +202 -0
  378. package/docs/pl/vs_code_extension.md +126 -0
  379. package/docs/pt/component_i18n.md +1 -1
  380. package/docs/pt/configuration.md +6 -0
  381. package/docs/pt/intlayer_cli.md +8 -3
  382. package/docs/pt/intlayer_with_next-i18next.md +627 -0
  383. package/docs/pt/intlayer_with_next-intl.md +446 -0
  384. package/docs/pt/intlayer_with_nextjs_16.md +21 -0
  385. package/docs/pt/intlayer_with_tanstack.md +4 -0
  386. package/docs/pt/intlayer_with_vite+react.md +4 -0
  387. package/docs/ru/component_i18n.md +1 -1
  388. package/docs/ru/configuration.md +6 -0
  389. package/docs/ru/intlayer_cli.md +301 -22
  390. package/docs/ru/intlayer_with_next-i18next.md +629 -0
  391. package/docs/ru/intlayer_with_next-intl.md +448 -0
  392. package/docs/ru/intlayer_with_nextjs_16.md +21 -0
  393. package/docs/ru/intlayer_with_tanstack.md +4 -0
  394. package/docs/ru/intlayer_with_vite+react.md +4 -0
  395. package/docs/tr/component_i18n.md +1 -1
  396. package/docs/tr/configuration.md +6 -0
  397. package/docs/tr/intlayer_cli.md +8 -0
  398. package/docs/tr/intlayer_with_next-i18next.md +627 -0
  399. package/docs/tr/intlayer_with_next-intl.md +446 -0
  400. package/docs/tr/intlayer_with_nextjs_16.md +21 -0
  401. package/docs/tr/intlayer_with_tanstack.md +4 -0
  402. package/docs/tr/intlayer_with_vite+react.md +4 -0
  403. package/docs/vi/CI_CD.md +198 -0
  404. package/docs/vi/autoFill.md +284 -0
  405. package/docs/vi/component_i18n.md +186 -0
  406. package/docs/vi/configuration.md +710 -0
  407. package/docs/vi/dictionary/condition.md +237 -0
  408. package/docs/vi/dictionary/content_file.md +1115 -0
  409. package/docs/vi/dictionary/enumeration.md +255 -0
  410. package/docs/vi/dictionary/file.md +234 -0
  411. package/docs/vi/dictionary/function_fetching.md +212 -0
  412. package/docs/vi/dictionary/gender.md +275 -0
  413. package/docs/vi/dictionary/insertion.md +191 -0
  414. package/docs/vi/dictionary/markdown.md +381 -0
  415. package/docs/vi/dictionary/nesting.md +273 -0
  416. package/docs/vi/dictionary/translation.md +309 -0
  417. package/docs/vi/formatters.md +595 -0
  418. package/docs/vi/how_works_intlayer.md +256 -0
  419. package/docs/vi/index.md +174 -0
  420. package/docs/vi/interest_of_intlayer.md +292 -0
  421. package/docs/vi/intlayer_CMS.md +549 -0
  422. package/docs/vi/intlayer_cli.md +850 -0
  423. package/docs/vi/intlayer_visual_editor.md +288 -0
  424. package/docs/vi/intlayer_with_angular.md +692 -0
  425. package/docs/vi/intlayer_with_astro.md +252 -0
  426. package/docs/vi/intlayer_with_create_react_app.md +1230 -0
  427. package/docs/vi/intlayer_with_express.md +409 -0
  428. package/docs/vi/intlayer_with_lynx+react.md +520 -0
  429. package/docs/vi/intlayer_with_nestjs.md +272 -0
  430. package/docs/vi/intlayer_with_next-i18next.md +628 -0
  431. package/docs/vi/intlayer_with_next-intl.md +446 -0
  432. package/docs/vi/intlayer_with_nextjs_14.md +1584 -0
  433. package/docs/vi/intlayer_with_nextjs_15.md +1738 -0
  434. package/docs/vi/intlayer_with_nextjs_16.md +21 -0
  435. package/docs/vi/intlayer_with_nextjs_page_router.md +1504 -0
  436. package/docs/vi/intlayer_with_nuxt.md +821 -0
  437. package/docs/vi/intlayer_with_react_native+expo.md +700 -0
  438. package/docs/vi/intlayer_with_react_router_v7.md +498 -0
  439. package/docs/vi/intlayer_with_tanstack.md +562 -0
  440. package/docs/vi/intlayer_with_vite+preact.md +1722 -0
  441. package/docs/vi/intlayer_with_vite+react.md +1407 -0
  442. package/docs/vi/intlayer_with_vite+solid.md +287 -0
  443. package/docs/vi/intlayer_with_vite+svelte.md +289 -0
  444. package/docs/vi/intlayer_with_vite+vue.md +1071 -0
  445. package/docs/vi/introduction.md +215 -0
  446. package/docs/vi/locale_mapper.md +242 -0
  447. package/docs/vi/mcp_server.md +211 -0
  448. package/docs/vi/packages/express-intlayer/t.md +457 -0
  449. package/docs/vi/packages/intlayer/getConfiguration.md +145 -0
  450. package/docs/vi/packages/intlayer/getEnumeration.md +162 -0
  451. package/docs/vi/packages/intlayer/getHTMLTextDir.md +121 -0
  452. package/docs/vi/packages/intlayer/getLocaleLang.md +81 -0
  453. package/docs/vi/packages/intlayer/getLocaleName.md +129 -0
  454. package/docs/vi/packages/intlayer/getLocalizedUrl.md +309 -0
  455. package/docs/vi/packages/intlayer/getMultilingualUrls.md +221 -0
  456. package/docs/vi/packages/intlayer/getPathWithoutLocale.md +75 -0
  457. package/docs/vi/packages/intlayer/getTranslation.md +201 -0
  458. package/docs/vi/packages/intlayer/getTranslationContent.md +188 -0
  459. package/docs/vi/packages/next-intlayer/t.md +352 -0
  460. package/docs/vi/packages/next-intlayer/useDictionary.md +273 -0
  461. package/docs/vi/packages/next-intlayer/useIntlayer.md +264 -0
  462. package/docs/vi/packages/next-intlayer/useLocale.md +166 -0
  463. package/docs/vi/packages/react-intlayer/t.md +304 -0
  464. package/docs/vi/packages/react-intlayer/useDictionary.md +288 -0
  465. package/docs/vi/packages/react-intlayer/useI18n.md +295 -0
  466. package/docs/vi/packages/react-intlayer/useIntlayer.md +256 -0
  467. package/docs/vi/packages/react-intlayer/useLocale.md +210 -0
  468. package/docs/vi/per_locale_file.md +326 -0
  469. package/docs/vi/readme.md +261 -0
  470. package/docs/vi/releases/v6.md +305 -0
  471. package/docs/vi/roadmap.md +346 -0
  472. package/docs/vi/testing.md +202 -0
  473. package/docs/vi/vs_code_extension.md +126 -0
  474. package/docs/zh/configuration.md +6 -0
  475. package/docs/zh/intlayer_cli.md +8 -3
  476. package/docs/zh/intlayer_with_next-i18next.md +628 -0
  477. package/docs/zh/intlayer_with_next-intl.md +448 -0
  478. package/docs/zh/intlayer_with_nextjs_16.md +21 -0
  479. package/docs/zh/intlayer_with_tanstack.md +4 -0
  480. package/docs/zh/intlayer_with_vite+react.md +4 -0
  481. package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -2
  482. package/frequent_questions/ar/array_as_content_declaration.md +1 -2
  483. package/frequent_questions/ar/build_dictionaries.md +1 -2
  484. package/frequent_questions/ar/build_error_CI_CD.md +1 -2
  485. package/frequent_questions/ar/bun_set_up.md +1 -2
  486. package/frequent_questions/ar/customized_locale_list.md +1 -2
  487. package/frequent_questions/ar/domain_routing.md +1 -2
  488. package/frequent_questions/ar/esbuild_error.md +1 -2
  489. package/frequent_questions/ar/get_locale_cookie.md +1 -2
  490. package/frequent_questions/ar/intlayer_command_undefined.md +1 -2
  491. package/frequent_questions/ar/locale_incorect_in_url.md +1 -2
  492. package/frequent_questions/ar/static_rendering.md +1 -3
  493. package/frequent_questions/ar/translated_path_url.md +1 -2
  494. package/frequent_questions/ar/unknown_command.md +1 -2
  495. package/frequent_questions/de/SSR_Next_no_[locale].md +1 -2
  496. package/frequent_questions/de/array_as_content_declaration.md +1 -2
  497. package/frequent_questions/de/build_dictionaries.md +1 -2
  498. package/frequent_questions/de/build_error_CI_CD.md +1 -2
  499. package/frequent_questions/de/bun_set_up.md +1 -2
  500. package/frequent_questions/de/customized_locale_list.md +1 -2
  501. package/frequent_questions/de/domain_routing.md +1 -2
  502. package/frequent_questions/de/esbuild_error.md +1 -2
  503. package/frequent_questions/de/get_locale_cookie.md +1 -2
  504. package/frequent_questions/de/intlayer_command_undefined.md +1 -2
  505. package/frequent_questions/de/locale_incorect_in_url.md +1 -2
  506. package/frequent_questions/de/static_rendering.md +1 -3
  507. package/frequent_questions/de/translated_path_url.md +1 -2
  508. package/frequent_questions/de/unknown_command.md +1 -2
  509. package/frequent_questions/en/SSR_Next_no_[locale].md +1 -2
  510. package/frequent_questions/en/array_as_content_declaration.md +1 -2
  511. package/frequent_questions/en/build_dictionaries.md +1 -2
  512. package/frequent_questions/en/build_error_CI_CD.md +1 -2
  513. package/frequent_questions/en/bun_set_up.md +1 -2
  514. package/frequent_questions/en/customized_locale_list.md +1 -2
  515. package/frequent_questions/en/domain_routing.md +1 -2
  516. package/frequent_questions/en/esbuild_error.md +1 -2
  517. package/frequent_questions/en/get_locale_cookie.md +1 -2
  518. package/frequent_questions/en/intlayer_command_undefined.md +1 -2
  519. package/frequent_questions/en/locale_incorect_in_url.md +1 -2
  520. package/frequent_questions/en/static_rendering.md +1 -3
  521. package/frequent_questions/en/translated_path_url.md +1 -2
  522. package/frequent_questions/en/unknown_command.md +1 -2
  523. package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -2
  524. package/frequent_questions/en-GB/array_as_content_declaration.md +1 -2
  525. package/frequent_questions/en-GB/build_dictionaries.md +1 -2
  526. package/frequent_questions/en-GB/build_error_CI_CD.md +1 -2
  527. package/frequent_questions/en-GB/bun_set_up.md +1 -2
  528. package/frequent_questions/en-GB/customized_locale_list.md +1 -2
  529. package/frequent_questions/en-GB/domain_routing.md +1 -2
  530. package/frequent_questions/en-GB/esbuild_error.md +1 -2
  531. package/frequent_questions/en-GB/get_locale_cookie.md +1 -2
  532. package/frequent_questions/en-GB/intlayer_command_undefined.md +1 -2
  533. package/frequent_questions/en-GB/locale_incorect_in_url.md +1 -2
  534. package/frequent_questions/en-GB/static_rendering.md +1 -3
  535. package/frequent_questions/en-GB/translated_path_url.md +1 -2
  536. package/frequent_questions/en-GB/unknown_command.md +1 -2
  537. package/frequent_questions/es/SSR_Next_no_[locale].md +1 -2
  538. package/frequent_questions/es/array_as_content_declaration.md +1 -2
  539. package/frequent_questions/es/build_dictionaries.md +1 -2
  540. package/frequent_questions/es/build_error_CI_CD.md +1 -2
  541. package/frequent_questions/es/bun_set_up.md +1 -2
  542. package/frequent_questions/es/customized_locale_list.md +1 -2
  543. package/frequent_questions/es/domain_routing.md +1 -2
  544. package/frequent_questions/es/esbuild_error.md +1 -2
  545. package/frequent_questions/es/get_locale_cookie.md +1 -2
  546. package/frequent_questions/es/intlayer_command_undefined.md +1 -2
  547. package/frequent_questions/es/locale_incorect_in_url.md +1 -2
  548. package/frequent_questions/es/static_rendering.md +1 -3
  549. package/frequent_questions/es/translated_path_url.md +1 -2
  550. package/frequent_questions/es/unknown_command.md +1 -2
  551. package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -2
  552. package/frequent_questions/fr/array_as_content_declaration.md +1 -2
  553. package/frequent_questions/fr/build_dictionaries.md +1 -2
  554. package/frequent_questions/fr/build_error_CI_CD.md +1 -2
  555. package/frequent_questions/fr/bun_set_up.md +1 -2
  556. package/frequent_questions/fr/customized_locale_list.md +1 -2
  557. package/frequent_questions/fr/domain_routing.md +1 -2
  558. package/frequent_questions/fr/esbuild_error.md +1 -2
  559. package/frequent_questions/fr/get_locale_cookie.md +1 -2
  560. package/frequent_questions/fr/intlayer_command_undefined.md +1 -2
  561. package/frequent_questions/fr/locale_incorect_in_url.md +1 -2
  562. package/frequent_questions/fr/static_rendering.md +1 -3
  563. package/frequent_questions/fr/translated_path_url.md +1 -2
  564. package/frequent_questions/fr/unknown_command.md +1 -2
  565. package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -2
  566. package/frequent_questions/hi/array_as_content_declaration.md +1 -2
  567. package/frequent_questions/hi/build_dictionaries.md +1 -2
  568. package/frequent_questions/hi/build_error_CI_CD.md +1 -2
  569. package/frequent_questions/hi/bun_set_up.md +1 -2
  570. package/frequent_questions/hi/customized_locale_list.md +1 -2
  571. package/frequent_questions/hi/domain_routing.md +1 -2
  572. package/frequent_questions/hi/esbuild_error.md +1 -2
  573. package/frequent_questions/hi/get_locale_cookie.md +1 -2
  574. package/frequent_questions/hi/intlayer_command_undefined.md +1 -2
  575. package/frequent_questions/hi/locale_incorect_in_url.md +1 -2
  576. package/frequent_questions/hi/static_rendering.md +1 -3
  577. package/frequent_questions/hi/translated_path_url.md +1 -2
  578. package/frequent_questions/hi/unknown_command.md +1 -2
  579. package/frequent_questions/id/SSR_Next_no_[locale].md +104 -0
  580. package/frequent_questions/id/array_as_content_declaration.md +71 -0
  581. package/frequent_questions/id/build_dictionaries.md +58 -0
  582. package/frequent_questions/id/build_error_CI_CD.md +74 -0
  583. package/frequent_questions/id/bun_set_up.md +53 -0
  584. package/frequent_questions/id/customized_locale_list.md +64 -0
  585. package/frequent_questions/id/domain_routing.md +113 -0
  586. package/frequent_questions/id/esbuild_error.md +29 -0
  587. package/frequent_questions/id/get_locale_cookie.md +142 -0
  588. package/frequent_questions/id/intlayer_command_undefined.md +155 -0
  589. package/frequent_questions/id/locale_incorect_in_url.md +73 -0
  590. package/frequent_questions/id/static_rendering.md +44 -0
  591. package/frequent_questions/id/translated_path_url.md +55 -0
  592. package/frequent_questions/id/unknown_command.md +97 -0
  593. package/frequent_questions/it/SSR_Next_no_[locale].md +1 -2
  594. package/frequent_questions/it/array_as_content_declaration.md +1 -2
  595. package/frequent_questions/it/build_dictionaries.md +1 -2
  596. package/frequent_questions/it/build_error_CI_CD.md +1 -2
  597. package/frequent_questions/it/bun_set_up.md +1 -2
  598. package/frequent_questions/it/customized_locale_list.md +1 -2
  599. package/frequent_questions/it/domain_routing.md +1 -2
  600. package/frequent_questions/it/esbuild_error.md +1 -2
  601. package/frequent_questions/it/get_locale_cookie.md +1 -2
  602. package/frequent_questions/it/intlayer_command_undefined.md +1 -2
  603. package/frequent_questions/it/locale_incorect_in_url.md +1 -2
  604. package/frequent_questions/it/static_rendering.md +1 -3
  605. package/frequent_questions/it/translated_path_url.md +1 -2
  606. package/frequent_questions/it/unknown_command.md +1 -2
  607. package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -2
  608. package/frequent_questions/ja/array_as_content_declaration.md +1 -2
  609. package/frequent_questions/ja/build_dictionaries.md +1 -2
  610. package/frequent_questions/ja/build_error_CI_CD.md +1 -2
  611. package/frequent_questions/ja/bun_set_up.md +1 -2
  612. package/frequent_questions/ja/customized_locale_list.md +1 -2
  613. package/frequent_questions/ja/domain_routing.md +1 -2
  614. package/frequent_questions/ja/esbuild_error.md +1 -2
  615. package/frequent_questions/ja/get_locale_cookie.md +1 -2
  616. package/frequent_questions/ja/intlayer_command_undefined.md +1 -2
  617. package/frequent_questions/ja/locale_incorect_in_url.md +1 -2
  618. package/frequent_questions/ja/static_rendering.md +1 -3
  619. package/frequent_questions/ja/translated_path_url.md +1 -2
  620. package/frequent_questions/ja/unknown_command.md +1 -2
  621. package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -2
  622. package/frequent_questions/ko/array_as_content_declaration.md +1 -2
  623. package/frequent_questions/ko/build_dictionaries.md +1 -2
  624. package/frequent_questions/ko/build_error_CI_CD.md +1 -2
  625. package/frequent_questions/ko/bun_set_up.md +1 -2
  626. package/frequent_questions/ko/customized_locale_list.md +1 -2
  627. package/frequent_questions/ko/domain_routing.md +1 -2
  628. package/frequent_questions/ko/esbuild_error.md +1 -2
  629. package/frequent_questions/ko/get_locale_cookie.md +1 -2
  630. package/frequent_questions/ko/intlayer_command_undefined.md +1 -2
  631. package/frequent_questions/ko/locale_incorect_in_url.md +1 -2
  632. package/frequent_questions/ko/static_rendering.md +1 -3
  633. package/frequent_questions/ko/translated_path_url.md +1 -2
  634. package/frequent_questions/ko/unknown_command.md +1 -2
  635. package/frequent_questions/pl/SSR_Next_no_[locale].md +104 -0
  636. package/frequent_questions/pl/array_as_content_declaration.md +71 -0
  637. package/frequent_questions/pl/build_dictionaries.md +58 -0
  638. package/frequent_questions/pl/build_error_CI_CD.md +74 -0
  639. package/frequent_questions/pl/bun_set_up.md +54 -0
  640. package/frequent_questions/pl/customized_locale_list.md +64 -0
  641. package/frequent_questions/pl/domain_routing.md +113 -0
  642. package/frequent_questions/pl/esbuild_error.md +29 -0
  643. package/frequent_questions/pl/get_locale_cookie.md +142 -0
  644. package/frequent_questions/pl/intlayer_command_undefined.md +155 -0
  645. package/frequent_questions/pl/locale_incorect_in_url.md +73 -0
  646. package/frequent_questions/pl/static_rendering.md +44 -0
  647. package/frequent_questions/pl/translated_path_url.md +55 -0
  648. package/frequent_questions/pl/unknown_command.md +97 -0
  649. package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -2
  650. package/frequent_questions/pt/array_as_content_declaration.md +1 -2
  651. package/frequent_questions/pt/build_dictionaries.md +1 -2
  652. package/frequent_questions/pt/build_error_CI_CD.md +1 -2
  653. package/frequent_questions/pt/bun_set_up.md +1 -2
  654. package/frequent_questions/pt/customized_locale_list.md +1 -2
  655. package/frequent_questions/pt/domain_routing.md +1 -2
  656. package/frequent_questions/pt/esbuild_error.md +1 -2
  657. package/frequent_questions/pt/get_locale_cookie.md +1 -2
  658. package/frequent_questions/pt/intlayer_command_undefined.md +1 -2
  659. package/frequent_questions/pt/locale_incorect_in_url.md +1 -2
  660. package/frequent_questions/pt/static_rendering.md +1 -3
  661. package/frequent_questions/pt/translated_path_url.md +1 -2
  662. package/frequent_questions/pt/unknown_command.md +1 -2
  663. package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -2
  664. package/frequent_questions/ru/array_as_content_declaration.md +1 -2
  665. package/frequent_questions/ru/build_dictionaries.md +1 -2
  666. package/frequent_questions/ru/build_error_CI_CD.md +1 -2
  667. package/frequent_questions/ru/bun_set_up.md +1 -2
  668. package/frequent_questions/ru/customized_locale_list.md +1 -2
  669. package/frequent_questions/ru/domain_routing.md +1 -2
  670. package/frequent_questions/ru/esbuild_error.md +1 -2
  671. package/frequent_questions/ru/get_locale_cookie.md +1 -2
  672. package/frequent_questions/ru/intlayer_command_undefined.md +1 -2
  673. package/frequent_questions/ru/locale_incorect_in_url.md +1 -2
  674. package/frequent_questions/ru/static_rendering.md +1 -2
  675. package/frequent_questions/ru/translated_path_url.md +1 -2
  676. package/frequent_questions/ru/unknown_command.md +1 -2
  677. package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -2
  678. package/frequent_questions/tr/array_as_content_declaration.md +1 -2
  679. package/frequent_questions/tr/build_dictionaries.md +1 -2
  680. package/frequent_questions/tr/build_error_CI_CD.md +1 -2
  681. package/frequent_questions/tr/bun_set_up.md +1 -2
  682. package/frequent_questions/tr/customized_locale_list.md +1 -2
  683. package/frequent_questions/tr/domain_routing.md +1 -2
  684. package/frequent_questions/tr/esbuild_error.md +1 -2
  685. package/frequent_questions/tr/get_locale_cookie.md +1 -2
  686. package/frequent_questions/tr/intlayer_command_undefined.md +1 -2
  687. package/frequent_questions/tr/locale_incorect_in_url.md +1 -2
  688. package/frequent_questions/tr/static_rendering.md +1 -2
  689. package/frequent_questions/tr/translated_path_url.md +1 -2
  690. package/frequent_questions/tr/unknown_command.md +1 -2
  691. package/frequent_questions/vi/SSR_Next_no_[locale].md +106 -0
  692. package/frequent_questions/vi/array_as_content_declaration.md +71 -0
  693. package/frequent_questions/vi/build_dictionaries.md +58 -0
  694. package/frequent_questions/vi/build_error_CI_CD.md +74 -0
  695. package/frequent_questions/vi/bun_set_up.md +53 -0
  696. package/frequent_questions/vi/customized_locale_list.md +64 -0
  697. package/frequent_questions/vi/domain_routing.md +113 -0
  698. package/frequent_questions/vi/esbuild_error.md +29 -0
  699. package/frequent_questions/vi/get_locale_cookie.md +142 -0
  700. package/frequent_questions/vi/intlayer_command_undefined.md +155 -0
  701. package/frequent_questions/vi/locale_incorect_in_url.md +73 -0
  702. package/frequent_questions/vi/static_rendering.md +44 -0
  703. package/frequent_questions/vi/translated_path_url.md +55 -0
  704. package/frequent_questions/vi/unknown_command.md +97 -0
  705. package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -2
  706. package/frequent_questions/zh/array_as_content_declaration.md +1 -2
  707. package/frequent_questions/zh/build_dictionaries.md +1 -2
  708. package/frequent_questions/zh/build_error_CI_CD.md +1 -2
  709. package/frequent_questions/zh/bun_set_up.md +1 -2
  710. package/frequent_questions/zh/customized_locale_list.md +1 -2
  711. package/frequent_questions/zh/domain_routing.md +1 -2
  712. package/frequent_questions/zh/esbuild_error.md +1 -2
  713. package/frequent_questions/zh/get_locale_cookie.md +1 -2
  714. package/frequent_questions/zh/intlayer_command_undefined.md +1 -2
  715. package/frequent_questions/zh/locale_incorect_in_url.md +1 -2
  716. package/frequent_questions/zh/static_rendering.md +1 -3
  717. package/frequent_questions/zh/translated_path_url.md +1 -2
  718. package/frequent_questions/zh/unknown_command.md +1 -2
  719. package/legal/id/privacy_notice.md +83 -0
  720. package/legal/id/terms_of_service.md +55 -0
  721. package/legal/pl/privacy_notice.md +83 -0
  722. package/legal/pl/terms_of_service.md +55 -0
  723. package/legal/vi/privacy_notice.md +83 -0
  724. package/legal/vi/terms_of_service.md +55 -0
  725. package/package.json +19 -18
  726. package/src/generated/blog.entry.ts +38 -0
@@ -0,0 +1,217 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Công Cụ Quốc Tế Hóa (i18n) Tốt Nhất cho React Native
5
+ description: Khám phá các giải pháp i18n hàng đầu cho React Native để giải quyết các thách thức dịch thuật, tăng cường SEO và mang đến trải nghiệm web toàn cầu liền mạch.
6
+ keywords:
7
+ - React Native
8
+ - i18n
9
+ - đa ngôn ngữ
10
+ - SEO
11
+ - Quốc tế hóa
12
+ - Blog
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - react-native
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Ứng Dụng React Native Của Bạn
22
+
23
+ Trong một thị trường ngày càng toàn cầu hóa, việc cung cấp ứng dụng React Native của bạn bằng nhiều ngôn ngữ có thể nâng cao đáng kể khả năng tiếp cận và sự hài lòng của người dùng. Quốc tế hóa (i18n) là yếu tố trung tâm để quản lý dịch thuật hiệu quả, cho phép bạn hiển thị văn bản theo ngôn ngữ cụ thể, định dạng ngày giờ, tiền tệ và nhiều hơn thế nữa mà không làm phức tạp codebase của bạn. Trong bài viết này, chúng ta sẽ khám phá các phương pháp i18n khác nhau, từ các thư viện chuyên dụng đến các giải pháp tổng quát hơn, và giúp bạn tìm ra giải pháp phù hợp nhất cho dự án React Native của mình.
24
+
25
+ ---
26
+
27
+ ![minh họa i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Quốc tế hóa (i18n) là gì?
30
+
31
+ Quốc tế hóa, hay i18n, liên quan đến việc cấu trúc một ứng dụng sao cho có thể dễ dàng thích ứng với các ngôn ngữ khác nhau, định dạng vùng miền và chuẩn mực văn hóa. Trong React Native, i18n bao gồm việc xử lý các chuỗi cho nút bấm và nhãn, cũng như định dạng ngày tháng, thời gian, tiền tệ và nhiều hơn nữa theo vùng miền của người dùng. Các ứng dụng React Native được chuẩn bị đúng cách cho phép bạn tích hợp liền mạch các ngôn ngữ bổ sung và hành vi đặc thù theo vùng miền sau này mà không cần phải tái cấu trúc lớn.
32
+
33
+ Để tìm hiểu sâu hơn về các khái niệm quốc tế hóa, hãy xem bài viết của chúng tôi:
34
+ [Quốc tế hóa (i18n) là gì? Định nghĩa và những thách thức](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/what_is_internationalization.md).
35
+
36
+ ---
37
+
38
+ ## Thách thức dịch thuật cho các ứng dụng React Native
39
+
40
+ Làm việc với bản dịch trong React Native mang đến những cân nhắc đặc thù riêng:
41
+
42
+ - **Kiến trúc dựa trên Component**
43
+ Giống như trong React cho web, thiết kế mô-đun của React Native có thể phân tán văn bản ra nhiều component khác nhau. Việc tập trung các bản dịch này một cách chắc chắn là rất quan trọng.
44
+
45
+ - **Dữ liệu ngoại tuyến và từ xa**
46
+ Trong khi một số chuỗi có thể được nhúng trực tiếp trong ứng dụng, các nội dung khác (ví dụ: nguồn tin tức, dữ liệu sản phẩm) có thể được lấy từ xa. Việc xử lý bản dịch cho dữ liệu đến một cách bất đồng bộ có thể phức tạp hơn trên thiết bị di động.
47
+
48
+ - **Hành vi đặc thù theo nền tảng**
49
+ iOS và Android mỗi nền tảng đều có các thiết lập vùng miền và cách định dạng riêng. Đảm bảo hiển thị nhất quán ngày tháng, tiền tệ và số liệu trên cả hai nền tảng đòi hỏi phải kiểm thử kỹ lưỡng.
50
+
51
+ - **Quản lý trạng thái và điều hướng**
52
+ Duy trì ngôn ngữ người dùng đã chọn qua các màn hình, liên kết sâu, hoặc điều hướng theo tab có nghĩa là bạn phải tích hợp i18n vào Redux, Context API, hoặc giải pháp quản lý trạng thái khác.
53
+
54
+ - **Cập nhật ứng dụng & Over-the-Air (OTA)**
55
+ Nếu bạn sử dụng CodePush hoặc cơ chế cập nhật OTA khác, bạn cần lên kế hoạch cách các bản cập nhật bản dịch hoặc ngôn ngữ mới sẽ được phân phối mà không cần phát hành lại toàn bộ ứng dụng trên cửa hàng.
56
+
57
+ ---
58
+
59
+ ## Các giải pháp i18n hàng đầu cho React Native
60
+
61
+ Dưới đây là một số phương pháp phổ biến để quản lý nội dung đa ngôn ngữ trong React Native. Mỗi phương pháp nhằm đơn giản hóa quy trình dịch thuật của bạn theo những cách khác nhau.
62
+
63
+ ### 1. Intlayer
64
+
65
+ > Website: [https://intlayer.org/](https://intlayer.org/)
66
+
67
+ **Tổng quan**
68
+ **Intlayer** là một thư viện quốc tế hóa mã nguồn mở sáng tạo, được thiết kế để đơn giản hóa việc hỗ trợ đa ngôn ngữ trong các ứng dụng JavaScript hiện đại bao gồm cả React Native. Nó cung cấp một cách tiếp cận khai báo cho việc dịch thuật, cho phép bạn định nghĩa từ điển trực tiếp bên cạnh các component.
69
+
70
+ **Tính năng chính**
71
+
72
+ - **Khai báo bản dịch**
73
+ Lưu trữ các bản dịch trong một file duy nhất hoặc ở cấp component, giúp dễ dàng tìm kiếm và chỉnh sửa văn bản.
74
+
75
+ - **TypeScript & Tự động hoàn thành**
76
+ Tự động tạo các định nghĩa kiểu cho các khóa dịch, cung cấp cả tính năng tự động hoàn thành thân thiện với nhà phát triển và kiểm tra lỗi mạnh mẽ.
77
+
78
+ - **Nhẹ & Linh hoạt**
79
+ Hoạt động mượt mà trong môi trường React Native, không gây gánh nặng không cần thiết. Dễ dàng tích hợp và giữ hiệu suất tốt trên các thiết bị di động.
80
+
81
+ - **Cân nhắc theo nền tảng**
82
+ Bạn có thể điều chỉnh hoặc tách riêng các chuỗi theo nền tảng cho iOS và Android nếu cần.
83
+
84
+ - **Tải không đồng bộ**
85
+ Tải từ điển dịch thuật một cách động, điều này hữu ích cho các ứng dụng lớn hoặc khi triển khai ngôn ngữ theo từng giai đoạn.
86
+
87
+ **Cân nhắc**
88
+
89
+ - **Cộng đồng & Hệ sinh thái**
90
+ Vẫn là một giải pháp khá mới, vì vậy bạn có thể sẽ tìm thấy ít ví dụ do cộng đồng tạo ra hoặc các plugin có sẵn so với các thư viện đã tồn tại lâu.
91
+
92
+ ---
93
+
94
+ ### 2. React-i18next
95
+
96
+ > Trang web: [https://react.i18next.com/](https://react.i18next.com/)
97
+
98
+ **Tổng quan**
99
+ **React-i18next** xây dựng dựa trên framework phổ biến **i18next**, cung cấp kiến trúc linh hoạt dựa trên plugin và bộ tính năng mạnh mẽ. Nó cũng được sử dụng rộng rãi trong các ứng dụng React Native, nhờ vào quy trình thiết lập được tài liệu hóa tốt.
100
+
101
+ **Tính năng chính**
102
+
103
+ - **Tích hợp mượt mà với React Native**
104
+ Cung cấp các hook (`useTranslation`), các component bậc cao (HOCs), và nhiều hơn nữa để tích hợp i18n một cách liền mạch vào các component của bạn.
105
+
106
+ - **Tải không đồng bộ**
107
+ Tải bản dịch theo yêu cầu, hữu ích cho các ứng dụng lớn hoặc khi thêm các gói ngôn ngữ mới theo thời gian.
108
+
109
+ - **Khả năng dịch phong phú**
110
+ Xử lý dịch lồng nhau, nội suy, số nhiều, và thay thế biến ngay từ đầu.
111
+
112
+ - **TypeScript & Tự động hoàn thành**
113
+ React-i18next hỗ trợ các khóa dịch có kiểu, mặc dù việc thiết lập ban đầu có thể cần làm thủ công nhiều hơn so với các giải pháp tự động tạo kiểu.
114
+
115
+ - **Không phụ thuộc nền tảng**
116
+ i18next không gắn liền với web hay mobile cụ thể, vì vậy cùng một thư viện có thể được sử dụng cho nhiều loại dự án khác nhau (ví dụ: nếu bạn chia sẻ code giữa web và native).
117
+
118
+ **Những điểm cần lưu ý**
119
+
120
+ - **Độ phức tạp trong cấu hình**
121
+ Việc thiết lập i18n với các tính năng nâng cao (dạng số nhiều, ngôn ngữ dự phòng, v.v.) có thể yêu cầu cấu hình cẩn thận.
122
+
123
+ - **Hiệu năng**
124
+ Mặc dù React-i18next thường hoạt động tốt, bạn nên chú ý cách tổ chức và tải các tài nguyên dịch để tránh gây tải nặng trên thiết bị di động.
125
+
126
+ ---
127
+
128
+ ### 3. React Intl (từ FormatJS)
129
+
130
+ > Website: [https://formatjs.io/docs/react-intl/](https://formatjs.io/docs/react-intl/)
131
+
132
+ **Tổng quan**
133
+ **React Intl**, một phần của hệ sinh thái **FormatJS**, được xây dựng xoay quanh việc chuẩn hóa định dạng thông điệp cho nhiều locale khác nhau. Nó nhấn mạnh quy trình trích xuất thông điệp và đặc biệt mạnh trong việc định dạng ngày tháng, số và thời gian chính xác cho nhiều locale đa dạng.
134
+
135
+ **Các tính năng chính**
136
+
137
+ - **Các thành phần tập trung vào định dạng**
138
+ `<FormattedMessage>`, `<FormattedDate>`, `<FormattedTime>`, và các thành phần khác giúp đơn giản hóa các tác vụ định dạng trên iOS và Android.
139
+
140
+ - **Nhẹ và có thể mở rộng**
141
+ Bạn có thể chỉ nhập những phần của FormatJS mà bạn cần, giữ cho gói tổng thể của bạn nhẹ, điều này rất quan trọng cho mobile.
142
+
143
+ - **Polyfills cho các locale không được hỗ trợ**
144
+ Đảm bảo định dạng ngày/tháng và số nhất quán trên các phiên bản Android hoặc iOS cũ hơn.
145
+
146
+ - **Tương thích với TypeScript**
147
+ Tích hợp với TypeScript, mặc dù bạn có thể cần thêm công cụ để đạt được các ID thông điệp được gõ kiểu đầy đủ.
148
+
149
+ **Những điểm cần lưu ý**
150
+
151
+ - **Trích xuất thông điệp**
152
+ Yêu cầu một quy trình trích xuất, điều này có thể làm tăng độ phức tạp cho quá trình build của bạn. Tuy nhiên, nó rất mạnh mẽ cho các nhóm lớn quản lý nhiều bản dịch.
153
+
154
+ - **Kích thước ứng dụng & Triển khai**
155
+ Nếu bạn dựa vào nhiều polyfill hoặc các tệp dịch lớn, hãy chú ý đến kích thước tổng thể của ứng dụng, điều này đặc biệt quan trọng trong bối cảnh di động.
156
+
157
+ - **Ví dụ từ cộng đồng**
158
+ Mặc dù được sử dụng rộng rãi, các ví dụ sử dụng riêng cho React Native có thể ít hơn so với React web. Bạn có thể sẽ phải điều chỉnh tài liệu và mẫu hiện có cho môi trường native.
159
+
160
+ ---
161
+
162
+ ### 4. LinguiJS
163
+
164
+ > Website: [https://lingui.js.org/](https://lingui.js.org/)
165
+
166
+ **Tổng quan**
167
+ **LinguiJS** cung cấp một phương pháp hiện đại, thân thiện với nhà phát triển cho i18n trong JavaScript và React (bao gồm cả React Native). Với việc trích xuất và biên dịch thông điệp dựa trên CLI, nó tập trung vào việc giảm thiểu chi phí runtime.
168
+
169
+ **Tính năng chính**
170
+
171
+ - **Tự động trích xuất thông điệp**
172
+ Quét mã của bạn để tìm các chuỗi dịch, giảm nguy cơ bỏ sót hoặc không sử dụng thông điệp.
173
+
174
+ - **Chi phí runtime tối thiểu**
175
+ Các bản dịch đã biên dịch giữ cho ứng dụng của bạn hoạt động hiệu quả và tối ưu tốt cho thiết bị di động.
176
+
177
+ - **TypeScript & Tự động hoàn thành**
178
+ Khi được cấu hình đúng, bạn sẽ có các ID được gõ kiểu cho bản dịch, giúp quy trình làm việc của nhà phát triển an toàn và trực quan hơn.
179
+
180
+ - **Tích hợp với React Native**
181
+ Dễ dàng cài đặt và liên kết trong môi trường React Native; bạn cũng có thể xử lý các bản dịch riêng theo nền tảng nếu cần.
182
+
183
+ **Những điểm cần lưu ý**
184
+
185
+ - **Cài đặt CLI ban đầu**
186
+ Cần một số bước bổ sung để cấu hình quy trình trích xuất và biên dịch cho các dự án React Native.
187
+
188
+ - **Cộng đồng & Plugin**
189
+ Hệ sinh thái của thư viện nhỏ hơn i18next, nhưng đang phát triển nhanh chóng, và các công cụ CLI cốt lõi rất mạnh mẽ.
190
+
191
+ - **Tổ chức mã nguồn**
192
+ Việc quyết định cách phân chia các catalog thông điệp (theo màn hình, tính năng hoặc ngôn ngữ) là rất quan trọng để duy trì sự rõ ràng trong các ứng dụng lớn hơn.
193
+
194
+ ---
195
+
196
+ ## Những suy nghĩ cuối cùng
197
+
198
+ Khi lựa chọn giải pháp i18n cho ứng dụng React Native của bạn:
199
+
200
+ 1. **Đánh giá yêu cầu của bạn**
201
+ - Hiện tại và tương lai bạn cần bao nhiêu ngôn ngữ?
202
+ - Bạn có cần tải theo yêu cầu cho các ứng dụng lớn không?
203
+
204
+ 2. **Lưu ý sự khác biệt giữa các nền tảng**
205
+ - Đảm bảo bất kỳ thư viện nào cũng hỗ trợ các biến thể locale trên iOS và Android, đặc biệt là các điểm khác biệt về ngày/tháng/số tiền.
206
+ - Cân nhắc việc sử dụng offline, một số bản dịch có thể cần được đóng gói cùng ứng dụng, trong khi những bản khác có thể được tải về từ xa.
207
+
208
+ 3. **Chọn cấu trúc để dễ mở rộng**
209
+ - Nếu bạn đang lên kế hoạch cho một ứng dụng lớn hoặc có thời gian sử dụng lâu dài, một quy trình trích xuất mạnh mẽ hoặc các khóa kiểu (typed keys) có thể giúp giữ cho các bản dịch được tổ chức tốt.
210
+
211
+ 4. **Hiệu năng & Kích thước gói**
212
+ - Hạn chế về dữ liệu di động có nghĩa là bạn nên chú ý kỹ đến kích thước các tệp bản dịch và bất kỳ polyfill nào.
213
+
214
+ 5. **Trải nghiệm nhà phát triển (DX)**
215
+ - Tìm kiếm các thư viện phù hợp với kỹ năng của nhóm bạn, một số giải pháp có thể chi tiết nhưng dễ hiểu, trong khi những giải pháp khác cung cấp nhiều tự động hóa hơn nhưng đổi lại là sự phức tạp trong thiết lập.
216
+
217
+ Mỗi giải pháp Intlayer, React-i18next, React Intl và LinguiJS đều đã chứng minh hiệu quả trong môi trường React Native, mặc dù có những ưu tiên hơi khác nhau. Việc đánh giá lộ trình dự án, sở thích của nhà phát triển và nhu cầu bản địa hóa sẽ giúp bạn chọn được giải pháp phù hợp nhất để cung cấp một ứng dụng React Native thực sự toàn cầu.
@@ -0,0 +1,155 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Công Cụ Quốc Tế Hóa (i18n) Tốt Nhất cho React
5
+ description: Khám phá các giải pháp i18n hàng đầu cho React để giải quyết các thách thức về dịch thuật, tăng cường SEO và mang lại trải nghiệm web toàn cầu liền mạch.
6
+ keywords:
7
+ - React
8
+ - i18n
9
+ - đa ngôn ngữ
10
+ - SEO
11
+ - Quốc tế hóa
12
+ - Blog
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - react
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Trang Web React Của Bạn
22
+
23
+ Trong bối cảnh kỹ thuật số ngày nay, việc mở rộng phạm vi tiếp cận trang web của bạn để phục vụ đối tượng toàn cầu là điều thiết yếu. Đối với các nhà phát triển xây dựng với React, việc triển khai quốc tế hóa (i18n) là chìa khóa để quản lý bản dịch một cách hiệu quả trong khi vẫn giữ nguyên cấu trúc ứng dụng, giá trị SEO và trải nghiệm người dùng. Trong bài viết này, chúng tôi khám phá các phương pháp i18n khác nhau từ các thư viện chuyên dụng đến các giải pháp mã hóa tùy chỉnh giúp bạn quyết định phương án nào phù hợp nhất với nhu cầu dự án của bạn.
24
+
25
+ ---
26
+
27
+ ![minh họa i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Quốc tế hóa (i18n) là gì?
30
+
31
+ Quốc tế hóa, viết tắt là i18n, là quá trình thiết kế và chuẩn bị trang web của bạn để hỗ trợ nhiều ngôn ngữ và bối cảnh văn hóa khác nhau. Trong React, điều này có nghĩa là thiết lập ứng dụng của bạn sao cho các chuỗi ký tự, định dạng ngày tháng, định dạng số, và thậm chí cả bố cục có thể dễ dàng điều chỉnh cho người dùng từ các vùng miền khác nhau. Việc chuẩn bị ứng dụng React của bạn cho i18n tạo nền tảng để tích hợp mượt mà các bản dịch và các tính năng địa phương hóa khác.
32
+
33
+ Tìm hiểu thêm về i18n bằng cách đọc bài viết của chúng tôi: [Quốc tế hóa (i18n) là gì? Định nghĩa và những thách thức](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/what_is_internationalization.md).
34
+
35
+ ---
36
+
37
+ ## Thách thức trong việc dịch ứng dụng React
38
+
39
+ Việc dịch một trang web React gặp phải một số thách thức sau:
40
+
41
+ - **Kiến trúc dựa trên thành phần:** Thiết kế mô-đun của React có nghĩa là văn bản có thể được phân bổ trên nhiều thành phần khác nhau, do đó việc tập trung và tổ chức các chuỗi dịch là rất quan trọng.
42
+ - **Nội dung động:** Quản lý bản dịch cho nội dung cập nhật theo thời gian thực hoặc được lấy từ API có thể làm tăng thêm độ phức tạp.
43
+ - **Cân nhắc SEO:** Đối với các ứng dụng React được render phía máy chủ (sử dụng các framework như Next.js), đảm bảo rằng các bản dịch đóng góp tích cực cho SEO bao gồm việc quản lý URL địa phương hóa, metadata và sitemap.
44
+ - **Quản lý trạng thái và ngữ cảnh:** Đảm bảo ngôn ngữ chính xác được duy trì xuyên suốt các tuyến đường và thành phần đòi hỏi quản lý trạng thái một cách cẩn thận.
45
+ - **Chi phí phát triển:** Việc duy trì các tệp dịch, đảm bảo độ chính xác ngữ cảnh và giữ cho ứng dụng của bạn có khả năng mở rộng là những cân nhắc liên tục.
46
+
47
+ ---
48
+
49
+ ## Các giải pháp i18n hàng đầu cho React
50
+
51
+ Dưới đây là một số phương pháp phổ biến để quản lý nội dung đa ngôn ngữ trong các ứng dụng React, mỗi phương pháp được thiết kế để đơn giản hóa quy trình dịch theo những cách khác nhau.
52
+
53
+ ### 1. Intlayer
54
+
55
+ > Trang web: [https://intlayer.org/](https://intlayer.org/)
56
+
57
+ **Tổng quan**
58
+ **Intlayer** là một thư viện quốc tế hóa (i18n) mã nguồn mở sáng tạo, được thiết kế để đơn giản hóa việc hỗ trợ đa ngôn ngữ trong các ứng dụng web hiện đại sử dụng React (và các framework khác). Nó cung cấp một cách tiếp cận khai báo, cho phép bạn định nghĩa từ điển dịch trực tiếp trong các thành phần của mình.
59
+
60
+ **Các tính năng chính**
61
+
62
+ - **Khai báo bản dịch**: Cho phép khai báo tất cả các bản dịch trong một tệp duy nhất, đặt ở cấp độ component, giúp dễ dàng bảo trì và mở rộng.
63
+ - **TypeScript & Tự động hoàn thành**: Cung cấp các định nghĩa kiểu được tạo tự động cho các khóa dịch, mang lại khả năng tự động hoàn thành mạnh mẽ và phát hiện lỗi.
64
+ - **Server Components & SSR**: Được xây dựng với cả server-side rendering (SSR) và server components, đảm bảo nội dung được bản địa hóa được render hiệu quả cả trên client và server.
65
+ - **Metadata & URL bản địa hóa cho SEO**: Dễ dàng xử lý các tuyến đường động dựa trên locale, sitemap và các mục robots.txt để cải thiện khả năng tìm thấy và SEO.
66
+ - **Tích hợp liền mạch**: Tương thích với các bundler và framework lớn như Create React App, Next.js và Vite, giúp việc thiết lập trở nên đơn giản.
67
+ - **Tải không đồng bộ**: Tải từ điển dịch một cách động, giảm kích thước gói ban đầu và cải thiện hiệu suất.
68
+
69
+ **Cân nhắc**
70
+
71
+ - **Cộng đồng & Hệ sinh thái**: Mặc dù đang phát triển, hệ sinh thái còn khá mới, vì vậy các plugin và công cụ do cộng đồng phát triển có thể hạn chế hơn so với các giải pháp đã được thiết lập lâu hơn.
72
+
73
+ ---
74
+
75
+ ### 2. React-i18next
76
+
77
+ Website: [https://react.i18next.com/](https://react.i18next.com/)
78
+
79
+ **Tổng quan**
80
+ **React-i18next** là một trong những thư viện React được sử dụng rộng rãi nhất cho việc quốc tế hóa, được xây dựng trên nền tảng của framework phổ biến **i18next**. Nó cung cấp một kiến trúc linh hoạt dựa trên plugin để xử lý các kịch bản dịch phức tạp.
81
+
82
+ **Tính năng chính**
83
+
84
+ - **Tích hợp liền mạch với React**: Hoạt động với React hooks, higher-order components (HOCs), và render props để mang lại sự linh hoạt tối đa.
85
+ - **Tải không đồng bộ**: Tải tài nguyên dịch một cách động, giảm kích thước gói ban đầu và cải thiện hiệu suất.
86
+ - **Khả năng dịch phong phú**: Hỗ trợ dịch lồng nhau, số nhiều, nội suy và nhiều hơn nữa.
87
+ - **TypeScript & Tự động hoàn thành**: Với cấu hình bổ sung, bạn có thể sử dụng các khóa dịch có kiểu, mặc dù việc thiết lập có thể phức tạp hơn một chút.
88
+ - **Metadata & URL địa phương hóa**: Có thể tích hợp với Next.js để tạo các tuyến đường địa phương hóa, sitemap và robots.txt, cải thiện SEO.
89
+ - **Server Components & SSR**: Với Next.js hoặc các thiết lập SSR khác, bạn có thể phục vụ nội dung được địa phương hóa hoàn toàn từ phía server.
90
+
91
+ **Những lưu ý**
92
+
93
+ - **Khả năng bảo trì**: Cấu hình có thể trở nên phức tạp, đặc biệt với các dự án lớn hoặc nhiều nhóm; việc cấu trúc cẩn thận các file dịch là rất quan trọng.
94
+ - **Hệ sinh thái plugin**: Có một hệ sinh thái rộng lớn các plugin và middleware, điều này cũng có nghĩa là bạn sẽ cần phải lọc qua nhiều gói để tìm công cụ phù hợp.
95
+ - **Server Components**: Cần thiết lập thêm để đảm bảo các server components nhận đúng locale, đặc biệt nếu sử dụng các framework khác ngoài Next.js.
96
+
97
+ ---
98
+
99
+ ### 3. React Intl (từ FormatJS)
100
+
101
+ Website: [https://formatjs.io/docs/react-intl/](https://formatjs.io/docs/react-intl/)
102
+
103
+ **Tổng quan**
104
+ **React Intl**, một phần của bộ công cụ **FormatJS**, tập trung vào việc chuẩn hóa định dạng thông điệp, địa phương hóa ngày/tháng/số/giờ, và các thông điệp thời gian tương đối. Nó sử dụng quy trình trích xuất thông điệp để xử lý bản dịch của bạn một cách hiệu quả.
105
+
106
+ **Các tính năng chính**
107
+
108
+ - **Các thành phần tập trung vào định dạng**: `<FormattedMessage>`, `<FormattedDate>`, `<FormattedTime>`, và nhiều hơn nữa để đơn giản hóa việc định dạng trong React.
109
+ - **Server Components & SSR**: Hỗ trợ các thiết lập SSR để nội dung được địa phương hóa có thể được phục vụ nhằm cải thiện hiệu suất và SEO.
110
+ - **Metadata & URL địa phương hóa**: Có thể tích hợp với các framework như Next.js để tạo sitemap địa phương hóa, xử lý các tuyến đường động, và tùy chỉnh robots.txt.
111
+ - **TypeScript & Tự động hoàn thành**: Có thể kết hợp với TypeScript nhưng có thể cần thêm công cụ để tự động hoàn thành các ID thông điệp.
112
+ - **Polyfill cho các trình duyệt không hỗ trợ**: Đảm bảo hành vi nhất quán trên các môi trường cũ hơn.
113
+
114
+ **Những điểm cần lưu ý**
115
+
116
+ - **Dài dòng & Mã mẫu**: Việc phụ thuộc vào các thành phần chuyên dụng có thể dẫn đến mã dài dòng hơn, đặc biệt trong các ứng dụng lớn.
117
+ - **Phân tách bản dịch**: Thư viện lõi không cung cấp hỗ trợ tích hợp để phân tách bản dịch thành nhiều tệp, cần thiết lập thêm hoặc plugin bổ sung.
118
+ - **Khả năng bảo trì**: Cách tiếp cận đơn giản trong định dạng có thể có lợi, nhưng việc trích xuất thông điệp và quản lý tổ chức có thể phát sinh nhiều phức tạp nhanh chóng.
119
+
120
+ ### 4. LinguiJS
121
+
122
+ Website: [https://lingui.js.org/](https://lingui.js.org/)
123
+
124
+ **Tổng quan:**
125
+
126
+ **Tổng quan**
127
+ **LinguiJS** cung cấp một phương pháp hiện đại, thân thiện với nhà phát triển để quản lý i18n trong JavaScript và React. Nó tập trung vào việc giảm thiểu cấu hình trong khi cung cấp cho bạn một CLI mạnh mẽ và quy trình trích xuất thông điệp hiệu quả.
128
+
129
+ **Tính năng chính**
130
+
131
+ - **Tự động trích xuất thông điệp**: Một CLI chuyên dụng giúp phát hiện và trích xuất các thông điệp từ mã của bạn, giảm thiểu các bước thủ công.
132
+ - **Tải runtime tối thiểu**: Các bản dịch được biên dịch giúp giảm kích thước gói và chi phí hiệu năng khi chạy.
133
+ - **TypeScript & Tự động hoàn thành**: Hỗ trợ các ID có kiểu nếu bạn cấu hình các catalog dịch thuật phù hợp, cải thiện trải nghiệm nhà phát triển.
134
+ - **Các thành phần Server & SSR**: Tương thích với các chiến lược render phía server; có thể tích hợp với Next.js hoặc các framework SSR khác.
135
+ - **Metadata & URL Địa phương hóa**: Mặc dù không rõ ràng như một số thư viện khác, nó có thể được tích hợp với thiết lập routing của bạn để xử lý sitemap, robots.txt và các đường dẫn địa phương hóa.
136
+
137
+ **Những điểm cần lưu ý**
138
+
139
+ - **Khả năng bảo trì**: Việc trích xuất tự động giúp giữ cho code sạch sẽ, nhưng việc cấu trúc nhiều file dịch cho các ứng dụng lớn đòi hỏi tổ chức kỷ luật.
140
+ - **Cộng đồng & Plugin**: Hệ sinh thái đang phát triển nhưng vẫn nhỏ hơn so với i18next hoặc FormatJS.
141
+ - **Server Components**: Có thể cần cấu hình rõ ràng hơn để đảm bảo các server components nhận được dữ liệu locale chính xác.
142
+
143
+ ---
144
+
145
+ ### Những suy nghĩ cuối cùng
146
+
147
+ Khi chọn một thư viện i18n cho React:
148
+
149
+ - **Đánh giá Yêu cầu của Bạn**: Xem xét quy mô dự án, kinh nghiệm của nhà phát triển, và cách bạn dự định xử lý bản dịch (thủ công hay tự động trích xuất).
150
+ - **Kiểm tra Tương thích Máy chủ**: Nếu bạn dựa vào SSR hoặc các thành phần máy chủ (đặc biệt trong Next.js), hãy đảm bảo thư viện bạn chọn hỗ trợ một cách liền mạch.
151
+ - **TypeScript & Tự động hoàn thành**: Nếu TypeScript là ưu tiên, hãy chọn thư viện dễ dàng tích hợp với các khóa kiểu và cung cấp công cụ phát triển mạnh mẽ.
152
+ - **Khả năng Bảo trì & Mở rộng**: Các dự án lớn thường cần một cấu trúc rõ ràng, dễ bảo trì cho các bản dịch, vì vậy hãy cân nhắc lộ trình dài hạn của bạn.
153
+ - **SEO & Metadata**: Nếu SEO là quan trọng, hãy xác nhận rằng giải pháp bạn chọn hỗ trợ metadata địa phương hóa, các tuyến đường, và sitemap/robots cho từng ngôn ngữ.
154
+
155
+ Tất cả các thư viện này đều có thể hỗ trợ một ứng dụng React đa ngôn ngữ, mỗi thư viện có những ưu tiên và điểm mạnh hơi khác nhau. Hãy chọn thư viện phù hợp nhất với **hiệu suất**, **trải nghiệm nhà phát triển (DX)** và **mục tiêu kinh doanh** của dự án bạn.
@@ -0,0 +1,131 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Công Cụ Quốc Tế Hóa (i18n) Tốt Nhất cho Svelte
5
+ description: Khám phá các giải pháp i18n hàng đầu cho Svelte để giải quyết các thách thức về dịch thuật, tăng cường SEO và mang lại trải nghiệm web toàn cầu liền mạch.
6
+ keywords:
7
+ - Svelte
8
+ - i18n
9
+ - đa ngôn ngữ
10
+ - SEO
11
+ - Quốc tế hóa
12
+ - Blog
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - svelte
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Trang Web Svelte Của Bạn
22
+
23
+ Khi mạng web tiếp tục kết nối mọi người trên toàn cầu, việc cung cấp nội dung bằng nhiều ngôn ngữ trở nên ngày càng quan trọng. Đối với các nhà phát triển làm việc với **Svelte**, việc triển khai i18n là cần thiết để quản lý bản dịch một cách hiệu quả, duy trì mã nguồn sạch sẽ và đảm bảo các thực hành SEO tốt. Trong bài viết này, chúng tôi sẽ khám phá các giải pháp và quy trình làm việc i18n khác nhau cho Svelte, giúp bạn chọn ra giải pháp phù hợp nhất với nhu cầu dự án của mình.
24
+
25
+ ---
26
+
27
+ ![minh họa i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Quốc tế hóa (i18n) là gì?
30
+
31
+ Quốc tế hóa, thường được viết tắt là i18n, là quá trình thiết kế và xây dựng ứng dụng của bạn sao cho có thể dễ dàng thích ứng với nhiều ngôn ngữ, vùng miền và các quy ước văn hóa khác nhau. Trong Svelte, điều này thường có nghĩa là thiết lập các chuỗi bản dịch, địa phương hóa ngày tháng, thời gian và số liệu, đồng thời đảm bảo giao diện người dùng có thể chuyển đổi động giữa các locale khác nhau mà không cần viết lại mã lớn.
32
+
33
+ Để tìm hiểu thêm về các kiến thức cơ bản của i18n, hãy đọc bài viết của chúng tôi: [Quốc tế hóa (i18n) là gì? Định nghĩa và những thách thức](https://github.com/aymericzip/intlayer/blob/main/docs/blog/vi/what_is_internationalization.md).
34
+
35
+ ---
36
+
37
+ ## Thách thức dịch thuật cho các ứng dụng Svelte
38
+
39
+ Việc dịch một ứng dụng Svelte có thể gặp phải một số khó khăn sau:
40
+
41
+ - **Component Đơn Tập Tin**: Cách tiếp cận component đơn tập tin của Svelte (nơi HTML, CSS và JavaScript cùng tồn tại) khiến văn bản dễ bị phân tán, đòi hỏi một chiến lược để tập trung hóa các bản dịch.
42
+ - **Nội Dung Động**: Dữ liệu lấy từ API hoặc đầu vào người dùng làm tăng độ phức tạp khi đảm bảo nội dung được dịch ngay lập tức.
43
+ - **Cân Nhắc SEO**: Nếu bạn sử dụng **SvelteKit** cho server-side rendering (SSR), việc cấu hình URL địa phương hóa, thẻ meta và sitemap để SEO hiệu quả đòi hỏi sự chú ý đặc biệt.
44
+ - **Trạng Thái & Định Tuyến**: Giữ ngôn ngữ chính xác trên nhiều route và trang động thường liên quan đến việc điều phối trạng thái toàn cục, route guard hoặc custom hook trong SvelteKit.
45
+ - **Dễ Bảo Trì**: Khi codebase và các file dịch của bạn phát triển, việc giữ mọi thứ được tổ chức tốt và đồng bộ trở thành một nỗ lực liên tục.
46
+
47
+ ---
48
+
49
+ ## Các Giải Pháp i18n Hàng Đầu cho Svelte
50
+
51
+ Svelte không cung cấp giải pháp i18n tích hợp sẵn (như Angular), nhưng cộng đồng đã tạo ra nhiều thư viện và mẫu thiết kế mạnh mẽ. Dưới đây là một số cách tiếp cận phổ biến.
52
+
53
+ ### 1. svelte-i18n
54
+
55
+ Kho lưu trữ: [https://github.com/kaisermann/svelte-i18n](https://github.com/kaisermann/svelte-i18n)
56
+
57
+ **Tổng Quan**
58
+ **svelte-i18n** là một trong những thư viện được sử dụng rộng rãi nhất để thêm tính quốc tế hóa vào các ứng dụng Svelte. Nó cho phép bạn tải và chuyển đổi giữa các locale một cách động trong thời gian chạy và bao gồm các trợ giúp cho số nhiều, nội suy, và nhiều hơn nữa.
59
+
60
+ **Tính Năng Chính**
61
+
62
+ - **Dịch Runtime**: Tải các file dịch theo yêu cầu, cho phép bạn chuyển đổi ngôn ngữ mà không cần xây dựng lại ứng dụng.
63
+ - **Phân số nhiều & Nội suy**: Cung cấp cú pháp đơn giản để xử lý các dạng số nhiều và chèn biến vào trong bản dịch.
64
+ - **Tải lười**: Chỉ lấy các file dịch bạn cần, tối ưu hiệu suất cho các ứng dụng lớn hoặc đa ngôn ngữ.
65
+ - **Hỗ trợ SvelteKit**: Các ví dụ được tài liệu hóa tốt cho thấy cách tích hợp với SSR trong SvelteKit để cải thiện SEO.
66
+
67
+ **Cân nhắc**
68
+
69
+ - **Tổ chức dự án**: Bạn sẽ cần cấu trúc các file dịch một cách hợp lý khi dự án phát triển.
70
+ - **Cấu hình SSR**: Việc cấu hình SSR cho SEO có thể yêu cầu các bước bổ sung để đảm bảo phát hiện đúng locale phía máy chủ.
71
+ - **Hiệu suất**: Mặc dù linh hoạt tại runtime, việc tải một lượng lớn bản dịch cùng lúc có thể ảnh hưởng đến thời gian tải ban đầu, hãy cân nhắc sử dụng tải lười hoặc các chiến lược lưu cache.
72
+
73
+ ---
74
+
75
+ ### 2. svelte-intl-precompile
76
+
77
+ Kho lưu trữ: [https://github.com/cibernox/svelte-intl-precompile](https://github.com/cibernox/svelte-intl-precompile)
78
+
79
+ **Tổng quan**
80
+ **svelte-intl-precompile** sử dụng phương pháp biên dịch trước để giảm tải runtime và cải thiện hiệu suất. Thư viện này tích hợp khái niệm định dạng thông điệp (tương tự FormatJS) đồng thời tạo ra các thông điệp đã được biên dịch trước trong quá trình build.
81
+
82
+ **Tính năng chính**
83
+
84
+ - **Thông điệp biên dịch trước**: Bằng cách biên dịch các chuỗi dịch trong bước build, hiệu suất runtime được cải thiện và kích thước gói có thể nhỏ hơn.
85
+ - **Tích hợp với SvelteKit**: Tương thích với SSR, cho phép bạn phục vụ các trang được địa phương hóa hoàn toàn để cải thiện SEO và trải nghiệm người dùng.
86
+ - **Trích xuất thông điệp**: Tự động trích xuất các chuỗi từ mã của bạn, giảm bớt công việc cập nhật thủ công.
87
+ - **Định dạng nâng cao**: Hỗ trợ số nhiều, bản dịch theo giới tính và nội suy biến.
88
+
89
+ **Các lưu ý**
90
+
91
+ - **Độ phức tạp của quá trình build**: Việc thiết lập biên dịch trước có thể làm tăng độ phức tạp trong pipeline build của bạn.
92
+ - **Nội dung động**: Nếu bạn cần bản dịch ngay lập tức cho nội dung do người dùng tạo, phương pháp này có thể yêu cầu thêm các bước cập nhật tại runtime.
93
+ - **Đường cong học tập**: Sự kết hợp giữa trích xuất thông điệp và biên dịch trước có thể hơi phức tạp đối với người mới bắt đầu.
94
+
95
+ ---
96
+
97
+ ---
98
+
99
+ ### 3. i18next với Svelte / SvelteKit
100
+
101
+ Website: [https://www.i18next.com/](https://www.i18next.com/)
102
+
103
+ **Tổng quan**
104
+ Mặc dù **i18next** thường được liên kết nhiều hơn với React hoặc Vue, nhưng cũng có thể tích hợp nó với Svelte hoặc **SvelteKit**. Tận dụng hệ sinh thái rộng lớn của i18next có thể hữu ích nếu bạn cần i18n nhất quán trên các framework JavaScript khác nhau trong tổ chức của mình.
105
+
106
+ **Các tính năng chính**
107
+
108
+ - **Hệ sinh thái trưởng thành**: Hưởng lợi từ một loạt các plugin, mô-đun phát hiện ngôn ngữ và sự hỗ trợ cộng đồng rộng rãi.
109
+ - **Thời gian chạy hoặc thời gian build**: Lựa chọn giữa tải động hoặc đóng gói các bản dịch của bạn để khởi động nhanh hơn một chút.
110
+ - **Hỗ trợ SSR**: SvelteKit SSR có thể phục vụ nội dung được địa phương hóa bằng cách sử dụng i18next ở phía máy chủ, điều này rất tốt cho SEO.
111
+ - **Tính năng phong phú**: Hỗ trợ nội suy, số nhiều, dịch lồng nhau và các kịch bản i18n phức tạp hơn.
112
+
113
+ **Những điều cần lưu ý**
114
+
115
+ - **Cấu hình thủ công**: i18next không có tích hợp riêng dành cho Svelte sẵn có, vì vậy bạn sẽ cần tự cấu hình.
116
+ - **Chi phí tài nguyên**: i18next rất mạnh mẽ, nhưng đối với các dự án Svelte nhỏ hơn, một số tính năng của nó có thể là quá mức cần thiết.
117
+ - **Định tuyến & Trạng thái**: Việc xử lý định tuyến ngôn ngữ có thể sẽ liên quan đến các hook hoặc middleware tùy chỉnh của SvelteKit.
118
+
119
+ ---
120
+
121
+ ### Những suy nghĩ cuối cùng
122
+
123
+ Khi chọn chiến lược i18n cho ứng dụng Svelte của bạn:
124
+
125
+ 1. **Đánh giá quy mô dự án**: Đối với các dự án nhỏ hoặc nguyên mẫu nhanh, các thư viện đơn giản như **svelte-i18n** hoặc một phương pháp i18n tối giản có thể đủ. Các ứng dụng lớn hơn, phức tạp hơn có thể hưởng lợi từ giải pháp có kiểu dữ liệu, biên dịch trước hoặc dựa trên hệ sinh thái mạnh mẽ hơn.
126
+ 2. **Cân nhắc SSO & SSR**: Nếu SEO là yếu tố quan trọng hoặc bạn cần kết xuất phía máy chủ với **SvelteKit**, hãy chọn thư viện hỗ trợ SSR hiệu quả và có thể xử lý các tuyến đường địa phương hóa, metadata và sitemap.
127
+ 3. **Thời gian chạy so với thời gian xây dựng**: Quyết định xem bạn có cần chuyển đổi ngôn ngữ động tại thời gian chạy hay ưu tiên các bản dịch được biên dịch trước để có hiệu suất tốt hơn. Mỗi phương pháp đều có những đánh đổi khác nhau.
128
+ 4. **Tích hợp TypeScript**: Nếu bạn phụ thuộc nhiều vào TypeScript, các giải pháp như **Intlayer** hoặc các thư viện có khóa kiểu dữ liệu có thể giảm đáng kể lỗi trong thời gian chạy và cải thiện trải nghiệm phát triển.
129
+ 5. **Khả năng bảo trì & Mở rộng**: Lên kế hoạch cách bạn sẽ tổ chức, cập nhật và phiên bản các tệp dịch của mình. Việc trích xuất tự động, quy ước đặt tên và cấu trúc thư mục nhất quán sẽ giúp tiết kiệm thời gian về lâu dài.
130
+
131
+ Cuối cùng, mỗi thư viện đều có những điểm mạnh riêng. Lựa chọn của bạn phụ thuộc vào **hiệu suất**, **trải nghiệm nhà phát triển**, **nhu cầu SEO**, và **khả năng bảo trì lâu dài**. Bằng cách chọn một giải pháp phù hợp với mục tiêu dự án, bạn có thể tạo ra một ứng dụng toàn cầu thực sự trong Svelte, làm hài lòng người dùng trên toàn thế giới.