@intlayer/docs 7.0.0-canary.2 → 7.0.0-canary.3

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.
Files changed (43) hide show
  1. package/dist/cjs/common.cjs.map +1 -1
  2. package/dist/esm/common.mjs.map +1 -1
  3. package/dist/types/common.d.ts +5 -0
  4. package/dist/types/common.d.ts.map +1 -1
  5. package/docs/ar/intlayer_with_nextjs_16.md +1652 -0
  6. package/docs/ar/releases/v7.md +486 -0
  7. package/docs/de/intlayer_with_nextjs_16.md +1662 -0
  8. package/docs/de/releases/v7.md +503 -0
  9. package/docs/en/intlayer_with_nextjs_15.md +5 -2
  10. package/docs/en/intlayer_with_nextjs_16.md +4 -4
  11. package/docs/en-GB/intlayer_with_nextjs_16.md +1642 -0
  12. package/docs/en-GB/releases/v7.md +486 -0
  13. package/docs/es/intlayer_with_nextjs_16.md +1670 -0
  14. package/docs/es/releases/v7.md +503 -0
  15. package/docs/fr/intlayer_with_nextjs_16.md +1692 -0
  16. package/docs/fr/releases/v7.md +504 -0
  17. package/docs/hi/intlayer_with_nextjs_16.md +1618 -0
  18. package/docs/hi/releases/v7.md +486 -0
  19. package/docs/id/intlayer_with_nextjs_16.md +1604 -0
  20. package/docs/id/releases/v7.md +503 -0
  21. package/docs/it/intlayer_with_nextjs_16.md +1600 -0
  22. package/docs/it/releases/v7.md +505 -0
  23. package/docs/ja/intlayer_CMS.md +0 -9
  24. package/docs/ja/intlayer_with_nextjs_16.md +1788 -0
  25. package/docs/ja/releases/v7.md +504 -0
  26. package/docs/ko/intlayer_with_nextjs_16.md +1641 -0
  27. package/docs/ko/releases/v7.md +504 -0
  28. package/docs/pl/intlayer_with_nextjs_16.md +1645 -0
  29. package/docs/pl/releases/v7.md +486 -0
  30. package/docs/pt/intlayer_with_nextjs_16.md +1646 -0
  31. package/docs/pt/introduction.md +0 -15
  32. package/docs/pt/releases/v7.md +486 -0
  33. package/docs/ru/intlayer_with_nextjs_16.md +1610 -0
  34. package/docs/ru/releases/v7.md +486 -0
  35. package/docs/tr/intlayer_with_nextjs_16.md +1599 -0
  36. package/docs/tr/releases/v7.md +486 -0
  37. package/docs/vi/intlayer_with_nextjs_16.md +1597 -0
  38. package/docs/vi/releases/v7.md +486 -0
  39. package/docs/zh/intlayer_CMS.md +0 -23
  40. package/docs/zh/intlayer_with_nextjs_16.md +1628 -0
  41. package/docs/zh/releases/v7.md +487 -0
  42. package/package.json +14 -14
  43. package/src/common.ts +5 -0
@@ -0,0 +1,486 @@
1
+ ---
2
+ createdAt: 2025-09-22
3
+ updatedAt: 2025-09-23
4
+ title: Новый Intlayer v7 - Что нового?
5
+ description: Узнайте, что нового в Intlayer v7. Значительные улучшения производительности, опыта разработчика и новые функции для улучшения вашего процесса интернационализации.
6
+ keywords:
7
+ - Intlayer
8
+ - Локализация
9
+ - Разработка
10
+ - Производительность
11
+ - Опыт разработчика
12
+ - Функции
13
+ - React
14
+ - Next.js
15
+ - JavaScript
16
+ - TypeScript
17
+ slugs:
18
+ - doc
19
+ - releases
20
+ - v7
21
+ ---
22
+
23
+ # Новый Intlayer v7 - Что нового?
24
+
25
+ Добро пожаловать в Intlayer v7! Этот крупный релиз представляет значительные улучшения в производительности, безопасности типов и опыте разработчика. Ниже приведены основные моменты, а также заметки по миграции и практические примеры.
26
+
27
+ ## Основные моменты
28
+
29
+ - Стратегия кэширования для ускорения сборок
30
+ - Улучшенная генерация типов TypeScript с типами, специфичными для локали
31
+ - Оптимизация бандла: локали как строки вместо enum
32
+ - Новые режимы маршрутизации: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params`
33
+ - Хранение локали в соответствии с GDPR с использованием localStorage по умолчанию
34
+ - Гибкая конфигурация хранения: cookies, localStorage, sessionStorage или несколько одновременно
35
+ - Размер пакета Visual Editor уменьшен на 30%
36
+ - Расширенные опции конфигурации middleware
37
+ - Обновленное поведение команды fill для лучшего управления контентом
38
+ - Повышенная стабильность с полным обновлением файлов деклараций контента
39
+ - Интеллектуальное управление повторными попытками для точности перевода
40
+ - Параллелизация для ускорения обработки переводов
41
+ - Умное разбиение на чанки для работы с большими файлами в пределах ограничений AI контекста
42
+
43
+ ---
44
+
45
+ ## Производительность: Кэширование для ускорения сборок
46
+
47
+ Вместо повторной сборки деклараций контента с помощью esbuild при каждой сборке, в версии 7 реализована стратегия кэширования, которая ускоряет процесс сборки.
48
+
49
+ ```bash
50
+ npx intlayer build
51
+ ```
52
+
53
+ Новая система кэширования:
54
+
55
+ - Сохраняет скомпилированные декларации контента, чтобы избежать повторной обработки
56
+ - Обнаруживает изменения и перестраивает только изменённые файлы
57
+ - Значительно сокращает время сборки для крупных проектов
58
+
59
+ ---
60
+
61
+ ## TypeScript: Генерация типов, специфичных для локали
62
+
63
+ Типы TypeScript теперь генерируются для каждой локали отдельно, обеспечивая более строгую типизацию и устраняя объединённые типы для всех локалей.
64
+
65
+ **Поведение в v6:**
66
+
67
+ ```tsx
68
+ const content = getIntlayer("my-title-content", "en");
69
+ // typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }
70
+ ```
71
+
72
+ **Поведение в v7:**
73
+
74
+ ```tsx
75
+ const content = getIntlayer("my-title-content", "en");
76
+ // typeof content = { title: "My title" }
77
+ ```
78
+
79
+ Преимущества:
80
+
81
+ - Более точное автозаполнение в вашей IDE
82
+ - Лучшая типобезопасность без смешения типов между локалями
83
+ - Повышенная производительность за счёт уменьшения сложности типов
84
+
85
+ ---
86
+
87
+ ## Оптимизация бандла: Локали как строки
88
+
89
+ Тип `Locales` больше не является перечислением (enum), что означает, что он теперь полностью поддаётся tree-shaking и не будет раздувать ваш бандл тысячами неиспользуемых записей локалей.
90
+
91
+ **v6:**
92
+
93
+ ```typescript
94
+ import { Locales } from "intlayer";
95
+ // Перечисление, включающее все локали -> не поддаётся tree-shaking
96
+
97
+ const locale: Locales = Locales.ENGLISH;
98
+ ```
99
+
100
+ **v7:**
101
+
102
+ ```typescript
103
+ import { Locales, Locale } from "intlayer";
104
+ // Тип строки -> полностью поддаётся tree-shaking
105
+
106
+ const locale: Locale = Locales.ENGLISH;
107
+ ```
108
+
109
+ > Поскольку `Locales` больше не является перечислением (enum), вам нужно будет изменить тип с `Locales` на `Locale`, чтобы получить локаль в виде типа.
110
+
111
+ Подробнее смотрите в [реализации](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts).
112
+
113
+ ---
114
+
115
+ ## Новые режимы маршрутизации для большей гибкости
116
+
117
+ В версии 7 введена единая конфигурация `routing.mode`, которая заменяет предыдущие опции `prefixDefault` и `noPrefix`, предоставляя более детальный контроль над структурой URL.
118
+
119
+ ### Доступные режимы маршрутизации
120
+
121
+ - **`prefix-no-default`** (по умолчанию): у локали по умолчанию нет префикса, у остальных локалей префикс есть
122
+ - `/dashboard` (en) или `/fr/dashboard` (fr)
123
+ - **`prefix-all`**: у всех локалей есть префикс
124
+ - `/en/dashboard` (en) или `/fr/dashboard` (fr)
125
+ - **`no-prefix`**: Нет префиксов локали в URL (локаль обрабатывается через хранилище/заголовки)
126
+ - `/dashboard` для всех локалей
127
+ - **`search-params`**: Локаль передается как параметр запроса
128
+ - `/dashboard?locale=en` или `/dashboard?locale=fr`
129
+
130
+ ### Базовая конфигурация
131
+
132
+ ```typescript
133
+ // intlayer.config.ts
134
+ export default {
135
+ internationalization: {
136
+ locales: ["en", "fr", "es"],
137
+ defaultLocale: "en",
138
+ },
139
+ routing: {
140
+ mode: "prefix-no-default", // по умолчанию
141
+ },
142
+ };
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Соответствие GDPR: хранение в localStorage / cookies
148
+
149
+ v7 уделяет приоритетное внимание конфиденциальности пользователей, используя `localStorage` в качестве механизма хранения по умолчанию вместо cookies. Это изменение помогает соблюдать требования GDPR, избегая необходимости получать согласие на использование cookies для предпочтений локали.
150
+
151
+ ### Опции конфигурации хранения
152
+
153
+ Новое поле `routing.storage` также доступно в дополнение к предыдущим опциям `middleware.cookieName` и `middleware.serverSetCookie`, предлагая гибкие конфигурации хранения:
154
+
155
+ ```typescript
156
+ // Отключить хранение
157
+ storage: false
158
+
159
+ // Простые типы хранения
160
+ storage: 'cookie'
161
+ storage: 'localStorage'
162
+ storage: 'sessionStorage'
163
+
164
+ // Cookie с пользовательскими атрибутами
165
+ storage: {
166
+ type: 'cookie',
167
+ name: 'custom-locale',
168
+ domain: '.example.com',
169
+ secure: true,
170
+ sameSite: 'strict'
171
+ }
172
+
173
+ // localStorage с пользовательским ключом
174
+ storage: {
175
+ type: 'localStorage',
176
+ name: 'custom-locale'
177
+ }
178
+
179
+ // Несколько типов хранения для резервирования
180
+ storage: ['cookie', 'localStorage']
181
+ ```
182
+
183
+ ### Пример конфигурации, соответствующей GDPR
184
+
185
+ Для производственных приложений, которым нужно сбалансировать функциональность и соответствие GDPR:
186
+
187
+ ```typescript
188
+ // intlayer.config.ts
189
+ export default {
190
+ internationalization: {
191
+ locales: ["en", "fr", "es"],
192
+ defaultLocale: "en",
193
+ },
194
+ routing: {
195
+ mode: "prefix-no-default",
196
+ storage: [
197
+ {
198
+ type: "localStorage", // Основное хранилище (не требует согласия)
199
+ name: "user-locale",
200
+ },
201
+ {
202
+ type: "cookie", // Дополнительное хранение в cookie (требуется согласие)
203
+ name: "user-locale",
204
+ secure: true,
205
+ sameSite: "strict",
206
+ httpOnly: false,
207
+ },
208
+ ],
209
+ },
210
+ };
211
+ ```
212
+
213
+ ### Включение / отключение хранения cookie
214
+
215
+ Пример с использованием React / Next.js:
216
+
217
+ Можно определить глобально:
218
+
219
+ ```typescript
220
+ <IntlayerProvider isCookieEnabled={false}>
221
+ <App />
222
+ </IntlayerProvider>
223
+ ```
224
+
225
+ Можно переопределить локально для каждого хука:
226
+
227
+ ```ts
228
+ const { setLocale } = useLocale({ isCookieEnabled: false });
229
+
230
+ setLocale("en");
231
+ ```
232
+
233
+ **Примечание:** По умолчанию куки включены.
234
+ **Примечание:** Ознакомьтесь с [требованиями GDPR к куки](https://gdpr.eu/cookies/) для вашего конкретного случая.
235
+
236
+ ---
237
+
238
+ ## Визуальный редактор: пакет стал на 30% меньше
239
+
240
+ Пакет Визуального редактора был оптимизирован и стал на 30% меньше по сравнению с предыдущей версией благодаря:
241
+
242
+ - Улучшению производительности редактора кода
243
+ - Удалению ненужных зависимостей от основных пакетов Intlayer
244
+ - Лучшей tree-shaking и упаковке модулей
245
+
246
+ Это приводит к более быстрой загрузке и улучшенной производительности приложения во время выполнения.
247
+
248
+ ---
249
+
250
+ ## Команда fill: обновленное поведение для лучшего управления контентом
251
+
252
+ v7 вводит улучшенное поведение команды `fill`, обеспечивая более предсказуемое и гибкое управление контентом:
253
+
254
+ ### Новое поведение fill
255
+
256
+ - **`fill: true`** — Перезаписывает текущий файл заполненным контентом для всех локалей
257
+ - **`fill: "path/to/file"`** — Заполняет указанный файл без изменения текущего файла
258
+ - **`fill: false`** — Полностью отключает авто-заполнение
259
+
260
+ ### Расширенная поддержка сложных структур контента
261
+
262
+ Команда fill теперь поддерживает сложные структуры деклараций контента, включая:
263
+
264
+ - **Составные объекты**: декларации контента, которые ссылаются на другие объекты
265
+ - **Деструктурированный контент**: контент, использующий паттерны деструктуризации
266
+ - **Вложенные ссылки**: объекты, которые вызывают друг друга в сложных иерархиях
267
+ - **Динамические структуры контента**: контент с условными или вычисляемыми свойствами
268
+
269
+ ### Преимущества
270
+
271
+ - **Более ясное намерение**: поведение теперь более явно указывает, что именно изменяется
272
+ - **Лучшее разделение**: Файлы с контентом могут храниться отдельно от заполненных переводов
273
+ - **Улучшенный рабочий процесс**: Разработчики получают больше контроля над тем, где хранятся переводы
274
+ - **Поддержка сложных структур**: Обработка сложных архитектур контента с множеством взаимосвязанных объектов
275
+
276
+ ### Пример использования
277
+
278
+ ```typescript
279
+ // Перезаписать текущий файл со всеми локалями
280
+ const content = {
281
+ key: "example",
282
+ fill: true, // Перезаписывает этот файл
283
+ content: {
284
+ title: "Hello World",
285
+ },
286
+ };
287
+
288
+ // Заполнить отдельный файл без изменения текущего файла
289
+ const content = {
290
+ key: "example",
291
+ fill: "./translations.json", // Создаёт/обновляет translations.json
292
+ content: {
293
+ title: "Hello World",
294
+ },
295
+ };
296
+
297
+ // Отключить авто-заполнение
298
+ const content = {
299
+ key: "example",
300
+ fill: false, // Авто-заполнение отключено
301
+ content: {
302
+ title: "Hello World",
303
+ },
304
+ };
305
+
306
+ // Сложная структура контента с составными объектами
307
+ const sharedContent = {
308
+ buttons: {
309
+ save: "Сохранить", // Кнопка сохранить
310
+ cancel: "Отмена", // Кнопка отмены
311
+ },
312
+ };
313
+
314
+ const content = {
315
+ key: "complex-example",
316
+ fill: true,
317
+ content: {
318
+ // Ссылки на другие объекты
319
+ sharedContent,
320
+
321
+ // Деструктурированный контент
322
+ ...sharedContent,
323
+
324
+ // Вложенные ссылки
325
+ sections: [
326
+ {
327
+ ...sharedContent.buttons,
328
+ header: "Раздел 1",
329
+ },
330
+ ],
331
+ },
332
+ };
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Повышенная стабильность и управление переводами
338
+
339
+ v7 вводит несколько улучшений, чтобы сделать перевод контента более надежным и эффективным:
340
+
341
+ ### Полные обновления файлов декларации контента
342
+
343
+ Система теперь обновляет файлы `.content.{ts,js,cjs,mjs}`, а не частично, обеспечивая:
344
+
345
+ - **Целостность данных**: Полная перезапись файла предотвращает частичные обновления, которые могут повредить содержимое
346
+ - **Согласованность**: Все локали обновляются атомарно, поддерживая синхронизацию
347
+ - **Надежность**: Снижает риск неполных или поврежденных файлов содержимого
348
+
349
+ ### Интеллектуальное управление повторными попытками
350
+
351
+ Новые механизмы повторных попыток предотвращают отправку содержимого в неправильных форматах и избегают срыва всего процесса заполнения, если один из запросов не удался.
352
+
353
+ ### Параллелизация для ускорения обработки
354
+
355
+ Операции перевода теперь выполняются в очереди с параллельным запуском, что значительно ускоряет процесс.
356
+
357
+ ### Умное разбиение на части для больших файлов
358
+
359
+ Продвинутые стратегии разбиения обрабатывают большие файлы содержимого, не превышая контекстные окна ИИ:
360
+
361
+ ### Пример рабочего процесса
362
+
363
+ ```typescript
364
+ // Большой файл содержимого автоматически разбивается на части
365
+ const content = {
366
+ key: "large-documentation",
367
+ fill: true,
368
+ content: {
369
+ // Большое содержимое автоматически разбивается на части для обработки ИИ
370
+ introduction: "..." // более 5000 символов
371
+ sections: [
372
+ // Несколько больших разделов
373
+ ]
374
+ }
375
+ };
376
+ ```
377
+
378
+ Система автоматически:
379
+
380
+ 1. Анализирует размер и структуру содержимого
381
+ 2. Соответствующим образом разбивает содержимое на части
382
+ 3. Обрабатывает части параллельно
383
+ 4. Проверяет и при необходимости повторяет попытки
384
+ 5. Восстанавливает полный файл
385
+
386
+ ---
387
+
388
+ ## Заметки по миграции с версии v6
389
+
390
+ ### Удалённые конфигурации
391
+
392
+ - **`middleware.cookieName`**: заменён на `routing.storage`
393
+ - **`middleware.serverSetCookie`**: заменён на `routing.storage`
394
+ - **`middleware.prefixDefault`**: заменён на `routing.mode`
395
+ - **`middleware.noPrefix`**: заменён на `routing.mode`
396
+
397
+ ### Сопоставление миграции
398
+
399
+ #### Сопоставление конфигураций
400
+
401
+ | Конфигурация v6 | Конфигурация v7 |
402
+ | -------------------------- | ------------------------------------------------------- |
403
+ | `autoFill: xxx` | `fill: xxx` |
404
+ | `prefixDefault: false` | `mode: 'prefix-no-default'` |
405
+ | `prefixDefault: true` | `mode: 'prefix-all'` |
406
+ | `noPrefix: true` | `mode: 'no-prefix'` |
407
+ | `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
408
+ | `serverSetCookie: 'never'` | `storage: false` или удалите cookie из массива storage` |
409
+
410
+ #### Пример миграции
411
+
412
+ **До (v6):**
413
+
414
+ ```typescript
415
+ export default {
416
+ middleware: {
417
+ headerName: "x-intlayer-locale",
418
+ cookieName: "intlayer-locale",
419
+ prefixDefault: false,
420
+ basePath: "",
421
+ serverSetCookie: "always",
422
+ noPrefix: false,
423
+ },
424
+ };
425
+ ```
426
+
427
+ **После (v7):**
428
+
429
+ ```typescript
430
+ export default {
431
+ routing: {
432
+ mode: "prefix-no-default",
433
+ storage: "localStorage", // или 'cookie', если требуется хранение в cookie
434
+ headerName: "x-intlayer-locale",
435
+ basePath: "",
436
+ detectLocaleOnPrefetchNoPrefix: false,
437
+ },
438
+ };
439
+ ```
440
+
441
+ #### Соответствие содержимого словаря
442
+
443
+ | Содержимое словаря v6 | Содержимое словаря v7 |
444
+ | --------------------- | --------------------- |
445
+ | `autoFill: xxx` | `fill: xxx` |
446
+
447
+ #### Пример миграции
448
+
449
+ **До (v6):**
450
+
451
+ ```typescript
452
+ const content = {
453
+ key: "example",
454
+ autoFill: true, // Перезаписывает этот файл
455
+ content: {
456
+ title: "Привет, мир",
457
+ },
458
+ };
459
+ ```
460
+
461
+ **После (v7):**
462
+
463
+ ```typescript
464
+ const content = {
465
+ key: "example",
466
+ fill: true, // Перезаписывает этот файл
467
+ content: {
468
+ title: "Привет, мир",
469
+ },
470
+ };
471
+ ```
472
+
473
+ ---
474
+
475
+ ## Заметки по миграции с v5 на v6
476
+
477
+ Подробнее смотрите в [заметках по миграции с v5 на v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/releases/v6.md).
478
+
479
+ ---
480
+
481
+ ## Полезные ссылки
482
+
483
+ - [Справочник по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md)
484
+ - [Документация по Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/next-intlayer/index.md)
485
+ - [Типы TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
486
+ - [Руководство по cookie в соответствии с GDPR](https://gdpr.eu/cookies/)