@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.
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 +9 -8
  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,11 +1,11 @@
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
@@ -19,11 +19,11 @@ 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="适用于您的 Web 应用的可视化编辑器 + CMSIntlayer 详解" 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
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 管理的字典。这种字典可以让您的团队直接在网站上管理内容,同时也可以用于 A/B 测试功能和 SEO 自动优化。
38
+ - “远程”字典是通过 Intlayer CMS 管理的字典。它可以让您的团队直接在网站上管理内容,同时也支持使用 A/B 测试功能和 SEO 自动优化。
39
39
 
40
40
  ## 可视化编辑器与 CMS
41
41
 
42
- [Intlayer 可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md) 是一个工具,允许您在本地字典中以可视化方式管理内容。一旦更改完成,内容将被替换到代码库中。这意味着应用程序将被重新构建,页面将重新加载以显示新内容。
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
- 有关与 Next.js 集成的内容,请参阅[设置指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_nextjs_15.md)。
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
- 有关与 Create React App 集成的内容,请参阅[设置指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_create_react_app.md)。
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
- 有关与 Vite + React 集成的内容,请参阅[设置指南](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_with_vite+react.md)。
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
- * 这是可视化编辑器的目标 URL。
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 仪表板 - 项目 (https://intlayer.org/dashboard/projects) 中创建新客户端来获取。
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,可以设置 CMS 的 URL。
95
+ * 如果您自行托管 Intlayer CMS,您可以设置 CMS 的 URL。
96
96
  *
97
97
  * Intlayer CMS 的 URL。
98
- * 默认设置为 https://intlayer.org
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,可以设置后端的 URL。
105
+ * 如果您自行托管 Intlayer CMS,您可以设置后端的 URL。
106
106
  *
107
107
  * Intlayer CMS 的 URL。
108
- * 默认设置为 https://back.intlayer.org
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
- * 这是可视化编辑器的目标 URL。
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
- * 默认设置为 https://intlayer.org
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 后端的 URL。
158
- * 默认设置为 https://back.intlayer.org
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
- * 这是可视化编辑器的目标 URL。
176
+ * 这是可视化编辑器所针对的 URL。
177
177
  */
178
178
  applicationURL: process.env.INTLAYER_APPLICATION_URL,
179
179
 
180
180
  /**
181
- * 必需
181
+ * 必填
182
182
  *
183
- * 启用编辑器需要客户端 ID 和客户端密钥。
183
+ * 启用编辑器需要客户端ID和客户端密钥。
184
184
  * 它们用于识别正在编辑内容的用户。
185
- * 可以通过在 Intlayer 仪表板 - 项目 (https://intlayer.org/dashboard/projects) 中创建新客户端来获取。
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,可以设置后端的 URL。
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 和客户端密钥,可以通过在 [Intlayer 仪表板 - 项目](https://intlayer.org/dashboard/projects) 中创建新客户端来获取。
217
+ > 如果您没有客户端 ID 和客户端密钥,可以通过在[Intlayer 控制面板 - 项目](https://intlayer.org/dashboard/projects)中创建新客户端来获取。
218
218
 
219
- > 要查看所有可用参数,请参阅[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
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,您可以使用 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/zh/intlayer_cli.md) 命令。
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` 配置文件中使用了环境变量,可以使用 `--env` 参数指定所需的环境:
231
+ > 如果您在 `intlayer.config.ts` 配置文件中使用了环境变量,可以通过 `--env` 参数指定所需的环境:
232
232
 
233
233
  ```bash
234
234
  npx intlayer config push --env production
235
235
  ```
236
236
 
237
- 此命令将您的配置上传到 Intlayer CMS。
237
+ 此命令会将您的配置上传到 Intlayer CMS。
238
238
 
239
239
  ### 推送字典
240
240
 
241
- 要将您的本地字典转换为远程字典,可以使用 [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/zh/intlayer_cli.md) 命令。
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` 配置文件中使用了环境变量,可以使用 `--env` 参数指定所需的环境:
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
- 此命令上传您的初始内容字典,使其可以通过 Intlayer 平台进行异步获取和编辑。
253
+ 此命令会上传您的初始内容字典,使其可通过 Intlayer 平台进行异步获取和编辑。
254
254
 
255
255
  ### 编辑字典
256
256
 
257
257
  然后,您将能够在 [Intlayer CMS](https://intlayer.org/dashboard/content) 中查看和管理您的字典。
258
258
 
259
- ## 热加载
259
+ ## 实时同步
260
260
 
261
- 当检测到更改时,Intlayer CMS 能够热加载字典。
261
+ 实时同步让您的应用在运行时反映 CMS 内容的更改。无需重新构建或重新部署。启用后,更新会被流式传输到实时同步服务器,刷新您的应用读取的字典。
262
262
 
263
- 如果没有热加载,则需要重新构建应用程序以显示新内容。
263
+ > 实时同步需要持续的服务器连接,并且仅在企业版计划中可用。
264
264
 
265
- 通过激活 [`liveSync`](https://intlayer.org/doc/concept/configuration#editor-configuration) 配置,当检测到更新时,应用程序将自动替换更新的内容。
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
- * 因为热加载需要与服务器的持续连接,所以仅适用于 `enterprise` 计划的客户。
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
- * 因为热加载需要与服务器的持续连接,所以仅适用于 `enterprise` 计划的客户。
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
- * 因为热加载需要与服务器的持续连接,所以仅适用于 `enterprise` 计划的客户。
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
- - 在服务器端,您需要确保应用程序进程对 `.intlayer/dictionaries` 目录具有写入权限。
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
- 如果您在使用 CMS 时遇到问题,请检查以下内容:
414
+ Live Sync 服务器包裹您的应用程序,并在更新内容到达时自动应用。
343
415
 
344
- - 应用程序正在运行。
416
+ 为了接收来自 CMS 的变更通知,Live Sync 服务器会与后端保持 SSE 连接。当 CMS 中的内容发生变化时,后端会将更新转发给 Live Sync 服务器,服务器会写入新的字典。您的应用将在下一次导航或浏览器刷新时反映更新——无需重新构建。
345
417
 
346
- - [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) 配置已正确设置在您的 Intlayer 配置文件中。
347
- - 必需字段:
348
- - 应用程序 URL 应与您在编辑器配置中设置的 URL (`applicationURL`) 匹配。
349
- - CMS URL
418
+ 流程图(CMS/后端 -> Live Sync 服务器 -> 应用服务器 -> 前端):
419
+
420
+ ![Live Sync 逻辑示意图](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_logic_schema.svg)
421
+
422
+ 工作原理:
423
+
424
+ ![Live Sync 流程 CMS/后端/Live Sync 服务器/应用服务器/前端示意图](https://github.com/aymericzip/intlayer/blob/main/docs/assets/live_sync_flow_scema.svg)
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
- - 可视化编辑器使用 iframe 显示您的网站。确保您的网站的内容安全策略 (CSP) 允许 CMS URL 作为 `frame-ancestors`(默认值为 'https://intlayer.org')。检查编辑器控制台是否有任何错误。
527
+
528
+ - 可视化编辑器使用 iframe 来显示您的网站。确保您网站的内容安全策略(CSP)允许 CMS URL 作为 `frame-ancestors`(默认是 'https://intlayer.org')。检查编辑器控制台是否有任何错误。
353
529
 
354
530
  ## 文档历史
355
531
 
356
- - 5.5.10 - 2025-06-29:初始化历史记录
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
+ ```