@intlayer/docs 7.0.5 → 7.0.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/blog/ar/intlayer_with_i18next.md +72 -19
- package/blog/ar/intlayer_with_next-i18next.md +61 -36
- package/blog/ar/intlayer_with_next-intl.md +61 -13
- package/blog/ar/intlayer_with_react-i18next.md +67 -18
- package/blog/ar/intlayer_with_react-intl.md +66 -13
- package/blog/ar/intlayer_with_vue-i18n.md +180 -0
- package/blog/de/intlayer_with_i18next.md +61 -26
- package/blog/de/intlayer_with_next-i18next.md +66 -17
- package/blog/de/intlayer_with_next-intl.md +62 -13
- package/blog/de/intlayer_with_react-i18next.md +66 -17
- package/blog/de/intlayer_with_react-intl.md +66 -14
- package/blog/de/intlayer_with_vue-i18n.md +178 -0
- package/blog/en/intlayer_with_i18next.md +53 -2
- package/blog/en/intlayer_with_next-i18next.md +52 -16
- package/blog/en/intlayer_with_next-intl.md +49 -0
- package/blog/en/intlayer_with_react-i18next.md +50 -1
- package/blog/en/intlayer_with_react-intl.md +53 -0
- package/blog/en/intlayer_with_vue-i18n.md +178 -0
- package/blog/en-GB/intlayer_with_i18next.md +58 -7
- package/blog/en-GB/intlayer_with_next-i18next.md +55 -9
- package/blog/en-GB/intlayer_with_next-intl.md +55 -6
- package/blog/en-GB/intlayer_with_react-i18next.md +55 -6
- package/blog/en-GB/intlayer_with_react-intl.md +56 -3
- package/blog/en-GB/intlayer_with_vue-i18n.md +180 -0
- package/blog/es/intlayer_with_i18next.md +69 -18
- package/blog/es/intlayer_with_next-i18next.md +70 -24
- package/blog/es/intlayer_with_next-intl.md +64 -13
- package/blog/es/intlayer_with_react-i18next.md +61 -12
- package/blog/es/intlayer_with_react-intl.md +65 -12
- package/blog/es/intlayer_with_vue-i18n.md +178 -0
- package/blog/fr/intlayer_with_i18next.md +77 -16
- package/blog/fr/intlayer_with_next-i18next.md +55 -31
- package/blog/fr/intlayer_with_next-intl.md +57 -7
- package/blog/fr/intlayer_with_react-i18next.md +64 -7
- package/blog/fr/intlayer_with_react-intl.md +63 -10
- package/blog/fr/intlayer_with_vue-i18n.md +178 -0
- package/blog/hi/intlayer_with_i18next.md +67 -16
- package/blog/hi/intlayer_with_next-i18next.md +69 -23
- package/blog/hi/intlayer_with_next-intl.md +61 -8
- package/blog/hi/intlayer_with_react-i18next.md +63 -14
- package/blog/hi/intlayer_with_react-intl.md +66 -13
- package/blog/hi/intlayer_with_vue-i18n.md +180 -0
- package/blog/id/intlayer_with_i18next.md +65 -14
- package/blog/id/intlayer_with_next-i18next.md +58 -12
- package/blog/id/intlayer_with_next-intl.md +60 -11
- package/blog/id/intlayer_with_react-i18next.md +59 -10
- package/blog/id/intlayer_with_react-intl.md +66 -13
- package/blog/id/intlayer_with_vue-i18n.md +178 -0
- package/blog/it/intlayer_with_i18next.md +70 -19
- package/blog/it/intlayer_with_next-i18next.md +68 -22
- package/blog/it/intlayer_with_next-intl.md +62 -12
- package/blog/it/intlayer_with_react-i18next.md +65 -16
- package/blog/it/intlayer_with_react-intl.md +67 -14
- package/blog/it/intlayer_with_vue-i18n.md +178 -0
- package/blog/ja/intlayer_with_i18next.md +74 -24
- package/blog/ja/intlayer_with_next-i18next.md +60 -37
- package/blog/ja/intlayer_with_next-intl.md +63 -15
- package/blog/ja/intlayer_with_react-i18next.md +70 -21
- package/blog/ja/intlayer_with_react-intl.md +73 -21
- package/blog/ja/intlayer_with_vue-i18n.md +180 -0
- package/blog/ko/intlayer_with_i18next.md +60 -29
- package/blog/ko/intlayer_with_next-i18next.md +59 -32
- package/blog/ko/intlayer_with_next-intl.md +52 -23
- package/blog/ko/intlayer_with_react-i18next.md +65 -16
- package/blog/ko/intlayer_with_react-intl.md +74 -22
- package/blog/ko/intlayer_with_vue-i18n.md +180 -0
- package/blog/pl/intlayer_with_i18next.md +63 -12
- package/blog/pl/intlayer_with_next-i18next.md +74 -17
- package/blog/pl/intlayer_with_next-intl.md +59 -8
- package/blog/pl/intlayer_with_react-i18next.md +59 -10
- package/blog/pl/intlayer_with_react-intl.md +65 -12
- package/blog/pl/intlayer_with_vue-i18n.md +180 -0
- package/blog/pt/intlayer_with_i18next.md +67 -16
- package/blog/pt/intlayer_with_next-i18next.md +65 -19
- package/blog/pt/intlayer_with_next-intl.md +62 -12
- package/blog/pt/intlayer_with_react-i18next.md +67 -18
- package/blog/pt/intlayer_with_react-intl.md +62 -10
- package/blog/pt/intlayer_with_vue-i18n.md +178 -0
- package/blog/ru/intlayer_with_i18next.md +68 -15
- package/blog/ru/intlayer_with_next-i18next.md +71 -25
- package/blog/ru/intlayer_with_next-intl.md +56 -7
- package/blog/ru/intlayer_with_react-i18next.md +65 -16
- package/blog/ru/intlayer_with_react-intl.md +69 -16
- package/blog/ru/intlayer_with_vue-i18n.md +180 -0
- package/blog/tr/intlayer_with_i18next.md +67 -16
- package/blog/tr/intlayer_with_next-i18next.md +78 -21
- package/blog/tr/intlayer_with_next-intl.md +69 -18
- package/blog/tr/intlayer_with_react-i18next.md +65 -16
- package/blog/tr/intlayer_with_react-intl.md +71 -19
- package/blog/tr/intlayer_with_vue-i18n.md +180 -0
- package/blog/vi/intlayer_with_i18next.md +64 -13
- package/blog/vi/intlayer_with_next-i18next.md +72 -26
- package/blog/vi/intlayer_with_next-intl.md +62 -11
- package/blog/vi/intlayer_with_react-i18next.md +66 -17
- package/blog/vi/intlayer_with_react-intl.md +70 -17
- package/blog/vi/intlayer_with_vue-i18n.md +180 -0
- package/blog/zh/intlayer_with_i18next.md +67 -17
- package/blog/zh/intlayer_with_next-i18next.md +67 -22
- package/blog/zh/intlayer_with_next-intl.md +61 -13
- package/blog/zh/intlayer_with_react-i18next.md +67 -18
- package/blog/zh/intlayer_with_react-intl.md +69 -17
- package/blog/zh/intlayer_with_vue-i18n.md +180 -0
- package/dist/cjs/generated/blog.entry.cjs +19 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +19 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/intlayer_with_nextjs_15.md +36 -9
- package/docs/ar/intlayer_with_nextjs_16.md +36 -9
- package/docs/de/intlayer_with_nextjs_15.md +36 -9
- package/docs/de/intlayer_with_nextjs_16.md +24 -6
- package/docs/en/intlayer_with_nextjs_14.md +37 -9
- package/docs/en/intlayer_with_nextjs_15.md +40 -10
- package/docs/en/intlayer_with_nextjs_16.md +40 -10
- package/docs/en/plugins/sync-json.md +152 -55
- package/docs/en/releases/v7.md +1 -1
- package/docs/en-GB/intlayer_with_nextjs_15.md +36 -9
- package/docs/en-GB/intlayer_with_nextjs_16.md +36 -9
- package/docs/en-GB/releases/v7.md +1 -1
- package/docs/es/intlayer_with_nextjs_15.md +36 -9
- package/docs/es/intlayer_with_nextjs_16.md +36 -9
- package/docs/fr/intlayer_with_nextjs_15.md +36 -9
- package/docs/fr/intlayer_with_nextjs_16.md +37 -24
- package/docs/hi/intlayer_with_nextjs_15.md +36 -9
- package/docs/hi/intlayer_with_nextjs_16.md +36 -9
- package/docs/id/intlayer_with_nextjs_16.md +36 -9
- package/docs/it/intlayer_with_nextjs_15.md +36 -9
- package/docs/it/intlayer_with_nextjs_16.md +36 -9
- package/docs/ja/intlayer_with_nextjs_15.md +36 -9
- package/docs/ja/intlayer_with_nextjs_16.md +36 -9
- package/docs/ko/intlayer_with_nextjs_15.md +36 -9
- package/docs/ko/intlayer_with_nextjs_16.md +36 -9
- package/docs/pl/intlayer_with_nextjs_16.md +36 -9
- package/docs/pt/intlayer_with_nextjs_15.md +36 -9
- package/docs/pt/intlayer_with_nextjs_16.md +36 -9
- package/docs/ru/intlayer_with_nextjs_15.md +36 -9
- package/docs/ru/intlayer_with_nextjs_16.md +36 -9
- package/docs/tr/intlayer_with_nextjs_15.md +36 -9
- package/docs/tr/intlayer_with_nextjs_16.md +39 -21
- package/docs/vi/intlayer_with_nextjs_16.md +36 -9
- package/docs/zh/intlayer_with_nextjs_15.md +36 -9
- package/docs/zh/intlayer_with_nextjs_16.md +36 -9
- package/package.json +14 -14
- package/src/generated/blog.entry.ts +19 -0
|
@@ -16,12 +16,15 @@ slugs:
|
|
|
16
16
|
- blog
|
|
17
17
|
- intlayer-with-next-i18next
|
|
18
18
|
history:
|
|
19
|
+
- version: 7.0.6
|
|
20
|
+
date: 2025-11-01
|
|
21
|
+
changes: Добавлен плагин loadJSON
|
|
19
22
|
- version: 7.0.0
|
|
20
23
|
date: 2025-10-29
|
|
21
|
-
changes: Переход на плагин syncJSON и
|
|
24
|
+
changes: Переход на плагин syncJSON и полный переписанный код
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
# Интернационализация (i18n)
|
|
27
|
+
# Интернационализация Next.js (i18n) с next-i18next и Intlayer
|
|
25
28
|
|
|
26
29
|
## Содержание
|
|
27
30
|
|
|
@@ -29,12 +32,12 @@ history:
|
|
|
29
32
|
|
|
30
33
|
## Что такое next-i18next?
|
|
31
34
|
|
|
32
|
-
**next-i18next** —
|
|
35
|
+
**next-i18next** — это один из самых популярных фреймворков для интернационализации (i18n) в приложениях Next.js. Построенный на мощной экосистеме **i18next**, он предоставляет комплексное решение для управления переводами, локализацией и переключением языков в проектах Next.js.
|
|
33
36
|
|
|
34
37
|
Однако next-i18next имеет некоторые сложности:
|
|
35
38
|
|
|
36
|
-
- **Сложная конфигурация**: Настройка next-i18next требует нескольких конфигурационных файлов и тщательной настройки i18n
|
|
37
|
-
- **Разрозненные переводы**: Файлы переводов обычно хранятся в отдельных
|
|
39
|
+
- **Сложная конфигурация**: Настройка next-i18next требует нескольких конфигурационных файлов и тщательной настройки экземпляров i18n на стороне сервера и клиента.
|
|
40
|
+
- **Разрозненные переводы**: Файлы переводов обычно хранятся в отдельных директориях от компонентов, что затрудняет поддержание согласованности.
|
|
38
41
|
- **Ручное управление пространствами имён**: Разработчикам необходимо вручную управлять пространствами имён и обеспечивать правильную загрузку ресурсов переводов.
|
|
39
42
|
- **Ограниченная типобезопасность**: Поддержка TypeScript требует дополнительной настройки и не обеспечивает автоматическую генерацию типов для переводов.
|
|
40
43
|
|
|
@@ -50,11 +53,11 @@ history:
|
|
|
50
53
|
|
|
51
54
|
1. **Существующая кодовая база**: У вас уже есть реализованная система next-i18next, и вы хотите постепенно перейти на улучшенный опыт разработки с Intlayer.
|
|
52
55
|
2. **Требования наследия**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами i18next.
|
|
53
|
-
3. **Знакомство команды**: Ваша команда привыкла к next-i18next, но хочет
|
|
56
|
+
3. **Знакомство команды**: Ваша команда привыкла к next-i18next, но хочет лучшее управление контентом.
|
|
54
57
|
|
|
55
58
|
**Для этого Intlayer может быть реализован как адаптер для next-i18next, чтобы помочь автоматизировать ваши JSON-переводы в CLI или CI/CD пайплайнах, тестировать ваши переводы и многое другое.**
|
|
56
59
|
|
|
57
|
-
В этом руководстве показано, как использовать превосходную систему декларации контента Intlayer, сохраняя совместимость с next-i18next.
|
|
60
|
+
В этом руководстве показано, как использовать превосходную систему декларации контента Intlayer, сохраняя при этом совместимость с next-i18next.
|
|
58
61
|
|
|
59
62
|
---
|
|
60
63
|
|
|
@@ -62,7 +65,7 @@ history:
|
|
|
62
65
|
|
|
63
66
|
### Шаг 1: Установка зависимостей
|
|
64
67
|
|
|
65
|
-
Установите необходимые
|
|
68
|
+
Установите необходимые пакеты с помощью предпочитаемого менеджера пакетов:
|
|
66
69
|
|
|
67
70
|
```bash packageManager="npm"
|
|
68
71
|
npm install intlayer @intlayer/sync-json-plugin
|
|
@@ -76,20 +79,20 @@ pnpm add intlayer @intlayer/sync-json-plugin
|
|
|
76
79
|
yarn add intlayer @intlayer/sync-json-plugin
|
|
77
80
|
```
|
|
78
81
|
|
|
82
|
+
```bash packageManager="bun"
|
|
83
|
+
bun add intlayer @intlayer/sync-json-plugin
|
|
84
|
+
```
|
|
85
|
+
|
|
79
86
|
**Объяснение пакетов:**
|
|
80
87
|
|
|
81
88
|
- **intlayer**: Основная библиотека для декларации и управления контентом
|
|
82
|
-
-
|
|
83
|
-
- **i18next**: Основной фреймворк для интернационализации
|
|
84
|
-
- **next-i18next**: Обертка Next.js для i18next
|
|
85
|
-
- **i18next-resources-to-backend**: Динамическая загрузка ресурсов для i18next
|
|
86
|
-
- **@intlayer/sync-json-plugin**: Плагин для синхронизации деклараций контента Intlayer в формат JSON для i18next
|
|
89
|
+
- **@intlayer/sync-json-plugin**: Плагин для синхронизации деклараций контента Intlayer с форматом JSON i18next
|
|
87
90
|
|
|
88
|
-
### Шаг 2: Реализация плагина Intlayer для
|
|
91
|
+
### Шаг 2: Реализация плагина Intlayer для обёртывания JSON
|
|
89
92
|
|
|
90
|
-
Создайте
|
|
93
|
+
Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
|
|
91
94
|
|
|
92
|
-
**Если вы также хотите экспортировать JSON
|
|
95
|
+
**Если вы также хотите экспортировать JSON-словарь для i18next**, добавьте плагин `syncJSON`:
|
|
93
96
|
|
|
94
97
|
```typescript fileName="intlayer.config.ts"
|
|
95
98
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -102,7 +105,7 @@ const config: IntlayerConfig = {
|
|
|
102
105
|
},
|
|
103
106
|
plugins: [
|
|
104
107
|
syncJSON({
|
|
105
|
-
source: ({ key, locale }) => `./
|
|
108
|
+
source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,
|
|
106
109
|
}),
|
|
107
110
|
],
|
|
108
111
|
};
|
|
@@ -112,13 +115,58 @@ export default config;
|
|
|
112
115
|
|
|
113
116
|
Плагин `syncJSON` автоматически обернет JSON. Он будет читать и записывать JSON-файлы без изменения архитектуры контента.
|
|
114
117
|
|
|
115
|
-
Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента
|
|
118
|
+
Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента Intlayer (`.content` файлы), Intlayer будет работать следующим образом:
|
|
116
119
|
|
|
117
|
-
1. загрузит как JSON, так и файлы декларации контента и преобразует их в словарь
|
|
118
|
-
2. если
|
|
120
|
+
1. загрузит как JSON, так и файлы декларации контента и преобразует их в словарь Intlayer.
|
|
121
|
+
2. если возникнут конфликты между JSON и файлами декларации контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файлов декларации контента (все настраивается).
|
|
119
122
|
|
|
120
123
|
Если изменения внесены с помощью CLI для перевода JSON или с использованием CMS, Intlayer обновит JSON-файл с новыми переводами.
|
|
121
124
|
|
|
125
|
+
Для получения дополнительной информации о плагине `syncJSON` обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### (Необязательно) Шаг 3: Реализация перевода JSON по компонентам
|
|
130
|
+
|
|
131
|
+
По умолчанию Intlayer загрузит, объединит и синхронизирует как JSON, так и файлы декларации контента. Подробнее смотрите в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md). Но если вы предпочитаете, используя плагин Intlayer, вы также можете реализовать управление локализованным JSON по компонентам в любом месте вашей кодовой базы.
|
|
132
|
+
|
|
133
|
+
Для этого вы можете использовать плагин `loadJSON`.
|
|
134
|
+
|
|
135
|
+
```ts fileName="intlayer.config.ts"
|
|
136
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
137
|
+
import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
|
|
138
|
+
|
|
139
|
+
const config: IntlayerConfig = {
|
|
140
|
+
internationalization: {
|
|
141
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
142
|
+
defaultLocale: Locales.ENGLISH,
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
// Поддерживайте синхронизацию ваших текущих JSON-файлов с словарями Intlayer
|
|
146
|
+
plugins: [
|
|
147
|
+
/**
|
|
148
|
+
* Загрузит все JSON-файлы в src, которые соответствуют шаблону {key}.i18n.json
|
|
149
|
+
*/
|
|
150
|
+
loadJSON({
|
|
151
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
152
|
+
locale: Locales.ENGLISH,
|
|
153
|
+
priority: 1, // Обеспечивает приоритет этих JSON-файлов над файлами в `./public/locales/en/${key}.json`
|
|
154
|
+
}),
|
|
155
|
+
/**
|
|
156
|
+
* Загрузит, а также запишет результаты и переводы обратно в JSON-файлы в директории локалей
|
|
157
|
+
*/
|
|
158
|
+
syncJSON({
|
|
159
|
+
source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,
|
|
160
|
+
priority: 0,
|
|
161
|
+
}),
|
|
162
|
+
],
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
export default config;
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Это загрузит все JSON-файлы в директории `src`, которые соответствуют шаблону `{key}.i18n.json`, и загрузит их как словари Intlayer.
|
|
169
|
+
|
|
122
170
|
---
|
|
123
171
|
|
|
124
172
|
## Конфигурация Git
|
|
@@ -131,12 +179,10 @@ export default config;
|
|
|
131
179
|
intl
|
|
132
180
|
```
|
|
133
181
|
|
|
134
|
-
Эти файлы автоматически пересоздаются
|
|
182
|
+
Эти файлы автоматически пересоздаются во время процесса сборки и не требуют коммита в ваш репозиторий.
|
|
135
183
|
|
|
136
184
|
### Расширение VS Code
|
|
137
185
|
|
|
138
|
-
Для улучшения опыта разработчика установите официальное
|
|
139
|
-
|
|
140
|
-
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
186
|
+
Для улучшения опыта разработчика установите официальное расширение **Intlayer для VS Code**:
|
|
141
187
|
|
|
142
|
-
[Установить из VS Code
|
|
188
|
+
[Установить из магазина расширений VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
@@ -7,9 +7,12 @@ slugs:
|
|
|
7
7
|
- blog
|
|
8
8
|
- intlayer-with-next-intl
|
|
9
9
|
history:
|
|
10
|
+
- version: 7.0.6
|
|
11
|
+
date: 2025-11-01
|
|
12
|
+
changes: Добавлен плагин loadJSON
|
|
10
13
|
- version: 7.0.0
|
|
11
14
|
date: 2025-10-29
|
|
12
|
-
changes:
|
|
15
|
+
changes: Изменение на плагин syncJSON
|
|
13
16
|
---
|
|
14
17
|
|
|
15
18
|
# Как автоматизировать перевод JSON для next-intl с помощью Intlayer
|
|
@@ -22,10 +25,10 @@ history:
|
|
|
22
25
|
|
|
23
26
|
## Почему стоит сочетать Intlayer с next-intl?
|
|
24
27
|
|
|
25
|
-
Хотя Intlayer предоставляет отличное
|
|
28
|
+
Хотя Intlayer предоставляет отличное самостоятельное решение для i18n (см. наше [руководство по интеграции с Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_nextjs_16.md)), вы можете захотеть объединить его с next-intl по нескольким причинам:
|
|
26
29
|
|
|
27
30
|
1. **Существующая кодовая база**: У вас уже есть реализованный next-intl, и вы хотите постепенно перейти на улучшенный опыт разработчика с Intlayer.
|
|
28
|
-
2. **Требования
|
|
31
|
+
2. **Требования наследия**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами next-intl.
|
|
29
32
|
3. **Знакомство команды**: Ваша команда привыкла работать с next-intl, но хочет улучшить управление контентом.
|
|
30
33
|
|
|
31
34
|
**Для этого Intlayer может быть реализован как адаптер для next-intl, чтобы помочь автоматизировать ваши JSON-переводы в CLI или CI/CD пайплайнах, тестировать переводы и многое другое.**
|
|
@@ -54,6 +57,10 @@ pnpm add intlayer @intlayer/sync-json-plugin
|
|
|
54
57
|
yarn add intlayer @intlayer/sync-json-plugin
|
|
55
58
|
```
|
|
56
59
|
|
|
60
|
+
```bash packageManager="bun"
|
|
61
|
+
bun add intlayer @intlayer/sync-json-plugin
|
|
62
|
+
```
|
|
63
|
+
|
|
57
64
|
**Описание пакетов:**
|
|
58
65
|
|
|
59
66
|
- **intlayer**: Основная библиотека для управления интернационализацией, декларации контента и сборки
|
|
@@ -63,7 +70,7 @@ yarn add intlayer @intlayer/sync-json-plugin
|
|
|
63
70
|
|
|
64
71
|
Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
|
|
65
72
|
|
|
66
|
-
**Если вы также хотите экспортировать JSON
|
|
73
|
+
**Если вы также хотите экспортировать JSON-словари для next-intl**, добавьте плагин `syncJSON`:
|
|
67
74
|
|
|
68
75
|
```typescript fileName="intlayer.config.ts"
|
|
69
76
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -89,10 +96,54 @@ export default config;
|
|
|
89
96
|
Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента intlayer (`.content` файлы), Intlayer будет работать следующим образом:
|
|
90
97
|
|
|
91
98
|
1. загрузит как JSON, так и файлы декларации контента и преобразует их в словарь intlayer.
|
|
99
|
+
|
|
92
100
|
2. если возникают конфликты между JSON и файлами декларации контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файла декларации контента (все настраивается).
|
|
93
101
|
|
|
94
102
|
Если изменения вносятся с помощью CLI для перевода JSON или через CMS, Intlayer обновит JSON-файл с новыми переводами.
|
|
95
103
|
|
|
104
|
+
Для получения дополнительной информации о плагине `syncJSON` обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
|
|
105
|
+
|
|
106
|
+
### (Необязательно) Шаг 3: Реализация переводов JSON для каждого компонента
|
|
107
|
+
|
|
108
|
+
По умолчанию Intlayer загружает, объединяет и синхронизирует как JSON, так и файлы декларации контента. Подробнее смотрите в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md). Но если вы предпочитаете, используя плагин Intlayer, вы также можете реализовать управление JSON-переводами на уровне компонентов, расположенных в любом месте вашего кода.
|
|
109
|
+
|
|
110
|
+
Для этого вы можете использовать плагин `loadJSON`.
|
|
111
|
+
|
|
112
|
+
```ts fileName="intlayer.config.ts"
|
|
113
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
114
|
+
import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
|
|
115
|
+
|
|
116
|
+
const config: IntlayerConfig = {
|
|
117
|
+
internationalization: {
|
|
118
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
119
|
+
defaultLocale: Locales.ENGLISH,
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
// Синхронизируйте ваши текущие JSON-файлы с словарями Intlayer
|
|
123
|
+
plugins: [
|
|
124
|
+
/**
|
|
125
|
+
* Загрузит все JSON-файлы в папке src, которые соответствуют шаблону {key}.i18n.json
|
|
126
|
+
*/
|
|
127
|
+
loadJSON({
|
|
128
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
129
|
+
locale: Locales.ENGLISH,
|
|
130
|
+
priority: 1, // Обеспечивает приоритет этих JSON-файлов над файлами в `./locales/en/${key}.json`
|
|
131
|
+
}),
|
|
132
|
+
/**
|
|
133
|
+
* Загрузит и запишет результаты и переводы обратно в JSON-файлы в директории locales
|
|
134
|
+
*/
|
|
135
|
+
syncJSON({
|
|
136
|
+
source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
|
|
137
|
+
priority: 0,
|
|
138
|
+
}),
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export default config;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Это загрузит все JSON-файлы в директории `src`, которые соответствуют шаблону `{key}.i18n.json`, и загрузит их как словари Intlayer.
|
|
146
|
+
|
|
96
147
|
## Конфигурация Git
|
|
97
148
|
|
|
98
149
|
Рекомендуется игнорировать автоматически сгенерированные файлы Intlayer:
|
|
@@ -102,12 +153,10 @@ export default config;
|
|
|
102
153
|
.intlayer
|
|
103
154
|
```
|
|
104
155
|
|
|
105
|
-
Эти файлы могут быть восстановлены
|
|
156
|
+
Эти файлы могут быть восстановлены во время процесса сборки и не требуют добавления в систему контроля версий.
|
|
106
157
|
|
|
107
158
|
### Расширение VS Code
|
|
108
159
|
|
|
109
160
|
Для улучшения опыта разработчика установите официальное **расширение Intlayer для VS Code**:
|
|
110
161
|
|
|
111
162
|
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
112
|
-
|
|
113
|
-
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
@@ -18,6 +18,9 @@ slugs:
|
|
|
18
18
|
- blog
|
|
19
19
|
- intlayer-with-react-i18next
|
|
20
20
|
history:
|
|
21
|
+
- version: 7.0.6
|
|
22
|
+
date: 2025-11-01
|
|
23
|
+
changes: Добавлен плагин loadJSON
|
|
21
24
|
- version: 7.0.0
|
|
22
25
|
date: 2025-10-29
|
|
23
26
|
changes: Переход на плагин syncJSON
|
|
@@ -27,21 +30,22 @@ history:
|
|
|
27
30
|
|
|
28
31
|
## Что такое Intlayer?
|
|
29
32
|
|
|
30
|
-
**Intlayer** — это инновационная,
|
|
33
|
+
**Intlayer** — это инновационная, с открытым исходным кодом библиотека интернационализации, разработанная для устранения недостатков традиционных решений i18n. Она предлагает современный подход к управлению контентом в React-приложениях.
|
|
31
34
|
|
|
32
35
|
Смотрите конкретное сравнение с react-i18next в нашем блоге [react-i18next vs. react-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md).
|
|
33
36
|
|
|
34
37
|
## Почему стоит сочетать Intlayer с react-i18next?
|
|
35
38
|
|
|
36
|
-
Хотя Intlayer предоставляет отличное самостоятельное решение i18n (см. наше [руководство по интеграции с React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_vite+react.md)), вы можете захотеть
|
|
39
|
+
Хотя Intlayer предоставляет отличное самостоятельное решение для i18n (см. наше [руководство по интеграции с React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_vite+react.md)), вы можете захотеть сочетать его с react-i18next по нескольким причинам:
|
|
37
40
|
|
|
38
|
-
1. **Существующая кодовая база**: У вас уже есть реализованная система
|
|
39
|
-
2. **Требования
|
|
41
|
+
1. **Существующая кодовая база**: У вас уже есть реализованная система react-i18next, и вы хотите постепенно перейти на улучшенный опыт разработчика с Intlayer.
|
|
42
|
+
2. **Требования наследия**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами react-i18next.
|
|
40
43
|
3. **Знакомство команды**: Ваша команда привыкла к react-i18next, но хочет улучшить управление контентом.
|
|
44
|
+
4. **Использование возможностей Intlayer**: Вы хотите использовать функции Intlayer, такие как декларация контента, автоматизация переводов, тестирование переводов и многое другое.
|
|
41
45
|
|
|
42
46
|
**Для этого Intlayer может быть реализован как адаптер для react-i18next, чтобы помочь автоматизировать ваши JSON-переводы в CLI или CI/CD пайплайнах, тестировать переводы и многое другое.**
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
Это руководство показывает, как использовать превосходную систему декларации контента Intlayer, сохраняя при этом совместимость с react-i18next.
|
|
45
49
|
|
|
46
50
|
## Содержание
|
|
47
51
|
|
|
@@ -65,14 +69,18 @@ pnpm add intlayer @intlayer/sync-json-plugin
|
|
|
65
69
|
yarn add intlayer @intlayer/sync-json-plugin
|
|
66
70
|
```
|
|
67
71
|
|
|
72
|
+
```bash packageManager="bun"
|
|
73
|
+
bun add intlayer @intlayer/sync-json-plugin
|
|
74
|
+
```
|
|
75
|
+
|
|
68
76
|
**Описание пакетов:**
|
|
69
77
|
|
|
70
78
|
- **intlayer**: Основная библиотека для управления интернационализацией, декларации контента и сборки
|
|
71
79
|
- **@intlayer/sync-json-plugin**: Плагин для экспорта деклараций контента Intlayer в JSON-формат, совместимый с react-i18next
|
|
72
80
|
|
|
73
|
-
### Шаг 2: Реализация плагина Intlayer для
|
|
81
|
+
### Шаг 2: Реализация плагина Intlayer для обёртки JSON
|
|
74
82
|
|
|
75
|
-
Создайте
|
|
83
|
+
Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
|
|
76
84
|
|
|
77
85
|
**Если вы также хотите экспортировать JSON-словари для react-i18next**, добавьте плагин `syncJSON`:
|
|
78
86
|
|
|
@@ -87,7 +95,7 @@ const config: IntlayerConfig = {
|
|
|
87
95
|
},
|
|
88
96
|
plugins: [
|
|
89
97
|
syncJSON({
|
|
90
|
-
source: ({ key, locale }) => `./
|
|
98
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
91
99
|
}),
|
|
92
100
|
],
|
|
93
101
|
};
|
|
@@ -95,16 +103,57 @@ const config: IntlayerConfig = {
|
|
|
95
103
|
export default config;
|
|
96
104
|
```
|
|
97
105
|
|
|
98
|
-
Плагин `syncJSON` автоматически обернет JSON. Он будет читать и записывать JSON-файлы без изменения архитектуры
|
|
106
|
+
Плагин `syncJSON` автоматически обернет JSON. Он будет читать и записывать JSON-файлы без изменения архитектуры содержимого.
|
|
107
|
+
|
|
108
|
+
Если вы хотите, чтобы JSON сосуществовал с файлами деклараций контента Intlayer (`.content` файлы), Intlayer будет работать следующим образом:
|
|
109
|
+
|
|
110
|
+
1. загрузит как JSON, так и файлы деклараций контента и преобразует их в словарь Intlayer.
|
|
111
|
+
2. если возникнут конфликты между JSON и файлами деклараций контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файлов деклараций контента (все настраивается).
|
|
112
|
+
|
|
113
|
+
Если изменения вносятся с помощью CLI для перевода JSON или с использованием CMS, Intlayer обновит JSON-файл с новыми переводами.
|
|
114
|
+
|
|
115
|
+
Чтобы узнать больше подробностей о плагине `syncJSON`, пожалуйста, обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
|
|
99
116
|
|
|
100
|
-
|
|
117
|
+
### (Необязательно) Шаг 3: Реализация перевода JSON по компонентам
|
|
118
|
+
|
|
119
|
+
По умолчанию Intlayer загружает, объединяет и синхронизирует как JSON, так и файлы деклараций контента. Подробнее смотрите в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md). Но если вы предпочитаете, используя плагин Intlayer, вы также можете реализовать управление локализованным JSON по компонентам в любом месте вашей кодовой базы.
|
|
120
|
+
|
|
121
|
+
Для этого вы можете использовать плагин `loadJSON`.
|
|
122
|
+
|
|
123
|
+
```ts fileName="intlayer.config.ts"
|
|
124
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
125
|
+
import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
|
|
126
|
+
|
|
127
|
+
const config: IntlayerConfig = {
|
|
128
|
+
internationalization: {
|
|
129
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
130
|
+
defaultLocale: Locales.ENGLISH,
|
|
131
|
+
},
|
|
101
132
|
|
|
102
|
-
|
|
103
|
-
|
|
133
|
+
// Синхронизируйте ваши текущие JSON-файлы с словарями Intlayer
|
|
134
|
+
plugins: [
|
|
135
|
+
/**
|
|
136
|
+
* Загрузит все JSON-файлы в папке src, соответствующие шаблону {key}.i18n.json
|
|
137
|
+
*/
|
|
138
|
+
loadJSON({
|
|
139
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
140
|
+
locale: Locales.ENGLISH,
|
|
141
|
+
priority: 1, // Обеспечивает приоритет этих JSON-файлов над файлами в `./locales/en/${key}.json`
|
|
142
|
+
}),
|
|
143
|
+
/**
|
|
144
|
+
* Загрузит и запишет результат и переводы обратно в JSON-файлы в директории locales
|
|
145
|
+
*/
|
|
146
|
+
syncJSON({
|
|
147
|
+
source: ({ key, locale }) => `./locales/${locale}/${key}.json`,
|
|
148
|
+
priority: 0,
|
|
149
|
+
}),
|
|
150
|
+
],
|
|
151
|
+
};
|
|
104
152
|
|
|
105
|
-
|
|
153
|
+
export default config;
|
|
154
|
+
```
|
|
106
155
|
|
|
107
|
-
|
|
156
|
+
Это загрузит все JSON-файлы в каталоге `src`, которые соответствуют шаблону `{key}.i18n.json`, и загрузит их как словари Intlayer.
|
|
108
157
|
|
|
109
158
|
## Конфигурация Git
|
|
110
159
|
|
|
@@ -115,10 +164,10 @@ export default config;
|
|
|
115
164
|
.intlayer
|
|
116
165
|
```
|
|
117
166
|
|
|
118
|
-
Эти файлы могут быть
|
|
167
|
+
Эти файлы могут быть восстановлены во время процесса сборки и не требуют добавления в систему контроля версий.
|
|
119
168
|
|
|
120
169
|
### Расширение VS Code
|
|
121
170
|
|
|
122
|
-
Для улучшения опыта разработчика установите официальное
|
|
171
|
+
Для улучшения опыта разработчика установите официальное **расширение Intlayer для VS Code**:
|
|
123
172
|
|
|
124
173
|
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|
|
@@ -16,13 +16,20 @@ slugs:
|
|
|
16
16
|
- blog
|
|
17
17
|
- intlayer-with-react-intl
|
|
18
18
|
history:
|
|
19
|
+
- version: 7.0.6
|
|
20
|
+
date: 2025-11-01
|
|
21
|
+
changes: Добавлен плагин loadJSON
|
|
19
22
|
- version: 7.0.0
|
|
20
23
|
date: 2025-10-29
|
|
21
|
-
changes:
|
|
24
|
+
changes: Изменён на плагин syncJSON
|
|
22
25
|
---
|
|
23
26
|
|
|
24
27
|
# Как автоматизировать ваши JSON-переводы react-intl с помощью Intlayer
|
|
25
28
|
|
|
29
|
+
## Содержание
|
|
30
|
+
|
|
31
|
+
<TOC/>
|
|
32
|
+
|
|
26
33
|
## Что такое Intlayer?
|
|
27
34
|
|
|
28
35
|
**Intlayer** — это инновационная, открытая библиотека интернационализации, разработанная для устранения недостатков традиционных решений i18n. Она предлагает современный подход к управлению контентом в React-приложениях.
|
|
@@ -31,15 +38,16 @@ history:
|
|
|
31
38
|
|
|
32
39
|
## Почему стоит сочетать Intlayer с react-intl?
|
|
33
40
|
|
|
34
|
-
Хотя Intlayer предоставляет отличное самостоятельное решение для i18n (см. наше [руководство по интеграции с React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_vite+react.md)), вы можете захотеть
|
|
41
|
+
Хотя Intlayer предоставляет отличное самостоятельное решение для i18n (см. наше [руководство по интеграции с React](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_vite+react.md)), вы можете захотеть использовать его вместе с react-intl по нескольким причинам:
|
|
35
42
|
|
|
36
|
-
1. **Существующая кодовая база**: У вас уже есть реализованная система react-intl, и вы хотите постепенно перейти на улучшенный опыт
|
|
43
|
+
1. **Существующая кодовая база**: У вас уже есть реализованная система на react-intl, и вы хотите постепенно перейти на улучшенный опыт разработки с Intlayer.
|
|
37
44
|
2. **Требования наследия**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами react-intl.
|
|
38
45
|
3. **Знакомство команды**: Ваша команда привыкла к react-intl, но хочет улучшить управление контентом.
|
|
46
|
+
4. **Использование возможностей Intlayer**: Вы хотите использовать функции Intlayer, такие как декларация контента, автоматизация перевода, тестирование переводов и многое другое.
|
|
39
47
|
|
|
40
48
|
**Для этого Intlayer может быть реализован как адаптер для react-intl, чтобы помочь автоматизировать ваши JSON-переводы в CLI или CI/CD пайплайнах, тестировать переводы и многое другое.**
|
|
41
49
|
|
|
42
|
-
Это руководство
|
|
50
|
+
Это руководство показывает, как использовать превосходную систему декларации контента Intlayer, сохраняя при этом совместимость с react-intl.
|
|
43
51
|
|
|
44
52
|
## Содержание
|
|
45
53
|
|
|
@@ -63,16 +71,20 @@ pnpm add intlayer @intlayer/sync-json-plugin
|
|
|
63
71
|
yarn add intlayer @intlayer/sync-json-plugin
|
|
64
72
|
```
|
|
65
73
|
|
|
74
|
+
```bash packageManager="bun"
|
|
75
|
+
bun add intlayer @intlayer/sync-json-plugin
|
|
76
|
+
```
|
|
77
|
+
|
|
66
78
|
**Описание пакетов:**
|
|
67
79
|
|
|
68
80
|
- **intlayer**: Основная библиотека для управления интернационализацией, декларации контента и сборки
|
|
69
|
-
- **@intlayer/sync-json-plugin**: Плагин для экспорта деклараций контента Intlayer в JSON
|
|
81
|
+
- **@intlayer/sync-json-plugin**: Плагин для экспорта деклараций контента Intlayer в формат JSON, совместимый с react-intl
|
|
70
82
|
|
|
71
|
-
### Шаг 2: Реализация плагина Intlayer для
|
|
83
|
+
### Шаг 2: Реализация плагина Intlayer для обертки JSON
|
|
72
84
|
|
|
73
|
-
Создайте
|
|
85
|
+
Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
|
|
74
86
|
|
|
75
|
-
**Если вы также хотите экспортировать JSON
|
|
87
|
+
**Если вы также хотите экспортировать словари JSON для react-intl**, добавьте плагин `syncJSON`:
|
|
76
88
|
|
|
77
89
|
```typescript fileName="intlayer.config.ts"
|
|
78
90
|
import { Locales, type IntlayerConfig } from "intlayer";
|
|
@@ -93,16 +105,57 @@ const config: IntlayerConfig = {
|
|
|
93
105
|
export default config;
|
|
94
106
|
```
|
|
95
107
|
|
|
96
|
-
Плагин `syncJSON` автоматически обернет JSON. Он будет читать и записывать JSON-файлы без изменения архитектуры
|
|
108
|
+
Плагин `syncJSON` автоматически обернет JSON. Он будет читать и записывать JSON-файлы без изменения архитектуры содержимого.
|
|
109
|
+
|
|
110
|
+
Если вы хотите, чтобы JSON сосуществовал с файлами деклараций контента Intlayer (`.content` файлы), Intlayer будет работать следующим образом:
|
|
111
|
+
|
|
112
|
+
1. загрузит как JSON, так и файлы деклараций контента и преобразует их в словарь Intlayer.
|
|
113
|
+
2. если возникнут конфликты между JSON и файлами деклараций контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файлов деклараций контента (все настраивается).
|
|
114
|
+
|
|
115
|
+
Если изменения вносятся с помощью CLI для перевода JSON или с помощью CMS, Intlayer обновит JSON-файл с новыми переводами.
|
|
116
|
+
|
|
117
|
+
Чтобы узнать больше подробностей о плагине `syncJSON`, пожалуйста, обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
|
|
118
|
+
|
|
119
|
+
### (Необязательно) Шаг 3: Реализация переводов JSON по компонентам
|
|
120
|
+
|
|
121
|
+
По умолчанию Intlayer загрузит, объединит и синхронизирует как JSON, так и файлы деклараций контента. Подробнее смотрите в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md). Но если вы предпочитаете, используя плагин Intlayer, вы также можете реализовать управление локализованным JSON по компонентам в любом месте вашей кодовой базы.
|
|
122
|
+
|
|
123
|
+
Для этого вы можете использовать плагин `loadJSON`.
|
|
124
|
+
|
|
125
|
+
```ts fileName="intlayer.config.ts"
|
|
126
|
+
import { Locales, type IntlayerConfig } from "intlayer";
|
|
127
|
+
import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";
|
|
97
128
|
|
|
98
|
-
|
|
129
|
+
const config: IntlayerConfig = {
|
|
130
|
+
internationalization: {
|
|
131
|
+
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
132
|
+
defaultLocale: Locales.ENGLISH,
|
|
133
|
+
},
|
|
99
134
|
|
|
100
|
-
|
|
101
|
-
|
|
135
|
+
// Синхронизируйте ваши текущие JSON-файлы с словарями Intlayer
|
|
136
|
+
plugins: [
|
|
137
|
+
/**
|
|
138
|
+
* Загрузит все JSON-файлы в папке src, соответствующие шаблону {key}.i18n.json
|
|
139
|
+
*/
|
|
140
|
+
loadJSON({
|
|
141
|
+
source: ({ key }) => `./src/**/${key}.i18n.json`,
|
|
142
|
+
locale: Locales.ENGLISH,
|
|
143
|
+
priority: 1, // Обеспечивает приоритет этих JSON-файлов над файлами в `./locales/en/${key}.json`
|
|
144
|
+
}),
|
|
145
|
+
/**
|
|
146
|
+
* Загрузит и запишет результат и переводы обратно в JSON-файлы в директории locales
|
|
147
|
+
*/
|
|
148
|
+
syncJSON({
|
|
149
|
+
source: ({ key, locale }) => `./messages/${locale}/${key}.json`,
|
|
150
|
+
priority: 0,
|
|
151
|
+
}),
|
|
152
|
+
],
|
|
153
|
+
};
|
|
102
154
|
|
|
103
|
-
|
|
155
|
+
export default config;
|
|
156
|
+
```
|
|
104
157
|
|
|
105
|
-
|
|
158
|
+
Это загрузит все JSON-файлы в каталоге `src`, которые соответствуют шаблону `{key}.i18n.json`, и загрузит их как словари Intlayer.
|
|
106
159
|
|
|
107
160
|
## Конфигурация Git
|
|
108
161
|
|
|
@@ -117,6 +170,6 @@ export default config;
|
|
|
117
170
|
|
|
118
171
|
### Расширение VS Code
|
|
119
172
|
|
|
120
|
-
Для улучшения опыта разработчика установите официальное
|
|
173
|
+
Для улучшения опыта разработчика установите официальное **расширение Intlayer для VS Code**:
|
|
121
174
|
|
|
122
|
-
[Установить из
|
|
175
|
+
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
|