@intlayer/docs 6.0.1 → 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/ru/intlayer_CMS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-08-23
|
|
3
3
|
updatedAt: 2025-08-23
|
|
4
|
-
title: Intlayer CMS |
|
|
5
|
-
description:
|
|
4
|
+
title: Intlayer CMS | Внешнее управление контентом через Intlayer CMS
|
|
5
|
+
description: Внешнее управление вашим контентом через Intlayer CMS для делегирования управления контентом вашей команде.
|
|
6
6
|
keywords:
|
|
7
7
|
- CMS
|
|
8
8
|
- Визуальный редактор
|
|
@@ -21,9 +21,9 @@ youtubeVideo: https://www.youtube.com/watch?v=UDDTnirwi_4
|
|
|
21
21
|
|
|
22
22
|
# Документация по системе управления контентом Intlayer (CMS)
|
|
23
23
|
|
|
24
|
-
<iframe title="
|
|
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&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,15 +33,15 @@ Intlayer CMS - это приложение, которое позволяет в
|
|
|
33
33
|
|
|
34
34
|
Intlayer различает «локальные» и «удалённые» словари.
|
|
35
35
|
|
|
36
|
-
-
|
|
36
|
+
- «Локальный» словарь — это словарь, который объявлен в вашем проекте Intlayer. Например, файл объявления кнопки или ваша навигационная панель. Вынесение такого контента во внешнее управление не имеет смысла, так как этот контент не предполагается часто менять.
|
|
37
37
|
|
|
38
|
-
-
|
|
38
|
+
- «Удалённый» словарь — это словарь, который управляется через Intlayer CMS. Это может быть полезно, чтобы ваша команда могла управлять контентом непосредственно на вашем сайте, а также для использования функций A/B тестирования и автоматической SEO-оптимизации.
|
|
39
39
|
|
|
40
|
-
## Визуальный редактор
|
|
40
|
+
## Визуальный редактор против CMS
|
|
41
41
|
|
|
42
|
-
[
|
|
42
|
+
Редактор [Intlayer Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) — это инструмент, который позволяет управлять вашим контентом в визуальном редакторе для локальных словарей. После внесения изменений контент будет заменён в кодовой базе. Это означает, что приложение будет пересобрано, и страница перезагрузится для отображения нового контента.
|
|
43
43
|
|
|
44
|
-
В отличие от этого, Intlayer CMS
|
|
44
|
+
В отличие от этого, Intlayer CMS — это инструмент, который позволяет управлять вашим контентом в визуальном редакторе для удалённых словарей. После внесения изменений контент **не** повлияет на вашу кодовую базу. И сайт автоматически отобразит изменённый контент.
|
|
45
45
|
|
|
46
46
|
## Интеграция
|
|
47
47
|
|
|
@@ -49,8 +49,6 @@ Intlayer различает «локальные» и «удалённые» с
|
|
|
49
49
|
|
|
50
50
|
### Интеграция с Next.js
|
|
51
51
|
|
|
52
|
-
### Интеграция с Next.js
|
|
53
|
-
|
|
54
52
|
Для интеграции с Next.js обратитесь к [руководству по настройке](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_nextjs_15.md).
|
|
55
53
|
|
|
56
54
|
### Интеграция с Create React App
|
|
@@ -63,7 +61,7 @@ Intlayer различает «локальные» и «удалённые» с
|
|
|
63
61
|
|
|
64
62
|
## Конфигурация
|
|
65
63
|
|
|
66
|
-
В вашем файле
|
|
64
|
+
В вашем конфигурационном файле Intlayer вы можете настроить параметры CMS:
|
|
67
65
|
|
|
68
66
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
69
67
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -82,7 +80,7 @@ const config: IntlayerConfig = {
|
|
|
82
80
|
/**
|
|
83
81
|
* Обязательно
|
|
84
82
|
*
|
|
85
|
-
*
|
|
83
|
+
* Для включения редактора требуются client ID и client secret.
|
|
86
84
|
* Они позволяют идентифицировать пользователя, который редактирует контент.
|
|
87
85
|
* Их можно получить, создав нового клиента в Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects).
|
|
88
86
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
@@ -94,20 +92,20 @@ const config: IntlayerConfig = {
|
|
|
94
92
|
/**
|
|
95
93
|
* Необязательно
|
|
96
94
|
*
|
|
97
|
-
*
|
|
95
|
+
* В случае самостоятельного размещения Intlayer CMS, вы можете указать URL CMS.
|
|
98
96
|
*
|
|
99
97
|
* URL Intlayer CMS.
|
|
100
|
-
* По умолчанию установлен
|
|
98
|
+
* По умолчанию установлен https://intlayer.org
|
|
101
99
|
*/
|
|
102
100
|
cmsURL: process.env.INTLAYER_CMS_URL,
|
|
103
101
|
|
|
104
102
|
/**
|
|
105
103
|
* Необязательно
|
|
106
104
|
*
|
|
107
|
-
*
|
|
105
|
+
* В случае самостоятельного размещения Intlayer CMS, вы можете указать URL бэкенда.
|
|
108
106
|
*
|
|
109
107
|
* URL Intlayer CMS.
|
|
110
|
-
* По умолчанию установлен
|
|
108
|
+
* По умолчанию установлен https://back.intlayer.org
|
|
111
109
|
*/
|
|
112
110
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
113
111
|
},
|
|
@@ -132,7 +130,7 @@ const config = {
|
|
|
132
130
|
/**
|
|
133
131
|
* Обязательно
|
|
134
132
|
*
|
|
135
|
-
*
|
|
133
|
+
* Для включения редактора требуются client ID и client secret.
|
|
136
134
|
* Они позволяют идентифицировать пользователя, который редактирует контент.
|
|
137
135
|
* Их можно получить, создав нового клиента в Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects).
|
|
138
136
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
@@ -144,7 +142,7 @@ const config = {
|
|
|
144
142
|
/**
|
|
145
143
|
* Необязательно
|
|
146
144
|
*
|
|
147
|
-
*
|
|
145
|
+
* В случае самостоятельного размещения Intlayer CMS, вы можете указать URL CMS.
|
|
148
146
|
*
|
|
149
147
|
* URL Intlayer CMS.
|
|
150
148
|
* По умолчанию установлен на https://intlayer.org
|
|
@@ -154,9 +152,9 @@ const config = {
|
|
|
154
152
|
/**
|
|
155
153
|
* Необязательно
|
|
156
154
|
*
|
|
157
|
-
*
|
|
155
|
+
* В случае самостоятельного хостинга Intlayer CMS, вы можете указать URL бэкенда.
|
|
158
156
|
*
|
|
159
|
-
* URL
|
|
157
|
+
* URL Intlayer CMS.
|
|
160
158
|
* По умолчанию установлен на https://back.intlayer.org
|
|
161
159
|
*/
|
|
162
160
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
@@ -182,7 +180,7 @@ const config = {
|
|
|
182
180
|
/**
|
|
183
181
|
* Обязательно
|
|
184
182
|
*
|
|
185
|
-
*
|
|
183
|
+
* Для включения редактора требуются client ID и client secret.
|
|
186
184
|
* Они позволяют идентифицировать пользователя, который редактирует контент.
|
|
187
185
|
* Их можно получить, создав нового клиента в Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects).
|
|
188
186
|
* clientId: process.env.INTLAYER_CLIENT_ID,
|
|
@@ -194,7 +192,7 @@ const config = {
|
|
|
194
192
|
/**
|
|
195
193
|
* Необязательно
|
|
196
194
|
*
|
|
197
|
-
*
|
|
195
|
+
* В случае самостоятельного хостинга Intlayer CMS, вы можете указать URL CMS.
|
|
198
196
|
*
|
|
199
197
|
* URL Intlayer CMS.
|
|
200
198
|
* По умолчанию установлен на https://intlayer.org
|
|
@@ -204,10 +202,10 @@ const config = {
|
|
|
204
202
|
/**
|
|
205
203
|
* Необязательно
|
|
206
204
|
*
|
|
207
|
-
*
|
|
205
|
+
* В случае самостоятельного хостинга Intlayer CMS, вы можете указать URL бэкенда.
|
|
208
206
|
*
|
|
209
|
-
* URL Intlayer CMS.
|
|
210
|
-
* По умолчанию установлен
|
|
207
|
+
* URL бэкенда Intlayer CMS.
|
|
208
|
+
* По умолчанию установлен https://back.intlayer.org
|
|
211
209
|
*/
|
|
212
210
|
backendURL: process.env.INTLAYER_BACKEND_URL,
|
|
213
211
|
},
|
|
@@ -216,13 +214,13 @@ const config = {
|
|
|
216
214
|
module.exports = config;
|
|
217
215
|
```
|
|
218
216
|
|
|
219
|
-
> Если у вас нет
|
|
217
|
+
> Если у вас нет client ID и client secret, вы можете получить их, создав нового клиента в [Intlayer Dashboard - Projects](https://intlayer.org/dashboard/projects).
|
|
220
218
|
|
|
221
219
|
> Чтобы увидеть все доступные параметры, обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
|
|
222
220
|
|
|
223
221
|
## Использование CMS
|
|
224
222
|
|
|
225
|
-
###
|
|
223
|
+
### Отправка вашей конфигурации
|
|
226
224
|
|
|
227
225
|
Для настройки Intlayer CMS вы можете использовать команды [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ru/intlayer_cli.md).
|
|
228
226
|
|
|
@@ -230,7 +228,7 @@ module.exports = config;
|
|
|
230
228
|
npx intlayer config push
|
|
231
229
|
```
|
|
232
230
|
|
|
233
|
-
> Если вы используете переменные окружения в вашем файле конфигурации `intlayer.config.ts`, вы можете указать
|
|
231
|
+
> Если вы используете переменные окружения в вашем файле конфигурации `intlayer.config.ts`, вы можете указать нужное окружение с помощью аргумента `--env`:
|
|
234
232
|
|
|
235
233
|
```bash
|
|
236
234
|
npx intlayer config push --env production
|
|
@@ -238,32 +236,33 @@ npx intlayer config push --env production
|
|
|
238
236
|
|
|
239
237
|
Эта команда загружает вашу конфигурацию в Intlayer CMS.
|
|
240
238
|
|
|
241
|
-
###
|
|
239
|
+
### Отправка словаря
|
|
242
240
|
|
|
243
|
-
Чтобы преобразовать ваши локальные словари в
|
|
241
|
+
Чтобы преобразовать ваши локальные словари в удалённый словарь, вы можете использовать команды [intlayer CLI](https://github.com/aymericzip/intlayer/tree/main/docs/ru/intlayer_cli.md).
|
|
244
242
|
|
|
245
243
|
```bash
|
|
246
244
|
npx intlayer dictionary push -d my-first-dictionary-key
|
|
247
245
|
```
|
|
248
246
|
|
|
249
|
-
> Если вы используете переменные окружения в вашем файле конфигурации `intlayer.config.ts`, вы можете указать
|
|
247
|
+
> Если вы используете переменные окружения в вашем файле конфигурации `intlayer.config.ts`, вы можете указать нужное окружение с помощью аргумента `--env`:
|
|
250
248
|
|
|
251
249
|
```bash
|
|
252
250
|
npx intlayer dictionary push -d my-first-dictionary-key --env production
|
|
253
251
|
```
|
|
254
252
|
|
|
255
|
-
Эта команда загружает ваши
|
|
253
|
+
Эта команда загружает ваши исходные словари контента, делая их доступными для асинхронного получения и редактирования через платформу Intlayer.
|
|
256
254
|
|
|
257
255
|
### Редактирование словаря
|
|
258
256
|
|
|
259
|
-
После этого вы сможете
|
|
257
|
+
После этого вы сможете просматривать и управлять вашим словарём в [Intlayer CMS](https://intlayer.org/dashboard/content).
|
|
260
258
|
|
|
261
|
-
##
|
|
259
|
+
## Живая синхронизация
|
|
262
260
|
|
|
263
|
-
|
|
261
|
+
Живая синхронизация позволяет вашему приложению отражать изменения контента CMS в режиме реального времени. Пересборка или повторный деплой не требуются. Когда функция включена, обновления передаются на сервер живой синхронизации, который обновляет словари, используемые вашим приложением.
|
|
264
262
|
|
|
265
|
-
|
|
266
|
-
|
|
263
|
+
> Живая синхронизация требует постоянного подключения к серверу и доступна в тарифном плане enterprise.
|
|
264
|
+
|
|
265
|
+
Включите живую синхронизацию, обновив конфигурацию Intlayer:
|
|
267
266
|
|
|
268
267
|
```typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
269
268
|
import type { IntlayerConfig } from "intlayer";
|
|
@@ -271,18 +270,32 @@ import type { IntlayerConfig } from "intlayer";
|
|
|
271
270
|
const config: IntlayerConfig = {
|
|
272
271
|
// ... другие настройки конфигурации
|
|
273
272
|
editor: {
|
|
274
|
-
// ... другие настройки конфигурации
|
|
275
|
-
|
|
276
273
|
/**
|
|
277
|
-
*
|
|
278
|
-
* Например, когда добавляется или
|
|
274
|
+
* Включает горячую перезагрузку конфигураций локалей при обнаружении изменений.
|
|
275
|
+
* Например, когда словарь добавляется или обновляется, приложение обновляет
|
|
276
|
+
* отображаемый на странице контент.
|
|
279
277
|
*
|
|
280
|
-
* Поскольку горячая перезагрузка требует постоянного
|
|
278
|
+
* Поскольку горячая перезагрузка требует постоянного подключения к серверу,
|
|
279
|
+
* она доступна только для клиентов с тарифным планом `enterprise`.
|
|
281
280
|
*
|
|
282
281
|
* По умолчанию: false
|
|
283
282
|
*/
|
|
284
283
|
liveSync: true,
|
|
285
284
|
},
|
|
285
|
+
build: {
|
|
286
|
+
/**
|
|
287
|
+
* Управляет способом импорта словарей:
|
|
288
|
+
*
|
|
289
|
+
* - "live": словари загружаются динамически с использованием Live Sync API.
|
|
290
|
+
* Заменяет useIntlayer на useDictionaryDynamic.
|
|
291
|
+
*
|
|
292
|
+
* Примечание: Режим live использует Live Sync API для загрузки словарей. Если вызов API
|
|
293
|
+
* не удаётся, словари загружаются динамически.
|
|
294
|
+
* Примечание: Режим live используется только для словарей с удалённым содержимым и флагом "live".
|
|
295
|
+
* Другие используют динамический режим для повышения производительности.
|
|
296
|
+
*/
|
|
297
|
+
importMode: "live",
|
|
298
|
+
},
|
|
286
299
|
};
|
|
287
300
|
|
|
288
301
|
export default config;
|
|
@@ -293,18 +306,32 @@ export default config;
|
|
|
293
306
|
const config = {
|
|
294
307
|
// ... другие настройки конфигурации
|
|
295
308
|
editor: {
|
|
296
|
-
// ... другие настройки конфигурации
|
|
297
|
-
|
|
298
309
|
/**
|
|
299
|
-
*
|
|
300
|
-
* Например, когда добавляется или
|
|
310
|
+
* Включает горячую перезагрузку конфигураций локалей при обнаружении изменений.
|
|
311
|
+
* Например, когда словарь добавляется или обновляется, приложение обновляет
|
|
312
|
+
* отображаемое на странице содержимое.
|
|
301
313
|
*
|
|
302
|
-
* Поскольку горячая перезагрузка требует постоянного соединения с сервером, она
|
|
314
|
+
* Поскольку горячая перезагрузка требует постоянного соединения с сервером, она
|
|
315
|
+
* доступна только для клиентов с планом `enterprise`.
|
|
303
316
|
*
|
|
304
317
|
* По умолчанию: false
|
|
305
318
|
*/
|
|
306
319
|
liveSync: true,
|
|
307
320
|
},
|
|
321
|
+
build: {
|
|
322
|
+
/**
|
|
323
|
+
* Управляет способом импорта словарей:
|
|
324
|
+
*
|
|
325
|
+
* - "live": словари загружаются динамически с использованием Live Sync API.
|
|
326
|
+
* Заменяет useIntlayer на useDictionaryDynamic.
|
|
327
|
+
*
|
|
328
|
+
* Примечание: Режим live использует Live Sync API для загрузки словарей. Если вызов API
|
|
329
|
+
* не удаётся, словари загружаются динамически.
|
|
330
|
+
* Примечание: только словари с удалённым содержимым и флагом "live" используют режим live.
|
|
331
|
+
* Другие используют динамический режим для повышения производительности.
|
|
332
|
+
*/
|
|
333
|
+
importMode: "live",
|
|
334
|
+
},
|
|
308
335
|
};
|
|
309
336
|
|
|
310
337
|
export default config;
|
|
@@ -315,43 +342,191 @@ export default config;
|
|
|
315
342
|
const config = {
|
|
316
343
|
// ... другие настройки конфигурации
|
|
317
344
|
editor: {
|
|
318
|
-
// ... другие настройки конфигурации
|
|
319
|
-
|
|
320
345
|
/**
|
|
321
|
-
*
|
|
322
|
-
* Например, когда добавляется или
|
|
346
|
+
* Включает горячую перезагрузку конфигураций локалей при обнаружении изменений.
|
|
347
|
+
* Например, когда словарь добавляется или обновляется, приложение обновляет
|
|
348
|
+
* отображаемое на странице содержимое.
|
|
323
349
|
*
|
|
324
|
-
* Поскольку горячая перезагрузка требует постоянного соединения с сервером, она
|
|
350
|
+
* Поскольку горячая перезагрузка требует постоянного соединения с сервером, она
|
|
351
|
+
* доступна только для клиентов с планом `enterprise`.
|
|
325
352
|
*
|
|
326
353
|
* По умолчанию: false
|
|
327
354
|
*/
|
|
328
355
|
liveSync: true,
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Порт сервера Live Sync.
|
|
359
|
+
*
|
|
360
|
+
* По умолчанию: 4000
|
|
361
|
+
*/
|
|
362
|
+
liveSyncPort: 4000,
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* URL сервера Live Sync.
|
|
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 использует Live Sync API для загрузки словарей. Если вызов API
|
|
379
|
+
* не удаётся, словари импортируются динамически.
|
|
380
|
+
* Примечание: только словари с удалённым содержимым и флагом "live" используют режим live.
|
|
381
|
+
* Другие используют динамический режим для повышения производительности.
|
|
382
|
+
*/
|
|
383
|
+
importMode: "live",
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
module.exports = config;
|
|
388
|
+
```
|
|
389
|
+
|
|
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, который записывает новые словари. Ваше приложение отобразит обновление при следующей навигации или перезагрузке браузера — пересборка не требуется.
|
|
421
|
+
|
|
422
|
+
Блок-схема (CMS/Backend -> Live Sync Server -> Application Server -> Frontend):
|
|
423
|
+
|
|
424
|
+

|
|
425
|
+
|
|
426
|
+
Как это работает:
|
|
427
|
+
|
|
428
|
+

|
|
429
|
+
|
|
430
|
+
### Рабочий процесс разработки (локально)
|
|
431
|
+
|
|
432
|
+
- В процессе разработки все удалённые словари загружаются при запуске приложения, чтобы вы могли быстро тестировать обновления.
|
|
433
|
+
- Чтобы протестировать Live Sync локально с Next.js, оберните ваш dev-сервер:
|
|
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 импорта во время разработки:
|
|
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
|
+
// Конфигурация Intlayer для режима Live Sync
|
|
468
|
+
const config = {
|
|
469
|
+
editor: {
|
|
470
|
+
applicationURL: "http://localhost:5173", // URL приложения
|
|
471
|
+
liveSyncURL: "http://localhost:4000", // URL сервера Live Sync
|
|
472
|
+
liveSync: true, // Включение Live Sync
|
|
473
|
+
},
|
|
474
|
+
build: {
|
|
475
|
+
optimize: true, // Включение оптимизации
|
|
476
|
+
importMode: "live", // Режим импорта "live"
|
|
477
|
+
},
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
export default config;
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
|
|
484
|
+
/** @type {import('intlayer').IntlayerConfig} */
|
|
485
|
+
// Конфигурация Intlayer для режима Live Sync
|
|
486
|
+
const config = {
|
|
487
|
+
editor: {
|
|
488
|
+
applicationURL: "http://localhost:5173", // URL приложения
|
|
489
|
+
liveSyncURL: "http://localhost:4000", // URL сервера Live Sync
|
|
490
|
+
liveSync: true, // Включение Live Sync
|
|
491
|
+
},
|
|
492
|
+
build: {
|
|
493
|
+
optimize: true, // Включение оптимизации
|
|
494
|
+
importMode: "live", // Режим импорта "live"
|
|
329
495
|
},
|
|
330
496
|
};
|
|
331
497
|
|
|
332
498
|
module.exports = config;
|
|
333
499
|
```
|
|
334
500
|
|
|
335
|
-
|
|
501
|
+
Эта настройка оборачивает ваш dev-сервер сервером Live Sync, загружает удалённые словари при запуске и транслирует обновления из CMS через SSE. Обновите страницу, чтобы увидеть изменения.
|
|
336
502
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
503
|
+
Примечания и ограничения:
|
|
504
|
+
|
|
505
|
+
- Добавьте источник live sync в политику безопасности вашего сайта (CSP). Убедитесь, что URL live sync разрешён в `connect-src` (и в `frame-ancestors`, если это актуально).
|
|
506
|
+
- Live Sync не работает со статическим выводом. Для Next.js страница должна быть динамической, чтобы получать обновления во время выполнения (например, используйте `generateStaticParams`, `generateMetadata`, `getServerSideProps` или `getStaticProps` соответствующим образом, чтобы избежать ограничений полностью статического вывода).
|
|
507
|
+
- В CMS у каждого словаря есть флаг `live`. Только словари с `live=true` загружаются через API live sync; остальные импортируются динамически и остаются неизменными во время выполнения.
|
|
508
|
+
- Флаг `live` оценивается для каждого словаря во время сборки. Если удалённый контент не был помечен как `live=true` во время сборки, необходимо выполнить повторную сборку, чтобы включить Live Sync для этого словаря.
|
|
509
|
+
- Сервер live sync должен иметь возможность записывать в `.intlayer`. В контейнерах убедитесь, что есть права на запись в `/.intlayer`.
|
|
340
510
|
|
|
341
511
|
## Отладка
|
|
342
512
|
|
|
343
|
-
Если вы столкнулись с проблемами
|
|
513
|
+
Если вы столкнулись с проблемами в CMS, проверьте следующее:
|
|
344
514
|
|
|
345
515
|
- Приложение запущено.
|
|
346
516
|
|
|
347
|
-
- Конфигурация [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration)
|
|
517
|
+
- Конфигурация [`editor`](https://intlayer.org/doc/concept/configuration#editor-configuration) корректно настроена в вашем конфигурационном файле Intlayer.
|
|
348
518
|
- Обязательные поля:
|
|
349
|
-
|
|
350
|
-
|
|
519
|
+
- URL приложения должен совпадать с тем, который вы указали в конфигурации редактора (`applicationURL`).
|
|
520
|
+
- URL CMS
|
|
521
|
+
|
|
522
|
+
- Убедитесь, что конфигурация проекта была отправлена в Intlayer CMS.
|
|
351
523
|
|
|
352
|
-
- Убедитесь, что
|
|
353
|
-
- Визуальный редактор использует iframe для отображения вашего сайта. Убедитесь, что Политика безопасности контента (CSP) вашего сайта разрешает URL CMS в качестве `frame-ancestors` ('https://intlayer.org' по умолчанию). Проверьте консоль редактора на наличие ошибок.
|
|
524
|
+
- Визуальный редактор использует iframe для отображения вашего сайта. Убедитесь, что политика безопасности контента (CSP) вашего сайта разрешает URL CMS в качестве `frame-ancestors` (по умолчанию 'https://intlayer.org'). Проверьте консоль редактора на наличие ошибок.
|
|
354
525
|
|
|
355
|
-
## История
|
|
526
|
+
## История документации
|
|
356
527
|
|
|
357
|
-
|
|
528
|
+
| Версия | Дата | Изменения |
|
|
529
|
+
| ------ | ---------- | --------------------------------------- |
|
|
530
|
+
| 6.0.1 | 2025-09-22 | Добавлена документация по live sync |
|
|
531
|
+
| 6.0.0 | 2025-09-04 | Заменено поле `hotReload` на `liveSync` |
|
|
532
|
+
| 5.5.10 | 2025-06-29 | Инициализация истории |
|