@intlayer/docs 6.0.0 → 6.0.2-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +6 -5
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +318 -1863
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +1317 -6282
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +197 -1182
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +43 -84
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +2 -5
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +318 -1863
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +1317 -6282
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +197 -1182
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +43 -84
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/blog.d.ts +1 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/common.d.ts +1 -1
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -1
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +2 -1
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts +1 -1
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
- package/dist/types/generated/legal.entry.d.ts +1 -1
- package/dist/types/generated/legal.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_CMS.md +261 -85
- package/docs/ar/releases/v6.md +273 -0
- package/docs/ar/roadmap.md +1 -3
- package/docs/ar/vs_code_extension.md +94 -63
- package/docs/de/intlayer_CMS.md +247 -65
- package/docs/de/releases/v6.md +298 -0
- package/docs/de/roadmap.md +1 -3
- package/docs/de/vs_code_extension.md +89 -58
- package/docs/en/configuration.md +9 -2
- package/docs/en/intlayer_CMS.md +205 -23
- package/docs/en/intlayer_cli.md +4 -4
- package/docs/en/intlayer_visual_editor.md +7 -6
- package/docs/en/intlayer_with_nextjs_14.md +17 -1
- package/docs/en/intlayer_with_nextjs_15.md +17 -1
- package/docs/en/releases/v6.md +268 -0
- package/docs/en/roadmap.md +1 -3
- package/docs/en/vs_code_extension.md +79 -49
- package/docs/en-GB/intlayer_CMS.md +216 -52
- package/docs/en-GB/releases/v6.md +297 -0
- package/docs/en-GB/roadmap.md +1 -3
- package/docs/en-GB/vs_code_extension.md +79 -48
- package/docs/es/intlayer_CMS.md +257 -84
- package/docs/es/releases/v6.md +274 -0
- package/docs/es/roadmap.md +1 -3
- package/docs/es/vs_code_extension.md +90 -60
- package/docs/fr/intlayer_CMS.md +250 -68
- package/docs/fr/releases/v6.md +274 -0
- package/docs/fr/roadmap.md +1 -3
- package/docs/fr/vs_code_extension.md +94 -63
- package/docs/hi/intlayer_CMS.md +253 -77
- package/docs/hi/releases/v6.md +273 -0
- package/docs/hi/roadmap.md +1 -3
- package/docs/hi/vs_code_extension.md +92 -61
- package/docs/it/intlayer_CMS.md +251 -73
- package/docs/it/releases/v6.md +273 -0
- package/docs/it/roadmap.md +1 -3
- package/docs/it/vs_code_extension.md +94 -63
- package/docs/ja/intlayer_CMS.md +282 -97
- package/docs/ja/releases/v6.md +273 -0
- package/docs/ja/roadmap.md +1 -3
- package/docs/ja/vs_code_extension.md +99 -68
- package/docs/ko/intlayer_CMS.md +267 -93
- package/docs/ko/releases/v6.md +273 -0
- package/docs/ko/roadmap.md +1 -3
- package/docs/ko/vs_code_extension.md +88 -57
- package/docs/pt/intlayer_CMS.md +261 -83
- package/docs/pt/releases/v6.md +273 -0
- package/docs/pt/roadmap.md +1 -3
- package/docs/pt/vs_code_extension.md +89 -58
- package/docs/ru/intlayer_CMS.md +240 -65
- package/docs/ru/releases/v6.md +274 -0
- package/docs/ru/roadmap.md +1 -1
- package/docs/ru/vs_code_extension.md +83 -52
- package/docs/tr/intlayer_CMS.md +278 -96
- package/docs/tr/intlayer_with_nextjs_page_router.md +1 -1
- package/docs/tr/intlayer_with_tanstack.md +3 -0
- package/docs/tr/releases/v6.md +273 -0
- package/docs/tr/roadmap.md +1 -1
- package/docs/tr/vs_code_extension.md +100 -71
- package/docs/zh/intlayer_CMS.md +257 -76
- package/docs/zh/releases/v6.md +273 -0
- package/docs/zh/roadmap.md +1 -3
- package/docs/zh/vs_code_extension.md +99 -68
- package/package.json +9 -8
- package/src/blog.ts +1 -1
- package/src/common.ts +2 -6
- package/src/generated/blog.entry.ts +323 -1864
- package/src/generated/docs.entry.ts +1317 -6278
- package/src/generated/frequentQuestions.entry.ts +202 -1183
- package/src/generated/legal.entry.ts +48 -85
package/docs/zh/intlayer_CMS.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
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
|
|
@@ -19,11 +19,11 @@ slugs:
|
|
|
19
19
|
youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
# Intlayer
|
|
22
|
+
# Intlayer 内容管理系统(CMS)文档
|
|
23
23
|
|
|
24
|
-
<iframe title="
|
|
24
|
+
<iframe title="适用于您的 Web 应用的可视化编辑器 + 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&origin=http://intlayer.org&controls=0&rel=1"/>
|
|
25
25
|
|
|
26
|
-
Intlayer CMS
|
|
26
|
+
Intlayer CMS 是一个应用程序,允许您将 Intlayer 项目的内容外部化。
|
|
27
27
|
|
|
28
28
|
为此,Intlayer 引入了“远程字典”的概念。
|
|
29
29
|
|
|
@@ -33,31 +33,31 @@ Intlayer CMS 是一个允许您将 Intlayer 项目的内容外部化的应用程
|
|
|
33
33
|
|
|
34
34
|
Intlayer 区分“本地”字典和“远程”字典。
|
|
35
35
|
|
|
36
|
-
- “本地”字典是指在您的 Intlayer
|
|
36
|
+
- “本地”字典是指在您的 Intlayer 项目中声明的字典。例如按钮的声明文件,或您的导航栏。在这种情况下,将内容外部化没有意义,因为这些内容通常不需要频繁更改。
|
|
37
37
|
|
|
38
|
-
- “远程”字典是通过 Intlayer CMS
|
|
38
|
+
- “远程”字典是通过 Intlayer CMS 管理的字典。它可以让您的团队直接在网站上管理内容,同时也支持使用 A/B 测试功能和 SEO 自动优化。
|
|
39
39
|
|
|
40
40
|
## 可视化编辑器与 CMS
|
|
41
41
|
|
|
42
|
-
[Intlayer
|
|
42
|
+
[Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md) 编辑器是一个工具,允许您在本地字典的可视化编辑器中管理内容。一旦进行更改,内容将被替换到代码库中。这意味着应用程序将被重新构建,页面将重新加载以显示新内容。
|
|
43
43
|
|
|
44
|
-
相比之下,Intlayer CMS
|
|
44
|
+
相比之下,Intlayer CMS 是一个工具,允许您在远程字典的可视化编辑器中管理内容。一旦进行更改,内容将**不会**影响您的代码库。网站将自动显示更改后的内容。
|
|
45
45
|
|
|
46
46
|
## 集成
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
有关如何安装该包的更多详细信息,请参阅下面的相关部分:
|
|
49
49
|
|
|
50
50
|
### 与 Next.js 集成
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
对于与 Next.js 的集成,请参阅[安装指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_nextjs_15.md)。
|
|
53
53
|
|
|
54
54
|
### 与 Create React App 集成
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
对于与 Create React App 的集成,请参阅[安装指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_create_react_app.md)。
|
|
57
57
|
|
|
58
58
|
### 与 Vite + React 集成
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
对于与 Vite + React 的集成,请参阅[安装指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_vite+react.md)。
|
|
61
61
|
|
|
62
62
|
## 配置
|
|
63
63
|
|
|
@@ -70,19 +70,19 @@ const config: IntlayerConfig = {
|
|
|
70
70
|
// ... 其他配置设置
|
|
71
71
|
editor: {
|
|
72
72
|
/**
|
|
73
|
-
*
|
|
73
|
+
* 必填
|
|
74
74
|
*
|
|
75
75
|
* 应用程序的 URL。
|
|
76
|
-
*
|
|
76
|
+
* 这是可视化编辑器所针对的 URL。
|
|
77
77
|
*/
|
|
78
78
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* 必填
|
|
82
82
|
*
|
|
83
83
|
* 启用编辑器需要客户端 ID 和客户端密钥。
|
|
84
84
|
* 它们用于识别正在编辑内容的用户。
|
|
85
|
-
* 可以通过在 Intlayer
|
|
85
|
+
* 可以通过在 Intlayer 控制面板 - 项目 (https://intlayer.org/dashboard/projects) 中创建新客户端来获取。
|
|
86
86
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
87
87
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
88
88
|
*/
|
|
@@ -92,20 +92,20 @@ const config: IntlayerConfig = {
|
|
|
92
92
|
/**
|
|
93
93
|
* 可选
|
|
94
94
|
*
|
|
95
|
-
* 如果您自行托管 Intlayer CMS
|
|
95
|
+
* 如果您自行托管 Intlayer CMS,您可以设置 CMS 的 URL。
|
|
96
96
|
*
|
|
97
97
|
* Intlayer CMS 的 URL。
|
|
98
|
-
*
|
|
98
|
+
* 默认情况下,设置为 https://intlayer.org
|
|
99
99
|
*/
|
|
100
100
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
101
101
|
|
|
102
102
|
/**
|
|
103
103
|
* 可选
|
|
104
104
|
*
|
|
105
|
-
* 如果您自行托管 Intlayer CMS
|
|
105
|
+
* 如果您自行托管 Intlayer CMS,您可以设置后端的 URL。
|
|
106
106
|
*
|
|
107
107
|
* Intlayer CMS 的 URL。
|
|
108
|
-
*
|
|
108
|
+
* 默认情况下,设置为 https://back.intlayer.org
|
|
109
109
|
*/
|
|
110
110
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
111
111
|
},
|
|
@@ -120,15 +120,15 @@ const config = {
|
|
|
120
120
|
// ... 其他配置设置
|
|
121
121
|
editor: {
|
|
122
122
|
/**
|
|
123
|
-
*
|
|
123
|
+
* 必填
|
|
124
124
|
*
|
|
125
125
|
* 应用程序的 URL。
|
|
126
|
-
*
|
|
126
|
+
* 这是可视化编辑器所针对的 URL。
|
|
127
127
|
*/
|
|
128
128
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
|
-
*
|
|
131
|
+
* 必填
|
|
132
132
|
*
|
|
133
133
|
* 启用编辑器需要客户端 ID 和客户端密钥。
|
|
134
134
|
* 它们用于识别正在编辑内容的用户。
|
|
@@ -145,7 +145,7 @@ const config = {
|
|
|
145
145
|
* 如果您自行托管 Intlayer CMS,可以设置 CMS 的 URL。
|
|
146
146
|
*
|
|
147
147
|
* Intlayer CMS 的 URL。
|
|
148
|
-
*
|
|
148
|
+
* 默认情况下,设置为 https://intlayer.org
|
|
149
149
|
*/
|
|
150
150
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
151
151
|
|
|
@@ -154,8 +154,8 @@ const config = {
|
|
|
154
154
|
*
|
|
155
155
|
* 如果您自行托管 Intlayer CMS,可以设置后端的 URL。
|
|
156
156
|
*
|
|
157
|
-
* Intlayer
|
|
158
|
-
*
|
|
157
|
+
* Intlayer CMS 的 URL。
|
|
158
|
+
* 默认情况下,设置为 https://back.intlayer.org
|
|
159
159
|
*/
|
|
160
160
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
161
161
|
},
|
|
@@ -170,19 +170,19 @@ const config = {
|
|
|
170
170
|
// ... 其他配置设置
|
|
171
171
|
editor: {
|
|
172
172
|
/**
|
|
173
|
-
*
|
|
173
|
+
* 必填
|
|
174
174
|
*
|
|
175
175
|
* 应用程序的 URL。
|
|
176
|
-
*
|
|
176
|
+
* 这是可视化编辑器所针对的 URL。
|
|
177
177
|
*/
|
|
178
178
|
applicationURL: process.env.INTLAYER_APPLICATION_URL,
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
|
-
*
|
|
181
|
+
* 必填
|
|
182
182
|
*
|
|
183
|
-
* 启用编辑器需要客户端
|
|
183
|
+
* 启用编辑器需要客户端ID和客户端密钥。
|
|
184
184
|
* 它们用于识别正在编辑内容的用户。
|
|
185
|
-
* 可以通过在 Intlayer
|
|
185
|
+
* 可以通过在 Intlayer 控制面板 - 项目 (https://intlayer.org/dashboard/projects) 中创建新客户端来获取。
|
|
186
186
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
187
187
|
* clientSecret: process.env.INTLAYER_CLIENT_SECRET,
|
|
188
188
|
*/
|
|
@@ -202,7 +202,7 @@ const config = {
|
|
|
202
202
|
/**
|
|
203
203
|
* 可选
|
|
204
204
|
*
|
|
205
|
-
* 如果您自行托管 Intlayer CMS
|
|
205
|
+
* 如果您自行托管 Intlayer CMS,您可以设置后端的 URL。
|
|
206
206
|
*
|
|
207
207
|
* Intlayer CMS 的 URL。
|
|
208
208
|
* 默认设置为 https://back.intlayer.org
|
|
@@ -214,55 +214,55 @@ const config = {
|
|
|
214
214
|
module.exports = config;
|
|
215
215
|
```
|
|
216
216
|
|
|
217
|
-
> 如果您没有客户端 ID 和客户端密钥,可以通过在
|
|
217
|
+
> 如果您没有客户端 ID 和客户端密钥,可以通过在[Intlayer 控制面板 - 项目](https://intlayer.org/dashboard/projects)中创建新客户端来获取。
|
|
218
218
|
|
|
219
|
-
>
|
|
219
|
+
> 要查看所有可用参数,请参考[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
|
|
220
220
|
|
|
221
221
|
## 使用 CMS
|
|
222
222
|
|
|
223
223
|
### 推送您的配置
|
|
224
224
|
|
|
225
|
-
要配置 Intlayer CMS,您可以使用
|
|
225
|
+
要配置 Intlayer CMS,您可以使用[intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/zh/intlayer_cli.md)命令。
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
228
|
npx intlayer config push
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
> 如果您在 `intlayer.config.ts`
|
|
231
|
+
> 如果您在 `intlayer.config.ts` 配置文件中使用了环境变量,可以通过 `--env` 参数指定所需的环境:
|
|
232
232
|
|
|
233
233
|
```bash
|
|
234
234
|
npx intlayer config push --env production
|
|
235
235
|
```
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
此命令会将您的配置上传到 Intlayer CMS。
|
|
238
238
|
|
|
239
239
|
### 推送字典
|
|
240
240
|
|
|
241
|
-
|
|
241
|
+
要将您的本地化字典转换为远程字典,您可以使用[intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/zh/intlayer_cli.md)命令。
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
244
|
npx intlayer dictionary push -d my-first-dictionary-key
|
|
245
245
|
```
|
|
246
246
|
|
|
247
|
-
> 如果您在 `intlayer.config.ts`
|
|
247
|
+
> 如果您在 `intlayer.config.ts` 配置文件中使用环境变量,可以使用 `--env` 参数指定所需的环境:
|
|
248
248
|
|
|
249
249
|
```bash
|
|
250
250
|
npx intlayer dictionary push -d my-first-dictionary-key --env production
|
|
251
251
|
```
|
|
252
252
|
|
|
253
|
-
|
|
253
|
+
此命令会上传您的初始内容字典,使其可通过 Intlayer 平台进行异步获取和编辑。
|
|
254
254
|
|
|
255
255
|
### 编辑字典
|
|
256
256
|
|
|
257
257
|
然后,您将能够在 [Intlayer CMS](https://intlayer.org/dashboard/content) 中查看和管理您的字典。
|
|
258
258
|
|
|
259
|
-
##
|
|
259
|
+
## 实时同步
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
实时同步让您的应用在运行时反映 CMS 内容的更改。无需重新构建或重新部署。启用后,更新会被流式传输到实时同步服务器,刷新您的应用读取的字典。
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
> 实时同步需要持续的服务器连接,并且仅在企业版计划中可用。
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
通过更新您的 Intlayer 配置来启用实时同步:
|
|
266
266
|
|
|
267
267
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
268
268
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -270,18 +270,31 @@ import type { IntlayerConfig } from "intlayer";
|
|
|
270
270
|
const config: IntlayerConfig = {
|
|
271
271
|
// ... 其他配置设置
|
|
272
272
|
editor: {
|
|
273
|
-
// ... 其他配置设置
|
|
274
|
-
|
|
275
273
|
/**
|
|
276
|
-
*
|
|
277
|
-
*
|
|
274
|
+
* 当检测到更改时,启用本地配置的热重载。
|
|
275
|
+
* 例如,当添加或更新字典时,应用程序会更新页面上显示的内容。
|
|
278
276
|
*
|
|
279
|
-
*
|
|
277
|
+
* 由于热重载需要与服务器保持持续连接,
|
|
278
|
+
* 因此仅对 `enterprise` 计划的客户开放。
|
|
280
279
|
*
|
|
281
280
|
* 默认值:false
|
|
282
281
|
*/
|
|
283
282
|
liveSync: true,
|
|
284
283
|
},
|
|
284
|
+
build: {
|
|
285
|
+
/**
|
|
286
|
+
* 控制字典的导入方式:
|
|
287
|
+
*
|
|
288
|
+
* - "live":字典通过 Live Sync API 动态获取。
|
|
289
|
+
* 替换 useIntlayer 为 useDictionaryDynamic。
|
|
290
|
+
*
|
|
291
|
+
* 注意:Live 模式使用 Live Sync API 获取字典。如果 API 调用失败,
|
|
292
|
+
* 字典将动态导入。
|
|
293
|
+
* 注意:只有带有远程内容和 "live" 标志的字典使用 live 模式。
|
|
294
|
+
* 其他字典为了性能使用动态模式。
|
|
295
|
+
*/
|
|
296
|
+
importMode: "live",
|
|
297
|
+
},
|
|
285
298
|
};
|
|
286
299
|
|
|
287
300
|
export default config;
|
|
@@ -292,18 +305,30 @@ export default config;
|
|
|
292
305
|
const config = {
|
|
293
306
|
// ... 其他配置设置
|
|
294
307
|
editor: {
|
|
295
|
-
// ... 其他配置设置
|
|
296
|
-
|
|
297
308
|
/**
|
|
298
|
-
*
|
|
299
|
-
*
|
|
309
|
+
* 当检测到更改时,启用本地配置的热重载。
|
|
310
|
+
* 例如,当添加或更新词典时,应用程序会更新页面上显示的内容。
|
|
300
311
|
*
|
|
301
|
-
*
|
|
312
|
+
* 由于热重载需要与服务器保持持续连接,因此仅对 `enterprise` 计划的客户可用。
|
|
302
313
|
*
|
|
303
314
|
* 默认值:false
|
|
304
315
|
*/
|
|
305
316
|
liveSync: true,
|
|
306
317
|
},
|
|
318
|
+
build: {
|
|
319
|
+
/**
|
|
320
|
+
* 控制词典的导入方式:
|
|
321
|
+
*
|
|
322
|
+
* - "live":词典通过 Live Sync API 动态获取。
|
|
323
|
+
* 用 useDictionaryDynamic 替代 useIntlayer。
|
|
324
|
+
*
|
|
325
|
+
* 注意:Live 模式使用 Live Sync API 获取词典。如果 API 调用失败,
|
|
326
|
+
* 词典将动态导入。
|
|
327
|
+
* 注意:只有带有远程内容且标记为“live”的词典才使用实时模式。
|
|
328
|
+
* 其他词典为了性能考虑使用动态模式。
|
|
329
|
+
*/
|
|
330
|
+
importMode: "live",
|
|
331
|
+
},
|
|
307
332
|
};
|
|
308
333
|
|
|
309
334
|
export default config;
|
|
@@ -314,43 +339,199 @@ export default config;
|
|
|
314
339
|
const config = {
|
|
315
340
|
// ... 其他配置设置
|
|
316
341
|
editor: {
|
|
317
|
-
// ... 其他配置设置
|
|
318
|
-
|
|
319
342
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
343
|
+
* 当检测到更改时,启用本地配置的热重载。
|
|
344
|
+
* 例如,当添加或更新词典时,应用程序会更新页面上显示的内容。
|
|
322
345
|
*
|
|
323
|
-
*
|
|
346
|
+
* 由于热重载需要与服务器保持持续连接,
|
|
347
|
+
* 因此仅对 `enterprise` 计划的客户端可用。
|
|
324
348
|
*
|
|
325
349
|
* 默认值:false
|
|
326
350
|
*/
|
|
327
351
|
liveSync: true,
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Live Sync 服务器的端口。
|
|
355
|
+
*
|
|
356
|
+
* 默认值:4000
|
|
357
|
+
*/
|
|
358
|
+
liveSyncPort: 4000,
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Live Sync 服务器的 URL。
|
|
362
|
+
*
|
|
363
|
+
* 默认值:http://localhost:{liveSyncPort}
|
|
364
|
+
*/
|
|
365
|
+
liveSyncURL: "https://live.example.com",
|
|
366
|
+
},
|
|
367
|
+
build: {
|
|
368
|
+
/**
|
|
369
|
+
* 控制字典的导入方式:
|
|
370
|
+
*
|
|
371
|
+
* - "live":使用 Live Sync API 动态获取字典。
|
|
372
|
+
* 替换 useIntlayer 为 useDictionaryDynamic。
|
|
373
|
+
*
|
|
374
|
+
* 注意:Live 模式使用 Live Sync API 获取字典。如果 API 调用失败,
|
|
375
|
+
* 字典将以动态方式导入。
|
|
376
|
+
* 注意:只有带有远程内容和“live”标志的字典使用 live 模式。
|
|
377
|
+
* 其他字典为性能考虑使用动态模式。
|
|
378
|
+
*/
|
|
379
|
+
importMode: "live",
|
|
328
380
|
},
|
|
329
381
|
};
|
|
330
382
|
|
|
331
383
|
module.exports = config;
|
|
332
384
|
```
|
|
333
385
|
|
|
334
|
-
|
|
386
|
+
启动 Live Sync 服务器以包裹您的应用程序:
|
|
335
387
|
|
|
336
|
-
|
|
337
|
-
- 在客户端,热加载允许应用程序在浏览器中热加载内容,而无需重新加载页面。然而,此功能仅适用于客户端组件。
|
|
338
|
-
> 因为热加载需要使用 `EventListener` 与服务器保持持续连接,所以仅适用于 `enterprise` 计划的客户。
|
|
388
|
+
使用 Next.js 的示例:
|
|
339
389
|
|
|
340
|
-
|
|
390
|
+
```json5 fileName="package.json"
|
|
391
|
+
{
|
|
392
|
+
"scripts": {
|
|
393
|
+
// ... 其他脚本
|
|
394
|
+
"build": "next build",
|
|
395
|
+
"dev": "next dev",
|
|
396
|
+
"start": "npx intlayer live --process 'next start'",
|
|
397
|
+
},
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
使用 Vite 的示例:
|
|
402
|
+
|
|
403
|
+
```json5 fileName="package.json"
|
|
404
|
+
{
|
|
405
|
+
"scripts": {
|
|
406
|
+
// ... 其他脚本
|
|
407
|
+
"build": "vite build",
|
|
408
|
+
"dev": "vite dev",
|
|
409
|
+
"start": "npx intlayer live --process 'vite start'",
|
|
410
|
+
},
|
|
411
|
+
}
|
|
412
|
+
```
|
|
341
413
|
|
|
342
|
-
|
|
414
|
+
Live Sync 服务器包裹您的应用程序,并在更新内容到达时自动应用。
|
|
343
415
|
|
|
344
|
-
|
|
416
|
+
为了接收来自 CMS 的变更通知,Live Sync 服务器会与后端保持 SSE 连接。当 CMS 中的内容发生变化时,后端会将更新转发给 Live Sync 服务器,服务器会写入新的字典。您的应用将在下一次导航或浏览器刷新时反映更新——无需重新构建。
|
|
345
417
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
418
|
+
流程图(CMS/后端 -> Live Sync 服务器 -> 应用服务器 -> 前端):
|
|
419
|
+
|
|
420
|
+

|
|
421
|
+
|
|
422
|
+
工作原理:
|
|
423
|
+
|
|
424
|
+

|
|
425
|
+
|
|
426
|
+
### 开发工作流程(本地)
|
|
427
|
+
|
|
428
|
+
- 在开发过程中,应用启动时会获取所有远程字典,因此您可以快速测试更新。
|
|
429
|
+
- 要在本地使用 Next.js 测试 Live Sync,请包装您的开发服务器:
|
|
430
|
+
|
|
431
|
+
```json5 fileName="package.json"
|
|
432
|
+
{
|
|
433
|
+
"scripts": {
|
|
434
|
+
// ... 其他脚本
|
|
435
|
+
"dev": "npx intlayer live --process 'next dev'",
|
|
436
|
+
// "dev": "npx intlayer live --process 'vite dev'", // 适用于 Vite
|
|
437
|
+
},
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
启用优化,以便 Intlayer 在开发期间应用实时导入转换:
|
|
442
|
+
|
|
443
|
+
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
444
|
+
import type { IntlayerConfig } from "intlayer";
|
|
445
|
+
|
|
446
|
+
const config: IntlayerConfig = {
|
|
447
|
+
editor: {
|
|
448
|
+
applicationURL: "http://localhost:5173",
|
|
449
|
+
liveSyncURL: "http://localhost:4000",
|
|
450
|
+
liveSync: true,
|
|
451
|
+
},
|
|
452
|
+
build: {
|
|
453
|
+
optimize: true,
|
|
454
|
+
importMode: "live",
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
export default config;
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
```javascript fileName="intlayer.config.mjs" codeFormat="esm"
|
|
462
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
463
|
+
const config = {
|
|
464
|
+
editor: {
|
|
465
|
+
applicationURL: "http://localhost:5173",
|
|
466
|
+
liveSyncURL: "http://localhost:4000",
|
|
467
|
+
liveSync: true,
|
|
468
|
+
},
|
|
469
|
+
build: {
|
|
470
|
+
optimize: true,
|
|
471
|
+
importMode: "live",
|
|
472
|
+
},
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
export default config;
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
479
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
480
|
+
const config = {
|
|
481
|
+
editor: {
|
|
482
|
+
applicationURL: "http://localhost:5173",
|
|
483
|
+
liveSyncURL: "http://localhost:4000",
|
|
484
|
+
liveSync: true,
|
|
485
|
+
},
|
|
486
|
+
build: {
|
|
487
|
+
optimize: true,
|
|
488
|
+
importMode: "live",
|
|
489
|
+
},
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
module.exports = config;
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
此配置会将你的开发服务器包装在实时同步服务器中,启动时获取远程字典,并通过 SSE 从 CMS 流式传输更新。刷新页面即可看到更改。
|
|
496
|
+
|
|
497
|
+
注意事项和限制:
|
|
498
|
+
|
|
499
|
+
- 将实时同步的源添加到你的网站安全策略(CSP)中。确保在 `connect-src`(如果相关,还包括 `frame-ancestors`)中允许实时同步 URL。
|
|
500
|
+
- 实时同步不适用于静态输出。对于 Next.js,页面必须是动态的,才能在运行时接收更新(例如,适当使用 `generateStaticParams`、`generateMetadata`、`getServerSideProps` 或 `getStaticProps`,以避免完全静态的限制)。
|
|
501
|
+
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
此设置将您的开发服务器与实时同步服务器包装在一起,在启动时获取远程字典,并通过 SSE 从 CMS 流式传输更新。刷新页面以查看更改。
|
|
505
|
+
|
|
506
|
+
注意事项和限制:
|
|
507
|
+
|
|
508
|
+
- 将实时同步源添加到您的站点安全策略(CSP)中。确保实时同步 URL 被允许在 `connect-src` 中(如果相关,也包括 `frame-ancestors`)。
|
|
509
|
+
- 实时同步不适用于静态输出。对于 Next.js,页面必须是动态的才能在运行时接收更新(例如,适当使用 `generateStaticParams`、`generateMetadata`、`getServerSideProps` 或 `getStaticProps`,以避免完全静态的限制)。
|
|
510
|
+
/// 在 CMS 中,每个字典都有一个 `live` 标志。只有 `live=true` 的字典才会通过实时同步 API 获取;其他字典则动态导入,并在运行时保持不变。
|
|
511
|
+
/// `live` 标志在构建时对每个字典进行评估。如果远程内容在构建时未标记为 `live=true`,则必须重新构建以启用该字典的实时同步。
|
|
512
|
+
/// 实时同步服务器必须能够写入 `.intlayer`。在容器中,确保对 `/.intlayer` 具有写入权限。
|
|
513
|
+
///
|
|
514
|
+
/// ## 调试
|
|
515
|
+
///
|
|
516
|
+
/// 如果遇到 CMS 相关问题,请检查以下内容:
|
|
517
|
+
///
|
|
518
|
+
/// - 应用程序是否正在运行。
|
|
519
|
+
///
|
|
520
|
+
/// - [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) 配置是否在您的 Intlayer 配置文件中正确设置。
|
|
521
|
+
/// - 必填字段:
|
|
522
|
+
///
|
|
523
|
+
- 应用程序 URL 应与您在编辑器配置中设置的 URL (`applicationURL`) 匹配。
|
|
524
|
+
- CMS URL
|
|
350
525
|
|
|
351
526
|
- 确保项目配置已推送到 Intlayer CMS。
|
|
352
|
-
|
|
527
|
+
|
|
528
|
+
- 可视化编辑器使用 iframe 来显示您的网站。确保您网站的内容安全策略(CSP)允许 CMS URL 作为 `frame-ancestors`(默认是 'https://intlayer.org')。检查编辑器控制台是否有任何错误。
|
|
353
529
|
|
|
354
530
|
## 文档历史
|
|
355
531
|
|
|
356
|
-
|
|
532
|
+
| 版本 | 日期 | 变更内容 |
|
|
533
|
+
| ------ | ---------- | ------------------------------------- |
|
|
534
|
+
| 6.0.1 | 2025-09-22 | 添加实时同步文档 |
|
|
535
|
+
| 6.0.0 | 2025-09-04 | 用 `liveSync` 字段替换 `hotReload` 字段 |
|
|
536
|
+
| 5.5.10 | 2025-06-29 | 初始化历史记录 |
|
|
537
|
+
```
|