@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,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
3
  updatedAt: 2026-05-31
4
- title: "Angular 21 i18n - 앱을 번역하는 완전 가이드"
5
- description: "i18next는 이제 그만. 2026년 다국어 (i18n) Angular 21 앱 구축 가이드. AI 에이전트로 번역하고 번들 크기, SEO, 성능을 최적화하세요."
4
+ title: "Angular 22 i18n - 앱을 번역하는 완전 가이드"
5
+ description: "i18next는 이제 그만. 2026년 다국어 (i18n) Angular 22 앱 구축 가이드. AI 에이전트로 번역하고 번들 크기, SEO, 성능을 최적화하세요."
6
6
  keywords:
7
7
  - 국제화
8
8
  - 문서
@@ -13,8 +13,8 @@ slugs:
13
13
  - doc
14
14
  - environment
15
15
  - angular
16
- applicationTemplate: https://github.com/aymericzip/intlayer-angular-21-template
17
- applicationShowcase: https://intlayer-angular-21-template.vercel.app/
16
+ applicationTemplate: https://github.com/aymericzip/intlayer-angular-22-template
17
+ applicationShowcase: https://intlayer-angular-22-template.vercel.app/
18
18
  history:
19
19
  - version: 8.9.0
20
20
  date: 2026-05-04
@@ -31,7 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Intlayer를 사용하여 Angular 21(Vite) 웹사이트 번역하기 | 국제화(i18n)
34
+ # Intlayer를 사용하여 Angular 22(Vite) 웹사이트 번역하기 | 국제화(i18n)
35
35
 
36
36
  ## 목차
37
37
 
@@ -94,7 +94,7 @@ Intlayer는 단순한 i18n 솔루션 그 이상으로 관리에 도움이 되는
94
94
  <Tab label="코드" value="code">
95
95
 
96
96
  <iframe
97
- src="https://ide.intlayer.org/aymericzip/intlayer-angular-21-template?file=intlayer.config.ts"
97
+ src="https://ide.intlayer.org/aymericzip/intlayer-angular-22-template?file=intlayer.config.ts"
98
98
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
99
99
  title="Demo CodeSandbox - Intlayer를 사용하여 애플리케이션을 국제화하는 방법"
100
100
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -105,7 +105,7 @@ Intlayer는 단순한 i18n 솔루션 그 이상으로 관리에 도움이 되는
105
105
  <Tab label="데모" value="demo">
106
106
 
107
107
  <iframe
108
- src="https://intlayer-angular-21-template.vercel.app/"
108
+ src="https://intlayer-angular-22-template.vercel.app/"
109
109
  className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
110
110
  title="Demo - intlayer-angular-template"
111
111
  sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
@@ -115,7 +115,7 @@ Intlayer는 단순한 i18n 솔루션 그 이상으로 관리에 도움이 되는
115
115
  </Tab>
116
116
  </Tabs>
117
117
 
118
- GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-angular-21-template)을 확인하세요.
118
+ GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-angular-22-template)을 확인하세요.
119
119
 
120
120
  <Steps>
121
121
 
@@ -203,7 +203,7 @@ export default config;
203
203
 
204
204
  <Step number={3} title="Angular 구성에 Intlayer 통합">
205
205
 
206
- Intlayer를 Angular CLI와 통합하려면 사용자 지정 빌더를 사용해야 합니다. 이 가이드에서는 Vite/esbuild(Angular 21 프로젝트의 기본값)를 사용한다고 가정합니다.
206
+ Intlayer를 Angular CLI와 통합하려면 사용자 지정 빌더를 사용해야 합니다. 이 가이드에서는 Vite/esbuild(Angular 22 프로젝트의 기본값)를 사용한다고 가정합니다.
207
207
 
208
208
  먼저 사용자 지정 esbuild 빌더를 사용하도록 `angular.json`을 수정합니다. `build` 및 `serve` 구성을 업데이트합니다:
209
209
 
@@ -84,9 +84,101 @@ Intlayer는 단순한 i18n 솔루션 그 이상으로 관리에 도움이 되는
84
84
 
85
85
  ---
86
86
 
87
- ## 5단계: 콘텐츠 선언
87
+ ### 패키지
88
88
 
89
- 프로젝트 내 어디에서나 **콘텐츠 선언** 파일을 생성하세요(일반적으로 `src/` 내). Intlayer가 지원하는 확장 형식을 사용할 수 있습니다:
89
+ - **intlayer**
90
+ 설정, 사전 콘텐츠, 타입 생성 및 CLI 명령을 위한 핵심 i18n 도구 모음입니다.
91
+
92
+ - **react-intlayer**
93
+ Lynx에서 로케일을 얻고 전환하기 위해 사용할 컨텍스트 제공자와 React 훅을 제공하는 React 통합입니다.
94
+
95
+ - **lynx-intlayer**
96
+ Intlayer를 Lynx bundler와 통합하기 위한 플러그인을 제공하는 Lynx 통합입니다.
97
+
98
+ ---
99
+
100
+ </Step>
101
+
102
+ <Step number={2} title="Intlayer 설정 파일 생성">
103
+
104
+ 프로젝트 루트(또는 편한 위치)에 **Intlayer 설정** 파일을 생성합니다. 다음과 같이 보일 수 있습니다:
105
+
106
+ ```ts fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
107
+ import { Locales, type IntlayerConfig } from "intlayer";
108
+
109
+ const config: IntlayerConfig = {
110
+ internationalization: {
111
+ locales: [
112
+ Locales.ENGLISH,
113
+ Locales.FRENCH,
114
+ Locales.SPANISH,
115
+ // ... 필요한 다른 로케일을 추가합니다
116
+ ],
117
+ defaultLocale: Locales.ENGLISH,
118
+ },
119
+ };
120
+
121
+ export default config;
122
+ ```
123
+
124
+ 이 설정 내에서 다음을 수행할 수 있습니다:
125
+
126
+ - **지원하는 로케일 목록**을 구성합니다.
127
+ - **기본** 로케일을 설정합니다.
128
+ - 나중에 더 고급 옵션을 추가할 수 있습니다(예: 로그, 사용자 정의 콘텐츠 디렉터리 등).
129
+ - [Intlayer 설정 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
130
+
131
+ </Step>
132
+
133
+ <Step number={3} title="Intlayer 플러그인을 Lynx bundler에 추가">
134
+
135
+ Intlayer를 Lynx와 함께 사용하려면 `lynx.config.ts` 파일에 플러그인을 추가해야 합니다:
136
+
137
+ ```ts fileName="lynx.config.ts"
138
+ import { defineConfig } from "@lynx-js/rspeedy";
139
+ import { pluginIntlayerLynx } from "lynx-intlayer/plugin";
140
+
141
+ export default defineConfig({
142
+ plugins: [
143
+ // ... 다른 플러그인
144
+ pluginIntlayerLynx(),
145
+ ],
146
+ });
147
+ ```
148
+
149
+ </Step>
150
+
151
+ <Step number={4} title="Intlayer 제공자 추가">
152
+
153
+ 애플리케이션 전체에서 사용자 언어를 동기화된 상태로 유지하려면 `react-intlayer`의 `IntlayerProvider` 컴포넌트로 루트 컴포넌트를 감싸야 합니다.
154
+
155
+ 또한 Intlayer가 제대로 작동하도록 보장하기 위해 `intlayerPolyfill` 함수 파일을 추가해야 합니다.
156
+
157
+ ```tsx fileName="src/index.tsx"
158
+ import { root } from "@lynx-js/react";
159
+
160
+ import { App } from "./App.js";
161
+ import { IntlayerProvider } from "react-intlayer";
162
+ import { intlayerPolyfill } from "lynx-intlayer";
163
+
164
+ intlayerPolyfill();
165
+
166
+ root.render(
167
+ <IntlayerProvider>
168
+ <App />
169
+ </IntlayerProvider>
170
+ );
171
+
172
+ if (import.meta.webpackHot) {
173
+ import.meta.webpackHot.accept();
174
+ }
175
+ ```
176
+
177
+ </Step>
178
+
179
+ <Step number={5} title="콘텐츠 선언">
180
+
181
+ 프로젝트의 어느 곳이든(일반적으로 `src/` 내) Intlayer가 지원하는 모든 확장명 형식을 사용하여 **콘텐츠 선언** 파일을 생성합니다:
90
182
 
91
183
  - `.content.json`
92
184
  - `.content.jsonc`
@@ -114,12 +206,13 @@ const appContent = {
114
206
  content: {
115
207
  title: "React",
116
208
  subtitle: t({
209
+ ko: "Lynx에서",
117
210
  en: "on Lynx",
118
211
  fr: "sur Lynx",
119
212
  es: "en Lynx",
120
213
  }),
121
214
  description: t({
122
- ko: "로고를 누르고 즐기세요!",
215
+ ko: "로고를 탭하고 즐겨보세요!",
123
216
  en: "Tap the logo and have fun!",
124
217
  fr: "Appuyez sur le logo et amusez-vous!",
125
218
  es: "¡Toca el logo y diviértete!",
@@ -133,7 +226,7 @@ const appContent = {
133
226
  }),
134
227
  " src/App.tsx ",
135
228
  t({
136
- ko: "업데이트를 확인하세요!",
229
+ ko: "업데이트를 보려면!",
137
230
  en: "to see updates!",
138
231
  fr: "pour voir les mises à jour!",
139
232
  es: "para ver actualizaciones!",
@@ -159,50 +252,50 @@ export default appContent;
159
252
  "fr": "sur Lynx",
160
253
  "es": "en Lynx"
161
254
  }
162
- }
163
- },
164
- "description": {
165
- "nodeType": "translation",
166
- "translation": {
167
- "ko": "로고를 누르고 즐기세요!",
168
- "en": "Tap the logo and have fun!",
169
- "fr": "Appuyez sur le logo et amusez-vous!",
170
- "es": "¡Toca el logo y diviértete!"
171
- }
172
- },
173
- "hint": [
174
- {
255
+ },
256
+ "description": {
175
257
  "nodeType": "translation",
176
258
  "translation": {
177
- "ko": "편집",
178
- "en": "Edit",
179
- "fr": "Modifier",
180
- "es": "Editar"
259
+ "ko": "로고를 탭하고 즐겨보세요!",
260
+ "en": "Tap the logo and have fun!",
261
+ "fr": "Appuyez sur le logo et amusez-vous!",
262
+ "es": "¡Toca el logo y diviértete!"
181
263
  }
182
264
  },
183
- " src/App.tsx ",
184
- {
185
- "nodeType": "translation",
186
- "translation": {
187
- "ko": "업데이트를 확인하세요!",
188
- "en": "to see updates!",
189
- "fr": "pour voir les mises à jour!",
190
- "es": "para ver actualizaciones!"
265
+ "hint": [
266
+ {
267
+ "nodeType": "translation",
268
+ "translation": {
269
+ "ko": "편집",
270
+ "en": "Edit",
271
+ "fr": "Modifier",
272
+ "es": "Editar"
273
+ }
274
+ },
275
+ " src/App.tsx ",
276
+ {
277
+ "nodeType": "translation",
278
+ "translation": {
279
+ "ko": "업데이트를 보려면!",
280
+ "en": "to see updates!",
281
+ "fr": "pour voir les mises à jour!",
282
+ "es": "para ver actualizaciones!"
283
+ }
191
284
  }
192
- }
193
- ]
285
+ ]
286
+ }
194
287
  }
195
288
  ```
196
289
 
197
- > 콘텐츠 선언에 대한 자세한 내용은 [Intlayer 콘텐츠 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요.
290
+ > 콘텐츠 선언에 대한 자세한 내용은 [Intlayer 콘텐츠 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요.
198
291
 
199
292
  ---
200
293
 
201
- <Steps>
294
+ </Step>
202
295
 
203
- <Step number={1} title="컴포넌트에서 Intlayer 사용하기">
296
+ <Step number={6} title="컴포넌트에서 Intlayer 사용">
204
297
 
205
- `useIntlayer` 훅을 자식 컴포넌트에서 사용하여 로컬라이즈된 콘텐츠를 가져옵니다.
298
+ 자식 컴포넌트에서 `useIntlayer` 훅을 사용하여 지역화된 콘텐츠를 얻습니다.
206
299
 
207
300
  ```tsx fileName="src/App.tsx"
208
301
  import { useCallback, useState } from "@lynx-js/react";
@@ -217,8 +310,9 @@ import { LocaleSwitcher } from "./components/LocaleSwitcher.jsx";
217
310
  export const App = () => {
218
311
  const [alterLogo, setAlterLogo] = useState(false);
219
312
  const { title, subtitle, description, hint } = useIntlayer("app");
313
+
220
314
  const onTap = useCallback(() => {
221
- // 배경만 변경
315
+ "background only";
222
316
  setAlterLogo(!alterLogo);
223
317
  }, [alterLogo]);
224
318
 
@@ -254,13 +348,13 @@ export const App = () => {
254
348
  };
255
349
  ```
256
350
 
257
- > 문자열 기반 속성(예: 버튼의 `title` 또는 `Text` 컴포넌트의 `children`)에서 `content.someKey`를 사용할 때, **`content.someKey.value`를 호출**하여 실제 문자열을 가져오세요.
351
+ > 문자열 기반 props(예: 버튼의 `title` 또는 `Text` 컴포넌트의 `children`)에서 `content.someKey`를 사용할 때는 **실제 문자열을 얻기 위해 `content.someKey.value`를 호출합니다**.
258
352
 
259
353
  ---
260
354
 
261
355
  </Step>
262
356
 
263
- <Step number={2} title="앱 로케일 변경하기">
357
+ <Step number={7} title="앱 로케일 변경" isOptional={true}>
264
358
 
265
359
  컴포넌트 내에서 로케일을 전환하려면 `useLocale` 훅의 `setLocale` 메서드를 사용할 수 있습니다:
266
360
 
@@ -299,7 +393,7 @@ export const LocaleSwitcher: FC = () => {
299
393
  };
300
394
  ```
301
395
 
302
- 작업은 Intlayer 콘텐츠를 사용하는 모든 컴포넌트를 다시 렌더링하며, 새로운 로케일에 대한 번역을 표시합니다.
396
+ 이것은 Intlayer 콘텐츠를 사용하는 모든 컴포넌트의 다시 렌더링을 트리거하며, 이제 새로운 로케일에 대한 번역을 표시합니다.
303
397
 
304
398
  > 자세한 내용은 [`useLocale` 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/packages/react-intlayer/useLocale.md)를 참조하세요.
305
399
 
@@ -30,34 +30,7 @@ history:
30
30
  author: aymericzip
31
31
  ---
32
32
 
33
- # Intlayer Next.js 14 and App Router 번역하기 | 국제화(i18n)
34
-
35
- <Tabs defaultTab="code">
36
- <Tab label="코드" value="code">
37
-
38
- <iframe
39
- src="https://ide.intlayer.org/aymericzip/intlayer-next-14-template?file=intlayer.config.ts"
40
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
41
- title="Demo CodeSandbox - Intlayer"
42
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
43
- loading="lazy"
44
- />
45
-
46
- </Tab>
47
- <Tab label="데모" value="demo">
48
-
49
- <iframe
50
- src="https://intlayer-next-14-template.vercel.app"
51
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
52
- title="데모 - intlayer-next-14-template"
53
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
54
- loading="lazy"
55
- />
56
-
57
- </Tab>
58
- </Tabs>
59
-
60
- GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-next-14-template)을 확인하세요.
33
+ # Intlayer 사용하여 Next.js 14 App Router 웹사이트 번역 | 국제화 (i18n)
61
34
 
62
35
  ## 목차
63
36
 
@@ -31,39 +31,7 @@ history:
31
31
  author: aymericzip
32
32
  ---
33
33
 
34
- # Intlayer Next.js 15 번역하기 | 국제화(i18n)
35
-
36
- <Tabs defaultTab="video">
37
- <Tab label="동영상" value="video">
38
-
39
- <iframe title="Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/e_PPG7PTqGU?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
40
-
41
- </Tab>
42
- <Tab label="코드" value="code">
43
-
44
- <iframe
45
- src="https://ide.intlayer.org/aymericzip/intlayer-next-15-template?file=intlayer.config.ts"
46
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
47
- title="Demo CodeSandbox - Intlayer"
48
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
49
- loading="lazy"
50
- />
51
-
52
- </Tab>
53
- <Tab label="데모" value="demo">
54
-
55
- <iframe
56
- src="https://next-15-intlayer-template-xt83.vercel.app"
57
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
58
- title="데모 - intlayer-next-15-template"
59
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
60
- loading="lazy"
61
- />
62
-
63
- </Tab>
64
- </Tabs>
65
-
66
- GitHub에서 [애플리케이션 템플릿](https://github.com/aymericzip/intlayer-next-15-template)을 확인하세요.
34
+ # Intlayer 사용하여 Next.js 15 웹사이트 번역하기 | 국제화 (i18n)
67
35
 
68
36
  ## 목차
69
37
 
@@ -183,204 +183,56 @@ app/
183
183
  - `_index` - 인덱스 경로 (부모 경로에서 렌더링)
184
184
  - `.` (점) - 경로 세그먼트 구분 (예: `($locale).about` → `/:locale?/about`)
185
185
 
186
- ## 파일 시스템 기반 라우트를 사용한 React Router v7 애플리케이션에서 Intlayer 설정을 위한 단계별 가이드
186
+ #### Layout 컴포넌트
187
187
 
188
- <Tabs defaultTab="video">
189
- <Tab label="Video" value="video">
190
-
191
- <iframe title="How to translate an React Router v7 (File-System Routes) app using Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&amp;origin=https://intlayer.org&amp;controls=0&amp;rel=1"/>
192
-
193
- </Tab>
194
- <Tab label="Code" value="code">
195
-
196
- <iframe
197
- src="https://ide.intlayer.org/aymericzip/intlayer-react-router-v7-template?file=intlayer.config.ts"
198
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
199
- title="Demo CodeSandbox - How to Internationalize your application using Intlayer"
200
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
201
- loading="lazy"
202
- />
203
-
204
- </Tab>
205
- <Tab label="데모" value="demo">
206
-
207
- <iframe
208
- src="https://intlayer-react-router-v7.vercel.app"
209
- className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
210
- title="데모 - intlayer-react-router-v7-template"
211
- sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
212
- loading="lazy"
213
- />
214
-
215
- </Tab>
216
- </Tabs>
217
-
218
- See [Application Template](https://github.com/aymericzip/intlayer-react-router-v7-template) on GitHub.
219
-
220
- 애플리케이션의 언어를 구성하기 위한 설정 파일을 만드세요:
221
-
222
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
223
- import { type IntlayerConfig, Locales } from "intlayer";
224
-
225
- const config: IntlayerConfig = {
226
- internationalization: {
227
- defaultLocale: Locales.ENGLISH, // 기본 로케일 설정
228
- locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // 지원하는 로케일 목록
229
- },
230
- };
231
-
232
- export default config;
233
- ```
234
-
235
- > 이 구성 파일을 통해 지역화된 URL, 미들웨어 리디렉션, 쿠키 이름, 콘텐츠 선언의 위치 및 확장자 설정, 콘솔에서 Intlayer 로그 비활성화 등 다양한 설정을 할 수 있습니다. 사용 가능한 모든 매개변수 목록은 [구성 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
236
-
237
- <Steps>
238
-
239
- <Step number={3} title="Vite 구성에 Intlayer 통합하기">
240
-
241
- 구성에 intlayer 플러그인을 추가하세요:
242
-
243
- ```typescript fileName="vite.config.ts"
244
- import { reactRouter } from "@react-router/dev/vite";
245
- import { defineConfig } from "vite";
246
- import { intlayer } from "vite-intlayer";
247
-
248
- export default defineConfig({
249
- plugins: [reactRouter(), intlayer()],
250
- });
251
- ```
252
-
253
- > `intlayer()` Vite 플러그인은 Intlayer를 Vite와 통합하는 데 사용됩니다. 이 플러그인은 콘텐츠 선언 파일의 빌드를 보장하고 개발 모드에서 이를 모니터링합니다. 또한 Vite 애플리케이션 내에서 Intlayer 환경 변수를 정의하며, 성능 최적화를 위한 별칭(alias)도 제공합니다.
254
-
255
- </Step>
256
-
257
- </Steps>
258
-
259
- <Steps>
260
-
261
- <Step number={4} title="React Router v7 라우트 구성">
262
-
263
- 로케일 인식 라우트로 라우팅 구성을 설정하세요:
264
-
265
- ```typescript fileName="app/routes.ts"
266
- import { layout, route, type RouteConfig } from "@react-router/dev/routes";
267
-
268
- export default [
269
- layout("routes/layout.tsx", [
270
- route("/:lang?", "routes/page.tsx"), // 지역화된 홈 페이지
271
- route("/:lang?/about", "routes/about/page.tsx"), // 지역화된 소개 페이지
272
- ]),
273
- ] satisfies RouteConfig;
274
- ```
275
-
276
- </Step>
277
-
278
- <Step number={5} title="컴포넌트 콘텐츠 추출" isOptional={true}>
279
-
280
- 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.
281
-
282
- 이 프로세스를 용이하게 하기 위해 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)를 제안합니다.
283
-
284
- 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
285
-
286
- ```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
287
- import { type IntlayerConfig } from "intlayer";
288
-
289
- const config: IntlayerConfig = {
290
- // ... 나머지 구성
291
- compiler: {
292
- /**
293
- * 컴파일러 활성화 여부를 나타냅니다.
294
- */
295
- enabled: true,
296
-
297
- /**
298
- * 출력 파일 경로를 정의합니다.
299
- */
300
- output: ({ fileName, extension }) => `./${fileName}${extension}`,
301
-
302
- /**
303
- * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
304
- */
305
- saveComponents: false,
306
-
307
- /**
308
- * 사전 키 접두사
309
- */
310
- dictionaryKeyPrefix: "",
311
- },
312
- };
313
-
314
- export default config;
315
- ```
316
-
317
- <Tabs>
318
- <Tab value='추출 명령'>
319
-
320
- 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
321
-
322
- ```bash packageManager="npm"
323
- npx intlayer extract
324
- ```
325
-
326
- ```bash packageManager="pnpm"
327
- pnpm intlayer extract
328
- ```
329
-
330
- ```bash packageManager="yarn"
331
- yarn intlayer extract
332
- ```
333
-
334
- ```bash packageManager="bun"
335
- bun x intlayer extract
336
- ```
337
-
338
- </Tab>
339
- <Tab value='Babel 컴파일러'>
340
-
341
- > Since v9, the `intlayerCompiler` is included in the `intlayer` plugin. So you don't need to add it manually.
188
+ ```tsx fileName="app/root.tsx"
189
+ import { getLocaleFromPath } from "intlayer";
190
+ import { IntlayerProvider } from "react-intlayer";
191
+ import {
192
+ isRouteErrorResponse,
193
+ Meta,
194
+ Outlet,
195
+ Scripts,
196
+ ScrollRestoration,
197
+ useLoaderData,
198
+ } from "react-router";
342
199
 
343
- `vite.config.ts`를 업데이트하여 `intlayerCompiler` 플러그인을 포함합니다.
200
+ import type { Route } from "./+types/root";
344
201
 
345
- ```ts fileName="vite.config.ts"
346
- import { defineConfig } from "vite";
347
- import { intlayer, intlayerCompiler } from "vite-intlayer";
202
+ import "./app.css";
348
203
 
349
- export default defineConfig({
350
- plugins: [
351
- intlayer(),
352
- intlayerCompiler(), // Adds the compiler plugin
353
- ],
354
- });
355
- ```
204
+ // ... 변경되지 않은 App, links 및 ErrorBoundary 코드
356
205
 
357
- ```bash packageManager="npm"
358
- npm run build # 또는 npm run dev
359
- ```
206
+ export async function loader({ request }: Route.LoaderArgs) {
207
+ const locale = getLocaleFromPath(request.url);
360
208
 
361
- ```bash packageManager="pnpm"
362
- pnpm run build # 또는 pnpm run dev
363
- ```
209
+ return { locale };
210
+ }
364
211
 
365
- ```bash packageManager="yarn"
366
- yarn build # 또는 yarn dev
367
- ```
212
+ export function Layout({
213
+ children,
214
+ }: { children: React.ReactNode } & Route.ComponentProps) {
215
+ const data = useLoaderData<typeof loader>();
216
+ const { locale } = data ?? {};
368
217
 
369
- ```bash packageManager="bun"
370
- bun run build # Or bun run dev
218
+ return (
219
+ <html lang={locale}>
220
+ <head>
221
+ <meta charSet="utf-8" />
222
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
223
+ <Meta />
224
+ <Links />
225
+ </head>
226
+ <body>
227
+ <IntlayerProvider locale={locale}>{children}</IntlayerProvider>
228
+ <ScrollRestoration />
229
+ <Scripts />
230
+ </body>
231
+ </html>
232
+ );
233
+ }
371
234
  ```
372
235
 
373
- </Tab>
374
- </Tabs>
375
-
376
- ---
377
-
378
- </Step>
379
-
380
- <Step number={5} title="레이아웃 컴포넌트 생성">
381
-
382
- 루트 레이아웃과 로케일별 레이아웃을 설정하세요:
383
-
384
236
  #### 루트 레이아웃
385
237
 
386
238
  ```tsx fileName="app/routes/layout.tsx"