@intlayer/docs 8.3.0 → 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: 2025-09-09
3
- updatedAt: 2026-03-10
3
+ updatedAt: 2026-03-12
4
4
  title: Intlayer 컴파일러 | i18n을 위한 자동화된 콘텐츠 추출
5
5
  description: Intlayer 컴파일러로 국제화 프로세스를 자동화하세요. Vite, Next.js 등에서 더 빠르고 효율적인 i18n을 위해 컴포넌트에서 직접 콘텐츠를 추출합니다.
6
6
  keywords:
@@ -21,8 +21,8 @@ slugs:
21
21
  - compiler
22
22
  history:
23
23
  - version: 8.2.0
24
- date: 2026-03-10
25
- changes: Update compiler options, add FilePathPattern support
24
+ date: 2026-03-09
25
+ changes: 컴파일러 옵션 업데이트, FilePathPattern 지원 추가
26
26
  - version: 8.1.7
27
27
  date: 2026-02-25
28
28
  changes: 컴파일러 옵션 업데이트
@@ -136,9 +136,9 @@ const {
136
136
  module.exports = {
137
137
  presets: ["next/babel"],
138
138
  plugins: [
139
- // Extract content from components into dictionaries
139
+ // 컴포넌트에서 콘텐츠를 추출하여 사전으로 변환
140
140
  [intlayerExtractBabelPlugin, getExtractPluginOptions()],
141
- // Optimize imports by replacing useIntlayer with direct dictionary imports
141
+ // useIntlayer를 직접 사전 임포트로 대체하여 임포트 최적화
142
142
  [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()],
143
143
  ],
144
144
  };
@@ -149,73 +149,85 @@ module.exports = {
149
149
  See complete tutorial: [Intlayer Compiler with Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_nextjs_compiler.md)
150
150
 
151
151
  </Tab>
152
+ </Tabs>
152
153
 
153
154
  ### 사용자 정의 구성
154
155
 
155
156
  컴파일러 동작을 사용자 정의하려면 프로젝트 루트에 있는 `intlayer.config.ts` 파일을 업데이트할 수 있습니다.
156
157
 
157
- ```ts fileName="intlayer.config.ts"
158
+ ````ts fileName="intlayer.config.ts"
158
159
  import { type IntlayerConfig, Locales } from "intlayer";
159
160
 
160
161
  const config: IntlayerConfig = {
161
162
  compiler: {
162
163
  /**
164
+ * 컴파일러 활성화 여부를 나타냅니다.
163
165
  * 개발 중에 컴파일러를 건너뛰고 시작 시간을 단축하려면 'build-only'로 설정하십시오.
164
166
  */
165
167
  enabled: true,
166
168
 
167
169
  /**
168
- * Pattern to traverse the code to optimize.
170
+ * 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다.
171
+ *
172
+ * - `./` 경로는 컴포넌트 디렉터리를 기준으로 해결됩니다.
173
+ * - `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해결됩니다.
174
+ *
175
+ * - 경로에 `{{locale}}` 변수를 넣으면 언어별로 분리된 사전 생성이 활성화됩니다.
176
+ *
177
+ * 예시:
178
+ * ```ts
179
+ * {
180
+ * // 컴포넌트 옆에 다국어 .content.ts 파일 생성
181
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
182
+ *
183
+ * // output: './{{fileName}}{{extension}}', // 문자열 템플릿을 사용한 동일한 표현
184
+ * }
185
+ * ```
186
+ *
187
+ * ```ts
188
+ * {
189
+ * // 프로젝트 루트의 언어별 중앙 집중식 JSON 파일 생성
190
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
191
+ *
192
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // 문자열 템플릿을 사용한 동일한 표현
193
+ * }
194
+ * ```
195
+ *
196
+ * 변수 목록:
197
+ * - `fileName`: 파일 이름.
198
+ * - `key`: 콘텐츠 키.
199
+ * - `locale`: 콘텐츠 로케일.
200
+ * - `extension`: 파일 확장자.
201
+ * - `componentFileName`: 컴포넌트 파일 이름.
202
+ * - `componentExtension`: 컴포넌트 파일 확장자.
203
+ * - `format`: 사전 형식.
204
+ * - `componentFormat`: 컴포넌트 사전 형식.
205
+ * - `componentDirPath`: 컴포넌트 디렉터리 경로.
169
206
  */
170
- transformPattern: [
171
- "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
172
- "!**/node_modules/**",
173
- ],
207
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
174
208
 
175
209
  /**
176
- * Pattern to exclude from the optimization.
177
- */
178
- excludePattern: ["**/node_modules/**"],
179
-
180
- /**
181
- * 최적화된 사전의 출력 디렉터리.
210
+ * 변환된 컴포넌트를 저장할지 여부를 나타냅니다.
211
+ * 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
182
212
  */
183
- output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
213
+ saveComponents: false,
184
214
 
185
215
  /**
186
- * 키 없이 생성된 파일에 콘텐츠만 삽입합니다.
216
+ * 생성된 파일에 콘텐츠만 삽입합니다. 로케일당 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
217
+ *
218
+ * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`
187
219
  */
188
220
  noMetadata: false,
189
221
 
190
222
  /**
191
223
  * 사전 키 접두사
192
224
  */
193
- dictionaryKeyPrefix: "", // Remove base prefix
194
-
195
- /**
196
- * 변환된 후 구성 요소를 저장할지 여부를 나타냅니다.
197
- * 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
198
- */
199
- saveComponents: false,
225
+ dictionaryKeyPrefix: "", // 추출된 사전 키에 선택적 접두사 추가
200
226
  },
201
227
  };
202
228
 
203
229
  export default config;
204
- ```
205
-
206
- ### 누락된 번역 채우기
207
-
208
- Intlayer는 누락된 번역을 채우는 데 도움이 되는 CLI 도구를 제공합니다. `intlayer` 명령을 사용하여 코드에서 누락된 번역을 테스트하고 채울 수 있습니다.
209
-
210
- ```bash
211
- npx intlayer test # 누락된 번역이 있는지 테스트
212
- ```
213
-
214
- ```bash
215
- npx intlayer fill # 누락된 번역 채우기
216
- ```
217
-
218
- > 자세한 내용은 [CLI 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/ci.md)를 참조하세요.
230
+ ````
219
231
 
220
232
  ### 컴파일러 구성 참조
221
233
 
@@ -225,36 +237,37 @@ npx intlayer fill # 누락된 번역 채우기
225
237
  - _형식_: `boolean | 'build-only'`
226
238
  - _기본값_: `true`
227
239
  - _설명_: 컴파일러 활성화 여부를 나타냅니다.
240
+
228
241
  - **dictionaryKeyPrefix**:
229
242
  - _형식_: `string`
230
- - _기본값_: `'comp-'`
243
+ - _기본값_: `''`
231
244
  - _설명_: 추출된 사전 키의 접두사.
245
+
232
246
  - **transformPattern**:
233
247
  - _형식_: `string | string[]`
234
248
  - _기본값_: `['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']`
235
- - _설명_: 최적화할 코드를 탐색하는 패턴.
249
+ - _설명_: (사용 중단됨: 대신 `build.traversePattern`을 사용하세요) 최적화할 코드를 탐색하는 패턴.
250
+
236
251
  - **excludePattern**:
237
252
  - _형식_: `string | string[]`
238
253
  - _기본값_: `['**/node_modules/**']`
239
- - _설명_: 최적화에서 제외할 패턴.
240
- - **outputDir** (Deprecated):
241
- - _형식_: `string`
242
- - _기본값_: `'compiler'`
243
- - _설명_: 추출된 사전이 저장될 디렉터리.
254
+ - _설명_: (사용 중단됨: 대신 `build.traversePattern`을 사용하세요) 최적화에서 제외할 패턴.
244
255
 
245
256
  - **output**:
246
257
  - _형식_: `FilePathPattern`
247
258
  - _기본값_: `({ key }) => 'compiler/${key}.content.json'`
248
259
  - _설명_: 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다. `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`와 같은 동적 변수를 처리합니다. `'my/{{var}}/path'` 형식을 사용하여 문자열로 설정하거나 함수로 설정할 수 있습니다.
249
- - _참고_: `./**/*` 경로는 구성 요소를 기준으로 해결됩니다. `/**/*` 경로는 Intlayer `baseDir`을 기준으로 해결됩니다.
260
+ - _참고_: `./**/*` 경로는 컴포넌트를 기준으로 해결됩니다. `/**/*` 경로는 Intlayer `baseDir`을 기준으로 해결됩니다.
261
+ - _참고_: 로케일이 경로에 정의된 경우 사전은 로케일별로 생성됩니다.
250
262
  - _예시_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
251
263
 
252
264
  - **noMetadata**:
253
265
  - _형식_: `boolean`
254
266
  - _기본값_: `false`
255
- - _설명_: 메타데이터를 파일에 저장할지 여부를 나타냅니다. true인 경우 컴파일러는 사전의 메타데이터(키, 콘텐츠 래퍼)를 저장하지 않습니다.
267
+ - _설명_: 메타데이터를 파일에 저장할지 여부를 나타냅니다. true인 경우 컴파일러는 사전의 메타데이터(키, 콘텐츠 래퍼)를 저장하지 않습니다. 로케일별 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
256
268
  - _참고_: `loadJSON` 플러그인과 함께 사용할 때 유용합니다.
257
- - _예시_: `true`인 경우:
269
+ - _예시_:
270
+ `true`인 경우:
258
271
  ```json
259
272
  {
260
273
  "key": "value"
@@ -273,4 +286,27 @@ npx intlayer fill # 누락된 번역 채우기
273
286
  - **saveComponents**:
274
287
  - _형식_: `boolean`
275
288
  - _기본값_: `false`
276
- - _설명_: 변환된 후 구성 요소를 저장할지 여부를 나타냅니다.
289
+ - _설명_: 변환된 후 컴포넌트를 저장할지 여부를 나타냅니다.
290
+
291
+ ### 누락된 번역 채우기
292
+
293
+ Intlayer는 누락된 번역을 채우는 데 도움이 되는 CLI 도구를 제공합니다. `intlayer` 명령을 사용하여 코드에서 누락된 번역을 테스트하고 채울 수 있습니다.
294
+
295
+ ```bash
296
+ npx intlayer test # 누락된 번역이 있는지 테스트
297
+ ```
298
+
299
+ ```bash
300
+ npx intlayer fill # 누락된 번역 채우기
301
+ ```
302
+
303
+ ### 추출
304
+
305
+ Intlayer는 코드에서 콘텐츠를 추출하는 데 도움이 되는 CLI 도구를 제공합니다. `intlayer extract` 명령을 사용하여 코드에서 콘텐츠를 추출할 수 있습니다.
306
+
307
+ ```bash
308
+ npx intlayer extract
309
+ ```
310
+
311
+ > 자세한 내용은 [CLI 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/cli/index.md)
312
+ > 를 참조하세요.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-11
3
+ updatedAt: 2026-03-12
4
4
  title: 구성
5
5
  description: 애플리케이션에 맞게 Intlayer를 구성하는 방법을 배우세요. Intlayer를 사용자 요구에 맞게 맞춤 설정할 수 있는 다양한 설정과 옵션을 이해하세요.
6
6
  keywords:
@@ -15,8 +15,8 @@ slugs:
15
15
  - configuration
16
16
  history:
17
17
  - version: 8.3.0
18
- data: 2026-03-11
19
- changes: 'baseDir'을 'content' 구성에서 'system' 구성으로 이동
18
+ date: 2026-03-11
19
+ changes: "'baseDir'을 'content' 구성에서 'system' 구성으로 이동"
20
20
  - version: 8.2.0
21
21
  date: 2026-03-10
22
22
  changes: 컴파일러 옵션 업데이트, 'output' 및 'noMetadata' 지원 추가
@@ -43,25 +43,25 @@ history:
43
43
  changes: JSON5 및 JSONC 파일 형식 지원 추가
44
44
  - version: 7.5.0
45
45
  date: 2025-12-17
46
- changes: `buildMode` 옵션 추가
46
+ changes: "`buildMode` 옵션 추가"
47
47
  - version: 6.0.0
48
48
  date: 2025-09-16
49
- changes: `live` 가져오기 모드 추가
49
+ changes: "`live` 가져오기 모드 추가"
50
50
  - version: 6.0.0
51
51
  date: 2025-09-16
52
- changes: `live` import 모드 추가
52
+ changes: "`live` import 모드 추가"
53
53
  - version: 6.0.0
54
54
  date: 2025-09-04
55
- changes: `hotReload` 필드를 `liveSync`로 교체하고 `liveSyncPort` 및 `liveSyncURL` 필드 추가
55
+ changes: "`hotReload` 필드를 `liveSync`로 교체하고 `liveSyncPort` 및 `liveSyncURL` 필드 추가"
56
56
  - version: 5.6.1
57
57
  date: 2025-07-25
58
- changes: `activateDynamicImport`을 `importMode` 옵션으로 교체
58
+ changes: "`activateDynamicImport`을 `importMode` 옵션으로 교체"
59
59
  - version: 5.6.0
60
60
  date: 2025-07-13
61
61
  changes: 기본 contentDir를 `['src']`에서 `['.']`로 변경
62
62
  - version: 5.5.11
63
63
  date: 2025-06-29
64
- changes: `docs` 명령어 추가
64
+ changes: "`docs` 명령어 추가"
65
65
  ---
66
66
 
67
67
  # Intlayer 구성 문서
@@ -95,7 +95,7 @@ Intlayer는 JSON, JS, MJS, TS 구성 파일 형식을 지원합니다:
95
95
 
96
96
  ## 예제 구성 파일
97
97
 
98
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
98
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
99
99
  import { Locales, type IntlayerConfig } from "intlayer";
100
100
  import { nextjsRewrite } from "intlayer/routing";
101
101
  import { z } from "zod";
@@ -193,7 +193,7 @@ const config: IntlayerConfig = {
193
193
  * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
194
194
  * Default: ['cookie', 'header']
195
195
  */
196
- storage: "cookie",
196
+ storage: ["cookie", "header"],
197
197
 
198
198
  /**
199
199
  * Base path for the application URLs.
@@ -330,6 +330,17 @@ const config: IntlayerConfig = {
330
330
  * Base URL for the AI API.
331
331
  */
332
332
  baseURL: "http://localhost:3000",
333
+
334
+ /**
335
+ * 데이터 직렬화
336
+ *
337
+ * 옵션:
338
+ * - "json": 표준, 신뢰할 수 있음; 더 많은 토큰을 사용합니다.
339
+ * - "toon": 토큰을 덜 사용하지만 JSON만큼 일관성이 있지는 않습니다.
340
+ *
341
+ * 기본값: "json"
342
+ */
343
+ dataSerialization: "json",
333
344
  },
334
345
 
335
346
  /**
@@ -429,42 +440,70 @@ const config: IntlayerConfig = {
429
440
  compiler: {
430
441
  /**
431
442
  * 컴파일러 활성화 여부를 나타냅니다.
443
+ *
444
+ * - false : 컴파일러를 비활성화합니다.
445
+ * - true : 컴파일러를 활성화합니다.
446
+ * - "build-only" : 개발 중에 컴파일러를 건너뛰고 시작 시간을 단축합니다.
447
+ *
448
+ * 기본값 : false
432
449
  */
433
450
  enabled: true,
434
451
 
435
452
  /**
436
- * Pattern to traverse the code to optimize.
437
- */
438
- transformPattern: [
439
- "**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
440
- "!**/node_modules/**",
441
- ],
442
-
443
- /**
444
- * Pattern to exclude from the optimization.
453
+ * 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다.
454
+ *
455
+ * - `./` 경로는 컴포넌트 디렉터리를 기준으로 해결됩니다.
456
+ * - `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해결됩니다.
457
+ *
458
+ * - 경로에 `{{locale}}` 변수를 넣으면 언어별로 분리된 사전 생성이 활성화됩니다.
459
+ *
460
+ * 예시:
461
+ * ```ts
462
+ * {
463
+ * // 컴포넌트 옆에 다국어 .content.ts 파일 생성
464
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
465
+ *
466
+ * // output: './{{fileName}}{{extension}}', // 문자열 템플릿을 사용한 동일한 표현
467
+ * }
468
+ * ```
469
+ *
470
+ * ```ts
471
+ * {
472
+ * // 프로젝트 루트의 언어별 중앙 집중식 JSON 파일 생성
473
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
474
+ *
475
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // 문자열 템플릿을 사용한 동일한 표현
476
+ * }
477
+ * ```
478
+ *
479
+ * 변수 목록:
480
+ * - `fileName`: 파일 이름.
481
+ * - `key`: 콘텐츠 키.
482
+ * - `locale`: 콘텐츠 로케일.
483
+ * - `extension`: 파일 확장자.
484
+ * - `componentFileName`: 컴포넌트 파일 이름.
485
+ * - `componentExtension`: 컴포넌트 파일 확장자.
486
+ * - `format`: 사전 형식.
487
+ * - `componentFormat`: 컴포넌트 사전 형식.
488
+ * - `componentDirPath`: 컴포넌트 디렉터리 경로.
445
489
  */
446
- excludePattern: ["**/node_modules/**"],
490
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
447
491
 
448
492
  /**
449
- * 최적화된 사전의 출력 디렉터리.
493
+ * 변환된 구성 요소를 저장할지 여부를 나타냅니다.
494
+ * 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
450
495
  */
451
- output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
496
+ saveComponents: false,
452
497
 
453
498
  /**
454
- * 키 없이 생성된 파일에 콘텐츠만 삽입합니다.
499
+ * 생성된 파일에 콘텐츠만 삽입합니다. 로케일별 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
455
500
  */
456
501
  noMetadata: false,
457
502
 
458
503
  /**
459
504
  * 사전 키 접두사
460
505
  */
461
- dictionaryKeyPrefix: "", // Remove base prefix
462
-
463
- /**
464
- * 변환된 후 구성 요소를 저장할지 여부를 나타냅니다.
465
- * 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
466
- */
467
- saveComponents: false,
506
+ dictionaryKeyPrefix: "", // 추출된 사전 키에 선택적 접두사 추가
468
507
  },
469
508
 
470
509
  /**
@@ -483,7 +522,7 @@ const config: IntlayerConfig = {
483
522
  };
484
523
 
485
524
  export default config;
486
- ```
525
+ ````
487
526
 
488
527
  ## 구성 참조
489
528
 
@@ -1039,7 +1078,7 @@ Intlayer가 애플리케이션의 국제화를 최적화하고 빌드하는 방
1039
1078
 
1040
1079
  - **dictionaryKeyPrefix**:
1041
1080
  - _타입_: `string`
1042
- - _기본값_: `'comp-'`
1081
+ - _기본값_: `''`
1043
1082
  - _설명_: 추출된 사전 키의 접두사입니다.
1044
1083
  - _예시_: `'my-key-'`
1045
1084
  - _참고_: 사전을 추출할 때 파일 이름을 기반으로 키가 생성됩니다. 충돌을 방지하기 위해 생성된 키에 이 접두사가 추가됩니다.
@@ -1063,24 +1102,28 @@ Intlayer가 애플리케이션의 국제화를 최적화하고 빌드하는 방
1063
1102
  - _설명_: 최적화 중에 제외할 파일을 정의하는 패턴입니다.
1064
1103
  - _예시_: `['**/node_modules/**', '!**/node_modules/react/**']`
1065
1104
 
1066
- - **outputDir**:
1067
- - _타입_: `string`
1068
- - _기본값_: `'compiler'`
1069
- - _설명_: 추출된 사전이 저장될 디렉토리로, 프로젝트 베이스 경로에 대한 상대 경로입니다.
1070
-
1071
1105
  - **output**:
1072
1106
  - _형식_: `FilePathPattern`
1073
- - _기본값_: `({ key }) => 'compiler/${key}.content.json'`
1074
- - _설명_: 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다. `{{locale}}`, `{{key}}`, `{{fileName}}`, `{{extension}}`, `{{format}}`, `{{dirPath}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{componentFormat}}`와 같은 동적 변수를 처리합니다. `'my/{{var}}/path'` 형식을 사용하여 문자열로 설정하거나 함수로 설정할 수 있습니다.
1075
- - _참고_: `./**/*` 경로는 구성 요소를 기준으로 해결됩니다. `/**/*` 경로는 Intlayer `baseDir`을 기준으로 해결됩니다.
1076
- - _예시_: `output: ({ locale, key }) => 'compiler/${locale}/${key}.json'`
1107
+ - _기본값_: `undefined`
1108
+ - _설명_: 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다. 문자열 템플릿 또는 함수를 통해 동적 변수를 지원합니다. 지원되는 변수: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}`, `{{componentDirPath}}`.
1109
+ - _참고_: `./` 경로는 구성 요소를 기준으로 해결됩니다. `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해결됩니다.
1110
+ - _참고_: 경로에 `{{locale}}` 변수를 포함하면 로케일별로 분리된 사전 생성이 활성화됩니다.
1111
+ - _예시_:
1112
+ - **구성 요소 옆에 다국어 파일 생성**:
1113
+ - 문자열: `'./{{fileName}}{{extension}}'`
1114
+ - 함수: `({ fileName, extension }) => \`./${fileName}${extension}\``
1115
+
1116
+ - **로케일별 중앙 집중식 JSON 출력**:
1117
+ - 문자열: `'/locales/{{locale}}/{{key}}.content.json'`
1118
+ - 함수: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
1077
1119
 
1078
1120
  - **noMetadata**:
1079
1121
  - _형식_: `boolean`
1080
1122
  - _기본값_: `false`
1081
- - _설명_: 메타데이터를 파일에 저장할지 여부를 나타냅니다. true인 경우 컴파일러는 사전의 메타데이터(키, 콘텐츠 래퍼)를 저장하지 않습니다.
1123
+ - _설명_: 메타데이터를 파일에 저장할지 여부를 나타냅니다. true인 경우 컴파일러는 사전의 메타데이터(키, 콘텐츠 래퍼)를 저장하지 않습니다. 로케일별 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
1082
1124
  - _참고_: `loadJSON` 플러그인과 함께 사용할 때 유용합니다.
1083
- - _예시_: `true`인 경우:
1125
+ - _예시_:
1126
+ `true`인 경우:
1084
1127
  ```json
1085
1128
  {
1086
1129
  "key": "value"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-12-06
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-03-12
4
4
  title: Next.js i18n - Next.js 16 앱 번역 방법 2026
5
5
  description: Next.js 16 웹사이트를 다국어로 만드는 방법을 알아보세요. 국제화(i18n) 및 번역을 위한 문서를 따라가세요.
6
6
  keywords:
@@ -1438,6 +1438,179 @@ return (
1438
1438
  > - [`dir` attribute](https://developer.mozilla.org/ko/docs/Web/HTML/Global_attributes/dir)
1439
1439
  > - [`aria-current` attribute](https://developer.mozilla.org/ko/docs/Web/Accessibility/ARIA/Attributes/aria-current)
1440
1440
 
1441
+ ### (선택 사항) 단계 1 : 컴포넌트 콘텐츠 추출
1442
+
1443
+ 기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.
1444
+
1445
+ 이 프로세스를 용이하게 하기 위해 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)를 제안합니다.
1446
+
1447
+ 설정하려면 `intlayer.config.ts` 파일에 `compiler` 섹션을 추가할 수 있습니다.
1448
+
1449
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
1450
+ import { type IntlayerConfig } from "intlayer";
1451
+
1452
+ const config: IntlayerConfig = {
1453
+ // ... 나머지 구성
1454
+ compiler: {
1455
+ /**
1456
+ * 컴파일러 활성화 여부를 나타냅니다.
1457
+ */
1458
+ enabled: true,
1459
+
1460
+ /**
1461
+ * 출력 파일 경로를 정의합니다.
1462
+ */
1463
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1464
+
1465
+ /**
1466
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
1467
+ */
1468
+ saveComponents: false,
1469
+
1470
+ /**
1471
+ * 사전 키 접두사
1472
+ */
1473
+ dictionaryKeyPrefix: "",
1474
+ },
1475
+ };
1476
+
1477
+ export default config;
1478
+ ```
1479
+
1480
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
1481
+ /** @type {import('intlayer').IntlayerConfig} */
1482
+ const config = {
1483
+ // ... 나머지 구성
1484
+ compiler: {
1485
+ /**
1486
+ * 컴파일러 활성화 여부를 나타냅니다.
1487
+ */
1488
+ enabled: true,
1489
+
1490
+ /**
1491
+ * 출력 파일 경로를 정의합니다.
1492
+ */
1493
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1494
+
1495
+ /**
1496
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
1497
+ */
1498
+ saveComponents: false,
1499
+
1500
+ /**
1501
+ * 사전 키 접두사
1502
+ */
1503
+ dictionaryKeyPrefix: "",
1504
+ },
1505
+ };
1506
+
1507
+ export default config;
1508
+ ```
1509
+
1510
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
1511
+ /** @type {import('intlayer').IntlayerConfig} */
1512
+ const config = {
1513
+ // ... 나머지 구성
1514
+ compiler: {
1515
+ /**
1516
+ * 컴파일러 활성화 여부를 나타냅니다.
1517
+ */
1518
+ enabled: true,
1519
+
1520
+ /**
1521
+ * 출력 파일 경로를 정의합니다.
1522
+ */
1523
+ output: ({ fileName, extension }) => `./${fileName}${extension}`,
1524
+
1525
+ /**
1526
+ * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
1527
+ */
1528
+ saveComponents: false,
1529
+
1530
+ /**
1531
+ * 사전 키 접두사
1532
+ */
1533
+ dictionaryKeyPrefix: "",
1534
+ },
1535
+ };
1536
+
1537
+ module.exports = config;
1538
+ ```
1539
+
1540
+ <Tabs>
1541
+ <Tab value='추출 명령'>
1542
+
1543
+ 컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다
1544
+
1545
+ ```bash packageManager="npm"
1546
+ npx intlayer extract
1547
+ ```
1548
+
1549
+ ```bash packageManager="pnpm"
1550
+ pnpm intlayer extract
1551
+ ```
1552
+
1553
+ ```bash packageManager="yarn"
1554
+ yarn intlayer extract
1555
+ ```
1556
+
1557
+ ```bash packageManager="bun"
1558
+ bunx intlayer extract
1559
+ ```
1560
+
1561
+ </Tab>
1562
+ <Tab value='Babel 컴파일러'>
1563
+
1564
+ ```bash packageManager="npm"
1565
+ npm install @intlayer/babel --save-dev
1566
+ ```
1567
+
1568
+ ```bash packageManager="pnpm"
1569
+ pnpm add @intlayer/babel --save-dev
1570
+ ```
1571
+
1572
+ ```bash packageManager="yarn"
1573
+ yarn add @intlayer/babel --save-dev
1574
+ ```
1575
+
1576
+ ```bash packageManager="bun"
1577
+ bun add @intlayer/babel --dev
1578
+ ```
1579
+
1580
+ ```js fileName="babel.config.js"
1581
+ const {
1582
+ intlayerExtractBabelPlugin,
1583
+ getExtractPluginOptions,
1584
+ } = require("@intlayer/babel");
1585
+
1586
+ module.exports = {
1587
+ presets: ["next/babel"],
1588
+ plugins: [
1589
+ // 컴포넌트에서 콘텐츠를 사전으로 추출
1590
+ [intlayerExtractBabelPlugin, getExtractPluginOptions()],
1591
+ ],
1592
+ };
1593
+ ```
1594
+
1595
+ ```bash packageManager="npm"
1596
+ npm run build # 또는 npm run dev
1597
+ ```
1598
+
1599
+ ```bash packageManager="pnpm"
1600
+ pnpm run build # 또는 pnpm run dev
1601
+ ```
1602
+
1603
+ ```bash packageManager="yarn"
1604
+ yarn build # 또는 yarn dev
1605
+ ```
1606
+
1607
+ ```bash packageManager="bun"
1608
+ bun run build # Or bun run dev
1609
+ ```
1610
+
1611
+ </Tab>
1612
+ </Tabs>
1613
+
1441
1614
  ### (선택 사항) 11단계: 지역화된 링크 컴포넌트 생성하기
1442
1615
 
1443
1616
  애플리케이션의 내비게이션이 현재 로케일을 준수하도록 하려면, 커스텀 `Link` 컴포넌트를 만들 수 있습니다. 이 컴포넌트는 내부 URL에 현재 언어를 자동으로 접두사로 붙여줍니다. 예를 들어, 프랑스어 사용자가 "About" 페이지로 가는 링크를 클릭하면 `/about` 대신 `/fr/about`로 리디렉션됩니다.