@intlayer/docs 5.7.2-canary.3 → 5.7.3

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 (48) hide show
  1. package/dist/cjs/generated/docs.entry.cjs +82 -0
  2. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  3. package/dist/esm/generated/docs.entry.mjs +82 -0
  4. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  5. package/dist/types/generated/docs.entry.d.ts +2 -0
  6. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  7. package/docs/ar/dictionary/gender.md +275 -0
  8. package/docs/ar/how_works_intlayer.md +1 -1
  9. package/docs/ar/locale_mapper.md +246 -0
  10. package/docs/de/dictionary/gender.md +316 -0
  11. package/docs/de/how_works_intlayer.md +1 -1
  12. package/docs/de/locale_mapper.md +244 -0
  13. package/docs/en/dictionary/gender.md +275 -0
  14. package/docs/en/how_works_intlayer.md +1 -1
  15. package/docs/en/index.md +3 -0
  16. package/docs/en/locale_mapper.md +244 -0
  17. package/docs/en-GB/dictionary/gender.md +275 -0
  18. package/docs/en-GB/how_works_intlayer.md +1 -1
  19. package/docs/en-GB/locale_mapper.md +244 -0
  20. package/docs/es/dictionary/gender.md +275 -0
  21. package/docs/es/how_works_intlayer.md +1 -1
  22. package/docs/es/locale_mapper.md +244 -0
  23. package/docs/fr/dictionary/gender.md +276 -0
  24. package/docs/fr/how_works_intlayer.md +1 -1
  25. package/docs/fr/locale_mapper.md +244 -0
  26. package/docs/hi/dictionary/gender.md +276 -0
  27. package/docs/hi/how_works_intlayer.md +1 -1
  28. package/docs/hi/locale_mapper.md +244 -0
  29. package/docs/it/dictionary/gender.md +275 -0
  30. package/docs/it/how_works_intlayer.md +1 -1
  31. package/docs/it/locale_mapper.md +244 -0
  32. package/docs/ja/dictionary/gender.md +275 -0
  33. package/docs/ja/how_works_intlayer.md +1 -1
  34. package/docs/ja/locale_mapper.md +244 -0
  35. package/docs/ko/dictionary/gender.md +275 -0
  36. package/docs/ko/how_works_intlayer.md +1 -1
  37. package/docs/ko/locale_mapper.md +244 -0
  38. package/docs/pt/dictionary/gender.md +275 -0
  39. package/docs/pt/how_works_intlayer.md +1 -1
  40. package/docs/pt/locale_mapper.md +244 -0
  41. package/docs/ru/dictionary/gender.md +275 -0
  42. package/docs/ru/how_works_intlayer.md +1 -1
  43. package/docs/ru/locale_mapper.md +244 -0
  44. package/docs/zh/dictionary/gender.md +275 -0
  45. package/docs/zh/how_works_intlayer.md +1 -1
  46. package/docs/zh/locale_mapper.md +244 -0
  47. package/package.json +11 -11
  48. package/src/generated/docs.entry.ts +82 -0
@@ -0,0 +1,275 @@
1
+ ---
2
+ createdAt: 2025-07-27
3
+ updatedAt: 2025-07-27
4
+ title: 성별 기반 콘텐츠
5
+ description: Intlayer에서 성별 기반 콘텐츠를 사용하여 성별에 따라 동적으로 콘텐츠를 표시하는 방법을 알아보세요. 이 문서를 따라 프로젝트에서 성별별 콘텐츠를 효율적으로 구현할 수 있습니다.
6
+ keywords:
7
+ - 성별 기반 콘텐츠
8
+ - 동적 렌더링
9
+ - 문서
10
+ - Intlayer
11
+ - Next.js
12
+ - JavaScript
13
+ - React
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - content
18
+ - gender
19
+ ---
20
+
21
+ # 성별 기반 콘텐츠 / Intlayer의 성별
22
+
23
+ ## 성별 작동 방식
24
+
25
+ Intlayer에서는 `gender` 함수를 통해 성별 기반 콘텐츠를 구현합니다. 이 함수는 특정 성별 값('male', 'female')을 해당하는 콘텐츠에 매핑합니다. 이 방식을 통해 주어진 성별에 따라 동적으로 콘텐츠를 선택할 수 있습니다. React Intlayer 또는 Next Intlayer와 통합하면, 런타임에 제공된 성별에 따라 적절한 콘텐츠가 자동으로 선택됩니다.
26
+
27
+ ## 성별 기반 콘텐츠 설정
28
+
29
+ Intlayer 프로젝트에서 성별 기반 콘텐츠를 설정하려면, 성별별 정의를 포함하는 콘텐츠 모듈을 생성하세요. 아래는 다양한 형식의 예시입니다.
30
+
31
+ ```typescript fileName="**/*.content.ts" contentDeclarationFormat="typescript"
32
+ import { gender, type Dictionary } from "intlayer";
33
+
34
+ const myGenderContent = {
35
+ key: "my_key",
36
+ content: {
37
+ myGender: gender({
38
+ male: "남성 사용자용 콘텐츠",
39
+ female: "여성 사용자용 콘텐츠",
40
+ fallback: "성별이 지정되지 않았을 때의 콘텐츠", // 선택 사항
41
+ }),
42
+ },
43
+ } satisfies Dictionary;
44
+
45
+ export default myGenderContent;
46
+ ```
47
+
48
+ ```javascript fileName="**/*.content.mjs" contentDeclarationFormat="esm"
49
+ import { gender } from "intlayer";
50
+
51
+ /** @type {import('intlayer').Dictionary} */
52
+ const myGenderContent = {
53
+ key: "my_key",
54
+ content: {
55
+ myGender: gender({
56
+ male: "남성 사용자용 콘텐츠",
57
+ female: "여성 사용자용 콘텐츠",
58
+ fallback: "성별이 지정되지 않았을 때의 콘텐츠", // 선택 사항
59
+ }),
60
+ },
61
+ };
62
+
63
+ export default myGenderContent;
64
+ ```
65
+
66
+ ```javascript fileName="**/*.content.cjs" contentDeclarationFormat="commonjs"
67
+ const { gender } = require("intlayer");
68
+
69
+ /** @type {import('intlayer').Dictionary} */
70
+ const myGenderContent = {
71
+ key: "my_key",
72
+ content: {
73
+ myGender: gender({
74
+ male: "남성 사용자용 콘텐츠",
75
+ female: "여성 사용자용 콘텐츠",
76
+ fallback: "성별이 지정되지 않았을 때의 콘텐츠", // 선택 사항
77
+ }),
78
+ },
79
+ };
80
+
81
+ module.exports = myGenderContent;
82
+ ```
83
+
84
+ ```json5 fileName="**/*.content.json" contentDeclarationFormat="json"
85
+ {
86
+ "$schema": "https://intlayer.org/schema.json",
87
+ "key": "my_key",
88
+ "content": {
89
+ "myGender": {
90
+ "nodeType": "gender",
91
+ "gender": {
92
+ "male": "남성 사용자용 콘텐츠",
93
+ "female": "여성 사용자용 콘텐츠",
94
+ "fallback": "성별이 지정되지 않았을 때의 콘텐츠", // 선택 사항
95
+ },
96
+ },
97
+ },
98
+ }
99
+ ```
100
+
101
+ > 만약 fallback이 선언되지 않았다면, 성별이 지정되지 않았거나 정의된 성별과 일치하지 않을 경우 마지막으로 선언된 키가 fallback으로 사용됩니다.
102
+
103
+ ## React Intlayer에서 성별 기반 콘텐츠 사용하기
104
+
105
+ React 컴포넌트 내에서 성별 기반 콘텐츠를 활용하려면, `react-intlayer` 패키지에서 `useIntlayer` 훅을 임포트하여 사용하세요. 이 훅은 지정된 키에 대한 콘텐츠를 가져오며, 적절한 출력을 선택하기 위해 성별을 전달할 수 있습니다.
106
+
107
+ ```tsx fileName="**/*.tsx" codeFormat="typescript"
108
+ import type { FC } from "react";
109
+ import { useIntlayer } from "react-intlayer";
110
+
111
+ const GenderComponent: FC = () => {
112
+ const { myGender } = useIntlayer("my_key");
113
+
114
+ return (
115
+ <div>
116
+ <p>
117
+ {
118
+ /* 출력: 남성 사용자용 콘텐츠 */
119
+ myGender("male")
120
+ }
121
+ </p>
122
+ <p>
123
+ {
124
+ /* 출력: 여성 사용자용 내 콘텐츠 */
125
+ myGender("female")
126
+ }
127
+ </p>
128
+ <p>
129
+ {
130
+ /* 출력: 남성 사용자용 내 콘텐츠 */
131
+ myGender("m")
132
+ }
133
+ </p>
134
+ <p>
135
+ {
136
+ /* 출력: 여성 사용자용 내 콘텐츠 */
137
+ myGender("f")
138
+ }
139
+ </p>
140
+ <p>
141
+ {
142
+ /* 출력: 성별이 지정되지 않았을 때 내 콘텐츠 */
143
+ myGender("")
144
+ }
145
+ </p>
146
+ <p>
147
+ {
148
+ /* 출력: 성별이 지정되지 않았을 때 내 콘텐츠 */
149
+ myGender(undefined)
150
+ }
151
+ </p>
152
+ </div>
153
+ );
154
+ };
155
+
156
+ export default GenderComponent;
157
+ ```
158
+
159
+ ```javascript fileName="**/*.mjx" codeFormat="esm"
160
+ import { useIntlayer } from "react-intlayer";
161
+
162
+ const GenderComponent = () => {
163
+ const { myGender } = useIntlayer("my_key");
164
+
165
+ return (
166
+ <div>
167
+ <p>
168
+ {
169
+ /* 출력: 남성 사용자용 내 콘텐츠 */
170
+ myGender("male")
171
+ }
172
+ </p>
173
+ <p>
174
+ {
175
+ /* 출력: 여성 사용자용 내 콘텐츠 */
176
+ myGender("female")
177
+ }
178
+ </p>
179
+ <p>
180
+ {
181
+ /* 출력: 남성 사용자용 내 콘텐츠 */
182
+ myGender("m")
183
+ }
184
+ </p>
185
+ <p>
186
+ {
187
+ /* 출력: 여성 사용자용 내 콘텐츠 */
188
+ myGender("f")
189
+ }
190
+ </p>
191
+ <p>
192
+ {
193
+ /* 출력: 성별이 지정되지 않았을 때 내 콘텐츠 */
194
+ myGender("")
195
+ }
196
+ </p>
197
+ <p>
198
+ {
199
+ /* 출력: 성별이 지정되지 않았을 때 내 콘텐츠 */
200
+ myGender(undefined)
201
+ }
202
+ </p>
203
+ </div>
204
+ );
205
+ };
206
+
207
+ export default GenderComponent;
208
+ ```
209
+
210
+ ```javascript fileName="**/*.cjs" codeFormat="commonjs"
211
+ const { useIntlayer } = require("react-intlayer");
212
+
213
+ const GenderComponent = () => {
214
+ const { myGender } = useIntlayer("my_key");
215
+
216
+ return (
217
+ <div>
218
+ <p>
219
+ {
220
+ /* 출력: 남성 사용자용 콘텐츠 */
221
+ myGender("male")
222
+ }
223
+ </p>
224
+ <p>
225
+ {
226
+ /* 출력: 여성 사용자용 콘텐츠 */
227
+ myGender("female")
228
+ }
229
+ </p>
230
+ <p>
231
+ {
232
+ /* 출력: 남성 사용자용 콘텐츠 */
233
+ myGender("m")
234
+ }
235
+ </p>
236
+ <p>
237
+ {
238
+ /* 출력: 여성 사용자용 콘텐츠 */
239
+ myGender("f")
240
+ }
241
+ </p>
242
+ <p>
243
+ {
244
+ /* 출력: 성별이 지정되지 않았을 때의 내 콘텐츠 */
245
+ myGender("")
246
+ }
247
+ </p>
248
+ <p>
249
+ {
250
+ /* 출력: 성별이 지정되지 않았을 때의 내 콘텐츠 */
251
+ myGender(undefined)
252
+ }
253
+ </p>
254
+ </div>
255
+ );
256
+ };
257
+
258
+ module.exports = GenderComponent;
259
+ ```
260
+
261
+ ## 추가 자료
262
+
263
+ 설정 및 사용법에 대한 자세한 정보는 다음 자료를 참조하세요:
264
+
265
+ - [Intlayer CLI 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_cli.md)
266
+ - [React Intlayer 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_create_react_app.md)
267
+ - [Next Intlayer 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_15.md)
268
+
269
+ 이 자료들은 다양한 환경과 프레임워크에서 Intlayer의 설정 및 사용에 대한 추가적인 통찰을 제공합니다.
270
+
271
+ ## 문서 이력
272
+
273
+ | 버전 | 날짜 | 변경 사항 |
274
+ | ----- | ---------- | --------------------- |
275
+ | 5.7.2 | 2025-07-27 | 성별 기반 콘텐츠 도입 |
@@ -93,7 +93,7 @@ Intlayer는 콘텐츠를 시각적으로 편집할 수 있는 시각적 편집
93
93
 
94
94
  - 서버는 클라이언트의 요청을 수신하고 애플리케이션의 `dictionaries`와 같은 콘텐츠 및 구성을 가져와 클라이언트 측에서 접근할 수 있도록 하는 간단한 Express 애플리케이션입니다.
95
95
  - 반면 클라이언트는 시각적 인터페이스를 사용하여 콘텐츠와 상호작용하는 데 사용되는 React 애플리케이션입니다.
96
- `useIntlayer`를 사용하여 콘텐츠를 호출하고 편집기가 활성화되면, 자동으로 문자열을 `IntlayerNode`라는 Proxy 객체로 감쌉니다. 이 노드는 `window.sendMessage`를 사용하여 시각적 편집기 인터페이스가 포함된 래핑된 iframe과 통신합니다.
96
+ `useIntlayer`를 사용하여 콘텐츠를 호출하고 편집기가 활성화되면, 자동으로 문자열을 `IntlayerNode`라는 Proxy 객체로 감쌉니다. 이 노드는 `window.postMessage`를 사용하여 시각적 편집기 인터페이스가 포함된 래핑된 iframe과 통신합니다.
97
97
  편집기 측에서는 이러한 메시지를 수신하여 실제 콘텐츠와 상호작용하는 것처럼 시뮬레이션하며, 애플리케이션 컨텍스트 내에서 직접 텍스트를 편집할 수 있도록 합니다.
98
98
 
99
99
  ## 애플리케이션 빌드 최적화
@@ -0,0 +1,244 @@
1
+ ---
2
+ createdAt: 2025-07-27
3
+ updatedAt: 2025-07-27
4
+ title: 로케일 매퍼
5
+ description: 로케일 매퍼가 어떻게 작동하는지 알아보세요. 애플리케이션에서 로케일 매퍼가 사용하는 단계를 확인하세요. 다양한 패키지가 하는 역할을 확인하세요.
6
+ keywords:
7
+ - 로케일 매퍼
8
+ - 시작하기
9
+ - Intlayer
10
+ - 애플리케이션
11
+ - 패키지
12
+ slugs:
13
+ - doc
14
+ - locale-mapper
15
+ ---
16
+
17
+ # 로케일 매퍼
18
+
19
+ 로케일 매퍼는 Intlayer 애플리케이션에서 국제화 데이터를 다루는 데 도움을 주는 강력한 유틸리티입니다. 로케일별 데이터를 변환하고 조직하는 세 가지 주요 함수인 `localeMap`, `localeFlatMap`, `localeRecord`를 제공합니다.
20
+
21
+ ## 로케일 매퍼 작동 방식
22
+
23
+ 로케일 매퍼는 로케일에 관한 모든 필요한 정보를 포함하는 `LocaleData` 객체를 기반으로 작동합니다:
24
+
25
+ ```typescript
26
+ type LocaleData = {
27
+ locale: LocalesValues; // 현재 로케일 코드 (예: 'en', 'fr')
28
+ defaultLocale: LocalesValues; // 기본 로케일 코드
29
+ isDefault: boolean; // 이 로케일이 기본 로케일인지 여부
30
+ locales: LocalesValues[]; // 사용 가능한 모든 로케일 배열
31
+ urlPrefix: string; // 이 로케일의 URL 접두사 (예: '/fr' 또는 '')
32
+ };
33
+ ```
34
+
35
+ 매퍼 함수는 구성에 있는 각 로케일에 대해 이 데이터를 자동으로 생성하며, 다음 사항을 고려합니다:
36
+
37
+ - 구성된 로케일 목록
38
+ - 기본 로케일 설정
39
+ - 기본 로케일이 URL에 접두사로 붙어야 하는지 여부
40
+
41
+ ## 핵심 함수
42
+
43
+ ### `localeMap`
44
+
45
+ 매퍼 함수를 사용하여 각 로케일을 단일 객체로 변환합니다.
46
+
47
+ ```typescript
48
+ localeMap<T>(
49
+ mapper: (locale: LocaleData) => T,
50
+ locales?: LocalesValues[],
51
+ defaultLocale?: LocalesValues,
52
+ prefixDefault?: boolean
53
+ ): T[]
54
+ ```
55
+
56
+ **예제: 라우트 객체 생성하기**
57
+
58
+ ```typescript
59
+ import { localeMap } from "intlayer";
60
+
61
+ const routes = localeMap((localizedData) => ({
62
+ path: localizedData.urlPrefix,
63
+ name: localizedData.locale,
64
+ isDefault: localizedData.isDefault,
65
+ locales: localizedData.locales,
66
+ defaultLocale: localizedData.defaultLocale,
67
+ }));
68
+
69
+ // 결과:
70
+ // [
71
+ // { path: '/', name: 'en', isDefault: true, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },
72
+ // { path: '/fr', name: 'fr', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' },
73
+ // { path: '/es', name: 'es', isDefault: false, locales: ['en', 'fr', 'es'], defaultLocale: 'en' }
74
+ // ]
75
+ ```
76
+
77
+ ### `localeFlatMap`
78
+
79
+ `localeMap`과 유사하지만, 매퍼 함수가 객체 배열을 반환하며 이 배열이 단일 배열로 평탄화됩니다.
80
+
81
+ ```typescript
82
+ localeFlatMap<T>(
83
+ mapper: (locale: LocaleData) => T[],
84
+ locales?: LocalesValues[],
85
+ defaultLocale?: LocalesValues,
86
+ prefixDefault?: boolean
87
+ ): T[]
88
+ ```
89
+
90
+ **예제: 로케일별로 여러 경로 생성하기**
91
+
92
+ ```typescript
93
+ import { localeFlatMap } from "intlayer";
94
+
95
+ const routes = localeFlatMap((localizedData) => [
96
+ {
97
+ path: localizedData.urlPrefix,
98
+ name: localizedData.locale,
99
+ isDefault: localizedData.isDefault,
100
+ },
101
+ {
102
+ path: `${localizedData.urlPrefix}/about`,
103
+ name: `${localizedData.locale}-about`,
104
+ isDefault: localizedData.isDefault,
105
+ },
106
+ ]);
107
+
108
+ // 결과:
109
+ // [
110
+ // { path: '/', name: 'en', isDefault: true },
111
+ { path: '/about', name: 'en-about', isDefault: true },
112
+ { path: '/fr', name: 'fr', isDefault: false },
113
+ { path: '/fr/about', name: 'fr-about', isDefault: false },
114
+ { path: '/es', name: 'es', isDefault: false },
115
+ { path: '/es/about', name: 'es-about', isDefault: false }
116
+ ]
117
+ ```
118
+
119
+ ### `localeRecord`
120
+
121
+ 각 로케일이 키가 되고, 매퍼 함수에 의해 변환된 값을 매핑하는 레코드 객체를 생성합니다.
122
+
123
+ ```typescript
124
+ localeRecord<T>(
125
+ mapper: (locale: LocaleData) => T,
126
+ locales?: Locales[],
127
+ defaultLocale?: Locales,
128
+ prefixDefault?: boolean
129
+ ): Record<Locales, T>
130
+ ```
131
+
132
+ **예제: 번역 파일 로딩하기**
133
+
134
+ ```typescript
135
+ import { localeRecord } from "intlayer";
136
+
137
+ const translations = localeRecord(({ locale }) =>
138
+ require(`./translations/${locale}.json`)
139
+ );
140
+
141
+ // 결과:
142
+ // {
143
+ // en: { welcome: 'Welcome', hello: 'Hello' },
144
+ // fr: { welcome: 'Bienvenue', hello: 'Bonjour' },
145
+ // es: { welcome: 'Bienvenido', hello: 'Hola' }
146
+ // }
147
+ ```
148
+
149
+ ## 로케일 매퍼 설정하기
150
+
151
+ 로케일 매퍼는 자동으로 Intlayer 설정을 사용하지만, 매개변수를 전달하여 기본값을 재정의할 수 있습니다:
152
+
153
+ ### 기본 설정 사용하기
154
+
155
+ ```typescript
156
+ import { localeMap } from "intlayer";
157
+
158
+ // intlayer.config.ts의 설정을 사용합니다
159
+ const routes = localeMap((data) => ({
160
+ path: data.urlPrefix,
161
+ locale: data.locale,
162
+ }));
163
+ ```
164
+
165
+ ### 설정 재정의하기
166
+
167
+ ```typescript
168
+ import { localeMap } from "intlayer";
169
+
170
+ // 로케일과 기본 로케일을 재정의합니다
171
+ const customRoutes = localeMap(
172
+ (data) => ({ path: data.urlPrefix, locale: data.locale }),
173
+ ["en", "fr", "de"], // 사용자 지정 로케일
174
+ "en", // 사용자 지정 기본 로케일
175
+ true // URL에 기본 로케일 접두사 추가
176
+ );
177
+ ```
178
+
179
+ ## 고급 사용 예제
180
+
181
+ ### 내비게이션 메뉴 생성
182
+
183
+ ```typescript
184
+ import { localeMap } from "intlayer";
185
+
186
+ const navigationItems = localeMap((data) => ({
187
+ label: data.locale.toUpperCase(), // 로케일을 대문자로 표시
188
+ href: data.urlPrefix || "/", // URL 접두사 또는 기본 경로
189
+ isActive: data.isDefault, // 기본 로케일 여부
190
+ flag: `/flags/${data.locale}.svg`, // 로케일에 해당하는 국기 아이콘 경로
191
+ }));
192
+ ```
193
+
194
+ ### 사이트맵 데이터 생성
195
+
196
+ ```typescript
197
+ import { localeFlatMap } from "intlayer";
198
+
199
+ const sitemapUrls = localeFlatMap((data) => [
200
+ {
201
+ url: `${data.urlPrefix}/`, // URL 경로
202
+ lastmod: new Date().toISOString(), // 마지막 수정 날짜
203
+ changefreq: "daily", // 변경 빈도
204
+ priority: data.isDefault ? 1.0 : 0.8, // 우선순위
205
+ },
206
+ {
207
+ url: `${data.urlPrefix}/about`,
208
+ lastmod: new Date().toISOString(),
209
+ changefreq: "monthly",
210
+ priority: data.isDefault ? 0.8 : 0.6,
211
+ },
212
+ ]);
213
+ ```
214
+
215
+ ### 동적 번역 로딩
216
+
217
+ ```typescript
218
+ import { localeRecord } from "intlayer";
219
+
220
+ const translationModules = localeRecord(({ locale }) => ({
221
+ messages: import(`./locales/${locale}/messages.json`),
222
+ validation: import(`./locales/${locale}/validation.json`),
223
+ metadata: {
224
+ locale,
225
+ direction: ["ar", "he", "fa"].includes(locale) ? "rtl" : "ltr", // 오른쪽에서 왼쪽으로 읽는 언어인지 여부
226
+ },
227
+ }));
228
+ ```
229
+
230
+ ## 구성 통합
231
+
232
+ Locale Mapper는 Intlayer 구성과 원활하게 통합됩니다:
233
+
234
+ - **Locales**: `configuration.internationalization.locales`를 자동으로 사용합니다
235
+ - **기본 로케일**: `configuration.internationalization.defaultLocale`를 사용합니다
236
+ - **URL 접두사**: `configuration.middleware.prefixDefault`를 준수합니다
237
+
238
+ 이것은 애플리케이션 전반에 걸쳐 일관성을 보장하고 구성 중복을 줄여줍니다.
239
+
240
+ ## 문서 이력
241
+
242
+ | 버전 | 날짜 | 변경 사항 |
243
+ | ----- | ---------- | --------------------- |
244
+ | 5.7.2 | 2025-07-27 | 로케일 매퍼 문서 추가 |