@intlayer/docs 7.5.9 → 7.5.10

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 (128) hide show
  1. package/README.md +9 -2
  2. package/dist/cjs/generated/docs.entry.cjs +19 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +19 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/cli/push.md +1 -1
  9. package/docs/ar/configuration.md +3 -3
  10. package/docs/ar/interest_of_intlayer.md +1 -1
  11. package/docs/ar/intlayer_CMS.md +5 -5
  12. package/docs/ar/intlayer_with_express.md +1 -0
  13. package/docs/ar/intlayer_with_fastify.md +516 -0
  14. package/docs/ar/readme.md +1 -1
  15. package/docs/de/cli/push.md +1 -1
  16. package/docs/de/configuration.md +3 -3
  17. package/docs/de/interest_of_intlayer.md +1 -1
  18. package/docs/de/intlayer_CMS.md +5 -5
  19. package/docs/de/intlayer_with_express.md +1 -0
  20. package/docs/de/intlayer_with_fastify.md +449 -0
  21. package/docs/de/readme.md +1 -1
  22. package/docs/en/cli/push.md +1 -1
  23. package/docs/en/configuration.md +3 -3
  24. package/docs/en/interest_of_intlayer.md +1 -1
  25. package/docs/en/intlayer_CMS.md +5 -5
  26. package/docs/en/intlayer_with_express.md +1 -0
  27. package/docs/en/intlayer_with_fastify.md +439 -0
  28. package/docs/en/readme.md +3 -1
  29. package/docs/en-GB/cli/push.md +1 -1
  30. package/docs/en-GB/configuration.md +3 -3
  31. package/docs/en-GB/interest_of_intlayer.md +1 -1
  32. package/docs/en-GB/intlayer_CMS.md +5 -5
  33. package/docs/en-GB/intlayer_with_express.md +1 -0
  34. package/docs/en-GB/intlayer_with_fastify.md +445 -0
  35. package/docs/en-GB/readme.md +3 -1
  36. package/docs/es/cli/push.md +1 -1
  37. package/docs/es/configuration.md +3 -3
  38. package/docs/es/interest_of_intlayer.md +1 -1
  39. package/docs/es/intlayer_CMS.md +5 -5
  40. package/docs/es/intlayer_with_express.md +1 -0
  41. package/docs/es/intlayer_with_fastify.md +480 -0
  42. package/docs/es/readme.md +1 -1
  43. package/docs/fr/cli/push.md +1 -1
  44. package/docs/fr/configuration.md +3 -3
  45. package/docs/fr/interest_of_intlayer.md +1 -1
  46. package/docs/fr/intlayer_CMS.md +5 -5
  47. package/docs/fr/intlayer_with_express.md +1 -0
  48. package/docs/fr/intlayer_with_fastify.md +439 -0
  49. package/docs/fr/readme.md +1 -1
  50. package/docs/hi/cli/push.md +1 -1
  51. package/docs/hi/configuration.md +3 -3
  52. package/docs/hi/interest_of_intlayer.md +1 -1
  53. package/docs/hi/intlayer_CMS.md +5 -5
  54. package/docs/hi/intlayer_with_express.md +1 -0
  55. package/docs/hi/intlayer_with_fastify.md +540 -0
  56. package/docs/hi/readme.md +1 -1
  57. package/docs/id/cli/push.md +1 -1
  58. package/docs/id/configuration.md +3 -3
  59. package/docs/id/interest_of_intlayer.md +1 -1
  60. package/docs/id/intlayer_CMS.md +5 -5
  61. package/docs/id/intlayer_with_express.md +1 -0
  62. package/docs/id/intlayer_with_fastify.md +470 -0
  63. package/docs/id/readme.md +1 -1
  64. package/docs/it/cli/push.md +1 -1
  65. package/docs/it/configuration.md +3 -3
  66. package/docs/it/interest_of_intlayer.md +1 -1
  67. package/docs/it/intlayer_CMS.md +5 -5
  68. package/docs/it/intlayer_with_express.md +1 -0
  69. package/docs/it/intlayer_with_fastify.md +445 -0
  70. package/docs/it/readme.md +1 -1
  71. package/docs/ja/cli/push.md +1 -1
  72. package/docs/ja/configuration.md +3 -3
  73. package/docs/ja/interest_of_intlayer.md +1 -1
  74. package/docs/ja/intlayer_CMS.md +5 -5
  75. package/docs/ja/intlayer_with_express.md +1 -0
  76. package/docs/ja/intlayer_with_fastify.md +516 -0
  77. package/docs/ja/readme.md +1 -1
  78. package/docs/ko/cli/push.md +1 -1
  79. package/docs/ko/configuration.md +3 -3
  80. package/docs/ko/interest_of_intlayer.md +1 -1
  81. package/docs/ko/intlayer_CMS.md +5 -5
  82. package/docs/ko/intlayer_with_express.md +1 -0
  83. package/docs/ko/intlayer_with_fastify.md +463 -0
  84. package/docs/ko/readme.md +1 -1
  85. package/docs/pl/cli/push.md +1 -1
  86. package/docs/pl/configuration.md +3 -3
  87. package/docs/pl/interest_of_intlayer.md +1 -1
  88. package/docs/pl/intlayer_CMS.md +5 -5
  89. package/docs/pl/intlayer_with_express.md +1 -0
  90. package/docs/pl/intlayer_with_fastify.md +457 -0
  91. package/docs/pl/readme.md +1 -1
  92. package/docs/pt/cli/push.md +1 -1
  93. package/docs/pt/configuration.md +3 -3
  94. package/docs/pt/interest_of_intlayer.md +1 -1
  95. package/docs/pt/intlayer_CMS.md +5 -5
  96. package/docs/pt/intlayer_with_express.md +1 -0
  97. package/docs/pt/intlayer_with_fastify.md +502 -0
  98. package/docs/pt/readme.md +1 -1
  99. package/docs/ru/cli/push.md +1 -1
  100. package/docs/ru/configuration.md +3 -3
  101. package/docs/ru/interest_of_intlayer.md +1 -1
  102. package/docs/ru/intlayer_CMS.md +5 -5
  103. package/docs/ru/intlayer_with_express.md +1 -0
  104. package/docs/ru/intlayer_with_fastify.md +468 -0
  105. package/docs/ru/readme.md +1 -1
  106. package/docs/tr/cli/push.md +1 -1
  107. package/docs/tr/configuration.md +3 -3
  108. package/docs/tr/interest_of_intlayer.md +1 -1
  109. package/docs/tr/intlayer_CMS.md +5 -5
  110. package/docs/tr/intlayer_with_express.md +1 -0
  111. package/docs/tr/intlayer_with_fastify.md +471 -0
  112. package/docs/tr/readme.md +1 -1
  113. package/docs/vi/cli/push.md +1 -1
  114. package/docs/vi/configuration.md +3 -3
  115. package/docs/vi/interest_of_intlayer.md +1 -1
  116. package/docs/vi/intlayer_CMS.md +5 -5
  117. package/docs/vi/intlayer_with_express.md +1 -0
  118. package/docs/vi/intlayer_with_fastify.md +490 -0
  119. package/docs/vi/readme.md +1 -1
  120. package/docs/zh/cli/push.md +1 -1
  121. package/docs/zh/configuration.md +3 -3
  122. package/docs/zh/interest_of_intlayer.md +1 -1
  123. package/docs/zh/intlayer_CMS.md +5 -5
  124. package/docs/zh/intlayer_with_express.md +1 -0
  125. package/docs/zh/intlayer_with_fastify.md +451 -0
  126. package/docs/zh/readme.md +1 -1
  127. package/package.json +6 -6
  128. package/src/generated/docs.entry.ts +19 -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) |
@@ -23,7 +23,7 @@ slugs:
23
23
  npx intlayer dictionary push
24
24
  ```
25
25
 
26
- Eğer [intlayer editörü](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) yüklüyse, sözlükleri editöre de gönderebilirsiniz. Bu komut, sözlüklerin [editörde](https://intlayer.org/dashboard) kullanılabilir olmasını sağlar. Bu sayede, sözlüklerinizi ekibinizle paylaşabilir ve uygulamanızın kodunu düzenlemeden içeriğinizi düzenleyebilirsiniz.
26
+ Eğer [intlayer editörü](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/intlayer_visual_editor.md) yüklüyse, sözlükleri editöre de gönderebilirsiniz. Bu komut, sözlüklerin [editörde](https://app.intlayer.org/) kullanılabilir olmasını sağlar. Bu sayede, sözlüklerinizi ekibinizle paylaşabilir ve uygulamanızın kodunu düzenlemeden içeriğinizi düzenleyebilirsiniz.
27
27
 
28
28
  ## Kısaltmalar:
29
29
 
@@ -245,14 +245,14 @@ Entegre editörle ilgili ayarları, sunucu portu ve aktiflik durumu dahil olmak
245
245
  - **clientId**:
246
246
  - _Tür_: `string` | `undefined`
247
247
  - _Varsayılan_: `undefined`
248
- - _Açıklama_: clientId ve clientSecret, intlayer paketlerinin backend ile oAuth2 kimlik doğrulaması kullanarak kimlik doğrulaması yapmasını sağlar. Bir erişim belirteci, projeyle ilişkili kullanıcıyı doğrulamak için kullanılır. Bir erişim belirteci almak için https://intlayer.org/dashboard/project adresine gidip bir hesap oluşturun.
248
+ - _Açıklama_: clientId ve clientSecret, intlayer paketlerinin backend ile oAuth2 kimlik doğrulaması kullanarak kimlik doğrulaması yapmasını sağlar. Bir erişim belirteci, projeyle ilişkili kullanıcıyı doğrulamak için kullanılır. Bir erişim belirteci almak için https://app.intlayer.org/project adresine gidip bir hesap oluşturun.
249
249
  - _Örnek_: `true`
250
250
  - _Not_: Önemli: clientId ve clientSecret gizli tutulmalı ve kamuya açık şekilde paylaşılmamalıdır. Lütfen bunları ortam değişkenleri gibi güvenli bir yerde sakladığınızdan emin olun.
251
251
 
252
252
  - **clientSecret**:
253
253
  - _Tür_: `string` | `undefined`
254
254
  - _Varsayılan_: `undefined`
255
- - _Açıklama_: clientId ve clientSecret, intlayer paketlerinin backend ile oAuth2 kimlik doğrulaması kullanarak doğrulanmasını sağlar. Bir erişim belirteci, projeyle ilişkili kullanıcıyı doğrulamak için kullanılır. Bir erişim belirteci almak için https://intlayer.org/dashboard/project adresine gidip bir hesap oluşturun.
255
+ - _Açıklama_: clientId ve clientSecret, intlayer paketlerinin backend ile oAuth2 kimlik doğrulaması kullanarak doğrulanmasını sağlar. Bir erişim belirteci, projeyle ilişkili kullanıcıyı doğrulamak için kullanılır. Bir erişim belirteci almak için https://app.intlayer.org/project adresine gidip bir hesap oluşturun.
256
256
  - _Örnek_: `true`
257
257
  - _Not_: Önemli: clientId ve clientSecret gizli tutulmalı ve kamuya açık şekilde paylaşılmamalıdır. Lütfen bunları ortam değişkenleri gibi güvenli bir yerde sakladığınızdan emin olun.
258
258
 
@@ -468,7 +468,7 @@ Logger'ı kontrol eden ayarlar, kullanılacak önek dahil.
468
468
 
469
469
  Intlayer'ın AI özelliklerini kontrol eden ayarlar, sağlayıcı, model ve API anahtarı dahil.
470
470
 
471
- Bu yapılandırma, bir erişim anahtarı kullanarak [Intlayer Kontrol Paneli](https://intlayer.org/dashboard/project) üzerinden kayıtlıysanız isteğe bağlıdır. Intlayer, ihtiyaçlarınız için en verimli ve maliyet-etkin AI çözümünü otomatik olarak yönetecektir. Varsayılan seçenekleri kullanmak, Intlayer'ın en uygun modelleri kullanmak için sürekli güncellenmesi nedeniyle uzun vadeli bakım kolaylığı sağlar.
471
+ Bu yapılandırma, bir erişim anahtarı kullanarak [Intlayer Kontrol Paneli](https://app.intlayer.org/project) üzerinden kayıtlıysanız isteğe bağlıdır. Intlayer, ihtiyaçlarınız için en verimli ve maliyet-etkin AI çözümünü otomatik olarak yönetecektir. Varsayılan seçenekleri kullanmak, Intlayer'ın en uygun modelleri kullanmak için sürekli güncellenmesi nedeniyle uzun vadeli bakım kolaylığı sağlar.
472
472
 
473
473
  Kendi API anahtarınızı veya belirli bir modeli kullanmayı tercih ediyorsanız, özel AI yapılandırmanızı tanımlayabilirsiniz.
474
474
  Bu AI yapılandırması, Intlayer ortamınız genelinde kullanılacaktır. CLI komutları, bu ayarları komutlar için varsayılan olarak kullanacaktır (örneğin `fill`), ayrıca SDK, Görsel Editör ve CMS de bu ayarları kullanır. Belirli kullanım durumları için bu varsayılan değerleri komut parametreleriyle geçersiz kılabilirsiniz.
@@ -228,7 +228,7 @@ Bu yaklaşım şunları yapmanıza izin verir:
228
228
  | Özellik | Açıklama |
229
229
  | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
230
230
  | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Çapraz-Çerçeve Desteği**<br><br>Intlayer Next.js, React, Vite, Vue.js, Nuxt, Preact, Express ve daha fazlası dahil olmak üzere tüm büyük çerçeveler ve kütüphanelerle uyumludur. |
231
- | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true) | **JavaScript Güçlü İçerik Yönetimi**<br><br>İçeriğinizi verimli bir şekilde tanımlamak ve yönetmek için JavaScript'in esnekliğinden yararlanın. <br><br> - [İçerik bildirimi](https://intlayer.org/doc/concept/content) |
231
+ | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true) | **JavaScript Güçlü İçerik Yönetimi**<br><br>İçeriğinizi verimli bir şekilde tanımlamak ve yönetmek için JavaScript'in esnekliğinden yararlanın. <br><br> - [İçerik bildirimi](https://intlayer.org/doc/concept/content) |
232
232
  | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **Yerel Ayar Başına İçerik Bildirim Dosyası**<br><br>İçeriğinizi bir kez bildirerek geliştirmenizi hızlandırın, ardından otomatik oluşturma.<br><br> - [Yerel Ayar Başına İçerik Bildirim Dosyası](https://intlayer.org/doc/concept/per-locale-file) |
233
233
  | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Tür Güvenli Ortam**<br><br>İçerik tanımlarınızın ve kodunuzun hatasız olduğundan emin olmak için TypeScript'ten yararlanın, aynı zamanda IDE otomatik tamamlamasından faydalanın.<br><br> - [TypeScript konfigürasyonu](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
234
234
  | ![Özellik](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Basitleştirilmiş Kurulum**<br><br>Minimum konfigürasyonla hızlıca çalışmaya başlayın. Uluslararasılaştırma, yönlendirme, AI, inşa ve içerik işleme için ayarları kolayca ayarlayın. <br><br> - [Next.js entegrasyonunu keşfedin](https://intlayer.org/doc/environment/nextjs) |
@@ -92,7 +92,7 @@ const config: IntlayerConfig = {
92
92
  *
93
93
  * Editörü etkinleştirmek için Client ID ve client secret gereklidir.
94
94
  * Bunlar, içeriği düzenleyen kullanıcıyı tanımlamaya olanak sağlar.
95
- * Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects) üzerinden yeni bir client oluşturarak elde edilebilir.
95
+ * Intlayer Dashboard - Projects (https://app.intlayer.org/projects) üzerinden yeni bir client oluşturarak elde edilebilir.
96
96
  * clientId: process.env.INTLAYER_CLIENT_ID,
97
97
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
98
98
  */
@@ -142,7 +142,7 @@ const config = {
142
142
  *
143
143
  * Editörü etkinleştirmek için Client ID ve client secret gereklidir.
144
144
  * Bunlar, içeriği düzenleyen kullanıcıyı tanımlamaya olanak sağlar.
145
- * Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects) üzerinde yeni bir client oluşturarak elde edilebilir.
145
+ * Intlayer Dashboard - Projects (https://app.intlayer.org/projects) üzerinde yeni bir client oluşturarak elde edilebilir.
146
146
  * clientId: process.env.INTLAYER_CLIENT_ID,
147
147
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
148
148
  */
@@ -192,7 +192,7 @@ const config = {
192
192
  *
193
193
  * Editörü etkinleştirmek için Client ID ve client secret gereklidir.
194
194
  * Bunlar, içeriği düzenleyen kullanıcıyı tanımlamaya olanak sağlar.
195
- * Intlayer Dashboard - Projects (https://intlayer.org/dashboard/projects) üzerinden yeni bir client oluşturarak elde edilebilirler.
195
+ * Intlayer Dashboard - Projects (https://app.intlayer.org/projects) üzerinden yeni bir client oluşturarak elde edilebilirler.
196
196
  * clientId: process.env.INTLAYER_CLIENT_ID,
197
197
  * clientSecret: process.env.INTLAYER_CLIENT_SECRET,
198
198
  */
@@ -224,7 +224,7 @@ const config = {
224
224
  module.exports = config;
225
225
  ```
226
226
 
227
- > Eğer bir client ID ve client secret'ınız yoksa, bunları [Intlayer Dashboard - Projects](https://intlayer.org/dashboard/projects) üzerinden yeni bir client oluşturarak edinebilirsiniz.
227
+ > Eğer bir client ID ve client secret'ınız yoksa, bunları [Intlayer Dashboard - Projects](https://app.intlayer.org/projects) üzerinden yeni bir client oluşturarak edinebilirsiniz.
228
228
 
229
229
  > Mevcut tüm parametreleri görmek için [konfigürasyon dokümantasyonuna](https://github.com/aymericzip/intlayer/blob/main/docs/docs/tr/configuration.md) bakınız.
230
230
 
@@ -264,7 +264,7 @@ Bu komut, başlangıç içerik sözlüklerinizi yükler ve Intlayer platformu ü
264
264
 
265
265
  ### Sözlüğü düzenleme
266
266
 
267
- Daha sonra sözlüğünüzü [Intlayer CMS](https://intlayer.org/dashboard/content) üzerinde görüntüleyip yönetebileceksiniz.
267
+ Daha sonra sözlüğünüzü [Intlayer CMS](https://app.intlayer.org/content) üzerinde görüntüleyip yönetebileceksiniz.
268
268
 
269
269
  ## Canlı senkronizasyon
270
270
 
@@ -14,6 +14,7 @@ slugs:
14
14
  - doc
15
15
  - environment
16
16
  - express
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-express-template
17
18
  history:
18
19
  - version: 7.5.9
19
20
  date: 2025-12-30