@intlayer/docs 8.4.6 → 8.4.8
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/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/docs/ar/configuration.md +300 -264
- package/docs/cs/configuration.md +958 -0
- package/docs/de/configuration.md +285 -249
- package/docs/en/configuration.md +115 -137
- package/docs/en-GB/configuration.md +272 -237
- package/docs/es/configuration.md +161 -125
- package/docs/fr/configuration.md +137 -101
- package/docs/it/configuration.md +294 -259
- package/docs/ja/configuration.md +269 -233
- package/docs/nl/configuration.md +958 -0
- package/docs/pt/configuration.md +311 -275
- package/docs/ru/configuration.md +287 -272
- package/docs/tr/configuration.md +265 -229
- package/package.json +6 -6
- package/docs/bn/configuration.md +0 -922
- package/docs/hi/configuration.md +0 -922
- package/docs/id/configuration.md +0 -922
- package/docs/ko/configuration.md +0 -922
- package/docs/pl/configuration.md +0 -922
- package/docs/uk/configuration.md +0 -922
- package/docs/ur/configuration.md +0 -922
- package/docs/vi/configuration.md +0 -922
- package/docs/zh/configuration.md +0 -922
package/docs/ru/configuration.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
3
|
updatedAt: 2026-03-20
|
|
4
4
|
title: Конфигурация (Configuration)
|
|
5
|
-
description: Узнайте, как настроить Intlayer для вашего приложения.
|
|
5
|
+
description: Узнайте, как настроить Intlayer для вашего приложения. Разберитесь в различных параметрах и опциях, доступных для настройки Intlayer в соответствии с вашими потребностями.
|
|
6
6
|
keywords:
|
|
7
7
|
- Конфигурация
|
|
8
8
|
- Настройки
|
|
9
|
-
-
|
|
9
|
+
- Персонализация
|
|
10
10
|
- Intlayer
|
|
11
|
-
-
|
|
11
|
+
- Параметры
|
|
12
12
|
slugs:
|
|
13
13
|
- doc
|
|
14
14
|
- concept
|
|
@@ -16,76 +16,76 @@ slugs:
|
|
|
16
16
|
history:
|
|
17
17
|
- version: 8.4.0
|
|
18
18
|
date: 2026-03-20
|
|
19
|
-
changes: Добавлена нотация
|
|
19
|
+
changes: Добавлена объектная нотация для каждого языка для 'compiler.output' и 'dictionary.fill'
|
|
20
20
|
- version: 8.3.0
|
|
21
21
|
date: 2026-03-11
|
|
22
|
-
changes:
|
|
22
|
+
changes: 'baseDir' перенесен из конфигурации 'content' в конфигурацию 'system'
|
|
23
23
|
- version: 8.2.0
|
|
24
24
|
date: 2026-03-09
|
|
25
|
-
changes: Обновлены
|
|
25
|
+
changes: Обновлены опции компилятора, добавлена поддержка 'output' и 'noMetadata'
|
|
26
26
|
- version: 8.1.7
|
|
27
27
|
date: 2026-02-25
|
|
28
|
-
changes: Обновлены
|
|
28
|
+
changes: Обновлены опции компилятора
|
|
29
29
|
- version: 8.1.5
|
|
30
30
|
date: 2026-02-23
|
|
31
|
-
changes:
|
|
31
|
+
changes: Добавлена опция компилятора 'build-only' и префикс словаря
|
|
32
32
|
- version: 8.0.6
|
|
33
33
|
date: 2026-02-12
|
|
34
34
|
changes: Добавлена поддержка провайдеров Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face и Together.ai
|
|
35
35
|
- version: 8.0.5
|
|
36
36
|
date: 2026-02-06
|
|
37
|
-
changes: Добавлен `dataSerialization` в конфигурацию
|
|
37
|
+
changes: Добавлен `dataSerialization` в конфигурацию ИИ
|
|
38
38
|
- version: 8.0.0
|
|
39
39
|
date: 2026-01-24
|
|
40
|
-
changes:
|
|
40
|
+
changes: Режим импорта `live` переименован в `fetch` для лучшего описания базового механизма.
|
|
41
41
|
- version: 8.0.0
|
|
42
42
|
date: 2026-01-22
|
|
43
|
-
changes:
|
|
43
|
+
changes: Конфигурация сборки `importMode` перенесена в конфигурацию `dictionary`.
|
|
44
44
|
- version: 8.0.0
|
|
45
45
|
date: 2026-01-22
|
|
46
|
-
changes:
|
|
46
|
+
changes: Добавлена опция `rewrite` в конфигурацию маршрутизации
|
|
47
47
|
- version: 8.0.0
|
|
48
48
|
date: 2026-01-18
|
|
49
|
-
changes:
|
|
49
|
+
changes: Конфигурация системы отделена от конфигурации контента. Внутренние пути перенесены в свойство `system`. Добавлен `codeDir` для отделения файлов контента от преобразования кода.
|
|
50
50
|
- version: 8.0.0
|
|
51
51
|
date: 2026-01-18
|
|
52
|
-
changes: Добавлены
|
|
52
|
+
changes: Добавлены опции словаря `location` и `schema`
|
|
53
53
|
- version: 7.5.1
|
|
54
54
|
date: 2026-01-10
|
|
55
55
|
changes: Добавлена поддержка форматов файлов JSON5 и JSONC
|
|
56
56
|
- version: 7.5.0
|
|
57
57
|
date: 2025-12-17
|
|
58
|
-
changes:
|
|
58
|
+
changes: Добавлена опция `buildMode`
|
|
59
59
|
- version: 7.0.0
|
|
60
60
|
date: 2025-10-25
|
|
61
61
|
changes: Добавлена конфигурация `dictionary`
|
|
62
62
|
- version: 7.0.0
|
|
63
63
|
date: 2025-10-21
|
|
64
|
-
changes:
|
|
64
|
+
changes: `middleware` заменен на конфигурацию `routing`
|
|
65
65
|
- version: 7.0.0
|
|
66
66
|
date: 2025-10-12
|
|
67
|
-
changes:
|
|
67
|
+
changes: Добавлена опция `formatCommand`
|
|
68
68
|
- version: 6.2.0
|
|
69
69
|
date: 2025-10-12
|
|
70
|
-
changes:
|
|
70
|
+
changes: Обновлена опция `excludedPath`
|
|
71
71
|
- version: 6.0.2
|
|
72
72
|
date: 2025-09-23
|
|
73
|
-
changes:
|
|
73
|
+
changes: Добавлена опция `outputFormat`
|
|
74
74
|
- version: 6.0.0
|
|
75
75
|
date: 2025-09-21
|
|
76
|
-
changes:
|
|
76
|
+
changes: Удалены поля `dictionaryOutput` и `i18nextResourcesDir`
|
|
77
77
|
- version: 6.0.0
|
|
78
78
|
date: 2025-09-16
|
|
79
79
|
changes: Добавлен режим импорта `live`
|
|
80
80
|
- version: 6.0.0
|
|
81
81
|
date: 2025-09-04
|
|
82
|
-
changes: Поле `hotReload` заменено на `liveSync
|
|
82
|
+
changes: Поле `hotReload` заменено на `liveSync` и добавлены поля `liveSyncPort`, `liveSyncURL`
|
|
83
83
|
- version: 5.6.1
|
|
84
84
|
date: 2025-07-25
|
|
85
|
-
changes:
|
|
85
|
+
changes: `activateDynamicImport` заменен на опцию `importMode`
|
|
86
86
|
- version: 5.6.0
|
|
87
87
|
date: 2025-07-13
|
|
88
|
-
changes:
|
|
88
|
+
changes: Стандартный `contentDir` изменен с `['src']` на `['.']`
|
|
89
89
|
- version: 5.5.11
|
|
90
90
|
date: 2025-06-29
|
|
91
91
|
changes: Добавлены команды `docs`
|
|
@@ -95,7 +95,7 @@ history:
|
|
|
95
95
|
|
|
96
96
|
## Обзор
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
Файлы конфигурации Intlayer позволяют настраивать различные аспекты плагина, такие как интернационализация, middleware и управление контентом. Этот документ содержит подробное описание каждого свойства в конфигурации.
|
|
99
99
|
|
|
100
100
|
---
|
|
101
101
|
|
|
@@ -105,9 +105,9 @@ history:
|
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
108
|
-
##
|
|
108
|
+
## Поддержка форматов конфигурационных файлов
|
|
109
109
|
|
|
110
|
-
Intlayer принимает форматы
|
|
110
|
+
Intlayer принимает форматы файлов конфигурации JSON, JS, MJS и TS:
|
|
111
111
|
|
|
112
112
|
- `intlayer.config.ts`
|
|
113
113
|
- `intlayer.config.js`
|
|
@@ -128,7 +128,7 @@ import { nextjsRewrite } from "intlayer/routing";
|
|
|
128
128
|
import { z } from "zod";
|
|
129
129
|
|
|
130
130
|
/**
|
|
131
|
-
* Пример конфигурационного файла Intlayer со всеми доступными
|
|
131
|
+
* Пример конфигурационного файла Intlayer со всеми доступными опциями.
|
|
132
132
|
*/
|
|
133
133
|
const config: IntlayerConfig = {
|
|
134
134
|
/**
|
|
@@ -136,29 +136,29 @@ const config: IntlayerConfig = {
|
|
|
136
136
|
*/
|
|
137
137
|
internationalization: {
|
|
138
138
|
/**
|
|
139
|
-
* Список
|
|
139
|
+
* Список поддерживаемых языков в приложении.
|
|
140
140
|
* По умолчанию: [Locales.ENGLISH]
|
|
141
141
|
*/
|
|
142
142
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* Список обязательных
|
|
146
|
-
* Если
|
|
145
|
+
* Список обязательных языков, которые должны быть определены в каждом словаре.
|
|
146
|
+
* Если пусто, все языки обязательны в режиме `strict`.
|
|
147
147
|
* По умолчанию: []
|
|
148
148
|
*/
|
|
149
149
|
requiredLocales: [Locales.ENGLISH],
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
152
|
* Уровень строгости для интернационализированного контента.
|
|
153
|
-
* - "strict": Ошибка, если
|
|
154
|
-
* - "inclusive": Предупреждение, если
|
|
155
|
-
* - "loose": Принимает
|
|
153
|
+
* - "strict": Ошибка, если объявленный язык отсутствует или не объявлен.
|
|
154
|
+
* - "inclusive": Предупреждение, если объявленный язык отсутствует.
|
|
155
|
+
* - "loose": Принимает любой существующий язык.
|
|
156
156
|
* По умолчанию: "inclusive"
|
|
157
157
|
*/
|
|
158
158
|
strictMode: "inclusive",
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
|
-
*
|
|
161
|
+
* Язык по умолчанию, используемый как запасной, если запрошенный язык не найден.
|
|
162
162
|
* По умолчанию: Locales.ENGLISH
|
|
163
163
|
*/
|
|
164
164
|
defaultLocale: Locales.ENGLISH,
|
|
@@ -170,66 +170,66 @@ const config: IntlayerConfig = {
|
|
|
170
170
|
dictionary: {
|
|
171
171
|
/**
|
|
172
172
|
* Управляет способом импорта словарей.
|
|
173
|
-
* - "static":
|
|
174
|
-
* - "dynamic":
|
|
175
|
-
* - "fetch":
|
|
173
|
+
* - "static": Статический импорт во время сборки.
|
|
174
|
+
* - "dynamic": Динамический импорт с использованием Suspense.
|
|
175
|
+
* - "fetch": Динамическое получение через API Live Sync.
|
|
176
176
|
* По умолчанию: "static"
|
|
177
177
|
*/
|
|
178
178
|
importMode: "static",
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
|
-
* Стратегия автоматического заполнения
|
|
182
|
-
* Может быть логическим значением или шаблоном пути для
|
|
181
|
+
* Стратегия автоматического заполнения недостающих переводов с помощью ИИ.
|
|
182
|
+
* Может быть логическим значением или шаблоном пути для хранения заполненного контента.
|
|
183
183
|
* По умолчанию: true
|
|
184
184
|
*/
|
|
185
185
|
fill: true,
|
|
186
186
|
|
|
187
187
|
/**
|
|
188
188
|
* Физическое расположение файлов словарей.
|
|
189
|
-
* - "local":
|
|
190
|
-
* - "remote":
|
|
191
|
-
* - "hybrid":
|
|
192
|
-
* - "plugin" (или любая
|
|
189
|
+
* - "local": Хранятся в локальной файловой системе.
|
|
190
|
+
* - "remote": Хранятся в Intlayer CMS.
|
|
191
|
+
* - "hybrid": Хранятся и локально, и в Intlayer CMS.
|
|
192
|
+
* - "plugin" (или любая кастомная строка): Предоставляется плагином или кастомным источником.
|
|
193
193
|
* По умолчанию: "local"
|
|
194
194
|
*/
|
|
195
195
|
location: "local",
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
|
-
*
|
|
198
|
+
* Нужно ли автоматически преобразовывать контент (например, Markdown в HTML).
|
|
199
199
|
* По умолчанию: false
|
|
200
200
|
*/
|
|
201
201
|
contentAutoTransformation: false,
|
|
202
202
|
},
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
* Конфигурация маршрутизации и
|
|
205
|
+
* Конфигурация маршрутизации и middleware.
|
|
206
206
|
*/
|
|
207
207
|
routing: {
|
|
208
208
|
/**
|
|
209
|
-
* Стратегия маршрутизации
|
|
210
|
-
* - "prefix-no-default":
|
|
211
|
-
* - "prefix-all":
|
|
212
|
-
* - "no-prefix":
|
|
213
|
-
* - "search-params":
|
|
209
|
+
* Стратегия маршрутизации по языкам.
|
|
210
|
+
* - "prefix-no-default": Префикс для всех языков, кроме основного (например, /dashboard, /fr/dashboard).
|
|
211
|
+
* - "prefix-all": Префикс для всех языков (например, /en/dashboard, /fr/dashboard).
|
|
212
|
+
* - "no-prefix": Отсутствие языка в URL.
|
|
213
|
+
* - "search-params": Использование ?locale=...
|
|
214
214
|
* По умолчанию: "prefix-no-default"
|
|
215
215
|
*/
|
|
216
216
|
mode: "prefix-no-default",
|
|
217
217
|
|
|
218
218
|
/**
|
|
219
|
-
* Где хранить
|
|
220
|
-
*
|
|
219
|
+
* Где хранить выбранный пользователем язык.
|
|
220
|
+
* Опции: 'cookie', 'localStorage', 'sessionStorage', 'header' или их массив.
|
|
221
221
|
* По умолчанию: ['cookie', 'header']
|
|
222
222
|
*/
|
|
223
223
|
storage: ["cookie", "header"],
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
|
-
* Базовый путь для URL приложения.
|
|
226
|
+
* Базовый путь для URL-адресов приложения.
|
|
227
227
|
* По умолчанию: ""
|
|
228
228
|
*/
|
|
229
229
|
basePath: "",
|
|
230
230
|
|
|
231
231
|
/**
|
|
232
|
-
* Пользовательские правила перезаписи
|
|
232
|
+
* Пользовательские правила перезаписи URL для путей на конкретных языках.
|
|
233
233
|
*/
|
|
234
234
|
rewrite: nextjsRewrite({
|
|
235
235
|
"/[locale]/about": {
|
|
@@ -240,48 +240,48 @@ const config: IntlayerConfig = {
|
|
|
240
240
|
},
|
|
241
241
|
|
|
242
242
|
/**
|
|
243
|
-
*
|
|
243
|
+
* Настройки поиска и обработки файлов контента.
|
|
244
244
|
*/
|
|
245
245
|
content: {
|
|
246
246
|
/**
|
|
247
247
|
* Расширения файлов для сканирования словарей.
|
|
248
|
-
* По умолчанию: ['.content.ts', '.content.js', '.content.json' и
|
|
248
|
+
* По умолчанию: ['.content.ts', '.content.js', '.content.json' и т.д.]
|
|
249
249
|
*/
|
|
250
250
|
fileExtensions: [".content.ts", ".content.js", ".content.json"],
|
|
251
251
|
|
|
252
252
|
/**
|
|
253
|
-
*
|
|
253
|
+
* Директории, где находятся файлы .content.
|
|
254
254
|
* По умолчанию: ["."]
|
|
255
255
|
*/
|
|
256
256
|
contentDir: ["src"],
|
|
257
257
|
|
|
258
258
|
/**
|
|
259
|
-
*
|
|
259
|
+
* Директория с исходным кодом.
|
|
260
260
|
* Используется для оптимизации сборки и преобразования кода.
|
|
261
261
|
* По умолчанию: ["."]
|
|
262
262
|
*/
|
|
263
263
|
codeDir: ["src"],
|
|
264
264
|
|
|
265
265
|
/**
|
|
266
|
-
*
|
|
267
|
-
* По умолчанию: ['node_modules', '.intlayer' и
|
|
266
|
+
* Шаблоны для исключения из сканирования.
|
|
267
|
+
* По умолчанию: ['node_modules', '.intlayer' и т.д.]
|
|
268
268
|
*/
|
|
269
269
|
excludedPath: ["node_modules"],
|
|
270
270
|
|
|
271
271
|
/**
|
|
272
|
-
*
|
|
272
|
+
* Нужно ли отслеживать изменения и пересобирать словари во время разработки.
|
|
273
273
|
* По умолчанию: true в режиме разработки
|
|
274
274
|
*/
|
|
275
275
|
watch: true,
|
|
276
276
|
|
|
277
277
|
/**
|
|
278
|
-
*
|
|
278
|
+
* Команда для форматирования вновь созданных / обновленных файлов .content.
|
|
279
279
|
*/
|
|
280
280
|
formatCommand: 'npx prettier --write "{{file}}"',
|
|
281
281
|
},
|
|
282
282
|
|
|
283
283
|
/**
|
|
284
|
-
* Конфигурация визуального
|
|
284
|
+
* Конфигурация визуального редактора.
|
|
285
285
|
*/
|
|
286
286
|
editor: {
|
|
287
287
|
/**
|
|
@@ -291,7 +291,7 @@ const config: IntlayerConfig = {
|
|
|
291
291
|
enabled: true,
|
|
292
292
|
|
|
293
293
|
/**
|
|
294
|
-
* URL вашего приложения для
|
|
294
|
+
* URL вашего приложения для валидации источника (origin).
|
|
295
295
|
* По умолчанию: ""
|
|
296
296
|
*/
|
|
297
297
|
applicationURL: "http://localhost:3000",
|
|
@@ -315,31 +315,31 @@ const config: IntlayerConfig = {
|
|
|
315
315
|
cmsURL: "https://app.intlayer.org",
|
|
316
316
|
|
|
317
317
|
/**
|
|
318
|
-
* URL
|
|
318
|
+
* URL серверного API.
|
|
319
319
|
* По умолчанию: "https://back.intlayer.org"
|
|
320
320
|
*/
|
|
321
321
|
backendURL: "https://back.intlayer.org",
|
|
322
322
|
|
|
323
323
|
/**
|
|
324
|
-
*
|
|
324
|
+
* Нужно ли включать синхронизацию контента в реальном времени.
|
|
325
325
|
* По умолчанию: false
|
|
326
326
|
*/
|
|
327
327
|
liveSync: true,
|
|
328
328
|
},
|
|
329
329
|
|
|
330
330
|
/**
|
|
331
|
-
* Настройки
|
|
331
|
+
* Настройки переводов и генерации с помощью ИИ.
|
|
332
332
|
*/
|
|
333
333
|
ai: {
|
|
334
334
|
/**
|
|
335
|
-
*
|
|
336
|
-
*
|
|
335
|
+
* Используемый ИИ-провайдер.
|
|
336
|
+
* Опции: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
337
337
|
* По умолчанию: 'openai'
|
|
338
338
|
*/
|
|
339
339
|
provider: "openai",
|
|
340
340
|
|
|
341
341
|
/**
|
|
342
|
-
*
|
|
342
|
+
* Используемая модель выбранного провайдера.
|
|
343
343
|
*/
|
|
344
344
|
model: "gpt-4o",
|
|
345
345
|
|
|
@@ -349,21 +349,21 @@ const config: IntlayerConfig = {
|
|
|
349
349
|
apiKey: process.env.OPENAI_API_KEY,
|
|
350
350
|
|
|
351
351
|
/**
|
|
352
|
-
* Глобальный контекст для
|
|
352
|
+
* Глобальный контекст для направления ИИ при генерации переводов.
|
|
353
353
|
*/
|
|
354
354
|
applicationContext: "Это приложение для бронирования путешествий.",
|
|
355
355
|
|
|
356
356
|
/**
|
|
357
|
-
* Базовый URL для
|
|
357
|
+
* Базовый URL для ИИ API.
|
|
358
358
|
*/
|
|
359
359
|
baseURL: "http://localhost:3000",
|
|
360
360
|
|
|
361
361
|
/**
|
|
362
|
-
* Сериализация данных
|
|
362
|
+
* Сериализация данных
|
|
363
363
|
*
|
|
364
|
-
*
|
|
364
|
+
* Опции:
|
|
365
365
|
* - "json": По умолчанию, надежно; потребляет больше токенов.
|
|
366
|
-
* - "toon":
|
|
366
|
+
* - "toon": Меньше токенов, менее стабильно, чем JSON.
|
|
367
367
|
*
|
|
368
368
|
* По умолчанию: "json"
|
|
369
369
|
*/
|
|
@@ -376,101 +376,101 @@ const config: IntlayerConfig = {
|
|
|
376
376
|
build: {
|
|
377
377
|
/**
|
|
378
378
|
* Режим выполнения сборки.
|
|
379
|
-
* - "auto":
|
|
379
|
+
* - "auto": Автоматическая сборка во время сборки приложения.
|
|
380
380
|
* - "manual": Требуется явная команда сборки.
|
|
381
381
|
* По умолчанию: "auto"
|
|
382
382
|
*/
|
|
383
383
|
mode: "auto",
|
|
384
384
|
|
|
385
385
|
/**
|
|
386
|
-
*
|
|
386
|
+
* Нужно ли оптимизировать итоговый бандл, удаляя неиспользуемые словари.
|
|
387
387
|
* По умолчанию: true в продакшене
|
|
388
388
|
*/
|
|
389
389
|
optimize: true,
|
|
390
390
|
|
|
391
391
|
/**
|
|
392
|
-
* Формат вывода сгенерированных файлов словарей.
|
|
392
|
+
* Формат вывода для сгенерированных файлов словарей.
|
|
393
393
|
* По умолчанию: ['cjs', 'esm']
|
|
394
394
|
*/
|
|
395
395
|
outputFormat: ["cjs", "esm"],
|
|
396
396
|
|
|
397
397
|
/**
|
|
398
|
-
*
|
|
398
|
+
* Должна ли сборка проверять типы TypeScript.
|
|
399
399
|
* По умолчанию: false
|
|
400
400
|
*/
|
|
401
401
|
checkTypes: false,
|
|
402
402
|
},
|
|
403
403
|
|
|
404
404
|
/**
|
|
405
|
-
* Конфигурация
|
|
405
|
+
* Конфигурация логгера.
|
|
406
406
|
*/
|
|
407
407
|
log: {
|
|
408
408
|
/**
|
|
409
409
|
* Уровень логирования.
|
|
410
410
|
* - "default": Стандартное логирование.
|
|
411
|
-
* - "verbose":
|
|
412
|
-
* - "disabled":
|
|
411
|
+
* - "verbose": Подробное отладочное логирование.
|
|
412
|
+
* - "disabled": Без логирования.
|
|
413
413
|
* По умолчанию: "default"
|
|
414
414
|
*/
|
|
415
415
|
mode: "default",
|
|
416
416
|
|
|
417
417
|
/**
|
|
418
|
-
* Префикс для всех
|
|
418
|
+
* Префикс для всех сообщений лога.
|
|
419
419
|
* По умолчанию: "[intlayer]"
|
|
420
420
|
*/
|
|
421
421
|
prefix: "[intlayer]",
|
|
422
422
|
},
|
|
423
423
|
|
|
424
424
|
/**
|
|
425
|
-
*
|
|
425
|
+
* Конфигурация системы (продвинутые случаи использования)
|
|
426
426
|
*/
|
|
427
427
|
system: {
|
|
428
428
|
/**
|
|
429
|
-
*
|
|
429
|
+
* Директория для хранения локализованных словарей.
|
|
430
430
|
*/
|
|
431
431
|
dictionariesDir: ".intlayer/dictionary",
|
|
432
432
|
|
|
433
433
|
/**
|
|
434
|
-
*
|
|
434
|
+
* Директория для расширения модулей (module augmentation).
|
|
435
435
|
*/
|
|
436
436
|
moduleAugmentationDir: ".intlayer/types",
|
|
437
437
|
|
|
438
438
|
/**
|
|
439
|
-
*
|
|
439
|
+
* Директория для хранения неслитых (unmerged) словарей.
|
|
440
440
|
*/
|
|
441
441
|
unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
|
|
442
442
|
|
|
443
443
|
/**
|
|
444
|
-
*
|
|
444
|
+
* Директория для хранения типов словарей.
|
|
445
445
|
*/
|
|
446
446
|
typesDir: ".intlayer/types",
|
|
447
447
|
|
|
448
448
|
/**
|
|
449
|
-
*
|
|
449
|
+
* Директория, где хранятся основные файлы приложения.
|
|
450
450
|
*/
|
|
451
451
|
mainDir: ".intlayer/main",
|
|
452
452
|
|
|
453
453
|
/**
|
|
454
|
-
*
|
|
454
|
+
* Директория, где хранятся скомпилированные файлы конфигурации.
|
|
455
455
|
*/
|
|
456
456
|
configDir: ".intlayer/config",
|
|
457
457
|
|
|
458
458
|
/**
|
|
459
|
-
*
|
|
459
|
+
* Директория для файлов кэша.
|
|
460
460
|
*/
|
|
461
461
|
cacheDir: ".intlayer/cache",
|
|
462
462
|
},
|
|
463
463
|
|
|
464
464
|
/**
|
|
465
|
-
* Конфигурация компилятора (
|
|
465
|
+
* Конфигурация компилятора (продвинутые случаи использования)
|
|
466
466
|
*/
|
|
467
467
|
compiler: {
|
|
468
468
|
/**
|
|
469
|
-
*
|
|
469
|
+
* Нужно ли включать компилятор.
|
|
470
470
|
*
|
|
471
|
-
* - false:
|
|
472
|
-
* - true:
|
|
473
|
-
* - "build-only":
|
|
471
|
+
* - false: Отключить компилятор.
|
|
472
|
+
* - true: Включить компилятор.
|
|
473
|
+
* - "build-only": Пропускать компилятор при разработке для ускорения запуска.
|
|
474
474
|
*
|
|
475
475
|
* По умолчанию: false
|
|
476
476
|
*/
|
|
@@ -479,10 +479,10 @@ const config: IntlayerConfig = {
|
|
|
479
479
|
/**
|
|
480
480
|
* Определяет путь для выходных файлов. Заменяет `outputDir`.
|
|
481
481
|
*
|
|
482
|
-
* - Пути `./` разрешаются относительно
|
|
482
|
+
* - Пути `./` разрешаются относительно директории компонента.
|
|
483
483
|
* - Пути `/` разрешаются относительно корня проекта (`baseDir`).
|
|
484
484
|
*
|
|
485
|
-
* -
|
|
485
|
+
* - Наличие переменной `{{locale}}` в пути активирует генерацию отдельных словарей для каждого языка.
|
|
486
486
|
*
|
|
487
487
|
* Пример:
|
|
488
488
|
* ```ts
|
|
@@ -496,7 +496,7 @@ const config: IntlayerConfig = {
|
|
|
496
496
|
*
|
|
497
497
|
* ```ts
|
|
498
498
|
* {
|
|
499
|
-
* // Создавать централизованные JSON
|
|
499
|
+
* // Создавать централизованные JSON по языкам в корне проекта
|
|
500
500
|
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
501
501
|
*
|
|
502
502
|
* // output: '/locales/{{locale}}/{{key}}.content.json', // Эквивалентно через шаблонную строку
|
|
@@ -506,35 +506,35 @@ const config: IntlayerConfig = {
|
|
|
506
506
|
* Список переменных:
|
|
507
507
|
* - `fileName`: Имя файла.
|
|
508
508
|
* - `key`: Ключ контента.
|
|
509
|
-
* - `locale`:
|
|
509
|
+
* - `locale`: Язык контента (locale).
|
|
510
510
|
* - `extension`: Расширение файла.
|
|
511
511
|
* - `componentFileName`: Имя файла компонента.
|
|
512
512
|
* - `componentExtension`: Расширение файла компонента.
|
|
513
513
|
* - `format`: Формат словаря.
|
|
514
514
|
* - `componentFormat`: Формат словаря компонента.
|
|
515
|
-
* - `componentDirPath`: Путь к
|
|
515
|
+
* - `componentDirPath`: Путь к директории компонента.
|
|
516
516
|
*/
|
|
517
517
|
output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
|
|
518
518
|
|
|
519
519
|
/**
|
|
520
|
-
*
|
|
521
|
-
* Таким образом, компилятор можно запустить
|
|
520
|
+
* Сохранять ли компоненты после их преобразования.
|
|
521
|
+
* Таким образом, компилятор можно запустить один раз для преобразования приложения, а затем удалить.
|
|
522
522
|
*/
|
|
523
523
|
saveComponents: false,
|
|
524
524
|
|
|
525
525
|
/**
|
|
526
|
-
*
|
|
526
|
+
* Вставлять в сгенерированный файл только контент. Полезно для вывода в формате i18next или ICU MessageFormat JSON по языкам.
|
|
527
527
|
*/
|
|
528
528
|
noMetadata: false,
|
|
529
529
|
|
|
530
530
|
/**
|
|
531
531
|
* Префикс ключа словаря
|
|
532
532
|
*/
|
|
533
|
-
dictionaryKeyPrefix: "", //
|
|
533
|
+
dictionaryKeyPrefix: "", // Добавить опциональный префикс для извлеченных ключей словарей
|
|
534
534
|
},
|
|
535
535
|
|
|
536
536
|
/**
|
|
537
|
-
* Пользовательские схемы
|
|
537
|
+
* Пользовательские схемы для валидации содержимого словарей.
|
|
538
538
|
*/
|
|
539
539
|
schemas: {
|
|
540
540
|
"my-schema": z.object({
|
|
@@ -543,7 +543,7 @@ const config: IntlayerConfig = {
|
|
|
543
543
|
},
|
|
544
544
|
|
|
545
545
|
/**
|
|
546
|
-
* Конфигурация
|
|
546
|
+
* Конфигурация плагинов.
|
|
547
547
|
*/
|
|
548
548
|
plugins: [],
|
|
549
549
|
};
|
|
@@ -553,60 +553,62 @@ export default config;
|
|
|
553
553
|
|
|
554
554
|
---
|
|
555
555
|
|
|
556
|
-
## Справочник по конфигурации
|
|
556
|
+
## Справочник по конфигурации
|
|
557
557
|
|
|
558
|
-
|
|
558
|
+
Ниже описаны различные параметры конфигурации, доступные в Intlayer.
|
|
559
559
|
|
|
560
560
|
---
|
|
561
561
|
|
|
562
|
-
### Конфигурация интернационализации (Internationalization
|
|
562
|
+
### Конфигурация интернационализации (Internationalization)
|
|
563
563
|
|
|
564
|
-
Определяет настройки, связанные с интернационализацией, включая доступные
|
|
564
|
+
Определяет настройки, связанные с интернационализацией, включая доступные языки и язык по умолчанию.
|
|
565
565
|
|
|
566
|
-
| Поле | Тип |
|
|
567
|
-
| ----------------- | ---------- |
|
|
568
|
-
| `locales` |
|
|
569
|
-
| `requiredLocales`
|
|
570
|
-
| `strictMode` |
|
|
571
|
-
| `defaultLocale` |
|
|
566
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
567
|
+
| ----------------- | -------------------------------------------------------------------------------------------------- | ---------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
568
|
+
| `locales` | Список языков, поддерживаемых в приложении. | `string[]` | `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
|
|
569
|
+
| `requiredLocales` | Список обязательных языков в приложении. | `string[]` | `[]` | `[]` | • Если пусто, все языки обязательны в режиме `strict`.<br/>• Убедитесь, что обязательные языки также определены в поле `locales`. |
|
|
570
|
+
| `strictMode` | Обеспечивает надежную реализацию интернационализированного контента с помощью TypeScript. | `string` | `'inclusive'` | | • Если `"strict"`: функция `t` требует определения каждого объявленного языка — вызывает ошибку, если какой-то отсутствует или не объявлен.<br/>• Если `"inclusive"`: предупреждает об отсутствующих языках, но разрешает использование существующих необъявленных.<br/>• Если `"loose"`: принимает любой существующий язык. |
|
|
571
|
+
| `defaultLocale` | Язык по умолчанию, используемый как запасной, если запрошенный язык не найден. | `string` | `Locales.ENGLISH` | `'en'` | Используется для определения языка, когда он не указан в URL, куки или заголовке. |
|
|
572
572
|
|
|
573
573
|
---
|
|
574
574
|
|
|
575
|
-
### Конфигурация редактора (Editor
|
|
575
|
+
### Конфигурация редактора (Editor)
|
|
576
|
+
|
|
577
|
+
Определяет настройки для встроенного визуального редактора, включая порт сервера и статус включения.
|
|
578
|
+
|
|
579
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
580
|
+
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
581
|
+
| `applicationURL` | URL приложения. | `string` | `undefined` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • Используется для ограничения источника (origin) редактора из соображений безопасности.<br/>• Если установлено в `'*'`, редактор доступен из любого источника. |
|
|
582
|
+
| `port` | Порт, используемый сервером визуального редактора. | `number` | `8000` | | |
|
|
583
|
+
| `editorURL` | URL сервера редактора. | `string` | `'http://localhost:8000'` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • Используется для ограничения источников, которые могут взаимодействовать с приложением.<br/>• Если установлено в `'*'`, доступно из любого источника.<br/>• Должно быть установлено, если изменен порт или редактор хостится на другом домене. |
|
|
584
|
+
| `cmsURL` | URL Intlayer CMS. | `string` | `'https://app.intlayer.org'` | `'https://app.intlayer.org'` | |
|
|
585
|
+
| `backendURL` | URL бэкенд-сервера. | `string` | `https://back.intlayer.org` | `http://localhost:4000` | |
|
|
586
|
+
| `enabled` | Должно ли приложение взаимодействовать с визуальным редактором. | `boolean` | `false` | `process.env.NODE_ENV !== 'production'` | • Если `false`, редактор не может взаимодействовать с приложением.<br/>• Отключение для определенных окружений повышает безопасность. |
|
|
587
|
+
| `clientId` | Позволяет пакетам intlayer аутентифицироваться на бэкенде через oAuth2. Чтобы получить токен доступа, перейдите на [intlayer.org/project](https://app.intlayer.org/project). | `string` | <br/> `undefined` | `undefined` | | Должно храниться в секрете; используйте переменные окружения. |
|
|
588
|
+
| `clientSecret` | Позволяет пакетам intlayer аутентифицироваться на бэкенде через oAuth2. Чтобы получить токен доступа, перейдите на [intlayer.org/project](https://app.intlayer.org/project). | `string` | <br/> `undefined` | `undefined` | | Должно храниться в секрете; используйте переменные окружения. |
|
|
589
|
+
| `dictionaryPriorityStrategy` | Стратегия приоритета словарей при наличии и локальных, и удаленных словарей. | `string` | `'local_first'` | `'distant_first'` | • `'distant_first'`: приоритет удаленных словарей над локальными.<br/>• `'local_first'`: приоритет локальных словарей над удаленными. |
|
|
590
|
+
| `liveSync` | Должен ли сервер приложения мгновенно перезагружать контент при обнаружении изменений в CMS <br/> Визуальном редакторе <br/> Бэкенде. | `boolean` | `true` | `true` | • При добавлении/обновлении словаря приложение обновляет контент страницы.<br/>• Live Sync выносит контент на другой сервер, что может немного влиять на производительность.<br/>• Рекомендуется хостить оба на одной машине. |
|
|
591
|
+
| `liveSyncPort` | Порт сервера live sync. | `number` | `4000` | `4000` | |
|
|
592
|
+
| `liveSyncURL` | URL сервера live sync. | `string` | `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | По умолчанию указывает на localhost; может быть изменен на удаленный сервер live sync. |
|
|
576
593
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
580
|
-
| ---------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
581
|
-
| `applicationURL` | `string` | URL вашего приложения. По умолчанию: `''` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Используется для ограничения источников (origin) редактора из соображений безопасности. Если установлено значение `'*'`, редактор доступен из любого источника. |
|
|
582
|
-
| `port` | `number` | Порт, используемый сервером визуального редактора. По умолчанию: `8000` | | |
|
|
583
|
-
| `editorURL` | `string` | URL сервера редактора. По умолчанию: `'http://localhost:8000'` | `'http://localhost:3000'`, `'https://example.com'`, `process.env.INTLAYER_EDITOR_URL` | Используется для ограничения источников, которые могут взаимодействовать с приложением. Если установлено значение `'*'`, доступно из любого источника. Должно быть установлено при изменении порта или если редактор размещен на другом домене. |
|
|
584
|
-
| `cmsURL` | `string` | URL Intlayer CMS. По умолчанию: `'https://intlayer.org'` | `'https://intlayer.org'` | |
|
|
585
|
-
| `backendURL` | `string` | URL бэкенд-сервера. По умолчанию: `https://back.intlayer.org` | `http://localhost:4000` | |
|
|
586
|
-
| `enabled` | `boolean` | Указывает, будет ли приложение взаимодействовать с визуальным редактором. По умолчанию: `true` | `process.env.NODE_ENV !== 'production'` | Если `false`, редактор не может взаимодействовать с приложением. Отключение для определенных сред повышает безопасность. |
|
|
587
|
-
| `clientId` | `string | undefined` | Позволяет пакетам intlayer проходить аутентификацию на бэкенде с использованием oAuth2. Чтобы получить токен доступа, перейдите на [intlayer.org/project](https://app.intlayer.org/project). По умолчанию: `undefined` | | Держите в секрете; сохраняйте в переменных среды. |
|
|
588
|
-
| `clientSecret` | `string | undefined` | Позволяет пакетам intlayer проходить аутентификацию на бэкенде с использованием oAuth2. Чтобы получить токен доступа, перейдите на [intlayer.org/project](https://app.intlayer.org/project). По умолчанию: `undefined` | | Держите в секрете; сохраняйте в переменных среды. |
|
|
589
|
-
| `dictionaryPriorityStrategy` | `string` | Стратегия определения приоритетов словарей при наличии локальных и удаленных словарей. По умолчанию: `'local_first'` | `'distant_first'` | `'distant_first'`: отдает приоритет удаленным словарям перед локальными. `'local_first'`: отдает приоритет локальным словарям перед удаленными. |
|
|
590
|
-
| `liveSync` | `boolean` | Указывает, должен ли сервер приложений выполнять горячую перезагрузку контента при обнаружении изменений в CMS / визуальном редакторе / бэкенде. По умолчанию: `true` | `true` | При добавлении/обновлении словаря приложение обновляет контент страницы. Live sync передает контент на другой сервер, что может незначительно повлиять на производительность. Рекомендуется размещать оба на одной машине. |
|
|
591
|
-
| `liveSyncPort` | `number` | Порт сервера Live Sync. По умолчанию: `4000` | `4000` | |
|
|
592
|
-
| `liveSyncURL` | `string` | URL сервера Live Sync. По умолчанию: `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | По умолчанию указывает на localhost; может быть изменен на удаленный сервер Live Sync. |
|
|
594
|
+
---
|
|
593
595
|
|
|
594
|
-
### Конфигурация маршрутизации (Routing
|
|
596
|
+
### Конфигурация маршрутизации (Routing)
|
|
595
597
|
|
|
596
|
-
Настройки, управляющие поведением маршрутизации, включая структуру URL, хранение
|
|
598
|
+
Настройки, управляющие поведением маршрутизации, включая структуру URL, хранение языков и управление middleware.
|
|
597
599
|
|
|
598
|
-
| Поле | Тип
|
|
599
|
-
| ---------- |
|
|
600
|
-
| `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'`
|
|
601
|
-
| `storage` | `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array` |
|
|
602
|
-
| `basePath` |
|
|
603
|
-
| `rewrite` |
|
|
600
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
601
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
602
|
+
| `mode` | Режим маршрутизации URL для управления языками. | `'prefix-no-default'` | <br/> `'prefix-all'` | <br/> `'no-prefix'` | <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) или `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: язык управляется другими способами. `'search-params'`: `/dashboard?locale=fr` | Не влияет на управление куками или хранилищем языков. |
|
|
603
|
+
| `storage` | Конфигурация хранения языка на клиенте. | `false` | <br/> `'cookie'` | <br/> `'localStorage'` | <br/> `'sessionStorage'` | <br/> `'header'` | <br/> `CookiesAttributes` | <br/> `StorageAttributes` | <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | См. таблицу параметров хранения ниже. |
|
|
604
|
+
| `basePath` | Базовый путь для URL-адресов приложения. | `string` | `''` | `'/my-app'` | Если приложение находится по адресу `https://example.com/my-app`, basePath — `'/my-app'`, а URL становятся `https://example.com/my-app/en`. |
|
|
605
|
+
| `rewrite` | Пользовательские правила перезаписи URL, которые переопределяют режим маршрутизации по умолчанию для определенных путей. Поддерживает динамические параметры `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | См. пример ниже | • Правила перезаписи имеют приоритет над `mode`.<br/>• Работает с Next.js и Vite.<br/>• `getLocalizedUrl()` автоматически применяет соответствующие правила.<br/>• См. [Пользовательские перезаписи URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
|
|
604
606
|
|
|
605
607
|
**Пример `rewrite`**:
|
|
606
608
|
|
|
607
609
|
```typescript
|
|
608
610
|
routing: {
|
|
609
|
-
mode: "prefix-no-default", //
|
|
611
|
+
mode: "prefix-no-default", // Запасная стратегия
|
|
610
612
|
rewrite: nextjsRewrite({
|
|
611
613
|
"/about": {
|
|
612
614
|
en: "/about",
|
|
@@ -624,37 +626,37 @@ routing: {
|
|
|
624
626
|
}
|
|
625
627
|
```
|
|
626
628
|
|
|
627
|
-
#### Параметры хранения (Storage
|
|
629
|
+
#### Параметры хранения (Storage)
|
|
628
630
|
|
|
629
|
-
| Значение |
|
|
630
|
-
| ------------------ |
|
|
631
|
-
| `'cookie'` |
|
|
632
|
-
| `'localStorage'` |
|
|
633
|
-
| `'sessionStorage'` |
|
|
634
|
-
| `'header'` |
|
|
631
|
+
| Значение | Примечание | Описание |
|
|
632
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
633
|
+
| `'cookie'` | • Для соответствия GDPR обеспечьте надлежащее согласие пользователя.<br/>• Настраивается через `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). | Хранит язык в куках — доступно как на клиенте, так и на сервере. |
|
|
634
|
+
| `'localStorage'` | • Не истекает, если не будет явно очищено.<br/>• Прокси Intlayer не может получить к этому доступ.<br/>• Настраивается через `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). | Хранит язык в браузере без ограничения срока — только на стороне клиента. |
|
|
635
|
+
| `'sessionStorage'` | • Очищается при закрытии вкладки/окна.<br/>• Прокси Intlayer не может получить к этому доступ.<br/>• Настраивается через `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). | Хранит язык на время сессии страницы — только на стороне клиента. |
|
|
636
|
+
| `'header'` | • Полезно для вызовов API.<br/>• Сторона клиента не может получить доступ.<br/>• Настраивается через `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). | Хранит или передает язык через HTTP-заголовки — только на стороне сервера. |
|
|
635
637
|
|
|
636
|
-
#### Атрибуты куки (
|
|
638
|
+
#### Атрибуты куки (Cookies Attributes)
|
|
637
639
|
|
|
638
|
-
При использовании
|
|
640
|
+
При использовании хранения в куках можно настроить дополнительные атрибуты:
|
|
639
641
|
|
|
640
|
-
| Поле |
|
|
641
|
-
| ---------- |
|
|
642
|
-
| `name` |
|
|
643
|
-
| `domain` |
|
|
644
|
-
| `path` |
|
|
645
|
-
| `secure` |
|
|
646
|
-
| `httpOnly` |
|
|
647
|
-
| `sameSite` | `'strict' | 'lax' | 'none'` |
|
|
648
|
-
| `expires` |
|
|
642
|
+
| Поле | Описание | Тип |
|
|
643
|
+
| ---------- | ------------------------------------------- | ---------------------------------------------------- |
|
|
644
|
+
| `name` | Имя куки. По умолчанию: `'INTLAYER_LOCALE'` | `string` |
|
|
645
|
+
| `domain` | Домен куки. По умолчанию: `undefined` | `string` |
|
|
646
|
+
| `path` | Путь куки. По умолчанию: `undefined` | `string` |
|
|
647
|
+
| `secure` | Требовать HTTPS. По умолчанию: `undefined` | `boolean` |
|
|
648
|
+
| `httpOnly` | Флаг HTTP-only. По умолчанию: `undefined` | `boolean` |
|
|
649
|
+
| `sameSite` | Политика SameSite. | `'strict'` | <br/> `'lax'` | <br/> `'none'` |
|
|
650
|
+
| `expires` | Дата истечения или кол-во дней. По умолчанию: `undefined` | `Date` | <br/> `number` |
|
|
649
651
|
|
|
650
|
-
#### Атрибуты хранилища
|
|
652
|
+
#### Атрибуты хранилища (Storage Attributes)
|
|
651
653
|
|
|
652
654
|
При использовании localStorage или sessionStorage:
|
|
653
655
|
|
|
654
|
-
| Поле |
|
|
655
|
-
| ------ |
|
|
656
|
-
| `type` | `'localStorage' | 'sessionStorage'` |
|
|
657
|
-
| `name` |
|
|
656
|
+
| Поле | Описание | Тип |
|
|
657
|
+
| ------ | ----------------------------------------------- | ------------------------------------------------ |
|
|
658
|
+
| `type` | Тип хранилища. | `'localStorage'` | <br/> `'sessionStorage'` |
|
|
659
|
+
| `name` | Имя ключа в хранилище. По умолчанию: `'INTLAYER_LOCALE'` | `string` |
|
|
658
660
|
|
|
659
661
|
#### Примеры конфигурации
|
|
660
662
|
|
|
@@ -680,7 +682,7 @@ const config: IntlayerConfig = {
|
|
|
680
682
|
export default config;
|
|
681
683
|
```
|
|
682
684
|
|
|
683
|
-
|
|
685
|
+
**Конфигурация с соблюдением GDPR**:
|
|
684
686
|
|
|
685
687
|
```typescript
|
|
686
688
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -712,7 +714,7 @@ const config: IntlayerConfig = {
|
|
|
712
714
|
export default config;
|
|
713
715
|
```
|
|
714
716
|
|
|
715
|
-
**Режим параметров поиска (Search
|
|
717
|
+
**Режим параметров поиска (Search Params)**:
|
|
716
718
|
|
|
717
719
|
```typescript
|
|
718
720
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -732,7 +734,7 @@ const config: IntlayerConfig = {
|
|
|
732
734
|
export default config;
|
|
733
735
|
```
|
|
734
736
|
|
|
735
|
-
**Режим без префикса
|
|
737
|
+
**Режим без префикса с кастомным хранилищем**:
|
|
736
738
|
|
|
737
739
|
```typescript
|
|
738
740
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -767,7 +769,7 @@ const config: IntlayerConfig = {
|
|
|
767
769
|
defaultLocale: "en",
|
|
768
770
|
},
|
|
769
771
|
routing: {
|
|
770
|
-
mode: "prefix-no-default", //
|
|
772
|
+
mode: "prefix-no-default", // Запасной вариант для неперезаписанных путей
|
|
771
773
|
storage: "cookie",
|
|
772
774
|
rewrite: nextjsRewrite({
|
|
773
775
|
"/about": {
|
|
@@ -791,153 +793,166 @@ export default config;
|
|
|
791
793
|
|
|
792
794
|
---
|
|
793
795
|
|
|
794
|
-
### Конфигурация контента (Content
|
|
795
|
-
|
|
796
|
-
Настройки обработки контента в приложении (имена каталогов, расширения файлов и производные конфигурации).
|
|
797
|
-
|
|
798
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
799
|
-
| ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
800
|
-
| `watch` | `boolean` | Указывает, должен ли Intlayer следить за изменениями в файлах объявления контента для пересборки словарей. По умолчанию: `process.env.NODE_ENV === 'development'` | | |
|
|
801
|
-
| `fileExtensions` | `string[]` | Расширения файлов, используемые для сканирования файлов объявления контента. По умолчанию: `['.content.ts', '.content.js', '.content.mjs', '.content.cjs', '.content.json', '.content.json5', '.content.jsonc']` | `['.content.ts', '.content.js']` | |
|
|
802
|
-
| `contentDir` | `string[]` | Пути к каталогам, где расположены файлы объявления контента. По умолчанию: `['.']` | `['src/content']` | |
|
|
803
|
-
| `codeDir` | `string[]` | Пути к каталогам, где находятся файлы исходного кода вашего приложения. По умолчанию: `['.']` | `['src']` | Используется для оптимизации сборки и обеспечения применения преобразования кода и горячей перезагрузки только к необходимым файлам. |
|
|
804
|
-
| `excludedPath` | `string[]` | Пути, исключаемые из сканирования контента. По умолчанию: `['node_modules', '.intlayer', '.next', 'dist', 'build']` | `['src/styles']` | |
|
|
805
|
-
| `formatCommand` | `string` | Команда, которая будет запущена для форматирования вновь созданных или обновленных файлов контента. По умолчанию: `undefined` | `'npx prettier --write "{{file}}"'` | Используется при извлечении контента или через визуальный редактор. |
|
|
806
|
-
|
|
807
|
-
---
|
|
808
|
-
|
|
809
|
-
### Конфигурация словаря (Dictionary Configuration)
|
|
810
|
-
|
|
811
|
-
Настройки, управляющие способом импорта словарей и управлением ими.
|
|
796
|
+
### Конфигурация контента (Content)
|
|
812
797
|
|
|
813
|
-
|
|
814
|
-
| --------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
815
|
-
| `importMode` | `'static' | 'dynamic' | 'fetch'` | Режим импорта словарей. По умолчанию: `'static'` | `'static'`: словари импортируются при сборке. `'dynamic'`: загружаются по требованию. `'fetch'`: извлекаются из удаленного API. | См. режим импорта ниже. |
|
|
816
|
-
| `fill` | `boolean | DictionaryFill` | Заполнять ли отсутствующие переводы автоматически с помощью AI. По умолчанию: `true` в режиме разработки | `true` | Помогает идентифицировать отсутствующие переводы. Можно настроить сохранение результатов локально. |
|
|
817
|
-
| `location` | `'local' | 'remote' | 'hybrid' | string` | Где хранятся словари. По умолчанию: `'local'` | `'remote'` | `'local'`: файловая система. `'remote'`: Intlayer CMS. `'hybrid'`: и то, и другое. |
|
|
818
|
-
| `contentAutoTransformation` | `boolean` | Указывает, должны ли файлы контента автоматически преобразовываться (например, из Markdown в HTML). По умолчанию: `false` | `true` | Полезно для обработки Markdown полей через @intlayer/markdown. |
|
|
798
|
+
Настройки, связанные с тем, как контент управляется в приложении, включая имена директорий, расширения файлов и производные конфигурации.
|
|
819
799
|
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
|
823
|
-
|
|
|
824
|
-
| `
|
|
825
|
-
| `'
|
|
826
|
-
| `
|
|
800
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
801
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
802
|
+
| `watch` | Указывает, должен ли Intlayer отслеживать изменения в файлах декларации контента для пересборки словарей. | `boolean` | `true` | | |
|
|
803
|
+
| `fileExtensions` | Расширения файлов для сканирования при компиляции словарей. | `string[]` | `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx']` | `['.data.ts', '.data.js', '.data.json']` | Настройка поможет избежать конфликтов. |
|
|
804
|
+
| `contentDir` | Путь к директории, где хранятся файлы определения контента (`.content.*`). | `string[]` | `['.']` | `['src', '../../ui-library', require.resolve("@my-package/content")]` | Используется для отслеживания файлов контента и пересборки словарей. |
|
|
805
|
+
| `codeDir` | Путь к директории, где хранится код, относительно базовой директории. | `string[]` | `['.']` | `['src', '../../ui-library']` | • Используется для отслеживания файлов кода для преобразования (удаление лишнего, оптимизация).<br/>• Отделение от `contentDir` может повысить производительность. |
|
|
806
|
+
| `excludedPath` | Директории, исключенные из сканирования контента. | `string[]` | `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']` | | Пока не используется; планируется в будущем. |
|
|
807
|
+
| `formatCommand` | Команда для форматирования файлов контента при их локальной записи Intlayer. | `string` | `undefined` | `'npx prettier --write "{{file}}" --log-level silent'` (Prettier), `'npx biome format "{{file}}" --write --log-level none'` (Biome), `'npx eslint --fix "{{file}}" --quiet'` (ESLint) | • `{{file}}` будет заменено на путь к файлу.<br/>• Если не определено, Intlayer определит автоматически (тестирует prettier, biome, eslint). |
|
|
827
808
|
|
|
828
809
|
---
|
|
829
810
|
|
|
830
|
-
### Конфигурация словарей (Dictionary
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
|
842
|
-
|
|
|
843
|
-
| `
|
|
844
|
-
| `
|
|
845
|
-
| `
|
|
846
|
-
| `
|
|
811
|
+
### Конфигурация словарей (Dictionary)
|
|
812
|
+
|
|
813
|
+
Параметры, управляющие операциями со словарями, включая поведение автоматического заполнения и генерацию контента.
|
|
814
|
+
|
|
815
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
816
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
817
|
+
| `fill` | Управляет тем, как генерируются выходные файлы автозаполнения (ИИ-перевод). | `boolean` | <br/> `FilePathPattern` | <br/> `Partial<Record<Locale, boolean | FilePathPattern>>` | `true` | `{ en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false }` | • `true`: путь по умолчанию (тот же файл, что и источник).<br/>• `false`: отключить.<br/>• Шаблон строка/функция генерирует файлы по языкам.<br/>• Объект по языкам: каждый язык соответствует своему шаблону; `false` игнорирует этот язык.<br/>• Включение `{{locale}}` активирует генерацию по языкам.<br/>• `fill` на уровне словаря всегда имеет приоритет над этой глобальной настройкой. |
|
|
818
|
+
| `description` | Помогает редактору и CMS понять назначение словаря. Также используется как контекст для генерации переводов с помощью ИИ. | `string` | `undefined` | `'User profile section'` | |
|
|
819
|
+
| `locale` | Преобразует словарь в формат для конкретного языка. Каждое объявленное поле становится узлом перевода. Если отсутствует, словарь считается многоязычным. | `LocalesValues` | `undefined` | `'en'` | Используйте это, если словарь предназначен для одного конкретного языка, а не содержит переводы для нескольких. |
|
|
820
|
+
| `contentAutoTransformation` | Автоматически преобразует строки контента в типизированные узлы (markdown, HTML или вставка). | `boolean` | <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • Markdown : `### Title` → `md('### Title')`.<br/>• HTML : `<div>Title</div>` → `html('<div>Title</div>')`.<br/>• Вставка : `Hello {{name}}` → `insert('Hello {{name}}')`. |
|
|
821
|
+
| `location` | Указывает, где хранятся файлы словарей и как они синхронизируются с CMS. | `'local'` | <br/> `'remote'` | <br/> `'hybrid'` | <br/> `'plugin'` | <br/> `string` | `'local'` | `'hybrid'` | • `'local'`: управление только локально.<br/>• `'remote'`: управление только удаленно (CMS).<br/>• `'hybrid'`: управление и локально, и удаленно.<br/>• `'plugin'` или кастомная строка: управление плагином или кастомным источником. |
|
|
822
|
+
| `importMode` | Управляет способом импорта словарей. | `'static'` | <br/> `'dynamic'` | <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: статический импорт.<br/>• `'dynamic'`: динамический импорт через Suspense.<br/>• `'fetch'`: получение через Live Sync API; откат к `'dynamic'` при неудаче.<br/>• Требует плагины `@intlayer/babel` и `@intlayer/swc`.<br/>• Ключи должны быть объявлены статически.<br/>• Игнорируется, если `optimize` выключен.<br/>• Не влияет на `getIntlayer`, `getDictionary` и т.д. |
|
|
823
|
+
| `priority` | Приоритет словаря. Более высокие значения побеждают более низкие при разрешении конфликтов между словарями. | `number` | `undefined` | `1` | |
|
|
824
|
+
| `live` | Устарело — используйте `importMode: 'fetch'`. Указывало, должен ли контент словаря получаться динамически через Live Sync API. | `boolean` | `undefined` | | Переименовано в `importMode: 'fetch'` в v8.0.0. |
|
|
825
|
+
| `schema` | Генерируется автоматически Intlayer для валидации JSON-схемы. | `'https://intlayer.org/schema.json'` | авто-генерация | | Не редактируйте вручную. |
|
|
826
|
+
| `title` | Помогает идентифицировать словарь в редакторе и CMS. | `string` | `undefined` | `'User Profile'` | |
|
|
827
|
+
| `tags` | Категоризирует словари и предоставляет контекст или инструкции для редактора и ИИ. | `string[]` | `undefined` | `['user', 'profile']` | |
|
|
828
|
+
| `version` | Версия удаленного словаря; помогает отслеживать текущую используемую версию. | `string` | `undefined` | `'1.0.0'` | • Управляется в CMS.<br/>• Не редактируйте локально. |
|
|
847
829
|
|
|
848
830
|
**Пример `fill`**:
|
|
849
831
|
|
|
850
832
|
```ts
|
|
851
833
|
dictionary: {
|
|
852
834
|
fill: {
|
|
853
|
-
en:
|
|
835
|
+
en: "/locales/en/{{key}}.content.json",
|
|
854
836
|
fr: ({ key }) => `/locales/fr/${key}.content.json`,
|
|
855
837
|
es: false,
|
|
856
|
-
}
|
|
857
|
-
}
|
|
838
|
+
},
|
|
839
|
+
};
|
|
858
840
|
```
|
|
859
841
|
|
|
860
842
|
---
|
|
861
843
|
|
|
862
|
-
### Конфигурация
|
|
844
|
+
### Конфигурация логгера (Log)
|
|
863
845
|
|
|
864
|
-
|
|
846
|
+
Параметры для настройки вывода логов Intlayer.
|
|
865
847
|
|
|
866
|
-
| Поле
|
|
867
|
-
|
|
|
868
|
-
| `
|
|
869
|
-
| `
|
|
870
|
-
| `apiKey` | `string` | API-ключ для выбранного провайдера. | `process.env.OPENAI_API_KEY` | |
|
|
871
|
-
| `applicationContext` | `string` | Дополнительный контекст о вашем приложении для повышения точности перевода AI. | `'Обучающая платформа для детей.'` | |
|
|
872
|
-
| `baseURL` | `string` | Необязательный базовый URL для API-вызовов. | | Полезно, если вы используете прокси или локальное развертывание AI. |
|
|
873
|
-
| `dataSerialization` | `'json' | 'toon'` | Определяет способ отправки данных в AI. По умолчанию: `'json'` | `'json'` | `'json'`: более надежно и точно. `'toon'`: потребляет меньше токенов, но может быть менее стабильным. |
|
|
848
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
849
|
+
| -------- | ----------------------------------- | -------------------------------------------------------------- | ----------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
850
|
+
| `mode` | Указывает режим логгера. | `'default'` | <br/> `'verbose'` | <br/> `'disabled'` | `'default'` | `'verbose'` | • `'verbose'`: логирует больше информации для отладки.<br/>• `'disabled'`: полностью отключает логгер. |
|
|
851
|
+
| `prefix` | Префикс для всех сообщений в логе. | `string` | `'[intlayer] '` | `'[my prefix] '` | |
|
|
874
852
|
|
|
875
853
|
---
|
|
876
854
|
|
|
877
|
-
### Конфигурация
|
|
855
|
+
### Конфигурация ИИ (AI)
|
|
856
|
+
|
|
857
|
+
Настройки, управляющие ИИ-функциями Intlayer, включая провайдера, модель и API-ключ.
|
|
858
|
+
|
|
859
|
+
Эта конфигурация опциональна, если вы зарегистрированы в [Intlayer Dashboard](https://app.intlayer.org/project) с ключом доступа. Intlayer будет автоматически управлять наиболее эффективным и экономичным решением ИИ для ваших нужд. Использование параметров по умолчанию гарантирует лучшую долгосрочную поддержку, так как Intlayer постоянно обновляется для использования наиболее актуальных моделей.
|
|
860
|
+
|
|
861
|
+
Если вы предпочитаете использовать собственный API-ключ или конкретную модель, вы можете определить свою конфигурацию ИИ.
|
|
862
|
+
Эта конфигурация ИИ будет использоваться глобально в вашей среде Intlayer. Команды CLI будут использовать эти настройки по умолчанию для таких команд, как `fill`, так же как и SDK, визуальный редактор и CMS. Вы можете переопределить эти значения по умолчанию для конкретных случаев использования через параметры команд.
|
|
863
|
+
|
|
864
|
+
Intlayer поддерживает несколько ИИ-провайдеров для максимальной гибкости. На данный момент поддерживаются следующие провайдеры:
|
|
865
|
+
|
|
866
|
+
- **OpenAI** (По умолчанию)
|
|
867
|
+
- **Anthropic Claude**
|
|
868
|
+
- **Mistral AI**
|
|
869
|
+
- **DeepSeek**
|
|
870
|
+
- **Google Gemini**
|
|
871
|
+
- **Google AI Studio**
|
|
872
|
+
- **Google Vertex**
|
|
873
|
+
- **Meta Llama**
|
|
874
|
+
- **Ollama**
|
|
875
|
+
- **OpenRouter**
|
|
876
|
+
- **Alibaba Cloud**
|
|
877
|
+
- **Fireworks**
|
|
878
|
+
- **Hugging Face**
|
|
879
|
+
- **Groq**
|
|
880
|
+
- **Amazon Bedrock**
|
|
881
|
+
- **Together.ai**
|
|
882
|
+
|
|
883
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
884
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
885
|
+
| `provider` | Провайдер, используемый для ИИ-функций Intlayer. | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | `undefined` | `'anthropic'` | Разные провайдеры требуют разные API-ключи и имеют разную стоимость. |
|
|
886
|
+
| `model` | Модель, используемая для ИИ-функций. | `string` | Нет | `'gpt-4o-2024-11-20'` | Конкретная модель зависит от провайдера. |
|
|
887
|
+
| `temperature` | Управляет случайностью ответов ИИ. | `number` | Нет | `0.1` | Выше температура = более креативно и менее предсказуемо. |
|
|
888
|
+
| `apiKey` | Ваш API-ключ для выбранного провайдера. | `string` | Нет | `process.env.OPENAI_API_KEY` | Должно храниться в секрете; используйте переменные окружения. |
|
|
889
|
+
| `applicationContext` | Дополнительный контекст о вашем приложении, чтобы помочь ИИ генерировать более точные переводы (домен, целевая аудитория, тон, терминология). | `string` | Нет | `'My own application context'` | Можно использовать для добавления правил (например: `"You should not transform URLs"`). |
|
|
890
|
+
| `baseURL` | Базовый URL для ИИ API. | `string` | Нет | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Может указывать на локальный или кастомный эндпоинт ИИ API. |
|
|
891
|
+
| `dataSerialization` | Формат сериализации данных для ИИ-функций. | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: по умолчанию, надежно; потребляет больше токенов.<br/>• `'toon'`: меньше токенов, менее стабильно.<br/>• Дополнительные параметры передаются в модель как контекст (усилия рассуждения и т.д.). |
|
|
878
892
|
|
|
879
|
-
|
|
893
|
+
---
|
|
880
894
|
|
|
881
|
-
|
|
882
|
-
| -------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- |
|
|
883
|
-
| `mode` | `'auto' | 'manual'` | Указывает, должен ли Intlayer запускаться автоматически во время шагов предварительной сборки приложения. По умолчанию: `'auto'` | | |
|
|
884
|
-
| `optimize` | `boolean` | Указывает, должны ли скомпилированные словари быть оптимизированы для рантайма. По умолчанию: `true` в продакшене | | |
|
|
885
|
-
| `outputFormat` | `('cjs' | 'esm')[]` | Формат вывода сгенерированных файлов словарей. По умолчанию: `['cjs', 'esm']` | | |
|
|
886
|
-
| `checkTypes` | `boolean` | Указывает, должен ли Intlayer проверять типы в сгенерированных файлах. По умолчанию: `false` | | |
|
|
895
|
+
### Конфигурация сборки (Build)
|
|
887
896
|
|
|
888
|
-
|
|
897
|
+
Параметры, управляющие тем, как Intlayer оптимизирует и компилирует интернационализацию вашего приложения.
|
|
898
|
+
|
|
899
|
+
Опции сборки применяются к плагинам `@intlayer/babel` и `@intlayer/swc`.
|
|
889
900
|
|
|
890
|
-
|
|
901
|
+
> В режиме разработки Intlayer использует статический импорт словарей для упрощения процесса разработки.
|
|
891
902
|
|
|
892
|
-
|
|
903
|
+
> Во время оптимизации Intlayer заменит вызовы словарей для оптимизации чанкинга (chunking), чтобы итоговый бандл импортировал только те словари, которые действительно используются.
|
|
893
904
|
|
|
894
|
-
| Поле
|
|
895
|
-
|
|
|
896
|
-
| `
|
|
897
|
-
| `
|
|
898
|
-
| `
|
|
899
|
-
| `
|
|
900
|
-
| `
|
|
901
|
-
| `configDir` | `string` | Каталог скомпилированных конфигурационных файлов. | `'.intlayer/config'` |
|
|
902
|
-
| `cacheDir` | `string` | Каталог файлов кэша. | `'.intlayer/cache'` |
|
|
905
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
906
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------ | -------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
907
|
+
| `mode` | Управляет режимом сборки. | `'auto'` | <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: сборка запускается автоматически при сборке приложения.<br/>• `'manual'`: выполняется только при явном вызове команды сборки.<br/>• Можно использовать для отключения сборки словарей (например, чтобы избежать выполнения в средах Node.js). |
|
|
908
|
+
| `optimize` | Управляет тем, должна ли выполняться оптимизация сборки. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Если не определено, оптимизация запускается при сборке фреймворка (Vite/Next.js).<br/>• `true` форсирует оптимизацию даже в dev режиме.<br/>• `false` отключает ее.<br/>• Если включено, заменяет вызовы словарей для оптимизации чанкинга.<br/>• Требует плагины `@intlayer/babel` и `@intlayer/swc`. |
|
|
909
|
+
| `checkTypes` | Указывает, должна ли сборка проверять типы TypeScript и логировать ошибки. | `boolean` | `false` | | Может замедлить процесс сборки. |
|
|
910
|
+
| `outputFormat` | Управляет выходным форматом словарей. | `('esm' | 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
|
|
911
|
+
| `traversePattern` | Шаблоны, определяющие, какие файлы сканировать во время оптимизации. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Ограничьте оптимизацию релевантными файлами для повышения производительности сборки.<br/>• Игнорирует, если `optimize` выключен.<br/>• Использует шаблоны glob. |
|
|
903
912
|
|
|
904
913
|
---
|
|
905
914
|
|
|
906
|
-
###
|
|
915
|
+
### Системная конфигурация (System)
|
|
907
916
|
|
|
908
|
-
|
|
917
|
+
Эти настройки предназначены для продвинутых случаев использования и внутренней конфигурации Intlayer.
|
|
909
918
|
|
|
910
|
-
| Поле
|
|
911
|
-
|
|
|
912
|
-
| `
|
|
913
|
-
| `
|
|
914
|
-
| `
|
|
915
|
-
| `
|
|
916
|
-
| `
|
|
919
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
920
|
+
| ------------------------- | ---------------------------------------------------- | -------- | --------------------------------- | ------ | ---------- |
|
|
921
|
+
| `dictionariesDir` | Директория для скомпилированных словарей. | `string` | `'.intlayer/dictionary'` | | |
|
|
922
|
+
| `moduleAugmentationDir` | Директория для расширения модулей TypeScript. | `string` | `'.intlayer/types'` | | |
|
|
923
|
+
| `unmergedDictionariesDir` | Директория для хранения неслитых словарей. | `string` | `'.intlayer/unmerged_dictionary'` | | |
|
|
924
|
+
| `typesDir` | Директория для сгенерированных типов. | `string` | `'.intlayer/types'` | | |
|
|
925
|
+
| `mainDir` | Директория основного файла Intlayer. | `string` | `'.intlayer/main'` | | |
|
|
926
|
+
| `configDir` | Директория скомпилированных файлов конфигурации. | `string` | `'.intlayer/config'` | | |
|
|
927
|
+
| `cacheDir` | Директория файлов кэша. | `string` | `'.intlayer/cache'` | | |
|
|
917
928
|
|
|
918
929
|
---
|
|
919
930
|
|
|
920
|
-
### Конфигурация
|
|
931
|
+
### Конфигурация компилятора (Compiler)
|
|
921
932
|
|
|
922
|
-
|
|
933
|
+
Настройки, управляющие компилятором Intlayer, который извлекает словари напрямую из ваших компонентов.
|
|
923
934
|
|
|
924
|
-
| Поле
|
|
925
|
-
|
|
|
926
|
-
| `
|
|
927
|
-
| `
|
|
935
|
+
| Поле | Описание | Тип | По умолчанию | Пример | Примечание |
|
|
936
|
+
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
937
|
+
| `enabled` | Указывает, должен ли компилятор быть включен для извлечения словарей. | `boolean` | <br/> `'build-only'` | `true` | `'build-only'` | `'build-only'` пропускает компилятор при разработке для ускорения сборки; выполняется только при командах сборки. |
|
|
938
|
+
| `dictionaryKeyPrefix` | Префикс для извлеченных ключей словарей. | `string` | `''` | `'my-prefix-'` | Добавляется к сгенерированному ключу (на основе имени файла) для предотвращения конфликтов. |
|
|
939
|
+
| `saveComponents` | Должны ли компоненты сохраняться после их преобразования. | `boolean` | `false` | | • Если `true`, перезаписывает исходные файлы их преобразованными версиями.<br/>• Компилятор можно удалить после одного запуска. |
|
|
940
|
+
| `output` | Определяет путь для выходных файлов. Заменяет `outputDir`. Поддерживает переменные шаблона: `{{fileName}}`, <br/> `{{key}}`, <br/> `{{locale}}`, <br/> `{{extension}}`, <br/> `{{componentFileName}}`, <br/> `{{componentExtension}}`, <br/> `{{format}}`, <br/> `{{componentFormat}}`, <br/> `{{componentDirPath}}`. | `boolean` | <br/> `FilePathPattern` | <br/> `Partial<Record<Locale, boolean | FilePathPattern>>` | `undefined` | `'./{{fileName}}{{extension}}'` <br/> `'/locales/{{locale}}/{{key}}.json'` <br/> `{ en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }` | • Пути `./` разрешаются относительно директории компонента.<br/>• Пути `/` относительно корня.<br/>• `{{locale}}` включает генерацию по языкам.<br/>• Поддерживает объектную нотацию для каждого языка. |
|
|
941
|
+
| `noMetadata` | Если `true`, компилятор опускает метаданные словаря (ключ, обертку контента) из вывода. | `boolean` | `false` | `false` → `{"key":"my-key","content":{"key":"value"}}` <br/> `true` → `{"key":"value"}` | • Полезно для вывода в формате i18next или ICU MessageFormat JSON.<br/>• Хорошо работает с плагином `loadJSON`. |
|
|
942
|
+
| `dictionaryKeyPrefix` | Префикс ключа словаря | `string` | `''` | | Добавить опциональный префикс для извлеченных ключей словарей |
|
|
928
943
|
|
|
929
944
|
---
|
|
930
945
|
|
|
931
946
|
### Пользовательские схемы (Custom Schemas)
|
|
932
947
|
|
|
933
|
-
| Поле | Тип |
|
|
934
|
-
| --------- |
|
|
935
|
-
| `schemas` |
|
|
948
|
+
| Поле | Описание | Тип |
|
|
949
|
+
| --------- | ------------------------------------------------------------------------------- | --------------------------- |
|
|
950
|
+
| `schemas` | Позволяет определять схемы Zod для валидации структуры ваших словарей. | `Record<string, ZodSchema>` |
|
|
936
951
|
|
|
937
952
|
---
|
|
938
953
|
|
|
939
954
|
### Плагины (Plugins)
|
|
940
955
|
|
|
941
|
-
| Поле | Тип |
|
|
942
|
-
| --------- |
|
|
943
|
-
| `plugins` |
|
|
956
|
+
| Поле | Описание | Тип |
|
|
957
|
+
| --------- | ----------------------------------------- | ------------------ |
|
|
958
|
+
| `plugins` | Список плагинов Intlayer для включения. | `IntlayerPlugin[]` |
|