@intlayer/docs 6.1.6-canary.0 → 6.1.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 (242) hide show
  1. package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +71 -80
  2. package/dist/cjs/generated/docs.entry.cjs +16 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +16 -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/intlayer_with_angular.md +2 -2
  9. package/docs/ar/intlayer_with_astro.md +246 -0
  10. package/docs/ar/intlayer_with_create_react_app.md +3 -2
  11. package/docs/ar/intlayer_with_express.md +2 -2
  12. package/docs/ar/intlayer_with_nestjs.md +2 -2
  13. package/docs/ar/intlayer_with_nextjs_14.md +2 -2
  14. package/docs/ar/intlayer_with_nextjs_15.md +2 -2
  15. package/docs/ar/intlayer_with_nextjs_page_router.md +2 -2
  16. package/docs/ar/intlayer_with_nuxt.md +2 -2
  17. package/docs/ar/intlayer_with_react_native+expo.md +11 -20
  18. package/docs/ar/intlayer_with_react_router_v7.md +195 -241
  19. package/docs/ar/intlayer_with_tanstack.md +198 -272
  20. package/docs/ar/intlayer_with_vite+preact.md +9 -9
  21. package/docs/ar/intlayer_with_vite+react.md +7 -7
  22. package/docs/ar/intlayer_with_vite+vue.md +9 -9
  23. package/docs/de/intlayer_with_angular.md +2 -2
  24. package/docs/de/intlayer_with_astro.md +246 -0
  25. package/docs/de/intlayer_with_create_react_app.md +2 -2
  26. package/docs/de/intlayer_with_express.md +2 -2
  27. package/docs/de/intlayer_with_nestjs.md +2 -2
  28. package/docs/de/intlayer_with_nextjs_14.md +2 -2
  29. package/docs/de/intlayer_with_nextjs_15.md +2 -2
  30. package/docs/de/intlayer_with_nextjs_page_router.md +2 -2
  31. package/docs/de/intlayer_with_nuxt.md +2 -2
  32. package/docs/de/intlayer_with_react_native+expo.md +11 -20
  33. package/docs/de/intlayer_with_react_router_v7.md +193 -242
  34. package/docs/de/intlayer_with_tanstack.md +194 -266
  35. package/docs/de/intlayer_with_vite+preact.md +9 -9
  36. package/docs/de/intlayer_with_vite+react.md +9 -9
  37. package/docs/de/intlayer_with_vite+vue.md +11 -11
  38. package/docs/de/packages/vite-intlayer/index.md +3 -3
  39. package/docs/en/how_works_intlayer.md +1 -1
  40. package/docs/en/index.md +1 -1
  41. package/docs/en/intlayer_cli.md +1 -1
  42. package/docs/en/intlayer_with_angular.md +4 -4
  43. package/docs/en/intlayer_with_astro.md +246 -0
  44. package/docs/en/intlayer_with_create_react_app.md +4 -4
  45. package/docs/en/intlayer_with_express.md +3 -3
  46. package/docs/en/intlayer_with_lynx+react.md +1 -1
  47. package/docs/en/intlayer_with_nestjs.md +2 -2
  48. package/docs/en/intlayer_with_nextjs_14.md +13 -4
  49. package/docs/en/intlayer_with_nextjs_15.md +13 -4
  50. package/docs/en/intlayer_with_nextjs_page_router.md +5 -5
  51. package/docs/en/intlayer_with_nuxt.md +4 -4
  52. package/docs/en/intlayer_with_react_native+expo.md +46 -24
  53. package/docs/en/intlayer_with_react_router_v7.md +164 -211
  54. package/docs/en/intlayer_with_tanstack.md +166 -241
  55. package/docs/en/intlayer_with_vite+preact.md +12 -12
  56. package/docs/en/intlayer_with_vite+react.md +12 -12
  57. package/docs/en/intlayer_with_vite+solid.md +2 -2
  58. package/docs/en/intlayer_with_vite+svelte.md +2 -2
  59. package/docs/en/intlayer_with_vite+vue.md +12 -12
  60. package/docs/en/introduction.md +1 -1
  61. package/docs/en/packages/next-intlayer/useDictionary.md +1 -1
  62. package/docs/en/packages/next-intlayer/useIntlayer.md +1 -1
  63. package/docs/en/packages/react-intlayer/useDictionary.md +1 -1
  64. package/docs/en/packages/react-intlayer/useI18n.md +1 -1
  65. package/docs/en/packages/react-intlayer/useIntlayer.md +1 -1
  66. package/docs/en/releases/v6.md +1 -0
  67. package/docs/en/roadmap.md +1 -1
  68. package/docs/en-GB/intlayer_with_angular.md +3 -3
  69. package/docs/en-GB/intlayer_with_astro.md +246 -0
  70. package/docs/en-GB/intlayer_with_create_react_app.md +5 -4
  71. package/docs/en-GB/intlayer_with_express.md +2 -2
  72. package/docs/en-GB/intlayer_with_nestjs.md +2 -2
  73. package/docs/en-GB/intlayer_with_nextjs_14.md +4 -4
  74. package/docs/en-GB/intlayer_with_nextjs_15.md +2 -2
  75. package/docs/en-GB/intlayer_with_nextjs_page_router.md +2 -2
  76. package/docs/en-GB/intlayer_with_nuxt.md +2 -2
  77. package/docs/en-GB/intlayer_with_react_native+expo.md +11 -20
  78. package/docs/en-GB/intlayer_with_react_router_v7.md +171 -220
  79. package/docs/en-GB/intlayer_with_tanstack.md +174 -248
  80. package/docs/en-GB/intlayer_with_vite+preact.md +9 -9
  81. package/docs/en-GB/intlayer_with_vite+react.md +9 -9
  82. package/docs/en-GB/intlayer_with_vite+vue.md +11 -11
  83. package/docs/en-GB/packages/next-intlayer/useIntlayer.md +1 -1
  84. package/docs/en-GB/packages/react-intlayer/useIntlayer.md +1 -1
  85. package/docs/es/intlayer_with_angular.md +2 -2
  86. package/docs/es/intlayer_with_astro.md +246 -0
  87. package/docs/es/intlayer_with_create_react_app.md +3 -2
  88. package/docs/es/intlayer_with_express.md +2 -2
  89. package/docs/es/intlayer_with_nextjs_14.md +2 -2
  90. package/docs/es/intlayer_with_nextjs_15.md +2 -2
  91. package/docs/es/intlayer_with_react_native+expo.md +11 -20
  92. package/docs/es/intlayer_with_react_router_v7.md +188 -232
  93. package/docs/es/intlayer_with_tanstack.md +203 -273
  94. package/docs/es/intlayer_with_vite+preact.md +7 -7
  95. package/docs/es/intlayer_with_vite+react.md +7 -7
  96. package/docs/es/intlayer_with_vite+vue.md +9 -9
  97. package/docs/fr/intlayer_with_angular.md +2 -2
  98. package/docs/fr/intlayer_with_astro.md +246 -0
  99. package/docs/fr/intlayer_with_create_react_app.md +3 -2
  100. package/docs/fr/intlayer_with_express.md +2 -2
  101. package/docs/fr/intlayer_with_nestjs.md +2 -2
  102. package/docs/fr/intlayer_with_nextjs_14.md +2 -2
  103. package/docs/fr/intlayer_with_react_native+expo.md +11 -20
  104. package/docs/fr/intlayer_with_react_router_v7.md +188 -248
  105. package/docs/fr/intlayer_with_tanstack.md +192 -265
  106. package/docs/fr/intlayer_with_vite+preact.md +7 -7
  107. package/docs/fr/intlayer_with_vite+react.md +7 -7
  108. package/docs/fr/intlayer_with_vite+vue.md +9 -9
  109. package/docs/hi/intlayer_cli.md +1 -4
  110. package/docs/hi/intlayer_with_angular.md +2 -2
  111. package/docs/hi/intlayer_with_astro.md +246 -0
  112. package/docs/hi/intlayer_with_create_react_app.md +2 -2
  113. package/docs/hi/intlayer_with_express.md +2 -2
  114. package/docs/hi/intlayer_with_nestjs.md +2 -2
  115. package/docs/hi/intlayer_with_nextjs_14.md +2 -2
  116. package/docs/hi/intlayer_with_nextjs_15.md +2 -2
  117. package/docs/hi/intlayer_with_nextjs_page_router.md +2 -2
  118. package/docs/hi/intlayer_with_nuxt.md +2 -2
  119. package/docs/hi/intlayer_with_react_native+expo.md +11 -20
  120. package/docs/hi/intlayer_with_react_router_v7.md +199 -243
  121. package/docs/hi/intlayer_with_tanstack.md +210 -285
  122. package/docs/hi/intlayer_with_vite+preact.md +9 -9
  123. package/docs/hi/intlayer_with_vite+react.md +9 -9
  124. package/docs/hi/intlayer_with_vite+solid.md +1 -1
  125. package/docs/hi/intlayer_with_vite+vue.md +11 -11
  126. package/docs/it/intlayer_with_angular.md +2 -2
  127. package/docs/it/intlayer_with_astro.md +246 -0
  128. package/docs/it/intlayer_with_create_react_app.md +3 -2
  129. package/docs/it/intlayer_with_express.md +2 -2
  130. package/docs/it/intlayer_with_nestjs.md +2 -2
  131. package/docs/it/intlayer_with_nextjs_14.md +2 -2
  132. package/docs/it/intlayer_with_nextjs_15.md +2 -2
  133. package/docs/it/intlayer_with_nextjs_page_router.md +2 -2
  134. package/docs/it/intlayer_with_nuxt.md +2 -2
  135. package/docs/it/intlayer_with_react_native+expo.md +11 -21
  136. package/docs/it/intlayer_with_react_router_v7.md +195 -242
  137. package/docs/it/intlayer_with_tanstack.md +203 -267
  138. package/docs/it/intlayer_with_vite+preact.md +9 -9
  139. package/docs/it/intlayer_with_vite+react.md +13 -11
  140. package/docs/it/intlayer_with_vite+vue.md +11 -11
  141. package/docs/ja/intlayer_with_angular.md +2 -2
  142. package/docs/ja/intlayer_with_astro.md +246 -0
  143. package/docs/ja/intlayer_with_create_react_app.md +3 -2
  144. package/docs/ja/intlayer_with_express.md +2 -2
  145. package/docs/ja/intlayer_with_nestjs.md +2 -2
  146. package/docs/ja/intlayer_with_nextjs_14.md +2 -2
  147. package/docs/ja/intlayer_with_nextjs_15.md +2 -2
  148. package/docs/ja/intlayer_with_nextjs_page_router.md +2 -2
  149. package/docs/ja/intlayer_with_nuxt.md +2 -2
  150. package/docs/ja/intlayer_with_react_native+expo.md +18 -29
  151. package/docs/ja/intlayer_with_react_router_v7.md +204 -250
  152. package/docs/ja/intlayer_with_tanstack.md +218 -286
  153. package/docs/ja/intlayer_with_vite+preact.md +9 -9
  154. package/docs/ja/intlayer_with_vite+react.md +11 -11
  155. package/docs/ja/intlayer_with_vite+vue.md +11 -11
  156. package/docs/ko/intlayer_with_angular.md +2 -2
  157. package/docs/ko/intlayer_with_astro.md +246 -0
  158. package/docs/ko/intlayer_with_create_react_app.md +3 -2
  159. package/docs/ko/intlayer_with_express.md +2 -2
  160. package/docs/ko/intlayer_with_nestjs.md +2 -2
  161. package/docs/ko/intlayer_with_nextjs_14.md +2 -2
  162. package/docs/ko/intlayer_with_nextjs_15.md +2 -2
  163. package/docs/ko/intlayer_with_nextjs_page_router.md +2 -2
  164. package/docs/ko/intlayer_with_nuxt.md +2 -2
  165. package/docs/ko/intlayer_with_react_native+expo.md +19 -28
  166. package/docs/ko/intlayer_with_react_router_v7.md +190 -244
  167. package/docs/ko/intlayer_with_tanstack.md +200 -270
  168. package/docs/ko/intlayer_with_vite+preact.md +9 -9
  169. package/docs/ko/intlayer_with_vite+react.md +9 -9
  170. package/docs/ko/intlayer_with_vite+vue.md +11 -11
  171. package/docs/pt/intlayer_with_angular.md +2 -2
  172. package/docs/pt/intlayer_with_astro.md +246 -0
  173. package/docs/pt/intlayer_with_create_react_app.md +3 -2
  174. package/docs/pt/intlayer_with_express.md +2 -2
  175. package/docs/pt/intlayer_with_nestjs.md +2 -2
  176. package/docs/pt/intlayer_with_nextjs_14.md +2 -2
  177. package/docs/pt/intlayer_with_nextjs_15.md +2 -2
  178. package/docs/pt/intlayer_with_nextjs_page_router.md +2 -2
  179. package/docs/pt/intlayer_with_nuxt.md +2 -2
  180. package/docs/pt/intlayer_with_react_native+expo.md +11 -20
  181. package/docs/pt/intlayer_with_react_router_v7.md +7 -13
  182. package/docs/pt/intlayer_with_tanstack.md +183 -258
  183. package/docs/pt/intlayer_with_vite+preact.md +9 -9
  184. package/docs/pt/intlayer_with_vite+react.md +9 -9
  185. package/docs/pt/intlayer_with_vite+vue.md +9 -9
  186. package/docs/ru/intlayer_with_angular.md +2 -2
  187. package/docs/ru/intlayer_with_astro.md +246 -0
  188. package/docs/ru/intlayer_with_create_react_app.md +3 -2
  189. package/docs/ru/intlayer_with_express.md +2 -2
  190. package/docs/ru/intlayer_with_nestjs.md +2 -2
  191. package/docs/ru/intlayer_with_nextjs_14.md +2 -2
  192. package/docs/ru/intlayer_with_nextjs_15.md +2 -2
  193. package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
  194. package/docs/ru/intlayer_with_nuxt.md +2 -2
  195. package/docs/ru/intlayer_with_react_native+expo.md +11 -20
  196. package/docs/ru/intlayer_with_react_router_v7.md +192 -238
  197. package/docs/ru/intlayer_with_tanstack.md +197 -269
  198. package/docs/ru/intlayer_with_vite+preact.md +9 -9
  199. package/docs/ru/intlayer_with_vite+react.md +9 -9
  200. package/docs/ru/intlayer_with_vite+vue.md +11 -11
  201. package/docs/tr/how_works_intlayer.md +1 -1
  202. package/docs/tr/index.md +1 -1
  203. package/docs/tr/intlayer_cli.md +1 -1
  204. package/docs/tr/intlayer_with_angular.md +4 -4
  205. package/docs/tr/intlayer_with_astro.md +246 -0
  206. package/docs/tr/intlayer_with_create_react_app.md +4 -4
  207. package/docs/tr/intlayer_with_express.md +3 -3
  208. package/docs/tr/intlayer_with_lynx+react.md +1 -1
  209. package/docs/tr/intlayer_with_nestjs.md +2 -2
  210. package/docs/tr/intlayer_with_nextjs_14.md +2 -2
  211. package/docs/tr/intlayer_with_nextjs_15.md +4 -4
  212. package/docs/tr/intlayer_with_nextjs_page_router.md +5 -5
  213. package/docs/tr/intlayer_with_nuxt.md +4 -4
  214. package/docs/tr/intlayer_with_react_native+expo.md +12 -21
  215. package/docs/tr/intlayer_with_react_router_v7.md +222 -267
  216. package/docs/tr/intlayer_with_tanstack.md +400 -303
  217. package/docs/tr/intlayer_with_vite+preact.md +12 -12
  218. package/docs/tr/intlayer_with_vite+react.md +12 -12
  219. package/docs/tr/intlayer_with_vite+solid.md +2 -2
  220. package/docs/tr/intlayer_with_vite+svelte.md +2 -2
  221. package/docs/tr/intlayer_with_vite+vue.md +12 -12
  222. package/docs/tr/introduction.md +1 -1
  223. package/docs/tr/packages/react-intlayer/useDictionary.md +1 -1
  224. package/docs/tr/packages/react-intlayer/useI18n.md +1 -1
  225. package/docs/tr/roadmap.md +1 -1
  226. package/docs/zh/intlayer_with_angular.md +2 -2
  227. package/docs/zh/intlayer_with_astro.md +246 -0
  228. package/docs/zh/intlayer_with_create_react_app.md +3 -2
  229. package/docs/zh/intlayer_with_express.md +2 -2
  230. package/docs/zh/intlayer_with_nestjs.md +2 -2
  231. package/docs/zh/intlayer_with_nextjs_14.md +2 -2
  232. package/docs/zh/intlayer_with_nextjs_15.md +2 -2
  233. package/docs/zh/intlayer_with_nextjs_page_router.md +2 -2
  234. package/docs/zh/intlayer_with_nuxt.md +2 -2
  235. package/docs/zh/intlayer_with_react_native+expo.md +19 -28
  236. package/docs/zh/intlayer_with_react_router_v7.md +200 -248
  237. package/docs/zh/intlayer_with_tanstack.md +208 -283
  238. package/docs/zh/intlayer_with_vite+preact.md +9 -9
  239. package/docs/zh/intlayer_with_vite+react.md +9 -9
  240. package/docs/zh/intlayer_with_vite+vue.md +9 -9
  241. package/package.json +11 -11
  242. package/src/generated/docs.entry.ts +16 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-04
3
- updatedAt: 2025-09-04
3
+ updatedAt: 2025-10-03
4
4
  title: Начало работы с Intlayer в React Router v7
5
5
  description: Узнайте, как добавить интернационализацию (i18n) в ваше приложение на React Router v7 с помощью Intlayer. Следуйте этому подробному руководству, чтобы сделать ваше приложение многоязычным с маршрутизацией, учитывающей локаль.
6
6
  keywords:
@@ -17,8 +17,7 @@ slugs:
17
17
  - environment
18
18
  - vite-and-react
19
19
  - react-router-v7
20
- applicationTemplate: https://github.com/AydinTheFirst/react-router-intlayer
21
- author: AydinTheFirst
20
+ applicationTemplate: https://github.com/aymericzip/intlayer-react-router-v7-template
22
21
  ---
23
22
 
24
23
  # Начало работы с интернационализацией (i18n) с Intlayer и React Router v7
@@ -27,15 +26,15 @@ author: AydinTheFirst
27
26
 
28
27
  ## Что такое Intlayer?
29
28
 
30
- **Intlayer** — это инновационная, открытая библиотека интернационализации (i18n), разработанная для упрощения поддержки многоязычности в современных веб-приложениях.
29
+ **Intlayer** — это инновационная, открытая библиотека интернационализации (i18n), созданная для упрощения поддержки многоязычности в современных веб-приложениях.
31
30
 
32
31
  С помощью Intlayer вы можете:
33
32
 
34
33
  - **Легко управлять переводами** с использованием декларативных словарей на уровне компонентов.
35
34
  - **Динамически локализовать метаданные**, маршруты и контент.
36
- - **Обеспечить поддержку TypeScript** с помощью автогенерируемых типов, улучшая автодополнение и обнаружение ошибок.
35
+ - **Обеспечить поддержку TypeScript** с автогенерируемыми типами, улучшая автодополнение и обнаружение ошибок.
37
36
  - **Воспользоваться расширенными возможностями**, такими как динамическое определение и переключение локали.
38
- - **Включите маршрутизацию с учетом локали** с помощью системы маршрутизации на основе конфигурации React Router v7.
37
+ - **Включить маршрутизацию с учетом локали** с помощью системы маршрутизации на основе конфигурации React Router v7.
39
38
 
40
39
  ---
41
40
 
@@ -65,7 +64,7 @@ pnpm add vite-intlayer --save-dev
65
64
  Пакет, который интегрирует Intlayer с приложением React. Он предоставляет провайдеры контекста и хуки для интернационализации в React.
66
65
 
67
66
  - **vite-intlayer**
68
- Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также middleware для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
67
+ Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также промежуточное ПО для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
69
68
 
70
69
  ### Шаг 2: Конфигурация вашего проекта
71
70
 
@@ -76,11 +75,8 @@ import { type IntlayerConfig, Locales } from "intlayer";
76
75
 
77
76
  const config: IntlayerConfig = {
78
77
  internationalization: {
79
- defaultLocale: Locales.ENGLISH,
80
- locales: [Locales.ENGLISH, Locales.TURKISH],
81
- },
82
- middleware: {
83
- prefixDefault: true, // Всегда добавлять префикс для языка по умолчанию в URL
78
+ defaultLocale: Locales.ENGLISH, // Язык по умолчанию
79
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // Поддерживаемые языки
84
80
  },
85
81
  };
86
82
 
@@ -93,11 +89,8 @@ import { Locales } from "intlayer";
93
89
  /** @type {import('intlayer').IntlayerConfig} */
94
90
  const config = {
95
91
  internationalization: {
96
- defaultLocale: Locales.ENGLISH,
97
- locales: [Locales.ENGLISH, Locales.TURKISH],
98
- },
99
- middleware: {
100
- prefixDefault: true,
92
+ defaultLocale: Locales.ENGLISH, // Язык по умолчанию
93
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // Поддерживаемые языки
101
94
  },
102
95
  };
103
96
 
@@ -110,82 +103,76 @@ const { Locales } = require("intlayer");
110
103
  /** @type {import('intlayer').IntlayerConfig} */
111
104
  const config = {
112
105
  internationalization: {
113
- defaultLocale: Locales.ENGLISH,
114
- locales: [Locales.ENGLISH, Locales.TURKISH],
115
- },
116
- middleware: {
117
- prefixDefault: true,
106
+ defaultLocale: Locales.ENGLISH, // Язык по умолчанию
107
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // Поддерживаемые языки
118
108
  },
119
109
  };
120
110
 
121
111
  module.exports = config;
122
112
  ```
123
113
 
124
- > С помощью этого файла конфигурации вы можете настроить локализованные URL, перенаправления в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
125
-
126
- ### Шаг 3: Настройка маршрутов React Router v7
127
-
128
- Настройте конфигурацию маршрутизации с учетом локализации:
129
-
130
- ```typescript fileName="app/routes.ts" codeFormat="typescript"
131
- import { layout, route, type RouteConfig } from "@react-router/dev/routes";
132
-
133
- export default [
134
- layout("routes/layout.tsx", [
135
- route("/", "routes/page.tsx"), // Корневая страница - перенаправляет на локаль
136
- route("/:lang", "routes/[lang]/page.tsx"), // Локализованная главная страница
137
- route("/:lang/about", "routes/[lang]/about/page.tsx"), // Локализованная страница "О нас"
138
- ]),
139
- ] satisfies RouteConfig;
140
- ```
114
+ > С помощью этого файла конфигурации вы можете настроить локализованные URL-адреса, перенаправления в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
141
115
 
142
- ### Шаг 4: Интеграция Intlayer в вашу конфигурацию Vite
116
+ ### Шаг 3: Интеграция Intlayer в вашу конфигурацию Vite
143
117
 
144
118
  Добавьте плагин intlayer в вашу конфигурацию:
145
119
 
146
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
120
+ ```typescript fileName="vite.config.ts"
147
121
  import { reactRouter } from "@react-router/dev/vite";
148
122
  import { defineConfig } from "vite";
149
- import { intlayerMiddlewarePlugin, intlayer } from "vite-intlayer";
123
+ import { intlayer } from "vite-intlayer";
150
124
  import tsconfigPaths from "vite-tsconfig-paths";
151
125
 
152
126
  export default defineConfig({
153
- plugins: [
154
- reactRouter(),
155
- tsconfigPaths(),
156
- intlayer(),
157
- intlayerMiddlewarePlugin(),
158
- ],
127
+ plugins: [reactRouter(), tsconfigPaths(), intlayer()],
159
128
  });
160
129
  ```
161
130
 
162
- > Плагин Vite `intlayer()` используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Также он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, плагин предоставляет алиасы для оптимизации производительности.
131
+ > Плагин Vite `intlayer()` используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, предоставляет алиасы для оптимизации производительности.
163
132
 
164
- ### Шаг 5: Создайте компоненты макета
133
+ ### Шаг 4: Настройка маршрутов React Router v7
165
134
 
166
- Настройте корневой макет и макеты, специфичные для локали:
135
+ Настройте конфигурацию маршрутов с учетом локализации:
167
136
 
168
- #### Корневой макет
137
+ ```typescript fileName="app/routes.ts"
138
+ import { layout, route, type RouteConfig } from "@react-router/dev/routes";
169
139
 
170
- ```tsx fileName="app/routes/layout.tsx" codeFormat="typescript"
171
- // app/routes/layout.tsx
172
- import { Outlet } from "react-router";
140
+ export default [
141
+ layout("routes/layout.tsx", [
142
+ route("/:lang?", "routes/page.tsx"), // Локализованная главная страница
143
+ route("/:lang?/about", "routes/about/page.tsx"), // Локализованная страница "О нас"
144
+ ]),
145
+ ] satisfies RouteConfig;
146
+ ```
147
+
148
+ ### Шаг 5: Создайте компоненты Layout
149
+
150
+ Настройте корневой layout и layout для конкретных локалей:
151
+
152
+ #### Корневой Layout
153
+
154
+ ```tsx fileName="app/routes/layout.tsx"
173
155
  import { IntlayerProvider } from "react-intlayer";
156
+ import { Outlet } from "react-router";
157
+
158
+ import type { Route } from "./+types/layout";
159
+
160
+ export default function RootLayout({ params }: Route.ComponentProps) {
161
+ const { locale } = params;
174
162
 
175
- export default function RootLayout() {
176
163
  return (
177
- <IntlayerProvider>
164
+ <IntlayerProvider locale={locale}>
178
165
  <Outlet />
179
166
  </IntlayerProvider>
180
167
  );
181
168
  }
182
169
  ```
183
170
 
184
- ### Шаг 6: Объявите Ваш Контент
171
+ ### Шаг 6: Объявите ваш контент
185
172
 
186
- Создайте и управляйте декларациями контента для хранения переводов:
173
+ Создайте и управляйте объявлениями контента для хранения переводов:
187
174
 
188
- ```tsx fileName="app/routes/[lang]/page.content.ts" contentDeclarationFormat="typescript"
175
+ ```tsx fileName="app/routes/[lang]/page.content.ts"
189
176
  import { t, type Dictionary } from "intlayer";
190
177
 
191
178
  const pageContent = {
@@ -193,19 +180,23 @@ const pageContent = {
193
180
  content: {
194
181
  title: t({
195
182
  en: "Welcome to React Router v7 + Intlayer",
196
- tr: "React Router v7 + Intlayer'a Hoş Geldiniz",
183
+ es: "Bienvenido a React Router v7 + Intlayer",
184
+ fr: "Bienvenue sur React Router v7 + Intlayer",
197
185
  }),
198
186
  description: t({
199
187
  en: "Build multilingual applications with ease using React Router v7 and Intlayer.",
200
- tr: "React Router v7 и Intlayer позволяют легко создавать многоязычные приложения.",
188
+ es: "Cree aplicaciones multilingües fácilmente usando React Router v7 y Intlayer.",
189
+ fr: "Créez des applications multilingues facilement avec React Router v7 et Intlayer.",
201
190
  }),
202
191
  aboutLink: t({
203
- en: "Узнать о нас",
204
- tr: "Hakkımızda Öğrenin",
192
+ en: "Узнайте о нас",
193
+ es: "Aprender Sobre Nosotros",
194
+ fr: "En savoir plus sur nous",
205
195
  }),
206
196
  homeLink: t({
207
197
  en: "Главная",
208
- tr: "Ana Sayfa",
198
+ es: "Inicio",
199
+ fr: "Accueil",
209
200
  }),
210
201
  },
211
202
  } satisfies Dictionary;
@@ -213,105 +204,92 @@ const pageContent = {
213
204
  export default pageContent;
214
205
  ```
215
206
 
216
- > Ваши декларации контента могут быть определены в любом месте вашего приложения, как только они будут включены в директорию `contentDir` (по умолчанию, `./app`). И соответствовать расширению файла декларации контента (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
217
-
218
- > Для получения дополнительной информации обратитесь к [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md).
207
+ > Ваши объявления контента могут быть определены в любом месте вашего приложения, как только они включены в директорию `contentDir` (по умолчанию, `./app`). И соответствовать расширению файла объявления контента (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
219
208
 
220
- ### Шаг 7: Создайте компоненты, учитывающие локаль
209
+ > Для получения дополнительной информации обратитесь к [документации по объявлениям контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md).
221
210
 
222
- Создайте компонент `LocalizedLink` для навигации с учетом локали:
211
+ ### Шаг 7: Создайте компоненты с поддержкой локали
223
212
 
224
- ```tsx fileName="app/components/localized-link.tsx" codeFormat="typescript"
225
- // app/components/localized-link.tsx
226
- import { getLocalizedUrl } from "intlayer";
227
- import { useLocale } from "react-intlayer";
228
- import React from "react";
229
- import { Link, useLocation } from "react-router";
213
+ Создайте компонент `LocalizedLink` для навигации с учётом локали:
230
214
 
231
- type RouterLinkProps = React.ComponentProps<typeof Link>;
215
+ ```tsx fileName="app/components/localized-link.tsx"
216
+ import type { FC } from "react";
232
217
 
233
- export default function LocalizedLink({ to, ...props }: RouterLinkProps) {
234
- const { locale } = useLocale();
235
- const location = useLocation();
218
+ import { getLocalizedUrl, type LocalesValues } from "intlayer";
219
+ import { useLocale } from "react-intlayer";
220
+ import { Link, type LinkProps, type To } from "react-router";
236
221
 
237
- // Проверка, является ли путь внешним URL или почтовым адресом
238
- const isExternal = (path: string) =>
239
- /^([a-z][a-z0-9+.-]*:)?\/\//i.test(path) || path.startsWith("mailto:");
222
+ const isExternalLink = (to: string) => /^(https?:)?\/\//.test(to);
240
223
 
224
+ // Проверяет, является ли ссылка внешней
225
+ export const locacalizeTo = (to: To, locale: LocalesValues): To => {
241
226
  if (typeof to === "string") {
242
- if (to.startsWith("/") && !isExternal(to)) {
243
- return <Link to={getLocalizedUrl(to, locale)} {...props} />;
227
+ if (isExternalLink(to)) {
228
+ return to;
244
229
  }
245
- return <Link to={to} {...props} />;
230
+
231
+ return getLocalizedUrl(to, locale);
246
232
  }
247
233
 
248
- if (to && typeof to === "object") {
249
- const pathname = (to as { pathname?: string }).pathname;
250
- if (pathname && pathname.startsWith("/") && !isExternal(pathname)) {
251
- return (
252
- <Link
253
- to={{ ...to, pathname: getLocalizedUrl(pathname, locale) }}
254
- {...props}
255
- />
256
- );
257
- }
258
- return <Link to={to} {...props} />;
234
+ if (isExternalLink(to.pathname ?? "")) {
235
+ return to;
259
236
  }
260
237
 
261
- return (
262
- <Link
263
- to={getLocalizedUrl(location.pathname + location.search, locale)}
264
- {...props}
265
- />
266
- );
267
- }
268
- ```
238
+ return {
239
+ ...to,
240
+ pathname: getLocalizedUrl(to.pathname ?? "", locale),
241
+ };
242
+ };
269
243
 
270
- ### Шаг 8: Используйте Intlayer на своих страницах
244
+ // Компонент локализованной ссылки, учитывающий текущую локаль
245
+ export const LocalizedLink: FC<LinkProps> = (props) => {
246
+ const { locale } = useLocale();
271
247
 
272
- Получайте доступ к словарям контента по всему вашему приложению:
248
+ return <Link {...props} to={locacalizeTo(props.to, locale)} />;
249
+ };
250
+ ```
273
251
 
274
- #### Страница перенаправления корня
252
+ Если вы хотите навигировать по локализованным маршрутам, вы можете использовать хук `useLocalizedNavigate`:
275
253
 
276
- ```tsx fileName="app/routes/page.tsx" codeFormat="typescript"
277
- // app/routes/page.tsx
278
- import { useLocale } from "react.intlayer";
279
- import { Navigate } from "react-router";
254
+ ```tsx fileName="app/hooks/useLocalizedNavigate.ts"
255
+ import { useLocale } from "intlayer";
256
+ import { type NavigateOptions, type To, useNavigate } from "react-router";
280
257
 
281
- export default function Page() {
258
+ import { locacalizeTo } from "~/components/localized-link";
259
+
260
+ export const useLocalizedNavigate = () => {
261
+ const navigate = useNavigate();
282
262
  const { locale } = useLocale();
283
263
 
284
- return <Navigate replace to={locale} />;
285
- }
264
+ const localizedNavigate = (to: To, options?: NavigateOptions) => {
265
+ const localedTo = locacalizeTo(to, locale);
266
+
267
+ navigate(localedTo, options);
268
+ };
269
+
270
+ return localizedNavigate;
271
+ };
286
272
  ```
287
273
 
274
+ ### Шаг 8: Использование Intlayer на ваших страницах
275
+
276
+ Получайте доступ к вашим словарям контента по всему приложению:
277
+
288
278
  #### Локализованная главная страница
289
279
 
290
- ```tsx fileName="app/routes/[lang]/page.tsx" codeFormat="typescript"
280
+ ```tsx fileName="app/routes/[lang]/page.tsx"
291
281
  import { useIntlayer } from "react-intlayer";
292
- import LocalizedLink from "~/components/localized-link";
282
+ import { LocalizedLink } from "~/components/localized-link";
293
283
 
294
284
  export default function Page() {
295
- const content = useIntlayer("page");
285
+ const { title, description, aboutLink } = useIntlayer("page");
296
286
 
297
287
  return (
298
- <div style={{ padding: "2rem", textAlign: "center" }}>
299
- <h1>{content.title}</h1>
300
- <p>{content.description}</p>
301
- <nav style={{ marginTop: "2rem" }}>
302
- <LocalizedLink
303
- to="/about"
304
- style={{
305
- display: "inline-block",
306
- padding: "0.5rem 1rem",
307
- backgroundColor: "#007bff",
308
- color: "white",
309
- textDecoration: "none",
310
- borderRadius: "4px",
311
- }}
312
- >
313
- {content.aboutLink}
314
- </LocalizedLink>
288
+ <div>
289
+ <h1>{title}</h1>
290
+ <p>{description}</p>
291
+ <nav>
292
+ <LocalizedLink to="/about">{aboutLink}</LocalizedLink>
315
293
  </nav>
316
294
  </div>
317
295
  );
@@ -324,43 +302,58 @@ export default function Page() {
324
302
 
325
303
  Создайте компонент, позволяющий пользователям менять язык:
326
304
 
327
- ```tsx fileName="app/components/locale-switcher.tsx" codeFormat="typescript"
328
- import { getLocalizedUrl, getLocaleName } from "intlayer";
329
- import { useLocale } from "react-intlayer";
330
- import { useLocation, useNavigate } from "react-router";
305
+ ```tsx fileName="app/components/locale-switcher.tsx"
306
+ import type { FC } from "react";
331
307
 
332
- export default function LocaleSwitcher() {
333
- const { locale, availableLocales, setLocale } = useLocale();
334
- const location = useLocation();
335
- const navigate = useNavigate();
308
+ import {
309
+ getHTMLTextDir,
310
+ getLocaleName,
311
+ getLocalizedUrl,
312
+ getPathWithoutLocale,
313
+ } from "intlayer";
314
+ import { setLocaleCookie, useIntlayer, useLocale } from "react-intlayer";
315
+ import { Link, useLocation } from "react-router";
336
316
 
337
- const handleLocaleChange = (newLocale: string) => {
338
- const localizedUrl = getLocalizedUrl(
339
- location.pathname + location.search,
340
- newLocale
341
- );
342
- setLocale(newLocale);
343
- navigate(localizedUrl);
344
- };
317
+ export const LocaleSwitcher: FC = () => {
318
+ const { localeSwitcherLabel } = useIntlayer("locale-switcher");
319
+ const { pathname } = useLocation();
320
+
321
+ const { availableLocales, locale } = useLocale();
322
+
323
+ const pathWithoutLocale = getPathWithoutLocale(pathname);
345
324
 
346
325
  return (
347
- <div style={{ margin: "1rem 0" }}>
348
- <label htmlFor="locale-select">Выберите язык: </label>
349
- <select
350
- id="locale-select"
351
- value={locale}
352
- onChange={(e) => handleLocaleChange(e.target.value)}
353
- style={{ padding: "0.25rem", marginLeft: "0.5rem" }}
354
- >
355
- {availableLocales.map((availableLocale) => (
356
- <option key={availableLocale} value={availableLocale}>
357
- {getLocaleName(availableLocale)}
358
- </option>
359
- ))}
360
- </select>
361
- </div>
326
+ <ol>
327
+ {availableLocales.map((localeItem) => (
328
+ <li key={localeItem}>
329
+ <Link
330
+ aria-current={localeItem === locale ? "page" : undefined}
331
+ aria-label={`${localeSwitcherLabel.value} ${getLocaleName(localeItem)}`}
332
+ onClick={() => setLocaleCookie(localeItem)}
333
+ to={getLocalizedUrl(pathWithoutLocale, localeItem)}
334
+ >
335
+ <span>
336
+ {/* Локаль - например, FR */}
337
+ {localeItem}
338
+ </span>
339
+ <span>
340
+ {/* Язык на его собственной локали - например, Français */}
341
+ {getLocaleName(localeItem, locale)}
342
+ </span>
343
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
344
+ {/* Язык на текущей локали - например, Francés при установленной локали Locales.SPANISH */}
345
+ {getLocaleName(localeItem)}
346
+ </span>
347
+ <span dir="ltr" lang={Locales.ENGLISH}>
348
+ {/* Язык на английском - например, French */}
349
+ {getLocaleName(localeItem, Locales.ENGLISH)}
350
+ </span>
351
+ </Link>
352
+ </li>
353
+ ))}
354
+ </ol>
362
355
  );
363
- }
356
+ };
364
357
  ```
365
358
 
366
359
  > Чтобы узнать больше о хуке `useLocale`, обратитесь к [документации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md).
@@ -369,8 +362,7 @@ export default function LocaleSwitcher() {
369
362
 
370
363
  Создайте хук для управления атрибутами lang и dir в HTML:
371
364
 
372
- ```tsx fileName="app/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
373
- // app/hooks/useI18nHTMLAttributes.tsx
365
+ ```tsx fileName="app/hooks/useI18nHTMLAttributes.tsx"
374
366
  import { getHTMLTextDir } from "intlayer";
375
367
  import { useEffect } from "react";
376
368
  import { useLocale } from "react-intlayer";
@@ -387,15 +379,14 @@ export const useI18nHTMLAttributes = () => {
387
379
 
388
380
  Затем используйте его в вашем корневом компоненте:
389
381
 
390
- ```tsx fileName="app/root.tsx" codeFormat="typescript"
391
- // app/routes/layout.tsx
382
+ ```tsx fileName="app/routes/layout.tsx"
392
383
  import { Outlet } from "react-router";
393
384
  import { IntlayerProvider } from "react-intlayer";
394
385
 
395
- import { useI18nHTMLAttributes } from "app/hooks/useI18nHTMLAttributes"; // импортируем хук
386
+ import { useI18nHTMLAttributes } from "app/hooks/useI18nHTMLAttributes"; // импорт хука
396
387
 
397
388
  export default function RootLayout() {
398
- useI18nHTMLAttributes(); // вызываем хук
389
+ useI18nHTMLAttributes(); // вызов хука
399
390
 
400
391
  return (
401
392
  <IntlayerProvider>
@@ -405,45 +396,34 @@ export default function RootLayout() {
405
396
  }
406
397
  ```
407
398
 
408
- ### Шаг 11: Сборка и запуск вашего приложения
399
+ ### Шаг 11: Добавьте middleware (необязательно)
409
400
 
410
- Постройте словари контента и запустите ваше приложение:
401
+ Вы также можете использовать `intlayerMiddleware` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
411
402
 
412
- ```bash packageManager="npm"
413
- # Построить словари Intlayer
414
- npm run intlayer:build
403
+ > Обратите внимание, что для использования `intlayerMiddleware` в продакшене необходимо переместить пакет `vite-intlayer` из `devDependencies` в `dependencies`.
415
404
 
416
- # Запустить сервер разработки
417
- npm run dev
418
- ```
419
-
420
- ```bash packageManager="pnpm"
421
- # Построить словари Intlayer
422
- pnpm intlayer:build
405
+ ```typescript {3,7} fileName="vite.config.ts"
406
+ import { defineConfig } from "vite";
407
+ import react from "@vitejs/plugin-react-swc";
408
+ import { intlayer, intlayerMiddleware } from "vite-intlayer";
423
409
 
424
- # Запустить сервер разработки
425
- pnpm dev
410
+ // https://vitejs.dev/config/
411
+ export default defineConfig({
412
+ plugins: [react(), intlayer(), intlayerMiddleware()],
413
+ });
426
414
  ```
427
415
 
428
- ```bash packageManager="yarn"
429
- # Построить словари Intlayer
430
- yarn intlayer:build
431
-
432
- # Запустить сервер разработки
433
- yarn dev
434
- ```
416
+ ---
435
417
 
436
- ### Шаг 12: Настройка TypeScript (необязательно)
418
+ ## Настройка TypeScript
437
419
 
438
- Intlayer использует расширение модулей для получения преимуществ TypeScript и усиления вашей кодовой базы.
420
+ Intlayer использует расширение модулей (module augmentation), чтобы использовать преимущества TypeScript и сделать ваш код более надежным.
439
421
 
440
- Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы:
422
+ Убедитесь, что ваша конфигурация TypeScript включает автоматически сгенерированные типы:
441
423
 
442
424
  ```json5 fileName="tsconfig.json"
443
425
  {
444
- compilerOptions: {
445
- // ... ваши существующие настройки TypeScript
446
- },
426
+ // ... ваши существующие настройки
447
427
  include: [
448
428
  // ... ваши существующие включения
449
429
  ".intlayer/**/*.ts", // Включить автоматически сгенерированные типы
@@ -451,9 +431,11 @@ Intlayer использует расширение модулей для пол
451
431
  }
452
432
  ```
453
433
 
454
- ### Конфигурация Git
434
+ ---
455
435
 
456
- Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш репозиторий Git.
436
+ ## Конфигурация Git
437
+
438
+ Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
457
439
 
458
440
  Для этого вы можете добавить следующие инструкции в ваш файл `.gitignore`:
459
441
 
@@ -464,35 +446,6 @@ Intlayer использует расширение модулей для пол
464
446
 
465
447
  ---
466
448
 
467
- ## Развертывание в продакшн
468
-
469
- При развертывании вашего приложения:
470
-
471
- 1. **Соберите ваше приложение:**
472
-
473
- ```bash
474
- npm run build
475
- ```
476
-
477
- 2. **Постройте словари Intlayer:**
478
-
479
- ```bash
480
- npm run intlayer:build
481
- ```
482
-
483
- 3. **Переместите `vite-intlayer` в зависимости**, если используете middleware в продакшне:
484
- ```bash
485
- npm install vite-intlayer --save
486
- ```
487
-
488
- Ваше приложение теперь будет поддерживать:
489
-
490
- - **Структуру URL**: `/en`, `/en/about`, `/tr`, `/tr/about`
491
- - **Автоматическое определение локали** на основе предпочтений браузера
492
- - **Маршрутизацию с учётом локали** с React Router v7
493
- - **Поддержку TypeScript** с автоматически сгенерированными типами
494
- - **Серверный рендеринг** с правильной обработкой локали
495
-
496
449
  ## Расширение VS Code
497
450
 
498
451
  Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное **расширение Intlayer для VS Code**.
@@ -501,10 +454,10 @@ Intlayer использует расширение модулей для пол
501
454
 
502
455
  Это расширение предоставляет:
503
456
 
504
- - **Автодополнение** ключей переводов.
457
+ - **Автозаполнение** ключей переводов.
505
458
  - **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
506
459
  - **Встроенный просмотр** переведённого контента.
507
- - **Быстрые действия** для удобного создания и обновления переводов.
460
+ - **Быстрые действия** для простого создания и обновления переводов.
508
461
 
509
462
  Для получения дополнительной информации о том, как использовать расширение, обратитесь к [документации расширения Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
510
463
 
@@ -512,7 +465,7 @@ Intlayer использует расширение модулей для пол
512
465
 
513
466
  ## Продвинутые возможности
514
467
 
515
- Для расширения функционала вы можете реализовать [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент с помощью [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).
468
+ Чтобы пойти дальше, вы можете реализовать [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент, используя [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).
516
469
 
517
470
  ---
518
471
 
@@ -521,7 +474,7 @@ Intlayer использует расширение модулей для пол
521
474
  - [Документация Intlayer](https://intlayer.org)
522
475
  - [Документация React Router v7](https://reactrouter.com/)
523
476
  - [Хук useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useIntlayer.md)
524
- - [useLocale hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md)
477
+ - [Хук useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md)
525
478
  - [Объявление контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md)
526
479
  - [Конфигурация](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md)
527
480
 
@@ -529,6 +482,7 @@ Intlayer использует расширение модулей для пол
529
482
 
530
483
  ## История документации
531
484
 
532
- | Версия | Дата | Изменения |
533
- | ------ | --------- | ----------------------------- |
534
- | 5.8.2 | 2025-09-4 | Добавлено для React Router v7 |
485
+ | Версия | Дата | Изменения |
486
+ | ------ | ---------- | ----------------------------- |
487
+ | 6.1.5 | 2025-10-03 | Обновлена документация |
488
+ | 5.8.2 | 2025-09-04 | Добавлено для React Router v7 |