@intlayer/docs 7.5.6 → 7.5.8

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 (534) hide show
  1. package/blog/ar/intlayer_with_i18next.md +8 -4
  2. package/blog/ar/intlayer_with_next-i18next.md +8 -4
  3. package/blog/ar/intlayer_with_next-intl.md +8 -4
  4. package/blog/ar/intlayer_with_react-i18next.md +8 -4
  5. package/blog/ar/intlayer_with_react-intl.md +8 -4
  6. package/blog/ar/intlayer_with_vue-i18n.md +8 -4
  7. package/blog/de/intlayer_with_i18next.md +8 -4
  8. package/blog/de/intlayer_with_next-i18next.md +8 -4
  9. package/blog/de/intlayer_with_next-intl.md +8 -4
  10. package/blog/de/intlayer_with_react-i18next.md +8 -4
  11. package/blog/de/intlayer_with_react-intl.md +8 -4
  12. package/blog/de/intlayer_with_vue-i18n.md +8 -4
  13. package/blog/en/intlayer_with_i18next.md +8 -4
  14. package/blog/en/intlayer_with_next-i18next.md +8 -4
  15. package/blog/en/intlayer_with_next-intl.md +8 -4
  16. package/blog/en/intlayer_with_react-i18next.md +8 -4
  17. package/blog/en/intlayer_with_react-intl.md +8 -4
  18. package/blog/en/intlayer_with_vue-i18n.md +8 -4
  19. package/blog/en-GB/intlayer_with_i18next.md +8 -4
  20. package/blog/en-GB/intlayer_with_next-i18next.md +8 -4
  21. package/blog/en-GB/intlayer_with_next-intl.md +8 -4
  22. package/blog/en-GB/intlayer_with_react-i18next.md +8 -4
  23. package/blog/en-GB/intlayer_with_react-intl.md +8 -4
  24. package/blog/en-GB/intlayer_with_vue-i18n.md +8 -4
  25. package/blog/es/intlayer_with_i18next.md +8 -4
  26. package/blog/es/intlayer_with_next-i18next.md +8 -4
  27. package/blog/es/intlayer_with_next-intl.md +8 -4
  28. package/blog/es/intlayer_with_react-i18next.md +8 -4
  29. package/blog/es/intlayer_with_react-intl.md +8 -4
  30. package/blog/es/intlayer_with_vue-i18n.md +8 -4
  31. package/blog/fr/intlayer_with_i18next.md +8 -4
  32. package/blog/fr/intlayer_with_next-i18next.md +8 -4
  33. package/blog/fr/intlayer_with_next-intl.md +8 -4
  34. package/blog/fr/intlayer_with_react-i18next.md +8 -4
  35. package/blog/fr/intlayer_with_react-intl.md +8 -4
  36. package/blog/fr/intlayer_with_vue-i18n.md +8 -4
  37. package/blog/hi/intlayer_with_i18next.md +8 -4
  38. package/blog/hi/intlayer_with_next-i18next.md +8 -4
  39. package/blog/hi/intlayer_with_next-intl.md +8 -4
  40. package/blog/hi/intlayer_with_react-i18next.md +8 -4
  41. package/blog/hi/intlayer_with_react-intl.md +8 -4
  42. package/blog/hi/intlayer_with_vue-i18n.md +8 -4
  43. package/blog/id/intlayer_with_i18next.md +8 -4
  44. package/blog/id/intlayer_with_next-i18next.md +8 -4
  45. package/blog/id/intlayer_with_next-intl.md +8 -4
  46. package/blog/id/intlayer_with_react-i18next.md +8 -4
  47. package/blog/id/intlayer_with_react-intl.md +8 -4
  48. package/blog/id/intlayer_with_vue-i18n.md +8 -4
  49. package/blog/it/intlayer_with_i18next.md +8 -4
  50. package/blog/it/intlayer_with_next-i18next.md +8 -4
  51. package/blog/it/intlayer_with_next-intl.md +8 -4
  52. package/blog/it/intlayer_with_react-i18next.md +8 -4
  53. package/blog/it/intlayer_with_react-intl.md +8 -4
  54. package/blog/it/intlayer_with_vue-i18n.md +8 -4
  55. package/blog/ja/intlayer_with_i18next.md +8 -4
  56. package/blog/ja/intlayer_with_next-i18next.md +8 -4
  57. package/blog/ja/intlayer_with_next-intl.md +8 -4
  58. package/blog/ja/intlayer_with_react-i18next.md +8 -4
  59. package/blog/ja/intlayer_with_react-intl.md +8 -4
  60. package/blog/ja/intlayer_with_vue-i18n.md +8 -4
  61. package/blog/ko/intlayer_with_i18next.md +8 -4
  62. package/blog/ko/intlayer_with_next-i18next.md +8 -4
  63. package/blog/ko/intlayer_with_next-intl.md +8 -4
  64. package/blog/ko/intlayer_with_react-i18next.md +8 -4
  65. package/blog/ko/intlayer_with_react-intl.md +8 -4
  66. package/blog/ko/intlayer_with_vue-i18n.md +8 -4
  67. package/blog/pl/intlayer_with_i18next.md +8 -4
  68. package/blog/pl/intlayer_with_next-i18next.md +8 -4
  69. package/blog/pl/intlayer_with_next-intl.md +8 -4
  70. package/blog/pl/intlayer_with_react-i18next.md +8 -4
  71. package/blog/pl/intlayer_with_react-intl.md +8 -4
  72. package/blog/pl/intlayer_with_vue-i18n.md +8 -4
  73. package/blog/pt/intlayer_with_i18next.md +8 -4
  74. package/blog/pt/intlayer_with_next-i18next.md +8 -4
  75. package/blog/pt/intlayer_with_next-intl.md +8 -4
  76. package/blog/pt/intlayer_with_react-i18next.md +8 -4
  77. package/blog/pt/intlayer_with_react-intl.md +8 -4
  78. package/blog/pt/intlayer_with_vue-i18n.md +8 -4
  79. package/blog/ru/intlayer_with_i18next.md +8 -4
  80. package/blog/ru/intlayer_with_next-i18next.md +8 -4
  81. package/blog/ru/intlayer_with_next-intl.md +8 -4
  82. package/blog/ru/intlayer_with_react-i18next.md +8 -4
  83. package/blog/ru/intlayer_with_react-intl.md +8 -4
  84. package/blog/ru/intlayer_with_vue-i18n.md +8 -4
  85. package/blog/tr/intlayer_with_i18next.md +8 -4
  86. package/blog/tr/intlayer_with_next-i18next.md +8 -4
  87. package/blog/tr/intlayer_with_next-intl.md +8 -4
  88. package/blog/tr/intlayer_with_react-i18next.md +8 -4
  89. package/blog/tr/intlayer_with_react-intl.md +8 -4
  90. package/blog/tr/intlayer_with_vue-i18n.md +8 -4
  91. package/blog/vi/intlayer_with_i18next.md +8 -4
  92. package/blog/vi/intlayer_with_next-i18next.md +8 -4
  93. package/blog/vi/intlayer_with_next-intl.md +8 -4
  94. package/blog/vi/intlayer_with_react-i18next.md +8 -4
  95. package/blog/vi/intlayer_with_react-intl.md +8 -4
  96. package/blog/vi/intlayer_with_vue-i18n.md +8 -4
  97. package/blog/zh/intlayer_with_i18next.md +8 -4
  98. package/blog/zh/intlayer_with_next-i18next.md +8 -4
  99. package/blog/zh/intlayer_with_next-intl.md +8 -4
  100. package/blog/zh/intlayer_with_react-i18next.md +8 -4
  101. package/blog/zh/intlayer_with_react-intl.md +8 -4
  102. package/blog/zh/intlayer_with_vue-i18n.md +8 -4
  103. package/docs/ar/cli/index.md +4 -0
  104. package/docs/ar/cli/sdk.md +4 -0
  105. package/docs/ar/intlayer_visual_editor.md +4 -0
  106. package/docs/ar/intlayer_with_angular.md +8 -0
  107. package/docs/ar/intlayer_with_create_react_app.md +8 -0
  108. package/docs/ar/intlayer_with_express.md +8 -0
  109. package/docs/ar/intlayer_with_lynx+react.md +8 -0
  110. package/docs/ar/intlayer_with_nestjs.md +8 -0
  111. package/docs/ar/intlayer_with_next-i18next.md +15 -3
  112. package/docs/ar/intlayer_with_next-intl.md +12 -3
  113. package/docs/ar/intlayer_with_nextjs_14.md +16 -0
  114. package/docs/ar/intlayer_with_nextjs_15.md +16 -0
  115. package/docs/ar/intlayer_with_nextjs_16.md +16 -0
  116. package/docs/ar/intlayer_with_nextjs_page_router.md +16 -0
  117. package/docs/ar/intlayer_with_nuxt.md +9 -0
  118. package/docs/ar/intlayer_with_react_native+expo.md +9 -0
  119. package/docs/ar/intlayer_with_react_router_v7.md +86 -16
  120. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +16 -0
  121. package/docs/ar/intlayer_with_svelte_kit.md +8 -0
  122. package/docs/ar/intlayer_with_tanstack.md +14 -0
  123. package/docs/ar/intlayer_with_vite+preact.md +12 -2
  124. package/docs/ar/intlayer_with_vite+react.md +9 -0
  125. package/docs/ar/intlayer_with_vite+solid.md +9 -0
  126. package/docs/ar/intlayer_with_vite+svelte.md +7 -0
  127. package/docs/ar/intlayer_with_vite+vue.md +11 -0
  128. package/docs/de/cli/index.md +4 -0
  129. package/docs/de/cli/sdk.md +4 -0
  130. package/docs/de/intlayer_visual_editor.md +4 -0
  131. package/docs/de/intlayer_with_angular.md +8 -0
  132. package/docs/de/intlayer_with_create_react_app.md +8 -0
  133. package/docs/de/intlayer_with_express.md +8 -0
  134. package/docs/de/intlayer_with_lynx+react.md +8 -0
  135. package/docs/de/intlayer_with_nestjs.md +8 -0
  136. package/docs/de/intlayer_with_next-i18next.md +15 -3
  137. package/docs/de/intlayer_with_next-intl.md +12 -3
  138. package/docs/de/intlayer_with_nextjs_14.md +16 -0
  139. package/docs/de/intlayer_with_nextjs_15.md +16 -0
  140. package/docs/de/intlayer_with_nextjs_16.md +16 -0
  141. package/docs/de/intlayer_with_nextjs_page_router.md +16 -0
  142. package/docs/de/intlayer_with_nuxt.md +9 -0
  143. package/docs/de/intlayer_with_react_native+expo.md +1 -0
  144. package/docs/de/intlayer_with_react_router_v7.md +86 -15
  145. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +103 -19
  146. package/docs/de/intlayer_with_svelte_kit.md +8 -0
  147. package/docs/de/intlayer_with_tanstack.md +14 -0
  148. package/docs/de/intlayer_with_vite+preact.md +12 -2
  149. package/docs/de/intlayer_with_vite+react.md +9 -0
  150. package/docs/de/intlayer_with_vite+solid.md +9 -0
  151. package/docs/de/intlayer_with_vite+svelte.md +6 -0
  152. package/docs/de/intlayer_with_vite+vue.md +11 -0
  153. package/docs/en/cli/index.md +4 -0
  154. package/docs/en/cli/sdk.md +4 -0
  155. package/docs/en/configuration.md +1 -0
  156. package/docs/en/intlayer_visual_editor.md +4 -0
  157. package/docs/en/intlayer_with_angular.md +8 -0
  158. package/docs/en/intlayer_with_create_react_app.md +8 -0
  159. package/docs/en/intlayer_with_express.md +8 -0
  160. package/docs/en/intlayer_with_lynx+react.md +8 -0
  161. package/docs/en/intlayer_with_nestjs.md +8 -0
  162. package/docs/en/intlayer_with_next-i18next.md +15 -3
  163. package/docs/en/intlayer_with_next-intl.md +12 -3
  164. package/docs/en/intlayer_with_nextjs_14.md +16 -0
  165. package/docs/en/intlayer_with_nextjs_15.md +16 -0
  166. package/docs/en/intlayer_with_nextjs_16.md +16 -0
  167. package/docs/en/intlayer_with_nextjs_page_router.md +16 -0
  168. package/docs/en/intlayer_with_nuxt.md +9 -0
  169. package/docs/en/intlayer_with_react_native+expo.md +9 -0
  170. package/docs/en/intlayer_with_react_router_v7.md +88 -15
  171. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +106 -19
  172. package/docs/en/intlayer_with_svelte_kit.md +4 -0
  173. package/docs/en/intlayer_with_tanstack.md +14 -0
  174. package/docs/en/intlayer_with_vite+preact.md +11 -0
  175. package/docs/en/intlayer_with_vite+react.md +9 -0
  176. package/docs/en/intlayer_with_vite+solid.md +9 -0
  177. package/docs/en/intlayer_with_vite+svelte.md +7 -0
  178. package/docs/en/intlayer_with_vite+vue.md +11 -0
  179. package/docs/en-GB/cli/index.md +4 -0
  180. package/docs/en-GB/cli/sdk.md +4 -0
  181. package/docs/en-GB/configuration.md +1 -0
  182. package/docs/en-GB/intlayer_visual_editor.md +4 -0
  183. package/docs/en-GB/intlayer_with_angular.md +8 -0
  184. package/docs/en-GB/intlayer_with_create_react_app.md +16 -0
  185. package/docs/en-GB/intlayer_with_express.md +8 -0
  186. package/docs/en-GB/intlayer_with_lynx+react.md +16 -0
  187. package/docs/en-GB/intlayer_with_nestjs.md +8 -0
  188. package/docs/en-GB/intlayer_with_next-i18next.md +15 -3
  189. package/docs/en-GB/intlayer_with_next-intl.md +12 -3
  190. package/docs/en-GB/intlayer_with_nextjs_14.md +16 -0
  191. package/docs/en-GB/intlayer_with_nextjs_15.md +16 -0
  192. package/docs/en-GB/intlayer_with_nextjs_16.md +16 -0
  193. package/docs/en-GB/intlayer_with_nextjs_page_router.md +16 -0
  194. package/docs/en-GB/intlayer_with_nuxt.md +9 -0
  195. package/docs/en-GB/intlayer_with_react_native+expo.md +9 -0
  196. package/docs/en-GB/intlayer_with_react_router_v7.md +87 -16
  197. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +16 -0
  198. package/docs/en-GB/intlayer_with_svelte_kit.md +8 -0
  199. package/docs/en-GB/intlayer_with_tanstack.md +14 -0
  200. package/docs/en-GB/intlayer_with_vite+preact.md +12 -2
  201. package/docs/en-GB/intlayer_with_vite+react.md +9 -0
  202. package/docs/en-GB/intlayer_with_vite+solid.md +9 -0
  203. package/docs/en-GB/intlayer_with_vite+svelte.md +7 -0
  204. package/docs/en-GB/intlayer_with_vite+vue.md +11 -0
  205. package/docs/es/cli/index.md +4 -0
  206. package/docs/es/cli/sdk.md +4 -0
  207. package/docs/es/intlayer_visual_editor.md +4 -0
  208. package/docs/es/intlayer_with_angular.md +8 -0
  209. package/docs/es/intlayer_with_create_react_app.md +8 -0
  210. package/docs/es/intlayer_with_express.md +8 -0
  211. package/docs/es/intlayer_with_lynx+react.md +8 -0
  212. package/docs/es/intlayer_with_nestjs.md +8 -0
  213. package/docs/es/intlayer_with_next-i18next.md +15 -3
  214. package/docs/es/intlayer_with_next-intl.md +12 -3
  215. package/docs/es/intlayer_with_nextjs_14.md +16 -0
  216. package/docs/es/intlayer_with_nextjs_15.md +16 -0
  217. package/docs/es/intlayer_with_nextjs_16.md +16 -0
  218. package/docs/es/intlayer_with_nextjs_page_router.md +16 -0
  219. package/docs/es/intlayer_with_nuxt.md +9 -0
  220. package/docs/es/intlayer_with_react_native+expo.md +9 -0
  221. package/docs/es/intlayer_with_react_router_v7.md +86 -15
  222. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +103 -19
  223. package/docs/es/intlayer_with_svelte_kit.md +8 -0
  224. package/docs/es/intlayer_with_tanstack.md +14 -0
  225. package/docs/es/intlayer_with_vite+preact.md +12 -2
  226. package/docs/es/intlayer_with_vite+react.md +9 -0
  227. package/docs/es/intlayer_with_vite+solid.md +9 -0
  228. package/docs/es/intlayer_with_vite+svelte.md +7 -0
  229. package/docs/es/intlayer_with_vite+vue.md +11 -0
  230. package/docs/es/packages/next-intlayer/index.md +5 -0
  231. package/docs/es/packages/react-intlayer/index.md +5 -0
  232. package/docs/fr/cli/index.md +4 -0
  233. package/docs/fr/cli/sdk.md +4 -0
  234. package/docs/fr/intlayer_visual_editor.md +4 -0
  235. package/docs/fr/intlayer_with_angular.md +8 -0
  236. package/docs/fr/intlayer_with_create_react_app.md +8 -0
  237. package/docs/fr/intlayer_with_express.md +8 -0
  238. package/docs/fr/intlayer_with_lynx+react.md +8 -0
  239. package/docs/fr/intlayer_with_nestjs.md +8 -0
  240. package/docs/fr/intlayer_with_next-i18next.md +15 -3
  241. package/docs/fr/intlayer_with_next-intl.md +12 -3
  242. package/docs/fr/intlayer_with_nextjs_14.md +16 -0
  243. package/docs/fr/intlayer_with_nextjs_15.md +16 -0
  244. package/docs/fr/intlayer_with_nextjs_16.md +16 -0
  245. package/docs/fr/intlayer_with_nextjs_page_router.md +16 -0
  246. package/docs/fr/intlayer_with_nuxt.md +9 -0
  247. package/docs/fr/intlayer_with_react_native+expo.md +1 -0
  248. package/docs/fr/intlayer_with_react_router_v7.md +86 -15
  249. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +103 -19
  250. package/docs/fr/intlayer_with_svelte_kit.md +8 -0
  251. package/docs/fr/intlayer_with_tanstack.md +14 -0
  252. package/docs/fr/intlayer_with_vite+preact.md +12 -2
  253. package/docs/fr/intlayer_with_vite+react.md +9 -0
  254. package/docs/fr/intlayer_with_vite+solid.md +9 -0
  255. package/docs/fr/intlayer_with_vite+svelte.md +7 -0
  256. package/docs/fr/intlayer_with_vite+vue.md +11 -0
  257. package/docs/fr/packages/react-intlayer/index.md +5 -0
  258. package/docs/hi/cli/index.md +4 -0
  259. package/docs/hi/cli/sdk.md +4 -0
  260. package/docs/hi/intlayer_visual_editor.md +4 -0
  261. package/docs/hi/intlayer_with_angular.md +8 -0
  262. package/docs/hi/intlayer_with_create_react_app.md +8 -0
  263. package/docs/hi/intlayer_with_express.md +8 -0
  264. package/docs/hi/intlayer_with_lynx+react.md +8 -0
  265. package/docs/hi/intlayer_with_nestjs.md +8 -0
  266. package/docs/hi/intlayer_with_next-i18next.md +15 -3
  267. package/docs/hi/intlayer_with_next-intl.md +12 -3
  268. package/docs/hi/intlayer_with_nextjs_14.md +16 -0
  269. package/docs/hi/intlayer_with_nextjs_15.md +16 -0
  270. package/docs/hi/intlayer_with_nextjs_16.md +16 -0
  271. package/docs/hi/intlayer_with_nextjs_page_router.md +16 -0
  272. package/docs/hi/intlayer_with_nuxt.md +9 -0
  273. package/docs/hi/intlayer_with_react_native+expo.md +1 -0
  274. package/docs/hi/intlayer_with_react_router_v7.md +86 -16
  275. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +16 -0
  276. package/docs/hi/intlayer_with_svelte_kit.md +8 -0
  277. package/docs/hi/intlayer_with_tanstack.md +14 -0
  278. package/docs/hi/intlayer_with_vite+preact.md +12 -2
  279. package/docs/hi/intlayer_with_vite+react.md +9 -0
  280. package/docs/hi/intlayer_with_vite+solid.md +9 -0
  281. package/docs/hi/intlayer_with_vite+svelte.md +7 -0
  282. package/docs/hi/intlayer_with_vite+vue.md +11 -0
  283. package/docs/hi/packages/intlayer/index.md +8 -0
  284. package/docs/id/cli/index.md +4 -0
  285. package/docs/id/cli/sdk.md +4 -0
  286. package/docs/id/intlayer_visual_editor.md +4 -0
  287. package/docs/id/intlayer_with_angular.md +8 -0
  288. package/docs/id/intlayer_with_create_react_app.md +8 -0
  289. package/docs/id/intlayer_with_express.md +8 -0
  290. package/docs/id/intlayer_with_lynx+react.md +8 -0
  291. package/docs/id/intlayer_with_nestjs.md +8 -0
  292. package/docs/id/intlayer_with_next-i18next.md +15 -3
  293. package/docs/id/intlayer_with_next-intl.md +12 -3
  294. package/docs/id/intlayer_with_nextjs_14.md +16 -0
  295. package/docs/id/intlayer_with_nextjs_15.md +16 -0
  296. package/docs/id/intlayer_with_nextjs_16.md +16 -0
  297. package/docs/id/intlayer_with_nextjs_page_router.md +16 -0
  298. package/docs/id/intlayer_with_nuxt.md +9 -0
  299. package/docs/id/intlayer_with_react_native+expo.md +9 -0
  300. package/docs/id/intlayer_with_react_router_v7.md +86 -15
  301. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +16 -0
  302. package/docs/id/intlayer_with_svelte_kit.md +8 -0
  303. package/docs/id/intlayer_with_tanstack.md +14 -0
  304. package/docs/id/intlayer_with_vite+preact.md +11 -0
  305. package/docs/id/intlayer_with_vite+react.md +9 -0
  306. package/docs/id/intlayer_with_vite+solid.md +9 -0
  307. package/docs/id/intlayer_with_vite+svelte.md +7 -0
  308. package/docs/id/intlayer_with_vite+vue.md +11 -0
  309. package/docs/it/cli/index.md +4 -0
  310. package/docs/it/cli/sdk.md +4 -0
  311. package/docs/it/intlayer_visual_editor.md +4 -0
  312. package/docs/it/intlayer_with_angular.md +8 -0
  313. package/docs/it/intlayer_with_create_react_app.md +8 -0
  314. package/docs/it/intlayer_with_express.md +8 -0
  315. package/docs/it/intlayer_with_lynx+react.md +8 -0
  316. package/docs/it/intlayer_with_nestjs.md +8 -0
  317. package/docs/it/intlayer_with_next-i18next.md +15 -3
  318. package/docs/it/intlayer_with_next-intl.md +12 -3
  319. package/docs/it/intlayer_with_nextjs_14.md +16 -0
  320. package/docs/it/intlayer_with_nextjs_15.md +16 -0
  321. package/docs/it/intlayer_with_nextjs_16.md +16 -0
  322. package/docs/it/intlayer_with_nextjs_page_router.md +16 -0
  323. package/docs/it/intlayer_with_nuxt.md +9 -0
  324. package/docs/it/intlayer_with_react_native+expo.md +9 -0
  325. package/docs/it/intlayer_with_react_router_v7.md +86 -15
  326. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +103 -19
  327. package/docs/it/intlayer_with_svelte_kit.md +8 -0
  328. package/docs/it/intlayer_with_tanstack.md +14 -0
  329. package/docs/it/intlayer_with_vite+preact.md +12 -2
  330. package/docs/it/intlayer_with_vite+react.md +9 -0
  331. package/docs/it/intlayer_with_vite+solid.md +9 -0
  332. package/docs/it/intlayer_with_vite+svelte.md +7 -0
  333. package/docs/it/intlayer_with_vite+vue.md +11 -0
  334. package/docs/ja/cli/index.md +4 -0
  335. package/docs/ja/cli/sdk.md +4 -0
  336. package/docs/ja/intlayer_visual_editor.md +4 -0
  337. package/docs/ja/intlayer_with_angular.md +8 -0
  338. package/docs/ja/intlayer_with_create_react_app.md +8 -0
  339. package/docs/ja/intlayer_with_express.md +8 -0
  340. package/docs/ja/intlayer_with_lynx+react.md +8 -0
  341. package/docs/ja/intlayer_with_nestjs.md +8 -0
  342. package/docs/ja/intlayer_with_next-i18next.md +15 -3
  343. package/docs/ja/intlayer_with_next-intl.md +12 -3
  344. package/docs/ja/intlayer_with_nextjs_14.md +16 -0
  345. package/docs/ja/intlayer_with_nextjs_15.md +16 -0
  346. package/docs/ja/intlayer_with_nextjs_16.md +16 -0
  347. package/docs/ja/intlayer_with_nextjs_page_router.md +16 -0
  348. package/docs/ja/intlayer_with_nuxt.md +9 -0
  349. package/docs/ja/intlayer_with_react_native+expo.md +1 -0
  350. package/docs/ja/intlayer_with_react_router_v7.md +86 -15
  351. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +103 -19
  352. package/docs/ja/intlayer_with_svelte_kit.md +8 -0
  353. package/docs/ja/intlayer_with_tanstack.md +14 -0
  354. package/docs/ja/intlayer_with_vite+preact.md +12 -2
  355. package/docs/ja/intlayer_with_vite+react.md +9 -0
  356. package/docs/ja/intlayer_with_vite+solid.md +9 -0
  357. package/docs/ja/intlayer_with_vite+svelte.md +7 -0
  358. package/docs/ja/intlayer_with_vite+vue.md +11 -0
  359. package/docs/ko/cli/index.md +4 -0
  360. package/docs/ko/cli/sdk.md +4 -0
  361. package/docs/ko/intlayer_visual_editor.md +4 -0
  362. package/docs/ko/intlayer_with_angular.md +8 -0
  363. package/docs/ko/intlayer_with_create_react_app.md +8 -0
  364. package/docs/ko/intlayer_with_express.md +8 -0
  365. package/docs/ko/intlayer_with_lynx+react.md +8 -0
  366. package/docs/ko/intlayer_with_nestjs.md +8 -0
  367. package/docs/ko/intlayer_with_next-i18next.md +15 -3
  368. package/docs/ko/intlayer_with_next-intl.md +12 -3
  369. package/docs/ko/intlayer_with_nextjs_14.md +13 -0
  370. package/docs/ko/intlayer_with_nextjs_15.md +16 -0
  371. package/docs/ko/intlayer_with_nextjs_16.md +16 -0
  372. package/docs/ko/intlayer_with_nextjs_page_router.md +16 -0
  373. package/docs/ko/intlayer_with_nuxt.md +9 -0
  374. package/docs/ko/intlayer_with_react_native+expo.md +9 -0
  375. package/docs/ko/intlayer_with_react_router_v7.md +86 -15
  376. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +16 -0
  377. package/docs/ko/intlayer_with_svelte_kit.md +8 -0
  378. package/docs/ko/intlayer_with_tanstack.md +14 -0
  379. package/docs/ko/intlayer_with_vite+preact.md +12 -2
  380. package/docs/ko/intlayer_with_vite+react.md +9 -0
  381. package/docs/ko/intlayer_with_vite+solid.md +9 -0
  382. package/docs/ko/intlayer_with_vite+svelte.md +7 -0
  383. package/docs/ko/intlayer_with_vite+vue.md +11 -0
  384. package/docs/pl/cli/index.md +4 -0
  385. package/docs/pl/cli/sdk.md +4 -0
  386. package/docs/pl/intlayer_visual_editor.md +4 -0
  387. package/docs/pl/intlayer_with_angular.md +8 -0
  388. package/docs/pl/intlayer_with_create_react_app.md +8 -0
  389. package/docs/pl/intlayer_with_express.md +8 -0
  390. package/docs/pl/intlayer_with_lynx+react.md +8 -0
  391. package/docs/pl/intlayer_with_nestjs.md +8 -0
  392. package/docs/pl/intlayer_with_next-i18next.md +15 -3
  393. package/docs/pl/intlayer_with_next-intl.md +12 -3
  394. package/docs/pl/intlayer_with_nextjs_14.md +16 -0
  395. package/docs/pl/intlayer_with_nextjs_15.md +16 -0
  396. package/docs/pl/intlayer_with_nextjs_16.md +16 -0
  397. package/docs/pl/intlayer_with_nextjs_page_router.md +16 -0
  398. package/docs/pl/intlayer_with_nuxt.md +9 -0
  399. package/docs/pl/intlayer_with_react_native+expo.md +9 -0
  400. package/docs/pl/intlayer_with_react_router_v7.md +59 -13
  401. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +102 -18
  402. package/docs/pl/intlayer_with_svelte_kit.md +8 -0
  403. package/docs/pl/intlayer_with_tanstack.md +14 -0
  404. package/docs/pl/intlayer_with_vite+preact.md +11 -0
  405. package/docs/pl/intlayer_with_vite+react.md +9 -0
  406. package/docs/pl/intlayer_with_vite+solid.md +9 -0
  407. package/docs/pl/intlayer_with_vite+svelte.md +7 -0
  408. package/docs/pl/intlayer_with_vite+vue.md +11 -0
  409. package/docs/pt/cli/index.md +4 -0
  410. package/docs/pt/cli/sdk.md +4 -0
  411. package/docs/pt/intlayer_visual_editor.md +4 -0
  412. package/docs/pt/intlayer_with_angular.md +8 -0
  413. package/docs/pt/intlayer_with_create_react_app.md +8 -0
  414. package/docs/pt/intlayer_with_express.md +8 -0
  415. package/docs/pt/intlayer_with_lynx+react.md +8 -0
  416. package/docs/pt/intlayer_with_nestjs.md +8 -0
  417. package/docs/pt/intlayer_with_next-i18next.md +15 -3
  418. package/docs/pt/intlayer_with_next-intl.md +12 -3
  419. package/docs/pt/intlayer_with_nextjs_14.md +16 -0
  420. package/docs/pt/intlayer_with_nextjs_15.md +16 -0
  421. package/docs/pt/intlayer_with_nextjs_16.md +16 -0
  422. package/docs/pt/intlayer_with_nextjs_page_router.md +16 -0
  423. package/docs/pt/intlayer_with_nuxt.md +9 -0
  424. package/docs/pt/intlayer_with_react_native+expo.md +9 -0
  425. package/docs/pt/intlayer_with_react_router_v7.md +93 -46
  426. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +103 -19
  427. package/docs/pt/intlayer_with_svelte_kit.md +8 -0
  428. package/docs/pt/intlayer_with_tanstack.md +14 -0
  429. package/docs/pt/intlayer_with_vite+preact.md +12 -2
  430. package/docs/pt/intlayer_with_vite+react.md +9 -0
  431. package/docs/pt/intlayer_with_vite+solid.md +9 -0
  432. package/docs/pt/intlayer_with_vite+svelte.md +7 -0
  433. package/docs/pt/intlayer_with_vite+vue.md +11 -0
  434. package/docs/ru/cli/index.md +4 -0
  435. package/docs/ru/cli/sdk.md +4 -0
  436. package/docs/ru/intlayer_visual_editor.md +4 -0
  437. package/docs/ru/intlayer_with_angular.md +8 -0
  438. package/docs/ru/intlayer_with_create_react_app.md +8 -0
  439. package/docs/ru/intlayer_with_express.md +8 -0
  440. package/docs/ru/intlayer_with_lynx+react.md +8 -0
  441. package/docs/ru/intlayer_with_nestjs.md +8 -0
  442. package/docs/ru/intlayer_with_next-i18next.md +15 -3
  443. package/docs/ru/intlayer_with_next-intl.md +12 -3
  444. package/docs/ru/intlayer_with_nextjs_14.md +16 -0
  445. package/docs/ru/intlayer_with_nextjs_15.md +16 -0
  446. package/docs/ru/intlayer_with_nextjs_16.md +16 -0
  447. package/docs/ru/intlayer_with_nextjs_page_router.md +16 -0
  448. package/docs/ru/intlayer_with_nuxt.md +9 -0
  449. package/docs/ru/intlayer_with_react_native+expo.md +9 -0
  450. package/docs/ru/intlayer_with_react_router_v7.md +86 -15
  451. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +103 -19
  452. package/docs/ru/intlayer_with_svelte_kit.md +8 -0
  453. package/docs/ru/intlayer_with_tanstack.md +14 -0
  454. package/docs/ru/intlayer_with_vite+preact.md +12 -2
  455. package/docs/ru/intlayer_with_vite+react.md +9 -0
  456. package/docs/ru/intlayer_with_vite+solid.md +9 -0
  457. package/docs/ru/intlayer_with_vite+svelte.md +7 -0
  458. package/docs/ru/intlayer_with_vite+vue.md +11 -0
  459. package/docs/tr/cli/index.md +4 -0
  460. package/docs/tr/cli/sdk.md +4 -0
  461. package/docs/tr/intlayer_visual_editor.md +4 -0
  462. package/docs/tr/intlayer_with_angular.md +8 -0
  463. package/docs/tr/intlayer_with_create_react_app.md +8 -0
  464. package/docs/tr/intlayer_with_express.md +8 -0
  465. package/docs/tr/intlayer_with_lynx+react.md +8 -0
  466. package/docs/tr/intlayer_with_nestjs.md +8 -0
  467. package/docs/tr/intlayer_with_next-i18next.md +15 -3
  468. package/docs/tr/intlayer_with_next-intl.md +12 -3
  469. package/docs/tr/intlayer_with_nextjs_14.md +16 -0
  470. package/docs/tr/intlayer_with_nextjs_15.md +16 -0
  471. package/docs/tr/intlayer_with_nextjs_16.md +16 -0
  472. package/docs/tr/intlayer_with_nextjs_page_router.md +16 -0
  473. package/docs/tr/intlayer_with_nuxt.md +9 -0
  474. package/docs/tr/intlayer_with_react_native+expo.md +9 -0
  475. package/docs/tr/intlayer_with_react_router_v7.md +86 -15
  476. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +103 -19
  477. package/docs/tr/intlayer_with_svelte_kit.md +8 -0
  478. package/docs/tr/intlayer_with_tanstack.md +14 -0
  479. package/docs/tr/intlayer_with_vite+preact.md +12 -2
  480. package/docs/tr/intlayer_with_vite+react.md +9 -0
  481. package/docs/tr/intlayer_with_vite+solid.md +9 -0
  482. package/docs/tr/intlayer_with_vite+svelte.md +7 -0
  483. package/docs/tr/intlayer_with_vite+vue.md +11 -0
  484. package/docs/vi/cli/index.md +5 -0
  485. package/docs/vi/cli/sdk.md +4 -0
  486. package/docs/vi/intlayer_visual_editor.md +4 -0
  487. package/docs/vi/intlayer_with_angular.md +8 -0
  488. package/docs/vi/intlayer_with_create_react_app.md +8 -0
  489. package/docs/vi/intlayer_with_express.md +8 -0
  490. package/docs/vi/intlayer_with_lynx+react.md +8 -0
  491. package/docs/vi/intlayer_with_nestjs.md +8 -0
  492. package/docs/vi/intlayer_with_next-i18next.md +15 -3
  493. package/docs/vi/intlayer_with_next-intl.md +12 -3
  494. package/docs/vi/intlayer_with_nextjs_14.md +16 -0
  495. package/docs/vi/intlayer_with_nextjs_15.md +16 -0
  496. package/docs/vi/intlayer_with_nextjs_16.md +16 -0
  497. package/docs/vi/intlayer_with_nextjs_page_router.md +16 -0
  498. package/docs/vi/intlayer_with_nuxt.md +9 -0
  499. package/docs/vi/intlayer_with_react_native+expo.md +9 -0
  500. package/docs/vi/intlayer_with_react_router_v7.md +86 -15
  501. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +16 -0
  502. package/docs/vi/intlayer_with_svelte_kit.md +8 -0
  503. package/docs/vi/intlayer_with_tanstack.md +14 -0
  504. package/docs/vi/intlayer_with_vite+preact.md +11 -0
  505. package/docs/vi/intlayer_with_vite+react.md +9 -0
  506. package/docs/vi/intlayer_with_vite+solid.md +9 -0
  507. package/docs/vi/intlayer_with_vite+svelte.md +7 -0
  508. package/docs/vi/intlayer_with_vite+vue.md +11 -0
  509. package/docs/zh/cli/index.md +4 -0
  510. package/docs/zh/cli/sdk.md +4 -0
  511. package/docs/zh/intlayer_visual_editor.md +4 -0
  512. package/docs/zh/intlayer_with_angular.md +8 -0
  513. package/docs/zh/intlayer_with_create_react_app.md +8 -0
  514. package/docs/zh/intlayer_with_express.md +8 -0
  515. package/docs/zh/intlayer_with_lynx+react.md +8 -0
  516. package/docs/zh/intlayer_with_nestjs.md +8 -0
  517. package/docs/zh/intlayer_with_next-i18next.md +15 -3
  518. package/docs/zh/intlayer_with_next-intl.md +12 -3
  519. package/docs/zh/intlayer_with_nextjs_14.md +16 -0
  520. package/docs/zh/intlayer_with_nextjs_15.md +16 -0
  521. package/docs/zh/intlayer_with_nextjs_16.md +16 -0
  522. package/docs/zh/intlayer_with_nextjs_page_router.md +16 -0
  523. package/docs/zh/intlayer_with_nuxt.md +9 -0
  524. package/docs/zh/intlayer_with_react_native+expo.md +9 -0
  525. package/docs/zh/intlayer_with_react_router_v7.md +86 -15
  526. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +16 -0
  527. package/docs/zh/intlayer_with_svelte_kit.md +8 -0
  528. package/docs/zh/intlayer_with_tanstack.md +14 -0
  529. package/docs/zh/intlayer_with_vite+preact.md +12 -2
  530. package/docs/zh/intlayer_with_vite+react.md +9 -0
  531. package/docs/zh/intlayer_with_vite+solid.md +9 -0
  532. package/docs/zh/intlayer_with_vite+svelte.md +7 -0
  533. package/docs/zh/intlayer_with_vite+vue.md +11 -0
  534. package/package.json +6 -6
@@ -74,16 +74,25 @@ Instala los paquetes necesarios usando npm:
74
74
  ```bash packageManager="npm"
75
75
  npm install intlayer vue-intlayer
76
76
  npm install --save-dev nuxt-intlayer
77
+ npx intlayer init
77
78
  ```
78
79
 
79
80
  ```bash packageManager="pnpm"
80
81
  pnpm add intlayer vue-intlayer
81
82
  pnpm add --save-dev nuxt-intlayer
83
+ pnpm intlayer init
82
84
  ```
83
85
 
84
86
  ```bash packageManager="yarn"
85
87
  yarn add intlayer vue-intlayer
86
88
  yarn add --save-dev nuxt-intlayer
89
+ yarn intlayer init
90
+ ```
91
+
92
+ ```bash packageManager="bun"
93
+ bun add intlayer vue-intlayer
94
+ bun add --dev nuxt-intlayer
95
+ bunx intlayer init
87
96
  ```
88
97
 
89
98
  - **intlayer**
@@ -45,16 +45,25 @@ Desde tu proyecto React Native, instala los siguientes paquetes:
45
45
  ```bash packageManager="npm"
46
46
  npm install intlayer react-intlayer
47
47
  npm install --save-dev react-native-intlayer
48
+ npx intlayer init
48
49
  ```
49
50
 
50
51
  ```bash packageManager="pnpm"
51
52
  pnpm add intlayer react-intlayer
52
53
  pnpm add --save-dev react-native-intlayer
54
+ pnpm intlayer init
53
55
  ```
54
56
 
55
57
  ```bash packageManager="yarn"
56
58
  yarn add intlayer react-intlayer
57
59
  yarn add --save-dev react-native-intlayer
60
+ yarn intlayer init
61
+ ```
62
+
63
+ ```bash packageManager="bun"
64
+ bun add intlayer react-intlayer
65
+ bun add --dev react-native-intlayer
66
+ bunx intlayer init
58
67
  ```
59
68
 
60
69
  ### Paquetes
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2025-09-04
3
- updatedAt: 2025-10-03
3
+ updatedAt: 2025-12-27
4
4
  title: Cómo traducir tu React Router v7 – guía i18n 2025
5
5
  description: Aprende cómo agregar internacionalización (i18n) a tu aplicación React Router v7 usando Intlayer. Sigue esta guía completa para hacer tu aplicación multilingüe con enrutamiento consciente del locale.
6
6
  keywords:
@@ -20,6 +20,9 @@ slugs:
20
20
  applicationTemplate: https://github.com/aymericzip/intlayer-react-router-v7-template
21
21
  youtubeVideo: https://www.youtube.com/watch?v=dS9L7uJeak4
22
22
  history:
23
+ - version: 7.5.6
24
+ date: 2025-12-27
25
+ changes: Actualizar Layout y manejar 404
23
26
  - version: 6.1.5
24
27
  date: 2025-10-03
25
28
  changes: Documento actualizado
@@ -59,11 +62,25 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
59
62
  ```bash packageManager="npm"
60
63
  npm install intlayer react-intlayer
61
64
  npm install vite-intlayer --save-dev
65
+ npx intlayer init
62
66
  ```
63
67
 
64
68
  ```bash packageManager="pnpm"
65
69
  pnpm add intlayer react-intlayer
66
70
  pnpm add vite-intlayer --save-dev
71
+ pnpm intlayer init
72
+ ```
73
+
74
+ ```bash packageManager="yarn"
75
+ yarn add intlayer react-intlayer
76
+ yarn add vite-intlayer --save-dev
77
+ yarn intlayer init
78
+ ```
79
+
80
+ ```bash packageManager="bun"
81
+ bun add intlayer react-intlayer
82
+ bun add vite-intlayer --dev
83
+ bunx intlayer init
67
84
  ```
68
85
 
69
86
  - **intlayer**
@@ -174,10 +191,8 @@ Configura tu enrutamiento con rutas conscientes del locale:
174
191
  import { layout, route, type RouteConfig } from "@react-router/dev/routes";
175
192
 
176
193
  export default [
177
- layout("routes/layout.tsx", [
178
- route("/:lang?", "routes/page.tsx"), // Página de inicio localizada
179
- route("/:lang?/about", "routes/about/page.tsx"), // Página "acerca de" localizada
180
- ]),
194
+ route("/:lang?", "routes/page.tsx"), // Página de inicio localizada
195
+ route("/:lang?/about", "routes/about/page.tsx"), // Página "acerca de" localizada
181
196
  ] satisfies RouteConfig;
182
197
  ```
183
198
 
@@ -187,19 +202,50 @@ Configura tu layout raíz y los layouts específicos por localización:
187
202
 
188
203
  #### Layout Raíz
189
204
 
190
- ```tsx fileName="app/routes/layout.tsx"
205
+ ```tsx fileName="app/root.tsx"
206
+ import { getLocaleFromPath } from "intlayer";
191
207
  import { IntlayerProvider } from "react-intlayer";
192
- import { Outlet } from "react-router";
208
+ import {
209
+ data,
210
+ Meta,
211
+ Scripts,
212
+ ScrollRestoration,
213
+ useLoaderData,
214
+ } from "react-router";
215
+ import type { Route } from "./+types/root";
193
216
 
194
- import type { Route } from "./+types/layout";
217
+ // ... Unchanged App, links and ErrorBoundary code
195
218
 
196
- export default function RootLayout({ params }: Route.ComponentProps) {
197
- const { locale } = params;
219
+ export async function loader({ request }: Route.LoaderArgs) {
220
+ const locale = getLocaleFromPath(request.url);
221
+
222
+ if (!locale) {
223
+ throw data("Language not supported", { status: 404 });
224
+ }
225
+
226
+ return { locale };
227
+ }
228
+
229
+ export function Layout({
230
+ children,
231
+ }: { children: React.ReactNode } & Route.ComponentProps) {
232
+ const data = useLoaderData<typeof loader>();
233
+ const { locale } = data ?? {};
198
234
 
199
235
  return (
200
- <IntlayerProvider locale={locale}>
201
- <Outlet />
202
- </IntlayerProvider>
236
+ <html lang={locale}>
237
+ <head>
238
+ <meta charSet="utf-8" />
239
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
240
+ <Meta />
241
+ <Links />
242
+ </head>
243
+ <body>
244
+ <IntlayerProvider locale={locale}>{children}</IntlayerProvider>
245
+ <ScrollRestoration />
246
+ <Scripts />
247
+ </body>
248
+ </html>
203
249
  );
204
250
  }
205
251
  ```
@@ -313,9 +359,34 @@ Accede a tus diccionarios de contenido a lo largo de toda tu aplicación:
313
359
 
314
360
  #### Página de inicio localizada
315
361
 
316
- ```tsx fileName="app/routes/[lang]/page.tsx"
362
+ ```tsx fileName="app/routes/page.tsx"
363
+ import { getIntlayer, validatePrefix } from "intlayer";
317
364
  import { useIntlayer } from "react-intlayer";
318
- import { LocalizedLink } from "~/components/localized-link";
365
+ import { data } from "react-router";
366
+
367
+ import { LocaleSwitcher } from "~/components/locale-switcher";
368
+
369
+ import { Navbar } from "~/components/navbar";
370
+ import type { Route } from "./+types/page";
371
+
372
+ export const loader = ({ params }: Route.LoaderArgs) => {
373
+ const { locale } = params;
374
+
375
+ const { isValid } = validatePrefix(locale);
376
+
377
+ if (!isValid) {
378
+ throw data("Locale not supported", { status: 404 });
379
+ }
380
+ };
381
+
382
+ export const meta: Route.MetaFunction = ({ params }) => {
383
+ const content = getIntlayer("page", params.locale);
384
+
385
+ return [
386
+ { title: content.title },
387
+ { content: content.description, name: "description" },
388
+ ];
389
+ };
319
390
 
320
391
  export default function Page() {
321
392
  const { title, description, aboutLink } = useIntlayer("page");
@@ -31,6 +31,8 @@ history:
31
31
 
32
32
  Esta guía demuestra cómo integrar **Intlayer** para una internacionalización fluida en proyectos con React Router v7 usando **enrutamiento basado en el sistema de archivos** (`@react-router/fs-routes`) con enrutamiento consciente del locale, soporte para TypeScript y prácticas modernas de desarrollo.
33
33
 
34
+ Para el enrutamiento del lado del cliente, consulte la guía [Intlayer con React Router v7](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/intlayer_with_react_router_v7.md).
35
+
34
36
  ## Table of Contents
35
37
 
36
38
  <TOC/>
@@ -80,6 +82,7 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
80
82
  npm install intlayer react-intlayer
81
83
  npm install vite-intlayer --save-dev
82
84
  npm install @react-router/fs-routes --save-dev
85
+ npx intlayer init
83
86
  ```
84
87
 
85
88
  ```bash packageManager="pnpm"
@@ -88,6 +91,13 @@ pnpm add vite-intlayer --save-dev
88
91
  pnpm add @react-router/fs-routes --save-dev
89
92
  ```
90
93
 
94
+ ```bash packageManager="bun"
95
+ bun add intlayer react-intlayer
96
+ bun add vite-intlayer --dev
97
+ bun add @react-router/fs-routes --dev
98
+ bunx intlayer init
99
+ ```
100
+
91
101
  - **intlayer**
92
102
 
93
103
  - **intlayer**
@@ -198,12 +208,13 @@ Crea los siguientes archivos en tu directorio `app/routes/`:
198
208
  #### Estructura de archivos
199
209
 
200
210
  ```bash
201
- app/routes/
202
- ├── ($locale)._layout.tsx # Wrapper de layout para rutas de locale
203
- ├── ($locale)._index.tsx # Página de inicio (/:locale?)
204
- ├── ($locale)._index.content.ts # Contenido de la página de inicio
205
- ├── ($locale).about.tsx # Página Acerca de (/:locale?/about)
206
- └── ($locale).about.content.ts # Contenido de la página Acerca de
211
+ app/
212
+ ├── root.tsx # Wrapper de layout para rutas de locale
213
+ └──routes/
214
+ ├── ($locale)._index.tsx # Página de inicio (/, /es, etc.)
215
+ ├── ($locale)._index.content.ts # Contenido de la página de inicio
216
+ ├── ($locale).about.tsx # Página Acerca de (/about, /es/about, etc.)
217
+ └── ($locale).about.content.ts # Contenido de la página Acerca de
207
218
  ```
208
219
 
209
220
  Las convenciones de nomenclatura:
@@ -215,23 +226,50 @@ Las convenciones de nomenclatura:
215
226
 
216
227
  #### Componente de Layout
217
228
 
218
- ```tsx fileName="app/routes/($locale)._layout.tsx"
229
+ ```tsx fileName="app/root.tsx"
230
+ import { getLocaleFromPath } from "intlayer";
219
231
  import { IntlayerProvider } from "react-intlayer";
220
- import { Outlet } from "react-router";
232
+ import {
233
+ isRouteErrorResponse,
234
+ Meta,
235
+ Outlet,
236
+ Scripts,
237
+ ScrollRestoration,
238
+ useLoaderData,
239
+ } from "react-router";
221
240
 
222
- import { useI18nHTMLAttributes } from "~/hooks/useI18nHTMLAttributes";
241
+ import type { Route } from "./+types/root";
223
242
 
224
- import type { Route } from "./+types/($locale)._layout";
243
+ import "./app.css";
225
244
 
226
- export default function RootLayout({ params }: Route.ComponentProps) {
227
- useI18nHTMLAttributes();
245
+ // ... Unchanged App, links and ErrorBoundary code
228
246
 
229
- const { locale } = params;
247
+ export async function loader({ request }: Route.LoaderArgs) {
248
+ const locale = getLocaleFromPath(request.url);
249
+
250
+ return { locale };
251
+ }
252
+
253
+ export function Layout({
254
+ children,
255
+ }: { children: React.ReactNode } & Route.ComponentProps) {
256
+ const data = useLoaderData<typeof loader>();
257
+ const { locale } = data ?? {};
230
258
 
231
259
  return (
232
- <IntlayerProvider locale={locale}>
233
- <Outlet />
234
- </IntlayerProvider>
260
+ <html lang={locale}>
261
+ <head>
262
+ <meta charSet="utf-8" />
263
+ <meta content="width=device-width, initial-scale=1" name="viewport" />
264
+ <Meta />
265
+ <Links />
266
+ </head>
267
+ <body>
268
+ <IntlayerProvider locale={locale}>{children}</IntlayerProvider>
269
+ <ScrollRestoration />
270
+ <Scripts />
271
+ </body>
272
+ </html>
235
273
  );
236
274
  }
237
275
  ```
@@ -239,11 +277,34 @@ export default function RootLayout({ params }: Route.ComponentProps) {
239
277
  #### Página de índice
240
278
 
241
279
  ```tsx fileName="app/routes/($locale)._index.tsx"
280
+ import { getIntlayer, validatePrefix } from "intlayer";
242
281
  import { useIntlayer } from "react-intlayer";
243
- import { LocalizedLink } from "~/components/localized-link";
282
+ import { data } from "react-router";
283
+
284
+ import { LocaleSwitcher } from "~/components/locale-switcher";
285
+ import { Navbar } from "~/components/navbar";
244
286
 
245
287
  import type { Route } from "./+types/($locale)._index";
246
288
 
289
+ export const loader = ({ params }: Route.LoaderArgs) => {
290
+ const { locale } = params;
291
+
292
+ const { isValid } = validatePrefix(locale);
293
+
294
+ if (!isValid) {
295
+ throw data("Locale not supported", { status: 404 });
296
+ }
297
+ };
298
+
299
+ export const meta: Route.MetaFunction = ({ params }) => {
300
+ const content = getIntlayer("page", params.locale);
301
+
302
+ return [
303
+ { title: content.title },
304
+ { content: content.description, name: "description" },
305
+ ];
306
+ };
307
+
247
308
  export default function Page() {
248
309
  const { title, description, aboutLink } = useIntlayer("page");
249
310
 
@@ -262,11 +323,34 @@ export default function Page() {
262
323
  #### Página Acerca de
263
324
 
264
325
  ```tsx fileName="app/routes/($locale).about.tsx"
326
+ import { getIntlayer, validatePrefix } from "intlayer";
265
327
  import { useIntlayer } from "react-intlayer";
266
- import { LocalizedLink } from "~/components/localized-link";
328
+ import { data } from "react-router";
329
+
330
+ import { LocaleSwitcher } from "~/components/locale-switcher";
331
+ import { Navbar } from "~/components/navbar";
267
332
 
268
333
  import type { Route } from "./+types/($locale).about";
269
334
 
335
+ export const loader = ({ params }: Route.LoaderArgs) => {
336
+ const { locale } = params;
337
+
338
+ const { isValid } = validatePrefix(locale);
339
+
340
+ if (!isValid) {
341
+ throw data("Locale not supported", { status: 404 });
342
+ }
343
+ };
344
+
345
+ export const meta: Route.MetaFunction = ({ params }) => {
346
+ const content = getIntlayer("about", params.locale);
347
+
348
+ return [
349
+ { title: content.title },
350
+ { content: content.description, name: "description" },
351
+ ];
352
+ };
353
+
270
354
  export default function AboutPage() {
271
355
  const { title, content, homeLink } = useIntlayer("about");
272
356
 
@@ -487,7 +571,7 @@ export const useI18nHTMLAttributes = () => {
487
571
  };
488
572
  ```
489
573
 
490
- Este hook ya se usa en el componente de layout (`($locale)._layout.tsx`) mostrado en el Paso 5.
574
+ Este hook ya se usa en el componente de layout (`root.tsx`) mostrado en el Paso 5.
491
575
 
492
576
  ### Paso 10: Añadir middleware (Opcional)
493
577
 
@@ -99,21 +99,25 @@ Instala los paquetes necesarios usando npm:
99
99
  ```bash packageManager="npm"
100
100
  npm install intlayer svelte-intlayer
101
101
  npm install vite-intlayer --save-dev
102
+ npx intlayer init
102
103
  ```
103
104
 
104
105
  ```bash packageManager="pnpm"
105
106
  pnpm add intlayer svelte-intlayer
106
107
  pnpm add vite-intlayer --save-dev
108
+ pnpm intlayer init
107
109
  ```
108
110
 
109
111
  ```bash packageManager="yarn"
110
112
  yarn add intlayer svelte-intlayer
111
113
  yarn add vite-intlayer --save-dev
114
+ yarn intlayer init
112
115
  ```
113
116
 
114
117
  ```bash packageManager="bun"
115
118
  bun add intlayer svelte-intlayer
116
119
  bun add vite-intlayer --save-dev
120
+ bunx intlayer init
117
121
  ```
118
122
 
119
123
  - **intlayer**: El paquete principal de i18n.
@@ -271,21 +275,25 @@ Instala los paquetes necesarios usando npm:
271
275
  ```bash packageManager="npm"
272
276
  npm install intlayer svelte-intlayer
273
277
  npm install vite-intlayer --save-dev
278
+ npx intlayer init
274
279
  ```
275
280
 
276
281
  ```bash packageManager="pnpm"
277
282
  pnpm add intlayer svelte-intlayer
278
283
  pnpm add vite-intlayer --save-dev
284
+ pnpm intlayer init
279
285
  ```
280
286
 
281
287
  ```bash packageManager="yarn"
282
288
  yarn add intlayer svelte-intlayer
283
289
  yarn add vite-intlayer --save-dev
290
+ yarn intlayer init
284
291
  ```
285
292
 
286
293
  ```bash packageManager="bun"
287
294
  bun add intlayer svelte-intlayer
288
295
  bun add vite-intlayer --save-dev
296
+ bunx intlayer init
289
297
  ```
290
298
 
291
299
  - **intlayer**: El paquete principal de i18n.
@@ -86,11 +86,25 @@ Instala los paquetes necesarios usando tu gestor de paquetes preferido:
86
86
  ```bash packageManager="npm"
87
87
  npm install intlayer react-intlayer
88
88
  npm install vite-intlayer --save-dev
89
+ npx intlayer init
89
90
  ```
90
91
 
91
92
  ```bash packageManager="pnpm"
92
93
  pnpm add intlayer react-intlayer
93
94
  pnpm add vite-intlayer --save-dev
95
+ pnpm intlayer init
96
+ ```
97
+
98
+ ```bash packageManager="yarn"
99
+ yarn add intlayer react-intlayer
100
+ yarn add vite-intlayer --save-dev
101
+ yarn intlayer init
102
+ ```
103
+
104
+ ```bash packageManager="bun"
105
+ bun add intlayer react-intlayer
106
+ bun add vite-intlayer --dev
107
+ bunx intlayer init
94
108
  ```
95
109
 
96
110
  - **intlayer**
@@ -49,16 +49,25 @@ Instala los paquetes necesarios usando npm:
49
49
  ```bash packageManager="npm"
50
50
  npm install intlayer preact-intlayer
51
51
  npm install vite-intlayer --save-dev
52
+ npx intlayer init
52
53
  ```
53
54
 
54
55
  ```bash packageManager="pnpm"
55
56
  pnpm add intlayer preact-intlayer
56
57
  pnpm add vite-intlayer --save-dev
58
+ pnpm intlayer init
57
59
  ```
58
60
 
59
61
  ```bash packageManager="yarn"
60
62
  yarn add intlayer preact-intlayer
61
63
  yarn add vite-intlayer --save-dev
64
+ yarn intlayer init
65
+ ```
66
+
67
+ ```bash packageManager="bun"
68
+ bun add intlayer preact-intlayer
69
+ bun add vite-intlayer --dev
70
+ bunx intlayer init
62
71
  ```
63
72
 
64
73
  - **intlayer**
@@ -633,10 +642,12 @@ Primero, instale `preact-iso`:
633
642
 
634
643
  ```bash packageManager="npm"
635
644
  npm install preact-iso
645
+ npx intlayer init
636
646
  ```
637
647
 
638
648
  ```bash packageManager="pnpm"
639
649
  pnpm add preact-iso
650
+ pnpm intlayer init
640
651
  ```
641
652
 
642
653
  ```bash packageManager="yarn"
@@ -1459,8 +1470,7 @@ import { useLocale, useLocation, route } from "preact-intlayer"; // Asumiendo qu
1459
1470
  import type { JSX } from "preact"; // Para HTMLAttributes
1460
1471
  import { forwardRef } from "preact/compat"; // Para reenviar refs
1461
1472
 
1462
- export interface LocalizedLinkProps
1463
- extends JSX.HTMLAttributes<HTMLAnchorElement> {
1473
+ export interface LocalizedLinkProps extends JSX.HTMLAttributes<HTMLAnchorElement> {
1464
1474
  href: string;
1465
1475
  replace?: boolean; // Opcional: para reemplazar el estado del historial
1466
1476
  }
@@ -72,16 +72,25 @@ Instala los paquetes necesarios usando npm:
72
72
  ```bash packageManager="npm"
73
73
  npm install intlayer react-intlayer
74
74
  npm install vite-intlayer --save-dev
75
+ npx intlayer init
75
76
  ```
76
77
 
77
78
  ```bash packageManager="pnpm"
78
79
  pnpm add intlayer react-intlayer
79
80
  pnpm add vite-intlayer --save-dev
81
+ pnpm intlayer init
80
82
  ```
81
83
 
82
84
  ```bash packageManager="yarn"
83
85
  yarn add intlayer react-intlayer
84
86
  yarn add vite-intlayer --save-dev
87
+ yarn intlayer init
88
+ ```
89
+
90
+ ```bash packageManager="bun"
91
+ bun add intlayer react-intlayer
92
+ bun add vite-intlayer --dev
93
+ bunx intlayer init
85
94
  ```
86
95
 
87
96
  - **intlayer**
@@ -49,16 +49,25 @@ Instala los paquetes necesarios usando npm:
49
49
  ```bash packageManager="npm"
50
50
  npm install intlayer solid-intlayer
51
51
  npm install vite-intlayer --save-dev
52
+ npx intlayer init
52
53
  ```
53
54
 
54
55
  ```bash packageManager="pnpm"
55
56
  pnpm add intlayer solid-intlayer
56
57
  pnpm add vite-intlayer --save-dev
58
+ pnpm intlayer init
57
59
  ```
58
60
 
59
61
  ```bash packageManager="yarn"
60
62
  yarn add intlayer solid-intlayer
61
63
  yarn add vite-intlayer --save-dev
64
+ yarn intlayer init
65
+ ```
66
+
67
+ ```bash packageManager="bun"
68
+ bun add intlayer solid-intlayer
69
+ bun add vite-intlayer --dev
70
+ bunx intlayer init
62
71
  ```
63
72
 
64
73
  - **intlayer**
@@ -62,21 +62,25 @@ Instala los paquetes necesarios usando npm:
62
62
  ```bash packageManager="npm"
63
63
  npm install intlayer svelte-intlayer
64
64
  npm install vite-intlayer --save-dev
65
+ npx intlayer init
65
66
  ```
66
67
 
67
68
  ```bash packageManager="pnpm"
68
69
  pnpm add intlayer svelte-intlayer
69
70
  pnpm add vite-intlayer --save-dev
71
+ pnpm intlayer init
70
72
  ```
71
73
 
72
74
  ```bash packageManager="yarn"
73
75
  yarn add intlayer svelte-intlayer
74
76
  yarn add vite-intlayer --save-dev
77
+ yarn intlayer init
75
78
  ```
76
79
 
77
80
  ```bash packageManager="bun"
78
81
  bun add intlayer svelte-intlayer
79
82
  bun add vite-intlayer --save-dev
83
+ bunx intlayer init
80
84
  ```
81
85
 
82
86
  - **intlayer**
@@ -302,14 +306,17 @@ Primero, instala `svelte-spa-router`:
302
306
 
303
307
  ```bash packageManager="npm"
304
308
  npm install svelte-spa-router
309
+ npx intlayer init
305
310
  ```
306
311
 
307
312
  ```bash packageManager="pnpm"
308
313
  pnpm add svelte-spa-router
314
+ pnpm intlayer init
309
315
  ```
310
316
 
311
317
  ```bash packageManager="yarn"
312
318
  yarn add svelte-spa-router
319
+ yarn intlayer init
313
320
  ```
314
321
 
315
322
  ```bash packageManager="bun"
@@ -67,16 +67,25 @@ Instala los paquetes necesarios usando npm:
67
67
  ```bash packageManager="npm"
68
68
  npm install intlayer vue-intlayer
69
69
  npm install vite-intlayer --save-dev
70
+ npx intlayer init
70
71
  ```
71
72
 
72
73
  ```bash packageManager="pnpm"
73
74
  pnpm add intlayer vue-intlayer
74
75
  pnpm add vite-intlayer --save-dev
76
+ pnpm intlayer init
75
77
  ```
76
78
 
77
79
  ```bash packageManager="yarn"
78
80
  yarn add intlayer vue-intlayer
79
81
  yarn add vite-intlayer --save-dev
82
+ yarn intlayer init
83
+ ```
84
+
85
+ ```bash packageManager="bun"
86
+ bun add intlayer vue-intlayer
87
+ bun add vite-intlayer --dev
88
+ bunx intlayer init
80
89
  ```
81
90
 
82
91
  - **intlayer**
@@ -607,10 +616,12 @@ Primero, instala Vue Router:
607
616
 
608
617
  ```bash packageManager="npm"
609
618
  npm install vue-router
619
+ npx intlayer init
610
620
  ```
611
621
 
612
622
  ```bash packageManager="pnpm"
613
623
  pnpm add vue-router
624
+ pnpm intlayer init
614
625
  ```
615
626
 
616
627
  ```bash packageManager="yarn"
@@ -53,6 +53,11 @@ yarn add next-intlayer
53
53
  pnpm add next-intlayer
54
54
  ```
55
55
 
56
+ ```bash packageManager="bun"
57
+ bun add next-intlayer
58
+ bunx intlayer init
59
+ ```
60
+
56
61
  ## Ejemplo de uso
57
62
 
58
63
  Con Intlayer, puedes declarar tu contenido de manera estructurada en cualquier parte de tu base de código.
@@ -53,6 +53,11 @@ yarn add react-intlayer
53
53
  pnpm add react-intlayer
54
54
  ```
55
55
 
56
+ ```bash packageManager="bun"
57
+ bun add react-intlayer
58
+ bunx intlayer init
59
+ ```
60
+
56
61
  ## Ejemplo de uso
57
62
 
58
63
  Con Intlayer, puedes declarar tu contenido de manera estructurada en cualquier parte de tu base de código.