@intlayer/docs 7.5.9 → 7.5.11

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 (196) hide show
  1. package/README.md +9 -2
  2. package/dist/cjs/generated/docs.entry.cjs +57 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +57 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +3 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/cli/ci.md +137 -0
  9. package/docs/ar/cli/index.md +7 -1
  10. package/docs/ar/cli/list.md +39 -2
  11. package/docs/ar/cli/list_projects.md +131 -0
  12. package/docs/ar/cli/push.md +1 -1
  13. package/docs/ar/configuration.md +3 -3
  14. package/docs/ar/interest_of_intlayer.md +1 -1
  15. package/docs/ar/intlayer_CMS.md +25 -5
  16. package/docs/ar/intlayer_with_express.md +1 -0
  17. package/docs/ar/intlayer_with_fastify.md +516 -0
  18. package/docs/ar/readme.md +1 -1
  19. package/docs/de/cli/ci.md +137 -0
  20. package/docs/de/cli/index.md +7 -1
  21. package/docs/de/cli/list.md +39 -2
  22. package/docs/de/cli/list_projects.md +130 -0
  23. package/docs/de/cli/push.md +1 -1
  24. package/docs/de/configuration.md +3 -3
  25. package/docs/de/interest_of_intlayer.md +1 -1
  26. package/docs/de/intlayer_CMS.md +25 -5
  27. package/docs/de/intlayer_with_express.md +1 -0
  28. package/docs/de/intlayer_with_fastify.md +449 -0
  29. package/docs/de/readme.md +1 -1
  30. package/docs/en/cli/ci.md +137 -0
  31. package/docs/en/cli/index.md +14 -1
  32. package/docs/en/cli/list.md +39 -2
  33. package/docs/en/cli/list_projects.md +128 -0
  34. package/docs/en/cli/push.md +1 -1
  35. package/docs/en/configuration.md +3 -3
  36. package/docs/en/interest_of_intlayer.md +2 -2
  37. package/docs/en/intlayer_CMS.md +25 -5
  38. package/docs/en/intlayer_with_express.md +1 -0
  39. package/docs/en/intlayer_with_fastify.md +439 -0
  40. package/docs/en/readme.md +3 -1
  41. package/docs/en-GB/cli/ci.md +137 -0
  42. package/docs/en-GB/cli/index.md +7 -1
  43. package/docs/en-GB/cli/list.md +39 -2
  44. package/docs/en-GB/cli/list_projects.md +130 -0
  45. package/docs/en-GB/cli/push.md +1 -1
  46. package/docs/en-GB/configuration.md +3 -3
  47. package/docs/en-GB/interest_of_intlayer.md +1 -1
  48. package/docs/en-GB/intlayer_CMS.md +25 -5
  49. package/docs/en-GB/intlayer_with_express.md +1 -0
  50. package/docs/en-GB/intlayer_with_fastify.md +445 -0
  51. package/docs/en-GB/readme.md +3 -1
  52. package/docs/es/cli/ci.md +137 -0
  53. package/docs/es/cli/index.md +7 -1
  54. package/docs/es/cli/list.md +39 -2
  55. package/docs/es/cli/list_projects.md +130 -0
  56. package/docs/es/cli/push.md +1 -1
  57. package/docs/es/configuration.md +3 -3
  58. package/docs/es/interest_of_intlayer.md +1 -1
  59. package/docs/es/intlayer_CMS.md +25 -5
  60. package/docs/es/intlayer_with_express.md +1 -0
  61. package/docs/es/intlayer_with_fastify.md +480 -0
  62. package/docs/es/readme.md +1 -1
  63. package/docs/fr/cli/ci.md +137 -0
  64. package/docs/fr/cli/index.md +7 -1
  65. package/docs/fr/cli/list.md +39 -2
  66. package/docs/fr/cli/list_projects.md +131 -0
  67. package/docs/fr/cli/push.md +1 -1
  68. package/docs/fr/configuration.md +3 -3
  69. package/docs/fr/interest_of_intlayer.md +1 -1
  70. package/docs/fr/intlayer_CMS.md +25 -5
  71. package/docs/fr/intlayer_with_express.md +1 -0
  72. package/docs/fr/intlayer_with_fastify.md +439 -0
  73. package/docs/fr/readme.md +1 -1
  74. package/docs/hi/cli/ci.md +137 -0
  75. package/docs/hi/cli/index.md +7 -1
  76. package/docs/hi/cli/list.md +38 -1
  77. package/docs/hi/cli/list_projects.md +130 -0
  78. package/docs/hi/cli/push.md +1 -1
  79. package/docs/hi/configuration.md +3 -3
  80. package/docs/hi/interest_of_intlayer.md +1 -1
  81. package/docs/hi/intlayer_CMS.md +25 -5
  82. package/docs/hi/intlayer_with_express.md +1 -0
  83. package/docs/hi/intlayer_with_fastify.md +540 -0
  84. package/docs/hi/readme.md +1 -1
  85. package/docs/id/cli/ci.md +137 -0
  86. package/docs/id/cli/index.md +7 -1
  87. package/docs/id/cli/list.md +38 -1
  88. package/docs/id/cli/list_projects.md +128 -0
  89. package/docs/id/cli/push.md +1 -1
  90. package/docs/id/configuration.md +3 -3
  91. package/docs/id/interest_of_intlayer.md +1 -1
  92. package/docs/id/intlayer_CMS.md +25 -5
  93. package/docs/id/intlayer_with_express.md +1 -0
  94. package/docs/id/intlayer_with_fastify.md +470 -0
  95. package/docs/id/readme.md +1 -1
  96. package/docs/it/cli/ci.md +137 -0
  97. package/docs/it/cli/index.md +7 -1
  98. package/docs/it/cli/list.md +39 -2
  99. package/docs/it/cli/list_projects.md +130 -0
  100. package/docs/it/cli/push.md +1 -1
  101. package/docs/it/configuration.md +3 -3
  102. package/docs/it/interest_of_intlayer.md +1 -1
  103. package/docs/it/intlayer_CMS.md +25 -5
  104. package/docs/it/intlayer_with_express.md +1 -0
  105. package/docs/it/intlayer_with_fastify.md +445 -0
  106. package/docs/it/readme.md +1 -1
  107. package/docs/ja/cli/ci.md +137 -0
  108. package/docs/ja/cli/index.md +7 -1
  109. package/docs/ja/cli/list.md +38 -1
  110. package/docs/ja/cli/list_projects.md +136 -0
  111. package/docs/ja/cli/push.md +1 -1
  112. package/docs/ja/configuration.md +3 -3
  113. package/docs/ja/interest_of_intlayer.md +1 -1
  114. package/docs/ja/intlayer_CMS.md +25 -5
  115. package/docs/ja/intlayer_with_express.md +1 -0
  116. package/docs/ja/intlayer_with_fastify.md +516 -0
  117. package/docs/ja/readme.md +1 -1
  118. package/docs/ko/cli/ci.md +137 -0
  119. package/docs/ko/cli/index.md +7 -1
  120. package/docs/ko/cli/list.md +38 -1
  121. package/docs/ko/cli/list_projects.md +128 -0
  122. package/docs/ko/cli/push.md +1 -1
  123. package/docs/ko/configuration.md +3 -3
  124. package/docs/ko/interest_of_intlayer.md +1 -1
  125. package/docs/ko/intlayer_CMS.md +25 -5
  126. package/docs/ko/intlayer_with_express.md +1 -0
  127. package/docs/ko/intlayer_with_fastify.md +463 -0
  128. package/docs/ko/readme.md +1 -1
  129. package/docs/pl/cli/ci.md +137 -0
  130. package/docs/pl/cli/index.md +7 -1
  131. package/docs/pl/cli/list.md +39 -2
  132. package/docs/pl/cli/list_projects.md +130 -0
  133. package/docs/pl/cli/push.md +1 -1
  134. package/docs/pl/configuration.md +3 -3
  135. package/docs/pl/interest_of_intlayer.md +1 -1
  136. package/docs/pl/intlayer_CMS.md +25 -5
  137. package/docs/pl/intlayer_with_express.md +1 -0
  138. package/docs/pl/intlayer_with_fastify.md +457 -0
  139. package/docs/pl/readme.md +1 -1
  140. package/docs/pt/cli/ci.md +137 -0
  141. package/docs/pt/cli/index.md +7 -1
  142. package/docs/pt/cli/list.md +39 -2
  143. package/docs/pt/cli/list_projects.md +134 -0
  144. package/docs/pt/cli/push.md +1 -1
  145. package/docs/pt/configuration.md +3 -3
  146. package/docs/pt/interest_of_intlayer.md +1 -1
  147. package/docs/pt/intlayer_CMS.md +25 -5
  148. package/docs/pt/intlayer_with_express.md +1 -0
  149. package/docs/pt/intlayer_with_fastify.md +502 -0
  150. package/docs/pt/readme.md +1 -1
  151. package/docs/ru/cli/ci.md +137 -0
  152. package/docs/ru/cli/index.md +7 -1
  153. package/docs/ru/cli/list.md +39 -2
  154. package/docs/ru/cli/list_projects.md +130 -0
  155. package/docs/ru/cli/push.md +1 -1
  156. package/docs/ru/configuration.md +3 -3
  157. package/docs/ru/interest_of_intlayer.md +1 -1
  158. package/docs/ru/intlayer_CMS.md +25 -5
  159. package/docs/ru/intlayer_with_express.md +1 -0
  160. package/docs/ru/intlayer_with_fastify.md +468 -0
  161. package/docs/ru/readme.md +1 -1
  162. package/docs/tr/cli/ci.md +137 -0
  163. package/docs/tr/cli/index.md +7 -1
  164. package/docs/tr/cli/list.md +39 -2
  165. package/docs/tr/cli/list_projects.md +134 -0
  166. package/docs/tr/cli/push.md +1 -1
  167. package/docs/tr/configuration.md +3 -3
  168. package/docs/tr/interest_of_intlayer.md +1 -1
  169. package/docs/tr/intlayer_CMS.md +25 -5
  170. package/docs/tr/intlayer_with_express.md +1 -0
  171. package/docs/tr/intlayer_with_fastify.md +471 -0
  172. package/docs/tr/readme.md +1 -1
  173. package/docs/vi/cli/ci.md +137 -0
  174. package/docs/vi/cli/index.md +7 -1
  175. package/docs/vi/cli/list.md +38 -1
  176. package/docs/vi/cli/list_projects.md +130 -0
  177. package/docs/vi/cli/push.md +1 -1
  178. package/docs/vi/configuration.md +3 -3
  179. package/docs/vi/interest_of_intlayer.md +1 -1
  180. package/docs/vi/intlayer_CMS.md +25 -5
  181. package/docs/vi/intlayer_with_express.md +1 -0
  182. package/docs/vi/intlayer_with_fastify.md +490 -0
  183. package/docs/vi/readme.md +1 -1
  184. package/docs/zh/cli/ci.md +137 -0
  185. package/docs/zh/cli/index.md +7 -1
  186. package/docs/zh/cli/list.md +38 -1
  187. package/docs/zh/cli/list_projects.md +130 -0
  188. package/docs/zh/cli/push.md +1 -1
  189. package/docs/zh/configuration.md +3 -3
  190. package/docs/zh/interest_of_intlayer.md +1 -1
  191. package/docs/zh/intlayer_CMS.md +25 -5
  192. package/docs/zh/intlayer_with_express.md +1 -0
  193. package/docs/zh/intlayer_with_fastify.md +451 -0
  194. package/docs/zh/readme.md +1 -1
  195. package/package.json +6 -6
  196. package/src/generated/docs.entry.ts +57 -0
@@ -0,0 +1,468 @@
1
+ ---
2
+ createdAt: 2025-12-30
3
+ updatedAt: 2025-12-30
4
+ title: Как перевести ваш Fastify backend — руководство по i18n 2026
5
+ description: Узнайте, как сделать ваш Fastify backend мультиязычным. Следуйте документации, чтобы интернационализировать (i18n) и перевести его.
6
+ keywords:
7
+ - Интернационализация
8
+ - Документация
9
+ - Intlayer
10
+ - Fastify
11
+ - JavaScript
12
+ - Backend
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - fastify
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-fastify-template
18
+ history:
19
+ - version: 7.6.0
20
+ date: 2025-12-31
21
+ changes: Добавлена команда init
22
+ - version: 7.6.0
23
+ date: 2025-12-31
24
+ changes: Инициализация истории
25
+ ---
26
+
27
+ # Перевод вашего Fastify-бэкенда с помощью Intlayer | Интернационализация (i18n)
28
+
29
+ `fastify-intlayer` — это мощный плагин для интернационализации (i18n) для приложений на Fastify, разработанный, чтобы сделать ваши бэкенд-сервисы доступными глобально, предоставляя локализованные ответы в соответствии с предпочтениями клиента.
30
+
31
+ ### Практические сценарии использования
32
+
33
+ - **Отображение ошибок бэкенда на языке пользователя**: Когда возникает ошибка, отображение сообщений на родном языке пользователя повышает понимание и снижает фрустрацию. Это особенно полезно для динамических сообщений об ошибках, которые могут отображаться во фронтенд-компонентах, таких как toast-уведомления или модальные окна.
34
+ - **Получение многоязычного контента**: Для приложений, которые извлекают контент из базы данных, интернационализация гарантирует, что вы сможете выдавать этот контент на нескольких языках. Это критично для платформ, таких как e-commerce-сайты или системы управления контентом (CMS), которым необходимо отображать описания товаров, статьи и другой контент на языке, предпочитаемом пользователем.
35
+ - **Отправка многоязычных писем**: Будь то транзакционные письма, маркетинговые кампании или уведомления, отправка писем на языке получателя может значительно повысить вовлечённость и эффективность.
36
+ - **Многоязычные push-уведомления**: Для мобильных приложений отправка push-уведомлений на предпочитаемом пользователем языке может повысить вовлеченность и удержание. Этот персонализированный подход делает уведомления более релевантными и побуждающими к действию.
37
+ - **Другие виды коммуникаций**: Любая форма коммуникации с backend, такая как SMS-сообщения, системные оповещения или обновления интерфейса, выигрывает от использования языка пользователя, обеспечивая ясность и улучшая общий пользовательский опыт.
38
+
39
+ Интернационализируя backend, ваше приложение не только уважает культурные различия, но и лучше соответствует потребностям глобального рынка, что делает это ключевым шагом при масштабировании ваших сервисов по всему миру.
40
+
41
+ ## Начало работы
42
+
43
+ ### Установка
44
+
45
+ Чтобы начать использовать `fastify-intlayer`, установите пакет с помощью npm:
46
+
47
+ ```bash packageManager="npm"
48
+ npm install intlayer fastify-intlayer
49
+ npx intlayer init
50
+
51
+ ```
52
+
53
+ ```bash packageManager="pnpm"
54
+ pnpm add intlayer fastify-intlayer
55
+ pnpm intlayer init
56
+
57
+ ```
58
+
59
+ ```bash packageManager="yarn"
60
+ yarn add intlayer fastify-intlayer
61
+ yarn intlayer init
62
+
63
+ ```
64
+
65
+ ```bash packageManager="bun"
66
+ bun add intlayer fastify-intlayer
67
+ bunx intlayer init
68
+
69
+ ```
70
+
71
+ ### Настройка
72
+
73
+ Настройте параметры интернационализации, создав файл `intlayer.config.ts` в корне вашего проекта:
74
+
75
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
76
+ import { Locales, type IntlayerConfig } from "intlayer";
77
+
78
+ const config: IntlayerConfig = {
79
+ internationalization: {
80
+ locales: [
81
+ Locales.ENGLISH,
82
+ Locales.FRENCH,
83
+ Locales.SPANISH_MEXICO,
84
+ Locales.SPANISH_SPAIN,
85
+ ],
86
+ defaultLocale: Locales.ENGLISH,
87
+ },
88
+ };
89
+
90
+ export default config;
91
+ ```
92
+
93
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
94
+ import { Locales } from "intlayer";
95
+
96
+ /** @type {import('intlayer').IntlayerConfig} */ // Тип конфигурации Intlayer
97
+ const config = {
98
+ internationalization: {
99
+ locales: [
100
+ Locales.ENGLISH,
101
+ Locales.FRENCH,
102
+ Locales.SPANISH_MEXICO,
103
+ Locales.SPANISH_SPAIN,
104
+ ],
105
+ defaultLocale: Locales.ENGLISH,
106
+ },
107
+ };
108
+
109
+ export default config;
110
+ ```
111
+
112
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
113
+ const { Locales } = require("intlayer");
114
+
115
+ /** @type {import('intlayer').IntlayerConfig} */ // Тип конфигурации Intlayer
116
+ const config = {
117
+ internationalization: {
118
+ locales: [
119
+ Locales.ENGLISH,
120
+ Locales.FRENCH,
121
+ Locales.SPANISH_MEXICO,
122
+ Locales.SPANISH_SPAIN,
123
+ ],
124
+ defaultLocale: Locales.ENGLISH,
125
+ },
126
+ };
127
+
128
+ module.exports = config;
129
+ ```
130
+
131
+ ### Объявление содержимого
132
+
133
+ Создавайте и управляйте объявлениями содержимого для хранения переводов:
134
+
135
+ ```typescript fileName="src/index.content.ts" contentDeclarationFormat="typescript"
136
+ import { t, type Dictionary } from "intlayer";
137
+
138
+ const indexContent = {
139
+ key: "index",
140
+ content: {
141
+ exampleOfContent: t({
142
+ ru: "Пример возвращаемого содержимого на русском",
143
+ en: "Example of returned content in English",
144
+ fr: "Exemple de contenu renvoyé en français",
145
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
146
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
147
+ }),
148
+ },
149
+ } satisfies Dictionary;
150
+
151
+ export default indexContent;
152
+ ```
153
+
154
+ ```javascript fileName="src/index.content.mjs" contentDeclarationFormat="esm"
155
+ import { t } from "intlayer";
156
+
157
+ javascript fileName="src/index.content.mjs" contentDeclarationFormat="esm"
158
+ import { t } from "intlayer";
159
+
160
+ /** @type {import('intlayer').Dictionary} */
161
+ const indexContent = {
162
+ key: "index",
163
+ content: {
164
+ exampleOfContent: t({
165
+ ru: "Пример возвращаемого содержимого на русском",
166
+ en: "Example of returned content in English",
167
+ fr: "Exemple de contenu renvoyé en français",
168
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
169
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
170
+ }),
171
+ },
172
+ };
173
+
174
+ export default indexContent;
175
+ ```
176
+
177
+ ```javascript fileName="src/index.content.cjs" contentDeclarationFormat="commonjs"
178
+ const { t } = require("intlayer");
179
+
180
+ /** @type {import('intlayer').Dictionary} */
181
+ const indexContent = {
182
+ key: "index",
183
+ content: {
184
+ exampleOfContent: t({
185
+ ru: "Пример возвращаемого содержимого на русском",
186
+ en: "Example of returned content in English",
187
+ fr: "Exemple de contenu renvoyé en français",
188
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
189
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
190
+ }),
191
+ },
192
+ };
193
+
194
+ module.exports = indexContent;
195
+ javascript fileName="src/index.content.cjs" contentDeclarationFormat="commonjs"
196
+ const { t } = require("intlayer");
197
+
198
+ /** @type {import('intlayer').Dictionary} */
199
+ const indexContent = {
200
+ key: "index",
201
+ content: {
202
+ exampleOfContent: t({
203
+ ru: "Пример возвращаемого содержимого на русском",
204
+ en: "Example of returned content in English",
205
+ fr: "Exemple de contenu renvoyé en français",
206
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
207
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
208
+ }),
209
+ },
210
+ };
211
+
212
+ module.exports = indexContent;
213
+ ```
214
+
215
+ ```json fileName="src/index.content.json" contentDeclarationFormat="json"
216
+ {
217
+ "$schema": "https://intlayer.org/schema.json",
218
+ "key": "index",
219
+ "content": {
220
+ "exampleOfContent": {
221
+ "nodeType": "translation",
222
+ "translation": {
223
+ "ru": "Пример возвращаемого содержимого на русском",
224
+ "en": "Example of returned content in English",
225
+ "fr": "Exemple de contenu renvoyé en français",
226
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
227
+ "es-MX": "Ejemplo de contenido devuelto en español (México)"
228
+ }
229
+ }
230
+ }
231
+ }
232
+ ```
233
+
234
+ > Ваши декларации содержимого могут быть определены в любом месте вашего приложения, при условии, что они находятся в директории `contentDir` (по умолчанию `./src`). И соответствуют расширению файла декларации содержимого (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
235
+
236
+ > Для подробностей смотрите [документацию по декларации содержимого](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md).
237
+
238
+ ### Настройка приложения Fastify
239
+
240
+ Настройте ваше приложение Fastify для использования `fastify-intlayer`:
241
+
242
+ ```typescript fileName="src/index.ts" codeFormat="typescript"
243
+ import Fastify from "fastify";
244
+ import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
245
+ import dictionaryExample from "./index.content";
246
+
247
+ const fastify = Fastify({ logger: true }); // Инициализация Fastify с логированием
248
+
249
+ // Подключение плагина интернационализации
250
+ await fastify.register(intlayer);
251
+
252
+ // Маршруты
253
+ fastify.get("/t_example", async (_req, reply) => {
254
+ return t({
255
+ ru: "Пример возвращаемого контента на английском языке",
256
+ en: "Example of returned content in English",
257
+ fr: "Exemple de contenu renvoyé en français",
258
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
259
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
260
+ });
261
+ });
262
+
263
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
264
+ return getIntlayer("index").exampleOfContent;
265
+ });
266
+
267
+ fastify.get("/getDictionary_example", async (_req, reply) => {
268
+ return getDictionary(dictionaryExample).exampleOfContent;
269
+ });
270
+
271
+ // Запуск сервера
272
+ const start = async () => {
273
+ try {
274
+ await fastify.listen({ port: 3000 });
275
+ } catch (err) {
276
+ fastify.log.error(err);
277
+ process.exit(1);
278
+ }
279
+ };
280
+
281
+ start();
282
+ ```
283
+
284
+ ```javascript fileName="src/index.mjs" codeFormat="esm"
285
+ import Fastify from "fastify";
286
+ import { intlayer, t, getDictionary, getIntlayer } from "fastify-intlayer";
287
+ import dictionaryExample from "./index.content";
288
+
289
+ const fastify = Fastify({ logger: true });
290
+
291
+ // Загрузка плагина интернационализации
292
+ await fastify.register(intlayer);
293
+
294
+ // Маршруты
295
+ fastify.get("/t_example", async (_req, reply) => {
296
+ return t({
297
+ en: "Example of returned content in English",
298
+ fr: "Exemple de contenu renvoyé en français",
299
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
300
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
301
+ });
302
+ });
303
+
304
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
305
+ return getIntlayer("index").exampleOfContent;
306
+ });
307
+
308
+ fastify.get("/getDictionary_example", async (_req, reply) => {
309
+ return getDictionary(dictionaryExample).exampleOfContent;
310
+ });
311
+
312
+ // Запуск сервера
313
+ const start = async () => {
314
+ try {
315
+ await fastify.listen({ port: 3000 });
316
+ } catch (err) {
317
+ fastify.log.error(err);
318
+ process.exit(1);
319
+ }
320
+ };
321
+
322
+ start();
323
+ ```
324
+
325
+ ```javascript fileName="src/index.cjs" codeFormat="commonjs"
326
+ const Fastify = require("fastify");
327
+ const { intlayer, t, getDictionary, getIntlayer } = require("fastify-intlayer");
328
+ const dictionaryExample = require("./index.content");
329
+
330
+ const fastify = Fastify({ logger: true });
331
+
332
+ // Обёртка для запуска сервера с async/await
333
+ const start = async () => {
334
+ try {
335
+ // Загрузка плагина интернационализации
336
+ await fastify.register(intlayer);
337
+
338
+ // Маршруты
339
+ fastify.get("/t_example", async (_req, reply) => {
340
+ return t({
341
+ ru: "Пример возвращаемого содержимого на русском языке",
342
+ en: "Example of returned content in English",
343
+ fr: "Exemple de contenu renvoyé en français",
344
+ "es-ES": "Ejemplo de contenido devuelto en español (España)",
345
+ "es-MX": "Ejemplo de contenido devuelto en español (México)",
346
+ });
347
+ });
348
+
349
+ fastify.get("/getIntlayer_example", async (_req, reply) => {
350
+ return getIntlayer("index").exampleOfContent;
351
+ });
352
+
353
+ fastify.get("/getDictionary_example", async (_req, reply) => {
354
+ return getDictionary(dictionaryExample).exampleOfContent;
355
+ });
356
+
357
+ await fastify.listen({ port: 3000 });
358
+ } catch (err) {
359
+ fastify.log.error(err);
360
+ process.exit(1);
361
+ }
362
+ };
363
+
364
+ start();
365
+ ```
366
+
367
+ ### Совместимость
368
+
369
+ `fastify-intlayer` полностью совместим с:
370
+
371
+ - [`react-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/index.md)>) для React-приложений
372
+ - [`next-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/next-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/next-intlayer/index.md)>) для приложений Next.js
373
+
374
+ - [`react-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/index.md) для приложений React
375
+ - [`next-intlayer`](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/next-intlayer/index.md) для приложений Next.js
376
+ - [`vite-intlayer`](<https://www.google.com/search?q=%5Bhttps://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/vite-intlayer/index.md%5D(https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/vite-intlayer/index.md)>) для приложений на Vite
377
+
378
+ Он также бесшовно работает с любым решением для интернационализации в различных средах, включая браузеры и API-запросы. Вы можете настроить middleware для определения локали через заголовки или cookies:
379
+
380
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
381
+ import { Locales, type IntlayerConfig } from "intlayer";
382
+
383
+ const config: IntlayerConfig = {
384
+ // ... Другие параметры конфигурации
385
+ middleware: {
386
+ headerName: "my-locale-header",
387
+ cookieName: "my-locale-cookie",
388
+ },
389
+ };
390
+
391
+ export default config;
392
+ ```
393
+
394
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
395
+ import { Locales } from "intlayer";
396
+
397
+ /** @type {import('intlayer').IntlayerConfig} */
398
+ const config = {
399
+ // ... Другие параметры конфигурации
400
+ middleware: {
401
+ headerName: "my-locale-header",
402
+ cookieName: "my-locale-cookie",
403
+ },
404
+ };
405
+
406
+ export default config;
407
+ ```
408
+
409
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
410
+ const { Locales } = require("intlayer");
411
+
412
+ /** @type {import('intlayer').IntlayerConfig} */
413
+ const config = {
414
+ // ... Другие параметры конфигурации
415
+ middleware: {
416
+ headerName: "my-locale-header",
417
+ cookieName: "my-locale-cookie",
418
+ },
419
+ };
420
+
421
+ module.exports = config;
422
+ ```
423
+
424
+ По умолчанию `fastify-intlayer` будет интерпретировать заголовок `Accept-Language`, чтобы определить предпочитаемый язык клиента.
425
+
426
+ > Для получения дополнительной информации о конфигурации и продвинутых темах посетите нашу [документацию](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
427
+
428
+ ### Настройка TypeScript
429
+
430
+ `fastify-intlayer` использует мощные возможности TypeScript для улучшения процесса интернационализации. Статическая типизация TypeScript обеспечивает учёт каждого ключа перевода, снижая риск отсутствующих переводов и упрощая поддержку.
431
+
432
+ Убедитесь, что автогенерируемые типы (по умолчанию в ./types/intlayer.d.ts) включены в ваш файл tsconfig.json.
433
+
434
+ ```json5 fileName="tsconfig.json"
435
+ {
436
+ // ... Ваши существующие конфигурации TypeScript
437
+ "include": [
438
+ // ... Ваши существующие конфигурации TypeScript
439
+ ".intlayer/**/*.ts", // Включить автогенерируемые типы
440
+ ],
441
+ }
442
+ ```
443
+
444
+ ### Расширение для VS Code
445
+
446
+ Чтобы улучшить опыт разработки с Intlayer, вы можете установить официальное расширение **Intlayer VS Code Extension**.
447
+
448
+ [Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
449
+
450
+ Это расширение предоставляет:
451
+
452
+ - **Автодополнение** для ключей переводов.
453
+ - **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
454
+ - **Встроенные превью** переведённого содержимого.
455
+ - **Быстрые действия** для простого создания и обновления переводов.
456
+
457
+ Для получения дополнительных сведений о том, как использовать расширение, обратитесь к [документации Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).
458
+
459
+ ### Настройка Git
460
+
461
+ Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
462
+
463
+ Для этого вы можете добавить следующие строки в файл `.gitignore`:
464
+
465
+ ```plaintext fileName=".gitignore"
466
+ # Игнорировать файлы, сгенерированные Intlayer
467
+ .intlayer
468
+ ```
package/docs/ru/readme.md CHANGED
@@ -50,7 +50,7 @@ Intlayer — это **современное решение i18n** для веб
50
50
  | Особенность | Описание |
51
51
  | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52
52
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Поддержка нескольких фреймворков**<br><br>Intlayer совместим со всеми основными фреймворками и библиотеками, включая Next.js, React, Vite, Vue.js, Nuxt, Preact, Express и другие. |
53
- | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true" alt="Feature" width="700"> | **Управление контентом на основе JavaScript**<br><br>Используйте гибкость JavaScript для эффективного определения и управления вашим контентом. <br><br> - [Объявление контента](https://intlayer.org/doc/concept/content) |
53
+ | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **Управление контентом на основе JavaScript**<br><br>Используйте гибкость JavaScript для эффективного определения и управления вашим контентом. <br><br> - [Объявление контента](https://intlayer.org/doc/concept/content) |
54
54
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **Файл объявления контента для каждого языка**<br><br>Ускорьте разработку, объявляя ваш контент один раз до автоматической генерации.<br><br> - [Файл объявления контента для каждого языка](https://intlayer.org/doc/concept/per-locale-file) |
55
55
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **Безопасная типизация среды**<br><br>Используйте TypeScript, чтобы гарантировать отсутствие ошибок в определениях контента и коде, а также получать автозаполнение в IDE.<br><br> - [Конфигурация TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
56
56
  | <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **Упрощённая настройка**<br><br>Быстрый старт с минимальной конфигурацией. Легко настраивайте параметры интернационализации, маршрутизации, ИИ, сборки и обработки контента.<br><br> - [Изучите интеграцию с Next.js](https://intlayer.org/doc/environment/nextjs) |
@@ -0,0 +1,137 @@
1
+ ---
2
+ createdAt: 2026-01-06
3
+ updatedAt: 2026-01-06
4
+ title: CI Komutu
5
+ description: CI/CD pipeline'ları ve monorepo'larda otomatik olarak enjekte edilen kimlik bilgileriyle Intlayer komutlarını çalıştırmak için Intlayer CI komutunu nasıl kullanacağınızı öğrenin.
6
+ keywords:
7
+ - CI
8
+ - CI/CD
9
+ - Otomasyon
10
+ - Monorepo
11
+ - Kimlik Bilgileri
12
+ - CLI
13
+ - Intlayer
14
+ slugs:
15
+ - doc
16
+ - concept
17
+ - cli
18
+ - ci
19
+ history:
20
+ - version: 7.5.11
21
+ date: 2026-01-06
22
+ changes: CI komutu ekle
23
+ ---
24
+
25
+ # CI Komutu
26
+
27
+ ```bash
28
+ npx intlayer ci <command...>
29
+ ```
30
+
31
+ CI komutu otomasyon ve CI/CD pipeline'ları için tasarlanmıştır. `INTLAYER_PROJECT_CREDENTIALS` ortam değişkeninden kimlik bilgilerini otomatik olarak enjekte eder ve bir monorepo'daki birden fazla projede Intlayer komutlarını çalıştırabilir.
32
+
33
+ ## Nasıl çalışır
34
+
35
+ CI komutu iki modda çalışır:
36
+
37
+ 1. **Tek Proje Modu**: Mevcut çalışma dizini `INTLAYER_PROJECT_CREDENTIALS` içindeki proje yollarından biriyle eşleşiyorsa, komutu yalnızca o belirli proje için çalıştırır.
38
+
39
+ 2. **Yineleme Modu**: Belirli bir proje bağlamı algılanmazsa, yapılandırılmış tüm projeler üzerinde yineler ve her biri için komutu çalıştırır.
40
+
41
+ ## Ortam Değişkeni
42
+
43
+ Komut, `INTLAYER_PROJECT_CREDENTIALS` ortam değişkeninin ayarlanmış olmasını gerektirir. Bu değişken, proje yollarını kimlik bilgilerine eşleyen bir JSON nesnesi içermelidir:
44
+
45
+ ```json
46
+ {
47
+ "packages/app": {
48
+ "clientId": "your-client-id-1",
49
+ "clientSecret": "your-client-secret-1"
50
+ },
51
+ "packages/admin": {
52
+ "clientId": "your-client-id-2",
53
+ "clientSecret": "your-client-secret-2"
54
+ }
55
+ }
56
+ ```
57
+
58
+ ## Paket Yöneticisi Algılama
59
+
60
+ CI komutu, `npm_config_user_agent` ortam değişkenine dayalı olarak hangi paket yöneticisinin kullanıldığını (npm, yarn, pnpm veya bun) otomatik olarak algılar ve Intlayer'ı çalıştırmak için uygun komutu kullanır.
61
+
62
+ ## Argümanlar
63
+
64
+ - **`<command...>`**: Çalıştırılacak Intlayer komutu (örneğin, `fill`, `push`, `build`). Herhangi bir Intlayer komutunu ve argümanlarını iletebilirsiniz.
65
+
66
+ > Örnek: `npx intlayer ci fill --verbose`
67
+ >
68
+ > Örnek: `npx intlayer ci push`
69
+ >
70
+ > Örnek: `npx intlayer ci build`
71
+
72
+ ## Örnekler
73
+
74
+ ### Tek proje modunda komut çalıştırma
75
+
76
+ `INTLAYER_PROJECT_CREDENTIALS` içindeki yollardan biriyle eşleşen bir proje dizinindeyken:
77
+
78
+ ```bash
79
+ cd packages/app
80
+ npx intlayer ci fill
81
+ ```
82
+
83
+ Bu, `packages/app` projesi için kimlik bilgileri otomatik olarak enjekte edilerek `fill` komutunu çalıştıracaktır.
84
+
85
+ ### Tüm projelerde komut çalıştırma
86
+
87
+ Herhangi bir proje yoluyla eşleşmeyen bir dizindeyken, komut yapılandırılmış tüm projeler üzerinde yineleyecektir:
88
+
89
+ ```bash
90
+ cd /path/to/monorepo
91
+ npx intlayer ci push
92
+ ```
93
+
94
+ Bu, `INTLAYER_PROJECT_CREDENTIALS` içinde yapılandırılmış her proje için `push` komutunu çalıştıracaktır.
95
+
96
+ ### Ek bayraklar iletme
97
+
98
+ Temel Intlayer komutuna herhangi bir bayrak iletebilirsiniz:
99
+
100
+ ```bash
101
+ npx intlayer ci fill --verbose --mode complete
102
+ ```
103
+
104
+ ### CI/CD pipeline'larında kullanma
105
+
106
+ CI/CD yapılandırmanızda (örneğin, GitHub Actions, GitLab CI), `INTLAYER_PROJECT_CREDENTIALS`'i bir sır olarak ayarlayın:
107
+
108
+ ```yaml
109
+ # GitHub Actions örneği
110
+ env:
111
+ INTLAYER_PROJECT_CREDENTIALS: ${{ secrets.INTLAYER_PROJECT_CREDENTIALS }}
112
+
113
+ steps:
114
+ - name: Sözlükleri doldur
115
+ run: npx intlayer ci fill
116
+ ```
117
+
118
+ ## Hata İşleme
119
+
120
+ - `INTLAYER_PROJECT_CREDENTIALS` ayarlanmamışsa, komut bir hata ile çıkacaktır.
121
+ - `INTLAYER_PROJECT_CREDENTIALS` geçerli bir JSON değilse, komut bir hata ile çıkacaktır.
122
+ - Bir proje yolu mevcut değilse, bir uyarı ile atlanacaktır.
123
+ - Herhangi bir proje başarısız olursa, komut sıfır olmayan bir durum kodu ile çıkacaktır.
124
+
125
+ ## Kullanım Durumları
126
+
127
+ - **Monorepo otomasyonu**: Bir monorepo'daki birden fazla projede Intlayer komutlarını çalıştırma
128
+ - **CI/CD pipeline'ları**: Sürekli entegrasyon iş akışlarında sözlük yönetimini otomatikleştirme
129
+ - **Toplu işlemler**: Birden fazla Intlayer projesinde aynı işlemi aynı anda gerçekleştirme
130
+ - **Gizli yönetimi**: Ortam değişkenlerini kullanarak birden fazla proje için kimlik bilgilerini güvenli bir şekilde yönetme
131
+
132
+ ## Güvenlik En İyi Uygulamaları
133
+
134
+ - `INTLAYER_PROJECT_CREDENTIALS`'i CI/CD platformunuzda şifrelenmiş sırlar olarak saklayın
135
+ - Kimlik bilgilerini asla sürüm kontrolüne commit etmeyin
136
+ - Farklı dağıtım ortamları için ortama özel kimlik bilgileri kullanın
137
+ - Kimlik bilgilerini düzenli olarak döndürün
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-11
3
- updatedAt: 2025-12-30
3
+ updatedAt: 2026-01-06
4
4
  title: CLI
5
5
  description: Çok dilli web sitenizi yönetmek için Intlayer CLI'nın nasıl kullanılacağını keşfedin. Projenizi birkaç dakika içinde kurmak için bu çevrimiçi dokümantördeki adımları izleyin.
6
6
  keywords:
@@ -17,6 +17,9 @@ slugs:
17
17
  - concept
18
18
  - cli
19
19
  history:
20
+ - version: 7.5.11
21
+ date: 2026-01-06
22
+ changes: projects list komutu eklendi
20
23
  - version: 7.5.9
21
24
  date: 2025-12-30
22
25
  changes: init komutu eklendi
@@ -119,6 +122,7 @@ Mevcut yerellerin veya diğer parametrelerin nasıl yapılandırılacağını g
119
122
  - **[Sözlükleri Derle](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/build.md)** - İçerik beyan dosyalarından sözlüklerinizi derleyin
120
123
  - **[Sözlükleri İzle](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/watch.md)** - Değişiklikleri izleyin ve sözlükleri otomatik olarak derleyin
121
124
  - **[CLI Sürümünü Kontrol Et](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/version.md)** - Yüklü Intlayer CLI sürümünü kontrol edin
125
+ - **[Projeleri Listele](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/cli/list_projects.md)** - Bir dizindeki veya git deposundaki tüm Intlayer projelerini listeleyin
122
126
 
123
127
  ### Sözlük Yönetimi
124
128
 
@@ -166,6 +170,7 @@ Mevcut yerellerin veya diğer parametrelerin nasıl yapılandırılacağını g
166
170
  "intlayer:list": "npx intlayer content list",
167
171
  "intlayer:test": "npx intlayer content test",
168
172
  "intlayer:transform": "npx intlayer transform",
173
+ "intlayer:projects": "npx intlayer projects list",
169
174
  "intlayer:doc:translate": "npx intlayer doc translate",
170
175
  "intlayer:doc:review": "npx intlayer doc review"
171
176
  }
@@ -175,3 +180,4 @@ Mevcut yerellerin veya diğer parametrelerin nasıl yapılandırılacağını g
175
180
  >
176
181
  > - `npx intlayer list` yerine `npx intlayer content list`
177
182
  > - `npx intlayer test` yerine `npx intlayer content test`
183
+ > - `npx intlayer projects-list` veya `npx intlayer pl` yerine `npx intlayer projects list`