@intlayer/docs 8.4.6 → 8.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/id/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/uk/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/vi/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +1 -3
- package/docs/ar/configuration.md +300 -264
- package/docs/cs/configuration.md +958 -0
- package/docs/de/configuration.md +285 -249
- package/docs/en/configuration.md +115 -137
- package/docs/en-GB/configuration.md +272 -237
- package/docs/es/configuration.md +161 -125
- package/docs/fr/configuration.md +137 -101
- package/docs/it/configuration.md +294 -259
- package/docs/ja/configuration.md +269 -233
- package/docs/nl/configuration.md +958 -0
- package/docs/pt/configuration.md +311 -275
- package/docs/ru/configuration.md +287 -272
- package/docs/tr/configuration.md +265 -229
- package/package.json +6 -6
- package/docs/bn/configuration.md +0 -922
- package/docs/hi/configuration.md +0 -922
- package/docs/id/configuration.md +0 -922
- package/docs/ko/configuration.md +0 -922
- package/docs/pl/configuration.md +0 -922
- package/docs/uk/configuration.md +0 -922
- package/docs/ur/configuration.md +0 -922
- package/docs/vi/configuration.md +0 -922
- package/docs/zh/configuration.md +0 -922
package/docs/uk/configuration.md
DELETED
|
@@ -1,922 +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` | Використовується для обмеження джерел (origins) редактора з міркувань безпеки. Якщо встановлено `'*'`, редактор доступний з будь-якого джерела. |
|
|
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 за замовчуванням; може бути змінено на віддалений сервер живої синхронізації. |
|
|
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` | Не впливає на керування кукі або зберігання мови (locale storage). |
|
|
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>>` | Користувацькі правила перенаправлення (rewrite) URL, що замінюють стандартний режим маршрутизації для певних шляхів. Підтримує динамічні параметри `[param]`. За замовчуванням: `undefined` | Див. приклад нижче | Правила перенаправлення мають пріоритет над `mode`. Працює з Next.js та Vite. `getLocalizedUrl()` автоматично застосовує відповідні правила. Див. [Користувацькі перенаправлення URL](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/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
|
-
1. **Значення за замовчуванням**: Визначення значень за замовчуванням при створенні файлів оголошення контенту.
|
|
816
|
-
2. **Поведінка резервного копіювання**: Дозволяє глобально налаштувати поведінку операцій зі словниками, надаючи резервні значення, коли конкретні поля не визначені.
|
|
817
|
-
|
|
818
|
-
Для отримання додаткової інформації про те, як застосовуються файли оголошення контенту та значення конфігурації, див. [документацію файлів контенту](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/dictionary/content_file.md).
|
|
819
|
-
|
|
820
|
-
| Поле | Тип | Опис | Приклад | Примітка |
|
|
821
|
-
| --------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
822
|
-
| `fill` | `boolean | FilePathPattern | Partial<Record<Locale, boolean | FilePathPattern>>` | Контролює, як генеруються вихідні файли автоматичного заповнення (AI-переклад). За замовчуванням: `true` | Див. приклад нижче | `true`: шлях за замовчуванням (той самий файл, що й джерело). `false`: вимкнено. Шаблони рядків/функцій генерують файли за мовами. Об'єкт за мовами: кожна мова відповідає своєму шаблону; `false` пропускає цю мову. Включення змінної `{{locale}}` активує генерацію за мовами. `fill` на рівні словника завжди має пріоритет над цією глобальною конфігурацією. |
|
|
823
|
-
| `importMode` | `'static' | 'dynamic' | 'fetch'` | Контролює спосіб імпорту словників. За замовчуванням: `'static'` | `'dynamic'` | `'static'`: Статично імпортується. `'dynamic'`: Динамічно імпортується через 'Suspense'. `'fetch'`: Динамічно отримується через 'Live Sync API'. Не впливає на `getIntlayer`, `getDictionary`, `useDictionary` тощо. |
|
|
824
|
-
| `location` | `'local' | 'remote' | 'hybrid' | string` | Де зберігаються словники. За замовчуванням: `'local'` | `'remote'` | `'local'`: файлова система. `'remote'`: Intlayer CMS. `'hybrid'`: обидва. |
|
|
825
|
-
| `contentAutoTransformation` | `boolean` | Чи повинні файли контенту автоматично трансформуватися (наприклад, з Markdown в HTML). За замовчуванням: `false` | `true` | Корисно для обробки полів Markdown через @intlayer/markdown. |
|
|
826
|
-
|
|
827
|
-
**Приклад `fill`**:
|
|
828
|
-
|
|
829
|
-
```ts
|
|
830
|
-
dictionary: {
|
|
831
|
-
fill: {
|
|
832
|
-
en: '/locales/en/{{key}}.content.json',
|
|
833
|
-
fr: ({ key }) => `/locales/fr/${key}.content.json`,
|
|
834
|
-
es: false,
|
|
835
|
-
}
|
|
836
|
-
}
|
|
837
|
-
```
|
|
838
|
-
|
|
839
|
-
---
|
|
840
|
-
|
|
841
|
-
### Конфігурація AI (AI Configuration)
|
|
842
|
-
|
|
843
|
-
Визначає налаштування для функцій Intlayer на базі AI, таких як переклад при збірці.
|
|
844
|
-
|
|
845
|
-
| Поле | Тип | Опис | Приклад | Примітка |
|
|
846
|
-
| -------------------- | ---------------------- | ------------------------------------------------------------------------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
847
|
-
| `provider` | `string` | Провайдер AI для використання. | `'openai'`, `'anthropic'`, `'googlevertex'` | |
|
|
848
|
-
| `model` | `string` | Модель AI для використання. | `'gpt-4o'`, `'claude-3-5-sonnet-20240620'` | |
|
|
849
|
-
| `apiKey` | `string` | API ключ для вибраного провайдера. | `process.env.OPENAI_API_KEY` | |
|
|
850
|
-
| `applicationContext` | `string` | Додатковий контекст про ваш додаток для покращення точності перекладу AI. | `'Навчальна платформа для дітей.'` | |
|
|
851
|
-
| `baseURL` | `string` | Необов'язковий URL базового шляху для API-викликів. | | Корисно, якщо ви використовуєте проксі або локальне розгортання AI. |
|
|
852
|
-
| `dataSerialization` | `'json' | 'toon'` | Визначає, як надсилати дані до AI. За замовчуванням: `'json'` | `'json'` | `'json'`: більш надійно та точно. `'toon'`: споживає менше токенів, але може бути менш стабільним. |
|
|
853
|
-
|
|
854
|
-
---
|
|
855
|
-
|
|
856
|
-
### Конфігурація збірки (Build Configuration)
|
|
857
|
-
|
|
858
|
-
Налаштування процесу збірки та оптимізації Intlayer.
|
|
859
|
-
|
|
860
|
-
| Поле | Тип | Опис | Приклад | Примітка |
|
|
861
|
-
| -------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------- | -------- |
|
|
862
|
-
| `mode` | `'auto' | 'manual'` | Визначає, чи повинен Intlayer запускатися автоматично під час етапів pre-build додатка. За замовчуванням: `'auto'` | | |
|
|
863
|
-
| `optimize` | `boolean` | Визначає, чи повинні скомпільовані словники бути оптимізовані для рантайму. За замовчуванням: `true` у продуктовому середовищі | | |
|
|
864
|
-
| `outputFormat` | `('cjs' | 'esm')[]` | Формат виводу для згенерованих файлів словника. За замовчуванням: `['cjs', 'esm']` | | |
|
|
865
|
-
| `checkTypes` | `boolean` | Визначає, чи має Intlayer перевіряти типи в згенерованих файлах. За замовчуванням: `false` | | |
|
|
866
|
-
|
|
867
|
-
---
|
|
868
|
-
|
|
869
|
-
### Системна конфігурація (System Configuration)
|
|
870
|
-
|
|
871
|
-
Ці налаштування призначені для розширених випадків використання та внутрішньої конфігурації Intlayer.
|
|
872
|
-
|
|
873
|
-
| Поле | Тип | Опис | За замовчуванням |
|
|
874
|
-
| ------------------------- | -------- | ------------------------------------------------- | --------------------------------- |
|
|
875
|
-
| `dictionariesDir` | `string` | Директорія скомпільованих словників. | `'.intlayer/dictionary'` |
|
|
876
|
-
| `moduleAugmentationDir` | `string` | Директорія для розширення модулів TypeScript. | `'.intlayer/types'` |
|
|
877
|
-
| `unmergedDictionariesDir` | `string` | Директорія незлитих словників. | `'.intlayer/unmerged_dictionary'` |
|
|
878
|
-
| `typesDir` | `string` | Директорія згенерованих типів. | `'.intlayer/types'` |
|
|
879
|
-
| `mainDir` | `string` | Директорія основного файлу Intlayer. | `'.intlayer/main'` |
|
|
880
|
-
| `configDir` | `string` | Директорія скомпільованих конфігураційних файлів. | `'.intlayer/config'` |
|
|
881
|
-
| `cacheDir` | `string` | Директорія кеш-файлів. | `'.intlayer/cache'` |
|
|
882
|
-
|
|
883
|
-
---
|
|
884
|
-
|
|
885
|
-
### Конфігурація компілятора (Compiler Configuration)
|
|
886
|
-
|
|
887
|
-
Налаштування компілятора Intlayer (`intlayer compiler`).
|
|
888
|
-
|
|
889
|
-
| Поле | Тип | Опис | За замовчуванням |
|
|
890
|
-
| --------------------- | ------------------------ | ------------------------------------------------------------------------------------- | ---------------- |
|
|
891
|
-
| `enabled` | `boolean` | Визначає, чи активний компілятор. | `false` |
|
|
892
|
-
| `output` | `string | Function` | Шлях виводу для витягнутих словників. | |
|
|
893
|
-
| `saveComponents` | `boolean` | Визначає, чи слід перезаписувати оригінальні вихідні файли трансформованими версіями. | `false` |
|
|
894
|
-
| `noMetadata` | `boolean` | Якщо `true`, компілятор не включатиме метадані у згенеровані файли. | `false` |
|
|
895
|
-
| `dictionaryKeyPrefix` | `string` | Необов'язковий префікс ключа словника. | `''` |
|
|
896
|
-
|
|
897
|
-
---
|
|
898
|
-
|
|
899
|
-
### Конфігурація логера (Logger Configuration)
|
|
900
|
-
|
|
901
|
-
Налаштування для кастомізації виводу логів Intlayer.
|
|
902
|
-
|
|
903
|
-
| Поле | Тип | Опис | За замовчуванням |
|
|
904
|
-
| -------- | ---------------------------------------------- | ------------------------------ | ---------------- |
|
|
905
|
-
| `mode` | `'default' | 'verbose' | 'disabled'` | Режим логування. | `'default'` |
|
|
906
|
-
| `prefix` | `string` | Префікс повідомлень логування. | `'[intlayer]'` |
|
|
907
|
-
|
|
908
|
-
---
|
|
909
|
-
|
|
910
|
-
### Користувацькі схеми (Custom Schemas)
|
|
911
|
-
|
|
912
|
-
| Поле | Тип | Опис |
|
|
913
|
-
| --------- | --------------------------- | --------------------------------------------------------------------- |
|
|
914
|
-
| `schemas` | `Record<string, ZodSchema>` | Дозволяє визначати Zod-схеми для валідації структури ваших словників. |
|
|
915
|
-
|
|
916
|
-
---
|
|
917
|
-
|
|
918
|
-
### Плагіни (Plugins)
|
|
919
|
-
|
|
920
|
-
| Поле | Тип | Опис |
|
|
921
|
-
| --------- | ------------------ | --------------------------------------- |
|
|
922
|
-
| `plugins` | `IntlayerPlugin[]` | Список плагінів Intlayer для активації. |
|