@intlayer/docs 6.0.1 → 6.0.2

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 (104) hide show
  1. package/dist/cjs/blog.cjs.map +1 -1
  2. package/dist/cjs/common.cjs +6 -5
  3. package/dist/cjs/common.cjs.map +1 -1
  4. package/dist/cjs/generated/blog.entry.cjs +318 -1863
  5. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  6. package/dist/cjs/generated/docs.entry.cjs +1317 -6282
  7. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  8. package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
  9. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  10. package/dist/cjs/generated/legal.entry.cjs +43 -84
  11. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  12. package/dist/esm/blog.mjs.map +1 -1
  13. package/dist/esm/common.mjs +2 -5
  14. package/dist/esm/common.mjs.map +1 -1
  15. package/dist/esm/generated/blog.entry.mjs +318 -1863
  16. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  17. package/dist/esm/generated/docs.entry.mjs +1317 -6282
  18. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  19. package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
  20. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  21. package/dist/esm/generated/legal.entry.mjs +43 -84
  22. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  23. package/dist/types/blog.d.ts +1 -1
  24. package/dist/types/blog.d.ts.map +1 -1
  25. package/dist/types/common.d.ts +1 -1
  26. package/dist/types/common.d.ts.map +1 -1
  27. package/dist/types/generated/blog.entry.d.ts +1 -1
  28. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  29. package/dist/types/generated/docs.entry.d.ts +2 -1
  30. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  31. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
  32. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  33. package/dist/types/generated/legal.entry.d.ts +1 -1
  34. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  35. package/docs/ar/intlayer_CMS.md +261 -85
  36. package/docs/ar/releases/v6.md +273 -0
  37. package/docs/ar/roadmap.md +1 -3
  38. package/docs/ar/vs_code_extension.md +94 -63
  39. package/docs/de/intlayer_CMS.md +247 -65
  40. package/docs/de/releases/v6.md +298 -0
  41. package/docs/de/roadmap.md +1 -3
  42. package/docs/de/vs_code_extension.md +89 -58
  43. package/docs/en/configuration.md +9 -2
  44. package/docs/en/intlayer_CMS.md +205 -23
  45. package/docs/en/intlayer_cli.md +4 -4
  46. package/docs/en/intlayer_visual_editor.md +7 -6
  47. package/docs/en/intlayer_with_nextjs_14.md +17 -1
  48. package/docs/en/intlayer_with_nextjs_15.md +17 -1
  49. package/docs/en/releases/v6.md +268 -0
  50. package/docs/en/roadmap.md +1 -3
  51. package/docs/en/vs_code_extension.md +79 -49
  52. package/docs/en-GB/intlayer_CMS.md +216 -52
  53. package/docs/en-GB/releases/v6.md +297 -0
  54. package/docs/en-GB/roadmap.md +1 -3
  55. package/docs/en-GB/vs_code_extension.md +79 -48
  56. package/docs/es/intlayer_CMS.md +257 -84
  57. package/docs/es/releases/v6.md +274 -0
  58. package/docs/es/roadmap.md +1 -3
  59. package/docs/es/vs_code_extension.md +90 -60
  60. package/docs/fr/intlayer_CMS.md +250 -68
  61. package/docs/fr/releases/v6.md +274 -0
  62. package/docs/fr/roadmap.md +1 -3
  63. package/docs/fr/vs_code_extension.md +94 -63
  64. package/docs/hi/intlayer_CMS.md +253 -77
  65. package/docs/hi/releases/v6.md +273 -0
  66. package/docs/hi/roadmap.md +1 -3
  67. package/docs/hi/vs_code_extension.md +92 -61
  68. package/docs/it/intlayer_CMS.md +251 -73
  69. package/docs/it/releases/v6.md +273 -0
  70. package/docs/it/roadmap.md +1 -3
  71. package/docs/it/vs_code_extension.md +94 -63
  72. package/docs/ja/intlayer_CMS.md +282 -97
  73. package/docs/ja/releases/v6.md +273 -0
  74. package/docs/ja/roadmap.md +1 -3
  75. package/docs/ja/vs_code_extension.md +99 -68
  76. package/docs/ko/intlayer_CMS.md +267 -93
  77. package/docs/ko/releases/v6.md +273 -0
  78. package/docs/ko/roadmap.md +1 -3
  79. package/docs/ko/vs_code_extension.md +88 -57
  80. package/docs/pt/intlayer_CMS.md +261 -83
  81. package/docs/pt/releases/v6.md +273 -0
  82. package/docs/pt/roadmap.md +1 -3
  83. package/docs/pt/vs_code_extension.md +89 -58
  84. package/docs/ru/intlayer_CMS.md +240 -65
  85. package/docs/ru/releases/v6.md +274 -0
  86. package/docs/ru/roadmap.md +1 -1
  87. package/docs/ru/vs_code_extension.md +83 -52
  88. package/docs/tr/intlayer_CMS.md +278 -96
  89. package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
  90. package/docs/tr/intlayer_with_tanstack.md +3 -0
  91. package/docs/tr/releases/v6.md +273 -0
  92. package/docs/tr/roadmap.md +1 -1
  93. package/docs/tr/vs_code_extension.md +100 -71
  94. package/docs/zh/intlayer_CMS.md +257 -76
  95. package/docs/zh/releases/v6.md +273 -0
  96. package/docs/zh/roadmap.md +1 -3
  97. package/docs/zh/vs_code_extension.md +99 -68
  98. package/package.json +11 -10
  99. package/src/blog.ts +1 -1
  100. package/src/common.ts +2 -6
  101. package/src/generated/blog.entry.ts +323 -1864
  102. package/src/generated/docs.entry.ts +1317 -6278
  103. package/src/generated/frequentQuestions.entry.ts +202 -1183
  104. package/src/generated/legal.entry.ts +48 -85
@@ -1,13 +1,13 @@
1
1
  ---
2
- createdAt: 2024-08-11
3
- updatedAt: 2025-06-29
4
- title: Intlayer CMS | Intlayer CMS에 콘텐츠를 외부화합니다
5
- description: Intlayer CMS에 콘텐츠를 외부화하여 콘텐츠의 관리를 팀에게 위임합니다.
2
+ createdAt: 2025-08-23
3
+ updatedAt: 2025-08-23
4
+ title: Intlayer CMS | Intlayer CMS에 콘텐츠 외부화하기
5
+ description: 콘텐츠 관리를 팀에 위임하기 위해 Intlayer CMS에 콘텐츠를 외부화하세요.
6
6
  keywords:
7
7
  - CMS
8
- - 비주얼 편집기
8
+ - 비주얼 에디터
9
9
  - 국제화
10
- - 문서
10
+ - 문서화
11
11
  - Intlayer
12
12
  - Next.js
13
13
  - JavaScript
@@ -19,71 +19,69 @@ slugs:
19
19
  youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
20
20
  ---
21
21
 
22
- # Intlayer 콘텐츠 관리 시스템 (CMS) 문서
22
+ # Intlayer 콘텐츠 관리 시스템(CMS) 문서
23
23
 
24
- <iframe title="Visual Editor + CMS for Your Web App: Intlayer Explained" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
24
+ <iframe title=" 앱을 위한 비주얼 에디터 + CMS: Intlayer 설명" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/UDDTnirwi_4?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
25
25
 
26
- Intlayer CMS는 Intlayer 프로젝트의 콘텐츠를 외부화할 수 있는 애플리케이션입니다.
26
+ Intlayer CMS는 Intlayer 프로젝트의 콘텐츠를 외부화할 수 있게 해주는 애플리케이션입니다.
27
27
 
28
- 이를 위해 Intlayer는 '원격 사전'이라는 개념을 도입합니다.
28
+ 이를 위해 Intlayer는 '원격 사전(distant dictionaries)' 개념을 도입했습니다.
29
29
 
30
30
  ![Intlayer CMS 인터페이스](https://github.com/aymericzip/intlayer/blob/main/docs/assets/CMS.png)
31
31
 
32
32
  ## 원격 사전 이해하기
33
33
 
34
- Intlayer는 '로컬' 사전과 '원격' 사전을 구분합니다.
34
+ Intlayer는 '로컬(local)' 사전과 '원격(distant)' 사전을 구분합니다.
35
35
 
36
- - '로컬' 사전은 Intlayer 프로젝트 내에서 선언된 사전을 의미합니다. 예를 들어 버튼 선언 파일이나 네비게이션 바가 이에 해당합니다. 이 경우 콘텐츠가 자주 변경되지 않기 때문에 콘텐츠를 외부화하는 것은 의미가 없습니다.
36
+ - '로컬' 사전은 Intlayer 프로젝트 내에 선언된 사전입니다. 예를 들어 버튼의 선언 파일이나 내비게이션 바가 이에 해당합니다. 이 경우 콘텐츠가 자주 변경되지 않기 때문에 콘텐츠를 외부화하는 것은 의미가 없습니다.
37
37
 
38
- - '원격' 사전은 Intlayer CMS를 통해 관리되는 사전입니다. 이는 팀이 웹사이트에서 직접 콘텐츠를 관리할 수 있도록 하며, A/B 테스트 기능과 SEO 자동 최적화 기능을 활용하는 데에도 유용합니다.
38
+ - '원격' 사전은 Intlayer CMS를 통해 관리되는 사전입니다. 이는 팀이 웹사이트에서 직접 콘텐츠를 관리할 수 있도록 하며, 또한 A/B 테스트 기능과 SEO 자동 최적화를 활용하는 목적이 있습니다.
39
39
 
40
40
  ## 비주얼 에디터 vs CMS
41
41
 
42
- [Intlayer 비주얼](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_visual_editor.md) 에디터는 로컬 사전을 위한 비주얼 에디터에서 콘텐츠를 관리할 수 있는 도구입니다. 변경이 이루어지면 콘텐츠는 코드베이스에서 대체됩니다. 이는 애플리케이션이 다시 빌드되고 페이지가 새 콘텐츠를 표시하기 위해 다시 로드된다는 것을 의미합니다.
42
+ [Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_visual_editor.md) 에디터는 로컬 사전을 위한 시각적 편집기에서 콘텐츠를 관리할 수 있는 도구입니다. 변경이 이루어지면, 콘텐츠는 코드베이스에서 교체됩니다. 이는 애플리케이션이 재빌드되고 페이지가 새 콘텐츠를 표시하기 위해 다시 로드된다는 것을 의미합니다.
43
43
 
44
- 반면, Intlayer CMS는 원격 사전을 위한 비주얼 에디터에서 콘텐츠를 관리할 수 있는 도구입니다. 변경이 이루어지면 콘텐츠는 **코드베이스에 영향을 미치지 않습니다.** 그리고 웹사이트는 변경된 콘텐츠를 자동으로 표시합니다.
44
+ 반면에, Intlayer CMS는 원격 사전을 위한 시각적 편집기에서 콘텐츠를 관리할 수 있는 도구입니다. 변경이 이루어져도 콘텐츠는 코드베이스에 영향을 주지 않습니다. 그리고 웹사이트는 변경된 콘텐츠를 자동으로 표시합니다.
45
45
 
46
- ## 통합
46
+ ## 통합하기
47
47
 
48
48
  패키지 설치 방법에 대한 자세한 내용은 아래 관련 섹션을 참조하세요:
49
49
 
50
- ### Next.js와 통합
50
+ ### Next.js와 통합하기
51
51
 
52
- ### Next.js와 통합
52
+ Next.js와 통합하려면 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_15.md)를 참조하세요.
53
53
 
54
- Next.js와의 통합에 대해서는 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_nextjs_15.md)를 참조하세요.
54
+ ### Create React App과 통합하기
55
55
 
56
- ### Create React App과 통합
56
+ Create React App과 통합하려면 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_create_react_app.md)를 참조하세요.
57
57
 
58
- Create React App과의 통합에 대해서는 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_create_react_app.md)를 참조하세요.
58
+ ### Vite + React와 통합하기
59
59
 
60
- ### Vite + React와 통합
60
+ Vite + React와 통합하려면 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_vite+react.md)를 참조하세요.
61
61
 
62
- Vite + React와의 통합에 대해서는 [설치 가이드](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/intlayer_with_vite+react.md)를 참조하세요.
62
+ ## 구성
63
63
 
64
- ## 설정
65
-
66
- Intlayer 설정 파일에서 CMS 설정을 사용자 정의할 수 있습니다:
64
+ Intlayer 구성 파일에서 CMS 설정을 사용자 정의할 수 있습니다:
67
65
 
68
66
  ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
69
67
  import type { IntlayerConfig } from "intlayer";
70
68
 
71
69
  const config: IntlayerConfig = {
72
- // ... 다른 설정
70
+ // ... 기타 구성 설정
73
71
  editor: {
74
72
  /**
75
73
  * 필수
76
74
  *
77
75
  * 애플리케이션의 URL입니다.
78
- * 이는 비주얼 에디터가 타겟팅하는 URL입니다.
76
+ * URL은 시각적 편집기가 대상으로 하는 URL입니다.
79
77
  */
80
78
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
81
79
 
82
80
  /**
83
81
  * 필수
84
82
  *
85
- * 클라이언트 ID와 클라이언트 비밀 키는 에디터를 활성화하는 데 필요합니다.
86
- * 이는 콘텐츠를 편집하는 사용자를 식별할 수 있도록 합니다.
83
+ * 편집기를 활성화하려면 클라이언트 ID와 클라이언트 시크릿이 필요합니다.
84
+ * 이를 통해 콘텐츠를 편집하는 사용자를 식별할 수 있습니다.
87
85
  * Intlayer 대시보드 - 프로젝트(https://intlayer.org/dashboard/projects)에서 새 클라이언트를 생성하여 얻을 수 있습니다.
88
86
  * clientId: process.env.INTLAYER_CLIENT_ID,
89
87
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
@@ -94,20 +92,20 @@ const config: IntlayerConfig = {
94
92
  /**
95
93
  * 선택 사항
96
94
  *
97
- * Intlayer CMS를 자체 호스팅하는 경우 CMS의 URL을 설정할 수 있습니다.
95
+ * Intlayer CMS를 자체 호스팅하는 경우, CMS의 URL을 설정할 수 있습니다.
98
96
  *
99
97
  * Intlayer CMS의 URL입니다.
100
- * 기본값은 https://intlayer.org로 설정됩니다.
98
+ * 기본값은 https://intlayer.org 설정되어 있습니다.
101
99
  */
102
100
  cmsURL: process.env.INTLAYER_CMS_URL,
103
101
 
104
102
  /**
105
103
  * 선택 사항
106
104
  *
107
- * Intlayer CMS를 자체 호스팅하는 경우 백엔드의 URL을 설정할 수 있습니다.
105
+ * Intlayer CMS를 자체 호스팅하는 경우, 백엔드의 URL을 설정할 수 있습니다.
108
106
  *
109
- * Intlayer 백엔드의 URL입니다.
110
- * 기본값은 https://back.intlayer.org로 설정됩니다.
107
+ * Intlayer CMS의 백엔드 URL입니다.
108
+ * 기본값은 https://back.intlayer.org 설정되어 있습니다.
111
109
  */
112
110
  backendURL: process.env.INTLAYER_BACKEND_URL,
113
111
  },
@@ -119,21 +117,21 @@ export default config;
119
117
  ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
120
118
  /** @type {import('intlayer').IntlayerConfig} */
121
119
  const config = {
122
- // ... 다른 설정
120
+ // ... 기타 구성 설정
123
121
  editor: {
124
122
  /**
125
123
  * 필수
126
124
  *
127
125
  * 애플리케이션의 URL입니다.
128
- * 이는 비주얼 에디터가 타겟팅하는 URL입니다.
126
+ * URL은 시각적 편집기가 대상으로 하는 URL입니다.
129
127
  */
130
128
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
131
129
 
132
130
  /**
133
131
  * 필수
134
132
  *
135
- * 클라이언트 ID와 클라이언트 비밀 키는 에디터를 활성화하는 데 필요합니다.
136
- * 이는 콘텐츠를 편집하는 사용자를 식별할 수 있도록 합니다.
133
+ * 편집기를 활성화하려면 클라이언트 ID와 클라이언트 시크릿이 필요합니다.
134
+ * 이를 통해 콘텐츠를 편집하는 사용자를 식별할 수 있습니다.
137
135
  * Intlayer 대시보드 - 프로젝트(https://intlayer.org/dashboard/projects)에서 새 클라이언트를 생성하여 얻을 수 있습니다.
138
136
  * clientId: process.env.INTLAYER_CLIENT_ID,
139
137
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
@@ -147,7 +145,7 @@ const config = {
147
145
  * Intlayer CMS를 자체 호스팅하는 경우 CMS의 URL을 설정할 수 있습니다.
148
146
  *
149
147
  * Intlayer CMS의 URL입니다.
150
- * 기본값은 https://intlayer.org로 설정됩니다.
148
+ * 기본값은 https://intlayer.org 설정되어 있습니다.
151
149
  */
152
150
  cmsURL: process.env.INTLAYER_CMS_URL,
153
151
 
@@ -156,8 +154,8 @@ const config = {
156
154
  *
157
155
  * Intlayer CMS를 자체 호스팅하는 경우 백엔드의 URL을 설정할 수 있습니다.
158
156
  *
159
- * Intlayer 백엔드의 URL입니다.
160
- * 기본값은 https://back.intlayer.org로 설정됩니다.
157
+ * Intlayer CMS의 URL입니다.
158
+ * 기본값은 https://back.intlayer.org 설정되어 있습니다.
161
159
  */
162
160
  backendURL: process.env.INTLAYER_BACKEND_URL,
163
161
  },
@@ -169,21 +167,21 @@ export default config;
169
167
  ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
170
168
  /** @type {import('intlayer').IntlayerConfig} */
171
169
  const config = {
172
- // ... 다른 설정
170
+ // ... 기타 구성 설정
173
171
  editor: {
174
172
  /**
175
173
  * 필수
176
174
  *
177
175
  * 애플리케이션의 URL입니다.
178
- * 이는 비주얼 에디터가 타겟팅하는 URL입니다.
176
+ * 시각적 편집기가 대상으로 하는 URL입니다.
179
177
  */
180
178
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
181
179
 
182
180
  /**
183
181
  * 필수
184
182
  *
185
- * 클라이언트 ID와 클라이언트 비밀 키는 에디터를 활성화하는 데 필요합니다.
186
- * 이는 콘텐츠를 편집하는 사용자를 식별할 수 있도록 합니다.
183
+ * 에디터를 활성화하려면 클라이언트 ID와 클라이언트 시크릿이 필요합니다.
184
+ * 이를 통해 콘텐츠를 편집하는 사용자를 식별할 수 있습니다.
187
185
  * Intlayer 대시보드 - 프로젝트(https://intlayer.org/dashboard/projects)에서 새 클라이언트를 생성하여 얻을 수 있습니다.
188
186
  * clientId: process.env.INTLAYER_CLIENT_ID,
189
187
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
@@ -197,16 +195,17 @@ const config = {
197
195
  * Intlayer CMS를 자체 호스팅하는 경우 CMS의 URL을 설정할 수 있습니다.
198
196
  *
199
197
  * Intlayer CMS의 URL입니다.
200
- * 기본값은 https://intlayer.org로 설정됩니다.
198
+ * 기본값은 https://intlayer.org 설정되어 있습니다.
199
+ */
201
200
  cmsURL: process.env.INTLAYER_CMS_URL,
202
201
 
203
202
  /**
204
203
  * 선택 사항
205
204
  *
206
- * Intlayer CMS를 자체 호스팅하는 경우 백엔드의 URL을 설정할 수 있습니다.
205
+ * Intlayer CMS를 자체 호스팅하는 경우 백엔드 URL을 설정할 수 있습니다.
207
206
  *
208
207
  * Intlayer CMS의 URL입니다.
209
- * 기본값은 https://back.intlayer.org로 설정됩니다.
208
+ * 기본값은 https://back.intlayer.org 설정되어 있습니다.
210
209
  */
211
210
  backendURL: process.env.INTLAYER_BACKEND_URL,
212
211
  },
@@ -215,73 +214,88 @@ const config = {
215
214
  module.exports = config;
216
215
  ```
217
216
 
218
- > 클라이언트 ID와 클라이언트 비밀 키가 없는 경우, [Intlayer 대시보드 - 프로젝트](https://intlayer.org/dashboard/projects)에서 새 클라이언트를 생성하여 얻을 수 있습니다.
217
+ > 클라이언트 ID와 클라이언트 시크릿이 없는 경우, [Intlayer 대시보드 - 프로젝트](https://intlayer.org/dashboard/projects)에서 새 클라이언트를 생성하여 얻을 수 있습니다.
219
218
 
220
- > 사용 가능한 모든 매개변수를 보려면 [설정 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
219
+ > 사용 가능한 모든 매개변수를 확인하려면 [구성 문서](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/configuration.md)를 참조하세요.
221
220
 
222
221
  ## CMS 사용하기
223
222
 
224
- ### 설정 푸시하기
223
+ ### 구성 푸시하기
225
224
 
226
- Intlayer CMS를 설정하려면 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ko/intlayer_cli.md) 명령어를 사용할 수 있습니다.
225
+ Intlayer CMS를 구성하려면 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ko/intlayer_cli.md) 명령어를 사용할 수 있습니다.
227
226
 
228
227
  ```bash
229
228
  npx intlayer config push
230
229
  ```
231
230
 
232
- > `intlayer.config.ts` 설정 파일에서 환경 변수를 사용하는 경우, `--env` 인수를 사용하여 원하는 환경을 지정할 수 있습니다:
231
+ > `intlayer.config.ts` 구성 파일에서 환경 변수를 사용하는 경우, `--env` 인수를 사용하여 원하는 환경을 지정할 수 있습니다:
233
232
 
234
233
  ```bash
235
234
  npx intlayer config push --env production
236
235
  ```
237
236
 
238
- 명령은 설정을 Intlayer CMS에 업로드합니다.
237
+ 명령어는 구성을 Intlayer CMS에 업로드합니다.
239
238
 
240
239
  ### 사전 푸시하기
241
240
 
242
- 로컬 사전을 원격 사전으로 변환하려면 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ko/intlayer_cli.md) 명령어를 사용할 수 있습니다.
241
+ 로케일 사전을 원격 사전으로 변환하려면 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ko/intlayer_cli.md) 명령어를 사용할 수 있습니다.
243
242
 
244
243
  ```bash
245
244
  npx intlayer dictionary push -d my-first-dictionary-key
246
245
  ```
247
246
 
248
- > `intlayer.config.ts` 설정 파일에서 환경 변수를 사용하는 경우, `--env` 인수를 사용하여 원하는 환경을 지정할 수 있습니다:
247
+ > `intlayer.config.ts` 구성 파일에서 환경 변수를 사용하는 경우 `--env` 인수를 사용하여 원하는 환경을 지정할 수 있습니다:
249
248
 
250
249
  ```bash
251
250
  npx intlayer dictionary push -d my-first-dictionary-key --env production
252
251
  ```
253
252
 
254
- 이 명령은 초기 콘텐츠 사전을 업로드하여 Intlayer 플랫폼을 통해 비동기적으로 가져오고 편집할 수 있도록 만듭니다.
253
+ 이 명령은 초기 콘텐츠 사전을 업로드하여 Intlayer 플랫폼을 통해 비동기적으로 가져오고 편집할 수 있도록 합니다.
255
254
 
256
- ### 사전 편집하기
255
+ ### 사전 편집
257
256
 
258
257
  그런 다음 [Intlayer CMS](https://intlayer.org/dashboard/content)에서 사전을 보고 관리할 수 있습니다.
259
258
 
260
- ## 리로딩
259
+ ## 라이브 동기화
261
260
 
262
- Intlayer CMS 변경 사항이 감지되면 사전을 리로드할 있습니다.
261
+ 라이브 동기화는 앱이 런타임에 CMS 콘텐츠 변경 사항을 반영할 있게 합니다. 재빌드나 재배포가 필요 없습니다. 활성화되면 업데이트가 라이브 동기화 서버로 스트리밍되어 애플리케이션이 읽는 사전을 갱신합니다.
263
262
 
264
- 리로딩 없이 콘텐츠를 표시하려면 애플리케이션을 다시 빌드해야 합니다.
265
- [`liveSync`](https://intlayer.org/doc/concept/configuration#editor-configuration) 설정을 활성화하면 변경된 콘텐츠가 감지될 때 애플리케이션이 자동으로 업데이트된 콘텐츠를 대체합니다.
263
+ > Live Sync는 지속적인 서버 연결이 필요하며 엔터프라이즈 플랜에서만 사용할 수 있습니다.
264
+
265
+ Intlayer 구성을 업데이트하여 Live Sync를 활성화하세요:
266
266
 
267
267
  ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
268
268
  import type { IntlayerConfig } from "intlayer";
269
269
 
270
270
  const config: IntlayerConfig = {
271
- // ... 다른 설정
271
+ // ... 기타 구성 설정
272
272
  editor: {
273
- // ... 다른 설정
274
-
275
273
  /**
276
- * 애플리케이션이 변경 사항이 감지될 로컬 설정을 리로드해야 하는지 여부를 나타냅니다.
277
- * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이 페이지에 표시할 콘텐츠를 업데이트합니다.
274
+ * 변경 사항이 감지되면 로케일 구성을리로딩할 있도록 활성화합니다.
275
+ * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이
276
+ * 페이지에 표시되는 콘텐츠를 업데이트합니다.
278
277
  *
279
- * 핫 리로딩은 서버와의 지속적인 연결이 필요하기 때문에 `enterprise` 플랜의 클라이언트만 사용할 수 있습니다.
278
+ * 핫 리로딩은 서버와의 지속적인 연결이 필요하기 때문에,
279
+ * `enterprise` 플랜 고객에게만 제공됩니다.
280
280
  *
281
281
  * 기본값: false
282
282
  */
283
283
  liveSync: true,
284
284
  },
285
+ build: {
286
+ /**
287
+ * 사전이 어떻게 가져오는지를 제어합니다:
288
+ *
289
+ * - "live": 사전은 Live Sync API를 사용하여 동적으로 가져옵니다.
290
+ * useIntlayer를 useDictionaryDynamic으로 대체합니다.
291
+ *
292
+ * 참고: 라이브 모드는 Live Sync API를 사용하여 사전을 가져옵니다. API 호출이
293
+ * 실패하면 사전은 동적으로 가져옵니다.
294
+ * 참고: 원격 콘텐츠가 있고 "live" 플래그가 있는 사전만 라이브 모드를 사용합니다.
295
+ * 나머지는 성능을 위해 동적 모드를 사용합니다.
296
+ */
297
+ importMode: "live",
298
+ },
285
299
  };
286
300
 
287
301
  export default config;
@@ -290,20 +304,34 @@ export default config;
290
304
  ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
291
305
  /** @type {import('intlayer').IntlayerConfig} */
292
306
  const config = {
293
- // ... 다른 설정
307
+ // ... 기타 구성 설정
294
308
  editor: {
295
- // ... 다른 설정
296
-
297
309
  /**
298
- * 애플리케이션이 변경 사항이 감지될 로컬 설정을 리로드해야 하는지 여부를 나타냅니다.
299
- * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이 페이지에 표시할 콘텐츠를 업데이트합니다.
310
+ * 변경 사항이 감지되면 로케일 구성을리로딩할 있도록 활성화합니다.
311
+ * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이 페이지에 표시되는
312
+ * 콘텐츠를 업데이트합니다.
300
313
  *
301
- * 핫 리로딩은 서버와의 지속적인 연결이 필요하기 때문에 `enterprise` 플랜의 클라이언트만 사용할 수 있습니다.
314
+ * 핫 리로딩은 서버와의 지속적인 연결이 필요하므로,
315
+ * `enterprise` 플랜 클라이언트에서만 사용할 수 있습니다.
302
316
  *
303
317
  * 기본값: false
304
318
  */
305
319
  liveSync: true,
306
320
  },
321
+ build: {
322
+ /**
323
+ * 사전이 어떻게 가져와지는지 제어합니다:
324
+ *
325
+ * - "live": 사전이 Live Sync API를 사용하여 동적으로 가져와집니다.
326
+ * useIntlayer를 useDictionaryDynamic으로 대체합니다.
327
+ *
328
+ * 참고: 라이브 모드는 Live Sync API를 사용하여 사전을 가져옵니다. API 호출이
329
+ * 실패하면 사전은 동적으로 가져와집니다.
330
+ * 참고: 원격 콘텐츠가 있고 "live" 플래그가 설정된 사전만 라이브 모드를 사용합니다.
331
+ * 나머지는 성능을 위해 동적 모드를 사용합니다.
332
+ */
333
+ importMode: "live",
334
+ },
307
335
  };
308
336
 
309
337
  export default config;
@@ -312,45 +340,191 @@ export default config;
312
340
  ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
313
341
  /** @type {import('intlayer').IntlayerConfig} */
314
342
  const config = {
315
- // ... 다른 설정
343
+ // ... 기타 구성 설정
316
344
  editor: {
317
- // ... 다른 설정
318
-
319
345
  /**
320
- * 애플리케이션이 변경 사항이 감지될 로컬 설정을 리로드해야 하는지 여부를 나타냅니다.
321
- * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이 페이지에 표시할 콘텐츠를 업데이트합니다.
346
+ * 변경 사항이 감지되면 로케일 구성을리로딩할 있습니다.
347
+ * 예를 들어, 사전이 추가되거나 업데이트되면 애플리케이션이
348
+ * 페이지에 표시되는 내용을 업데이트합니다.
322
349
  *
323
- * 핫 리로딩은 서버와의 지속적인 연결이 필요하기 때문에 `enterprise` 플랜의 클라이언트만 사용할 수 있습니다.
350
+ * 핫 리로딩은 서버와의 지속적인 연결이 필요하기 때문에,
351
+ * `enterprise` 플랜 클라이언트에서만 사용할 수 있습니다.
324
352
  *
325
353
  * 기본값: false
326
354
  */
327
355
  liveSync: true,
356
+
357
+ /**
358
+ * Live Sync 서버의 포트입니다.
359
+ *
360
+ * 기본값: 4000
361
+ */
362
+ liveSyncPort: 4000,
363
+
364
+ /**
365
+ * Live Sync 서버의 URL입니다.
366
+ *
367
+ * 기본값: http://localhost:{liveSyncPort}
368
+ */
369
+ liveSyncURL: "https://live.example.com",
370
+ },
371
+ build: {
372
+ /**
373
+ * 사전이 어떻게 임포트되는지 제어합니다:
374
+ *
375
+ * - "live": 사전은 Live Sync API를 사용하여 동적으로 가져옵니다.
376
+ * useIntlayer를 useDictionaryDynamic으로 대체합니다.
377
+ *
378
+ * 참고: 라이브 모드는 Live Sync API를 사용하여 사전을 가져옵니다. API 호출이 실패하면
379
+ * 사전은 동적으로 임포트됩니다.
380
+ * 참고: 원격 콘텐츠와 "live" 플래그가 있는 사전만 라이브 모드를 사용합니다.
381
+ * 다른 사전은 성능을 위해 동적 모드를 사용합니다.
382
+ */
383
+ importMode: "live",
328
384
  },
329
385
  };
330
386
 
331
387
  module.exports = config;
332
388
  ```
333
389
 
334
- 리로딩은 서버와 클라이언트 양쪽에서 콘텐츠를 교체합니다.
390
+ 애플리케이션을 감싸기 위해 Live Sync 서버를 시작하세요:
391
+
392
+ Next.js 사용 예시:
393
+
394
+ ```json5 fileName="package.json"
395
+ {
396
+ "scripts": {
397
+ // ... 다른 스크립트들
398
+ "build": "next build",
399
+ "dev": "next dev",
400
+ "start": "npx intlayer live --process 'next start'",
401
+ },
402
+ }
403
+ ```
404
+
405
+ Vite 사용 예시:
406
+
407
+ ```json5 fileName="package.json"
408
+ {
409
+ "scripts": {
410
+ // ... 다른 스크립트들
411
+ "build": "vite build",
412
+ "dev": "vite dev",
413
+ "start": "npx intlayer live --process 'vite start'",
414
+ },
415
+ }
416
+ ```
417
+
418
+ Live Sync 서버는 애플리케이션을 감싸고 도착하는 업데이트된 콘텐츠를 자동으로 적용합니다.
419
+
420
+ CMS로부터 변경 알림을 받기 위해, Live Sync 서버는 백엔드와 SSE 연결을 유지합니다. CMS에서 콘텐츠가 변경되면, 백엔드는 업데이트를 Live Sync 서버로 전달하고, Live Sync 서버는 새로운 사전을 기록합니다. 애플리케이션은 다음 탐색 또는 브라우저 새로고침 시 업데이트를 반영하며, 재빌드가 필요하지 않습니다.
421
+
422
+ 플로우 차트 (CMS/백엔드 -> Live Sync 서버 -> 애플리케이션 서버 -> 프론트엔드):
423
+
424
+ ![Live Sync Logic Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
425
+
426
+ 작동 방식:
427
+
428
+ ![Live Sync Flow CMS/Backend/Live Sync Server/Application Server/Frontend Schema](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
335
429
 
336
- - 서버 측에서는 애플리케이션 프로세스가 `.intlayer/dictionaries` 디렉토리에 쓰기 권한이 있는지 확인해야 합니다.
337
- - 클라이언트 측에서는 핫 리로딩을 통해 페이지를 다시 로드하지 않고도 브라우저에서 콘텐츠를 핫 리로드할 수 있습니다. 그러나 이 기능은 클라이언트 컴포넌트에서만 사용할 수 있습니다.
338
- > 리로딩은 `EventListener`를 사용하여 서버와의 지속적인 연결이 필요하기 때문에 `enterprise` 플랜의 클라이언트만 사용할 수 있습니다.
430
+ ### 개발 워크플로우 (로컬)
431
+
432
+ - 개발 중에는 애플리케이션이 시작될 모든 원격 사전을 가져오므로 업데이트를 빠르게 테스트할 수 있습니다.
433
+ - Next.js로 로컬에서 Live Sync를 테스트하려면 개발 서버를 래핑하세요:
434
+
435
+ ```json5 fileName="package.json"
436
+ {
437
+ "scripts": {
438
+ // ... 다른 스크립트
439
+ "dev": "npx intlayer live --process 'next dev'",
440
+ // "dev": "npx intlayer live --process 'vite dev'", // Vite용
441
+ },
442
+ }
443
+ ```
444
+
445
+ 개발 중에 Intlayer가 Live import 변환을 적용하도록 최적화를 활성화하세요:
446
+
447
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
448
+ import type { IntlayerConfig } from "intlayer";
449
+
450
+ const config: IntlayerConfig = {
451
+ editor: {
452
+ applicationURL: "http://localhost:5173",
453
+ liveSyncURL: "http://localhost:4000",
454
+ liveSync: true,
455
+ },
456
+ build: {
457
+ optimize: true,
458
+ importMode: "live",
459
+ },
460
+ };
461
+
462
+ export default config;
463
+ ```
464
+
465
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
466
+ /** @type {import('intlayer').IntlayerConfig} */
467
+ const config = {
468
+ editor: {
469
+ applicationURL: "http://localhost:5173",
470
+ liveSyncURL: "http://localhost:4000",
471
+ liveSync: true,
472
+ },
473
+ build: {
474
+ optimize: true,
475
+ importMode: "live",
476
+ },
477
+ };
478
+
479
+ export default config;
480
+ ```
481
+
482
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
483
+ /** @type {import('intlayer').IntlayerConfig} */
484
+ const config = {
485
+ editor: {
486
+ applicationURL: "http://localhost:5173",
487
+ liveSyncURL: "http://localhost:4000",
488
+ liveSync: true,
489
+ },
490
+ build: {
491
+ optimize: true,
492
+ importMode: "live",
493
+ },
494
+ };
495
+
496
+ module.exports = config;
497
+ ```
498
+
499
+ 이 설정은 개발 서버를 Live Sync 서버와 래핑하고, 시작 시 원격 사전을 가져오며, CMS에서 SSE를 통해 업데이트를 스트리밍합니다. 변경 사항을 보려면 페이지를 새로 고치세요.
500
+
501
+ 참고 사항 및 제약 조건:
502
+
503
+ - 라이브 싱크 출처를 사이트 보안 정책(CSP)에 추가하세요. 라이브 싱크 URL이 `connect-src`(및 관련이 있다면 `frame-ancestors`)에 허용되어 있는지 확인하세요.
504
+ - 라이브 싱크는 정적 출력과 함께 작동하지 않습니다. Next.js의 경우, 런타임에 업데이트를 받으려면 페이지가 동적이어야 합니다(예: 전체 정적 전용 제약을 피하기 위해 `generateStaticParams`, `generateMetadata`, `getServerSideProps` 또는 `getStaticProps`를 적절히 사용).
505
+ - CMS에서 각 사전에는 `live` 플래그가 있습니다. `live=true`인 사전만 라이브 싱크 API를 통해 가져오며, 나머지는 동적으로 가져와 런타임에 변경되지 않습니다.
506
+ - `live` 플래그는 빌드 시 각 사전에 대해 평가됩니다. 빌드 시 원격 콘텐츠가 `live=true`로 표시되지 않았다면, 해당 사전에 대해 라이브 싱크를 활성화하려면 다시 빌드해야 합니다.
507
+ - 라이브 싱크 서버는 `.intlayer`에 쓸 수 있어야 합니다. 컨테이너 환경에서는 `/.intlayer`에 쓰기 권한이 있는지 확인하세요.
339
508
 
340
509
  ## 디버그
341
510
 
342
- CMS에서 문제가 발생한 경우 다음을 확인하세요:
511
+ CMS에서 문제가 발생하면 다음을 확인하세요:
343
512
 
344
- - 애플리케이션이 실행 중인지 확인합니다.
513
+ - 애플리케이션이 실행 중인지 확인하세요.
345
514
 
346
- - Intlayer 설정 파일에서 [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) 설정이 올바르게 설정되었는지 확인합니다.
515
+ - [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) 설정이 Intlayer 구성 파일에 올바르게 설정되어 있는지 확인하세요.
347
516
  - 필수 필드:
348
- - 애플리케이션 URL은 에디터 설정(`applicationURL`)에 설정한 URL과 일치해야 합니다.
349
- - CMS URL
517
+ - 애플리케이션 URL은 에디터 구성(`applicationURL`)에 설정한 값과 일치해야 합니다.
518
+ - CMS URL
519
+
520
+ - 프로젝트 구성이 Intlayer CMS에 푸시되었는지 확인하세요.
350
521
 
351
- - 프로젝트 설정이 Intlayer CMS 푸시되었는지 확인합니다.
352
- - 비주얼 에디터는 iframe을 사용하여 웹사이트를 표시합니다. 웹사이트의 콘텐츠 보안 정책(CSP)이 CMS URL을 `frame-ancestors`로 허용하는지 확인하세요(기본값: 'https://intlayer.org'). 에디터 콘솔에서 오류를 확인하세요.
522
+ - 비주얼 에디터는 iframe을 사용하여 웹사이트를 표시합니다. 웹사이트의 콘텐츠 보안 정책(CSP)이 CMS URL을 `frame-ancestors`로 허용하는지 확인하세요(기본값은 'https://intlayer.org'). 에디터 콘솔에서 오류가 있는지 확인하세요.
353
523
 
354
524
  ## 문서 이력
355
525
 
356
- - 5.5.10 - 2025-06-29: 초기 이력 작성
526
+ | 버전 | 날짜 | 변경 사항 |
527
+ | ------ | ---------- | ------------------------------------ |
528
+ | 6.0.1 | 2025-09-22 | 라이브 동기화 문서 추가 |
529
+ | 6.0.0 | 2025-09-04 | `hotReload` 필드를 `liveSync`로 교체 |
530
+ | 5.5.10 | 2025-06-29 | 이력 초기화 |