@intlayer/docs 5.5.11 → 5.5.12

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 (313) hide show
  1. package/blog/ar/intlayer_with_next-intl.md +0 -1
  2. package/blog/ar/list_i18n_technologies/CMS/wordpress.md +1 -1
  3. package/blog/ar/list_i18n_technologies/frameworks/angular.md +1 -1
  4. package/blog/ar/list_i18n_technologies/frameworks/flutter.md +1 -1
  5. package/blog/ar/list_i18n_technologies/frameworks/react-native.md +1 -1
  6. package/blog/ar/list_i18n_technologies/frameworks/react.md +1 -1
  7. package/blog/ar/list_i18n_technologies/frameworks/svelte.md +1 -1
  8. package/blog/ar/list_i18n_technologies/frameworks/vue.md +1 -1
  9. package/blog/ar/what_is_internationalization.md +2 -2
  10. package/blog/de/intlayer_with_next-intl.md +0 -1
  11. package/blog/de/list_i18n_technologies/CMS/wordpress.md +1 -1
  12. package/blog/de/list_i18n_technologies/frameworks/angular.md +1 -1
  13. package/blog/de/list_i18n_technologies/frameworks/flutter.md +1 -1
  14. package/blog/de/list_i18n_technologies/frameworks/react-native.md +1 -1
  15. package/blog/de/list_i18n_technologies/frameworks/react.md +1 -1
  16. package/blog/de/list_i18n_technologies/frameworks/svelte.md +1 -1
  17. package/blog/de/list_i18n_technologies/frameworks/vue.md +1 -1
  18. package/blog/de/what_is_internationalization.md +2 -2
  19. package/blog/en/intlayer_with_next-intl.md +0 -1
  20. package/blog/en/list_i18n_technologies/CMS/wordpress.md +1 -1
  21. package/blog/en/list_i18n_technologies/frameworks/angular.md +1 -1
  22. package/blog/en/list_i18n_technologies/frameworks/flutter.md +1 -1
  23. package/blog/en/list_i18n_technologies/frameworks/react-native.md +1 -1
  24. package/blog/en/list_i18n_technologies/frameworks/react.md +1 -1
  25. package/blog/en/list_i18n_technologies/frameworks/svelte.md +1 -1
  26. package/blog/en/list_i18n_technologies/frameworks/vue.md +1 -1
  27. package/blog/en/what_is_internationalization.md +2 -2
  28. package/blog/en-GB/intlayer_with_next-intl.md +0 -1
  29. package/blog/en-GB/list_i18n_technologies/CMS/wordpress.md +1 -1
  30. package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +1 -1
  31. package/blog/en-GB/list_i18n_technologies/frameworks/flutter.md +1 -1
  32. package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +1 -1
  33. package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +1 -1
  34. package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +1 -1
  35. package/blog/en-GB/what_is_internationalization.md +2 -2
  36. package/blog/es/intlayer_with_next-intl.md +0 -1
  37. package/blog/es/list_i18n_technologies/CMS/wordpress.md +1 -1
  38. package/blog/es/list_i18n_technologies/frameworks/angular.md +1 -1
  39. package/blog/es/list_i18n_technologies/frameworks/flutter.md +1 -1
  40. package/blog/es/list_i18n_technologies/frameworks/react-native.md +1 -1
  41. package/blog/es/list_i18n_technologies/frameworks/react.md +1 -1
  42. package/blog/es/list_i18n_technologies/frameworks/svelte.md +1 -1
  43. package/blog/es/list_i18n_technologies/frameworks/vue.md +1 -1
  44. package/blog/es/what_is_internationalization.md +2 -2
  45. package/blog/fr/intlayer_with_next-intl.md +0 -1
  46. package/blog/fr/list_i18n_technologies/CMS/wordpress.md +1 -1
  47. package/blog/fr/list_i18n_technologies/frameworks/angular.md +1 -1
  48. package/blog/fr/list_i18n_technologies/frameworks/flutter.md +1 -1
  49. package/blog/fr/list_i18n_technologies/frameworks/react-native.md +1 -1
  50. package/blog/fr/list_i18n_technologies/frameworks/react.md +1 -1
  51. package/blog/fr/list_i18n_technologies/frameworks/svelte.md +1 -1
  52. package/blog/fr/list_i18n_technologies/frameworks/vue.md +1 -1
  53. package/blog/fr/what_is_internationalization.md +2 -2
  54. package/blog/hi/list_i18n_technologies/CMS/wordpress.md +1 -1
  55. package/blog/hi/list_i18n_technologies/frameworks/angular.md +1 -1
  56. package/blog/hi/list_i18n_technologies/frameworks/flutter.md +1 -1
  57. package/blog/hi/list_i18n_technologies/frameworks/react-native.md +1 -1
  58. package/blog/hi/list_i18n_technologies/frameworks/react.md +1 -1
  59. package/blog/hi/list_i18n_technologies/frameworks/svelte.md +1 -1
  60. package/blog/hi/list_i18n_technologies/frameworks/vue.md +1 -1
  61. package/blog/hi/what_is_internationalization.md +2 -2
  62. package/blog/it/intlayer_with_next-intl.md +0 -1
  63. package/blog/it/list_i18n_technologies/CMS/wordpress.md +1 -1
  64. package/blog/it/list_i18n_technologies/frameworks/angular.md +1 -1
  65. package/blog/it/list_i18n_technologies/frameworks/react-native.md +1 -1
  66. package/blog/it/list_i18n_technologies/frameworks/react.md +1 -1
  67. package/blog/it/list_i18n_technologies/frameworks/svelte.md +1 -1
  68. package/blog/it/list_i18n_technologies/frameworks/vue.md +1 -1
  69. package/blog/it/what_is_internationalization.md +2 -2
  70. package/blog/ja/intlayer_with_next-intl.md +0 -1
  71. package/blog/ja/list_i18n_technologies/CMS/wordpress.md +1 -1
  72. package/blog/ja/list_i18n_technologies/frameworks/angular.md +1 -1
  73. package/blog/ja/list_i18n_technologies/frameworks/flutter.md +1 -1
  74. package/blog/ja/list_i18n_technologies/frameworks/react-native.md +1 -1
  75. package/blog/ja/list_i18n_technologies/frameworks/react.md +1 -1
  76. package/blog/ja/list_i18n_technologies/frameworks/svelte.md +1 -1
  77. package/blog/ja/list_i18n_technologies/frameworks/vue.md +1 -1
  78. package/blog/ja/what_is_internationalization.md +2 -2
  79. package/blog/ko/intlayer_with_next-intl.md +0 -1
  80. package/blog/ko/list_i18n_technologies/CMS/wordpress.md +1 -1
  81. package/blog/ko/list_i18n_technologies/frameworks/angular.md +1 -1
  82. package/blog/ko/list_i18n_technologies/frameworks/react-native.md +1 -1
  83. package/blog/ko/list_i18n_technologies/frameworks/react.md +1 -1
  84. package/blog/ko/list_i18n_technologies/frameworks/vue.md +1 -1
  85. package/blog/pt/intlayer_with_next-intl.md +0 -1
  86. package/blog/pt/list_i18n_technologies/CMS/wordpress.md +1 -1
  87. package/blog/pt/list_i18n_technologies/frameworks/angular.md +1 -1
  88. package/blog/pt/list_i18n_technologies/frameworks/flutter.md +1 -1
  89. package/blog/pt/list_i18n_technologies/frameworks/react-native.md +1 -1
  90. package/blog/pt/list_i18n_technologies/frameworks/react.md +1 -1
  91. package/blog/pt/list_i18n_technologies/frameworks/svelte.md +1 -1
  92. package/blog/pt/list_i18n_technologies/frameworks/vue.md +1 -1
  93. package/blog/pt/what_is_internationalization.md +2 -2
  94. package/blog/ru/intlayer_with_next-intl.md +0 -1
  95. package/blog/ru/list_i18n_technologies/CMS/wordpress.md +1 -1
  96. package/blog/ru/list_i18n_technologies/frameworks/angular.md +1 -1
  97. package/blog/ru/list_i18n_technologies/frameworks/flutter.md +1 -1
  98. package/blog/ru/list_i18n_technologies/frameworks/react-native.md +1 -1
  99. package/blog/ru/list_i18n_technologies/frameworks/react.md +1 -1
  100. package/blog/ru/list_i18n_technologies/frameworks/svelte.md +1 -1
  101. package/blog/ru/list_i18n_technologies/frameworks/vue.md +1 -1
  102. package/blog/ru/what_is_internationalization.md +2 -2
  103. package/blog/zh/intlayer_with_next-intl.md +0 -1
  104. package/blog/zh/list_i18n_technologies/CMS/wordpress.md +1 -1
  105. package/blog/zh/list_i18n_technologies/frameworks/angular.md +1 -1
  106. package/blog/zh/list_i18n_technologies/frameworks/flutter.md +1 -1
  107. package/blog/zh/list_i18n_technologies/frameworks/react-native.md +1 -1
  108. package/blog/zh/list_i18n_technologies/frameworks/react.md +1 -1
  109. package/blog/zh/list_i18n_technologies/frameworks/svelte.md +1 -1
  110. package/blog/zh/list_i18n_technologies/frameworks/vue.md +1 -1
  111. package/blog/zh/what_is_internationalization.md +2 -2
  112. package/dist/cjs/blog.cjs +2 -2
  113. package/dist/cjs/blog.cjs.map +1 -1
  114. package/dist/cjs/common.cjs +17 -6
  115. package/dist/cjs/common.cjs.map +1 -1
  116. package/dist/cjs/doc.cjs +2 -2
  117. package/dist/cjs/doc.cjs.map +1 -1
  118. package/dist/cjs/frequentQuestions.cjs +2 -2
  119. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  120. package/dist/cjs/generated/blog.entry.cjs +1152 -252
  121. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  122. package/dist/cjs/generated/docs.entry.cjs +3778 -1124
  123. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  124. package/dist/cjs/generated/frequentQuestions.entry.cjs +794 -161
  125. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  126. package/dist/cjs/generated/legal.entry.cjs +32 -31
  127. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  128. package/dist/cjs/legal.cjs +2 -2
  129. package/dist/cjs/legal.cjs.map +1 -1
  130. package/dist/esm/blog.mjs +2 -2
  131. package/dist/esm/blog.mjs.map +1 -1
  132. package/dist/esm/common.mjs +17 -6
  133. package/dist/esm/common.mjs.map +1 -1
  134. package/dist/esm/doc.mjs +2 -2
  135. package/dist/esm/doc.mjs.map +1 -1
  136. package/dist/esm/frequentQuestions.mjs +2 -2
  137. package/dist/esm/frequentQuestions.mjs.map +1 -1
  138. package/dist/esm/generated/blog.entry.mjs +1151 -252
  139. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  140. package/dist/esm/generated/docs.entry.mjs +3777 -1124
  141. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  142. package/dist/esm/generated/frequentQuestions.entry.mjs +793 -161
  143. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  144. package/dist/esm/generated/legal.entry.mjs +31 -31
  145. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  146. package/dist/esm/legal.mjs +2 -2
  147. package/dist/esm/legal.mjs.map +1 -1
  148. package/dist/types/blog.d.ts +2 -2
  149. package/dist/types/blog.d.ts.map +1 -1
  150. package/dist/types/common.d.ts +3 -2
  151. package/dist/types/common.d.ts.map +1 -1
  152. package/dist/types/doc.d.ts +2 -2
  153. package/dist/types/doc.d.ts.map +1 -1
  154. package/dist/types/frequentQuestions.d.ts +2 -2
  155. package/dist/types/frequentQuestions.d.ts.map +1 -1
  156. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  157. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  158. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  159. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  160. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  161. package/dist/types/legal.d.ts +2 -2
  162. package/dist/types/legal.d.ts.map +1 -1
  163. package/docs/ar/intlayer_with_vite+react.md +100 -108
  164. package/docs/de/intlayer_with_vite+react.md +121 -142
  165. package/docs/en/CI_CD.md +3 -1
  166. package/docs/en/autoFill.md +3 -1
  167. package/docs/en/configuration.md +4 -1
  168. package/docs/en/dictionary/condition.md +3 -1
  169. package/docs/en/dictionary/content_extention_customization.md +3 -1
  170. package/docs/en/dictionary/enumeration.md +3 -1
  171. package/docs/en/dictionary/file.md +3 -1
  172. package/docs/en/dictionary/function_fetching.md +3 -1
  173. package/docs/en/dictionary/get_started.md +3 -1
  174. package/docs/en/dictionary/insertion.md +3 -1
  175. package/docs/en/dictionary/markdown.md +3 -1
  176. package/docs/en/dictionary/nesting.md +3 -1
  177. package/docs/en/dictionary/translation.md +3 -1
  178. package/docs/en/how_works_intlayer.md +3 -1
  179. package/docs/en/index.md +3 -1
  180. package/docs/en/interest_of_intlayer.md +3 -1
  181. package/docs/en/intlayer_CMS.md +3 -1
  182. package/docs/en/intlayer_cli.md +3 -1
  183. package/docs/en/intlayer_visual_editor.md +3 -1
  184. package/docs/en/intlayer_with_angular.md +3 -1
  185. package/docs/en/intlayer_with_create_react_app.md +3 -1
  186. package/docs/en/intlayer_with_express.md +3 -1
  187. package/docs/en/intlayer_with_lynx+react.md +3 -1
  188. package/docs/en/intlayer_with_nextjs_14.md +6 -1
  189. package/docs/en/intlayer_with_nextjs_15.md +5 -1
  190. package/docs/en/intlayer_with_nextjs_page_router.md +5 -1
  191. package/docs/en/intlayer_with_nuxt.md +3 -1
  192. package/docs/en/intlayer_with_react_native+expo.md +3 -1
  193. package/docs/en/intlayer_with_vite+preact.md +3 -1
  194. package/docs/en/intlayer_with_vite+react.md +9 -7
  195. package/docs/en/intlayer_with_vite+solid.md +3 -1
  196. package/docs/en/intlayer_with_vite+svelte.md +3 -1
  197. package/docs/en/intlayer_with_vite+vue.md +3 -1
  198. package/docs/en/introduction.md +3 -1
  199. package/docs/en/mcp_server.md +42 -1
  200. package/docs/en/packages/@intlayer/api/index.md +3 -1
  201. package/docs/en/packages/@intlayer/chokidar/index.md +3 -1
  202. package/docs/en/packages/@intlayer/cli/index.md +3 -1
  203. package/docs/en/packages/@intlayer/config/index.md +3 -1
  204. package/docs/en/packages/@intlayer/core/index.md +3 -1
  205. package/docs/en/packages/@intlayer/design-system/index.md +3 -1
  206. package/docs/en/packages/@intlayer/dictionary-entry/index.md +3 -1
  207. package/docs/en/packages/@intlayer/editor/index.md +3 -1
  208. package/docs/en/packages/@intlayer/editor-react/index.md +3 -1
  209. package/docs/en/packages/@intlayer/webpack/index.md +3 -1
  210. package/docs/en/packages/angular-intlayer/index.md +3 -1
  211. package/docs/en/packages/express-intlayer/index.md +3 -1
  212. package/docs/en/packages/express-intlayer/t.md +3 -1
  213. package/docs/en/packages/intlayer/getConfiguration.md +3 -1
  214. package/docs/en/packages/intlayer/getEnumeration.md +3 -1
  215. package/docs/en/packages/intlayer/getHTMLTextDir.md +3 -1
  216. package/docs/en/packages/intlayer/getLocaleLang.md +3 -1
  217. package/docs/en/packages/intlayer/getLocaleName.md +3 -1
  218. package/docs/en/packages/intlayer/getLocalizedUrl.md +3 -1
  219. package/docs/en/packages/intlayer/getMultilingualUrls.md +3 -1
  220. package/docs/en/packages/intlayer/getPathWithoutLocale.md +3 -1
  221. package/docs/en/packages/intlayer/getTranslation.md +3 -1
  222. package/docs/en/packages/intlayer/getTranslationContent.md +3 -1
  223. package/docs/en/packages/intlayer/index.md +3 -1
  224. package/docs/en/packages/intlayer-cli/index.md +3 -1
  225. package/docs/en/packages/intlayer-editor/index.md +3 -1
  226. package/docs/en/packages/lynx-intlayer/index.md +3 -1
  227. package/docs/en/packages/next-intlayer/index.md +3 -1
  228. package/docs/en/packages/next-intlayer/t.md +3 -1
  229. package/docs/en/packages/next-intlayer/useDictionary.md +3 -1
  230. package/docs/en/packages/next-intlayer/useIntlayer.md +3 -1
  231. package/docs/en/packages/next-intlayer/useIntlayerAsync.md +3 -1
  232. package/docs/en/packages/next-intlayer/useLocale.md +3 -1
  233. package/docs/en/packages/nuxt-intlayer/index.md +3 -1
  234. package/docs/en/packages/preact-intlayer/index.md +3 -1
  235. package/docs/en/packages/react-intlayer/index.md +3 -1
  236. package/docs/en/packages/react-intlayer/t.md +3 -1
  237. package/docs/en/packages/react-intlayer/useDictionary.md +3 -1
  238. package/docs/en/packages/react-intlayer/useIntlayer.md +3 -1
  239. package/docs/en/packages/react-intlayer/useIntlayerAsync.md +3 -1
  240. package/docs/en/packages/react-intlayer/useLocale.md +3 -1
  241. package/docs/en/packages/react-native-intlayer/index.md +3 -1
  242. package/docs/en/packages/react-scripts-intlayer/index.md +3 -1
  243. package/docs/en/packages/solid-intlayer/index.md +3 -1
  244. package/docs/en/packages/svelte-intlayer/index.md +3 -1
  245. package/docs/en/packages/vite-intlayer/index.md +3 -1
  246. package/docs/en/packages/vue-intlayer/index.md +3 -1
  247. package/docs/en/per_locale_file.md +3 -1
  248. package/docs/en/roadmap.md +5 -2
  249. package/docs/en/vs_code_extension.md +3 -1
  250. package/docs/en-GB/intlayer_with_vite+react.md +64 -83
  251. package/docs/es/intlayer_with_vite+react.md +91 -94
  252. package/docs/fr/intlayer_with_vite+react.md +73 -65
  253. package/docs/hi/intlayer_with_vite+react.md +107 -107
  254. package/docs/it/intlayer_with_vite+react.md +156 -112
  255. package/docs/ja/intlayer_with_vite+react.md +153 -218
  256. package/docs/ko/intlayer_with_vite+react.md +116 -148
  257. package/docs/ko/packages/intlayer/getLocalizedUrl.md +1 -23
  258. package/docs/pt/intlayer_with_vite+react.md +110 -132
  259. package/docs/ru/intlayer_with_vite+react.md +98 -83
  260. package/docs/zh/intlayer_with_vite+react.md +147 -184
  261. package/docs/zh/packages/intlayer/getLocalizedUrl.md +1 -23
  262. package/frequent_questions/ar/build_error_CI_CD.md +75 -0
  263. package/frequent_questions/de/build_error_CI_CD.md +75 -0
  264. package/frequent_questions/en/build_error_CI_CD.md +75 -0
  265. package/frequent_questions/en-GB/build_error_CI_CD.md +75 -0
  266. package/frequent_questions/es/build_error_CI_CD.md +75 -0
  267. package/frequent_questions/fr/build_error_CI_CD.md +75 -0
  268. package/frequent_questions/hi/build_error_CI_CD.md +75 -0
  269. package/frequent_questions/it/build_error_CI_CD.md +75 -0
  270. package/frequent_questions/ja/build_error_CI_CD.md +75 -0
  271. package/frequent_questions/ja/intlayer_command_undefined.md +3 -3
  272. package/frequent_questions/ko/build_error_CI_CD.md +75 -0
  273. package/frequent_questions/ko/intlayer_command_undefined.md +3 -3
  274. package/frequent_questions/pt/build_error_CI_CD.md +75 -0
  275. package/frequent_questions/ru/build_error_CI_CD.md +75 -0
  276. package/frequent_questions/zh/build_error_CI_CD.md +75 -0
  277. package/frequent_questions/zh/intlayer_command_undefined.md +3 -3
  278. package/legal/ar/privacy_notice.md +83 -0
  279. package/legal/ar/terms_of_service.md +55 -0
  280. package/legal/de/privacy_notice.md +83 -0
  281. package/legal/de/terms_of_service.md +55 -0
  282. package/legal/en/privacy_notice.md +83 -0
  283. package/legal/en/terms_of_service.md +55 -0
  284. package/legal/en-GB/privacy_notice.md +83 -0
  285. package/legal/en-GB/terms_of_service.md +55 -0
  286. package/legal/es/privacy_notice.md +83 -0
  287. package/legal/es/terms_of_service.md +55 -0
  288. package/legal/fr/privacy_notice.md +83 -0
  289. package/legal/fr/terms_of_service.md +55 -0
  290. package/legal/hi/privacy_notice.md +83 -0
  291. package/legal/hi/terms_of_service.md +55 -0
  292. package/legal/it/privacy_notice.md +83 -0
  293. package/legal/it/terms_of_service.md +55 -0
  294. package/legal/ja/privacy_notice.md +83 -0
  295. package/legal/ja/terms_of_service.md +55 -0
  296. package/legal/ko/privacy_notice.md +83 -0
  297. package/legal/ko/terms_of_service.md +55 -0
  298. package/legal/pt/privacy_notice.md +83 -0
  299. package/legal/pt/terms_of_service.md +55 -0
  300. package/legal/ru/privacy_notice.md +83 -0
  301. package/legal/ru/terms_of_service.md +55 -0
  302. package/legal/zh/privacy_notice.md +83 -0
  303. package/legal/zh/terms_of_service.md +55 -0
  304. package/package.json +7 -6
  305. package/src/blog.ts +6 -4
  306. package/src/common.ts +23 -7
  307. package/src/doc.ts +6 -4
  308. package/src/frequentQuestions.ts +6 -4
  309. package/src/generated/blog.entry.ts +1177 -280
  310. package/src/generated/docs.entry.ts +3868 -1217
  311. package/src/generated/frequentQuestions.entry.ts +808 -178
  312. package/src/generated/legal.entry.ts +34 -36
  313. package/src/legal.ts +6 -4
@@ -1,20 +1,20 @@
1
1
  ---
2
- createdAt: 2025-03-07
3
- updatedAt: 2025-06-29
4
- title: Переводите ваше мобильное приложение React Native и Expo (i18n)
5
- description: Узнайте, как сделать ваше мобильное приложение React Native и Expo многоязычным. Следуйте документации для интернационализации (i18n) и перевода.
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2024-03-07
4
+ title: Начало работы с Intlayer в Vite + React
5
+ description: Узнайте, как добавить интернационализацию (i18n) в ваше приложение на Vite и React с помощью Intlayer. Следуйте этому руководству, чтобы сделать ваше приложение многоязычным.
6
6
  keywords:
7
7
  - Интернационализация
8
8
  - Документация
9
9
  - Intlayer
10
10
  - Vite
11
11
  - React
12
- - React Native
12
+ - i18n
13
13
  - JavaScript
14
14
  slugs:
15
15
  - doc
16
16
  - environment
17
- - react-native-and-expo
17
+ - vite-and-react
18
18
  ---
19
19
 
20
20
  # Начало работы с интернационализацией (i18n) с Intlayer, Vite и React
@@ -27,10 +27,10 @@ slugs:
27
27
 
28
28
  С помощью Intlayer вы можете:
29
29
 
30
- - **Легко управлять переводами** с использованием декларативных словарей на уровне компонентов.
31
- - **Динамически локализовать метаданные**, маршруты и контент.
32
- - **Обеспечить поддержку TypeScript** с помощью автогенерируемых типов, улучшая автодополнение и обнаружение ошибок.
33
- - **Воспользоваться расширенными функциями**, такими как динамическое определение и переключение локали.
30
+ - **Легко управляйте переводами** с помощью декларативных словарей на уровне компонентов.
31
+ - **Динамически локализуйте метаданные**, маршруты и контент.
32
+ - **Обеспечьте поддержку TypeScript** с автогенерируемыми типами, улучшая автозаполнение и обнаружение ошибок.
33
+ - **Воспользуйтесь расширенными возможностями**, такими как динамическое определение и переключение локали.
34
34
 
35
35
  ---
36
36
 
@@ -57,13 +57,13 @@ yarn add --save-dev vite-intlayer
57
57
 
58
58
  - **intlayer**
59
59
 
60
- Основной пакет, который предоставляет инструменты интернационализации для управления конфигурацией, переводами, [объявления контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_cli.md).
60
+ Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [объявления контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_cli.md).
61
61
 
62
62
  - **react-intlayer**
63
63
  Пакет, который интегрирует Intlayer с приложением на React. Он предоставляет провайдеры контекста и хуки для интернационализации в React.
64
64
 
65
65
  - **vite-intlayer**
66
- Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также промежуточное ПО для определения предпочтительной локали пользователя, управления cookie и обработки перенаправления URL.
66
+ Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также промежуточное ПО для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
67
67
 
68
68
  ### Шаг 2: Конфигурация вашего проекта
69
69
 
@@ -91,7 +91,6 @@ export default config;
91
91
  import { Locales } from "intlayer";
92
92
 
93
93
  /** @type {import('intlayer').IntlayerConfig} */
94
- // Конфигурация для интернационализации приложения
95
94
  const config = {
96
95
  internationalization: {
97
96
  locales: [
@@ -111,7 +110,6 @@ export default config;
111
110
  const { Locales } = require("intlayer");
112
111
 
113
112
  /** @type {import('intlayer').IntlayerConfig} */
114
- // Конфигурация для интернационализации приложения
115
113
  const config = {
116
114
  internationalization: {
117
115
  locales: [
@@ -127,7 +125,7 @@ const config = {
127
125
  module.exports = config;
128
126
  ```
129
127
 
130
- > Через этот файл конфигурации вы можете настроить локализованные URL-адреса, перенаправление в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
128
+ > Через этот файл конфигурации вы можете настроить локализованные URL-адреса, перенаправление в промежуточном ПО, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
131
129
 
132
130
  ### Шаг 3: Интеграция Intlayer в вашу конфигурацию Vite
133
131
 
@@ -166,7 +164,7 @@ module.exports = defineConfig({
166
164
  });
167
165
  ```
168
166
 
169
- > Плагин Vite `intlayerPlugin()` используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, предоставляет алиасы для оптимизации производительности.
167
+ > Плагин Vite `intlayerPlugin()` используется для интеграции Intlayer с Vite. Он обеспечивает создание файлов деклараций контента и отслеживает их в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, он предоставляет алиасы для оптимизации производительности.
170
168
 
171
169
  ### Шаг 4: Объявите Ваш Контент
172
170
 
@@ -235,12 +233,12 @@ const appContent = {
235
233
  key: "app",
236
234
  content: {
237
235
  viteLogo: t({
238
- en: "Vite logo",
236
+ en: "Логотип Vite",
239
237
  fr: "Logo Vite",
240
238
  es: "Logo Vite",
241
239
  }),
242
240
  reactLogo: t({
243
- en: "React logo",
241
+ en: "Логотип React",
244
242
  fr: "Logo React",
245
243
  es: "Logo React",
246
244
  }),
@@ -248,7 +246,7 @@ const appContent = {
248
246
  title: "Vite + React",
249
247
 
250
248
  count: t({
251
- en: "count is ",
249
+ en: "счет: ",
252
250
  fr: "le compte est ",
253
251
  es: "el recuento es ",
254
252
  }),
@@ -316,10 +314,10 @@ const appContent = {
316
314
  t <
317
315
  ReactNode >
318
316
  {
319
- // Не забудьте импортировать React, если используете React node в вашем контенте
317
+ // Не забудьте импортировать React, если вы используете React node в вашем контенте
320
318
  en: (
321
319
  <>
322
- Edit <code>src/App.tsx</code> и сохраните, чтобы проверить HMR
320
+ Edit <code>src/App.tsx</code> and save to test HMR
323
321
  </>
324
322
  ),
325
323
  fr: (
@@ -329,8 +327,7 @@ const appContent = {
329
327
  ),
330
328
  es: (
331
329
  <>
332
- Редактируйте <code>src/App.tsx</code> и сохраняйте, чтобы
333
- протестировать HMR
330
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
334
331
  </>
335
332
  ),
336
333
  },
@@ -394,7 +391,7 @@ module.exports = appContent;
394
391
  "en": "Edit src/App.tsx and save to test HMR",
395
392
  "fr": "Éditez src/App.tsx et enregistrez pour tester HMR",
396
393
  "es": "Edita src/App.tsx y guarda para probar HMR",
397
- "ru": "Редактируйте src/App.tsx и сохраняйте, чтобы проверить HMR"
394
+ "ru": "Отредактируйте src/App.tsx и сохраните, чтобы проверить HMR"
398
395
  }
399
396
  },
400
397
  "readTheDocs": {
@@ -411,7 +408,7 @@ module.exports = appContent;
411
408
 
412
409
  > Для получения дополнительной информации обратитесь к [документации по объявлениям контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md).
413
410
 
414
- > Если ваш файл контента включает код TSX, вам следует рассмотреть возможность импорта `import React from "react";` в вашем файле контента.
411
+ > Если ваш файл контента включает код TSX, рекомендуется импортировать `import React from "react";` в вашем файле контента.
415
412
 
416
413
  ### Шаг 5: Использование Intlayer в вашем коде
417
414
 
@@ -532,6 +529,7 @@ const AppContent = () => {
532
529
  <img
533
530
  src={reactLogo}
534
531
  className="logo react"
532
+ alt={content.reactLogo.value} // альтернативный текст для логотипа React
535
533
  alt={content.reactLogo.value}
536
534
  />
537
535
  </a>
@@ -568,7 +566,7 @@ module.exports = App;
568
566
 
569
567
  ### (Необязательно) Шаг 6: Изменение языка вашего контента
570
568
 
571
- Для изменения языка вашего контента вы можете использовать функцию `setLocale`, предоставляемую хуком `useLocale`. Эта функция позволяет установить локаль приложения и обновить контент соответственно.
569
+ Чтобы изменить язык вашего контента, вы можете использовать функцию `setLocale`, предоставляемую хуком `useLocale`. Эта функция позволяет установить локаль приложения и обновить контент соответственно.
572
570
 
573
571
  ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
574
572
  import type { FC } from "react";
@@ -580,7 +578,7 @@ const LocaleSwitcher: FC = () => {
580
578
 
581
579
  return (
582
580
  <button onClick={() => setLocale(Locales.English)}>
583
- Изменить язык на английский
581
+ Change Language to English
584
582
  </button>
585
583
  );
586
584
  };
@@ -620,7 +618,7 @@ const LocaleSwitcher = () => {
620
618
 
621
619
  ### (Необязательно) Шаг 7: Добавьте локализованную маршрутизацию в ваше приложение
622
620
 
623
- Цель этого шага — создать уникальные маршруты для каждого языка. Это полезно для SEO и создания SEO-дружественных URL.
621
+ Цель этого шага — создать уникальные маршруты для каждого языка. Это полезно для SEO и URL, дружественных к SEO.
624
622
  Пример:
625
623
 
626
624
  ```plaintext
@@ -631,7 +629,7 @@ const LocaleSwitcher = () => {
631
629
 
632
630
  > По умолчанию маршруты не имеют префикса для локали по умолчанию. Если вы хотите добавить префикс для локали по умолчанию, вы можете установить опцию `middleware.prefixDefault` в значение `true` в вашей конфигурации. Подробнее смотрите в [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
633
631
 
634
- Чтобы добавить локализованную маршрутизацию в ваше приложение, вы можете создать компонент `LocaleRouter`, который обернет маршруты вашего приложения и будет обрабатывать маршрутизацию на основе локали. Вот пример с использованием [React Router](https://reactrouter.com/home):
632
+ Чтобы добавить локализованную маршрутизацию в ваше приложение, вы можете создать компонент `LocaleRouter`, который оборачивает маршруты вашего приложения и обрабатывает маршрутизацию на основе локали. Вот пример с использованием [React Router](https://reactrouter.com/home):
635
633
 
636
634
  ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
637
635
  // Импорт необходимых зависимостей и функций
@@ -658,39 +656,39 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
658
656
  children,
659
657
  locale,
660
658
  }) => {
661
- const { pathname, search } = useLocation(); // Получаем текущий путь URL
659
+ const { pathname, search } = useLocation(); // Получить текущий путь URL
662
660
 
663
- // Определяем текущую локаль, используя локаль по умолчанию, если не указана
661
+ // Определить текущую локаль, используя локаль по умолчанию, если не указана
664
662
  const currentLocale = locale ?? defaultLocale;
665
663
 
666
- // Удаляем префикс локали из пути для формирования базового пути
664
+ // Удалить префикс локали из пути для формирования базового пути
667
665
  const pathWithoutLocale = getPathWithoutLocale(
668
666
  pathname // Текущий путь URL
669
667
  );
670
668
 
671
669
  /**
672
- * Если middleware.prefixDefault равно true, префикс локали по умолчанию всегда должен присутствовать.
670
+ * Если middleware.prefixDefault равно true, префикс локали по умолчанию должен всегда присутствовать.
673
671
  */
674
672
  if (middleware.prefixDefault) {
675
- // Проверяем валидность локали
673
+ // Проверить валидность локали
676
674
  if (!locale || !locales.includes(locale)) {
677
- // Перенаправляем на локаль по умолчанию с обновленным путем
675
+ // Перенаправить на локаль по умолчанию с обновлённым путем
678
676
  return (
679
677
  <Navigate
680
678
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
681
- replace // Заменить текущую запись в истории на новую
679
+ replace // Заменить текущую запись истории новой
682
680
  />
683
681
  );
684
682
  }
685
683
 
686
- // Оборачиваем дочерние элементы в IntlayerProvider и устанавливаем текущую локаль
684
+ // Обернуть дочерние элементы в IntlayerProvider и установить текущую локаль
687
685
  return (
688
686
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
689
687
  );
690
688
  } else {
691
689
  /**
692
- * Когда middleware.prefixDefault равно false, префикс для локали по умолчанию не используется.
693
- * Убедитесь, что текущая локаль действительна и не является локалью по умолчанию.
690
+ * Когда middleware.prefixDefault равно false, локаль по умолчанию не префиксируется.
691
+ * Убедиться, что текущая локаль действительна и не является локалью по умолчанию.
694
692
  */
695
693
  if (
696
694
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -698,13 +696,13 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
698
696
  .filter(
699
697
  (locale) => locale.toString() !== defaultLocale.toString() // Исключить локаль по умолчанию
700
698
  )
701
- .includes(currentLocale) // Проверяет, находится ли текущая локаль в списке допустимых локалей
699
+ .includes(currentLocale) // Проверить, находится ли текущая локаль в списке допустимых локалей
702
700
  ) {
703
- // Перенаправляет на путь без префикса локали
701
+ // Перенаправить на путь без префикса локали
704
702
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
705
703
  }
706
704
 
707
- // Оборачивает дочерние элементы в IntlayerProvider и устанавливает текущую локаль
705
+ // Обернуть дочерние элементы в IntlayerProvider и установить текущую локаль
708
706
  return (
709
707
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
710
708
  );
@@ -712,7 +710,7 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
712
710
  };
713
711
 
714
712
  /**
715
- * Компонент роутера, который настраивает маршруты с учетом локали.
713
+ * Компонент маршрутизатора, который настраивает маршруты для конкретных локалей.
716
714
  * Использует React Router для управления навигацией и рендеринга локализованных компонентов.
717
715
  */
718
716
  export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
@@ -732,7 +730,7 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
732
730
  ))}
733
731
 
734
732
  {
735
- // Если префикс для локали по умолчанию отключен, рендерит дочерние элементы напрямую по корневому пути
733
+ // Если префикс для локали по умолчанию отключен, рендерить дочерние элементы напрямую по корневому пути
736
734
  !middleware.prefixDefault && (
737
735
  <Route
738
736
  path="*"
@@ -780,16 +778,16 @@ const AppLocalized = ({ children, locale }) => {
780
778
  );
781
779
 
782
780
  /**
783
- * Если middleware.prefixDefault равно true, локаль по умолчанию всегда должна иметь префикс.
781
+ * Если middleware.prefixDefault равно true, префикс локали по умолчанию должен всегда присутствовать.
784
782
  */
785
783
  if (middleware.prefixDefault) {
786
784
  // Проверить локаль
787
785
  if (!locale || !locales.includes(locale)) {
788
- // Перенаправить на локаль по умолчанию с обновлённым путём
786
+ // Перенаправить на локаль по умолчанию с обновлённым путем
789
787
  return (
790
788
  <Navigate
791
789
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
792
- replace // Заменить текущую запись истории на новую
790
+ replace // Заменить текущую запись в истории на новую
793
791
  />
794
792
  );
795
793
  }
@@ -801,7 +799,7 @@ const AppLocalized = ({ children, locale }) => {
801
799
  } else {
802
800
  /**
803
801
  * Когда middleware.prefixDefault равно false, префикс для локали по умолчанию не используется.
804
- * Убедитесь, что текущая локаль действительна и не является локалью по умолчанию.
802
+ * Убедиться, что текущая локаль действительна и не является локалью по умолчанию.
805
803
  */
806
804
  if (
807
805
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -809,13 +807,13 @@ const AppLocalized = ({ children, locale }) => {
809
807
  .filter(
810
808
  (locale) => locale.toString() !== defaultLocale.toString() // Исключить локаль по умолчанию
811
809
  )
812
- .includes(currentLocale) // Проверяет, входит ли текущая локаль в список допустимых локалей
810
+ .includes(currentLocale) // Проверить, находится ли текущая локаль в списке допустимых локалей
813
811
  ) {
814
- // Перенаправляет на путь без префикса локали
812
+ // Перенаправить на путь без префикса локали
815
813
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
816
814
  }
817
815
 
818
- // Оборачивает дочерние элементы в IntlayerProvider и устанавливает текущую локаль
816
+ // Обернуть дочерние элементы в IntlayerProvider и установить текущую локаль
819
817
  return (
820
818
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
821
819
  );
@@ -824,7 +822,7 @@ const AppLocalized = ({ children, locale }) => {
824
822
 
825
823
  /**
826
824
  * Компонент маршрутизатора, который настраивает маршруты для конкретных локалей.
827
- * Использует React Router для управления навигацией и отображения локализованных компонентов.
825
+ * Использует React Router для управления навигацией и рендеринга локализованных компонентов.
828
826
  */
829
827
  export const LocaleRouter = ({ children }) => (
830
828
  <BrowserRouter>
@@ -835,7 +833,7 @@ export const LocaleRouter = ({ children }) => (
835
833
  )
836
834
  .map((locale) => (
837
835
  <Route
838
- // Шаблон маршрута для захвата локали (например, /en/, /fr/) и соответствия всем последующим путям
836
+ // Шаблон маршрута для захвата локали (например, /en/, /fr/) и сопоставления всех последующих путей
839
837
  path={`/${locale}/*`}
840
838
  key={locale}
841
839
  element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Оборачивает дочерние элементы с управлением локалью
@@ -843,7 +841,7 @@ export const LocaleRouter = ({ children }) => (
843
841
  ))}
844
842
 
845
843
  {
846
- // Если префикс локали по умолчанию отключен, рендерит дочерние элементы напрямую по корневому пути
844
+ // Если префикс для локали по умолчанию отключен, рендерить дочерние элементы напрямую по корневому пути
847
845
  !middleware.prefixDefault && (
848
846
  <Route
849
847
  path="*"
@@ -881,7 +879,7 @@ const { locales, defaultLocale } = internationalization;
881
879
  const AppLocalized = ({ children, locale }) => {
882
880
  const { pathname, search } = useLocation(); // Получить текущий путь URL
883
881
 
884
- // Определить текущую локаль, использовать локаль по умолчанию, если не указана
882
+ // Определить текущую локаль, используя локаль по умолчанию, если не указана
885
883
  const currentLocale = locale ?? defaultLocale;
886
884
 
887
885
  // Удалить префикс локали из пути для построения базового пути
@@ -899,7 +897,7 @@ const AppLocalized = ({ children, locale }) => {
899
897
  return (
900
898
  <Navigate
901
899
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
902
- replace // Заменить текущую запись в истории на новую
900
+ replace // Заменить текущую запись истории на новую
903
901
  />
904
902
  );
905
903
  }
@@ -911,7 +909,7 @@ const AppLocalized = ({ children, locale }) => {
911
909
  } else {
912
910
  /**
913
911
  * Когда middleware.prefixDefault равно false, префикс для локали по умолчанию не добавляется.
914
- * Убедиться, что текущая локаль действительна и не является локалью по умолчанию.
912
+ * Убедиться, что текущая локаль валидна и не является локалью по умолчанию.
915
913
  */
916
914
  if (
917
915
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -919,7 +917,7 @@ const AppLocalized = ({ children, locale }) => {
919
917
  .filter(
920
918
  (locale) => locale.toString() !== defaultLocale.toString() // Исключить локаль по умолчанию
921
919
  )
922
- .includes(currentLocale) // Проверить, входит ли текущая локаль в список допустимых локалей
920
+ .includes(currentLocale) // Проверить, что текущая локаль есть в списке валидных локалей
923
921
  ) {
924
922
  // Перенаправить на путь без префикса локали
925
923
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
@@ -1096,7 +1094,7 @@ const LocaleSwitcher: FC = () => {
1096
1094
  {getLocaleName(localeItem, locale)}
1097
1095
  </span>
1098
1096
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1099
- {/* Язык на текущей локали - например, Francés при установленной локали Locales.SPANISH */}
1097
+ {/* Язык на текущей локали - например, Francés при текущей локали Locales.SPANISH */}
1100
1098
  {getLocaleName(localeItem)}
1101
1099
  </span>
1102
1100
  <span dir="ltr" lang={Locales.ENGLISH}>
@@ -1127,7 +1125,7 @@ const LocaleSwitcher = () => {
1127
1125
 
1128
1126
  const { locale, availableLocales, setLocale } = useLocale({
1129
1127
  onLocaleChange: (locale) => {
1130
- // Построить URL с обновлённой локалью
1128
+ // Сформировать URL с обновленной локалью
1131
1129
  // Пример: /es/about?foo=bar
1132
1130
  const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1133
1131
 
@@ -1156,7 +1154,7 @@ const LocaleSwitcher = () => {
1156
1154
  {localeItem}
1157
1155
  </span>
1158
1156
  <span>
1159
- {/* Язык на своем собственном языке локали - например, Français */}
1157
+ {/* Язык на его собственной локали - например, Français */}
1160
1158
  {getLocaleName(localeItem, locale)}
1161
1159
  </span>
1162
1160
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
@@ -1191,7 +1189,7 @@ const LocaleSwitcher = () => {
1191
1189
 
1192
1190
  const { locale, availableLocales, setLocale } = useLocale({
1193
1191
  onLocaleChange: (locale) => {
1194
- // Сформировать URL с обновлённой локалью
1192
+ // Сформировать URL с обновленной локалью
1195
1193
  // Пример: /es/about?foo=bar
1196
1194
  const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1197
1195
 
@@ -1220,7 +1218,7 @@ const LocaleSwitcher = () => {
1220
1218
  {localeItem}
1221
1219
  </span>
1222
1220
  <span>
1223
- {/* Язык на своей локали - например, Français */}
1221
+ {/* Язык на его собственной локали - например, Français */}
1224
1222
  {getLocaleName(localeItem, locale)}
1225
1223
  </span>
1226
1224
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
@@ -1241,16 +1239,16 @@ const LocaleSwitcher = () => {
1241
1239
 
1242
1240
  > Ссылки на документацию:
1243
1241
  >
1244
- > - [`useLocale` hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md)
1245
- > - [`getLocaleName` hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getLocaleName.md)
1246
- > - [`getLocalizedUrl` hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getLocalizedUrl.md)
1242
+ > - [`useLocale` хук](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/react-intlayer/useLocale.md)
1243
+ > - [`getLocaleName` хук](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getLocaleName.md)
1244
+ > - [`getLocalizedUrl` хук](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getLocalizedUrl.md)
1247
1245
  > - [`getHTMLTextDir` hook](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/packages/intlayer/getHTMLTextDir.md)
1248
1246
  > - [`hrefLang` attribute](https://developers.google.com/search/docs/specialty/international/localized-versions?hl=fr)
1249
1247
  > - [`lang` attribute](https://developer.mozilla.org/ru/docs/Web/HTML/Global_attributes/lang)
1250
1248
  > - [`dir` attribute`](https://developer.mozilla.org/ru/docs/Web/HTML/Global_attributes/dir)
1251
1249
  > - [`aria-current` attribute`](https://developer.mozilla.org/ru/docs/Web/Accessibility/ARIA/Attributes/aria-current)
1252
1250
 
1253
- Ниже приведён обновлённый **Шаг 9** с дополнительными пояснениями и уточнёнными примерами кода:
1251
+ Ниже приведён обновлённый **Шаг 9** с дополнительными объяснениями и уточнёнными примерами кода:
1254
1252
 
1255
1253
  ---
1256
1254
 
@@ -1258,7 +1256,7 @@ const LocaleSwitcher = () => {
1258
1256
 
1259
1257
  Когда ваше приложение поддерживает несколько языков, крайне важно обновлять атрибуты `lang` и `dir` тега `<html>`, чтобы они соответствовали текущей локали. Это обеспечивает:
1260
1258
 
1261
- - **Доступность**: программы чтения с экрана и вспомогательные технологии полагаются на правильный атрибут `lang` для точного произношения и интерпретации содержимого.
1259
+ - **Доступность**: программы чтения с экрана и вспомогательные технологии полагаются на правильный атрибут `lang` для точного произношения и интерпретации контента.
1262
1260
  - **Отображение текста**: атрибут `dir` (направление) гарантирует, что текст отображается в правильном порядке (например, слева направо для английского, справа налево для арабского или иврита), что важно для удобочитаемости.
1263
1261
  - **SEO**: поисковые системы используют атрибут `lang` для определения языка вашей страницы, помогая показывать правильный локализованный контент в результатах поиска.
1264
1262
 
@@ -1275,7 +1273,7 @@ import { getHTMLTextDir } from "intlayer";
1275
1273
 
1276
1274
  /**
1277
1275
  * Обновляет атрибуты `lang` и `dir` элемента <html> в зависимости от текущей локали.
1278
- * - `lang`: информирует браузеры и поисковые системы о языке страницы.
1276
+ * - `lang`: сообщает браузерам и поисковым системам язык страницы.
1279
1277
  * - `dir`: обеспечивает правильный порядок чтения (например, 'ltr' для английского, 'rtl' для арабского).
1280
1278
  *
1281
1279
  * Это динамическое обновление необходимо для правильного отображения текста, доступности и SEO.
@@ -1309,7 +1307,7 @@ export const useI18nHTMLAttributes = () => {
1309
1307
  const { locale } = useLocale();
1310
1308
 
1311
1309
  useEffect(() => {
1312
- // Обновить атрибут языка в соответствии с текущей локалью.
1310
+ // Обновить атрибут языка на текущую локаль.
1313
1311
  document.documentElement.lang = locale;
1314
1312
 
1315
1313
  // Установить направление текста в зависимости от текущей локали.
@@ -1328,7 +1326,7 @@ const { getHTMLTextDir } = require("intlayer");
1328
1326
  * - `lang`: Информирует браузеры и поисковые системы о языке страницы.
1329
1327
  * - `dir`: Обеспечивает правильный порядок чтения (например, 'ltr' для английского, 'rtl' для арабского).
1330
1328
  *
1331
- * Это динамическое обновление необходимо для правильного отображения текста, доступности и SEO.
1329
+ * Это динамическое обновление необходимо для корректного отображения текста, доступности и SEO.
1332
1330
  */
1333
1331
  const useI18nHTMLAttributes = () => {
1334
1332
  const { locale } = useLocale();
@@ -1412,6 +1410,23 @@ const App = () => (
1412
1410
  );
1413
1411
 
1414
1412
  module.exports = App;
1413
+ ```
1414
+
1415
+ Применяя эти изменения, ваше приложение будет:
1416
+
1417
+ - Обеспечивать корректное отражение текущей локали в атрибуте **language** (`lang`), что важно для SEO и поведения браузера.
1418
+ - Регулировать **направление текста** (`dir`) в соответствии с локалью, улучшая читаемость и удобство для языков с разным порядком чтения.
1419
+ - Обеспечивать более **доступный** опыт, так как вспомогательные технологии зависят от этих атрибутов для оптимальной работы.
1420
+
1421
+ ### (Необязательно) Шаг 10: Создание локализованного компонента ссылки
1422
+
1423
+ ```tsx fileName="src/App.tsx" codeFormat="typescript"
1424
+ import type { FC } from "react";
1425
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
1426
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1427
+ import "./App.css";
1428
+
1429
+ const AppContent: FC = () => {
1415
1430
  // Примените хук для обновления атрибутов lang и dir тега <html> в зависимости от локали.
1416
1431
  useI18nHTMLAttributes();
1417
1432
 
@@ -1431,16 +1446,16 @@ module.exports = App;
1431
1446
 
1432
1447
  - Обеспечивать корректное отражение текущей локали в атрибуте **языка** (`lang`), что важно для SEO и поведения браузера.
1433
1448
  - Настраивать **направление текста** (`dir`) в соответствии с локалью, улучшая читаемость и удобство использования для языков с разным порядком чтения.
1434
- - Предоставлять более **доступный** опыт, поскольку вспомогательные технологии зависят от этих атрибутов для оптимальной работы.
1449
+ - Обеспечивать более **доступный** опыт, так как вспомогательные технологии зависят от этих атрибутов для оптимальной работы.
1435
1450
 
1436
1451
  ### (Необязательно) Шаг 10: Создание локализованного компонента Link
1437
1452
 
1438
- Чтобы обеспечить навигацию вашего приложения с учётом текущей локали, вы можете создать собственный компонент `Link`. Этот компонент автоматически добавляет префикс текущего языка к внутренним URL, например, когда франкоязычный пользователь нажимает на ссылку на страницу "О нас", его перенаправляет на `/fr/about` вместо `/about`.
1453
+ Чтобы обеспечить навигацию вашего приложения с учётом текущей локали, вы можете создать пользовательский компонент `Link`. Этот компонент автоматически добавляет префикс текущего языка к внутренним URL, например, когда франкоязычный пользователь нажимает на ссылку на страницу "О нас", его перенаправляет на `/fr/about` вместо `/about`.
1439
1454
 
1440
1455
  Такое поведение полезно по нескольким причинам:
1441
1456
 
1442
- - **SEO и пользовательский опыт**: Локализованные URL помогают поисковым системам правильно индексировать страницы на разных языках и предоставлять пользователям контент на их предпочтительном языке.
1443
- - **Последовательность**: Используя локализованные ссылки по всему приложению, вы гарантируете, что навигация остаётся в рамках текущей локали, предотвращая неожиданные переключения языка.
1457
+ - **SEO и удобство для пользователя**: Локализованные URL помогают поисковым системам правильно индексировать страницы на разных языках и предоставлять пользователям контент на предпочитаемом языке.
1458
+ - **Последовательность**: Используя локализованную ссылку по всему приложению, вы гарантируете, что навигация остаётся в рамках текущей локали, предотвращая неожиданные переключения языка.
1444
1459
  - **Поддерживаемость**: Централизация логики локализации в одном компоненте упрощает управление URL-адресами, делая ваш код более удобным для поддержки и расширения по мере роста приложения.
1445
1460
 
1446
1461
  Ниже приведена реализация локализованного компонента `Link` на TypeScript:
@@ -1506,8 +1521,8 @@ export const checkIsExternalLink = (href?: string): boolean =>
1506
1521
 
1507
1522
  /**
1508
1523
  * Кастомный компонент Link, который адаптирует атрибут href в зависимости от текущей локали.
1509
- * Для внутренних ссылок используется `getLocalizedUrl` для добавления префикса локали к URL (например, /fr/about).
1510
- * Это гарантирует, что навигация остается в контексте той же локали.
1524
+ * Для внутренних ссылок используется `getLocalizedUrl`, чтобы добавить префикс локали к URL (например, /fr/about).
1525
+ * Это гарантирует, что навигация остается в контексте одной локали.
1511
1526
  */
1512
1527
  export const Link = forwardRef(({ href, children, ...props }, ref) => {
1513
1528
  const { locale } = useLocale();
@@ -1533,7 +1548,7 @@ const { useLocale } = require("react-intlayer");
1533
1548
  const { forwardRef } = require("react");
1534
1549
 
1535
1550
  /**
1536
- * Утилитная функция для проверки, является ли данный URL внешним.
1551
+ * Вспомогательная функция для проверки, является ли данный URL внешним.
1537
1552
  * Если URL начинается с http:// или https://, он считается внешним.
1538
1553
  */
1539
1554
  const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
@@ -1541,13 +1556,13 @@ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1541
1556
  /**
1542
1557
  * Пользовательский компонент Link, который адаптирует атрибут href в зависимости от текущей локали.
1543
1558
  * Для внутренних ссылок используется `getLocalizedUrl`, чтобы добавить префикс локали к URL (например, /fr/about).
1544
- * Это гарантирует, что навигация остается в контексте одной и той же локали.
1559
+ * Это гарантирует, что навигация останется в контексте той же локали.
1545
1560
  */
1546
1561
  const Link = forwardRef(({ href, children, ...props }, ref) => {
1547
1562
  const { locale } = useLocale();
1548
1563
  const isExternalLink = checkIsExternalLink(href);
1549
1564
 
1550
- // Если ссылка внутренняя и href валиден, получить локализованный URL.
1565
+ // Если ссылка внутренняя и задан корректный href, получить локализованный URL.
1551
1566
  const localizedHref = isExternalLink ? href : getLocalizedUrl(href, locale);
1552
1567
 
1553
1568
  return (
@@ -1616,14 +1631,14 @@ Intlayer использует расширение модулей (module augmen
1616
1631
 
1617
1632
  Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное **расширение Intlayer для VS Code**.
1618
1633
 
1619
- [Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1634
+ [Установить из магазина расширений VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1620
1635
 
1621
1636
  Это расширение предоставляет:
1622
1637
 
1623
1638
  - **Автодополнение** для ключей переводов.
1624
1639
  - **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
1625
- - **Встроенный предварительный просмотр** переведённого контента.
1626
- - **Быстрые действия** для лёгкого создания и обновления переводов.
1640
+ - **Встроенный просмотр** переведенного контента.
1641
+ - **Быстрые действия** для удобного создания и обновления переводов.
1627
1642
 
1628
1643
  Для получения дополнительной информации о том, как использовать расширение, обратитесь к [документации расширения Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
1629
1644