@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,346 @@
1
+ ---
2
+ createdAt: 2025-03-01
3
+ updatedAt: 2025-06-29
4
+ title: Дорожня карта
5
+ description: Дізнайтеся дорожню карту Intlayer. Перегляньте всі можливості, які Intlayer вже реалізував і планує реалізувати.
6
+ keywords:
7
+ - Дорожня карта
8
+ - Intlayer
9
+ - Інтернаціоналізація
10
+ - CMS
11
+ - Система управління контентом
12
+ - Візуальний редактор
13
+ slugs:
14
+ - doc
15
+ - roadmap
16
+ history:
17
+ - version: 5.5.10
18
+ date: 2025-06-30
19
+ changes: Додано підтримку Preact та Nuxt, MCP Server, оновлено CLI
20
+ - version: 5.5.11
21
+ date: 2025-06-29
22
+ changes: Додано команди `docs`
23
+ - version: 5.5.10
24
+ date: 2025-06-29
25
+ changes: Ініціалізовано історію
26
+ ---
27
+
28
+ # Intlayer: Огляд функцій та дорожня карта
29
+
30
+ Intlayer — рішення для управління контентом і інтернаціоналізації, яке спрощує спосіб, яким ви оголошуєте, керуєте та оновлюєте контент у ваших застосунках. Воно пропонує потужні можливості, такі як централізоване або розподілене оголошення контенту, широкі опції інтернаціоналізації, підтримка Markdown, умовний рендеринг, інтеграція з TypeScript/JavaScript/JSON тощо. Нижче наведено всебічний огляд того, що Intlayer наразі надає, а також майбутні заплановані можливості.
31
+
32
+ ---
33
+
34
+ ## Зміст
35
+
36
+ <TOC/>
37
+
38
+ ---
39
+
40
+ ## Поточні можливості
41
+
42
+ ### 1. Оголошення контенту
43
+
44
+ #### Централізоване або розподілене
45
+
46
+ - **Централізоване**: Оголошуйте весь ваш контент у одному великому файлі в корені вашого застосунку, схожому на i18next, щоб керувати всім з одного місця.
47
+ - **Розподілена**: Альтернативно розділіть ваш контент на окремі файли на рівні компонентів або функціональних блоків для кращої підтримуваності. Це дозволяє зберігати контент поруч із відповідним кодом (components, tests, Storybook тощо). Видалення компонента гарантує, що будь-який пов'язаний контент також буде видалено, запобігаючи залишкам даних, які засмічують ваш codebase.
48
+
49
+ > Ресурси:
50
+ >
51
+ > - [Оголошення контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md)
52
+
53
+ ### 2. Інтернаціоналізація
54
+
55
+ - Підтримка **230 мов та локалей** (включно з регіональними варіантами, такими як French (France), English (Canada), English (UK), Portuguese (Portugal) тощо).
56
+ - Легко керувати перекладами для всіх цих локалей з одного місця.
57
+
58
+ > Ресурси:
59
+ >
60
+ > - [Інтернаціоналізація](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/translation.md)
61
+
62
+ ### 3. Підтримка Markdown
63
+
64
+ - Оголошуйте вміст за допомогою **Markdown**, що дозволяє автоматично форматувати текст абзацами, заголовками, посиланнями та ін.
65
+ - Ідеально підходить для блогів, статей, сторінок документації або будь-яких випадків, коли потрібне форматування багатого тексту.
66
+
67
+ > Ресурси:
68
+ >
69
+ > - [Markdown](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/markdown.md)
70
+
71
+ ### 4. Підтримка зовнішніх файлів
72
+
73
+ - Імпортуйте вміст із зовнішніх файлів у текстовому форматі, таких як TXT, HTML, JSON, YAML або CSV.
74
+ - Використовуйте функцію `file` в Intlayer, щоб вбудувати вміст зовнішнього файлу в словник, забезпечуючи безшовну інтеграцію з Intlayer Visual Editor та CMS.
75
+ - Підтримує динамічне оновлення вмісту, тобто коли вихідний файл змінюється, вміст автоматично оновлюється в Intlayer.
76
+ - Дозволяє керувати багатомовним вмістом, динамічно пов’язуючи Markdown-файли для конкретних мов.
77
+
78
+ > Ресурси:
79
+ >
80
+ > - [Вбудовування вмісту файлу](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/file.md)
81
+
82
+ ### 5. Динамічний вміст та отримання функцій
83
+
84
+ Intlayer пропонує різні методи для вставлення та керування динамічним вмістом, забезпечуючи гнучкість і адаптивність у доставці контенту. Це включає функції для вставлення динамічного вмісту, умовного відображення, перерахування, вкладення та отримання функцій.
85
+
86
+ 1. Вставлення динамічного вмісту
87
+
88
+ Використовуйте функцію insert для визначення контенту з заповнювачами ({{name}}, {{age}} тощо).
89
+
90
+ Надає можливість шаблонного контенту, який адаптується залежно від введених користувачем даних, відповідей API або інших джерел динамічних даних.
91
+
92
+ Працює безшовно з TypeScript, ESM, CommonJS та конфігураціями JSON.
93
+
94
+ Легко інтегрується з React Intlayer і Next Intlayer за допомогою useIntlayer.
95
+
96
+ 2. Умовне відображення
97
+
98
+ Визначайте контент, який адаптується залежно від умов, специфічних для користувача, таких як мова або статус автентифікації.
99
+
100
+ Налаштовуйте персоналізований досвід без дублювання контенту у кількох файлах.
101
+
102
+ 3. Перерахування та множинні форми
103
+
104
+ Використовуйте функцію enu для визначення варіантів контенту на основі числових значень, діапазонів або власних ключів.
105
+
106
+ Забезпечує автоматичний вибір правильної фрази залежно від заданого значення.
107
+
108
+ Підтримує правила упорядкування, що гарантує передбачувану поведінку.
109
+
110
+ 4. Вкладеність і посилання на підконтент
111
+
112
+ Використовуйте функцію nest для посилання та повторного використання вмісту з іншого словника, що зменшує дублювання.
113
+
114
+ Підтримує структуроване та ієрархічне управління вмістом для полегшення супроводу.
115
+
116
+ 5. Отримання вмісту через функції
117
+
118
+ Intlayer дозволяє оголошувати вміст як функції, що дає змогу отримувати вміст як синхронно, так і асинхронно.
119
+
120
+ Синхронні функції: вміст генерується динамічно під час збірки.
121
+
122
+ Асинхронні функції: динамічно отримують дані з зовнішніх джерел (наприклад, API, бази даних).
123
+
124
+ Інтеграція: Працює з TypeScript, ESM і CommonJS, але не підтримується у JSON або віддалених файлах вмісту.
125
+
126
+ ### 6. Формати оголошення вмісту
127
+
128
+ Intlayer підтримує **TypeScript** (також JavaScript) та **JSON** для оголошення вмісту.
129
+
130
+ - **TypeScript**:
131
+ - Забезпечує правильну структуру контенту та відсутність пропущених перекладів.
132
+ - Пропонує суворі або більш гнучкі режими валідації.
133
+ - Дозволяє динамічно отримувати дані зі змінних, функцій або зовнішніх API.
134
+
135
+ - **JSON**:
136
+ - Полегшує інтеграцію з зовнішніми інструментами (наприклад, візуальними редакторами) завдяки стандартизованому формату.
137
+
138
+ > Ресурси:
139
+ >
140
+ > - [Формати оголошення контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md)
141
+
142
+ ### 7. Очищення, оптимізація бандла та динамічні імпорти
143
+
144
+ - Intlayer інтегрує плагіни `Babel` та `SWC` для оптимізації вашого бандла та підвищення продуктивності. Він замінює імпорти, дозволяючи включати у бандл лише ті словники, які фактично використовуються.
145
+ - Активувавши цю опцію, Intlayer також дозволяє динамічно імпортувати вміст словника лише для поточної локалі.
146
+
147
+ > Ресурси:
148
+ >
149
+ > - [Build Configuration](https://intlayer.org/doc/concept/configuration#build-configuration)
150
+
151
+ ---
152
+
153
+ ## Інтеграція з фреймворками та середовищами
154
+
155
+ ### 1. Next.js
156
+
157
+ #### a. Серверні та клієнтські компоненти
158
+
159
+ - Надає **уніфікований підхід до керування контентом** як для серверних, так і для клієнтських компонентів.
160
+ - Пропонує вбудований контекст для серверних компонентів, що спрощує реалізацію порівняно з іншими рішеннями.
161
+
162
+ #### b. Метадані, карти сайтів та robots.txt
163
+
164
+ - Динамічно отримуйте та вставляйте контент для генерації метаданих, карт сайтів або файлів `robots.txt`.
165
+
166
+ #### c. Middleware
167
+
168
+ - Додайте middleware, щоб **перенаправляти користувачів** до контенту залежно від їхньої переважної мови.
169
+
170
+ #### d. Сумісність з Turbopack та Webpack
171
+
172
+ - Повністю сумісний з новим Turbopack у Next.js, а також із традиційним Webpack.
173
+
174
+ > Ресурси:
175
+ >
176
+ > - [Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nextjs_15.md)
177
+
178
+ ### 2. Vite
179
+
180
+ - Подібно до Next.js, ви можете інтегрувати Intlayer з Vite і використовувати **middleware** для перенаправлення користувачів до контенту залежно від їхньої переважної мови.
181
+
182
+ > Ресурси:
183
+ >
184
+ > - [Vite](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vite+react.md)
185
+
186
+ ### 3. Express
187
+
188
+ - Керуйте контентом та інтернаціоналізуйте бекенд-сервіси, побудовані на Express.
189
+ - Персоналізуйте електронні листи, повідомлення про помилки, push-повідомлення та інше за допомогою локалізованого тексту.
190
+
191
+ > Ресурси:
192
+ >
193
+ > - [Express](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_express.md)
194
+
195
+ ### 4. React Native
196
+
197
+ - Інтегруйте Intlayer з React Native для керування контентом та інтернаціоналізації ваших мобільних додатків.
198
+ - Підтримує платформи iOS та Android.
199
+
200
+ > Ресурси:
201
+ >
202
+ > - [React Native](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_react_native.md)
203
+
204
+ ### 5. Lynx
205
+
206
+ - Інтегруйте Intlayer з Lynx для керування контентом та інтернаціоналізації ваших мобільних додатків.
207
+ - Підтримує платформи iOS та Android.
208
+
209
+ > Ресурси:
210
+ >
211
+ > - [Lynx](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_lynx.md)
212
+
213
+ ### 6. Vue
214
+
215
+ - Інтегруйте Intlayer з Vue для керування контентом та інтернаціоналізації ваших Vite / Vue.js додатків.
216
+
217
+ > Ресурси:
218
+ >
219
+ > - [Vue](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_vue.md)
220
+
221
+ ### 7. Nuxt
222
+
223
+ - Інтегруйте Intlayer з Nuxt для керування контентом та інтернаціоналізації ваших Nuxt / Vue.js додатків.
224
+ - Підтримує як серверні, так і клієнтські компоненти.
225
+ - Інтегрує маршрутизацію та middleware для перенаправлення користувачів до контенту залежно від обраної користувачем мови.
226
+
227
+ > Ресурси:
228
+ >
229
+ > - [Nuxt](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_nuxt.md)
230
+
231
+ ### 8. Preact
232
+
233
+ - Інтегруйте Intlayer з Preact для керування контентом та інтернаціоналізації ваших Preact-додатків.
234
+
235
+ > Ресурси:
236
+ >
237
+ > - [Preact](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_with_preact.md)
238
+
239
+ ---
240
+
241
+ ## Візуальні редактори та CMS
242
+
243
+ ### 1. Локальний візуальний редактор
244
+
245
+ - **Безкоштовний локальний візуальний редактор**, який дозволяє редагувати вміст вашого застосунку, безпосередньо вибираючи елементи на сторінці.
246
+ - Інтегрує AI‑функції для допомоги:
247
+ - Генерувати або виправляти переклади
248
+ - Перевіряти синтаксис і орфографію
249
+ - Пропонувати покращення
250
+ - Може працювати локально або бути розгорнутий на віддаленому сервері.
251
+
252
+ > Ресурси:
253
+ >
254
+ > - [Візуальний редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_visual_editor.md)
255
+
256
+ ### 2. Intlayer CMS (віддалений)
257
+
258
+ - **Хостована CMS** — рішення, яке дозволяє керувати вмістом застосунку онлайн, не торкаючись вашого codebase.
259
+ - Надає AI‑підтримку для декларування вмісту, керування перекладами та виправлення помилок синтаксису або орфографії.
260
+ - Взаємодійте з вашим контентом через інтерфейс живого застосунку.
261
+
262
+ > Ресурси:
263
+ >
264
+ > - [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md)
265
+
266
+ ---
267
+
268
+ ## Розширення IDE
269
+
270
+ - Розширення для основних IDE, які надають **графічний інтерфейс** для керування локальними та віддаленими перекладами.
271
+ - Функціонал може включати автоматичне генерування файлів декларації контенту для компонентів, пряму інтеграцію з Intlayer CMS та перевірку в реальному часі.
272
+
273
+ ---
274
+
275
+ ## Сервер MCP
276
+
277
+ - **MCP-сервер**, який дозволяє керувати вашим контентом і перекладами за допомогою інтегрованого інструменту в IDE.
278
+
279
+ ---
280
+
281
+ ## Intlayer CLI
282
+
283
+ - **Переклад та генерація файлів**: Виконуйте аудити файлів контенту, щоб згенерувати відсутні переклади та перевірити невідповідності.
284
+ - **Віддалена взаємодія**: Push ваш локальний контент у віддалений CMS або pull віддалений контент для інтеграції у ваш локальний додаток.
285
+ - **Переклад та перевірка документації**: Перекладайте та перевіряйте вашу документацію, файли тощо.
286
+
287
+ > Resources:
288
+ >
289
+ > - [CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md)
290
+
291
+ ---
292
+
293
+ ## Середовища
294
+
295
+ - Використовуйте **environment variables** для налаштування Intlayer по-різному для production, testing та local середовищ.
296
+ - Визначайте, який visual editor або віддалений проект CMS використовувати залежно від вашого середовища.
297
+
298
+ ---
299
+
300
+ ## Миттєві оновлення контенту
301
+
302
+ - При використанні віддалених словників і Intlayer CMS ви можете **оновлювати контент вашого застосунку на льоту**, без необхідності повторного розгортання.
303
+
304
+ > Resources:
305
+ >
306
+ > - [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md)
307
+
308
+ ---
309
+
310
+ ## Майбутні функції
311
+
312
+ ### 1. A/B тестування та персоналізація
313
+
314
+ - **Мультиваріантне тестування (Multivariate Testing)**: тестуйте різні версії певного фрагмента контенту, щоб з’ясувати, яка показує найкращі результати (наприклад, вищий коефіцієнт кліків).
315
+ - **Персоналізація на основі даних**: відображайте різний контент залежно від демографічних даних користувача (стать, вік, місцезнаходження тощо) або інших моделей поведінки.
316
+ - **Автоматизована ітерація**: дозволяйте AI автоматично тестувати кілька варіантів і або вибирати найкращий виконавець, або рекомендувати опції для затвердження адміністратором.
317
+
318
+ ### 2. Версіонування
319
+
320
+ - Відновлюйте попередні версії вашого контенту за допомогою **версіювання контенту**.
321
+ - Відстежуйте зміни з часом і повертайтеся до попередніх станів за потреби.
322
+
323
+ ### 3. Автоматичний переклад
324
+
325
+ - Для користувачів віддаленої CMS — **генерація перекладів в один клік** для будь-якої підтримуваної мови.
326
+ - Система генеруватиме переклади у фоновому режимі, а потім запропонує вам їх підтвердити або відредагувати.
327
+
328
+ ### 4. SEO Enhancements
329
+
330
+ - Інструменти для **аналізу ключових слів**, пошукового наміру користувача та виникаючих трендів.
331
+ - Пропонувати вдосконалений контент для кращого ранжування та відстежувати довгострокову ефективність.
332
+
333
+ ### 5. Compatibility with More Frameworks
334
+
335
+ - Проводяться роботи з підтримки **Solid, Svelte, Angular** та інших.
336
+ - Мета — зробити Intlayer сумісним з **будь-яким додатком на базі JavaScript**.
337
+
338
+ ---
339
+
340
+ ## Висновок
341
+
342
+ Intlayer прагне бути універсальним рішенням для управління контентом та інтернаціоналізації. Воно зосереджене на гнучкості (централізовані або розподілені файли), широкій підтримці мов, легкій інтеграції з сучасними фреймворками та bundlers, а також на потужних функціях, керованих AI. У міру появи нових можливостей, таких як A/B testing, версіонування та автоматичні переклади, Intlayer і надалі спрощуватиме робочі процеси з контентом і підвищуватиме якість користувацького досвіду на різних платформах.
343
+
344
+ Слідкуйте за майбутніми релізами та не соромтеся досліджувати наявні можливості, щоб переконатися, як Intlayer сьогодні може допомогти централізувати та оптимізувати ваші процеси управління контентом!
345
+
346
+ ---
@@ -0,0 +1,204 @@
1
+ ---
2
+ createdAt: 2025-03-01
3
+ updatedAt: 2025-10-05
4
+ title: Тестування вашого контенту
5
+ description: Дізнайтеся, як тестувати ваш контент за допомогою Intlayer.
6
+ keywords:
7
+ - Тестування
8
+ - Intlayer
9
+ - Інтернаціоналізація
10
+ - CMS
11
+ - Система управління контентом
12
+ - Візуальний редактор
13
+ slugs:
14
+ - doc
15
+ - testing
16
+ history:
17
+ - version: 6.0.1
18
+ date: 2025-10-05
19
+ changes: Зробити тест асинхронним і додати опцію build
20
+ - version: 6.0.0
21
+ date: 2025-09-20
22
+ changes: Впровадження тестування
23
+ ---
24
+
25
+ # Тестування вашого контенту
26
+
27
+ Цей посібник показує, як автоматично перевіряти повноту ваших словників, виявляти відсутні переклади до релізу та тестувати локалізований UI у вашому додатку.
28
+
29
+ ---
30
+
31
+ ## Що ви можете перевірити
32
+
33
+ - **Відсутні переклади**: провалювати CI, якщо для будь-якого словника відсутні обов'язкові локалі.
34
+ - **Локалізований рендер UI**: відрендерити компоненти з провайдером конкретної локалі та перевірити видимий текст/атрибути.
35
+ - **Перевірки під час збірки**: швидко виконати аудит локально через CLI.
36
+
37
+ ---
38
+
39
+ ## Швидкий старт: аудит через CLI
40
+
41
+ Запустіть аудит з кореня вашого проєкту:
42
+
43
+ ```bash
44
+ npx intlayer content test
45
+ ```
46
+
47
+ Корисні прапорці:
48
+
49
+ - `--env-file [path]`: завантажити змінні середовища з файлу.
50
+ - `-e, --env [name]`: вибрати профіль середовища.
51
+ - `--base-dir [path]`: встановити базову директорію додатку для вирішення шляхів.
52
+ - `--verbose`: показувати детальні логи.
53
+ - `--prefix [label]`: додавати префікс до рядків логу.
54
+ - `--build [build]`: збирати словники перед тестуванням, щоб переконатися, що вміст актуальний. True примусово виконає збірку, false пропустить збірку, undefined дозволить використовувати кеш збірки.
55
+
56
+ Примітка: CLI виводить детальний звіт, але не завершує виконання з ненульовим кодом при помилках. Для контролю в CI додайте модульний тест (нижче), який перевіряє, що кількість відсутніх обов'язкових локалей дорівнює нулю.
57
+
58
+ ---
59
+
60
+ ## Програмний тест (Vitest/Jest)
61
+
62
+ Використайте API Intlayer CLI, щоб переконатися, що для обов'язкових локалей немає відсутніх перекладів.
63
+
64
+ ```ts fileName=i18n.test.ts
65
+ /* @vitest-environment node */
66
+ import { listMissingTranslations } from "intlayer/cli";
67
+ import { describe, expect, it } from "vitest";
68
+
69
+ describe("translations", () => {
70
+ it("has no missing required locales", async () => {
71
+ const result = await listMissingTranslations();
72
+
73
+ if (result.missingRequiredLocales.length > 0) {
74
+ // Корисно, коли тест не проходить локально або в CI
75
+ console.log(result.missingTranslations);
76
+ }
77
+
78
+ expect(result.missingRequiredLocales).toHaveLength(0);
79
+ });
80
+ });
81
+ ```
82
+
83
+ Jest еквівалент:
84
+
85
+ ```ts fileName=i18n.test.ts
86
+ import { listMissingTranslations } from "intlayer/cli";
87
+
88
+ test("has no missing required locales", async () => {
89
+ const result = await listMissingTranslations();
90
+
91
+ if (result.missingRequiredLocales.length > 0) {
92
+ // Корисно, коли тест не проходить локально або в CI
93
+ console.log(result.missingTranslations);
94
+ }
95
+
96
+ expect(result.missingRequiredLocales).toHaveLength(0);
97
+ });
98
+ ```
99
+
100
+ Як це працює:
101
+
102
+ - Intlayer читає вашу конфігурацію (locales, requiredLocales) та оголошені словники, а потім звітує:
103
+ - `missingTranslations`: по‑ключу — які локалі відсутні та з якого файлу.
104
+ - `missingLocales`: об'єднання всіх відсутніх локалей.
105
+ - `missingRequiredLocales`: підмножина, обмежена `requiredLocales` (або всі локалі, якщо `requiredLocales` не встановлено).
106
+
107
+ ---
108
+
109
+ ## Тестування локалізованого інтерфейсу (React / Next.js)
110
+
111
+ Рендерте компоненти під провайдером Intlayer та перевіряйте видимий вміст.
112
+
113
+ Приклад для React (Testing Library):
114
+
115
+ ```tsx
116
+ import { IntlayerProvider } from "react-intlayer/client";
117
+ import { render, screen } from "@testing-library/react";
118
+ import { MyComponent } from "./MyComponent";
119
+
120
+ test("рендерить локалізований заголовок англійською", () => {
121
+ render(
122
+ <IntlayerProvider locale="en-US">
123
+ <MyComponent />
124
+ </IntlayerProvider>
125
+ );
126
+
127
+ expect(
128
+ screen.getByText("Очікуваний заголовок англійською")
129
+ ).toBeInTheDocument();
130
+ });
131
+ ```
132
+
133
+ Next.js (App Router) example: use the framework wrapper:
134
+
135
+ ```tsx
136
+ import { IntlayerClientProvider } from "next-intlayer/client";
137
+ import { render, screen } from "@testing-library/react";
138
+ import { MyPage } from "./MyPage";
139
+
140
+ test("відображає локалізований заголовок французькою", () => {
141
+ render(
142
+ <IntlayerClientProvider locale="fr-FR">
143
+ <MyPage />
144
+ </IntlayerClientProvider>
145
+ );
146
+ expect(
147
+ screen.getByRole("heading", { name: "Titre attendu" })
148
+ ).toBeInTheDocument();
149
+ });
150
+ ```
151
+
152
+ Поради:
153
+
154
+ - Коли потрібні сирі рядкові значення для атрибутів (наприклад, `aria-label`), отримуйте поле `.value`, яке повертає `useIntlayer` в React.
155
+ - Тримайте словники поруч з компонентами для спрощення юніт-тестування та очищення.
156
+
157
+ ---
158
+
159
+ ## Неперервна інтеграція
160
+
161
+ Додайте тест, який завершуватиме збірку з помилкою, коли відсутні обов'язкові переклади.
162
+
163
+ `package.json`:
164
+
165
+ ```json
166
+ {
167
+ "scripts": {
168
+ "test:i18n": "vitest run -c"
169
+ }
170
+ }
171
+ ```
172
+
173
+ Приклад GitHub Actions:
174
+
175
+ ```yaml
176
+ name: CI
177
+ on: [push, pull_request]
178
+ jobs:
179
+ test:
180
+ runs-on: ubuntu-latest
181
+ steps:
182
+ - uses: actions/checkout@v4
183
+ - uses: actions/setup-node@v4
184
+ with:
185
+ node-version: 20
186
+ - run: npm ci
187
+ - run: npm run test:i18n
188
+ ```
189
+
190
+ Необов'язково: запустіть аудит CLI, щоб отримати зрозумілий для людини підсумок разом із тестами:
191
+
192
+ ```bash
193
+ npx intlayer content test --verbose
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Усунення неполадок
199
+
200
+ - Переконайтеся, що ваша конфігурація Intlayer визначає `locales` і (за потреби) `requiredLocales`.
201
+ - Якщо ваш застосунок використовує динамічні або віддалені словники, запускайте тести в середовищі, де ці словники доступні.
202
+ - Для змішаних монорепозиторіїв використовуйте `--base-dir`, щоб вказати CLI правильний корінь застосунку.
203
+
204
+ ---