@intlayer/docs 7.0.7 → 7.0.8-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 (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,167 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Các Công Cụ Quốc Tế Hóa (i18n) Tốt Nhất cho Wix
5
+ description: Khám phá các giải pháp i18n hàng đầu cho Wix để giải quyết các thách thức 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
+ - Wix
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
+ - CMS
18
+ - wix
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Trang Web Wix Của Bạn
22
+
23
+ Trong thị trường kỹ thuật số toàn cầu ngày nay, việc đảm bảo trang web của bạn sử dụng ngôn ngữ của khán giả là điều then chốt. Đối với các chủ sở hữu trang Wix, việc áp dụng quốc tế hóa (i18n) mở ra cơ hội thu hút đa dạng khách truy cập đồng thời bảo vệ cấu trúc trang, sức mạnh SEO và trải nghiệm người dùng tổng thể. Trong bài viết này, chúng tôi sẽ khám phá các phương pháp i18n khác nhau từ các công cụ đa ngôn ngữ tích hợp sẵn của Wix đến các ứng dụng bên thứ ba và 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 mình.
24
+
25
+ ---
26
+
27
+ ## Quốc tế hóa (i18n) là gì?
28
+
29
+ Quốc tế hóa (i18n) đề cập đến quá trình thiết kế và chuẩn bị trang web của bạn để có thể dễ dàng hỗ trợ nhiều ngôn ngữ và bối cảnh văn hóa khác nhau. Trong Wix, điều này có nghĩa là thiết lập một kiến trúc trang web linh hoạt, nơi văn bản, hình ảnh, menu và thậm chí các yếu tố tương tác có thể được điều chỉnh hoặc dịch cho các khu vực khác nhau. Bằng cách lên kế hoạch cho i18n ngay từ đầu, bạn đảm bảo rằng nội dung của mình có thể được bản địa hóa một cách hiệu quả, giúp nó trở nên dễ tiếp cận và thu hút đối với khán giả toàn cầu.
30
+
31
+ Để hiểu thêm về quốc tế hóa và tầm quan trọng của nó trong thiết kế web, hãy xem bài viết nền tảng của chúng tôi về [khái niệm quốc tế hóa](#).
32
+
33
+ ---
34
+
35
+ ## Thách thức dịch thuật cho các trang web Wix
36
+
37
+ Việc dịch trang web Wix của bạn gặp phải những thách thức riêng biệt:
38
+
39
+ - **Đa dạng nội dung:** Các trang web Wix thường bao gồm sự kết hợp của văn bản, hình ảnh, video và các yếu tố tương tác. Việc dịch từng thành phần một cách nhất quán là điều cần thiết.
40
+ - **Cân nhắc SEO:** Việc triển khai dịch thuật đúng cách có thể cải thiện thứ hạng tìm kiếm toàn cầu của bạn bằng cách sử dụng URL theo ngôn ngữ, thẻ meta và các thực hành SEO tốt nhất khác.
41
+ - **Trải nghiệm người dùng:** Bộ chuyển đổi ngôn ngữ mượt mà và các trang đa ngôn ngữ được thiết kế nhất quán giúp tăng đáng kể sự tương tác của khách truy cập.
42
+ - **Bảo trì liên tục:** Khi trang web của bạn phát triển, việc giữ cho các bản dịch luôn cập nhật trên tất cả các ngôn ngữ có thể trở nên phức tạp.
43
+
44
+ ---
45
+
46
+ ## Các giải pháp i18n hàng đầu cho Wix
47
+
48
+ Dưới đây, chúng tôi trình bày một số phương pháp phổ biến để quản lý nội dung đa ngôn ngữ trên trang web Wix của bạn:
49
+
50
+ ### 1. Wix Multilingual
51
+
52
+ **Tổng quan:**
53
+ Wix Multilingual là giải pháp gốc của nền tảng cho phép bạn tạo trang web đa ngôn ngữ một cách liền mạch mà không cần rời khỏi Wix Editor. Công cụ tích hợp này được thiết kế để đơn giản hóa quy trình dịch thuật, giúp ngay cả người dùng không chuyên về kỹ thuật cũng có thể sử dụng dễ dàng.
54
+
55
+ **Tính năng chính:**
56
+
57
+ - **Quản lý ngôn ngữ tích hợp:** Dễ dàng thêm nhiều ngôn ngữ và quản lý bản dịch trực tiếp từ Wix Editor.
58
+ - **Tự động nhân bản trang:** Tạo bản sao các trang hiện có cho từng ngôn ngữ, đảm bảo sự nhất quán về thiết kế.
59
+ - **Bộ chuyển đổi ngôn ngữ tùy chỉnh:** Cung cấp cho khách truy cập một menu trực quan để chọn ngôn ngữ ưa thích.
60
+ - **Thân thiện với SEO:** Tự động điều chỉnh thẻ meta, URL và các yếu tố SEO khác dựa trên ngôn ngữ được chọn.
61
+
62
+ **Ưu điểm:**
63
+
64
+ - Tích hợp hoàn toàn với hệ sinh thái Wix.
65
+ - Thân thiện với người dùng và được thiết kế cho những người không phải là nhà phát triển.
66
+ - Cập nhật thường xuyên để hỗ trợ các tính năng và chức năng mới của Wix.
67
+
68
+ **Những điều cần lưu ý:**
69
+
70
+ - Phù hợp nhất cho các nhu cầu dịch thuật đơn giản.
71
+ - Có thể gặp hạn chế khi xử lý các yếu tố động cao hoặc mã hóa tùy chỉnh.
72
+ - Một số tùy chỉnh nâng cao có thể yêu cầu thêm công việc sử dụng Velo của Wix.
73
+
74
+ ---
75
+
76
+ ### 2. Ứng dụng dịch thuật bên thứ ba: Weglot
77
+
78
+ **Tổng quan:**
79
+ Weglot là giải pháp dịch thuật bên thứ ba phổ biến, tích hợp với Wix để cung cấp cả dịch tự động và thủ công. Nó được thiết kế để nhanh chóng biến một trang web đơn ngôn ngữ thành trải nghiệm đa ngôn ngữ đầy đủ.
80
+
81
+ **Tính năng chính:**
82
+
83
+ - **Dịch tự động:** Khởi đầu quá trình với các công cụ dịch tự động, sau đó tinh chỉnh khi cần thiết.
84
+ - **Tích hợp liền mạch:** Dễ dàng liên kết với trang web Wix của bạn và quản lý bản dịch thông qua bảng điều khiển Weglot.
85
+ - **Tối ưu SEO:** Tạo URL riêng cho từng ngôn ngữ và xử lý thẻ hreflang để duy trì giá trị SEO.
86
+ - **Thân thiện với người dùng:** Giao diện trực quan để quản lý bản dịch trên toàn bộ trang web của bạn.
87
+
88
+ **Ưu điểm:**
89
+
90
+ - Nhanh chóng và hiệu quả, lý tưởng cho việc triển khai nhanh.
91
+ - Hỗ trợ nhiều ngôn ngữ đa dạng.
92
+ - Giảm tải công việc dịch thủ công đồng thời cho phép chỉnh sửa tùy chỉnh.
93
+
94
+ **Những điều cần lưu ý:**
95
+
96
+ - Giá cả theo dạng đăng ký có thể ảnh hưởng đến ngân sách nhỏ hơn.
97
+ - Giống như với bất kỳ công cụ bên thứ ba nào, việc phụ thuộc vào dịch vụ bên ngoài có thể liên quan đến các cân nhắc bảo trì bổ sung.
98
+
99
+ ---
100
+
101
+ ### 3. Dịch thủ công với các trang trùng lặp
102
+
103
+ **Tổng quan:**
104
+ Đối với những người muốn kiểm soát hoàn toàn việc dịch thuật, việc tạo các trang trùng lặp bằng tay trong các ngôn ngữ khác nhau là một lựa chọn. Cách tiếp cận này bao gồm việc sao chép nội dung trang web của bạn và sau đó thay thế văn bản bằng các phiên bản đã dịch.
105
+
106
+ **Tính năng chính:**
107
+
108
+ - **Kiểm soát toàn diện:** Tùy chỉnh từng phiên bản ngôn ngữ để đáp ứng các yêu cầu văn hóa hoặc khu vực cụ thể.
109
+ - **Đồng nhất thiết kế:** Sử dụng trình chỉnh sửa kéo-thả của Wix để duy trì độ chính xác thiết kế trên các ngôn ngữ.
110
+ - **Không phụ thuộc công cụ bên ngoài:** Chỉ dựa vào các tính năng tích hợp sẵn của Wix mà không cần plugin hoặc ứng dụng bổ sung.
111
+
112
+ **Ưu điểm:**
113
+
114
+ - Giám sát toàn diện mọi yếu tố được dịch.
115
+ - Không phát sinh chi phí bổ sung ngoài gói Wix hiện tại của bạn.
116
+ - Lý tưởng cho các trang web có số lượng trang hạn chế hoặc yêu cầu dịch thuật cụ thể.
117
+
118
+ **Cân nhắc:**
119
+
120
+ - Tốn nhiều thời gian, đặc biệt khi trang web của bạn phát triển.
121
+ - Cần quản lý cẩn thận để đảm bảo các cập nhật được sao chép trên tất cả các phiên bản ngôn ngữ.
122
+ - Không tối ưu cho các trang web rất lớn hoặc cập nhật thường xuyên.
123
+
124
+ ---
125
+
126
+ ### 4. Giải pháp i18n tùy chỉnh qua Wix Velo
127
+
128
+ **Tổng quan:**
129
+ Wix Velo (trước đây là Corvid) là một nền tảng phát triển mạnh mẽ cho phép tùy chỉnh nâng cao. Đối với các nhà phát triển có yêu cầu dịch thuật đặc thù hoặc quy trình làm việc phức tạp, tận dụng Velo để xây dựng các giải pháp i18n tùy chỉnh có thể mang lại sự linh hoạt vô song.
130
+
131
+ **Kỹ thuật chính:**
132
+
133
+ - **Quy trình dịch tùy chỉnh:** Xây dựng hệ thống để truy xuất, lưu trữ và hiển thị bản dịch một cách động.
134
+ - **Dịch dựa trên dữ liệu:** Sử dụng các API bên ngoài hoặc cơ sở dữ liệu để quản lý nội dung đa ngôn ngữ.
135
+ - **Tùy chỉnh SEO nâng cao:** Tinh chỉnh cấu trúc URL, thẻ meta và các thành phần SEO khác cho từng ngôn ngữ.
136
+ - **Bộ chuyển đổi ngôn ngữ tương tác:** Thiết kế các thành phần tùy chỉnh tích hợp liền mạch với chức năng của trang web bạn.
137
+
138
+ **Ưu điểm:**
139
+
140
+ - Linh hoạt hoàn toàn để tùy chỉnh giải pháp theo nhu cầu của bạn.
141
+ - Có thể tích hợp với các dịch vụ và API bên ngoài.
142
+ - Có thể xử lý nội dung phức tạp, động trên nhiều trang hoặc phần khác nhau.
143
+
144
+ **Cân nhắc:**
145
+
146
+ - Yêu cầu nền tảng phát triển vững chắc và đầu tư thời gian.
147
+ - Nhiều trách nhiệm hơn trong việc bảo trì và mở rộng so với các giải pháp plug-and-play.
148
+ - Không khuyến nghị cho người dùng không chuyên kỹ thuật muốn triển khai nhanh.
149
+
150
+ ---
151
+
152
+ ## Lựa chọn Giải pháp i18n Phù hợp cho Trang Wix của Bạn
153
+
154
+ Khi chọn phương pháp quốc tế hóa cho trang web Wix của bạn, hãy xem xét các yếu tố sau:
155
+
156
+ - **Ngân sách:** Wix Multilingual và dịch thủ công có chi phí hợp lý, trong khi các giải pháp bên thứ ba như Weglot có thể yêu cầu phí đăng ký.
157
+ - **Chuyên môn kỹ thuật:** Người không phải nhà phát triển có thể ưu tiên sự dễ sử dụng của Wix Multilingual hoặc Weglot, trong khi các nhà phát triển có thể đánh giá cao sự linh hoạt mà Wix Velo cung cấp.
158
+ - **Độ phức tạp và quy mô của trang web:** Đối với các trang web có vài trang hoặc nội dung đơn giản, phương pháp thủ công hoặc Wix Multilingual hoạt động tốt. Đối với các trang web phức tạp hơn hoặc có nhiều nội dung, các ứng dụng bên thứ ba hoặc giải pháp tùy chỉnh có thể cần thiết.
159
+ - **Bảo trì và cập nhật:** Chọn giải pháp phù hợp với chiến lược quản lý nội dung dài hạn của bạn và đảm bảo cập nhật nhất quán trên tất cả các ngôn ngữ.
160
+
161
+ ---
162
+
163
+ ## Kết luận
164
+
165
+ Việc dịch trang web Wix của bạn không chỉ đơn thuần là chuyển đổi ngôn ngữ mà còn là tạo ra một trải nghiệm mang tính văn hóa sâu sắc, kết nối với khán giả toàn cầu. Dù bạn chọn phương pháp đơn giản của Wix Multilingual, khả năng linh hoạt của các ứng dụng bên thứ ba như Weglot, chiến lược thủ công trực tiếp, hay giải pháp tùy chỉnh qua Wix Velo, mục tiêu vẫn là như nhau: giao tiếp hiệu quả vượt qua ranh giới quốc gia.
166
+
167
+ Bằng cách đánh giá kỹ lưỡng các yêu cầu và nguồn lực của bạn, bạn có thể xây dựng một sự hiện diện đa ngôn ngữ vững chắc, thúc đẩy sự tương tác và phát triển quốc tế. Chúc bạn dịch thuật thành công, và chúc trang Wix của bạn thành công vang dội trên toàn thế giới!
@@ -0,0 +1,188 @@
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 Wordpress
5
+ description: Khám phá các giải pháp i18n hàng đầu cho Wordpress để 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
+ - Wordpress
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
+ - CMS
18
+ - wordpress
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Trang WordPress 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 chủ sở hữu trang WordPress, việc triển khai các giải pháp quốc tế hóa (i18n) là chìa khóa để quản lý việc dịch thuật một cách hiệu quả đồng thời giữ nguyên cấu trúc trang, giá trị SEO và trải nghiệm người dùng. Trong bài viết này, chúng tôi sẽ khám phá các phương pháp i18n khác nhau từ các plugin mạnh mẽ đế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 thế giới WordPress, điều này có nghĩa là tạo ra một nền tảng linh hoạt, nơi nội dung (trang, bài viết, menu, chuỗi giao diện) có thể dễ dàng được dịch và bản địa hóa cho các đối tượng khác nhau.
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 dịch thuật cho các trang WordPress
38
+
39
+ Việc dịch một trang WordPress gặp phải một số thách thức sau:
40
+
41
+ - **Độ phức tạp của nội dung:** Các trang WordPress thường bao gồm nhiều loại nội dung đa dạng (trang, bài viết, loại bài viết tùy chỉnh và các chuỗi giao diện động) cần được dịch một cách nhất quán.
42
+ - **Cân nhắc về SEO:** Việc triển khai dịch thuật đúng cách giúp tăng thứ hạng tìm kiếm bằng cách sử dụng thẻ hreflang, URL bản địa hóa và sơ đồ trang web theo ngôn ngữ.
43
+ - **Trải nghiệm người dùng:** Cung cấp bộ chuyển đổi ngôn ngữ mượt mà và đảm bảo thiết kế nhất quán trên các bản dịch giúp tăng sự tương tác của khách truy cập.
44
+ - **Bảo trì theo thời gian:** Khi trang web của bạn phát triển, việc cập nhật và quản lý các bản dịch mới có thể trở nên đòi hỏi nhiều công sức.
45
+
46
+ ---
47
+
48
+ ## Các giải pháp i18n hàng đầu cho WordPress
49
+
50
+ Dưới đây là một số phương pháp phổ biến để quản lý nội dung đa ngôn ngữ trên WordPress:
51
+
52
+ ### 1. WPML (Plugin Đa ngôn ngữ cho WordPress)
53
+
54
+ **Tổng quan:**
55
+ WPML là một trong những plugin WordPress được sử dụng rộng rãi nhất để xây dựng các trang web đa ngôn ngữ. Nó hỗ trợ hơn 40 ngôn ngữ và cho phép bạn thêm các biến thể ngôn ngữ, làm cho nó trở thành một công cụ mạnh mẽ để tiếp cận toàn cầu.
56
+
57
+ **Tính năng chính:**
58
+
59
+ - **Quản lý dịch thuật toàn diện:** Dễ dàng dịch các trang, bài viết, loại bài viết tùy chỉnh, phân loại, menu và các chuỗi giao diện.
60
+ - **Trình chỉnh sửa dịch tích hợp:** Tối ưu hóa quy trình làm việc và tích hợp với các dịch vụ dịch thuật chuyên nghiệp.
61
+ - **Thân thiện với SEO:** Bao gồm sơ đồ trang web đa ngôn ngữ, hỗ trợ hreflang và cơ chế dịch URL.
62
+
63
+ **Ưu điểm:**
64
+
65
+ - Bộ tính năng phong phú phù hợp cho các trang web phức tạp.
66
+ - Cộng đồng người dùng lớn và cập nhật liên tục.
67
+ - Kiểm soát tinh chỉnh đối với dịch nội dung và cài đặt SEO.
68
+
69
+ **Cân nhắc:**
70
+
71
+ - Giá cả cao cấp có thể là rào cản đối với các dự án có ngân sách nhỏ.
72
+ - Việc thiết lập và cấu hình có thể phức tạp đối với người mới bắt đầu.
73
+
74
+ ---
75
+
76
+ ### 2. Polylang
77
+
78
+ **Tổng quan:**
79
+ Polylang cho phép bạn tạo một trang web WordPress song ngữ hoặc đa ngôn ngữ một cách tương đối dễ dàng và không tốn chi phí cao như một số plugin khác.
80
+
81
+ **Tính năng chính:**
82
+
83
+ - **Số lượng ngôn ngữ không giới hạn:** Thêm bao nhiêu ngôn ngữ tùy ý.
84
+ - **Giao diện thân thiện với người dùng:** Bộ chuyển đổi ngôn ngữ đơn giản và quản lý dịch thuật trực quan.
85
+ - **Tích hợp với Lingotek:** Tích hợp tùy chọn giúp tận dụng quản lý dịch thuật chuyên nghiệp.
86
+
87
+ **Ưu điểm:**
88
+
89
+ - Cung cấp phiên bản miễn phí mạnh mẽ với các tiện ích mở rộng cao cấp tùy chọn.
90
+ - Thiết lập đơn giản phù hợp cho người dùng không chuyên kỹ thuật.
91
+ - Hoạt động tốt với hầu hết các theme và plugin.
92
+
93
+ **Những điểm cần lưu ý:**
94
+
95
+ - Các tính năng nâng cao yêu cầu phiên bản cao cấp.
96
+ - Thỉnh thoảng gặp phải các vấn đề tương thích với các theme hoặc plugin ít phổ biến hơn.
97
+
98
+ ---
99
+
100
+ ### 3. TranslatePress
101
+
102
+ **Tổng quan:**
103
+ TranslatePress cung cấp một phương pháp độc đáo cho phép bạn dịch trang web trực tiếp từ giao diện người dùng bằng trình chỉnh sửa trực quan trực tiếp. Thiết kế này đảm bảo các bản dịch được thực hiện trong bối cảnh thực tế của bố cục trang web của bạn.
104
+
105
+ **Tính năng chính:**
106
+
107
+ - **Giao diện dịch trực quan:** Chỉnh sửa bản dịch trong khi xem trang web trực tiếp.
108
+ - **Tùy chọn tự động & thủ công:** Sử dụng các dịch vụ như Google Translate hoặc DeepL để dịch tự động, sau đó chỉnh sửa thủ công.
109
+ - **Tối ưu SEO:** Hỗ trợ dịch các URL slug và thực hiện đúng thẻ hreflang.
110
+
111
+ **Ưu điểm:**
112
+
113
+ - Đơn giản hóa quy trình dịch cho người mới bắt đầu.
114
+ - Bối cảnh trực quan theo thời gian thực đảm bảo tính nhất quán về thiết kế.
115
+ - Linh hoạt và đơn giản với trọng tâm là dễ sử dụng.
116
+
117
+ **Cân nhắc:**
118
+
119
+ - Có thể thiếu một số tính năng nâng cao cho các trang web rất phức tạp hoặc quy mô lớn.
120
+ - Các tính năng cao cấp có sẵn trong phiên bản trả phí.
121
+
122
+ ---
123
+
124
+ ### 4. qTranslate-X / qTranslate-XT
125
+
126
+ **Tổng quan:**
127
+ qTranslate-X đã là một cái tên quen thuộc trong cộng đồng WordPress đa ngôn ngữ trong nhiều năm. Mặc dù plugin gốc không còn được duy trì, các bản fork như qTranslate-XT vẫn tiếp tục cung cấp chức năng tương tự.
128
+
129
+ **Tính năng chính:**
130
+
131
+ - **Chuyển đổi ngôn ngữ nhanh:** Dễ dàng chuyển đổi giữa các ngôn ngữ với giao diện gọn gàng.
132
+ - **Chỉnh sửa dịch trong trang:** Dịch nội dung trực tiếp trong màn hình chỉnh sửa.
133
+ - **Giải pháp nhẹ:** Thiết kế tối giản không có nhiều tính năng phức tạp, lý tưởng cho các dự án nhỏ.
134
+
135
+ **Ưu điểm:**
136
+
137
+ - Miễn phí và hiệu quả cho các nhu cầu dịch thuật đơn giản.
138
+ - Đơn giản và dễ tiếp cận, không đòi hỏi đường cong học tập cao.
139
+ - Lựa chọn tốt cho các trang web không yêu cầu quản lý dịch thuật phức tạp.
140
+
141
+ **Cân nhắc:**
142
+
143
+ - Thiếu sự hỗ trợ rộng rãi và cập nhật thường xuyên như các giải pháp cao cấp.
144
+ - Có thể không phù hợp với các quy trình dịch thuật nâng cao cần thiết cho các trang web lớn hơn.
145
+
146
+ ---
147
+
148
+ ### 5. Giải pháp i18n tùy chỉnh qua mã nguồn
149
+
150
+ **Tổng quan:**
151
+ Đối với các nhà phát triển muốn kiểm soát hoàn toàn hoặc có yêu cầu đặc thù, việc triển khai i18n tùy chỉnh bằng mã nguồn có thể là một giải pháp tuyệt vời.
152
+
153
+ **Kỹ thuật chính:**
154
+
155
+ - **Sử dụng các Hàm WordPress:** Triển khai các hàm như `__()`, `_e()`, và `gettext` để dịch các chuỗi trong theme và plugin.
156
+ - **Tích hợp REST API:** Quản lý bản dịch thông qua các endpoint tùy chỉnh, cung cấp giải pháp phù hợp cho nội dung động.
157
+ - **Quy trình làm việc Tùy chỉnh:** Xây dựng hệ thống tích hợp liền mạch với thiết kế và nhu cầu quản lý nội dung cụ thể của trang web bạn.
158
+
159
+ **Ưu điểm:**
160
+
161
+ - Linh hoạt hoàn toàn để đáp ứng các yêu cầu dự án độc đáo.
162
+ - Tránh phụ thuộc vào các plugin bên thứ ba, giúp cải thiện hiệu suất.
163
+ - Tiềm năng tích hợp sâu cho các hệ thống liên kết chặt chẽ.
164
+
165
+ **Cân nhắc:**
166
+
167
+ - Yêu cầu chuyên môn phát triển và thời gian đáng kể.
168
+ - Việc bảo trì liên tục và khả năng mở rộng có thể đòi hỏi nhiều hơn so với các giải pháp dựa trên plugin.
169
+ - Không phù hợp cho người dùng không chuyên về kỹ thuật hoặc các kịch bản triển khai nhanh.
170
+
171
+ ---
172
+
173
+ ## Lựa Chọn Giải Pháp i18n Phù Hợp Cho Trang WordPress Của Bạn
174
+
175
+ Khi xác định phương pháp i18n nào nên áp dụng, hãy cân nhắc các yếu tố sau:
176
+
177
+ - **Ngân sách:** Các plugin miễn phí như Polylang hoặc qTranslate-XT phù hợp với ngân sách nhỏ hơn, trong khi WPML và TranslatePress cung cấp các tính năng toàn diện hơn với chi phí cao hơn.
178
+ - **Chuyên môn kỹ thuật:** Người không phải là nhà phát triển có thể ưu tiên sự dễ sử dụng mà TranslatePress hoặc Polylang mang lại, trong khi các nhà phát triển có kinh nghiệm có thể hưởng lợi từ các giải pháp được mã hóa tùy chỉnh.
179
+ - **Độ phức tạp và quy mô trang web:** Đối với các trang lớn với nhu cầu dịch thuật phức tạp và yêu cầu SEO mạnh mẽ, WPML hoặc TranslatePress có thể là lựa chọn lý tưởng. Đối với các dự án đơn giản hơn, một plugin đơn giản hoặc giải pháp tùy chỉnh có thể hiệu quả hơn.
180
+ - **Bảo trì và Cập nhật:** Đảm bảo giải pháp bạn chọn có thể đáp ứng sự phát triển trong tương lai và các cập nhật nội dung mà không gây ra gánh nặng lớn hoặc các vấn đề về tương thích.
181
+
182
+ ---
183
+
184
+ ## Kết Luận
185
+
186
+ Dịch trang WordPress của bạn không chỉ đơn thuần là chuyển đổi văn bản mà còn là việc tiếp cận một đối tượng rộng lớn hơn, nâng cao trải nghiệm người dùng và tối ưu hóa cho các công cụ tìm kiếm quốc tế. Dù bạn chọn một giải pháp đầy đủ tính năng như WPML, một lựa chọn thân thiện với người dùng như TranslatePress, một phương án tiết kiệm như Polylang, hay một cách tiếp cận mã hóa tùy chỉnh, điều quan trọng là chọn một giải pháp i18n phù hợp với mục tiêu và nguồn lực của dự án bạn.
187
+
188
+ Bằng cách đánh giá kỹ lưỡng các lựa chọn và xem xét việc bảo trì lâu dài, bạn có thể tạo ra một trang web đa ngôn ngữ vững chắc, truyền đạt hiệu quả với khán giả toàn cầu. Chúc bạn dịch thuật thành công, và chúc trang web của bạn gặt hái thành công trên thị trường quốc tế!
@@ -0,0 +1,125 @@
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 Angular
5
+ description: Khám phá các giải pháp i18n hàng đầu cho Angular để giải quyết các thách thức về 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
+ - Angular
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
+ - angular
19
+ ---
20
+
21
+ # Khám Phá Các Giải Pháp i18n Để Dịch Trang Web Angular Của Bạn
22
+
23
+ Trong thế giới kết nối ngày nay, việc cung cấp trang web của bạn bằng nhiều ngôn ngữ có thể mở rộng đáng kể phạm vi tiếp cận và cải thiện trải nghiệm người dùng. Đối với các nhà phát triển làm việc với Angular, việc triển khai quốc tế hóa (i18n) là rất quan trọng để quản lý hiệu quả các bản dịch đồng thời giữ nguyên cấu trúc ứng dụng, SEO và hiệu suất. 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 giải pháp tích hợp sẵn của Angular đến các thư viện bên thứ ba phổ biến để giúp bạn xác định lựa chọn phù hợp nhất cho 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 gọi là i18n, là quá trình thiết kế và chuẩn bị ứng dụng của bạn để hỗ trợ nhiều ngôn ngữ và bối cảnh văn hóa khác nhau. Trong Angular, điều này bao gồm việc cấu hình ứng dụng sao cho văn bản, ngày tháng, số và thậm chí cả bố cục giao diện người dùng có thể thích nghi một cách liền mạch với các vùng địa lý khác nhau. Việc đặt nền tảng này một cách đúng đắn đảm bảo rằng việc tích hợp các bản dịch trong tương lai sẽ được tổ chức và hiệu quả.
32
+
33
+ Tìm hiểu thêm về các kiến thức cơ bản 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 Angular
38
+
39
+ Việc dịch một ứng dụng Angular đặt ra nhiều thách thức:
40
+
41
+ - **Cấu trúc dựa trên thành phần**: Cách tiếp cận mô-đun của Angular (với các thành phần, mô-đun và dịch vụ) có nghĩa là các chuỗi dịch có thể bị phân tán khắp codebase của bạn, do đó việc tập trung và quản lý chúng một cách hiệu quả là rất quan trọng.
42
+ - **Nội dung động**: Xử lý nội dung thời gian thực (ví dụ: dữ liệu từ REST APIs, nội dung do người dùng tạo ra) đòi hỏi sự cân nhắc kỹ lưỡng để đảm bảo các chuỗi mới cũng được dịch.
43
+ - **Cân nhắc SEO**: Nếu bạn sử dụng Angular Universal cho việc render phía máy chủ, bạn sẽ cần thiết lập các URL địa phương hóa, thẻ meta và sơ đồ trang để làm cho các trang đa ngôn ngữ của bạn thân thiện với công cụ tìm kiếm.
44
+ - **Định tuyến và trạng thái**: Đảm bảo ngôn ngữ chính xác được duy trì khi điều hướng giữa các tuyến đường liên quan đến quản lý trạng thái và có thể là các route guard hoặc interceptor tùy chỉnh.
45
+ - **Khả năng mở rộng & Bảo trì**: Các tệp dịch có thể phát triển nhanh chóng, và việc giữ chúng có tổ chức, có phiên bản và đồng bộ với sự phát triển của ứng dụng có thể là một nhiệm vụ liên tục.
46
+
47
+ ---
48
+
49
+ ## Các Giải pháp i18n Hàng đầu cho Angular
50
+
51
+ Angular cung cấp một framework i18n tích hợp sẵn, và cũng có một số thư viện bên thứ ba được thiết kế để đơn giản hóa việc thiết lập đa ngôn ngữ của bạn. Dưới đây là một số giải pháp phổ biến nhất.
52
+
53
+ ### 1. i18n Tích hợp sẵn của Angular
54
+
55
+ **Tổng quan**
56
+ Angular đi kèm với một hệ thống **i18n tích hợp sẵn** bao gồm các công cụ để trích xuất chuỗi dịch, xử lý số nhiều và nội suy, và tích hợp bản dịch tại thời điểm biên dịch. Giải pháp chính thức này rất mạnh mẽ cho các dự án nhỏ hơn hoặc những dự án có thể tuân theo cấu trúc được Angular khuyến nghị.
57
+
58
+ **Các tính năng chính**
59
+
60
+ - **Tích hợp gốc**: Không cần thư viện bổ sung; nó hoạt động ngay lập tức với các dự án Angular.
61
+ - **Dịch tại thời điểm biên dịch**: Angular CLI trích xuất văn bản để dịch, và bạn xây dựng các gói riêng biệt cho từng ngôn ngữ. Cách tiếp cận này có thể dẫn đến hiệu suất chạy nhanh hơn vì các bản dịch được biên dịch sẵn.
62
+ - **Xử lý số nhiều & giới tính dễ dàng**: Các tính năng tích hợp sẵn cho việc số nhiều phức tạp và nội suy thông điệp.
63
+ - **Xây dựng AOT & sản xuất**: Hoàn toàn tương thích với biên dịch Ahead-of-Time (AOT) của Angular, đảm bảo các gói sản xuất được tối ưu hóa.
64
+
65
+ **Cân nhắc**
66
+
67
+ - **Nhiều bản dựng**: Mỗi ngôn ngữ yêu cầu một bản dựng riêng, điều này có thể dẫn đến các kịch bản triển khai phức tạp hơn.
68
+ - **Nội dung động**: Xử lý nội dung thời gian thực hoặc do người dùng điều khiển có thể yêu cầu logic tùy chỉnh vì giải pháp tích hợp sẵn của Angular tập trung nhiều vào dịch tại thời điểm biên dịch.
69
+ - **Tính linh hoạt thời gian chạy hạn chế**: Việc chuyển đổi ngôn ngữ ngay lập tức (mà không tải lại ứng dụng) có thể gặp khó khăn vì các bản dịch đã được tích hợp sẵn trong quá trình xây dựng.
70
+
71
+ ---
72
+
73
+ ### 2. ngx-translate
74
+
75
+ Website: [https://github.com/ngx-translate/core](https://github.com/ngx-translate/core)
76
+
77
+ **Tổng quan**
78
+ **ngx-translate** là một trong những thư viện i18n bên thứ ba được thiết lập lâu đời nhất trong hệ sinh thái Angular. Nó cho phép dịch tại thời gian chạy, giúp bạn tải các tệp ngôn ngữ theo yêu cầu và chuyển đổi ngôn ngữ một cách linh hoạt mà không cần xây dựng lại toàn bộ ứng dụng.
79
+
80
+ **Các tính năng chính**
81
+
82
+ - **Dịch tại thời gian chạy**: Lý tưởng cho việc chuyển đổi ngôn ngữ động và các trường hợp bạn không muốn nhiều bản dựng sản xuất.
83
+ - **Tệp dịch JSON**: Lưu trữ các bản dịch trong các tệp JSON đơn giản, giúp dễ dàng cấu trúc và bảo trì.
84
+ - **Tải không đồng bộ**: Tải bản dịch theo yêu cầu để giữ kích thước gói ban đầu nhỏ hơn.
85
+ - **Hỗ trợ đa ngôn ngữ**: Chuyển đổi ngôn ngữ ngay lập tức và lắng nghe các thay đổi ngôn ngữ trên các thành phần của bạn.
86
+
87
+ **Cân nhắc**
88
+
89
+ - **Trạng thái & Độ phức tạp**: Quản lý nhiều tệp dịch có thể trở nên phức tạp trong các ứng dụng lớn hơn.
90
+ - **SEO & SSR**: Nếu bạn cần render phía máy chủ với Angular Universal, ngx-translate yêu cầu cấu hình thêm để đảm bảo các bản dịch chính xác được phục vụ cho các trình thu thập dữ liệu và trình duyệt ngay lần tải đầu tiên.
91
+ - **Hiệu suất**: Mặc dù linh hoạt tại thời gian chạy, việc xử lý nhiều bản dịch trên các trang lớn có thể ảnh hưởng đến hiệu suất, vì vậy nên sử dụng các chiến lược lưu bộ nhớ đệm.
92
+
93
+ ---
94
+
95
+ ### 3. Transloco
96
+
97
+ Website: [https://ngneat.github.io/transloco/](https://ngneat.github.io/transloco/)
98
+
99
+ **Tổng quan**
100
+ **Transloco** là một thư viện i18n Angular hiện đại, được cộng đồng phát triển, nhấn mạnh vào kiến trúc có thể mở rộng và trải nghiệm nhà phát triển mượt mà. Nó cung cấp một phương pháp dựa trên plugin để tích hợp liền mạch với thiết lập Angular hiện có của bạn.
101
+
102
+ **Các tính năng chính**
103
+
104
+ - **Tích hợp quản lý trạng thái**: Tương thích sẵn với các thư viện quản lý trạng thái như NgRx và Akita.
105
+ - **Tải không đồng bộ**: Chia bản dịch thành các phần riêng biệt và chỉ tải khi cần thiết.
106
+ - **Hệ sinh thái Plugin phong phú**: Xử lý mọi thứ từ tích hợp SSR đến trích xuất thông điệp tự động.
107
+ - **Thời gian chạy hoặc thời gian xây dựng**: Cung cấp sự linh hoạt cho các quy trình dịch thuật khác nhau, dù bạn thích chuyển đổi tại thời gian chạy hay bản địa hóa được xây dựng sẵn.
108
+
109
+ **Những điều cần lưu ý**
110
+
111
+ - **Đường cong học tập**: Mặc dù có tài liệu đầy đủ, cách tiếp cận dựa trên plugin có thể yêu cầu các bước bổ sung cho các trường hợp sử dụng nâng cao (ví dụ: SSR, các tuyến đa ngôn ngữ).
112
+ - **Quy mô cộng đồng**: Transloco có một cộng đồng năng động nhưng vẫn đang phát triển so với giải pháp tích hợp sẵn của Angular hoặc ngx-translate.
113
+ - **Cấu trúc thư mục**: Việc giữ cho các bản dịch được tổ chức có thể là thách thức đối với các ứng dụng rất lớn. Cấu trúc thư mục tốt và quy ước đặt tên rất quan trọng.
114
+
115
+ ### Những suy nghĩ cuối cùng
116
+
117
+ Khi lựa chọn một phương pháp i18n cho ứng dụng Angular của bạn:
118
+
119
+ - **Đánh giá yêu cầu dự án**: Xem xét các yếu tố như chuyển đổi ngôn ngữ động, tốc độ phát triển, và nhu cầu tích hợp bên thứ ba.
120
+ - **Kiểm tra SSR & SEO**: Nếu sử dụng Angular Universal cho rendering phía máy chủ, hãy xác minh rằng giải pháp bạn chọn tích hợp mượt mà với metadata địa phương hóa và xử lý route.
121
+ - **Hiệu suất & Chiến lược xây dựng**: Đánh giá xem bạn có cần nhiều đầu ra xây dựng (theo từng ngôn ngữ) hay ưu tiên một gói duy nhất với bản dịch tại thời gian chạy.
122
+ - **Khả năng bảo trì & Mở rộng**: Đối với các ứng dụng lớn, đảm bảo thư viện của bạn hỗ trợ cấu trúc file rõ ràng, khóa có kiểu (nếu cần), và quy trình cập nhật đơn giản.
123
+ - **Trải nghiệm nhà phát triển**: Tự động hoàn thành TypeScript, hệ sinh thái plugin, và công cụ CLI có thể giảm đáng kể khó khăn khi cập nhật hoặc thêm bản dịch mới.
124
+
125
+ Tất cả các thư viện được thảo luận đều có thể hỗ trợ một ứng dụng Angular đa ngôn ngữ mạnh mẽ, mỗi thư viện đều có những điểm mạnh riêng. Lựa chọn tốt nhất phụ thuộc vào nhu cầu riêng biệt của bạn về **hiệu suất**, **quy trình làm việc**, **trải nghiệm nhà phát triển**, và **mục tiêu kinh doanh**.
@@ -0,0 +1,150 @@
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 Flutter
5
+ description: Khám phá các giải pháp i18n hàng đầu cho Flutter để giải quyết các thách thức 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
+ - Flutter
8
+ - i18n
9
+ - đa ngôn ngữ
10
+ - SEO
11
+ - Quốc tế hóa
12
+ - Blog
13
+ - JavaScript
14
+ - Flutter
15
+ slugs:
16
+ - blog
17
+ - i18n-technologies
18
+ - frameworks
19
+ - flutter
20
+ ---
21
+
22
+ # Khám Phá Các Giải Pháp i18n Để Dịch Ứng Dụng Flutter Của Bạn
23
+
24
+ Trong một thế giới ngày càng kết nối, việc cung cấp ứng dụng Flutter của bạn bằng nhiều ngôn ngữ có thể mở rộng phạm vi tiếp cận và cải thiện khả năng sử dụng cho những người không nói tiếng Anh. Việc triển khai quốc tế hóa (i18n) trong Flutter đảm bảo rằng văn bản, ngày tháng và các thông tin nhạy cảm về văn hóa khác được địa phương hóa một cách chính xác. Trong bài viết này, chúng ta sẽ khám phá các phương pháp khác nhau để thực hiện i18n trong Flutter, từ các framework chính thức đến các thư viện do cộng đồng phát triển, để bạn có thể chọn lựa giải pháp phù hợp nhất cho dự án của mình.
25
+
26
+ ---
27
+
28
+ ![minh họa i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
29
+
30
+ ## Quốc tế hóa (i18n) là gì?
31
+
32
+ Quốc tế hóa, thường được gọi là i18n, là quá trình thiết kế một ứng dụng sao cho nó có thể dễ dàng hỗ trợ nhiều ngôn ngữ và định dạng văn hóa khác nhau. Trong Flutter, điều này bao gồm việc thiết lập ứng dụng của bạn để quản lý các chuỗi đã được địa phương hóa, định dạng ngày/giờ và định dạng số một cách liền mạch. Bằng cách chuẩn bị ứng dụng Flutter của bạn cho i18n, bạn xây dựng một nền tảng vững chắc để tích hợp các bản dịch và xử lý các khác biệt vùng miền với ít trở ngại nhất.
33
+
34
+ Nếu bạn mới làm quen với khái niệm này, hãy xem 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).
35
+
36
+ ---
37
+
38
+ ## Thách thức dịch thuật cho các ứng dụng Flutter
39
+
40
+ Kiến trúc phản ứng và dựa trên widget của Flutter đặt ra một số thách thức i18n đặc thù:
41
+
42
+ - **Giao diện dựa trên Widget**: Các chuỗi văn bản có thể được phân tán trên nhiều widget khác nhau, đòi hỏi một cách hệ thống để tập trung hóa các bản dịch trong khi vẫn giữ cho giao diện người dùng phản ứng nhanh.
43
+ - **Nội dung động**: Các bản dịch cho dữ liệu thời gian thực hoặc dữ liệu lấy về (ví dụ: từ REST APIs hoặc Firebase) có thể làm phức tạp cấu hình của bạn.
44
+ - **Quản lý trạng thái**: Duy trì locale chính xác trong suốt quá trình điều hướng ứng dụng và chuyển đổi trạng thái có thể cần các giải pháp như `Provider`, `Riverpod` hoặc `Bloc`.
45
+ - **Material vs. Cupertino**: Flutter cung cấp các widget giao diện người dùng đa nền tảng cho Android (Material) và iOS (Cupertino), vì vậy việc đảm bảo i18n nhất quán trên cả hai có thể làm tăng độ phức tạp.
46
+ - **Triển khai & Cập nhật**: Quản lý nhiều ngôn ngữ có thể dẫn đến các gói ứng dụng lớn hơn hoặc tải xuống tài nguyên ngôn ngữ theo yêu cầu, đòi hỏi một chiến lược cân bằng giữa hiệu suất và trải nghiệm người dùng.
47
+
48
+ ---
49
+
50
+ ## Các Giải Pháp i18n Hàng Đầu cho Flutter
51
+
52
+ Flutter cung cấp hỗ trợ nội địa hóa chính thức, và cộng đồng đã phát triển thêm các thư viện giúp quản lý nhiều locale dễ dàng hơn. Dưới đây là một số phương pháp phổ biến.
53
+
54
+ ### 1. i18n Chính Thức của Flutter (intl + Tệp ARB)
55
+
56
+ **Tổng quan**
57
+ Flutter đi kèm với hỗ trợ chính thức cho nội địa hóa thông qua gói [`intl`](https://pub.dev/packages/intl) và tích hợp với thư viện `flutter_localizations`. Phương pháp này thường sử dụng các tệp **ARB (Application Resource Bundle)** để lưu trữ và quản lý các bản dịch của bạn.
58
+
59
+ **Các Tính Năng Chính**
60
+
61
+ - **Chính thức & Tích hợp**: Không cần thư viện bên ngoài, `MaterialApp` và `CupertinoApp` có thể trực tiếp tham chiếu đến các bản dịch của bạn.
62
+ - **Gói intl**: Cung cấp định dạng ngày/tháng, số, số nhiều, xử lý giới tính và các tính năng khác dựa trên ICU.
63
+ - **Kiểm tra thời gian biên dịch**: Việc tạo mã từ các tệp ARB giúp phát hiện các bản dịch bị thiếu trong quá trình biên dịch.
64
+ - **Hỗ trợ cộng đồng mạnh mẽ**: Được Google hỗ trợ, với nhiều tài liệu và ví dụ phong phú.
65
+
66
+ **Cân nhắc**
67
+
68
+ - **Cấu hình thủ công**: Bạn sẽ phải cấu hình các tệp ARB, thiết lập `MaterialApp` hoặc `CupertinoApp` với `localizationsDelegates`, và quản lý nhiều tệp `.arb` cho mỗi ngôn ngữ.
69
+ - **Tải lại/Nhấn khởi động lại nóng**: Việc chuyển đổi ngôn ngữ trong thời gian chạy thường yêu cầu khởi động lại toàn bộ ứng dụng để nhận diện locale mới.
70
+ - **Khả năng mở rộng**: Đối với các ứng dụng lớn hơn, số lượng tệp ARB có thể tăng lên, đòi hỏi một cấu trúc thư mục có kỷ luật.
71
+
72
+ ---
73
+
74
+ ### 2. Easy Localization
75
+
76
+ Kho lưu trữ: [https://pub.dev/packages/easy_localization](https://pub.dev/packages/easy_localization)
77
+
78
+ **Tổng quan**
79
+ **Easy Localization** là một thư viện do cộng đồng phát triển, được thiết kế để đơn giản hóa các tác vụ bản địa hóa trong Flutter. Nó tập trung vào cách tiếp cận động hơn trong việc tải và chuyển đổi ngôn ngữ, thường với ít mã mẫu.
80
+
81
+ **Các tính năng chính**
82
+
83
+ - **Cài đặt đơn giản**: Bạn có thể bao bọc widget gốc của mình bằng `EasyLocalization` để quản lý các locale được hỗ trợ và bản dịch một cách dễ dàng.
84
+ - **Chuyển đổi ngôn ngữ khi chạy**: Thay đổi ngôn ngữ của ứng dụng ngay lập tức mà không cần khởi động lại thủ công, cải thiện trải nghiệm người dùng.
85
+ - **JSON/YAML/CSV**: Lưu trữ bản dịch dưới nhiều định dạng tệp khác nhau để linh hoạt.
86
+ - **Phân số & Ngữ cảnh**: Các tính năng cơ bản để quản lý các dạng số nhiều và bản dịch dựa trên ngữ cảnh.
87
+
88
+ **Cân nhắc**
89
+
90
+ - **Kiểm soát ít chi tiết hơn**: Mặc dù đơn giản hơn, bạn có thể ít kiểm soát tinh chỉnh hơn đối với tối ưu hóa thời gian biên dịch so với phương pháp ARB chính thức.
91
+ - **Hiệu suất**: Việc tải nhiều tệp bản dịch lớn trong thời gian chạy có thể ảnh hưởng đến thời gian khởi động của các ứng dụng lớn hơn.
92
+ - **Cộng đồng & Cập nhật**: Phụ thuộc nhiều vào cộng đồng, điều này có thể là điểm cộng cho hỗ trợ nhưng cũng có thể thay đổi theo thời gian.
93
+
94
+ ---
95
+
96
+ ### 3. Flutter_i18n
97
+
98
+ Kho lưu trữ: [https://pub.dev/packages/flutter_i18n](https://pub.dev/packages/flutter_i18n)
99
+
100
+ **Tổng quan**
101
+ **Flutter_i18n** cung cấp một phương pháp tương tự như Easy Localization, với trọng tâm là giữ bản dịch và logic bên ngoài mã widget cốt lõi của bạn. Nó hỗ trợ cả việc tải đồng bộ và bất đồng bộ các tệp localization.
102
+
103
+ **Tính năng chính**
104
+
105
+ - **Nhiều định dạng tệp**: Sử dụng JSON hoặc YAML để lưu trữ bản dịch.
106
+ - **Hỗ trợ Hot Reload**: Bạn có thể chuyển đổi ngôn ngữ một cách động và thấy các thay đổi ngay lập tức trong chế độ phát triển.
107
+ - **Widgets & Hooks i18n**: Cung cấp các widget chuyên biệt như `I18nText` để sử dụng đơn giản hơn trong UI, cũng như các hooks cho các giải pháp dựa trên trạng thái.
108
+ - **Localization cấp độ Route**: Liên kết các locale cụ thể với các route hoặc module nhất định, điều này rất hữu ích cho các ứng dụng lớn.
109
+
110
+ **Cân nhắc**
111
+
112
+ - **Xử lý ngôn ngữ thủ công**: Bạn sẽ cần quản lý cẩn thận các thay đổi locale để tránh các điều kiện tranh chấp hoặc dữ liệu lỗi thời.
113
+ - **Chi phí tích hợp**: Mặc dù linh hoạt, việc thiết lập các tính năng nâng cao (như bản dịch lồng nhau hoặc locale dự phòng) có thể yêu cầu cấu hình nhiều hơn.
114
+ - **Độ trưởng thành của cộng đồng**: Tương đối trưởng thành với các bản cập nhật đều đặn, nhưng ít chính thức hơn so với giải pháp cốt lõi của Flutter.
115
+
116
+ ---
117
+
118
+ ### 4. Intlayer
119
+
120
+ Website: [https://intlayer.org/](https://intlayer.org/)
121
+
122
+ **Tổng quan**
123
+ **Intlayer** là một giải pháp i18n mã nguồn mở nhằm đơn giản hóa việc hỗ trợ đa ngôn ngữ trên nhiều framework khác nhau, bao gồm cả **Flutter**. Nó nhấn mạnh cách tiếp cận khai báo, kiểu dữ liệu mạnh mẽ và hỗ trợ SSR trong các hệ sinh thái khác, mặc dù SSR không phổ biến trong Flutter tiêu chuẩn, bạn có thể tìm thấy sự kết hợp nếu dự án của bạn sử dụng Flutter web hoặc các framework nâng cao.
124
+
125
+ **Tính năng chính**
126
+
127
+ - **Dịch khai báo**: Định nghĩa từ điển dịch thuật ở cấp widget hoặc trong một tệp tập trung để kiến trúc sạch hơn.
128
+ - **TypeScript & Tự động hoàn thành (Web)**: Mặc dù tính năng này chủ yếu có lợi cho các framework web, cách tiếp cận dịch có kiểu vẫn có thể hướng dẫn mã có cấu trúc trong Flutter.
129
+ - **Tải Không Đồng Bộ**: Tải tài nguyên dịch thuật một cách động, có thể giảm kích thước gói ban đầu cho các ứng dụng đa ngôn ngữ.
130
+ - **Tích Hợp với Flutter**: Có thể thiết lập tích hợp cơ bản để tận dụng phương pháp Intlayer cho các bản dịch có cấu trúc.
131
+
132
+ **Những Điều Cần Lưu Ý**
133
+
134
+ - **Mức Độ Trưởng Thành Riêng Cho Flutter**: Mặc dù đang phát triển, cộng đồng Intlayer dành cho Flutter còn nhỏ, nên bạn có thể tìm thấy ít hướng dẫn hoặc ví dụ mã hơn so với các thư viện khác.
135
+ - **SSR**: Thư viện hỗ trợ mạnh mẽ SSR trong các bối cảnh web, nhưng việc sử dụng SSR trong Flutter mang tính chuyên biệt hơn (ví dụ: Flutter web hoặc các phương pháp máy chủ tùy chỉnh).
136
+ - **Cấu Hình Tùy Chỉnh**: Cần cấu hình ban đầu để phù hợp với luồng `MaterialApp` hoặc `CupertinoApp` của Flutter.
137
+
138
+ ---
139
+
140
+ ### Những Suy Nghĩ Cuối Cùng
141
+
142
+ Khi đánh giá một phương pháp i18n cho Flutter:
143
+
144
+ 1. **Xác định Quy trình Làm việc của Bạn**: Quyết định xem bạn ưu tiên **dịch thuật tại thời điểm biên dịch** (thông qua ARB + `intl`) để có an toàn kiểu và hiệu suất tốt hơn hay **dịch thuật tại thời gian chạy** (thông qua Easy Localization, Flutter_i18n) để có sự linh hoạt hơn.
145
+ 2. **Chuyển đổi Ngôn ngữ**: Nếu việc chuyển đổi ngôn ngữ theo thời gian thực mà không cần khởi động lại ứng dụng là quan trọng, hãy cân nhắc sử dụng thư viện dựa trên thời gian chạy.
146
+ 3. **Khả năng Mở rộng & Tổ chức**: Khi ứng dụng Flutter của bạn phát triển, hãy lên kế hoạch cách bạn sẽ tổ chức, đặt tên và phiên bản các tệp dịch thuật của mình. Điều này đặc biệt quan trọng khi xử lý nhiều ngôn ngữ.
147
+ 4. **Hiệu suất so với Linh hoạt**: Mỗi phương pháp đều có những đánh đổi. Các giải pháp biên dịch trước thường có chi phí thời gian chạy nhỏ hơn, trong khi dịch thuật theo thời gian thực mang lại trải nghiệm người dùng mượt mà hơn.
148
+ 5. **Cộng đồng & Hệ sinh thái**: Các giải pháp chính thức như ARB + `intl` thường cung cấp sự ổn định lâu dài. Các thư viện bên thứ ba mang lại sự tiện lợi bổ sung và các tính năng tại thời gian chạy nhưng có thể đòi hỏi sự cẩn trọng hơn về cập nhật và hỗ trợ.
149
+
150
+ Tất cả các giải pháp này đều có thể giúp bạn tạo ra một ứng dụng Flutter đa ngôn ngữ. Lựa chọn cuối cùng phụ thuộc vào **yêu cầu hiệu năng**, **quy trình làm việc của nhà phát triển**, **mục tiêu trải nghiệm người dùng**, và **khả năng duy trì lâu dài** của ứng dụng. Bằng cách chọn chiến lược phù hợp với các ưu tiên của dự án, bạn sẽ đảm bảo ứng dụng Flutter của mình có thể làm hài lòng người dùng trên toàn cầu.