@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
@@ -108,18 +108,22 @@ syncJSON({
108
108
  source: ({ key, locale }) => string, // zorunlu
109
109
  location?: string, // isteğe bağlı etiket, varsayılan: "plugin"
110
110
  priority?: number, // isteğe bağlı öncelik, çakışma çözümü için, varsayılan: 0
111
- format?: 'intlayer' | 'icu' | 'i18next', // isteğe bağlı formatlayıcı, varsayılan: 'intlayer'
111
+ format?: 'intlayer' | 'icu' | 'i18next', // isteğe bağlı formatlayıcı, Intlayer runtime uyumluluğu için kullanılır
112
112
  });
113
113
  ```
114
114
 
115
115
  #### `format` ('intlayer' | 'icu' | 'i18next')
116
116
 
117
- JSON dosyalarını senkronize ederken sözlük içeriği için kullanılacak formatlayıcıyı belirtir. Bu, çeşitli i18n kütüphaneleriyle uyumlu farklı mesaj formatlama sözdizimlerini kullanmanıza olanak tanır.
117
+ JSON dosyalarını senkronize ederken sözlük içeriği için kullanılacak formatlayıcıyı belirtir. Bu, Intlayer runtime ile uyumlu farklı mesaj formatlama sözdizimlerini kullanmanıza olanak tanır.
118
118
 
119
+ - `undefined`: Hiçbir formatlayıcı kullanılmayacak, JSON içeriği olduğu gibi kullanılacak.
119
120
  - `'intlayer'`: Varsayılan Intlayer formatlayıcısı (varsayılan).
120
121
  - `'icu'`: ICU mesaj formatlamasını kullanır (react-intl, vue-i18n gibi kütüphanelerle uyumlu).
121
122
  - `'i18next'`: i18next mesaj formatlamasını kullanır (i18next, next-i18next, Solid-i18next ile uyumlu).
122
123
 
124
+ > Bir formatlayıcı kullanmanın JSON içeriğinizi girdi ve çıktıda dönüştüreceğini unutmayın. ICU çoğulları gibi karmaşık JSON kuralları için, ayrıştırma girdi ve çıktı arasında 1'e 1 eşleme garanti edemeyebilir.
125
+ > Intlayer runtime kullanmıyorsanız, bir formatlayıcı ayarlamamayı tercih edebilirsiniz.
126
+
123
127
  **Örnek:**
124
128
 
125
129
  ```ts
@@ -0,0 +1,198 @@
1
+ ---
2
+ createdAt: 2025-05-20
3
+ updatedAt: 2025-08-13
4
+ title: "Інтеграція CI/CD"
5
+ description: "Дізнайтеся, як інтегрувати Intlayer у ваш CI/CD конвеєр для автоматизованого керування контентом та розгортання."
6
+ keywords:
7
+ - CI/CD
8
+ - Безперервна інтеграція
9
+ - Безперервне розгортання
10
+ - Автоматизація
11
+ - Інтернаціоналізація
12
+ - Документація
13
+ - Intlayer
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - ci-cd
18
+ history:
19
+ - version: 5.5.10
20
+ date: 2025-06-29
21
+ changes: Ініціалізація історії
22
+ ---
23
+
24
+ # Автоматичне генерування перекладів у CI/CD конвеєрі
25
+
26
+ Intlayer дозволяє автоматично створювати переклади для ваших файлів декларації контенту. Існує кілька способів досягти цього залежно від вашого робочого процесу.
27
+
28
+ ## Зміст
29
+
30
+ <TOC/>
31
+
32
+ ## Використання CMS
33
+
34
+ З Intlayer ви можете використовувати робочий процес, у якому локально оголошується лише одна локаль, тоді як усі переклади керуються віддалено через CMS. Це дозволяє повністю відокремити вміст і переклади від codebase, надаючи редакторам вмісту більше гнучкості та забезпечуючи Live Sync (немає потреби перебудовувати застосунок, щоб застосувати зміни).
35
+
36
+ ### Приклад конфігурації
37
+
38
+ ```ts fileName="intlayer.config.ts"
39
+ import { Locales, type IntlayerConfig } from "intlayer";
40
+
41
+ const config: IntlayerConfig = {
42
+ internationalization: {
43
+ locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
44
+ requiredLocales: [Locales.ENGLISH], // Optional locales will be managed remotely
45
+ defaultLocale: Locales.ENGLISH,
46
+ },
47
+ editor: {
48
+ // Облікові дані CMS, якщо ви використовуєте CMS
49
+ clientId: process.env.INTLAYER_CLIENT_ID,
50
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
51
+ liveSync: true,
52
+ },
53
+ ai: {
54
+ applicationContext: "This is a test application", // Допомагає забезпечити узгоджене генерування перекладів
55
+ },
56
+ };
57
+
58
+ export default config;
59
+ ```
60
+
61
+ Щоб дізнатися більше про CMS, зверніться до [офіційної документації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md).
62
+
63
+ ## Використання Husky
64
+
65
+ Ви можете інтегрувати генерацію перекладів у ваш локальний Git-воркфлоу за допомогою [Husky](https://typicode.github.io/husky/).
66
+
67
+ ### Приклад конфігурації
68
+
69
+ ```ts fileName="intlayer.config.ts"
70
+ import { Locales, type IntlayerConfig } from "intlayer";
71
+
72
+ const config: IntlayerConfig = {
73
+ internationalization: {
74
+ locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
75
+ requiredLocales: [Locales.ENGLISH], // Необов’язкові локалі обробляються віддалено
76
+ defaultLocale: Locales.ENGLISH,
77
+ },
78
+ editor: {
79
+ clientId: process.env.INTLAYER_CLIENT_ID,
80
+ clientSecret: process.env.INTLAYER_CLIENT_SECRET,
81
+ },
82
+ ai: {
83
+ provider: "openai",
84
+ apiKey: process.env.OPENAI_API_KEY, // Використайте власний API-ключ
85
+
86
+ applicationContext: "This is a test application", // Допомагає забезпечити узгоджене генерування перекладів
87
+ },
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ ```bash fileName=".husky/pre-push"
94
+ npx intlayer build # Щоб переконатися, що словники оновлені
95
+ npx intlayer fill --unpushed --mode fill # Заповнює лише відсутній вміст, не оновлює існуючий
96
+ ```
97
+
98
+ > For more information about Intlayer CLI commands and their usage, refer to the [CLI documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).
99
+ >
100
+ > If you have multiple apps in your repo using separate intlayer instances, you can use the `--base-dir` argument like this:
101
+
102
+ ```bash fileName=".husky/pre-push"
103
+ # Додаток 1
104
+ npx intlayer build --base-dir ./app1
105
+ npx intlayer fill --base-dir ./app1 --unpushed --mode fill
106
+
107
+ # Додаток 2
108
+ npx intlayer build --base-dir ./app2
109
+ npx intlayer fill --base-dir ./app2 --unpushed --mode fill
110
+ ```
111
+
112
+ ## Використання GitHub Actions
113
+
114
+ Intlayer надає CLI-команду для автоматичного заповнення та перегляду вмісту словників. Це можна інтегрувати у ваш робочий процес CI/CD за допомогою GitHub Actions.
115
+
116
+ ```yaml fileName=".github/workflows/intlayer-translate.yml"
117
+ name: Intlayer Авто-заповнення
118
+ # Умови запуску цього workflow
119
+ on:
120
+ pull_request:
121
+ branches:
122
+ - "main"
123
+
124
+ permissions:
125
+ contents: write
126
+ pull-requests: write
127
+
128
+ concurrency:
129
+ group: "autofill-${{ github.ref }}"
130
+ cancel-in-progress: true
131
+
132
+ jobs:
133
+ autofill:
134
+ runs-on: ubuntu-latest
135
+ env:
136
+ # Конфігурація OpenAI
137
+ AI_MODEL: openai
138
+ AI_PROVIDER: gpt-5-mini
139
+ AI_API_KEY: ${{ secrets.AI_API_KEY }}
140
+
141
+ steps:
142
+ # Крок 1: Отримати останній код з репозиторію
143
+ - name: ⬇️ Клонувати репозиторій
144
+ uses: actions/checkout@v4
145
+ with:
146
+ persist-credentials: true # Зберегти облікові дані для створення PR
147
+ fetch-depth: 0 # Отримати повну історію git для аналізу diff
148
+
149
+ # Крок 2: Налаштування середовища Node.js
150
+ - name: 🟢 Налаштувати Node.js
151
+ uses: actions/setup-node@v4
152
+ with:
153
+ node-version: 20 # Використовуйте Node.js 20 LTS для стабільності
154
+
155
+ # Крок 3: Встановити залежності проєкту
156
+ - name: 📦 Встановити залежності
157
+ run: npm install
158
+
159
+ # Крок 4: Встановити Intlayer CLI глобально для керування перекладами
160
+ - name: 📦 Встановити Intlayer
161
+ run: npm install -g intlayer-cli
162
+
163
+ # Крок 5: Побудувати проєкт Intlayer для генерації файлів перекладу
164
+ - name: ⚙️ Побудувати проєкт Intlayer
165
+ run: npx intlayer build
166
+
167
+ # Крок 6: Використати AI для автоматичного заповнення відсутніх перекладів
168
+ - name: 🤖 Автоматично заповнити відсутні переклади
169
+ run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY
170
+
171
+ # Крок 7: Перевірити наявність змін і закомітити їх
172
+ - name: 🔍 Перевірити наявність змін
173
+ id: check-changes
174
+ run: |
175
+ if [ -n "$(git status --porcelain)" ]; then
176
+ echo "has-changes=true" >> $GITHUB_OUTPUT
177
+ else
178
+ echo "has-changes=false" >> $GITHUB_OUTPUT
179
+ fi
180
+
181
+ # Крок 8: Закомітити та відправити зміни, якщо вони є
182
+ - name: 📤 Закомітити та відправити зміни
183
+ if: steps.check-changes.outputs.has-changes == 'true'
184
+ run: |
185
+ git config --local user.email "action@github.com"
186
+ git config --local user.name "GitHub Action"
187
+ git add .
188
+ git commit -m "chore: автоматичне заповнення відсутніх перекладів [skip ci]"
189
+ git push origin HEAD:${{ github.head_ref }}
190
+ ```
191
+
192
+ Щоб налаштувати змінні середовища, перейдіть у GitHub → Settings → Secrets and variables → Actions і додайте секрет .
193
+
194
+ > Так само, як і для Husky, у випадку монорепозиторію ви можете використовувати аргумент `--base-dir`, щоб послідовно обробляти кожен додаток.
195
+
196
+ > За замовчуванням аргумент `--git-diff` фільтрує словники, які містять зміни від бази (за замовчуванням `origin/main`) до поточної гілки (за замовчуванням: `HEAD`).
197
+
198
+ > Для отримання додаткової інформації про команди Intlayer CLI та їх використання зверніться до [CLI documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).
@@ -0,0 +1,307 @@
1
+ ---
2
+ createdAt: 2025-03-13
3
+ updatedAt: 2025-09-20
4
+ title: Автозаповнення
5
+ description: Дізнайтеся, як використовувати функцію автозаповнення в Intlayer для автоматичного заповнення контенту на основі заздалегідь визначених шаблонів. Дотримуйтесь цієї документації, щоб ефективно реалізувати можливості автозаповнення у вашому проєкті.
6
+ keywords:
7
+ - Автозаповнення
8
+ - Автоматизація контенту
9
+ - Динамічний контент
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - auto-fill
18
+ history:
19
+ - version: 7.0.0
20
+ date: 2025-10-23
21
+ changes: Перейменовано `autoFill` на `fill` та оновлено поведінку
22
+ - version: 6.0.0
23
+ date: 2025-09-20
24
+ changes: Додано глобальну конфігурацію
25
+ - version: 6.0.0
26
+ date: 2025-09-17
27
+ changes: Додано змінну `{{fileName}}`
28
+ - version: 5.5.10
29
+ date: 2025-06-29
30
+ changes: Ініціалізовано історію
31
+ ---
32
+
33
+ # Заповнення файлів декларації контенту
34
+
35
+ **Файли декларації контенту з автозаповненням** у вашому CI — це спосіб прискорити робочий процес розробки.
36
+
37
+ ## Розуміння поведінки
38
+
39
+ Команда `fill` має два режими:
40
+
41
+ - **Complete**: Автоматично заповнює весь відсутній контент для кожної локалі та редагує поточний файл або інший файл, якщо вказано. Тобто режим Complete пропускає переклад наявного контенту, якщо він уже перекладений.
42
+ - **Review**: Автоматично заповнює **весь** контент для кожної локалі та генерує файл для поточного або вказаного іншого файлу.
43
+
44
+ Команда `fill` обробляє лише ваші локальні файли декларації контенту. Тобто вона не обробляє віддалений контент із CMS — CMS має власну систему керування перекладами.
45
+ Якщо ви використовуєте плагіни, такі як `@intlayer/sync-json-plugin`, Intlayer перетворить JSON-файли на файли декларацій локалізованого контенту. Тобто вони будуть оброблятися командою `fill`.
46
+
47
+ У новостворених файлах міститься інструкція `filled` як метадані словника. Ця інструкція використовується Intlayer, щоб визначити, чи файл був автозаповнений, і, якщо так, пропустити цей файл при наступному перекладі.
48
+
49
+ Intlayer також враховуватиме такі інструкції для автозаповнення:
50
+
51
+ - Із вашого файлу `.content.{ts|js|json}` → інструкція `fill`
52
+ - Із конфігураційного файлу `.intlayer.config.ts` → інструкція `dictionary.fill`
53
+ - Якщо ніде не вказано — за замовчуванням буде встановлено `true`
54
+
55
+ Для деклараційних файлів вмісту, що призначені для окремої локалі (per-locale), інструкція `true` буде замінена на `./{{fileName}}.fill.content.json`. Це відбувається тому, що такий per-locale деклараційний файл вмісту не може отримувати додатковий локалізований вміст. Отже, буде згенеровано новий файл, щоб не перезаписувати існуючий файл.
56
+
57
+ ## Поведінка за замовчуванням
58
+
59
+ За замовчуванням глобальний параметр `fill` встановлено в `true`, що означає, що Intlayer автоматично заповнюватиме всі файли вмісту та редагуватиме сам файл. Цю поведінку можна налаштувати кількома способами:
60
+
61
+ ### Глобальні параметри конфігурації
62
+
63
+ 1. **`fill: true` (default)** - Автоматично заповнювати всі локалі та редагувати поточний файл
64
+ 2. **`fill: false`** - Вимкнути автоматичне заповнення для цього файлу вмісту
65
+ 3. **`fill: "./relative/path/to/file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи на відносний шлях, який резольвується на основі розташування поточного файлу
66
+ 4. **`fill: "/absolute/path/to/file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи шлях, що резольвується відносно базового каталогу (поле `baseDir` у файлі конфігурації `.intlayer.config.ts`)
67
+ 5. **`fill: "C:\\absolute\path\to\file"`** - Створює/оновлює вказаний файл без редагування поточного, вказуючи на абсолютний шлях, який резольвується на основі вашої операційної системи
68
+ 6. **`fill: { [key in Locales]?: string }`** - Створює/оновлює вказаний файл для кожної локалі
69
+
70
+ ### Зміни поведінки у v7
71
+
72
+ У версії v7 поведінка команди `fill` була оновлена:
73
+
74
+ - **`fill: true`** - Перезаписує поточний файл із заповненим вмістом для всіх локалей
75
+ - **`fill: "path/to/file"`** - Заповнює вказаний файл, не змінюючи поточний файл
76
+ - **`fill: false`** - Повністю відключає автоматичне заповнення
77
+
78
+ При використанні опції шляху для запису в інший файл механізм fill працює через _master-slave_ зв'язок між файлами декларацій вмісту. Основний (master) файл є джерелом істини, і коли він оновлюється, Intlayer автоматично застосовує ці зміни до похідних (filled) файлів декларацій, вказаних у шляху.
79
+
80
+ ### Налаштування для кожної локалі
81
+
82
+ Ви також можете налаштувати поведінку для кожної локалі, використовуючи об'єкт:
83
+
84
+ ```ts fileName="intlayer.config.ts"
85
+ const config: IntlayerConfig = {
86
+ content: {
87
+ internationalization: {
88
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.POLISH],
89
+ defaultLocale: Locales.ENGLISH,
90
+ requiredLocales: [Locales.ENGLISH], // Рекомендовано, щоб уникнути помилки Property 'pl' is missing in type '{ en: string; xxx } on your t function if
91
+ },
92
+ },
93
+ dictionary: {
94
+ fill: {
95
+ en: true, // Заповнює та редагує поточний файл для англійської
96
+ fr: "./translations/fr.json", // Створює окремий файл для французької
97
+ es: false, // Вимикає заповнення для іспанської
98
+ },
99
+ },
100
+ };
101
+ ```
102
+
103
+ Це дозволяє мати різну поведінку заповнення для різних локалей у межах одного проєкту.
104
+
105
+ ```ts fileName="src/components/example/example.content.ts"
106
+ import { Locales, type Dictionary } from "intlayer";
107
+
108
+ const exampleContent = {
109
+ key: "example",
110
+ locale: Locales.ENGLISH,
111
+ fill: "./example.content.json",
112
+ content: {
113
+ contentExample: "Це приклад вмісту",
114
+ },
115
+ } satisfies Dictionary;
116
+
117
+ export default exampleContent;
118
+ ```
119
+
120
+ Ось [файл декларації вмісту на рівні локалі](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/per_locale_file.md), який використовує інструкцію `fill`.
121
+
122
+ Потім, коли ви виконаєте наступну команду:
123
+
124
+ ```bash
125
+ npx intlayer fill --file 'src/components/example/example.content.ts'
126
+ ```
127
+
128
+ Intlayer автоматично згенерує похідний файл декларації за адресою `src/components/example/example.content.json`, заповнивши всі локалі, які ще не оголошені в основному файлі.
129
+
130
+ ```json5 fileName="src/components/example/example.content.json"
131
+ {
132
+ "key": "example",
133
+ "content": {
134
+ "contentExample": {
135
+ "nodeType": "translation",
136
+ "translation": {
137
+ "uk": "Це приклад вмісту",
138
+ "fr": "Ceci est un exemple de contenu",
139
+ "es": "Este es un ejemplo de contenido",
140
+ },
141
+ },
142
+ },
143
+ }
144
+ ```
145
+
146
+ Після цього обидва файли декларацій будуть об'єднані в один словник, доступний за допомогою стандартного хука `useIntlayer("example")` (React) / composable (Vue).
147
+
148
+ ## Глобальна конфігурація
149
+
150
+ Ви можете налаштувати глобальну конфігурацію автоматичного заповнення у файлі `intlayer.config.ts`.
151
+
152
+ ```ts fileName="intlayer.config.ts"
153
+ import { type IntlayerConfig, Locales } from "intlayer";
154
+
155
+ const config: IntlayerConfig = {
156
+ internationalization: {
157
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
158
+ defaultLocale: Locales.ENGLISH,
159
+ requiredLocales: [Locales.ENGLISH, Locales.FRENCH],
160
+ },
161
+ dictionary: {
162
+ // Автоматично згенерувати відсутні переклади для всіх словників
163
+ fill: "./{{fileName}}Filled.content.ts",
164
+ //
165
+ // fill: "/messages/{{locale}}/{{key}}/{{fileName}}.content.json",
166
+ //
167
+ // fill: true, // автоматично згенерувати відсутні переклади для всіх словників, як при використанні "./{{fileName}}.content.json"
168
+ //
169
+ // fill: {
170
+ // en: "./{{fileName}}.en.content.json",
171
+ // fr: "./{{fileName}}.fr.content.json",
172
+ // es: "./{{fileName}}.es.content.json",
173
+ // },
174
+ },
175
+ };
176
+
177
+ export default config;
178
+ ```
179
+
180
+ Ви все ще можете тонко налаштувати для кожного словника, використовуючи поле `fill` у файлах контенту. Intlayer спочатку врахує конфігурацію для конкретного словника, а потім відкотиться до глобальної конфігурації.
181
+
182
+ ## Формат автозаповнених файлів
183
+
184
+ Рекомендований формат для автозаповнених файлів декларацій — **JSON**, оскільки це допомагає уникнути обмежень форматування. Однак Intlayer також підтримує `.ts`, `.js`, `.mjs`, `.cjs` та інші формати.
185
+
186
+ ```ts fileName="src/components/example/example.content.ts"
187
+ const exampleContent = {
188
+ key: "example",
189
+ fill: "./example.filled.content.ts",
190
+ content: {
191
+ // Ваш контент
192
+ },
193
+ };
194
+ ```
195
+
196
+ Це згенерує файл за шляхом:
197
+
198
+ ```
199
+ src/components/example/example.filled.content.ts
200
+ ```
201
+
202
+ > Генерація `.js`, `.ts` та схожих файлів працює таким чином:
203
+ >
204
+ > - Якщо файл вже існує, Intlayer розпарсить його, використовуючи AST (Abstract Syntax Tree), щоб знайти кожне поле та вставити будь-які відсутні переклади.
205
+ > - Якщо файл не існує, Intlayer згенерує його, використовуючи шаблон файлу декларації контенту за замовчуванням.
206
+
207
+ ## Абсолютні шляхи
208
+
209
+ Поле `fill` також підтримує абсолютні шляхи.
210
+
211
+ ```ts fileName="src/components/example/example.content.ts"
212
+ const exampleContent = {
213
+ key: "example",
214
+ fill: "/messages/example.content.json",
215
+ content: {
216
+ // Ваш контент
217
+ },
218
+ };
219
+ ```
220
+
221
+ Це згенерує файл за шляхом:
222
+
223
+ ```
224
+ /messages/example.content.json
225
+ ```
226
+
227
+ ## Автогенерація файлів декларацій контенту для кожної локалі
228
+
229
+ Поле `fill` також підтримує генерацію **файлів декларацій контенту для кожної локалі**.
230
+
231
+ ```ts fileName="src/components/example/example.content.ts"
232
+ const exampleContent = {
233
+ key: "example",
234
+ fill: {
235
+ fr: "./example.fr.content.json",
236
+ es: "./example.es.content.json",
237
+ },
238
+ content: {
239
+ // Ваш контент
240
+ },
241
+ };
242
+ ```
243
+
244
+ Це згенерує два окремі файли:
245
+
246
+ - `src/components/example/example.fr.content.json`
247
+ - `src/components/example/example.es.content.json`
248
+
249
+ > У цьому випадку, якщо об'єкт не містить усіх локалей, Intlayer пропустить генерацію решти локалей.
250
+
251
+ ## Фільтрація автозаповнення для певної локалі
252
+
253
+ Використання об'єкта у полі `fill` дозволяє застосовувати фільтри та генерувати лише файли для певних локалей.
254
+
255
+ ```ts fileName="src/components/example/example.content.ts"
256
+ const exampleContent = {
257
+ key: "example",
258
+ fill: {
259
+ fr: "./example.fr.content.json",
260
+ },
261
+ content: {
262
+ // Ваш контент
263
+ },
264
+ };
265
+ ```
266
+
267
+ Це згенерує лише файл перекладу французькою.
268
+
269
+ ## Змінні шляху
270
+
271
+ Ви можете використовувати змінні всередині шляху `fill`, щоб динамічно формувати цільові шляхи для згенерованих файлів.
272
+
273
+ **Доступні змінні:**
274
+
275
+ - `{{locale}}` – код локалі (наприклад `fr`, `es`)
276
+ - `{{fileName}}` – ім'я файлу (наприклад `index`)
277
+ - `{{key}}` – ключ словника (наприклад `example`)
278
+
279
+ ```ts fileName="src/components/example/index.content.ts"
280
+ const exampleContent = {
281
+ key: "example",
282
+ fill: "/messages/{{locale}}/{{key}}.content.json",
283
+ content: {
284
+ // Ваш вміст
285
+ },
286
+ };
287
+ ```
288
+
289
+ Це згенерує:
290
+
291
+ - `/messages/fr/example.content.json`
292
+ - `/messages/es/example.content.json`
293
+
294
+ ```ts fileName="src/components/example/index.content.ts"
295
+ const exampleContent = {
296
+ key: "example",
297
+ fill: "./{{fileName}}.content.json",
298
+ content: {
299
+ // Ваш вміст
300
+ },
301
+ };
302
+ ```
303
+
304
+ Це згенерує:
305
+
306
+ /// `./index.content.json`
307
+ /// `./index.content.json`