@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.
- package/docs/ar/compiler.md +84 -49
- package/docs/ar/configuration.md +80 -37
- package/docs/ar/intlayer_with_nextjs_16.md +174 -1
- package/docs/ar/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ar/intlayer_with_react_router_v7.md +224 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ar/intlayer_with_svelte_kit.md +175 -2
- package/docs/ar/intlayer_with_tanstack.md +176 -1
- package/docs/ar/intlayer_with_vite+preact.md +174 -1
- package/docs/ar/intlayer_with_vite+react.md +174 -1
- package/docs/ar/intlayer_with_vite+solid.md +174 -1
- package/docs/ar/intlayer_with_vite+svelte.md +174 -1
- package/docs/ar/intlayer_with_vite+vue.md +174 -1
- package/docs/de/compiler.md +83 -48
- package/docs/de/configuration.md +434 -212
- package/docs/de/intlayer_with_nextjs_16.md +176 -1
- package/docs/de/intlayer_with_nextjs_compiler.md +106 -349
- package/docs/de/intlayer_with_react_router_v7.md +225 -2
- package/docs/de/intlayer_with_react_router_v7_fs_routes.md +221 -79
- package/docs/de/intlayer_with_svelte_kit.md +158 -2
- package/docs/de/intlayer_with_tanstack.md +159 -1
- package/docs/de/intlayer_with_vite+preact.md +157 -1
- package/docs/de/intlayer_with_vite+react.md +157 -1
- package/docs/de/intlayer_with_vite+solid.md +159 -3
- package/docs/de/intlayer_with_vite+svelte.md +157 -1
- package/docs/de/intlayer_with_vite+vue.md +157 -1
- package/docs/en/compiler.md +60 -33
- package/docs/en/configuration.md +80 -57
- package/docs/en/intlayer_with_nextjs_16.md +176 -0
- package/docs/en/intlayer_with_nextjs_compiler.md +179 -1
- package/docs/en/intlayer_with_react_router_v7.md +159 -0
- package/docs/en/intlayer_with_react_router_v7_fs_routes.md +159 -0
- package/docs/en/intlayer_with_svelte_kit.md +159 -0
- package/docs/en/intlayer_with_tanstack.md +160 -1
- package/docs/en/intlayer_with_vite+preact.md +159 -0
- package/docs/en/intlayer_with_vite+react.md +159 -0
- package/docs/en/intlayer_with_vite+solid.md +148 -27
- package/docs/en/intlayer_with_vite+svelte.md +159 -0
- package/docs/en/intlayer_with_vite+vue.md +142 -41
- package/docs/en-GB/compiler.md +66 -34
- package/docs/en-GB/configuration.md +78 -36
- package/docs/es/compiler.md +83 -48
- package/docs/es/configuration.md +429 -206
- package/docs/es/intlayer_with_adonisjs.md +1 -1
- package/docs/es/intlayer_with_express.md +1 -1
- package/docs/es/intlayer_with_fastify.md +1 -1
- package/docs/es/intlayer_with_hono.md +1 -1
- package/docs/es/intlayer_with_nestjs.md +1 -1
- package/docs/es/intlayer_with_nextjs_16.md +176 -3
- package/docs/es/intlayer_with_nextjs_compiler.md +175 -2
- package/docs/es/intlayer_with_nuxt.md +1 -1
- package/docs/es/intlayer_with_react_router_v7.md +227 -4
- package/docs/es/intlayer_with_react_router_v7_fs_routes.md +162 -4
- package/docs/es/intlayer_with_svelte_kit.md +158 -2
- package/docs/es/intlayer_with_tanstack.md +160 -2
- package/docs/es/intlayer_with_vite+preact.md +162 -6
- package/docs/es/intlayer_with_vite+react.md +160 -4
- package/docs/es/intlayer_with_vite+solid.md +163 -7
- package/docs/es/intlayer_with_vite+svelte.md +157 -1
- package/docs/es/intlayer_with_vite+vue.md +165 -9
- package/docs/fr/compiler.md +81 -46
- package/docs/fr/configuration.md +355 -134
- package/docs/fr/intlayer_with_adonisjs.md +1 -1
- package/docs/fr/intlayer_with_express.md +1 -1
- package/docs/fr/intlayer_with_fastify.md +1 -1
- package/docs/fr/intlayer_with_hono.md +1 -1
- package/docs/fr/intlayer_with_nestjs.md +1 -1
- package/docs/fr/intlayer_with_nextjs_16.md +183 -7
- package/docs/fr/intlayer_with_nextjs_compiler.md +179 -3
- package/docs/fr/intlayer_with_react_router_v7.md +229 -3
- package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +237 -6
- package/docs/fr/intlayer_with_svelte_kit.md +158 -2
- package/docs/fr/intlayer_with_tanstack.md +159 -1
- package/docs/fr/intlayer_with_vite+preact.md +164 -8
- package/docs/fr/intlayer_with_vite+react.md +162 -6
- package/docs/fr/intlayer_with_vite+solid.md +163 -7
- package/docs/fr/intlayer_with_vite+svelte.md +157 -1
- package/docs/fr/intlayer_with_vite+vue.md +164 -8
- package/docs/hi/compiler.md +81 -46
- package/docs/hi/configuration.md +87 -44
- package/docs/hi/intlayer_with_nextjs_16.md +174 -1
- package/docs/hi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/hi/intlayer_with_react_router_v7.md +224 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/hi/intlayer_with_svelte_kit.md +158 -2
- package/docs/hi/intlayer_with_tanstack.md +159 -1
- package/docs/hi/intlayer_with_vite+preact.md +157 -1
- package/docs/hi/intlayer_with_vite+react.md +157 -1
- package/docs/hi/intlayer_with_vite+solid.md +157 -1
- package/docs/hi/intlayer_with_vite+svelte.md +157 -1
- package/docs/hi/intlayer_with_vite+vue.md +157 -1
- package/docs/id/compiler.md +84 -51
- package/docs/id/configuration.md +83 -45
- package/docs/id/intlayer_with_nextjs_16.md +174 -1
- package/docs/id/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/id/intlayer_with_react_router_v7.md +224 -1
- package/docs/id/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/id/intlayer_with_svelte_kit.md +158 -2
- package/docs/id/intlayer_with_tanstack.md +159 -1
- package/docs/id/intlayer_with_vite+preact.md +157 -1
- package/docs/id/intlayer_with_vite+react.md +157 -1
- package/docs/id/intlayer_with_vite+solid.md +157 -1
- package/docs/id/intlayer_with_vite+svelte.md +157 -1
- package/docs/id/intlayer_with_vite+vue.md +157 -1
- package/docs/it/compiler.md +81 -46
- package/docs/it/configuration.md +426 -204
- package/docs/it/intlayer_with_nextjs_16.md +174 -1
- package/docs/it/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/it/intlayer_with_react_router_v7.md +225 -2
- package/docs/it/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/it/intlayer_with_svelte_kit.md +158 -2
- package/docs/it/intlayer_with_tanstack.md +159 -1
- package/docs/it/intlayer_with_vite+preact.md +157 -1
- package/docs/it/intlayer_with_vite+react.md +157 -1
- package/docs/it/intlayer_with_vite+solid.md +159 -3
- package/docs/it/intlayer_with_vite+svelte.md +157 -1
- package/docs/it/intlayer_with_vite+vue.md +157 -1
- package/docs/ja/compiler.md +94 -58
- package/docs/ja/configuration.md +88 -45
- package/docs/ja/intlayer_with_nextjs_16.md +174 -1
- package/docs/ja/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ja/intlayer_with_react_router_v7.md +184 -394
- package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ja/intlayer_with_svelte_kit.md +119 -595
- package/docs/ja/intlayer_with_tanstack.md +131 -642
- package/docs/ja/intlayer_with_vite+preact.md +111 -1231
- package/docs/ja/intlayer_with_vite+react.md +129 -1304
- package/docs/ja/intlayer_with_vite+solid.md +159 -3
- package/docs/ja/intlayer_with_vite+svelte.md +157 -1
- package/docs/ja/intlayer_with_vite+vue.md +157 -1
- package/docs/ko/compiler.md +88 -52
- package/docs/ko/configuration.md +87 -44
- package/docs/ko/intlayer_with_nextjs_16.md +174 -1
- package/docs/ko/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ko/intlayer_with_react_router_v7.md +225 -2
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +226 -2
- package/docs/ko/intlayer_with_svelte_kit.md +158 -2
- package/docs/ko/intlayer_with_tanstack.md +159 -1
- package/docs/ko/intlayer_with_vite+preact.md +157 -1
- package/docs/ko/intlayer_with_vite+react.md +157 -1
- package/docs/ko/intlayer_with_vite+solid.md +159 -3
- package/docs/ko/intlayer_with_vite+svelte.md +157 -1
- package/docs/ko/intlayer_with_vite+vue.md +157 -1
- package/docs/pl/compiler.md +84 -51
- package/docs/pl/configuration.md +83 -37
- package/docs/pl/intlayer_with_nextjs_16.md +174 -1
- package/docs/pl/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pl/intlayer_with_react_router_v7.md +224 -1
- package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pl/intlayer_with_svelte_kit.md +158 -2
- package/docs/pl/intlayer_with_tanstack.md +159 -1
- package/docs/pl/intlayer_with_vite+preact.md +157 -1
- package/docs/pl/intlayer_with_vite+react.md +157 -1
- package/docs/pl/intlayer_with_vite+solid.md +157 -1
- package/docs/pl/intlayer_with_vite+svelte.md +157 -1
- package/docs/pl/intlayer_with_vite+vue.md +157 -1
- package/docs/pt/compiler.md +81 -46
- package/docs/pt/configuration.md +404 -194
- package/docs/pt/intlayer_with_nextjs_16.md +174 -1
- package/docs/pt/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/pt/intlayer_with_react_router_v7.md +224 -1
- package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/pt/intlayer_with_svelte_kit.md +158 -2
- package/docs/pt/intlayer_with_tanstack.md +159 -1
- package/docs/pt/intlayer_with_vite+preact.md +157 -1
- package/docs/pt/intlayer_with_vite+react.md +157 -1
- package/docs/pt/intlayer_with_vite+solid.md +157 -1
- package/docs/pt/intlayer_with_vite+svelte.md +157 -1
- package/docs/pt/intlayer_with_vite+vue.md +157 -1
- package/docs/ru/compiler.md +90 -57
- package/docs/ru/configuration.md +76 -46
- package/docs/ru/intlayer_with_nextjs_16.md +174 -1
- package/docs/ru/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/ru/intlayer_with_react_router_v7.md +224 -1
- package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/ru/intlayer_with_svelte_kit.md +158 -2
- package/docs/ru/intlayer_with_tanstack.md +159 -1
- package/docs/ru/intlayer_with_vite+preact.md +157 -1
- package/docs/ru/intlayer_with_vite+react.md +157 -1
- package/docs/ru/intlayer_with_vite+solid.md +157 -1
- package/docs/ru/intlayer_with_vite+svelte.md +157 -1
- package/docs/ru/intlayer_with_vite+vue.md +157 -1
- package/docs/tr/compiler.md +85 -52
- package/docs/tr/configuration.md +83 -40
- package/docs/tr/intlayer_with_nextjs_16.md +174 -1
- package/docs/tr/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/tr/intlayer_with_react_router_v7.md +224 -1
- package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/tr/intlayer_with_svelte_kit.md +158 -2
- package/docs/tr/intlayer_with_tanstack.md +159 -1
- package/docs/tr/intlayer_with_vite+preact.md +157 -1
- package/docs/tr/intlayer_with_vite+react.md +157 -1
- package/docs/tr/intlayer_with_vite+solid.md +157 -1
- package/docs/tr/intlayer_with_vite+svelte.md +157 -1
- package/docs/tr/intlayer_with_vite+vue.md +157 -1
- package/docs/uk/compiler.md +96 -61
- package/docs/uk/configuration.md +83 -37
- package/docs/uk/intlayer_with_nextjs_16.md +174 -1
- package/docs/uk/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/uk/intlayer_with_react_router_v7.md +224 -1
- package/docs/uk/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/uk/intlayer_with_svelte_kit.md +157 -1
- package/docs/uk/intlayer_with_tanstack.md +159 -1
- package/docs/uk/intlayer_with_vite+preact.md +157 -1
- package/docs/uk/intlayer_with_vite+react.md +157 -1
- package/docs/uk/intlayer_with_vite+solid.md +157 -1
- package/docs/uk/intlayer_with_vite+svelte.md +157 -1
- package/docs/uk/intlayer_with_vite+vue.md +157 -1
- package/docs/vi/compiler.md +85 -50
- package/docs/vi/configuration.md +85 -39
- package/docs/vi/intlayer_with_nextjs_16.md +174 -1
- package/docs/vi/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/vi/intlayer_with_react_router_v7.md +224 -1
- package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +225 -1
- package/docs/vi/intlayer_with_svelte_kit.md +158 -2
- package/docs/vi/intlayer_with_tanstack.md +159 -1
- package/docs/vi/intlayer_with_vite+preact.md +157 -1
- package/docs/vi/intlayer_with_vite+react.md +157 -1
- package/docs/vi/intlayer_with_vite+solid.md +157 -1
- package/docs/vi/intlayer_with_vite+svelte.md +157 -1
- package/docs/vi/intlayer_with_vite+vue.md +157 -1
- package/docs/zh/compiler.md +84 -49
- package/docs/zh/configuration.md +80 -37
- package/docs/zh/intlayer_with_adonisjs.md +1 -1
- package/docs/zh/intlayer_with_express.md +1 -1
- package/docs/zh/intlayer_with_fastify.md +1 -1
- package/docs/zh/intlayer_with_hono.md +1 -1
- package/docs/zh/intlayer_with_nestjs.md +1 -1
- package/docs/zh/intlayer_with_nextjs_16.md +174 -1
- package/docs/zh/intlayer_with_nextjs_compiler.md +174 -1
- package/docs/zh/intlayer_with_react_router_v7.md +227 -4
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +228 -4
- package/docs/zh/intlayer_with_svelte_kit.md +158 -2
- package/docs/zh/intlayer_with_tanstack.md +159 -1
- package/docs/zh/intlayer_with_vite+preact.md +159 -3
- package/docs/zh/intlayer_with_vite+react.md +157 -1
- package/docs/zh/intlayer_with_vite+solid.md +161 -5
- package/docs/zh/intlayer_with_vite+svelte.md +157 -1
- package/docs/zh/intlayer_with_vite+vue.md +158 -2
- package/package.json +6 -6
package/docs/ko/compiler.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-09-09
|
|
3
|
-
updatedAt: 2026-03-
|
|
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-
|
|
25
|
-
changes:
|
|
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
|
-
//
|
|
139
|
+
// 컴포넌트에서 콘텐츠를 추출하여 사전으로 변환
|
|
140
140
|
[intlayerExtractBabelPlugin, getExtractPluginOptions()],
|
|
141
|
-
//
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
171
|
-
"**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}",
|
|
172
|
-
"!**/node_modules/**",
|
|
173
|
-
],
|
|
207
|
+
output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
174
208
|
|
|
175
209
|
/**
|
|
176
|
-
*
|
|
177
|
-
|
|
178
|
-
excludePattern: ["**/node_modules/**"],
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* 최적화된 사전의 출력 디렉터리.
|
|
210
|
+
* 변환된 후 컴포넌트를 저장할지 여부를 나타냅니다.
|
|
211
|
+
* 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
|
|
182
212
|
*/
|
|
183
|
-
|
|
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: "", //
|
|
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
|
-
- _기본값_: `'
|
|
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
|
-
- _참고_: `./**/*` 경로는
|
|
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
|
-
- _예시_:
|
|
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
|
+
> 를 참조하세요.
|
package/docs/ko/configuration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-03-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
*
|
|
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
|
-
|
|
490
|
+
output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
|
|
447
491
|
|
|
448
492
|
/**
|
|
449
|
-
*
|
|
493
|
+
* 변환된 후 구성 요소를 저장할지 여부를 나타냅니다.
|
|
494
|
+
* 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
|
|
450
495
|
*/
|
|
451
|
-
|
|
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: "", //
|
|
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
|
-
- _기본값_: `'
|
|
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
|
-
- _기본값_: `
|
|
1074
|
-
- _설명_: 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다. `{{
|
|
1075
|
-
- _참고_:
|
|
1076
|
-
- _
|
|
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
|
-
- _예시_:
|
|
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:
|
|
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`로 리디렉션됩니다.
|