@intlayer/docs 9.1.3 → 9.2.0

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 (415) hide show
  1. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  2. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  3. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  4. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  5. package/blog/fr/i18n_meaning.md +7 -1
  6. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  7. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  9. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  11. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  12. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  13. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  14. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  15. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  16. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  17. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  18. package/blog/tr/intlayer_with_react-intl.md +3 -1
  19. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  20. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  22. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  23. package/blog/zh/intlayer_with_i18next.md +87 -28
  24. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  25. package/blog/zh/intlayer_with_next-intl.md +88 -28
  26. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  27. package/blog/zh/intlayer_with_react-intl.md +88 -27
  28. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  29. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  30. package/dist/cjs/generated/blog.entry.cjs +27 -27
  31. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  32. package/dist/cjs/generated/docs.entry.cjs +234 -214
  33. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  34. package/dist/cjs/generated/frequentQuestions.entry.cjs +17 -17
  35. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  36. package/dist/cjs/generated/legal.entry.cjs +2 -2
  37. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  38. package/dist/esm/generated/blog.entry.mjs +27 -27
  39. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +234 -214
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/esm/generated/frequentQuestions.entry.mjs +17 -17
  43. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  44. package/dist/esm/generated/legal.entry.mjs +2 -2
  45. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  46. package/dist/types/generated/docs.entry.d.ts +1 -0
  47. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  48. package/docs/ar/analytics.md +222 -0
  49. package/docs/ar/autoFill.md +28 -9
  50. package/docs/ar/configuration.md +25 -8
  51. package/docs/ar/dictionary/file.md +3 -1
  52. package/docs/ar/dictionary/nesting.md +47 -30
  53. package/docs/ar/formatters.md +148 -193
  54. package/docs/ar/intlayer_CMS.md +152 -0
  55. package/docs/ar/intlayer_with_angular_21.md +9 -9
  56. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  57. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  58. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  59. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  60. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  61. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  62. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  63. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  64. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  65. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  66. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  67. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  68. package/docs/ar/releases/v9.md +0 -37
  69. package/docs/ar/self_hosting.md +46 -49
  70. package/docs/bn/configuration.md +25 -8
  71. package/docs/bn/intlayer_with_angular_21.md +9 -9
  72. package/docs/cs/configuration.md +25 -8
  73. package/docs/cs/intlayer_with_angular_21.md +9 -9
  74. package/docs/de/analytics.md +222 -0
  75. package/docs/de/autoFill.md +28 -9
  76. package/docs/de/configuration.md +25 -8
  77. package/docs/de/dictionary/file.md +3 -1
  78. package/docs/de/dictionary/nesting.md +47 -31
  79. package/docs/de/formatters.md +208 -334
  80. package/docs/de/intlayer_CMS.md +66 -15
  81. package/docs/de/intlayer_with_angular_21.md +9 -9
  82. package/docs/de/intlayer_with_nestjs.md +11 -7
  83. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  84. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  85. package/docs/de/intlayer_with_solid_start.md +1078 -0
  86. package/docs/de/intlayer_with_vite+vue.md +1 -3
  87. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  88. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  89. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  90. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  91. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  92. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  93. package/docs/de/releases/v9.md +0 -15
  94. package/docs/de/self_hosting.md +46 -50
  95. package/docs/en/cli/doc-review.md +13 -2
  96. package/docs/en/configuration.md +24 -15
  97. package/docs/en/intlayer_with_angular_21.md +9 -9
  98. package/docs/en/intlayer_with_solid_start.md +1091 -0
  99. package/docs/en/intlayer_with_vite+solid.md +12 -0
  100. package/docs/en-GB/analytics.md +222 -0
  101. package/docs/en-GB/autoFill.md +26 -7
  102. package/docs/en-GB/configuration.md +25 -8
  103. package/docs/en-GB/dictionary/file.md +2 -0
  104. package/docs/en-GB/dictionary/nesting.md +64 -205
  105. package/docs/en-GB/formatters.md +146 -181
  106. package/docs/en-GB/intlayer_CMS.md +152 -0
  107. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  108. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  109. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  110. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  111. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  112. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  113. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  114. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  115. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  116. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  117. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  118. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  119. package/docs/en-GB/self_hosting.md +60 -49
  120. package/docs/es/analytics.md +222 -0
  121. package/docs/es/autoFill.md +28 -9
  122. package/docs/es/configuration.md +24 -7
  123. package/docs/es/dictionary/file.md +3 -1
  124. package/docs/es/dictionary/nesting.md +47 -30
  125. package/docs/es/formatters.md +114 -168
  126. package/docs/es/intlayer_CMS.md +35 -10
  127. package/docs/es/intlayer_with_angular_21.md +9 -9
  128. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  129. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  130. package/docs/es/intlayer_with_solid_start.md +1078 -0
  131. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  132. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  133. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  134. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  135. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  136. package/docs/es/releases/v9.md +0 -15
  137. package/docs/es/self_hosting.md +46 -49
  138. package/docs/fr/analytics.md +222 -0
  139. package/docs/fr/autoFill.md +27 -8
  140. package/docs/fr/configuration.md +25 -8
  141. package/docs/fr/dictionary/file.md +2 -0
  142. package/docs/fr/dictionary/nesting.md +37 -184
  143. package/docs/fr/formatters.md +95 -236
  144. package/docs/fr/intlayer_CMS.md +66 -15
  145. package/docs/fr/intlayer_with_angular_21.md +9 -9
  146. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  147. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  148. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  149. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  150. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  151. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/fr/releases/v9.md +0 -15
  155. package/docs/fr/self_hosting.md +46 -49
  156. package/docs/hi/analytics.md +222 -0
  157. package/docs/hi/autoFill.md +28 -9
  158. package/docs/hi/configuration.md +25 -8
  159. package/docs/hi/dictionary/file.md +3 -1
  160. package/docs/hi/dictionary/nesting.md +47 -30
  161. package/docs/hi/formatters.md +233 -334
  162. package/docs/hi/how_works_intlayer.md +3 -1
  163. package/docs/hi/intlayer_CMS.md +152 -0
  164. package/docs/hi/intlayer_with_angular_21.md +9 -9
  165. package/docs/hi/intlayer_with_nestjs.md +11 -7
  166. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  167. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  168. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  169. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  170. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  171. package/docs/hi/intlayer_with_vite+react.md +48 -41
  172. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  173. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  174. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  175. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  176. package/docs/hi/packages/next-intlayer/t.md +33 -1
  177. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  178. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  179. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  180. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  181. package/docs/hi/plugins/sync-json.md +9 -9
  182. package/docs/hi/releases/v9.md +0 -15
  183. package/docs/hi/self_hosting.md +38 -51
  184. package/docs/id/analytics.md +223 -0
  185. package/docs/id/configuration.md +25 -8
  186. package/docs/id/dictionary/nesting.md +37 -184
  187. package/docs/id/formatters.md +208 -305
  188. package/docs/id/intlayer_CMS.md +164 -0
  189. package/docs/id/intlayer_with_angular_21.md +9 -9
  190. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  191. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  192. package/docs/id/intlayer_with_solid_start.md +1078 -0
  193. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  194. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  195. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  196. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  197. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  198. package/docs/id/releases/v9.md +12 -0
  199. package/docs/id/self_hosting.md +61 -50
  200. package/docs/it/analytics.md +222 -0
  201. package/docs/it/autoFill.md +27 -8
  202. package/docs/it/configuration.md +25 -8
  203. package/docs/it/dictionary/file.md +3 -1
  204. package/docs/it/dictionary/nesting.md +47 -30
  205. package/docs/it/formatters.md +114 -168
  206. package/docs/it/intlayer_CMS.md +66 -15
  207. package/docs/it/intlayer_with_angular_21.md +9 -9
  208. package/docs/it/intlayer_with_nestjs.md +11 -7
  209. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  210. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  211. package/docs/it/intlayer_with_solid_start.md +1078 -0
  212. package/docs/it/intlayer_with_vite+vue.md +1 -3
  213. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  214. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  215. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  216. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  217. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  218. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  219. package/docs/it/releases/v9.md +0 -15
  220. package/docs/it/self_hosting.md +60 -49
  221. package/docs/ja/analytics.md +222 -0
  222. package/docs/ja/autoFill.md +28 -9
  223. package/docs/ja/configuration.md +25 -8
  224. package/docs/ja/dictionary/content_file.md +15 -7
  225. package/docs/ja/dictionary/file.md +3 -1
  226. package/docs/ja/dictionary/nesting.md +47 -30
  227. package/docs/ja/formatters.md +133 -187
  228. package/docs/ja/intlayer_visual_editor.md +3 -1
  229. package/docs/ja/intlayer_with_angular_21.md +6 -6
  230. package/docs/ja/intlayer_with_nestjs.md +2 -12
  231. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  232. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  233. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  234. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  235. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  236. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  237. package/docs/ja/mcp_server.md +3 -9
  238. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  239. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  240. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  241. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  242. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  243. package/docs/ja/releases/v9.md +12 -0
  244. package/docs/ja/self_hosting.md +46 -50
  245. package/docs/ko/analytics.md +222 -0
  246. package/docs/ko/autoFill.md +28 -9
  247. package/docs/ko/configuration.md +25 -8
  248. package/docs/ko/dictionary/file.md +3 -1
  249. package/docs/ko/dictionary/nesting.md +47 -30
  250. package/docs/ko/formatters.md +133 -187
  251. package/docs/ko/intlayer_with_angular_21.md +9 -9
  252. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  253. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  256. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  257. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  258. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  259. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  260. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  261. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  264. package/docs/ko/releases/v9.md +12 -0
  265. package/docs/ko/self_hosting.md +60 -49
  266. package/docs/nl/configuration.md +25 -8
  267. package/docs/nl/intlayer_with_angular_21.md +9 -9
  268. package/docs/pl/analytics.md +220 -0
  269. package/docs/pl/configuration.md +25 -8
  270. package/docs/pl/dictionary/nesting.md +47 -30
  271. package/docs/pl/formatters.md +208 -305
  272. package/docs/pl/intlayer_CMS.md +152 -0
  273. package/docs/pl/intlayer_with_angular_21.md +9 -9
  274. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  275. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  276. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  277. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  278. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  279. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  280. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  281. package/docs/pl/releases/v9.md +0 -15
  282. package/docs/pl/self_hosting.md +60 -49
  283. package/docs/pt/analytics.md +222 -0
  284. package/docs/pt/configuration.md +25 -8
  285. package/docs/pt/dictionary/file.md +3 -1
  286. package/docs/pt/dictionary/nesting.md +47 -30
  287. package/docs/pt/formatters.md +112 -168
  288. package/docs/pt/intlayer_CMS.md +66 -15
  289. package/docs/pt/intlayer_with_angular_21.md +9 -9
  290. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  291. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  292. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  293. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  294. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  295. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  296. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  297. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  298. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  299. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  300. package/docs/pt/releases/v9.md +0 -15
  301. package/docs/pt/self_hosting.md +60 -49
  302. package/docs/ru/analytics.md +222 -0
  303. package/docs/ru/autoFill.md +27 -8
  304. package/docs/ru/configuration.md +25 -8
  305. package/docs/ru/dictionary/file.md +3 -1
  306. package/docs/ru/dictionary/nesting.md +64 -205
  307. package/docs/ru/formatters.md +108 -128
  308. package/docs/ru/intlayer_with_angular_21.md +9 -9
  309. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  310. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  311. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  312. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  313. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  314. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  315. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  316. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  317. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  318. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  319. package/docs/ru/releases/v9.md +0 -15
  320. package/docs/ru/self_hosting.md +60 -49
  321. package/docs/tr/analytics.md +222 -0
  322. package/docs/tr/autoFill.md +28 -9
  323. package/docs/tr/configuration.md +25 -8
  324. package/docs/tr/dictionary/file.md +2 -0
  325. package/docs/tr/dictionary/nesting.md +47 -30
  326. package/docs/tr/formatters.md +144 -190
  327. package/docs/tr/intlayer_CMS.md +152 -0
  328. package/docs/tr/intlayer_with_angular_21.md +9 -9
  329. package/docs/tr/intlayer_with_nestjs.md +2 -12
  330. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  331. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  332. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  333. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  334. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  335. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  336. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  337. package/docs/tr/self_hosting.md +47 -50
  338. package/docs/uk/analytics.md +222 -0
  339. package/docs/uk/configuration.md +25 -8
  340. package/docs/uk/dictionary/nesting.md +47 -30
  341. package/docs/uk/formatters.md +128 -185
  342. package/docs/uk/intlayer_CMS.md +152 -0
  343. package/docs/uk/intlayer_with_angular_21.md +9 -9
  344. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  345. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  346. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  347. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  348. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  349. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  350. package/docs/uk/releases/v9.md +0 -15
  351. package/docs/uk/self_hosting.md +60 -50
  352. package/docs/ur/configuration.md +25 -8
  353. package/docs/ur/intlayer_with_angular_21.md +9 -9
  354. package/docs/vi/analytics.md +222 -0
  355. package/docs/vi/configuration.md +24 -8
  356. package/docs/vi/dictionary/nesting.md +37 -184
  357. package/docs/vi/formatters.md +208 -309
  358. package/docs/vi/intlayer_CMS.md +164 -0
  359. package/docs/vi/intlayer_with_angular_21.md +9 -9
  360. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  361. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  362. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  363. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  364. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  365. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  366. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  367. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  368. package/docs/vi/plugins/sync-json.md +6 -6
  369. package/docs/vi/releases/v9.md +12 -0
  370. package/docs/vi/self_hosting.md +61 -50
  371. package/docs/zh/CI_CD.md +4 -0
  372. package/docs/zh/analytics.md +222 -0
  373. package/docs/zh/autoFill.md +28 -9
  374. package/docs/zh/configuration.md +24 -8
  375. package/docs/zh/dictionary/file.md +2 -0
  376. package/docs/zh/dictionary/nesting.md +47 -30
  377. package/docs/zh/formatters.md +140 -188
  378. package/docs/zh/intlayer_CMS.md +164 -0
  379. package/docs/zh/intlayer_with_analog.md +193 -3
  380. package/docs/zh/intlayer_with_angular_19.md +272 -3
  381. package/docs/zh/intlayer_with_angular_21.md +7 -7
  382. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  383. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  384. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  385. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  386. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  387. package/docs/zh/intlayer_with_nuxt.md +182 -7
  388. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  389. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  390. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  391. package/docs/zh/intlayer_with_storybook.md +260 -3
  392. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  393. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  394. package/docs/zh/intlayer_with_tanstack.md +731 -20
  395. package/docs/zh/intlayer_with_vanilla.md +314 -4
  396. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  397. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  398. package/docs/zh/intlayer_with_vite+react.md +324 -45
  399. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  400. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  401. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  402. package/docs/zh/mcp_server.md +3 -9
  403. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  404. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  405. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  406. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  407. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  408. package/docs/zh/releases/v9.md +12 -0
  409. package/docs/zh/self_hosting.md +60 -50
  410. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  411. package/package.json +6 -6
  412. package/src/generated/blog.entry.ts +27 -27
  413. package/src/generated/docs.entry.ts +234 -214
  414. package/src/generated/frequentQuestions.entry.ts +17 -17
  415. package/src/generated/legal.entry.ts +2 -2
@@ -68,6 +68,53 @@ export default firstDictionary;
68
68
  }
69
69
  ```
70
70
 
71
+ ### Odwołania się z Nest
72
+
73
+ Teraz utwórz inny moduł zawartości, który używa funkcji `nest` do odwołania się do powyższej zawartości. Możesz odwołać się do całej zawartości lub do określonej wartości zagnieżdżonej:
74
+
75
+ ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
76
+ import { nest, type Dictionary } from "intlayer";
77
+
78
+ const myNestingContent = {
79
+ key: "key_of_my_second_dictionary",
80
+ content: {
81
+ // Odwołanie do całego słownika:
82
+ fullNestedContent: nest("key_of_my_first_dictionary"),
83
+ // Odwołanie do określonej wartości zagnieżdżonej:
84
+ partialNestedContent: nest(
85
+ "key_of_my_first_dictionary",
86
+ "subContent.contentNumber"
87
+ ),
88
+ },
89
+ } satisfies Dictionary;
90
+
91
+ export default myNestingContent;
92
+ ```
93
+
94
+ ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
95
+ {
96
+ "$schema": "https://intlayer.org/schema.json",
97
+ "key": "key_of_my_second_dictionary",
98
+ "content": {
99
+ "fullNestedContent": {
100
+ "nodeType": "nested",
101
+ "nested": {
102
+ "dictionaryKey": "key_of_my_first_dictionary"
103
+ }
104
+ },
105
+ "partialNestedContent": {
106
+ "nodeType": "nested",
107
+ "nested": {
108
+ "dictionaryKey": "key_of_my_first_dictionary",
109
+ "path": "subContent.contentNumber"
110
+ }
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ Jako drugi parametr możesz określić ścieżkę do wartości zagnieżdżonej w ramach tej zawartości. Jeśli nie zostanie podana żadna ścieżka, zwracana jest cała zawartość odwoływanego słownika.
117
+
71
118
  ## Konfiguracja zagnieżdżania
72
119
 
73
120
  <Tabs group="framework">
@@ -262,36 +309,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
262
309
  </Tab>
263
310
  </Tabs>
264
311
 
265
- ## Używanie zagnieżdżenia z React Intlayer
266
-
267
- Aby użyć zagnieżdżonej zawartości w komponencie React, skorzystaj z hooka `useIntlayer` z pakietu `react-intlayer`. Ten hook pobiera odpowiednią zawartość na podstawie podanego klucza. Oto przykład, jak go użyć:
268
-
269
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
270
- import type { FC } from "react";
271
- import { useIntlayer } from "react-intlayer";
272
-
273
- const NestComponent: FC = () => {
274
- const { fullNestedContent, partialNestedContent } = useIntlayer(
275
- "key_of_my_second_dictionary"
276
- );
277
-
278
- return (
279
- <div>
280
- <p>
281
- Full Nested Content: {JSON.stringify(fullNestedContent)}
282
- {/* Wynik: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
283
- </p>
284
- <p>
285
- Częściowa wartość zagnieżdżona: {partialNestedContent}
286
- {/* Wynik: 0 */}
287
- </p>
288
- </div>
289
- );
290
- };
291
-
292
- export default NestComponent;
293
- ```
294
-
295
312
  ## Dodatkowe zasoby
296
313
 
297
314
  Aby uzyskać bardziej szczegółowe informacje na temat konfiguracji i użytkowania, zapoznaj się z następującymi zasobami:
@@ -137,45 +137,40 @@ const MyComponent = () => {
137
137
  };
138
138
  ```
139
139
 
140
- ## Buforowany Intl
140
+ ### Hook `useIntl`
141
141
 
142
- Eksportowany `Intl` to cienkie, buforowane opakowanie wokół globalnego `Intl`. Zapamiętuje instancje `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator` oraz `PluralRules`, co zapobiega wielokrotnemu tworzeniu tego samego formattera.
142
+ Hook `useIntl` zapewnia bezpośredni dostęp do obiektu `Intl` powiązanego z locale'em. Jest to przydatne, gdy potrzebujesz pełnego API `Intl` (np. `DisplayNames`, `Collator`, `PluralRules`) z automatycznym wstrzyknięciem locale'a.
143
143
 
144
- Ponieważ tworzenie formatterów jest stosunkowo kosztowne, to buforowanie poprawia wydajność bez zmiany zachowania. Opakowanie udostępnia ten sam interfejs API co natywny `Intl`, więc sposób użycia jest identyczny.
145
-
146
- - Buforowanie jest na poziomie procesu i jest przezroczyste dla wywołujących.
147
-
148
- > Jeśli `Intl.DisplayNames` nie jest dostępne w środowisku, zostanie wyświetlone jedno ostrzeżenie tylko dla deweloperów (zaleca się użycie polyfill).
149
-
150
- Przykłady:
144
+ ```tsx
145
+ import { useIntl } from "react-intlayer/format";
151
146
 
152
- ```ts
153
- import { Intl } from "intlayer";
147
+ const MyComponent = () => {
148
+ const intl = useIntl(); // używa locale z kontekstu
154
149
 
155
- // Formatowanie liczb
156
- const numberFormat = new Intl.NumberFormat("en-GB", {
157
- style: "currency",
158
- currency: "GBP",
159
- });
160
- numberFormat.format(1234.5); // "£1,234.50"
150
+ // Standardowe API Intl, ale locale jest automatycznie wstrzykiwane, gdy jest undefined
151
+ const formatted = new intl.NumberFormat(undefined, {
152
+ style: "currency",
153
+ currency: "USD",
154
+ }).format(123.45);
161
155
 
162
- // Wyświetlanie nazw języków, regionów itp.
163
- const displayNames = new Intl.DisplayNames("fr", { type: "language" });
164
- displayNames.of("en"); // "anglais"
156
+ // Możesz nadal przesłonić locale, jeśli jest potrzebne
157
+ const date = new intl.DateTimeFormat("fr-FR").format(new Date());
165
158
 
166
- // Sortowanie (kolacja)
167
- const collator = new Intl.Collator("fr", { sensitivity: "base" });
168
- collator.compare("é", "e"); // 0 (równe)
159
+ // Dostęp do innych funkcji Intl
160
+ const displayNames = new intl.DisplayNames(undefined, { type: "language" });
161
+ const languageName = displayNames.of("fr"); // "French" (lub zlokalizowana)
169
162
 
170
- // Reguły liczby mnogiej
171
- const pluralRules = new Intl.PluralRules("fr");
172
- pluralRules.select(1); // "one"
173
- pluralRules.select(2); // "other"
163
+ return (
164
+ <div>
165
+ <p>{formatted}</p>
166
+ <p>{date}</p>
167
+ <p>{languageName}</p>
168
+ </div>
169
+ );
170
+ };
174
171
  ```
175
172
 
176
- ## Dodatkowe narzędzia Intl
177
-
178
- Poza pomocnikami do formatowania, możesz również używać bezpośrednio buforowanego wrappera Intl do innych funkcji Intl:
173
+ ## Vue Formatters
179
174
 
180
175
  ### `Intl.DisplayNames`
181
176
 
@@ -281,6 +276,189 @@ pluralRules.select(3); // "few"
281
276
  pluralRules.select(11); // "many"
282
277
  ```
283
278
 
279
+ ### Funkcje formatujące
280
+
281
+ #### `number(value, options?)`
282
+
283
+ Formatuje wartość numeryczną z uwzględnieniem ustawień lokalnych dla grupowania i separatorów dziesiętnych.
284
+
285
+ - **value**: `number | string`
286
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
287
+
288
+ ```ts
289
+ number(123456.789); // "123,456.789" (in en-US)
290
+ number("1000000", { locale: "fr" }); // "1 000 000"
291
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
292
+ ```
293
+
294
+ #### `percentage(value, options?)`
295
+
296
+ Formatuje liczbę jako ciąg znaków procentowych. Wartości większe niż 1 są normalizowane (np. `25` → `25%`, `0.25` → `25%`).
297
+
298
+ - **value**: `number | string`
299
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
300
+
301
+ ```ts
302
+ percentage(0.25); // "25%"
303
+ percentage(25); // "25%"
304
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
305
+ ```
306
+
307
+ #### `currency(value, options?)`
308
+
309
+ Formatuje wartość jako zlokalizowaną walutę. Domyślnie `USD`.
310
+
311
+ - **value**: `number | string`
312
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
313
+ - Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
314
+
315
+ ```ts
316
+ currency(1234.5, { currency: "EUR" }); // "€1,234.50"
317
+ currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
318
+ ```
319
+
320
+ #### `date(date, optionsOrPreset?)`
321
+
322
+ Formatuje wartość daty/czasu.
323
+
324
+ - **date**: `Date | string | number`
325
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` lub preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
326
+
327
+ ```ts
328
+ date(new Date(), "short"); // np. "08/02/25, 14:30"
329
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
330
+ ```
331
+
332
+ #### `relativeTime(from, to?, options?)`
333
+
334
+ Formatuje czas względny między dwoma momentami.
335
+
336
+ - **from**: `Date | string | number`
337
+ - **to**: `Date | string | number` (domyślnie `new Date()`)
338
+ - **options**: `{ locale?, unit?, numeric?, style? }`
339
+
340
+ ```ts
341
+ const now = new Date();
342
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
343
+ relativeTime(now, in3Days, { unit: "day" }); // "za 3 dni"
344
+
345
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
346
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 godziny temu"
347
+ ```
348
+
349
+ #### `units(value, options?)`
350
+
351
+ Formatuje wartość numeryczną z jednostką.
352
+
353
+ - **value**: `number | string`
354
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
355
+ - Common: `unit` (np. `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
356
+
357
+ ```ts
358
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
359
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
360
+ ```
361
+
362
+ #### `compact(value, options?)`
363
+
364
+ Formatuje liczbę używając notacji kompaktowej.
365
+
366
+ - **value**: `number | string`
367
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
368
+
369
+ ```ts
370
+ compact(1200); // "1.2K"
371
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
372
+ ```
373
+
374
+ #### `list(values, options?)`
375
+
376
+ Formatuje tablicę na zlokalizowany ciąg znaków listy.
377
+
378
+ - **values**: `(string | number)[]`
379
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
380
+ - Common: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
381
+
382
+ ```ts
383
+ list(["apple", "banana", "orange"]); // "apple, banana, and orange"
384
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
385
+ ```
386
+
387
+ ## Cached Intl
388
+
389
+ Eksportowany `Intl` z `intlayer` jest buforowanym wrapperem wokół globalnego `Intl`. Memoizuje instancje formaterów (`NumberFormat`, `DateTimeFormat`, itp.) aby uniknąć wielokrotnego ich konstruowania, co poprawia wydajność.
390
+
391
+ ```ts
392
+ import { Intl } from "intlayer";
393
+
394
+ // Formatowanie liczb
395
+ const numberFormat = new Intl.NumberFormat("en-GB", {
396
+ style: "currency",
397
+ currency: "GBP",
398
+ });
399
+ numberFormat.format(1234.5); // "£1,234.50"
400
+
401
+ // Nazwy wyświetlane dla języków, regionów, itp.
402
+ const displayNames = new Intl.DisplayNames("fr", { type: "language" });
403
+ displayNames.of("en"); // "anglais"
404
+
405
+ // Sortowanie (Collation)
406
+ const collator = new Intl.Collator("fr", { sensitivity: "base" });
407
+ collator.compare("é", "e"); // 0 (equal)
408
+
409
+ // Reguły liczby pojedynczej/mnogiej
410
+ const pluralRules = new Intl.PluralRules("fr");
411
+ pluralRules.select(1); // "one"
412
+ pluralRules.select(2); // "other"
413
+ ```
414
+
415
+ ### Dodatkowe funkcje Intl
416
+
417
+ #### `Intl.DisplayNames`
418
+
419
+ Dla zlokalizowanych nazw języków, regionów, walut i skryptów:
420
+
421
+ ```ts
422
+ import { Intl } from "intlayer";
423
+
424
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
425
+ languageNames.of("fr"); // "French"
426
+
427
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
428
+ regionNames.of("US"); // "États-Unis"
429
+ ```
430
+
431
+ #### `Intl.Collator`
432
+
433
+ Do porównywania i sortowania ciągów znaków z uwzględnieniem locale:
434
+
435
+ ```ts
436
+ import { Intl } from "intlayer";
437
+
438
+ const collator = new Intl.Collator("de", {
439
+ sensitivity: "base",
440
+ numeric: true,
441
+ });
442
+
443
+ const words = ["äpfel", "zebra", "100", "20"];
444
+ words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
445
+ ```
446
+
447
+ #### `Intl.PluralRules`
448
+
449
+ Do określania form liczby mnogiej w różnych ustawieniach regionalnych:
450
+
451
+ ```ts
452
+ import { Intl } from "intlayer";
453
+
454
+ const pluralRules = new Intl.PluralRules("ar");
455
+ pluralRules.select(0); // "zero"
456
+ pluralRules.select(1); // "one"
457
+ pluralRules.select(2); // "two"
458
+ pluralRules.select(3); // "few"
459
+ pluralRules.select(11); // "many"
460
+ ```
461
+
284
462
  ## Narzędzia lokalizacyjne
285
463
 
286
464
  ### `getLocaleName(displayLocale, targetLocale?)`
@@ -419,8 +597,6 @@ const content = getTranslation(
419
597
  - **locale**: Docelowa lokalizacja (domyślnie skonfigurowana lokalizacja domyślna)
420
598
  - **fallback**: Czy użyć lokalizacji domyślnej jako zapasowej (domyślnie true)
421
599
 
422
- ### Dodatkowe funkcje Intl
423
-
424
600
  ### `getIntlayer(dictionaryKey, locale?, plugins?)`
425
601
 
426
602
  Pobiera i transformuje treść ze słownika na podstawie klucza:
@@ -436,281 +612,8 @@ const nestedContent = getIntlayer("common", "fr", customPlugins);
436
612
  - **locale**: Opcjonalna lokalizacja (domyślnie skonfigurowana lokalizacja domyślna)
437
613
  - **plugins**: Opcjonalna tablica niestandardowych wtyczek transformujących
438
614
 
439
- ## Formatery
440
-
441
- Wszystkie poniższe pomocniki są eksportowane z `intlayer`.
442
-
443
- ### `number(value, options?)`
444
-
445
- Formatuje wartość liczbową, używając grupowania i miejsc dziesiętnych zgodnych z lokalizacją.
446
-
447
- - **value**: `number | string`
448
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
449
-
450
- Przykłady:
451
-
452
- ```ts
453
- import { number } from "intlayer";
454
-
455
- number(123456.789); // "123,456.789" (w en-US)
456
- number("1000000", { locale: "fr" }); // "1 000 000"
457
- number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
458
- ```
459
-
460
- ### `percentage(value, options?)`
461
-
462
- Formatuje liczbę jako ciąg procentowy.
463
-
464
- Zachowanie: wartości większe niż 1 są interpretowane jako całkowite procenty i normalizowane (np. `25` → `25%`, `0.25` → `25%`).
465
-
466
- - **value**: `number | string`
467
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
468
-
469
- Przykłady:
470
-
471
- ```ts
472
- import { percentage } from "intlayer";
473
-
474
- percentage(0.25); // "25%"
475
- percentage(25); // "25%"
476
- percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
477
- ```
478
-
479
- ### `currency(value, options?)`
480
-
481
- Formatuje wartość jako lokalną walutę. Domyślnie `USD` z dwoma miejscami po przecinku.
482
-
483
- - **value**: `number | string`
484
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
485
- - Typowe pola: `currency` (np. `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
486
-
487
- Przykłady:
488
-
489
- ```ts
490
- import { currency } from "intlayer";
491
-
492
- currency(1234.5, { currency: "EUR" }); // "€1,234.50"
493
- currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
494
- ```
495
-
496
- ### `date(date, optionsOrPreset?)`
497
-
498
- Formatuje wartość daty/czasu za pomocą `Intl.DateTimeFormat`.
499
-
500
- - **date**: `Date | string | number`
501
- - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` lub jeden z presetów:
502
- - Presety: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
503
-
504
- Przykłady:
505
-
506
- ```ts
507
- import { date } from "intlayer";
508
-
509
- date(new Date(), "short"); // np. "08/02/25, 14:30"
510
- date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
511
- ```
512
-
513
- ### `relativeTime(from, to = new Date(), options?)`
514
-
515
- Formatuje względny czas pomiędzy dwoma momentami za pomocą `Intl.RelativeTimeFormat`.
516
-
517
- - Przekaż "now" jako pierwszy argument, a cel jako drugi, aby uzyskać naturalne sformułowanie.
518
- - **from**: `Date | string | number`
519
- - **to**: `Date | string | number` (domyślnie `new Date()`)
520
- - **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
521
- - Domyślną wartością `unit` jest `"second"`.
522
-
523
- Przykłady:
524
-
525
- ```ts
526
- import { relativeTime } from "intlayer";
527
-
528
- const now = new Date();
529
- const in3Days = new Date(now.getTime() + 3 * 864e5);
530
- relativeTime(now, in3Days, { unit: "day" }); // "za 3 dni"
531
-
532
- const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
533
- relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 godziny temu"
534
- ```
535
-
536
- ### `units(value, options?)`
537
-
538
- Formatuje wartość liczbową jako zlokalizowany ciąg jednostki za pomocą `Intl.NumberFormat` ze stylem `unit`.
539
-
540
- - **value**: `number | string`
541
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
542
- - Typowe pola: `unit` (np. `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
543
- - Domyślne wartości: `unit: 'day'`, `unitDisplay: 'short'`, `useGrouping: false`
544
-
545
- Przykłady:
546
-
547
- ```ts
548
- import { units } from "intlayer";
549
-
550
- units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
551
- units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B" (zależne od lokalizacji)
552
- ```
553
-
554
- ### `compact(value, options?)`
555
-
556
- Formatuje liczbę używając notacji skróconej (np. `1.2K`, `1M`).
557
-
558
- - **value**: `number | string`
559
- - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }` (używa `notation: 'compact'` w tle)
560
-
561
- Przykłady:
562
-
563
- ```ts
564
- import { compact } from "intlayer";
565
-
566
- compact(1200); // "1.2K"
567
- compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
568
- ```
569
-
570
- ### `list(values, options?)`
571
-
572
- Formatuje tablicę wartości do zlokalizowanego ciągu listy za pomocą `Intl.ListFormat`.
573
-
574
- - **values**: `(string | number)[]`
575
- - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
576
- - Typowe pola: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
577
- - Domyślne: `type: 'conjunction'`, `style: 'long'`
578
-
579
- Przykłady:
580
-
581
- ```ts
582
- import { list } from "intlayer";
583
-
584
- list(["apple", "banana", "orange"]); // "apple, banana, and orange"
585
- list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
586
- list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
587
- ```
588
-
589
- ## Narzędzia do obsługi zawartości
590
-
591
615
  ## Uwagi
592
616
 
593
617
  - Wszystkie helpery akceptują dane wejściowe typu `string`; są one wewnętrznie konwertowane na liczby lub daty.
594
618
  - Domyślny locale to skonfigurowany przez Ciebie `internationalization.defaultLocale`, jeśli nie zostanie podany.
595
619
  - Te narzędzia to cienkie nakładki; dla zaawansowanego formatowania przekaż standardowe opcje `Intl`.
596
-
597
- ## Punkty wejścia i ponowne eksporty (`@index.ts`)
598
-
599
- Formatery znajdują się w pakiecie core i są ponownie eksportowane z wyższych poziomów pakietów, aby utrzymać ergonomię importów w różnych środowiskach:
600
-
601
- Przykłady:
602
-
603
- ```ts
604
- // Kod aplikacji (zalecane)
605
- import {
606
- number,
607
- currency,
608
- date,
609
- relativeTime,
610
- units,
611
- compact,
612
- list,
613
- Intl,
614
- getLocaleName,
615
- getLocaleLang,
616
- getLocaleFromPath,
617
- getPathWithoutLocale,
618
- getLocalizedUrl,
619
- getHTMLTextDir,
620
- getContent,
621
- getTranslation,
622
- getIntlayer,
623
- } from "intlayer";
624
- ```
625
-
626
- ### React
627
-
628
- Komponenty klienckie:
629
-
630
- ```tsx
631
- import {
632
- useNumber,
633
- useCurrency,
634
- useDate,
635
- usePercentage,
636
- useCompact,
637
- useList,
638
- useRelativeTime,
639
- useUnit,
640
- } from "react-intlayer/format";
641
- // lub w aplikacjach Preact
642
- // "preact-intlayer/format";
643
- // lub w aplikacjach Next.js
644
- // "next-intlayer/client/format";
645
-
646
- const MyComponent = () => {
647
- const number = useNumber();
648
- const currency = useCurrency();
649
- const date = useDate();
650
- const percentage = usePercentage();
651
- const compact = useCompact();
652
- const list = useList();
653
- const relativeTime = useRelativeTime();
654
- const unit = useUnit();
655
-
656
- return (
657
- <div>
658
- <p>{number(123456.789)}</p>
659
- <p>{currency(1234.5, { currency: "EUR" })}</p>
660
- <p>{date(new Date(), "short")}</p>
661
- <p>{percentage(0.25)}</p>
662
- <p>{compact(1200)}</p>
663
- <p>{list(["apple", "banana", "orange"])}</p>
664
- <p>{relativeTime(new Date(), new Date() + 1000)}</p>
665
- <p>{unit(123456.789, { unit: "kilometer" })}</p>
666
- </div>
667
- );
668
- };
669
- ```
670
-
671
- Komponenty serwerowe (lub środowisko wykonawcze React Server):
672
-
673
- ```ts
674
- import {
675
- useNumber,
676
- useCurrency,
677
- useDate,
678
- usePercentage,
679
- useCompact,
680
- useList,
681
- useRelativeTime,
682
- useUnit,
683
- } from "intlayer/server/format";
684
- // lub w aplikacjach Next.js
685
- import {
686
- useNumber,
687
- useCurrency,
688
- useDate,
689
- usePercentage,
690
- useCompact,
691
- useList,
692
- useRelativeTime,
693
- useUnit,
694
- } from "next-intlayer/server/format";
695
- ```
696
-
697
- > Te hooki będą uwzględniać lokalizację z `IntlayerProvider` lub `IntlayerServerProvider`
698
-
699
- ### Vue
700
-
701
- Komponenty klienckie:
702
-
703
- ```ts
704
- import {
705
- useNumber,
706
- useCurrency,
707
- useDate,
708
- usePercentage,
709
- useCompact,
710
- useList,
711
- useRelativeTime,
712
- useUnit,
713
- } from "vue-intlayer/format";
714
- ```
715
-
716
- > Te composables będą uwzględniać lokalizację z wstrzykniętego `IntlayerProvider`