@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,595 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2025-10-14
4
+ title: Форматери
5
+ description: Засоби форматування, орієнтовані на локаль, на основі Intl для чисел, відсотків, валют, дат, відносного часу, одиниць та компактного представлення. Містить кешований хелпер Intl.
6
+ keywords:
7
+ - Форматери
8
+ - Intl
9
+ - Числа
10
+ - Валюта
11
+ - Відсотки
12
+ - Дати
13
+ - Відносний час
14
+ - Одиниці
15
+ - Компактне представлення
16
+ - Список
17
+ - Інтернаціоналізація
18
+ slugs:
19
+ - doc
20
+ - formatters
21
+ history:
22
+ - version: 6.2.0
23
+ date: 2025-10-14
24
+ changes: Видалено getIntlayerAsync з форматерів
25
+ - version: 5.8.0
26
+ date: 2025-08-20
27
+ changes: Додано форматери для Vue
28
+ - version: 5.8.0
29
+ date: 2025-08-18
30
+ changes: Додано документацію щодо форматерів
31
+ - version: 5.8.0
32
+ date: 2025-08-20
33
+ changes: Додано документацію для форматера списків
34
+ - version: 5.8.0
35
+ date: 2025-08-20
36
+ changes: Додано додаткові утиліти Intl (DisplayNames, Collator, PluralRules)
37
+ - version: 5.8.0
38
+ date: 2025-08-20
39
+ changes: Додано утиліти для локалі (getLocaleName, getLocaleLang, getLocaleFromPath тощо)
40
+ - version: 5.8.0
41
+ date: 2025-08-20
42
+ changes: Додано утиліти обробки контенту (getContent, getTranslation, getIntlayer тощо)
43
+ ---
44
+
45
+ # Форматери Intlayer
46
+
47
+ ## Зміст
48
+
49
+ <TOC/>
50
+
51
+ ## Огляд
52
+
53
+ Intlayer надає набір легких хелперів, побудованих поверх рідних API `Intl`, а також кешований обгорток `Intl`, щоб уникнути повторного створення важких форматерів. Ці утиліти повністю враховують локаль і можуть використовуватися з основного пакета `intlayer`.
54
+
55
+ ### Імпорт
56
+
57
+ ```ts
58
+ import {
59
+ Intl,
60
+ number,
61
+ percentage,
62
+ currency,
63
+ date,
64
+ relativeTime,
65
+ units,
66
+ compact,
67
+ list,
68
+ getLocaleName,
69
+ getLocaleLang,
70
+ getLocaleFromPath,
71
+ getPathWithoutLocale,
72
+ getLocalizedUrl,
73
+ getHTMLTextDir,
74
+ getContent,
75
+ getTranslation,
76
+ getIntlayer,
77
+ } from "intlayer";
78
+ ```
79
+
80
+ If you are using React, hooks are also available; see `react-intlayer/format`.
81
+
82
+ ## Cached Intl
83
+
84
+ The exported `Intl` is a thin, cached wrapper around the global `Intl`. It memoizes instances of `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator`, and `PluralRules`, which avoids rebuilding the same formatter repeatedly.
85
+
86
+ Because formatter construction is relatively expensive, this caching improves performance without changing behavior. The wrapper exposes the same API as the native `Intl`, so usage is identical.
87
+
88
+ - Кешування здійснюється на рівні процесу й є прозорим для викликачів.
89
+
90
+ > Якщо `Intl.DisplayNames` недоступний у середовищі, виводиться одне попередження лише для розробників (розгляньте можливість поліфілу).
91
+
92
+ Приклади:
93
+
94
+ ```ts
95
+ import { Intl } from "intlayer";
96
+
97
+ // Форматування чисел
98
+ const numberFormat = new Intl.NumberFormat("en-GB", {
99
+ style: "currency",
100
+ currency: "GBP",
101
+ });
102
+ numberFormat.format(1234.5); // "£1,234.50"
103
+
104
+ // Відображувані назви мов, регіонів тощо
105
+ const displayNames = new Intl.DisplayNames("fr", { type: "language" });
106
+ displayNames.of("en"); // "anglais"
107
+
108
+ // Порівняння рядків для сортування
109
+ const collator = new Intl.Collator("fr", { sensitivity: "base" });
110
+ collator.compare("é", "e"); // 0 (рівні)
111
+
112
+ // Правила множини
113
+ const pluralRules = new Intl.PluralRules("fr");
114
+ pluralRules.select(1); // "one"
115
+ pluralRules.select(2); // "інше"
116
+ ```
117
+
118
+ ## Додаткові утиліти Intl
119
+
120
+ Окрім допоміжних форматерів, ви також можете безпосередньо використовувати кешований обгорток Intl для інших можливостей Intl:
121
+
122
+ ### `Intl.DisplayNames`
123
+
124
+ Для локалізованих назв мов, регіонів, валют та писемностей:
125
+
126
+ ```ts
127
+ import { Intl } from "intlayer";
128
+
129
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
130
+ languageNames.of("fr"); // "французька"
131
+
132
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
133
+ regionNames.of("US"); // "Сполучені Штати"
134
+ ```
135
+
136
+ ### `Intl.Collator`
137
+
138
+ Для порівняння рядків та сортування з урахуванням локалі:
139
+
140
+ ```ts
141
+ import { Intl } from "intlayer";
142
+
143
+ const collator = new Intl.Collator("de", {
144
+ sensitivity: "base",
145
+ numeric: true,
146
+ });
147
+
148
+ const words = ["äpfel", "zebra", "100", "20"];
149
+ words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
150
+ ```
151
+
152
+ ### `Intl.PluralRules`
153
+
154
+ Для визначення форм множини в різних локалях:
155
+
156
+ ```ts
157
+ import { Intl } from "intlayer";
158
+
159
+ const pluralRules = new Intl.PluralRules("ar");
160
+ pluralRules.select(0); // "нуль"
161
+ pluralRules.select(1); // "один"
162
+ pluralRules.select(2); // "два"
163
+ pluralRules.select(3); // "кілька"
164
+ pluralRules.select(11); // "багато"
165
+ ```
166
+
167
+ ## Утиліти локалей
168
+
169
+ ### `getLocaleName(displayLocale, targetLocale?)`
170
+
171
+ Отримує локалізовану назву локалі в іншій локалі:
172
+
173
+ ```ts
174
+ import { getLocaleName } from "intlayer";
175
+
176
+ getLocaleName("fr", "en"); // англійською: "French"
177
+ getLocaleName("en", "fr"); // французькою: "anglais"
178
+ getLocaleName("de", "es"); // іспанською: "alemán"
179
+ ```
180
+
181
+ - **displayLocale**: Локаль, для якої потрібно отримати назву
182
+ - **targetLocale**: Локаль, в якій відображається назва (за замовчуванням displayLocale)
183
+
184
+ ### `getLocaleLang(locale?)`
185
+
186
+ Витягує код мови з рядка локалі:
187
+
188
+ ```ts
189
+ import { getLocaleLang } from "intlayer";
190
+
191
+ getLocaleLang("en-US"); // "en"
192
+ getLocaleLang("fr-CA"); // "fr"
193
+ getLocaleLang("de"); // "de"
194
+ ```
195
+
196
+ - **locale**: Локаль, з якої потрібно витягти код мови (за замовчуванням поточна локаль)
197
+
198
+ ### `getLocaleFromPath(inputUrl)`
199
+
200
+ Витягує сегмент локалі з URL або шляху:
201
+
202
+ ```ts
203
+ import { getLocaleFromPath } from "intlayer";
204
+
205
+ getLocaleFromPath("/en/dashboard"); // "en"
206
+ getLocaleFromPath("/fr/dashboard"); // "fr"
207
+ getLocaleFromPath("/dashboard"); // "en" (default locale)
208
+ getLocaleFromPath("https://example.com/es/about"); // "es"
209
+ ```
210
+
211
+ - **inputUrl**: Повний рядок URL або шлях (pathname) для обробки
212
+ - **returns**: Виявлена локаль або локаль за замовчуванням, якщо локаль не знайдена
213
+
214
+ ### `getPathWithoutLocale(inputUrl, locales?)`
215
+
216
+ Видаляє сегмент локалі з URL або шляху (pathname):
217
+
218
+ ```ts
219
+ import { getPathWithoutLocale } from "intlayer";
220
+
221
+ getPathWithoutLocale("/en/dashboard"); // "/dashboard"
222
+ getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
223
+ getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
224
+ ```
225
+
226
+ - **inputUrl**: Повний рядок URL або шлях (pathname) для обробки
227
+ - **locales**: Необов'язковий масив підтримуваних локалей (за замовчуванням використовується сконфігурований список локалей)
228
+ - **returns**: URL без сегменту локалі
229
+
230
+ ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
231
+
232
+ Генерує локалізований URL для поточної локалі:
233
+
234
+ ```ts
235
+ import { getLocalizedUrl } from "intlayer";
236
+
237
+ getLocalizedUrl("/about", "fr", ["en", "fr"], "en", false); // "/fr/about"
238
+ getLocalizedUrl("/about", "en", ["en", "fr"], "en", false); // "/about"
239
+ getLocalizedUrl("https://example.com/about", "fr", ["en", "fr"], "en", true); // "https://example.com/fr/about"
240
+ ```
241
+
242
+ - **url**: Початковий URL для локалізації
243
+ - **currentLocale**: Поточна локаль
244
+ - **locales**: Необов'язковий масив підтримуваних локалей (за замовчуванням — сконфігуровані локалі)
245
+ - **defaultLocale**: Необов'язкова локаль за замовчуванням (за замовчуванням — сконфігурована локаль за замовчуванням)
246
+ - **prefixDefault**: Чи додавати префікс для локалі за замовчуванням (за замовчуванням — сконфігуроване значення)
247
+
248
+ ### `getHTMLTextDir(locale?)`
249
+
250
+ Повертає напрямок тексту для локалі:
251
+
252
+ ```ts
253
+ import { getHTMLTextDir } from "intlayer";
254
+
255
+ getHTMLTextDir("en-US"); // повертає "ltr"
256
+ getHTMLTextDir("ar"); // повертає "rtl"
257
+ getHTMLTextDir("he"); // повертає "rtl"
258
+ ```
259
+
260
+ - **locale**: Локаль, для якої потрібно отримати напрямок тексту (за замовчуванням — поточна локаль)
261
+ - **повертає**: `"ltr"`, `"rtl"`, або `"auto"`
262
+
263
+ ## Утиліти обробки контенту
264
+
265
+ ### `getContent(node, nodeProps, locale?)`
266
+
267
+ Перетворює вузол контенту за допомогою всіх доступних плагінів (translation, enumeration, insertion тощо):
268
+
269
+ ```ts
270
+ import { getContent } from "intlayer";
271
+
272
+ const content = getContent(
273
+ contentNode,
274
+ { dictionaryKey: "common", dictionaryPath: "/path/to/dict" },
275
+ "fr"
276
+ );
277
+ ```
278
+
279
+ - **node**: Вузол контенту, який потрібно перетворити
280
+ - **nodeProps**: Властивості для контексту перетворення
281
+ - **locale**: Необов'язкова локаль (за замовчуванням використовується налаштована локаль)
282
+
283
+ ### `getTranslation(languageContent, locale?, fallback?)`
284
+
285
+ Витягує вміст для конкретної локалі з об'єкта мовного вмісту:
286
+
287
+ ```ts
288
+ import { getTranslation } from "intlayer";
289
+
290
+ const content = getTranslation(
291
+ {
292
+ en: "Hello",
293
+ fr: "Bonjour",
294
+ de: "Hallo",
295
+ },
296
+ "fr",
297
+ true
298
+ ); // "Bonjour"
299
+ ```
300
+
301
+ - **languageContent**: Об'єкт, що відображає локалі на відповідний вміст
302
+ - **locale**: Цільова локаль (за замовчуванням використовується налаштована локаль)
303
+ - **fallback**: Чи виконувати відкат до локалі за замовчуванням (за замовчуванням true)
304
+
305
+ ### `getIntlayer(dictionaryKey, locale?, plugins?)`
306
+
307
+ Отримує та трансформує вміст із словника за ключем:
308
+
309
+ ```ts
310
+ import { getIntlayer } from "intlayer";
311
+
312
+ const content = getIntlayer("common", "fr");
313
+ const nestedContent = getIntlayer("common", "fr", customPlugins);
314
+ ```
315
+
316
+ - **dictionaryKey**: Ключ словника, який необхідно отримати
317
+ - **locale**: Необов'язкова локаль (за замовчуванням — налаштована локаль за замовчуванням)
318
+ - **plugins**: Необов'язковий масив кастомних плагінів трансформації
319
+
320
+ ## Форматувачі
321
+
322
+ Усі допоміжні функції нижче експортуються з `intlayer`.
323
+
324
+ ### `number(value, options?)`
325
+
326
+ Форматує числове значення з урахуванням локалі для групування та десяткових знаків.
327
+
328
+ - **value**: `number | string`
329
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
330
+
331
+ Examples:
332
+
333
+ ```ts
334
+ import { number } from "intlayer";
335
+
336
+ number(123456.789); // "123,456.789" (в en-US)
337
+ number("1000000", { locale: "fr" }); // "1 000 000"
338
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
339
+ ```
340
+
341
+ ### `percentage(value, options?)`
342
+
343
+ Форматує число у рядок відсотків.
344
+
345
+ Поведінка: значення більше за 1 інтерпретується як повні відсотки та нормалізується (наприклад, `25` → `25%`, `0.25` → `25%`).
346
+
347
+ - **value**: `number | string`
348
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
349
+
350
+ Приклади:
351
+
352
+ ```ts
353
+ import { percentage } from "intlayer";
354
+
355
+ percentage(0.25); // "25%"
356
+ percentage(25); // "25%"
357
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
358
+ ```
359
+
360
+ ### `currency(value, options?)`
361
+
362
+ Форматує значення як локалізовану валюту. За замовчуванням `USD` з двома знаками після коми.
363
+
364
+ - **value**: `number | string`
365
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
366
+ - Типові поля: `currency` (наприклад, `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
367
+
368
+ Приклади:
369
+
370
+ ```ts
371
+ import { currency } from "intlayer";
372
+
373
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
374
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
375
+ ```
376
+
377
+ ### `date(date, optionsOrPreset?)`
378
+
379
+ Форматує значення дати/часу за допомогою `Intl.DateTimeFormat`.
380
+
381
+ - **date**: `Date | string | number`
382
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` або один із пресетів:
383
+ - Presets: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
384
+
385
+ Приклади:
386
+
387
+ ```ts
388
+ import { date } from "intlayer";
389
+
390
+ date(new Date(), "short"); // наприклад: "08/02/25, 14:30"
391
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
392
+ ```
393
+
394
+ ### `relativeTime(from, to = new Date(), options?)`
395
+
396
+ Форматує відносний час між двома моментами за допомогою `Intl.RelativeTimeFormat`.
397
+
398
+ - Передайте "now" як перший аргумент, а цільовий — як другий, щоб отримати природне формулювання.
399
+ - **from**: `Date | string | number`
400
+ - **to**: `Date | string | number` (за замовчуванням — `new Date()`)
401
+ - **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
402
+ - За замовчуванням `unit` — `"second"`.
403
+
404
+ Приклади:
405
+
406
+ ```ts
407
+ import { relativeTime } from "intlayer";
408
+
409
+ const now = new Date();
410
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
411
+ relativeTime(now, in3Days, { unit: "day" }); // "через 3 дні"
412
+
413
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
414
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 години тому"
415
+ ```
416
+
417
+ ### `units(value, options?)`
418
+
419
+ Форматує числове значення як локалізований рядок одиниці виміру, використовуючи `Intl.NumberFormat` зі `style: 'unit'`.
420
+
421
+ - **value**: `number | string`
422
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
423
+ - Загальні поля: `unit` (наприклад, `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
424
+ - За замовчуванням: `unit: 'day'`, `unitDisplay: 'short'`, `useGrouping: false`
425
+
426
+ Приклади:
427
+
428
+ ```ts
429
+ import { units } from "intlayer";
430
+
431
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 кілометрів"
432
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (залежить від локалі)
433
+ ```
434
+
435
+ ### `compact(value, options?)`
436
+
437
+ Форматує число з використанням компактної нотації (наприклад, `1.2K`, `1M`).
438
+
439
+ - **value**: `number | string`
440
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (використовує `notation: 'compact'` під капотом)
441
+
442
+ Приклади:
443
+
444
+ ```ts
445
+ import { compact } from "intlayer";
446
+
447
+ compact(1200); // результат: "1.2K"
448
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // результат: "1 million"
449
+ ```
450
+
451
+ ### `list(values, options?)`
452
+
453
+ Форматує масив значень у локалізований рядок списку за допомогою `Intl.ListFormat`.
454
+
455
+ - **values**: `(string | number)[]`
456
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
457
+ - Загальні поля: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
458
+ - За замовчуванням: `type: 'conjunction'`, `style: 'long'`
459
+
460
+ Приклади:
461
+
462
+ ```ts
463
+ import { list } from "intlayer";
464
+
465
+ list(["apple", "banana", "orange"]); // результат: "apple, banana, and orange"
466
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
467
+ list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
468
+ ```
469
+
470
+ ## Примітки
471
+
472
+ - Усі утиліти приймають вхідні значення як `string`; всередині вони приводяться до чисел або дат.
473
+ - Якщо локаль не вказана, за замовчуванням використовується налаштована вами `internationalization.defaultLocale`.
474
+ - Ці утиліти — тонкі обгортки; для просунутого форматування передавайте стандартні опції `Intl`.
475
+
476
+ ## Точки входу та повторні експорти (`@index.ts`)
477
+
478
+ Форматери містяться в core-пакеті і реекспортуються з пакетів вищого рівня, щоб зробити імпорти зручними в різних середовищах виконання:
479
+
480
+ Приклади:
481
+
482
+ ```ts
483
+ // Код додатку (рекомендовано)
484
+ import {
485
+ number,
486
+ currency,
487
+ date,
488
+ relativeTime,
489
+ units,
490
+ compact,
491
+ list,
492
+ Intl,
493
+ getLocaleName,
494
+ getLocaleLang,
495
+ getLocaleFromPath,
496
+ getPathWithoutLocale,
497
+ getLocalizedUrl,
498
+ getHTMLTextDir,
499
+ getContent,
500
+ getTranslation,
501
+ getIntlayer,
502
+ } from "intlayer";
503
+ ```
504
+
505
+ ### React
506
+
507
+ Клієнтські компоненти:
508
+
509
+ ```tsx
510
+ import {
511
+ useNumber,
512
+ useCurrency,
513
+ useDate,
514
+ usePercentage,
515
+ useCompact,
516
+ useList,
517
+ useRelativeTime,
518
+ useUnit,
519
+ } from "react-intlayer/format";
520
+ // або в Preact-додатках
521
+ // "preact-intlayer/format";
522
+ // або в Next.js-додатках
523
+ // "next-intlayer/client/format";
524
+
525
+ const MyComponent = () => {
526
+ const number = useNumber();
527
+ const currency = useCurrency();
528
+ const date = useDate();
529
+ const percentage = usePercentage();
530
+ const compact = useCompact();
531
+ const list = useList();
532
+ const relativeTime = useRelativeTime();
533
+ const unit = useUnit();
534
+
535
+ return (
536
+ <div>
537
+ <p>{number(123456.789)}</p>
538
+ <p>{currency(1234.5, { currency: "EUR" })}</p>
539
+ <p>{date(new Date(), "short")}</p>
540
+ <p>{percentage(0.25)}</p>
541
+ <p>{compact(1200)}</p>
542
+ <p>{list(["apple", "banana", "orange"])}</p>
543
+ <p>{relativeTime(new Date(), new Date() + 1000)}</p>
544
+ <p>{unit(123456.789, { unit: "kilometer" })}</p>
545
+ </div>
546
+ );
547
+ };
548
+ ```
549
+
550
+ Серверні компоненти (або React Server runtime):
551
+
552
+ ```ts
553
+ import {
554
+ useNumber,
555
+ useCurrency,
556
+ useDate,
557
+ usePercentage,
558
+ useCompact,
559
+ useList,
560
+ useRelativeTime,
561
+ useUnit,
562
+ } from "react-intlayer/server/format";
563
+ // або в додатках Next.js
564
+ import {
565
+ useNumber,
566
+ useCurrency,
567
+ useDate,
568
+ usePercentage,
569
+ useCompact,
570
+ useList,
571
+ useRelativeTime,
572
+ useUnit,
573
+ } from "next-intlayer/server/format";
574
+ ```
575
+
576
+ > Ці хуки братимуть до уваги локаль із `IntlayerProvider` або `IntlayerServerProvider`
577
+
578
+ ### Vue
579
+
580
+ Клієнтські компоненти:
581
+
582
+ ```ts
583
+ import {
584
+ useNumber,
585
+ useCurrency,
586
+ useDate,
587
+ usePercentage,
588
+ useCompact,
589
+ useList,
590
+ useRelativeTime,
591
+ useUnit,
592
+ } from "vue-intlayer/format";
593
+ ```
594
+
595
+ > Ці composables братимуть до уваги локаль із ін'єктованого `IntlayerProvider`