@intlayer/docs 5.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 (1135) hide show
  1. package/LICENSE +202 -0
  2. package/ar/CI_CD.md +149 -0
  3. package/ar/autoFill.md +157 -0
  4. package/ar/concept/content/file.md +1 -0
  5. package/ar/configuration.md +492 -0
  6. package/ar/dictionary/condition.md +213 -0
  7. package/ar/dictionary/content_extention_customization.md +81 -0
  8. package/ar/dictionary/enumeration.md +221 -0
  9. package/ar/dictionary/file.md +209 -0
  10. package/ar/dictionary/function_fetching.md +190 -0
  11. package/ar/dictionary/get_started.md +490 -0
  12. package/ar/dictionary/insertion.md +161 -0
  13. package/ar/dictionary/markdown.md +343 -0
  14. package/ar/dictionary/nesting.md +249 -0
  15. package/ar/dictionary/translation.md +307 -0
  16. package/ar/header.md +7 -0
  17. package/ar/how_works_intlayer.md +219 -0
  18. package/ar/index.md +125 -0
  19. package/ar/interest_of_intlayer.md +132 -0
  20. package/ar/intlayer_CMS.md +328 -0
  21. package/ar/intlayer_cli.md +258 -0
  22. package/ar/intlayer_visual_editor.md +210 -0
  23. package/ar/intlayer_with_angular.md +3 -0
  24. package/ar/intlayer_with_create_react_app.md +1196 -0
  25. package/ar/intlayer_with_express.md +270 -0
  26. package/ar/intlayer_with_lynx+react.md +482 -0
  27. package/ar/intlayer_with_nextjs_14.md +1260 -0
  28. package/ar/intlayer_with_nextjs_15.md +1311 -0
  29. package/ar/intlayer_with_nextjs_page_router.md +1099 -0
  30. package/ar/intlayer_with_react_native+expo.md +539 -0
  31. package/ar/intlayer_with_vite+preact.md +1679 -0
  32. package/ar/intlayer_with_vite+react.md +1582 -0
  33. package/ar/intlayer_with_vite+solid.md +3 -0
  34. package/ar/intlayer_with_vite+svelte.md +3 -0
  35. package/ar/intlayer_with_vite+vue.md +989 -0
  36. package/ar/introduction.md +190 -0
  37. package/ar/mcp_server.md +150 -0
  38. package/ar/packages/@intlayer/api/index.md +31 -0
  39. package/ar/packages/@intlayer/chokidar/index.md +31 -0
  40. package/ar/packages/@intlayer/cli/index.md +1 -0
  41. package/ar/packages/@intlayer/config/index.md +116 -0
  42. package/ar/packages/@intlayer/core/index.md +25 -0
  43. package/ar/packages/@intlayer/design-system/index.md +21 -0
  44. package/ar/packages/@intlayer/dictionary-entry/index.md +21 -0
  45. package/ar/packages/@intlayer/editor/index.md +21 -0
  46. package/ar/packages/@intlayer/editor-react/index.md +21 -0
  47. package/ar/packages/@intlayer/webpack/index.md +35 -0
  48. package/ar/packages/angular-intlayer/index.md +3 -0
  49. package/ar/packages/express-intlayer/index.md +232 -0
  50. package/ar/packages/express-intlayer/t.md +448 -0
  51. package/ar/packages/intlayer/getConfiguration.md +120 -0
  52. package/ar/packages/intlayer/getEnumeration.md +138 -0
  53. package/ar/packages/intlayer/getHTMLTextDir.md +97 -0
  54. package/ar/packages/intlayer/getLocaleLang.md +61 -0
  55. package/ar/packages/intlayer/getLocaleName.md +93 -0
  56. package/ar/packages/intlayer/getLocalizedUrl.md +221 -0
  57. package/ar/packages/intlayer/getMultilingualUrls.md +198 -0
  58. package/ar/packages/intlayer/getPathWithoutLocale.md +50 -0
  59. package/ar/packages/intlayer/getTranslation.md +175 -0
  60. package/ar/packages/intlayer/getTranslationContent.md +175 -0
  61. package/ar/packages/intlayer/index.md +254 -0
  62. package/ar/packages/intlayer-cli/index.md +41 -0
  63. package/ar/packages/intlayer-editor/index.md +113 -0
  64. package/ar/packages/lynx-intlayer/index.md +58 -0
  65. package/ar/packages/next-intlayer/index.md +267 -0
  66. package/ar/packages/next-intlayer/t.md +341 -0
  67. package/ar/packages/next-intlayer/useDictionary.md +248 -0
  68. package/ar/packages/next-intlayer/useIntlayer.md +237 -0
  69. package/ar/packages/next-intlayer/useIntlayerAsync.md +211 -0
  70. package/ar/packages/next-intlayer/useLocale.md +105 -0
  71. package/ar/packages/preact-intlayer/index.md +3 -0
  72. package/ar/packages/react-intlayer/index.md +261 -0
  73. package/ar/packages/react-intlayer/t.md +283 -0
  74. package/ar/packages/react-intlayer/useDictionary.md +268 -0
  75. package/ar/packages/react-intlayer/useIntlayer.md +225 -0
  76. package/ar/packages/react-intlayer/useIntlayerAsync.md +226 -0
  77. package/ar/packages/react-intlayer/useLocale.md +184 -0
  78. package/ar/packages/react-native-intlayer/index.md +57 -0
  79. package/ar/packages/react-scripts-intlayer/index.md +57 -0
  80. package/ar/packages/solid-intlayer/index.md +3 -0
  81. package/ar/packages/svelte-intlayer/index.md +3 -0
  82. package/ar/packages/vite-intlayer/index.md +53 -0
  83. package/ar/packages/vue-intlayer/index.md +3 -0
  84. package/ar/per_locale_file.md +298 -0
  85. package/ar/privacy_notice.md +61 -0
  86. package/ar/roadmap.md +208 -0
  87. package/ar/terms_of_service.md +33 -0
  88. package/ar/vs_code_extension.md +139 -0
  89. package/de/CI_CD.md +149 -0
  90. package/de/angular-intlayer/index.md +3 -0
  91. package/de/autoFill.md +157 -0
  92. package/de/configuration.md +501 -0
  93. package/de/dictionary/condition.md +213 -0
  94. package/de/dictionary/content_extention_customization.md +81 -0
  95. package/de/dictionary/enumeration.md +221 -0
  96. package/de/dictionary/file.md +207 -0
  97. package/de/dictionary/function_fetching.md +190 -0
  98. package/de/dictionary/get_started.md +466 -0
  99. package/de/dictionary/insertion.md +167 -0
  100. package/de/dictionary/markdown.md +345 -0
  101. package/de/dictionary/nesting.md +252 -0
  102. package/de/dictionary/translation.md +287 -0
  103. package/de/header.md +5 -0
  104. package/de/how_works_intlayer.md +216 -0
  105. package/de/index.md +125 -0
  106. package/de/insertion.md +0 -0
  107. package/de/interest_of_intlayer.md +132 -0
  108. package/de/intlayer_CMS.md +334 -0
  109. package/de/intlayer_cli.md +274 -0
  110. package/de/intlayer_visual_editor.md +210 -0
  111. package/de/intlayer_with_angular.md +3 -0
  112. package/de/intlayer_with_create_react_app.md +1200 -0
  113. package/de/intlayer_with_express.md +268 -0
  114. package/de/intlayer_with_lynx+react.md +482 -0
  115. package/de/intlayer_with_nextjs_14.md +1258 -0
  116. package/de/intlayer_with_nextjs_15.md +1306 -0
  117. package/de/intlayer_with_nextjs_page_router.md +1087 -0
  118. package/de/intlayer_with_react_native+expo.md +539 -0
  119. package/de/intlayer_with_vite+preact.md +1701 -0
  120. package/de/intlayer_with_vite+react.md +1584 -0
  121. package/de/intlayer_with_vite+solid.md +3 -0
  122. package/de/intlayer_with_vite+svelte.md +3 -0
  123. package/de/intlayer_with_vite+vue.md +989 -0
  124. package/de/introduction.md +186 -0
  125. package/de/mcp_server.md +150 -0
  126. package/de/packages/@intlayer/api/index.md +31 -0
  127. package/de/packages/@intlayer/chokidar/index.md +31 -0
  128. package/de/packages/@intlayer/cli/index.md +21 -0
  129. package/de/packages/@intlayer/config/index.md +116 -0
  130. package/de/packages/@intlayer/core/index.md +25 -0
  131. package/de/packages/@intlayer/design-system/index.md +21 -0
  132. package/de/packages/@intlayer/dictionary-entry/index.md +21 -0
  133. package/de/packages/@intlayer/editor/index.md +21 -0
  134. package/de/packages/@intlayer/editor-react/index.md +21 -0
  135. package/de/packages/@intlayer/webpack/index.md +35 -0
  136. package/de/packages/angular-intlayer/index.md +31 -0
  137. package/de/packages/express-intlayer/index.md +229 -0
  138. package/de/packages/express-intlayer/t.md +432 -0
  139. package/de/packages/intlayer/getConfiguration.md +120 -0
  140. package/de/packages/intlayer/getEnumeration.md +140 -0
  141. package/de/packages/intlayer/getHTMLTextDir.md +97 -0
  142. package/de/packages/intlayer/getLocaleLang.md +57 -0
  143. package/de/packages/intlayer/getLocaleName.md +93 -0
  144. package/de/packages/intlayer/getLocalizedUrl.md +221 -0
  145. package/de/packages/intlayer/getMultilingualUrls.md +198 -0
  146. package/de/packages/intlayer/getPathWithoutLocale.md +50 -0
  147. package/de/packages/intlayer/getTranslation.md +166 -0
  148. package/de/packages/intlayer/getTranslationContent.md +166 -0
  149. package/de/packages/intlayer/index.md +478 -0
  150. package/de/packages/intlayer-cli/index.md +41 -0
  151. package/de/packages/intlayer-editor/index.md +113 -0
  152. package/de/packages/lynx-intlayer/index.md +58 -0
  153. package/de/packages/next-intlayer/index.md +263 -0
  154. package/de/packages/next-intlayer/t.md +325 -0
  155. package/de/packages/next-intlayer/useDictionary.md +242 -0
  156. package/de/packages/next-intlayer/useIntlayer.md +237 -0
  157. package/de/packages/next-intlayer/useIntlayerAsync.md +211 -0
  158. package/de/packages/next-intlayer/useLocale.md +105 -0
  159. package/de/packages/preact-intlayer/index.md +3 -0
  160. package/de/packages/react-intlayer/index.md +260 -0
  161. package/de/packages/react-intlayer/t.md +277 -0
  162. package/de/packages/react-intlayer/useDictionary.md +260 -0
  163. package/de/packages/react-intlayer/useIntlayer.md +225 -0
  164. package/de/packages/react-intlayer/useIntlayerAsync.md +226 -0
  165. package/de/packages/react-intlayer/useLocale.md +184 -0
  166. package/de/packages/react-native-intlayer/index.md +57 -0
  167. package/de/packages/react-scripts-intlayer/index.md +57 -0
  168. package/de/packages/solid-intlayer/index.md +3 -0
  169. package/de/packages/svelte-intlayer/index.md +3 -0
  170. package/de/packages/vite-intlayer/index.md +53 -0
  171. package/de/packages/vue-intlayer/index.md +3 -0
  172. package/de/per_locale_file.md +298 -0
  173. package/de/privacy_notice.md +61 -0
  174. package/de/roadmap.md +206 -0
  175. package/de/terms_of_service.md +33 -0
  176. package/de/vs_code_extension.md +139 -0
  177. package/en/CI_CD.md +149 -0
  178. package/en/autoFill.md +157 -0
  179. package/en/configuration.md +506 -0
  180. package/en/dictionary/condition.md +213 -0
  181. package/en/dictionary/content_extention_customization.md +81 -0
  182. package/en/dictionary/enumeration.md +221 -0
  183. package/en/dictionary/file.md +198 -0
  184. package/en/dictionary/function_fetching.md +190 -0
  185. package/en/dictionary/get_started.md +504 -0
  186. package/en/dictionary/insertion.md +167 -0
  187. package/en/dictionary/markdown.md +355 -0
  188. package/en/dictionary/nesting.md +249 -0
  189. package/en/dictionary/translation.md +285 -0
  190. package/en/frequent_questions/build_dictionaries.md +37 -0
  191. package/en/frequent_questions/domain_routing.md +92 -0
  192. package/en/frequent_questions/esbuild_error.md +9 -0
  193. package/en/frequent_questions/get_locale_cookie.md +121 -0
  194. package/en/frequent_questions/intlayer_command_undefined.md +135 -0
  195. package/en/frequent_questions/locale_incorect_in_url.md +52 -0
  196. package/en/frequent_questions/static_rendering.md +24 -0
  197. package/en/frequent_questions/unknown_command.md +76 -0
  198. package/en/header.md +5 -0
  199. package/en/how_works_intlayer.md +219 -0
  200. package/en/index.md +139 -0
  201. package/en/interest_of_intlayer.md +133 -0
  202. package/en/intlayer_CMS.md +334 -0
  203. package/en/intlayer_cli.md +309 -0
  204. package/en/intlayer_visual_editor.md +244 -0
  205. package/en/intlayer_with_angular.md +139 -0
  206. package/en/intlayer_with_create_react_app.md +1209 -0
  207. package/en/intlayer_with_express.md +391 -0
  208. package/en/intlayer_with_lynx+react.md +483 -0
  209. package/en/intlayer_with_nextjs_14.md +1298 -0
  210. package/en/intlayer_with_nextjs_15.md +1347 -0
  211. package/en/intlayer_with_nextjs_page_router.md +1126 -0
  212. package/en/intlayer_with_react_native+expo.md +630 -0
  213. package/en/intlayer_with_vite+preact.md +1659 -0
  214. package/en/intlayer_with_vite+react.md +1605 -0
  215. package/en/intlayer_with_vite+solid.md +254 -0
  216. package/en/intlayer_with_vite+svelte.md +254 -0
  217. package/en/intlayer_with_vite+vue.md +1000 -0
  218. package/en/introduction.md +185 -0
  219. package/en/mcp_server.md +150 -0
  220. package/en/packages/@intlayer/api/index.md +31 -0
  221. package/en/packages/@intlayer/chokidar/index.md +31 -0
  222. package/en/packages/@intlayer/cli/index.md +21 -0
  223. package/en/packages/@intlayer/config/index.md +116 -0
  224. package/en/packages/@intlayer/core/index.md +25 -0
  225. package/en/packages/@intlayer/design-system/index.md +21 -0
  226. package/en/packages/@intlayer/dictionary-entry/index.md +21 -0
  227. package/en/packages/@intlayer/editor/index.md +21 -0
  228. package/en/packages/@intlayer/editor-react/index.md +21 -0
  229. package/en/packages/@intlayer/webpack/index.md +35 -0
  230. package/en/packages/angular-intlayer/index.md +31 -0
  231. package/en/packages/express-intlayer/index.md +229 -0
  232. package/en/packages/express-intlayer/t.md +432 -0
  233. package/en/packages/intlayer/getConfiguration.md +120 -0
  234. package/en/packages/intlayer/getEnumeration.md +138 -0
  235. package/en/packages/intlayer/getHTMLTextDir.md +97 -0
  236. package/en/packages/intlayer/getLocaleLang.md +57 -0
  237. package/en/packages/intlayer/getLocaleName.md +93 -0
  238. package/en/packages/intlayer/getLocalizedUrl.md +221 -0
  239. package/en/packages/intlayer/getMultilingualUrls.md +198 -0
  240. package/en/packages/intlayer/getPathWithoutLocale.md +50 -0
  241. package/en/packages/intlayer/getTranslation.md +166 -0
  242. package/en/packages/intlayer/getTranslationContent.md +166 -0
  243. package/en/packages/intlayer/index.md +476 -0
  244. package/en/packages/intlayer-cli/index.md +41 -0
  245. package/en/packages/intlayer-editor/index.md +113 -0
  246. package/en/packages/lynx-intlayer/index.md +60 -0
  247. package/en/packages/next-intlayer/index.md +263 -0
  248. package/en/packages/next-intlayer/t.md +326 -0
  249. package/en/packages/next-intlayer/useDictionary.md +242 -0
  250. package/en/packages/next-intlayer/useIntlayer.md +237 -0
  251. package/en/packages/next-intlayer/useIntlayerAsync.md +211 -0
  252. package/en/packages/next-intlayer/useLocale.md +105 -0
  253. package/en/packages/preact-intlayer/index.md +31 -0
  254. package/en/packages/react-intlayer/index.md +257 -0
  255. package/en/packages/react-intlayer/t.md +277 -0
  256. package/en/packages/react-intlayer/useDictionary.md +260 -0
  257. package/en/packages/react-intlayer/useIntlayer.md +225 -0
  258. package/en/packages/react-intlayer/useIntlayerAsync.md +226 -0
  259. package/en/packages/react-intlayer/useLocale.md +184 -0
  260. package/en/packages/react-native-intlayer/index.md +59 -0
  261. package/en/packages/react-scripts-intlayer/index.md +57 -0
  262. package/en/packages/solid-intlayer/index.md +31 -0
  263. package/en/packages/svelte-intlayer/index.md +31 -0
  264. package/en/packages/vite-intlayer/index.md +53 -0
  265. package/en/packages/vue-intlayer/index.md +31 -0
  266. package/en/per_locale_file.md +297 -0
  267. package/en/privacy_notice.md +61 -0
  268. package/en/roadmap.md +270 -0
  269. package/en/t.md +163 -0
  270. package/en/terms_of_service.md +33 -0
  271. package/en/vs_code_extension.md +129 -0
  272. package/en-GB/CI_CD.md +149 -0
  273. package/en-GB/autoFill.md +0 -0
  274. package/en-GB/configuration.md +490 -0
  275. package/en-GB/dictionary/condition.md +213 -0
  276. package/en-GB/dictionary/content_extention_customization.md +83 -0
  277. package/en-GB/dictionary/enumeration.md +221 -0
  278. package/en-GB/dictionary/file.md +201 -0
  279. package/en-GB/dictionary/function_fetching.md +190 -0
  280. package/en-GB/dictionary/get_started.md +466 -0
  281. package/en-GB/dictionary/insertion.md +167 -0
  282. package/en-GB/dictionary/markdown.md +343 -0
  283. package/en-GB/dictionary/nesting.md +249 -0
  284. package/en-GB/dictionary/translation.md +285 -0
  285. package/en-GB/header.md +1 -0
  286. package/en-GB/how_works_intlayer.md +217 -0
  287. package/en-GB/index.md +142 -0
  288. package/en-GB/interest_of_intlayer.md +123 -0
  289. package/en-GB/intlayer_CMS.md +334 -0
  290. package/en-GB/intlayer_cli.md +239 -0
  291. package/en-GB/intlayer_visual_editor.md +210 -0
  292. package/en-GB/intlayer_with_angular.md +3 -0
  293. package/en-GB/intlayer_with_create_react_app.md +1192 -0
  294. package/en-GB/intlayer_with_express.md +267 -0
  295. package/en-GB/intlayer_with_lynx+react.md +484 -0
  296. package/en-GB/intlayer_with_nextjs_14.md +1267 -0
  297. package/en-GB/intlayer_with_nextjs_15.md +1308 -0
  298. package/en-GB/intlayer_with_nextjs_page_router.md +1087 -0
  299. package/en-GB/intlayer_with_react_native+expo.md +539 -0
  300. package/en-GB/intlayer_with_vite+preact.md +1648 -0
  301. package/en-GB/intlayer_with_vite+react.md +1430 -0
  302. package/en-GB/intlayer_with_vite+solid.md +3 -0
  303. package/en-GB/intlayer_with_vite+svelte.md +3 -0
  304. package/en-GB/intlayer_with_vite+vue.md +993 -0
  305. package/en-GB/introduction.md +201 -0
  306. package/en-GB/mcp_server.md +150 -0
  307. package/en-GB/packages/@intlayer/api/index.md +31 -0
  308. package/en-GB/packages/@intlayer/chokidar/index.md +31 -0
  309. package/en-GB/packages/@intlayer/cli/index.md +21 -0
  310. package/en-GB/packages/@intlayer/config/index.md +116 -0
  311. package/en-GB/packages/@intlayer/core/index.md +25 -0
  312. package/en-GB/packages/@intlayer/design-system/index.md +21 -0
  313. package/en-GB/packages/@intlayer/dictionary-entry/index.md +21 -0
  314. package/en-GB/packages/@intlayer/editor/index.md +21 -0
  315. package/en-GB/packages/@intlayer/editor-react/index.md +21 -0
  316. package/en-GB/packages/@intlayer/webpack/index.md +35 -0
  317. package/en-GB/packages/angular-intlayer/index.md +3 -0
  318. package/en-GB/packages/express-intlayer/index.md +229 -0
  319. package/en-GB/packages/express-intlayer/t.md +432 -0
  320. package/en-GB/packages/intlayer/getConfiguration.md +120 -0
  321. package/en-GB/packages/intlayer/getEnumeration.md +140 -0
  322. package/en-GB/packages/intlayer/getHTMLTextDir.md +97 -0
  323. package/en-GB/packages/intlayer/getLocaleLang.md +57 -0
  324. package/en-GB/packages/intlayer/getLocaleName.md +93 -0
  325. package/en-GB/packages/intlayer/getLocalizedUrl.md +221 -0
  326. package/en-GB/packages/intlayer/getMultilingualUrls.md +198 -0
  327. package/en-GB/packages/intlayer/getPathWithoutLocale.md +50 -0
  328. package/en-GB/packages/intlayer/getTranslation.md +166 -0
  329. package/en-GB/packages/intlayer/getTranslationContent.md +166 -0
  330. package/en-GB/packages/intlayer/index.md +476 -0
  331. package/en-GB/packages/intlayer-cli/index.md +41 -0
  332. package/en-GB/packages/intlayer-editor/index.md +113 -0
  333. package/en-GB/packages/lynx-intlayer/index.md +58 -0
  334. package/en-GB/packages/next-intlayer/index.md +263 -0
  335. package/en-GB/packages/next-intlayer/t.md +326 -0
  336. package/en-GB/packages/next-intlayer/useDictionary.md +242 -0
  337. package/en-GB/packages/next-intlayer/useIntlayer.md +237 -0
  338. package/en-GB/packages/next-intlayer/useIntlayerAsync.md +211 -0
  339. package/en-GB/packages/next-intlayer/useLocale.md +105 -0
  340. package/en-GB/packages/preact-intlayer/index.md +3 -0
  341. package/en-GB/packages/react-intlayer/index.md +257 -0
  342. package/en-GB/packages/react-intlayer/t.md +277 -0
  343. package/en-GB/packages/react-intlayer/useDictionary.md +260 -0
  344. package/en-GB/packages/react-intlayer/useIntlayer.md +225 -0
  345. package/en-GB/packages/react-intlayer/useIntlayerAsync.md +226 -0
  346. package/en-GB/packages/react-intlayer/useLocale.md +184 -0
  347. package/en-GB/packages/react-native-intlayer/index.md +57 -0
  348. package/en-GB/packages/react-scripts-intlayer/index.md +57 -0
  349. package/en-GB/packages/solid-intlayer/index.md +3 -0
  350. package/en-GB/packages/svelte-intlayer/index.md +3 -0
  351. package/en-GB/packages/vite-intlayer/index.md +53 -0
  352. package/en-GB/packages/vue-intlayer/index.md +3 -0
  353. package/en-GB/per_locale_file.md +298 -0
  354. package/en-GB/privacy_notice.md +57 -0
  355. package/en-GB/roadmap.md +206 -0
  356. package/en-GB/terms_of_service.md +33 -0
  357. package/en-GB/vs_code_extension.md +139 -0
  358. package/es/CI_CD.md +149 -0
  359. package/es/autoFill.md +157 -0
  360. package/es/configuration.md +503 -0
  361. package/es/dictionary/condition.md +213 -0
  362. package/es/dictionary/content_extention_customization.md +81 -0
  363. package/es/dictionary/enumeration.md +221 -0
  364. package/es/dictionary/file.md +206 -0
  365. package/es/dictionary/function_fetching.md +190 -0
  366. package/es/dictionary/get_started.md +466 -0
  367. package/es/dictionary/insertion.md +161 -0
  368. package/es/dictionary/markdown.md +338 -0
  369. package/es/dictionary/nesting.md +249 -0
  370. package/es/dictionary/translation.md +287 -0
  371. package/es/header.md +5 -0
  372. package/es/how_works_intlayer.md +217 -0
  373. package/es/index.md +122 -0
  374. package/es/interest_of_intlayer.md +132 -0
  375. package/es/intlayer_CMS.md +334 -0
  376. package/es/intlayer_cli.md +274 -0
  377. package/es/intlayer_visual_editor.md +210 -0
  378. package/es/intlayer_with_angular.md +3 -0
  379. package/es/intlayer_with_create_react_app.md +1192 -0
  380. package/es/intlayer_with_express.md +276 -0
  381. package/es/intlayer_with_lynx+react.md +475 -0
  382. package/es/intlayer_with_nextjs_14.md +1258 -0
  383. package/es/intlayer_with_nextjs_15.md +1308 -0
  384. package/es/intlayer_with_nextjs_page_router.md +1088 -0
  385. package/es/intlayer_with_react_native+expo.md +180 -0
  386. package/es/intlayer_with_vite+preact.md +1637 -0
  387. package/es/intlayer_with_vite+react.md +1592 -0
  388. package/es/intlayer_with_vite+solid.md +3 -0
  389. package/es/intlayer_with_vite+svelte.md +3 -0
  390. package/es/intlayer_with_vite+vue.md +947 -0
  391. package/es/introduction.md +184 -0
  392. package/es/mcp_server.md +150 -0
  393. package/es/packages/@intlayer/api/index.md +31 -0
  394. package/es/packages/@intlayer/chokidar/index.md +31 -0
  395. package/es/packages/@intlayer/cli/index.md +21 -0
  396. package/es/packages/@intlayer/config/index.md +116 -0
  397. package/es/packages/@intlayer/core/index.md +25 -0
  398. package/es/packages/@intlayer/design-system/index.md +21 -0
  399. package/es/packages/@intlayer/dictionary-entry/index.md +21 -0
  400. package/es/packages/@intlayer/editor/index.md +21 -0
  401. package/es/packages/@intlayer/editor-react/index.md +21 -0
  402. package/es/packages/@intlayer/webpack/index.md +35 -0
  403. package/es/packages/angular-intlayer/index.md +3 -0
  404. package/es/packages/express-intlayer/index.md +229 -0
  405. package/es/packages/express-intlayer/t.md +432 -0
  406. package/es/packages/intlayer/getConfiguration.md +120 -0
  407. package/es/packages/intlayer/getEnumeration.md +138 -0
  408. package/es/packages/intlayer/getHTMLTextDir.md +97 -0
  409. package/es/packages/intlayer/getLocaleLang.md +57 -0
  410. package/es/packages/intlayer/getLocaleName.md +93 -0
  411. package/es/packages/intlayer/getLocalizedUrl.md +221 -0
  412. package/es/packages/intlayer/getMultilingualUrls.md +198 -0
  413. package/es/packages/intlayer/getPathWithoutLocale.md +50 -0
  414. package/es/packages/intlayer/getTranslation.md +166 -0
  415. package/es/packages/intlayer/getTranslationContent.md +166 -0
  416. package/es/packages/intlayer/index.md +478 -0
  417. package/es/packages/intlayer-cli/index.md +41 -0
  418. package/es/packages/intlayer-editor/index.md +115 -0
  419. package/es/packages/lynx-intlayer/index.md +58 -0
  420. package/es/packages/next-intlayer/index.md +263 -0
  421. package/es/packages/next-intlayer/t.md +325 -0
  422. package/es/packages/next-intlayer/useDictionary.md +242 -0
  423. package/es/packages/next-intlayer/useIntlayer.md +237 -0
  424. package/es/packages/next-intlayer/useIntlayerAsync.md +211 -0
  425. package/es/packages/next-intlayer/useLocale.md +105 -0
  426. package/es/packages/preact-intlayer/index.md +3 -0
  427. package/es/packages/react-intlayer/index.md +263 -0
  428. package/es/packages/react-intlayer/t.md +277 -0
  429. package/es/packages/react-intlayer/useDictionary.md +270 -0
  430. package/es/packages/react-intlayer/useIntlayer.md +225 -0
  431. package/es/packages/react-intlayer/useIntlayerAsync.md +226 -0
  432. package/es/packages/react-intlayer/useLocale.md +184 -0
  433. package/es/packages/react-native-intlayer/index.md +57 -0
  434. package/es/packages/react-scripts-intlayer/index.md +57 -0
  435. package/es/packages/solid-intlayer/index.md +3 -0
  436. package/es/packages/svelte-intlayer/index.md +5 -0
  437. package/es/packages/vite-intlayer/index.md +53 -0
  438. package/es/packages/vue-intlayer/index.md +3 -0
  439. package/es/per_locale_file.md +293 -0
  440. package/es/privacy_notice.md +61 -0
  441. package/es/roadmap.md +157 -0
  442. package/es/terms_of_service.md +33 -0
  443. package/es/vs_code_extension.md +139 -0
  444. package/fr/CI_CD.md +149 -0
  445. package/fr/autoFill.md +157 -0
  446. package/fr/configuration.md +481 -0
  447. package/fr/dictionary/condition.md +213 -0
  448. package/fr/dictionary/content_extention_customization.md +81 -0
  449. package/fr/dictionary/enumeration.md +221 -0
  450. package/fr/dictionary/file.md +206 -0
  451. package/fr/dictionary/function_fetching.md +190 -0
  452. package/fr/dictionary/get_started.md +466 -0
  453. package/fr/dictionary/insertion.md +161 -0
  454. package/fr/dictionary/markdown.md +335 -0
  455. package/fr/dictionary/nesting.md +249 -0
  456. package/fr/dictionary/translation.md +287 -0
  457. package/fr/header.md +5 -0
  458. package/fr/how_works_intlayer.md +217 -0
  459. package/fr/index.md +122 -0
  460. package/fr/interest_of_intlayer.md +132 -0
  461. package/fr/intlayer_CMS.md +334 -0
  462. package/fr/intlayer_cli.md +274 -0
  463. package/fr/intlayer_visual_editor.md +210 -0
  464. package/fr/intlayer_with_angular.md +3 -0
  465. package/fr/intlayer_with_create_react_app.md +1192 -0
  466. package/fr/intlayer_with_express.md +270 -0
  467. package/fr/intlayer_with_lynx+react.md +466 -0
  468. package/fr/intlayer_with_nextjs_14.md +1258 -0
  469. package/fr/intlayer_with_nextjs_15.md +1308 -0
  470. package/fr/intlayer_with_nextjs_page_router.md +1085 -0
  471. package/fr/intlayer_with_react_native+expo.md +535 -0
  472. package/fr/intlayer_with_vite+preact.md +1621 -0
  473. package/fr/intlayer_with_vite+react.md +1589 -0
  474. package/fr/intlayer_with_vite+solid.md +3 -0
  475. package/fr/intlayer_with_vite+svelte.md +3 -0
  476. package/fr/intlayer_with_vite+vue.md +947 -0
  477. package/fr/introduction.md +190 -0
  478. package/fr/mcp_server.md +152 -0
  479. package/fr/packages/@intlayer/api/index.md +31 -0
  480. package/fr/packages/@intlayer/chokidar/index.md +31 -0
  481. package/fr/packages/@intlayer/cli/index.md +21 -0
  482. package/fr/packages/@intlayer/config/index.md +116 -0
  483. package/fr/packages/@intlayer/core/index.md +25 -0
  484. package/fr/packages/@intlayer/design-system/index.md +21 -0
  485. package/fr/packages/@intlayer/dictionary-entry/index.md +21 -0
  486. package/fr/packages/@intlayer/editor/index.md +21 -0
  487. package/fr/packages/@intlayer/editor-react/index.md +21 -0
  488. package/fr/packages/@intlayer/webpack/index.md +35 -0
  489. package/fr/packages/angular-intlayer/index.md +3 -0
  490. package/fr/packages/express-intlayer/index.md +238 -0
  491. package/fr/packages/express-intlayer/t.md +432 -0
  492. package/fr/packages/intlayer/getConfiguration.md +120 -0
  493. package/fr/packages/intlayer/getEnumeration.md +138 -0
  494. package/fr/packages/intlayer/getHTMLTextDir.md +97 -0
  495. package/fr/packages/intlayer/getLocaleLang.md +57 -0
  496. package/fr/packages/intlayer/getLocaleName.md +93 -0
  497. package/fr/packages/intlayer/getLocalizedUrl.md +221 -0
  498. package/fr/packages/intlayer/getMultilingualUrls.md +198 -0
  499. package/fr/packages/intlayer/getPathWithoutLocale.md +50 -0
  500. package/fr/packages/intlayer/getTranslation.md +166 -0
  501. package/fr/packages/intlayer/getTranslationContent.md +166 -0
  502. package/fr/packages/intlayer/index.md +476 -0
  503. package/fr/packages/intlayer-cli/index.md +41 -0
  504. package/fr/packages/intlayer-editor/index.md +115 -0
  505. package/fr/packages/lynx-intlayer/index.md +58 -0
  506. package/fr/packages/next-intlayer/index.md +266 -0
  507. package/fr/packages/next-intlayer/t.md +325 -0
  508. package/fr/packages/next-intlayer/useDictionary.md +242 -0
  509. package/fr/packages/next-intlayer/useIntlayer.md +237 -0
  510. package/fr/packages/next-intlayer/useIntlayerAsync.md +211 -0
  511. package/fr/packages/next-intlayer/useLocale.md +105 -0
  512. package/fr/packages/preact-intlayer/index.md +3 -0
  513. package/fr/packages/react-intlayer/index.md +257 -0
  514. package/fr/packages/react-intlayer/t.md +277 -0
  515. package/fr/packages/react-intlayer/useDictionary.md +269 -0
  516. package/fr/packages/react-intlayer/useIntlayer.md +234 -0
  517. package/fr/packages/react-intlayer/useIntlayerAsync.md +226 -0
  518. package/fr/packages/react-intlayer/useLocale.md +184 -0
  519. package/fr/packages/react-native-intlayer/index.md +57 -0
  520. package/fr/packages/react-scripts-intlayer/index.md +57 -0
  521. package/fr/packages/solid-intlayer/index.md +3 -0
  522. package/fr/packages/svelte-intlayer/index.md +3 -0
  523. package/fr/packages/vite-intlayer/index.md +53 -0
  524. package/fr/packages/vue-intlayer/index.md +3 -0
  525. package/fr/per_locale_file.md +297 -0
  526. package/fr/privacy_notice.md +57 -0
  527. package/fr/roadmap.md +206 -0
  528. package/fr/terms_of_service.md +33 -0
  529. package/fr/vs_code_extension.md +139 -0
  530. package/hi/CI_CD.md +149 -0
  531. package/hi/autoFill.md +157 -0
  532. package/hi/configuration.md +509 -0
  533. package/hi/dictionary/condition.md +213 -0
  534. package/hi/dictionary/content_extention_customization.md +81 -0
  535. package/hi/dictionary/enumeration.md +221 -0
  536. package/hi/dictionary/file.md +209 -0
  537. package/hi/dictionary/function_fetching.md +188 -0
  538. package/hi/dictionary/get_started.md +490 -0
  539. package/hi/dictionary/insertion.md +167 -0
  540. package/hi/dictionary/markdown.md +344 -0
  541. package/hi/dictionary/nesting.md +249 -0
  542. package/hi/dictionary/translation.md +307 -0
  543. package/hi/header.md +7 -0
  544. package/hi/how_works_intlayer.md +217 -0
  545. package/hi/index.md +125 -0
  546. package/hi/interest_of_intlayer.md +132 -0
  547. package/hi/intlayer_CMS.md +334 -0
  548. package/hi/intlayer_cli.md +274 -0
  549. package/hi/intlayer_visual_editor.md +210 -0
  550. package/hi/intlayer_with_angular.md +3 -0
  551. package/hi/intlayer_with_create_react_app.md +1395 -0
  552. package/hi/intlayer_with_express.md +273 -0
  553. package/hi/intlayer_with_lynx+react.md +456 -0
  554. package/hi/intlayer_with_nextjs_14.md +1283 -0
  555. package/hi/intlayer_with_nextjs_15.md +1319 -0
  556. package/hi/intlayer_with_nextjs_page_router.md +1097 -0
  557. package/hi/intlayer_with_react_native+expo.md +554 -0
  558. package/hi/intlayer_with_vite+preact.md +1538 -0
  559. package/hi/intlayer_with_vite+react.md +1540 -0
  560. package/hi/intlayer_with_vite+solid.md +3 -0
  561. package/hi/intlayer_with_vite+svelte.md +3 -0
  562. package/hi/intlayer_with_vite+vue.md +840 -0
  563. package/hi/introduction.md +190 -0
  564. package/hi/mcp_server.md +150 -0
  565. package/hi/packages/@intlayer/api/index.md +31 -0
  566. package/hi/packages/@intlayer/chokidar/index.md +31 -0
  567. package/hi/packages/@intlayer/cli/index.md +21 -0
  568. package/hi/packages/@intlayer/config/index.md +116 -0
  569. package/hi/packages/@intlayer/core/index.md +25 -0
  570. package/hi/packages/@intlayer/design-system/index.md +21 -0
  571. package/hi/packages/@intlayer/dictionary-entry/index.md +21 -0
  572. package/hi/packages/@intlayer/editor/index.md +21 -0
  573. package/hi/packages/@intlayer/editor-react/index.md +21 -0
  574. package/hi/packages/@intlayer/webpack/index.md +35 -0
  575. package/hi/packages/angular-intlayer/index.md +3 -0
  576. package/hi/packages/express-intlayer/index.md +232 -0
  577. package/hi/packages/express-intlayer/t.md +445 -0
  578. package/hi/packages/intlayer/getConfiguration.md +120 -0
  579. package/hi/packages/intlayer/getEnumeration.md +138 -0
  580. package/hi/packages/intlayer/getHTMLTextDir.md +97 -0
  581. package/hi/packages/intlayer/getLocaleLang.md +57 -0
  582. package/hi/packages/intlayer/getLocaleName.md +93 -0
  583. package/hi/packages/intlayer/getLocalizedUrl.md +221 -0
  584. package/hi/packages/intlayer/getMultilingualUrls.md +198 -0
  585. package/hi/packages/intlayer/getPathWithoutLocale.md +50 -0
  586. package/hi/packages/intlayer/getTranslation.md +175 -0
  587. package/hi/packages/intlayer/getTranslationContent.md +175 -0
  588. package/hi/packages/intlayer/index.md +314 -0
  589. package/hi/packages/intlayer-cli/index.md +41 -0
  590. package/hi/packages/intlayer-editor/index.md +113 -0
  591. package/hi/packages/lynx-intlayer/index.md +58 -0
  592. package/hi/packages/next-intlayer/index.md +270 -0
  593. package/hi/packages/next-intlayer/t.md +337 -0
  594. package/hi/packages/next-intlayer/useDictionary.md +248 -0
  595. package/hi/packages/next-intlayer/useIntlayer.md +237 -0
  596. package/hi/packages/next-intlayer/useIntlayerAsync.md +211 -0
  597. package/hi/packages/next-intlayer/useLocale.md +105 -0
  598. package/hi/packages/preact-intlayer/index.md +3 -0
  599. package/hi/packages/react-intlayer/index.md +261 -0
  600. package/hi/packages/react-intlayer/t.md +283 -0
  601. package/hi/packages/react-intlayer/useDictionary.md +268 -0
  602. package/hi/packages/react-intlayer/useIntlayer.md +225 -0
  603. package/hi/packages/react-intlayer/useIntlayerAsync.md +226 -0
  604. package/hi/packages/react-intlayer/useLocale.md +184 -0
  605. package/hi/packages/react-native-intlayer/index.md +57 -0
  606. package/hi/packages/react-scripts-intlayer/index.md +57 -0
  607. package/hi/packages/solid-intlayer/index.md +3 -0
  608. package/hi/packages/svelte-intlayer/index.md +3 -0
  609. package/hi/packages/vite-intlayer/index.md +53 -0
  610. package/hi/packages/vue-intlayer/index.md +3 -0
  611. package/hi/per_locale_file.md +298 -0
  612. package/hi/privacy_notice.md +61 -0
  613. package/hi/roadmap.md +206 -0
  614. package/hi/terms_of_service.md +33 -0
  615. package/hi/vs_code_extension.md +139 -0
  616. package/index.cjs +1265 -0
  617. package/index.d.ts +100 -0
  618. package/it/CI_CD.md +149 -0
  619. package/it/autoFill.md +157 -0
  620. package/it/configuration.md +503 -0
  621. package/it/dictionary/condition.md +213 -0
  622. package/it/dictionary/content_extention_customization.md +81 -0
  623. package/it/dictionary/enumeration.md +221 -0
  624. package/it/dictionary/file.md +207 -0
  625. package/it/dictionary/function_fetching.md +190 -0
  626. package/it/dictionary/get_started.md +466 -0
  627. package/it/dictionary/insertion.md +161 -0
  628. package/it/dictionary/markdown.md +343 -0
  629. package/it/dictionary/nesting.md +249 -0
  630. package/it/dictionary/translation.md +287 -0
  631. package/it/header.md +7 -0
  632. package/it/how_works_intlayer.md +217 -0
  633. package/it/index.md +125 -0
  634. package/it/interest_of_intlayer.md +132 -0
  635. package/it/intlayer_CMS.md +334 -0
  636. package/it/intlayer_cli.md +274 -0
  637. package/it/intlayer_visual_editor.md +210 -0
  638. package/it/intlayer_with_angular.md +3 -0
  639. package/it/intlayer_with_create_react_app.md +413 -0
  640. package/it/intlayer_with_express.md +267 -0
  641. package/it/intlayer_with_lynx+react.md +482 -0
  642. package/it/intlayer_with_nextjs_14.md +1269 -0
  643. package/it/intlayer_with_nextjs_15.md +1319 -0
  644. package/it/intlayer_with_nextjs_page_router.md +1095 -0
  645. package/it/intlayer_with_react_native+expo.md +261 -0
  646. package/it/intlayer_with_vite+preact.md +1681 -0
  647. package/it/intlayer_with_vite+react.md +1580 -0
  648. package/it/intlayer_with_vite+solid.md +3 -0
  649. package/it/intlayer_with_vite+svelte.md +3 -0
  650. package/it/intlayer_with_vite+vue.md +989 -0
  651. package/it/introduction.md +192 -0
  652. package/it/mcp_server.md +152 -0
  653. package/it/packages/@intlayer/api/index.md +31 -0
  654. package/it/packages/@intlayer/chokidar/index.md +31 -0
  655. package/it/packages/@intlayer/cli/index.md +21 -0
  656. package/it/packages/@intlayer/config/index.md +116 -0
  657. package/it/packages/@intlayer/core/index.md +25 -0
  658. package/it/packages/@intlayer/design-system/index.md +21 -0
  659. package/it/packages/@intlayer/dictionary-entry/index.md +21 -0
  660. package/it/packages/@intlayer/editor/index.md +21 -0
  661. package/it/packages/@intlayer/editor-react/index.md +21 -0
  662. package/it/packages/@intlayer/webpack/index.md +35 -0
  663. package/it/packages/angular-intlayer/index.md +3 -0
  664. package/it/packages/express-intlayer/index.md +229 -0
  665. package/it/packages/express-intlayer/t.md +432 -0
  666. package/it/packages/intlayer/getConfiguration.md +120 -0
  667. package/it/packages/intlayer/getEnumeration.md +138 -0
  668. package/it/packages/intlayer/getHTMLTextDir.md +97 -0
  669. package/it/packages/intlayer/getLocaleLang.md +57 -0
  670. package/it/packages/intlayer/getLocaleName.md +93 -0
  671. package/it/packages/intlayer/getLocalizedUrl.md +221 -0
  672. package/it/packages/intlayer/getMultilingualUrls.md +200 -0
  673. package/it/packages/intlayer/getPathWithoutLocale.md +50 -0
  674. package/it/packages/intlayer/getTranslation.md +166 -0
  675. package/it/packages/intlayer/getTranslationContent.md +166 -0
  676. package/it/packages/intlayer/index.md +479 -0
  677. package/it/packages/intlayer-cli/index.md +41 -0
  678. package/it/packages/intlayer-editor/index.md +113 -0
  679. package/it/packages/lynx-intlayer/index.md +58 -0
  680. package/it/packages/next-intlayer/index.md +267 -0
  681. package/it/packages/next-intlayer/t.md +326 -0
  682. package/it/packages/next-intlayer/useDictionary.md +242 -0
  683. package/it/packages/next-intlayer/useIntlayer.md +237 -0
  684. package/it/packages/next-intlayer/useIntlayerAsync.md +211 -0
  685. package/it/packages/next-intlayer/useLocale.md +105 -0
  686. package/it/packages/preact-intlayer/index.md +3 -0
  687. package/it/packages/react-intlayer/index.md +260 -0
  688. package/it/packages/react-intlayer/t.md +277 -0
  689. package/it/packages/react-intlayer/useDictionary.md +260 -0
  690. package/it/packages/react-intlayer/useIntlayer.md +225 -0
  691. package/it/packages/react-intlayer/useIntlayerAsync.md +226 -0
  692. package/it/packages/react-intlayer/useLocale.md +184 -0
  693. package/it/packages/react-native-intlayer/index.md +57 -0
  694. package/it/packages/react-scripts-intlayer/index.md +57 -0
  695. package/it/packages/solid-intlayer/index.md +5 -0
  696. package/it/packages/svelte-intlayer/index.md +3 -0
  697. package/it/packages/vite-intlayer/index.md +53 -0
  698. package/it/packages/vue-intlayer/index.md +5 -0
  699. package/it/per_locale_file.md +298 -0
  700. package/it/privacy_notice.md +61 -0
  701. package/it/roadmap.md +206 -0
  702. package/it/terms_of_service.md +33 -0
  703. package/it/vs_code_extension.md +139 -0
  704. package/ja/CI_CD.md +149 -0
  705. package/ja/autoFill.md +157 -0
  706. package/ja/configuration.md +507 -0
  707. package/ja/dictionary/condition.md +213 -0
  708. package/ja/dictionary/content_extention_customization.md +81 -0
  709. package/ja/dictionary/enumeration.md +221 -0
  710. package/ja/dictionary/file.md +209 -0
  711. package/ja/dictionary/function_fetching.md +190 -0
  712. package/ja/dictionary/get_started.md +466 -0
  713. package/ja/dictionary/insertion.md +161 -0
  714. package/ja/dictionary/markdown.md +343 -0
  715. package/ja/dictionary/nesting.md +249 -0
  716. package/ja/dictionary/translation.md +287 -0
  717. package/ja/header.md +7 -0
  718. package/ja/how_works_intlayer.md +217 -0
  719. package/ja/index.md +125 -0
  720. package/ja/interest_of_intlayer.md +132 -0
  721. package/ja/intlayer_CMS.md +334 -0
  722. package/ja/intlayer_cli.md +274 -0
  723. package/ja/intlayer_visual_editor.md +213 -0
  724. package/ja/intlayer_with_angular.md +3 -0
  725. package/ja/intlayer_with_create_react_app.md +1186 -0
  726. package/ja/intlayer_with_express.md +267 -0
  727. package/ja/intlayer_with_lynx+react.md +482 -0
  728. package/ja/intlayer_with_nextjs_14.md +1256 -0
  729. package/ja/intlayer_with_nextjs_15.md +1308 -0
  730. package/ja/intlayer_with_nextjs_page_router.md +1085 -0
  731. package/ja/intlayer_with_react_native+expo.md +537 -0
  732. package/ja/intlayer_with_vite+preact.md +1601 -0
  733. package/ja/intlayer_with_vite+react.md +1555 -0
  734. package/ja/intlayer_with_vite+solid.md +3 -0
  735. package/ja/intlayer_with_vite+svelte.md +3 -0
  736. package/ja/intlayer_with_vite+vue.md +990 -0
  737. package/ja/introduction.md +186 -0
  738. package/ja/mcp_server.md +150 -0
  739. package/ja/packages/@intlayer/api/index.md +31 -0
  740. package/ja/packages/@intlayer/chokidar/index.md +31 -0
  741. package/ja/packages/@intlayer/cli/index.md +21 -0
  742. package/ja/packages/@intlayer/config/index.md +116 -0
  743. package/ja/packages/@intlayer/core/index.md +25 -0
  744. package/ja/packages/@intlayer/design-system/index.md +21 -0
  745. package/ja/packages/@intlayer/dictionary-entry/index.md +21 -0
  746. package/ja/packages/@intlayer/editor/index.md +21 -0
  747. package/ja/packages/@intlayer/editor-react/index.md +21 -0
  748. package/ja/packages/@intlayer/webpack/index.md +35 -0
  749. package/ja/packages/angular-intlayer/index.md +3 -0
  750. package/ja/packages/express-intlayer/index.md +229 -0
  751. package/ja/packages/express-intlayer/t.md +432 -0
  752. package/ja/packages/intlayer/getConfiguration.md +120 -0
  753. package/ja/packages/intlayer/getEnumeration.md +140 -0
  754. package/ja/packages/intlayer/getHTMLTextDir.md +97 -0
  755. package/ja/packages/intlayer/getLocaleLang.md +59 -0
  756. package/ja/packages/intlayer/getLocaleName.md +93 -0
  757. package/ja/packages/intlayer/getLocalizedUrl.md +221 -0
  758. package/ja/packages/intlayer/getMultilingualUrls.md +198 -0
  759. package/ja/packages/intlayer/getPathWithoutLocale.md +50 -0
  760. package/ja/packages/intlayer/getTranslation.md +166 -0
  761. package/ja/packages/intlayer/getTranslationContent.md +166 -0
  762. package/ja/packages/intlayer/index.md +479 -0
  763. package/ja/packages/intlayer-cli/index.md +41 -0
  764. package/ja/packages/intlayer-editor/index.md +115 -0
  765. package/ja/packages/lynx-intlayer/index.md +58 -0
  766. package/ja/packages/next-intlayer/index.md +263 -0
  767. package/ja/packages/next-intlayer/t.md +326 -0
  768. package/ja/packages/next-intlayer/useDictionary.md +242 -0
  769. package/ja/packages/next-intlayer/useIntlayer.md +237 -0
  770. package/ja/packages/next-intlayer/useIntlayerAsync.md +211 -0
  771. package/ja/packages/next-intlayer/useLocale.md +105 -0
  772. package/ja/packages/preact-intlayer/index.md +3 -0
  773. package/ja/packages/react-intlayer/index.md +257 -0
  774. package/ja/packages/react-intlayer/t.md +277 -0
  775. package/ja/packages/react-intlayer/useDictionary.md +260 -0
  776. package/ja/packages/react-intlayer/useIntlayer.md +225 -0
  777. package/ja/packages/react-intlayer/useIntlayerAsync.md +226 -0
  778. package/ja/packages/react-intlayer/useLocale.md +184 -0
  779. package/ja/packages/react-native-intlayer/index.md +57 -0
  780. package/ja/packages/react-scripts-intlayer/index.md +57 -0
  781. package/ja/packages/solid-intlayer/index.md +3 -0
  782. package/ja/packages/svelte-intlayer/index.md +3 -0
  783. package/ja/packages/vite-intlayer/index.md +53 -0
  784. package/ja/packages/vue-intlayer/index.md +3 -0
  785. package/ja/per_locale_file.md +298 -0
  786. package/ja/privacy_notice.md +57 -0
  787. package/ja/roadmap.md +206 -0
  788. package/ja/terms_of_service.md +33 -0
  789. package/ja/vs_code_extension.md +139 -0
  790. package/ko/CI_CD.md +149 -0
  791. package/ko/autoFill.md +157 -0
  792. package/ko/configuration.md +507 -0
  793. package/ko/dictionary/condition.md +213 -0
  794. package/ko/dictionary/content_extention_customization.md +81 -0
  795. package/ko/dictionary/enumeration.md +221 -0
  796. package/ko/dictionary/file.md +207 -0
  797. package/ko/dictionary/function_fetching.md +190 -0
  798. package/ko/dictionary/get_started.md +466 -0
  799. package/ko/dictionary/insertion.md +167 -0
  800. package/ko/dictionary/markdown.md +343 -0
  801. package/ko/dictionary/nesting.md +249 -0
  802. package/ko/dictionary/translation.md +287 -0
  803. package/ko/header.md +7 -0
  804. package/ko/how_works_intlayer.md +216 -0
  805. package/ko/index.md +125 -0
  806. package/ko/interest_of_intlayer.md +132 -0
  807. package/ko/intlayer_CMS.md +334 -0
  808. package/ko/intlayer_cli.md +274 -0
  809. package/ko/intlayer_visual_editor.md +210 -0
  810. package/ko/intlayer_with_angular.md +3 -0
  811. package/ko/intlayer_with_create_react_app.md +1186 -0
  812. package/ko/intlayer_with_express.md +267 -0
  813. package/ko/intlayer_with_lynx+react.md +482 -0
  814. package/ko/intlayer_with_nextjs_14.md +1267 -0
  815. package/ko/intlayer_with_nextjs_15.md +1319 -0
  816. package/ko/intlayer_with_nextjs_page_router.md +1097 -0
  817. package/ko/intlayer_with_react_native+expo.md +537 -0
  818. package/ko/intlayer_with_vite+preact.md +1682 -0
  819. package/ko/intlayer_with_vite+react.md +1582 -0
  820. package/ko/intlayer_with_vite+solid.md +3 -0
  821. package/ko/intlayer_with_vite+svelte.md +3 -0
  822. package/ko/intlayer_with_vite+vue.md +988 -0
  823. package/ko/introduction.md +186 -0
  824. package/ko/mcp_server.md +150 -0
  825. package/ko/packages/@intlayer/api/index.md +31 -0
  826. package/ko/packages/@intlayer/chokidar/index.md +31 -0
  827. package/ko/packages/@intlayer/cli/index.md +21 -0
  828. package/ko/packages/@intlayer/config/index.md +116 -0
  829. package/ko/packages/@intlayer/core/index.md +25 -0
  830. package/ko/packages/@intlayer/design-system/index.md +21 -0
  831. package/ko/packages/@intlayer/dictionary-entry/index.md +21 -0
  832. package/ko/packages/@intlayer/editor/index.md +21 -0
  833. package/ko/packages/@intlayer/editor-react/index.md +21 -0
  834. package/ko/packages/@intlayer/webpack/index.md +35 -0
  835. package/ko/packages/angular-intlayer/index.md +5 -0
  836. package/ko/packages/express-intlayer/index.md +229 -0
  837. package/ko/packages/express-intlayer/t.md +432 -0
  838. package/ko/packages/intlayer/getConfiguration.md +120 -0
  839. package/ko/packages/intlayer/getEnumeration.md +138 -0
  840. package/ko/packages/intlayer/getHTMLTextDir.md +97 -0
  841. package/ko/packages/intlayer/getLocaleLang.md +57 -0
  842. package/ko/packages/intlayer/getLocaleName.md +93 -0
  843. package/ko/packages/intlayer/getLocalizedUrl.md +221 -0
  844. package/ko/packages/intlayer/getMultilingualUrls.md +198 -0
  845. package/ko/packages/intlayer/getPathWithoutLocale.md +50 -0
  846. package/ko/packages/intlayer/getTranslation.md +166 -0
  847. package/ko/packages/intlayer/getTranslationContent.md +166 -0
  848. package/ko/packages/intlayer/index.md +480 -0
  849. package/ko/packages/intlayer-cli/index.md +41 -0
  850. package/ko/packages/intlayer-editor/index.md +113 -0
  851. package/ko/packages/lynx-intlayer/index.md +58 -0
  852. package/ko/packages/next-intlayer/index.md +267 -0
  853. package/ko/packages/next-intlayer/t.md +337 -0
  854. package/ko/packages/next-intlayer/useDictionary.md +242 -0
  855. package/ko/packages/next-intlayer/useIntlayer.md +237 -0
  856. package/ko/packages/next-intlayer/useIntlayerAsync.md +211 -0
  857. package/ko/packages/next-intlayer/useLocale.md +105 -0
  858. package/ko/packages/preact-intlayer/index.md +3 -0
  859. package/ko/packages/react-intlayer/index.md +260 -0
  860. package/ko/packages/react-intlayer/t.md +277 -0
  861. package/ko/packages/react-intlayer/useDictionary.md +268 -0
  862. package/ko/packages/react-intlayer/useIntlayer.md +225 -0
  863. package/ko/packages/react-intlayer/useIntlayerAsync.md +226 -0
  864. package/ko/packages/react-intlayer/useLocale.md +184 -0
  865. package/ko/packages/react-native-intlayer/index.md +57 -0
  866. package/ko/packages/react-scripts-intlayer/index.md +57 -0
  867. package/ko/packages/solid-intlayer/index.md +3 -0
  868. package/ko/packages/svelte-intlayer/index.md +3 -0
  869. package/ko/packages/vite-intlayer/index.md +53 -0
  870. package/ko/packages/vue-intlayer/index.md +3 -0
  871. package/ko/per_locale_file.md +300 -0
  872. package/ko/privacy_notice.md +61 -0
  873. package/ko/roadmap.md +206 -0
  874. package/ko/terms_of_service.md +33 -0
  875. package/ko/vs_code_extension.md +139 -0
  876. package/package.json +96 -0
  877. package/pt/CI_CD.md +149 -0
  878. package/pt/autoFill.md +157 -0
  879. package/pt/configuration.md +503 -0
  880. package/pt/dictionary/condition.md +213 -0
  881. package/pt/dictionary/content_extention_customization.md +81 -0
  882. package/pt/dictionary/enumeration.md +221 -0
  883. package/pt/dictionary/file.md +210 -0
  884. package/pt/dictionary/function_fetching.md +190 -0
  885. package/pt/dictionary/get_started.md +490 -0
  886. package/pt/dictionary/insertion.md +161 -0
  887. package/pt/dictionary/markdown.md +339 -0
  888. package/pt/dictionary/nesting.md +249 -0
  889. package/pt/dictionary/translation.md +322 -0
  890. package/pt/header.md +7 -0
  891. package/pt/how_works_intlayer.md +216 -0
  892. package/pt/index.md +125 -0
  893. package/pt/interest_of_intlayer.md +132 -0
  894. package/pt/intlayer_CMS.md +334 -0
  895. package/pt/intlayer_cli.md +274 -0
  896. package/pt/intlayer_visual_editor.md +210 -0
  897. package/pt/intlayer_with_angular.md +3 -0
  898. package/pt/intlayer_with_create_react_app.md +1204 -0
  899. package/pt/intlayer_with_express.md +270 -0
  900. package/pt/intlayer_with_lynx+react.md +467 -0
  901. package/pt/intlayer_with_nextjs_14.md +1269 -0
  902. package/pt/intlayer_with_nextjs_15.md +1319 -0
  903. package/pt/intlayer_with_nextjs_page_router.md +1109 -0
  904. package/pt/intlayer_with_react_native+expo.md +259 -0
  905. package/pt/intlayer_with_vite+preact.md +1663 -0
  906. package/pt/intlayer_with_vite+react.md +1621 -0
  907. package/pt/intlayer_with_vite+solid.md +3 -0
  908. package/pt/intlayer_with_vite+svelte.md +3 -0
  909. package/pt/intlayer_with_vite+vue.md +989 -0
  910. package/pt/introduction.md +193 -0
  911. package/pt/mcp_server.md +150 -0
  912. package/pt/packages/@intlayer/api/index.md +31 -0
  913. package/pt/packages/@intlayer/chokidar/index.md +31 -0
  914. package/pt/packages/@intlayer/cli/index.md +21 -0
  915. package/pt/packages/@intlayer/config/index.md +116 -0
  916. package/pt/packages/@intlayer/core/index.md +25 -0
  917. package/pt/packages/@intlayer/design-system/index.md +21 -0
  918. package/pt/packages/@intlayer/dictionary-entry/index.md +21 -0
  919. package/pt/packages/@intlayer/editor/index.md +21 -0
  920. package/pt/packages/@intlayer/editor-react/index.md +21 -0
  921. package/pt/packages/@intlayer/webpack/index.md +35 -0
  922. package/pt/packages/angular-intlayer/index.md +3 -0
  923. package/pt/packages/express-intlayer/index.md +232 -0
  924. package/pt/packages/express-intlayer/t.md +267 -0
  925. package/pt/packages/intlayer/getConfiguration.md +120 -0
  926. package/pt/packages/intlayer/getEnumeration.md +138 -0
  927. package/pt/packages/intlayer/getHTMLTextDir.md +97 -0
  928. package/pt/packages/intlayer/getLocaleLang.md +57 -0
  929. package/pt/packages/intlayer/getLocaleName.md +93 -0
  930. package/pt/packages/intlayer/getLocalizedUrl.md +221 -0
  931. package/pt/packages/intlayer/getMultilingualUrls.md +198 -0
  932. package/pt/packages/intlayer/getPathWithoutLocale.md +50 -0
  933. package/pt/packages/intlayer/getTranslation.md +175 -0
  934. package/pt/packages/intlayer/getTranslationContent.md +177 -0
  935. package/pt/packages/intlayer/index.md +484 -0
  936. package/pt/packages/intlayer-cli/index.md +41 -0
  937. package/pt/packages/intlayer-editor/index.md +113 -0
  938. package/pt/packages/lynx-intlayer/index.md +58 -0
  939. package/pt/packages/next-intlayer/index.md +270 -0
  940. package/pt/packages/next-intlayer/t.md +341 -0
  941. package/pt/packages/next-intlayer/useDictionary.md +248 -0
  942. package/pt/packages/next-intlayer/useIntlayer.md +237 -0
  943. package/pt/packages/next-intlayer/useIntlayerAsync.md +211 -0
  944. package/pt/packages/next-intlayer/useLocale.md +105 -0
  945. package/pt/packages/preact-intlayer/index.md +3 -0
  946. package/pt/packages/react-intlayer/index.md +261 -0
  947. package/pt/packages/react-intlayer/t.md +289 -0
  948. package/pt/packages/react-intlayer/useDictionary.md +268 -0
  949. package/pt/packages/react-intlayer/useIntlayer.md +225 -0
  950. package/pt/packages/react-intlayer/useIntlayerAsync.md +226 -0
  951. package/pt/packages/react-intlayer/useLocale.md +184 -0
  952. package/pt/packages/react-native-intlayer/index.md +57 -0
  953. package/pt/packages/react-scripts-intlayer/index.md +57 -0
  954. package/pt/packages/solid-intlayer/index.md +3 -0
  955. package/pt/packages/svelte-intlayer/index.md +3 -0
  956. package/pt/packages/vite-intlayer/index.md +53 -0
  957. package/pt/packages/vue-intlayer/index.md +3 -0
  958. package/pt/per_locale_file.md +298 -0
  959. package/pt/privacy_notice.md +61 -0
  960. package/pt/roadmap.md +206 -0
  961. package/pt/terms_of_service.md +33 -0
  962. package/pt/vs_code_extension.md +139 -0
  963. package/ru/CI_CD.md +149 -0
  964. package/ru/autoFill.md +157 -0
  965. package/ru/configuration.md +507 -0
  966. package/ru/dictionary/condition.md +213 -0
  967. package/ru/dictionary/content_extention_customization.md +81 -0
  968. package/ru/dictionary/enumeration.md +221 -0
  969. package/ru/dictionary/file.md +209 -0
  970. package/ru/dictionary/function_fetching.md +188 -0
  971. package/ru/dictionary/get_started.md +311 -0
  972. package/ru/dictionary/insertion.md +161 -0
  973. package/ru/dictionary/markdown.md +339 -0
  974. package/ru/dictionary/nesting.md +249 -0
  975. package/ru/dictionary/translation.md +322 -0
  976. package/ru/environment/angular.md +3 -0
  977. package/ru/header.md +7 -0
  978. package/ru/how_works_intlayer.md +217 -0
  979. package/ru/index.md +125 -0
  980. package/ru/interest_of_intlayer.md +132 -0
  981. package/ru/intlayer_CMS.md +334 -0
  982. package/ru/intlayer_cli.md +274 -0
  983. package/ru/intlayer_visual_editor.md +210 -0
  984. package/ru/intlayer_with_angular.md +3 -0
  985. package/ru/intlayer_with_create_react_app.md +1196 -0
  986. package/ru/intlayer_with_express.md +273 -0
  987. package/ru/intlayer_with_lynx+react.md +482 -0
  988. package/ru/intlayer_with_nextjs_14.md +1274 -0
  989. package/ru/intlayer_with_nextjs_15.md +1318 -0
  990. package/ru/intlayer_with_nextjs_page_router.md +1100 -0
  991. package/ru/intlayer_with_react_native+expo.md +537 -0
  992. package/ru/intlayer_with_vite+preact.md +1663 -0
  993. package/ru/intlayer_with_vite+react.md +1546 -0
  994. package/ru/intlayer_with_vite+solid.md +3 -0
  995. package/ru/intlayer_with_vite+svelte.md +3 -0
  996. package/ru/intlayer_with_vite+vue.md +987 -0
  997. package/ru/introduction.md +190 -0
  998. package/ru/mcp_server.md +152 -0
  999. package/ru/packages/@intlayer/api/index.md +31 -0
  1000. package/ru/packages/@intlayer/chokidar/index.md +31 -0
  1001. package/ru/packages/@intlayer/cli/index.md +23 -0
  1002. package/ru/packages/@intlayer/config/index.md +116 -0
  1003. package/ru/packages/@intlayer/core/index.md +25 -0
  1004. package/ru/packages/@intlayer/design-system/index.md +21 -0
  1005. package/ru/packages/@intlayer/dictionary-entry/index.md +21 -0
  1006. package/ru/packages/@intlayer/editor/index.md +21 -0
  1007. package/ru/packages/@intlayer/editor-react/index.md +21 -0
  1008. package/ru/packages/@intlayer/webpack/index.md +35 -0
  1009. package/ru/packages/angular-intlayer/index.md +3 -0
  1010. package/ru/packages/express-intlayer/index.md +235 -0
  1011. package/ru/packages/express-intlayer/t.md +445 -0
  1012. package/ru/packages/intlayer/getConfiguration.md +120 -0
  1013. package/ru/packages/intlayer/getEnumeration.md +140 -0
  1014. package/ru/packages/intlayer/getHTMLTextDir.md +97 -0
  1015. package/ru/packages/intlayer/getLocaleLang.md +59 -0
  1016. package/ru/packages/intlayer/getLocaleName.md +93 -0
  1017. package/ru/packages/intlayer/getLocalizedUrl.md +221 -0
  1018. package/ru/packages/intlayer/getMultilingualUrls.md +198 -0
  1019. package/ru/packages/intlayer/getPathWithoutLocale.md +50 -0
  1020. package/ru/packages/intlayer/getTranslation.md +177 -0
  1021. package/ru/packages/intlayer/getTranslationContent.md +175 -0
  1022. package/ru/packages/intlayer/index.md +275 -0
  1023. package/ru/packages/intlayer-cli/index.md +41 -0
  1024. package/ru/packages/intlayer-editor/index.md +115 -0
  1025. package/ru/packages/lynx-intlayer/index.md +58 -0
  1026. package/ru/packages/next-intlayer/index.md +267 -0
  1027. package/ru/packages/next-intlayer/t.md +340 -0
  1028. package/ru/packages/next-intlayer/useDictionary.md +248 -0
  1029. package/ru/packages/next-intlayer/useIntlayer.md +237 -0
  1030. package/ru/packages/next-intlayer/useIntlayerAsync.md +211 -0
  1031. package/ru/packages/next-intlayer/useLocale.md +105 -0
  1032. package/ru/packages/preact-intlayer/index.md +3 -0
  1033. package/ru/packages/react-intlayer/index.md +261 -0
  1034. package/ru/packages/react-intlayer/t.md +289 -0
  1035. package/ru/packages/react-intlayer/useDictionary.md +268 -0
  1036. package/ru/packages/react-intlayer/useIntlayer.md +225 -0
  1037. package/ru/packages/react-intlayer/useIntlayerAsync.md +226 -0
  1038. package/ru/packages/react-intlayer/useLocale.md +184 -0
  1039. package/ru/packages/react-native-intlayer/index.md +57 -0
  1040. package/ru/packages/react-scripts-intlayer/index.md +57 -0
  1041. package/ru/packages/solid-intlayer/index.md +3 -0
  1042. package/ru/packages/svelte-intlayer/index.md +3 -0
  1043. package/ru/packages/vite-intlayer/index.md +53 -0
  1044. package/ru/packages/vue-intlayer/index.md +3 -0
  1045. package/ru/per_locale_file.md +298 -0
  1046. package/ru/privacy_notice.md +61 -0
  1047. package/ru/roadmap.md +206 -0
  1048. package/ru/terms_of_service.md +33 -0
  1049. package/ru/vs_code_extension.md +139 -0
  1050. package/zh/CI_CD.md +149 -0
  1051. package/zh/autoFill.md +157 -0
  1052. package/zh/configuration.md +484 -0
  1053. package/zh/dictionary/condition.md +213 -0
  1054. package/zh/dictionary/content_extention_customization.md +81 -0
  1055. package/zh/dictionary/enumeration.md +221 -0
  1056. package/zh/dictionary/file.md +209 -0
  1057. package/zh/dictionary/function_fetching.md +188 -0
  1058. package/zh/dictionary/get_started.md +490 -0
  1059. package/zh/dictionary/insertion.md +161 -0
  1060. package/zh/dictionary/markdown.md +342 -0
  1061. package/zh/dictionary/nesting.md +249 -0
  1062. package/zh/dictionary/translation.md +287 -0
  1063. package/zh/header.md +7 -0
  1064. package/zh/how_works_intlayer.md +217 -0
  1065. package/zh/index.md +125 -0
  1066. package/zh/interest_of_intlayer.md +132 -0
  1067. package/zh/intlayer_CMS.md +334 -0
  1068. package/zh/intlayer_cli.md +274 -0
  1069. package/zh/intlayer_visual_editor.md +210 -0
  1070. package/zh/intlayer_with_angular.md +3 -0
  1071. package/zh/intlayer_with_create_react_app.md +1196 -0
  1072. package/zh/intlayer_with_express.md +267 -0
  1073. package/zh/intlayer_with_lynx+react.md +484 -0
  1074. package/zh/intlayer_with_nextjs_14.md +1286 -0
  1075. package/zh/intlayer_with_nextjs_15.md +1322 -0
  1076. package/zh/intlayer_with_nextjs_page_router.md +1097 -0
  1077. package/zh/intlayer_with_react_native+expo.md +539 -0
  1078. package/zh/intlayer_with_vite+preact.md +1681 -0
  1079. package/zh/intlayer_with_vite+react.md +1577 -0
  1080. package/zh/intlayer_with_vite+solid.md +3 -0
  1081. package/zh/intlayer_with_vite+svelte.md +3 -0
  1082. package/zh/intlayer_with_vite+vue.md +988 -0
  1083. package/zh/introduction.md +186 -0
  1084. package/zh/mcp_server.md +152 -0
  1085. package/zh/packages/@intlayer/api/index.md +31 -0
  1086. package/zh/packages/@intlayer/chokidar/index.md +31 -0
  1087. package/zh/packages/@intlayer/cli/index.md +21 -0
  1088. package/zh/packages/@intlayer/config/index.md +116 -0
  1089. package/zh/packages/@intlayer/core/index.md +25 -0
  1090. package/zh/packages/@intlayer/design-system/index.md +21 -0
  1091. package/zh/packages/@intlayer/dictionary-entry/index.md +21 -0
  1092. package/zh/packages/@intlayer/editor/index.md +21 -0
  1093. package/zh/packages/@intlayer/editor-react/index.md +21 -0
  1094. package/zh/packages/@intlayer/webpack/index.md +35 -0
  1095. package/zh/packages/angular-intlayer/index.md +3 -0
  1096. package/zh/packages/express-intlayer/index.md +229 -0
  1097. package/zh/packages/express-intlayer/t.md +432 -0
  1098. package/zh/packages/intlayer/getConfiguration.md +120 -0
  1099. package/zh/packages/intlayer/getEnumeration.md +140 -0
  1100. package/zh/packages/intlayer/getHTMLTextDir.md +97 -0
  1101. package/zh/packages/intlayer/getLocaleLang.md +57 -0
  1102. package/zh/packages/intlayer/getLocaleName.md +93 -0
  1103. package/zh/packages/intlayer/getLocalizedUrl.md +221 -0
  1104. package/zh/packages/intlayer/getMultilingualUrls.md +198 -0
  1105. package/zh/packages/intlayer/getPathWithoutLocale.md +50 -0
  1106. package/zh/packages/intlayer/getTranslation.md +166 -0
  1107. package/zh/packages/intlayer/getTranslationContent.md +166 -0
  1108. package/zh/packages/intlayer/index.md +360 -0
  1109. package/zh/packages/intlayer-cli/index.md +41 -0
  1110. package/zh/packages/intlayer-editor/index.md +113 -0
  1111. package/zh/packages/lynx-intlayer/index.md +60 -0
  1112. package/zh/packages/next-intlayer/index.md +267 -0
  1113. package/zh/packages/next-intlayer/t.md +338 -0
  1114. package/zh/packages/next-intlayer/useDictionary.md +242 -0
  1115. package/zh/packages/next-intlayer/useIntlayer.md +237 -0
  1116. package/zh/packages/next-intlayer/useIntlayerAsync.md +211 -0
  1117. package/zh/packages/next-intlayer/useLocale.md +105 -0
  1118. package/zh/packages/preact-intlayer/index.md +3 -0
  1119. package/zh/packages/react-intlayer/index.md +257 -0
  1120. package/zh/packages/react-intlayer/t.md +271 -0
  1121. package/zh/packages/react-intlayer/useDictionary.md +260 -0
  1122. package/zh/packages/react-intlayer/useIntlayer.md +225 -0
  1123. package/zh/packages/react-intlayer/useIntlayerAsync.md +226 -0
  1124. package/zh/packages/react-intlayer/useLocale.md +184 -0
  1125. package/zh/packages/react-native-intlayer/index.md +57 -0
  1126. package/zh/packages/react-scripts-intlayer/index.md +57 -0
  1127. package/zh/packages/solid-intlayer/index.md +3 -0
  1128. package/zh/packages/svelte-intlayer/index.md +3 -0
  1129. package/zh/packages/vite-intlayer/index.md +53 -0
  1130. package/zh/packages/vue-intlayer/index.md +3 -0
  1131. package/zh/per_locale_file.md +298 -0
  1132. package/zh/privacy_notice.md +61 -0
  1133. package/zh/roadmap.md +206 -0
  1134. package/zh/terms_of_service.md +33 -0
  1135. package/zh/vs_code_extension.md +139 -0
@@ -0,0 +1,1592 @@
1
+ # Comenzando con la Internacionalización (i18n) con Intlayer, Vite y React
2
+
3
+ <iframe title="Vite + React: Build a Multilingual App from Scratch using Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/dS9L7uJeak4?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
4
+
5
+ Vea [Application Template](https://github.com/aymericzip/intlayer-vite-react-template) en GitHub.
6
+
7
+ ## ¿Qué es Intlayer?
8
+
9
+ **Intlayer** es una biblioteca innovadora y de código abierto para la internacionalización (i18n) diseñada para simplificar el soporte multilingüe en aplicaciones web modernas.
10
+
11
+ Con Intlayer, puedes:
12
+
13
+ - **Gestionar fácilmente las traducciones** utilizando diccionarios declarativos a nivel de componente.
14
+ - **Localizar dinámicamente metadatos**, rutas y contenido.
15
+ - **Garantizar soporte para TypeScript** con tipos autogenerados, mejorando la autocompletación y la detección de errores.
16
+ - **Beneficiarte de características avanzadas**, como la detección dinámica de locales y el cambio entre ellos.
17
+
18
+ ## Guía paso a paso para configurar Intlayer en una aplicación Vite y React
19
+
20
+ ### Paso 1: Instalar dependencias
21
+
22
+ Instala los paquetes necesarios utilizando npm:
23
+
24
+ ```bash packageManager="npm"
25
+ npm install intlayer react-intlayer vite-intlayer
26
+ ```
27
+
28
+ ```bash packageManager="pnpm"
29
+ pnpm add intlayer react-intlayer vite-intlayer
30
+ ```
31
+
32
+ ```bash packageManager="yarn"
33
+ yarn add intlayer react-intlayer vite-intlayer
34
+ ```
35
+
36
+ - **intlayer**
37
+
38
+ El paquete principal que proporciona herramientas de internacionalización para la gestión de configuración, traducción, [declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/es/dictionary/get_started.md), transpilación y [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/es/intlayer_cli.md).
39
+
40
+ - **react-intlayer**
41
+ El paquete que integra Intlayer con aplicaciones React. Proporciona proveedores de contexto y hooks para la internacionalización en React.
42
+
43
+ - **vite-intlayer**
44
+ Incluye el plugin de Vite para integrar Intlayer con el [empaquetador Vite](https://vite.dev/guide/why.html#why-bundle-for-production), así como middleware para detectar el idioma preferido del usuario, gestionar cookies y manejar redirecciones de URL.
45
+
46
+ ### Paso 2: Configuración de tu proyecto
47
+
48
+ Crea un archivo de configuración para configurar los idiomas de tu aplicación:
49
+
50
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
51
+ import { Locales, type IntlayerConfig } from "intlayer";
52
+
53
+ const config: IntlayerConfig = {
54
+ internationalization: {
55
+ locales: [
56
+ Locales.ENGLISH,
57
+ Locales.FRENCH,
58
+ Locales.SPANISH,
59
+ // Tus otros idiomas
60
+ ],
61
+ defaultLocale: Locales.ENGLISH,
62
+ },
63
+ };
64
+
65
+ export default config;
66
+ ```
67
+
68
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
69
+ import { Locales } from "intlayer";
70
+
71
+ /** @type {import('intlayer').IntlayerConfig} */
72
+ const config = {
73
+ internationalization: {
74
+ locales: [
75
+ Locales.ENGLISH,
76
+ Locales.FRENCH,
77
+ Locales.SPANISH,
78
+ // Tus otros idiomas
79
+ ],
80
+ defaultLocale: Locales.ENGLISH,
81
+ },
82
+ };
83
+
84
+ export default config;
85
+ ```
86
+
87
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
88
+ const { Locales } = require("intlayer");
89
+
90
+ /** @type {import('intlayer').IntlayerConfig} */
91
+ const config = {
92
+ internationalization: {
93
+ locales: [
94
+ Locales.ENGLISH,
95
+ Locales.FRENCH,
96
+ Locales.SPANISH,
97
+ // Tus otros idiomas
98
+ ],
99
+ defaultLocale: Locales.ENGLISH,
100
+ },
101
+ };
102
+
103
+ module.exports = config;
104
+ ```
105
+
106
+ > A través de este archivo de configuración, puedes configurar URLs localizadas, redirección mediante middleware, nombres de cookies, la ubicación y extensión de tus declaraciones de contenido, desactivar los logs de Intlayer en la consola y más. Para una lista completa de parámetros disponibles, consulta la [documentación de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/es/configuration.md).
107
+
108
+ ### Paso 3: Integrar Intlayer en tu configuración de Vite
109
+
110
+ Añade el plugin de Intlayer en tu configuración.
111
+
112
+ ```typescript fileName="vite.config.ts" codeFormat="typescript"
113
+ import { defineConfig } from "vite";
114
+ import react from "@vitejs/plugin-react-swc";
115
+ import { intlayerPlugin } from "vite-intlayer";
116
+
117
+ // https://vitejs.dev/config/
118
+ export default defineConfig({
119
+ plugins: [react(), intlayerPlugin()],
120
+ });
121
+ ```
122
+
123
+ ```javascript fileName="vite.config.mjs" codeFormat="esm"
124
+ import { defineConfig } from "vite";
125
+ import react from "@vitejs/plugin-react-swc";
126
+ import { intlayerPlugin } from "vite-intlayer";
127
+
128
+ // https://vitejs.dev/config/
129
+ export default defineConfig({
130
+ plugins: [react(), intlayerPlugin()],
131
+ });
132
+ ```
133
+
134
+ ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
135
+ const { defineConfig } = require("vite");
136
+ const react = require("@vitejs/plugin-react-swc");
137
+ const { intlayerPlugin } = require("vite-intlayer");
138
+
139
+ // https://vitejs.dev/config/
140
+ module.exports = defineConfig({
141
+ plugins: [react(), intlayerPlugin()],
142
+ });
143
+ ```
144
+
145
+ > El plugin `intlayerPlugin()` de Vite se utiliza para integrar Intlayer con Vite. Garantiza la construcción de archivos de declaración de contenido y los monitorea en modo de desarrollo. Define variables de entorno de Intlayer dentro de la aplicación Vite. Además, proporciona alias para optimizar el rendimiento.
146
+
147
+ ### Paso 4: Declarar tu contenido
148
+
149
+ Crea y gestiona tus declaraciones de contenido para almacenar traducciones:
150
+
151
+ ```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
152
+ import { t, type Dictionary } from "intlayer";
153
+ import type { ReactNode } from "react";
154
+
155
+ const appContent = {
156
+ key: "app",
157
+ content: {
158
+ viteLogo: t({
159
+ en: "Vite logo",
160
+ fr: "Logo Vite",
161
+ es: "Logo Vite",
162
+ }),
163
+ reactLogo: t({
164
+ en: "React logo",
165
+ fr: "Logo React",
166
+ es: "Logo React",
167
+ }),
168
+
169
+ title: "Vite + React",
170
+
171
+ count: t({
172
+ en: "count is ",
173
+ fr: "le compte est ",
174
+ es: "el recuento es ",
175
+ }),
176
+
177
+ edit: t<ReactNode>({
178
+ en: (
179
+ <>
180
+ Edit <code>src/App.tsx</code> and save to test HMR
181
+ </>
182
+ ),
183
+ fr: (
184
+ <>
185
+ Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
186
+ </>
187
+ ),
188
+ es: (
189
+ <>
190
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
191
+ </>
192
+ ),
193
+ }),
194
+
195
+ readTheDocs: t({
196
+ en: "Click on the Vite and React logos to learn more",
197
+ fr: "Cliquez sur les logos Vite et React pour en savoir plus",
198
+ es: "Haga clic en los logotipos de Vite y React para obtener más información",
199
+ }),
200
+ },
201
+ } satisfies Dictionary;
202
+
203
+ export default appContent;
204
+ ```
205
+
206
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
207
+ import { t } from "intlayer";
208
+
209
+ /** @type {import('intlayer').Dictionary} */
210
+ const appContent = {
211
+ key: "app",
212
+ content: {
213
+ viteLogo: t({
214
+ en: "Vite logo",
215
+ fr: "Logo Vite",
216
+ es: "Logo Vite",
217
+ }),
218
+ reactLogo: t({
219
+ en: "React logo",
220
+ fr: "Logo React",
221
+ es: "Logo React",
222
+ }),
223
+
224
+ title: "Vite + React",
225
+
226
+ count: t({
227
+ en: "count is ",
228
+ fr: "le compte est ",
229
+ es: "el recuento es ",
230
+ }),
231
+
232
+ edit:
233
+ t <
234
+ ReactNode >
235
+ {
236
+ // No olvides importar React si utilizas un nodo React en tu contenido
237
+ en: (
238
+ <>
239
+ Edit <code>src/App.tsx</code> and save to test HMR
240
+ </>
241
+ ),
242
+ fr: (
243
+ <>
244
+ Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
245
+ </>
246
+ ),
247
+ es: (
248
+ <>
249
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
250
+ </>
251
+ ),
252
+ },
253
+
254
+ readTheDocs: t({
255
+ en: "Click on the Vite and React logos to learn more",
256
+ fr: "Cliquez sur les logos Vite et React pour en savoir plus",
257
+ es: "Haga clic en los logotipos de Vite y React para obtener más información",
258
+ }),
259
+ },
260
+ };
261
+
262
+ export default appContent;
263
+ ```
264
+
265
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
266
+ const { t } = require("intlayer");
267
+
268
+ /** @type {import('intlayer').Dictionary} */
269
+ const appContent = {
270
+ key: "app",
271
+ content: {
272
+ viteLogo: t({
273
+ en: "Vite logo",
274
+ fr: "Logo Vite",
275
+ es: "Logo Vite",
276
+ }),
277
+ reactLogo: t({
278
+ en: "React logo",
279
+ fr: "Logo React",
280
+ es: "Logo React",
281
+ }),
282
+
283
+ title: "Vite + React",
284
+
285
+ count: t({
286
+ en: "count is ",
287
+ fr: "le compte est ",
288
+
289
+ es: "el recuento es ",
290
+ }),
291
+
292
+ edit:
293
+ t <
294
+ ReactNode >
295
+ {
296
+ // No olvides importar React si utilizas un nodo React en tu contenido
297
+ en: (
298
+ <>
299
+ Edit <code>src/App.tsx</code> and save to test HMR
300
+ </>
301
+ ),
302
+ fr: (
303
+ <>
304
+ Éditez <code>src/App.tsx</code> et enregistrez pour tester HMR
305
+ </>
306
+ ),
307
+ es: (
308
+ <>
309
+ Edita <code>src/App.tsx</code> y guarda para probar HMR
310
+ </>
311
+ ),
312
+ },
313
+
314
+ readTheDocs: t({
315
+ en: "Click on the Vite and React logos to learn more",
316
+ fr: "Cliquez sur les logos Vite et React pour en savoir plus",
317
+ es: "Haga clic en los logotipos de Vite y React para obtener más información",
318
+ }),
319
+ },
320
+ };
321
+
322
+ module.exports = appContent;
323
+ ```
324
+
325
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
326
+ {
327
+ "$schema": "https://intlayer.org/schema.json",
328
+ "key": "app",
329
+ "content": {
330
+ "viteLogo": {
331
+ "nodeType": "translation",
332
+ "translation": {
333
+ "en": "Vite logo",
334
+ "fr": "Logo Vite",
335
+ "es": "Logo Vite"
336
+ }
337
+ },
338
+ "reactLogo": {
339
+ "nodeType": "translation",
340
+ "translation": {
341
+ "en": "React logo",
342
+ "fr": "Logo React",
343
+ "es": "Logo React"
344
+ }
345
+ },
346
+ "title": {
347
+ "nodeType": "translation",
348
+ "translation": {
349
+ "en": "Vite + React",
350
+ "fr": "Vite + React",
351
+ "es": "Vite + React"
352
+ }
353
+ },
354
+ "count": {
355
+ "nodeType": "translation",
356
+ "translation": {
357
+ "en": "count is ",
358
+ "fr": "le compte est ",
359
+ "es": "el recuento es "
360
+ }
361
+ },
362
+ "edit": {
363
+ "nodeType": "translation",
364
+ "translation": {
365
+ "en": "Edit src/App.tsx and save to test HMR",
366
+ "fr": "Éditez src/App.tsx et enregistrez pour tester HMR",
367
+ "es": "Edita src/App.tsx y guarda para probar HMR"
368
+ }
369
+ },
370
+ "readTheDocs": {
371
+ "nodeType": "translation",
372
+ "translation": {
373
+ "en": "Click on the Vite and React logos to learn more",
374
+ "fr": "Cliquez sur les logos Vite et React pour en savoir plus",
375
+ "es": "Haga clic en los logotipos de Vite y React para obtener más información"
376
+ }
377
+ }
378
+ }
379
+ }
380
+ ```
381
+
382
+ > Tus declaraciones de contenido pueden definirse en cualquier parte de tu aplicación siempre que estén incluidas en el directorio `contentDir` (por defecto, `./src`). Y coincidan con la extensión del archivo de declaración de contenido (por defecto, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
383
+
384
+ > Para más detalles, consulta la [documentación de declaración de contenido](https://github.com/aymericzip/intlayer/blob/main/docs/es/dictionary/get_started.md).
385
+
386
+ > Si tu archivo de contenido incluye código TSX, deberías considerar importar `import React from "react";` en tu archivo de contenido.
387
+
388
+ ### Paso 5: Utiliza Intlayer en tu Código
389
+
390
+ Accede a tus diccionarios de contenido en toda tu aplicación:
391
+
392
+ ```tsx {5,9} fileName="src/App.tsx" codeFormat="typescript"
393
+ import { useState, type FC } from "react";
394
+ import reactLogo from "./assets/react.svg";
395
+ import viteLogo from "/vite.svg";
396
+ import "./App.css";
397
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
398
+
399
+ const AppContent: FC = () => {
400
+ const [count, setCount] = useState(0);
401
+ const content = useIntlayer("app");
402
+
403
+ return (
404
+ <>
405
+ <div>
406
+ <a href="https://vitejs.dev" target="_blank">
407
+ <img src={viteLogo} className="logo" alt={content.viteLogo.value} />
408
+ </a>
409
+ <a href="https://react.dev" target="_blank">
410
+ <img
411
+ src={reactLogo}
412
+ className="logo react"
413
+ alt={content.reactLogo.value}
414
+ />
415
+ </a>
416
+ </div>
417
+ <h1>{content.title}</h1>
418
+ <div className="card">
419
+ <button onClick={() => setCount((count) => count + 1)}>
420
+ {content.count}
421
+ {count}
422
+ </button>
423
+ <p>{content.edit}</p>
424
+ </div>
425
+ <p className="read-the-docs">{content.readTheDocs}</p>
426
+ </>
427
+ );
428
+ };
429
+
430
+ const App: FC = () => (
431
+ <IntlayerProvider>
432
+ <AppContent />
433
+ </IntlayerProvider>
434
+ );
435
+
436
+ export default App;
437
+ ```
438
+
439
+ ```tsx {5,9} fileName="src/App.msx" codeFormat="esm"
440
+ import { useState } from "react";
441
+ import reactLogo from "./assets/react.svg";
442
+ import viteLogo from "/vite.svg";
443
+ import "./App.css";
444
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
445
+
446
+ const AppContent = () => {
447
+ const [count, setCount] = useState(0);
448
+ const content = useIntlayer("app");
449
+
450
+ return (
451
+ <>
452
+ <div>
453
+ <a href="https://vitejs.dev" target="_blank">
454
+ <img src={viteLogo} className="logo" alt={content.viteLogo.value} />
455
+ </a>
456
+ <a href="https://react.dev" target="_blank">
457
+ <img
458
+ src={reactLogo}
459
+ className="logo react"
460
+ alt={content.reactLogo.value}
461
+ />
462
+ </a>
463
+ </div>
464
+ <h1>{content.title}</h1>
465
+ <div className="card">
466
+ <button onClick={() => setCount((count) => count + 1)}>
467
+ {content.count}
468
+ {count}
469
+ </button>
470
+ <p>{content.edit}</p>
471
+ </div>
472
+ <p className="read-the-docs">{content.readTheDocs}</p>
473
+ </>
474
+ );
475
+ };
476
+
477
+ const App = () => (
478
+ <IntlayerProvider>
479
+ <AppContent />
480
+ </IntlayerProvider>
481
+ );
482
+
483
+ export default App;
484
+ ```
485
+
486
+ ```tsx {5,9} fileName="src/App.csx" codeFormat="commonjs"
487
+ const { useState } = require("react");
488
+ const reactLogo = require("./assets/react.svg");
489
+ const viteLogo = require("/vite.svg");
490
+ require("./App.css");
491
+ const { IntlayerProvider, useIntlayer } = require("react-intlayer");
492
+
493
+ const AppContent = () => {
494
+ const [count, setCount] = useState(0);
495
+ const content = useIntlayer("app");
496
+
497
+ return (
498
+ <>
499
+ <div>
500
+ <a href="https://vitejs.dev" target="_blank">
501
+ <img src={viteLogo} className="logo" alt={content.viteLogo.value} />
502
+ </a>
503
+ <a href="https://react.dev" target="_blank">
504
+ <img
505
+ src={reactLogo}
506
+ className="logo react"
507
+ alt={content.reactLogo.value}
508
+ />
509
+ </a>
510
+ </div>
511
+ <h1>{content.title}</h1>
512
+ <div className="card">
513
+ <button onClick={() => setCount((count) => count + 1)}>
514
+ {content.count}
515
+ {count}
516
+ </button>
517
+ <p>{content.edit}</p>
518
+ </div>
519
+ <p className="read-the-docs">{content.readTheDocs}</p>
520
+ </>
521
+ );
522
+ };
523
+
524
+ const App = () => (
525
+ <IntlayerProvider>
526
+ <AppContent />
527
+ </IntlayerProvider>
528
+ );
529
+
530
+ module.exports = App;
531
+ ```
532
+
533
+ > Si deseas usar tu contenido en un atributo `string`, como `alt`, `title`, `href`, `aria-label`, etc., debes llamar al valor de la función, como:
534
+
535
+ > ```jsx
536
+ >
537
+ > ```
538
+
539
+ > <img src={content.image.src.value} alt={content.image.value} />
540
+
541
+ > ```
542
+ >
543
+ > ```
544
+
545
+ > Para aprender más sobre el hook `useIntlayer`, consulta la [documentación](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/react-intlayer/useIntlayer.md).
546
+
547
+ ### (Opcional) Paso 6: Cambiar el idioma de tu contenido
548
+
549
+ Para cambiar el idioma de tu contenido, puedes usar la función `setLocale` proporcionada por el hook `useLocale`. Esta función te permite establecer la configuración regional de la aplicación y actualizar el contenido en consecuencia.
550
+
551
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
552
+ import type { FC } from "react";
553
+ import { Locales } from "intlayer";
554
+ import { useLocale } from "react-intlayer";
555
+
556
+ const LocaleSwitcher: FC = () => {
557
+ const { setLocale } = useLocale();
558
+
559
+ return (
560
+ <button onClick={() => setLocale(Locales.English)}>
561
+ Cambiar idioma a inglés
562
+ </button>
563
+ );
564
+ };
565
+ ```
566
+
567
+ ```jsx fileName="src/components/LocaleSwitcher.msx" codeFormat="esm"
568
+ import { Locales } from "intlayer";
569
+ import { useLocale } from "react-intlayer";
570
+
571
+ const LocaleSwitcher = () => {
572
+ const { setLocale } = useLocale();
573
+
574
+ return (
575
+ <button onClick={() => setLocale(Locales.English)}>
576
+ Cambiar idioma a inglés
577
+ </button>
578
+ );
579
+ };
580
+ ```
581
+
582
+ ```jsx fileName="src/components/LocaleSwitcher.csx" codeFormat="commonjs"
583
+ const { Locales } = require("intlayer");
584
+
585
+ const { useLocale } = require("react-intlayer");
586
+
587
+ const LocaleSwitcher = () => {
588
+ const { setLocale } = useLocale();
589
+
590
+ return (
591
+ <button onClick={() => setLocale(Locales.English)}>
592
+ Cambiar idioma a Inglés
593
+ </button>
594
+ );
595
+ };
596
+ ```
597
+
598
+ > Para aprender más sobre el hook `useLocale`, consulta la [documentación](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/react-intlayer/useLocale.md).
599
+
600
+ ### (Opcional) Paso 7: Agregar enrutamiento localizado a tu aplicación
601
+
602
+ El propósito de este paso es crear rutas únicas para cada idioma. Esto es útil para SEO y URLs amigables con SEO.
603
+ Ejemplo:
604
+
605
+ ```plaintext
606
+ - https://example.com/about
607
+ - https://example.com/es/about
608
+ - https://example.com/fr/about
609
+ ```
610
+
611
+ > Por defecto, las rutas no están prefijadas para el idioma predeterminado. Si deseas prefijar el idioma predeterminado, puedes configurar la opción `middleware.prefixDefault` como `true` en tu configuración. Consulta la [documentación de configuración](https://github.com/aymericzip/intlayer/blob/main/docs/es/configuration.md) para más información.
612
+
613
+ Para agregar enrutamiento localizado a tu aplicación, puedes crear un componente `LocaleRouter` que envuelva las rutas de tu aplicación y maneje el enrutamiento basado en el idioma. Aquí tienes un ejemplo usando [React Router](https://reactrouter.com/home):
614
+
615
+ ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
616
+ // Importando las dependencias y funciones necesarias
617
+ import { type Locales, configuration, getPathWithoutLocale } from "intlayer"; // Funciones y tipos utilitarios de 'intlayer'
618
+ import type { FC, PropsWithChildren } from "react"; // Tipos de React para componentes funcionales y props
619
+ import { IntlayerProvider } from "react-intlayer"; // Proveedor para el contexto de internacionalización
620
+ import {
621
+ BrowserRouter,
622
+ Routes,
623
+ Route,
624
+ Navigate,
625
+ useLocation,
626
+ } from "react-router-dom"; // Componentes de enrutador para gestionar la navegación
627
+
628
+ // Desestructuración de la configuración desde Intlayer
629
+ const { internationalization, middleware } = configuration;
630
+ const { locales, defaultLocale } = internationalization;
631
+
632
+ /**
633
+ * Un componente que maneja la localización y envuelve los hijos con el contexto de idioma apropiado.
634
+ * Gestiona la detección y validación de idiomas basada en la URL.
635
+ */
636
+ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
637
+ children,
638
+ locale,
639
+ }) => {
640
+ const { pathname, search } = useLocation(); // Obtiene la ruta actual de la URL
641
+
642
+ // Determina el idioma actual, utilizando el predeterminado si no se proporciona
643
+ const currentLocale = locale ?? defaultLocale;
644
+
645
+ // Elimina el prefijo del idioma de la ruta para construir una ruta base
646
+ const pathWithoutLocale = getPathWithoutLocale(
647
+ pathname // Ruta actual de la URL
648
+ );
649
+
650
+ /**
651
+ * Si middleware.prefixDefault es verdadero, el idioma predeterminado siempre debe estar prefijado.
652
+ */
653
+ if (middleware.prefixDefault) {
654
+ // Valida el idioma
655
+ if (!locale || !locales.includes(locale)) {
656
+ // Redirige al idioma predeterminado con la ruta actualizada
657
+ return (
658
+ <Navigate
659
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
660
+ replace // Reemplaza la entrada actual del historial con la nueva
661
+ />
662
+ );
663
+ }
664
+
665
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
666
+ return (
667
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
668
+ );
669
+ } else {
670
+ /**
671
+ * Cuando middleware.prefixDefault es falso, el idioma predeterminado no está prefijado.
672
+ * Asegúrate de que el idioma actual sea válido y no sea el idioma predeterminado.
673
+ */
674
+ if (
675
+ currentLocale.toString() !== defaultLocale.toString() &&
676
+ !locales
677
+ .filter(
678
+ (locale) => locale.toString() !== defaultLocale.toString() // Excluye el idioma predeterminado
679
+ )
680
+ .includes(currentLocale) // Verifica si el idioma actual está en la lista de idiomas válidos
681
+ ) {
682
+ // Redirige a la ruta sin el prefijo del idioma
683
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
684
+ }
685
+
686
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
687
+ return (
688
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
689
+ );
690
+ }
691
+ };
692
+
693
+ /**
694
+ * Un componente de enrutador que configura rutas específicas por idioma.
695
+ * Utiliza React Router para gestionar la navegación y renderizar componentes localizados.
696
+ */
697
+ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
698
+ <BrowserRouter>
699
+ <Routes>
700
+ {locales
701
+ .filter(
702
+ (locale) => middleware.prefixDefault || locale !== defaultLocale
703
+ )
704
+ .map((locale) => (
705
+ <Route
706
+ // Patrón de ruta para capturar el idioma (por ejemplo, /en/, /fr/) y coincidir con todas las rutas subsecuentes
707
+ path={`/${locale}/*`}
708
+ key={locale}
709
+ element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Envuelve los hijos con la gestión de idioma
710
+ />
711
+ ))}
712
+
713
+ {
714
+ // Si el prefijo del idioma predeterminado está deshabilitado, renderiza los hijos directamente en la ruta raíz
715
+ !middleware.prefixDefault && (
716
+ <Route
717
+ path="*"
718
+ element={
719
+ <AppLocalized locale={defaultLocale}>{children}</AppLocalized>
720
+ } // Envuelve los hijos con la gestión de idioma
721
+ />
722
+ )
723
+ }
724
+ </Routes>
725
+ </BrowserRouter>
726
+ );
727
+ ```
728
+
729
+ ```jsx fileName="src/components/LocaleRouter.mjx" codeFormat="esm"
730
+ // Importando las dependencias y funciones necesarias
731
+ import { configuration, getPathWithoutLocale } from "intlayer"; // Funciones y tipos utilitarios de 'intlayer'
732
+ import { IntlayerProvider } from "react-intlayer"; // Proveedor para el contexto de internacionalización
733
+ import {
734
+ BrowserRouter,
735
+ Routes,
736
+ Route,
737
+ Navigate,
738
+ useLocation,
739
+ } from "react-router-dom"; // Componentes de enrutador para gestionar la navegación
740
+
741
+ // Desestructuración de la configuración desde Intlayer
742
+ const { internationalization, middleware } = configuration;
743
+ const { locales, defaultLocale } = internationalization;
744
+
745
+ /**
746
+ * Un componente que maneja la localización y envuelve los hijos con el contexto de idioma apropiado.
747
+ * Gestiona la detección y validación de idiomas basada en la URL.
748
+ */
749
+ const AppLocalized = ({ children, locale }) => {
750
+ const { pathname, search } = useLocation(); // Obtiene la ruta actual de la URL
751
+
752
+ // Determina el idioma actual, utilizando el predeterminado si no se proporciona
753
+ const currentLocale = locale ?? defaultLocale;
754
+
755
+ // Elimina el prefijo del idioma de la ruta para construir una ruta base
756
+ const pathWithoutLocale = getPathWithoutLocale(
757
+ pathname // Ruta actual de la URL
758
+ );
759
+
760
+ /**
761
+ * Si middleware.prefixDefault es verdadero, el idioma predeterminado siempre debe estar prefijado.
762
+ */
763
+ if (middleware.prefixDefault) {
764
+ // Valida el idioma
765
+ if (!locale || !locales.includes(locale)) {
766
+ // Redirige al idioma predeterminado con la ruta actualizada
767
+ return (
768
+ <Navigate
769
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
770
+ replace // Reemplaza la entrada actual del historial con la nueva
771
+ />
772
+ );
773
+ }
774
+
775
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
776
+ return (
777
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
778
+ );
779
+ } else {
780
+ /**
781
+ * Cuando middleware.prefixDefault es falso, el idioma predeterminado no está prefijado.
782
+ * Asegúrate de que el idioma actual sea válido y no sea el idioma predeterminado.
783
+ */
784
+ if (
785
+ currentLocale.toString() !== defaultLocale.toString() &&
786
+ !locales
787
+ .filter(
788
+ (locale) => locale.toString() !== defaultLocale.toString() // Excluye el idioma predeterminado
789
+ )
790
+ .includes(currentLocale) // Verifica si el idioma actual está en la lista de idiomas válidos
791
+ ) {
792
+ // Redirige a la ruta sin el prefijo del idioma
793
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
794
+ }
795
+
796
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
797
+ return (
798
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
799
+ );
800
+ }
801
+ };
802
+
803
+ /**
804
+ * Un componente de enrutador que configura rutas específicas para cada idioma.
805
+ * Utiliza React Router para gestionar la navegación y renderizar componentes localizados.
806
+ */
807
+ export const LocaleRouter = ({ children }) => (
808
+ <BrowserRouter>
809
+ <Routes>
810
+ {locales
811
+ .filter(
812
+ (locale) => middleware.prefixDefault || locale !== defaultLocale
813
+ )
814
+ .map((locale) => (
815
+ <Route
816
+ // Patrón de ruta para capturar el idioma (por ejemplo, /en/, /fr/) y coincidir con todas las rutas subsecuentes
817
+ path={`/${locale}/*`}
818
+ key={locale}
819
+ element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Envuelve los hijos con la gestión de idioma
820
+ />
821
+ ))}
822
+
823
+ {
824
+ // Si el prefijo del idioma predeterminado está deshabilitado, renderiza los hijos directamente en la ruta raíz
825
+ !middleware.prefixDefault && (
826
+ <Route
827
+ path="*"
828
+ element={
829
+ <AppLocalized locale={defaultLocale}>{children}</AppLocalized>
830
+ } // Envuelve los hijos con la gestión de idioma
831
+ />
832
+ )
833
+ }
834
+ </Routes>
835
+ </BrowserRouter>
836
+ );
837
+ ```
838
+
839
+ ```jsx fileName="src/components/LocaleRouter.cjx" codeFormat="commonjs"
840
+ // Importando las dependencias y funciones necesarias
841
+ const { configuration, getPathWithoutLocale } = require("intlayer"); // Funciones y tipos utilitarios de 'intlayer'
842
+ const { IntlayerProvider, useLocale } = require("react-intlayer"); // Proveedor para el contexto de internacionalización
843
+ const {
844
+ BrowserRouter,
845
+ Routes,
846
+ Route,
847
+ Navigate,
848
+ useLocation,
849
+ } = require("react-router-dom"); // Componentes de enrutador para gestionar la navegación
850
+
851
+ // Desestructuración de la configuración desde Intlayer
852
+ const { internationalization, middleware } = configuration;
853
+ const { locales, defaultLocale } = internationalization;
854
+
855
+ /**
856
+ * Un componente que gestiona la localización y envuelve los hijos con el contexto de idioma apropiado.
857
+ * Gestiona la detección y validación del idioma basado en la URL.
858
+ */
859
+ const AppLocalized = ({ children, locale }) => {
860
+ const { pathname, search } = useLocation(); // Obtiene la ruta actual de la URL
861
+
862
+ // Determina el idioma actual, usando el predeterminado si no se proporciona
863
+ const currentLocale = locale ?? defaultLocale;
864
+
865
+ // Elimina el prefijo del idioma de la ruta para construir una ruta base
866
+ const pathWithoutLocale = getPathWithoutLocale(
867
+ pathname // Ruta actual de la URL
868
+ );
869
+
870
+ /**
871
+ * Si middleware.prefixDefault es verdadero, el idioma predeterminado siempre debe tener prefijo.
872
+ */
873
+ if (middleware.prefixDefault) {
874
+ // Valida el idioma
875
+ if (!locale || !locales.includes(locale)) {
876
+ // Redirige al idioma predeterminado con la ruta actualizada
877
+ return (
878
+ <Navigate
879
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
880
+ replace // Reemplaza la entrada actual del historial con la nueva
881
+ />
882
+ );
883
+ }
884
+
885
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
886
+ return (
887
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
888
+ );
889
+ } else {
890
+ /**
891
+ * Cuando middleware.prefixDefault es falso, el idioma predeterminado no tiene prefijo.
892
+ * Asegúrate de que el idioma actual sea válido y no sea el predeterminado.
893
+ */
894
+ if (
895
+ currentLocale.toString() !== defaultLocale.toString() &&
896
+ !locales
897
+ .filter(
898
+ (locale) => locale.toString() !== defaultLocale.toString() // Excluye el idioma predeterminado
899
+ )
900
+ .includes(currentLocale) // Verifica si el idioma actual está en la lista de idiomas válidos
901
+ ) {
902
+ // Redirige a la ruta sin prefijo de idioma
903
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
904
+ }
905
+
906
+ // Envuelve los hijos con el IntlayerProvider y establece el idioma actual
907
+ return (
908
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
909
+ );
910
+ }
911
+ };
912
+
913
+ /**
914
+ * Un componente de enrutador que configura rutas específicas para cada idioma.
915
+ * Utiliza React Router para gestionar la navegación y renderizar componentes localizados.
916
+ */
917
+ const LocaleRouter = ({ children }) => (
918
+ <BrowserRouter>
919
+ <Routes>
920
+ {locales
921
+ .filter(
922
+ (locale) => middleware.prefixDefault || locale !== defaultLocale
923
+ )
924
+ .map((locale) => (
925
+ <Route
926
+ // Patrón de ruta para capturar el idioma (por ejemplo, /en/, /fr/) y coincidir con todas las rutas subsecuentes
927
+ path={`/${locale}/*`}
928
+ key={locale}
929
+ element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Envuelve los hijos con la gestión de idioma
930
+ />
931
+ ))}
932
+
933
+ {
934
+ // Si el prefijo del idioma predeterminado está deshabilitado, renderiza los hijos directamente en la ruta raíz
935
+ !middleware.prefixDefault && (
936
+ <Route
937
+ path="*"
938
+ element={
939
+ <AppLocalized locale={defaultLocale}>{children}</AppLocalized>
940
+ } // Envuelve los hijos con la gestión de idioma
941
+ />
942
+ )
943
+ }
944
+ </Routes>
945
+ </BrowserRouter>
946
+ );
947
+ ```
948
+
949
+ Luego, puedes usar el componente `LocaleRouter` en tu aplicación:
950
+
951
+ ```tsx fileName="src/App.tsx" codeFormat="typescript"
952
+ import { LocaleRouter } from "./components/LocaleRouter";
953
+ import type { FC } from "react";
954
+
955
+ // ... Tu componente AppContent
956
+
957
+ const App: FC = () => (
958
+ <LocaleRouter>
959
+ <AppContent />
960
+ </LocaleRouter>
961
+ );
962
+ ```
963
+
964
+ ```jsx fileName="src/App.mjx" codeFormat="esm"
965
+ import { LocaleRouter } from "./components/LocaleRouter";
966
+
967
+ // ... Tu componente AppContent
968
+
969
+ const App = () => (
970
+ <LocaleRouter>
971
+ <AppContent />
972
+ </LocaleRouter>
973
+ );
974
+ ```
975
+
976
+ ```jsx fileName="src/App.cjx" codeFormat="commonjs"
977
+ const { LocaleRouter } = require("./components/LocaleRouter");
978
+
979
+ // ... Tu componente AppContent
980
+
981
+ const App = () => (
982
+ <LocaleRouter>
983
+ <AppContent />
984
+ </LocaleRouter>
985
+ );
986
+ ```
987
+
988
+ En paralelo, también puedes usar el `intLayerMiddlewarePlugin` para agregar enrutamiento del lado del servidor a tu aplicación. Este plugin detectará automáticamente el idioma actual basado en la URL y establecerá la cookie de idioma apropiada. Si no se especifica un idioma, el plugin determinará el idioma más apropiado basado en las preferencias de idioma del navegador del usuario. Si no se detecta un idioma, redirigirá al idioma predeterminado.
989
+
990
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
991
+ import { defineConfig } from "vite";
992
+ import react from "@vitejs/plugin-react-swc";
993
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
994
+
995
+ // https://vitejs.dev/config/
996
+ export default defineConfig({
997
+ plugins: [react(), intlayerPlugin(), intLayerMiddlewarePlugin()],
998
+ });
999
+ ```
1000
+
1001
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
1002
+ import { defineConfig } from "vite";
1003
+ import react from "@vitejs/plugin-react-swc";
1004
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
1005
+
1006
+ // https://vitejs.dev/config/
1007
+ export default defineConfig({
1008
+ plugins: [react(), intlayerPlugin(), intLayerMiddlewarePlugin()],
1009
+ });
1010
+ ```
1011
+
1012
+ ```javascript {5,10} fileName="vite.config.cjs" codeFormat="commonjs"
1013
+ const { defineConfig } = require("vite");
1014
+ const react = require("@vitejs/plugin-react-swc");
1015
+ const { intlayerPlugin, intLayerMiddlewarePlugin } = require("vite-intlayer");
1016
+
1017
+ // https://vitejs.dev/config/
1018
+ module.exports = defineConfig({
1019
+ plugins: [react(), intlayerPlugin(), intLayerMiddlewarePlugin()],
1020
+ });
1021
+ ```
1022
+
1023
+ ### (Opcional) Paso 8: Cambiar la URL cuando cambia el idioma
1024
+
1025
+ Para cambiar la URL cuando cambia el idioma, puedes usar la propiedad `onLocaleChange` proporcionada por el hook `useLocale`. En paralelo, puedes usar los hooks `useLocation` y `useNavigate` de `react-router-dom` para actualizar la ruta de la URL.
1026
+
1027
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
1028
+ import { useLocation, useNavigate } from "react-router-dom";
1029
+ import {
1030
+ Locales,
1031
+ getHTMLTextDir,
1032
+ getLocaleName,
1033
+ getLocalizedUrl,
1034
+ } from "intlayer";
1035
+ import { useLocale } from "react-intlayer";
1036
+ import { type FC } from "react";
1037
+
1038
+ const LocaleSwitcher: FC = () => {
1039
+ const { pathname, search } = useLocation(); // Obtiene la ruta actual de la URL. Ejemplo: /fr/about?foo=bar
1040
+ const navigate = useNavigate();
1041
+
1042
+ const { locale, availableLocales, setLocale } = useLocale({
1043
+ onLocaleChange: (locale) => {
1044
+ // Construir la URL con el locale actualizado
1045
+ // Ejemplo: /es/about?foo=bar
1046
+ const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1047
+
1048
+ // Actualizar la ruta de la URL
1049
+ navigate(pathWithLocale);
1050
+ },
1051
+ });
1052
+
1053
+ return (
1054
+ <div>
1055
+ <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
1056
+ <div id="localePopover" popover="auto">
1057
+ {availableLocales.map((localeItem) => (
1058
+ <a
1059
+ href={getLocalizedUrl(location.pathname, localeItem)}
1060
+ hrefLang={localeItem}
1061
+ aria-current={locale === localeItem ? "page" : undefined}
1062
+ onClick={(e) => {
1063
+ e.preventDefault();
1064
+ setLocale(localeItem);
1065
+ }}
1066
+ key={localeItem}
1067
+ >
1068
+ <span>
1069
+ {/* Locale - por ejemplo, FR */}
1070
+ {localeItem}
1071
+ </span>
1072
+ <span>
1073
+ {/* Idioma en su propio Locale - por ejemplo, Français */}
1074
+ {getLocaleName(localeItem, locale)}
1075
+ </span>
1076
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1077
+ {/* Idioma en el Locale actual - por ejemplo, Francés con el locale actual configurado en Locales.SPANISH */}
1078
+ {getLocaleName(localeItem)}
1079
+ </span>
1080
+ <span dir="ltr" lang={Locales.ENGLISH}>
1081
+ {/* Idioma en Inglés - por ejemplo, French */}
1082
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1083
+ </span>
1084
+ </a>
1085
+ ))}
1086
+ </div>
1087
+ </div>
1088
+ );
1089
+ };
1090
+ ```
1091
+
1092
+ ```jsx fileName="src/components/LocaleSwitcher.msx" codeFormat="esm"
1093
+ import { useLocation, useNavigate } from "react-router-dom";
1094
+ import {
1095
+ Locales,
1096
+ getHTMLTextDir,
1097
+ getLocaleName,
1098
+ getLocalizedUrl,
1099
+ } from "intlayer";
1100
+ import { useLocale } from "react-intlayer";
1101
+
1102
+ const LocaleSwitcher = () => {
1103
+ const { pathname, search } = useLocation(); // Obtener la ruta actual de la URL. Ejemplo: /fr/about?foo=bar
1104
+ const navigate = useNavigate();
1105
+
1106
+ const { locale, availableLocales, setLocale } = useLocale({
1107
+ onLocaleChange: (locale) => {
1108
+ // Construir la URL con el locale actualizado
1109
+ // Ejemplo: /es/about?foo=bar
1110
+ const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1111
+
1112
+ // Actualizar la ruta de la URL
1113
+ navigate(pathWithLocale);
1114
+ },
1115
+ });
1116
+
1117
+ return (
1118
+ <div>
1119
+ <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
1120
+ <div id="localePopover" popover="auto">
1121
+ {availableLocales.map((localeItem) => (
1122
+ <a
1123
+ href={getLocalizedUrl(location.pathname, localeItem)}
1124
+ hrefLang={localeItem}
1125
+ aria-current={locale === localeItem ? "page" : undefined}
1126
+ onClick={(e) => {
1127
+ e.preventDefault();
1128
+ setLocale(localeItem);
1129
+ }}
1130
+ key={localeItem}
1131
+ >
1132
+ <span>
1133
+ {/* Locale - por ejemplo, FR */}
1134
+ {localeItem}
1135
+ </span>
1136
+ <span>
1137
+ {/* Idioma en su propio Locale - por ejemplo, Français */}
1138
+ {getLocaleName(localeItem, locale)}
1139
+ </span>
1140
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1141
+ {/* Idioma en el Locale actual - por ejemplo, Francés con el locale actual configurado en Locales.SPANISH */}
1142
+ {getLocaleName(localeItem)}
1143
+ </span>
1144
+ <span dir="ltr" lang={Locales.ENGLISH}>
1145
+ {/* Idioma en Inglés - por ejemplo, French */}
1146
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1147
+ </span>
1148
+ </a>
1149
+ ))}
1150
+ </div>
1151
+ </div>
1152
+ );
1153
+ };
1154
+ ```
1155
+
1156
+ ```jsx fileName="src/components/LocaleSwitcher.csx" codeFormat="commonjs"
1157
+ const { useLocation, useNavigate } = require("react-router-dom");
1158
+ const {
1159
+ Locales,
1160
+ getHTMLTextDir,
1161
+ getLocaleName,
1162
+ getLocalizedUrl,
1163
+ } = require("intlayer");
1164
+ const { useLocale } = require("react-intlayer");
1165
+
1166
+ const LocaleSwitcher = () => {
1167
+ const { pathname, search } = useLocation(); // Obtener la ruta actual de la URL. Ejemplo: /fr/about?foo=bar
1168
+ const navigate = useNavigate();
1169
+
1170
+ const { locale, availableLocales, setLocale } = useLocale({
1171
+ onLocaleChange: (locale) => {
1172
+ // Construir la URL con el locale actualizado
1173
+ // Ejemplo: /es/about?foo=bar
1174
+ const pathWithLocale = getLocalizedUrl(`${pathname}${search}`, locale);
1175
+
1176
+ // Actualizar la ruta de la URL
1177
+ navigate(pathWithLocale);
1178
+ },
1179
+ });
1180
+
1181
+ return (
1182
+ <div>
1183
+ <button popoverTarget="localePopover">{getLocaleName(locale)}</button>
1184
+ <div id="localePopover" popover="auto">
1185
+ {availableLocales.map((localeItem) => (
1186
+ <a
1187
+ href={getLocalizedUrl(location.pathname, localeItem)}
1188
+ hrefLang={localeItem}
1189
+ aria-current={locale === localeItem ? "page" : undefined}
1190
+ onClick={(e) => {
1191
+ e.preventDefault();
1192
+ setLocale(localeItem);
1193
+ }}
1194
+ key={localeItem}
1195
+ >
1196
+ <span>
1197
+ {/* Locale - por ejemplo, FR */}
1198
+ {localeItem}
1199
+ </span>
1200
+ <span>
1201
+ {/* Idioma en su propio Locale - por ejemplo, Français */}
1202
+ {getLocaleName(localeItem, locale)}
1203
+ </span>
1204
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1205
+ {/* Idioma en el Locale actual - por ejemplo, Francés con el locale actual configurado en Locales.SPANISH */}
1206
+ {getLocaleName(localeItem)}
1207
+ </span>
1208
+ <span dir="ltr" lang={Locales.ENGLISH}>
1209
+ {/* Idioma en Inglés - por ejemplo, French */}
1210
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1211
+ </span>
1212
+ </a>
1213
+ ))}
1214
+ </div>
1215
+ </div>
1216
+ );
1217
+ };
1218
+ ```
1219
+
1220
+ > Referencias de documentación:
1221
+
1222
+ > - [`useLocale` hook](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/react-intlayer/useLocale.md)
1223
+
1224
+ > - [`getLocaleName` hook](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/intlayer/getLocaleName.md)
1225
+
1226
+ > - [`getLocalizedUrl` hook](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/intlayer/getLocalizedUrl.md)
1227
+
1228
+ > - [`getHTMLTextDir` hook](https://github.com/aymericzip/intlayer/blob/main/docs/es/packages/intlayer/getHTMLTextDir.md)
1229
+
1230
+ > - [`hrefLang` attribute](https://developers.google.com/search/docs/specialty/international/localized-versions?hl=fr)
1231
+
1232
+ > - [`lang` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang)
1233
+
1234
+ > - [`dir` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir)
1235
+
1236
+ > - [`aria-current` attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)
1237
+
1238
+ A continuación, el **Paso 9** actualizado con explicaciones añadidas y ejemplos de código refinados:
1239
+
1240
+ ### (Opcional) Paso 9: Cambiar los Atributos de Idioma y Dirección en HTML
1241
+
1242
+ Cuando tu aplicación soporta múltiples idiomas, es crucial actualizar los atributos `lang` y `dir` de la etiqueta `<html>` para que coincidan con el locale actual. Hacer esto asegura:
1243
+
1244
+ - **Accesibilidad**: Los lectores de pantalla y tecnologías de asistencia dependen del atributo `lang` correcto para pronunciar e interpretar el contenido con precisión.
1245
+ - **Renderizado de Texto**: El atributo `dir` (dirección) asegura que el texto se renderice en el orden adecuado (por ejemplo, de izquierda a derecha para inglés, de derecha a izquierda para árabe o hebreo), lo cual es esencial para la legibilidad.
1246
+ - **SEO**: Los motores de búsqueda utilizan el atributo `lang` para determinar el idioma de tu página, ayudando a servir el contenido localizado correcto en los resultados de búsqueda.
1247
+
1248
+ Al actualizar estos atributos dinámicamente cuando cambia el locale, garantizas una experiencia consistente y accesible para los usuarios en todos los idiomas soportados.
1249
+
1250
+ #### Implementación del Hook
1251
+
1252
+ Crea un hook personalizado para gestionar los atributos HTML. El hook escucha los cambios de locale y actualiza los atributos en consecuencia:
1253
+
1254
+ ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
1255
+ import { useEffect } from "react";
1256
+ import { useLocale } from "react-intlayer";
1257
+ import { getHTMLTextDir } from "intlayer";
1258
+
1259
+ /**
1260
+
1261
+
1262
+ * Actualiza los atributos `lang` y `dir` del elemento HTML <html> basado en la configuración regional actual.
1263
+ * - `lang`: Informa a los navegadores y motores de búsqueda sobre el idioma de la página.
1264
+ * - `dir`: Asegura el orden de lectura correcto (por ejemplo, 'ltr' para inglés, 'rtl' para árabe).
1265
+ *
1266
+ * Esta actualización dinámica es esencial para el renderizado adecuado del texto, accesibilidad y SEO.
1267
+ */
1268
+ export const useI18nHTMLAttributes = () => {
1269
+ const { locale } = useLocale();
1270
+
1271
+ useEffect(() => {
1272
+ // Actualiza el atributo de idioma al idioma actual.
1273
+ document.documentElement.lang = locale;
1274
+
1275
+ // Establece la dirección del texto basada en la configuración regional actual.
1276
+ document.documentElement.dir = getHTMLTextDir(locale);
1277
+ }, [locale]);
1278
+ };
1279
+ ```
1280
+
1281
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.msx" codeFormat="esm"
1282
+ import { useEffect } from "react";
1283
+ import { useLocale } from "react-intlayer";
1284
+ import { getHTMLTextDir } from "intlayer";
1285
+
1286
+ /**
1287
+ * Actualiza los atributos `lang` y `dir` del elemento HTML <html> basado en la configuración regional actual.
1288
+ * - `lang`: Informa a los navegadores y motores de búsqueda sobre el idioma de la página.
1289
+ * - `dir`: Asegura el orden de lectura correcto (por ejemplo, 'ltr' para inglés, 'rtl' para árabe).
1290
+ *
1291
+ * Esta actualización dinámica es esencial para el renderizado adecuado del texto, accesibilidad y SEO.
1292
+ */
1293
+ export const useI18nHTMLAttributes = () => {
1294
+ const { locale } = useLocale();
1295
+
1296
+ useEffect(() => {
1297
+ // Actualiza el atributo de idioma al idioma actual.
1298
+ document.documentElement.lang = locale;
1299
+
1300
+ // Establece la dirección del texto basada en la configuración regional actual.
1301
+ document.documentElement.dir = getHTMLTextDir(locale);
1302
+ }, [locale]);
1303
+ };
1304
+ ```
1305
+
1306
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.csx" codeFormat="commonjs"
1307
+ const { useEffect } = require("react");
1308
+ const { useLocale } = require("react-intlayer");
1309
+ const { getHTMLTextDir } = require("intlayer");
1310
+
1311
+ /**
1312
+ * Actualiza los atributos `lang` y `dir` del elemento HTML <html> basado en la configuración regional actual.
1313
+ * - `lang`: Informa a los navegadores y motores de búsqueda sobre el idioma de la página.
1314
+ * - `dir`: Asegura el orden de lectura correcto (por ejemplo, 'ltr' para inglés, 'rtl' para árabe).
1315
+ *
1316
+ * Esta actualización dinámica es esencial para el renderizado adecuado del texto, accesibilidad y SEO.
1317
+ */
1318
+ const useI18nHTMLAttributes = () => {
1319
+ const { locale } = useLocale();
1320
+
1321
+ useEffect(() => {
1322
+ // Actualiza el atributo de idioma al idioma actual.
1323
+ document.documentElement.lang = locale;
1324
+
1325
+ // Establece la dirección del texto basada en la configuración regional actual.
1326
+ document.documentElement.dir = getHTMLTextDir(locale);
1327
+ }, [locale]);
1328
+ };
1329
+
1330
+ module.exports = { useI18nHTMLAttributes };
1331
+ ```
1332
+
1333
+ #### Usando el Hook en Tu Aplicación
1334
+
1335
+ Integra el hook en tu componente principal para que los atributos HTML se actualicen cada vez que cambie la configuración regional:
1336
+
1337
+ ```tsx fileName="src/App.tsx" codeFormat="typescript"
1338
+ import type { FC } from "react";
1339
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
1340
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1341
+ import "./App.css";
1342
+
1343
+ const AppContent: FC = () => {
1344
+ // Aplica el hook para actualizar los atributos lang y dir de la etiqueta <html> basado en la configuración regional.
1345
+ useI18nHTMLAttributes();
1346
+
1347
+ // ... Resto de tu componente
1348
+ };
1349
+
1350
+ const App: FC = () => (
1351
+ <IntlayerProvider>
1352
+ <AppContent />
1353
+ </IntlayerProvider>
1354
+ );
1355
+
1356
+ export default App;
1357
+ ```
1358
+
1359
+ ```jsx fileName="src/App.msx" codeFormat="esm"
1360
+ import { IntlayerProvider, useIntlayer } from "react-intlayer";
1361
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1362
+ import "./App.css";
1363
+
1364
+ const AppContent = () => {
1365
+ // Aplica el hook para actualizar los atributos lang y dir de la etiqueta <html> basado en la configuración regional.
1366
+ useI18nHTMLAttributes();
1367
+
1368
+ // ... Resto de tu componente
1369
+ };
1370
+
1371
+ const App = () => (
1372
+ <IntlayerProvider>
1373
+ <AppContent />
1374
+ </IntlayerProvider>
1375
+ );
1376
+
1377
+ export default App;
1378
+ ```
1379
+
1380
+ ```jsx fileName="src/App.csx" codeFormat="commonjs"
1381
+ const { FC } = require("react");
1382
+ const { IntlayerProvider, useIntlayer } = require("react-intlayer");
1383
+ const { useI18nHTMLAttributes } = require("./hooks/useI18nHTMLAttributes");
1384
+ require("./App.css");
1385
+
1386
+ const AppContent = () => {
1387
+ // Aplica el hook para actualizar los atributos lang y dir de la etiqueta <html> basado en la configuración regional.
1388
+ useI18nHTMLAttributes();
1389
+
1390
+ // ... Resto de tu componente
1391
+ };
1392
+
1393
+ const App = () => (
1394
+ <IntlayerProvider>
1395
+ <AppContent />
1396
+ </IntlayerProvider>
1397
+ );
1398
+
1399
+ module.exports = App;
1400
+ ```
1401
+
1402
+ Al aplicar estos cambios, tu aplicación:
1403
+
1404
+ - Asegurará que el atributo **idioma** (`lang`) refleje correctamente la configuración regional actual, lo cual es importante para SEO y el comportamiento del navegador.
1405
+ - Ajustará la **dirección del texto** (`dir`) según la configuración regional, mejorando la legibilidad y usabilidad para idiomas con diferentes órdenes de lectura.
1406
+ - Proporcionará una experiencia más **accesible**, ya que las tecnologías de asistencia dependen de estos atributos para funcionar de manera óptima.
1407
+
1408
+ ### (Opcional) Paso 10: Creando un Componente de Enlace Localizado
1409
+
1410
+ Para garantizar que la navegación de tu aplicación respete la configuración regional actual, puedes crear un componente personalizado `Link`. Este componente automáticamente añade un prefijo a las URLs internas con el idioma actual. Por ejemplo, cuando un usuario que habla francés hace clic en un enlace a la página "Acerca de", será redirigido a `/fr/about` en lugar de `/about`.
1411
+
1412
+ Este comportamiento es útil por varias razones:
1413
+
1414
+ - **SEO y Experiencia de Usuario**: Las URLs localizadas ayudan a los motores de búsqueda a indexar correctamente las páginas específicas de cada idioma y proporcionan a los usuarios contenido en su idioma preferido.
1415
+ - **Consistencia**: Al usar un enlace localizado en toda tu aplicación, garantizas que la navegación se mantenga dentro de la configuración regional actual, evitando cambios inesperados de idioma.
1416
+ - **Mantenibilidad**: Centralizar la lógica de localización en un único componente simplifica la gestión de URLs, haciendo que tu base de código sea más fácil de mantener y extender a medida que tu aplicación crece.
1417
+
1418
+ A continuación, se muestra la implementación de un componente `Link` localizado en TypeScript:
1419
+
1420
+ ```tsx fileName="src/components/Link.tsx" codeFormat="typescript"
1421
+ import { getLocalizedUrl } from "intlayer";
1422
+ import {
1423
+ forwardRef,
1424
+ type DetailedHTMLProps,
1425
+ type AnchorHTMLAttributes,
1426
+ } from "react";
1427
+ import { useLocale } from "react-intlayer";
1428
+
1429
+ export interface LinkProps
1430
+ extends DetailedHTMLProps<
1431
+ AnchorHTMLAttributes<HTMLAnchorElement>,
1432
+ HTMLAnchorElement
1433
+ > {}
1434
+
1435
+ /**
1436
+ * Función de utilidad para verificar si una URL dada es externa.
1437
+ * Si la URL comienza con http:// o https://, se considera externa.
1438
+ */
1439
+ export const checkIsExternalLink = (href?: string): boolean =>
1440
+ /^https?:\/\//.test(href ?? "");
1441
+
1442
+ /**
1443
+ * Un componente personalizado Link que adapta el atributo href basado en la configuración regional actual.
1444
+ * Para enlaces internos, utiliza `getLocalizedUrl` para añadir un prefijo a la URL con la configuración regional (por ejemplo, /fr/about).
1445
+ * Esto asegura que la navegación se mantenga dentro del mismo contexto regional.
1446
+ */
1447
+ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
1448
+ ({ href, children, ...props }, ref) => {
1449
+ const { locale } = useLocale();
1450
+ const isExternalLink = checkIsExternalLink(href);
1451
+
1452
+ // Si el enlace es interno y se proporciona un href válido, obtiene la URL localizada.
1453
+ const hrefI18n =
1454
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1455
+
1456
+ return (
1457
+ <a href={hrefI18n} ref={ref} {...props}>
1458
+ {children}
1459
+ </a>
1460
+ );
1461
+ }
1462
+ );
1463
+
1464
+ Link.displayName = "Link";
1465
+ ```
1466
+
1467
+ ```jsx fileName="src/components/Link.mjx" codeFormat="esm"
1468
+ import { getLocalizedUrl } from "intlayer";
1469
+ import { useLocale } from "react-intlayer";
1470
+ import { forwardRef } from "react";
1471
+
1472
+ /**
1473
+ * Función de utilidad para verificar si una URL dada es externa.
1474
+ * Si la URL comienza con http:// o https://, se considera externa.
1475
+ */
1476
+ export const checkIsExternalLink = (href?: string): boolean =>
1477
+ /^https?:\/\//.test(href ?? "");
1478
+
1479
+ /**
1480
+ * Un componente personalizado Link que adapta el atributo href basado en la configuración regional actual.
1481
+ * Para enlaces internos, utiliza `getLocalizedUrl` para añadir un prefijo a la URL con la configuración regional (por ejemplo, /fr/about).
1482
+ * Esto asegura que la navegación se mantenga dentro del mismo contexto regional.
1483
+ */
1484
+ export const Link = forwardRef(({ href, children, ...props }, ref) => {
1485
+
1486
+
1487
+
1488
+ const { locale } = useLocale();
1489
+ const isExternalLink = checkIsExternalLink(href);
1490
+
1491
+ // Si el enlace es interno y se proporciona un href válido, obtiene la URL localizada.
1492
+ const hrefI18n =
1493
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1494
+
1495
+ return (
1496
+ <a href={hrefI18n} ref={ref} {...props}>
1497
+ {children}
1498
+ </a>
1499
+ );
1500
+ });
1501
+
1502
+ Link.displayName = "Link";
1503
+ ```
1504
+
1505
+ ```jsx fileName="src/components/Link.csx" codeFormat="commonjs"
1506
+ const { getLocalizedUrl } = require("intlayer");
1507
+ const { useLocale } = require("react-intlayer");
1508
+ const { forwardRef } = require("react");
1509
+
1510
+ /**
1511
+ * Función de utilidad para verificar si una URL dada es externa.
1512
+ * Si la URL comienza con http:// o https://, se considera externa.
1513
+ */
1514
+ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1515
+
1516
+ /**
1517
+ * Un componente Link personalizado que adapta el atributo href según el idioma actual.
1518
+ * Para enlaces internos, utiliza `getLocalizedUrl` para prefijar la URL con el idioma (por ejemplo, /es/about).
1519
+ * Esto asegura que la navegación permanezca dentro del mismo contexto de idioma.
1520
+ */
1521
+ const Link = forwardRef(({ href, children, ...props }, ref) => {
1522
+ const { locale } = useLocale();
1523
+ const isExternalLink = checkIsExternalLink(href);
1524
+
1525
+ // Si el enlace es interno y se proporciona un href válido, obtiene la URL localizada.
1526
+ const localizedHref = isExternalLink ? href : getLocalizedUrl(href, locale);
1527
+
1528
+ return (
1529
+ <a
1530
+ href={localizedHref}
1531
+ ref={ref}
1532
+ {...props}
1533
+ aria-current={isExternalLink ? "external" : undefined}
1534
+ >
1535
+ {children}
1536
+ </a>
1537
+ );
1538
+ });
1539
+
1540
+ Link.displayName = "Link";
1541
+ ```
1542
+
1543
+ #### Cómo Funciona
1544
+
1545
+ - **Detectar Enlaces Externos**:
1546
+ La función auxiliar `checkIsExternalLink` determina si una URL es externa. Los enlaces externos no se modifican porque no necesitan localización.
1547
+
1548
+ - **Obtener el Idioma Actual**:
1549
+ El hook `useLocale` proporciona el idioma actual (por ejemplo, `es` para Español).
1550
+
1551
+ - **Localizar la URL**:
1552
+ Para enlaces internos (es decir, no externos), se utiliza `getLocalizedUrl` para prefijar automáticamente la URL con el idioma actual. Esto significa que si tu usuario está en Español, pasar `/about` como `href` lo transformará en `/es/about`.
1553
+
1554
+ - **Devolver el Enlace**:
1555
+ El componente devuelve un elemento `<a>` con la URL localizada, asegurando que la navegación sea consistente con el idioma.
1556
+
1557
+ Al integrar este componente `Link` en toda tu aplicación, mantienes una experiencia de usuario coherente y consciente del idioma, además de beneficiarte de un SEO y usabilidad mejorados.
1558
+
1559
+ ### Configurar TypeScript
1560
+
1561
+ Intlayer utiliza la ampliación de módulos para aprovechar los beneficios de TypeScript y fortalecer tu base de código.
1562
+
1563
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
1564
+
1565
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1566
+
1567
+ Asegúrate de que tu configuración de TypeScript incluya los tipos autogenerados.
1568
+
1569
+ ```json5 fileName="tsconfig.json"
1570
+ {
1571
+ // ... Tus configuraciones existentes de TypeScript
1572
+ "include": [
1573
+ // ... Tus configuraciones existentes de TypeScript
1574
+ ".intlayer/**/*.ts", // Incluir los tipos autogenerados
1575
+ ],
1576
+ }
1577
+ ```
1578
+
1579
+ ### Configuración de Git
1580
+
1581
+ Se recomienda ignorar los archivos generados por Intlayer. Esto te permite evitar comprometerlos en tu repositorio de Git.
1582
+
1583
+ Para hacerlo, puedes agregar las siguientes instrucciones a tu archivo `.gitignore`:
1584
+
1585
+ ```plaintext
1586
+ # Ignorar los archivos generados por Intlayer
1587
+ .intlayer
1588
+ ```
1589
+
1590
+ ### Ir Más Allá
1591
+
1592
+ Para ir más allá, puedes implementar el [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/es/intlayer_visual_editor.md) o externalizar tu contenido usando el [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/es/intlayer_CMS.md).