@intlayer/docs 7.5.11 → 7.5.13

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 (417) hide show
  1. package/blog/ar/intlayer_with_i18next.md +0 -2
  2. package/blog/ar/intlayer_with_next-i18next.md +0 -2
  3. package/blog/ar/intlayer_with_react-i18next.md +0 -2
  4. package/blog/de/intlayer_with_i18next.md +0 -45
  5. package/blog/de/intlayer_with_next-i18next.md +0 -46
  6. package/blog/de/intlayer_with_react-i18next.md +0 -2
  7. package/blog/en/intlayer_with_i18next.md +0 -46
  8. package/blog/en/intlayer_with_next-i18next.md +0 -48
  9. package/blog/en/intlayer_with_next-intl.md +0 -44
  10. package/blog/en/intlayer_with_react-i18next.md +0 -44
  11. package/blog/en/intlayer_with_react-intl.md +0 -42
  12. package/blog/en/intlayer_with_vue-i18n.md +0 -44
  13. package/blog/en-GB/intlayer_with_i18next.md +0 -45
  14. package/blog/en-GB/intlayer_with_next-i18next.md +0 -47
  15. package/blog/en-GB/intlayer_with_next-intl.md +0 -42
  16. package/blog/en-GB/intlayer_with_react-i18next.md +0 -43
  17. package/blog/en-GB/intlayer_with_react-intl.md +0 -42
  18. package/blog/en-GB/intlayer_with_vue-i18n.md +0 -46
  19. package/blog/es/intlayer_with_i18next.md +0 -45
  20. package/blog/es/intlayer_with_next-i18next.md +0 -47
  21. package/blog/es/intlayer_with_next-intl.md +0 -42
  22. package/blog/es/intlayer_with_react-i18next.md +0 -43
  23. package/blog/es/intlayer_with_react-intl.md +0 -42
  24. package/blog/es/intlayer_with_vue-i18n.md +0 -46
  25. package/blog/fr/intlayer_with_i18next.md +0 -45
  26. package/blog/fr/intlayer_with_next-i18next.md +0 -47
  27. package/blog/fr/intlayer_with_next-intl.md +0 -42
  28. package/blog/fr/intlayer_with_react-i18next.md +0 -43
  29. package/blog/fr/intlayer_with_react-intl.md +0 -42
  30. package/blog/fr/intlayer_with_vue-i18n.md +0 -46
  31. package/blog/hi/intlayer_with_i18next.md +0 -2
  32. package/blog/hi/intlayer_with_next-i18next.md +0 -2
  33. package/blog/hi/intlayer_with_react-i18next.md +0 -2
  34. package/blog/id/intlayer_with_i18next.md +0 -2
  35. package/blog/id/intlayer_with_next-i18next.md +0 -2
  36. package/blog/id/intlayer_with_react-i18next.md +0 -2
  37. package/blog/it/intlayer_with_i18next.md +0 -2
  38. package/blog/it/intlayer_with_next-i18next.md +0 -2
  39. package/blog/it/intlayer_with_react-i18next.md +0 -2
  40. package/blog/ja/intlayer_with_i18next.md +0 -45
  41. package/blog/ja/intlayer_with_next-i18next.md +0 -46
  42. package/blog/ja/intlayer_with_next-intl.md +0 -42
  43. package/blog/ja/intlayer_with_react-i18next.md +0 -42
  44. package/blog/ja/intlayer_with_react-intl.md +0 -42
  45. package/blog/ja/intlayer_with_vue-i18n.md +0 -46
  46. package/blog/ko/intlayer_with_i18next.md +0 -2
  47. package/blog/ko/intlayer_with_next-i18next.md +0 -2
  48. package/blog/ko/intlayer_with_react-i18next.md +0 -1
  49. package/blog/pl/intlayer_with_i18next.md +0 -45
  50. package/blog/pl/intlayer_with_next-i18next.md +0 -46
  51. package/blog/pl/intlayer_with_next-intl.md +0 -42
  52. package/blog/pl/intlayer_with_react-i18next.md +0 -43
  53. package/blog/pl/intlayer_with_react-intl.md +0 -42
  54. package/blog/pl/intlayer_with_vue-i18n.md +0 -46
  55. package/blog/pt/intlayer_with_i18next.md +0 -2
  56. package/blog/pt/intlayer_with_next-i18next.md +0 -2
  57. package/blog/pt/intlayer_with_react-i18next.md +0 -2
  58. package/blog/ru/intlayer_with_i18next.md +0 -45
  59. package/blog/ru/intlayer_with_next-i18next.md +0 -47
  60. package/blog/ru/intlayer_with_next-intl.md +0 -42
  61. package/blog/ru/intlayer_with_react-i18next.md +0 -43
  62. package/blog/ru/intlayer_with_react-intl.md +0 -42
  63. package/blog/ru/intlayer_with_vue-i18n.md +0 -46
  64. package/blog/tr/intlayer_with_i18next.md +0 -2
  65. package/blog/tr/intlayer_with_next-i18next.md +0 -1
  66. package/blog/tr/intlayer_with_react-i18next.md +0 -2
  67. package/blog/uk/compiler_vs_declarative_i18n.md +224 -0
  68. package/blog/uk/i18n_using_next-i18next.md +1086 -0
  69. package/blog/uk/i18n_using_next-intl.md +760 -0
  70. package/blog/uk/index.md +69 -0
  71. package/blog/uk/internationalization_and_SEO.md +273 -0
  72. package/blog/uk/intlayer_with_i18next.md +211 -0
  73. package/blog/uk/intlayer_with_next-i18next.md +202 -0
  74. package/blog/uk/intlayer_with_next-intl.md +203 -0
  75. package/blog/uk/intlayer_with_react-i18next.md +200 -0
  76. package/blog/uk/intlayer_with_react-intl.md +202 -0
  77. package/blog/uk/intlayer_with_vue-i18n.md +206 -0
  78. package/blog/uk/l10n_platform_alternative/Lokalise.md +80 -0
  79. package/blog/uk/l10n_platform_alternative/crowdin.md +80 -0
  80. package/blog/uk/l10n_platform_alternative/phrase.md +78 -0
  81. package/blog/uk/list_i18n_technologies/CMS/drupal.md +143 -0
  82. package/blog/uk/list_i18n_technologies/CMS/wix.md +167 -0
  83. package/blog/uk/list_i18n_technologies/CMS/wordpress.md +189 -0
  84. package/blog/uk/list_i18n_technologies/frameworks/angular.md +125 -0
  85. package/blog/uk/list_i18n_technologies/frameworks/flutter.md +128 -0
  86. package/blog/uk/list_i18n_technologies/frameworks/react-native.md +217 -0
  87. package/blog/uk/list_i18n_technologies/frameworks/react.md +155 -0
  88. package/blog/uk/list_i18n_technologies/frameworks/svelte.md +145 -0
  89. package/blog/uk/list_i18n_technologies/frameworks/vue.md +144 -0
  90. package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1499 -0
  91. package/blog/uk/nextjs-multilingual-seo-comparison.md +360 -0
  92. package/blog/uk/rag_powered_documentation_assistant.md +288 -0
  93. package/blog/uk/react-i18next_vs_react-intl_vs_intlayer.md +164 -0
  94. package/blog/uk/vue-i18n_vs_intlayer.md +279 -0
  95. package/blog/uk/what_is_internationalization.md +167 -0
  96. package/blog/vi/intlayer_with_i18next.md +0 -2
  97. package/blog/vi/intlayer_with_next-i18next.md +0 -2
  98. package/blog/vi/intlayer_with_react-i18next.md +0 -2
  99. package/blog/zh/intlayer_with_i18next.md +0 -2
  100. package/blog/zh/intlayer_with_next-i18next.md +0 -2
  101. package/blog/zh/intlayer_with_react-i18next.md +0 -2
  102. package/blog/zh/intlayer_with_vue-i18n.md +0 -46
  103. package/dist/cjs/generated/blog.entry.cjs +58 -29
  104. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  105. package/dist/cjs/generated/docs.entry.cjs +218 -99
  106. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  107. package/dist/cjs/generated/frequentQuestions.entry.cjs +50 -15
  108. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  109. package/dist/cjs/generated/legal.entry.cjs +4 -2
  110. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  111. package/dist/esm/generated/blog.entry.mjs +58 -29
  112. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  113. package/dist/esm/generated/docs.entry.mjs +218 -99
  114. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  115. package/dist/esm/generated/frequentQuestions.entry.mjs +50 -15
  116. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  117. package/dist/esm/generated/legal.entry.mjs +4 -2
  118. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  119. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  120. package/dist/types/generated/docs.entry.d.ts +1 -0
  121. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  122. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  123. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  124. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  125. package/docs/ar/configuration.md +6 -1
  126. package/docs/ar/dictionary/content_file.md +6 -1
  127. package/docs/ar/intlayer_with_next-i18next.md +0 -1
  128. package/docs/ar/intlayer_with_nextjs_14.md +28 -0
  129. package/docs/ar/intlayer_with_nextjs_15.md +28 -0
  130. package/docs/ar/intlayer_with_nextjs_16.md +28 -0
  131. package/docs/ar/intlayer_with_nextjs_no_locale_path.md +1159 -0
  132. package/docs/ar/plugins/sync-json.md +6 -2
  133. package/docs/de/configuration.md +6 -1
  134. package/docs/de/dictionary/content_file.md +6 -1
  135. package/docs/de/intlayer_with_next-i18next.md +0 -1
  136. package/docs/de/intlayer_with_nextjs_14.md +28 -0
  137. package/docs/de/intlayer_with_nextjs_15.md +28 -0
  138. package/docs/de/intlayer_with_nextjs_16.md +28 -0
  139. package/docs/de/intlayer_with_nextjs_no_locale_path.md +1152 -0
  140. package/docs/de/plugins/sync-json.md +6 -2
  141. package/docs/en/configuration.md +6 -1
  142. package/docs/en/dictionary/content_file.md +6 -1
  143. package/docs/en/intlayer_with_next-i18next.md +0 -1
  144. package/docs/en/intlayer_with_nextjs_14.md +28 -0
  145. package/docs/en/intlayer_with_nextjs_15.md +28 -0
  146. package/docs/en/intlayer_with_nextjs_16.md +31 -1
  147. package/docs/en/intlayer_with_nextjs_no_locale_path.md +1132 -0
  148. package/docs/en/plugins/sync-json.md +6 -2
  149. package/docs/en-GB/configuration.md +6 -1
  150. package/docs/en-GB/dictionary/content_file.md +3 -1
  151. package/docs/en-GB/intlayer_with_next-i18next.md +0 -1
  152. package/docs/en-GB/intlayer_with_nextjs_14.md +28 -0
  153. package/docs/en-GB/intlayer_with_nextjs_15.md +28 -0
  154. package/docs/en-GB/intlayer_with_nextjs_16.md +28 -0
  155. package/docs/en-GB/intlayer_with_nextjs_no_locale_path.md +1154 -0
  156. package/docs/en-GB/plugins/sync-json.md +6 -2
  157. package/docs/es/configuration.md +6 -1
  158. package/docs/es/dictionary/content_file.md +6 -1
  159. package/docs/es/intlayer_with_next-i18next.md +0 -1
  160. package/docs/es/intlayer_with_nextjs_14.md +28 -0
  161. package/docs/es/intlayer_with_nextjs_15.md +28 -0
  162. package/docs/es/intlayer_with_nextjs_16.md +28 -0
  163. package/docs/es/intlayer_with_nextjs_no_locale_path.md +1143 -0
  164. package/docs/es/plugins/sync-json.md +6 -2
  165. package/docs/fr/configuration.md +6 -1
  166. package/docs/fr/dictionary/content_file.md +3 -1
  167. package/docs/fr/intlayer_with_next-i18next.md +0 -1
  168. package/docs/fr/intlayer_with_nextjs_14.md +28 -0
  169. package/docs/fr/intlayer_with_nextjs_15.md +28 -0
  170. package/docs/fr/intlayer_with_nextjs_16.md +28 -0
  171. package/docs/fr/intlayer_with_nextjs_no_locale_path.md +1174 -0
  172. package/docs/fr/plugins/sync-json.md +9 -5
  173. package/docs/hi/configuration.md +6 -1
  174. package/docs/hi/dictionary/content_file.md +3 -1
  175. package/docs/hi/intlayer_with_next-i18next.md +0 -1
  176. package/docs/hi/intlayer_with_nextjs_14.md +28 -0
  177. package/docs/hi/intlayer_with_nextjs_15.md +28 -0
  178. package/docs/hi/intlayer_with_nextjs_16.md +28 -0
  179. package/docs/hi/intlayer_with_nextjs_no_locale_path.md +1151 -0
  180. package/docs/hi/plugins/sync-json.md +6 -2
  181. package/docs/id/configuration.md +6 -1
  182. package/docs/id/dictionary/content_file.md +3 -1
  183. package/docs/id/intlayer_with_next-i18next.md +0 -1
  184. package/docs/id/intlayer_with_nextjs_14.md +28 -0
  185. package/docs/id/intlayer_with_nextjs_15.md +28 -0
  186. package/docs/id/intlayer_with_nextjs_16.md +28 -0
  187. package/docs/id/intlayer_with_nextjs_no_locale_path.md +1154 -0
  188. package/docs/id/plugins/sync-json.md +6 -2
  189. package/docs/it/configuration.md +6 -1
  190. package/docs/it/dictionary/content_file.md +3 -1
  191. package/docs/it/intlayer_with_next-i18next.md +0 -1
  192. package/docs/it/intlayer_with_nextjs_14.md +28 -0
  193. package/docs/it/intlayer_with_nextjs_15.md +28 -0
  194. package/docs/it/intlayer_with_nextjs_16.md +28 -0
  195. package/docs/it/intlayer_with_nextjs_no_locale_path.md +1148 -0
  196. package/docs/it/plugins/sync-json.md +6 -2
  197. package/docs/ja/configuration.md +6 -1
  198. package/docs/ja/dictionary/content_file.md +3 -1
  199. package/docs/ja/intlayer_with_next-i18next.md +0 -1
  200. package/docs/ja/intlayer_with_nextjs_14.md +28 -0
  201. package/docs/ja/intlayer_with_nextjs_15.md +28 -0
  202. package/docs/ja/intlayer_with_nextjs_16.md +28 -0
  203. package/docs/ja/intlayer_with_nextjs_no_locale_path.md +1222 -0
  204. package/docs/ja/plugins/sync-json.md +6 -2
  205. package/docs/ko/configuration.md +6 -1
  206. package/docs/ko/dictionary/content_file.md +3 -1
  207. package/docs/ko/intlayer_with_next-i18next.md +0 -1
  208. package/docs/ko/intlayer_with_nextjs_14.md +28 -0
  209. package/docs/ko/intlayer_with_nextjs_15.md +28 -0
  210. package/docs/ko/intlayer_with_nextjs_16.md +28 -0
  211. package/docs/ko/intlayer_with_nextjs_no_locale_path.md +1205 -0
  212. package/docs/ko/plugins/sync-json.md +6 -2
  213. package/docs/pl/configuration.md +3 -1
  214. package/docs/pl/dictionary/content_file.md +3 -1
  215. package/docs/pl/intlayer_with_next-i18next.md +0 -1
  216. package/docs/pl/intlayer_with_nextjs_14.md +28 -0
  217. package/docs/pl/intlayer_with_nextjs_15.md +28 -0
  218. package/docs/pl/intlayer_with_nextjs_16.md +28 -0
  219. package/docs/pl/intlayer_with_nextjs_no_locale_path.md +1149 -0
  220. package/docs/pl/plugins/sync-json.md +6 -2
  221. package/docs/pt/configuration.md +6 -1
  222. package/docs/pt/dictionary/content_file.md +3 -1
  223. package/docs/pt/intlayer_with_next-i18next.md +0 -1
  224. package/docs/pt/intlayer_with_nextjs_14.md +28 -0
  225. package/docs/pt/intlayer_with_nextjs_15.md +28 -0
  226. package/docs/pt/intlayer_with_nextjs_16.md +28 -0
  227. package/docs/pt/intlayer_with_nextjs_no_locale_path.md +1152 -0
  228. package/docs/pt/plugins/sync-json.md +6 -2
  229. package/docs/ru/configuration.md +6 -1
  230. package/docs/ru/dictionary/content_file.md +6 -1
  231. package/docs/ru/intlayer_with_next-i18next.md +0 -1
  232. package/docs/ru/intlayer_with_nextjs_14.md +28 -0
  233. package/docs/ru/intlayer_with_nextjs_15.md +28 -0
  234. package/docs/ru/intlayer_with_nextjs_16.md +28 -0
  235. package/docs/ru/intlayer_with_nextjs_no_locale_path.md +1204 -0
  236. package/docs/ru/plugins/sync-json.md +6 -2
  237. package/docs/tr/configuration.md +6 -1
  238. package/docs/tr/dictionary/content_file.md +3 -1
  239. package/docs/tr/intlayer_with_next-i18next.md +0 -1
  240. package/docs/tr/intlayer_with_nextjs_14.md +28 -0
  241. package/docs/tr/intlayer_with_nextjs_15.md +28 -0
  242. package/docs/tr/intlayer_with_nextjs_16.md +28 -0
  243. package/docs/tr/intlayer_with_nextjs_no_locale_path.md +1159 -0
  244. package/docs/tr/plugins/sync-json.md +6 -2
  245. package/docs/uk/CI_CD.md +198 -0
  246. package/docs/uk/autoFill.md +307 -0
  247. package/docs/uk/bundle_optimization.md +185 -0
  248. package/docs/uk/cli/build.md +64 -0
  249. package/docs/uk/cli/ci.md +137 -0
  250. package/docs/uk/cli/configuration.md +63 -0
  251. package/docs/uk/cli/debug.md +46 -0
  252. package/docs/uk/cli/doc-review.md +43 -0
  253. package/docs/uk/cli/doc-translate.md +132 -0
  254. package/docs/uk/cli/editor.md +28 -0
  255. package/docs/uk/cli/fill.md +130 -0
  256. package/docs/uk/cli/index.md +190 -0
  257. package/docs/uk/cli/init.md +84 -0
  258. package/docs/uk/cli/list.md +90 -0
  259. package/docs/uk/cli/list_projects.md +128 -0
  260. package/docs/uk/cli/live.md +41 -0
  261. package/docs/uk/cli/login.md +157 -0
  262. package/docs/uk/cli/pull.md +78 -0
  263. package/docs/uk/cli/push.md +98 -0
  264. package/docs/uk/cli/sdk.md +71 -0
  265. package/docs/uk/cli/test.md +76 -0
  266. package/docs/uk/cli/transform.md +65 -0
  267. package/docs/uk/cli/version.md +24 -0
  268. package/docs/uk/cli/watch.md +37 -0
  269. package/docs/uk/compiler.md +133 -0
  270. package/docs/uk/component_i18n.md +194 -0
  271. package/docs/uk/configuration.md +742 -0
  272. package/docs/uk/dictionary/condition.md +237 -0
  273. package/docs/uk/dictionary/content_file.md +1134 -0
  274. package/docs/uk/dictionary/enumeration.md +245 -0
  275. package/docs/uk/dictionary/file.md +232 -0
  276. package/docs/uk/dictionary/function_fetching.md +212 -0
  277. package/docs/uk/dictionary/gender.md +273 -0
  278. package/docs/uk/dictionary/insertion.md +187 -0
  279. package/docs/uk/dictionary/markdown.md +383 -0
  280. package/docs/uk/dictionary/nesting.md +273 -0
  281. package/docs/uk/dictionary/translation.md +332 -0
  282. package/docs/uk/formatters.md +595 -0
  283. package/docs/uk/how_works_intlayer.md +256 -0
  284. package/docs/uk/index.md +175 -0
  285. package/docs/uk/interest_of_intlayer.md +297 -0
  286. package/docs/uk/intlayer_CMS.md +569 -0
  287. package/docs/uk/intlayer_visual_editor.md +292 -0
  288. package/docs/uk/intlayer_with_angular.md +710 -0
  289. package/docs/uk/intlayer_with_astro.md +256 -0
  290. package/docs/uk/intlayer_with_create_react_app.md +1258 -0
  291. package/docs/uk/intlayer_with_express.md +429 -0
  292. package/docs/uk/intlayer_with_fastify.md +446 -0
  293. package/docs/uk/intlayer_with_lynx+react.md +548 -0
  294. package/docs/uk/intlayer_with_nestjs.md +283 -0
  295. package/docs/uk/intlayer_with_next-i18next.md +640 -0
  296. package/docs/uk/intlayer_with_next-intl.md +456 -0
  297. package/docs/uk/intlayer_with_nextjs_14.md +1646 -0
  298. package/docs/uk/intlayer_with_nextjs_15.md +1910 -0
  299. package/docs/uk/intlayer_with_nextjs_16.md +1763 -0
  300. package/docs/uk/intlayer_with_nextjs_no_locale_path.md +1159 -0
  301. package/docs/uk/intlayer_with_nextjs_page_router.md +1541 -0
  302. package/docs/uk/intlayer_with_nuxt.md +711 -0
  303. package/docs/uk/intlayer_with_react_native+expo.md +715 -0
  304. package/docs/uk/intlayer_with_react_router_v7.md +600 -0
  305. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +669 -0
  306. package/docs/uk/intlayer_with_svelte_kit.md +579 -0
  307. package/docs/uk/intlayer_with_tanstack.md +818 -0
  308. package/docs/uk/intlayer_with_vite+preact.md +1748 -0
  309. package/docs/uk/intlayer_with_vite+react.md +1449 -0
  310. package/docs/uk/intlayer_with_vite+solid.md +302 -0
  311. package/docs/uk/intlayer_with_vite+svelte.md +520 -0
  312. package/docs/uk/intlayer_with_vite+vue.md +1113 -0
  313. package/docs/uk/introduction.md +222 -0
  314. package/docs/uk/locale_mapper.md +242 -0
  315. package/docs/uk/mcp_server.md +211 -0
  316. package/docs/uk/packages/express-intlayer/t.md +465 -0
  317. package/docs/uk/packages/intlayer/getConfiguration.md +145 -0
  318. package/docs/uk/packages/intlayer/getEnumeration.md +159 -0
  319. package/docs/uk/packages/intlayer/getHTMLTextDir.md +121 -0
  320. package/docs/uk/packages/intlayer/getLocaleLang.md +81 -0
  321. package/docs/uk/packages/intlayer/getLocaleName.md +135 -0
  322. package/docs/uk/packages/intlayer/getLocalizedUrl.md +338 -0
  323. package/docs/uk/packages/intlayer/getMultilingualUrls.md +359 -0
  324. package/docs/uk/packages/intlayer/getPathWithoutLocale.md +75 -0
  325. package/docs/uk/packages/intlayer/getPrefix.md +213 -0
  326. package/docs/uk/packages/intlayer/getTranslation.md +190 -0
  327. package/docs/uk/packages/intlayer/getTranslationContent.md +189 -0
  328. package/docs/uk/packages/next-intlayer/t.md +365 -0
  329. package/docs/uk/packages/next-intlayer/useDictionary.md +276 -0
  330. package/docs/uk/packages/next-intlayer/useIntlayer.md +263 -0
  331. package/docs/uk/packages/next-intlayer/useLocale.md +166 -0
  332. package/docs/uk/packages/react-intlayer/t.md +311 -0
  333. package/docs/uk/packages/react-intlayer/useDictionary.md +295 -0
  334. package/docs/uk/packages/react-intlayer/useI18n.md +250 -0
  335. package/docs/uk/packages/react-intlayer/useIntlayer.md +251 -0
  336. package/docs/uk/packages/react-intlayer/useLocale.md +210 -0
  337. package/docs/uk/per_locale_file.md +345 -0
  338. package/docs/uk/plugins/sync-json.md +398 -0
  339. package/docs/uk/readme.md +265 -0
  340. package/docs/uk/releases/v6.md +305 -0
  341. package/docs/uk/releases/v7.md +624 -0
  342. package/docs/uk/roadmap.md +346 -0
  343. package/docs/uk/testing.md +204 -0
  344. package/docs/uk/vs_code_extension.md +133 -0
  345. package/docs/vi/configuration.md +6 -1
  346. package/docs/vi/dictionary/content_file.md +6 -1
  347. package/docs/vi/intlayer_with_next-i18next.md +0 -1
  348. package/docs/vi/intlayer_with_nextjs_14.md +28 -0
  349. package/docs/vi/intlayer_with_nextjs_15.md +28 -0
  350. package/docs/vi/intlayer_with_nextjs_16.md +28 -0
  351. package/docs/vi/intlayer_with_nextjs_no_locale_path.md +1151 -0
  352. package/docs/vi/plugins/sync-json.md +6 -2
  353. package/docs/zh/configuration.md +6 -1
  354. package/docs/zh/dictionary/content_file.md +6 -1
  355. package/docs/zh/intlayer_with_next-i18next.md +0 -1
  356. package/docs/zh/intlayer_with_nextjs_14.md +28 -0
  357. package/docs/zh/intlayer_with_nextjs_15.md +28 -0
  358. package/docs/zh/intlayer_with_nextjs_16.md +28 -0
  359. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +1206 -0
  360. package/docs/zh/plugins/sync-json.md +9 -5
  361. package/frequent_questions/ar/SSR_Next_no_[locale].md +1 -1
  362. package/frequent_questions/ar/error-vite-env-only.md +77 -0
  363. package/frequent_questions/de/SSR_Next_no_[locale].md +1 -1
  364. package/frequent_questions/de/error-vite-env-only.md +77 -0
  365. package/frequent_questions/en/SSR_Next_no_[locale].md +1 -1
  366. package/frequent_questions/en/error-vite-env-only.md +77 -0
  367. package/frequent_questions/en-GB/SSR_Next_no_[locale].md +1 -1
  368. package/frequent_questions/en-GB/error-vite-env-only.md +77 -0
  369. package/frequent_questions/es/SSR_Next_no_[locale].md +1 -1
  370. package/frequent_questions/es/error-vite-env-only.md +76 -0
  371. package/frequent_questions/fr/SSR_Next_no_[locale].md +1 -1
  372. package/frequent_questions/fr/error-vite-env-only.md +77 -0
  373. package/frequent_questions/hi/SSR_Next_no_[locale].md +1 -1
  374. package/frequent_questions/hi/error-vite-env-only.md +77 -0
  375. package/frequent_questions/id/SSR_Next_no_[locale].md +1 -1
  376. package/frequent_questions/id/error-vite-env-only.md +77 -0
  377. package/frequent_questions/it/SSR_Next_no_[locale].md +1 -1
  378. package/frequent_questions/it/error-vite-env-only.md +77 -0
  379. package/frequent_questions/ja/SSR_Next_no_[locale].md +1 -1
  380. package/frequent_questions/ja/error-vite-env-only.md +77 -0
  381. package/frequent_questions/ko/SSR_Next_no_[locale].md +1 -1
  382. package/frequent_questions/ko/error-vite-env-only.md +77 -0
  383. package/frequent_questions/pl/SSR_Next_no_[locale].md +1 -1
  384. package/frequent_questions/pl/error-vite-env-only.md +77 -0
  385. package/frequent_questions/pt/SSR_Next_no_[locale].md +1 -1
  386. package/frequent_questions/pt/error-vite-env-only.md +77 -0
  387. package/frequent_questions/ru/SSR_Next_no_[locale].md +1 -1
  388. package/frequent_questions/ru/error-vite-env-only.md +77 -0
  389. package/frequent_questions/tr/SSR_Next_no_[locale].md +1 -1
  390. package/frequent_questions/tr/error-vite-env-only.md +77 -0
  391. package/frequent_questions/uk/SSR_Next_no_[locale].md +104 -0
  392. package/frequent_questions/uk/array_as_content_declaration.md +72 -0
  393. package/frequent_questions/uk/build_dictionaries.md +58 -0
  394. package/frequent_questions/uk/build_error_CI_CD.md +74 -0
  395. package/frequent_questions/uk/bun_set_up.md +53 -0
  396. package/frequent_questions/uk/customized_locale_list.md +64 -0
  397. package/frequent_questions/uk/domain_routing.md +113 -0
  398. package/frequent_questions/uk/error-vite-env-only.md +77 -0
  399. package/frequent_questions/uk/esbuild_error.md +29 -0
  400. package/frequent_questions/uk/get_locale_cookie.md +142 -0
  401. package/frequent_questions/uk/intlayer_command_undefined.md +155 -0
  402. package/frequent_questions/uk/locale_incorect_in_url.md +73 -0
  403. package/frequent_questions/uk/package_version_error.md +181 -0
  404. package/frequent_questions/uk/static_rendering.md +44 -0
  405. package/frequent_questions/uk/translated_path_url.md +55 -0
  406. package/frequent_questions/uk/unknown_command.md +97 -0
  407. package/frequent_questions/vi/SSR_Next_no_[locale].md +1 -1
  408. package/frequent_questions/vi/error-vite-env-only.md +77 -0
  409. package/frequent_questions/zh/SSR_Next_no_[locale].md +1 -1
  410. package/frequent_questions/zh/error-vite-env-only.md +77 -0
  411. package/legal/uk/privacy_notice.md +83 -0
  412. package/legal/uk/terms_of_service.md +55 -0
  413. package/package.json +6 -6
  414. package/src/generated/blog.entry.ts +29 -0
  415. package/src/generated/docs.entry.ts +119 -0
  416. package/src/generated/frequentQuestions.entry.ts +35 -0
  417. package/src/generated/legal.entry.ts +2 -0
@@ -0,0 +1,164 @@
1
+ ---
2
+ createdAt: 2025-01-02
3
+ updatedAt: 2025-06-29
4
+ title: react-i18next vs react-intl vs Intlayer
5
+ description: Інтеграція react-i18next з next-intl та Intlayer для інтернаціоналізації (i18n) React-додатка
6
+ keywords:
7
+ - next-intl
8
+ - react-i18next
9
+ - Intlayer
10
+ - Інтернаціоналізація
11
+ - Блог
12
+ - Next.js
13
+ - JavaScript
14
+ - React
15
+ slugs:
16
+ - blog
17
+ - react-i18next-vs-react-intl-vs-intlayer
18
+ ---
19
+
20
+ # react-Intl VS react-i18next VS intlayer | Інтернаціоналізація React (i18n)
21
+
22
+ Цей посібник порівнює три визнані варіанти i18n для **React**: **react-intl** (FormatJS), **react-i18next** (i18next) та **Intlayer**.
23
+ Ми зосереджені на **plain React** додатках (наприклад, Vite, CRA, SPA). Якщо ви використовуєте Next.js, див. наше окреме порівняння для Next.js.
24
+
25
+ Ми оцінюємо:
26
+
27
+ - Архітектура та організація контенту
28
+ - TypeScript і безпека
29
+ - Обробка відсутніх перекладів
30
+ - Можливості для багатого контенту та форматування
31
+ - Продуктивність та поведінка завантаження
32
+ - Досвід розробника (DX), інструменти та супровід
33
+ - SEO/маршрутизація (залежить від фреймворку)
34
+
35
+ <TOC/>
36
+
37
+ > **tl;dr**: Усі три можуть локалізувати React-додаток. Якщо ви хочете **контент, прив'язаний до компонентів**, **суворі TypeScript-типи**, **перевірки відсутніх ключів під час збірки**, **tree-shaken словники**, та вбудовані редакційні інструменти (Visual Editor/CMS + необов'язковий AI-переклад), **Intlayer** є найповнішим вибором для модульних React-кодових баз.
38
+
39
+ ---
40
+
41
+ ## Високорівневе позиціонування
42
+
43
+ - **react-intl** - орієнтований на ICU, форматування, узгоджене зі стандартами (дати/числа/множини), зі зрілим API. Каталоги зазвичай централізовані; безпека ключів і перевірки на етапі збірки в основному на вас.
44
+ - **react-i18next** - надзвичайно популярний і гнучкий; namespaces, detectors і багато плагінів (ICU, backends). Потужний, але конфігурація може розростатися зі збільшенням проєкту.
45
+ - **Intlayer** - модель контенту, орієнтована на компоненти для React, зі **строгим типізуванням TS**, **перевірками на етапі збірки**, **tree-shaking**, а також **Visual Editor/CMS** і **AI‑асистованими перекладами**. Працює з React Router, Vite, CRA тощо.
46
+
47
+ ---
48
+
49
+ ## Матриця функцій (фокус на React)
50
+
51
+ | Особливість | `react-intlayer` (Intlayer) | `react-i18next` (i18next) | `react-intl` (FormatJS) |
52
+ | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
53
+ | **Translations Near Components** | ✅ Так, контент розміщено поруч із кожним компонентом | ❌ Ні | ❌ Ні |
54
+ | **TypeScript Integration** | ✅ Розвинена інтеграція, автоматично згенеровані строгі типи | ⚠️ Базова; потрібна додаткова конфігурація для безпеки | ✅ Добра інтеграція, але менш сувора |
55
+ | **Виявлення відсутніх перекладів** | ✅ Підсвітка помилок TypeScript та помилки/попередження під час збірки | ⚠️ Переважно використовуються запасні рядки під час виконання | ⚠️ Запасні рядки |
56
+ | **Багатий вміст (JSX/Markdown/компоненти)** | ✅ Пряма підтримка | ⚠️ Обмежено / лише інтерполяція | ⚠️ Синтаксис ICU, не справжній JSX |
57
+ | **AI-переклад** | ✅ Так, підтримує кількох AI-провайдерів. Можна використовувати власні API-ключі. Бере до уваги контекст вашого застосунку та обсяг контенту | ❌ Ні | ❌ Ні |
58
+ | **Візуальний редактор** | ✅ Так, локальний Visual Editor + опційна CMS; може винести контент із codebase; вбудовуваний | ❌ Ні / доступно через зовнішні платформи локалізації | ❌ Ні / доступно через зовнішні платформи локалізації |
59
+ | **Локалізована маршрутизація** | ✅ Так, підтримує локалізовані шляхи "з коробки" (працює з Next.js & Vite) | ⚠️ Немає вбудованої підтримки, потребує плагінів (наприклад `next-i18next`) або налаштування власного роутера | ❌ Ні, лише форматування повідомлень; маршрутизацію потрібно робити вручну |
60
+ | **Динамічна генерація маршрутів** | ✅ Так | ⚠️ Плагіни/екосистема або ручне налаштування | ❌ Не надається |
61
+ | **Плюралізація** | ✅ Шаблони на основі переліку | ✅ Налаштовується (плагіни, наприклад i18next-icu) | ✅ (ICU) |
62
+ | **Форматування (дат, чисел, валют)** | ✅ Оптимізовані форматери (Intl під капотом) | ⚠️ Через плагіни або кастомне використання Intl | ✅ Форматери ICU |
63
+ | **Формат контенту** | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js |
64
+ | **Підтримка ICU** | ⚠️ WIP | ⚠️ Через плагін (i18next-icu) | ✅ Так |
65
+ | **Інструменти SEO (hreflang, sitemap)** | ✅ Вбудовані інструменти: помічники для sitemap, robots.txt, метаданих | ⚠️ Плагіни спільноти/ручні рішення | ❌ Не є частиною ядра |
66
+ | **Екосистема / Спільнота** | ⚠️ Менша, але швидко зростає та оперативна | ✅ Найбільша та зріла | ✅ Велика |
67
+ | **Server-side Rendering та Server Components** | ✅ Так, оптимізовано для SSR / React Server Components | ⚠️ Підтримується на рівні сторінки, але потрібно передавати t-functions по дереву компонентів для дочірніх Server Components | ❌ Не підтримується, потрібно передавати t-functions по дереву компонентів для дочірніх Server Components |
68
+ | **Tree-shaking (завантаження лише використовуваного контенту)** | ✅ Так, на рівні компонентів під час збірки через плагіни Babel/SWC | ⚠️ Зазвичай завантажує все (можна покращити через namespaces/code-splitting) | ⚠️ Зазвичай завантажує все |
69
+ | **Ліниве завантаження** | ✅ Так, для кожної локалі / кожного словника | ✅ Так (наприклад, бекенди/неймспейси за запитом) | ✅ Так (розбиття бандлів за локалями) |
70
+ | **Очищення невикористовуваного контенту** | ✅ Так, для кожного словника під час збірки | ❌ Ні, лише через ручну сегментацію неймспейсів | ❌ Ні, усі оголошені повідомлення включені в бандл |
71
+ | **Управління великими проєктами** | ✅ Заохочує модульність, підходить для design-system | ⚠️ Потребує доброї дисципліни в організації файлів | ⚠️ Центральні каталоги можуть стати великими |
72
+
73
+ ---
74
+
75
+ ## Поглиблене порівняння
76
+
77
+ ### 1) Архітектура та масштабованість
78
+
79
+ - **react-intl / react-i18next**: Більшість налаштувань використовують **централізовані папки локалей** для кожної мови, іноді розділені на **namespaces** (i18next). Добре працює на початку, але стає спільною зоною відповідальності у міру зростання додатків.
80
+ - **Intlayer**: Заохочує використання **словників на рівні компонента (або фічі)**, **розміщених разом** з UI, якому вони служать. Це зберігає чітку відповідальність, полегшує дублювання/міграцію компонентів і зменшує кількість змін ключів між командами. Невикористовуваний контент легше виявити та видалити.
81
+
82
+ **Чому це важливо:** Модульний контент відображає модульний UI. Великі React codebases залишаються чистішими, коли переклади живуть разом із компонентами, яким вони належать.
83
+
84
+ ---
85
+
86
+ ### 2) TypeScript & безпека
87
+
88
+ - **react-intl**: Надійна типізація, але **немає автоматичної типізації ключів**; вам доводиться самостійно запроваджувати патерни для забезпечення безпеки.
89
+ - **react-i18next**: Сильна типізація для hooks; **строга типізація ключів** зазвичай вимагає додаткової конфігурації або генераторів.
90
+ - **Intlayer**: **Автоматично генерує строгі типи** з вашого контенту. Автодоповнення IDE та **помилки на етапі компіляції** виявляють опечатки та відсутні ключі до запуску.
91
+
92
+ **Чому це важливо:** Перенесення помилок **вліво** (на етап збірки/CI) зменшує проблеми в продакшені та пришвидшує цикл зворотного зв’язку для розробників.
93
+
94
+ ---
95
+
96
+ ### 3) Обробка відсутніх перекладів
97
+
98
+ - **react-intl / react-i18next**: За замовчуванням використовують **запасні варіанти під час виконання** (відображення ключа або локаль за замовчуванням). Можна додати лінтери/плагіни, але це не гарантується на етапі збірки.
99
+ - **Intlayer**: **Виявлення під час збірки** з попередженнями або помилками, коли відсутні потрібні локалі/ключі.
100
+
101
+ **Чому це важливо:** Якщо CI падає через відсутні рядки, це запобігає витоку «таємної англійської» в інтерфейси іншими мовами.
102
+
103
+ ---
104
+
105
+ ### 4) Багатий контент і форматування
106
+
107
+ - **react-intl**: Відмінна підтримка **ICU** для plurals, selects, дат/чисел та композиції повідомлень. Можна використовувати JSX, але ментальна модель залишається орієнтованою на повідомлення.
108
+ - **react-i18next**: Гнучка інтерполяція та **`<Trans>`** для вбудовування елементів/компонентів; ICU доступне через плагін.
109
+ - **Intlayer**: Файли контенту можуть містити **rich nodes** (JSX/Markdown/components) та **metadata**. Форматування використовує Intl під капотом; шаблони множини зручні.
110
+
111
+ **Чому це важливо:** Складні тексти інтерфейсу (посилання, виділені фрагменти, інлайнові компоненти) простіше реалізовувати, коли бібліотека природно працює з React-нодами.
112
+
113
+ ---
114
+
115
+ ### 5) Продуктивність і поведінка завантаження
116
+
117
+ - **react-intl / react-i18next**: Зазвичай ви вручну керуєте **розбиттям каталогів (catalog splitting)** та **ледачим завантаженням (lazy loading)** (namespaces/dynamic imports). Ефективно, але вимагає дисципліни.
118
+ - **Intlayer**: **Tree-shakes** непотрібні словники і підтримує **per-dictionary/per-locale lazy loading** з коробки.
119
+
120
+ **Чому це важливо:** Менші бандли і менше невикористаних рядків покращують час запуску та продуктивність навігації.
121
+
122
+ ---
123
+
124
+ ### 6) DX, інструменти та супровід
125
+
126
+ - **react-intl / react-i18next**: Широка екосистема спільноти; для редакційних робочих процесів ви зазвичай використовуєте зовнішні платформи локалізації.
127
+ - **Intlayer**: Надає **безкоштовний візуальний редактор** та **опційний CMS** (зберігайте контент у Git або зовнішньо). Також пропонує **розширення для VSCode** для створення контенту та **переклад із допомогою ШІ** з використанням ваших власних ключів провайдера.
128
+
129
+ **Чому це важливо:** Вбудовані інструменти скорочують цикл між розробниками та авторами контенту — менше допоміжного коду, менше залежностей від постачальників.
130
+
131
+ ---
132
+
133
+ ## Коли обирати який варіант?
134
+
135
+ - **Оберіть react-intl** якщо ви хочете **форматування повідомлень, орієнтоване на ICU**, з простим, відповідним стандартам API, і ваша команда комфортно підтримує каталоги та перевірки вручну.
136
+ - **Оберіть react-i18next** якщо вам потрібна **широта екосистеми i18next** (детектори, бекенди, плагін ICU, інтеграції) і ви готові до більшої конфігурації заради гнучкості.
137
+ - **Обирайте Intlayer** якщо ви цінуєте **component-scoped content**, **strict TypeScript**, **build-time guarantees**, **tree-shaking** та **batteries-included** редакторські інструменти — особливо для **large, modular** React-додатків, design-systems тощо.
138
+
139
+ ---
140
+
141
+ ## Сумісність з `react-intl` та `react-i18next`
142
+
143
+ `intlayer` також може допомогти керувати вашими неймспейсами `react-intl` і `react-i18next`.
144
+
145
+ Використовуючи `intlayer`, ви можете оголошувати ваш контент у форматі улюбленої i18n-бібліотеки, і intlayer згенерує ваші неймспейси у вибраному місці (приклад: `/messages/{{locale}}/{{namespace}}.json`).
146
+
147
+ Дивіться опції [`dictionaryOutput` and `i18nextResourcesDir`](https://intlayer.org/doc/concept/configuration#content-configuration) для детальнішої інформації.
148
+
149
+ ---
150
+
151
+ ## Зірки GitHub
152
+
153
+ GitHub-зірки — це вагомий індикатор популярності проєкту, довіри спільноти та його довгострокової релевантності. Хоча вони не є прямим показником технічної якості, вони відображають, скільки розробників вважають проєкт корисним, стежать за його розвитком і ймовірно його приймуть. Для оцінки цінності проєкту зірки допомагають порівнювати популярність між альтернативами та дають уявлення про зростання екосистеми.
154
+
155
+ ## [![Діаграма історії зірок](https://api.star-history.com/svg?repos=formatjs/formatjs&repos=i18next/react-i18next&repos=aymericzip/intlayer&type=Date)](https://www.star-history.com/#formatjs/formatjs&i18next/react-i18next&aymericzip/intlayer)
156
+
157
+ ## Висновок
158
+
159
+ Усі три бібліотеки ефективно локалізують React. Відмінність — у тому, скільки **infrastructure** вам потрібно побудувати, щоб досягти **safe, scalable** setup:
160
+
161
+ - З **Intlayer** **модульний контент**, **сувора типізація TS**, **безпека на етапі збірки**, **tree-shaken bundles** та **редакційні інструменти** — це налаштування за замовчуванням, а не рутинні завдання.
162
+ - Якщо ваша команда цінує **підтримуваність і швидкість** у multi-locale, компонентно-орієнтованих React-додатках, Intlayer сьогодні пропонує **найповніший** робочий процес для розробників і контенту.
163
+
164
+ Дивіться документ [«Чому Intlayer?»](https://intlayer.org/doc/why) для детальнішої інформації.
@@ -0,0 +1,279 @@
1
+ ---
2
+ createdAt: 2024-08-11
3
+ updatedAt: 2025-08-23
4
+ title: vue-i18n проти Intlayer
5
+ description: Порівняння vue-i18n та Intlayer для інтернаціоналізації (i18n) у додатках Vue/Nuxt
6
+ keywords:
7
+ - vue-i18n
8
+ - Intlayer
9
+ - Інтернаціоналізація
10
+ - i18n
11
+ - Блог
12
+ - Vue
13
+ - Nuxt
14
+ - JavaScript
15
+ slugs:
16
+ - blog
17
+ - vue-i18n-vs-intlayer
18
+ ---
19
+
20
+ # vue-i18n VS Intlayer | Інтернаціоналізація Vue (i18n)
21
+
22
+ Цей посібник порівнює два популярні варіанти i18n для **Vue 3** (і **Nuxt**): **vue-i18n** та **Intlayer**.
23
+ Ми фокусуємося на сучасному інструментарії Vue (Vite, Composition API) і оцінюємо:
24
+
25
+ 1. **Архітектура та організація контенту**
26
+ 2. **TypeScript та безпека**
27
+ 3. **Обробка відсутніх перекладів**
28
+ 4. **Маршрутизація та стратегія URL**
29
+ 5. **Продуктивність та поведінка завантаження**
30
+ 6. **Досвід розробника (DX), інструменти та підтримка**
31
+ 7. **SEO та масштабованість для великих проєктів**
32
+
33
+ <TOC/>
34
+
35
+ > **коротко**: Обидва можуть локалізувати Vue-додатки. Якщо вам потрібен **контент у межах компонента**, **строга типізація TypeScript**, **перевірки відсутніх ключів на етапі збірки**, **словники, оптимізовані для tree-shaking**, та вбудовані **помічники для роутера/SEO**, а також **Візуальний редактор та AI-переклади**, **Intlayer** — більш повне та сучасне рішення.
36
+
37
+ ---
38
+
39
+ ## Загальне позиціонування
40
+
41
+ - **vue-i18n** - де-факто бібліотека i18n для Vue. Гнучке форматування повідомлень (ICU-стиль), SFC `<i18n>` блоки для локальних повідомлень і велика екосистема. Безпека та підтримка у великих проєктах переважно залежать від вас.
42
+ - **Intlayer** - Модель контенту, орієнтована на компоненти, для Vue/Vite/Nuxt з **строгими TS типами**, **перевірками під час збірки**, **tree-shaking**, **помічниками для маршрутизатора та SEO**, опціональним **Visual Editor/CMS** і **AI‑підтримкою перекладів**.
43
+
44
+ ---
45
+
46
+ ## Порівняння можливостей бок-о-бок (орієнтовано на Vue)
47
+
48
+ | Функція | **Intlayer** | **vue-i18n** |
49
+ | --------------------------------------------- | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
50
+ | **Переклади поруч із компонентами** | ✅ Так, вміст розташований поруч із компонентом (наприклад, `MyComp.content.ts`) | ✅ Так, через SFC-блоки `<i18n>` (необов'язково) |
51
+ | **Інтеграція TypeScript** | ✅ Просунута: автоматично згенеровані **строгі** типи та автозаповнення ключів | ✅ Добра типізація; для забезпечення **строгої безпеки ключів** потрібні додаткові налаштування/практики |
52
+ | **Виявлення відсутніх перекладів** | ✅ Попередження/помилки під час збірки (**build-time**) і відображення в TS | ⚠️ Підміни/попередження під час виконання (runtime) |
53
+ | **Багатий контент (компоненти/Markdown)** | ✅ Пряма підтримка багатих вузлів та файлів з вмістом у Markdown | ⚠️ Обмежено (компоненти через `<i18n-t>`, Markdown через зовнішні плагіни) |
54
+ | **AI-підтримуваний переклад** | ✅ Вбудовані робочі процеси з використанням власних ключів постачальника AI | ❌ Не вбудовано |
55
+ | **Візуальний редактор / CMS** | ✅ Безкоштовний візуальний редактор і опційний CMS | ❌ Не вбудовано (використовуйте зовнішні платформи) |
56
+ | **Локалізоване маршрутизування** | ✅ Хелпери для Vue Router/Nuxt для генерації локалізованих шляхів, URL-адрес та `hreflang` | ⚠️ Не є частиною ядра (використовуйте Nuxt i18n або власну конфігурацію Vue Router) |
57
+ | **Динамічна генерація маршрутів** | ✅ Так | ❌ Не надається (реалізовано в Nuxt i18n) |
58
+ | **Плюралізація та форматування** | ✅ Шаблони перерахування; форматери на основі Intl | ✅ Повідомлення у стилі ICU; форматери Intl |
59
+ | **Формати контенту** | ✅ `.ts`, `.js`, `.json`, `.md`, `.txt` (YAML WIP) | ✅ `.json`, `.js` (плюс SFC-блоки `<i18n>`) |
60
+ | **Підтримка ICU** | ⚠️ WIP | ✅ Так |
61
+ | **SEO-помічники (sitemap, robots, metadata)** | ✅ Вбудовані помічники (незалежні від фреймворку) | ❌ Не є ядром (Nuxt i18n/спільнота) |
62
+ | **SSR/SSG** | ✅ Працює з Vue SSR та Nuxt; не блокує статичне рендерення | ✅ Працює з Vue SSR/Nuxt |
63
+ | **Tree-shaking (ship only used content)** | ✅ На рівні компонентів під час збірки | ⚠️ Частково; потребує ручного code-splitting та асинхронних повідомлень |
64
+ | **Lazy loading** | ✅ На рівні локалі / словника | ✅ Підтримуються асинхронні повідомлення локалі |
65
+ | **Очищення невикористовуваного контенту** | ✅ Так (під час збірки) | ❌ Не вбудовано |
66
+ | **Підтримуваність у великих проєктах** | ✅ Заохочує модульну структуру, сумісну з design system | ✅ Можливо, але потребує суворої дисципліни щодо файлів/просторів імен |
67
+ | **Екосистема / спільнота** | ⚠️ Менша, але швидко зростає | ✅ Велика та зріла в екосистемі Vue |
68
+
69
+ ---
70
+
71
+ ## Поглиблене порівняння
72
+
73
+ ### 1) Архітектура та масштабованість
74
+
75
+ - **vue-i18n**: Загальні налаштування використовують **централізовані каталоги** для кожної локалі (за потреби розбиті на файли/неймспейси). SFC `<i18n>` блоки дозволяють локальні повідомлення, але з розвитком проекту команди часто повертаються до спільних каталогів.
76
+ - **Intlayer**: Заохочує **словники для кожного компонента**, що зберігаються поруч із компонентом, який вони обслуговують. Це зменшує конфлікти між командами, робить контент більш помітним і природно обмежує дрейф/невикористані ключі.
77
+
78
+ **Чому це важливо:** У великих Vue-додатках або дизайн-системах **модульний контент** масштабується краще за монолітні каталоги.
79
+
80
+ ---
81
+
82
+ ### 2) TypeScript та безпека
83
+
84
+ - **vue-i18n**: Хороша підтримка TS; **строге типізування ключів** зазвичай потребує кастомних схем/генериків та ретельних конвенцій.
85
+ - **Intlayer**: **Генерує строгі типи** з вашого контенту, забезпечуючи **автодоповнення в IDE** та **помилки під час компіляції** для опечаток/відсутніх ключів.
86
+
87
+ **Чому це важливо:** Сильна типізація виявляє проблеми ще до виконання (runtime).
88
+
89
+ ---
90
+
91
+ ### 3) Обробка відсутніх перекладів
92
+
93
+ - **vue-i18n**: **Runtime** попередження/резервні варіанти (наприклад, резервна локаль або ключ).
94
+ - **Intlayer**: **Build-time** виявлення з попередженнями/помилками по всіх локалях і ключах.
95
+
96
+ **Чому це важливо:** Контроль під час збірки забезпечує чистий і узгоджений UI у production.
97
+
98
+ ---
99
+
100
+ ### 4) Маршрутизація та стратегія URL (Vue Router/Nuxt)
101
+
102
+ - **Обидва** можуть працювати з локалізованими маршрутами.
103
+ - **Intlayer** надає допоміжні засоби для **генерації локалізованих шляхів**, **керування префіксами локалей** та виведення **`<link rel="alternate" hreflang>`** для SEO. У Nuxt він доповнює маршрутизацію фреймворку.
104
+
105
+ **Чому це важливо:** Менше додаткової glue-логіки та **чистіше SEO** між локалями.
106
+
107
+ ---
108
+
109
+ ### 5) Продуктивність та поведінка завантаження
110
+
111
+ - **vue-i18n**: Підтримує асинхронні повідомлення локалей; уникнення надмірного бандлінгу — на вашому боці (ретельно розділяйте каталоги).
112
+ - **Intlayer**: **Tree-shakes** під час збірки та **ліниво завантажує по кожному словнику/локалі**. Невикористовуваний контент не потрапляє в бандл.
113
+
114
+ **Чому це важливо:** Менші бандли та швидший старт для багатомовних Vue-додатків.
115
+
116
+ ---
117
+
118
+ ### 6) Досвід розробника та інструменти
119
+
120
+ - **vue-i18n**: Містить зрілу документацію та спільноту; зазвичай ви покладатиметесь на **зовнішні платформи локалізації** для редакційних робочих процесів.
121
+ - **Intlayer**: Постачає **безкоштовний Visual Editor**, опційний **CMS** (дружній до Git або зовнішній), розширення для **VSCode**, утиліти **CLI/CI** та **AI-допоміжні переклади**, що використовують ваші ключі провайдера.
122
+
123
+ **Чому це важливо:** Нижчі операційні витрати та коротший цикл між розробкою та контентом.
124
+
125
+ ---
126
+
127
+ ### 7) SEO, SSR & SSG
128
+
129
+ - **Обидва** працюють з Vue SSR та Nuxt.
130
+ - **Intlayer**: Додає **SEO-помічники** (sitemaps/metadata/`hreflang`), які незалежні від фреймворку та добре працюють із збірками Vue/Nuxt.
131
+
132
+ **Чому це важливо:** Міжнародне SEO без необхідності писати індивідуальний зв'язувальний код.
133
+
134
+ ---
135
+
136
+ ## Чому Intlayer? (Проблема та підхід)
137
+
138
+ Більшість i18n стеків (включно з **vue-i18n**) починаються з **централізованих каталогів**:
139
+
140
+ ```bash
141
+ .
142
+ ├── locales
143
+ │ ├── en.json
144
+ │ ├── es.json
145
+ │ └── fr.json
146
+ └── src
147
+ └── components
148
+ └── MyComponent.vue
149
+ ```
150
+
151
+ Або з папками для кожної локалі:
152
+
153
+ ```bash
154
+ .
155
+ ├── locales
156
+ │ ├── en
157
+ │ │ ├── footer.json
158
+ │ │ └── navbar.json
159
+ │ ├── fr
160
+ │ │ ├── footer.json
161
+ │ │ └── navbar.json
162
+ │ └── es
163
+ │ ├── footer.json
164
+ │ └── navbar.json
165
+ └── src
166
+ └── components
167
+ └── MyComponent.vue
168
+ ```
169
+
170
+ Це часто уповільнює розробку в міру зростання додатків:
171
+
172
+ 1. **Для нового компонента** ви створюєте/редагуєте віддалені каталоги, підключаєте неймспейси та перекладаєте (часто вручну копіюючи/вставляючи з AI-інструментів).
173
+ 2. **При зміні компонентів** ви шукаєте спільні ключі, перекладаєте, підтримуєте локалі синхронізованими, видаляєте неактивні ключі та узгоджуєте структури JSON.
174
+
175
+ **Intlayer** розміщує вміст **для кожного компонента** і тримає його **поряд із кодом**, як ми вже робимо з CSS, stories, tests та docs:
176
+
177
+ ```bash
178
+ .
179
+ └── components
180
+ └── MyComponent
181
+ ├── MyComponent.content.ts
182
+ └── MyComponent.vue
183
+ ```
184
+
185
+ **Оголошення контенту** (для кожного компонента):
186
+
187
+ ```ts fileName="./components/MyComponent/MyComponent.content.ts"
188
+ import { t, type Dictionary } from "intlayer";
189
+
190
+ const componentExampleContent = {
191
+ key: "component-example",
192
+ content: {
193
+ greeting: t({
194
+ uk: "Привіт, світ",
195
+ en: "Hello World",
196
+ es: "Hola Mundo",
197
+ fr: "Bonjour le monde",
198
+ }),
199
+ },
200
+ } satisfies Dictionary;
201
+
202
+ export default componentExampleContent;
203
+ ```
204
+
205
+ **Використання у Vue** (Composition API):
206
+
207
+ ```vue fileName="./components/MyComponent/MyComponent.vue"
208
+ <script setup lang="ts">
209
+ import { useIntlayer } from "vue-intlayer"; // Інтеграція з Vue
210
+ const { greeting } = useIntlayer("component-example");
211
+ </script>
212
+
213
+ <template>
214
+ <span>{{ greeting }}</span>
215
+ </template>
216
+ ```
217
+
218
+ Цей підхід:
219
+
220
+ - **Швидша розробка** (задекларувати один раз; IDE/AI автодоповнення).
221
+ - **Очищує кодову базу** (1 компонент = 1 словник).
222
+ - **Полегшує дублювання/міграцію** (копіюйте компонент і його контент разом).
223
+ - **Запобігає «мертвим» ключам** (невикористовувані компоненти не імпортують контент).
224
+ - **Оптимізує завантаження** (лениво завантажувані компоненти підвантажують свій контент разом).
225
+
226
+ ---
227
+
228
+ ## Додаткові можливості Intlayer (для Vue)
229
+
230
+ - **Підтримка різних фреймворків**: Працює з Vue, Nuxt, Vite, React, Express та іншими.
231
+ - **Управління контентом на базі JavaScript**: Оголошуйте в коді з повною гнучкістю.
232
+ - **Файл декларацій для кожної локалі**: Ініціалізуйте всі локалі та дозвольте інструментам згенерувати решту.
233
+ - **Типобезпечне середовище**: Потужна конфігурація TS з автозаповненням.
234
+ - **Спрощене отримання контенту**: Єдиний хук/composable для отримання всього вмісту словника.
235
+ - **Організована кодова база**: 1 компонент = 1 словник у тій же папці.
236
+ - **Покращена маршрутизація**: Хелпери для **Vue Router/Nuxt** — локалізовані шляхи та метадані.
237
+ - **Підтримка Markdown**: Імпорт віддалених/локальних Markdown-файлів для кожної локалі; робить frontmatter доступним у коді.
238
+ - **Безкоштовний Visual Editor & опційний CMS**: Створення контенту без платної платформи локалізації; синхронізація, дружня до Git.
239
+ - **Tree-shakable контент**: Постачається лише те, що використовується; підтримує lazy loading.
240
+ - **Дружнє до статичної рендерингу**: Не блокує SSG.
241
+ - **AI-powered translations**: Перекладіть на 231 мову, використовуючи вашого власного AI-провайдера/ключ API.
242
+ - **MCP server & VSCode extension**: Автоматизуйте i18n робочі процеси та авторинг всередині вашого IDE.
243
+ - **Interoperability**: Забезпечує інтеграцію з **vue-i18n**, **react-i18next** та **react-intl** за потреби.
244
+
245
+ ---
246
+
247
+ ## Коли вибирати який варіант?
248
+
249
+ - **Оберіть vue-i18n**, якщо ви хочете **стандартний підхід у Vue**, вам зручно самостійно керувати каталогами/просторами імен, і ваш додаток **малого або середнього розміру** (або ви вже покладаєтесь на Nuxt i18n).
250
+ - **Оберіть Intlayer**, якщо ви цінуєте **контент, прив'язаний до компонентів**, **строгий TypeScript**, **гарантії на етапі збірки**, **tree-shaking** та **batteries-included** інструменти для роутингу/SEO/редагування — особливо для **великих модульних кодових баз Vue/Nuxt**, дизайн-систем тощо.
251
+
252
+ ---
253
+
254
+ ## Сумісність з vue-i18n
255
+
256
+ `intlayer` також може допомогти керувати вашими неймспейсами `vue-i18n`.
257
+
258
+ Використовуючи `intlayer`, ви можете задавати контент у форматі вашої улюбленої i18n-бібліотеки, і intlayer згенерує ваші неймспейси в обраному місці (наприклад: `/messages/{{locale}}/{{namespace}}.json`).
259
+
260
+ Див. опції [`dictionaryOutput` та `i18nextResourcesDir`](https://intlayer.org/doc/concept/configuration#content-configuration) для детальнішої інформації.
261
+
262
+ ---
263
+
264
+ ## Зірки GitHub
265
+
266
+ GitHub-зірки — це вагомий індикатор популярності проєкту, довіри спільноти та його довгострокової релевантності. Хоча вони не є прямим показником технічної якості, вони відображають, скільки розробників вважають проєкт корисним, слідкують за його розвитком і, ймовірно, впровадять його. При оцінці вартості проєкту зірки допомагають порівняти динаміку прийняття між альтернативами та дають уявлення про зростання екосистеми.
267
+
268
+ [![Графік історії зірок](https://api.star-history.com/svg?repos=intlify/vue-i18n&repos=aymericzip/intlayer&type=Date)](https://www.star-history.com/#intlify/vue-i18n&aymericzip/intlayer)
269
+
270
+ ---
271
+
272
+ ## Висновок
273
+
274
+ І **vue-i18n**, і **Intlayer** добре локалізують Vue-застосунки. Різниця в тому, **скільки вам доведеться реалізувати самостійно**, щоб досягти надійної, масштабованої конфігурації:
275
+
276
+ - За допомогою **Intlayer** **модульний контент**, **strict TS**, **build-time safety**, **tree-shaken bundles** та **router/SEO/editor tooling** доступні **з коробки**.
277
+ - Якщо ваша команда надає пріоритет **підтримуваності та швидкості** у багатомовному, компонентно-орієнтованому Vue/Nuxt додатку, Intlayer сьогодні пропонує **найповніший** досвід.
278
+
279
+ Див. документ ['Why Intlayer?' doc](https://intlayer.org/doc/why) для детальнішої інформації.