@intlayer/docs 8.4.4 → 8.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/cjs/blog.cjs +21 -1
- package/dist/cjs/blog.cjs.map +1 -1
- package/dist/cjs/common.cjs +81 -1
- package/dist/cjs/common.cjs.map +1 -0
- package/dist/cjs/doc.cjs +21 -1
- package/dist/cjs/doc.cjs.map +1 -1
- package/dist/cjs/frequentQuestions.cjs +21 -1
- package/dist/cjs/frequentQuestions.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +572 -1
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +3032 -1
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +352 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +72 -1
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/cjs/index.cjs +34 -1
- package/dist/cjs/legal.cjs +21 -1
- package/dist/cjs/legal.cjs.map +1 -1
- package/dist/esm/blog.mjs +14 -1
- package/dist/esm/blog.mjs.map +1 -1
- package/dist/esm/common.mjs +67 -1
- package/dist/esm/common.mjs.map +1 -1
- package/dist/esm/doc.mjs +14 -1
- package/dist/esm/doc.mjs.map +1 -1
- package/dist/esm/frequentQuestions.mjs +14 -1
- package/dist/esm/frequentQuestions.mjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +570 -1
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +3030 -1
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +350 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +70 -1
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/esm/index.mjs +6 -1
- package/dist/esm/legal.mjs +14 -1
- package/dist/esm/legal.mjs.map +1 -1
- package/dist/types/blog.d.ts +2 -2
- package/dist/types/common.d.ts +37 -2
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/doc.d.ts +2 -2
- package/dist/types/frequentQuestions.d.ts +2 -2
- package/dist/types/generated/blog.entry.d.ts +35 -2
- package/dist/types/generated/blog.entry.d.ts.map +1 -0
- package/dist/types/generated/docs.entry.d.ts +158 -2
- package/dist/types/generated/docs.entry.d.ts.map +1 -0
- package/dist/types/generated/frequentQuestions.entry.d.ts +24 -2
- package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -0
- package/dist/types/generated/legal.entry.d.ts +10 -2
- package/dist/types/generated/legal.entry.d.ts.map +1 -0
- package/dist/types/legal.d.ts +2 -2
- package/docs/ar/configuration.md +520 -722
- package/docs/ar/intlayer_with_storybook.md +521 -0
- package/docs/bn/configuration.md +922 -0
- package/docs/bn/intlayer_with_hono.md +428 -0
- package/docs/de/configuration.md +369 -743
- package/docs/de/intlayer_with_storybook.md +521 -0
- package/docs/en/configuration.md +181 -507
- package/docs/en/intlayer_with_storybook.md +521 -0
- package/docs/en-GB/configuration.md +456 -657
- package/docs/en-GB/intlayer_with_storybook.md +521 -0
- package/docs/es/configuration.md +379 -754
- package/docs/es/intlayer_with_storybook.md +521 -0
- package/docs/fr/configuration.md +376 -757
- package/docs/fr/intlayer_with_storybook.md +521 -0
- package/docs/hi/configuration.md +532 -728
- package/docs/hi/intlayer_with_storybook.md +521 -0
- package/docs/id/configuration.md +371 -684
- package/docs/id/intlayer_with_storybook.md +521 -0
- package/docs/it/configuration.md +397 -775
- package/docs/it/intlayer_with_storybook.md +521 -0
- package/docs/ja/configuration.md +525 -724
- package/docs/ja/intlayer_with_storybook.md +521 -0
- package/docs/ko/configuration.md +525 -724
- package/docs/ko/intlayer_with_storybook.md +521 -0
- package/docs/pl/configuration.md +430 -734
- package/docs/pl/intlayer_with_storybook.md +521 -0
- package/docs/pt/configuration.md +375 -746
- package/docs/pt/intlayer_with_storybook.md +521 -0
- package/docs/ru/configuration.md +532 -701
- package/docs/ru/intlayer_with_storybook.md +521 -0
- package/docs/tr/configuration.md +527 -719
- package/docs/tr/intlayer_with_storybook.md +521 -0
- package/docs/uk/configuration.md +425 -744
- package/docs/uk/intlayer_with_storybook.md +521 -0
- package/docs/ur/configuration.md +922 -0
- package/docs/ur/intlayer_with_hono.md +428 -0
- package/docs/vi/configuration.md +412 -753
- package/docs/vi/intlayer_with_storybook.md +521 -0
- package/docs/zh/configuration.md +521 -714
- package/docs/zh/intlayer_with_storybook.md +521 -0
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
- package/dist/cjs/common-a-l0ULP6.cjs +0 -2
- package/dist/cjs/common-a-l0ULP6.cjs.map +0 -1
- package/dist/types/blog.entry-D5IgxPXY.d.ts +0 -35
- package/dist/types/blog.entry-D5IgxPXY.d.ts.map +0 -1
- package/dist/types/common-B45TZvLQ.d.ts +0 -37
- package/dist/types/common-B45TZvLQ.d.ts.map +0 -1
- package/dist/types/docs.entry-CergjAYt.d.ts +0 -157
- package/dist/types/docs.entry-CergjAYt.d.ts.map +0 -1
- package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts +0 -24
- package/dist/types/frequentQuestions.entry-BHglVS-U.d.ts.map +0 -1
- package/dist/types/legal.entry-B5Lg5eeH.d.ts +0 -10
- package/dist/types/legal.entry-B5Lg5eeH.d.ts.map +0 -1
package/docs/ru/configuration.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2024-08-13
|
|
3
|
-
updatedAt: 2026-03-
|
|
4
|
-
title: Конфигурация
|
|
5
|
-
description: Узнайте, как настроить Intlayer для вашего приложения. Поймите различные
|
|
3
|
+
updatedAt: 2026-03-20
|
|
4
|
+
title: Конфигурация (Configuration)
|
|
5
|
+
description: Узнайте, как настроить Intlayer для вашего приложения. Поймите различные настройки и опции, доступные для настройки Intlayer в соответствии с вашими потребностями.
|
|
6
6
|
keywords:
|
|
7
7
|
- Конфигурация
|
|
8
8
|
- Настройки
|
|
@@ -14,58 +14,88 @@ slugs:
|
|
|
14
14
|
- concept
|
|
15
15
|
- configuration
|
|
16
16
|
history:
|
|
17
|
+
- version: 8.4.0
|
|
18
|
+
date: 2026-03-20
|
|
19
|
+
changes: Добавлена нотация объектов по локалям для 'compiler.output' и 'dictionary.fill'
|
|
17
20
|
- version: 8.3.0
|
|
18
21
|
date: 2026-03-11
|
|
19
|
-
changes:
|
|
22
|
+
changes: Перенесен 'baseDir' из конфигурации 'content' в конфигурацию 'system'
|
|
20
23
|
- version: 8.2.0
|
|
21
|
-
date: 2026-03-
|
|
22
|
-
changes:
|
|
24
|
+
date: 2026-03-09
|
|
25
|
+
changes: Обновлены параметры компилятора (compiler), добавлена поддержка для 'output' и 'noMetadata'
|
|
23
26
|
- version: 8.1.7
|
|
24
27
|
date: 2026-02-25
|
|
25
|
-
changes:
|
|
28
|
+
changes: Обновлены параметры компилятора
|
|
29
|
+
- version: 8.1.5
|
|
30
|
+
date: 2026-02-23
|
|
31
|
+
changes: Добавлен параметр компилятора 'build-only' и префикс словаря
|
|
26
32
|
- version: 8.0.6
|
|
27
33
|
date: 2026-02-12
|
|
28
|
-
changes:
|
|
34
|
+
changes: Добавлена поддержка провайдеров Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face и Together.ai
|
|
29
35
|
- version: 8.0.5
|
|
30
36
|
date: 2026-02-06
|
|
31
|
-
changes:
|
|
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`.
|
|
32
44
|
- version: 8.0.0
|
|
33
45
|
date: 2026-01-22
|
|
34
|
-
changes:
|
|
46
|
+
changes: Добавлен параметр `rewrite` в конфигурацию маршрутизации
|
|
35
47
|
- version: 8.0.0
|
|
36
48
|
date: 2026-01-18
|
|
37
|
-
changes:
|
|
49
|
+
changes: Разделена системная конфигурация и конфигурация контента. Внутренние пути перемещены в свойство `system`. Добавлен `codeDir` для разделения файлов контента и преобразования кода.
|
|
38
50
|
- version: 8.0.0
|
|
39
51
|
date: 2026-01-18
|
|
40
|
-
changes: Добавлены
|
|
52
|
+
changes: Добавлены параметры словаря `location` и `schema`
|
|
41
53
|
- version: 7.5.1
|
|
42
54
|
date: 2026-01-10
|
|
43
55
|
changes: Добавлена поддержка форматов файлов JSON5 и JSONC
|
|
44
56
|
- version: 7.5.0
|
|
45
57
|
date: 2025-12-17
|
|
46
|
-
changes:
|
|
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`
|
|
47
77
|
- version: 6.0.0
|
|
48
78
|
date: 2025-09-16
|
|
49
79
|
changes: Добавлен режим импорта `live`
|
|
50
80
|
- version: 6.0.0
|
|
51
81
|
date: 2025-09-04
|
|
52
|
-
changes:
|
|
82
|
+
changes: Поле `hotReload` заменено на `liveSync`, добавлены поля `liveSyncPort` и `liveSyncURL`
|
|
53
83
|
- version: 5.6.1
|
|
54
84
|
date: 2025-07-25
|
|
55
|
-
changes:
|
|
85
|
+
changes: Поле `activateDynamicImport` заменено параметром `importMode`
|
|
56
86
|
- version: 5.6.0
|
|
57
87
|
date: 2025-07-13
|
|
58
|
-
changes:
|
|
88
|
+
changes: Изменен контентный каталог по умолчанию `contentDir` с `['src']` на `['.']`
|
|
59
89
|
- version: 5.5.11
|
|
60
90
|
date: 2025-06-29
|
|
61
|
-
changes:
|
|
91
|
+
changes: Добавлены команды `docs`
|
|
62
92
|
---
|
|
63
93
|
|
|
64
94
|
# Документация по конфигурации Intlayer
|
|
65
95
|
|
|
66
96
|
## Обзор
|
|
67
97
|
|
|
68
|
-
|
|
98
|
+
Конфигурационные файлы Intlayer позволяют настраивать различные аспекты плагина, такие как интернационализация (internationalization), промежуточное ПО (middleware) и обработка контента. Эта документация содержит подробное описание каждого свойства конфигурации.
|
|
69
99
|
|
|
70
100
|
---
|
|
71
101
|
|
|
@@ -75,9 +105,9 @@ history:
|
|
|
75
105
|
|
|
76
106
|
---
|
|
77
107
|
|
|
78
|
-
##
|
|
108
|
+
## Поддерживаемые форматы конфигурационных файлов
|
|
79
109
|
|
|
80
|
-
Intlayer
|
|
110
|
+
Intlayer принимает форматы конфигурационных файлов JSON, JS, MJS и TS:
|
|
81
111
|
|
|
82
112
|
- `intlayer.config.ts`
|
|
83
113
|
- `intlayer.config.js`
|
|
@@ -90,7 +120,7 @@ Intlayer поддерживает форматы файлов конфигура
|
|
|
90
120
|
|
|
91
121
|
---
|
|
92
122
|
|
|
93
|
-
## Пример файла
|
|
123
|
+
## Пример конфигурационного файла
|
|
94
124
|
|
|
95
125
|
````typescript fileName="intlayer.config.ts" codeFormat="typescript"
|
|
96
126
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -98,108 +128,108 @@ import { nextjsRewrite } from "intlayer/routing";
|
|
|
98
128
|
import { z } from "zod";
|
|
99
129
|
|
|
100
130
|
/**
|
|
101
|
-
*
|
|
131
|
+
* Пример конфигурационного файла Intlayer со всеми доступными параметрами.
|
|
102
132
|
*/
|
|
103
133
|
const config: IntlayerConfig = {
|
|
104
134
|
/**
|
|
105
|
-
*
|
|
135
|
+
* Конфигурация настроек интернационализации.
|
|
106
136
|
*/
|
|
107
137
|
internationalization: {
|
|
108
138
|
/**
|
|
109
|
-
*
|
|
110
|
-
*
|
|
139
|
+
* Список локалей (locales), поддерживаемых в приложении.
|
|
140
|
+
* По умолчанию: [Locales.ENGLISH]
|
|
111
141
|
*/
|
|
112
142
|
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
113
143
|
|
|
114
144
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
145
|
+
* Список обязательных локалей, которые должны быть определены в каждом словаре.
|
|
146
|
+
* Если пуст, все локали обязательны в режиме `strict`.
|
|
147
|
+
* По умолчанию: []
|
|
118
148
|
*/
|
|
119
149
|
requiredLocales: [Locales.ENGLISH],
|
|
120
150
|
|
|
121
151
|
/**
|
|
122
|
-
*
|
|
123
|
-
* - "strict":
|
|
124
|
-
* - "inclusive":
|
|
125
|
-
* - "loose":
|
|
126
|
-
*
|
|
152
|
+
* Уровень строгости для интернационализированного контента.
|
|
153
|
+
* - "strict": Ошибка, если любая объявленная локаль отсутствует или не объявлена.
|
|
154
|
+
* - "inclusive": Предупреждение, если объявленная локаль отсутствует.
|
|
155
|
+
* - "loose": Принимает любую существующую локаль.
|
|
156
|
+
* По умолчанию: "inclusive"
|
|
127
157
|
*/
|
|
128
158
|
strictMode: "inclusive",
|
|
129
159
|
|
|
130
160
|
/**
|
|
131
|
-
*
|
|
132
|
-
*
|
|
161
|
+
* Локаль по умолчанию, используемая в качестве резервной, если запрошенная локаль не найдена.
|
|
162
|
+
* По умолчанию: Locales.ENGLISH
|
|
133
163
|
*/
|
|
134
164
|
defaultLocale: Locales.ENGLISH,
|
|
135
165
|
},
|
|
136
166
|
|
|
137
167
|
/**
|
|
138
|
-
*
|
|
168
|
+
* Настройки, управляющие операциями со словарями и поведением при отсутствии перевода.
|
|
139
169
|
*/
|
|
140
170
|
dictionary: {
|
|
141
171
|
/**
|
|
142
|
-
*
|
|
143
|
-
* - "static":
|
|
144
|
-
* - "dynamic":
|
|
145
|
-
* - "fetch":
|
|
146
|
-
*
|
|
172
|
+
* Управляет способом импорта словарей.
|
|
173
|
+
* - "static": Статически импортируется во время сборки.
|
|
174
|
+
* - "dynamic": Динамически импортируется с использованием Suspense.
|
|
175
|
+
* - "fetch": Динамически извлекается через Live Sync API.
|
|
176
|
+
* По умолчанию: "static"
|
|
147
177
|
*/
|
|
148
178
|
importMode: "static",
|
|
149
179
|
|
|
150
180
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
181
|
+
* Стратегия автоматического заполнения отсутствующих переводов с помощью AI.
|
|
182
|
+
* Может быть логическим значением или шаблоном пути для сохранения заполненного контента.
|
|
183
|
+
* По умолчанию: true
|
|
154
184
|
*/
|
|
155
185
|
fill: true,
|
|
156
186
|
|
|
157
187
|
/**
|
|
158
|
-
*
|
|
159
|
-
* - "local":
|
|
160
|
-
* - "remote":
|
|
161
|
-
* - "hybrid":
|
|
162
|
-
* - "plugin" (
|
|
163
|
-
*
|
|
188
|
+
* Физическое расположение файлов словарей.
|
|
189
|
+
* - "local": Хранится в локальной файловой системе.
|
|
190
|
+
* - "remote": Хранится в Intlayer CMS.
|
|
191
|
+
* - "hybrid": Хранится как локально, так и в Intlayer CMS.
|
|
192
|
+
* - "plugin" (или любая пользовательская строка): Предоставляется плагином или пользовательским источником.
|
|
193
|
+
* По умолчанию: "local"
|
|
164
194
|
*/
|
|
165
195
|
location: "local",
|
|
166
196
|
|
|
167
197
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
198
|
+
* Должен ли контент автоматически преобразовываться (например, Markdown в HTML).
|
|
199
|
+
* По умолчанию: false
|
|
170
200
|
*/
|
|
171
201
|
contentAutoTransformation: false,
|
|
172
202
|
},
|
|
173
203
|
|
|
174
204
|
/**
|
|
175
|
-
*
|
|
205
|
+
* Конфигурация маршрутизации и промежуточного ПО.
|
|
176
206
|
*/
|
|
177
207
|
routing: {
|
|
178
208
|
/**
|
|
179
|
-
*
|
|
180
|
-
* - "prefix-no-default":
|
|
181
|
-
* - "prefix-all":
|
|
182
|
-
* - "no-prefix":
|
|
183
|
-
* - "search-params":
|
|
184
|
-
*
|
|
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"
|
|
185
215
|
*/
|
|
186
216
|
mode: "prefix-no-default",
|
|
187
217
|
|
|
188
218
|
/**
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
219
|
+
* Где хранить выбранную пользователем локаль.
|
|
220
|
+
* Параметры: 'cookie', 'localStorage', 'sessionStorage', 'header' или их массив.
|
|
221
|
+
* По умолчанию: ['cookie', 'header']
|
|
192
222
|
*/
|
|
193
223
|
storage: ["cookie", "header"],
|
|
194
224
|
|
|
195
225
|
/**
|
|
196
|
-
*
|
|
197
|
-
*
|
|
226
|
+
* Базовый путь для URL приложения.
|
|
227
|
+
* По умолчанию: ""
|
|
198
228
|
*/
|
|
199
229
|
basePath: "",
|
|
200
230
|
|
|
201
231
|
/**
|
|
202
|
-
*
|
|
232
|
+
* Пользовательские правила перезаписи (rewrite) URL для конкретных путей в зависимости от локали.
|
|
203
233
|
*/
|
|
204
234
|
rewrite: nextjsRewrite({
|
|
205
235
|
"/[locale]/about": {
|
|
@@ -210,125 +240,130 @@ const config: IntlayerConfig = {
|
|
|
210
240
|
},
|
|
211
241
|
|
|
212
242
|
/**
|
|
213
|
-
*
|
|
243
|
+
* Настройки, касающиеся поиска и обработки файлов контента.
|
|
214
244
|
*/
|
|
215
245
|
content: {
|
|
216
246
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
247
|
+
* Расширения файлов для сканирования словарей.
|
|
248
|
+
* По умолчанию: ['.content.ts', '.content.js', '.content.json' и др.]
|
|
219
249
|
*/
|
|
220
250
|
fileExtensions: [".content.ts", ".content.js", ".content.json"],
|
|
221
251
|
|
|
222
252
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
253
|
+
* Каталоги, в которых расположены файлы .content.
|
|
254
|
+
* По умолчанию: ["."]
|
|
225
255
|
*/
|
|
226
256
|
contentDir: ["src"],
|
|
227
257
|
|
|
228
258
|
/**
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
259
|
+
* Где находится исходный код.
|
|
260
|
+
* Используется для оптимизации сборки и преобразования кода.
|
|
261
|
+
* По умолчанию: ["."]
|
|
232
262
|
*/
|
|
233
263
|
codeDir: ["src"],
|
|
234
264
|
|
|
235
265
|
/**
|
|
236
|
-
*
|
|
237
|
-
*
|
|
266
|
+
* Паттерны, исключаемые из сканирования.
|
|
267
|
+
* По умолчанию: ['node_modules', '.intlayer' и др.]
|
|
238
268
|
*/
|
|
239
269
|
excludedPath: ["node_modules"],
|
|
240
270
|
|
|
241
271
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
272
|
+
* Отслеживать ли изменения и пересобирать словари во время разработки.
|
|
273
|
+
* По умолчанию: true в режиме разработки
|
|
244
274
|
*/
|
|
245
275
|
watch: true,
|
|
246
276
|
|
|
247
277
|
/**
|
|
248
|
-
*
|
|
278
|
+
* Команда, используемая для форматирования вновь созданных / обновленных файлов .content.
|
|
249
279
|
*/
|
|
250
280
|
formatCommand: 'npx prettier --write "{{file}}"',
|
|
251
281
|
},
|
|
252
282
|
|
|
253
283
|
/**
|
|
254
|
-
* Visual Editor
|
|
284
|
+
* Конфигурация визуального редактора (Visual Editor).
|
|
255
285
|
*/
|
|
256
286
|
editor: {
|
|
257
287
|
/**
|
|
258
|
-
*
|
|
259
|
-
*
|
|
288
|
+
* Включен ли визуальный редактор.
|
|
289
|
+
* По умолчанию: false
|
|
260
290
|
*/
|
|
261
291
|
enabled: true,
|
|
262
292
|
|
|
263
293
|
/**
|
|
264
|
-
* URL
|
|
265
|
-
*
|
|
294
|
+
* URL вашего приложения для проверки источника (origin validation).
|
|
295
|
+
* По умолчанию: ""
|
|
266
296
|
*/
|
|
267
297
|
applicationURL: "http://localhost:3000",
|
|
268
298
|
|
|
269
299
|
/**
|
|
270
|
-
*
|
|
271
|
-
*
|
|
300
|
+
* Порт для локального сервера редактора.
|
|
301
|
+
* По умолчанию: 8000
|
|
272
302
|
*/
|
|
273
303
|
port: 8000,
|
|
274
304
|
|
|
275
305
|
/**
|
|
276
|
-
*
|
|
277
|
-
*
|
|
306
|
+
* Публичный URL для редактора.
|
|
307
|
+
* По умолчанию: "http://localhost:8000"
|
|
278
308
|
*/
|
|
279
309
|
editorURL: "http://localhost:8000",
|
|
280
310
|
|
|
281
311
|
/**
|
|
282
|
-
* Intlayer CMS
|
|
283
|
-
*
|
|
312
|
+
* URL Intlayer CMS.
|
|
313
|
+
* По умолчанию: "https://app.intlayer.org"
|
|
284
314
|
*/
|
|
285
315
|
cmsURL: "https://app.intlayer.org",
|
|
286
316
|
|
|
287
317
|
/**
|
|
288
|
-
* Backend API
|
|
289
|
-
*
|
|
318
|
+
* URL Backend API.
|
|
319
|
+
* По умолчанию: "https://back.intlayer.org"
|
|
290
320
|
*/
|
|
291
321
|
backendURL: "https://back.intlayer.org",
|
|
292
322
|
|
|
293
323
|
/**
|
|
294
|
-
*
|
|
295
|
-
*
|
|
324
|
+
* Включить ли синхронизацию контента в реальном времени.
|
|
325
|
+
* По умолчанию: false
|
|
296
326
|
*/
|
|
297
327
|
liveSync: true,
|
|
298
328
|
},
|
|
299
329
|
|
|
300
330
|
/**
|
|
301
|
-
*
|
|
331
|
+
* Настройки перевода и создания контента на базе AI.
|
|
302
332
|
*/
|
|
303
333
|
ai: {
|
|
304
334
|
/**
|
|
305
|
-
* AI
|
|
306
|
-
*
|
|
307
|
-
*
|
|
335
|
+
* Провайдер AI для использования.
|
|
336
|
+
* Параметры: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
|
|
337
|
+
* По умолчанию: 'openai'
|
|
308
338
|
*/
|
|
309
339
|
provider: "openai",
|
|
310
340
|
|
|
311
341
|
/**
|
|
312
|
-
*
|
|
342
|
+
* Модель выбранного провайдера для использования.
|
|
313
343
|
*/
|
|
314
344
|
model: "gpt-4o",
|
|
315
345
|
|
|
316
346
|
/**
|
|
317
|
-
*
|
|
347
|
+
* API-ключ провайдера.
|
|
318
348
|
*/
|
|
319
349
|
apiKey: process.env.OPENAI_API_KEY,
|
|
320
350
|
|
|
321
351
|
/**
|
|
322
|
-
*
|
|
352
|
+
* Глобальный контекст для руководства AI при создании переводов.
|
|
353
|
+
*/
|
|
354
|
+
applicationContext: "Это приложение для бронирования путешествий.",
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Базовый URL для AI API.
|
|
323
358
|
*/
|
|
324
359
|
baseURL: "http://localhost:3000",
|
|
325
360
|
|
|
326
361
|
/**
|
|
327
|
-
* Сериализация данных
|
|
362
|
+
* Сериализация данных (Data Serialization)
|
|
328
363
|
*
|
|
329
|
-
*
|
|
330
|
-
* - "json":
|
|
331
|
-
* - "toon":
|
|
364
|
+
* Параметры:
|
|
365
|
+
* - "json": По умолчанию, надежно; потребляет больше токенов.
|
|
366
|
+
* - "toon": Потребляет меньше токенов, может быть не таким последовательным, как JSON.
|
|
332
367
|
*
|
|
333
368
|
* По умолчанию: "json"
|
|
334
369
|
*/
|
|
@@ -336,118 +371,118 @@ const config: IntlayerConfig = {
|
|
|
336
371
|
},
|
|
337
372
|
|
|
338
373
|
/**
|
|
339
|
-
*
|
|
374
|
+
* Настройки сборки и оптимизации.
|
|
340
375
|
*/
|
|
341
376
|
build: {
|
|
342
377
|
/**
|
|
343
|
-
*
|
|
344
|
-
* - "auto":
|
|
345
|
-
* - "manual":
|
|
346
|
-
*
|
|
378
|
+
* Режим выполнения сборки.
|
|
379
|
+
* - "auto": Собирается автоматически во время сборки приложения.
|
|
380
|
+
* - "manual": Требуется явная команда сборки.
|
|
381
|
+
* По умолчанию: "auto"
|
|
347
382
|
*/
|
|
348
383
|
mode: "auto",
|
|
349
384
|
|
|
350
385
|
/**
|
|
351
|
-
*
|
|
352
|
-
*
|
|
386
|
+
* Оптимизировать ли финальный бандл, удаляя неиспользуемые словари.
|
|
387
|
+
* По умолчанию: true в продакшене
|
|
353
388
|
*/
|
|
354
389
|
optimize: true,
|
|
355
390
|
|
|
356
391
|
/**
|
|
357
|
-
*
|
|
358
|
-
*
|
|
392
|
+
* Формат вывода сгенерированных файлов словарей.
|
|
393
|
+
* По умолчанию: ['cjs', 'esm']
|
|
359
394
|
*/
|
|
360
|
-
outputFormat: ["esm"],
|
|
395
|
+
outputFormat: ["cjs", "esm"],
|
|
361
396
|
|
|
362
397
|
/**
|
|
363
|
-
*
|
|
364
|
-
*
|
|
398
|
+
* Указывает, должна ли сборка проверять типы TypeScript.
|
|
399
|
+
* По умолчанию: false
|
|
365
400
|
*/
|
|
366
401
|
checkTypes: false,
|
|
367
402
|
},
|
|
368
403
|
|
|
369
404
|
/**
|
|
370
|
-
* Logger
|
|
405
|
+
* Конфигурация логгера (Logger).
|
|
371
406
|
*/
|
|
372
407
|
log: {
|
|
373
408
|
/**
|
|
374
|
-
*
|
|
375
|
-
* - "default":
|
|
376
|
-
* - "verbose":
|
|
377
|
-
* - "disabled":
|
|
378
|
-
*
|
|
409
|
+
* Уровень логирования.
|
|
410
|
+
* - "default": Стандартное логирование.
|
|
411
|
+
* - "verbose": Углубленное отладочное логирование.
|
|
412
|
+
* - "disabled": Отключает логирование.
|
|
413
|
+
* По умолчанию: "default"
|
|
379
414
|
*/
|
|
380
415
|
mode: "default",
|
|
381
416
|
|
|
382
417
|
/**
|
|
383
|
-
*
|
|
384
|
-
*
|
|
418
|
+
* Префикс для всех лог-сообщений.
|
|
419
|
+
* По умолчанию: "[intlayer]"
|
|
385
420
|
*/
|
|
386
421
|
prefix: "[intlayer]",
|
|
387
422
|
},
|
|
388
423
|
|
|
389
424
|
/**
|
|
390
|
-
*
|
|
425
|
+
* Системная конфигурация (Для продвинутого использования)
|
|
391
426
|
*/
|
|
392
427
|
system: {
|
|
393
428
|
/**
|
|
394
|
-
*
|
|
429
|
+
* Каталог для хранения локализованных словарей.
|
|
395
430
|
*/
|
|
396
431
|
dictionariesDir: ".intlayer/dictionary",
|
|
397
432
|
|
|
398
433
|
/**
|
|
399
|
-
*
|
|
434
|
+
* Каталог для расширения модулей TypeScript (module augmentation).
|
|
400
435
|
*/
|
|
401
436
|
moduleAugmentationDir: ".intlayer/types",
|
|
402
437
|
|
|
403
438
|
/**
|
|
404
|
-
*
|
|
439
|
+
* Каталог для хранения несложенных (unmerged) словарей.
|
|
405
440
|
*/
|
|
406
441
|
unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
|
|
407
442
|
|
|
408
443
|
/**
|
|
409
|
-
*
|
|
444
|
+
* Каталог для хранения типов словарей.
|
|
410
445
|
*/
|
|
411
446
|
typesDir: ".intlayer/types",
|
|
412
447
|
|
|
413
448
|
/**
|
|
414
|
-
*
|
|
449
|
+
* Каталог, в котором хранятся основные файлы приложения.
|
|
415
450
|
*/
|
|
416
451
|
mainDir: ".intlayer/main",
|
|
417
452
|
|
|
418
453
|
/**
|
|
419
|
-
*
|
|
454
|
+
* Каталог, в котором хранятся файлы конфигурации.
|
|
420
455
|
*/
|
|
421
456
|
configDir: ".intlayer/config",
|
|
422
457
|
|
|
423
458
|
/**
|
|
424
|
-
*
|
|
459
|
+
* Каталог, в котором хранятся файлы кэша.
|
|
425
460
|
*/
|
|
426
461
|
cacheDir: ".intlayer/cache",
|
|
427
462
|
},
|
|
428
463
|
|
|
429
464
|
/**
|
|
430
|
-
*
|
|
465
|
+
* Конфигурация компилятора (Для продвинутого использования)
|
|
431
466
|
*/
|
|
432
467
|
compiler: {
|
|
433
468
|
/**
|
|
434
|
-
* Указывает, должен ли
|
|
469
|
+
* Указывает, должен ли быть включен компилятор.
|
|
435
470
|
*
|
|
436
|
-
* - false
|
|
437
|
-
* - true
|
|
438
|
-
* - "build-only"
|
|
471
|
+
* - false: Отключает компилятор.
|
|
472
|
+
* - true: Включает компилятор.
|
|
473
|
+
* - "build-only": Пропускает компилятор во время разработки и ускоряет время запуска.
|
|
439
474
|
*
|
|
440
|
-
* По
|
|
475
|
+
* По умолчанию: false
|
|
441
476
|
*/
|
|
442
477
|
enabled: true,
|
|
443
478
|
|
|
444
479
|
/**
|
|
445
|
-
* Определяет путь
|
|
480
|
+
* Определяет путь для выходных файлов. Заменяет `outputDir`.
|
|
446
481
|
*
|
|
447
482
|
* - Пути `./` разрешаются относительно каталога компонента.
|
|
448
483
|
* - Пути `/` разрешаются относительно корня проекта (`baseDir`).
|
|
449
484
|
*
|
|
450
|
-
* - Включение переменной `{{locale}}` в путь приведет к
|
|
485
|
+
* - Включение переменной `{{locale}}` в путь приведет к созданию отдельных словарей для каждого языка.
|
|
451
486
|
*
|
|
452
487
|
* Пример:
|
|
453
488
|
* ```ts
|
|
@@ -455,16 +490,16 @@ const config: IntlayerConfig = {
|
|
|
455
490
|
* // Создавать многоязычные файлы .content.ts рядом с компонентом
|
|
456
491
|
* output: ({ fileName, extension }) => `./${fileName}${extension}`,
|
|
457
492
|
*
|
|
458
|
-
* // output: './{{fileName}}{{extension}}', //
|
|
493
|
+
* // output: './{{fileName}}{{extension}}', // Эквивалентно через шаблонную строку
|
|
459
494
|
* }
|
|
460
495
|
* ```
|
|
461
496
|
*
|
|
462
497
|
* ```ts
|
|
463
498
|
* {
|
|
464
|
-
* // Создавать централизованные JSON
|
|
499
|
+
* // Создавать централизованные JSON для каждого языка в корне проекта
|
|
465
500
|
* output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
|
|
466
501
|
*
|
|
467
|
-
* // output: '/locales/{{locale}}/{{key}}.content.json', //
|
|
502
|
+
* // output: '/locales/{{locale}}/{{key}}.content.json', // Эквивалентно через шаблонную строку
|
|
468
503
|
* }
|
|
469
504
|
* ```
|
|
470
505
|
*
|
|
@@ -482,24 +517,24 @@ const config: IntlayerConfig = {
|
|
|
482
517
|
output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
|
|
483
518
|
|
|
484
519
|
/**
|
|
485
|
-
* Указывает, должны ли компоненты сохраняться после
|
|
486
|
-
* Таким образом, компилятор можно запустить только один раз для
|
|
520
|
+
* Указывает, должны ли компоненты сохраняться после преобразования.
|
|
521
|
+
* Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
487
522
|
*/
|
|
488
523
|
saveComponents: false,
|
|
489
524
|
|
|
490
525
|
/**
|
|
491
|
-
*
|
|
526
|
+
* Вставляет в сгенерированный файл только контент. Полезно для вывода JSON для каждого языка для i18next или ICU MessageFormat.
|
|
492
527
|
*/
|
|
493
528
|
noMetadata: false,
|
|
494
529
|
|
|
495
530
|
/**
|
|
496
531
|
* Префикс ключа словаря
|
|
497
532
|
*/
|
|
498
|
-
dictionaryKeyPrefix: "", // Добавьте необязательный префикс
|
|
533
|
+
dictionaryKeyPrefix: "", // Добавьте необязательный префикс к извлеченным ключам словарей
|
|
499
534
|
},
|
|
500
535
|
|
|
501
536
|
/**
|
|
502
|
-
*
|
|
537
|
+
* Пользовательские схемы (Schemas) для валидации контента словарей.
|
|
503
538
|
*/
|
|
504
539
|
schemas: {
|
|
505
540
|
"my-schema": z.object({
|
|
@@ -508,7 +543,7 @@ const config: IntlayerConfig = {
|
|
|
508
543
|
},
|
|
509
544
|
|
|
510
545
|
/**
|
|
511
|
-
* Plugins
|
|
546
|
+
* Конфигурация плагинов (Plugins).
|
|
512
547
|
*/
|
|
513
548
|
plugins: [],
|
|
514
549
|
};
|
|
@@ -516,597 +551,393 @@ const config: IntlayerConfig = {
|
|
|
516
551
|
export default config;
|
|
517
552
|
````
|
|
518
553
|
|
|
519
|
-
|
|
554
|
+
---
|
|
555
|
+
|
|
556
|
+
## Справочник по конфигурации (Configuration Reference)
|
|
520
557
|
|
|
521
|
-
В следующих разделах
|
|
558
|
+
В следующих разделах описываются различные параметры конфигурации, доступные в Intlayer.
|
|
522
559
|
|
|
523
560
|
---
|
|
524
561
|
|
|
525
|
-
### Конфигурация интернационализации
|
|
562
|
+
### Конфигурация интернационализации (Internationalization Configuration)
|
|
526
563
|
|
|
527
564
|
Определяет настройки, связанные с интернационализацией, включая доступные локали и локаль по умолчанию для приложения.
|
|
528
565
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
- _Пример_: `['en', 'fr', 'es']`
|
|
536
|
-
|
|
537
|
-
- **requiredLocales**:
|
|
538
|
-
- _Тип_: `string[]`
|
|
539
|
-
- _По умолчанию_: `[]`
|
|
540
|
-
- _Описание_: Список обязательных локалей в приложении.
|
|
541
|
-
- _Пример_: `[]`
|
|
542
|
-
- _Примечание_: Если пусто, все локали обязательны в режиме `strict`.
|
|
543
|
-
- _Примечание_: Убедитесь, что обязательные локали также определены в поле `locales`.
|
|
544
|
-
- **strictMode**:
|
|
545
|
-
- _Тип_: `string`
|
|
546
|
-
- _По умолчанию_: `inclusive`
|
|
547
|
-
- _Описание_: Обеспечивает строгую реализацию интернационализированного контента с использованием typescript.
|
|
548
|
-
- _Примечание_: Если установлено значение "strict", функция перевода `t` потребует определения каждой объявленной локали. Если одна локаль отсутствует или не объявлена в вашей конфигурации, будет выброшена ошибка.
|
|
549
|
-
- _Примечание_: Если установлено значение "inclusive", функция перевода `t` потребует определения каждой объявленной локали. Если одна локаль отсутствует, будет выдано предупреждение. Но будет принято, если локаль не объявлена в вашей конфигурации, но существует.
|
|
550
|
-
- _Примечание_: Если установлено значение "loose", функция перевода `t` примет любую существующую локаль.
|
|
551
|
-
|
|
552
|
-
- **defaultLocale**:
|
|
553
|
-
- _Тип_: `string`
|
|
554
|
-
- _По умолчанию_: `'en'`
|
|
555
|
-
- _Описание_: Локаль по умолчанию, используемая в качестве резервной, если запрошенная локаль не найдена.
|
|
556
|
-
- _Пример_: `'en'`
|
|
557
|
-
- _Примечание_: Используется для определения локали, когда она не указана в URL, cookie или заголовке.
|
|
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, куки или заголовке. |
|
|
558
572
|
|
|
559
573
|
---
|
|
560
574
|
|
|
561
|
-
### Конфигурация редактора
|
|
575
|
+
### Конфигурация редактора (Editor Configuration)
|
|
562
576
|
|
|
563
577
|
Определяет настройки, связанные с интегрированным редактором, включая порт сервера и статус активности.
|
|
564
578
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
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}}"'` | Используется при извлечении контента или через визуальный редактор. |
|
|
742
806
|
|
|
743
807
|
---
|
|
744
808
|
|
|
745
|
-
### Конфигурация
|
|
746
|
-
|
|
747
|
-
Настройки,
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
- **watch**:
|
|
764
|
-
- _Тип_: `boolean`
|
|
765
|
-
- _По умолчанию_: `process.env.NODE_ENV === 'development'`
|
|
766
|
-
- _Описание_: Указывает, должен ли Intlayer отслеживать изменения в файлах декларации контента в приложении для перестройки соответствующих словарей.
|
|
767
|
-
|
|
768
|
-
- **fileExtensions**:
|
|
769
|
-
- _Тип_: `string[]`
|
|
770
|
-
- _По умолчанию_: `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']`
|
|
771
|
-
- _Описание_: Расширения файлов, которые следует искать при построении словарей.
|
|
772
|
-
- _Пример_: `['.data.ts', '.data.js', '.data.json']`
|
|
773
|
-
- _Примечание_: Настройка расширений файлов может помочь избежать конфликтов.
|
|
774
|
-
|
|
775
|
-
- **contentDir**:
|
|
776
|
-
- _Тип_: `string[]`
|
|
777
|
-
- _По умолчанию_: `['.']`
|
|
778
|
-
- _Пример_: `['src', '../../ui-library', require.resolve("@my-package/content")]`
|
|
779
|
-
- _Описание_: Путь к директории, где хранятся файлы определений контента (`.content.*`).
|
|
780
|
-
- _Примечание_: Используется для отслеживания файлов контента для перестройки словарей.
|
|
781
|
-
|
|
782
|
-
- **codeDir**:
|
|
783
|
-
- _Тип_: `string[]`
|
|
784
|
-
- _По умолчанию_: `['.']`
|
|
785
|
-
- _Пример_: `['src', '../../ui-library']`
|
|
786
|
-
- _Описание_: Путь к директории, где хранится код, относительно базовой директории.
|
|
787
|
-
- _Примечание_: Используется для отслеживания файлов кода для преобразования (обрезка, оптимизация). Разделение этого от `contentDir` может улучшить производительность сборки, избегая ненужных сканирований файлов контента.
|
|
788
|
-
|
|
789
|
-
- **excludedPath**:
|
|
790
|
-
- _Тип_: `string[]`
|
|
791
|
-
- _По умолчанию_: `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']`
|
|
792
|
-
- _Описание_: Каталоги, исключённые из поиска контента.
|
|
793
|
-
- _Примечание_: Эта настройка пока не используется, но планируется к реализации в будущем.
|
|
794
|
-
|
|
795
|
-
- **formatCommand**:
|
|
796
|
-
- _Тип_: `string`
|
|
797
|
-
- _По умолчанию_: `undefined`
|
|
798
|
-
- _Описание_: Команда для форматирования контента. Когда Intlayer записывает ваши файлы .content локально, эта команда будет использоваться для форматирования контента.
|
|
799
|
-
- _Пример_: `'npx prettier --write "{{file}}" --log-level silent'` Использование Prettier
|
|
800
|
-
- _Пример_: `'npx biome format "{{file}}" --write --log-level none'` Использование Biome
|
|
801
|
-
- _Пример_: `'npx eslint --fix "{{file}}" --quiet'` Использование ESLint
|
|
802
|
-
- _Примечание_: Intlayer заменит {{file}} на путь к файлу для форматирования.
|
|
803
|
-
- _Примечание_: Если не установлено, Intlayer попытается автоматически обнаружить команду форматирования. Пытаясь разрешить следующие команды: prettier, biome, eslint.
|
|
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). Позволяет обновлять контент без пересборки. |
|
|
804
827
|
|
|
805
828
|
---
|
|
806
829
|
|
|
807
|
-
### Конфигурация
|
|
830
|
+
### Конфигурация словарей (Dictionary Configuration)
|
|
831
|
+
|
|
832
|
+
Настройки, управляющие операциями со словарями, включая поведение автозаполнения и генерацию контента.
|
|
833
|
+
|
|
834
|
+
Эта конфигурация словарей служит двум основным целям:
|
|
808
835
|
|
|
809
|
-
|
|
836
|
+
1. **Значения по умолчанию**: Определение значений по умолчанию при создании файлов объявления контента.
|
|
837
|
+
2. **Поведение при отсутствии перевода**: Предоставление резервных значений, когда конкретные поля не определены, что позволяет глобально настраивать поведение операций со словарями.
|
|
810
838
|
|
|
811
|
-
|
|
839
|
+
Для получения дополнительной информации о файлах объявления контента и о том, как применяются значения конфигурации, см. [Документацию по файлам контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md).
|
|
812
840
|
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
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. |
|
|
819
847
|
|
|
820
|
-
|
|
821
|
-
- _Тип_: `string`
|
|
822
|
-
- _По умолчанию_: `'.intlayer/dictionary'`
|
|
823
|
-
- _Описание_: Путь к каталогу для хранения словарей локализации.
|
|
848
|
+
**Пример `fill`**:
|
|
824
849
|
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
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
|
+
```
|
|
831
859
|
|
|
832
|
-
|
|
833
|
-
- _Тип_: `string`
|
|
834
|
-
- _По умолчанию_: `'.intlayer/unmerged_dictionary'`
|
|
835
|
-
- _Описание_: Директория для хранения неслитых словарей.
|
|
860
|
+
---
|
|
836
861
|
|
|
837
|
-
|
|
838
|
-
- _Тип_: `string`
|
|
839
|
-
- _По умолчанию_: `'.intlayer/types'`
|
|
840
|
-
- _Описание_: Каталог для хранения типов словарей.
|
|
862
|
+
### Конфигурация AI (AI Configuration)
|
|
841
863
|
|
|
842
|
-
|
|
843
|
-
- _Тип_: `string`
|
|
844
|
-
- _По умолчанию_: `'.intlayer/main'`
|
|
845
|
-
- _Описание_: Каталог, где хранятся основные файлы приложения.
|
|
864
|
+
Определяет настройки для функций Intlayer на базе AI, таких как создание переводов.
|
|
846
865
|
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
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'`: потребляет меньше токенов, но может быть менее стабильным. |
|
|
851
874
|
|
|
852
|
-
|
|
853
|
-
- _Тип_: `string`
|
|
854
|
-
- _По умолчанию_: `'.intlayer/cache'`
|
|
855
|
-
- _Описание_: Каталог, где хранятся файлы кэша.
|
|
875
|
+
---
|
|
856
876
|
|
|
857
|
-
### Конфигурация
|
|
877
|
+
### Конфигурация сборки (Build Configuration)
|
|
858
878
|
|
|
859
|
-
|
|
879
|
+
Настройки процесса сборки и оптимизации Intlayer.
|
|
860
880
|
|
|
861
|
-
|
|
881
|
+
| Поле | Тип | Описание | Пример | Примечание |
|
|
882
|
+
| -------------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------- |
|
|
883
|
+
| `mode` | `'auto' | 'manual'` | Указывает, должен ли Intlayer запускаться автоматически во время шагов предварительной сборки приложения. По умолчанию: `'auto'` | | |
|
|
884
|
+
| `optimize` | `boolean` | Указывает, должны ли скомпилированные словари быть оптимизированы для рантайма. По умолчанию: `true` в продакшене | | |
|
|
885
|
+
| `outputFormat` | `('cjs' | 'esm')[]` | Формат вывода сгенерированных файлов словарей. По умолчанию: `['cjs', 'esm']` | | |
|
|
886
|
+
| `checkTypes` | `boolean` | Указывает, должен ли Intlayer проверять типы в сгенерированных файлах. По умолчанию: `false` | | |
|
|
862
887
|
|
|
863
|
-
|
|
864
|
-
2. **Поведение отката**: Предоставление значений отката, когда определённые поля не определены, позволяя вам глобально определить поведение операций словаря
|
|
888
|
+
---
|
|
865
889
|
|
|
866
|
-
|
|
890
|
+
### Системная конфигурация (System Configuration)
|
|
867
891
|
|
|
868
|
-
|
|
892
|
+
Эти настройки предназначены для продвинутых вариантов использования и внутренней конфигурации Intlayer.
|
|
869
893
|
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
- **version**
|
|
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'` |
|
|
880
903
|
|
|
881
904
|
---
|
|
882
905
|
|
|
883
|
-
### Конфигурация
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
Intlayer поддерживает несколько провайдеров ИИ для повышения гибкости и выбора. В настоящее время поддерживаются следующие провайдеры:
|
|
914
|
-
|
|
915
|
-
- **OpenAI** (по умолчанию)
|
|
916
|
-
- **Anthropic Claude**
|
|
917
|
-
- **Mistral AI**
|
|
918
|
-
- **DeepSeek**
|
|
919
|
-
- **Google Gemini**
|
|
920
|
-
- **Meta Llama**
|
|
921
|
-
- **Ollama**
|
|
922
|
-
- **OpenRouter**
|
|
923
|
-
- **Alibaba Cloud**
|
|
924
|
-
- **Fireworks**
|
|
925
|
-
- **Hugging Face**
|
|
926
|
-
- **Groq**
|
|
927
|
-
- **Amazon Bedrock**
|
|
928
|
-
- **Google AI Studio**
|
|
929
|
-
- **Google Vertex**
|
|
930
|
-
- **Together.ai**
|
|
931
|
-
- **ollama**
|
|
932
|
-
|
|
933
|
-
#### Свойства
|
|
934
|
-
|
|
935
|
-
- **provider**:
|
|
936
|
-
- _Тип_: `string`
|
|
937
|
-
- _По умолчанию_: `'openai'`
|
|
938
|
-
- _Описание_: Провайдер, используемый для функций ИИ в Intlayer.
|
|
939
|
-
- _Опции_: `'openai'`, `'anthropic'`, `'mistral'`, `'deepseek'`, `'gemini'`, `'ollama'`, `'openrouter'`, `'alibaba'`, `'fireworks'`, `'groq'`, `'huggingface'`, `'bedrock'`, `'googleaistudio'`, `'googlevertex'`, `'togetherai'`
|
|
940
|
-
- _Пример_: `'anthropic'`
|
|
941
|
-
- _Примечание_: Разные провайдеры могут требовать разные API-ключи и иметь различные модели ценообразования.
|
|
942
|
-
|
|
943
|
-
- **model**:
|
|
944
|
-
- _Тип_: `string`
|
|
945
|
-
- _По умолчанию_: Нет
|
|
946
|
-
- _Описание_: Модель, используемая для функций ИИ в Intlayer.
|
|
947
|
-
- _Пример_: `'gpt-4o-2024-11-20'`
|
|
948
|
-
- _Примечание_: Конкретная модель зависит от провайдера.
|
|
949
|
-
|
|
950
|
-
- **temperature**:
|
|
951
|
-
- _Тип_: `number`
|
|
952
|
-
- _По умолчанию_: Нет
|
|
953
|
-
- _Описание_: Параметр temperature контролирует случайность ответов ИИ.
|
|
954
|
-
- _Пример_: `0.1`
|
|
955
|
-
- _Примечание_: Более высокое значение temperature делает ИИ более креативным и менее предсказуемым.
|
|
956
|
-
|
|
957
|
-
- **apiKey**:
|
|
958
|
-
- _Тип_: `string`
|
|
959
|
-
- _По умолчанию_: Нет
|
|
960
|
-
- _Описание_: Ваш API-ключ для выбранного провайдера.
|
|
961
|
-
- _Пример_: `process.env.OPENAI_API_KEY`
|
|
962
|
-
- _Примечание_: Важно: ключи API должны храниться в секрете и не должны быть доступны публично. Пожалуйста, убедитесь, что они хранятся в безопасном месте, например, в переменных окружения.
|
|
963
|
-
|
|
964
|
-
- **applicationContext**:
|
|
965
|
-
- _Тип_: `string`
|
|
966
|
-
- _По умолчанию_: Нет
|
|
967
|
-
- _Описание_: Предоставляет дополнительный контекст о вашем приложении для модели ИИ, помогая ей генерировать более точные и контекстно уместные переводы. Это может включать информацию о домене вашего приложения, целевой аудитории, тоне или специфической терминологии.
|
|
968
|
-
|
|
969
|
-
- **baseURL**:
|
|
970
|
-
- _Тип_: `string`
|
|
971
|
-
- _По умолчанию_: Нет
|
|
972
|
-
- _Описание_: Базовый URL для API ИИ.
|
|
973
|
-
- _Пример_: `'https://api.openai.com/v1'`
|
|
974
|
-
- _Примечание_: Может использоваться для указания локальной или пользовательской конечной точки API ИИ.
|
|
975
|
-
|
|
976
|
-
- **dataSerialization**:
|
|
977
|
-
- _Тип_: `'json' | 'toon'`
|
|
978
|
-
- _По умолчанию_: `'json'`
|
|
979
|
-
- _Описание_: Формат сериализации данных для использования в функциях ИИ Intlayer.
|
|
980
|
-
- _Пример_: `'toon'`
|
|
981
|
-
- _Примечание_: `json`: Стандартный, надежный; использует больше токенов. `toon`: Меньше токенов, менее стабильный, чем JSON.
|
|
982
|
-
|
|
983
|
-
### Конфигурация сборки
|
|
984
|
-
|
|
985
|
-
Настройки, которые контролируют, как Intlayer оптимизирует и собирает интернационализацию вашего приложения.
|
|
986
|
-
|
|
987
|
-
Опции сборки применяются к плагинам `@intlayer/babel` и `@intlayer/swc`.
|
|
988
|
-
|
|
989
|
-
> В режиме разработки Intlayer использует статические импорты словарей для упрощения процесса разработки.
|
|
990
|
-
|
|
991
|
-
> При оптимизации Intlayer заменяет вызовы словарей для оптимизации разбиения на чанки, так что итоговый бандл импортирует только те словари, которые действительно используются.
|
|
992
|
-
|
|
993
|
-
#### Свойства
|
|
994
|
-
|
|
995
|
-
- **mode**:
|
|
996
|
-
- _Тип_: `'auto' | 'manual'`
|
|
997
|
-
- _По умолчанию_: `'auto'`
|
|
998
|
-
- _Описание_: Управляет режимом сборки.
|
|
999
|
-
- _Пример_: `'manual'`
|
|
1000
|
-
- _Примечание_: Если 'auto', сборка будет автоматически включена при сборке приложения.
|
|
1001
|
-
- _Примечание_: Если 'manual', сборка будет установлена только при выполнении команды сборки.
|
|
1002
|
-
- _Примечание_: Может использоваться для отключения сборки словарей, например, когда следует избегать выполнения в среде Node.js.
|
|
1003
|
-
|
|
1004
|
-
- **checkTypes**:
|
|
1005
|
-
- _Тип_: `boolean`
|
|
1006
|
-
- _По умолчанию_: `false`
|
|
1007
|
-
- _Описание_: Указывает, должна ли сборка проверять типы TypeScript и регистрировать ошибки.
|
|
1008
|
-
- _Примечание_: Это может замедлить процесс сборки.
|
|
1009
|
-
|
|
1010
|
-
- **optimize**:
|
|
1011
|
-
- _Тип_: `boolean`
|
|
1012
|
-
- _По умолчанию_: `process.env.NODE_ENV === 'production'`
|
|
1013
|
-
- _Описание_: Управляет тем, должна ли сборка быть оптимизирована.
|
|
1014
|
-
- _Пример_: `true`
|
|
1015
|
-
- _Примечание_: При включении Intlayer заменит все вызовы словарей для оптимизации разбиения на чанки. Таким образом, итоговый бандл будет импортировать только используемые словари. Все импорты останутся статическими, чтобы избежать асинхронной обработки при загрузке словарей.
|
|
1016
|
-
- _Примечание_: Intlayer заменит все вызовы `useIntlayer` на режим, определённый опцией `importMode`, а `getIntlayer`, на `getDictionary`.
|
|
1017
|
-
- _Примечание_: Эта опция зависит от плагинов `@intlayer/babel` и `@intlayer/swc`.
|
|
1018
|
-
- _Примечание_: Убедитесь, что все ключи объявлены статически в вызовах `useIntlayer`, например `useIntlayer('navbar')`.
|
|
1019
|
-
|
|
1020
|
-
- **outputFormat**:
|
|
1021
|
-
- _Тип_: `'esm' | 'cjs'`
|
|
1022
|
-
- _По умолчанию_: `'esm'`
|
|
1023
|
-
- _Описание_: Управляет форматом вывода словарей.
|
|
1024
|
-
- _Пример_: `'cjs'`
|
|
1025
|
-
- _Примечание_: Формат вывода словарей.
|
|
1026
|
-
|
|
1027
|
-
- **traversePattern**:
|
|
1028
|
-
- _Тип_: `string[]`
|
|
1029
|
-
- _По умолчанию_: `['**\/*.{js,ts,mjs,cjs,jsx,tsx}', '!**\/node_modules/**']`
|
|
1030
|
-
- _Описание_: Шаблоны, определяющие, какие файлы должны быть обработаны во время оптимизации.
|
|
1031
|
-
- _Пример_: `['src/**\/*.{ts,tsx}', '../ui-library/**\/*.{ts,tsx}', '!**/node_modules/**']`
|
|
1032
|
-
- _Примечание_: Используйте это, чтобы ограничить оптимизацию только релевантными файлами кода и улучшить производительность сборки.
|
|
1033
|
-
- _Примечание_: Этот параметр будет игнорироваться, если `optimize` отключен.
|
|
1034
|
-
- _Примечание_: Используйте шаблон glob.
|
|
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 для валидации структуры ваших словарей. |
|
|
1035
936
|
|
|
1036
937
|
---
|
|
1037
938
|
|
|
1038
|
-
###
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
- **enabled**:
|
|
1045
|
-
- _Тип_: `boolean | 'build-only'`
|
|
1046
|
-
- _По умолчанию_: `true`
|
|
1047
|
-
- _Описание_: Указывает, должен ли быть включен компилятор для извлечения словарей.
|
|
1048
|
-
- _Пример_: `'build-only'`
|
|
1049
|
-
- _Примечание_: Установка значения `'build-only'` позволит пропустить компилятор в режиме разработки для ускорения времени запуска. Он будет запускаться только при выполнении команд сборки.
|
|
1050
|
-
|
|
1051
|
-
- **dictionaryKeyPrefix**:
|
|
1052
|
-
- _Тип_: `string`
|
|
1053
|
-
- _По умолчанию_: `''`
|
|
1054
|
-
- _Описание_: Префикс для извлеченных ключей словаря.
|
|
1055
|
-
- _Пример_: `'my-key-'`
|
|
1056
|
-
- _Примечание_: При извлечении словарей ключ генерируется на основе имени файла. Этот префикс добавляется к сгенерированному ключу для предотвращения конфликтов.
|
|
1057
|
-
|
|
1058
|
-
- **saveComponents**:
|
|
1059
|
-
- _Тип_: `boolean`
|
|
1060
|
-
- _По умолчанию_: `false`
|
|
1061
|
-
- _Описание_: Указывает, должны ли компоненты сохраняться после преобразования.
|
|
1062
|
-
- _Примечание_: Если установлено значение true, компилятор заменит оригинальные файлы преобразованными. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить.
|
|
1063
|
-
|
|
1064
|
-
- **transformPattern**:
|
|
1065
|
-
- _Тип_: `string | string[]`
|
|
1066
|
-
- _По умолчанию_: `['**/*.{ts,tsx,jsx,js,cjs,mjs,svelte,vue}', '!**/node_modules/**']`
|
|
1067
|
-
- _Описание_: Шаблоны, определяющие, какие файлы должны быть обработаны во время оптимизации.
|
|
1068
|
-
- _Пример_: `['src/**/*.{ts,tsx}', '!**/node_modules/**']`
|
|
1069
|
-
- _Примечание_: Используйте это, чтобы ограничить оптимизацию только релевантными файлами кода и улучшить производительность сборки.
|
|
1070
|
-
|
|
1071
|
-
- **excludePattern**:
|
|
1072
|
-
- _Тип_: `string | string[]`
|
|
1073
|
-
- _По умолчанию_: `['**/node_modules/**']`
|
|
1074
|
-
- _Описание_: Шаблоны, определяющие, какие файлы должны быть исключены во время оптимизации.
|
|
1075
|
-
- _Пример_: `['**/node_modules/**', '!**/node_modules/react/**']`
|
|
1076
|
-
|
|
1077
|
-
- **output**:
|
|
1078
|
-
- _Тип_: `FilePathPattern`
|
|
1079
|
-
- _По умолчанию_: `undefined`
|
|
1080
|
-
- _Описание_: Определяет путь к выходным файлам. Заменяет `outputDir`. Поддерживает динамические переменные через шаблоны строк или функцию. Поддерживаемые переменные: `{{fileName}}`, `{{key}}`, `{{locale}}`, `{{extension}}`, `{{componentFileName}}`, `{{componentExtension}}`, `{{format}}`, `{{componentFormat}}` и `{{componentDirPath}}`.
|
|
1081
|
-
- _Примечание_: Пути `./` разрешаются относительно каталога компонента. Пути `/` разрешаются относительно корня проекта (`baseDir`).
|
|
1082
|
-
- _Примечание_: Включение переменной `{{locale}}` в путь приведет к генерации отдельных словарей для каждой локали.
|
|
1083
|
-
- _Пример_:
|
|
1084
|
-
- **Мультиязычные файлы рядом с компонентом**:
|
|
1085
|
-
- Строка: `'./{{fileName}}{{extension}}'`
|
|
1086
|
-
- Функция: `({ fileName, extension }) => \`./${fileName}${extension}\``
|
|
1087
|
-
|
|
1088
|
-
- **Централизованный JSON по локалям**:
|
|
1089
|
-
- Строка: `'/locales/{{locale}}/{{key}}.content.json'`
|
|
1090
|
-
- Функция: `({ key, locale }) => \`/locales/${locale}/${key}.content.json\``
|
|
1091
|
-
|
|
1092
|
-
- **noMetadata**:
|
|
1093
|
-
- _Тип_: `boolean`
|
|
1094
|
-
- _По умолчанию_: `false`
|
|
1095
|
-
- _Описание_: Указывает, должны ли метаданные сохраняться в файле. Если true, компилятор не будет сохранять метаданные словарей (ключ, оболочка содержимого). Полезно для вывода JSON i18next или ICU MessageFormat для каждой локали.
|
|
1096
|
-
- _Примечание_: Полезно при использовании с плагином `loadJSON`.
|
|
1097
|
-
- _Пример_:
|
|
1098
|
-
Если `true`:
|
|
1099
|
-
```json
|
|
1100
|
-
{
|
|
1101
|
-
"key": "value"
|
|
1102
|
-
}
|
|
1103
|
-
```
|
|
1104
|
-
Если `false`:
|
|
1105
|
-
```json
|
|
1106
|
-
{
|
|
1107
|
-
"key": "value",
|
|
1108
|
-
"content": {
|
|
1109
|
-
"key": "value"
|
|
1110
|
-
}
|
|
1111
|
-
}
|
|
1112
|
-
```
|
|
939
|
+
### Плагины (Plugins)
|
|
940
|
+
|
|
941
|
+
| Поле | Тип | Описание |
|
|
942
|
+
| --------- | ------------------ | --------------------------------------- |
|
|
943
|
+
| `plugins` | `IntlayerPlugin[]` | Список плагинов Intlayer для активации. |
|