@intlayer/docs 8.4.4 → 8.4.6

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 (107) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/cjs/blog.cjs +21 -1
  3. package/dist/cjs/blog.cjs.map +1 -1
  4. package/dist/cjs/common.cjs +81 -1
  5. package/dist/cjs/common.cjs.map +1 -0
  6. package/dist/cjs/doc.cjs +21 -1
  7. package/dist/cjs/doc.cjs.map +1 -1
  8. package/dist/cjs/frequentQuestions.cjs +21 -1
  9. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  10. package/dist/cjs/generated/blog.entry.cjs +572 -1
  11. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  12. package/dist/cjs/generated/docs.entry.cjs +3032 -1
  13. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  14. package/dist/cjs/generated/frequentQuestions.entry.cjs +352 -1
  15. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  16. package/dist/cjs/generated/legal.entry.cjs +72 -1
  17. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  18. package/dist/cjs/index.cjs +34 -1
  19. package/dist/cjs/legal.cjs +21 -1
  20. package/dist/cjs/legal.cjs.map +1 -1
  21. package/dist/esm/blog.mjs +14 -1
  22. package/dist/esm/blog.mjs.map +1 -1
  23. package/dist/esm/common.mjs +67 -1
  24. package/dist/esm/common.mjs.map +1 -1
  25. package/dist/esm/doc.mjs +14 -1
  26. package/dist/esm/doc.mjs.map +1 -1
  27. package/dist/esm/frequentQuestions.mjs +14 -1
  28. package/dist/esm/frequentQuestions.mjs.map +1 -1
  29. package/dist/esm/generated/blog.entry.mjs +570 -1
  30. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  31. package/dist/esm/generated/docs.entry.mjs +3030 -1
  32. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  33. package/dist/esm/generated/frequentQuestions.entry.mjs +350 -1
  34. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  35. package/dist/esm/generated/legal.entry.mjs +70 -1
  36. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  37. package/dist/esm/index.mjs +6 -1
  38. package/dist/esm/legal.mjs +14 -1
  39. package/dist/esm/legal.mjs.map +1 -1
  40. package/dist/types/blog.d.ts +2 -2
  41. package/dist/types/common.d.ts +37 -2
  42. package/dist/types/common.d.ts.map +1 -0
  43. package/dist/types/doc.d.ts +2 -2
  44. package/dist/types/frequentQuestions.d.ts +2 -2
  45. package/dist/types/generated/blog.entry.d.ts +35 -2
  46. package/dist/types/generated/blog.entry.d.ts.map +1 -0
  47. package/dist/types/generated/docs.entry.d.ts +158 -2
  48. package/dist/types/generated/docs.entry.d.ts.map +1 -0
  49. package/dist/types/generated/frequentQuestions.entry.d.ts +24 -2
  50. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -0
  51. package/dist/types/generated/legal.entry.d.ts +10 -2
  52. package/dist/types/generated/legal.entry.d.ts.map +1 -0
  53. package/dist/types/legal.d.ts +2 -2
  54. package/docs/ar/configuration.md +520 -722
  55. package/docs/ar/intlayer_with_storybook.md +521 -0
  56. package/docs/bn/configuration.md +922 -0
  57. package/docs/bn/intlayer_with_hono.md +428 -0
  58. package/docs/de/configuration.md +369 -743
  59. package/docs/de/intlayer_with_storybook.md +521 -0
  60. package/docs/en/configuration.md +181 -507
  61. package/docs/en/intlayer_with_storybook.md +521 -0
  62. package/docs/en-GB/configuration.md +456 -657
  63. package/docs/en-GB/intlayer_with_storybook.md +521 -0
  64. package/docs/es/configuration.md +379 -754
  65. package/docs/es/intlayer_with_storybook.md +521 -0
  66. package/docs/fr/configuration.md +376 -757
  67. package/docs/fr/intlayer_with_storybook.md +521 -0
  68. package/docs/hi/configuration.md +532 -728
  69. package/docs/hi/intlayer_with_storybook.md +521 -0
  70. package/docs/id/configuration.md +371 -684
  71. package/docs/id/intlayer_with_storybook.md +521 -0
  72. package/docs/it/configuration.md +397 -775
  73. package/docs/it/intlayer_with_storybook.md +521 -0
  74. package/docs/ja/configuration.md +525 -724
  75. package/docs/ja/intlayer_with_storybook.md +521 -0
  76. package/docs/ko/configuration.md +525 -724
  77. package/docs/ko/intlayer_with_storybook.md +521 -0
  78. package/docs/pl/configuration.md +430 -734
  79. package/docs/pl/intlayer_with_storybook.md +521 -0
  80. package/docs/pt/configuration.md +375 -746
  81. package/docs/pt/intlayer_with_storybook.md +521 -0
  82. package/docs/ru/configuration.md +532 -701
  83. package/docs/ru/intlayer_with_storybook.md +521 -0
  84. package/docs/tr/configuration.md +527 -719
  85. package/docs/tr/intlayer_with_storybook.md +521 -0
  86. package/docs/uk/configuration.md +425 -744
  87. package/docs/uk/intlayer_with_storybook.md +521 -0
  88. package/docs/ur/configuration.md +922 -0
  89. package/docs/ur/intlayer_with_hono.md +428 -0
  90. package/docs/vi/configuration.md +412 -753
  91. package/docs/vi/intlayer_with_storybook.md +521 -0
  92. package/docs/zh/configuration.md +521 -714
  93. package/docs/zh/intlayer_with_storybook.md +521 -0
  94. package/package.json +6 -6
  95. package/src/generated/docs.entry.ts +20 -0
  96. package/dist/cjs/common-a-l0ULP6.cjs +0 -2
  97. package/dist/cjs/common-a-l0ULP6.cjs.map +0 -1
  98. package/dist/types/blog.entry-D5IgxPXY.d.ts +0 -35
  99. package/dist/types/blog.entry-D5IgxPXY.d.ts.map +0 -1
  100. package/dist/types/common-B45TZvLQ.d.ts +0 -37
  101. package/dist/types/common-B45TZvLQ.d.ts.map +0 -1
  102. package/dist/types/docs.entry-CergjAYt.d.ts +0 -157
  103. package/dist/types/docs.entry-CergjAYt.d.ts.map +0 -1
  104. package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts +0 -24
  105. package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts.map +0 -1
  106. package/dist/types/legal.entry-B5Lg5eeH.d.ts +0 -10
  107. package/dist/types/legal.entry-B5Lg5eeH.d.ts.map +0 -1
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  createdAt: 2024-08-13
3
- updatedAt: 2026-03-12
4
- title: 구성
5
- description: 애플리케이션에 맞게 Intlayer를 구성하는 방법을 배우세요. Intlayer를 사용자 요구에 맞게 맞춤 설정할 수 있는 다양한 설정과 옵션을 이해하세요.
3
+ updatedAt: 2026-03-20
4
+ title: 설정 (Configuration)
5
+ description: 애플리케이션에 Intlayer를 설정하는 방법을 알아보세요. 필요에 따라 Intlayer를 맞춤 설정할 수 있는 다양한 설정과 옵션을 이해하세요.
6
6
  keywords:
7
- - 구성
8
7
  - 설정
9
- - 맞춤화
8
+ - 세팅
9
+ - 커스터마이징
10
10
  - Intlayer
11
11
  - 옵션
12
12
  slugs:
@@ -14,61 +14,88 @@ slugs:
14
14
  - concept
15
15
  - configuration
16
16
  history:
17
+ - version: 8.4.0
18
+ date: 2026-03-20
19
+ changes: 'compiler.output' 및 'dictionary.fill'에 대한 로케일별 객체 표기법 추가
17
20
  - version: 8.3.0
18
21
  date: 2026-03-11
19
- changes: "'baseDir'을 'content' 구성에서 'system' 구성으로 이동"
22
+ changes: 'baseDir'을 'content' 설정에서 'system' 설정으로 이동
20
23
  - version: 8.2.0
21
- date: 2026-03-10
24
+ date: 2026-03-09
22
25
  changes: 컴파일러 옵션 업데이트, 'output' 및 'noMetadata' 지원 추가
23
26
  - version: 8.1.7
24
27
  date: 2026-02-25
25
28
  changes: 컴파일러 옵션 업데이트
29
+ - version: 8.1.5
30
+ date: 2026-02-23
31
+ changes: 컴파일러 옵션 'build-only' 및 딕셔너리 접두사 추가
26
32
  - version: 8.0.6
27
33
  date: 2026-02-12
28
- changes: Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face, Together.ai 제공업체 지원 추가
34
+ changes: Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face Together.ai 제공업체 지원 추가
29
35
  - version: 8.0.5
30
36
  date: 2026-02-06
31
- changes: AI 구성에 `dataSerialization` 추가
37
+ changes: AI 설정에 `dataSerialization` 추가
38
+ - version: 8.0.0
39
+ date: 2026-01-24
40
+ changes: 기본 메커니즘을 더 잘 설명하기 위해 가져오기 모드 `live`를 `fetch`로 변경.
41
+ - version: 8.0.0
42
+ date: 2026-01-22
43
+ changes: 빌드 설정 `importMode`를 `dictionary` 설정으로 이동.
32
44
  - version: 8.0.0
33
45
  date: 2026-01-22
34
- changes: importMode 빌드 구성을 사전 구성으로 이동.
46
+ changes: 라우팅 설정에 `rewrite` 옵션 추가
35
47
  - version: 8.0.0
36
48
  date: 2026-01-18
37
- changes: 시스템 구성에서 콘텐츠 구성을 분리합니다. 내부 경로를 `system` 속성으로 이동합니다. 콘텐츠 파일과 코드 변환을 분리하기 위해 `codeDir`를 추가합니다.
49
+ changes: 시스템 설정을 콘텐츠 설정에서 분리. 내부 경로를 `system` 속성으로 이동. 콘텐츠 파일과 코드 변환을 분리하기 위해 `codeDir` 추가.
38
50
  - version: 8.0.0
39
51
  date: 2026-01-18
40
- changes: 사전 옵션 `location` 및 `schema` 추가
52
+ changes: 딕셔너리 옵션 `location` 및 `schema` 추가
41
53
  - version: 7.5.1
42
54
  date: 2026-01-10
43
55
  changes: JSON5 및 JSONC 파일 형식 지원 추가
44
56
  - version: 7.5.0
45
57
  date: 2025-12-17
46
- changes: "`buildMode` 옵션 추가"
58
+ changes: `buildMode` 옵션 추가
59
+ - version: 7.0.0
60
+ date: 2025-10-25
61
+ changes: `dictionary` 설정 추가
62
+ - version: 7.0.0
63
+ date: 2025-10-21
64
+ changes: `middleware`를 라우팅 설정 `routing`으로 대체
65
+ - version: 7.0.0
66
+ date: 2025-10-12
67
+ changes: `formatCommand` 옵션 추가
68
+ - version: 6.2.0
69
+ date: 2025-10-12
70
+ changes: `excludedPath` 옵션 업데이트
71
+ - version: 6.0.2
72
+ date: 2025-09-23
73
+ changes: `outputFormat` 옵션 추가
47
74
  - version: 6.0.0
48
- date: 2025-09-16
49
- changes: "`live` 가져오기 모드 추가"
75
+ date: 2025-09-21
76
+ changes: `dictionaryOutput` 필드 `i18nextResourcesDir` 필드 삭제
50
77
  - version: 6.0.0
51
78
  date: 2025-09-16
52
- changes: "`live` import 모드 추가"
79
+ changes: `live` 가져오기 모드 추가
53
80
  - version: 6.0.0
54
81
  date: 2025-09-04
55
- changes: "`hotReload` 필드를 `liveSync`로 교체하고 `liveSyncPort` 및 `liveSyncURL` 필드 추가"
82
+ changes: `hotReload` 필드를 `liveSync`로 대체하고 `liveSyncPort` 및 `liveSyncURL` 필드 추가
56
83
  - version: 5.6.1
57
84
  date: 2025-07-25
58
- changes: "`activateDynamicImport`을 `importMode` 옵션으로 교체"
85
+ changes: `activateDynamicImport`를 `importMode` 옵션으로 대체
59
86
  - version: 5.6.0
60
87
  date: 2025-07-13
61
- changes: 기본 contentDir `['src']`에서 `['.']`로 변경
88
+ changes: 기본 contentDir `['src']`에서 `['.']`로 변경
62
89
  - version: 5.5.11
63
90
  date: 2025-06-29
64
- changes: "`docs` 명령어 추가"
91
+ changes: `docs` 명령 추가
65
92
  ---
66
93
 
67
- # Intlayer 구성 문서
94
+ # Intlayer 설정 문서
68
95
 
69
96
  ## 개요
70
97
 
71
- Intlayer 구성 파일은 국제화, 미들웨어, 콘텐츠 처리 등 플러그인의 다양한 측면을 사용자 정의할있게 합니다. 이 문서는 구성 각 속성에 대한 자세한 설명을 제공합니다.
98
+ Intlayer 설정 파일을 사용하면 국제화 (internationalization), 미들웨어, 콘텐츠 처리 등 플러그인의 다양한 측면을 맞춤 설정할있습니다. 이 문서는 설정의 각 속성에 대한 심층적인 설명을 제공합니다.
72
99
 
73
100
  ---
74
101
 
@@ -78,9 +105,9 @@ Intlayer 구성 파일은 국제화, 미들웨어, 콘텐츠 처리 등 플러
78
105
 
79
106
  ---
80
107
 
81
- ## 구성 파일 지원
108
+ ## 지원되는 설정 파일 형식
82
109
 
83
- Intlayer는 JSON, JS, MJS, TS 구성 파일 형식을 지원합니다:
110
+ Intlayer는 JSON, JS, MJS, TS 포함한 설정 파일 형식을 허용합니다.
84
111
 
85
112
  - `intlayer.config.ts`
86
113
  - `intlayer.config.js`
@@ -93,7 +120,7 @@ Intlayer는 JSON, JS, MJS, TS 구성 파일 형식을 지원합니다:
93
120
 
94
121
  ---
95
122
 
96
- ## 예제 구성 파일
123
+ ## 설정 파일 예시
97
124
 
98
125
  ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
99
126
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -101,108 +128,108 @@ import { nextjsRewrite } from "intlayer/routing";
101
128
  import { z } from "zod";
102
129
 
103
130
  /**
104
- * Example Intlayer configuration file showing all available options.
131
+ * 사용 가능한 모든 옵션을 보여주는 Intlayer 설정 파일 예시.
105
132
  */
106
133
  const config: IntlayerConfig = {
107
134
  /**
108
- * Configuration for internationalization settings.
135
+ * 국제화 설정 구성.
109
136
  */
110
137
  internationalization: {
111
138
  /**
112
- * List of supported locales in the application.
113
- * Default: [Locales.ENGLISH]
139
+ * 애플리케이션에서 지원되는 로케일 (locales) 목록.
140
+ * 기본값: [Locales.ENGLISH]
114
141
  */
115
142
  locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
116
143
 
117
144
  /**
118
- * List of required locales that must be defined in every dictionary.
119
- * If empty, all locales are required in `strict` mode.
120
- * Default: []
145
+ * 딕셔너리에 정의되어야 하는 필수 로케일 목록.
146
+ * 비어 있는 경우, `strict` 모드에서 모든 로케일이 필수입니다.
147
+ * 기본값: []
121
148
  */
122
149
  requiredLocales: [Locales.ENGLISH],
123
150
 
124
151
  /**
125
- * Strictness level for internationalized content.
126
- * - "strict": Errors if any declared locale is missing or undeclared.
127
- * - "inclusive": Warnings if a declared locale is missing.
128
- * - "loose": Accepts any existing locale.
129
- * Default: "inclusive"
152
+ * 국제화된 콘텐츠의 엄격도 수준.
153
+ * - "strict": 선언된 로케일이 누락되었거나 선언되지 않은 경우 오류.
154
+ * - "inclusive": 선언된 로케일이 누락된 경우 경고.
155
+ * - "loose": 기존의 모든 로케일을 수용.
156
+ * 기본값: "inclusive"
130
157
  */
131
158
  strictMode: "inclusive",
132
159
 
133
160
  /**
134
- * Default locale used as a fallback if the requested locale is not found.
135
- * Default: Locales.ENGLISH
161
+ * 요청된 로케일을 찾을 없을 때 폴백(fallback)으로 요청되는 기본 로케일.
162
+ * 기본값: Locales.ENGLISH
136
163
  */
137
164
  defaultLocale: Locales.ENGLISH,
138
165
  },
139
166
 
140
167
  /**
141
- * Settings that control dictionary operations and fallback behavior.
168
+ * 딕셔너리 작업 폴백 동작을 제어하는 설정.
142
169
  */
143
170
  dictionary: {
144
171
  /**
145
- * Controls how dictionaries are imported.
146
- * - "static": Statically imported at build time.
147
- * - "dynamic": Dynamically imported using Suspense.
148
- * - "fetch": Fetched dynamically via the live sync API.
149
- * Default: "static"
172
+ * 딕셔너리를 가져오는 방법을 제어합니다.
173
+ * - "static": 빌드 정적으로 가져옵니다.
174
+ * - "dynamic": Suspense를 사용하여 동적으로 가져옵니다.
175
+ * - "fetch": Live Sync API를 통해 동적으로 가져옵니다.
176
+ * 기본값: "static"
150
177
  */
151
178
  importMode: "static",
152
179
 
153
180
  /**
154
- * Strategy for auto-filling missing translations using AI.
155
- * Can be a boolean or a path pattern to store filled content.
156
- * Default: true
181
+ * AI를 사용하여 누락된 번역을 자동으로 채우는 전략.
182
+ * 불리언 또는 채워진 콘텐츠를 저장할 경로 패턴일 있습니다.
183
+ * 기본값: true
157
184
  */
158
185
  fill: true,
159
186
 
160
187
  /**
161
- * Physical location of the dictionary files.
162
- * - "local": Stored in the local filesystem.
163
- * - "remote": Stored in the Intlayer CMS.
164
- * - "hybrid": Stored in the local filesystem and the Intlayer CMS.
165
- * - "plugin" (or any custom string): Provided by a plugin or a custom source.
166
- * Default: "local"
188
+ * 딕셔너리 파일의 물리적 위치.
189
+ * - "local": 로컬 파일 시스템에 저장.
190
+ * - "remote": Intlayer CMS에 저장.
191
+ * - "hybrid": 로컬과 Intlayer CMS 모두에 저장.
192
+ * - "plugin" (또는 모든 사용자 정의 문자열): 플러그인 또는 사용자 정의 소스에 의해 제공.
193
+ * 기본값: "local"
167
194
  */
168
195
  location: "local",
169
196
 
170
197
  /**
171
- * Whether to automatically transform content (e.g., Markdown to HTML).
172
- * Default: false
198
+ * 콘텐츠를 자동으로 변환할지 여부 (예: Markdown HTML).
199
+ * 기본값: false
173
200
  */
174
201
  contentAutoTransformation: false,
175
202
  },
176
203
 
177
204
  /**
178
- * Routing and middleware configuration.
205
+ * 라우팅 미들웨어 설정.
179
206
  */
180
207
  routing: {
181
208
  /**
182
- * Locale routing strategy.
183
- * - "prefix-no-default": Prefix all except the default locale (e.g., /dashboard, /fr/dashboard).
184
- * - "prefix-all": Prefix all locales (e.g., /en/dashboard, /fr/dashboard).
185
- * - "no-prefix": No locale in the URL.
186
- * - "search-params": Use ?locale=...
187
- * Default: "prefix-no-default"
209
+ * 로케일 라우팅 전략.
210
+ * - "prefix-no-default": 기본 로케일을 제외한 모든 로케일에 접두사를 붙입니다 (예: /dashboard, /fr/dashboard).
211
+ * - "prefix-all": 모든 로케일에 접두사를 붙입니다 (예: /en/dashboard, /fr/dashboard).
212
+ * - "no-prefix": URL에 로케일이 없습니다.
213
+ * - "search-params": ?locale=... 사용.
214
+ * 기본값: "prefix-no-default"
188
215
  */
189
216
  mode: "prefix-no-default",
190
217
 
191
218
  /**
192
- * Where to store the user's selected locale.
193
- * Options: 'cookie', 'localStorage', 'sessionStorage', 'header', or an array of these.
194
- * Default: ['cookie', 'header']
219
+ * 사용자가 선택한 로케일을 저장할 위치.
220
+ * 옵션: 'cookie', 'localStorage', 'sessionStorage', 'header' 또는 이들의 배열.
221
+ * 기본값: ['cookie', 'header']
195
222
  */
196
223
  storage: ["cookie", "header"],
197
224
 
198
225
  /**
199
- * Base path for the application URLs.
200
- * Default: ""
226
+ * 애플리케이션 URL의 기본 경로.
227
+ * 기본값: ""
201
228
  */
202
229
  basePath: "",
203
230
 
204
231
  /**
205
- * Custom URL rewriting rules for locale-specific paths.
232
+ * 로케일별 특정 경로에 대한 사용자 정의 URL 리라이트(rewrite) 규칙.
206
233
  */
207
234
  rewrite: nextjsRewrite({
208
235
  "/[locale]/about": {
@@ -213,130 +240,130 @@ const config: IntlayerConfig = {
213
240
  },
214
241
 
215
242
  /**
216
- * Settings for finding and processing content files.
243
+ * 콘텐츠 파일 찾기 처리와 관련된 설정.
217
244
  */
218
245
  content: {
219
246
  /**
220
- * File extensions to scan for dictionaries.
221
- * Default: ['.content.ts', '.content.js', '.content.json', etc.]
247
+ * 딕셔너리를 스캔하기 위한 파일 확장자.
248
+ * 기본값: ['.content.ts', '.content.js', '.content.json' ]
222
249
  */
223
250
  fileExtensions: [".content.ts", ".content.js", ".content.json"],
224
251
 
225
252
  /**
226
- * Directories where .content files are located.
227
- * Default: ["."]
253
+ * .content 파일이 위치한 디렉토리.
254
+ * 기본값: ["."]
228
255
  */
229
256
  contentDir: ["src"],
230
257
 
231
258
  /**
232
- * Directories where source code is located.
233
- * Used for build optimization and code transformation.
234
- * Default: ["."]
259
+ * 소스 코드가 위치한 곳.
260
+ * 빌드 최적화 코드 변환에 사용됩니다.
261
+ * 기본값: ["."]
235
262
  */
236
263
  codeDir: ["src"],
237
264
 
238
265
  /**
239
- * Patterns to exclude from scanning.
240
- * Default: ['node_modules', '.intlayer', etc.]
266
+ * 스캔에서 제외되는 패턴.
267
+ * 기본값: ['node_modules', '.intlayer' ]
241
268
  */
242
269
  excludedPath: ["node_modules"],
243
270
 
244
271
  /**
245
- * Whether to watch for changes and rebuild dictionaries in development.
246
- * Default: true in development
272
+ * 개발 중에 변경 사항을 모니터링하고 딕셔너리를 재구축할지 여부.
273
+ * 기본값: 개발 환경에서 true
247
274
  */
248
275
  watch: true,
249
276
 
250
277
  /**
251
- * Command to format newly created / updated .content files.
278
+ * 새로 생성/업데이트된 .content 파일을 포맷하는 사용되는 명령.
252
279
  */
253
280
  formatCommand: 'npx prettier --write "{{file}}"',
254
281
  },
255
282
 
256
283
  /**
257
- * Visual Editor configuration.
284
+ * 비주얼 에디터 (Visual Editor) 설정.
258
285
  */
259
286
  editor: {
260
287
  /**
261
- * Whether the visual editor is enabled.
262
- * Default: false
288
+ * 비주얼 에디터 활성화 여부.
289
+ * 기본값: false
263
290
  */
264
291
  enabled: true,
265
292
 
266
293
  /**
267
- * URL of your application for origin validation.
268
- * Default: ""
294
+ * 오리진 검증(origin validation)을 위한 애플리케이션 URL.
295
+ * 기본값: ""
269
296
  */
270
297
  applicationURL: "http://localhost:3000",
271
298
 
272
299
  /**
273
- * Port for the local editor server.
274
- * Default: 8000
300
+ * 로컬 에디터 서버를 위한 포트.
301
+ * 기본값: 8000
275
302
  */
276
303
  port: 8000,
277
304
 
278
305
  /**
279
- * Public URL for the editor.
280
- * Default: "http://localhost:8000"
306
+ * 에디터의 공개 URL.
307
+ * 기본값: "http://localhost:8000"
281
308
  */
282
309
  editorURL: "http://localhost:8000",
283
310
 
284
311
  /**
285
312
  * Intlayer CMS URL.
286
- * Default: "https://app.intlayer.org"
313
+ * 기본값: "https://app.intlayer.org"
287
314
  */
288
315
  cmsURL: "https://app.intlayer.org",
289
316
 
290
317
  /**
291
- * Backend API URL.
292
- * Default: "https://back.intlayer.org"
318
+ * 백엔드 API URL.
319
+ * 기본값: "https://back.intlayer.org"
293
320
  */
294
321
  backendURL: "https://back.intlayer.org",
295
322
 
296
323
  /**
297
- * Whether to enable real-time content synchronization.
298
- * Default: false
324
+ * 실시간 콘텐츠 동기화 활성화 여부.
325
+ * 기본값: false
299
326
  */
300
327
  liveSync: true,
301
328
  },
302
329
 
303
330
  /**
304
- * AI-powered translation and generation settings.
331
+ * AI 기반 번역 구축 설정.
305
332
  */
306
333
  ai: {
307
334
  /**
308
- * AI provider to use.
309
- * Options: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
310
- * Default: 'openai'
335
+ * 사용할 AI 제공업체.
336
+ * 옵션: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
+ * 기본값: 'openai'
311
338
  */
312
339
  provider: "openai",
313
340
 
314
341
  /**
315
- * Model to use from the selected provider.
342
+ * 사용할 선택된 제공업체의 모델.
316
343
  */
317
344
  model: "gpt-4o",
318
345
 
319
346
  /**
320
- * Provider API key.
347
+ * 제공업체 API 키.
321
348
  */
322
349
  apiKey: process.env.OPENAI_API_KEY,
323
350
 
324
351
  /**
325
- * Global context to guide the AI in generating translations.
352
+ * 번역 생성 AI를 안내하기 위한 전역 컨텍스트.
326
353
  */
327
- applicationContext: "This is a travel booking application.",
354
+ applicationContext: "이것은 여행 예약 애플리케이션입니다.",
328
355
 
329
356
  /**
330
- * Base URL for the AI API.
357
+ * AI API의 기본 경로 URL.
331
358
  */
332
359
  baseURL: "http://localhost:3000",
333
360
 
334
361
  /**
335
- * 데이터 직렬화
362
+ * 데이터 직렬화 (Data Serialization)
336
363
  *
337
364
  * 옵션:
338
- * - "json": 표준, 신뢰할 수 있음; 더 많은 토큰을 사용합니다.
339
- * - "toon": 토큰을 사용하지만 JSON만큼 일관성이 있지는 않습니다.
365
+ * - "json": 기본값, 견고함, 더 많은 토큰 소모.
366
+ * - "toon": 토큰 소모 적음, JSON만큼 일관적이지 않을 수 있음.
340
367
  *
341
368
  * 기본값: "json"
342
369
  */
@@ -344,118 +371,118 @@ const config: IntlayerConfig = {
344
371
  },
345
372
 
346
373
  /**
347
- * Build and optimization settings.
374
+ * 빌드 최적화 설정.
348
375
  */
349
376
  build: {
350
377
  /**
351
- * Build execution mode.
352
- * - "auto": Automatic build during app build.
353
- * - "manual": Requires explicit build command.
354
- * Default: "auto"
378
+ * 빌드 실행 모드.
379
+ * - "auto": 애플리케이션 빌드 중에 자동으로 빌드됩니다.
380
+ * - "manual": 명시적인 빌드 명령이 필요합니다.
381
+ * 기본값: "auto"
355
382
  */
356
383
  mode: "auto",
357
384
 
358
385
  /**
359
- * Whether to optimize the final bundle by pruning unused dictionaries.
360
- * Default: true in production
386
+ * 사용되지 않는 딕셔너리를 제거하여 최종 번들을 최적화할지 여부.
387
+ * 기본값: 프로덕션 환경에서 true
361
388
  */
362
389
  optimize: true,
363
390
 
364
391
  /**
365
- * Output format for generated dictionary files.
366
- * Default: ['esm', 'cjs']
392
+ * 생성된 딕셔너리 파일의 출력 형식.
393
+ * 기본값: ['cjs', 'esm']
367
394
  */
368
- outputFormat: ["esm"],
395
+ outputFormat: ["cjs", "esm"],
369
396
 
370
397
  /**
371
- * Indicates if the build should check TypeScript types.
372
- * Default: false
398
+ * 빌드가 TypeScript 유형을 확인해야 하는지 여부를 나타냅니다.
399
+ * 기본값: false
373
400
  */
374
401
  checkTypes: false,
375
402
  },
376
403
 
377
404
  /**
378
- * Logger configuration.
405
+ * 로거 (Logger) 설정.
379
406
  */
380
407
  log: {
381
408
  /**
382
- * Logging level.
383
- * - "default": Standard logging.
384
- * - "verbose": Detailed debug logging.
385
- * - "disabled": No logging.
386
- * Default: "default"
409
+ * 로깅 레벨.
410
+ * - "default": 표준 로깅.
411
+ * - "verbose": 심층 디버그 로깅.
412
+ * - "disabled": 로깅 비활성화.
413
+ * 기본값: "default"
387
414
  */
388
415
  mode: "default",
389
416
 
390
417
  /**
391
- * Prefix for all log messages.
392
- * Default: "[intlayer]"
418
+ * 모든 로그 메시지에 대한 접두사.
419
+ * 기본값: "[intlayer]"
393
420
  */
394
421
  prefix: "[intlayer]",
395
422
  },
396
423
 
397
424
  /**
398
- * System configuration (Advanced use cases)
425
+ * 시스템 설정 (고급 사용자용)
399
426
  */
400
427
  system: {
401
428
  /**
402
- * Directory for storing localization dictionaries.
429
+ * 현지화된 딕셔너리를 저장하기 위한 디렉토리.
403
430
  */
404
431
  dictionariesDir: ".intlayer/dictionary",
405
432
 
406
433
  /**
407
- * Directory for module augmentation.
434
+ * TypeScript 모듈 증강(module augmentation)을 위한 디렉토리.
408
435
  */
409
436
  moduleAugmentationDir: ".intlayer/types",
410
437
 
411
438
  /**
412
- * Directory for storing unmerged dictionaries.
439
+ * 병합되지 않은 딕셔너리를 저장하기 위한 디렉토리.
413
440
  */
414
441
  unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
415
442
 
416
443
  /**
417
- * Directory for storing dictionary types.
444
+ * 딕셔너리 유형을 저장하기 위한 디렉토리.
418
445
  */
419
446
  typesDir: ".intlayer/types",
420
447
 
421
448
  /**
422
- * Directory where main application files are stored.
449
+ * 기본 애플리케이션 파일이 저장되는 디렉토리.
423
450
  */
424
451
  mainDir: ".intlayer/main",
425
452
 
426
453
  /**
427
- * Directory where the configuration files are stored.
454
+ * 설정 파일이 저장되는 디렉토리.
428
455
  */
429
456
  configDir: ".intlayer/config",
430
457
 
431
458
  /**
432
- * Directory where the cache files are stored.
459
+ * 캐시 파일이 저장되는 디렉토리.
433
460
  */
434
461
  cacheDir: ".intlayer/cache",
435
462
  },
436
463
 
437
464
  /**
438
- * Compiler configuration (Advanced use cases)
465
+ * 컴파일러 설정 (고급 사용자용)
439
466
  */
440
467
  compiler: {
441
468
  /**
442
469
  * 컴파일러 활성화 여부를 나타냅니다.
443
470
  *
444
- * - false : 컴파일러를 비활성화합니다.
445
- * - true : 컴파일러를 활성화합니다.
446
- * - "build-only" : 개발 중에 컴파일러를 건너뛰고 시작 시간을 단축합니다.
471
+ * - false: 컴파일러를 비활성화합니다.
472
+ * - true: 컴파일러를 활성화합니다.
473
+ * - "build-only": 개발 컴파일러를 건너뛰고 시작 시간을 단축합니다.
447
474
  *
448
- * 기본값 : false
475
+ * 기본값: false
449
476
  */
450
477
  enabled: true,
451
478
 
452
479
  /**
453
- * 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다.
480
+ * 출력 파일의 경로를 정의합니다. `outputDir`을 대체합니다.
454
481
  *
455
- * - `./` 경로는 컴포넌트 디렉터리를 기준으로 해결됩니다.
456
- * - `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해결됩니다.
482
+ * - `./` 경로는 컴포넌트 디렉토리를 기준으로 해석됩니다.
483
+ * - `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해석됩니다.
457
484
  *
458
- * - 경로에 `{{locale}}` 변수를 넣으면 언어별로 분리된 사전 생성이 활성화됩니다.
485
+ * - 경로에 `{{locale}}` 변수를 포함하면 언어별로 별도의 딕셔너리가 생성됩니다.
459
486
  *
460
487
  * 예시:
461
488
  * ```ts
@@ -463,16 +490,16 @@ const config: IntlayerConfig = {
463
490
  * // 컴포넌트 옆에 다국어 .content.ts 파일 생성
464
491
  * output: ({ fileName, extension }) => `./${fileName}${extension}`,
465
492
  *
466
- * // output: './{{fileName}}{{extension}}', // 문자열 템플릿을 사용한 동일한 표현
493
+ * // output: './{{fileName}}{{extension}}', // 템플릿 문자열을 사용한 동일 방식
467
494
  * }
468
495
  * ```
469
496
  *
470
497
  * ```ts
471
498
  * {
472
- * // 프로젝트 루트의 언어별 중앙 집중식 JSON 파일 생성
499
+ * // 프로젝트 루트의 언어별 중앙 집중식 JSON 생성
473
500
  * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
474
501
  *
475
- * // output: '/locales/{{locale}}/{{key}}.content.json', // 문자열 템플릿을 사용한 동일한 표현
502
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // 템플릿 문자열을 사용한 동일 방식
476
503
  * }
477
504
  * ```
478
505
  *
@@ -483,31 +510,31 @@ const config: IntlayerConfig = {
483
510
  * - `extension`: 파일 확장자.
484
511
  * - `componentFileName`: 컴포넌트 파일 이름.
485
512
  * - `componentExtension`: 컴포넌트 파일 확장자.
486
- * - `format`: 사전 형식.
487
- * - `componentFormat`: 컴포넌트 사전 형식.
488
- * - `componentDirPath`: 컴포넌트 디렉터리 경로.
513
+ * - `format`: 딕셔너리 형식.
514
+ * - `componentFormat`: 컴포넌트 딕셔너리 형식.
515
+ * - `componentDirPath`: 컴포넌트 디렉토리 경로.
489
516
  */
490
517
  output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
491
518
 
492
519
  /**
493
- * 변환된 후 구성 요소를 저장할지 여부를 나타냅니다.
494
- * 이렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
520
+ * 변환된 후 컴포넌트를 저장해야 하는지 여부를 나타냅니다.
521
+ * 이렇게 하면 컴파일러를 한 번만 실행하여 애플리케이션을 변환한 다음 제거할 수 있습니다.
495
522
  */
496
523
  saveComponents: false,
497
524
 
498
525
  /**
499
- * 생성된 파일에 콘텐츠만 삽입합니다. 로케일별 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
526
+ * 생성된 파일에 콘텐츠만 삽입합니다. i18next 또는 ICU MessageFormat 형식의 언어별 JSON 출력에 유용합니다.
500
527
  */
501
528
  noMetadata: false,
502
529
 
503
530
  /**
504
- * 사전 키 접두사
531
+ * 딕셔너리 키 접두사
505
532
  */
506
- dictionaryKeyPrefix: "", // 추출된 사전 키에 선택적 접두사 추가
533
+ dictionaryKeyPrefix: "", // 추출된 딕셔너리 키에 선택적 접두사 추가
507
534
  },
508
535
 
509
536
  /**
510
- * Custom schemas to validate the dictionaries content.
537
+ * 딕셔너리 콘텐츠 검증을 위한 사용자 정의 스키마.
511
538
  */
512
539
  schemas: {
513
540
  "my-schema": z.object({
@@ -516,7 +543,7 @@ const config: IntlayerConfig = {
516
543
  },
517
544
 
518
545
  /**
519
- * Plugins configuration.
546
+ * 플러그인 설정.
520
547
  */
521
548
  plugins: [],
522
549
  };
@@ -524,598 +551,372 @@ const config: IntlayerConfig = {
524
551
  export default config;
525
552
  ````
526
553
 
527
- ## 구성 참조
554
+ ---
555
+
556
+ ## 설정 참조 (Configuration Reference)
557
+
558
+ 다음 섹션은 Intlayer에서 사용 가능한 다양한 설정 항목에 대해 설명합니다.
559
+
560
+ ---
561
+
562
+ ### 국제화 설정 (Internationalization Configuration)
563
+
564
+ 사용 가능한 로케일 및 애플리케이션의 기본 로케일을 포함하여 국제화와 관련된 설정을 정의합니다.
565
+
566
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
567
+ | ----------------- | ---------- | ---------------------------------------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
568
+ | `locales` | `string[]` | 애플리케이션에서 지원되는 로케일 목록. 기본값: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
569
+ | `requiredLocales` | `string[]` | 애플리케이션의 필수 로케일 목록. 기본값: `[]` | `[]` | 비어 있는 경우, `strict` 모드에서 모든 로케일이 필수입니다. 필수 로케일이 `locales` 필드에도 정의되어 있는지 확인하세요. |
570
+ | `strictMode` | `string` | TypeScript를 사용하여 견고한 국제화 콘텐츠 구현을 보장합니다. 기본값: `inclusive` | | `"strict"`인 경우: `t` 기능은 선언된 모든 로케일이 정의되어야 함을 요구합니다 — 누락되거나 선언되지 않은 경우 오류를 발생시킵니다. `"inclusive"`인 경우: 누락된 로케일에 대해 경고하지만 기존에 선언되지 않은 로케일을 수용합니다. `"loose"`인 경우: 기존의 모든 로케일을 수용합니다. |
571
+ | `defaultLocale` | `string` | 요청된 로케일을 찾을 수 없을 때 폴백으로 사용되는 기본 로케일. 기본값: `Locales.ENGLISH` | `'en'` | URL, 쿠키 또는 헤더에 로케일이 지정되지 않은 경우 로케일을 결정하는 데 사용됩니다. |
572
+
573
+ ---
574
+
575
+ ### 에디터 설정 (Editor Configuration)
576
+
577
+ 서버 포트 및 활동 상태를 포함하여 통합 에디터와 관련된 설정을 정의합니다.
578
+
579
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
580
+ | ---------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
581
+ | `applicationURL` | `string` | 애플리케이션의 URL. 기본값: `''` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | 보안상의 이유로 에디터의 오리진(origin)을 제한하는 데 사용됩니다. `'*'`로 설정하면 모든 오리진에서 에디터에 액세스할 수 있습니다. |
582
+ | `port` | `number` | 비주얼 에디터 서버에서 사용하는 포트. 기본값: `8000` | | |
583
+ | `editorURL` | `string` | 에디터 서버 URL. 기본값: `'http://localhost:8000'` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | 애플리케이션과 상호 작용할 수 있는 오리진을 제한하는 데 사용됩니다. `'*'`로 설정하면 모든 오리진에서 액세스할 수 있습니다. 포트를 변경하거나 에디터가 다른 도메인에서 호스팅되는 경우 설정해야 합니다. |
584
+ | `cmsURL` | `string` | Intlayer CMS URL. 기본값: `'https://intlayer.org'` | `'https://intlayer.org'` | |
585
+ | `backendURL` | `string` | 백엔드 서버 URL. 기본값: `https://back.intlayer.org` | `http://localhost:4000` | |
586
+ | `enabled` | `boolean` | 앱이 비주얼 에디터와 상호 작용할지 여부를 나타냅니다. 기본값: `true` | `process.env.NODE_ENV !== 'production'` | `false`인 경우 에디터는 앱과 상호 작용할 수 없습니다. 특정 환경에 대해 비활성화하면 보안이 강화됩니다. |
587
+ | `clientId` | `string | undefined` | oAuth2를 사용하여 백엔드에서 인증할 수 있도록 intlayer 패키지를 활성화합니다. 액세스 토큰을 받으려면 [intlayer.org/project](https://app.intlayer.org/project)로 이동하세요. 기본값: `undefined` | | 비밀로 유지하고 환경 변수에 저장하세요. |
588
+ | `clientSecret` | `string | undefined` | oAuth2를 사용하여 백엔드에서 인증할 수 있도록 intlayer 패키지를 활성화합니다. 액세스 토큰을 받으려면 [intlayer.org/project](https://app.intlayer.org/project)로 이동하세요. 기본값: `undefined` | | 비밀로 유지하고 환경 변수에 저장하세요. |
589
+ | `dictionaryPriorityStrategy` | `string` | 로컬 딕셔너리와 원격 딕셔너리가 모두 존재하는 경우 딕셔너리 우선순위 지정을 위한 전략. 기본값: `'local_first'` | `'distant_first'` | `'distant_first'`: 로컬보다 원격을 우선시합니다. `'local_first'`: 원격보다 로컬을 우선시합니다. |
590
+ | `liveSync` | `boolean` | CMS / 비주얼 에디터 / 백엔드에서 변경이 감지될 때 앱 서버 속 콘텐츠를 핫 리로드해야 하는지 여부를 나타냅니다. 기본값: `true` | `true` | 딕셔너리가 추가/업데이트되면 앱은 페이지 콘텐츠를 업데이트합니다. 라이브 동기화는 콘텐츠를 다른 서버에 원격으로 처리하므로 성능에 약간의 영향을 줄 수 있습니다. 두 가지를 동일한 머신에서 호스팅하는 것이 권장됩니다. |
591
+ | `liveSyncPort` | `number` | 라이브 동기화 서버 포트. 기본값: `4000` | `4000` | |
592
+ | `liveSyncURL` | `string` | 라이브 동기화 서버 URL. 기본값: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | 기본적으로 localhost를 가리키며, 원격 라이브 동기화 서버로 변경할 수 있습니다. |
593
+
594
+ ### 라우팅 설정 (Routing Configuration)
595
+
596
+ URL 구조, 로케일 저장 및 미들웨어 처리를 포함하여 라우팅 동작을 제어하는 설정.
597
+
598
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
599
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
600
+ | `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'` | 로케일 처리를 위한 URL 라우팅 모드. 기본값: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) 또는 `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: 다른 수단으로 로케일 처리. `'search-params'`: `/dashboard?locale=fr` | 쿠키 또는 로케일 저장소 관리에는 영향을 주지 않습니다. |
601
+ | `storage` | `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array` | 클라이언트에 로케일을 저장하기 위한 구성. 기본값: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | 아래의 저장소 옵션 테이블을 참조하세요. |
602
+ | `basePath` | `string` | 애플리케이션 URL의 기본 경로. 기본값: `''` | `'/my-app'` | 앱이 `https://example.com/my-app`에 있는 경우 basePath는 `'/my-app'`이며 URL은 `https://example.com/my-app/en`이 됩니다. |
603
+ | `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | 특정 경로에 대해 기본 라우팅 모드를 대체하는 사용자 정의 URL 리라이트 규칙. 동적 매개변수 `[param]`를 지원합니다. 기본값: `undefined` | 아래 예시 참조 | 리라이트 규칙은 `mode`보다 우선순위가 높습니다. Next.js 및 Vite와 함께 작동합니다. `getLocalizedUrl()`은 일치하는 규칙을 자동으로 적용합니다. [사용자 정의 URL 리라이트](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/custom_url_rewrites.md)를 참조하세요. |
604
+
605
+ **`rewrite` 예시**:
606
+
607
+ ```typescript
608
+ routing: {
609
+ mode: "prefix-no-default", // 폴백 전략
610
+ rewrite: nextjsRewrite({
611
+ "/about": {
612
+ en: "/about",
613
+ fr: "/a-propos",
614
+ },
615
+ "/product/[slug]": {
616
+ en: "/product/[slug]",
617
+ fr: "/produit/[slug]",
618
+ },
619
+ "/blog/[category]/[id]": {
620
+ en: "/blog/[category]/[id]",
621
+ fr: "/journal/[category]/[id]",
622
+ },
623
+ }),
624
+ }
625
+ ```
626
+
627
+ #### 저장소 옵션 (Storage Options)
628
+
629
+ | 값 | 설명 | 참고 |
630
+ | ------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
631
+ | `'cookie'` | 쿠키에 로케일을 저장합니다 — 클라이언트와 서버 측 모두에서 액세스 가능합니다. | GDPR 준수를 위해 적절한 사용자 동의를 얻었는지 확인하세요. `CookiesAttributes`를 통해 맞춤 설정 가능합니다 (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). |
632
+ | `'localStorage'` | 만료 날짜 없이 브라우저에 로케일을 저장합니다 — 클라이언트 측 전용입니다. | 명시적으로 삭제하지 않는 한 만료되지 않습니다. Intlayer 프록시는 이에 액세스할 수 없습니다. `StorageAttributes`를 통해 맞춤 설정 가능합니다 (`{ type: 'localStorage', name: 'custom-locale' }`). |
633
+ | `'sessionStorage'` | 페이지 세션 동안 로케일을 저장합니다 — 클라이언트 측 전용입니다. | 탭/창을 닫으면 지워집니다. Intlayer 프록시는 이에 액세스할 수 없습니다. `StorageAttributes`를 통해 맞춤 설정 가능합니다 (`{ type: 'sessionStorage', name: 'custom-locale' }`). |
634
+ | `'header'` | HTTP 헤더를 통해 로케일을 저장하거나 전송합니다 — 서버 측 전용입니다. | API 호출에 유용합니다. 클라이언트 측에서는 액세스할 수 없습니다. `StorageAttributes`를 통해 맞춤 설정 가능합니다 (`{ type: 'header', name: 'custom-locale' }`). |
635
+
636
+ #### 쿠키 속성 (Cookie Attributes)
637
+
638
+ 쿠키 저장소를 사용할 때 추가 쿠키 속성을 구성할 수 있습니다.
639
+
640
+ | 필드 | 유형 | 설명 |
641
+ | ---------- | ------------------------------------- | ---------------------------------------- |
642
+ | `name` | `string` | 쿠키 이름. 기본값: `'INTLAYER_LOCALE'` |
643
+ | `domain` | `string` | 쿠키 도메인. 기본값: `undefined` |
644
+ | `path` | `string` | 쿠키 경로. 기본값: `undefined` |
645
+ | `secure` | `boolean` | HTTPS가 필요합니다. 기본값: `undefined` |
646
+ | `httpOnly` | `boolean` | HTTP 전용 플래그. 기본값: `undefined` |
647
+ | `sameSite` | `'strict' &#124; 'lax' &#124; 'none'` | SameSite 정책. |
648
+ | `expires` | `Date &#124; number` | 만료 날짜 또는 일수. 기본값: `undefined` |
649
+
650
+ #### 로케일 저장소 속성 (Locale Storage Attributes)
651
+
652
+ localStorage 또는 sessionStorage를 사용할 때:
653
+
654
+ | 필드 | 유형 | 설명 |
655
+ | ------ | ---------------------------------------- | ------------------------------------------- |
656
+ | `type` | `'localStorage' &#124; 'sessionStorage'` | 저장소 유형. |
657
+ | `name` | `string` | 저장소 키 이름. 기본값: `'INTLAYER_LOCALE'` |
658
+
659
+ #### 설정 예시
660
+
661
+ 새로운 v7 라우팅 구조에 대한 몇 가지 일반적인 설정 예시는 다음과 같습니다.
662
+
663
+ **기본 구성 (기본값)**:
664
+
665
+ ```typescript
666
+ import { Locales, type IntlayerConfig } from "intlayer";
667
+ // intlayer.config.ts
668
+ const config: IntlayerConfig = {
669
+ internationalization: {
670
+ locales: ["en", "fr", "es"],
671
+ defaultLocale: "en",
672
+ },
673
+ routing: {
674
+ mode: "prefix-no-default",
675
+ storage: "localStorage",
676
+ basePath: "",
677
+ },
678
+ };
679
+
680
+ export default config;
681
+ ```
682
+
683
+ **GDPR 준수 구성**:
684
+
685
+ ```typescript
686
+ import { Locales, type IntlayerConfig } from "intlayer";
687
+ // intlayer.config.ts
688
+ const config: IntlayerConfig = {
689
+ internationalization: {
690
+ locales: ["en", "fr", "es"],
691
+ defaultLocale: "en",
692
+ },
693
+ routing: {
694
+ mode: "prefix-no-default",
695
+ storage: [
696
+ {
697
+ type: "localStorage",
698
+ name: "user-locale",
699
+ },
700
+ {
701
+ type: "cookie",
702
+ name: "user-locale",
703
+ secure: true,
704
+ sameSite: "strict",
705
+ httpOnly: false,
706
+ },
707
+ ],
708
+ basePath: "",
709
+ },
710
+ };
711
+
712
+ export default config;
713
+ ```
714
+
715
+ **검색 매개변수 모드 (Search Parameters Mode)**:
716
+
717
+ ```typescript
718
+ import { Locales, type IntlayerConfig } from "intlayer";
719
+ // intlayer.config.ts
720
+ const config: IntlayerConfig = {
721
+ internationalization: {
722
+ locales: ["en", "fr", "es"],
723
+ defaultLocale: "en",
724
+ },
725
+ routing: {
726
+ mode: "search-params",
727
+ storage: "localStorage",
728
+ basePath: "",
729
+ },
730
+ };
731
+
732
+ export default config;
733
+ ```
734
+
735
+ **사용자 정의 저장소를 사용한 접두사 없음(No Prefix) 모드**:
736
+
737
+ ```typescript
738
+ import { Locales, type IntlayerConfig } from "intlayer";
739
+ // intlayer.config.ts
740
+ const config: IntlayerConfig = {
741
+ internationalization: {
742
+ locales: ["en", "fr", "es"],
743
+ defaultLocale: "en",
744
+ },
745
+ routing: {
746
+ mode: "no-prefix",
747
+ storage: {
748
+ type: "sessionStorage",
749
+ name: "app-locale",
750
+ },
751
+ basePath: "/my-app",
752
+ },
753
+ };
754
+
755
+ export default config;
756
+ ```
757
+
758
+ **동적 경로를 사용한 사용자 정의 URL 리라이트**:
759
+
760
+ ```typescript
761
+ // intlayer.config.ts
762
+ import { nextjsRewrite } from "intlayer/routing";
763
+
764
+ const config: IntlayerConfig = {
765
+ internationalization: {
766
+ locales: ["en", "fr"],
767
+ defaultLocale: "en",
768
+ },
769
+ routing: {
770
+ mode: "prefix-no-default", // 리라이트되지 않은 경로에 대한 폴백
771
+ storage: "cookie",
772
+ rewrite: nextjsRewrite({
773
+ "/about": {
774
+ en: "/about",
775
+ fr: "/a-propos",
776
+ },
777
+ "/product/[slug]": {
778
+ en: "/product/[slug]",
779
+ fr: "/produit/[slug]",
780
+ },
781
+ "/blog/[category]/[id]": {
782
+ en: "/blog/[category]/[id]",
783
+ fr: "/journal/[category]/[id]",
784
+ },
785
+ }),
786
+ },
787
+ };
788
+
789
+ export default config;
790
+ ```
528
791
 
529
- 다음 섹션에서는 Intlayer에서 사용할 수 있는 다양한 구성 설정에 대해 설명합니다.
792
+ ---
793
+
794
+ ### 콘텐츠 설정 (Content Configuration)
795
+
796
+ 애플리케이션 내 콘텐츠 처리와 관련된 설정 (디렉토리 이름, 파일 확장자 및 파생 설정).
797
+
798
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
799
+ | ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------- |
800
+ | `watch` | `boolean` | 딕셔너리를 재구축하기 위해 Intlayer가 콘텐츠 선언 파일의 변경 사항을 감시해야 하는지 여부를 나타냅니다. 기본값: `process.env.NODE_ENV === 'development'` | | |
801
+ | `fileExtensions` | `string[]` | 콘텐츠 선언 파일을 스캔하는 데 사용되는 파일 확장자. 기본값: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
802
+ | `contentDir` | `string[]` | 콘텐츠 선언 파일이 위치한 디렉토리에 대한 경로. 기본값: `['.']` | `['src/content']` | |
803
+ | `codeDir` | `string[]` | 애플리케이션 소스 코드 파일이 위치한 디렉토리에 대한 경로. 기본값: `['.']` | `['src']` | 빌드를 최적화하고 코드 변환 및 핫 리로드가 필요한 파일에만 적용되도록 하는 데 사용됩니다. |
804
+ | `excludedPath` | `string[]` | 콘텐츠 스캔에서 제외되는 경로. 기본값: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
805
+ | `formatCommand` | `string` | 새로 생성되거나 업데이트된 콘텐츠 파일을 포맷하기 위해 실행될 명령. 기본값: `undefined` | `'npx prettier --write "{{file}}"'` | 콘텐츠 추출 시 또는 비주얼 에디터를 통해 사용됩니다. |
530
806
 
531
807
  ---
532
808
 
533
- ### 국제화 구성
534
-
535
- 애플리케이션에서 사용 가능한 로케일과 기본 로케일을 포함하여 국제화와 관련된 설정을 정의합니다.
536
-
537
- #### 속성
538
-
539
- - **locales**:
540
- - _유형_: `string[]`
541
- - _기본값_: `['en']`
542
- - _설명_: 애플리케이션에서 지원하는 로케일 목록입니다.
543
- - _예시_: `['en', 'fr', 'es']`
544
-
545
- - **requiredLocales**:
546
- - _유형_: `string[]`
547
- - _기본값_: `[]`
548
- - _설명_: 애플리케이션에서 필수로 요구되는 로케일 목록입니다.
549
- - _예시_: `[]`
550
- - _참고_: 비어 있으면 `strict` 모드에서 모든 로케일이 필수입니다.
551
- - _참고_: 필수 로케일이 `locales` 필드에도 정의되어 있는지 확인하세요.
552
- - **strictMode**:
553
- - _유형_: `string`
554
- - _기본값_: `inclusive`
555
- - _설명_: 타입스크립트를 사용하여 국제화된 콘텐츠의 강력한 구현을 보장합니다.
556
- - _참고_: "strict"로 설정하면, 번역 함수 `t`는 선언된 각 로케일이 정의되어 있어야 합니다. 하나의 로케일이 누락되었거나 구성에 선언되지 않은 로케일이 있으면 오류를 발생시킵니다.
557
- - _참고_: "inclusive"로 설정하면, 번역 함수 `t`는 선언된 각 로케일이 정의되어 있어야 합니다. 하나의 로케일이 누락되면 경고를 발생시키지만, 구성에 선언되지 않았더라도 존재하는 로케일은 허용합니다.
558
- - _참고_: "loose"로 설정하면, 번역 함수 `t`는 존재하는 모든 로케일을 허용합니다.
559
-
560
- - **defaultLocale**:
561
- - _유형_: `string`
562
- - _기본값_: `'en'`
563
- - _설명_: 요청한 로케일을 찾을 수 없을 때 대체로 사용되는 기본 로케일입니다.
564
- - _예시_: `'en'`
565
- - _참고_: URL, 쿠키 또는 헤더에 로케일이 지정되지 않은 경우 이 값을 사용하여 로케일을 결정합니다.
809
+ ### 딕셔너리 설정 (Dictionary Configuration)
810
+
811
+ 자동 채우기 동작 콘텐츠 생성을 포함하여 딕셔너리 작업을 제어하는 설정입니다.
812
+
813
+ 딕셔너리 설정은 두 가지 주요 목적을 가집니다:
814
+
815
+ 1. **기본값**: 콘텐츠 선언 파일을 생성할 때 기본값을 정의합니다.
816
+ 2. **폴백 동작**: 특정 필드가 정의되지 않았을 때 폴백 값을 제공하여 딕셔너리 작업 동작을 전역적으로 정의할 수 있도록 합니다.
817
+
818
+ 콘텐츠 선언 파일 설정값이 적용되는 방식에 대한 자세한 내용은 [콘텐츠 파일 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요.
819
+
820
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
821
+ | --------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
822
+ | `fill` | `boolean &#124; FilePathPattern &#124; Partial<Record<Locale, boolean &#124; FilePathPattern>>` | 자동 채우기(AI 번역) 출력 파일이 생성되는 방식을 제어합니다. 기본값: `true` | 아래 예시 참조 | `true`: 기본 경로(소스와 동일한 파일). `false`: 비활성화. 문자열/함수 템플릿은 로케일별 파일을 생성합니다. 로케일별 객체: 각 로케일은 자체 패턴에 매핑됩니다. `false`는 해당 로케일을 건너뜁니다. `{{locale}}`을 포함하면 로케일별 생성이 트리거됩니다. 딕셔너리 수준의 `fill`은 항상 이 전역 설정보다 우선합니다. |
823
+ | `importMode` | `'static' &#124; 'dynamic' &#124; 'fetch'` | 딕셔너리를 가져오는 방법을 제어합니다. 기본값: `'static'` | `'dynamic'` | `'static'`: 정적으로 가져옵니다. `'dynamic'`: Suspense를 통해 동적으로 가져옵니다. `'fetch'`: Live Sync API를 통해 동적으로 가져옵니다. `getIntlayer`, `getDictionary`, `useDictionary` 등에는 영향을 주지 않습니다. |
824
+ | `location` | `'local' &#124; 'remote' &#124; 'hybrid' &#124; string` | 딕셔너리가 저장되는 위치입니다. 기본값: `'local'` | `'remote'` | `'local'`: 파일 시스템. `'remote'`: Intlayer CMS. `'hybrid'`: 둘 다. |
825
+ | `contentAutoTransformation` | `boolean` | 콘텐츠 파일을 자동으로 변환해야 하는지 여부(예: Markdown에서 HTML로). 기본값: `false` | `true` | @intlayer/markdown을 통해 Markdown 필드를 처리하는 데 유용합니다. |
826
+
827
+ **`fill` 예시**:
828
+
829
+ ```ts
830
+ dictionary: {
831
+ fill: {
832
+ en: '/locales/en/{{key}}.content.json',
833
+ fr: ({ key }) => `/locales/fr/${key}.content.json`,
834
+ es: false,
835
+ }
836
+ }
837
+ ```
566
838
 
567
839
  ---
568
840
 
569
- ### 에디터 구성
570
-
571
- 통합 에디터와 관련된 설정을 정의하며, 서버 포트와 활성 상태를 포함합니다.
572
-
573
- #### 속성
574
-
575
- - **applicationURL**:
576
- - _유형_: `string`
577
- - _기본값_: `http://localhost:3000`
578
- - _설명_: 애플리케이션의 URL입니다. 보안상의 이유로 에디터의 출처를 제한하는 사용됩니다.
579
- - _예시_:
580
- - `'http://localhost:3000'`
581
- - `'https://example.com'`
582
- - `process.env.INTLAYER_EDITOR_URL`
583
- - _참고_: 애플리케이션의 URL입니다. 보안상의 이유로 에디터의 출처를 제한하는 데 사용됩니다. `'*'`로 설정하면 에디터는 모든 출처에서 접근할 수 있습니다.
584
-
585
- - **port**:
586
- - _유형_: `number`
587
- - _기본값_: `8000`
588
- - _설명_: 비주얼 에디터 서버가 사용하는 포트입니다.
589
-
590
- - **editorURL**:
591
- - _유형_: `string`
592
- - _기본값_: `'http://localhost:8000'`
593
- - _설명_: 에디터 서버의 URL입니다. 보안상의 이유로 에디터의 출처를 제한하는 데 사용됩니다.
594
- - `'http://localhost:3000'`
595
- - `'https://example.com'`
596
- - `process.env.INTLAYER_EDITOR_URL`
597
- - _참고_: 애플리케이션에서 접근하는 에디터 서버의 URL입니다. 보안상의 이유로 애플리케이션과 상호작용할 수 있는 출처를 제한하는 데 사용됩니다. `'*'`로 설정하면 모든 출처에서 에디터에 접근할 수 있습니다. 포트가 변경되었거나 에디터가 다른 도메인에 호스팅되는 경우 설정해야 합니다.
598
-
599
- - **cmsURL**:
600
- - _유형_: `string`
601
- - _기본값_: `'https://intlayer.org'`
602
- - _설명_: Intlayer CMS의 URL입니다.
603
- - _예시_: `'https://intlayer.org'`
604
- - _참고_: Intlayer CMS의 URL입니다.
605
-
606
- - **backendURL**:
607
- - _유형_: `string`
608
- - _기본값_: `https://back.intlayer.org`
609
- - _설명_: 백엔드 서버의 URL입니다.
610
- - _예시_: `http://localhost:4000`
611
-
612
- - **enabled**:
613
- - _유형_: `boolean`
614
- - _기본값_: `true`
615
- - _설명_: 애플리케이션이 비주얼 에디터와 상호작용하는지 여부를 나타냅니다.
616
- - _예시_: `process.env.NODE_ENV !== 'production'`
617
- - _참고_: true인 경우, 에디터가 애플리케이션과 상호작용할 수 있습니다. false인 경우, 에디터가 애플리케이션과 상호작용할 수 없습니다. 어떤 경우든 에디터는 비주얼 에디터에 의해서만 활성화될 수 있습니다. 특정 환경에서 에디터를 비활성화하는 것은 보안을 강화하는 방법입니다.
618
-
619
- - **clientId**:
620
- - _유형_: `string` | `undefined`
621
- - _기본값_: `undefined`
622
- - _설명_: clientId와 clientSecret은 intlayer 패키지가 oAuth2 인증을 사용하여 백엔드와 인증할 수 있도록 합니다. 액세스 토큰은 프로젝트와 관련된 사용자를 인증하는 데 사용됩니다. 액세스 토큰을 얻으려면 https://app.intlayer.org/project 에서 계정을 생성하세요.
623
- - _예시_: `true`
624
- - _참고_: 중요: clientId와 clientSecret은 비밀로 유지되어야 하며 공개적으로 공유되어서는 안 됩니다. 환경 변수와 같은 안전한 위치에 보관하시기 바랍니다.
625
-
626
- - **clientSecret**:
627
- - _유형_: `string` | `undefined`
628
- - _기본값_: `undefined`
629
- - _설명_: clientId와 clientSecret은 intlayer 패키지가 oAuth2 인증을 사용하여 백엔드와 인증할 수 있도록 합니다. 액세스 토큰은 프로젝트와 관련된 사용자를 인증하는 데 사용됩니다. 액세스 토큰을 얻으려면 https://app.intlayer.org/project 에서 계정을 생성하세요.
630
- - _예시_: `true`
631
- - _참고_: 중요: clientId와 clientSecret은 비밀로 유지되어야 하며 공개적으로 공유해서는 안 됩니다. 환경 변수와 같은 안전한 위치에 보관하시기 바랍니다.
632
-
633
- - **dictionaryPriorityStrategy**:
634
- - _유형_: `string`
635
- - _기본값_: `'local_first'`
636
- - _설명_: 로컬 사전과 원격 사전이 모두 존재할 경우 사전의 우선순위를 정하는 전략입니다. `'distant_first'`로 설정하면 애플리케이션이 원격 사전을 로컬 사전보다 우선시합니다. `'local_first'`로 설정하면 애플리케이션이 로컬 사전을 원격 사전보다 우선시합니다.
637
- - _예시_: `'distant_first'`
638
-
639
- - **liveSync**:
640
- - _유형_: `boolean`
641
- - _기본값_: `false`
642
- - _설명_: CMS / 비주얼 에디터 / 백엔드에서 변경 사항이 감지되었을 때 애플리케이션 서버가 콘텐츠를 핫 리로드할지 여부를 나타냅니다.
643
- - _예시_: `true`
644
- - _참고_: 예를 들어, 새로운 사전이 추가되거나 업데이트되면 애플리케이션이 페이지에 표시할 콘텐츠를 업데이트합니다.
645
- - _참고_: 라이브 싱크는 애플리케이션의 콘텐츠를 다른 서버로 외부화해야 합니다. 이는 애플리케이션 성능에 약간의 영향을 미칠 수 있음을 의미합니다. 이를 제한하기 위해 애플리케이션과 라이브 싱크 서버를 동일한 머신에 호스팅할 것을 권장합니다. 또한, 라이브 싱크와 `optimize`의 조합은 라이브 싱크 서버에 상당한 수의 요청을 발생시킬 수 있습니다. 인프라 환경에 따라 두 옵션과 그 조합을 테스트해보는 것을 권장합니다.
646
-
647
- - **liveSyncPort**:
648
- - _유형_: `number`
649
- - _기본값_: `4000`
650
- - _설명_: 라이브 싱크 서버의 포트입니다.
651
- - _예시_: `4000`
652
- - _참고_: 라이브 싱크 서버의 포트입니다.
653
-
654
- - **liveSyncURL**:
655
- - _유형_: `string`
656
- - _기본값_: `'http://localhost:{liveSyncPort}'`
657
- - _설명_: 라이브 싱크 서버의 URL입니다.
658
- - _예시_: `'https://example.com'`
659
- - _참고_: 기본적으로 localhost를 가리키지만 원격 라이브 싱크 서버의 경우 어떤 URL로도 변경할 수 있습니다.
660
-
661
- ### 미들웨어 설정
662
-
663
- 애플리케이션이 쿠키, 헤더 및 로케일 관리를 위한 URL 접두사를 처리하는 방식을 제어하는 설정입니다.
664
-
665
- #### 속성
666
-
667
- - **headerName**:
668
- - _유형_: `string`
669
- - _기본값_: `'x-intlayer-locale'`
670
- - _설명_: 로케일을 결정하는 데 사용되는 HTTP 헤더의 이름입니다.
671
- - _예시_: `'x-custom-locale'`
672
- - _참고_: API 기반 로케일 결정에 유용합니다.
673
-
674
- - **cookieName**:
675
- - _유형_: `string`
676
- - _기본값_: `'intlayer-locale'`
677
- - _설명_: 로케일을 저장하는 데 사용되는 쿠키의 이름입니다.
678
- - _예시_: `'custom-locale'`
679
- - _참고_: 세션 간 로케일을 유지하는 데 사용됩니다.
680
-
681
- - **prefixDefault**:
682
- - _유형_: `boolean`
683
- - _기본값_: `false`
684
- - _설명_: 기본 로케일을 URL에 포함할지 여부입니다.
685
- - _예시_: `true`
686
- - _참고_:
687
- - `true`이고 `defaultLocale = 'en'`인 경우: 경로 = `/en/dashboard` 또는 `/fr/dashboard`
688
- - `false`이고 `defaultLocale = 'en'`인 경우: 경로 = `/dashboard` 또는 `/fr/dashboard`
689
-
690
- - **basePath**:
691
- - _유형_: `string`
692
- - _기본값_: `''`
693
- - _설명_: 애플리케이션 URL의 기본 경로입니다.
694
- - _예시_: `'/my-app'`
695
- - _참고_:
696
- - 애플리케이션이 `https://example.com/my-app`에 호스팅되는 경우
697
- - 기본 경로는 `'/my-app'`입니다.
698
- - URL은 `https://example.com/my-app/en`이 됩니다.
699
- - 기본 경로가 설정되지 않은 경우, URL은 `https://example.com/en`이 됩니다.
700
-
701
- - **rewrite**:
702
- - _유형_: `Record<string, StrictModeLocaleMap<string>>`
703
- - _기본값_: `undefined`
704
- - _설명_: 특정 경로에 대한 기본 라우팅 모드를 재정의하는 사용자 정의 URL 재작성 규칙. 표준 라우팅 동작과 다른 언어별 경로를 정의할 수 있습니다. `[param]` 구문을 사용한 동적 라우트 매개변수를 지원합니다.
705
- - _예시_:
706
- ```typescript
707
- routing: {
708
- mode: "prefix-no-default", // 폴백 전략
709
- rewrite: nextjsRewrite({
710
- "/[locale]/about": {
711
- en: "/[locale]/about",
712
- fr: "/[locale]/a-propos",
713
- },
714
- "/[locale]/product/[slug]": {
715
- en: "/[locale]/product/[slug]",
716
- fr: "/[locale]/produit/[slug]",
717
- },
718
- "/[locale]/blog/[category]/[id]": {
719
- en: "/[locale]/blog/[category]/[id]",
720
- fr: "/[locale]/journal/[category]/[id]",
721
- },
722
- }),
723
- }
724
- ```
725
- - _참고_: 재작성 규칙은 기본 `mode` 동작보다 우선순위가 높습니다. 경로가 재작성 규칙과 일치하는 경우, 표준 언어 접두사 대신 재작성 구성의 지역화된 경로가 사용됩니다.
726
- - _참고_: 동적 라우트 매개변수는 대괄호 표기법(예: `[slug]`, `[id]`)을 사용하여 지원됩니다. 매개변수 값은 URL에서 자동으로 추출되어 재작성된 경로에 보간됩니다.
727
- - _참고_: Next.js 및 Vite 애플리케이션에서 작동합니다. 미들웨어/프록시는 내부 라우트 구조와 일치하도록 들어오는 요청을 자동으로 재작성합니다.
728
- - _참고_: `getLocalizedUrl()`로 URL을 생성할 때, 제공된 경로와 일치하는 경우 재작성 규칙이 자동으로 적용됩니다.
729
- - _참조_: 자세한 내용은 [사용자 정의 URL 재작성](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/custom_url_rewrites.md)을 참조하세요.
730
-
731
- - **serverSetCookie**:
732
- - _유형_: `string`
733
- - _기본값_: `'always'`
734
- - _설명_: 서버에서 로케일 쿠키를 설정하는 규칙입니다.
735
- - _옵션_: `'always'`, `'never'`
736
- - _예시_: `'never'`
737
- - _참고_: 로케일 쿠키를 모든 요청마다 설정할지 또는 전혀 설정하지 않을지를 제어합니다.
738
-
739
- - **noPrefix**:
740
- - _유형_: `boolean`
741
- - _기본값_: `false`
742
- - _설명_: URL에서 로케일 접두사를 생략할지 여부입니다.
743
- - _예시_: `true`
744
- - _참고_:
745
- - `true`인 경우: URL에 접두사가 없습니다.
746
- - `false`인 경우: URL에 접두사가 있습니다.
747
- - `basePath = '/my-app'`인 경우 예시:
748
- - `noPrefix = false`인 경우: URL은 `https://example.com/my-app/en`이 됩니다.
749
- - `noPrefix = true`인 경우: URL은 `https://example.com`이 됩니다.
841
+ ### AI 설정 (AI Configuration)
842
+
843
+ 번역 구축과 같은 Intlayer의 AI 기반 기능에 대한 설정을 정의합니다.
844
+
845
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
846
+ | -------------------- | ---------------------- | ---------------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------------- |
847
+ | `provider` | `string` | 사용할 AI 제공업체. | `'openai'`, `'anthropic'`, `'googlevertex'` | |
848
+ | `model` | `string` | 사용할 AI 모델. | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
849
+ | `apiKey` | `string` | 선택한 제공업체의 API 키. | `process.env.OPENAI_API_KEY` | |
850
+ | `applicationContext` | `string` | AI 번역 정확도를 높이기 위한 앱에 대한 추가 컨텍스트. | `'어린이를 위한 학습 플랫폼.'` | |
851
+ | `baseURL` | `string` | API 호출을 위한 선택적 기본 URL. | | 프록시 또는 로컬 AI 배포를 사용하는 경우 유용합니다. |
852
+ | `dataSerialization` | `'json' &#124; 'toon'` | 데이터를 AI로 전송하는 방법을 정의합니다. 기본값: `'json'` | `'json'` | `'json'`: 더 견고하고 정확함. `'toon'`: 토큰을 적게 소모하지만 안정성이 떨어질 수 있음. |
750
853
 
751
854
  ---
752
855
 
753
- ### 콘텐츠 구성
754
-
755
- 애플리케이션 콘텐츠 처리와 관련된 설정으로, 디렉터리 이름, 파일 확장자 파생 구성 등을 포함합니다.
756
-
757
- #### 속성
758
-
759
- - **autoFill**:
760
- - _유형_: `boolean | string | FilePathPattern | { [key in Locales]?: string }`
761
- - _기본값_: `undefined`
762
- - _설명_: AI를 사용하여 콘텐츠를 자동으로 채우는 방식을 지정합니다. `intlayer.config.ts` 파일에서 전역으로 선언할 수 있습니다.
763
- - _예시_: true
764
- - _예시_: `'./{{fileName}}.content.json'`
765
- - _예시_: `{ fr: './{{fileName}}.fr.content.json', es: './{{fileName}}.es.content.json' }`
766
- - _참고_: 자동 채우기 설정은 다음과 같이 구성할 수 있습니다:
767
- - boolean: 모든 로케일에 대해 자동 채우기 활성화
768
- - string: 단일 파일 경로나 변수 템플릿 경로
769
- - object: 로케일별 파일 경로
770
-
771
- - **watch**:
772
- - _타입_: `boolean`
773
- - _기본값_: `process.env.NODE_ENV === 'development'`
774
- - _설명_: Intlayer가 앱 내 콘텐츠 선언 파일의 변경 사항을 감지하여 관련 사전을 재빌드할지 여부를 나타냅니다.
775
-
776
- - **fileExtensions**:
777
- - _타입_: `string[]`
778
- - _기본값_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
779
- - _설명_: 사전을 빌드할 때 찾을 파일 확장자들입니다.
780
- - _예시_: `['.data.ts', '.data.js', '.data.json']`
781
- - _참고_: 파일 확장자를 사용자 정의하면 충돌을 방지할 수 있습니다.
782
-
783
- - **dictionaryOutput**:
784
- - _유형_: `string[]`
785
- - _기본값_: `['intlayer']`
786
- - _설명_: 사용할 사전 출력 유형입니다. 예: `'intlayer'` 또는 `'i18next'`.
787
-
788
- - **contentDir**:
789
- - _유형_: `string[]`
790
- - _기본값_: `['.']`
791
- - _예시_: `['src', '../../ui-library', require.resolve("@my-package/content")]`
792
- - _설명_: 콘텐츠 정의 파일(`.content.*`)이 저장된 디렉토리 경로입니다.
793
- - _참고_: 사전을 다시 빌드하기 위해 콘텐츠 파일을 감시하는 데 사용됩니다.
794
-
795
- - **codeDir**:
796
- - _유형_: `string[]`
797
- - _기본값_: `['.']`
798
- - _예시_: `['src', '../../ui-library']`
799
- - _설명_: 코드가 저장된 디렉토리 경로입니다(기본 디렉토리 기준 상대 경로)。
800
- - _참고_: 코드 파일을 변환(정리, 최적화)하기 위해 감시하는 데 사용됩니다. 이를 `contentDir`와 분리해 두면 콘텐츠 파일의 불필요한 스캔을 피해 빌드 성능을 향상시킬 수 있습니다.
801
-
802
- - **dictionariesDir**:
803
- - _타입_: `string`
804
- - _기본값_: `'.intlayer/dictionaries'`
805
- - _설명_: 중간 결과나 출력 결과를 저장하는 디렉토리 경로입니다.
806
-
807
- - **moduleAugmentationDir**:
808
- - _타입_: `string`
809
- - _기본값_: `'.intlayer/types'`
810
- - _설명_: 모듈 확장을 위한 디렉토리로, IDE의 더 나은 제안과 타입 검사를 가능하게 합니다.
811
- - _예시_: `'intlayer-types'`
812
- - _참고_: 반드시 `tsconfig.json`에 포함시켜야 합니다.
813
-
814
- - **unmergedDictionariesDir**:
815
- - _타입_: `string`
816
- - _기본값_: `'.intlayer/unmerged_dictionary'`
817
- - _설명_: 병합되지 않은 사전을 저장하는 디렉토리입니다.
818
- - _예시_: `'translations'`
819
-
820
- - **dictionariesDir**:
821
- - _유형_: `string`
822
- - _기본값_: `'.intlayer/dictionary'`
823
- - _설명_: 지역화 사전을 저장하는 디렉토리입니다.
824
- - _예시_: `'translations'`
825
-
826
- - **i18nextResourcesDir**:
827
- - _유형_: `string`
828
- - _기본값_: `'i18next_dictionary'`
829
- - _설명_: i18n 사전을 저장하는 디렉토리입니다.
830
- - _예시_: `'translations'`
831
- - _참고_: 이 디렉토리가 i18next 출력 유형에 맞게 구성되어 있는지 확인하세요.
832
-
833
- - **typesDir**:
834
- - _유형_: `string`
835
- - _기본값_: `'types'`
836
- - _설명_: 사전 타입을 저장하는 디렉토리입니다.
837
- - _예시_: `'intlayer-types'`
838
-
839
- - **mainDir**:
840
- - _유형_: `string`
841
- - _기본값_: `'main'`
842
- - _설명_: 주요 애플리케이션 파일이 저장되는 디렉토리입니다.
843
- - _예시_: `'intlayer-main'`
844
-
845
- - **excludedPath**:
846
- - _유형_: `string[]`
847
- - _기본값_: `['node_modules']`
848
- - _설명_: 콘텐츠 검색에서 제외할 디렉토리 목록입니다.
849
- - _참고_: 이 설정은 아직 사용되지 않았으며, 향후 구현될 예정입니다.
856
+ ### 빌드 설정 (Build Configuration)
857
+
858
+ Intlayer 빌드 프로세스최적화 설정.
859
+
860
+ | 필드 | 유형 | 설명 | 예시 | 참고 |
861
+ | -------------- | ------------------------ | ---------------------------------------------------------------------------------------------------- | ---- | ---- |
862
+ | `mode` | `'auto' &#124; 'manual'` | 앱의 프리빌드 단계에서 Intlayer가 자동으로 실행되어야 하는지 여부를 나타냅니다. 기본값: `'auto'` | | |
863
+ | `optimize` | `boolean` | 컴파일된 딕셔너리가 런타임에 최적화되어야 하는지 여부를 나타냅니다. 기본값: 프로덕션 환경에서 `true` | | |
864
+ | `outputFormat` | `('cjs' &#124; 'esm')[]` | 생성된 딕셔너리 파일의 출력 형식. 기본값: `['cjs', 'esm']` | | |
865
+ | `checkTypes` | `boolean` | Intlayer가 생성된 파일의 유형을 확인해야 하는지 여부를 나타냅니다. 기본값: `false` | | |
850
866
 
851
867
  ---
852
868
 
853
- ### 시스템 구성
869
+ ### 시스템 설정 (System Configuration)
854
870
 
855
- Intlayer의 내부 경로 출력 결과와 관련된 설정입니다. 이러한 설정은 일반적으로 내부적이며 사용자가 수정할 필요가 없습니다.
871
+ 설정은 고급 사용 사례 Intlayer의 내부 구성을 위한 것입니다.
856
872
 
857
- #### 속성
873
+ | 필드 | 유형 | 설명 | 기본값 |
874
+ | ------------------------- | -------- | -------------------------------- | --------------------------------- |
875
+ | `dictionariesDir` | `string` | 컴파일된 딕셔너리 디렉토리. | `'.intlayer/dictionary'` |
876
+ | `moduleAugmentationDir` | `string` | TypeScript 모듈 확장 디렉토리. | `'.intlayer/types'` |
877
+ | `unmergedDictionariesDir` | `string` | 병합되지 않은 딕셔너리 디렉토리. | `'.intlayer/unmerged_dictionary'` |
878
+ | `typesDir` | `string` | 생성된 유형 디렉토리. | `'.intlayer/types'` |
879
+ | `mainDir` | `string` | 메인 Intlayer 파일 디렉토리. | `'.intlayer/main'` |
880
+ | `configDir` | `string` | 컴파일된 설정 파일 디렉토리. | `'.intlayer/config'` |
881
+ | `cacheDir` | `string` | 캐시 파일 디렉토리. | `'.intlayer/cache'` |
858
882
 
859
- - **baseDir**:
860
- - _유형_: `string`
861
- - _기본값_: `process.cwd()`
862
- - _설명_: 프로젝트의 기본 디렉토리입니다.
863
- - _예시_: `'/path/to/project'`
864
- - _참고_: 모든 Intlayer 관련 디렉토리를 해석하는 데 사용됩니다.
883
+ ---
865
884
 
866
- ### 사전 구성
885
+ ### 컴파일러 설정 (Compiler Configuration)
867
886
 
868
- 자동 채우기 동작 콘텐츠 생성을 포함하여 사전 작업을 제어하는 설정입니다.
887
+ Intlayer 컴파일러 (`intlayer compiler`) 설정.
869
888
 
870
- 사전 구성은 가지 주요 목적을 제공합니다:
889
+ | 필드 | 유형 | 설명 | 기본값 |
890
+ | --------------------- | ------------------------ | ---------------------------------------------------------------------- | ------- |
891
+ | `enabled` | `boolean` | 컴파일러 활성화 여부를 나타냅니다. | `false` |
892
+ | `output` | `string &#124; Function` | 추출된 딕셔너리의 출력 경로. | |
893
+ | `saveComponents` | `boolean` | 원본 소스 파일을 변환된 버전으로 덮어쓸지 여부를 나타냅니다. | `false` |
894
+ | `noMetadata` | `boolean` | `true`인 경우 컴파일러는 생성된 파일에 메타데이터를 포함하지 않습니다. | `false` |
895
+ | `dictionaryKeyPrefix` | `string` | 선택적 딕셔너리 키 접두사. | `''` |
871
896
 
872
- 1. **기본값**: 콘텐츠 선언 파일을 생성할 때 기본값 정의
873
- 2. **폴백 동작**: 특정 필드가 정의되지 않은 경우 폴백 값을 제공하여 사전 작업 동작을 전역적으로 정의할 수 있도록 함
897
+ ---
874
898
 
875
- 콘텐츠 선언 파일 구성 값 적용 방법에 대한 자세한 내용은 [콘텐츠 파일 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)를 참조하세요.
899
+ ### 로거 설정 (Logger Configuration)
876
900
 
877
- #### 속성
901
+ Intlayer 로그 출력 맞춤 설정을 위한 설정.
878
902
 
879
- - **fill**
880
- - **description**
881
- - **locale**
882
- - **location**
883
- - **priority**
884
- - **live**
885
- - **schema**
886
- - **title**
887
- - **tags**
888
- - **version**
903
+ | 필드 | 유형 | 설명 | 기본값 |
904
+ | -------- | ---------------------------------------------- | ------------------- | -------------- |
905
+ | `mode` | `'default' &#124; 'verbose' &#124; 'disabled'` | 로깅 모드. | `'default'` |
906
+ | `prefix` | `string` | 로그 메시지 접두사. | `'[intlayer]'` |
889
907
 
890
908
  ---
891
909
 
892
- ### 로거 설정
893
-
894
- 로거를 제어하는 설정으로, 사용할 접두사(prefix)를 포함합니다.
895
-
896
- #### 속성
897
-
898
- - **mode**:
899
- - _유형_: `string`
900
- - _기본값_: `default`
901
- - _설명_: 로거의 모드를 나타냅니다.
902
- - _옵션_: `default`, `verbose`, `disabled`
903
- - _예시_: `default`
904
- - _참고_: 로거의 모드입니다. verbose 모드는 더 많은 정보를 기록하지만 디버깅 목적으로 사용할 수 있습니다. disabled 모드는 로거를 비활성화합니다.
905
-
906
- - **prefix**:
907
- - _유형_: `string`
908
- - _기본값_: `'[intlayer] '`
909
- - _설명_: 로거의 접두사입니다.
910
- - _예시_: `'[my custom prefix] '`
911
- - _참고_: 로거의 접두사입니다.
912
-
913
- ### AI 구성
914
-
915
- Intlayer의 AI 기능을 제어하는 설정으로, 제공자(provider), 모델(model), API 키를 포함합니다.
916
-
917
- 이 구성은 [Intlayer 대시보드](https://app.intlayer.org/project)에 액세스 키로 등록된 경우 선택 사항입니다. Intlayer는 귀하의 요구에 가장 효율적이고 비용 효과적인 AI 솔루션을 자동으로 관리합니다. 기본 옵션을 사용하면 Intlayer가 가장 적합한 모델을 지속적으로 업데이트하므로 장기적인 유지 관리가 더 용이합니다.
918
-
919
- 자신의 API 키나 특정 모델을 사용하려는 경우, 사용자 정의 AI 구성을 정의할 수 있습니다.
920
- 이 AI 구성은 Intlayer 환경 전반에 걸쳐 전역적으로 사용됩니다. CLI 명령어는 이 설정을 기본값으로 사용하며(예: `fill`), SDK, 비주얼 에디터, CMS에서도 동일하게 적용됩니다. 특정 사용 사례에 대해서는 명령어 매개변수를 사용하여 이러한 기본값을 재정의할 수 있습니다.
921
-
922
- Intlayer는 향상된 유연성과 선택권을 위해 여러 AI 공급자를 지원합니다. 현재 지원되는 공급자는 다음과 같습니다:
923
-
924
- - **OpenAI** (기본값)
925
- - **Anthropic Claude**
926
- - **Mistral AI**
927
- - **DeepSeek**
928
- - **Google Gemini**
929
- - **Meta Llama**
930
- - **Ollama**
931
- - **OpenRouter**
932
- - **Alibaba Cloud**
933
- - **Fireworks**
934
- - **Hugging Face**
935
- - **Groq**
936
- - **Amazon Bedrock**
937
- - **Google AI Studio**
938
- - **Google Vertex**
939
- - **Together.ai**
940
- - **ollama**
941
-
942
- #### 속성
943
-
944
- - **provider**:
945
- - _유형_: `string`
946
- - _기본값_: `'openai'`
947
- - _설명_: Intlayer의 AI 기능에 사용할 공급자입니다.
948
- - _옵션_: `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
949
- - _예시_: `'anthropic'`
950
- - _참고_: 서로 다른 공급자는 서로 다른 API 키와 가격 모델을 요구할 수 있습니다.
951
-
952
- - **model**:
953
- - _유형_: `string`
954
- - _기본값_: 없음
955
- - _설명_: Intlayer의 AI 기능에 사용할 모델입니다.
956
- - _예시_: `'gpt-4o-2024-11-20'`
957
- - _참고_: 사용할 특정 모델은 공급자에 따라 다릅니다.
958
-
959
- - **temperature**:
960
- - _유형_: `number`
961
- - _기본값_: 없음
962
- - _설명_: temperature는 AI 응답의 무작위성을 제어합니다.
963
- - _예시_: `0.1`
964
- - _참고_: 더 높은 temperature는 AI를 더 창의적이고 예측 불가능하게 만듭니다.
965
-
966
- - **apiKey**:
967
- - _유형_: `string`
968
- - _기본값_: 없음
969
- - _설명_: 선택한 공급자에 대한 API 키입니다.
970
- - _예시_: `process.env.OPENAI_API_KEY`
971
- - _참고_: 중요: API 키는 비밀로 유지해야 하며 공개적으로 공유해서는 안 됩니다. 환경 변수와 같은 안전한 위치에 보관하시기 바랍니다.
972
-
973
- - **applicationContext**:
974
- - _유형_: `string`
975
- - _기본값_: 없음
976
- - _설명_: AI 모델에 애플리케이션에 대한 추가 컨텍스트를 제공하여 더 정확하고 상황에 적합한 번역을 생성하도록 돕습니다. 여기에는 앱의 도메인, 대상 사용자, 톤 또는 특정 용어에 대한 정보가 포함될 수 있습니다.
977
-
978
- - **baseURL**:
979
- - _유형_: `string`
980
- - _기본값_: 없음
981
- - _설명_: AI API의 기본 URL입니다.
982
- - _예시_: `'https://api.openai.com/v1'`
983
- - _참고_: 로컬 또는 사용자 정의 AI API 엔드포인트를 가리키는 데 사용할 수 있습니다.
984
-
985
- - **dataSerialization**:
986
- - _타입_: `'json' | 'toon'`
987
- - _기본값_: `'json'`
988
- - _설명_: Intlayer의 AI 기능에 사용할 데이터 직렬화 형식.
989
- - _예시_: `'toon'`
990
- - _참고_: `json`: 표준적이고 신뢰할 수 있음; 더 많은 토큰을 사용함. `toon`: 토큰이 적게 들지만 JSON보다 일관성이 떨어짐.
991
-
992
- ### 빌드 구성
993
-
994
- Intlayer가 애플리케이션의 국제화를 최적화하고 빌드하는 방식을 제어하는 설정입니다.
995
-
996
- 빌드 옵션은 `@intlayer/babel` 및 `@intlayer/swc` 플러그인에 적용됩니다.
997
-
998
- > 개발 모드에서는 Intlayer가 사전을 정적 임포트하여 개발 경험을 단순화합니다.
999
-
1000
- > 최적화 시, Intlayer는 청크 최적화를 위해 사전 호출을 대체하여 최종 번들이 실제로 사용되는 사전만 임포트하도록 합니다.
1001
-
1002
- #### 속성
1003
-
1004
- - **mode**:
1005
- - _타입_: `'auto' | 'manual'`
1006
- - _기본값_: `'auto'`
1007
- - _설명_: 빌드 모드를 제어합니다.
1008
- - _예시_: `'manual'`
1009
- - _참고_: 'auto'인 경우, 애플리케이션이 빌드될 때 빌드가 자동으로 활성화됩니다.
1010
- - _참고_: 'manual'인 경우, 빌드 명령이 실행될 때만 빌드가 설정됩니다.
1011
- - _참고_: 사전 빌드를 비활성화하는 데 사용할 수 있습니다. 예를 들어 Node.js 환경에서 실행을 피해야 하는 경우입니다.
1012
-
1013
- - **checkTypes**:
1014
- - _형식_: `boolean`
1015
- - _기본값_: `false`
1016
- - _설명_: 빌드가 TypeScript 유형을 확인하고 오류를 기록해야 하는지 여부를 나타냅니다.
1017
- - _참고_: 이로 인해 빌드 속도가 느려질 수 있습니다.
1018
-
1019
- - **optimize**:
1020
- - _타입_: `boolean`
1021
- - _기본값_: `process.env.NODE_ENV === 'production'`
1022
- - _설명_: 빌드를 최적화할지 여부를 제어합니다.
1023
- - _예시_: `true`
1024
- - _참고_: 활성화되면 Intlayer는 청크 최적화를 위해 모든 사전 호출을 대체합니다. 이렇게 하면 최종 번들은 사용되는 사전만 임포트합니다. 모든 임포트는 사전 로딩 시 비동기 처리를 피하기 위해 정적 임포트로 유지됩니다.
1025
- - _참고_: Intlayer는 `importMode` 옵션에 정의된 모드에 따라 모든 `useIntlayer` 호출을 대체하며, `getIntlayer`는 `getDictionary`로 대체합니다.
1026
- - _참고_: 이 옵션은 `@intlayer/babel` 및 `@intlayer/swc` 플러그인에 의존합니다.
1027
- - _참고_: `useIntlayer` 호출에서 모든 키가 정적으로 선언되어 있는지 확인하세요. 예: `useIntlayer('navbar')`.
1028
-
1029
- - **outputFormat**:
1030
- - _타입_: `'esm' | 'cjs'`
1031
- - _기본값_: `'esm'`
1032
- - _설명_: 사전의 출력 형식을 제어합니다.
1033
- - _예시_: `'cjs'`
1034
- - _참고_: 사전의 출력 형식입니다.
1035
-
1036
- - **traversePattern**:
1037
- - _유형_: `string[]`
1038
- - _기본값_: `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
1039
- - _설명_: 최적화 중에 탐색할 파일을 정의하는 패턴입니다.
1040
- - _예시_: `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
1041
- - _참고_: 최적화를 관련 코드 파일로 제한하여 빌드 성능을 향상시키는 데 사용합니다.
1042
- - _참고_: `optimize`가 비활성화된 경우 이 옵션은 무시됩니다.
1043
- - _참고_: glob 패턴을 사용하세요.
910
+ ### 사용자 정의 스키마 (Custom Schemas)
911
+
912
+ | 필드 | 유형 | 설명 |
913
+ | --------- | --------------------------- | -------------------------------------------------------------- |
914
+ | `schemas` | `Record<string, ZodSchema>` | 딕셔너리 구조를 검증하기 위한 Zod 스키마를 정의할 수 있습니다. |
1044
915
 
1045
916
  ---
1046
917
 
1047
- ### 컴파일러 설정
1048
-
1049
- 구성 요소에서 직접 사전을 추출하는 Intlayer 컴파일러를 제어하는 설정입니다.
1050
-
1051
- #### 속성
1052
-
1053
- - **enabled**:
1054
- - _타입_: `boolean | 'build-only'`
1055
- - _기본값_: `true`
1056
- - _설명_: 사전을 추출하기 위해 컴파일러를 활성화해야 하는지 여부를 나타냅니다.
1057
- - _예시_: `'build-only'`
1058
- - _참고_: `'build-only'`로 설정하면 개발 모드 동안 컴파일러를 건너뛰어 시작 시간을 단축합니다. 빌드 명령 시에만 실행됩니다.
1059
-
1060
- - **dictionaryKeyPrefix**:
1061
- - _타입_: `string`
1062
- - _기본값_: `''`
1063
- - _설명_: 추출된 사전 키의 접두사입니다.
1064
- - _예시_: `'my-key-'`
1065
- - _참고_: 사전을 추출할 때 파일 이름을 기반으로 키가 생성됩니다. 충돌을 방지하기 위해 생성된 키에 이 접두사가 추가됩니다.
1066
-
1067
- - **saveComponents**:
1068
- - _타입_: `boolean`
1069
- - _기본값_: `false`
1070
- - _설명_: 변환 후 구성 요소를 저장해야 하는지 여부를 나타냅니다.
1071
- - _참고_: true인 경우 컴파일러는 원본 파일을 변환된 파일로 대체합니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
1072
-
1073
- - **transformPattern**:
1074
- - _타입_: `string | string[]`
1075
- - _기본값_: `['**/*.{ts,tsx,jsx,js,cjs,mjs,svelte,vue}', '!**/node_modules/**']`
1076
- - _설명_: 최적화 중에 탐색할 파일을 정의하는 패턴입니다.
1077
- - _예시_: `['src/**/*.{ts,tsx}', '!**/node_modules/**']`
1078
- - _참고_: 최적화를 관련 코드 파일로 제한하여 빌드 성능을 향상시키는 데 사용합니다.
1079
-
1080
- - **excludePattern**:
1081
- - _타입_: `string | string[]`
1082
- - _기본값_: `['**/node_modules/**']`
1083
- - _설명_: 최적화 중에 제외할 파일을 정의하는 패턴입니다.
1084
- - _예시_: `['**/node_modules/**', '!**/node_modules/react/**']`
1085
-
1086
- - **output**:
1087
- - _형식_: `FilePathPattern`
1088
- - _기본값_: `undefined`
1089
- - _설명_: 출력 파일 경로를 정의합니다. `outputDir`을 대체합니다. 문자열 템플릿 또는 함수를 통해 동적 변수를 지원합니다. 지원되는 변수: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}`, `{{componentDirPath}}`.
1090
- - _참고_: `./` 경로는 구성 요소를 기준으로 해결됩니다. `/` 경로는 프로젝트 루트(`baseDir`)를 기준으로 해결됩니다.
1091
- - _참고_: 경로에 `{{locale}}` 변수를 포함하면 로케일별로 분리된 사전 생성이 활성화됩니다.
1092
- - _예시_:
1093
- - **구성 요소 옆에 다국어 파일 생성**:
1094
- - 문자열: `'./{{fileName}}{{extension}}'`
1095
- - 함수: `({ fileName, extension }) => \`./${fileName}${extension}\``
1096
-
1097
- - **로케일별 중앙 집중식 JSON 출력**:
1098
- - 문자열: `'/locales/{{locale}}/{{key}}.content.json'`
1099
- - 함수: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
1100
-
1101
- - **noMetadata**:
1102
- - _형식_: `boolean`
1103
- - _기본값_: `false`
1104
- - _설명_: 메타데이터를 파일에 저장할지 여부를 나타냅니다. true인 경우 컴파일러는 사전의 메타데이터(키, 콘텐츠 래퍼)를 저장하지 않습니다. 로케일별 i18next 또는 ICU MessageFormat JSON 출력에 유용합니다.
1105
- - _참고_: `loadJSON` 플러그인과 함께 사용할 때 유용합니다.
1106
- - _예시_:
1107
- `true`인 경우:
1108
- ```json
1109
- {
1110
- "key": "value"
1111
- }
1112
- ```
1113
- `false`인 경우:
1114
- ```json
1115
- {
1116
- "key": "value",
1117
- "content": {
1118
- "key": "value"
1119
- }
1120
- }
1121
- ```
918
+ ### 플러그인 (Plugins)
919
+
920
+ | 필드 | 유형 | 설명 |
921
+ | --------- | ------------------ | -------------------------------- |
922
+ | `plugins` | `IntlayerPlugin[]` | 활성화할 Intlayer 플러그인 목록. |