@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 - Guide complet pour traduire votre application"
5
5
  description: "Oubliez i18next. Le guide 2026 pour créer une application Remix 3 multilingue (i18n). Traduisez avec des agents IA et optimisez la taille du bundle, le SEO et les performances."
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: "Utilisation du middleware et des hooks de remix-intlayer"
22
25
  - version: 9.5.0
23
26
  date: 2026-09-09
24
27
  changes: "Documentation initiale pour Remix 3"
@@ -39,7 +42,7 @@ Ce guide montre comment intégrer **Intlayer** pour une internationalisation flu
39
42
  - **`remix/node-fetch-server`** : Adaptateurs de serveur pour Node.js, avec support natif pour Bun, Deno et les runtimes edge.
40
43
  - **`remix/cookie`** : Analyse et sérialisation de cookies sécurisées par chiffrement.
41
44
 
42
- Associé à **Intlayer**, vous bénéficiez d'un système d'internationalisation complet offrant une sécurité au moment de la compilation, des traductions automatisées par IA, un rendu serveur sans surcharge et un routage fluide par locale.
45
+ Associé à **Intlayer** et au package **`remix-intlayer`**, un middleware de locale ainsi que les mêmes hooks `useIntlayer` / `useDictionary` / `useLocale` que `react-intlayer`, liés au contexte de requête de Remix, vous bénéficiez d'un système d'internationalisation complet offrant une sécurité au moment de la compilation, des traductions automatisées par IA, un rendu serveur sans surcharge et un routage fluide par locale.
43
46
 
44
47
  ## Table des matières
45
48
 
@@ -52,7 +55,7 @@ Comparé aux solutions traditionnelles telles que `i18next` ou aux chargeurs de
52
55
  <AccordionGroup>
53
56
  <Accordion header="Couverture complète de Remix 3 et des standards web">
54
57
 
55
- Intlayer est conçu pour fonctionner nativement avec les standards web (`Request`, `Response`, `Headers` et `URL`). Il s'intègre naturellement dans le Fetch router de Remix 3 via un middleware léger, extrayant les locales des chemins d'URL, des cookies ou des en-têtes `Accept-Language` sans dépendre d'un runtime spécifique.
58
+ Intlayer est conçu pour fonctionner nativement avec les standards web (`Request`, `Response`, `Headers` et `URL`). `remix-intlayer` s'intègre au Fetch router de Remix 3 sous la forme d'un middleware léger, extrayant la locale des chemins d'URL, des cookies ou des en-têtes `Accept-Language` et l'exposant au reste de la requête, handlers, vues et composants `remix/ui`, sans avoir à la transmettre manuellement ni dépendre d'un runtime spécifique.
56
59
 
57
60
  </Accordion>
58
61
  <Accordion header="Déclarations de contenu sécurisées par le typage">
@@ -109,25 +112,26 @@ Consultez le [Modèle d'Application](https://github.com/aymericzip/intlayer-remi
109
112
  <Steps>
110
113
  <Step number={1} title="Installer les dépendances">
111
114
 
112
- Installez `intlayer` et `remix` (version 3) à l'aide de votre gestionnaire de paquets préféré :
115
+ Installez `intlayer`, `remix-intlayer` et `remix` (version 3) à l'aide de votre gestionnaire de paquets préféré :
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`** : Moteur d'internationalisation de base gérant la configuration, la déclaration des dictionnaires (`t()`, `Dictionary`), les outils CLI et l'interpréteur de runtime.
134
+ - **`remix-intlayer`** : L'intégration Remix 3 : le middleware de routeur `intlayer()` qui résout la locale de chaque requête, et les hooks `useIntlayer`, `useDictionary` et `useLocale` qui la lisent n'importe où en aval.
131
135
  - **`remix`** : Package unifié du framework Remix 3 exportant `remix/router`, `remix/routes`, `remix/ui`, `remix/middleware/render` et `remix/node-fetch-server`.
132
136
 
133
137
  </Step>
@@ -236,87 +240,53 @@ bun x intlayer build
236
240
  Cette commande compile votre contenu dans le répertoire `.intlayer`, offrant une auto-complétion TypeScript complète et un accès rapide aux dictionnaires.
237
241
 
238
242
  </Step>
239
- <Step number={5} title="Implémenter le middleware Intlayer">
243
+ <Step number={5} title="Ajouter le middleware Intlayer">
240
244
 
241
245
  Remix 3 propose un pipeline de middlewares composable via `createRouter({ middleware: [...] })`.
242
246
 
243
- Créez un middleware Intlayer qui résout la locale de chaque requête entrante selon :
244
-
245
- 1. Le préfixe d'URL via `getLocaleFromPath` d'Intlayer (par exemple `/fr` ou `/es`).
246
- 2. L'utilitaire `getLocale` d'Intlayer, qui négocie automatiquement via les cookies de stockage (`INTLAYER_LOCALE`), les en-têtes personnalisés (`x-intlayer-locale`), l'en-tête standard `Accept-Language` et votre `defaultLocale`.
247
-
248
- ```typescript fileName="src/middleware/intlayer.ts" codeFormat={["typescript", "esm"]}
249
- import {
250
- defaultLocale,
251
- getCookie,
252
- getLocale,
253
- getLocaleFromPath,
254
- type Locale,
255
- } from "intlayer";
256
- import { createContextKey, type Middleware } from "remix/router";
257
-
258
- /**
259
- * Clé de contexte typée pour récupérer la locale résolue depuis le RequestContext de Remix 3.
260
- */
261
- export const localeKey = createContextKey<Locale>(defaultLocale);
262
-
263
- /**
264
- * Middleware Intlayer pour Remix 3.
265
- *
266
- * Résout la locale de la requête selon l'ordre de priorité suivant :
267
- * 1. Préfixe du chemin d'URL (ex. `/fr/...`) via `getLocaleFromPath`
268
- * 2. Négociation des en-têtes et du stockage via `getLocale` (cookie, en-tête personnalisé, négociation Accept-Language, repli sur defaultLocale)
269
- *
270
- * Attache la locale résolue au RequestContext de Remix 3.
271
- */
272
- export const intlayer = (): Middleware => {
273
- return async (context, next) => {
274
- // Détection du chemin (/fr/about -> "fr", /about -> undefined)
275
- const pathLocale = getLocaleFromPath(context.url.pathname);
276
-
277
- if (pathLocale) {
278
- // Attacher la locale résolue au contexte de requête Remix 3
279
- context.set(localeKey, pathLocale);
280
-
281
- return next();
282
- }
283
-
284
- const storedLocale = await getLocale({
285
- getHeader: (name) => context.headers.get(name),
286
- getCookie: (name) =>
287
- getCookie(name, context.headers.get("cookie") ?? undefined),
288
- });
289
-
290
- // Attacher la locale résolue au contexte de requête Remix 3
291
- context.set(localeKey, storedLocale ?? defaultLocale);
292
-
293
- return next();
294
- };
295
- };
247
+ `remix-intlayer` fournit le middleware `intlayer()`, le pendant Remix des proxies de `next-intlayer` et `vite-intlayer`. Pour chaque requête entrante, il :
248
+
249
+ 1. **Route la locale**, selon `routing.mode` (`prefix-no-default` par défaut). Une URL sans préfixe de locale est redirigée vers l'URL localisée de la locale détectée — le cookie de stockage (`INTLAYER_LOCALE`) ou l'en-tête personnalisé (`x-intlayer-locale`), puis la négociation standard `Accept-Language`, puis votre `defaultLocale` — à moins que cette locale ne nécessite pas de préfixe. Une URL préfixée telle que `/fr/about` est servie **depuis la route `/about`** en français, `/en/about` est redirigée vers `/about`, et les règles de réécriture `routing.rewrite` sont appliquées dans les deux sens (`/fr/about` → `/fr/a-propos`). Les ressources statiques et, dans les configurations avec `routing.domains`, les domaines de locale sont gérés de la même manière que dans les autres intégrations.
250
+ 2. **Résout la locale** dans le contexte de requête Remix sous `context.intlayer` (ou `context.get(Intlayer)`), avec `locale`, `defaultLocale` et `availableLocales`.
251
+ 3. **Persiste la locale** via le cookie / en-tête configuré, de sorte que les requêtes suivantes résolvent la même locale.
252
+
253
+ Parce que le préfixe de locale est supprimé avant la mise en correspondance du routeur, vos routes sont déclarées une seule fois, sans segment `:locale`, quel que soit le mode de routage. Le middleware exécute ensuite le reste de la requête dans une portée `AsyncLocalStorage` liée au contexte de requête, ce qui permet aux hooks du package de lire la locale sans aucun argument — aussi bien dans les gestionnaires de routes, les vues que les composants `remix/ui` :
254
+
255
+ ```typescript
256
+ import { useIntlayer, useLocale } from "remix-intlayer";
257
+
258
+ // N'importe où en aval du middleware
259
+ const { locale, availableLocales } = useLocale();
260
+ const { title } = useIntlayer("home");
296
261
  ```
297
262
 
263
+ `useIntlayer("home", "fr")` ou `useIntlayer("faq", { item: 2 })` surchargent la locale de la requête pour un appel, et `useDictionary(homeContent)` lit un dictionnaire importé au lieu d'une clé. En dehors d'une requête, les hooks se replient sur la locale par défaut.
264
+
265
+ > Le middleware prépare également les dictionnaires Intlayer au démarrage du serveur, évitant ainsi qu'un `intlayer build` manquant ne laisse le registre vide.
266
+
267
+ > Définissez `routing.enableProxy: false` dans `intlayer.config.ts` pour conserver uniquement la résolution de locale et gérer le routage vous-même. `intlayer({ ignore })` laisse intactes les requêtes correspondantes (un préfixe d'API, par exemple), et `intlayer({ isDevServer })` contrôle si la locale stockée pilote les redirections dans le mode automatique `enableProxy` par défaut.
268
+
298
269
  </Step>
299
270
  <Step number={6} title="Définir des routes typées">
300
271
 
301
- Définissez vos routes d'application à l'aide de `route()` issu de `remix/routes` :
272
+ Définissez vos routes d'application à l'aide de `route()` issu de `remix/routes`. Déclarez-les une seule fois, sans segment de locale — le middleware sert chaque locale à partir de ces routes :
302
273
 
303
274
  ```typescript fileName="src/routes.ts" codeFormat={["typescript", "esm"]}
304
275
  import { route } from "remix/routes";
305
276
 
306
277
  export const routes = route({
307
- // Route pour la locale par défaut
308
278
  home: "/",
309
-
310
- // Route localisée avec segment dynamique :locale
311
- localizedHome: "/:locale",
312
279
  });
313
280
  ```
314
281
 
315
- L'utilisation de `route()` garantit la génération d'URL typées dans toute votre application :
282
+ L'utilisation de `route()` garantit la génération d'URL typées dans toute votre application, et `getLocalizedPath` applique le mode de routage correspondant :
316
283
 
317
284
  ```typescript
285
+ import { getLocalizedPath } from "intlayer";
286
+
318
287
  routes.home.href(); // "/"
319
- routes.localizedHome.href({ locale: "fr" }); // "/fr"
288
+ getLocalizedPath(routes.home.href(), "fr"); // "/fr"
289
+ getLocalizedPath(routes.home.href(), "en"); // "/" (locale par défaut)
320
290
  ```
321
291
 
322
292
  </Step>
@@ -324,20 +294,21 @@ routes.localizedHome.href({ locale: "fr" }); // "/fr"
324
294
 
325
295
  Remix 3 effectue le rendu de l'interface utilisateur avec des composants JSX issus de `remix/ui`. Un composant est une **fonction de setup** qui reçoit un `Handle` et renvoie une **fonction de rendu**. Le setup s'exécute une seule fois par instance, le rendu s'exécute à chaque mise à jour, et les props sont lues via `handle.props`.
326
296
 
327
- Commencez par un shell partagé `Document` qui applique les attributs `<html lang="..." dir="...">` à partir de la locale résolue :
297
+ Commencez par un shell partagé `Document` qui applique les attributs `<html lang="..." dir="...">` à partir de la locale résolue par le middleware :
328
298
 
329
299
  ```tsx fileName="src/views/document.tsx" codeFormat={["typescript", "esm"]}
330
- import { getHTMLTextDir, type Locale } from "intlayer";
300
+ import { getHTMLTextDir } from "intlayer";
301
+ import { useLocale } from "remix-intlayer";
331
302
  import type { Handle, RemixNode } from "remix/ui";
332
303
 
333
304
  type DocumentProps = {
334
- locale: Locale;
335
305
  title: string;
336
306
  children?: RemixNode;
337
307
  };
338
308
 
339
309
  export const Document = (handle: Handle<DocumentProps>) => () => {
340
- const { locale, title, children } = handle.props;
310
+ const { title, children } = handle.props;
311
+ const { locale } = useLocale();
341
312
 
342
313
  return (
343
314
  <html lang={locale} dir={getHTMLTextDir(locale)}>
@@ -352,47 +323,40 @@ export const Document = (handle: Handle<DocumentProps>) => () => {
352
323
  };
353
324
  ```
354
325
 
355
- Créez ensuite la page d'accueil. Elle extrait le dictionnaire localisé avec `getIntlayer` et affiche un sélecteur de langue :
326
+ Créez ensuite la page d'accueil. Elle lit le dictionnaire localisé avec `useIntlayer` et affiche un sélecteur de langue :
356
327
 
357
328
  ```tsx fileName="src/views/home.tsx" codeFormat={["typescript", "esm"]}
358
- import {
359
- getIntlayer,
360
- getLocaleName,
361
- getLocalizedPath,
362
- type Locale,
363
- locales,
364
- } from "intlayer";
365
- import type { Handle } from "remix/ui";
366
- import { routes } from "../routes";
329
+ import { getLocaleName, getLocalizedUrl, getPathWithoutLocale } from "intlayer";
330
+ import { useIntlayer, useLocale } from "remix-intlayer";
367
331
  import { Document } from "./document";
368
332
 
369
- type HomePageProps = {
370
- locale: Locale;
371
- };
372
-
373
- export const HomePage = (handle: Handle<HomePageProps>) => () => {
374
- const { locale } = handle.props;
375
- const home = getIntlayer("home", locale);
333
+ export const HomePage = () => () => {
334
+ const { locale, availableLocales } = useLocale();
335
+ const home = useIntlayer("home");
336
+ const pathWithoutLocale = getPathWithoutLocale();
376
337
 
377
338
  return (
378
- <Document locale={locale} title={home.title}>
339
+ <Document title={home.title}>
379
340
  <header>
380
341
  <nav aria-label="Languages">
381
342
  <span>{home.switchLanguage}</span>
382
- {locales.map((targetLocale) => {
383
- const isActive = targetLocale === locale;
384
-
385
- return (
386
- <a
387
- key={targetLocale}
388
- href={getLocalizedPath(routes.home.href(), targetLocale)}
389
- class={isActive ? "active" : undefined}
390
- aria-current={isActive ? "page" : undefined}
391
- >
392
- {getLocaleName(targetLocale, locale)}
393
- </a>
394
- );
395
- })}
343
+ <ul>
344
+ {availableLocales.map((localeItem) => {
345
+ const isActive = localeItem === locale;
346
+
347
+ return (
348
+ <li key={localeItem} class="p-1">
349
+ <a
350
+ href={getLocalizedUrl(pathWithoutLocale, localeItem)}
351
+ class={isActive ? "active" : undefined}
352
+ aria-current={isActive ? "page" : undefined}
353
+ >
354
+ {getLocaleName(localeItem, locale)}
355
+ </a>
356
+ </li>
357
+ );
358
+ })}
359
+ </ul>
396
360
  </nav>
397
361
  </header>
398
362
  <main>
@@ -404,7 +368,7 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
404
368
  };
405
369
  ```
406
370
 
407
- > Le JSX de Remix n'est pas React : il n'y a pas de hooks, `class` s'écrit tel quel (`className` est également accepté) et les nouveaux rendus sont déclenchés explicitement avec `handle.update()`. Les valeurs interpolées sont automatiquement échappées.
371
+ > Le JSX de Remix n'est pas React : `class` s'écrit tel quel (`className` est également accepté) et les nouveaux rendus sont déclenchés explicitement avec `handle.update()`. Les valeurs interpolées sont automatiquement échappées. Les hooks Intlayer sont de simples fonctions lisant la portée de la requête, ils peuvent donc être appelés aussi bien depuis la fonction de setup que depuis la fonction de rendu.
408
372
 
409
373
  </Step>
410
374
  <Step number={8} title="Connecter le routeur et le serveur">
@@ -412,10 +376,9 @@ export const HomePage = (handle: Handle<HomePageProps>) => () => {
412
376
  Ajoutez le middleware `render()` de `remix/middleware/render` aux côtés du middleware Intlayer. Il installe `context.render(node, init)` sur chaque requête, ce qui diffuse l'arbre JSX dans une `Response` HTML (en ajoutant `<!DOCTYPE html>` au début et en définissant l'en-tête `Content-Type`) :
413
377
 
414
378
  ```tsx fileName="src/router.tsx" codeFormat={["typescript", "esm"]}
415
- import { isDeclaredLocale } from "intlayer";
379
+ import { intlayer } from "remix-intlayer";
416
380
  import { render } from "remix/middleware/render";
417
381
  import { createRouter } from "remix/router";
418
- import { intlayer, localeKey } from "./middleware/intlayer";
419
382
  import { routes } from "./routes";
420
383
  import { HomePage } from "./views/home";
421
384
 
@@ -424,28 +387,17 @@ export const router = createRouter({
424
387
  middleware: [intlayer(), render()],
425
388
  });
426
389
 
427
- // 2. Associer les gestionnaires de route
390
+ // 2. Associer les gestionnaires de route — `/`, `/fr`, `/es`… atteignent tous `home`
428
391
  router.map(routes, {
429
392
  actions: {
430
- // Route de locale par défaut
431
393
  home(context) {
432
- const locale = context.get(localeKey);
433
- return context.render(<HomePage locale={locale} />);
434
- },
435
-
436
- // Route localisée
437
- localizedHome(context) {
438
- if (!isDeclaredLocale(context.params.locale)) {
439
- return new Response("Not Found", { status: 404 });
440
- }
441
- const locale = context.get(localeKey);
442
- return context.render(<HomePage locale={locale} />);
394
+ return context.render(<HomePage />);
443
395
  },
444
396
  },
445
397
  });
446
398
  ```
447
399
 
448
- > `context.render` accepte un `ResponseInit` optionnel comme second argument, par ex. `context.render(<NotFoundPage locale={locale} />, { status: 404 })`.
400
+ > `context.render` accepte un `ResponseInit` optionnel comme second argument, par ex. `context.render(<NotFoundPage />, { status: 404 })`. La locale résolue reste accessible depuis le gestionnaire via `context.intlayer.locale`, par exemple pour construire une réponse `Response.json`.
449
401
 
450
402
  Enfin, exposez le routeur via un gestionnaire `fetch` standard. Le même routeur fonctionne sur Node.js, Bun, Deno et Cloudflare Workers :
451
403
 
@@ -1257,6 +1257,13 @@ Oui : les [formes plurielles](https://github.com/aymericzip/intlayer/blob/main/d
1257
1257
 
1258
1258
  Via l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md), qui tourne sur votre propre infrastructure et permet à quiconque de modifier le texte sur place sur l'application en cours d'exécution, ou le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md), qui externalise le contenu afin qu'il puisse changer sans déploiement.
1259
1259
 
1260
+ </Question>
1261
+ <Question title="Quel est le coût de l'éditeur visuel ? Est-il superflu si je n'en ai pas besoin ?">
1262
+
1263
+ L'[éditeur visuel Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) a un **coût nul** sur votre application s'il n'est pas configuré. La logique supplémentaire n'est chargée que si elle est explicitement activée et nécessaire.
1264
+
1265
+ Même s'il est activé, le coût est extrêmement léger (+5 ko, chargé dynamiquement uniquement lorsqu'il est activé), car l'essentiel de la logique est géré par l'éditeur serveur sur [app.intlayer.org](https://app.intlayer.org) ou via le package `intlayer-editor`. Si vous avez seulement besoin d'une solution de traduction simple sans édition visuelle, Intlayer n'ajoute aucune surcharge à votre application.
1266
+
1260
1267
  </Question>
1261
1268
  <Question title="Intlayer est-il gratuit et open source ?">
1262
1269
 
@@ -1331,6 +1331,13 @@ Oui. Les déclarations de contenu prennent en charge les [formes plurielles](htt
1331
1331
 
1332
1332
  Via l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md), qui tourne sur votre propre infrastructure et permet à quiconque de modifier le texte sur place sur le site en cours d'exécution, ou le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md), qui externalise le contenu afin qu'il puisse changer sans déploiement.
1333
1333
 
1334
+ </Question>
1335
+ <Question title="Quel est le coût de l'éditeur visuel ? Est-il superflu si je n'en ai pas besoin ?">
1336
+
1337
+ L'[éditeur visuel Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) a un **coût nul** sur votre application s'il n'est pas configuré. La logique supplémentaire n'est chargée que si elle est explicitement activée et nécessaire.
1338
+
1339
+ Même s'il est activé, le coût est extrêmement léger (+5 ko, chargé dynamiquement uniquement lorsqu'il est activé), car l'essentiel de la logique est géré par l'éditeur serveur sur [app.intlayer.org](https://app.intlayer.org) ou via le package `intlayer-editor`. Si vous avez seulement besoin d'une solution de traduction simple sans édition visuelle, Intlayer n'ajoute aucune surcharge à votre application.
1340
+
1334
1341
  </Question>
1335
1342
  <Question title="Intlayer est-il gratuit et open source ?">
1336
1343
 
@@ -1121,6 +1121,13 @@ Oui : les [formes plurielles](https://github.com/aymericzip/intlayer/blob/main/d
1121
1121
 
1122
1122
  Via l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md), qui tourne sur votre propre infrastructure et permet à quiconque de modifier le texte sur place sur l'application en cours d'exécution, ou le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md), qui externalise le contenu afin qu'il puisse changer sans déploiement.
1123
1123
 
1124
+ </Question>
1125
+ <Question title="Quel est le coût de l'éditeur visuel ? Est-il superflu si je n'en ai pas besoin ?">
1126
+
1127
+ L'[éditeur visuel Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) a un **coût nul** sur votre application s'il n'est pas configuré. La logique supplémentaire n'est chargée que si elle est explicitement activée et nécessaire.
1128
+
1129
+ Même s'il est activé, le coût est extrêmement léger (+5 ko, chargé dynamiquement uniquement lorsqu'il est activé), car l'essentiel de la logique est géré par l'éditeur serveur sur [app.intlayer.org](https://app.intlayer.org) ou via le package `intlayer-editor`. Si vous avez seulement besoin d'une solution de traduction simple sans édition visuelle, Intlayer n'ajoute aucune surcharge à votre application.
1130
+
1124
1131
  </Question>
1125
1132
  <Question title="Intlayer est-il gratuit et open source ?">
1126
1133
 
@@ -1065,6 +1065,13 @@ Oui : les [formes plurielles](https://github.com/aymericzip/intlayer/blob/main/d
1065
1065
 
1066
1066
  Via l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md), auto-hébergé, qui permet à quiconque de modifier le texte sur place sur l'application en cours d'exécution, ou le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md) pour le contenu qui doit changer sans déploiement.
1067
1067
 
1068
+ </Question>
1069
+ <Question title="Quel est le coût de l'éditeur visuel ? Est-il superflu si je n'en ai pas besoin ?">
1070
+
1071
+ L'[éditeur visuel Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) a un **coût nul** sur votre application s'il n'est pas configuré. La logique supplémentaire n'est chargée que si elle est explicitement activée et nécessaire.
1072
+
1073
+ Même s'il est activé, le coût est extrêmement léger (+5 ko, chargé dynamiquement uniquement lorsqu'il est activé), car l'essentiel de la logique est géré par l'éditeur serveur sur [app.intlayer.org](https://app.intlayer.org) ou via le package `intlayer-editor`. Si vous avez seulement besoin d'une solution de traduction simple sans édition visuelle, Intlayer n'ajoute aucune surcharge à votre application.
1074
+
1068
1075
  </Question>
1069
1076
  <Question title="Intlayer est-il gratuit et open source ?">
1070
1077
 
@@ -820,6 +820,13 @@ Oui : les [formes plurielles](https://github.com/aymericzip/intlayer/blob/main/d
820
820
 
821
821
  Via l'[éditeur visuel](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md), qui tourne sur votre propre infrastructure et permet à quiconque de modifier le texte sur place sur l'application en cours d'exécution, ou le [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_CMS.md), qui externalise le contenu afin qu'il puisse changer sans déploiement.
822
822
 
823
+ </Question>
824
+ <Question title="Quel est le coût de l'éditeur visuel ? Est-il superflu si je n'en ai pas besoin ?">
825
+
826
+ L'[éditeur visuel Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/intlayer_visual_editor.md) a un **coût nul** sur votre application s'il n'est pas configuré. La logique supplémentaire n'est chargée que si elle est explicitement activée et nécessaire.
827
+
828
+ Même s'il est activé, le coût est extrêmement léger (+5 ko, chargé dynamiquement uniquement lorsqu'il est activé), car l'essentiel de la logique est géré par l'éditeur serveur sur [app.intlayer.org](https://app.intlayer.org) ou via le package `intlayer-editor`. Si vous avez seulement besoin d'une solution de traduction simple sans édition visuelle, Intlayer n'ajoute aucune surcharge à votre application.
829
+
823
830
  </Question>
824
831
  <Question title="Intlayer est-il gratuit et open source ?">
825
832
 
@@ -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: Documentation du paquet astro-intlayer
5
- description: Intégration Astro pour Intlayer, fournissant la configuration pour le routage basé sur la locale et la gestion des dictionnaires.
5
+ description: Intégration Astro pour Intlayer, fournissant la configuration pour le routage basé sur la locale, le middleware, les hooks, le store client et la gestion des dictionnaires.
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: "Ajout de la documentation des hooks useIntlayer, useDictionary, useLocale, du middleware et des formateurs"
17
20
  - version: 8.0.0
18
21
  date: 2026-01-21
19
22
  changes: "Documentation unifiée pour tous les exports"
@@ -22,7 +25,7 @@ author: aymericzip
22
25
 
23
26
  # Paquet astro-intlayer
24
27
 
25
- Le paquet `astro-intlayer` fournit les outils nécessaires pour intégrer Intlayer dans des applications Astro. Il configure le routage par locale et la gestion des dictionnaires.
28
+ Le paquet `astro-intlayer` fournit les outils nécessaires pour intégrer Intlayer dans des applications Astro. Il configure le routage basé sur la locale, la gestion des dictionnaires, la réécriture des pages lors du build, le middleware de requête et les hooks pour accéder au contenu multilingue à la fois dans les composants `.astro` rendus côté serveur et dans les scripts côté client.
26
29
 
27
30
  ## Installation
28
31
 
@@ -34,22 +37,171 @@ npm install astro-intlayer
34
37
 
35
38
  ### Intégration
36
39
 
37
- Le package `astro-intlayer` fournit une intégration Astro pour configurer Intlayer dans votre projet.
40
+ Le paquet `astro-intlayer` fournit une intégration Astro qui configure Intlayer dans votre projet.
38
41
 
39
- Importer :
42
+ Importation :
40
43
 
41
44
  ```tsx
42
- import "astro-intlayer";
45
+ import { intlayer } from "astro-intlayer";
43
46
  ```
44
47
 
45
- ou en l'ajoutant à `astro.config.mjs` :
48
+ ou importation par défaut dans `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
- | Fonction | Description |
54
- | ---------- | ----------------------------------------------------------- |
55
- | `intlayer` | Intégration Astro qui configure Intlayer dans votre projet. |
59
+ | Fonction | Description | Documentation associée |
60
+ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
61
+ | `intlayer` | Intégration Astro qui prépare les dictionnaires, configure les plugins Vite (alias, proxy de routage, élagage), enregistre automatiquement le middleware de requête et émet des pages pré-rendues aux URL réécrites. | [intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/astro-intlayer/intlayer.md) |
62
+
63
+ ### Hooks (Serveur et Client)
64
+
65
+ Importation :
66
+
67
+ ```tsx
68
+ import { useIntlayer, useDictionary, useLocale } from "astro-intlayer";
69
+ ```
70
+
71
+ | Hook | Description | Documentation associée |
72
+ | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
73
+ | `useIntlayer` | Sélectionne un dictionnaire par sa clé et retourne son contenu localisé. Dans le frontmatter `.astro`, il lit la locale de requête depuis `Astro.locals`. Dans `<script>`, il lit depuis le store client. | [useIntlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/astro-intlayer/useIntlayer.md) |
74
+ | `useDictionary` | Transforme un objet dictionnaire et retourne le contenu pour la locale résolue. Fonctionne dans le frontmatter et les scripts client. | [useDictionary](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/astro-intlayer/useDictionary.md) |
75
+ | `useLocale` | Retourne la locale actuelle, la locale par défaut, les locales disponibles et une fonction pour mettre à jour la locale. | [useLocale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/astro-intlayer/useLocale.md) |
76
+
77
+ ### Middleware (astro-intlayer/middleware)
78
+
79
+ Importation :
80
+
81
+ ```tsx
82
+ import { onRequest } from "astro-intlayer/middleware";
83
+ ```
84
+
85
+ | Export | Type | Description | Documentation associée |
86
+ | ----------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
87
+ | `onRequest` | `MiddlewareHandler` | Middleware Astro qui détecte la locale de la requête et attache `Astro.locals.intlayer`. Enregistré automatiquement par `intlayer()`, ou importé manuellement pour composer. | [onRequest](https://github.com/aymericzip/intlayer/blob/main/docs/docs/fr/packages/astro-intlayer/onRequest.md) |
88
+
89
+ ### Utilitaires
90
+
91
+ Importation :
92
+
93
+ ```tsx
94
+ import { getIntlayerLocals } from "astro-intlayer";
95
+ ```
96
+
97
+ | Fonction | Description | Documentation associée |
98
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
99
+ | `getIntlayerLocals` | Fonction d'aide pour récupérer l'objet `IntlayerLocals` actuel depuis la portée de stockage de requête hors d'Astro.locals. | - |
100
+
101
+ ### Utilitaires Client (astro-intlayer/client)
102
+
103
+ Importation :
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
+ Lorsqu'il est importé dans le navigateur ou à l'intérieur de balises client `<script>`, `astro-intlayer` bascule automatiquement vers `astro-intlayer/client` (alimenté par `vanilla-intlayer`), fournissant les getters de dictionnaire côté client, les abonnements au store et les outils de persistance de locale.
124
+
125
+ ### Formateurs (astro-intlayer/format)
126
+
127
+ Importation :
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
+ | Hook | Description |
144
+ | ----------------- | --------------------------------------------------------------------------------------------------------------- |
145
+ | `useIntl` | Retourne une instance Intl liée à la locale de requête ou client avec fonctionnalités de cache et d'abonnement. |
146
+ | `useDate` | Retourne une fonction de formatage de date pré-liée à la locale actuelle (`Intl.DateTimeFormat`). |
147
+ | `useNumber` | Retourne une fonction de formatage de nombre pré-liée à la locale actuelle (`Intl.NumberFormat`). |
148
+ | `useCurrency` | Retourne une fonction de formatage de devise pré-liée à la locale actuelle. |
149
+ | `usePercentage` | Retourne une fonction de formatage de pourcentage pré-liée à la locale actuelle. |
150
+ | `useRelativeTime` | Retourne une fonction de formatage de temps relatif pré-liée à la locale actuelle (`Intl.RelativeTimeFormat`). |
151
+ | `useList` | Retourne une fonction de formatage de liste pré-liée à la locale actuelle (`Intl.ListFormat`). |
152
+ | `useUnit` | Retourne une fonction de formatage d'unité pré-liée à la locale actuelle. |
153
+ | `useCompact` | Retourne une fonction de formatage de nombre compact pré-liée à la locale actuelle (ex. `1.5K`). |
154
+
155
+ ### Utilitaires HTML (astro-intlayer/html)
156
+
157
+ Importation :
158
+
159
+ ```tsx
160
+ import { renderHTML, useHTML, useHTMLRenderer } from "astro-intlayer/html";
161
+ ```
162
+
163
+ | Export | Type | Description |
164
+ | ----------------- | ---------- | ---------------------------------------------------------------------- |
165
+ | `renderHTML` | `Function` | Fonction utilitaire autonome pour rendre les nœuds HTML. |
166
+ | `useHTML` | `Hook` | Hook pour obtenir le contexte du fournisseur HTML et sa configuration. |
167
+ | `useHTMLRenderer` | `Hook` | Hook pour obtenir une fonction de rendu HTML préconfigurée. |
168
+
169
+ ### Utilitaires Markdown (astro-intlayer/markdown)
170
+
171
+ Importation :
172
+
173
+ ```tsx
174
+ import {
175
+ compileMarkdown,
176
+ renderMarkdown,
177
+ parseMarkdown,
178
+ useMarkdown,
179
+ useMarkdownRenderer,
180
+ } from "astro-intlayer/markdown";
181
+ ```
182
+
183
+ | Export | Type | Description |
184
+ | --------------------- | ---------- | --------------------------------------------------------------- |
185
+ | `compileMarkdown` | `Function` | Compile des chaînes markdown en représentation structurée. |
186
+ | `renderMarkdown` | `Function` | Rend le contenu markdown en nœuds de sortie. |
187
+ | `parseMarkdown` | `Function` | Analyse le contenu markdown brut en un AST. |
188
+ | `useMarkdown` | `Hook` | Hook pour obtenir le contexte du fournisseur markdown. |
189
+ | `useMarkdownRenderer` | `Hook` | Hook pour obtenir une fonction de rendu Markdown préconfigurée. |
190
+
191
+ ### Types
192
+
193
+ Importation :
194
+
195
+ ```tsx
196
+ import type {
197
+ IntlayerLocals,
198
+ UseLocaleProps,
199
+ UseLocaleResult,
200
+ } from "astro-intlayer";
201
+ ```
202
+
203
+ | Type | Description |
204
+ | ----------------- | -------------------------------------------------------------------------------------------------------- |
205
+ | `IntlayerLocals` | L'objet attaché à `Astro.locals.intlayer` contenant `locale`, `defaultLocale` et `availableLocales`. |
206
+ | `UseLocaleProps` | Propriétés de configuration facultatives acceptées par `useLocale()`. |
207
+ | `UseLocaleResult` | Le type de retour de `useLocale()`, fournissant les propriétés de locale et les méthodes de mise à jour. |