@intlayer/docs 8.3.0-canary.4 → 8.3.1

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 (240) hide show
  1. package/docs/ar/compiler.md +84 -49
  2. package/docs/ar/configuration.md +80 -37
  3. package/docs/ar/intlayer_with_nextjs_16.md +174 -1
  4. package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
  5. package/docs/ar/intlayer_with_react_router_v7.md +224 -1
  6. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
  7. package/docs/ar/intlayer_with_svelte_kit.md +175 -2
  8. package/docs/ar/intlayer_with_tanstack.md +176 -1
  9. package/docs/ar/intlayer_with_vite+preact.md +174 -1
  10. package/docs/ar/intlayer_with_vite+react.md +174 -1
  11. package/docs/ar/intlayer_with_vite+solid.md +174 -1
  12. package/docs/ar/intlayer_with_vite+svelte.md +174 -1
  13. package/docs/ar/intlayer_with_vite+vue.md +174 -1
  14. package/docs/de/compiler.md +83 -48
  15. package/docs/de/configuration.md +434 -212
  16. package/docs/de/intlayer_with_nextjs_16.md +176 -1
  17. package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
  18. package/docs/de/intlayer_with_react_router_v7.md +225 -2
  19. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
  20. package/docs/de/intlayer_with_svelte_kit.md +158 -2
  21. package/docs/de/intlayer_with_tanstack.md +159 -1
  22. package/docs/de/intlayer_with_vite+preact.md +157 -1
  23. package/docs/de/intlayer_with_vite+react.md +157 -1
  24. package/docs/de/intlayer_with_vite+solid.md +159 -3
  25. package/docs/de/intlayer_with_vite+svelte.md +157 -1
  26. package/docs/de/intlayer_with_vite+vue.md +157 -1
  27. package/docs/en/compiler.md +60 -33
  28. package/docs/en/configuration.md +80 -57
  29. package/docs/en/intlayer_with_nextjs_16.md +176 -0
  30. package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
  31. package/docs/en/intlayer_with_react_router_v7.md +159 -0
  32. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
  33. package/docs/en/intlayer_with_svelte_kit.md +159 -0
  34. package/docs/en/intlayer_with_tanstack.md +160 -1
  35. package/docs/en/intlayer_with_vite+preact.md +159 -0
  36. package/docs/en/intlayer_with_vite+react.md +159 -0
  37. package/docs/en/intlayer_with_vite+solid.md +148 -27
  38. package/docs/en/intlayer_with_vite+svelte.md +159 -0
  39. package/docs/en/intlayer_with_vite+vue.md +142 -41
  40. package/docs/en-GB/compiler.md +66 -34
  41. package/docs/en-GB/configuration.md +78 -36
  42. package/docs/es/compiler.md +83 -48
  43. package/docs/es/configuration.md +429 -206
  44. package/docs/es/intlayer_with_adonisjs.md +1 -1
  45. package/docs/es/intlayer_with_express.md +1 -1
  46. package/docs/es/intlayer_with_fastify.md +1 -1
  47. package/docs/es/intlayer_with_hono.md +1 -1
  48. package/docs/es/intlayer_with_nestjs.md +1 -1
  49. package/docs/es/intlayer_with_nextjs_16.md +176 -3
  50. package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
  51. package/docs/es/intlayer_with_nuxt.md +1 -1
  52. package/docs/es/intlayer_with_react_router_v7.md +227 -4
  53. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
  54. package/docs/es/intlayer_with_svelte_kit.md +158 -2
  55. package/docs/es/intlayer_with_tanstack.md +160 -2
  56. package/docs/es/intlayer_with_vite+preact.md +162 -6
  57. package/docs/es/intlayer_with_vite+react.md +160 -4
  58. package/docs/es/intlayer_with_vite+solid.md +163 -7
  59. package/docs/es/intlayer_with_vite+svelte.md +157 -1
  60. package/docs/es/intlayer_with_vite+vue.md +165 -9
  61. package/docs/fr/compiler.md +81 -46
  62. package/docs/fr/configuration.md +355 -134
  63. package/docs/fr/intlayer_with_adonisjs.md +1 -1
  64. package/docs/fr/intlayer_with_express.md +1 -1
  65. package/docs/fr/intlayer_with_fastify.md +1 -1
  66. package/docs/fr/intlayer_with_hono.md +1 -1
  67. package/docs/fr/intlayer_with_nestjs.md +1 -1
  68. package/docs/fr/intlayer_with_nextjs_16.md +183 -7
  69. package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
  70. package/docs/fr/intlayer_with_react_router_v7.md +229 -3
  71. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
  72. package/docs/fr/intlayer_with_svelte_kit.md +158 -2
  73. package/docs/fr/intlayer_with_tanstack.md +159 -1
  74. package/docs/fr/intlayer_with_vite+preact.md +164 -8
  75. package/docs/fr/intlayer_with_vite+react.md +162 -6
  76. package/docs/fr/intlayer_with_vite+solid.md +163 -7
  77. package/docs/fr/intlayer_with_vite+svelte.md +157 -1
  78. package/docs/fr/intlayer_with_vite+vue.md +164 -8
  79. package/docs/hi/compiler.md +81 -46
  80. package/docs/hi/configuration.md +87 -44
  81. package/docs/hi/intlayer_with_nextjs_16.md +174 -1
  82. package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
  83. package/docs/hi/intlayer_with_react_router_v7.md +224 -1
  84. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  85. package/docs/hi/intlayer_with_svelte_kit.md +158 -2
  86. package/docs/hi/intlayer_with_tanstack.md +159 -1
  87. package/docs/hi/intlayer_with_vite+preact.md +157 -1
  88. package/docs/hi/intlayer_with_vite+react.md +157 -1
  89. package/docs/hi/intlayer_with_vite+solid.md +157 -1
  90. package/docs/hi/intlayer_with_vite+svelte.md +157 -1
  91. package/docs/hi/intlayer_with_vite+vue.md +157 -1
  92. package/docs/id/compiler.md +84 -51
  93. package/docs/id/configuration.md +83 -45
  94. package/docs/id/intlayer_with_nextjs_16.md +174 -1
  95. package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
  96. package/docs/id/intlayer_with_react_router_v7.md +224 -1
  97. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
  98. package/docs/id/intlayer_with_svelte_kit.md +158 -2
  99. package/docs/id/intlayer_with_tanstack.md +159 -1
  100. package/docs/id/intlayer_with_vite+preact.md +157 -1
  101. package/docs/id/intlayer_with_vite+react.md +157 -1
  102. package/docs/id/intlayer_with_vite+solid.md +157 -1
  103. package/docs/id/intlayer_with_vite+svelte.md +157 -1
  104. package/docs/id/intlayer_with_vite+vue.md +157 -1
  105. package/docs/it/compiler.md +81 -46
  106. package/docs/it/configuration.md +426 -204
  107. package/docs/it/intlayer_with_nextjs_16.md +174 -1
  108. package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
  109. package/docs/it/intlayer_with_react_router_v7.md +225 -2
  110. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
  111. package/docs/it/intlayer_with_svelte_kit.md +158 -2
  112. package/docs/it/intlayer_with_tanstack.md +159 -1
  113. package/docs/it/intlayer_with_vite+preact.md +157 -1
  114. package/docs/it/intlayer_with_vite+react.md +157 -1
  115. package/docs/it/intlayer_with_vite+solid.md +159 -3
  116. package/docs/it/intlayer_with_vite+svelte.md +157 -1
  117. package/docs/it/intlayer_with_vite+vue.md +157 -1
  118. package/docs/ja/compiler.md +94 -58
  119. package/docs/ja/configuration.md +88 -45
  120. package/docs/ja/intlayer_with_nextjs_16.md +174 -1
  121. package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
  122. package/docs/ja/intlayer_with_react_router_v7.md +184 -394
  123. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
  124. package/docs/ja/intlayer_with_svelte_kit.md +119 -595
  125. package/docs/ja/intlayer_with_tanstack.md +131 -642
  126. package/docs/ja/intlayer_with_vite+preact.md +111 -1231
  127. package/docs/ja/intlayer_with_vite+react.md +129 -1304
  128. package/docs/ja/intlayer_with_vite+solid.md +159 -3
  129. package/docs/ja/intlayer_with_vite+svelte.md +157 -1
  130. package/docs/ja/intlayer_with_vite+vue.md +157 -1
  131. package/docs/ko/compiler.md +88 -52
  132. package/docs/ko/configuration.md +87 -44
  133. package/docs/ko/intlayer_with_nextjs_16.md +174 -1
  134. package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
  135. package/docs/ko/intlayer_with_react_router_v7.md +225 -2
  136. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
  137. package/docs/ko/intlayer_with_svelte_kit.md +158 -2
  138. package/docs/ko/intlayer_with_tanstack.md +159 -1
  139. package/docs/ko/intlayer_with_vite+preact.md +157 -1
  140. package/docs/ko/intlayer_with_vite+react.md +157 -1
  141. package/docs/ko/intlayer_with_vite+solid.md +159 -3
  142. package/docs/ko/intlayer_with_vite+svelte.md +157 -1
  143. package/docs/ko/intlayer_with_vite+vue.md +157 -1
  144. package/docs/pl/compiler.md +84 -51
  145. package/docs/pl/configuration.md +83 -37
  146. package/docs/pl/intlayer_with_nextjs_16.md +174 -1
  147. package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
  148. package/docs/pl/intlayer_with_react_router_v7.md +224 -1
  149. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
  150. package/docs/pl/intlayer_with_svelte_kit.md +158 -2
  151. package/docs/pl/intlayer_with_tanstack.md +159 -1
  152. package/docs/pl/intlayer_with_vite+preact.md +157 -1
  153. package/docs/pl/intlayer_with_vite+react.md +157 -1
  154. package/docs/pl/intlayer_with_vite+solid.md +157 -1
  155. package/docs/pl/intlayer_with_vite+svelte.md +157 -1
  156. package/docs/pl/intlayer_with_vite+vue.md +157 -1
  157. package/docs/pt/compiler.md +81 -46
  158. package/docs/pt/configuration.md +404 -194
  159. package/docs/pt/intlayer_with_nextjs_16.md +174 -1
  160. package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
  161. package/docs/pt/intlayer_with_react_router_v7.md +224 -1
  162. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
  163. package/docs/pt/intlayer_with_svelte_kit.md +158 -2
  164. package/docs/pt/intlayer_with_tanstack.md +159 -1
  165. package/docs/pt/intlayer_with_vite+preact.md +157 -1
  166. package/docs/pt/intlayer_with_vite+react.md +157 -1
  167. package/docs/pt/intlayer_with_vite+solid.md +157 -1
  168. package/docs/pt/intlayer_with_vite+svelte.md +157 -1
  169. package/docs/pt/intlayer_with_vite+vue.md +157 -1
  170. package/docs/ru/compiler.md +90 -57
  171. package/docs/ru/configuration.md +76 -46
  172. package/docs/ru/intlayer_with_nextjs_16.md +174 -1
  173. package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
  174. package/docs/ru/intlayer_with_react_router_v7.md +224 -1
  175. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
  176. package/docs/ru/intlayer_with_svelte_kit.md +158 -2
  177. package/docs/ru/intlayer_with_tanstack.md +159 -1
  178. package/docs/ru/intlayer_with_vite+preact.md +157 -1
  179. package/docs/ru/intlayer_with_vite+react.md +157 -1
  180. package/docs/ru/intlayer_with_vite+solid.md +157 -1
  181. package/docs/ru/intlayer_with_vite+svelte.md +157 -1
  182. package/docs/ru/intlayer_with_vite+vue.md +157 -1
  183. package/docs/tr/compiler.md +85 -52
  184. package/docs/tr/configuration.md +83 -40
  185. package/docs/tr/intlayer_with_nextjs_16.md +174 -1
  186. package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
  187. package/docs/tr/intlayer_with_react_router_v7.md +224 -1
  188. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
  189. package/docs/tr/intlayer_with_svelte_kit.md +158 -2
  190. package/docs/tr/intlayer_with_tanstack.md +159 -1
  191. package/docs/tr/intlayer_with_vite+preact.md +157 -1
  192. package/docs/tr/intlayer_with_vite+react.md +157 -1
  193. package/docs/tr/intlayer_with_vite+solid.md +157 -1
  194. package/docs/tr/intlayer_with_vite+svelte.md +157 -1
  195. package/docs/tr/intlayer_with_vite+vue.md +157 -1
  196. package/docs/uk/compiler.md +96 -61
  197. package/docs/uk/configuration.md +83 -37
  198. package/docs/uk/intlayer_with_nextjs_16.md +174 -1
  199. package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
  200. package/docs/uk/intlayer_with_react_router_v7.md +224 -1
  201. package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
  202. package/docs/uk/intlayer_with_svelte_kit.md +157 -1
  203. package/docs/uk/intlayer_with_tanstack.md +159 -1
  204. package/docs/uk/intlayer_with_vite+preact.md +157 -1
  205. package/docs/uk/intlayer_with_vite+react.md +157 -1
  206. package/docs/uk/intlayer_with_vite+solid.md +157 -1
  207. package/docs/uk/intlayer_with_vite+svelte.md +157 -1
  208. package/docs/uk/intlayer_with_vite+vue.md +157 -1
  209. package/docs/vi/compiler.md +85 -50
  210. package/docs/vi/configuration.md +85 -39
  211. package/docs/vi/intlayer_with_nextjs_16.md +174 -1
  212. package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
  213. package/docs/vi/intlayer_with_react_router_v7.md +224 -1
  214. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
  215. package/docs/vi/intlayer_with_svelte_kit.md +158 -2
  216. package/docs/vi/intlayer_with_tanstack.md +159 -1
  217. package/docs/vi/intlayer_with_vite+preact.md +157 -1
  218. package/docs/vi/intlayer_with_vite+react.md +157 -1
  219. package/docs/vi/intlayer_with_vite+solid.md +157 -1
  220. package/docs/vi/intlayer_with_vite+svelte.md +157 -1
  221. package/docs/vi/intlayer_with_vite+vue.md +157 -1
  222. package/docs/zh/compiler.md +84 -49
  223. package/docs/zh/configuration.md +80 -37
  224. package/docs/zh/intlayer_with_adonisjs.md +1 -1
  225. package/docs/zh/intlayer_with_express.md +1 -1
  226. package/docs/zh/intlayer_with_fastify.md +1 -1
  227. package/docs/zh/intlayer_with_hono.md +1 -1
  228. package/docs/zh/intlayer_with_nestjs.md +1 -1
  229. package/docs/zh/intlayer_with_nextjs_16.md +174 -1
  230. package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
  231. package/docs/zh/intlayer_with_react_router_v7.md +227 -4
  232. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
  233. package/docs/zh/intlayer_with_svelte_kit.md +158 -2
  234. package/docs/zh/intlayer_with_tanstack.md +159 -1
  235. package/docs/zh/intlayer_with_vite+preact.md +159 -3
  236. package/docs/zh/intlayer_with_vite+react.md +157 -1
  237. package/docs/zh/intlayer_with_vite+solid.md +161 -5
  238. package/docs/zh/intlayer_with_vite+svelte.md +157 -1
  239. package/docs/zh/intlayer_with_vite+vue.md +158 -2
  240. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-01-10
3
- updatedAt: 2026-01-10
3
+ updatedAt: 2026-03-12
4
4
  title: Next.js i18n - 기존 Next.js 앱을 다국어 앱으로 변환하기 2026
5
5
  description: Intlayer Compiler를 사용하여 기존 Next.js 애플리케이션을 다국어로 만드는 방법을 알아보세요. 문서를 따라 국제화(i18n)하고 AI로 번역하세요.
6
6
  keywords:
@@ -495,6 +495,179 @@ Intlayer를 사용한 개발 환경을 개선하기 위해 **공식 Intlayer VS
495
495
 
496
496
  익스텐션 사용법에 대한 자세한 내용은 [Intlayer VS Code 익스텐션 문서](https://intlayer.org/doc/vs-code-extension)를 참조하세요.
497
497
 
498
+ ### (선택 사항) 단계 1 : 컴포넌트 콘텐츠 추출
499
+
500
+ 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.
501
+
502
+ 이 프로세스를 용이하게 하기 위해 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)를 제안합니다.
503
+
504
+ 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
505
+
506
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
507
+ import { type IntlayerConfig } from "intlayer";
508
+
509
+ const config: IntlayerConfig = {
510
+ // ... 나머지 구성
511
+ compiler: {
512
+ /**
513
+ * 컴파일러 활성화 여부를 나타냅니다.
514
+ */
515
+ enabled: true,
516
+
517
+ /**
518
+ * 출력 파일 경로를 정의합니다.
519
+ */
520
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
521
+
522
+ /**
523
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
524
+ */
525
+ saveComponents: false,
526
+
527
+ /**
528
+ * 사전 키 접두사
529
+ */
530
+ dictionaryKeyPrefix: "",
531
+ },
532
+ };
533
+
534
+ export default config;
535
+ ```
536
+
537
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
538
+ /** @type {import('intlayer').IntlayerConfig} */
539
+ const config = {
540
+ // ... 나머지 구성
541
+ compiler: {
542
+ /**
543
+ * 컴파일러 활성화 여부를 나타냅니다.
544
+ */
545
+ enabled: true,
546
+
547
+ /**
548
+ * 출력 파일 경로를 정의합니다.
549
+ */
550
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
551
+
552
+ /**
553
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
554
+ */
555
+ saveComponents: false,
556
+
557
+ /**
558
+ * 사전 키 접두사
559
+ */
560
+ dictionaryKeyPrefix: "",
561
+ },
562
+ };
563
+
564
+ export default config;
565
+ ```
566
+
567
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
568
+ /** @type {import('intlayer').IntlayerConfig} */
569
+ const config = {
570
+ // ... 나머지 구성
571
+ compiler: {
572
+ /**
573
+ * 컴파일러 활성화 여부를 나타냅니다.
574
+ */
575
+ enabled: true,
576
+
577
+ /**
578
+ * 출력 파일 경로를 정의합니다.
579
+ */
580
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
581
+
582
+ /**
583
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
584
+ */
585
+ saveComponents: false,
586
+
587
+ /**
588
+ * 사전 키 접두사
589
+ */
590
+ dictionaryKeyPrefix: "",
591
+ },
592
+ };
593
+
594
+ module.exports = config;
595
+ ```
596
+
597
+ <Tabs>
598
+ <Tab value='추출 명령'>
599
+
600
+ 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
601
+
602
+ ```bash packageManager="npm"
603
+ npx intlayer extract
604
+ ```
605
+
606
+ ```bash packageManager="pnpm"
607
+ pnpm intlayer extract
608
+ ```
609
+
610
+ ```bash packageManager="yarn"
611
+ yarn intlayer extract
612
+ ```
613
+
614
+ ```bash packageManager="bun"
615
+ bunx intlayer extract
616
+ ```
617
+
618
+ </Tab>
619
+ <Tab value='Babel 컴파일러'>
620
+
621
+ ```bash packageManager="npm"
622
+ npm install @intlayer/babel --save-dev
623
+ ```
624
+
625
+ ```bash packageManager="pnpm"
626
+ pnpm add @intlayer/babel --save-dev
627
+ ```
628
+
629
+ ```bash packageManager="yarn"
630
+ yarn add @intlayer/babel --save-dev
631
+ ```
632
+
633
+ ```bash packageManager="bun"
634
+ bun add @intlayer/babel --dev
635
+ ```
636
+
637
+ ```js fileName="babel.config.js"
638
+ const {
639
+ intlayerExtractBabelPlugin,
640
+ getExtractPluginOptions,
641
+ } = require("@intlayer/babel");
642
+
643
+ module.exports = {
644
+ presets: ["next/babel"],
645
+ plugins: [
646
+ // 컴포넌트에서 콘텐츠를 사전으로 추출
647
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
648
+ ],
649
+ };
650
+ ```
651
+
652
+ ```bash packageManager="npm"
653
+ npm run build # 또는 npm run dev
654
+ ```
655
+
656
+ ```bash packageManager="pnpm"
657
+ pnpm run build # 또는 pnpm run dev
658
+ ```
659
+
660
+ ```bash packageManager="yarn"
661
+ yarn build # 또는 yarn dev
662
+ ```
663
+
664
+ ```bash packageManager="bun"
665
+ bun run build # Or bun run dev
666
+ ```
667
+
668
+ </Tab>
669
+ </Tabs>
670
+
498
671
  ### 더 알아보기
499
672
 
500
673
  더 나아가려면 [비주얼 에디터](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_visual_editor.md)를 구현하거나 [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_CMS.md)를 사용하여 콘텐츠를 외부화할 수 있습니다.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-04
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: React Router v7 i18n - React Router v7 앱 번역 방법 2026
5
5
  description: Intlayer를 사용하여 React Router v7 애플리케이션에 국제화(i18n)를 추가하는 방법을 배우세요. 로케일 인식 라우팅으로 앱을 다국어로 만드는 종합 가이드를 따르세요.
6
6
  keywords:
@@ -38,7 +38,7 @@ history:
38
38
 
39
39
  이 가이드는 React Router v7 프로젝트에서 로케일 인식 라우팅, TypeScript 지원 및 최신 개발 방식을 활용하여 **Intlayer**를 통합해 원활한 국제화(i18n)를 구현하는 방법을 보여줍니다.
40
40
 
41
- ## Table of Contents
41
+ ## 목차
42
42
 
43
43
  <TOC/>
44
44
 
@@ -504,6 +504,229 @@ export default function RootLayout() {
504
504
  }
505
505
  ```
506
506
 
507
+ ### (선택 사항) 단계 5 : 컴포넌트 콘텐츠 추출
508
+
509
+ 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.
510
+
511
+ 이 프로세스를 용이하게 하기 위해 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)를 제안합니다.
512
+
513
+ 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
514
+
515
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
516
+ import { type IntlayerConfig } from "intlayer";
517
+
518
+ const config: IntlayerConfig = {
519
+ // ... 나머지 구성
520
+ compiler: {
521
+ /**
522
+ * 컴파일러 활성화 여부를 나타냅니다.
523
+ */
524
+ enabled: true,
525
+
526
+ /**
527
+ * 출력 파일 경로를 정의합니다.
528
+ */
529
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
530
+
531
+ /**
532
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
533
+ */
534
+ saveComponents: false,
535
+
536
+ /**
537
+ * 사전 키 접두사
538
+ */
539
+ dictionaryKeyPrefix: "",
540
+ },
541
+ };
542
+
543
+ export default config;
544
+ ```
545
+
546
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
547
+ /** @type {import('intlayer').IntlayerConfig} */
548
+ const config = {
549
+ // ... 나머지 구성
550
+ compiler: {
551
+ /**
552
+ * 컴파일러 활성화 여부를 나타냅니다.
553
+ */
554
+ enabled: true,
555
+
556
+ /**
557
+ * 출력 파일 경로를 정의합니다.
558
+ */
559
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
560
+
561
+ /**
562
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
563
+ */
564
+ saveComponents: false,
565
+
566
+ /**
567
+ * 사전 키 접두사
568
+ */
569
+ dictionaryKeyPrefix: "",
570
+ },
571
+ };
572
+
573
+ export default config;
574
+ ```
575
+
576
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
577
+ /** @type {import('intlayer').IntlayerConfig} */
578
+ const config = {
579
+ // ... 나머지 구성
580
+ compiler: {
581
+ /**
582
+ * 컴파일러 활성화 여부를 나타냅니다.
583
+ */
584
+ enabled: true,
585
+
586
+ /**
587
+ * 출력 파일 경로를 정의합니다.
588
+ */
589
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
590
+
591
+ /**
592
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
593
+ */
594
+ saveComponents: false,
595
+
596
+ /**
597
+ * 사전 키 접두사
598
+ */
599
+ dictionaryKeyPrefix: "",
600
+ },
601
+ };
602
+
603
+ module.exports = config;
604
+ ```
605
+
606
+ <Tabs>
607
+ <Tab value='추출 명령'>
608
+
609
+ 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
610
+
611
+ ```bash packageManager="npm"
612
+ npx intlayer extract
613
+ ```
614
+
615
+ ```bash packageManager="pnpm"
616
+ pnpm intlayer extract
617
+ ```
618
+
619
+ ```bash packageManager="yarn"
620
+ yarn intlayer extract
621
+ ```
622
+
623
+ ```bash packageManager="bun"
624
+ bunx intlayer extract
625
+ ```
626
+
627
+ </Tab>
628
+ <Tab value='Babel 컴파일러'>
629
+
630
+ `vite.config.ts`를 업데이트하여 `intlayerCompiler` 플러그인을 포함합니다.
631
+
632
+ ```ts fileName="vite.config.ts"
633
+ import { defineConfig } from "vite";
634
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
635
+
636
+ export default defineConfig({
637
+ plugins: [
638
+ intlayer(),
639
+ intlayerCompiler(), // 컴파일러 플러그인을 추가합니다
640
+ ],
641
+ });
642
+ ```
643
+
644
+ ```bash packageManager="npm"
645
+ npm run build # 또는 npm run dev
646
+ ```
647
+
648
+ ```bash packageManager="pnpm"
649
+ pnpm run build # 또는 pnpm run dev
650
+ ```
651
+
652
+ ```bash packageManager="yarn"
653
+ yarn build # 또는 yarn dev
654
+ ```
655
+
656
+ ```bash packageManager="bun"
657
+ bun run build # Or bun run dev
658
+ ```
659
+
660
+ </Tab>
661
+ </Tabs>
662
+
663
+ ---
664
+
665
+ ## Configure TypeScript
666
+
667
+ Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
668
+
669
+ Ensure your TypeScript configuration includes the autogenerated types:
670
+
671
+ ```json5 fileName="tsconfig.json"
672
+ {
673
+ // ... your existing configurations
674
+ include: [
675
+ // ... your existing includes
676
+ ".intlayer/**/*.ts", // Include the auto-generated types
677
+ ],
678
+ }
679
+ ```
680
+
681
+ ---
682
+
683
+ ## Git Configuration
684
+
685
+ It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
686
+
687
+ To do this, you can add the following instructions to your `.gitignore` file:
688
+
689
+ ```plaintext fileName=".gitignore"
690
+ # Intlayer에서 생성된 파일 무시
691
+ .intlayer
692
+ ```
693
+
694
+ ---
695
+
696
+ ## VS Code Extension
697
+
698
+ To improve your development experience with Intlayer, you can install the official **Intlayer VS Code Extension**.
699
+
700
+ [Install from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
701
+
702
+ This extension provides:
703
+
704
+ - **Autocompletion** for translation keys.
705
+ - **Real-time error detection** for missing translations.
706
+ - **Inline previews** of translated content.
707
+ - **Quick actions** to easily create and update translations.
708
+
709
+ For more details on how to use the extension, refer to the [Intlayer VS Code Extension documentation](https://intlayer.org/doc/vs-code-extension).
710
+
711
+ ---
712
+
713
+ ## Go Further
714
+
715
+ To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) or externalize your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
716
+
717
+ ---
718
+
719
+ ## Documentation References
720
+
721
+ - [Intlayer Documentation](https://intlayer.org)
722
+ - [React Router v7 Documentation](https://reactrouter.com/)
723
+ - [useIntlayer hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useIntlayer.md)
724
+ - [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md)
725
+ - [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)
726
+ - [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
727
+
728
+ This comprehensive guide provides everything you need to integrate Intlayer with React Router v7 for a fully internationalized application with locale-aware routing and TypeScript support.
729
+
507
730
  ### 11단계: 미들웨어 추가 (선택 사항)
508
731
 
509
732
  `intlayerProxy`를 사용하여 애플리케이션에 서버 사이드 라우팅을 추가할 수도 있습니다. 이 플러그인은 URL을 기반으로 현재 로케일을 자동으로 감지하고 적절한 로케일 쿠키를 설정합니다. 로케일이 지정되지 않은 경우, 플러그인은 사용자의 브라우저 언어 설정을 기반으로 가장 적합한 로케일을 결정합니다. 로케일이 감지되지 않으면 기본 로케일로 리디렉션합니다.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-04
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: React Router v7 i18n - React Router v7 앱 번역 방법 2026
5
5
  description: Intlayer를 사용하여 React Router v7 애플리케이션에 국제화(i18n)를 추가하는 방법을 배우세요. 로케일 인식 라우팅으로 앱을 다국어로 만드는 종합 가이드를 따르세요.
6
6
  keywords:
@@ -37,7 +37,7 @@ history:
37
37
 
38
38
  클라이언트 사이드 라우팅의 경우 [Intlayer와 React Router v7](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_react_router_v7.md) 가이드를 참조하세요.
39
39
 
40
- ## Table of Contents
40
+ ## 목차
41
41
 
42
42
  <TOC/>
43
43
 
@@ -449,6 +449,230 @@ export default function RootLayout() {
449
449
  }
450
450
  ```
451
451
 
452
+ ### (선택 사항) 단계 5 : 컴포넌트 콘텐츠 추출
453
+
454
+ 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.
455
+
456
+ 이 프로세스를 용이하게 하기 위해 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)를 제안합니다.
457
+
458
+ 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
459
+
460
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
461
+ import { type IntlayerConfig } from "intlayer";
462
+
463
+ const config: IntlayerConfig = {
464
+ // ... 나머지 구성
465
+ compiler: {
466
+ /**
467
+ * 컴파일러 활성화 여부를 나타냅니다.
468
+ */
469
+ enabled: true,
470
+
471
+ /**
472
+ * 출력 파일 경로를 정의합니다.
473
+ */
474
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
475
+
476
+ /**
477
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
478
+ */
479
+ saveComponents: false,
480
+
481
+ /**
482
+ * 사전 키 접두사
483
+ */
484
+ dictionaryKeyPrefix: "",
485
+ },
486
+ };
487
+
488
+ export default config;
489
+ ```
490
+
491
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
492
+ /** @type {import('intlayer').IntlayerConfig} */
493
+ const config = {
494
+ // ... 나머지 구성
495
+ compiler: {
496
+ /**
497
+ * 컴파일러 활성화 여부를 나타냅니다.
498
+ */
499
+ enabled: true,
500
+
501
+ /**
502
+ * 출력 파일 경로를 정의합니다.
503
+ */
504
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
505
+
506
+ /**
507
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
508
+ */
509
+ saveComponents: false,
510
+
511
+ /**
512
+ * 사전 키 접두사
513
+ */
514
+ dictionaryKeyPrefix: "",
515
+ },
516
+ };
517
+
518
+ export default config;
519
+ ```
520
+
521
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
522
+ /** @type {import('intlayer').IntlayerConfig} */
523
+ const config = {
524
+ // ... 나머지 구성
525
+ compiler: {
526
+ /**
527
+ * 컴파일러 활성화 여부를 나타냅니다.
528
+ */
529
+ enabled: true,
530
+
531
+ /**
532
+ * 출력 파일 경로를 정의합니다.
533
+ */
534
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
535
+
536
+ /**
537
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
538
+ */
539
+ saveComponents: false,
540
+
541
+ /**
542
+ * 사전 키 접두사
543
+ */
544
+ dictionaryKeyPrefix: "",
545
+ },
546
+ };
547
+
548
+ module.exports = config;
549
+ ```
550
+
551
+ <Tabs>
552
+ <Tab value='추출 명령'>
553
+
554
+ 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
555
+
556
+ ```bash packageManager="npm"
557
+ npx intlayer extract
558
+ ```
559
+
560
+ ```bash packageManager="pnpm"
561
+ pnpm intlayer extract
562
+ ```
563
+
564
+ ```bash packageManager="yarn"
565
+ yarn intlayer extract
566
+ ```
567
+
568
+ ```bash packageManager="bun"
569
+ bunx intlayer extract
570
+ ```
571
+
572
+ </Tab>
573
+ <Tab value='Babel 컴파일러'>
574
+
575
+ `vite.config.ts`를 업데이트하여 `intlayerCompiler` 플러그인을 포함합니다.
576
+
577
+ ```ts fileName="vite.config.ts"
578
+ import { defineConfig } from "vite";
579
+ import { intlayer, intlayerCompiler } from "vite-intlayer";
580
+
581
+ export default defineConfig({
582
+ plugins: [
583
+ intlayer(),
584
+ intlayerCompiler(), // 컴파일러 플러그인을 추가합니다
585
+ ],
586
+ });
587
+ ```
588
+
589
+ ```bash packageManager="npm"
590
+ npm run build # 또는 npm run dev
591
+ ```
592
+
593
+ ```bash packageManager="pnpm"
594
+ pnpm run build # 또는 pnpm run dev
595
+ ```
596
+
597
+ ```bash packageManager="yarn"
598
+ yarn build # 또는 yarn dev
599
+ ```
600
+
601
+ ```bash packageManager="bun"
602
+ bun run build # Or bun run dev
603
+ ```
604
+
605
+ </Tab>
606
+ </Tabs>
607
+
608
+ ---
609
+
610
+ ## Configure TypeScript
611
+
612
+ Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
613
+
614
+ Ensure your TypeScript configuration includes the autogenerated types:
615
+
616
+ ```json5 fileName="tsconfig.json"
617
+ {
618
+ // ... your existing configurations
619
+ include: [
620
+ // ... your existing includes
621
+ ".intlayer/**/*.ts", // Include the auto-generated types
622
+ ],
623
+ }
624
+ ```
625
+
626
+ ---
627
+
628
+ ## Git Configuration
629
+
630
+ It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
631
+
632
+ To do this, you can add the following instructions to your `.gitignore` file:
633
+
634
+ ```plaintext fileName=".gitignore"
635
+ # Intlayer에서 생성된 파일 무시
636
+ .intlayer
637
+ ```
638
+
639
+ ---
640
+
641
+ ## VS Code Extension
642
+
643
+ To improve your development experience with Intlayer, you can install the official **Intlayer VS Code Extension**.
644
+
645
+ [Install from the VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
646
+
647
+ This extension provides:
648
+
649
+ - **Autocompletion** for translation keys.
650
+ - **Real-time error detection** for missing translations.
651
+ - **Inline previews** of translated content.
652
+ - **Quick actions** to easily create and update translations.
653
+
654
+ For more details on how to use the extension, refer to the [Intlayer VS Code Extension documentation](https://intlayer.org/doc/vs-code-extension).
655
+
656
+ ---
657
+
658
+ ## Go Further
659
+
660
+ To go further, you can implement the [visual editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) or externalize your content using the [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
661
+
662
+ ---
663
+
664
+ ## Documentation References
665
+
666
+ - [Intlayer Documentation](https://intlayer.org)
667
+ - [React Router v7 Documentation](https://reactrouter.com/)
668
+ - [React Router fs-routes Documentation](https://reactrouter.com/how-to/file-route-conventions)
669
+ - [useIntlayer hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useIntlayer.md)
670
+ - [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/packages/react-intlayer/useLocale.md)
671
+ - [Content Declaration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md)
672
+ - [Configuration](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md)
673
+
674
+ This comprehensive guide provides everything you need to integrate Intlayer with React Router v7 using file-system based routing for a fully internationalized application with locale-aware routing and TypeScript support.
675
+
452
676
  ### 11단계: 미들웨어 추가 (선택 사항)
453
677
 
454
678
  `intlayerProxy`를 사용하여 애플리케이션에 서버 사이드 라우팅을 추가할 수도 있습니다. 이 플러그인은 URL을 기반으로 현재 로케일을 자동으로 감지하고 적절한 로케일 쿠키를 설정합니다. 로케일이 지정되지 않은 경우, 플러그인은 사용자의 브라우저 언어 설정을 기반으로 가장 적합한 로케일을 결정합니다. 로케일이 감지되지 않으면 기본 로케일로 리디렉션합니다.