@intlayer/docs 7.0.4 → 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.
Files changed (145) hide show
  1. package/blog/ar/intlayer_with_i18next.md +72 -19
  2. package/blog/ar/intlayer_with_next-i18next.md +61 -36
  3. package/blog/ar/intlayer_with_next-intl.md +61 -13
  4. package/blog/ar/intlayer_with_react-i18next.md +67 -18
  5. package/blog/ar/intlayer_with_react-intl.md +66 -13
  6. package/blog/ar/intlayer_with_vue-i18n.md +180 -0
  7. package/blog/de/intlayer_with_i18next.md +61 -26
  8. package/blog/de/intlayer_with_next-i18next.md +66 -17
  9. package/blog/de/intlayer_with_next-intl.md +62 -13
  10. package/blog/de/intlayer_with_react-i18next.md +66 -17
  11. package/blog/de/intlayer_with_react-intl.md +66 -14
  12. package/blog/de/intlayer_with_vue-i18n.md +178 -0
  13. package/blog/en/intlayer_with_i18next.md +53 -2
  14. package/blog/en/intlayer_with_next-i18next.md +52 -16
  15. package/blog/en/intlayer_with_next-intl.md +49 -0
  16. package/blog/en/intlayer_with_react-i18next.md +50 -1
  17. package/blog/en/intlayer_with_react-intl.md +53 -0
  18. package/blog/en/intlayer_with_vue-i18n.md +178 -0
  19. package/blog/en-GB/intlayer_with_i18next.md +58 -7
  20. package/blog/en-GB/intlayer_with_next-i18next.md +55 -9
  21. package/blog/en-GB/intlayer_with_next-intl.md +55 -6
  22. package/blog/en-GB/intlayer_with_react-i18next.md +55 -6
  23. package/blog/en-GB/intlayer_with_react-intl.md +56 -3
  24. package/blog/en-GB/intlayer_with_vue-i18n.md +180 -0
  25. package/blog/es/intlayer_with_i18next.md +69 -18
  26. package/blog/es/intlayer_with_next-i18next.md +70 -24
  27. package/blog/es/intlayer_with_next-intl.md +64 -13
  28. package/blog/es/intlayer_with_react-i18next.md +61 -12
  29. package/blog/es/intlayer_with_react-intl.md +65 -12
  30. package/blog/es/intlayer_with_vue-i18n.md +178 -0
  31. package/blog/fr/intlayer_with_i18next.md +77 -16
  32. package/blog/fr/intlayer_with_next-i18next.md +55 -31
  33. package/blog/fr/intlayer_with_next-intl.md +57 -7
  34. package/blog/fr/intlayer_with_react-i18next.md +64 -7
  35. package/blog/fr/intlayer_with_react-intl.md +63 -10
  36. package/blog/fr/intlayer_with_vue-i18n.md +178 -0
  37. package/blog/hi/intlayer_with_i18next.md +67 -16
  38. package/blog/hi/intlayer_with_next-i18next.md +69 -23
  39. package/blog/hi/intlayer_with_next-intl.md +61 -8
  40. package/blog/hi/intlayer_with_react-i18next.md +63 -14
  41. package/blog/hi/intlayer_with_react-intl.md +66 -13
  42. package/blog/hi/intlayer_with_vue-i18n.md +180 -0
  43. package/blog/id/intlayer_with_i18next.md +65 -14
  44. package/blog/id/intlayer_with_next-i18next.md +58 -12
  45. package/blog/id/intlayer_with_next-intl.md +60 -11
  46. package/blog/id/intlayer_with_react-i18next.md +59 -10
  47. package/blog/id/intlayer_with_react-intl.md +66 -13
  48. package/blog/id/intlayer_with_vue-i18n.md +178 -0
  49. package/blog/it/intlayer_with_i18next.md +70 -19
  50. package/blog/it/intlayer_with_next-i18next.md +68 -22
  51. package/blog/it/intlayer_with_next-intl.md +62 -12
  52. package/blog/it/intlayer_with_react-i18next.md +65 -16
  53. package/blog/it/intlayer_with_react-intl.md +67 -14
  54. package/blog/it/intlayer_with_vue-i18n.md +178 -0
  55. package/blog/ja/intlayer_with_i18next.md +74 -24
  56. package/blog/ja/intlayer_with_next-i18next.md +60 -37
  57. package/blog/ja/intlayer_with_next-intl.md +63 -15
  58. package/blog/ja/intlayer_with_react-i18next.md +70 -21
  59. package/blog/ja/intlayer_with_react-intl.md +73 -21
  60. package/blog/ja/intlayer_with_vue-i18n.md +180 -0
  61. package/blog/ko/intlayer_with_i18next.md +60 -29
  62. package/blog/ko/intlayer_with_next-i18next.md +59 -32
  63. package/blog/ko/intlayer_with_next-intl.md +52 -23
  64. package/blog/ko/intlayer_with_react-i18next.md +65 -16
  65. package/blog/ko/intlayer_with_react-intl.md +74 -22
  66. package/blog/ko/intlayer_with_vue-i18n.md +180 -0
  67. package/blog/pl/intlayer_with_i18next.md +63 -12
  68. package/blog/pl/intlayer_with_next-i18next.md +74 -17
  69. package/blog/pl/intlayer_with_next-intl.md +59 -8
  70. package/blog/pl/intlayer_with_react-i18next.md +59 -10
  71. package/blog/pl/intlayer_with_react-intl.md +65 -12
  72. package/blog/pl/intlayer_with_vue-i18n.md +180 -0
  73. package/blog/pt/intlayer_with_i18next.md +67 -16
  74. package/blog/pt/intlayer_with_next-i18next.md +65 -19
  75. package/blog/pt/intlayer_with_next-intl.md +62 -12
  76. package/blog/pt/intlayer_with_react-i18next.md +67 -18
  77. package/blog/pt/intlayer_with_react-intl.md +62 -10
  78. package/blog/pt/intlayer_with_vue-i18n.md +178 -0
  79. package/blog/ru/intlayer_with_i18next.md +68 -15
  80. package/blog/ru/intlayer_with_next-i18next.md +71 -25
  81. package/blog/ru/intlayer_with_next-intl.md +56 -7
  82. package/blog/ru/intlayer_with_react-i18next.md +65 -16
  83. package/blog/ru/intlayer_with_react-intl.md +69 -16
  84. package/blog/ru/intlayer_with_vue-i18n.md +180 -0
  85. package/blog/tr/intlayer_with_i18next.md +67 -16
  86. package/blog/tr/intlayer_with_next-i18next.md +78 -21
  87. package/blog/tr/intlayer_with_next-intl.md +69 -18
  88. package/blog/tr/intlayer_with_react-i18next.md +65 -16
  89. package/blog/tr/intlayer_with_react-intl.md +71 -19
  90. package/blog/tr/intlayer_with_vue-i18n.md +180 -0
  91. package/blog/vi/intlayer_with_i18next.md +64 -13
  92. package/blog/vi/intlayer_with_next-i18next.md +72 -26
  93. package/blog/vi/intlayer_with_next-intl.md +62 -11
  94. package/blog/vi/intlayer_with_react-i18next.md +66 -17
  95. package/blog/vi/intlayer_with_react-intl.md +70 -17
  96. package/blog/vi/intlayer_with_vue-i18n.md +180 -0
  97. package/blog/zh/intlayer_with_i18next.md +67 -17
  98. package/blog/zh/intlayer_with_next-i18next.md +67 -22
  99. package/blog/zh/intlayer_with_next-intl.md +61 -13
  100. package/blog/zh/intlayer_with_react-i18next.md +67 -18
  101. package/blog/zh/intlayer_with_react-intl.md +69 -17
  102. package/blog/zh/intlayer_with_vue-i18n.md +180 -0
  103. package/dist/cjs/generated/blog.entry.cjs +19 -0
  104. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  105. package/dist/esm/generated/blog.entry.mjs +19 -0
  106. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  107. package/dist/types/generated/blog.entry.d.ts +1 -0
  108. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  109. package/docs/ar/intlayer_with_nextjs_15.md +36 -9
  110. package/docs/ar/intlayer_with_nextjs_16.md +36 -9
  111. package/docs/de/intlayer_with_nextjs_15.md +36 -9
  112. package/docs/de/intlayer_with_nextjs_16.md +24 -6
  113. package/docs/en/intlayer_with_nextjs_14.md +37 -9
  114. package/docs/en/intlayer_with_nextjs_15.md +40 -10
  115. package/docs/en/intlayer_with_nextjs_16.md +40 -10
  116. package/docs/en/plugins/sync-json.md +152 -55
  117. package/docs/en/releases/v7.md +1 -1
  118. package/docs/en-GB/intlayer_with_nextjs_15.md +36 -9
  119. package/docs/en-GB/intlayer_with_nextjs_16.md +36 -9
  120. package/docs/en-GB/releases/v7.md +1 -1
  121. package/docs/es/intlayer_with_nextjs_15.md +36 -9
  122. package/docs/es/intlayer_with_nextjs_16.md +36 -9
  123. package/docs/fr/intlayer_with_nextjs_15.md +36 -9
  124. package/docs/fr/intlayer_with_nextjs_16.md +37 -24
  125. package/docs/hi/intlayer_with_nextjs_15.md +36 -9
  126. package/docs/hi/intlayer_with_nextjs_16.md +36 -9
  127. package/docs/id/intlayer_with_nextjs_16.md +36 -9
  128. package/docs/it/intlayer_with_nextjs_15.md +36 -9
  129. package/docs/it/intlayer_with_nextjs_16.md +36 -9
  130. package/docs/ja/intlayer_with_nextjs_15.md +36 -9
  131. package/docs/ja/intlayer_with_nextjs_16.md +36 -9
  132. package/docs/ko/intlayer_with_nextjs_15.md +36 -9
  133. package/docs/ko/intlayer_with_nextjs_16.md +36 -9
  134. package/docs/pl/intlayer_with_nextjs_16.md +36 -9
  135. package/docs/pt/intlayer_with_nextjs_15.md +36 -9
  136. package/docs/pt/intlayer_with_nextjs_16.md +36 -9
  137. package/docs/ru/intlayer_with_nextjs_15.md +36 -9
  138. package/docs/ru/intlayer_with_nextjs_16.md +36 -9
  139. package/docs/tr/intlayer_with_nextjs_15.md +36 -9
  140. package/docs/tr/intlayer_with_nextjs_16.md +39 -21
  141. package/docs/vi/intlayer_with_nextjs_16.md +36 -9
  142. package/docs/zh/intlayer_with_nextjs_15.md +36 -9
  143. package/docs/zh/intlayer_with_nextjs_16.md +36 -9
  144. package/package.json +14 -14
  145. 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) Next.js с next-i18next и Intlayer
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** — одна из самых популярных библиотек для интернационализации (i18n) в приложениях Next.js. Построенная на мощной экосистеме **i18next**, она предоставляет комплексное решение для управления переводами, локализацией и переключением языков в проектах Next.js.
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
- - **next-intlayer**: Слой интеграции с Next.js с плагинами сборки
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 для обертки JSON
91
+ ### Шаг 2: Реализация плагина Intlayer для обёртывания JSON
89
92
 
90
- Создайте конфигурационный файл Intlayer для определения поддерживаемых локалей:
93
+ Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
91
94
 
92
- **Если вы также хотите экспортировать JSON-словари для i18next**, добавьте плагин `syncJSON`:
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 }) => `./messages/${locale}/${key}.json`,
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 сосуществовал с файлами декларации контента intlayer (`.content` файлы), Intlayer будет работать следующим образом:
118
+ Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента Intlayer (`.content` файлы), Intlayer будет работать следующим образом:
116
119
 
117
- 1. загрузит как JSON, так и файлы декларации контента и преобразует их в словарь intlayer.
118
- 2. если возникают конфликты между JSON и файлами декларации контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файла декларации контента (все настраивается).
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
- Для улучшения опыта разработчика установите официальное **расширение Intlayer для VS Code**:
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 Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
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: Переход на плагин syncJSON
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 предоставляет отличное автономное решение для i18n (см. наше [руководство по интеграции с Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_with_nextjs_16.md)), вы можете захотеть объединить его с next-intl по нескольким причинам:
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. **Требования к наследию**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами next-intl.
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-словарь для next-intl**, добавьте плагин `syncJSON`:
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** — это инновационная, открытая библиотека интернационализации, разработанная для устранения недостатков традиционных решений i18n. Она предлагает современный подход к управлению контентом в React-приложениях.
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)), вы можете захотеть объединить его с react-i18next по нескольким причинам:
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. **Существующая кодовая база**: У вас уже есть реализованная система на react-i18next, и вы хотите постепенно перейти на улучшенный опыт разработки с Intlayer.
39
- 2. **Требования к совместимости**: Ваш проект требует совместимости с существующими плагинами или рабочими процессами react-i18next.
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
- В этом руководстве показано, как использовать превосходную систему декларации контента Intlayer, сохраняя при этом совместимость с react-i18next.
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 для обёртывания JSON
81
+ ### Шаг 2: Реализация плагина Intlayer для обёртки JSON
74
82
 
75
- Создайте конфигурационный файл Intlayer для определения поддерживаемых локалей:
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 }) => `./messages/${locale}/${key}.json`,
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
- Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента intlayer (`.content` файлы), Intlayer будет работать следующим образом:
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
- 1. загрузить как JSON, так и файлы декларации контента и преобразовать их в словарь intlayer.
103
- 2. если возникают конфликты между JSON и файлами декларации контента, Intlayer выполнит слияние всех этих словарей. В зависимости от приоритета плагинов и файла декларации контента (все настраивается).
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
- Если изменения внесены с помощью CLI для перевода JSON или с использованием CMS, Intlayer обновит JSON-файл с новыми переводами.
153
+ export default config;
154
+ ```
106
155
 
107
- Для получения дополнительной информации о плагине `syncJSON` обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
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
- Для улучшения опыта разработчика установите официальное **Расширение Intlayer для VS Code**:
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: Переход на плагин syncJSON
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)), вы можете захотеть сочетать его с react-intl по нескольким причинам:
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, и вы хотите постепенно перейти на улучшенный опыт разработчика с Intlayer.
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
- Это руководство покажет вам, как использовать превосходную систему декларации контента Intlayer, сохраняя при этом совместимость с react-intl.
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-формат, совместимый с react-intl
81
+ - **@intlayer/sync-json-plugin**: Плагин для экспорта деклараций контента Intlayer в формат JSON, совместимый с react-intl
70
82
 
71
- ### Шаг 2: Реализация плагина Intlayer для обёртки JSON
83
+ ### Шаг 2: Реализация плагина Intlayer для обертки JSON
72
84
 
73
- Создайте конфигурационный файл Intlayer для определения поддерживаемых локалей:
85
+ Создайте файл конфигурации Intlayer для определения поддерживаемых локалей:
74
86
 
75
- **Если вы также хотите экспортировать JSON-словари для react-intl**, добавьте плагин `syncJSON`:
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
- Если вы хотите, чтобы JSON сосуществовал с файлами декларации контента intlayer (`.content` файлы), Intlayer будет работать следующим образом:
129
+ const config: IntlayerConfig = {
130
+ internationalization: {
131
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
132
+ defaultLocale: Locales.ENGLISH,
133
+ },
99
134
 
100
- 1. загрузит как JSON, так и файлы декларации контента и преобразует их в словарь intlayer.
101
- 2. если возникают конфликты между JSON и файлами декларации контента, Intlayer выполнит слияние всех словарей. В зависимости от приоритета плагинов и файла декларации контента (все настраивается).
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
- Если изменения вносятся с помощью CLI для перевода JSON или с использованием CMS, Intlayer обновит JSON-файл с новыми переводами.
155
+ export default config;
156
+ ```
104
157
 
105
- Для получения дополнительной информации о плагине `syncJSON` обратитесь к [документации плагина syncJSON](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/plugins/sync-json.md).
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
- Для улучшения опыта разработчика установите официальное **Расширение Intlayer для VS Code**:
173
+ Для улучшения опыта разработчика установите официальное **расширение Intlayer для VS Code**:
121
174
 
122
- [Установить из магазина расширений VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
175
+ [Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)