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