@intlayer/docs 9.1.3 → 9.3.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 (482) hide show
  1. package/blog/ar/index.md +1 -1
  2. package/blog/ar/rag_powered_documentation_assistant.md +7 -0
  3. package/blog/de/index.md +1 -1
  4. package/blog/de/rag_powered_documentation_assistant.md +6 -0
  5. package/blog/en/index.md +1 -1
  6. package/blog/en-GB/index.md +1 -1
  7. package/blog/en-GB/rag_powered_documentation_assistant.md +6 -0
  8. package/blog/es/index.md +1 -1
  9. package/blog/es/rag_powered_documentation_assistant.md +7 -0
  10. package/blog/fr/i18n_meaning.md +7 -1
  11. package/blog/fr/index.md +1 -1
  12. package/blog/fr/list_i18n_technologies/frameworks/angular.md +5 -1
  13. package/blog/fr/rag_powered_documentation_assistant.md +6 -0
  14. package/blog/hi/index.md +1 -1
  15. package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +119 -42
  16. package/blog/hi/rag_powered_documentation_assistant.md +7 -0
  17. package/blog/id/index.md +1 -1
  18. package/blog/id/rag_powered_documentation_assistant.md +6 -0
  19. package/blog/it/index.md +1 -1
  20. package/blog/it/rag_powered_documentation_assistant.md +6 -0
  21. package/blog/ja/index.md +1 -1
  22. package/blog/ja/rag_powered_documentation_assistant.md +7 -0
  23. package/blog/ko/index.md +1 -1
  24. package/blog/ko/list_i18n_technologies/frameworks/react.md +7 -7
  25. package/blog/ko/rag_powered_documentation_assistant.md +6 -0
  26. package/blog/pl/index.md +1 -1
  27. package/blog/pl/rag_powered_documentation_assistant.md +6 -0
  28. package/blog/pt/index.md +1 -1
  29. package/blog/pt/rag_powered_documentation_assistant.md +6 -0
  30. package/blog/ru/index.md +1 -1
  31. package/blog/ru/rag_powered_documentation_assistant.md +7 -0
  32. package/blog/tr/intlayer_with_react-intl.md +3 -1
  33. package/blog/tr/next-i18next_vs_next-intl_vs_intlayer.md +175 -42
  34. package/blog/tr/rag_powered_documentation_assistant.md +6 -0
  35. package/blog/uk/index.md +1 -1
  36. package/blog/uk/rag_powered_documentation_assistant.md +6 -0
  37. package/blog/vi/index.md +1 -1
  38. package/blog/vi/rag_powered_documentation_assistant.md +6 -0
  39. package/blog/zh/index.md +1 -1
  40. package/blog/zh/intlayer_with_i18next.md +87 -28
  41. package/blog/zh/intlayer_with_next-i18next.md +86 -29
  42. package/blog/zh/intlayer_with_next-intl.md +88 -28
  43. package/blog/zh/intlayer_with_react-i18next.md +87 -28
  44. package/blog/zh/intlayer_with_react-intl.md +88 -27
  45. package/blog/zh/intlayer_with_vue-i18n.md +117 -8
  46. package/blog/zh/rag_powered_documentation_assistant.md +6 -0
  47. package/dist/cjs/common.cjs +24 -1
  48. package/dist/cjs/common.cjs.map +1 -1
  49. package/dist/cjs/generated/blog.entry.cjs +58 -31
  50. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  51. package/dist/cjs/generated/docs.entry.cjs +265 -218
  52. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  53. package/dist/cjs/generated/frequentQuestions.entry.cjs +48 -21
  54. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  55. package/dist/cjs/generated/legal.entry.cjs +33 -6
  56. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  57. package/dist/esm/common.mjs +24 -1
  58. package/dist/esm/common.mjs.map +1 -1
  59. package/dist/esm/generated/blog.entry.mjs +58 -31
  60. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  61. package/dist/esm/generated/docs.entry.mjs +265 -218
  62. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  63. package/dist/esm/generated/frequentQuestions.entry.mjs +48 -21
  64. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  65. package/dist/esm/generated/legal.entry.mjs +33 -6
  66. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  67. package/dist/types/common.d.ts.map +1 -1
  68. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  69. package/dist/types/generated/docs.entry.d.ts +1 -0
  70. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  71. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  72. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  73. package/docs/ar/analytics.md +222 -0
  74. package/docs/ar/autoFill.md +28 -9
  75. package/docs/ar/bundle_optimization.md +58 -25
  76. package/docs/ar/configuration.md +25 -8
  77. package/docs/ar/dictionary/file.md +3 -1
  78. package/docs/ar/dictionary/nesting.md +47 -30
  79. package/docs/ar/formatters.md +148 -193
  80. package/docs/ar/intlayer_CMS.md +152 -0
  81. package/docs/ar/intlayer_with_angular_21.md +9 -9
  82. package/docs/ar/intlayer_with_nextjs_14.md +1 -28
  83. package/docs/ar/intlayer_with_nextjs_15.md +1 -33
  84. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +40 -83
  85. package/docs/ar/intlayer_with_solid_start.md +1078 -0
  86. package/docs/ar/intlayer_with_vite+vue.md +1 -3
  87. package/docs/ar/live-sync.md +4 -0
  88. package/docs/ar/packages/intlayer/getLocalizedUrl.md +26 -24
  89. package/docs/ar/packages/intlayer/getMultilingualUrls.md +4 -18
  90. package/docs/ar/packages/react-intlayer/useDictionary.md +4 -21
  91. package/docs/ar/packages/react-intlayer/useIntlayer.md +2 -2
  92. package/docs/ar/packages/vite-intlayer/exports.md +15 -0
  93. package/docs/ar/packages/vite-intlayer/intlayer.md +121 -6
  94. package/docs/ar/packages/vite-intlayer/intlayerPrune.md +70 -3
  95. package/docs/ar/releases/v9.md +0 -37
  96. package/docs/ar/self_hosting.md +46 -49
  97. package/docs/bn/bundle_optimization.md +58 -25
  98. package/docs/bn/configuration.md +25 -8
  99. package/docs/bn/intlayer_with_angular_21.md +9 -9
  100. package/docs/cs/bundle_optimization.md +58 -25
  101. package/docs/cs/configuration.md +25 -8
  102. package/docs/cs/intlayer_with_angular_21.md +9 -9
  103. package/docs/de/analytics.md +222 -0
  104. package/docs/de/autoFill.md +28 -9
  105. package/docs/de/bundle_optimization.md +58 -25
  106. package/docs/de/configuration.md +25 -8
  107. package/docs/de/dictionary/file.md +3 -1
  108. package/docs/de/dictionary/nesting.md +47 -31
  109. package/docs/de/formatters.md +208 -334
  110. package/docs/de/intlayer_CMS.md +66 -15
  111. package/docs/de/intlayer_with_angular_21.md +9 -9
  112. package/docs/de/intlayer_with_nestjs.md +11 -7
  113. package/docs/de/intlayer_with_nextjs_14.md +1 -28
  114. package/docs/de/intlayer_with_nextjs_15.md +1 -33
  115. package/docs/de/intlayer_with_solid_start.md +1078 -0
  116. package/docs/de/intlayer_with_vite+vue.md +1 -3
  117. package/docs/de/live-sync.md +4 -0
  118. package/docs/de/packages/intlayer/getLocalizedUrl.md +33 -25
  119. package/docs/de/packages/intlayer/getMultilingualUrls.md +4 -18
  120. package/docs/de/packages/react-intlayer/useDictionary.md +2 -5
  121. package/docs/de/packages/vite-intlayer/exports.md +15 -0
  122. package/docs/de/packages/vite-intlayer/intlayer.md +121 -6
  123. package/docs/de/packages/vite-intlayer/intlayerPrune.md +77 -4
  124. package/docs/de/releases/v9.md +0 -15
  125. package/docs/de/self_hosting.md +46 -50
  126. package/docs/en/bundle_optimization.md +51 -23
  127. package/docs/en/cli/doc-review.md +13 -2
  128. package/docs/en/configuration.md +24 -15
  129. package/docs/en/intlayer_with_angular_21.md +9 -9
  130. package/docs/en/intlayer_with_solid_start.md +1091 -0
  131. package/docs/en/intlayer_with_vite+solid.md +12 -0
  132. package/docs/en/live-sync.md +4 -0
  133. package/docs/en-GB/analytics.md +222 -0
  134. package/docs/en-GB/autoFill.md +26 -7
  135. package/docs/en-GB/bundle_optimization.md +58 -25
  136. package/docs/en-GB/configuration.md +25 -8
  137. package/docs/en-GB/dictionary/file.md +2 -0
  138. package/docs/en-GB/dictionary/nesting.md +64 -205
  139. package/docs/en-GB/formatters.md +146 -181
  140. package/docs/en-GB/intlayer_CMS.md +152 -0
  141. package/docs/en-GB/intlayer_with_angular_21.md +9 -9
  142. package/docs/en-GB/intlayer_with_nestjs.md +6 -2
  143. package/docs/en-GB/intlayer_with_nextjs_14.md +0 -27
  144. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -33
  145. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +40 -82
  146. package/docs/en-GB/intlayer_with_solid_start.md +1078 -0
  147. package/docs/en-GB/intlayer_with_vite+vue.md +1 -3
  148. package/docs/en-GB/live-sync.md +4 -0
  149. package/docs/en-GB/packages/intlayer/getLocalizedUrl.md +30 -22
  150. package/docs/en-GB/packages/intlayer/getMultilingualUrls.md +16 -48
  151. package/docs/en-GB/packages/vite-intlayer/exports.md +15 -0
  152. package/docs/en-GB/packages/vite-intlayer/intlayer.md +121 -6
  153. package/docs/en-GB/packages/vite-intlayer/intlayerPrune.md +77 -4
  154. package/docs/en-GB/self_hosting.md +60 -49
  155. package/docs/es/analytics.md +222 -0
  156. package/docs/es/autoFill.md +28 -9
  157. package/docs/es/bundle_optimization.md +58 -25
  158. package/docs/es/configuration.md +24 -7
  159. package/docs/es/dictionary/file.md +3 -1
  160. package/docs/es/dictionary/nesting.md +47 -30
  161. package/docs/es/formatters.md +114 -168
  162. package/docs/es/intlayer_CMS.md +35 -10
  163. package/docs/es/intlayer_with_angular_21.md +9 -9
  164. package/docs/es/intlayer_with_nextjs_14.md +1 -28
  165. package/docs/es/intlayer_with_nextjs_15.md +1 -33
  166. package/docs/es/intlayer_with_solid_start.md +1078 -0
  167. package/docs/es/live-sync.md +4 -0
  168. package/docs/es/packages/intlayer/getLocalizedUrl.md +31 -23
  169. package/docs/es/packages/intlayer/getMultilingualUrls.md +4 -18
  170. package/docs/es/packages/vite-intlayer/exports.md +15 -0
  171. package/docs/es/packages/vite-intlayer/intlayer.md +121 -6
  172. package/docs/es/packages/vite-intlayer/intlayerPrune.md +69 -2
  173. package/docs/es/releases/v9.md +0 -15
  174. package/docs/es/self_hosting.md +46 -49
  175. package/docs/fr/analytics.md +222 -0
  176. package/docs/fr/autoFill.md +27 -8
  177. package/docs/fr/bundle_optimization.md +58 -25
  178. package/docs/fr/configuration.md +25 -8
  179. package/docs/fr/dictionary/file.md +2 -0
  180. package/docs/fr/dictionary/nesting.md +37 -184
  181. package/docs/fr/formatters.md +95 -236
  182. package/docs/fr/intlayer_CMS.md +66 -15
  183. package/docs/fr/intlayer_with_angular_21.md +9 -9
  184. package/docs/fr/intlayer_with_nextjs_14.md +1 -28
  185. package/docs/fr/intlayer_with_nextjs_15.md +1 -33
  186. package/docs/fr/intlayer_with_solid_start.md +1078 -0
  187. package/docs/fr/live-sync.md +4 -0
  188. package/docs/fr/packages/intlayer/getLocalizedUrl.md +37 -27
  189. package/docs/fr/packages/intlayer/getMultilingualUrls.md +18 -20
  190. package/docs/fr/packages/vite-intlayer/exports.md +15 -0
  191. package/docs/fr/packages/vite-intlayer/intlayer.md +121 -6
  192. package/docs/fr/packages/vite-intlayer/intlayerPrune.md +77 -4
  193. package/docs/fr/releases/v9.md +0 -15
  194. package/docs/fr/self_hosting.md +46 -49
  195. package/docs/hi/analytics.md +222 -0
  196. package/docs/hi/autoFill.md +28 -9
  197. package/docs/hi/bundle_optimization.md +58 -25
  198. package/docs/hi/configuration.md +25 -8
  199. package/docs/hi/dictionary/file.md +3 -1
  200. package/docs/hi/dictionary/nesting.md +47 -30
  201. package/docs/hi/formatters.md +233 -334
  202. package/docs/hi/how_works_intlayer.md +3 -1
  203. package/docs/hi/intlayer_CMS.md +152 -0
  204. package/docs/hi/intlayer_with_angular_21.md +9 -9
  205. package/docs/hi/intlayer_with_nestjs.md +11 -7
  206. package/docs/hi/intlayer_with_nextjs_14.md +1 -28
  207. package/docs/hi/intlayer_with_nextjs_15.md +1 -33
  208. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +40 -83
  209. package/docs/hi/intlayer_with_solid_start.md +1077 -0
  210. package/docs/hi/intlayer_with_vite+preact.md +56 -49
  211. package/docs/hi/intlayer_with_vite+react.md +48 -41
  212. package/docs/hi/intlayer_with_vite+solid.md +32 -41
  213. package/docs/hi/intlayer_with_vite+vue.md +49 -44
  214. package/docs/hi/live-sync.md +4 -0
  215. package/docs/hi/packages/intlayer/getLocalizedUrl.md +26 -24
  216. package/docs/hi/packages/intlayer/getMultilingualUrls.md +4 -18
  217. package/docs/hi/packages/next-intlayer/t.md +33 -1
  218. package/docs/hi/packages/react-intlayer/useDictionary.md +4 -21
  219. package/docs/hi/packages/vite-intlayer/exports.md +15 -0
  220. package/docs/hi/packages/vite-intlayer/intlayer.md +121 -6
  221. package/docs/hi/packages/vite-intlayer/intlayerPrune.md +78 -5
  222. package/docs/hi/plugins/sync-json.md +9 -9
  223. package/docs/hi/releases/v9.md +0 -15
  224. package/docs/hi/self_hosting.md +38 -51
  225. package/docs/id/analytics.md +223 -0
  226. package/docs/id/bundle_optimization.md +58 -25
  227. package/docs/id/configuration.md +25 -8
  228. package/docs/id/dictionary/nesting.md +37 -184
  229. package/docs/id/formatters.md +208 -305
  230. package/docs/id/intlayer_CMS.md +164 -0
  231. package/docs/id/intlayer_with_angular_21.md +9 -9
  232. package/docs/id/intlayer_with_nextjs_14.md +1 -26
  233. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +70 -63
  234. package/docs/id/intlayer_with_solid_start.md +1078 -0
  235. package/docs/id/live-sync.md +4 -0
  236. package/docs/id/packages/intlayer/getMultilingualUrls.md +4 -18
  237. package/docs/id/packages/react-intlayer/useIntlayer.md +2 -2
  238. package/docs/id/packages/vite-intlayer/exports.md +15 -0
  239. package/docs/id/packages/vite-intlayer/intlayer.md +121 -6
  240. package/docs/id/packages/vite-intlayer/intlayerPrune.md +78 -5
  241. package/docs/id/releases/v9.md +12 -0
  242. package/docs/id/self_hosting.md +61 -50
  243. package/docs/it/analytics.md +222 -0
  244. package/docs/it/autoFill.md +27 -8
  245. package/docs/it/bundle_optimization.md +58 -25
  246. package/docs/it/configuration.md +25 -8
  247. package/docs/it/dictionary/file.md +3 -1
  248. package/docs/it/dictionary/nesting.md +47 -30
  249. package/docs/it/formatters.md +114 -168
  250. package/docs/it/intlayer_CMS.md +66 -15
  251. package/docs/it/intlayer_with_angular_21.md +9 -9
  252. package/docs/it/intlayer_with_nestjs.md +11 -7
  253. package/docs/it/intlayer_with_nextjs_14.md +1 -28
  254. package/docs/it/intlayer_with_nextjs_15.md +1 -33
  255. package/docs/it/intlayer_with_solid_start.md +1078 -0
  256. package/docs/it/intlayer_with_vite+vue.md +1 -3
  257. package/docs/it/live-sync.md +4 -0
  258. package/docs/it/packages/intlayer/getLocalizedUrl.md +34 -26
  259. package/docs/it/packages/intlayer/getMultilingualUrls.md +4 -18
  260. package/docs/it/packages/react-intlayer/useDictionary.md +4 -21
  261. package/docs/it/packages/vite-intlayer/exports.md +15 -0
  262. package/docs/it/packages/vite-intlayer/intlayer.md +121 -6
  263. package/docs/it/packages/vite-intlayer/intlayerPrune.md +77 -4
  264. package/docs/it/releases/v9.md +0 -15
  265. package/docs/it/self_hosting.md +60 -49
  266. package/docs/ja/analytics.md +222 -0
  267. package/docs/ja/autoFill.md +28 -9
  268. package/docs/ja/bundle_optimization.md +58 -25
  269. package/docs/ja/configuration.md +25 -8
  270. package/docs/ja/dictionary/content_file.md +15 -7
  271. package/docs/ja/dictionary/file.md +3 -1
  272. package/docs/ja/dictionary/nesting.md +47 -30
  273. package/docs/ja/formatters.md +133 -187
  274. package/docs/ja/intlayer_visual_editor.md +3 -1
  275. package/docs/ja/intlayer_with_angular_21.md +6 -6
  276. package/docs/ja/intlayer_with_nestjs.md +2 -12
  277. package/docs/ja/intlayer_with_nextjs_14.md +1 -28
  278. package/docs/ja/intlayer_with_nextjs_15.md +1 -33
  279. package/docs/ja/intlayer_with_react_router_v7.md +456 -20
  280. package/docs/ja/intlayer_with_solid_start.md +1078 -0
  281. package/docs/ja/intlayer_with_vite+preact.md +73 -41
  282. package/docs/ja/intlayer_with_vite+vue.md +1 -3
  283. package/docs/ja/live-sync.md +4 -0
  284. package/docs/ja/mcp_server.md +3 -9
  285. package/docs/ja/packages/intlayer/getLocalizedUrl.md +26 -24
  286. package/docs/ja/packages/intlayer/getMultilingualUrls.md +3 -17
  287. package/docs/ja/packages/vite-intlayer/exports.md +15 -0
  288. package/docs/ja/packages/vite-intlayer/intlayer.md +121 -6
  289. package/docs/ja/packages/vite-intlayer/intlayerPrune.md +79 -6
  290. package/docs/ja/releases/v9.md +12 -0
  291. package/docs/ja/self_hosting.md +46 -50
  292. package/docs/ko/analytics.md +222 -0
  293. package/docs/ko/autoFill.md +28 -9
  294. package/docs/ko/bundle_optimization.md +58 -25
  295. package/docs/ko/configuration.md +25 -8
  296. package/docs/ko/dictionary/file.md +3 -1
  297. package/docs/ko/dictionary/nesting.md +47 -30
  298. package/docs/ko/formatters.md +133 -187
  299. package/docs/ko/intlayer_with_angular_21.md +9 -9
  300. package/docs/ko/intlayer_with_lynx+react.md +133 -39
  301. package/docs/ko/intlayer_with_nextjs_14.md +1 -28
  302. package/docs/ko/intlayer_with_nextjs_15.md +1 -33
  303. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +40 -188
  304. package/docs/ko/intlayer_with_solid_start.md +1078 -0
  305. package/docs/ko/intlayer_with_vite+preact.md +57 -23
  306. package/docs/ko/intlayer_with_vite+vue.md +1 -3
  307. package/docs/ko/live-sync.md +4 -0
  308. package/docs/ko/packages/intlayer/getLocalizedUrl.md +26 -24
  309. package/docs/ko/packages/intlayer/getMultilingualUrls.md +4 -18
  310. package/docs/ko/packages/vite-intlayer/exports.md +15 -0
  311. package/docs/ko/packages/vite-intlayer/intlayer.md +121 -6
  312. package/docs/ko/packages/vite-intlayer/intlayerPrune.md +79 -6
  313. package/docs/ko/releases/v9.md +12 -0
  314. package/docs/ko/self_hosting.md +60 -49
  315. package/docs/nl/bundle_optimization.md +58 -25
  316. package/docs/nl/configuration.md +25 -8
  317. package/docs/nl/intlayer_with_angular_21.md +9 -9
  318. package/docs/pl/analytics.md +220 -0
  319. package/docs/pl/bundle_optimization.md +58 -25
  320. package/docs/pl/configuration.md +25 -8
  321. package/docs/pl/dictionary/nesting.md +47 -30
  322. package/docs/pl/formatters.md +208 -305
  323. package/docs/pl/intlayer_CMS.md +152 -0
  324. package/docs/pl/intlayer_with_angular_21.md +9 -9
  325. package/docs/pl/intlayer_with_nextjs_14.md +1 -26
  326. package/docs/pl/intlayer_with_solid_start.md +1078 -0
  327. package/docs/pl/live-sync.md +4 -0
  328. package/docs/pl/packages/intlayer/getMultilingualUrls.md +4 -18
  329. package/docs/pl/packages/react-intlayer/useDictionary.md +2 -19
  330. package/docs/pl/packages/vite-intlayer/exports.md +15 -0
  331. package/docs/pl/packages/vite-intlayer/intlayer.md +121 -6
  332. package/docs/pl/packages/vite-intlayer/intlayerPrune.md +77 -4
  333. package/docs/pl/releases/v9.md +0 -15
  334. package/docs/pl/self_hosting.md +60 -49
  335. package/docs/pt/analytics.md +222 -0
  336. package/docs/pt/bundle_optimization.md +58 -24
  337. package/docs/pt/configuration.md +25 -8
  338. package/docs/pt/dictionary/file.md +3 -1
  339. package/docs/pt/dictionary/nesting.md +47 -30
  340. package/docs/pt/formatters.md +112 -168
  341. package/docs/pt/intlayer_CMS.md +66 -15
  342. package/docs/pt/intlayer_with_angular_21.md +9 -9
  343. package/docs/pt/intlayer_with_astro_lit.md +26 -1
  344. package/docs/pt/intlayer_with_nextjs_14.md +1 -28
  345. package/docs/pt/intlayer_with_nextjs_15.md +1 -33
  346. package/docs/pt/intlayer_with_solid_start.md +1078 -0
  347. package/docs/pt/intlayer_with_vite+vue.md +1 -3
  348. package/docs/pt/live-sync.md +4 -0
  349. package/docs/pt/packages/intlayer/getLocalizedUrl.md +34 -26
  350. package/docs/pt/packages/intlayer/getMultilingualUrls.md +4 -18
  351. package/docs/pt/packages/vite-intlayer/exports.md +15 -0
  352. package/docs/pt/packages/vite-intlayer/intlayer.md +121 -6
  353. package/docs/pt/packages/vite-intlayer/intlayerPrune.md +78 -6
  354. package/docs/pt/releases/v9.md +0 -15
  355. package/docs/pt/self_hosting.md +60 -49
  356. package/docs/ru/analytics.md +222 -0
  357. package/docs/ru/autoFill.md +27 -8
  358. package/docs/ru/bundle_optimization.md +58 -25
  359. package/docs/ru/configuration.md +25 -8
  360. package/docs/ru/dictionary/file.md +3 -1
  361. package/docs/ru/dictionary/nesting.md +64 -205
  362. package/docs/ru/formatters.md +108 -128
  363. package/docs/ru/intlayer_with_angular_21.md +9 -9
  364. package/docs/ru/intlayer_with_nextjs_14.md +1 -28
  365. package/docs/ru/intlayer_with_nextjs_15.md +1 -33
  366. package/docs/ru/intlayer_with_solid_start.md +1078 -0
  367. package/docs/ru/intlayer_with_vite+vue.md +1 -3
  368. package/docs/ru/live-sync.md +4 -0
  369. package/docs/ru/packages/intlayer/getLocalizedUrl.md +34 -26
  370. package/docs/ru/packages/intlayer/getMultilingualUrls.md +4 -18
  371. package/docs/ru/packages/react-intlayer/useDictionary.md +4 -21
  372. package/docs/ru/packages/vite-intlayer/exports.md +15 -0
  373. package/docs/ru/packages/vite-intlayer/intlayer.md +121 -6
  374. package/docs/ru/packages/vite-intlayer/intlayerPrune.md +77 -4
  375. package/docs/ru/releases/v9.md +0 -15
  376. package/docs/ru/self_hosting.md +60 -49
  377. package/docs/tr/analytics.md +222 -0
  378. package/docs/tr/autoFill.md +28 -9
  379. package/docs/tr/bundle_optimization.md +58 -25
  380. package/docs/tr/configuration.md +25 -8
  381. package/docs/tr/dictionary/file.md +2 -0
  382. package/docs/tr/dictionary/nesting.md +47 -30
  383. package/docs/tr/formatters.md +144 -190
  384. package/docs/tr/intlayer_CMS.md +152 -0
  385. package/docs/tr/intlayer_with_angular_21.md +9 -9
  386. package/docs/tr/intlayer_with_nestjs.md +2 -12
  387. package/docs/tr/intlayer_with_nextjs_15.md +1 -33
  388. package/docs/tr/intlayer_with_solid_start.md +1078 -0
  389. package/docs/tr/intlayer_with_vite+vue.md +1 -3
  390. package/docs/tr/live-sync.md +4 -0
  391. package/docs/tr/packages/intlayer/getMultilingualUrls.md +4 -18
  392. package/docs/tr/packages/vite-intlayer/exports.md +15 -0
  393. package/docs/tr/packages/vite-intlayer/intlayer.md +121 -6
  394. package/docs/tr/packages/vite-intlayer/intlayerPrune.md +77 -4
  395. package/docs/tr/self_hosting.md +47 -50
  396. package/docs/uk/analytics.md +222 -0
  397. package/docs/uk/bundle_optimization.md +58 -25
  398. package/docs/uk/configuration.md +25 -8
  399. package/docs/uk/dictionary/nesting.md +47 -30
  400. package/docs/uk/formatters.md +128 -185
  401. package/docs/uk/intlayer_CMS.md +152 -0
  402. package/docs/uk/intlayer_with_angular_21.md +9 -9
  403. package/docs/uk/intlayer_with_nextjs_14.md +1 -26
  404. package/docs/uk/intlayer_with_solid_start.md +1078 -0
  405. package/docs/uk/live-sync.md +4 -0
  406. package/docs/uk/packages/react-intlayer/useDictionary.md +2 -19
  407. package/docs/uk/packages/vite-intlayer/exports.md +15 -0
  408. package/docs/uk/packages/vite-intlayer/intlayer.md +121 -6
  409. package/docs/uk/packages/vite-intlayer/intlayerPrune.md +77 -4
  410. package/docs/uk/releases/v9.md +0 -15
  411. package/docs/uk/self_hosting.md +60 -50
  412. package/docs/ur/bundle_optimization.md +58 -25
  413. package/docs/ur/configuration.md +25 -8
  414. package/docs/ur/intlayer_with_angular_21.md +9 -9
  415. package/docs/vi/analytics.md +222 -0
  416. package/docs/vi/bundle_optimization.md +58 -25
  417. package/docs/vi/configuration.md +24 -8
  418. package/docs/vi/dictionary/nesting.md +37 -184
  419. package/docs/vi/formatters.md +208 -309
  420. package/docs/vi/intlayer_CMS.md +164 -0
  421. package/docs/vi/intlayer_with_angular_21.md +9 -9
  422. package/docs/vi/intlayer_with_nextjs_14.md +0 -25
  423. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +70 -63
  424. package/docs/vi/intlayer_with_solid_start.md +1078 -0
  425. package/docs/vi/live-sync.md +4 -0
  426. package/docs/vi/packages/intlayer/getMultilingualUrls.md +4 -18
  427. package/docs/vi/packages/react-intlayer/useIntlayer.md +2 -2
  428. package/docs/vi/packages/vite-intlayer/exports.md +15 -0
  429. package/docs/vi/packages/vite-intlayer/intlayer.md +121 -6
  430. package/docs/vi/packages/vite-intlayer/intlayerPrune.md +77 -4
  431. package/docs/vi/plugins/sync-json.md +6 -6
  432. package/docs/vi/releases/v9.md +12 -0
  433. package/docs/vi/self_hosting.md +61 -50
  434. package/docs/zh/CI_CD.md +4 -0
  435. package/docs/zh/analytics.md +222 -0
  436. package/docs/zh/autoFill.md +28 -9
  437. package/docs/zh/bundle_optimization.md +58 -25
  438. package/docs/zh/configuration.md +24 -8
  439. package/docs/zh/dictionary/file.md +2 -0
  440. package/docs/zh/dictionary/nesting.md +47 -30
  441. package/docs/zh/formatters.md +140 -188
  442. package/docs/zh/intlayer_CMS.md +164 -0
  443. package/docs/zh/intlayer_with_analog.md +193 -3
  444. package/docs/zh/intlayer_with_angular_19.md +272 -3
  445. package/docs/zh/intlayer_with_angular_21.md +7 -7
  446. package/docs/zh/intlayer_with_create_react_app.md +348 -26
  447. package/docs/zh/intlayer_with_lynx+react.md +263 -4
  448. package/docs/zh/intlayer_with_nextjs_14.md +1 -28
  449. package/docs/zh/intlayer_with_nextjs_15.md +1 -33
  450. package/docs/zh/intlayer_with_nextjs_no_locale_path.md +558 -1
  451. package/docs/zh/intlayer_with_nuxt.md +182 -7
  452. package/docs/zh/intlayer_with_react_router_v7.md +183 -25
  453. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +306 -42
  454. package/docs/zh/intlayer_with_solid_start.md +1077 -0
  455. package/docs/zh/intlayer_with_storybook.md +260 -3
  456. package/docs/zh/intlayer_with_svelte_kit.md +428 -48
  457. package/docs/zh/intlayer_with_tanstack+solid.md +713 -13
  458. package/docs/zh/intlayer_with_tanstack.md +731 -20
  459. package/docs/zh/intlayer_with_vanilla.md +314 -4
  460. package/docs/zh/intlayer_with_vite+lit.md +465 -4
  461. package/docs/zh/intlayer_with_vite+preact.md +422 -116
  462. package/docs/zh/intlayer_with_vite+react.md +324 -45
  463. package/docs/zh/intlayer_with_vite+react_compiler.md +228 -13
  464. package/docs/zh/intlayer_with_vite+solid.md +462 -32
  465. package/docs/zh/intlayer_with_vite+vanilla.md +497 -4
  466. package/docs/zh/live-sync.md +4 -0
  467. package/docs/zh/mcp_server.md +3 -9
  468. package/docs/zh/packages/intlayer/getLocalizedUrl.md +26 -24
  469. package/docs/zh/packages/intlayer/getMultilingualUrls.md +4 -18
  470. package/docs/zh/packages/vite-intlayer/exports.md +29 -0
  471. package/docs/zh/packages/vite-intlayer/intlayer.md +121 -6
  472. package/docs/zh/packages/vite-intlayer/intlayerPrune.md +79 -6
  473. package/docs/zh/releases/v9.md +12 -0
  474. package/docs/zh/self_hosting.md +60 -50
  475. package/docs/zh-TW/bundle_optimization.md +58 -25
  476. package/docs/zh-TW/intlayer_with_angular_21.md +7 -7
  477. package/package.json +7 -7
  478. package/src/common.ts +39 -2
  479. package/src/generated/blog.entry.ts +66 -34
  480. package/src/generated/docs.entry.ts +273 -221
  481. package/src/generated/frequentQuestions.entry.ts +56 -24
  482. package/src/generated/legal.entry.ts +41 -9
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-07-11
3
+ updatedAt: 2026-08-06
4
4
  title: 구성 (Configuration)
5
5
  description: 애플리케이션에 Intlayer를 구성하는 방법을 알아보세요. 필요에 따라 Intlayer를 맞춤설정하는 데 사용할 수 있는 다양한 설정과 옵션을 이해하세요.
6
6
  keywords:
@@ -14,6 +14,9 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 9.1.3
18
+ date: 2026-08-06
19
+ changes: "`routing.enableProxy`를 3상태로 변경: 미설정(auto), `true`, `false`"
17
20
  - version: 9.0.0
18
21
  date: 2026-07-11
19
22
  changes: "`analytics` 구성 추가"
@@ -235,6 +238,19 @@ const config: IntlayerConfig = {
235
238
  */
236
239
  mode: "prefix-no-default",
237
240
 
241
+ /**
242
+ * Intlayer 로케일 라우팅 프록시(미들웨어)를 활성화합니다.
243
+ * dev, preview, SSR에서 로케일 감지, 리디렉션, 리라이트를 처리합니다.
244
+ * - 미설정(auto): dev 및 preview 서버는 쿠키와 헤더에 저장된 로케일을 무시하여
245
+ * 라우팅을 URL 기반으로 유지합니다. 접두사 해석, 로케일 저장,
246
+ * Accept-Language 감지는 계속 동작합니다.
247
+ * 프로덕션에서는 `true`와 동일하게 동작합니다.
248
+ * - true: 모든 환경에서 완전한 동작.
249
+ * - false: 로케일 라우팅 없음.
250
+ * 기본값: undefined (auto)
251
+ */
252
+ enableProxy: undefined,
253
+
238
254
  /**
239
255
  * 사용자가 선택한 로케일 저장 위치.
240
256
  * 옵션: 'cookie', 'localStorage', 'sessionStorage', 'header' 또는 이들의 배열.
@@ -713,13 +729,14 @@ Intlayer 애널리틱스와 관련된 설정을 정의합니다: 사용자에게
713
729
 
714
730
  URL 구조, 로케일 저장 및 미들웨어 처리를 포함하여 라우팅 동작을 제어하기 위한 설정입니다.
715
731
 
716
- | 필드 | 설명 | 타입 | 기본값 | 예시 | 참고 |
717
- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
718
- | `mode` | 로케일 처리를 위한 URL 라우팅 모드. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) 또는 `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: 로케일이 다른 수단으로 관리됨. `'search-params'`: `/dashboard?locale=fr` | 쿠키나 로컬 스토리지 관리에는 영향을 주지 않습니다. |
719
- | `storage` | 클라이언트에서 로케일을 저장하기 위한 구성. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | 아래의 저장소 옵션 표를 참조하세요. |
720
- | `basePath` | 애플리케이션 URL의 기본 경로. | `string` | `''` | `'/my-app'` | 앱이 `https://example.com/my-app`에 있는 경우 basePath는 `'/my-app'`이며 URL은 `https://example.com/my-app/en`이 됩니다. |
721
- | `rewrite` | 특정 로케일 경로에 대해 기본 라우팅 모드를 재정의하기 위한 사용자 정의 URL 재작성 규칙. 동적 `[param]` 매개변수를 지원합니다. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | 아래 예시 참조 | • Rewrite 규칙은 `mode`보다 우선순위가 높습니다.<br/>• Next.js Vite와 함께 작동합니다.<br/>• `getLocalizedUrl()`은 일치하는 규칙을 자동으로 적용합니다.<br/>• [사용자 정의 URL 재작성](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md)을 참조하세요. |
722
- | `domains` | 도메인 기반 라우팅을 위해 로케일을 도메인 호스트 이름에 매핑합니다. 설정된 경우 로케일의 URL 해당 도메인을 베이스(절대 URL)로 사용하며 경로에 로케일 접두사가 추가되지 않습니다. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | 호스트 이름에 포함되지 않은 경우 기본 프로토콜은 `https://`입니다.<br/>• 도메인 자체가 로케일을 식별하므로 `/zh/` 접두사가 추가되지 않습니다.<br/>• `getLocalizedUrl('/', 'zh')`는 `https://intlayer.zh/`를 반환합니다. |
732
+ | 필드 | 설명 | 타입 | 기본값 | 예시 | 참고 |
733
+ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
734
+ | `mode` | 로케일 처리를 위한 URL 라우팅 모드. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) 또는 `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: 로케일이 다른 수단으로 관리됨. `'search-params'`: `/dashboard?locale=fr` | 쿠키나 로컬 스토리지 관리에는 영향을 주지 않습니다. |
735
+ | `enableProxy` | Intlayer 로케일 라우팅 프록시(미들웨어)를 활성화합니다. | `boolean` &#124; <br/> `undefined` | `undefined` (auto) | `true` | 미설정(auto): dev preview 서버는 쿠키/헤더에 저장된 로케일을 리디렉션 소스로 무시합니다. 접두사, 저장, `Accept-Language` 감지는 계속 동작합니다. 프로덕션에서는 `true`와 동일합니다.<br/>• `true`: 어디서나 완전한 동작.<br/>• `false`: 로케일 라우팅 없음. Next.js에서는 `intlayerProxy` 미들웨어가 패스스루가 됩니다. |
736
+ | `storage` | 클라이언트에서 로케일을 저장하기 위한 구성. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | 아래의 저장소 옵션 표를 참조하세요. |
737
+ | `basePath` | 애플리케이션 URL의 기본 경로. | `string` | `''` | `'/my-app'` | 앱이 `https://example.com/my-app`에 있는 경우 basePath는 `'/my-app'`이며 URL `https://example.com/my-app/en`이 됩니다. |
738
+ | `rewrite` | 특정 로케일 경로에 대해 기본 라우팅 모드를 재정의하기 위한 사용자 정의 URL 재작성 규칙. 동적 `[param]` 매개변수를 지원합니다. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | 아래 예시 참조 | Rewrite 규칙은 `mode`보다 우선순위가 높습니다.<br/>• Next.js Vite와 함께 작동합니다.<br/>• `getLocalizedUrl()`은 일치하는 규칙을 자동으로 적용합니다.<br/>• [사용자 정의 URL 재작성](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md)을 참조하세요. |
739
+ | `domains` | 도메인 기반 라우팅을 위해 로케일을 도메인 호스트 이름에 매핑합니다. 설정된 경우 로케일의 URL은 해당 도메인을 베이스(절대 URL)로 사용하며 경로에 로케일 접두사가 추가되지 않습니다. | `Partial<Record<Locale, string>>` | `undefined` | `{ zh: 'intlayer.zh', fr: 'intlayer.org' }` | • 호스트 이름에 포함되지 않은 경우 기본 프로토콜은 `https://`입니다.<br/>• 도메인 자체가 로케일을 식별하므로 `/zh/` 접두사가 추가되지 않습니다.<br/>• `getLocalizedUrl('/', 'zh')`는 `https://intlayer.zh/`를 반환합니다. |
723
740
 
724
741
  **`rewrite` 예시**:
725
742
 
@@ -23,7 +23,9 @@ history:
23
23
  author: aymericzip
24
24
  ---
25
25
 
26
- # 파일 콘텐츠 / Intlayer에서 파일 임베딩하기
26
+ # Intlayer의 파일 콘텐츠 / 파일 임베딩
27
+
28
+ Intlayer에서 `file` 함수는 외부 파일 콘텐츠를 딕셔너리에 임베드할 수 있게 합니다. 이 방식은 Intlayer이 소스 파일을 인식하도록 하여 Intlayer Visual Editor 및 CMS와의 seamless 통합을 가능하게 합니다.
27
29
 
28
30
  ## 파일 임베딩 작동 방식
29
31
 
@@ -64,6 +64,53 @@ export default firstDictionary;
64
64
  }
65
65
  ```
66
66
 
67
+ ### Nest를 통한 참조
68
+
69
+ 이제 위의 콘텐츠를 참조하기 위해 `nest` 함수를 사용하는 다른 콘텐츠 모듈을 만듭니다. 전체 콘텐츠 또는 특정 중첩된 값을 참조할 수 있습니다:
70
+
71
+ ```typescript fileName="secondDictionary.content.ts" contentDeclarationFormat={["typescript", "esm", "commonjs"]}
72
+ import { nest, type Dictionary } from "intlayer";
73
+
74
+ const myNestingContent = {
75
+ key: "key_of_my_second_dictionary",
76
+ content: {
77
+ // 전체 딕셔너리를 참조합니다:
78
+ fullNestedContent: nest("key_of_my_first_dictionary"),
79
+ // 특정 중첩된 값을 참조합니다:
80
+ partialNestedContent: nest(
81
+ "key_of_my_first_dictionary",
82
+ "subContent.contentNumber"
83
+ ),
84
+ },
85
+ } satisfies Dictionary;
86
+
87
+ export default myNestingContent;
88
+ ```
89
+
90
+ ```json fileName="secondDictionary.content.json" contentDeclarationFormat="json"
91
+ {
92
+ "$schema": "https://intlayer.org/schema.json",
93
+ "key": "key_of_my_second_dictionary",
94
+ "content": {
95
+ "fullNestedContent": {
96
+ "nodeType": "nested",
97
+ "nested": {
98
+ "dictionaryKey": "key_of_my_first_dictionary"
99
+ }
100
+ },
101
+ "partialNestedContent": {
102
+ "nodeType": "nested",
103
+ "nested": {
104
+ "dictionaryKey": "key_of_my_first_dictionary",
105
+ "path": "subContent.contentNumber"
106
+ }
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ 두 번째 파라미터로는 해당 콘텐츠 내의 중첩된 값으로의 경로를 지정할 수 있습니다. 경로가 제공되지 않으면 참조된 딕셔너리의 전체 콘텐츠가 반환됩니다.
113
+
67
114
  ## 중첩 설정
68
115
 
69
116
  <Tabs group="framework">
@@ -258,36 +305,6 @@ document.getElementById("nested")!.textContent = content.partialNestedContent;
258
305
  </Tab>
259
306
  </Tabs>
260
307
 
261
- ## React Intlayer와 함께 중첩 사용
262
-
263
- React 컴포넌트에서 중첩된 콘텐츠를 사용하려면 `react-intlayer` 패키지의 `useIntlayer` 훅을 활용하세요. 이 훅은 지정된 키를 기반으로 올바른 콘텐츠를 가져옵니다. 사용 예제는 다음과 같습니다:
264
-
265
- ```tsx fileName="**/*.tsx" codeFormat={["typescript", "esm"]}
266
- import type { FC } from "react";
267
- import { useIntlayer } from "react-intlayer";
268
-
269
- const NestComponent: FC = () => {
270
- const { fullNestedContent, partialNestedContent } = useIntlayer(
271
- "key_of_my_second_dictionary"
272
- );
273
-
274
- return (
275
- <div>
276
- <p>
277
- Full Nested Content: {JSON.stringify(fullNestedContent)}
278
- {/* 출력: {"content": "content", "subContent": {"contentNumber": 0, "contentString": "string"}} */}
279
- </p>
280
- <p>
281
- Partial Nested Value: {partialNestedContent}
282
- {/* 출력: 0 */}
283
- </p>
284
- </div>
285
- );
286
- };
287
-
288
- export default NestComponent;
289
- ```
290
-
291
308
  ## 추가 자료
292
309
 
293
310
  구성 및 사용에 대한 자세한 정보는 다음 리소스를 참조하세요:
@@ -46,34 +46,6 @@ author: aymericzip
46
46
 
47
47
  Intlayer는 네이티브 `Intl` API 위에 구축된 경량 헬퍼 세트와 무거운 포매터를 반복 생성하지 않도록 하는 캐시된 `Intl` 래퍼를 제공합니다. 이 유틸리티들은 완전한 로케일 인식을 지원하며 메인 `intlayer` 패키지에서 사용할 수 있습니다.
48
48
 
49
- ### 임포트
50
-
51
- ```ts
52
- import {
53
- Intl,
54
- number,
55
- percentage,
56
- currency,
57
- date,
58
- relativeTime,
59
- units,
60
- compact,
61
- list,
62
- getLocaleName,
63
- getLocaleLang,
64
- getLocaleFromPath,
65
- getPathWithoutLocale,
66
- getLocalizedUrl,
67
- getHTMLTextDir,
68
- getContent,
69
- getTranslation,
70
- getIntlayer,
71
- getIntlayerAsync,
72
- } from "intlayer";
73
- ```
74
-
75
- React를 사용하는 경우, 훅도 제공됩니다; `react-intlayer/format`을 참조하세요.
76
-
77
49
  ## 캐시된 Intl
78
50
 
79
51
  내보내진 `Intl`은 전역 `Intl`을 감싼 얇은 캐시 래퍼입니다. 이는 `NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, `DisplayNames`, `Collator`, `PluralRules` 인스턴스를 메모이제이션하여 동일한 포매터를 반복 생성하는 것을 방지합니다.
@@ -110,72 +82,8 @@ pluralRules.select(1); // "one"
110
82
  pluralRules.select(2); // "other"
111
83
  ```
112
84
 
113
- ## 추가 Intl 유틸리티
114
-
115
- 포매터 헬퍼 외에도, 캐시된 Intl 래퍼를 직접 사용하여 다른 Intl 기능을 활용할 수 있습니다:
116
-
117
- ### `Intl.DisplayNames`
118
-
119
- 언어, 지역, 통화, 스크립트의 현지화된 이름을 위한 기능:
120
-
121
- ```ts
122
- import { Intl } from "intlayer";
123
-
124
- const languageNames = new Intl.DisplayNames("en", { type: "language" });
125
- languageNames.of("fr"); // "French"
126
-
127
- const regionNames = new Intl.DisplayNames("fr", { type: "region" });
128
- regionNames.of("US"); // "États-Unis"
129
- ```
130
-
131
- ### `Intl.Collator`
132
-
133
- 로케일 인식 문자열 비교 및 정렬을 위해:
134
-
135
- ```ts
136
- import { Intl } from "intlayer";
137
-
138
- const collator = new Intl.Collator("de", {
139
- sensitivity: "base",
140
- numeric: true,
141
- });
142
-
143
- const words = ["äpfel", "zebra", "100", "20"];
144
- words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
145
- ```
146
-
147
- ### `Intl.PluralRules`
148
-
149
- 다양한 로케일에서 복수형을 결정하기 위해:
150
-
151
- ```ts
152
- import { Intl } from "intlayer";
153
-
154
- const pluralRules = new Intl.PluralRules("ar");
155
- pluralRules.select(0); // "zero"
156
- pluralRules.select(1); // "one"
157
- pluralRules.select(2); // "two"
158
- pluralRules.select(3); // "few"
159
- pluralRules.select(11); // "many"
160
- ```
161
-
162
85
  ## 로케일 유틸리티
163
86
 
164
- ### `getLocaleName(displayLocale, targetLocale?)`
165
-
166
- 다른 로케일에서 로케일의 현지화된 이름을 가져옵니다:
167
-
168
- ```ts
169
- import { getLocaleName } from "intlayer";
170
-
171
- getLocaleName("fr", "en"); // "French"
172
- getLocaleName("en", "fr"); // "anglais"
173
- getLocaleName("de", "es"); // "alemán"
174
- ```
175
-
176
- - **displayLocale**: 이름을 가져올 로케일
177
- - **targetLocale**: 이름을 표시할 로케일 (기본값은 displayLocale)
178
-
179
87
  ### `getLocaleLang(locale?)`
180
88
 
181
89
  로케일 문자열에서 언어 코드를 추출합니다:
@@ -206,22 +114,6 @@ getLocaleFromPath("https://example.com/es/about"); // "es"
206
114
  - **inputUrl**: 처리할 전체 URL 문자열 또는 경로명
207
115
  - **returns**: 감지된 로케일 또는 로케일이 없을 경우 기본 로케일
208
116
 
209
- ### `getPathWithoutLocale(inputUrl, locales?)`
210
-
211
- URL 또는 경로명에서 로케일 세그먼트를 제거합니다:
212
-
213
- ```ts
214
- import { getPathWithoutLocale } from "intlayer";
215
-
216
- getPathWithoutLocale("/en/dashboard"); // "/dashboard"
217
- getPathWithoutLocale("/fr/dashboard"); // "/dashboard"
218
- getPathWithoutLocale("https://example.com/en/about"); // "https://example.com/about"
219
- ```
220
-
221
- - **inputUrl**: 처리할 전체 URL 문자열 또는 경로명
222
- - **locales**: 선택적 지원 로케일 배열 (기본값은 구성된 로케일)
223
- - **returns**: 로케일 세그먼트가 제거된 URL
224
-
225
117
  ### `getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)`
226
118
 
227
119
  현재 로케일에 맞는 로컬라이즈된 URL을 생성합니다:
@@ -330,9 +222,11 @@ const content = await getIntlayerAsync("common", "fr");
330
222
 
331
223
  아래의 모든 헬퍼는 `intlayer`에서 내보내집니다.
332
224
 
333
- ### `number(value, options?)`
225
+ ### `percentage(value, options?)`
226
+
227
+ 숫자를 백분율 문자열로 포맷합니다.
334
228
 
335
- 로케일 인식 그룹화 소수점 표기를 사용하여 숫자 값을 포맷합니다.
229
+ 동작: 1보다 값은 전체 백분율로 해석되어 정규화됩니다 (예: `25` → `25%`, `0.25` → `25%`).
336
230
 
337
231
  - **value**: `number | string`
338
232
  - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
@@ -340,49 +234,121 @@ const content = await getIntlayerAsync("common", "fr");
340
234
  예시:
341
235
 
342
236
  ```ts
343
- import { number } from "intlayer";
237
+ import { percentage } from "intlayer";
344
238
 
345
- number(123456.789); // "123,456.789" (en-US 기준)
346
- number("1000000", { locale: "fr" }); // "1 000 000"
347
- number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
239
+ percentage(0.25); // "25%"
240
+ percentage(25); // "25%"
241
+ percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
348
242
  ```
349
243
 
350
- ### `percentage(value, options?)`
244
+ ### Formatter Functions
351
245
 
352
- 숫자를 백분율 문자열로 포맷합니다.
246
+ #### `number(value, options?)`
353
247
 
354
- 동작: 1보다 값은 전체 백분율로 해석되어 정규화됩니다 (예: `25` → `25%`, `0.25` → `25%`).
248
+ 로케일을 인식하는 그룹핑 소수점으로 숫자 값을 포맷합니다.
355
249
 
356
250
  - **value**: `number | string`
357
251
  - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
358
252
 
359
- 예시:
360
-
361
253
  ```ts
362
- import { percentage } from "intlayer";
254
+ number(123456.789); // "123,456.789" (in en-US)
255
+ number("1000000", { locale: "fr" }); // "1 000 000"
256
+ number(1234.5, { minimumFractionDigits: 2 }); // "1,234.50"
257
+ ```
258
+
259
+ #### `percentage(value, options?)`
260
+
261
+ 숫자를 백분율 문자열로 포맷합니다. 1보다 큰 값은 정규화됩니다 (예: `25` → `25%`, `0.25` → `25%`).
363
262
 
263
+ - **value**: `number | string`
264
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
265
+
266
+ ```ts
364
267
  percentage(0.25); // "25%"
365
268
  percentage(25); // "25%"
366
269
  percentage(0.237, { minimumFractionDigits: 1 }); // "23.7%"
367
270
  ```
368
271
 
369
- ### `currency(value, options?)`
272
+ #### `currency(value, options?)`
370
273
 
371
- 값을 현지화된 통화 형식으로 포맷합니다. 기본값은 소수점 두 자리의 `USD`입니다.
274
+ 값을 로컬화된 통화로 포맷합니다. 기본값은 `USD`입니다.
372
275
 
373
276
  - **value**: `number | string`
374
277
  - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
375
- - 일반 필드: `currency` (예: `"EUR"`), `currencyDisplay` (`"symbol" | "code" | "name"`)
376
-
377
- 예시:
278
+ - Common: `currency`, `currencyDisplay` (`"symbol" | "code" | "name"`)
378
279
 
379
280
  ```ts
380
- import { currency } from "intlayer";
381
-
382
281
  currency(1234.5, { currency: "EUR" }); // "€1,234.50"
383
282
  currency("5000", { locale: "fr", currency: "CAD", currencyDisplay: "code" }); // "5 000,00 CAD"
384
283
  ```
385
284
 
285
+ #### `date(date, optionsOrPreset?)`
286
+
287
+ 날짜/시간 값을 포맷합니다.
288
+
289
+ - **date**: `Date | string | number`
290
+ - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` 또는 preset: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
291
+
292
+ ```ts
293
+ date(new Date(), "short"); // 예: "08/02/25, 14:30"
294
+ date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
295
+ ```
296
+
297
+ #### `relativeTime(from, to?, options?)`
298
+
299
+ 두 순간 사이의 상대 시간을 형식화합니다.
300
+
301
+ - **from**: `Date | string | number`
302
+ - **to**: `Date | string | number` (기본값: `new Date()`)
303
+ - **options**: `{ locale?, unit?, numeric?, style? }`
304
+
305
+ ```ts
306
+ const now = new Date();
307
+ const in3Days = new Date(now.getTime() + 3 * 864e5);
308
+ relativeTime(now, in3Days, { unit: "day" }); // "in 3 days"
309
+
310
+ const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
311
+ relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2 hours ago"
312
+ ```
313
+
314
+ #### `units(value, options?)`
315
+
316
+ 단위를 포함하여 숫자 값을 포맷팅합니다.
317
+
318
+ - **value**: `number | string`
319
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
320
+ - Common: `unit` (예: `"kilometer"`, `"byte"`), `unitDisplay` (`"short" | "narrow" | "long"`)
321
+
322
+ ```ts
323
+ units(5, { unit: "kilometer", unitDisplay: "long", locale: "en-GB" }); // "5 kilometers"
324
+ units(1024, { unit: "byte", unitDisplay: "narrow" }); // "1,024B"
325
+ ```
326
+
327
+ #### `compact(value, options?)`
328
+
329
+ 압축 표기법을 사용하여 숫자를 포맷팅합니다.
330
+
331
+ - **value**: `number | string`
332
+ - **options**: `Intl.NumberFormatOptions & { locale?: LocalesValues }`
333
+
334
+ ```ts
335
+ compact(1200); // "1.2K"
336
+ compact("1000000", { locale: "fr", compactDisplay: "long" }); // "1 million"
337
+ ```
338
+
339
+ #### `list(values, options?)`
340
+
341
+ 배열을 로컬라이즈된 리스트 문자열로 포맷합니다.
342
+
343
+ - **values**: `(string | number)[]`
344
+ - **options**: `Intl.ListFormatOptions & { locale?: LocalesValues }`
345
+ - 일반적: `type` (`"conjunction" | "disjunction" | "unit"`), `style` (`"long" | "short" | "narrow"`)
346
+
347
+ ```ts
348
+ list(["apple", "banana", "orange"]); // "apple, banana, and orange"
349
+ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge, vert ou bleu"
350
+ ```
351
+
386
352
  ## Cached Intl
387
353
 
388
354
  `intlayer`에서 내보낸 `Intl`은 전역 `Intl`을 래핑한 캐시된 래퍼입니다. formatter 인스턴스(`NumberFormat`, `DateTimeFormat` 등)를 메모이제이션하여 반복적인 구성을 피하고 성능을 향상시킵니다.
@@ -413,44 +379,34 @@ pluralRules.select(2); // "other"
413
379
 
414
380
  ### 추가 Intl 기능
415
381
 
416
- ### `date(date, optionsOrPreset?)`
417
-
418
- `Intl.DateTimeFormat`을 사용하여 날짜/시간 값을 포맷합니다.
419
-
420
- - **date**: `Date | string | number`
421
- - **optionsOrPreset**: `Intl.DateTimeFormatOptions & { locale?: LocalesValues }` 또는 다음 프리셋 중 하나:
422
- - 프리셋: `"short" | "long" | "dateOnly" | "timeOnly" | "full"`
382
+ #### `Intl.DisplayNames`
423
383
 
424
- 예시:
384
+ 언어, 지역, 통화 및 스크립트의 지역화된 이름을 위해:
425
385
 
426
386
  ```ts
427
- import { date } from "intlayer";
428
-
429
- date(new Date(), "short"); // 예: "08/02/25, 14:30"
430
- date("2025-08-02T14:30:00Z", { locale: "fr", month: "long", day: "numeric" }); // "2 août"
431
- ```
387
+ import { Intl } from "intlayer";
432
388
 
433
- ### `relativeTime(from, to = new Date(), options?)`
389
+ const languageNames = new Intl.DisplayNames("en", { type: "language" });
390
+ languageNames.of("fr"); // "French"
434
391
 
435
- `Intl.RelativeTimeFormat`을 사용하여 시점 간의 상대 시간을 포맷합니다.
392
+ const regionNames = new Intl.DisplayNames("fr", { type: "region" });
393
+ regionNames.of("US"); // "États-Unis"
394
+ ```
436
395
 
437
- - 첫 번째 인수로 "now"를 전달하고 두 번째 인수로 대상 시점을 전달하면 자연스러운 표현을 얻을 수 있습니다.
438
- - **from**: `Date | string | number`
439
- - **to**: `Date | string | number` (기본값은 `new Date()`)
440
- - **options**: `{ locale?: LocalesValues; unit?: Intl.RelativeTimeFormatUnit; numeric?: Intl.RelativeTimeFormatNumeric; style?: Intl.RelativeTimeFormatStyle }`
441
- - 기본 `unit`은 `"second"`입니다.
396
+ #### `Intl.Collator`
442
397
 
443
- 예시:
398
+ 로케일을 인식한 문자열 비교 및 정렬:
444
399
 
445
400
  ```ts
446
- import { relativeTime } from "intlayer";
401
+ import { Intl } from "intlayer";
447
402
 
448
- const now = new Date();
449
- const in3Days = new Date(now.getTime() + 3 * 864e5);
450
- relativeTime(now, in3Days, { unit: "day" }); // "3일 후"
403
+ const collator = new Intl.Collator("de", {
404
+ sensitivity: "base",
405
+ numeric: true,
406
+ });
451
407
 
452
- const twoHoursAgo = new Date(now.getTime() - 2 * 3600e3);
453
- relativeTime(now, twoHoursAgo, { unit: "hour", numeric: "auto" }); // "2시간 "
408
+ const words = ["äpfel", "zebra", "100", "20"];
409
+ words.sort(collator.compare); // ["20", "100", "äpfel", "zebra"]
454
410
  ```
455
411
 
456
412
  #### `Intl.PluralRules`
@@ -545,44 +501,20 @@ list(["red", "green", "blue"], { locale: "fr", type: "disjunction" }); // "rouge
545
501
  list([1, 2, 3], { type: "unit" }); // "1, 2, 3"
546
502
  ```
547
503
 
548
- ## 참고 사항
549
-
550
- - 모든 헬퍼는 `string` 입력을 허용하며, 내부적으로 숫자나 날짜로 강제 변환됩니다.
551
- - 로케일이 제공되지 않으면 구성된 `internationalization.defaultLocale`이 기본값으로 사용됩니다.
552
- - 이 유틸리티들은 얇은 래퍼이며, 고급 포맷팅이 필요할 경우 표준 `Intl` 옵션을 직접 전달하세요.
553
-
554
- ## Content Handling Utilities
555
-
556
- ## 진입점 및 재내보내기 (`@index.ts`)
557
-
558
- 포매터들은 코어 패키지에 존재하며, 런타임 전반에 걸쳐 임포트를 편리하게 하기 위해 상위 패키지에서 재내보내기됩니다:
504
+ ### `getHTMLTextDir(locale?)`
559
505
 
560
- 예시:
506
+ 로케일에 대한 텍스트 방향을 반환합니다:
561
507
 
562
508
  ```ts
563
- // 코드 (권장)
564
- import {
565
- number,
566
- currency,
567
- date,
568
- relativeTime,
569
- units,
570
- compact,
571
- list,
572
- Intl,
573
- getLocaleName,
574
- getLocaleLang,
575
- getLocaleFromPath,
576
- getPathWithoutLocale,
577
- getLocalizedUrl,
578
- getHTMLTextDir,
579
- getContent,
580
- getTranslation,
581
- getIntlayer,
582
- getIntlayerAsync,
583
- } from "intlayer";
509
+ import { getHTMLTextDir } from "intlayer";
510
+
511
+ getHTMLTextDir("en-US"); // "ltr"
512
+ getHTMLTextDir("ar"); // "rtl"
513
+ getHTMLTextDir("he"); // "rtl"
584
514
  ```
585
515
 
516
+ ## Content Handling Utilities
517
+
586
518
  ### React
587
519
 
588
520
  클라이언트 컴포넌트:
@@ -663,6 +595,20 @@ import {
663
595
 
664
596
  > 이 훅들은 `IntlayerProvider` 또는 `IntlayerServerProvider`에서 설정된 로케일을 고려합니다.
665
597
 
598
+ ### `getTranslation(languageContent, locale?, fallback?)`
599
+
600
+ 특정 로케일의 콘텐츠를 추출합니다:
601
+
602
+ ```ts
603
+ import { getTranslation } from "intlayer";
604
+
605
+ const content = getTranslation(
606
+ { ko: "안녕하세요", en: "Hello", fr: "Bonjour", de: "Hallo" },
607
+ "fr",
608
+ true
609
+ ); // "Bonjour"
610
+ ```
611
+
666
612
  ### Vue
667
613
 
668
614
  클라이언트 컴포넌트: