@intlayer/docs 8.4.6 → 8.4.7
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/en/configuration.md +115 -137
- package/docs/es/configuration.md +14 -6
- package/docs/fr/configuration.md +14 -6
- package/package.json +6 -6
- package/docs/ar/configuration.md +0 -922
- package/docs/bn/configuration.md +0 -922
- package/docs/de/configuration.md +0 -922
- package/docs/en-GB/configuration.md +0 -922
- package/docs/hi/configuration.md +0 -922
- package/docs/id/configuration.md +0 -922
- package/docs/it/configuration.md +0 -923
- package/docs/ja/configuration.md +0 -922
- package/docs/ko/configuration.md +0 -922
- package/docs/pl/configuration.md +0 -922
- package/docs/pt/configuration.md +0 -922
- package/docs/ru/configuration.md +0 -943
- package/docs/tr/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
DELETED
|
@@ -1,943 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-03-20
|
|
4
|
-
title: Конфигурация (Configuration)
|
|
5
|
-
description: Узнайте, как настроить Intlayer для вашего приложения. Поймите различные настройки и опции, доступные для настройки Intlayer в соответствии с вашими потребностями.
|
|
6
|
-
keywords:
|
|
7
|
-
- Конфигурация
|
|
8
|
-
- Настройки
|
|
9
|
-
- Кастомизация
|
|
10
|
-
- Intlayer
|
|
11
|
-
- Опции
|
|
12
|
-
slugs:
|
|
13
|
-
- doc
|
|
14
|
-
- concept
|
|
15
|
-
- configuration
|
|
16
|
-
history:
|
|
17
|
-
- version: 8.4.0
|
|
18
|
-
date: 2026-03-20
|
|
19
|
-
changes: Добавлена нотация объектов по локалям для 'compiler.output' и 'dictionary.fill'
|
|
20
|
-
- version: 8.3.0
|
|
21
|
-
date: 2026-03-11
|
|
22
|
-
changes: Перенесен 'baseDir' из конфигурации 'content' в конфигурацию 'system'
|
|
23
|
-
- version: 8.2.0
|
|
24
|
-
date: 2026-03-09
|
|
25
|
-
changes: Обновлены параметры компилятора (compiler), добавлена поддержка для 'output' и 'noMetadata'
|
|
26
|
-
- version: 8.1.7
|
|
27
|
-
date: 2026-02-25
|
|
28
|
-
changes: Обновлены параметры компилятора
|
|
29
|
-
- version: 8.1.5
|
|
30
|
-
date: 2026-02-23
|
|
31
|
-
changes: Добавлен параметр компилятора 'build-only' и префикс словаря
|
|
32
|
-
- version: 8.0.6
|
|
33
|
-
date: 2026-02-12
|
|
34
|
-
changes: Добавлена поддержка провайдеров Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face и Together.ai
|
|
35
|
-
- version: 8.0.5
|
|
36
|
-
date: 2026-02-06
|
|
37
|
-
changes: Добавлен `dataSerialization` в конфигурацию AI
|
|
38
|
-
- version: 8.0.0
|
|
39
|
-
date: 2026-01-24
|
|
40
|
-
changes: Переименован режим импорта `live` в `fetch` для лучшего описания базового механизма.
|
|
41
|
-
- version: 8.0.0
|
|
42
|
-
date: 2026-01-22
|
|
43
|
-
changes: Перенесена конфигурация сборки `importMode` в конфигурацию `dictionary`.
|
|
44
|
-
- version: 8.0.0
|
|
45
|
-
date: 2026-01-22
|
|
46
|
-
changes: Добавлен параметр `rewrite` в конфигурацию маршрутизации
|
|
47
|
-
- version: 8.0.0
|
|
48
|
-
date: 2026-01-18
|
|
49
|
-
changes: Разделена системная конфигурация и конфигурация контента. Внутренние пути перемещены в свойство `system`. Добавлен `codeDir` для разделения файлов контента и преобразования кода.
|
|
50
|
-
- version: 8.0.0
|
|
51
|
-
date: 2026-01-18
|
|
52
|
-
changes: Добавлены параметры словаря `location` и `schema`
|
|
53
|
-
- version: 7.5.1
|
|
54
|
-
date: 2026-01-10
|
|
55
|
-
changes: Добавлена поддержка форматов файлов JSON5 и JSONC
|
|
56
|
-
- version: 7.5.0
|
|
57
|
-
date: 2025-12-17
|
|
58
|
-
changes: Добавлен параметр `buildMode`
|
|
59
|
-
- version: 7.0.0
|
|
60
|
-
date: 2025-10-25
|
|
61
|
-
changes: Добавлена конфигурация `dictionary`
|
|
62
|
-
- version: 7.0.0
|
|
63
|
-
date: 2025-10-21
|
|
64
|
-
changes: Заменен `middleware` конфигурацией маршрутизации `routing`
|
|
65
|
-
- version: 7.0.0
|
|
66
|
-
date: 2025-10-12
|
|
67
|
-
changes: Добавлен параметр `formatCommand`
|
|
68
|
-
- version: 6.2.0
|
|
69
|
-
date: 2025-10-12
|
|
70
|
-
changes: Обновлен параметр `excludedPath`
|
|
71
|
-
- version: 6.0.2
|
|
72
|
-
date: 2025-09-23
|
|
73
|
-
changes: Добавлен параметр `outputFormat`
|
|
74
|
-
- version: 6.0.0
|
|
75
|
-
date: 2025-09-21
|
|
76
|
-
changes: Удалено поле `dictionaryOutput` и поле `i18nextResourcesDir`
|
|
77
|
-
- version: 6.0.0
|
|
78
|
-
date: 2025-09-16
|
|
79
|
-
changes: Добавлен режим импорта `live`
|
|
80
|
-
- version: 6.0.0
|
|
81
|
-
date: 2025-09-04
|
|
82
|
-
changes: Поле `hotReload` заменено на `liveSync`, добавлены поля `liveSyncPort` и `liveSyncURL`
|
|
83
|
-
- version: 5.6.1
|
|
84
|
-
date: 2025-07-25
|
|
85
|
-
changes: Поле `activateDynamicImport` заменено параметром `importMode`
|
|
86
|
-
- version: 5.6.0
|
|
87
|
-
date: 2025-07-13
|
|
88
|
-
changes: Изменен контентный каталог по умолчанию `contentDir` с `['src']` на `['.']`
|
|
89
|
-
- version: 5.5.11
|
|
90
|
-
date: 2025-06-29
|
|
91
|
-
changes: Добавлены команды `docs`
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
# Документация по конфигурации Intlayer
|
|
95
|
-
|
|
96
|
-
## Обзор
|
|
97
|
-
|
|
98
|
-
Конфигурационные файлы Intlayer позволяют настраивать различные аспекты плагина, такие как интернационализация (internationalization), промежуточное ПО (middleware) и обработка контента. Эта документация содержит подробное описание каждого свойства конфигурации.
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Содержание
|
|
103
|
-
|
|
104
|
-
<TOC/>
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Поддерживаемые форматы конфигурационных файлов
|
|
109
|
-
|
|
110
|
-
Intlayer принимает форматы конфигурационных файлов JSON, JS, MJS и TS:
|
|
111
|
-
|
|
112
|
-
- `intlayer.config.ts`
|
|
113
|
-
- `intlayer.config.js`
|
|
114
|
-
- `intlayer.config.json`
|
|
115
|
-
- `intlayer.config.json5`
|
|
116
|
-
- `intlayer.config.jsonc`
|
|
117
|
-
- `intlayer.config.cjs`
|
|
118
|
-
- `intlayer.config.mjs`
|
|
119
|
-
- `.intlayerrc`
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Пример конфигурационного файла
|
|
124
|
-
|
|
125
|
-
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
126
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
127
|
-
import { nextjsRewrite } from "intlayer/routing";
|
|
128
|
-
import { z } from "zod";
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Пример конфигурационного файла Intlayer со всеми доступными параметрами.
|
|
132
|
-
*/
|
|
133
|
-
const config: IntlayerConfig = {
|
|
134
|
-
/**
|
|
135
|
-
* Конфигурация настроек интернационализации.
|
|
136
|
-
*/
|
|
137
|
-
internationalization: {
|
|
138
|
-
/**
|
|
139
|
-
* Список локалей (locales), поддерживаемых в приложении.
|
|
140
|
-
* По умолчанию: [Locales.ENGLISH]
|
|
141
|
-
*/
|
|
142
|
-
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Список обязательных локалей, которые должны быть определены в каждом словаре.
|
|
146
|
-
* Если пуст, все локали обязательны в режиме `strict`.
|
|
147
|
-
* По умолчанию: []
|
|
148
|
-
*/
|
|
149
|
-
requiredLocales: [Locales.ENGLISH],
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Уровень строгости для интернационализированного контента.
|
|
153
|
-
* - "strict": Ошибка, если любая объявленная локаль отсутствует или не объявлена.
|
|
154
|
-
* - "inclusive": Предупреждение, если объявленная локаль отсутствует.
|
|
155
|
-
* - "loose": Принимает любую существующую локаль.
|
|
156
|
-
* По умолчанию: "inclusive"
|
|
157
|
-
*/
|
|
158
|
-
strictMode: "inclusive",
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Локаль по умолчанию, используемая в качестве резервной, если запрошенная локаль не найдена.
|
|
162
|
-
* По умолчанию: Locales.ENGLISH
|
|
163
|
-
*/
|
|
164
|
-
defaultLocale: Locales.ENGLISH,
|
|
165
|
-
},
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Настройки, управляющие операциями со словарями и поведением при отсутствии перевода.
|
|
169
|
-
*/
|
|
170
|
-
dictionary: {
|
|
171
|
-
/**
|
|
172
|
-
* Управляет способом импорта словарей.
|
|
173
|
-
* - "static": Статически импортируется во время сборки.
|
|
174
|
-
* - "dynamic": Динамически импортируется с использованием Suspense.
|
|
175
|
-
* - "fetch": Динамически извлекается через Live Sync API.
|
|
176
|
-
* По умолчанию: "static"
|
|
177
|
-
*/
|
|
178
|
-
importMode: "static",
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Стратегия автоматического заполнения отсутствующих переводов с помощью AI.
|
|
182
|
-
* Может быть логическим значением или шаблоном пути для сохранения заполненного контента.
|
|
183
|
-
* По умолчанию: true
|
|
184
|
-
*/
|
|
185
|
-
fill: true,
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Физическое расположение файлов словарей.
|
|
189
|
-
* - "local": Хранится в локальной файловой системе.
|
|
190
|
-
* - "remote": Хранится в Intlayer CMS.
|
|
191
|
-
* - "hybrid": Хранится как локально, так и в Intlayer CMS.
|
|
192
|
-
* - "plugin" (или любая пользовательская строка): Предоставляется плагином или пользовательским источником.
|
|
193
|
-
* По умолчанию: "local"
|
|
194
|
-
*/
|
|
195
|
-
location: "local",
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Должен ли контент автоматически преобразовываться (например, Markdown в HTML).
|
|
199
|
-
* По умолчанию: false
|
|
200
|
-
*/
|
|
201
|
-
contentAutoTransformation: false,
|
|
202
|
-
},
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Конфигурация маршрутизации и промежуточного ПО.
|
|
206
|
-
*/
|
|
207
|
-
routing: {
|
|
208
|
-
/**
|
|
209
|
-
* Стратегия маршрутизации локалей.
|
|
210
|
-
* - "prefix-no-default": Добавляет префикс ко всем локалям, кроме локали по умолчанию (например, /dashboard, /fr/dashboard).
|
|
211
|
-
* - "prefix-all": Добавляет префикс ко всем локалям (например, /en/dashboard, /fr/dashboard).
|
|
212
|
-
* - "no-prefix": Локаль в URL отсутствует.
|
|
213
|
-
* - "search-params": Использует ?locale=...
|
|
214
|
-
* По умолчанию: "prefix-no-default"
|
|
215
|
-
*/
|
|
216
|
-
mode: "prefix-no-default",
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Где хранить выбранную пользователем локаль.
|
|
220
|
-
* Параметры: 'cookie', 'localStorage', 'sessionStorage', 'header' или их массив.
|
|
221
|
-
* По умолчанию: ['cookie', 'header']
|
|
222
|
-
*/
|
|
223
|
-
storage: ["cookie", "header"],
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Базовый путь для URL приложения.
|
|
227
|
-
* По умолчанию: ""
|
|
228
|
-
*/
|
|
229
|
-
basePath: "",
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Пользовательские правила перезаписи (rewrite) URL для конкретных путей в зависимости от локали.
|
|
233
|
-
*/
|
|
234
|
-
rewrite: nextjsRewrite({
|
|
235
|
-
"/[locale]/about": {
|
|
236
|
-
en: "/[locale]/about",
|
|
237
|
-
fr: "/[locale]/a-propos",
|
|
238
|
-
},
|
|
239
|
-
}),
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Настройки, касающиеся поиска и обработки файлов контента.
|
|
244
|
-
*/
|
|
245
|
-
content: {
|
|
246
|
-
/**
|
|
247
|
-
* Расширения файлов для сканирования словарей.
|
|
248
|
-
* По умолчанию: ['.content.ts', '.content.js', '.content.json' и др.]
|
|
249
|
-
*/
|
|
250
|
-
fileExtensions: [".content.ts", ".content.js", ".content.json"],
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Каталоги, в которых расположены файлы .content.
|
|
254
|
-
* По умолчанию: ["."]
|
|
255
|
-
*/
|
|
256
|
-
contentDir: ["src"],
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Где находится исходный код.
|
|
260
|
-
* Используется для оптимизации сборки и преобразования кода.
|
|
261
|
-
* По умолчанию: ["."]
|
|
262
|
-
*/
|
|
263
|
-
codeDir: ["src"],
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Паттерны, исключаемые из сканирования.
|
|
267
|
-
* По умолчанию: ['node_modules', '.intlayer' и др.]
|
|
268
|
-
*/
|
|
269
|
-
excludedPath: ["node_modules"],
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Отслеживать ли изменения и пересобирать словари во время разработки.
|
|
273
|
-
* По умолчанию: true в режиме разработки
|
|
274
|
-
*/
|
|
275
|
-
watch: true,
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Команда, используемая для форматирования вновь созданных / обновленных файлов .content.
|
|
279
|
-
*/
|
|
280
|
-
formatCommand: 'npx prettier --write "{{file}}"',
|
|
281
|
-
},
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
* Конфигурация визуального редактора (Visual Editor).
|
|
285
|
-
*/
|
|
286
|
-
editor: {
|
|
287
|
-
/**
|
|
288
|
-
* Включен ли визуальный редактор.
|
|
289
|
-
* По умолчанию: false
|
|
290
|
-
*/
|
|
291
|
-
enabled: true,
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* URL вашего приложения для проверки источника (origin validation).
|
|
295
|
-
* По умолчанию: ""
|
|
296
|
-
*/
|
|
297
|
-
applicationURL: "http://localhost:3000",
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Порт для локального сервера редактора.
|
|
301
|
-
* По умолчанию: 8000
|
|
302
|
-
*/
|
|
303
|
-
port: 8000,
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Публичный URL для редактора.
|
|
307
|
-
* По умолчанию: "http://localhost:8000"
|
|
308
|
-
*/
|
|
309
|
-
editorURL: "http://localhost:8000",
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* URL Intlayer CMS.
|
|
313
|
-
* По умолчанию: "https://app.intlayer.org"
|
|
314
|
-
*/
|
|
315
|
-
cmsURL: "https://app.intlayer.org",
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* URL Backend API.
|
|
319
|
-
* По умолчанию: "https://back.intlayer.org"
|
|
320
|
-
*/
|
|
321
|
-
backendURL: "https://back.intlayer.org",
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* Включить ли синхронизацию контента в реальном времени.
|
|
325
|
-
* По умолчанию: false
|
|
326
|
-
*/
|
|
327
|
-
liveSync: true,
|
|
328
|
-
},
|
|
329
|
-
|
|
330
|
-
/**
|
|
331
|
-
* Настройки перевода и создания контента на базе AI.
|
|
332
|
-
*/
|
|
333
|
-
ai: {
|
|
334
|
-
/**
|
|
335
|
-
* Провайдер AI для использования.
|
|
336
|
-
* Параметры: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
337
|
-
* По умолчанию: 'openai'
|
|
338
|
-
*/
|
|
339
|
-
provider: "openai",
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Модель выбранного провайдера для использования.
|
|
343
|
-
*/
|
|
344
|
-
model: "gpt-4o",
|
|
345
|
-
|
|
346
|
-
/**
|
|
347
|
-
* API-ключ провайдера.
|
|
348
|
-
*/
|
|
349
|
-
apiKey: process.env.OPENAI_API_KEY,
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Глобальный контекст для руководства AI при создании переводов.
|
|
353
|
-
*/
|
|
354
|
-
applicationContext: "Это приложение для бронирования путешествий.",
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Базовый URL для AI API.
|
|
358
|
-
*/
|
|
359
|
-
baseURL: "http://localhost:3000",
|
|
360
|
-
|
|
361
|
-
/**
|
|
362
|
-
* Сериализация данных (Data Serialization)
|
|
363
|
-
*
|
|
364
|
-
* Параметры:
|
|
365
|
-
* - "json": По умолчанию, надежно; потребляет больше токенов.
|
|
366
|
-
* - "toon": Потребляет меньше токенов, может быть не таким последовательным, как JSON.
|
|
367
|
-
*
|
|
368
|
-
* По умолчанию: "json"
|
|
369
|
-
*/
|
|
370
|
-
dataSerialization: "json",
|
|
371
|
-
},
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Настройки сборки и оптимизации.
|
|
375
|
-
*/
|
|
376
|
-
build: {
|
|
377
|
-
/**
|
|
378
|
-
* Режим выполнения сборки.
|
|
379
|
-
* - "auto": Собирается автоматически во время сборки приложения.
|
|
380
|
-
* - "manual": Требуется явная команда сборки.
|
|
381
|
-
* По умолчанию: "auto"
|
|
382
|
-
*/
|
|
383
|
-
mode: "auto",
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Оптимизировать ли финальный бандл, удаляя неиспользуемые словари.
|
|
387
|
-
* По умолчанию: true в продакшене
|
|
388
|
-
*/
|
|
389
|
-
optimize: true,
|
|
390
|
-
|
|
391
|
-
/**
|
|
392
|
-
* Формат вывода сгенерированных файлов словарей.
|
|
393
|
-
* По умолчанию: ['cjs', 'esm']
|
|
394
|
-
*/
|
|
395
|
-
outputFormat: ["cjs", "esm"],
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* Указывает, должна ли сборка проверять типы TypeScript.
|
|
399
|
-
* По умолчанию: false
|
|
400
|
-
*/
|
|
401
|
-
checkTypes: false,
|
|
402
|
-
},
|
|
403
|
-
|
|
404
|
-
/**
|
|
405
|
-
* Конфигурация логгера (Logger).
|
|
406
|
-
*/
|
|
407
|
-
log: {
|
|
408
|
-
/**
|
|
409
|
-
* Уровень логирования.
|
|
410
|
-
* - "default": Стандартное логирование.
|
|
411
|
-
* - "verbose": Углубленное отладочное логирование.
|
|
412
|
-
* - "disabled": Отключает логирование.
|
|
413
|
-
* По умолчанию: "default"
|
|
414
|
-
*/
|
|
415
|
-
mode: "default",
|
|
416
|
-
|
|
417
|
-
/**
|
|
418
|
-
* Префикс для всех лог-сообщений.
|
|
419
|
-
* По умолчанию: "[intlayer]"
|
|
420
|
-
*/
|
|
421
|
-
prefix: "[intlayer]",
|
|
422
|
-
},
|
|
423
|
-
|
|
424
|
-
/**
|
|
425
|
-
* Системная конфигурация (Для продвинутого использования)
|
|
426
|
-
*/
|
|
427
|
-
system: {
|
|
428
|
-
/**
|
|
429
|
-
* Каталог для хранения локализованных словарей.
|
|
430
|
-
*/
|
|
431
|
-
dictionariesDir: ".intlayer/dictionary",
|
|
432
|
-
|
|
433
|
-
/**
|
|
434
|
-
* Каталог для расширения модулей TypeScript (module augmentation).
|
|
435
|
-
*/
|
|
436
|
-
moduleAugmentationDir: ".intlayer/types",
|
|
437
|
-
|
|
438
|
-
/**
|
|
439
|
-
* Каталог для хранения несложенных (unmerged) словарей.
|
|
440
|
-
*/
|
|
441
|
-
unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* Каталог для хранения типов словарей.
|
|
445
|
-
*/
|
|
446
|
-
typesDir: ".intlayer/types",
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Каталог, в котором хранятся основные файлы приложения.
|
|
450
|
-
*/
|
|
451
|
-
mainDir: ".intlayer/main",
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Каталог, в котором хранятся файлы конфигурации.
|
|
455
|
-
*/
|
|
456
|
-
configDir: ".intlayer/config",
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* Каталог, в котором хранятся файлы кэша.
|
|
460
|
-
*/
|
|
461
|
-
cacheDir: ".intlayer/cache",
|
|
462
|
-
},
|
|
463
|
-
|
|
464
|
-
/**
|
|
465
|
-
* Конфигурация компилятора (Для продвинутого использования)
|
|
466
|
-
*/
|
|
467
|
-
compiler: {
|
|
468
|
-
/**
|
|
469
|
-
* Указывает, должен ли быть включен компилятор.
|
|
470
|
-
*
|
|
471
|
-
* - false: Отключает компилятор.
|
|
472
|
-
* - true: Включает компилятор.
|
|
473
|
-
* - "build-only": Пропускает компилятор во время разработки и ускоряет время запуска.
|
|
474
|
-
*
|
|
475
|
-
* По умолчанию: false
|
|
476
|
-
*/
|
|
477
|
-
enabled: true,
|
|
478
|
-
|
|
479
|
-
/**
|
|
480
|
-
* Определяет путь для выходных файлов. Заменяет `outputDir`.
|
|
481
|
-
*
|
|
482
|
-
* - Пути `./` разрешаются относительно каталога компонента.
|
|
483
|
-
* - Пути `/` разрешаются относительно корня проекта (`baseDir`).
|
|
484
|
-
*
|
|
485
|
-
* - Включение переменной `{{locale}}` в путь приведет к созданию отдельных словарей для каждого языка.
|
|
486
|
-
*
|
|
487
|
-
* Пример:
|
|
488
|
-
* ```ts
|
|
489
|
-
* {
|
|
490
|
-
* // Создавать многоязычные файлы .content.ts рядом с компонентом
|
|
491
|
-
* output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
492
|
-
*
|
|
493
|
-
* // output: './{{fileName}}{{extension}}', // Эквивалентно через шаблонную строку
|
|
494
|
-
* }
|
|
495
|
-
* ```
|
|
496
|
-
*
|
|
497
|
-
* ```ts
|
|
498
|
-
* {
|
|
499
|
-
* // Создавать централизованные JSON для каждого языка в корне проекта
|
|
500
|
-
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
501
|
-
*
|
|
502
|
-
* // output: '/locales/{{locale}}/{{key}}.content.json', // Эквивалентно через шаблонную строку
|
|
503
|
-
* }
|
|
504
|
-
* ```
|
|
505
|
-
*
|
|
506
|
-
* Список переменных:
|
|
507
|
-
* - `fileName`: Имя файла.
|
|
508
|
-
* - `key`: Ключ контента.
|
|
509
|
-
* - `locale`: Локаль контента.
|
|
510
|
-
* - `extension`: Расширение файла.
|
|
511
|
-
* - `componentFileName`: Имя файла компонента.
|
|
512
|
-
* - `componentExtension`: Расширение файла компонента.
|
|
513
|
-
* - `format`: Формат словаря.
|
|
514
|
-
* - `componentFormat`: Формат словаря компонента.
|
|
515
|
-
* - `componentDirPath`: Путь к каталогу компонента.
|
|
516
|
-
*/
|
|
517
|
-
output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
|
|
518
|
-
|
|
519
|
-
/**
|
|
520
|
-
* Указывает, должны ли компоненты сохраняться после преобразования.
|
|
521
|
-
* Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
522
|
-
*/
|
|
523
|
-
saveComponents: false,
|
|
524
|
-
|
|
525
|
-
/**
|
|
526
|
-
* Вставляет в сгенерированный файл только контент. Полезно для вывода JSON для каждого языка для i18next или ICU MessageFormat.
|
|
527
|
-
*/
|
|
528
|
-
noMetadata: false,
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
* Префикс ключа словаря
|
|
532
|
-
*/
|
|
533
|
-
dictionaryKeyPrefix: "", // Добавьте необязательный префикс к извлеченным ключам словарей
|
|
534
|
-
},
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Пользовательские схемы (Schemas) для валидации контента словарей.
|
|
538
|
-
*/
|
|
539
|
-
schemas: {
|
|
540
|
-
"my-schema": z.object({
|
|
541
|
-
title: z.string(),
|
|
542
|
-
}),
|
|
543
|
-
},
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* Конфигурация плагинов (Plugins).
|
|
547
|
-
*/
|
|
548
|
-
plugins: [],
|
|
549
|
-
};
|
|
550
|
-
|
|
551
|
-
export default config;
|
|
552
|
-
````
|
|
553
|
-
|
|
554
|
-
---
|
|
555
|
-
|
|
556
|
-
## Справочник по конфигурации (Configuration Reference)
|
|
557
|
-
|
|
558
|
-
В следующих разделах описываются различные параметры конфигурации, доступные в Intlayer.
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
### Конфигурация интернационализации (Internationalization Configuration)
|
|
563
|
-
|
|
564
|
-
Определяет настройки, связанные с интернационализацией, включая доступные локали и локаль по умолчанию для приложения.
|
|
565
|
-
|
|
566
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
567
|
-
| ----------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
568
|
-
| `locales` | `string[]` | Список локалей, поддерживаемых в приложении. По умолчанию: `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
|
|
569
|
-
| `requiredLocales` | `string[]` | Список обязательных локалей в приложении. По умолчанию: `[]` | `[]` | Если пуст, все локали обязательны в режиме `strict`. Убедитесь, что обязательные локали также определены в поле `locales`. |
|
|
570
|
-
| `strictMode` | `string` | Гарантирует надежную реализацию интернационализированного контента с использованием TypeScript. По умолчанию: `inclusive` | | Если `"strict"`: функция `t` требует определения каждой объявленной локали — выдает ошибку, если какая-либо локаль отсутствует или не объявлена. Если `"inclusive"`: предупреждает о недостающих локалях, но принимает существующие необъявленные. Если `"loose"`: принимает любую существующую локаль. |
|
|
571
|
-
| `defaultLocale` | `string` | Локаль по умолчанию, используемая в качестве резервной, если запрошенная локаль не найдена. По умолчанию: `Locales.ENGLISH` | `'en'` | Используется для определения локали, когда она не указана в URL, куки или заголовке. |
|
|
572
|
-
|
|
573
|
-
---
|
|
574
|
-
|
|
575
|
-
### Конфигурация редактора (Editor Configuration)
|
|
576
|
-
|
|
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. |
|
|
593
|
-
|
|
594
|
-
### Конфигурация маршрутизации (Routing Configuration)
|
|
595
|
-
|
|
596
|
-
Настройки, управляющие поведением маршрутизации, включая структуру URL, хранение локалей и обработку промежуточного ПО.
|
|
597
|
-
|
|
598
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
599
|
-
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
600
|
-
| `mode` | `'prefix-no-default' | 'prefix-all' | 'no-prefix' | 'search-params'` | Режим маршрутизации URL для обработки локалей. По умолчанию: `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) или `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: локаль обрабатывается другими способами. `'search-params'`: `/dashboard?locale=fr` | Не влияет на управление куки или хранилищем локалей. |
|
|
601
|
-
| `storage` | `false | 'cookie' | 'localStorage' | 'sessionStorage' | 'header' | CookiesAttributes | StorageAttributes | Array` | Конфигурация для хранения локали на клиенте. По умолчанию: `['cookie', 'header']` | `'localStorage'`, `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | См. таблицу "Параметры хранения" ниже. |
|
|
602
|
-
| `basePath` | `string` | Базовый путь для URL приложения. По умолчанию: `''` | `'/my-app'` | Если приложение находится по адресу `https://example.com/my-app`, basePath равен `'/my-app'`, а URL становятся `https://example.com/my-app/en`. |
|
|
603
|
-
| `rewrite` | `Record<string, StrictModeLocaleMap<string>>` | Пользовательские правила перезаписи URL, переопределяющие режим маршрутизации по умолчанию для конкретных путей. Поддерживает динамические параметры `[param]`. По умолчанию: `undefined` | См. пример ниже | Правила перезаписи имеют приоритет над `mode`. Работает с Next.js и Vite. `getLocalizedUrl()` автоматически применяет соответствующие правила. См. [Пользовательские перезаписи URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/custom_url_rewrites.md). |
|
|
604
|
-
|
|
605
|
-
**Пример `rewrite`**:
|
|
606
|
-
|
|
607
|
-
```typescript
|
|
608
|
-
routing: {
|
|
609
|
-
mode: "prefix-no-default", // Стратегия по умолчанию
|
|
610
|
-
rewrite: nextjsRewrite({
|
|
611
|
-
"/about": {
|
|
612
|
-
en: "/about",
|
|
613
|
-
fr: "/a-propos",
|
|
614
|
-
},
|
|
615
|
-
"/product/[slug]": {
|
|
616
|
-
en: "/product/[slug]",
|
|
617
|
-
fr: "/produit/[slug]",
|
|
618
|
-
},
|
|
619
|
-
"/blog/[category]/[id]": {
|
|
620
|
-
en: "/blog/[category]/[id]",
|
|
621
|
-
fr: "/journal/[category]/[id]",
|
|
622
|
-
},
|
|
623
|
-
}),
|
|
624
|
-
}
|
|
625
|
-
```
|
|
626
|
-
|
|
627
|
-
#### Параметры хранения (Storage Options)
|
|
628
|
-
|
|
629
|
-
| Значение | Описание | Примечание |
|
|
630
|
-
| ------------------ | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
631
|
-
| `'cookie'` | Хранит локаль в куки — доступно как на стороне клиента, так и на стороне сервера. | Для соответствия GDPR убедитесь в получении надлежащего согласия пользователя. Настраивается через `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). |
|
|
632
|
-
| `'localStorage'` | Хранит локаль в браузере без срока действия — только на стороне клиента. | Не исчезает до явной очистки. Прокси Intlayer не может получить к нему доступ. Настраивается через `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). |
|
|
633
|
-
| `'sessionStorage'` | Хранит локаль в течение сессии страницы — только на стороне клиента. | Очищается при закрытии вкладки/окна. Прокси Intlayer не может получить к нему доступ. Настраивается через `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). |
|
|
634
|
-
| `'header'` | Хранит или передает локаль через HTTP-заголовки — только на стороне сервера. | Полезно для API-вызовов. Сторона клиента не может получить к нему доступ. Настраивается через `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). |
|
|
635
|
-
|
|
636
|
-
#### Атрибуты куки (Cookie Attributes)
|
|
637
|
-
|
|
638
|
-
При использовании хранилища куки вы можете настроить дополнительные атрибуты:
|
|
639
|
-
|
|
640
|
-
| Поле | Тип | Описание |
|
|
641
|
-
| ---------- | ------------------------------------- | ------------------------------------------------------------- |
|
|
642
|
-
| `name` | `string` | Имя куки. По умолчанию: `'INTLAYER_LOCALE'` |
|
|
643
|
-
| `domain` | `string` | Домен куки. По умолчанию: `undefined` |
|
|
644
|
-
| `path` | `string` | Путь куки. По умолчанию: `undefined` |
|
|
645
|
-
| `secure` | `boolean` | Требует HTTPS. По умолчанию: `undefined` |
|
|
646
|
-
| `httpOnly` | `boolean` | Флаг HTTP-only. По умолчанию: `undefined` |
|
|
647
|
-
| `sameSite` | `'strict' | 'lax' | 'none'` | Политика SameSite. |
|
|
648
|
-
| `expires` | `Date | number` | Дата истечения или количество дней. По умолчанию: `undefined` |
|
|
649
|
-
|
|
650
|
-
#### Атрибуты хранилища локалей (Locale Storage Attributes)
|
|
651
|
-
|
|
652
|
-
При использовании localStorage или sessionStorage:
|
|
653
|
-
|
|
654
|
-
| Поле | Тип | Описание |
|
|
655
|
-
| ------ | ---------------------------------------- | ------------------------------------------------------ |
|
|
656
|
-
| `type` | `'localStorage' | 'sessionStorage'` | Тип хранилища. |
|
|
657
|
-
| `name` | `string` | Имя ключа хранилища. По умолчанию: `'INTLAYER_LOCALE'` |
|
|
658
|
-
|
|
659
|
-
#### Примеры конфигурации
|
|
660
|
-
|
|
661
|
-
Вот несколько распространенных примеров конфигурации для новой структуры маршрутизации v7:
|
|
662
|
-
|
|
663
|
-
**Базовая конфигурация (по умолчанию)**:
|
|
664
|
-
|
|
665
|
-
```typescript
|
|
666
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
667
|
-
// intlayer.config.ts
|
|
668
|
-
const config: IntlayerConfig = {
|
|
669
|
-
internationalization: {
|
|
670
|
-
locales: ["en", "fr", "es"],
|
|
671
|
-
defaultLocale: "en",
|
|
672
|
-
},
|
|
673
|
-
routing: {
|
|
674
|
-
mode: "prefix-no-default",
|
|
675
|
-
storage: "localStorage",
|
|
676
|
-
basePath: "",
|
|
677
|
-
},
|
|
678
|
-
};
|
|
679
|
-
|
|
680
|
-
export default config;
|
|
681
|
-
```
|
|
682
|
-
|
|
683
|
-
**Конфигурация, соответствующая GDPR**:
|
|
684
|
-
|
|
685
|
-
```typescript
|
|
686
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
687
|
-
// intlayer.config.ts
|
|
688
|
-
const config: IntlayerConfig = {
|
|
689
|
-
internationalization: {
|
|
690
|
-
locales: ["en", "fr", "es"],
|
|
691
|
-
defaultLocale: "en",
|
|
692
|
-
},
|
|
693
|
-
routing: {
|
|
694
|
-
mode: "prefix-no-default",
|
|
695
|
-
storage: [
|
|
696
|
-
{
|
|
697
|
-
type: "localStorage",
|
|
698
|
-
name: "user-locale",
|
|
699
|
-
},
|
|
700
|
-
{
|
|
701
|
-
type: "cookie",
|
|
702
|
-
name: "user-locale",
|
|
703
|
-
secure: true,
|
|
704
|
-
sameSite: "strict",
|
|
705
|
-
httpOnly: false,
|
|
706
|
-
},
|
|
707
|
-
],
|
|
708
|
-
basePath: "",
|
|
709
|
-
},
|
|
710
|
-
};
|
|
711
|
-
|
|
712
|
-
export default config;
|
|
713
|
-
```
|
|
714
|
-
|
|
715
|
-
**Режим параметров поиска (Search Parameters Mode)**:
|
|
716
|
-
|
|
717
|
-
```typescript
|
|
718
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
719
|
-
// intlayer.config.ts
|
|
720
|
-
const config: IntlayerConfig = {
|
|
721
|
-
internationalization: {
|
|
722
|
-
locales: ["en", "fr", "es"],
|
|
723
|
-
defaultLocale: "en",
|
|
724
|
-
},
|
|
725
|
-
routing: {
|
|
726
|
-
mode: "search-params",
|
|
727
|
-
storage: "localStorage",
|
|
728
|
-
basePath: "",
|
|
729
|
-
},
|
|
730
|
-
};
|
|
731
|
-
|
|
732
|
-
export default config;
|
|
733
|
-
```
|
|
734
|
-
|
|
735
|
-
**Режим без префикса (No Prefix Mode) с пользовательским хранилищем**:
|
|
736
|
-
|
|
737
|
-
```typescript
|
|
738
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
739
|
-
// intlayer.config.ts
|
|
740
|
-
const config: IntlayerConfig = {
|
|
741
|
-
internationalization: {
|
|
742
|
-
locales: ["en", "fr", "es"],
|
|
743
|
-
defaultLocale: "en",
|
|
744
|
-
},
|
|
745
|
-
routing: {
|
|
746
|
-
mode: "no-prefix",
|
|
747
|
-
storage: {
|
|
748
|
-
type: "sessionStorage",
|
|
749
|
-
name: "app-locale",
|
|
750
|
-
},
|
|
751
|
-
basePath: "/my-app",
|
|
752
|
-
},
|
|
753
|
-
};
|
|
754
|
-
|
|
755
|
-
export default config;
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
**Пользовательская перезапись URL с динамическими путями**:
|
|
759
|
-
|
|
760
|
-
```typescript
|
|
761
|
-
// intlayer.config.ts
|
|
762
|
-
import { nextjsRewrite } from "intlayer/routing";
|
|
763
|
-
|
|
764
|
-
const config: IntlayerConfig = {
|
|
765
|
-
internationalization: {
|
|
766
|
-
locales: ["en", "fr"],
|
|
767
|
-
defaultLocale: "en",
|
|
768
|
-
},
|
|
769
|
-
routing: {
|
|
770
|
-
mode: "prefix-no-default", // Резервная стратегия для путей без перезаписи
|
|
771
|
-
storage: "cookie",
|
|
772
|
-
rewrite: nextjsRewrite({
|
|
773
|
-
"/about": {
|
|
774
|
-
en: "/about",
|
|
775
|
-
fr: "/a-propos",
|
|
776
|
-
},
|
|
777
|
-
"/product/[slug]": {
|
|
778
|
-
en: "/product/[slug]",
|
|
779
|
-
fr: "/produit/[slug]",
|
|
780
|
-
},
|
|
781
|
-
"/blog/[category]/[id]": {
|
|
782
|
-
en: "/blog/[category]/[id]",
|
|
783
|
-
fr: "/journal/[category]/[id]",
|
|
784
|
-
},
|
|
785
|
-
}),
|
|
786
|
-
},
|
|
787
|
-
};
|
|
788
|
-
|
|
789
|
-
export default config;
|
|
790
|
-
```
|
|
791
|
-
|
|
792
|
-
---
|
|
793
|
-
|
|
794
|
-
### Конфигурация контента (Content Configuration)
|
|
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
|
-
Настройки, управляющие способом импорта словарей и управлением ими.
|
|
812
|
-
|
|
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. |
|
|
819
|
-
|
|
820
|
-
#### Режим импорта (Import Modes)
|
|
821
|
-
|
|
822
|
-
| Значение | Описание |
|
|
823
|
-
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
824
|
-
| `'static'` | Словари включаются в бандл во время сборки. Лучшая производительность, но больший размер файлов при наличии множества языков. |
|
|
825
|
-
| `'dynamic'` | Словари загружаются асинхронно при доступе к определенному языку. Использует React Suspense. Рекомендуется для приложений с большим количеством языков. |
|
|
826
|
-
| `'fetch'` | Словари извлекаются динамически во время выполнения (runtime) с сервера (например, Intlayer CMS). Позволяет обновлять контент без пересборки. |
|
|
827
|
-
|
|
828
|
-
---
|
|
829
|
-
|
|
830
|
-
### Конфигурация словарей (Dictionary Configuration)
|
|
831
|
-
|
|
832
|
-
Настройки, управляющие операциями со словарями, включая поведение автозаполнения и генерацию контента.
|
|
833
|
-
|
|
834
|
-
Эта конфигурация словарей служит двум основным целям:
|
|
835
|
-
|
|
836
|
-
1. **Значения по умолчанию**: Определение значений по умолчанию при создании файлов объявления контента.
|
|
837
|
-
2. **Поведение при отсутствии перевода**: Предоставление резервных значений, когда конкретные поля не определены, что позволяет глобально настраивать поведение операций со словарями.
|
|
838
|
-
|
|
839
|
-
Для получения дополнительной информации о файлах объявления контента и о том, как применяются значения конфигурации, см. [Документацию по файлам контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md).
|
|
840
|
-
|
|
841
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
842
|
-
| --------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
843
|
-
| `fill` | `boolean | FilePathPattern | Partial<Record<Locale, boolean | FilePathPattern>>` | Управляет тем, как генерируются выходные файлы автозаполнения (AI-перевод). По умолчанию: `true` | См. пример ниже | `true`: путь по умолчанию (тот же файл, что и источник). `false`: отключено. Шаблон строки/функции генерирует файлы для каждой локали. Объект по локалям: каждая локаль сопоставляется со своим шаблоном; `false` пропускает эту локаль. Включение `{{locale}}` запускает генерацию для каждой локали. `fill` на уровне словаря всегда имеет приоритет над этой глобальной конфигурацией. |
|
|
844
|
-
| `importMode` | `'static' | 'dynamic' | 'fetch'` | Управляет способом импорта словарей. По умолчанию: `'static'` | `'dynamic'` | `'static'`: импортируется статически. `'dynamic'`: импортируется динамически через Suspense. `'fetch'`: динамически запрашивается через API Live Sync. Не влияет на `getIntlayer`, `getDictionary`, `useDictionary` и др. |
|
|
845
|
-
| `location` | `'local' | 'remote' | 'hybrid' | string` | Определяет, где хранятся словари. По умолчанию: `'local'` | `'remote'` | `'local'`: файловая система. `'remote'`: Intlayer CMS. `'hybrid'`: и то, и другое. |
|
|
846
|
-
| `contentAutoTransformation` | `boolean` | Должны ли файлы контента автоматически преобразовываться (например, Markdown в HTML). По умолчанию: `false` | `true` | Полезно для обработки полей Markdown через @intlayer/markdown. |
|
|
847
|
-
|
|
848
|
-
**Пример `fill`**:
|
|
849
|
-
|
|
850
|
-
```ts
|
|
851
|
-
dictionary: {
|
|
852
|
-
fill: {
|
|
853
|
-
en: '/locales/en/{{key}}.content.json',
|
|
854
|
-
fr: ({ key }) => `/locales/fr/${key}.content.json`,
|
|
855
|
-
es: false,
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
```
|
|
859
|
-
|
|
860
|
-
---
|
|
861
|
-
|
|
862
|
-
### Конфигурация AI (AI Configuration)
|
|
863
|
-
|
|
864
|
-
Определяет настройки для функций Intlayer на базе AI, таких как создание переводов.
|
|
865
|
-
|
|
866
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
867
|
-
| -------------------- | ---------------------- | ------------------------------------------------------------------------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
868
|
-
| `provider` | `string` | Провайдер AI для использования. | `'openai'`, `'anthropic'`, `'googlevertex'` | |
|
|
869
|
-
| `model` | `string` | Модель AI для использования. | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
|
|
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'`: потребляет меньше токенов, но может быть менее стабильным. |
|
|
874
|
-
|
|
875
|
-
---
|
|
876
|
-
|
|
877
|
-
### Конфигурация сборки (Build Configuration)
|
|
878
|
-
|
|
879
|
-
Настройки процесса сборки и оптимизации Intlayer.
|
|
880
|
-
|
|
881
|
-
| Поле | Тип | Описание | Пример | Примечание |
|
|
882
|
-
| -------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- |
|
|
883
|
-
| `mode` | `'auto' | 'manual'` | Указывает, должен ли Intlayer запускаться автоматически во время шагов предварительной сборки приложения. По умолчанию: `'auto'` | | |
|
|
884
|
-
| `optimize` | `boolean` | Указывает, должны ли скомпилированные словари быть оптимизированы для рантайма. По умолчанию: `true` в продакшене | | |
|
|
885
|
-
| `outputFormat` | `('cjs' | 'esm')[]` | Формат вывода сгенерированных файлов словарей. По умолчанию: `['cjs', 'esm']` | | |
|
|
886
|
-
| `checkTypes` | `boolean` | Указывает, должен ли Intlayer проверять типы в сгенерированных файлах. По умолчанию: `false` | | |
|
|
887
|
-
|
|
888
|
-
---
|
|
889
|
-
|
|
890
|
-
### Системная конфигурация (System Configuration)
|
|
891
|
-
|
|
892
|
-
Эти настройки предназначены для продвинутых вариантов использования и внутренней конфигурации Intlayer.
|
|
893
|
-
|
|
894
|
-
| Поле | Тип | Описание | По умолчанию |
|
|
895
|
-
| ------------------------- | -------- | ------------------------------------------------- | --------------------------------- |
|
|
896
|
-
| `dictionariesDir` | `string` | Каталог скомпилированных словарей. | `'.intlayer/dictionary'` |
|
|
897
|
-
| `moduleAugmentationDir` | `string` | Каталог расширения модулей TypeScript. | `'.intlayer/types'` |
|
|
898
|
-
| `unmergedDictionariesDir` | `string` | Каталог несложенных словарей. | `'.intlayer/unmerged_dictionary'` |
|
|
899
|
-
| `typesDir` | `string` | Каталог сгенерированных типов. | `'.intlayer/types'` |
|
|
900
|
-
| `mainDir` | `string` | Каталог основных файлов Intlayer. | `'.intlayer/main'` |
|
|
901
|
-
| `configDir` | `string` | Каталог скомпилированных конфигурационных файлов. | `'.intlayer/config'` |
|
|
902
|
-
| `cacheDir` | `string` | Каталог файлов кэша. | `'.intlayer/cache'` |
|
|
903
|
-
|
|
904
|
-
---
|
|
905
|
-
|
|
906
|
-
### Конфигурация компилятора (Compiler Configuration)
|
|
907
|
-
|
|
908
|
-
Настройки компилятора Intlayer (`intlayer compiler`).
|
|
909
|
-
|
|
910
|
-
| Поле | Тип | Описание | По умолчанию |
|
|
911
|
-
| --------------------- | ------------------------ | -------------------------------------------------------------------------------- | ------------ |
|
|
912
|
-
| `enabled` | `boolean` | Указывает, активен ли компилятор. | `false` |
|
|
913
|
-
| `output` | `string | Function` | Путь вывода для извлеченных словарей. | |
|
|
914
|
-
| `saveComponents` | `boolean` | Указывает, должны ли исходные файлы быть перезаписаны преобразованными версиями. | `false` |
|
|
915
|
-
| `noMetadata` | `boolean` | Если `true`, компилятор не будет включать метаданные в сгенерированные файлы. | `false` |
|
|
916
|
-
| `dictionaryKeyPrefix` | `string` | Необязательный префикс ключа словаря. | `''` |
|
|
917
|
-
|
|
918
|
-
---
|
|
919
|
-
|
|
920
|
-
### Конфигурация логгера (Logger Configuration)
|
|
921
|
-
|
|
922
|
-
Настройки настройки лог-вывода Intlayer.
|
|
923
|
-
|
|
924
|
-
| Поле | Тип | Описание | По умолчанию |
|
|
925
|
-
| -------- | ---------------------------------------------- | -------------------------- | -------------- |
|
|
926
|
-
| `mode` | `'default' | 'verbose' | 'disabled'` | Режим логирования. | `'default'` |
|
|
927
|
-
| `prefix` | `string` | Префикс для лог-сообщений. | `'[intlayer]'` |
|
|
928
|
-
|
|
929
|
-
---
|
|
930
|
-
|
|
931
|
-
### Пользовательские схемы (Custom Schemas)
|
|
932
|
-
|
|
933
|
-
| Поле | Тип | Описание |
|
|
934
|
-
| --------- | --------------------------- | ---------------------------------------------------------------------- |
|
|
935
|
-
| `schemas` | `Record<string, ZodSchema>` | Позволяет определять схемы Zod для валидации структуры ваших словарей. |
|
|
936
|
-
|
|
937
|
-
---
|
|
938
|
-
|
|
939
|
-
### Плагины (Plugins)
|
|
940
|
-
|
|
941
|
-
| Поле | Тип | Описание |
|
|
942
|
-
| --------- | ------------------ | --------------------------------------- |
|
|
943
|
-
| `plugins` | `IntlayerPlugin[]` | Список плагинов Intlayer для активации. |
|