@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,155 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: "Найкращі інструменти інтернаціоналізації (i18n) для React"
5
+ description: "Дізнайтеся про провідні рішення i18n для React, щоб вирішувати проблеми перекладу, покращувати SEO та забезпечувати безшовний глобальний веб‑досвід."
6
+ keywords:
7
+ - React
8
+ - i18n
9
+ - багатомовність
10
+ - SEO
11
+ - інтернаціоналізація
12
+ - Блог
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - react
19
+ ---
20
+
21
+ # Огляд рішень i18n для перекладу вашого React‑сайту
22
+
23
+ У сучасному цифровому середовищі розширення охоплення вашого вебсайту для глобальної аудиторії є необхідністю. Для розробників, які створюють застосунки на React, впровадження інтернаціоналізації (i18n) — це ключ до ефективного управління перекладами, одночасно зберігаючи структуру застосунку, показники SEO та зручність для користувачів. У цій статті ми розглянемо різні підходи до i18n — від спеціалізованих бібліотек до власноруч написаних рішень — щоб допомогти вам визначити, який із них найкраще підходить для потреб вашого проєкту.
24
+
25
+ ---
26
+
27
+ ![ілюстрація i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Що таке інтернаціоналізація (i18n)?
30
+
31
+ Інтернаціоналізація, скорочено i18n, — це процес проєктування та підготовки вашого вебсайту для підтримки кількох мов та культурних контекстів. У React це означає налаштування вашого додатка так, щоб рядки, формати дат, формати чисел і навіть макет могли легко адаптуватися для користувачів з різних регіонів. Підготовка вашого React-додатка до i18n створює основу для чистої інтеграції перекладів та інших функцій локалізації.
32
+
33
+ Дізнайтеся більше про i18n, прочитавши нашу статтю: [Що таке інтернаціоналізація (i18n)? Визначення та виклики](https://github.com/aymericzip/intlayer/blob/main/docs/blog/uk/what_is_internationalization.md).
34
+
35
+ ---
36
+
37
+ ## Виклики перекладу для React-додатків
38
+
39
+ Переклад вебсайту на React має кілька викликів:
40
+
41
+ - **Архітектура на основі компонентів:** модульна структура React означає, що тексти можуть бути розподілені по багатьох компонентах, тому критично важливо централізувати та організувати рядки перекладу.
42
+ - **Динамічний контент:** управління перекладами для контенту, який оновлюється в реальному часі або отримується через API, може додавати додатковий рівень складності.
43
+ - **Питання SEO:** для серверно-рендерених React-додатків (наприклад, з Next.js) забезпечення позитивного впливу перекладів на SEO включає управління локалізованими URL-адресами, метаданими та картами сайту.
44
+ - **Управління станом і контекстом:** забезпечення того, щоб правильна мова зберігалася на всіх маршрутах і в усіх компонентах, вимагає продуманого управління станом.
45
+ - **Додаткове навантаження на розробку:** Підтримка файлів перекладів, забезпечення точності контексту та збереження масштабованості вашого застосунку — це постійні завдання.
46
+
47
+ ---
48
+
49
+ ## Провідні i18n-рішення для React
50
+
51
+ Нижче наведено кілька популярних підходів до керування багатомовним контентом у React-додатках, кожен із яких має на меті спростити процес перекладу по-різному.
52
+
53
+ ### 1. Intlayer
54
+
55
+ > Website: [https://intlayer.org/](https://intlayer.org/)
56
+
57
+ **Огляд**
58
+ **Intlayer** — інноваційна open-source бібліотека інтернаціоналізації (i18n), створена для спрощення підтримки багатомовності в сучасних веб-додатках на React (та інших). Вона пропонує декларативний підхід, що дозволяє визначати словники перекладів безпосередньо у компонентах.
59
+
60
+ **Ключові можливості**
61
+
62
+ - **Оголошення перекладів**: Дозволяє оголошувати всі переклади в одному файлі, розміщеному на рівні компоненту, що спрощує підтримку та масштабування.
63
+ - **TypeScript & Autocompletion**: Пропонує автоматично згенеровані визначення типів для ключів перекладів, забезпечуючи надійне автодоповнення та виявлення помилок.
64
+ - **Server Components & SSR**: Побудовано з урахуванням як серверного рендерингу (SSR), так і серверних компонентів, що гарантує ефективну відрендерену локалізованого контенту як на клієнті, так і на сервері.
65
+ - **Localized Metadata & URLs for SEO**: Легко працює з динамічними маршрутами, файлами sitemap та записами в robots.txt на основі локалі, щоб покращити індексацію та SEO.
66
+ - **Безшовна інтеграція**: Сумісний з основними бандлерами та фреймворками, такими як Create React App, Next.js і Vite, що робить налаштування простим.
67
+ - **Асинхронне завантаження**: Динамічно підвантажує словники перекладів, зменшуючи початковий розмір бандла та покращуючи продуктивність.
68
+
69
+ **Зауваги**
70
+
71
+ - **Спільнота та екосистема**: Хоча вона зростає, екосистема є відносно новою, тому плагіни та інструменти, створені спільнотою, можуть бути більш обмеженими порівняно з усталеними рішеннями.
72
+
73
+ ---
74
+
75
+ ### 2. React-i18next
76
+
77
+ Вебсайт: [https://react.i18next.com/](https://react.i18next.com/)
78
+
79
+ **Огляд**
80
+ **React-i18next** — одна з найбільш широко використовуваних бібліотек для інтернаціоналізації в React, побудована на основі популярного фреймворку **i18next**. Вона забезпечує гнучку архітектуру на основі плагінів для обробки складних сценаріїв перекладу.
81
+
82
+ **Ключові можливості**
83
+
84
+ - **Безшовна інтеграція з React**: Працює з React hooks, higher-order components (HOCs) та render props для максимальної гнучкості.
85
+ - **Асинхронне завантаження**: Динамічно завантажує ресурси перекладу, зменшуючи початковий розмір бандлу та покращуючи продуктивність.
86
+ - **Розширені можливості перекладу**: Підтримує вкладені переклади, plurals, інтерполяцію та інше.
87
+ - **TypeScript та автодоповнення**: За допомогою додаткової конфігурації можна отримати типізовані ключі перекладу, хоча налаштування може бути більш ручним.
88
+ - **Локалізовані метадані й URL-адреси**: Можна інтегрувати з Next.js для локалізованих маршрутів, sitemaps і robots.txt, що покращує SEO.
89
+ - **Компоненти сервера та SSR**: У поєднанні з Next.js або іншими SSR-налаштуваннями ви можете обслуговувати повністю локалізований контент із сервера.
90
+
91
+ **Зауваги**
92
+
93
+ - **Підтримка**: Конфігурація може стати складною, особливо для великих або багатокомандних проєктів; важливо ретельно структурувати файли перекладів.
94
+ - **Екосистема плагінів**: Доступна широка екосистема плагінів і middleware, що також означає, що вам доведеться переглядати різні пакети, щоб знайти потрібні інструменти.
95
+ - **Компоненти сервера**: Потребують додаткового налаштування, щоб серверні компоненти підхоплювали правильні локалі, особливо якщо використовується фреймворк, відмінний від Next.js.
96
+
97
+ ---
98
+
99
+ ### 3. React Intl (від FormatJS)
100
+
101
+ Вебсайт: [https://formatjs.io/docs/react-intl/](https://formatjs.io/docs/react-intl/)
102
+
103
+ **Огляд**
104
+ **React Intl**, частина набору **FormatJS**, орієнтована на стандартизацію форматування повідомлень, локалізацію дат/чисел/часу та повідомлень про відносний час. Він використовує робочий процес вилучення повідомлень для ефективної обробки ваших перекладів.
105
+
106
+ **Ключові можливості**
107
+
108
+ - **Компоненти, орієнтовані на форматування**: `<FormattedMessage>`, `<FormattedDate>`, `<FormattedTime>` та інші для спрощення форматування в React.
109
+ - **Серверні компоненти та SSR**: Підтримує налаштування SSR, щоб локалізований контент можна було доставляти для покращення продуктивності та SEO.
110
+ - **Локалізовані метадані та URL**: Може інтегруватися з фреймворками, такими як Next.js, для генерації локалізованих sitemaps, обробки динамічних маршрутів та налаштування robots.txt.
111
+ - **TypeScript та автодоповнення**: Може бути поєднаний з TypeScript, але може знадобитися додаткові інструменти для автодоповнення ідентифікаторів повідомлень.
112
+ - **Поліфіли для непідтримуваних браузерів**: Забезпечує послідовну роботу в застарілих середовищах.
113
+
114
+ **Зауваження**
115
+
116
+ - **Вербозність та шаблонний код**: Залежність від спеціалізованих компонентів може призводити до більш вербозного коду, особливо в великих застосунках.
117
+ - **Розподіл перекладів**: Базова бібліотека не надає вбудованої підтримки для розбиття перекладів на кілька файлів — це вимагає додаткового налаштування або плагінів.
118
+ - **Підтримуваність**: Прямолінійний підхід до форматування може бути корисним, але процес вилучення повідомлень і організаційні накладні витрати можуть швидко зростати.
119
+
120
+ ### 4. LinguiJS
121
+
122
+ Вебсайт: [https://lingui.js.org/](https://lingui.js.org/)
123
+
124
+ **Огляд:**
125
+
126
+ **Огляд**
127
+ **LinguiJS** пропонує сучасний, дружній для розробників підхід до управління i18n у JavaScript та React. Він зосереджений на зменшенні конфігурації, одночасно надаючи потужний CLI та робочий процес екстракції повідомлень.
128
+
129
+ **Ключові можливості**
130
+
131
+ - **Автоматична екстракція повідомлень**: Спеціальний CLI, який знаходить і витягує повідомлення з вашого коду, мінімізуючи ручні кроки.
132
+ - **Мінімальні накладні витрати під час виконання**: Скомпільовані переклади зменшують розмір бандла та витрати на продуктивність у час виконання.
133
+ - **TypeScript та автодоповнення**: Підтримує типізовані ID, якщо ви відповідно налаштуєте каталоги перекладів, покращуючи досвід розробника.
134
+ - **Server Components та SSR**: Сумісний зі стратегіями рендерингу на стороні сервера; може бути інтегрований з Next.js або іншими SSR-фреймворками.
135
+ - **Локалізовані метадані та URL**: Хоча не так явно виражено, як у деяких інших бібліотеках, його можна інтегрувати з вашою роутінг-налаштуванням для обробки sitemap, robots.txt та локалізованих шляхів.
136
+
137
+ **Міркування**
138
+
139
+ - **Підтримуваність (Maintainability)**: Автоматичне витягування допомагає тримати код чистим, але структурування множинних файлів перекладів для великих додатків вимагає дисциплінованої організації.
140
+ - **Спільнота та плагіни**: Екосистема зростає, але все ще менша порівняно з i18next або FormatJS.
141
+ - **Серверні компоненти**: Може знадобитися більш явна конфігурація, щоб гарантувати, що серверні компоненти отримують правильні дані локалі.
142
+
143
+ ---
144
+
145
+ ### Підсумкові думки
146
+
147
+ При виборі бібліотеки i18n для React:
148
+
149
+ - **Оцініть ваші вимоги**: Розгляньте розмір проєкту, developer experience та спосіб керування перекладами (вручну vs. автоматичне витягування).
150
+ - **Перевірте сумісність із сервером**: Якщо ви покладаєтеся на SSR або server components (особливо в Next.js), переконайтеся, що обрана бібліотека підтримує це безшовно.
151
+ - **TypeScript & Autocompletion**: Якщо TypeScript є пріоритетом, оберіть бібліотеку, яка легко інтегрується з типізованими ключами та надає надійні інструменти для автодоповнення.
152
+ - **Підтримуваність та масштабованість**: У більших проєктах часто потрібна чітка, підтримувана структура для перекладів, тому врахуйте ваш long-term roadmap.
153
+ - **SEO & Metadata**: Якщо SEO є критично важливим, переконайтеся, що обране рішення підтримує локалізовані метадані, маршрути та sitemaps/robots для кожної мови.
154
+
155
+ Усі ці бібліотеки можуть забезпечити багатомовний React-застосунок, кожна з них має трохи різні пріоритети та сильні сторони. Виберіть ту, яка найкраще відповідає продуктивності вашого проєкту, DX (developer experience) та бізнес-цілям.
@@ -0,0 +1,145 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Найкращі інструменти i18n для Svelte
5
+ description: Дізнайтеся про провідні рішення i18n для Svelte, щоб вирішувати проблеми перекладу, підвищити SEO і забезпечити безшовний глобальний веб-досвід.
6
+ keywords:
7
+ - Svelte
8
+ - i18n
9
+ - багатомовний
10
+ - SEO
11
+ - Інтернаціоналізація
12
+ - Блог
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - svelte
19
+ ---
20
+
21
+ # Дослідження рішень i18n для перекладу вашого сайту на Svelte
22
+
23
+ Оскільки веб продовжує поєднувати людей по всьому світу, надання контенту кількома мовами стає дедалі важливішим. Для розробників, які працюють зі **Svelte**, впровадження i18n є необхідним для ефективного керування перекладами, підтримання чистоти коду та дотримання хороших практик SEO. У цій статті ми розглядаємо різні i18n-рішення та робочі процеси для Svelte, щоб допомогти вам обрати те, що найкраще відповідає потребам вашого проєкту.
24
+
25
+ ---
26
+
27
+ ![ілюстрація i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Що таке інтернаціоналізація (i18n)?
30
+
31
+ Інтернаціоналізація, зазвичай скорочено i18n, — це процес проєктування та побудови вашого додатка таким чином, щоб він міг легко адаптуватися до різних мов, регіонів і культурних особливостей. У Svelte це зазвичай означає налаштування рядків перекладу, локалізацію дат, часу й чисел, а також забезпечення того, щоб інтерфейс користувача міг динамічно перемикатися між різними локалями без суттєвих змін у коді.
32
+
33
+ Щоб дізнатися більше про основи i18n, прочитайте нашу статтю: [Що таке інтернаціоналізація (i18n)? Визначення та виклики](https://github.com/aymericzip/intlayer/blob/main/docs/blog/uk/what_is_internationalization.md).
34
+
35
+ ---
36
+
37
+ ## Виклики перекладу для додатків Svelte
38
+
39
+ Переклад застосунку Svelte може створювати кілька труднощів:
40
+
41
+ - **Компоненти в одному файлі**: Підхід Svelte з компонентами в одному файлі (коли HTML, CSS і JavaScript існують разом) полегшує розпорошення тексту, що вимагає стратегії централізації перекладів.
42
+ - **Динамічний вміст**: Дані, отримані з API або введені користувачем, ускладнюють забезпечення перекладу вмісту на льоту.
43
+ - **Питання SEO**: Якщо ви використовуєте **SvelteKit** для серверного рендерингу (SSR), налаштування локалізованих URL-адрес, мета-тегів і карт сайту для ефективного SEO потребує додаткової уваги.
44
+ - **Стан і маршрутизація**: Підтримка правильної мови на різних маршрутах і динамічних сторінках часто вимагає організації глобального стану, route guards або custom hooks у SvelteKit.
45
+ - **Підтримуваність**: У міру зростання вашої codebase та файлів перекладу, підтримувати все добре організованим і синхронізованим стає постійним завданням.
46
+
47
+ ---
48
+
49
+ ## Провідні i18n-рішення для Svelte
50
+
51
+ Svelte не надає рідного, вбудованого рішення для i18n (на відміну від Angular), проте спільнота створила низку надійних бібліотек і патернів. Нижче наведено кілька популярних підходів.
52
+
53
+ ### 1. Intlayer
54
+
55
+ > Вебсайт: [https://intlayer.org/](https://intlayer.org/)
56
+
57
+ **Огляд**
58
+ **Intlayer** — це open-source рішення для i18n, яке прагне спростити підтримку багатомовності в різних фреймворках, включно з **Svelte**. Воно робить акцент на декларативному підході, сильній типізації та підтримці SSR в інших екосистемах, хоча SSR не є типовим для стандартного Svelte.
59
+
60
+ **Ключові особливості**
61
+
62
+ - **Декларативні переклади**: Визначайте словники перекладів або на рівні віджета, або в централізованому файлі для більш чистої архітектури.
63
+ - **TypeScript та автодоповнення (веб)**: Хоча ця функція насамперед корисна для веб-фреймворків, типізований підхід до перекладів все ще може допомогти структурувати код у Svelte.
64
+ - **Асинхронне завантаження**: Завантажуйте ресурси перекладів динамічно, що може зменшити початковий розмір бандла для багатомовних додатків.
65
+ - **Інтеграція з Svelte**: Можна налаштувати базову інтеграцію, щоб використовувати підхід Intlayer для структурованих перекладів.
66
+
67
+ ---
68
+
69
+ ### 2. svelte-i18n
70
+
71
+ Репозиторій: [https://github.com/kaisermann/svelte-i18n](https://github.com/kaisermann/svelte-i18n)
72
+
73
+ **Огляд**
74
+ **svelte-i18n** — одна з найпоширеніших бібліотек для додавання інтернаціоналізації до Svelte-додатків. Вона дозволяє динамічно підвантажувати й перемикати локалі під час виконання (runtime) та включає допоміжні засоби для обробки форм множини, інтерполяції та інших можливостей.
75
+
76
+ **Ключові можливості**
77
+
78
+ - **Переклади під час виконання (Runtime Translations)**: підвантажуйте файли перекладів за потреби, що дозволяє перемикати мови без повторної збірки додатка.
79
+ - **Форми множини та інтерполяція**: надає простий синтаксис для обробки форм множини та вставки змінних у переклади.
80
+ - **Ледаче завантаження (Lazy Loading)**: підвантажуйте лише потрібні файли перекладів, оптимізуючи продуктивність для великих додатків або багатомовних інтерфейсів.
81
+ - **Підтримка SvelteKit**: добре задокументовані приклади показують, як інтегрувати з SSR у SvelteKit для покращення SEO.
82
+
83
+ **Зауваження**
84
+
85
+ - **Project Organization**: Вам потрібно логічно структурувати файли перекладів у міру зростання проєкту.
86
+ - **SSR Setup**: Налаштування SSR для SEO може вимагати додаткових кроків, щоб забезпечити коректне визначення локалі на стороні сервера.
87
+ - **Performance**: Хоча гнучкість у runtime є перевагою, велика кількість одночасно завантажених перекладів може вплинути на початковий час завантаження — розгляньте використання lazy loading або стратегій кешування.
88
+
89
+ ---
90
+
91
+ ### 3. svelte-intl-precompile
92
+
93
+ Repository: [https://github.com/cibernox/svelte-intl-precompile](https://github.com/cibernox/svelte-intl-precompile)
94
+
95
+ **Огляд**
96
+ **svelte-intl-precompile** використовує підхід передкомпіляції, щоб зменшити накладні витрати під час виконання та покращити продуктивність. Ця бібліотека інтегрує концепцію форматування повідомлень (подібну до FormatJS) і генерує попередньо скомпільовані повідомлення під час збірки.
97
+
98
+ **Ключові можливості**
99
+
100
+ - **Попередньо скомпільовані повідомлення**: Компіляція рядків перекладу під час кроку збірки покращує продуктивність під час виконання і розмір bundle може бути меншим.
101
+ - **Інтеграція зі SvelteKit**: Сумісна з SSR, що дозволяє віддавати повністю локалізовані сторінки для кращого SEO та досвіду користувача.
102
+ - **Витяг повідомлень**: Автоматично витягує рядки з вашого коду, зменшуючи накладні витрати на ручні оновлення.
103
+ - **Розширене форматування**: Підтримує pluralization, гендерно-залежні переклади та інтерполяцію змінних.
104
+
105
+ **Зауваги**
106
+
107
+ - **Складність збірки**: Налаштування попередньої компіляції може додати додаткову складність у ваш конвеєр збірки.
108
+ - **Динамічний контент**: Якщо вам потрібні переклади «на льоту» для контенту, створеного користувачами, цей підхід може вимагати додаткових кроків для оновлення під час виконання.
109
+ - **Крива навчання**: Комбінація витягання повідомлень і попередньої компіляції може бути трохи складнішою для початківців.
110
+
111
+ ---
112
+
113
+ ### 4. i18next з Svelte / SvelteKit
114
+
115
+ Вебсайт: [https://www.i18next.com/](https://www.i18next.com/)
116
+
117
+ **Огляд**
118
+ Хоча **i18next** частіше асоціюється з React або Vue, його також можливо інтегрувати з Svelte або з **SvelteKit**. Використання широкої екосистеми i18next може бути корисним, якщо вам потрібен узгоджений i18n у різних JavaScript-фреймворках в межах вашої організації.
119
+
120
+ **Ключові можливості**
121
+
122
+ - **Добре розвинена екосистема**: скористайтеся широким набором плагінів, модулів визначення мови та підтримкою спільноти.
123
+ - **Runtime або Build-Time**: вибір між динамічним завантаженням або включенням перекладів у бандл для трохи швидшого старту.
124
+ - **Підтримка SSR**: SvelteKit SSR може віддавати локалізований контент, використовуючи i18next на серверній стороні, що добре для SEO.
125
+ - **Багаті можливості**: підтримує інтерполяцію, plurals, вкладені переклади та більш складні i18n-сценарії.
126
+
127
+ **Зауваження**
128
+
129
+ - **Ручне налаштування**: i18next не має спеціальної інтеграції зі Svelte з коробки, тому вам доведеться налаштувати його самостійно.
130
+ - **Накладні витрати**: i18next є потужним, але для менших Svelte-проєктів деякі його можливості можуть бути надлишковими.
131
+ - **Маршрутизація та стан**: Обробка мовної маршрутизації ймовірно вимагатиме користувацьких hooks SvelteKit або middleware.
132
+
133
+ ---
134
+
135
+ ### Підсумки
136
+
137
+ При виборі стратегії i18n для вашого Svelte-застосунку:
138
+
139
+ 1. **Оцініть масштаб проєкту**: Для менших проєктів або швидких прототипів простіші бібліотеки, такі як **svelte-i18n**, або мінімальний підхід до i18n можуть бути достатніми. Великі, складніші додатки можуть отримати користь від типізованого, попередньо скомпільованого або більш надійного рішення на основі екосистеми.
140
+ 2. **Питання SSO та SSR**: Якщо SEO є критично важливим або вам потрібен server-side rendering з **SvelteKit**, обирайте бібліотеку, яка ефективно підтримує SSR і може обробляти локалізовані маршрути, метадані та sitemaps.
141
+ 3. **Час виконання (Runtime) vs. час збірки (Build-Time)**: Визначте, чи потрібне вам динамічне перемикання мов під час виконання (runtime), або ви надаєте перевагу заздалегідь скомпільованим перекладам для кращої продуктивності. Кожний підхід має свої компроміси.
142
+ 4. **Інтеграція TypeScript**: Якщо ви широко покладаєтесь на TypeScript, рішення на зразок **Intlayer** або бібліотеки з типізованими ключами можуть істотно зменшити помилки під час виконання та покращити досвід розробника.
143
+ 5. **Підтримуваність та масштабованість**: Заплануйте, як ви будете організовувати, оновлювати та версіонувати файли перекладів. Автоматичне витягування перекладів, правила найменувань та послідовна структура папок заощадять час у довгостроковій перспективі.
144
+
145
+ Зрештою, кожна бібліотека має свої унікальні переваги. Ваш вибір залежатиме від продуктивності, зручності для розробника, потреб у SEO та довгострокової підтримуваності. Обравши рішення, що відповідає цілям вашого проєкту, ви зможете створити справді глобальний додаток на Svelte, який радуватиме користувачів у всьому світі.
@@ -0,0 +1,144 @@
1
+ ---
2
+ createdAt: 2025-01-16
3
+ updatedAt: 2025-06-29
4
+ title: Найкращі інструменти інтернаціоналізації (i18n) для Vue
5
+ description: Відкрийте для себе провідні рішення i18n для Vue, щоб вирішувати задачі перекладу, підвищувати SEO та забезпечувати безшовний глобальний веб-досвід.
6
+ keywords:
7
+ - Vue
8
+ - i18n
9
+ - багатомовність
10
+ - SEO
11
+ - Інтернаціоналізація
12
+ - Blog
13
+ - JavaScript
14
+ slugs:
15
+ - blog
16
+ - i18n-technologies
17
+ - frameworks
18
+ - vue
19
+ ---
20
+
21
+ # Огляд рішень i18n для локалізації вашого вебсайту на Vue.js
22
+
23
+ У все більш глобалізованому цифровому середовищі розширення охоплення вашого сайту на Vue.js для користувачів кількома мовами вже не є «приємністю» — це конкурентна необхідність. Інтернаціоналізація (i18n) дозволяє розробникам керувати перекладами та адаптувати свої застосунки під різні локалі, водночас зберігаючи SEO-цінність, досвід користувача (UX) та зручну для підтримки структуру коду. У цій статті ми розглянемо різні підходи — від спеціалізованих бібліотек до кастомних рішень — які допоможуть вам плавно інтегрувати i18n у ваш Vue.js проект.
24
+
25
+ ---
26
+
27
+ ![ілюстрація i18n](https://github.com/aymericzip/intlayer/blob/main/docs/assets/i18n.webp)
28
+
29
+ ## Що таке інтернаціоналізація (i18n)?
30
+
31
+ Internationalization (i18n) — це практика підготовки програмного забезпечення (або вебсайту) для підтримки кількох мов і культурних конвенцій. В екосистемі Vue.js це включає визначення того, як текст, дати, числа, валюта та інші локалізовані елементи можуть бути адаптовані до різних локалей. Налаштувавши i18n з самого початку, ви забезпечуєте організовану, масштабовану структуру для додавання нових мов та задоволення майбутніх потреб у локалізації.
32
+
33
+ Щоб дізнатися більше про основи i18n, перегляньте наше посилання: [What is Internationalization (i18n)? Definition and Challenges](https://github.com/aymericzip/intlayer/blob/main/docs/blog/uk/what_is_internationalization.md).
34
+
35
+ ---
36
+
37
+ ## Виклики перекладу для Vue-додатків
38
+
39
+ Переклад Vue.js-додатку має свої особливі виклики:
40
+
41
+ - **Компонентно-орієнтована архітектура:** Подібно до React, single-file components (SFCs) у Vue можуть містити текст і налаштування, специфічні для локалі. Потрібна стратегія для централізації рядків перекладу.
42
+ - **Динамічний вміст:** Дані, що отримуються з API або змінюються в реальному часі, вимагають гнучкого підходу для завантаження та застосування перекладів «на льоту».
43
+ - **Питання SEO:** При серверному рендерингу через Nuxt або інших налаштуваннях SSR критично важливо керувати локалізованими URL, meta-тегами та картами сайту (sitemaps), щоб зберегти ефективне SEO.
44
+ - **Стан і реактивний контекст:** Забезпечення збереження поточної локалі між маршрутами та реактивне оновлення текстів і форматів потребує продуманого підходу, особливо при використанні Vuex або Pinia для управління станом.
45
+ - **Накладні витрати на розробку:** Утримання файлів перекладів організованими, узгодженими та в актуальному стані може швидко перетворитися на значне завдання, якщо ним не займатися ретельно.
46
+
47
+ ---
48
+
49
+ ## Провідні рішення i18n для Vue.js
50
+
51
+ Нижче наведено кілька популярних бібліотек та підходів, які ви можете використати для впровадження інтернаціоналізації у ваших Vue-застосунках. Кожен із них має на меті оптимізувати переклади, SEO і продуктивність по-різному.
52
+
53
+ ---
54
+
55
+ ### 1. Intlayer
56
+
57
+ > Website: [https://intlayer.org/](https://intlayer.org/)
58
+
59
+ **Огляд**
60
+ **Intlayer** — це open-source i18n-рішення, яке прагне спростити підтримку мультимовності у різних фреймворках, включаючи **Vue**. Воно робить акцент на декларативному підході, сильній типізації та підтримці SSR в інших екосистемах, хоча SSR не є типовим для стандартного Vue.
61
+
62
+ **Ключові особливості**
63
+
64
+ - **Декларативні переклади**: Визначайте словники перекладів або на рівні віджета, або в централізованому файлі для чистішої архітектури.
65
+ - **TypeScript & Autocompletion (Web)**: Хоча ця функція передусім корисна для веб-фреймворків, типізований підхід до перекладів все одно може спрямовувати структурування коду у Vue.
66
+ - **Асинхронне завантаження**: Завантажуйте ресурси перекладів динамічно, що потенційно зменшує початковий розмір bundle для багатомовних додатків.
67
+ - **Інтеграція з Vue**: Можна налаштувати базову інтеграцію, щоб використати підхід Intlayer для структурованих перекладів.
68
+
69
+ ### 2. Vue I18n
70
+
71
+ > Website: [https://vue-i18n.intlify.dev/](https://vue-i18n.intlify.dev/)
72
+
73
+ **Огляд**
74
+ **Vue I18n** — найпоширеніша бібліотека локалізації в екосистемі Vue, що забезпечує простий та багатофункціональний підхід до обробки перекладів у проектах на Vue 2, Vue 3 та Nuxt.
75
+
76
+ **Ключові можливості**
77
+
78
+ - **Просте налаштування**
79
+ Швидко налаштуйте локалізовані повідомлення та перемикайте локалі за допомогою детально задокументованого API.
80
+ - **Реактивність**
81
+ Зміни локалі миттєво оновлюють текст у компонентах завдяки реактивній системі Vue.
82
+ - **Підтримка множини та форматування дат/чисел**
83
+ Вбудовані методи покривають типові випадки використання, включно з формами множини, форматуванням дат/часу, форматуванням чисел/валют та іншим.
84
+ - **Підтримка Nuxt.js**
85
+ Модуль Nuxt I18n розширює Vue I18n, забезпечуючи автоматичну генерацію маршрутів, SEO-дружні URL-адреси та карти сайту для кожної локалі.
86
+ - **Підтримка TypeScript**
87
+ Може бути інтегровано з Vue-додатками на базі TypeScript, хоча автозавершення для ключів перекладів може вимагати додаткової конфігурації.
88
+ - **SSR & Code Splitting**
89
+ Безшовно працює з Nuxt для server-side rendering (SSR) та підтримує code splitting для файлів перекладів, щоб підвищити продуктивність.
90
+
91
+ **Зауваження**
92
+
93
+ - **Накладні витрати на конфігурацію**
94
+ Великі або мультикомандні проекти можуть потребувати чіткої структури папок і конвенцій найменувань для ефективного управління файлами перекладів.
95
+ - **Екосистема плагінів**
96
+ Хоча вона й розвинена, можливо доведеться уважно обирати серед кількох плагінів або модулів (Nuxt I18n, Vue I18n тощо), щоб побудувати ідеальну конфігурацію.
97
+
98
+ ---
99
+
100
+ ### 3. LinguiJS (інтеграція для Vue)
101
+
102
+ > Веб-сайт: [https://lingui.js.org/](https://lingui.js.org/)
103
+
104
+ **Огляд**
105
+ Спочатку відомий завдяки інтеграції з React, **LinguiJS** також пропонує плагін для Vue, який орієнтований на мінімальне навантаження під час виконання та автоматизований робочий процес вилучення повідомлень.
106
+
107
+ **Ключові особливості**
108
+
109
+ - **Автоматичне вилучення повідомлень**
110
+ Використовуйте Lingui CLI для сканування вашого Vue-коду на предмет перекладів, що зменшує ручне введення ідентифікаторів повідомлень.
111
+ - **Компактність і висока продуктивність**
112
+ Скомпільовані переклади зменшують розмір рантайму, що важливо для продуктивних Vue-застосунків.
113
+ - **TypeScript та автодоповнення**
114
+ Хоча налаштування може вимагати трохи більше ручної роботи, типізовані ID та каталоги можуть покращити досвід розробника в TypeScript-орієнтованих Vue-проектах.
115
+ - **Сумісність з Nuxt та SSR**
116
+ Може інтегруватися з SSR-настройками для доставки повністю локалізованих сторінок, покращуючи SEO та продуктивність для кожної підтримуваної локалі.
117
+ - **Плюралізація та форматування**
118
+ Вбудована підтримка форм множини, форматування чисел, дат та іншого, що відповідає стандартам ICU MessageFormat.
119
+
120
+ **Зауваження**
121
+
122
+ - **Менше документації, орієнтованої на Vue**
123
+ Хоча LinguiJS офіційно підтримує Vue, документація здебільшого зосереджена на React; можливо, доведеться покладатися на приклади спільноти.
124
+ - **Менша спільнота**
125
+ Порівняно з Vue I18n, екосистема відносно менша. Офіційно підтримувані плагіни та сторонні доповнення можуть бути обмеженішими.
126
+
127
+ ---
128
+
129
+ ## Підсумкові думки
130
+
131
+ При виборі рішення для i18n для вашого Vue.js додатку:
132
+
133
+ 1. **Оцініть свої вимоги**
134
+ Розмір проєкту, навички розробників та складність локалізації — усе це впливає на вибір.
135
+ 2. **Оцініть сумісність зі SSR**
136
+ Якщо ви будуєте додаток на Nuxt або інакше залежите від SSR, переконайтеся, що обраний підхід підтримує серверний рендеринг без проблем.
137
+ 3. **TypeScript & Autocompletion**
138
+ Якщо вам важливий якісний досвід розробника з мінімальною кількістю помилок у ключах перекладу, переконайтеся, що ваше рішення надає типізовані визначення або може бути інтегроване з ними.
139
+ 4. **Керованість & Масштабованість**
140
+ Коли ви додаєте більше локалей або розширюєте додаток, організована структура файлів перекладів є критично важливою.
141
+ 5. **SEO & Metadata**
142
+ Щоб багатомовні сайти добре ранжувалися, ваше рішення має спрощувати локалізовані мета-теги, URL-адреси, карти сайту (sitemaps) та `robots.txt` для кожної локалі.
143
+
144
+ Незалежно від того, який шлях ви оберете — Intlayer, Vue I18n, LinguiJS або власноручне рішення — ви будете на вірному шляху до створення глобально орієнтованого додатка на Vue.js. Кожне рішення має свої компроміси щодо продуктивності, досвіду розробника та масштабованості. Ретельно оцінивши потреби вашого проєкту, ви зможете впевнено обрати i18n-налаштування, яке забезпечить успіх вам і вашій багатомовній аудиторії.