@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
@@ -715,41 +715,71 @@ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
715
715
  Link.displayName = "Link";
716
716
  ```
717
717
 
718
- ### VS Code 확장 프로그램
718
+ #### 작동 방식
719
719
 
720
- Intlayer 개발 경험을 향상시키기 위해 공식 **Intlayer VS Code 확장 프로그램**을 설치할 수 있습니다.
720
+ - **외부 링크 감지**:
721
+ 헬퍼 함수 `checkIsExternalLink`는 URL이 외부 링크인지 여부를 결정합니다. 외부 링크는 로컬라이제이션이 필요하지 않기 때문에 변경되지 않습니다.
722
+ - **현재 로케일 검색**:
723
+ `useLocale` 훅은 현재 로케일(예: 프랑스어의 경우 `fr`)을 제공합니다.
724
+ - **URL 로컬라이징**:
725
+ 내부 링크(즉, 외부가 아닌)의 경우, `getLocalizedUrl`을 사용하여 자동으로 URL에 현재 로케일을 접두사로 추가합니다. 이는 사용자가 프랑스어를 사용 중인 경우 `href`로 `/about`을 전달하면 `/fr/about`으로 변환된다는 의미입니다.
726
+ - **링크 반환**:
727
+ 컴포넌트는 로컬라이징된 URL과 함께 `<a>` 요소를 반환하여 네비게이션이 로케일과 일치하도록 보장합니다.
721
728
 
722
- [VS Code 마켓플레이스에서 설치](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
729
+ </Step>
723
730
 
724
- 확장 프로그램은 다음을 제공합니다:
731
+ <Step number={11} title="Markdown HTML 렌더링" isOptional={true}>
725
732
 
726
- - 번역 키에 대한 **자동 완성**.
727
- - 누락된 번역에 대한 **실시간 오류 감지**.
728
- - 번역된 콘텐츠의 **인라인 미리보기**.
729
- - 번역을 쉽게 생성하고 업데이트할 수 있는 **빠른 작업**.
733
+ Intlayer는 Preact에서 Markdown HTML 콘텐츠 렌더링을 지원합니다.
730
734
 
731
- 확장 프로그램 사용법에 대한 자세한 내용은 [Intlayer VS Code 확장 프로그램 문서](https://intlayer.org/doc/vs-code-extension)를 참조하세요.
735
+ `.use()` 메서드를 사용하여 Markdown HTML 콘텐츠의 렌더링을 커스터마이징할 있습니다. 메서드를 사용하면 특정 태그의 기본 렌더링을 재정의할 수 있습니다.
732
736
 
733
- ---
737
+ ```tsx
738
+ import { useIntlayer } from "preact-intlayer";
734
739
 
735
- <Steps>
740
+ const { myMarkdownContent, myHtmlContent } = useIntlayer("my-component");
741
+
742
+ // ...
743
+
744
+ return (
745
+ <div>
746
+ {/* 기본 렌더링 */}
747
+ {myMarkdownContent}
748
+
749
+ {/* Markdown에 대한 커스텀 렌더링 */}
750
+ {myMarkdownContent.use({
751
+ h1: (props) => <h1 style={{ color: "red" }} {...props} />,
752
+ })}
753
+
754
+ {/* HTML에 대한 기본 렌더링 */}
755
+ {myHtmlContent}
756
+
757
+ {/* HTML에 대한 커스텀 렌더링 */}
758
+ {myHtmlContent.use({
759
+ b: (props) => <strong style={{ color: "blue" }} {...props} />,
760
+ })}
761
+ </div>
762
+ );
763
+ ```
764
+
765
+ </Step>
736
766
 
737
- <Step number={1} title="컴포넌트 콘텐츠 추출" isOptional={true}>
767
+ <Step number={12} title="컴포넌트의 콘텐츠 추출" isOptional={true}>
738
768
 
739
- 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 시간이 많이 걸릴 수 있습니다.
769
+ 기존 codebase가 있는 경우 수천 개의 파일을 변환하는 것은 시간이 많이 걸릴 수 있습니다.
740
770
 
741
- 이 프로세스를 용이하게 하기 위해 Intlayer는 컴포넌트를 변환하고 콘텐츠를 추출하기 위한 [컴파일러](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/compiler.md) / [추출기](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/extract.md)를 제안합니다.
771
+ 이 프로세스를 용이하게 하기 위해 Intlayer는 컴포넌트를 변환하고 콘텐츠를 추출할 있는 [compiler](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/compiler.md) / [extractor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/extract.md)를 제공합니다.
742
772
 
743
- 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
773
+ 이를 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다:
744
774
 
745
775
  ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
746
776
  import { type IntlayerConfig } from "intlayer";
747
777
 
748
778
  const config: IntlayerConfig = {
749
- // ... 나머지 구성
779
+ // ... 나머지 설정
750
780
  compiler: {
751
781
  /**
752
- * 컴파일러 활성화 여부를 나타냅니다.
782
+ * 컴파일러를 활성화할지 여부를 나타냅니다.
753
783
  */
754
784
  enabled: true,
755
785
 
@@ -759,7 +789,11 @@ const config: IntlayerConfig = {
759
789
  output: ({ fileName, extension }) => `./${fileName}${extension}`,
760
790
 
761
791
  /**
762
- * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
792
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다.
793
+ *
794
+ * - `true`인 경우, 컴파일러는 컴포넌트 파일을 디스크에 다시 작성합니다. 따라서 변환이 영구적이고 컴파일러는 다음 프로세스에서 변환을 건너뜁니다. 이렇게 하면 컴파일러가 앱을 변환한 후 제거할 수 있습니다.
795
+ *
796
+ * - `false`인 경우, 컴파일러는 빌드 출력에만 `useIntlayer()` 함수 호출을 주입하고 기본 codebase를 그대로 유지합니다. 변환은 메모리에서만 수행됩니다.
763
797
  */
764
798
  saveComponents: false,
765
799
 
@@ -776,7 +810,7 @@ export default config;
776
810
  <Tabs>
777
811
  <Tab value='추출 명령'>
778
812
 
779
- 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
813
+ 추출기를 실행하여 컴포넌트를 변환하고 콘텐츠를 추출합니다.
780
814
 
781
815
  ```bash packageManager="npm"
782
816
  npx intlayer extract
@@ -797,9 +831,9 @@ bun x intlayer extract
797
831
  </Tab>
798
832
  <Tab value='Babel 컴파일러'>
799
833
 
800
- > Since v9, the `intlayerCompiler` is included in the `intlayer` plugin. So you don't need to add it manually.
834
+ > v9부터 `intlayerCompiler`는 `intlayer` 플러그인에 포함되어 있습니다. 따라서 수동으로 추가할 필요가 없습니다.
801
835
 
802
- `vite.config.ts`를 업데이트하여 `intlayerCompiler` 플러그인을 포함합니다.
836
+ `intlayerCompiler` 플러그인을 포함하도록 `vite.config.ts`를 업데이트합니다:
803
837
 
804
838
  ```ts fileName="vite.config.ts"
805
839
  import { defineConfig } from "vite";
@@ -808,7 +842,7 @@ import { intlayer, intlayerCompiler } from "vite-intlayer";
808
842
  export default defineConfig({
809
843
  plugins: [
810
844
  intlayer(),
811
- intlayerCompiler(), // Adds the compiler plugin
845
+ intlayerCompiler(), // 컴파일러 플러그인 추가
812
846
  ],
813
847
  });
814
848
  ```
@@ -826,7 +860,7 @@ yarn build # 또는 yarn dev
826
860
  ```
827
861
 
828
862
  ```bash packageManager="bun"
829
- bun run build # Or bun run dev
863
+ bun run build # 또는 bun run dev
830
864
  ```
831
865
 
832
866
  </Tab>
@@ -30,9 +30,7 @@ history:
30
30
  author: aymericzip
31
31
  ---
32
32
 
33
- # Intlayer Vite and Vue 번역하기 | 국제화(i18n)
34
-
35
- GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-vite-vue-template)을 확인하세요.
33
+ # Intlayer 사용하여 Vite Vue 웹사이트 번역 | 국제화 (i18n)
36
34
 
37
35
  ## 목차
38
36
 
@@ -13,6 +13,10 @@ keywords:
13
13
  - Intlayer
14
14
  - Next.js
15
15
  - Vite
16
+ slugs:
17
+ - doc
18
+ - concept
19
+ - live-sync
16
20
  history:
17
21
  - version: 9.0.0
18
22
  date: 2026-07-08
@@ -66,30 +66,32 @@ getLocalizedUrl(
66
66
  - **Type**: `Locales`
67
67
  - **Required**: Yes
68
68
 
69
- ## 매개변수
70
-
71
- - `url: string`
72
- - **설명**: 로케일 접두사가 붙을 원본 URL 문자열입니다.
73
- - **타입**: `string`
74
-
75
- - `currentLocale: Locales`
76
- - **설명**: URL이 지역화되는 현재 로케일입니다.
77
- - **타입**: `Locales`
78
-
79
- - `locales: Locales[]`
80
- - **설명**: 지원되는 로케일의 선택적 배열입니다. 기본적으로 프로젝트에 구성된 로케일이 제공됩니다.
81
- - **타입**: `Locales[]`
82
- - **기본값**: [`프로젝트 구성`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
83
-
84
- - `defaultLocale: Locales`
85
- - **설명**: 애플리케이션의 기본 로케일입니다. 기본적으로 프로젝트에 구성된 기본 로케일이 제공됩니다.
86
- - **타입**: `Locales`
87
- - **기본값**: [`프로젝트 구성`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
88
-
89
- - `prefixDefault: boolean`
90
- - **설명**: 기본 로케일에 대해 URL에 접두사를 붙일지 여부입니다. 기본적으로 프로젝트에 구성된 값이 제공됩니다.
91
- - **타입**: `boolean`
92
- - **기본값**: [`프로젝트 구성`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
69
+ ### 선택적 매개변수
70
+
71
+ - `options?: object`
72
+ - **설명**: URL 로컬라이제이션 동작을 위한 구성 객체입니다.
73
+ - **타입**: `object`
74
+ - **필수**: 아니오 (선택적)
75
+
76
+ - `options.locales?: Locales[]`
77
+ - **설명**: 지원되는 로컬의 배열입니다. 제공되지 않으면 프로젝트 구성에서 구성된 로컬을 사용합니다.
78
+ - **타입**: `Locales[]`
79
+ - **기본값**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
80
+
81
+ - `options.defaultLocale?: Locales`
82
+ - **설명**: 애플리케이션의 기본 로컬입니다. 제공되지 않으면 프로젝트 구성에서 구성된 기본 로컬을 사용합니다.
83
+ - **타입**: `Locales`
84
+ - **기본값**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
85
+
86
+ - `options.mode?: 'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
87
+ - **설명**: 로컬 처리를 위한 URL 라우팅 모드입니다. 제공되지 않으면 프로젝트 구성에서 구성된 모드를 사용합니다.
88
+ - **타입**: `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
89
+ - **기본값**: [`Project Configuration`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md#middleware)
90
+ - **모드**:
91
+ - `prefix-no-default`: 기본 로컬에는 접두사 없음, 다른 모든 로컬에는 접두사 사용
92
+ - `prefix-all`: 기본 로컬을 포함한 모든 로컬에 접두사 사용
93
+ - `no-prefix`: URL에 로컬 접두사 없음
94
+ - `search-params`: 로컬에 쿼리 매개변수 사용 (예: `?locale=fr`)
93
95
 
94
96
  ### 반환값
95
97
 
@@ -50,26 +50,12 @@ getMultilingualUrls(
50
50
 
51
51
  ## 매개변수
52
52
 
53
- ## 매개변수
53
+ ### 필수 매개변수
54
54
 
55
55
  - `url: string`
56
- - **설명**: 로케일 접두사를 붙일 원본 URL 문자열입니다.
57
- - **타입**: `string`
58
-
59
- - `locales: Locales[]`
60
- - **설명**: 선택적 지원 로케일 배열입니다. 프로젝트에 구성된 로케일이 기본값입니다.
61
- - **타입**: `Locales[]`
62
- - **기본값**: `localesDefault`
63
-
64
- - `defaultLocale: Locales`
65
- - **설명**: 애플리케이션의 기본 로케일입니다. 프로젝트에 구성된 기본 로케일이 기본값입니다.
66
- - **타입**: `Locales`
67
- - **기본값**: `defaultLocaleDefault`
68
-
69
- - `prefixDefault: boolean`
70
- - **설명**: 기본 로케일에 접두사를 붙일지 여부입니다. 프로젝트에 구성된 값이 기본값입니다.
71
- - **타입**: `boolean`
72
- - **기본값**: `prefixDefaultDefault`
56
+ - **Description**: 로케일로 접두어가 붙을 원본 URL 문자열입니다.
57
+ - **Type**: `string`
58
+ - **Required**: Yes
73
59
 
74
60
  ### 선택적 매개변수
75
61
 
@@ -48,3 +48,18 @@ import "vite-intlayer";
48
48
  | `intlayerProxy` | 로케일 감지와 라우팅을 처리하는 개발용 미들웨어 플러그인. | - |
49
49
  | `intlayerMiddleware` | (**사용 중단**) `intlayerProxy`의 별칭. | - |
50
50
  | `intlayerPrune` | 빌드 시 사용되지 않는 사전(딕셔너리)을 트리 쉐이킹하여 제거하는 플러그인. | [intlayerPrune](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/vite-intlayer/intlayerPrune.md) |
51
+
52
+ ### 유틸리티
53
+
54
+ | Export | Description | Related Doc |
55
+ | ---------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
56
+ | `createIntlayerProxyHandler` | 프레임워크에 독립적인 Node.js `(req, res, next)` 미들웨어를 반환하며, locale-routing 로직을 포함합니다. | [intlayerProxy](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/vite-intlayer/intlayerProxy.md) |
57
+
58
+ ### 타입
59
+
60
+ | Export | Description |
61
+ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
62
+ | `IntlayerPluginOptions` | `intlayer()`에서 허용하는 옵션입니다. `GetConfigurationOptions`를 `compatCallers` 및 `proxy`로 확장합니다. |
63
+ | `IntlayerProxyPluginOptions` | `intlayerProxy()` 및 `createIntlayerProxyHandler()`에서 허용하는 옵션입니다. `ignore` 및 `configOptions`를 포함합니다. |
64
+ | `IntlayerCompilerOptions` | `intlayerCompiler()`에서 허용하는 옵션입니다. `configOptions` 및 `compilerConfig`를 포함합니다. |
65
+ | `CompatCallerConfig` | `@intlayer/babel`에서 재내보내기됩니다. 필드 사용 분석을 위한 compat-adapter 호출자 패턴을 설명합니다. |
@@ -39,11 +39,126 @@ export default defineConfig({
39
39
  });
40
40
  ```
41
41
 
42
- ## 설명
42
+ ## 옵션
43
43
 
44
- 이 플러그인은 다음 작업을 수행합니다:
44
+ ```ts
45
+ import type { IntlayerPluginOptions } from "vite-intlayer";
46
+ ```
47
+
48
+ `IntlayerPluginOptions`는 `GetConfigurationOptions` (참고: `@intlayer/config`)를 확장하며 다음의 추가 필드를 포함합니다:
49
+
50
+ | 옵션 | 타입 | 기본값 | 설명 |
51
+ | --------------- | ------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------- |
52
+ | `compatCallers` | `CompatCallerConfig[]` | `[]` | compat-adapter 패키지(예: `@intlayer/react-i18next`)에 대한 추가 caller 패턴. 빌드 시간에 field-usage 분석기에 전달됩니다. |
53
+ | `proxy` | `{ ignore?: (req) => boolean }` | `undefined` | bundled locale-routing proxy로 전달되는 옵션. `ignore`를 사용하여 특정 경로(예: API 라우트)를 locale 라우팅에서 제외합니다. |
54
+
55
+ 다른 모든 옵션(`override`, `configFile`, …)은 `getConfiguration()`으로 직접 전달됩니다.
56
+
57
+ ### 예시
58
+
59
+ #### 로케일 라우팅에서 API 경로 무시하기
60
+
61
+ ```ts
62
+ // vite.config.ts
63
+ import { defineConfig } from "vite";
64
+ import { intlayer } from "vite-intlayer";
65
+
66
+ export default defineConfig({
67
+ plugins: [
68
+ intlayer({
69
+ proxy: {
70
+ ignore: (req) => req.url?.startsWith("/api"),
71
+ },
72
+ }),
73
+ ],
74
+ });
75
+ ```
76
+
77
+ #### 커스텀 설정 파일 경로 포함
78
+
79
+ ```ts
80
+ export default defineConfig({
81
+ plugins: [
82
+ intlayer({
83
+ configFile: "./config/intlayer.config.ts",
84
+ }),
85
+ ],
86
+ });
87
+ ```
88
+
89
+ #### compat-adapter callers와 함께
90
+
91
+ ```ts
92
+ import { intlayer } from "vite-intlayer";
93
+ import { reactI18nextCallerConfig } from "@intlayer/react-i18next/plugin";
94
+
95
+ export default defineConfig({
96
+ plugins: [
97
+ intlayer({
98
+ compatCallers: [reactI18nextCallerConfig],
99
+ }),
100
+ ],
101
+ });
102
+ ```
103
+
104
+ ## 플러그인의 역할
105
+
106
+ ### 1. Dictionary preparation
107
+
108
+ 빌드가 시작되기 전에(그리고 dev에서는 한 시간에 한 번), `intlayer`는 `prepareIntlayer`를 호출하여 모든 `.content.ts` 파일을 `.intlayer/`에 저장된 최적화된 JSON 딕셔너리로 컴파일합니다.
109
+
110
+ ### 2. Module aliases
111
+
112
+ 플러그인은 Vite resolve aliases를 추가하여 `import { myDict } from 'intlayer/dictionaries/my-dict'`가 디스크의 컴파일된 JSON 파일로 해석되도록 합니다. SSR 빌드는 `ssr.noExternal`을 사용하여 모든 `@intlayer/*` 패키지가 aliases와 함께 번들링되도록 합니다.
113
+
114
+ ### 3. Dev-server watcher
115
+
116
+ 개발 모드에서 `chokidar` watcher가 시작됩니다. `.content.ts` 파일이 변경되면 dictionaries가 다시 컴파일되고 Vite의 HMR이 브라우저에 업데이트를 전파합니다.
117
+
118
+ ### 4. 번들된 locale-routing proxy (v9+)
119
+
120
+ Intlayer v9 이후로 `intlayerProxy` 미들웨어는 `intlayer()` 내부에 자동으로 등록됩니다. 다음을 처리합니다:
121
+
122
+ - URL 접두사, 쿠키 및 `Accept-Language` 헤더에서 locale 감지.
123
+ - 감지된 locale이 현재 URL과 일치하지 않을 때 301 리다이렉트.
124
+ - 프레임워크가 올바른 `[locale]` 경로 매개변수를 인식하도록 하는 내부 URL 재작성.
125
+
126
+ 프록시는 Intlayer 구성의 `routing.enableProxy`(기본값 `true`)로 제어됩니다. 완전히 비활성화하려면:
127
+
128
+ ```ts
129
+ // intlayer.config.ts
130
+ import { defineConfig } from "intlayer";
131
+
132
+ export default defineConfig({
133
+ routing: { enableProxy: false },
134
+ });
135
+ ```
136
+
137
+ 별도의 `intlayerProxy()` 호출 없이 프록시 동작을 사용자 정의하려면 메인 플러그인에 `proxy` 옵션을 전달하세요:
138
+
139
+ ```ts
140
+ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api") } });
141
+ ```
142
+
143
+ 전체 라우팅 동작 참조는 [intlayerProxy documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/vite-intlayer/intlayerProxy.md)를 참조하세요.
144
+
145
+ ### 5. Bundled compiler (v9+)
146
+
147
+ `compiler.enabled`가 `true`이고 **그리고** Intlayer 설정에서 `compiler.output`이 설정되어 있으면, `intlayer()`는 `intlayerCompiler`을 자동으로 등록합니다. 컴파일러는 component 파일 내에 직접 작성된 인라인 content 선언을 추출하고 변환 시간에 dictionaries에 작성합니다. [intlayerCompiler documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/vite-intlayer/intlayerCompiler.md)을 참조하세요.
148
+
149
+ ### 6. Build optimisations
150
+
151
+ 프로덕션 빌드 중에 플러그인은 다음을 추가합니다:
152
+
153
+ - **intlayerOptimize** – `useIntlayer('key')` → `useDictionary(hash)`를 다시 작성하고 직접 JSON 임포트를 주입하는 Babel transform입니다.
154
+ - **intlayerPrune** – dictionary JSON에서 사용하지 않는 content 필드를 제거합니다.
155
+ - **intlayerMinify** – dictionary JSON을 압축하고 선택적으로 필드 이름을 난독화합니다.
156
+
157
+ 이들은 development 모드에서는 비활성화됩니다.
158
+
159
+ ## 더 이상 사용되지 않는 별칭
45
160
 
46
- 1. **딕셔너리 준비(Prepare Dictionaries)**: 빌드 또는 개발(dev) 프로세스 시작 시 딕셔너리를 최적화된 파일로 컴파일합니다.
47
- 2. **감시 모드(Watch Mode)**: 개발 모드에서 딕셔너리 파일의 변경을 감시하여 자동으로 재컴파일합니다.
48
- 3. **별칭(Aliases)**: 애플리케이션에서 딕셔너리에 접근할 수 있도록 별칭을 제공합니다.
49
- 4. **트리-쉐이킹(Tree-shaking)**: `intlayerPrune` 플러그인을 통해 사용되지 않는 번역을 트리-쉐이킹으로 제거하는 것을 지원합니다.
161
+ | 이상 사용되지 않는 export | 대체 항목 |
162
+ | ---------------------------- | ---------- |
163
+ | `intlayerPlugin` | `intlayer` |
164
+ | `intLayerPlugin` | `intlayer` |
@@ -28,18 +28,91 @@ author: aymericzip
28
28
 
29
29
  `intlayerPrune` Vite 플러그인은 애플리케이션 번들에서 사용되지 않는 사전(dictionary)을 트리 쉐이킹하고 제거(prune)하는 데 사용됩니다. 이를 통해 필요한 다국어 콘텐츠만 포함되어 최종 번들 크기를 줄일 수 있습니다.
30
30
 
31
- ## 사용
31
+ ## 사용법
32
+
33
+ ### `intlayer()`의 일부로 (권장)
34
+
35
+ Intlayer config를 통해 pruning을 활성화하면 main plugin이 모든 것을 처리합니다:
36
+
37
+ ```ts
38
+ // intlayer.config.ts
39
+ import { defineConfig } from "intlayer";
40
+
41
+ export default defineConfig({
42
+ build: {
43
+ optimize: true, // prune과 minify를 모두 활성화합니다
44
+ },
45
+ });
46
+ ```
47
+
48
+ ```ts
49
+ // vite.config.ts
50
+ import { defineConfig } from "vite";
51
+ import { intlayer } from "vite-intlayer";
52
+
53
+ export default defineConfig({
54
+ plugins: [intlayer()],
55
+ });
56
+ ```
57
+
58
+ ### Standalone
59
+
60
+ 플러그인 스택을 수동으로 구성하는 경우, `intlayerPrune`과 `intlayerMinify`는 한 번 생성하고 둘 다에 전달해야 하는 `PruneContext` 객체를 공유합니다:
32
61
 
33
62
  ```ts
34
- // vite.config.ts (Vite 설정 파일)
63
+ // vite.config.ts
35
64
  import { defineConfig } from "vite";
36
- import { intlayer, intlayerPrune } from "vite-intlayer";
65
+ import { intlayerPrune, intlayerMinify } from "vite-intlayer";
66
+ import { createPruneContext } from "@intlayer/babel";
67
+ import { getConfiguration } from "@intlayer/config/node";
68
+
69
+ const intlayerConfig = getConfiguration();
70
+ const pruneContext = createPruneContext();
37
71
 
38
72
  export default defineConfig({
39
- plugins: [intlayer(), intlayerPrune()],
73
+ plugins: [
74
+ intlayerPrune(intlayerConfig, pruneContext),
75
+ intlayerMinify(intlayerConfig, pruneContext), // 선택사항, 동일한 context에서 읽음
76
+ ],
40
77
  });
41
78
  ```
42
79
 
43
- ## 설명
80
+ ## 어떻게 작동하는가
81
+
82
+ ### 1. Usage analysis (buildStart)
83
+
84
+ `buildStart` 중에 `intlayerOptimize` 플러그인(`intlayer()`의 일부)은 `build.filesList`에 나열된 모든 component 소스 파일을 스캔합니다. 각 `useIntlayer('key')` 또는 `getIntlayer('key')` 호출에 대해, 정확히 어떤 필드가 액세스되는지 기록합니다. 예를 들어:
85
+
86
+ ```ts
87
+ const { title, description } = useIntlayer("myDict");
88
+ // records: myDict → { title, description }
89
+ ```
90
+
91
+ 이는 모든 `transform` 호출이 실행되기 전에 `pruneContext.fieldUsageMap`을 구성합니다.
92
+
93
+ ### 2. JSON pruning (transform, enforce: 'pre')
94
+
95
+ Vite가 컴파일된 dictionary JSON 파일을 처리할 때, `intlayerPrune`은 Vite의 built-in JSON → ESM 변환 전에 이를 가로챕니다. `pruneContext`에서 field-usage map을 읽고 기록된 usage set에 없는 모든 content field를 제거합니다.
96
+
97
+ 두 가지 content shape이 지원됩니다:
98
+
99
+ - **Static dictionaries** — `{ nodeType: "translation", translation: { en: {...}, fr: {...} } }`. Fields는 `translation` 내에서 per-locale별로 pruned됩니다.
100
+ - **Dynamic (per-locale) dictionaries** — flat `{ fieldA: ..., fieldB: ... }`. Fields는 top level에서 pruned됩니다.
101
+
102
+ ### 3. Edge cases
103
+
104
+ 사전의 콘텐츠 구조를 인식할 수 없는 경우(예: 비정상적인 중첩된 형태), 이는 `pruneContext.dictionariesWithEdgeCases`에 추가되고 **변경되지 않은 상태로 유지**됩니다. 경고가 기록됩니다. `intlayerMinify`도 이러한 사전을 건너뜁니다.
105
+
106
+ ### 4. Field-rename map
107
+
108
+ pruning이 성공하면, `intlayerPrune`은 `pruneContext.dictionaryKeyToFieldRenameMap`도 작성합니다. 이는 원본 필드 이름을 짧은 별칭으로 매핑합니다. `intlayerMinify`는 이 맵을 읽어 출력 JSON의 필드 이름을 변경하고, `intlayerOptimize`의 Babel rename pass는 소스 파일의 property 접근을 그에 따라 업데이트합니다.
109
+
110
+ ## 활성화 조건
111
+
112
+ `intlayerPrune`은 다음의 모든 조건이 참일 때**만** 활성화됩니다:
113
+
114
+ 1. Vite 명령이 `build`입니다.
115
+ 2. `build.optimize`가 `true`입니다 (또는 `undefined`인 경우, 빌드에 대해 기본값이 `true`입니다).
116
+ 3. Intlayer 구성에서 `build.purge`가 `true`입니다.
44
117
 
45
- 플러그인은 소스 코드를 분석하여 실제로 사용되는 사전 키를 식별합니다. 그런 다음 번들된 사전 파일에서 사용되지 않는 내용을 제거합니다. 이는 특정 페이지나 컴포넌트에서 일부만 사용되는 다수의 사전을 포함한 대형 프로젝트에서 특히 유용합니다.
118
+ `editor.enabled`가 `true`일 때는 편집기가 전체 사전 콘텐츠를 필요로 하기 때문에 자동으로 **비활성화**됩니다.
@@ -361,6 +361,18 @@ await dictionaryEndpoint(cms).pushDictionaries([myDictionary]);
361
361
 
362
362
  ---
363
363
 
364
+ ## Self-Hosting
365
+
366
+ Intlayer v9는 단일 명령으로 자신의 Intlayer 인스턴스를 실행할 수 있는 일급 지원을 제공합니다. Intlayer Cloud 계정이 필요하지 않습니다.
367
+
368
+ ```sh
369
+ curl -fsSL https://intlayer.org/install.sh | sh
370
+ ```
371
+
372
+ 설치 프로그램은 `docker-compose.yml` 및 `.env`를 다운로드하고, 필요한 시크릿을 자동으로 생성하며, `docker compose up -d`를 실행합니다. 대시보드, API, 데이터베이스, 객체 스토리지, 트랜잭션 이메일 등 모든 것이 컨테이너에서 로컬로 실행됩니다.
373
+
374
+ ---
375
+
364
376
  ## v8에서의 마이그레이션 노트
365
377
 
366
378
  v8에서 업그레이드하는 경우, v9에는 하위 호환성을 깨뜨리는 변경 사항(breaking changes)이 포함되어 있지 않습니다. 하지만 다음과 같은 주요 변경 사항이 있습니다: