@intlayer/docs 9.5.4-canary.0 → 9.5.5

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 (622) hide show
  1. package/README.md +2 -1
  2. package/blog/ar/how_to_pick_react_i18n_library.md +28 -0
  3. package/blog/ar/how_to_pick_solid_i18n_library.md +19 -5
  4. package/blog/de/how_to_pick_react_i18n_library.md +28 -0
  5. package/blog/de/how_to_pick_solid_i18n_library.md +19 -5
  6. package/blog/en/how_to_pick_react_i18n_library.md +28 -0
  7. package/blog/en/how_to_pick_solid_i18n_library.md +19 -5
  8. package/blog/en-GB/how_to_pick_react_i18n_library.md +28 -0
  9. package/blog/en-GB/how_to_pick_solid_i18n_library.md +19 -5
  10. package/blog/es/how_to_pick_react_i18n_library.md +28 -0
  11. package/blog/es/how_to_pick_solid_i18n_library.md +19 -5
  12. package/blog/fr/how_to_pick_react_i18n_library.md +28 -0
  13. package/blog/fr/how_to_pick_solid_i18n_library.md +19 -5
  14. package/blog/hi/how_to_pick_react_i18n_library.md +28 -0
  15. package/blog/hi/how_to_pick_solid_i18n_library.md +19 -5
  16. package/blog/id/how_to_pick_react_i18n_library.md +28 -0
  17. package/blog/id/how_to_pick_solid_i18n_library.md +19 -5
  18. package/blog/it/how_to_pick_react_i18n_library.md +28 -0
  19. package/blog/it/how_to_pick_solid_i18n_library.md +19 -5
  20. package/blog/ja/how_to_pick_react_i18n_library.md +28 -0
  21. package/blog/ja/how_to_pick_solid_i18n_library.md +19 -5
  22. package/blog/ko/how_to_pick_react_i18n_library.md +28 -0
  23. package/blog/ko/how_to_pick_solid_i18n_library.md +19 -5
  24. package/blog/pl/how_to_pick_react_i18n_library.md +28 -0
  25. package/blog/pl/how_to_pick_solid_i18n_library.md +19 -5
  26. package/blog/pt/how_to_pick_react_i18n_library.md +28 -0
  27. package/blog/pt/how_to_pick_solid_i18n_library.md +19 -5
  28. package/blog/ru/how_to_pick_react_i18n_library.md +28 -0
  29. package/blog/ru/how_to_pick_solid_i18n_library.md +19 -5
  30. package/blog/tr/how_to_pick_react_i18n_library.md +28 -0
  31. package/blog/tr/how_to_pick_solid_i18n_library.md +19 -5
  32. package/blog/uk/how_to_pick_react_i18n_library.md +28 -0
  33. package/blog/uk/how_to_pick_solid_i18n_library.md +19 -5
  34. package/blog/vi/how_to_pick_react_i18n_library.md +28 -0
  35. package/blog/vi/how_to_pick_solid_i18n_library.md +19 -5
  36. package/blog/zh/how_to_pick_react_i18n_library.md +28 -0
  37. package/blog/zh/how_to_pick_solid_i18n_library.md +19 -5
  38. package/dist/cjs/generated/docs.entry.cjs +220 -0
  39. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  40. package/dist/esm/generated/docs.entry.mjs +220 -0
  41. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  42. package/dist/types/generated/docs.entry.d.ts +11 -0
  43. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  44. package/docs/ar/how_works_intlayer.md +86 -14
  45. package/docs/ar/intlayer_visual_editor.md +7 -0
  46. package/docs/ar/intlayer_with_astro.md +60 -36
  47. package/docs/ar/intlayer_with_astro_preact.md +7 -0
  48. package/docs/ar/intlayer_with_astro_react.md +7 -0
  49. package/docs/ar/intlayer_with_astro_solid.md +7 -0
  50. package/docs/ar/intlayer_with_astro_svelte.md +7 -0
  51. package/docs/ar/intlayer_with_astro_vanilla.md +7 -0
  52. package/docs/ar/intlayer_with_astro_vue.md +7 -0
  53. package/docs/ar/intlayer_with_nextjs_14.md +7 -0
  54. package/docs/ar/intlayer_with_nextjs_15.md +7 -0
  55. package/docs/ar/intlayer_with_nextjs_16.md +7 -0
  56. package/docs/ar/intlayer_with_react_router_v7.md +7 -0
  57. package/docs/ar/intlayer_with_remix_3.md +73 -112
  58. package/docs/ar/intlayer_with_tanstack+solid.md +7 -0
  59. package/docs/ar/intlayer_with_tanstack.md +7 -0
  60. package/docs/ar/intlayer_with_vite+preact.md +7 -0
  61. package/docs/ar/intlayer_with_vite+react.md +7 -0
  62. package/docs/ar/intlayer_with_vite+solid.md +7 -0
  63. package/docs/ar/packages/astro-intlayer/exports.md +161 -9
  64. package/docs/ar/packages/astro-intlayer/intlayer.md +76 -0
  65. package/docs/ar/packages/astro-intlayer/onRequest.md +76 -0
  66. package/docs/ar/packages/astro-intlayer/useDictionary.md +95 -0
  67. package/docs/ar/packages/astro-intlayer/useIntlayer.md +98 -0
  68. package/docs/ar/packages/astro-intlayer/useLocale.md +126 -0
  69. package/docs/ar/packages/remix-intlayer/Intlayer.md +55 -0
  70. package/docs/ar/packages/remix-intlayer/exports.md +80 -0
  71. package/docs/ar/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  72. package/docs/ar/packages/remix-intlayer/useDictionary.md +95 -0
  73. package/docs/ar/packages/remix-intlayer/useIntlayer.md +94 -0
  74. package/docs/ar/packages/remix-intlayer/useLocale.md +104 -0
  75. package/docs/ar/readme.md +2 -1
  76. package/docs/de/how_works_intlayer.md +86 -14
  77. package/docs/de/intlayer_visual_editor.md +7 -0
  78. package/docs/de/intlayer_with_astro.md +60 -36
  79. package/docs/de/intlayer_with_astro_preact.md +7 -0
  80. package/docs/de/intlayer_with_astro_react.md +7 -0
  81. package/docs/de/intlayer_with_astro_solid.md +7 -0
  82. package/docs/de/intlayer_with_astro_svelte.md +7 -0
  83. package/docs/de/intlayer_with_astro_vanilla.md +7 -0
  84. package/docs/de/intlayer_with_astro_vue.md +7 -0
  85. package/docs/de/intlayer_with_nextjs_14.md +7 -0
  86. package/docs/de/intlayer_with_nextjs_15.md +7 -0
  87. package/docs/de/intlayer_with_nextjs_16.md +7 -0
  88. package/docs/de/intlayer_with_react_router_v7.md +7 -0
  89. package/docs/de/intlayer_with_remix_3.md +70 -109
  90. package/docs/de/intlayer_with_tanstack+solid.md +7 -0
  91. package/docs/de/intlayer_with_tanstack.md +7 -0
  92. package/docs/de/intlayer_with_vite+preact.md +7 -0
  93. package/docs/de/intlayer_with_vite+react.md +7 -0
  94. package/docs/de/intlayer_with_vite+solid.md +7 -0
  95. package/docs/de/packages/astro-intlayer/exports.md +164 -12
  96. package/docs/de/packages/astro-intlayer/intlayer.md +76 -0
  97. package/docs/de/packages/astro-intlayer/onRequest.md +76 -0
  98. package/docs/de/packages/astro-intlayer/useDictionary.md +95 -0
  99. package/docs/de/packages/astro-intlayer/useIntlayer.md +98 -0
  100. package/docs/de/packages/astro-intlayer/useLocale.md +126 -0
  101. package/docs/de/packages/remix-intlayer/Intlayer.md +77 -0
  102. package/docs/de/packages/remix-intlayer/exports.md +176 -0
  103. package/docs/de/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  104. package/docs/de/packages/remix-intlayer/useDictionary.md +94 -0
  105. package/docs/de/packages/remix-intlayer/useIntlayer.md +94 -0
  106. package/docs/de/packages/remix-intlayer/useLocale.md +104 -0
  107. package/docs/de/readme.md +2 -1
  108. package/docs/en/how_works_intlayer.md +86 -14
  109. package/docs/en/intlayer_visual_editor.md +7 -0
  110. package/docs/en/intlayer_with_astro.md +63 -41
  111. package/docs/en/intlayer_with_astro_preact.md +7 -0
  112. package/docs/en/intlayer_with_astro_react.md +7 -0
  113. package/docs/en/intlayer_with_astro_solid.md +7 -0
  114. package/docs/en/intlayer_with_astro_svelte.md +7 -0
  115. package/docs/en/intlayer_with_astro_vanilla.md +7 -0
  116. package/docs/en/intlayer_with_astro_vue.md +7 -0
  117. package/docs/en/intlayer_with_nextjs_14.md +7 -0
  118. package/docs/en/intlayer_with_nextjs_15.md +7 -0
  119. package/docs/en/intlayer_with_nextjs_16.md +7 -0
  120. package/docs/en/intlayer_with_react_router_v7.md +7 -0
  121. package/docs/en/intlayer_with_remix_3.md +74 -122
  122. package/docs/en/intlayer_with_tanstack+solid.md +7 -0
  123. package/docs/en/intlayer_with_tanstack.md +7 -0
  124. package/docs/en/intlayer_with_vite+preact.md +7 -0
  125. package/docs/en/intlayer_with_vite+react.md +7 -0
  126. package/docs/en/intlayer_with_vite+solid.md +7 -0
  127. package/docs/en/introduction.md +2 -1
  128. package/docs/en/packages/astro-intlayer/exports.md +161 -9
  129. package/docs/en/packages/astro-intlayer/intlayer.md +76 -0
  130. package/docs/en/packages/astro-intlayer/onRequest.md +76 -0
  131. package/docs/en/packages/astro-intlayer/useDictionary.md +94 -0
  132. package/docs/en/packages/astro-intlayer/useIntlayer.md +98 -0
  133. package/docs/en/packages/astro-intlayer/useLocale.md +126 -0
  134. package/docs/en/packages/remix-intlayer/Intlayer.md +77 -0
  135. package/docs/en/packages/remix-intlayer/exports.md +176 -0
  136. package/docs/en/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  137. package/docs/en/packages/remix-intlayer/useDictionary.md +94 -0
  138. package/docs/en/packages/remix-intlayer/useIntlayer.md +94 -0
  139. package/docs/en/packages/remix-intlayer/useLocale.md +104 -0
  140. package/docs/en/readme.md +2 -1
  141. package/docs/en-GB/how_works_intlayer.md +86 -14
  142. package/docs/en-GB/intlayer_visual_editor.md +7 -0
  143. package/docs/en-GB/intlayer_with_astro.md +60 -36
  144. package/docs/en-GB/intlayer_with_astro_preact.md +7 -0
  145. package/docs/en-GB/intlayer_with_astro_react.md +7 -0
  146. package/docs/en-GB/intlayer_with_astro_solid.md +7 -0
  147. package/docs/en-GB/intlayer_with_astro_svelte.md +7 -0
  148. package/docs/en-GB/intlayer_with_astro_vanilla.md +7 -0
  149. package/docs/en-GB/intlayer_with_astro_vue.md +7 -0
  150. package/docs/en-GB/intlayer_with_nextjs_14.md +7 -0
  151. package/docs/en-GB/intlayer_with_nextjs_15.md +7 -0
  152. package/docs/en-GB/intlayer_with_nextjs_16.md +7 -0
  153. package/docs/en-GB/intlayer_with_react_router_v7.md +7 -0
  154. package/docs/en-GB/intlayer_with_remix_3.md +66 -105
  155. package/docs/en-GB/intlayer_with_tanstack+solid.md +7 -0
  156. package/docs/en-GB/intlayer_with_tanstack.md +7 -0
  157. package/docs/en-GB/intlayer_with_vite+preact.md +7 -0
  158. package/docs/en-GB/intlayer_with_vite+react.md +7 -0
  159. package/docs/en-GB/intlayer_with_vite+solid.md +7 -0
  160. package/docs/en-GB/packages/astro-intlayer/exports.md +162 -10
  161. package/docs/en-GB/packages/astro-intlayer/intlayer.md +76 -0
  162. package/docs/en-GB/packages/astro-intlayer/onRequest.md +76 -0
  163. package/docs/en-GB/packages/astro-intlayer/useDictionary.md +95 -0
  164. package/docs/en-GB/packages/astro-intlayer/useIntlayer.md +98 -0
  165. package/docs/en-GB/packages/astro-intlayer/useLocale.md +126 -0
  166. package/docs/en-GB/packages/remix-intlayer/Intlayer.md +77 -0
  167. package/docs/en-GB/packages/remix-intlayer/exports.md +176 -0
  168. package/docs/en-GB/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  169. package/docs/en-GB/packages/remix-intlayer/useDictionary.md +94 -0
  170. package/docs/en-GB/packages/remix-intlayer/useIntlayer.md +94 -0
  171. package/docs/en-GB/packages/remix-intlayer/useLocale.md +104 -0
  172. package/docs/en-GB/readme.md +2 -1
  173. package/docs/es/how_works_intlayer.md +86 -14
  174. package/docs/es/intlayer_visual_editor.md +7 -0
  175. package/docs/es/intlayer_with_astro.md +60 -36
  176. package/docs/es/intlayer_with_astro_preact.md +7 -0
  177. package/docs/es/intlayer_with_astro_react.md +7 -0
  178. package/docs/es/intlayer_with_astro_solid.md +7 -0
  179. package/docs/es/intlayer_with_astro_svelte.md +7 -0
  180. package/docs/es/intlayer_with_astro_vanilla.md +7 -0
  181. package/docs/es/intlayer_with_astro_vue.md +7 -0
  182. package/docs/es/intlayer_with_nextjs_14.md +7 -0
  183. package/docs/es/intlayer_with_nextjs_15.md +7 -0
  184. package/docs/es/intlayer_with_nextjs_16.md +7 -0
  185. package/docs/es/intlayer_with_react_router_v7.md +7 -0
  186. package/docs/es/intlayer_with_remix_3.md +73 -112
  187. package/docs/es/intlayer_with_tanstack+solid.md +7 -0
  188. package/docs/es/intlayer_with_tanstack.md +7 -0
  189. package/docs/es/intlayer_with_vite+preact.md +7 -0
  190. package/docs/es/intlayer_with_vite+react.md +7 -0
  191. package/docs/es/intlayer_with_vite+solid.md +7 -0
  192. package/docs/es/packages/astro-intlayer/exports.md +162 -10
  193. package/docs/es/packages/astro-intlayer/intlayer.md +76 -0
  194. package/docs/es/packages/astro-intlayer/onRequest.md +76 -0
  195. package/docs/es/packages/astro-intlayer/useDictionary.md +94 -0
  196. package/docs/es/packages/astro-intlayer/useIntlayer.md +98 -0
  197. package/docs/es/packages/astro-intlayer/useLocale.md +126 -0
  198. package/docs/es/packages/remix-intlayer/Intlayer.md +77 -0
  199. package/docs/es/packages/remix-intlayer/exports.md +176 -0
  200. package/docs/es/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  201. package/docs/es/packages/remix-intlayer/useDictionary.md +94 -0
  202. package/docs/es/packages/remix-intlayer/useIntlayer.md +94 -0
  203. package/docs/es/packages/remix-intlayer/useLocale.md +104 -0
  204. package/docs/es/readme.md +2 -1
  205. package/docs/fr/how_works_intlayer.md +86 -14
  206. package/docs/fr/intlayer_visual_editor.md +7 -0
  207. package/docs/fr/intlayer_with_astro.md +60 -36
  208. package/docs/fr/intlayer_with_astro_preact.md +7 -0
  209. package/docs/fr/intlayer_with_astro_react.md +7 -0
  210. package/docs/fr/intlayer_with_astro_solid.md +7 -0
  211. package/docs/fr/intlayer_with_astro_svelte.md +7 -0
  212. package/docs/fr/intlayer_with_astro_vanilla.md +7 -0
  213. package/docs/fr/intlayer_with_astro_vue.md +7 -0
  214. package/docs/fr/intlayer_with_nextjs_14.md +7 -0
  215. package/docs/fr/intlayer_with_nextjs_15.md +7 -0
  216. package/docs/fr/intlayer_with_nextjs_16.md +7 -0
  217. package/docs/fr/intlayer_with_react_router_v7.md +7 -0
  218. package/docs/fr/intlayer_with_remix_3.md +74 -122
  219. package/docs/fr/intlayer_with_tanstack+solid.md +7 -0
  220. package/docs/fr/intlayer_with_tanstack.md +7 -0
  221. package/docs/fr/intlayer_with_vite+preact.md +7 -0
  222. package/docs/fr/intlayer_with_vite+react.md +7 -0
  223. package/docs/fr/intlayer_with_vite+solid.md +7 -0
  224. package/docs/fr/packages/astro-intlayer/exports.md +162 -10
  225. package/docs/fr/packages/astro-intlayer/intlayer.md +76 -0
  226. package/docs/fr/packages/astro-intlayer/onRequest.md +76 -0
  227. package/docs/fr/packages/astro-intlayer/useDictionary.md +94 -0
  228. package/docs/fr/packages/astro-intlayer/useIntlayer.md +98 -0
  229. package/docs/fr/packages/astro-intlayer/useLocale.md +126 -0
  230. package/docs/fr/packages/remix-intlayer/Intlayer.md +77 -0
  231. package/docs/fr/packages/remix-intlayer/exports.md +176 -0
  232. package/docs/fr/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  233. package/docs/fr/packages/remix-intlayer/useDictionary.md +94 -0
  234. package/docs/fr/packages/remix-intlayer/useIntlayer.md +94 -0
  235. package/docs/fr/packages/remix-intlayer/useLocale.md +104 -0
  236. package/docs/fr/readme.md +2 -1
  237. package/docs/hi/how_works_intlayer.md +86 -14
  238. package/docs/hi/intlayer_visual_editor.md +7 -0
  239. package/docs/hi/intlayer_with_astro.md +61 -37
  240. package/docs/hi/intlayer_with_astro_preact.md +7 -0
  241. package/docs/hi/intlayer_with_astro_react.md +7 -0
  242. package/docs/hi/intlayer_with_astro_solid.md +7 -0
  243. package/docs/hi/intlayer_with_astro_svelte.md +7 -0
  244. package/docs/hi/intlayer_with_astro_vanilla.md +7 -0
  245. package/docs/hi/intlayer_with_astro_vue.md +7 -0
  246. package/docs/hi/intlayer_with_nextjs_14.md +7 -0
  247. package/docs/hi/intlayer_with_nextjs_15.md +7 -0
  248. package/docs/hi/intlayer_with_nextjs_16.md +7 -0
  249. package/docs/hi/intlayer_with_react_router_v7.md +7 -0
  250. package/docs/hi/intlayer_with_remix_3.md +73 -112
  251. package/docs/hi/intlayer_with_tanstack+solid.md +7 -0
  252. package/docs/hi/intlayer_with_tanstack.md +7 -0
  253. package/docs/hi/intlayer_with_vite+preact.md +7 -0
  254. package/docs/hi/intlayer_with_vite+react.md +7 -0
  255. package/docs/hi/intlayer_with_vite+solid.md +7 -0
  256. package/docs/hi/packages/astro-intlayer/exports.md +165 -13
  257. package/docs/hi/packages/astro-intlayer/intlayer.md +76 -0
  258. package/docs/hi/packages/astro-intlayer/onRequest.md +76 -0
  259. package/docs/hi/packages/astro-intlayer/useDictionary.md +95 -0
  260. package/docs/hi/packages/astro-intlayer/useIntlayer.md +98 -0
  261. package/docs/hi/packages/astro-intlayer/useLocale.md +126 -0
  262. package/docs/hi/packages/remix-intlayer/Intlayer.md +55 -0
  263. package/docs/hi/packages/remix-intlayer/exports.md +80 -0
  264. package/docs/hi/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  265. package/docs/hi/packages/remix-intlayer/useDictionary.md +95 -0
  266. package/docs/hi/packages/remix-intlayer/useIntlayer.md +94 -0
  267. package/docs/hi/packages/remix-intlayer/useLocale.md +104 -0
  268. package/docs/hi/readme.md +2 -1
  269. package/docs/id/how_works_intlayer.md +86 -14
  270. package/docs/id/intlayer_visual_editor.md +7 -0
  271. package/docs/id/intlayer_with_astro.md +60 -36
  272. package/docs/id/intlayer_with_astro_preact.md +7 -0
  273. package/docs/id/intlayer_with_astro_react.md +7 -0
  274. package/docs/id/intlayer_with_astro_solid.md +7 -0
  275. package/docs/id/intlayer_with_astro_svelte.md +7 -0
  276. package/docs/id/intlayer_with_astro_vanilla.md +7 -0
  277. package/docs/id/intlayer_with_astro_vue.md +7 -0
  278. package/docs/id/intlayer_with_nextjs_14.md +7 -0
  279. package/docs/id/intlayer_with_nextjs_15.md +7 -0
  280. package/docs/id/intlayer_with_nextjs_16.md +7 -0
  281. package/docs/id/intlayer_with_react_router_v7.md +7 -0
  282. package/docs/id/intlayer_with_remix_3.md +101 -148
  283. package/docs/id/intlayer_with_tanstack+solid.md +7 -0
  284. package/docs/id/intlayer_with_tanstack.md +7 -0
  285. package/docs/id/intlayer_with_vite+preact.md +7 -0
  286. package/docs/id/intlayer_with_vite+react.md +7 -0
  287. package/docs/id/intlayer_with_vite+solid.md +7 -0
  288. package/docs/id/packages/astro-intlayer/exports.md +163 -11
  289. package/docs/id/packages/astro-intlayer/intlayer.md +76 -0
  290. package/docs/id/packages/astro-intlayer/onRequest.md +76 -0
  291. package/docs/id/packages/astro-intlayer/useDictionary.md +94 -0
  292. package/docs/id/packages/astro-intlayer/useIntlayer.md +98 -0
  293. package/docs/id/packages/astro-intlayer/useLocale.md +126 -0
  294. package/docs/id/packages/remix-intlayer/Intlayer.md +55 -0
  295. package/docs/id/packages/remix-intlayer/exports.md +80 -0
  296. package/docs/id/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  297. package/docs/id/packages/remix-intlayer/useDictionary.md +95 -0
  298. package/docs/id/packages/remix-intlayer/useIntlayer.md +94 -0
  299. package/docs/id/packages/remix-intlayer/useLocale.md +104 -0
  300. package/docs/id/readme.md +2 -1
  301. package/docs/it/how_works_intlayer.md +86 -14
  302. package/docs/it/intlayer_visual_editor.md +7 -0
  303. package/docs/it/intlayer_with_astro.md +60 -36
  304. package/docs/it/intlayer_with_astro_preact.md +7 -0
  305. package/docs/it/intlayer_with_astro_react.md +7 -0
  306. package/docs/it/intlayer_with_astro_solid.md +7 -0
  307. package/docs/it/intlayer_with_astro_svelte.md +7 -0
  308. package/docs/it/intlayer_with_astro_vanilla.md +7 -0
  309. package/docs/it/intlayer_with_astro_vue.md +7 -0
  310. package/docs/it/intlayer_with_nextjs_14.md +7 -0
  311. package/docs/it/intlayer_with_nextjs_15.md +7 -0
  312. package/docs/it/intlayer_with_nextjs_16.md +7 -0
  313. package/docs/it/intlayer_with_react_router_v7.md +7 -0
  314. package/docs/it/intlayer_with_remix_3.md +70 -109
  315. package/docs/it/intlayer_with_tanstack+solid.md +7 -0
  316. package/docs/it/intlayer_with_tanstack.md +7 -0
  317. package/docs/it/intlayer_with_vite+preact.md +7 -0
  318. package/docs/it/intlayer_with_vite+react.md +7 -0
  319. package/docs/it/intlayer_with_vite+solid.md +7 -0
  320. package/docs/it/packages/astro-intlayer/exports.md +161 -9
  321. package/docs/it/packages/astro-intlayer/intlayer.md +76 -0
  322. package/docs/it/packages/astro-intlayer/onRequest.md +76 -0
  323. package/docs/it/packages/astro-intlayer/useDictionary.md +95 -0
  324. package/docs/it/packages/astro-intlayer/useIntlayer.md +98 -0
  325. package/docs/it/packages/astro-intlayer/useLocale.md +126 -0
  326. package/docs/it/packages/remix-intlayer/Intlayer.md +77 -0
  327. package/docs/it/packages/remix-intlayer/exports.md +176 -0
  328. package/docs/it/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  329. package/docs/it/packages/remix-intlayer/useDictionary.md +94 -0
  330. package/docs/it/packages/remix-intlayer/useIntlayer.md +94 -0
  331. package/docs/it/packages/remix-intlayer/useLocale.md +104 -0
  332. package/docs/it/readme.md +2 -1
  333. package/docs/ja/how_works_intlayer.md +86 -14
  334. package/docs/ja/intlayer_visual_editor.md +7 -0
  335. package/docs/ja/intlayer_with_astro.md +61 -37
  336. package/docs/ja/intlayer_with_astro_preact.md +7 -0
  337. package/docs/ja/intlayer_with_astro_react.md +7 -0
  338. package/docs/ja/intlayer_with_astro_solid.md +7 -0
  339. package/docs/ja/intlayer_with_astro_svelte.md +7 -0
  340. package/docs/ja/intlayer_with_astro_vanilla.md +7 -0
  341. package/docs/ja/intlayer_with_astro_vue.md +7 -0
  342. package/docs/ja/intlayer_with_nextjs_14.md +7 -0
  343. package/docs/ja/intlayer_with_nextjs_15.md +7 -0
  344. package/docs/ja/intlayer_with_nextjs_16.md +7 -0
  345. package/docs/ja/intlayer_with_react_router_v7.md +7 -0
  346. package/docs/ja/intlayer_with_remix_3.md +73 -112
  347. package/docs/ja/intlayer_with_tanstack+solid.md +7 -0
  348. package/docs/ja/intlayer_with_tanstack.md +7 -0
  349. package/docs/ja/intlayer_with_vite+preact.md +7 -0
  350. package/docs/ja/intlayer_with_vite+react.md +7 -0
  351. package/docs/ja/intlayer_with_vite+solid.md +7 -0
  352. package/docs/ja/packages/astro-intlayer/exports.md +163 -11
  353. package/docs/ja/packages/astro-intlayer/intlayer.md +76 -0
  354. package/docs/ja/packages/astro-intlayer/onRequest.md +76 -0
  355. package/docs/ja/packages/astro-intlayer/useDictionary.md +95 -0
  356. package/docs/ja/packages/astro-intlayer/useIntlayer.md +98 -0
  357. package/docs/ja/packages/astro-intlayer/useLocale.md +126 -0
  358. package/docs/ja/packages/remix-intlayer/Intlayer.md +55 -0
  359. package/docs/ja/packages/remix-intlayer/exports.md +80 -0
  360. package/docs/ja/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  361. package/docs/ja/packages/remix-intlayer/useDictionary.md +95 -0
  362. package/docs/ja/packages/remix-intlayer/useIntlayer.md +94 -0
  363. package/docs/ja/packages/remix-intlayer/useLocale.md +104 -0
  364. package/docs/ja/readme.md +2 -1
  365. package/docs/ko/how_works_intlayer.md +86 -14
  366. package/docs/ko/intlayer_visual_editor.md +7 -0
  367. package/docs/ko/intlayer_with_astro.md +61 -37
  368. package/docs/ko/intlayer_with_astro_preact.md +7 -0
  369. package/docs/ko/intlayer_with_astro_react.md +7 -0
  370. package/docs/ko/intlayer_with_astro_solid.md +7 -0
  371. package/docs/ko/intlayer_with_astro_svelte.md +7 -0
  372. package/docs/ko/intlayer_with_astro_vanilla.md +7 -0
  373. package/docs/ko/intlayer_with_astro_vue.md +7 -0
  374. package/docs/ko/intlayer_with_nextjs_14.md +7 -0
  375. package/docs/ko/intlayer_with_nextjs_15.md +7 -0
  376. package/docs/ko/intlayer_with_nextjs_16.md +7 -0
  377. package/docs/ko/intlayer_with_react_router_v7.md +7 -0
  378. package/docs/ko/intlayer_with_remix_3.md +73 -112
  379. package/docs/ko/intlayer_with_tanstack+solid.md +7 -0
  380. package/docs/ko/intlayer_with_tanstack.md +7 -0
  381. package/docs/ko/intlayer_with_vite+preact.md +7 -0
  382. package/docs/ko/intlayer_with_vite+react.md +7 -0
  383. package/docs/ko/intlayer_with_vite+solid.md +7 -0
  384. package/docs/ko/packages/astro-intlayer/exports.md +163 -11
  385. package/docs/ko/packages/astro-intlayer/intlayer.md +76 -0
  386. package/docs/ko/packages/astro-intlayer/onRequest.md +76 -0
  387. package/docs/ko/packages/astro-intlayer/useDictionary.md +95 -0
  388. package/docs/ko/packages/astro-intlayer/useIntlayer.md +98 -0
  389. package/docs/ko/packages/astro-intlayer/useLocale.md +126 -0
  390. package/docs/ko/packages/remix-intlayer/Intlayer.md +55 -0
  391. package/docs/ko/packages/remix-intlayer/exports.md +80 -0
  392. package/docs/ko/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  393. package/docs/ko/packages/remix-intlayer/useDictionary.md +95 -0
  394. package/docs/ko/packages/remix-intlayer/useIntlayer.md +94 -0
  395. package/docs/ko/packages/remix-intlayer/useLocale.md +104 -0
  396. package/docs/ko/readme.md +2 -1
  397. package/docs/pl/how_works_intlayer.md +86 -14
  398. package/docs/pl/intlayer_visual_editor.md +7 -0
  399. package/docs/pl/intlayer_with_astro.md +61 -37
  400. package/docs/pl/intlayer_with_astro_preact.md +7 -0
  401. package/docs/pl/intlayer_with_astro_react.md +7 -0
  402. package/docs/pl/intlayer_with_astro_solid.md +7 -0
  403. package/docs/pl/intlayer_with_astro_svelte.md +7 -0
  404. package/docs/pl/intlayer_with_astro_vanilla.md +7 -0
  405. package/docs/pl/intlayer_with_astro_vue.md +7 -0
  406. package/docs/pl/intlayer_with_nextjs_14.md +7 -0
  407. package/docs/pl/intlayer_with_nextjs_15.md +7 -0
  408. package/docs/pl/intlayer_with_nextjs_16.md +7 -0
  409. package/docs/pl/intlayer_with_react_router_v7.md +7 -0
  410. package/docs/pl/intlayer_with_remix_3.md +101 -148
  411. package/docs/pl/intlayer_with_tanstack+solid.md +7 -0
  412. package/docs/pl/intlayer_with_tanstack.md +7 -0
  413. package/docs/pl/intlayer_with_vite+preact.md +7 -0
  414. package/docs/pl/intlayer_with_vite+react.md +7 -0
  415. package/docs/pl/intlayer_with_vite+solid.md +7 -0
  416. package/docs/pl/packages/astro-intlayer/exports.md +162 -10
  417. package/docs/pl/packages/astro-intlayer/intlayer.md +76 -0
  418. package/docs/pl/packages/astro-intlayer/onRequest.md +76 -0
  419. package/docs/pl/packages/astro-intlayer/useDictionary.md +94 -0
  420. package/docs/pl/packages/astro-intlayer/useIntlayer.md +98 -0
  421. package/docs/pl/packages/astro-intlayer/useLocale.md +126 -0
  422. package/docs/pl/packages/remix-intlayer/Intlayer.md +55 -0
  423. package/docs/pl/packages/remix-intlayer/exports.md +80 -0
  424. package/docs/pl/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  425. package/docs/pl/packages/remix-intlayer/useDictionary.md +95 -0
  426. package/docs/pl/packages/remix-intlayer/useIntlayer.md +94 -0
  427. package/docs/pl/packages/remix-intlayer/useLocale.md +104 -0
  428. package/docs/pl/readme.md +2 -1
  429. package/docs/pt/how_works_intlayer.md +86 -14
  430. package/docs/pt/intlayer_visual_editor.md +7 -0
  431. package/docs/pt/intlayer_with_astro.md +61 -37
  432. package/docs/pt/intlayer_with_astro_preact.md +7 -0
  433. package/docs/pt/intlayer_with_astro_react.md +7 -0
  434. package/docs/pt/intlayer_with_astro_solid.md +7 -0
  435. package/docs/pt/intlayer_with_astro_svelte.md +7 -0
  436. package/docs/pt/intlayer_with_astro_vanilla.md +7 -0
  437. package/docs/pt/intlayer_with_astro_vue.md +7 -0
  438. package/docs/pt/intlayer_with_nextjs_14.md +7 -0
  439. package/docs/pt/intlayer_with_nextjs_15.md +7 -0
  440. package/docs/pt/intlayer_with_nextjs_16.md +7 -0
  441. package/docs/pt/intlayer_with_react_router_v7.md +7 -0
  442. package/docs/pt/intlayer_with_remix_3.md +73 -112
  443. package/docs/pt/intlayer_with_tanstack+solid.md +7 -0
  444. package/docs/pt/intlayer_with_tanstack.md +7 -0
  445. package/docs/pt/intlayer_with_vite+preact.md +7 -0
  446. package/docs/pt/intlayer_with_vite+react.md +7 -0
  447. package/docs/pt/intlayer_with_vite+solid.md +7 -0
  448. package/docs/pt/packages/astro-intlayer/exports.md +162 -10
  449. package/docs/pt/packages/astro-intlayer/intlayer.md +76 -0
  450. package/docs/pt/packages/astro-intlayer/onRequest.md +76 -0
  451. package/docs/pt/packages/astro-intlayer/useDictionary.md +95 -0
  452. package/docs/pt/packages/astro-intlayer/useIntlayer.md +98 -0
  453. package/docs/pt/packages/astro-intlayer/useLocale.md +126 -0
  454. package/docs/pt/packages/remix-intlayer/Intlayer.md +77 -0
  455. package/docs/pt/packages/remix-intlayer/exports.md +176 -0
  456. package/docs/pt/packages/remix-intlayer/intlayerMiddleware.md +101 -0
  457. package/docs/pt/packages/remix-intlayer/useDictionary.md +94 -0
  458. package/docs/pt/packages/remix-intlayer/useIntlayer.md +94 -0
  459. package/docs/pt/packages/remix-intlayer/useLocale.md +104 -0
  460. package/docs/pt/readme.md +2 -1
  461. package/docs/ru/how_works_intlayer.md +86 -14
  462. package/docs/ru/intlayer_visual_editor.md +7 -0
  463. package/docs/ru/intlayer_with_astro.md +61 -37
  464. package/docs/ru/intlayer_with_astro_preact.md +7 -0
  465. package/docs/ru/intlayer_with_astro_react.md +7 -0
  466. package/docs/ru/intlayer_with_astro_solid.md +7 -0
  467. package/docs/ru/intlayer_with_astro_svelte.md +7 -0
  468. package/docs/ru/intlayer_with_astro_vanilla.md +7 -0
  469. package/docs/ru/intlayer_with_astro_vue.md +7 -0
  470. package/docs/ru/intlayer_with_nextjs_14.md +7 -0
  471. package/docs/ru/intlayer_with_nextjs_15.md +7 -0
  472. package/docs/ru/intlayer_with_nextjs_16.md +7 -0
  473. package/docs/ru/intlayer_with_react_router_v7.md +7 -0
  474. package/docs/ru/intlayer_with_remix_3.md +73 -112
  475. package/docs/ru/intlayer_with_tanstack+solid.md +7 -0
  476. package/docs/ru/intlayer_with_tanstack.md +7 -0
  477. package/docs/ru/intlayer_with_vite+preact.md +7 -0
  478. package/docs/ru/intlayer_with_vite+react.md +7 -0
  479. package/docs/ru/intlayer_with_vite+solid.md +7 -0
  480. package/docs/ru/packages/astro-intlayer/exports.md +164 -12
  481. package/docs/ru/packages/astro-intlayer/intlayer.md +76 -0
  482. package/docs/ru/packages/astro-intlayer/onRequest.md +76 -0
  483. package/docs/ru/packages/astro-intlayer/useDictionary.md +95 -0
  484. package/docs/ru/packages/astro-intlayer/useIntlayer.md +98 -0
  485. package/docs/ru/packages/astro-intlayer/useLocale.md +126 -0
  486. package/docs/ru/packages/remix-intlayer/Intlayer.md +55 -0
  487. package/docs/ru/packages/remix-intlayer/exports.md +80 -0
  488. package/docs/ru/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  489. package/docs/ru/packages/remix-intlayer/useDictionary.md +95 -0
  490. package/docs/ru/packages/remix-intlayer/useIntlayer.md +94 -0
  491. package/docs/ru/packages/remix-intlayer/useLocale.md +104 -0
  492. package/docs/ru/readme.md +2 -1
  493. package/docs/tr/how_works_intlayer.md +86 -14
  494. package/docs/tr/intlayer_visual_editor.md +7 -0
  495. package/docs/tr/intlayer_with_astro.md +60 -36
  496. package/docs/tr/intlayer_with_astro_preact.md +7 -0
  497. package/docs/tr/intlayer_with_astro_react.md +7 -0
  498. package/docs/tr/intlayer_with_astro_solid.md +7 -0
  499. package/docs/tr/intlayer_with_astro_svelte.md +7 -0
  500. package/docs/tr/intlayer_with_astro_vanilla.md +7 -0
  501. package/docs/tr/intlayer_with_astro_vue.md +7 -0
  502. package/docs/tr/intlayer_with_nextjs_14.md +7 -0
  503. package/docs/tr/intlayer_with_nextjs_15.md +7 -0
  504. package/docs/tr/intlayer_with_nextjs_16.md +7 -0
  505. package/docs/tr/intlayer_with_react_router_v7.md +7 -0
  506. package/docs/tr/intlayer_with_remix_3.md +101 -148
  507. package/docs/tr/intlayer_with_tanstack+solid.md +7 -0
  508. package/docs/tr/intlayer_with_tanstack.md +7 -0
  509. package/docs/tr/intlayer_with_vite+preact.md +7 -0
  510. package/docs/tr/intlayer_with_vite+react.md +7 -0
  511. package/docs/tr/intlayer_with_vite+solid.md +7 -0
  512. package/docs/tr/packages/astro-intlayer/exports.md +165 -13
  513. package/docs/tr/packages/astro-intlayer/intlayer.md +76 -0
  514. package/docs/tr/packages/astro-intlayer/onRequest.md +76 -0
  515. package/docs/tr/packages/astro-intlayer/useDictionary.md +95 -0
  516. package/docs/tr/packages/astro-intlayer/useIntlayer.md +98 -0
  517. package/docs/tr/packages/astro-intlayer/useLocale.md +126 -0
  518. package/docs/tr/packages/remix-intlayer/Intlayer.md +55 -0
  519. package/docs/tr/packages/remix-intlayer/exports.md +80 -0
  520. package/docs/tr/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  521. package/docs/tr/packages/remix-intlayer/useDictionary.md +95 -0
  522. package/docs/tr/packages/remix-intlayer/useIntlayer.md +94 -0
  523. package/docs/tr/packages/remix-intlayer/useLocale.md +104 -0
  524. package/docs/tr/readme.md +2 -1
  525. package/docs/uk/how_works_intlayer.md +86 -14
  526. package/docs/uk/intlayer_visual_editor.md +7 -0
  527. package/docs/uk/intlayer_with_astro.md +61 -37
  528. package/docs/uk/intlayer_with_astro_preact.md +7 -0
  529. package/docs/uk/intlayer_with_astro_react.md +7 -0
  530. package/docs/uk/intlayer_with_astro_solid.md +7 -0
  531. package/docs/uk/intlayer_with_astro_svelte.md +7 -0
  532. package/docs/uk/intlayer_with_astro_vanilla.md +7 -0
  533. package/docs/uk/intlayer_with_astro_vue.md +7 -0
  534. package/docs/uk/intlayer_with_nextjs_14.md +7 -0
  535. package/docs/uk/intlayer_with_nextjs_15.md +7 -0
  536. package/docs/uk/intlayer_with_nextjs_16.md +7 -0
  537. package/docs/uk/intlayer_with_react_router_v7.md +7 -0
  538. package/docs/uk/intlayer_with_remix_3.md +101 -148
  539. package/docs/uk/intlayer_with_tanstack+solid.md +7 -0
  540. package/docs/uk/intlayer_with_tanstack.md +7 -0
  541. package/docs/uk/intlayer_with_vite+preact.md +7 -0
  542. package/docs/uk/intlayer_with_vite+react.md +7 -0
  543. package/docs/uk/intlayer_with_vite+solid.md +7 -0
  544. package/docs/uk/packages/astro-intlayer/exports.md +162 -10
  545. package/docs/uk/packages/astro-intlayer/intlayer.md +76 -0
  546. package/docs/uk/packages/astro-intlayer/onRequest.md +76 -0
  547. package/docs/uk/packages/astro-intlayer/useDictionary.md +94 -0
  548. package/docs/uk/packages/astro-intlayer/useIntlayer.md +98 -0
  549. package/docs/uk/packages/astro-intlayer/useLocale.md +126 -0
  550. package/docs/uk/packages/remix-intlayer/Intlayer.md +55 -0
  551. package/docs/uk/packages/remix-intlayer/exports.md +80 -0
  552. package/docs/uk/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  553. package/docs/uk/packages/remix-intlayer/useDictionary.md +95 -0
  554. package/docs/uk/packages/remix-intlayer/useIntlayer.md +94 -0
  555. package/docs/uk/packages/remix-intlayer/useLocale.md +104 -0
  556. package/docs/uk/readme.md +2 -1
  557. package/docs/vi/how_works_intlayer.md +86 -14
  558. package/docs/vi/intlayer_visual_editor.md +7 -0
  559. package/docs/vi/intlayer_with_astro.md +60 -36
  560. package/docs/vi/intlayer_with_astro_preact.md +7 -0
  561. package/docs/vi/intlayer_with_astro_react.md +7 -0
  562. package/docs/vi/intlayer_with_astro_solid.md +7 -0
  563. package/docs/vi/intlayer_with_astro_svelte.md +7 -0
  564. package/docs/vi/intlayer_with_astro_vanilla.md +7 -0
  565. package/docs/vi/intlayer_with_astro_vue.md +7 -0
  566. package/docs/vi/intlayer_with_nextjs_14.md +7 -0
  567. package/docs/vi/intlayer_with_nextjs_15.md +7 -0
  568. package/docs/vi/intlayer_with_nextjs_16.md +7 -0
  569. package/docs/vi/intlayer_with_react_router_v7.md +7 -0
  570. package/docs/vi/intlayer_with_remix_3.md +101 -148
  571. package/docs/vi/intlayer_with_tanstack+solid.md +7 -0
  572. package/docs/vi/intlayer_with_tanstack.md +7 -0
  573. package/docs/vi/intlayer_with_vite+preact.md +7 -0
  574. package/docs/vi/intlayer_with_vite+react.md +7 -0
  575. package/docs/vi/intlayer_with_vite+solid.md +7 -0
  576. package/docs/vi/packages/astro-intlayer/exports.md +167 -15
  577. package/docs/vi/packages/astro-intlayer/intlayer.md +76 -0
  578. package/docs/vi/packages/astro-intlayer/onRequest.md +76 -0
  579. package/docs/vi/packages/astro-intlayer/useDictionary.md +94 -0
  580. package/docs/vi/packages/astro-intlayer/useIntlayer.md +98 -0
  581. package/docs/vi/packages/astro-intlayer/useLocale.md +126 -0
  582. package/docs/vi/packages/remix-intlayer/Intlayer.md +55 -0
  583. package/docs/vi/packages/remix-intlayer/exports.md +80 -0
  584. package/docs/vi/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  585. package/docs/vi/packages/remix-intlayer/useDictionary.md +95 -0
  586. package/docs/vi/packages/remix-intlayer/useIntlayer.md +94 -0
  587. package/docs/vi/packages/remix-intlayer/useLocale.md +104 -0
  588. package/docs/vi/readme.md +2 -1
  589. package/docs/zh/how_works_intlayer.md +86 -14
  590. package/docs/zh/intlayer_visual_editor.md +7 -0
  591. package/docs/zh/intlayer_with_astro.md +61 -37
  592. package/docs/zh/intlayer_with_astro_preact.md +7 -0
  593. package/docs/zh/intlayer_with_astro_react.md +7 -0
  594. package/docs/zh/intlayer_with_astro_solid.md +7 -0
  595. package/docs/zh/intlayer_with_astro_svelte.md +7 -0
  596. package/docs/zh/intlayer_with_astro_vanilla.md +7 -0
  597. package/docs/zh/intlayer_with_astro_vue.md +7 -0
  598. package/docs/zh/intlayer_with_nextjs_14.md +7 -0
  599. package/docs/zh/intlayer_with_nextjs_15.md +7 -0
  600. package/docs/zh/intlayer_with_nextjs_16.md +7 -0
  601. package/docs/zh/intlayer_with_react_router_v7.md +7 -0
  602. package/docs/zh/intlayer_with_remix_3.md +74 -112
  603. package/docs/zh/intlayer_with_tanstack+solid.md +7 -0
  604. package/docs/zh/intlayer_with_tanstack.md +7 -0
  605. package/docs/zh/intlayer_with_vite+preact.md +7 -0
  606. package/docs/zh/intlayer_with_vite+react.md +7 -0
  607. package/docs/zh/intlayer_with_vite+solid.md +7 -0
  608. package/docs/zh/packages/astro-intlayer/exports.md +166 -14
  609. package/docs/zh/packages/astro-intlayer/intlayer.md +76 -0
  610. package/docs/zh/packages/astro-intlayer/onRequest.md +76 -0
  611. package/docs/zh/packages/astro-intlayer/useDictionary.md +95 -0
  612. package/docs/zh/packages/astro-intlayer/useIntlayer.md +98 -0
  613. package/docs/zh/packages/astro-intlayer/useLocale.md +126 -0
  614. package/docs/zh/packages/remix-intlayer/Intlayer.md +55 -0
  615. package/docs/zh/packages/remix-intlayer/exports.md +80 -0
  616. package/docs/zh/packages/remix-intlayer/intlayerMiddleware.md +55 -0
  617. package/docs/zh/packages/remix-intlayer/useDictionary.md +95 -0
  618. package/docs/zh/packages/remix-intlayer/useIntlayer.md +94 -0
  619. package/docs/zh/packages/remix-intlayer/useLocale.md +104 -0
  620. package/docs/zh/readme.md +2 -1
  621. package/package.json +6 -6
  622. package/src/generated/docs.entry.ts +223 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2026-09-09
3
- updatedAt: 2026-09-11
3
+ updatedAt: 2026-09-19
4
4
  title: "Remix 3 i18n - الدليل الكامل لترجمة تطبيقك"
5
5
  description: "وداعًا لـ i18next. دليل 2026 لإنشاء تطبيق Remix 3 متعدد اللغات (i18n). ترجم باستخدام وكلاء الذكاء الاصطناعي وحسّن حجم الحزمة و SEO والأداء."
6
6
  keywords:
@@ -19,6 +19,9 @@ slugs:
19
19
  applicationTemplate: https://github.com/aymericzip/intlayer-remix-3-template
20
20
  applicationShowcase: https://intlayer-remix-3-template.vercel.app
21
21
  history:
22
+ - version: 9.5.5
23
+ date: 2026-09-19
24
+ changes: "استخدام الوسيط البرمجي وخطافات remix-intlayer"
22
25
  - version: 9.5.0
23
26
  date: 2026-09-09
24
27
  changes: "التوثيق الأولي لـ Remix 3"
@@ -39,7 +42,7 @@ author: aymericzip
39
42
  - **`remix/node-fetch-server`**: محولات خادم لـ Node.js، مع دعم أصلي لـ Bun و Deno وبيئات الحافة (edge).
40
43
  - **`remix/cookie`**: تحليل وتسلسل ملفات تعريف الارتباط بطريقة مشفرة وآمنة.
41
44
 
42
- بالاقتران مع **Intlayer**، ستحصل على نظام تدويل متكامل يوفر أمانًا في وقت الترجمة، وترجمات آلية بالذكاء الاصطناعي، وعرضًا على الخادم بدون أعباء إضافية، وتوجيهًا سلسًا للغات.
45
+ بالاقتران مع **Intlayer** وحزمة **`remix-intlayer`**، وهي وسيط برمجي للغة بالإضافة إلى نفس خطافات `useIntlayer` / `useDictionary` / `useLocale` الموجودة في `react-intlayer`، والمرتبطة بسياق طلب Remix، ستحصل على نظام تدويل متكامل يوفر أماناً أثناء وقت التجميع، وترجمات مؤتمتة بالذكاء الاصطناعي، وعرضاً على الخادم بدون أعباء إضافية، وتوجيهاً سلساً للغات.
43
46
 
44
47
  ## جدول المحتويات
45
48
 
@@ -52,7 +55,7 @@ author: aymericzip
52
55
  <AccordionGroup>
53
56
  <Accordion header="تغطية كاملة لـ Remix 3 ومعايير الويب">
54
57
 
55
- تم تصميم Intlayer للعمل بسلاسة مع معايير الويب (`Request` و `Response` و `Headers` و `URL`). يتكامل بسهولة مع موجه Fetch في Remix 3 من خلال برمجيات وسيطة خفيفة، حيث يستخرج اللغات من مسارات URL أو ملفات تعريف الارتباط أو ترويسات `Accept-Language` دون تقييدك ببيئة تشغيل معينة.
58
+ تم تصميم Intlayer للعمل بسلاسة مع معايير الويب (`Request` و `Response` و `Headers` و `URL`). يتم توصيل `remix-intlayer` بموجّه Fetch في Remix 3 كوسيط برمجي خفيف الوزن، حيث يستخرج اللغة من مسارات URL أو ملفات تعريف الارتباط أو ترويسات `Accept-Language` ويكشفها لبقية الطلب والمعالجات والواجهات ومكونات `remix/ui`، دون الحاجة إلى تمريرها يدوياً.
56
59
 
57
60
  </Accordion>
58
61
  <Accordion header="تصريحات محتوى آمنة من حيث النوع">
@@ -109,25 +112,26 @@ author: aymericzip
109
112
  <Steps>
110
113
  <Step number={1} title="تثبيت التبعيات">
111
114
 
112
- قم بتثبيت `intlayer` و `remix` (الإصدار 3) باستخدام مدير الحزم المفضل لديك:
115
+ قم بتثبيت `intlayer` و `remix-intlayer` و `remix` (الإصدار 3) باستخدام مدير الحزم المفضل لديك:
113
116
 
114
117
  ```bash packageManager="npm"
115
- npm install intlayer remix@next
118
+ npm install intlayer remix-intlayer remix@next
116
119
  ```
117
120
 
118
121
  ```bash packageManager="pnpm"
119
- pnpm add intlayer remix@next
122
+ pnpm add intlayer remix-intlayer remix@next
120
123
  ```
121
124
 
122
125
  ```bash packageManager="yarn"
123
- yarn add intlayer remix@next
126
+ yarn add intlayer remix-intlayer remix@next
124
127
  ```
125
128
 
126
129
  ```bash packageManager="bun"
127
- bun add intlayer remix@next
130
+ bun add intlayer remix-intlayer remix@next
128
131
  ```
129
132
 
130
133
  - **`intlayer`**: محرك التدويل الأساسي الذي يوفر إدارة التكوين، والتصريح عن القواميس (`t()`, `Dictionary`)، وأدوات CLI، ومفسر وقت التشغيل.
134
+ - **`remix-intlayer`**: تكامل Remix 3: وسيط الموجه `intlayer()` الذي يحدد لغة كل طلب، وخطافات `useIntlayer` و `useDictionary` و `useLocale` التي تقرأها في أي مكان لاحق.
131
135
  - **`remix`**: حزمة إطار عمل Remix 3 الموحدة التي تصدر `remix/router` و `remix/routes` و `remix/ui` و `remix/middleware/render` و `remix/node-fetch-server`.
132
136
 
133
137
  </Step>
@@ -239,65 +243,30 @@ bun x intlayer build
239
243
  يقوم هذا الأمر بتجميع المحتوى في دليل `.intlayer`، مما يتيح الإكمال التلقائي لـ TypeScript والبحث السريع في القواميس.
240
244
 
241
245
  </Step>
242
- <Step number={5} title="تنفيذ برمجية Intlayer الوسيطة">
243
-
244
- يوفر Remix 3 بنية برمجيات وسيطة تركيبية عبر `createRouter({ middleware: [...] })`.
245
-
246
- أنشئ برمجية Intlayer وسيطة تحلل لغة كل طلب وارد وفق الأولويات التالية:
247
-
248
- 1. بادئة مسار URL عبر `getLocaleFromPath` (مثال `/ar` أو `/fr`).
249
- 2. الأداة المساعدة `getLocale` من Intlayer، والتي تفاوض تلقائيًا عبر ملفات تعريف الارتباط (`INTLAYER_LOCALE`) والترويسات المخصصة (`x-intlayer-locale`) وترويسة `Accept-Language` القياسية واللغة الافتراضية `defaultLocale`.
250
-
251
- ```typescript fileName="src/middleware/intlayer.ts" codeFormat={["typescript", "esm"]}
252
- import {
253
- defaultLocale,
254
- getCookie,
255
- getLocale,
256
- getLocaleFromPath,
257
- type Locale,
258
- } from "intlayer";
259
- import { createContextKey, type Middleware } from "remix/router";
260
-
261
- /**
262
- * مفتاح سياق آمن من حيث النوع لاسترداد اللغة المحددة من RequestContext في Remix 3.
263
- */
264
- export const localeKey = createContextKey<Locale>(defaultLocale);
265
-
266
- /**
267
- * برمجية Intlayer الوسيطة لـ Remix 3.
268
- *
269
- * تحلل لغة الطلب وفق الأولوية التالية:
270
- * 1. بادئة مسار URL (مثل `/ar/...`) عبر `getLocaleFromPath`
271
- * 2. مفاوضة الترويسات والتخزين عبر `getLocale` (ملفات تعريف الارتباط، ترويسة مخصصة، Accept-Language، التراجع إلى defaultLocale)
272
- *
273
- * ترفق اللغة المحددة بـ RequestContext في Remix 3.
274
- */
275
- export const intlayer = (): Middleware => {
276
- return async (context, next) => {
277
- // الكشف عن المسار (/ar/about -> "ar", /about -> undefined)
278
- const pathLocale = getLocaleFromPath(context.url.pathname);
279
-
280
- if (pathLocale) {
281
- // إرفاق اللغة المحددة بسياق طلب Remix 3
282
- context.set(localeKey, pathLocale);
283
-
284
- return next();
285
- }
286
-
287
- const storedLocale = await getLocale({
288
- getHeader: (name) => context.headers.get(name),
289
- getCookie: (name) =>
290
- getCookie(name, context.headers.get("cookie") ?? undefined),
291
- });
292
-
293
- // إرفاق اللغة المحددة بسياق طلب Remix 3
294
- context.set(localeKey, storedLocale ?? defaultLocale);
295
-
296
- return next();
297
- };
298
- };
246
+ <Step number={5} title="إضافة وسيط Intlayer البرمجي">
247
+
248
+ يوفر Remix 3 مسار وسائط برمجية قابلاً للتكوين عبر `createRouter({ middleware: [...] })`.
249
+
250
+ توفر `remix-intlayer` الوسيط البرمجي `intlayer()`. لكل طلب وارد، يحدد اللغة باستخدام:
251
+
252
+ 1. عنوان URL، في كل وضع توجيه باستثناء `no-prefix`: بادئة المسار (مثال: `/ar` أو `/en`) أو معلمة البحث `?locale=`.
253
+ 2. اللغة المحفوظة بواسطة العميل: ملف تعريف ارتباط التخزين (`INTLAYER_LOCALE`) أو الترويسة المخصصة (`x-intlayer-locale`).
254
+ 3. تفاوض `Accept-Language` القياسي، مع الرجوع إلى `defaultLocale` المكون لديك.
255
+
256
+ يتم تخزين النتيجة في سياق طلب Remix كـ `context.intlayer` (أو `context.get(Intlayer)`)، مع `locale` و `defaultLocale` و `availableLocales`. ثم يشغّل الوسيط بقية الطلب داخل نطاق `AsyncLocalStorage` المرتبط بهذا السياق، مما يتيح لخطافات الحزمة قراءة اللغة بدون وسيطات، في معالجات المسارات والعروض ومكونات `remix/ui` على حد سواء:
257
+
258
+ ```typescript
259
+ import { useIntlayer, useLocale } from "remix-intlayer";
260
+
261
+ // في أي مكان بعد الوسيط البرمجي
262
+ const { locale, availableLocales } = useLocale();
263
+ const { title } = useIntlayer("home");
299
264
  ```
300
265
 
266
+ يعمل `useIntlayer("home", "fr")` أو `useIntlayer("faq", { item: 2 })` على تجاوز لغة الطلب لاستدعاء واحد، ويقرأ `useDictionary(homeContent)` قاموساً مستورداً بدلاً من المفتاح. خارج الطلب، ترجع الخطافات إلى اللغة الافتراضية.
267
+
268
+ > يُعد الوسيط البرمجي أيضاً قواميس Intlayer عند بدء تشغيل الخادم، لذلك لن يؤدي فقدان `intlayer build` إلى ترك السجل فارغاً.
269
+
301
270
  </Step>
302
271
  <Step number={6} title="تعريف مسارات آمنة من حيث النوع">
303
272
 
@@ -327,20 +296,21 @@ routes.localizedHome.href({ locale: "ar" }); // "/ar"
327
296
 
328
297
  يقدم Remix 3 واجهة المستخدم باستخدام مكونات JSX من `remix/ui`. المكون عبارة عن **دالة إعداد** تستقبل `Handle` وتعيد **دالة عرض**. يتم تشغيل الإعداد مرة واحدة لكل نسخة، ويعمل العرض مع كل تحديث، وتُقرأ الخصائص عبر `handle.props`.
329
298
 
330
- ابدأ بغلاف `Document` مشترك يحدد سمات `<html lang="..." dir="...">` بناءً على اللغة المحددة:
299
+ ابدأ بهيكل `Document` مشترك يحدد سمات `<html lang="..." dir="...">` من اللغة المحددة بواسطة الوسيط البرمجي:
331
300
 
332
301
  ```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
333
- import { getHTMLTextDir, type Locale } from "intlayer";
302
+ import { getHTMLTextDir } from "intlayer";
303
+ import { useLocale } from "remix-intlayer";
334
304
  import type { Handle, RemixNode } from "remix/ui";
335
305
 
336
306
  type DocumentProps = {
337
- locale: Locale;
338
307
  title: string;
339
308
  children?: RemixNode;
340
309
  };
341
310
 
342
311
  export const Document = (handle: Handle<DocumentProps>) => () => {
343
- const { locale, title, children } = handle.props;
312
+ const { title, children } = handle.props;
313
+ const { locale } = useLocale();
344
314
 
345
315
  return (
346
316
  <html lang={locale} dir={getHTMLTextDir(locale)}>
@@ -355,47 +325,40 @@ export const Document = (handle: Handle<DocumentProps>) => () => {
355
325
  };
356
326
  ```
357
327
 
358
- ثم أنشئ الصفحة الرئيسية. حيث تستخرج القاموس المترجم باستخدام `getIntlayer` وتعرض مبدل اللغة:
328
+ ثم أنشئ الصفحة الرئيسية. تقرأ القاموس المترجم باستخدام `useIntlayer` وتعرض محوّل لغات:
359
329
 
360
330
  ```tsx fileName="src/views/home.tsx" codeFormat={["typescript", "esm"]}
361
- import {
362
- getIntlayer,
363
- getLocaleName,
364
- getLocalizedPath,
365
- type Locale,
366
- locales,
367
- } from "intlayer";
368
- import type { Handle } from "remix/ui";
369
- import { routes } from "../routes";
331
+ import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
332
+ import { useIntlayer, useLocale } from "remix-intlayer";
370
333
  import { Document } from "./document";
371
334
 
372
- type HomePageProps = {
373
- locale: Locale;
374
- };
375
-
376
- export const HomePage = (handle: Handle<HomePageProps>) => () => {
377
- const { locale } = handle.props;
378
- const home = getIntlayer("home", locale);
335
+ export const HomePage = () => () => {
336
+ const { locale, availableLocales } = useLocale();
337
+ const home = useIntlayer("home");
338
+ const pathWithoutLocale = getPathWithoutLocale();
379
339
 
380
340
  return (
381
- <Document locale={locale} title={home.title}>
341
+ <Document title={home.title}>
382
342
  <header>
383
343
  <nav aria-label="Languages">
384
344
  <span>{home.switchLanguage}</span>
385
- {locales.map((targetLocale) => {
386
- const isActive = targetLocale === locale;
387
-
388
- return (
389
- <a
390
- key={targetLocale}
391
- href={getLocalizedPath(routes.home.href(), targetLocale)}
392
- class={isActive ? "active" : undefined}
393
- aria-current={isActive ? "page" : undefined}
394
- >
395
- {getLocaleName(targetLocale, locale)}
396
- </a>
397
- );
398
- })}
345
+ <ul>
346
+ {availableLocales.map((localeItem) => {
347
+ const isActive = localeItem === locale;
348
+
349
+ return (
350
+ <li key={localeItem} class="p-1">
351
+ <a
352
+ href={getLocalizedUrl(pathWithoutLocale, localeItem)}
353
+ class={isActive ? "active" : undefined}
354
+ aria-current={isActive ? "page" : undefined}
355
+ >
356
+ {getLocaleName(localeItem, locale)}
357
+ </a>
358
+ </li>
359
+ );
360
+ })}
361
+ </ul>
399
362
  </nav>
400
363
  </header>
401
364
  <main>
@@ -407,7 +370,7 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
407
370
  };
408
371
  ```
409
372
 
410
- > صيغة JSX في Remix ليست React: لا توجد خطافات (Hooks)، وتُكتب `class` كما هي (تُقبل `className` أيضًا)، ويتم تشغيل إعادة العرض صراحةً باستخدام `handle.update()`. يتم تخطي القيم المضمنة تلقائيًا وبأمان.
373
+ > إن JSX في Remix ليس React: يُكتب `class` كما هو (ويُقبل `className` أيضاً)، ويتم تشغيل عمليات إعادة العرض بشكل صريح باستخدام `handle.update()`. يتم تخطي القيم المحشوة تلقائياً. خطافات Intlayer هي دوال عادية تقرأ نطاق الطلب، لذا يمكن استدعاؤها من دالة الإعداد أو دالة العرض على حد سواء.
411
374
 
412
375
  </Step>
413
376
  <Step number={8} title="ربط الموجه والخادم">
@@ -416,39 +379,37 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
416
379
 
417
380
  ```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
418
381
  import { isDeclaredLocale } from "intlayer";
382
+ import { intlayer } from "remix-intlayer";
419
383
  import { render } from "remix/middleware/render";
420
384
  import { createRouter } from "remix/router";
421
- import { intlayer, localeKey } from "./middleware/intlayer";
422
385
  import { routes } from "./routes";
423
386
  import { HomePage } from "./views/home";
424
387
 
425
- // 1. تهيئة الموجه باستخدام برمجيات Intlayer الوسيطة + العرض
388
+ // 1. Initialize router with Intlayer + render middleware
426
389
  export const router = createRouter({
427
390
  middleware: [intlayer(), render()],
428
391
  });
429
392
 
430
- // 2. تعيين معالجات المسار
393
+ // 2. Map route handlers
431
394
  router.map(routes, {
432
395
  actions: {
433
- // مسار اللغة الافتراضية
396
+ // Default locale route
434
397
  home(context) {
435
- const locale = context.get(localeKey);
436
- return context.render(<HomePage locale={locale} />);
398
+ return context.render(<HomePage />);
437
399
  },
438
400
 
439
- // مسار مترجم
401
+ // Localized route
440
402
  localizedHome(context) {
441
403
  if (!isDeclaredLocale(context.params.locale)) {
442
404
  return new Response("Not Found", { status: 404 });
443
405
  }
444
- const locale = context.get(localeKey);
445
- return context.render(<HomePage locale={locale} />);
406
+ return context.render(<HomePage />);
446
407
  },
447
408
  },
448
409
  });
449
410
  ```
450
411
 
451
- > يقبل `context.render` وسيطًا ثانيًا اختياريًا هو `ResponseInit`، على سبيل المثال: `context.render(<NotFoundPage locale={locale} />, { status: 404 })`.
412
+ > يقبل `context.render` معاملاً اختيارياً `ResponseInit` كوسيط ثانٍ، على سبيل المثال `context.render(<NotFoundPage />, { status: 404 })`. تظل اللغة المحددة قابلة للوصول من المعالج كـ `context.intlayer.locale`، على سبيل المثال لإنشاء استجابة `Response.json`.
452
413
 
453
414
  أخيرًا، قم بإتاحة الموجه من خلال معالج `fetch` قياسي. يعمل نفس الموجه بسلاسة على Node.js و Bun و Deno و Cloudflare Workers:
454
415
 
@@ -1257,6 +1257,13 @@ export const Route = createFileRoute("/sitemap.xml")({
1257
1257
 
1258
1258
  من خلال [المحرر المرئي (visual editor)](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)، الذي يفصل المحتوى ليتم تحديثه دون الحاجة لإعادة نشر الكود.
1259
1259
 
1260
+ </Question>
1261
+ <Question title="ما هي تكلفة المحرر المرئي؟ هل هو مبالغ فيه إذا لم أكن بحاجة إليه؟">
1262
+
1263
+ [المحرر المرئي لـ Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) ذو **تكلفة معدومة** على تطبيقك إذا لم يتم إعداده. لا يتم تحميل المنطق الإضافي إلا إذا تم تمكينه صراحة وعند الحاجة فقط.
1264
+
1265
+ حتى في حال تمكينه، فإن التأثير خفيف للغاية (+5 كيلوبايت، يتم تحميلها ديناميكيًا فقط عند التنشيط) لأن الجزء الأكبر من المنطق تتم معالجته بواسطة محرر الخادم على [app.intlayer.org](https://app.intlayer.org) أو عبر حزمة `intlayer-editor`. إذا كنت بحاجة فقط إلى حل ترجمة بسيط دون تحرير مرئي، فإن Intlayer لا يضيف أي عبء على تطبيقك.
1266
+
1260
1267
  </Question>
1261
1268
  <Question title="هل Intlayer مجاني ومفتوح المصدر؟">
1262
1269
 
@@ -1323,6 +1323,13 @@ export const Route = createFileRoute("/sitemap.xml")({
1323
1323
 
1324
1324
  من خلال [المحرر المرئي (visual editor)](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)، الذي يفصل المحتوى ليتم تحديثه دون الحاجة لإعادة نشر الكود.
1325
1325
 
1326
+ </Question>
1327
+ <Question title="ما هي تكلفة المحرر المرئي؟ هل هو مبالغ فيه إذا لم أكن بحاجة إليه؟">
1328
+
1329
+ [المحرر المرئي لـ Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) ذو **تكلفة معدومة** على تطبيقك إذا لم يتم إعداده. لا يتم تحميل المنطق الإضافي إلا إذا تم تمكينه صراحة وعند الحاجة فقط.
1330
+
1331
+ حتى في حال تمكينه، فإن التأثير خفيف للغاية (+5 كيلوبايت، يتم تحميلها ديناميكيًا فقط عند التنشيط) لأن الجزء الأكبر من المنطق تتم معالجته بواسطة محرر الخادم على [app.intlayer.org](https://app.intlayer.org) أو عبر حزمة `intlayer-editor`. إذا كنت بحاجة فقط إلى حل ترجمة بسيط دون تحرير مرئي، فإن Intlayer لا يضيف أي عبء على تطبيقك.
1332
+
1326
1333
  </Question>
1327
1334
  <Question title="هل Intlayer مجاني ومفتوح المصدر؟">
1328
1335
 
@@ -1123,6 +1123,13 @@ console.log("SEO files generated successfully.");
1123
1123
 
1124
1124
  من خلال [المحرر المرئي (visual editor)](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)، الذي يفصل المحتوى ليتم تحديثه دون الحاجة لإعادة نشر الكود.
1125
1125
 
1126
+ </Question>
1127
+ <Question title="ما هي تكلفة المحرر المرئي؟ هل هو مبالغ فيه إذا لم أكن بحاجة إليه؟">
1128
+
1129
+ [المحرر المرئي لـ Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) ذو **تكلفة معدومة** على تطبيقك إذا لم يتم إعداده. لا يتم تحميل المنطق الإضافي إلا إذا تم تمكينه صراحة وعند الحاجة فقط.
1130
+
1131
+ حتى في حال تمكينه، فإن التأثير خفيف للغاية (+5 كيلوبايت، يتم تحميلها ديناميكيًا فقط عند التنشيط) لأن الجزء الأكبر من المنطق تتم معالجته بواسطة محرر الخادم على [app.intlayer.org](https://app.intlayer.org) أو عبر حزمة `intlayer-editor`. إذا كنت بحاجة فقط إلى حل ترجمة بسيط دون تحرير مرئي، فإن Intlayer لا يضيف أي عبء على تطبيقك.
1132
+
1126
1133
  </Question>
1127
1134
  <Question title="هل Intlayer مجاني ومفتوح المصدر؟">
1128
1135
 
@@ -1075,6 +1075,13 @@ console.log("SEO files generated successfully.");
1075
1075
 
1076
1076
  من خلال [المحرر المرئي (visual editor)](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)، الذي يفصل المحتوى ليتم تحديثه دون الحاجة لإعادة نشر الكود.
1077
1077
 
1078
+ </Question>
1079
+ <Question title="ما هي تكلفة المحرر المرئي؟ هل هو مبالغ فيه إذا لم أكن بحاجة إليه؟">
1080
+
1081
+ [المحرر المرئي لـ Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) ذو **تكلفة معدومة** على تطبيقك إذا لم يتم إعداده. لا يتم تحميل المنطق الإضافي إلا إذا تم تمكينه صراحة وعند الحاجة فقط.
1082
+
1083
+ حتى في حال تمكينه، فإن التأثير خفيف للغاية (+5 كيلوبايت، يتم تحميلها ديناميكيًا فقط عند التنشيط) لأن الجزء الأكبر من المنطق تتم معالجته بواسطة محرر الخادم على [app.intlayer.org](https://app.intlayer.org) أو عبر حزمة `intlayer-editor`. إذا كنت بحاجة فقط إلى حل ترجمة بسيط دون تحرير مرئي، فإن Intlayer لا يضيف أي عبء على تطبيقك.
1084
+
1078
1085
  </Question>
1079
1086
  <Question title="هل Intlayer مجاني ومفتوح المصدر؟">
1080
1087
 
@@ -824,6 +824,13 @@ console.log("SEO files generated successfully.");
824
824
 
825
825
  من خلال [المحرر المرئي (visual editor)](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)، الذي يفصل المحتوى ليتم تحديثه دون الحاجة لإعادة نشر الكود.
826
826
 
827
+ </Question>
828
+ <Question title="ما هي تكلفة المحرر المرئي؟ هل هو مبالغ فيه إذا لم أكن بحاجة إليه؟">
829
+
830
+ [المحرر المرئي لـ Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/intlayer_visual_editor.md) ذو **تكلفة معدومة** على تطبيقك إذا لم يتم إعداده. لا يتم تحميل المنطق الإضافي إلا إذا تم تمكينه صراحة وعند الحاجة فقط.
831
+
832
+ حتى في حال تمكينه، فإن التأثير خفيف للغاية (+5 كيلوبايت، يتم تحميلها ديناميكيًا فقط عند التنشيط) لأن الجزء الأكبر من المنطق تتم معالجته بواسطة محرر الخادم على [app.intlayer.org](https://app.intlayer.org) أو عبر حزمة `intlayer-editor`. إذا كنت بحاجة فقط إلى حل ترجمة بسيط دون تحرير مرئي، فإن Intlayer لا يضيف أي عبء على تطبيقك.
833
+
827
834
  </Question>
828
835
  <Question title="هل Intlayer مجاني ومفتوح المصدر؟">
829
836
 
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2026-01-21
3
- updatedAt: 2026-01-21
3
+ updatedAt: 2026-09-19
4
4
  title: توثيق حزمة astro-intlayer
5
- description: تكامل Astro مع Intlayer، يوفر إعداد التوجيه القائم على اللغة وإدارة القواميس.
5
+ description: تكامل Astro لـ Intlayer، يوفّر إعداد التوجيه المستند إلى اللغة، البرمجيات الوسيطة، الخطافات، متجر العميل، وإدارة القواميس.
6
6
  keywords:
7
7
  - astro-intlayer
8
8
  - astro
@@ -14,6 +14,9 @@ slugs:
14
14
  - astro-intlayer
15
15
  - exports
16
16
  history:
17
+ - version: 9.5.5
18
+ date: 2026-09-19
19
+ changes: "إضافة توثيق خطافات useIntlayer و useDictionary و useLocale والبرمجية الوسيطة وأدوات التنسيق"
17
20
  - version: 8.0.0
18
21
  date: 2026-01-21
19
22
  changes: "توثيق موحد لجميع الصادرات"
@@ -22,7 +25,7 @@ author: aymericzip
22
25
 
23
26
  # حزمة astro-intlayer
24
27
 
25
- توفر حزمة `astro-intlayer` الأدوات اللازمة لدمج Intlayer في تطبيقات Astro. تقوم بتكوين التوجيه القائم على اللغة وإدارة القواميس.
28
+ توفر حزمة `astro-intlayer` الأدوات اللازمة لدمج Intlayer في تطبيقات Astro. حيث تقوم بتهيئة التوجيه المستند إلى اللغة، وإدارة القواميس، وإعادة كتابة الصفحات أثناء البناء، وبرمجيات الطلب الوسيطة، والخطافات للوصول إلى المحتوى متعدد اللغات عبر مكونات `.astro` المعروضة على الخادم وسكربتات العميل.
26
29
 
27
30
  ## التثبيت
28
31
 
@@ -34,22 +37,171 @@ npm install astro-intlayer
34
37
 
35
38
  ### التكامل
36
39
 
37
- توفر حزمة `astro-intlayer` تكاملًا مع Astro لإعداد Intlayer في مشروعك.
40
+ توفر حزمة `astro-intlayer` تكامل Astro يقوم بإعداد Intlayer في مشروعك.
38
41
 
39
42
  استيراد:
40
43
 
41
44
  ```tsx
42
- import "astro-intlayer";
45
+ import { intlayer } from "astro-intlayer";
43
46
  ```
44
47
 
45
- أو إضافة إلى `astro.config.mjs`:
48
+ أو استيراد افتراضي في `astro.config.mjs`:
46
49
 
47
50
  ```ts
51
+ import { defineConfig } from "astro/config";
52
+ import intlayer from "astro-intlayer";
53
+
48
54
  export default defineConfig({
49
55
  integrations: [intlayer()],
50
56
  });
51
57
  ```
52
58
 
53
- | الدالة | الوصف |
54
- | ---------- | ------------------------------------------- |
55
- | `intlayer` | تكامل Astro يقوم بإعداد Intlayer في مشروعك. |
59
+ | الدالة | الوصف | المستند ذو الصلة |
60
+ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
61
+ | `intlayer` | تكامل Astro يجهز القواميس، ويهيئ إضافات Vite (الأسماء المستعارة، وكيل التوجيه، التقليم)، ويسجل تلقائيًا برمجية الطلب الوسيطة، ويُخرج الصفحات المعروضة مسبقًا عبر عناوين URL معاد كتابتها. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/astro-intlayer/intlayer.md) |
62
+
63
+ ### الخطافات (الخادم والعميل)
64
+
65
+ استيراد:
66
+
67
+ ```tsx
68
+ import { useIntlayer, useDictionary, useLocale } from "astro-intlayer";
69
+ ```
70
+
71
+ | الخطاف | الوصف | المستند ذو الصلة |
72
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
73
+ | `useIntlayer` | يختار قاموسًا واحدًا بواسطة مفتاحه ويُرجع محتواه المترجم. في واجهة `.astro`، يقرأ لغة الطلب من `Astro.locals`. وفي كود `<script>`، يقرأ من متجر العميل. | [useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/astro-intlayer/useIntlayer.md) |
74
+ | `useDictionary` | يحول كائن قاموس ويُرجع المحتوى للغة المحددة. يعمل في واجهة المكونات وسكربتات العميل. | [useDictionary](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/astro-intlayer/useDictionary.md) |
75
+ | `useLocale` | يُرجع اللغة الحالية، واللغة الافتراضية، واللغات المتاحة، ودالة لتحديث اللغة. | [useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/astro-intlayer/useLocale.md) |
76
+
77
+ ### البرمجية الوسيطة (astro-intlayer/middleware)
78
+
79
+ استيراد:
80
+
81
+ ```tsx
82
+ import { onRequest } from "astro-intlayer/middleware";
83
+ ```
84
+
85
+ | التصدير | النوع | الوصف | المستند ذو الصلة |
86
+ | ----------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
87
+ | `onRequest` | `MiddlewareHandler` | برمجية وسيطة لـ Astro تكتشف لغة الطلب وتربط `Astro.locals.intlayer`. يتم تسجيلها تلقائيًا بواسطة `intlayer()`، أو استيرادها يدويًا لدمجها. | [onRequest](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ar/packages/astro-intlayer/onRequest.md) |
88
+
89
+ ### الأدوات المساعدة
90
+
91
+ استيراد:
92
+
93
+ ```tsx
94
+ import { getIntlayerLocals } from "astro-intlayer";
95
+ ```
96
+
97
+ | الدالة | الوصف | المستند ذو الصلة |
98
+ | ------------------- | ------------------------------------------------------------------------------------------ | ---------------- |
99
+ | `getIntlayerLocals` | دالة مساعدة لاسترداد كائن `IntlayerLocals` الحالي من نطاق تخزين الطلب خارج `Astro.locals`. | - |
100
+
101
+ ### أدوات العميل (astro-intlayer/client)
102
+
103
+ استيراد:
104
+
105
+ ```tsx
106
+ import {
107
+ useIntlayer,
108
+ useDictionary,
109
+ useDictionaryDynamic,
110
+ useLocale,
111
+ useLocaleStorage,
112
+ useLocaleCookie,
113
+ getIntlayer,
114
+ getDictionary,
115
+ installIntlayer,
116
+ setLocaleInStorage,
117
+ setLocaleCookie,
118
+ localeInStorage,
119
+ localeCookie,
120
+ } from "astro-intlayer/client";
121
+ ```
122
+
123
+ عند استيرادها في المتصفح أو داخل وسوم `<script>` للعميل، يتم تعيين `astro-intlayer` تلقائيًا إلى `astro-intlayer/client` (المدعوم بواسطة `vanilla-intlayer`)، مما يوفر أدوات استرداد القواميس والاشتراك في المتجر وحفظ اللغة على جانب العميل.
124
+
125
+ ### أدوات التنسيق (astro-intlayer/format)
126
+
127
+ استيراد:
128
+
129
+ ```tsx
130
+ import {
131
+ useIntl,
132
+ useDate,
133
+ useNumber,
134
+ useCurrency,
135
+ usePercentage,
136
+ useRelativeTime,
137
+ useList,
138
+ useUnit,
139
+ useCompact,
140
+ } from "astro-intlayer/format";
141
+ ```
142
+
143
+ | الخطاف | الوصف |
144
+ | ----------------- | ---------------------------------------------------------------------------------------- |
145
+ | `useIntl` | يُرجع مثيل Intl مرتبطًا بلغة الطلب أو العميل مع إمكانيات التخزين المؤقت والاشتراك. |
146
+ | `useDate` | يُرجع دالة لتنسيق التاريخ مرتبطة مسبقًا باللغة الحالية (`Intl.DateTimeFormat`). |
147
+ | `useNumber` | يُرجع دالة لتنسيق الأرقام مرتبطة مسبقًا باللغة الحالية (`Intl.NumberFormat`). |
148
+ | `useCurrency` | يُرجع دالة لتنسيق العملة مرتبطة مسبقًا باللغة الحالية. |
149
+ | `usePercentage` | يُرجع دالة لتنسيق النسبة المئوية مرتبطة مسبقًا باللغة الحالية. |
150
+ | `useRelativeTime` | يُرجع دالة لتنسيق الوقت النسبي مرتبطة مسبقًا باللغة الحالية (`Intl.RelativeTimeFormat`). |
151
+ | `useList` | يُرجع دالة لتنسيق القوائم مرتبطة مسبقًا باللغة الحالية (`Intl.ListFormat`). |
152
+ | `useUnit` | يُرجع دالة لتنسيق الوحدات مرتبطة مسبقًا باللغة الحالية. |
153
+ | `useCompact` | يُرجع دالة لتنسيق الأرقام المدمجة مرتبطة مسبقًا باللغة الحالية (مثل `1.5K`). |
154
+
155
+ ### أدوات HTML (astro-intlayer/html)
156
+
157
+ استيراد:
158
+
159
+ ```tsx
160
+ import { renderHTML, useHTML, useHTMLRenderer } from "astro-intlayer/html";
161
+ ```
162
+
163
+ | التصدير | النوع | الوصف |
164
+ | ----------------- | ---------- | ------------------------------------------- |
165
+ | `renderHTML` | `Function` | دالة مساعدة مستقلة لعرض عُقد HTML. |
166
+ | `useHTML` | `Hook` | خطاف للحصول على سياق وإعدادات مزود HTML. |
167
+ | `useHTMLRenderer` | `Hook` | خطاف للحصول على دالة عرض HTML مهيأة مسبقًا. |
168
+
169
+ ### أدوات Markdown (astro-intlayer/markdown)
170
+
171
+ استيراد:
172
+
173
+ ```tsx
174
+ import {
175
+ compileMarkdown,
176
+ renderMarkdown,
177
+ parseMarkdown,
178
+ useMarkdown,
179
+ useMarkdownRenderer,
180
+ } from "astro-intlayer/markdown";
181
+ ```
182
+
183
+ | التصدير | النوع | الوصف |
184
+ | --------------------- | ---------- | ------------------------------------------------------------- |
185
+ | `compileMarkdown` | `Function` | يترجم سلاسل markdown إلى تمثيل منظم. |
186
+ | `renderMarkdown` | `Function` | يعرض محتوى markdown في عُقد إخراج. |
187
+ | `parseMarkdown` | `Function` | يحلل محتوى markdown الخام إلى شجرة بناء الجملة المجردة (AST). |
188
+ | `useMarkdown` | `Hook` | خطاف للحصول على سياق مزود markdown. |
189
+ | `useMarkdownRenderer` | `Hook` | خطاف للحصول على دالة عرض Markdown مهيأة مسبقًا. |
190
+
191
+ ### الأنواع
192
+
193
+ استيراد:
194
+
195
+ ```tsx
196
+ import type {
197
+ IntlayerLocals,
198
+ UseLocaleProps,
199
+ UseLocaleResult,
200
+ } from "astro-intlayer";
201
+ ```
202
+
203
+ | النوع | الوصف |
204
+ | ----------------- | --------------------------------------------------------------------------------------------------------- |
205
+ | `IntlayerLocals` | الكائن المرفق بـ `Astro.locals.intlayer` والذي يحتوي على `locale` و `defaultLocale` و `availableLocales`. |
206
+ | `UseLocaleProps` | خصائص التهيئة الاختيارية المقبولة بواسطة `useLocale()`. |
207
+ | `UseLocaleResult` | نوع القيمة المرجعة لـ `useLocale()`، والذي يوفر خصائص اللغة وطرق التحديث. |