@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,1681 @@
1
+ # Iniziare con l'internazionalizzazione (i18n) con Intlayer, Vite e Preact
2
+
3
+ > Questo pacchetto è in fase di sviluppo. Consulta il [problema](https://github.com/aymericzip/intlayer/issues/118) per maggiori informazioni. Mostra il tuo interesse per Intlayer per Preact mettendo un like al problema.
4
+
5
+ Consulta il [Template dell'Applicazione](https://github.com/aymericzip/intlayer-vite-preact-template) su GitHub.
6
+
7
+ ## Cos'è Intlayer?
8
+
9
+ **Intlayer** è una libreria open-source innovativa per l'internazionalizzazione (i18n) progettata per semplificare il supporto multilingue nelle moderne applicazioni web.
10
+
11
+ Con Intlayer, puoi:
12
+
13
+ - **Gestire facilmente le traduzioni** utilizzando dizionari dichiarativi a livello di componente.
14
+ - **Localizzare dinamicamente metadati**, percorsi e contenuti.
15
+ - **Garantire il supporto TypeScript** con tipi autogenerati, migliorando l'autocompletamento e il rilevamento degli errori.
16
+ - **Beneficiare di funzionalità avanzate**, come il rilevamento dinamico della lingua e il cambio di lingua.
17
+
18
+ ---
19
+
20
+ ## Guida passo-passo per configurare Intlayer in un'applicazione Vite e Preact
21
+
22
+ ### Passo 1: Installa le dipendenze
23
+
24
+ Installa i pacchetti necessari utilizzando npm:
25
+
26
+ ```bash packageManager="npm"
27
+ npm install intlayer preact-intlayer vite-intlayer
28
+ ```
29
+
30
+ ```bash packageManager="pnpm"
31
+ pnpm add intlayer preact-intlayer vite-intlayer
32
+ ```
33
+
34
+ ```bash packageManager="yarn"
35
+ yarn add intlayer preact-intlayer vite-intlayer
36
+ ```
37
+
38
+ - **intlayer**
39
+
40
+ Il pacchetto principale che fornisce strumenti di internazionalizzazione per la gestione della configurazione, traduzione, [dichiarazione dei contenuti](https://github.com/aymericzip/intlayer/blob/main/docs/it/dictionary/get_started.md), transpilation e [comandi CLI](https://github.com/aymericzip/intlayer/blob/main/docs/it/intlayer_cli.md).
41
+
42
+ - **preact-intlayer**
43
+ Il pacchetto che integra Intlayer con l'applicazione Preact. Fornisce provider di contesto e hook per l'internazionalizzazione in Preact.
44
+
45
+ - **vite-intlayer**
46
+ Include il plugin Vite per integrare Intlayer con il [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), oltre a middleware per rilevare la lingua preferita dell'utente, gestire i cookie e gestire i reindirizzamenti degli URL.
47
+
48
+ ### Passo 2: Configurazione del tuo progetto
49
+
50
+ Crea un file di configurazione per configurare le lingue della tua applicazione:
51
+
52
+ ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
53
+ import { Locales, type IntlayerConfig } from "intlayer";
54
+
55
+ const config: IntlayerConfig = {
56
+ internationalization: {
57
+ locales: [
58
+ Locales.ENGLISH,
59
+ Locales.FRENCH,
60
+ Locales.SPANISH,
61
+ // Altre lingue
62
+ ],
63
+ defaultLocale: Locales.ENGLISH,
64
+ },
65
+ };
66
+
67
+ export default config;
68
+ ```
69
+
70
+ ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
71
+ import { Locales } from "intlayer";
72
+
73
+ /** @type {import('intlayer').IntlayerConfig} */
74
+ const config = {
75
+ internationalization: {
76
+ locales: [
77
+ Locales.ENGLISH,
78
+ Locales.FRENCH,
79
+ Locales.SPANISH,
80
+ // Altre lingue
81
+ ],
82
+ defaultLocale: Locales.ENGLISH,
83
+ },
84
+ };
85
+
86
+ export default config;
87
+ ```
88
+
89
+ ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
90
+ const { Locales } = require("intlayer");
91
+
92
+ /** @type {import('intlayer').IntlayerConfig} */
93
+ const config = {
94
+ internationalization: {
95
+ locales: [
96
+ Locales.ENGLISH,
97
+ Locales.FRENCH,
98
+ Locales.SPANISH,
99
+ // Altre lingue
100
+ ],
101
+ defaultLocale: Locales.ENGLISH,
102
+ },
103
+ };
104
+
105
+ module.exports = config;
106
+ ```
107
+
108
+ > Tramite questo file di configurazione, puoi configurare URL localizzati, reindirizzamenti middleware, nomi dei cookie, la posizione e l'estensione delle dichiarazioni dei contenuti, disabilitare i log di Intlayer nella console e altro ancora. Per un elenco completo dei parametri disponibili, consulta la [documentazione di configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/it/configuration.md).
109
+
110
+ ### Passo 3: Integra Intlayer nella configurazione di Vite
111
+
112
+ Aggiungi il plugin intlayer nella tua configurazione.
113
+
114
+ ```typescript fileName="vite.config.ts" codeFormat="typescript"
115
+ import { defineConfig } from "vite";
116
+ import preact from "@preact/preset-vite";
117
+ import { intlayerPlugin } from "vite-intlayer";
118
+
119
+ // https://vitejs.dev/config/
120
+ export default defineConfig({
121
+ plugins: [preact(), intlayerPlugin()],
122
+ });
123
+ ```
124
+
125
+ ```javascript fileName="vite.config.mjs" codeFormat="esm"
126
+ import { defineConfig } from "vite";
127
+ import preact from "@preact/preset-vite";
128
+ import { intlayerPlugin } from "vite-intlayer";
129
+
130
+ // https://vitejs.dev/config/
131
+ export default defineConfig({
132
+ plugins: [preact(), intlayerPlugin()],
133
+ });
134
+ ```
135
+
136
+ ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
137
+ const { defineConfig } = require("vite");
138
+ const preact = require("@preact/preset-vite");
139
+ const { intlayerPlugin } = require("vite-intlayer");
140
+
141
+ // https://vitejs.dev/config/
142
+ module.exports = defineConfig({
143
+ plugins: [preact(), intlayerPlugin()],
144
+ });
145
+ ```
146
+
147
+ > Il plugin `intlayerPlugin()` di Vite viene utilizzato per integrare Intlayer con Vite. Garantisce la creazione dei file di dichiarazione dei contenuti e li monitora in modalità sviluppo. Definisce variabili di ambiente Intlayer all'interno dell'applicazione Vite. Inoltre, fornisce alias per ottimizzare le prestazioni.
148
+
149
+ ### Passo 4: Dichiarare i tuoi contenuti
150
+
151
+ Crea e gestisci le dichiarazioni dei tuoi contenuti per memorizzare le traduzioni:
152
+
153
+ ```tsx fileName="src/app.content.tsx" contentDeclarationFormat="typescript"
154
+ import { t, type Dictionary } from "intlayer";
155
+
156
+ const appContent = {
157
+ key: "app",
158
+ content: {
159
+ viteLogo: t({
160
+ it: "Logo Vite",
161
+ en: "Vite logo",
162
+ fr: "Logo Vite",
163
+ es: "Logo Vite",
164
+ }),
165
+ preactLogo: t({
166
+ it: "Logo Preact",
167
+ en: "Preact logo",
168
+ fr: "Logo Preact",
169
+ es: "Logo Preact",
170
+ }),
171
+
172
+ title: "Vite + Preact",
173
+
174
+ count: t({
175
+ it: "il conteggio è ",
176
+ en: "count is ",
177
+ fr: "le compte est ",
178
+ es: "el recuento es ",
179
+ }),
180
+
181
+ edit: t({
182
+ it: "Modifica src/app.tsx e salva per testare HMR",
183
+ en: "Edit src/app.tsx and save to test HMR",
184
+ fr: "Éditez src/app.tsx et enregistrez pour tester HMR",
185
+ es: "Edita src/app.tsx y guarda para probar HMR",
186
+ }),
187
+
188
+ readTheDocs: t({
189
+ it: "Clicca sui loghi di Vite e Preact per saperne di più",
190
+ en: "Click on the Vite and Preact logos to learn more",
191
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
192
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
193
+ }),
194
+ },
195
+ } satisfies Dictionary;
196
+
197
+ export default appContent;
198
+ ```
199
+
200
+ ```javascript fileName="src/app.content.mjs" contentDeclarationFormat="esm"
201
+ import { t } from "intlayer";
202
+ // import { h } from 'preact'; // Necessario se usi JSX direttamente in .mjs
203
+
204
+ /** @type {import('intlayer').Dictionary} */
205
+ const appContent = {
206
+ key: "app",
207
+ content: {
208
+ viteLogo: t({
209
+ it: "Logo Vite",
210
+ en: "Vite logo",
211
+ fr: "Logo Vite",
212
+ es: "Logo Vite",
213
+ }),
214
+ preactLogo: t({
215
+ it: "Logo Preact",
216
+ en: "Preact logo",
217
+ fr: "Logo Preact",
218
+ es: "Logo Preact",
219
+ }),
220
+
221
+ title: "Vite + Preact",
222
+
223
+ count: t({
224
+ it: "il conteggio è ",
225
+ en: "count is ",
226
+ fr: "le compte est ",
227
+ es: "el recuento es ",
228
+ }),
229
+
230
+ edit: t({
231
+ it: "Modifica src/app.jsx e salva per testare HMR",
232
+ en: "Edit src/app.jsx and save to test HMR",
233
+ fr: "Éditez src/app.jsx et enregistrez pour tester HMR",
234
+ es: "Edita src/app.jsx y guarda para probar HMR",
235
+ }),
236
+
237
+ readTheDocs: t({
238
+ it: "Clicca sui loghi di Vite e Preact per saperne di più",
239
+ en: "Click on the Vite and Preact logos to learn more",
240
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
241
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
242
+ }),
243
+ },
244
+ };
245
+
246
+ export default appContent;
247
+ ```
248
+
249
+ ```javascript fileName="src/app.content.cjs" contentDeclarationFormat="commonjs"
250
+ const { t } = require("intlayer");
251
+ // const { h } = require('preact'); // Necessario se usi JSX direttamente in .cjs
252
+
253
+ /** @type {import('intlayer').Dictionary} */
254
+ const appContent = {
255
+ key: "app",
256
+ content: {
257
+ viteLogo: t({
258
+ it: "Logo Vite",
259
+ en: "Vite logo",
260
+ fr: "Logo Vite",
261
+ es: "Logo Vite",
262
+ }),
263
+ preactLogo: t({
264
+ it: "Logo Preact",
265
+ en: "Preact logo",
266
+ fr: "Logo Preact",
267
+ es: "Logo Preact",
268
+ }),
269
+
270
+ title: "Vite + Preact",
271
+
272
+ count: t({
273
+ en: "count is ",
274
+ fr: "le compte est ",
275
+ es: "el recuento es ",
276
+ it: "il conteggio è ",
277
+ }),
278
+
279
+ edit: t({
280
+ it: "Modifica src/app.tsx e salva per testare HMR",
281
+ en: "Edit src/app.tsx and save to test HMR",
282
+ fr: "Éditez src/app.tsx et enregistrez pour tester HMR",
283
+ es: "Edita src/app.tsx y guarda para probar HMR",
284
+ }),
285
+
286
+ readTheDocs: t({
287
+ en: "Click on the Vite and Preact logos to learn more",
288
+ fr: "Cliquez sur les logos Vite et Preact pour en savoir plus",
289
+ es: "Haga clic en los logotipos de Vite y Preact para obtener más información",
290
+ it: "Clicca sui loghi di Vite e Preact per saperne di più",
291
+ }),
292
+ },
293
+ };
294
+
295
+ module.exports = appContent;
296
+ ```
297
+
298
+ ```json fileName="src/app.content.json" contentDeclarationFormat="json"
299
+ {
300
+ "$schema": "https://intlayer.org/schema.json",
301
+ "key": "app",
302
+ "content": {
303
+ "viteLogo": {
304
+ "nodeType": "translation",
305
+ "translation": {
306
+ "en": "Vite logo",
307
+ "fr": "Logo Vite",
308
+ "es": "Logo Vite",
309
+ "it": "Logo Vite"
310
+ }
311
+ },
312
+ "preactLogo": {
313
+ "nodeType": "translation",
314
+ "translation": {
315
+ "en": "Preact logo",
316
+ "fr": "Logo Preact",
317
+ "es": "Logo Preact",
318
+ "it": "Logo Preact"
319
+ }
320
+ },
321
+ "title": {
322
+ "nodeType": "translation",
323
+ "translation": {
324
+ "en": "Vite + Preact",
325
+ "fr": "Vite + Preact",
326
+ "es": "Vite + Preact",
327
+ "it": "Vite + Preact"
328
+ }
329
+ },
330
+ "count": {
331
+ "nodeType": "translation",
332
+ "translation": {
333
+ "en": "count is ",
334
+ "fr": "le compte est ",
335
+ "es": "el recuento es ",
336
+ "it": "il conteggio è "
337
+ }
338
+ },
339
+ "edit": {
340
+ "nodeType": "translation",
341
+ "translation": {
342
+ "en": "Edit src/app.tsx and save to test HMR",
343
+ "fr": "Éditez src/app.tsx et enregistrez pour tester HMR",
344
+ "es": "Edita src/app.tsx y guarda para probar HMR",
345
+ "it": "Modifica src/app.tsx e salva per testare HMR"
346
+ }
347
+ },
348
+ "readTheDocs": {
349
+ "nodeType": "translation",
350
+ "translation": {
351
+ "en": "Click on the Vite and Preact logos to learn more",
352
+ "fr": "Cliquez sur les logos Vite et Preact pour en savoir plus",
353
+ "es": "Haga clic en los logotipos de Vite y Preact para obtener más información",
354
+ "it": "Clicca sui loghi di Vite e Preact per saperne di più"
355
+ }
356
+ }
357
+ }
358
+ }
359
+ ```
360
+
361
+ > Le dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione purché siano incluse nella directory `contentDir` (di default, `./src`). E corrispondano all'estensione del file di dichiarazione del contenuto (di default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
362
+
363
+ > Per maggiori dettagli, consulta la [documentazione sulle dichiarazioni di contenuto](https://github.com/aymericzip/intlayer/blob/main/docs/it/dictionary/get_started.md).
364
+
365
+ > Se il tuo file di contenuto include codice TSX, potresti dover importare `import { h } from "preact";` o assicurarti che la tua pragma JSX sia correttamente impostata per Preact.
366
+
367
+ ### Step 5: Utilizza Intlayer nel tuo codice
368
+
369
+ Accedi ai tuoi dizionari di contenuto in tutta l'applicazione:
370
+
371
+ ```tsx {6,10} fileName="src/app.tsx" codeFormat="typescript"
372
+ import { useState } from "preact/hooks";
373
+ import type { FunctionalComponent } from "preact";
374
+ import preactLogo from "./assets/preact.svg"; // Supponendo che tu abbia un preact.svg
375
+ import viteLogo from "/vite.svg";
376
+ import "./app.css"; // Supponendo che il tuo file CSS si chiami app.css
377
+ import { IntlayerProvider, useIntlayer } from "preact-intlayer";
378
+
379
+ const AppContent: FunctionalComponent = () => {
380
+ const [count, setCount] = useState(0);
381
+ const content = useIntlayer("app");
382
+
383
+ return (
384
+ <>
385
+ <div>
386
+ <a href="https://vitejs.dev" target="_blank">
387
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
388
+ </a>
389
+ <a href="https://preactjs.com" target="_blank">
390
+ <img
391
+ src={preactLogo}
392
+ class="logo preact"
393
+ alt={content.preactLogo.value}
394
+ />
395
+ </a>
396
+ </div>
397
+ <h1>{content.title}</h1>
398
+ <div class="card">
399
+ <button onClick={() => setCount((count) => count + 1)}>
400
+ {content.count}
401
+ {count}
402
+ </button>
403
+ <p>{content.edit}</p>
404
+ </div>
405
+ <p class="read-the-docs">{content.readTheDocs}</p>
406
+ </>
407
+ );
408
+ };
409
+
410
+ const App: FunctionalComponent = () => (
411
+ <IntlayerProvider>
412
+ <AppContent />
413
+ </IntlayerProvider>
414
+ );
415
+
416
+ export default App;
417
+ ```
418
+
419
+ ```jsx {5,9} fileName="src/app.jsx" codeFormat="esm"
420
+ import { useState } from "preact/hooks";
421
+ import preactLogo from "./assets/preact.svg";
422
+ import viteLogo from "/vite.svg";
423
+ import "./app.css";
424
+ import { IntlayerProvider, useIntlayer } from "preact-intlayer";
425
+
426
+ const AppContent = () => {
427
+ const [count, setCount] = useState(0);
428
+ const content = useIntlayer("app");
429
+
430
+ return (
431
+ <>
432
+ <div>
433
+ <a href="https://vitejs.dev" target="_blank">
434
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
435
+ </a>
436
+ <a href="https://preactjs.com" target="_blank">
437
+ <img
438
+ src={preactLogo}
439
+ class="logo preact"
440
+ alt={content.preactLogo.value}
441
+ />
442
+ </a>
443
+ </div>
444
+ <h1>{content.title}</h1>
445
+ <div class="card">
446
+ <button onClick={() => setCount((count) => count + 1)}>
447
+ {content.count}
448
+ {count}
449
+ </button>
450
+ <p>{content.edit}</p>
451
+ </div>
452
+ <p class="read-the-docs">{content.readTheDocs}</p>
453
+ </>
454
+ );
455
+ };
456
+
457
+ const App = () => (
458
+ <IntlayerProvider>
459
+ <AppContent />
460
+ </IntlayerProvider>
461
+ );
462
+
463
+ export default App;
464
+ ```
465
+
466
+ ```jsx {5,9} fileName="src/app.cjsx" codeFormat="commonjs"
467
+ const { useState } = require("preact/hooks");
468
+ const preactLogo = require("./assets/preact.svg");
469
+ const viteLogo = require("/vite.svg");
470
+ require("./app.css");
471
+ const { IntlayerProvider, useIntlayer } = require("preact-intlayer");
472
+
473
+ const AppContent = () => {
474
+ const [count, setCount] = useState(0);
475
+ const content = useIntlayer("app");
476
+
477
+ return (
478
+ <>
479
+ <div>
480
+ <a href="https://vitejs.dev" target="_blank">
481
+ <img src={viteLogo} class="logo" alt={content.viteLogo.value} />
482
+ </a>
483
+ <a href="https://preactjs.com" target="_blank">
484
+ <img
485
+ src={preactLogo}
486
+ class="logo preact"
487
+ alt={content.preactLogo.value}
488
+ />
489
+ </a>
490
+ </div>
491
+ <h1>{content.title}</h1>
492
+ <div class="card">
493
+ <button onClick={() => setCount((count) => count + 1)}>
494
+ {content.count}
495
+ {count}
496
+ </button>
497
+ <p>{content.edit}</p>
498
+ </div>
499
+ <p class="read-the-docs">{content.readTheDocs}</p>
500
+ </>
501
+ );
502
+ };
503
+
504
+ const App = () => (
505
+ <IntlayerProvider>
506
+ <AppContent />
507
+ </IntlayerProvider>
508
+ );
509
+
510
+ module.exports = App;
511
+ ```
512
+
513
+ > Se vuoi utilizzare il tuo contenuto in un attributo `string`, come `alt`, `title`, `href`, `aria-label`, ecc., devi chiamare il valore della funzione, come:
514
+
515
+ > ```jsx
516
+ >
517
+ > ```
518
+
519
+ > <img src={content.image.src.value} alt={content.image.value} />
520
+
521
+ > ```
522
+ >
523
+ > ```
524
+
525
+ > Nota: In Preact, `className` è tipicamente scritto come `class`.
526
+
527
+ > Per saperne di più sul hook `useIntlayer`, consulta la [documentazione](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/react-intlayer/useIntlayer.md) (L'API è simile per `preact-intlayer`).
528
+
529
+ ### (Opzionale) Step 6: Cambia la lingua del tuo contenuto
530
+
531
+ Per cambiare la lingua del tuo contenuto, puoi utilizzare la funzione `setLocale` fornita dal hook `useLocale`. Questa funzione ti consente di impostare la lingua dell'applicazione e aggiornare il contenuto di conseguenza.
532
+
533
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
534
+ import type { FunctionalComponent } from "preact";
535
+ import { Locales } from "intlayer";
536
+ import { useLocale } from "preact-intlayer";
537
+
538
+ const LocaleSwitcher: FunctionalComponent = () => {
539
+ const { setLocale } = useLocale();
540
+
541
+ return (
542
+ <button onClick={() => setLocale(Locales.ENGLISH)}>
543
+ Cambia lingua in Inglese
544
+
545
+ import { Locales } from "intlayer";
546
+ import { useLocale } from "preact-intlayer";
547
+
548
+ const LocaleSwitcher = () => {
549
+ const { setLocale } = useLocale();
550
+
551
+ return (
552
+ <button onClick={() => setLocale(Locales.ENGLISH)}>
553
+ Cambia lingua in Inglese
554
+ </button>
555
+ );
556
+ };
557
+
558
+ export default LocaleSwitcher;
559
+ ```
560
+
561
+ ```jsx fileName="src/components/LocaleSwitcher.cjsx" codeFormat="commonjs"
562
+ const { Locales } = require("intlayer");
563
+ const { useLocale } = require("preact-intlayer");
564
+
565
+ const LocaleSwitcher = () => {
566
+ const { setLocale } = useLocale();
567
+
568
+ return (
569
+ <button onClick={() => setLocale(Locales.ENGLISH)}>
570
+ Cambia lingua in Inglese
571
+ </button>
572
+ );
573
+ };
574
+
575
+ module.exports = LocaleSwitcher;
576
+ ```
577
+
578
+ > Per saperne di più sul hook `useLocale`, consulta la [documentazione](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/react-intlayer/useLocale.md) (L'API è simile per `preact-intlayer`).
579
+
580
+ ### (Opzionale) Passo 7: Aggiungi routing localizzato alla tua applicazione
581
+
582
+ Lo scopo di questo passo è creare percorsi unici per ogni lingua. Questo è utile per SEO e URL ottimizzati per i motori di ricerca.
583
+ Esempio:
584
+
585
+ ```plaintext
586
+ - https://example.com/about
587
+ - https://example.com/es/about
588
+ - https://example.com/fr/about
589
+ ```
590
+
591
+ > Per impostazione predefinita, i percorsi non sono prefissati per la lingua predefinita. Se desideri prefissare la lingua predefinita, puoi impostare l'opzione `middleware.prefixDefault` su `true` nella tua configurazione. Consulta la [documentazione di configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/it/configuration.md) per maggiori informazioni.
592
+
593
+ Per aggiungere il routing localizzato alla tua applicazione, puoi creare un componente `LocaleRouter` che avvolge i percorsi della tua applicazione e gestisce il routing basato sulla lingua. Ecco un esempio utilizzando [preact-iso](https://github.com/preactjs/preact-iso):
594
+
595
+ Prima, installa `preact-iso`:
596
+
597
+ ```bash packageManager="npm"
598
+ npm install preact-iso
599
+ ```
600
+
601
+ ```bash packageManager="pnpm"
602
+ pnpm add preact-iso
603
+ ```
604
+
605
+ ```bash packageManager="yarn"
606
+ yarn add preact-iso
607
+ ```
608
+
609
+ ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
610
+ import { type Locales, configuration, getPathWithoutLocale } from "intlayer";
611
+ import { ComponentChildren, FunctionalComponent } from "preact";
612
+ import { IntlayerProvider } from "preact-intlayer";
613
+ import { LocationProvider, useLocation } from "preact-iso";
614
+ import { useEffect } from "preact/hooks";
615
+
616
+ const { internationalization, middleware } = configuration;
617
+ const { locales, defaultLocale } = internationalization;
618
+
619
+ const Navigate: FunctionalComponent<{ to: string; replace?: boolean }> = ({
620
+ to,
621
+ replace,
622
+ }) => {
623
+ const { route } = useLocation();
624
+ useEffect(() => {
625
+ route(to, replace);
626
+ }, [to, replace, route]);
627
+ return null;
628
+ };
629
+
630
+ /**
631
+ * Un componente che gestisce la localizzazione e avvolge i figli con il contesto della lingua appropriata.
632
+ * Gestisce il rilevamento e la validazione della lingua basata sull'URL.
633
+ */
634
+ const AppLocalized: FunctionalComponent<{
635
+ children: ComponentChildren;
636
+ locale?: Locales;
637
+ }> = ({ children, locale }) => {
638
+ const { path: pathname, url } = useLocation();
639
+
640
+ if (!url) {
641
+ return null;
642
+ }
643
+
644
+ const search = url.substring(pathname.length);
645
+
646
+ // Determina la lingua corrente, utilizzando quella predefinita se non fornita
647
+ const currentLocale = locale ?? defaultLocale;
648
+
649
+ // Rimuove il prefisso della lingua dal percorso per costruire un percorso base
650
+ const pathWithoutLocale = getPathWithoutLocale(
651
+ pathname // Percorso URL corrente
652
+ );
653
+
654
+ /**
655
+ * Se middleware.prefixDefault è true, la lingua predefinita deve sempre essere prefissata.
656
+ */
657
+ if (middleware.prefixDefault) {
658
+ // Valida la lingua
659
+ if (!locale || !locales.includes(locale)) {
660
+ // Reindirizza alla lingua predefinita con il percorso aggiornato
661
+ return (
662
+ <Navigate
663
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
664
+ replace // Sostituisce la voce corrente nella cronologia con quella nuova
665
+ />
666
+ );
667
+ }
668
+
669
+ // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
670
+ return (
671
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
672
+ );
673
+ } else {
674
+ /**
675
+ * Quando middleware.prefixDefault è false, la lingua predefinita non è prefissata.
676
+ * Assicurati che la lingua corrente sia valida e non quella predefinita.
677
+ */
678
+ if (
679
+ currentLocale.toString() !== defaultLocale.toString() &&
680
+ !locales
681
+ .filter(
682
+ (loc) => loc.toString() !== defaultLocale.toString() // Esclude la lingua predefinita
683
+ )
684
+ .includes(currentLocale) // Controlla se la lingua corrente è nella lista delle lingue valide
685
+ ) {
686
+ // Reindirizza al percorso senza prefisso della lingua
687
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
688
+ }
689
+
690
+ // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
691
+ return (
692
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
693
+ );
694
+ }
695
+ };
696
+
697
+ const RouterContent: FunctionalComponent<{
698
+ children: ComponentChildren;
699
+ }> = ({ children }) => {
700
+ const { path } = useLocation();
701
+
702
+ if (!path) {
703
+ return null;
704
+ }
705
+
706
+ const pathLocale = path.split("/")[1] as Locales;
707
+
708
+ const isLocaleRoute = locales
709
+ .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)
710
+ .some((locale) => locale.toString() === pathLocale);
711
+
712
+ if (isLocaleRoute) {
713
+ return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;
714
+ }
715
+
716
+ return (
717
+ <AppLocalized
718
+ locale={!middleware.prefixDefault ? defaultLocale : undefined}
719
+ >
720
+ {children}
721
+ </AppLocalized>
722
+ );
723
+ };
724
+
725
+ /**
726
+ * Un componente router che configura percorsi specifici per lingua.
727
+ * Utilizza preact-iso per gestire la navigazione e rendere i componenti localizzati.
728
+ */
729
+ export const LocaleRouter: FunctionalComponent<{
730
+ children: ComponentChildren;
731
+ }> = ({ children }) => (
732
+ <LocationProvider>
733
+ <RouterContent>{children}</RouterContent>
734
+ </LocationProvider>
735
+ );
736
+ ```
737
+
738
+ ```jsx fileName="src/components/LocaleRouter.jsx" codeFormat="esm"
739
+ // Importazione delle dipendenze e funzioni necessarie
740
+ import { configuration, getPathWithoutLocale } from "intlayer";
741
+ import { IntlayerProvider } from "preact-intlayer";
742
+ import { LocationProvider, useLocation } from "preact-iso";
743
+ import { useEffect } from "preact/hooks";
744
+ import { h } from "preact"; // Necessario per JSX
745
+
746
+ // De-strutturazione della configurazione da Intlayer
747
+ const { internationalization, middleware } = configuration;
748
+ const { locales, defaultLocale } = internationalization;
749
+
750
+ const Navigate = ({ to, replace }) => {
751
+ const { route } = useLocation();
752
+ useEffect(() => {
753
+ route(to, replace);
754
+ }, [to, replace, route]);
755
+ return null;
756
+ };
757
+
758
+ /**
759
+ * Un componente che gestisce la localizzazione e avvolge i figli con il contesto della lingua appropriata.
760
+ * Gestisce il rilevamento e la validazione della lingua basata sull'URL.
761
+ */
762
+ const AppLocalized = ({ children, locale }) => {
763
+ const { path: pathname, url } = useLocation();
764
+
765
+ if (!url) {
766
+ return null;
767
+ }
768
+
769
+ const search = url.substring(pathname.length);
770
+
771
+ // Determina la lingua corrente, utilizzando quella predefinita se non fornita
772
+ const currentLocale = locale ?? defaultLocale;
773
+
774
+ // Rimuove il prefisso della lingua dal percorso per costruire un percorso base
775
+ const pathWithoutLocale = getPathWithoutLocale(
776
+ pathname // Percorso URL corrente
777
+ );
778
+
779
+ /**
780
+ * Se middleware.prefixDefault è true, la lingua predefinita deve sempre essere prefissata.
781
+ */
782
+ if (middleware.prefixDefault) {
783
+ // Valida la lingua
784
+ if (!locale || !locales.includes(locale)) {
785
+ // Reindirizza alla lingua predefinita con il percorso aggiornato
786
+ return (
787
+ <Navigate
788
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
789
+ replace // Sostituisce la voce corrente nella cronologia con quella nuova
790
+ />
791
+ );
792
+ }
793
+
794
+ // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
795
+ return (
796
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
797
+ );
798
+ } else {
799
+ /**
800
+ * Quando middleware.prefixDefault è false, la lingua predefinita non è prefissata.
801
+ * Assicurati che la lingua corrente sia valida e non quella predefinita.
802
+ */
803
+ if (
804
+ currentLocale.toString() !== defaultLocale.toString() &&
805
+ !locales
806
+ .filter(
807
+ (loc) => loc.toString() !== defaultLocale.toString() // Esclude la lingua predefinita
808
+ )
809
+ .includes(currentLocale) // Controlla se la lingua corrente è nella lista delle lingue valide
810
+ ) {
811
+ // Reindirizza al percorso senza prefisso della lingua
812
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
813
+ }
814
+
815
+ // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
816
+ return (
817
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
818
+ );
819
+ }
820
+ };
821
+
822
+ * Quando middleware.prefixDefault è false, la lingua predefinita non è prefissata.
823
+ * Assicurati che la lingua corrente sia valida e non sia la lingua predefinita.
824
+ */
825
+ if (
826
+ currentLocale.toString() !== defaultLocale.toString() &&
827
+ !locales
828
+ .filter(
829
+ (loc) => loc.toString() !== defaultLocale.toString() // Escludi la lingua predefinita
830
+ )
831
+ .includes(currentLocale) // Controlla se la lingua corrente è nella lista delle lingue valide
832
+ ) {
833
+ // Reindirizza al percorso senza prefisso della lingua
834
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
835
+ }
836
+
837
+ // Avvolgi i figli con IntlayerProvider e imposta la lingua corrente
838
+ return (
839
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
840
+ );
841
+ }
842
+ };
843
+
844
+ const RouterContent = ({ children }) => {
845
+ const { path } = useLocation();
846
+
847
+ if (!path) {
848
+ return null;
849
+ }
850
+
851
+ const pathLocale = path.split("/")[1];
852
+
853
+ const isLocaleRoute = locales
854
+ .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)
855
+ .some((locale) => locale.toString() === pathLocale);
856
+
857
+ if (isLocaleRoute) {
858
+ return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;
859
+ }
860
+
861
+ return (
862
+ <AppLocalized
863
+ locale={!middleware.prefixDefault ? defaultLocale : undefined}
864
+ >
865
+ {children}
866
+ </AppLocalized>
867
+ );
868
+ };
869
+
870
+ /**
871
+ * Un componente router che configura percorsi specifici per lingua.
872
+ * Utilizza preact-iso per gestire la navigazione e rendere i componenti localizzati.
873
+ */
874
+ export const LocaleRouter = ({ children }) => (
875
+ <LocationProvider>
876
+ <RouterContent>{children}</RouterContent>
877
+ </LocationProvider>
878
+ );
879
+ ```
880
+
881
+ ```jsx fileName="src/components/LocaleRouter.cjsx" codeFormat="commonjs"
882
+ // Importazione delle dipendenze e funzioni necessarie
883
+ const { configuration, getPathWithoutLocale } = require("intlayer");
884
+ const { IntlayerProvider } = require("preact-intlayer");
885
+ const { LocationProvider, useLocation } = require("preact-iso");
886
+ const { useEffect } = require("preact/hooks");
887
+ const { h } = require("preact"); // Necessario per JSX
888
+
889
+ // Destrutturazione della configurazione da Intlayer
890
+ const { internationalization, middleware } = configuration;
891
+ const { locales, defaultLocale } = internationalization;
892
+
893
+ const Navigate = ({ to, replace }) => {
894
+ const { route } = useLocation();
895
+ useEffect(() => {
896
+ route(to, replace);
897
+ }, [to, replace, route]);
898
+ return null;
899
+ };
900
+
901
+ /**
902
+ * Un componente che gestisce la localizzazione e avvolge i figli con il contesto della lingua appropriata.
903
+ * Gestisce il rilevamento e la validazione della lingua basata sull'URL.
904
+ */
905
+ const AppLocalized = ({ children, locale }) => {
906
+ const { path: pathname, url } = useLocation();
907
+
908
+ if (!url) {
909
+ return null;
910
+ }
911
+
912
+ const search = url.substring(pathname.length);
913
+
914
+ // Determina la lingua corrente, utilizzando quella predefinita se non fornita
915
+ const currentLocale = locale ?? defaultLocale;
916
+
917
+ // Rimuove il prefisso della lingua dal percorso per costruire un percorso base
918
+ const pathWithoutLocale = getPathWithoutLocale(
919
+ pathname // Percorso URL corrente
920
+ );
921
+
922
+ /**
923
+ * Se middleware.prefixDefault è true, la lingua predefinita deve sempre essere prefissata.
924
+ */
925
+ if (middleware.prefixDefault) {
926
+ // Valida la lingua
927
+ if (!locale || !locales.includes(locale)) {
928
+ // Reindirizza alla lingua predefinita con il percorso aggiornato
929
+ return (
930
+ <Navigate
931
+ to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
932
+ replace // Sostituisci la voce corrente nella cronologia con quella nuova
933
+ />
934
+ );
935
+ }
936
+
937
+ // Avvolgi i figli con IntlayerProvider e imposta la lingua corrente
938
+ return (
939
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
940
+ );
941
+ } else {
942
+ /**
943
+ * Quando middleware.prefixDefault è false, la lingua predefinita non è prefissata.
944
+ * Assicurati che la lingua corrente sia valida e non sia la lingua predefinita.
945
+ */
946
+ if (
947
+ currentLocale.toString() !== defaultLocale.toString() &&
948
+ !locales
949
+ .filter(
950
+ (loc) => loc.toString() !== defaultLocale.toString() // Escludi la lingua predefinita
951
+ )
952
+ .includes(currentLocale) // Controlla se la lingua corrente è nella lista delle lingue valide
953
+ ) {
954
+ // Reindirizza al percorso senza prefisso della lingua
955
+ return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
956
+ }
957
+
958
+ // Avvolgi i figli con IntlayerProvider e imposta la lingua corrente
959
+ return (
960
+ <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
961
+ );
962
+ }
963
+ };
964
+
965
+ const RouterContent = ({ children }) => {
966
+ const { path } = useLocation();
967
+
968
+ if (!path) {
969
+ return null;
970
+ }
971
+
972
+ const pathLocale = path.split("/")[1];
973
+
974
+ const isLocaleRoute = locales
975
+ .filter((locale) => middleware.prefixDefault || locale !== defaultLocale)
976
+ .some((locale) => locale.toString() === pathLocale);
977
+
978
+ if (isLocaleRoute) {
979
+ return <AppLocalized locale={pathLocale}>{children}</AppLocalized>;
980
+ }
981
+
982
+ return (
983
+ <AppLocalized
984
+ locale={!middleware.prefixDefault ? defaultLocale : undefined}
985
+ >
986
+ {children}
987
+ </AppLocalized>
988
+ );
989
+ };
990
+
991
+ /**
992
+ * Un componente router che configura percorsi specifici per lingua.
993
+ * Utilizza preact-iso per gestire la navigazione e rendere i componenti localizzati.
994
+ */
995
+ const LocaleRouter = ({ children }) => (
996
+ <LocationProvider>
997
+ <RouterContent>{children}</RouterContent>
998
+ </LocationProvider>
999
+ );
1000
+
1001
+ module.exports = { LocaleRouter };
1002
+ ```
1003
+
1004
+ Poi, puoi utilizzare il componente `LocaleRouter` nella tua applicazione:
1005
+
1006
+ ```tsx fileName="src/app.tsx" codeFormat="typescript"
1007
+ import { LocaleRouter } from "./components/LocaleRouter";
1008
+ import type { FunctionalComponent } from "preact";
1009
+ // ... Il tuo componente AppContent (definito nel Passaggio 5)
1010
+
1011
+ const App: FunctionalComponent = () => (
1012
+ <LocaleRouter>
1013
+ <AppContent />
1014
+ </LocaleRouter>
1015
+ );
1016
+
1017
+ export default App;
1018
+ ```
1019
+
1020
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
1021
+ import { LocaleRouter } from "./components/LocaleRouter";
1022
+ // ... Il tuo componente AppContent (definito nel Passaggio 5)
1023
+
1024
+ const App = () => (
1025
+ <LocaleRouter>
1026
+ <AppContent />
1027
+ </LocaleRouter>
1028
+ );
1029
+
1030
+ export default App;
1031
+ ```
1032
+
1033
+ ```jsx fileName="src/app.cjsx" codeFormat="commonjs"
1034
+ const { LocaleRouter } = require("./components/LocaleRouter");
1035
+ // ... Il tuo componente AppContent (definito nel Passaggio 5)
1036
+
1037
+ const App = () => (
1038
+ <LocaleRouter>
1039
+ <AppContent />
1040
+ </LocaleRouter>
1041
+ );
1042
+
1043
+ module.exports = App;
1044
+ ```
1045
+
1046
+ In parallelo, puoi anche utilizzare il `intLayerMiddlewarePlugin` per aggiungere il routing lato server alla tua applicazione. Questo plugin rileverà automaticamente la lingua corrente basata sull'URL e imposterà il cookie della lingua appropriata. Se non è specificata alcuna lingua, il plugin determinerà la lingua più appropriata in base alle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna lingua, reindirizzerà alla lingua predefinita.
1047
+
1048
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
1049
+ import { defineConfig } from "vite";
1050
+ import preact from "@preact/preset-vite";
1051
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
1052
+
1053
+ // https://vitejs.dev/config/
1054
+ export default defineConfig({
1055
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
1056
+ });
1057
+ ```
1058
+
1059
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
1060
+ import { defineConfig } from "vite";
1061
+ import preact from "@preact/preset-vite";
1062
+ import { intlayerPlugin, intLayerMiddlewarePlugin } from "vite-intlayer";
1063
+
1064
+ // https://vitejs.dev/config/
1065
+ export default defineConfig({
1066
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
1067
+ });
1068
+ ```
1069
+
1070
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
1071
+ const { defineConfig } = require("vite");
1072
+ const preact = require("@preact/preset-vite");
1073
+ const { intlayerPlugin, intLayerMiddlewarePlugin } = require("vite-intlayer");
1074
+
1075
+ // https://vitejs.dev/config/
1076
+ module.exports = defineConfig({
1077
+ plugins: [preact(), intlayerPlugin(), intLayerMiddlewarePlugin()],
1078
+ });
1079
+ ```
1080
+
1081
+ ### (Opzionale) Passaggio 8: Cambia l'URL quando cambia la lingua
1082
+
1083
+ ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
1084
+ import { useLocation, route } from "preact-iso";
1085
+ import {
1086
+ Locales,
1087
+ getHTMLTextDir,
1088
+ getLocaleName,
1089
+ getLocalizedUrl,
1090
+ } from "intlayer";
1091
+ import { useLocale } from "preact-intlayer";
1092
+ import type { FunctionalComponent } from "preact";
1093
+
1094
+ const LocaleSwitcher: FunctionalComponent = () => {
1095
+ const location = useLocation();
1096
+ const { locale, availableLocales, setLocale } = useLocale({
1097
+ onLocaleChange: (newLocale) => {
1098
+ const currentFullPath = location.url; // preact-iso fornisce l'URL completo
1099
+ // Costruisce l'URL con la lingua locale aggiornata
1100
+ // Esempio: /es/about?foo=bar
1101
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1102
+
1103
+ // Aggiorna il percorso dell'URL
1104
+ route(pathWithLocale, true); // true per sostituire
1105
+ },
1106
+ });
1107
+
1108
+ return (
1109
+ <div>
1110
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1111
+ <div id="localePopover" popover="auto">
1112
+ {availableLocales.map((localeItem) => (
1113
+ <a
1114
+ href={getLocalizedUrl(location.url, localeItem)}
1115
+ hreflang={localeItem}
1116
+ aria-current={locale === localeItem ? "page" : undefined}
1117
+ onClick={(e) => {
1118
+ e.preventDefault();
1119
+ setLocale(localeItem);
1120
+ // La navigazione programmata dopo aver impostato la lingua locale sarà gestita da onLocaleChange
1121
+ }}
1122
+ key={localeItem}
1123
+ >
1124
+ <span>
1125
+ {/* Lingua locale - es. FR */}
1126
+ {localeItem}
1127
+ </span>
1128
+ <span>
1129
+ {/* Lingua nella propria lingua locale - es. Français */}
1130
+ {getLocaleName(localeItem, localeItem)}
1131
+ </span>
1132
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1133
+ {/* Lingua nella lingua locale corrente - es. Francés con lingua corrente impostata su Locales.SPANISH */}
1134
+ {getLocaleName(localeItem, locale)}
1135
+ </span>
1136
+ <span dir="ltr" lang={Locales.ENGLISH}>
1137
+ {/* Lingua in inglese - es. French */}
1138
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1139
+ </span>
1140
+ </a>
1141
+ ))}
1142
+ </div>
1143
+ </div>
1144
+ );
1145
+ };
1146
+
1147
+ export default LocaleSwitcher;
1148
+ ```
1149
+
1150
+ ```jsx fileName="src/components/LocaleSwitcher.jsx" codeFormat="esm"
1151
+ import { useLocation, route } from "preact-iso";
1152
+ import {
1153
+ Locales,
1154
+ getHTMLTextDir,
1155
+ getLocaleName,
1156
+ getLocalizedUrl,
1157
+ } from "intlayer";
1158
+ import { useLocale } from "preact-intlayer";
1159
+ import { h } from "preact"; // Per JSX
1160
+
1161
+ const LocaleSwitcher = () => {
1162
+ const location = useLocation();
1163
+ const { locale, availableLocales, setLocale } = useLocale({
1164
+ onLocaleChange: (newLocale) => {
1165
+ const currentFullPath = location.url;
1166
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1167
+ route(pathWithLocale, true);
1168
+ },
1169
+ });
1170
+
1171
+ return (
1172
+ <div>
1173
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1174
+ <div id="localePopover" popover="auto">
1175
+ {availableLocales.map((localeItem) => (
1176
+ <a
1177
+ href={getLocalizedUrl(location.url, localeItem)}
1178
+ hreflang={localeItem}
1179
+ aria-current={locale === localeItem ? "page" : undefined}
1180
+ onClick={(e) => {
1181
+ e.preventDefault();
1182
+ setLocale(localeItem);
1183
+ }}
1184
+ key={localeItem}
1185
+ >
1186
+ <span>{localeItem}</span>
1187
+ <span>{getLocaleName(localeItem, localeItem)}</span>
1188
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1189
+ {getLocaleName(localeItem, locale)}
1190
+ </span>
1191
+ <span dir="ltr" lang={Locales.ENGLISH}>
1192
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1193
+ </span>
1194
+ </a>
1195
+ ))}
1196
+ </div>
1197
+ </div>
1198
+ );
1199
+ };
1200
+
1201
+ export default LocaleSwitcher;
1202
+ ```
1203
+
1204
+ ```jsx fileName="src/components/LocaleSwitcher.cjsx" codeFormat="commonjs"
1205
+ const { useLocation, route } = require("preact-iso");
1206
+ const {
1207
+ Locales,
1208
+ getHTMLTextDir,
1209
+ getLocaleName,
1210
+ getLocalizedUrl,
1211
+ } = require("intlayer");
1212
+ const { useLocale } = require("preact-intlayer");
1213
+ const { h } = require("preact"); // Per JSX
1214
+
1215
+ const LocaleSwitcher = () => {
1216
+ const location = useLocation();
1217
+ const { locale, availableLocales, setLocale } = useLocale({
1218
+ onLocaleChange: (newLocale) => {
1219
+ const currentFullPath = location.url;
1220
+ const pathWithLocale = getLocalizedUrl(currentFullPath, newLocale);
1221
+ route(pathWithLocale, true);
1222
+ },
1223
+ });
1224
+
1225
+ return (
1226
+ <div>
1227
+ <button popovertarget="localePopover">{getLocaleName(locale)}</button>
1228
+ <div id="localePopover" popover="auto">
1229
+ {availableLocales.map((localeItem) => (
1230
+ <a
1231
+ href={getLocalizedUrl(location.url, localeItem)}
1232
+ hreflang={localeItem}
1233
+ aria-current={locale === localeItem ? "page" : undefined}
1234
+ onClick={(e) => {
1235
+ e.preventDefault();
1236
+ setLocale(localeItem);
1237
+ }}
1238
+ key={localeItem}
1239
+ >
1240
+ <span>{localeItem}</span>
1241
+ <span>{getLocaleName(localeItem, localeItem)}</span>
1242
+ <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1243
+ {getLocaleName(localeItem, locale)}
1244
+ </span>
1245
+ <span dir="ltr" lang={Locales.ENGLISH}>
1246
+ {getLocaleName(localeItem, Locales.ENGLISH)}
1247
+ </span>
1248
+ </a>
1249
+ ))}
1250
+ </div>
1251
+ </div>
1252
+ );
1253
+ };
1254
+
1255
+ module.exports = LocaleSwitcher;
1256
+ ```
1257
+
1258
+ > Riferimenti alla documentazione:
1259
+
1260
+ > - [`useLocale` hook](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/react-intlayer/useLocale.md) (API simile per `preact-intlayer`)
1261
+
1262
+ > - [`getLocaleName` hook](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/intlayer/getLocaleName.md)
1263
+
1264
+ > - [`getLocalizedUrl` hook](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/intlayer/getLocalizedUrl.md)
1265
+
1266
+ > - [`getHTMLTextDir` hook](https://github.com/aymericzip/intlayer/blob/main/docs/it/packages/intlayer/getHTMLTextDir.md)
1267
+
1268
+ > - [`hreflang` attribute](https://developers.google.com/search/docs/specialty/international/localized-versions?hl=it)
1269
+
1270
+ > - [`lang` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang)
1271
+
1272
+ > - [`dir` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir)
1273
+
1274
+ > - [`aria-current` attribute](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)
1275
+
1276
+ > - [Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API)
1277
+
1278
+ ---
1279
+
1280
+ ### (Opzionale) Passo 9: Cambiare gli attributi di lingua e direzione HTML
1281
+
1282
+ Quando la tua applicazione supporta più lingue, è fondamentale aggiornare gli attributi `lang` e `dir` del tag `<html>` per corrispondere alla lingua locale corrente. Questo garantisce:
1283
+
1284
+ - **Accessibilità**: I lettori di schermo e le tecnologie assistive si basano sull'attributo `lang` corretto per pronunciare e interpretare il contenuto in modo accurato.
1285
+ - **Rendering del testo**: L'attributo `dir` (direzione) garantisce che il testo venga reso nell'ordine corretto (es. da sinistra a destra per l'inglese, da destra a sinistra per l'arabo o l'ebraico), essenziale per la leggibilità.
1286
+ - **SEO**: I motori di ricerca utilizzano l'attributo `lang` per determinare la lingua della tua pagina, aiutando a fornire il contenuto localizzato corretto nei risultati di ricerca.
1287
+
1288
+ Aggiornando dinamicamente questi attributi quando cambia la lingua locale, garantisci un'esperienza coerente e accessibile per gli utenti in tutte le lingue supportate.
1289
+
1290
+ #### Implementazione del Hook
1291
+
1292
+ Crea un hook personalizzato per gestire gli attributi HTML. Il hook ascolta i cambiamenti di lingua locale e aggiorna gli attributi di conseguenza:
1293
+
1294
+ import { useEffect } from "preact/hooks";
1295
+ import { useLocale } from "preact-intlayer";
1296
+ import { getHTMLTextDir } from "intlayer";
1297
+
1298
+ /\*\*
1299
+
1300
+ - Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base alla lingua corrente.
1301
+ - - `lang`: Informa i browser e i motori di ricerca sulla lingua della pagina.
1302
+ - - `dir`: Garantisce il corretto ordine di lettura (ad esempio, 'ltr' per l'inglese, 'rtl' per l'arabo).
1303
+ -
1304
+ - Questo aggiornamento dinamico è essenziale per una corretta visualizzazione del testo, accessibilità e SEO.
1305
+ \*/
1306
+ export const useI18nHTMLAttributes = () => {
1307
+ const { locale } = useLocale();
1308
+
1309
+ useEffect(() => {
1310
+ // Aggiorna l'attributo della lingua in base alla lingua corrente.
1311
+ document.documentElement.lang = locale;
1312
+
1313
+ // Imposta la direzione del testo in base alla lingua corrente.
1314
+ document.documentElement.dir = getHTMLTextDir(locale);
1315
+
1316
+ }, [locale]);
1317
+ };
1318
+
1319
+ ````
1320
+
1321
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.jsx" codeFormat="esm"
1322
+ import { useEffect } from "preact/hooks";
1323
+ import { useLocale } from "preact-intlayer";
1324
+ import { getHTMLTextDir } from "intlayer";
1325
+
1326
+ /**
1327
+ * Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base alla lingua corrente.
1328
+ */
1329
+ export const useI18nHTMLAttributes = () => {
1330
+ const { locale } = useLocale();
1331
+
1332
+ useEffect(() => {
1333
+ document.documentElement.lang = locale;
1334
+ document.documentElement.dir = getHTMLTextDir(locale);
1335
+ }, [locale]);
1336
+ };
1337
+ ````
1338
+
1339
+ ```jsx fileName="src/hooks/useI18nHTMLAttributes.cjsx" codeFormat="commonjs"
1340
+ const { useEffect } = require("preact/hooks");
1341
+ const { useLocale } = require("preact-intlayer");
1342
+ const { getHTMLTextDir } = require("intlayer");
1343
+
1344
+ /**
1345
+ * Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base alla lingua corrente.
1346
+ */
1347
+ const useI18nHTMLAttributes = () => {
1348
+ const { locale } = useLocale();
1349
+
1350
+ useEffect(() => {
1351
+ document.documentElement.lang = locale;
1352
+ document.documentElement.dir = getHTMLTextDir(locale);
1353
+ }, [locale]);
1354
+ };
1355
+
1356
+ module.exports = { useI18nHTMLAttributes };
1357
+ ```
1358
+
1359
+ #### Utilizzo dell'Hook nella tua Applicazione
1360
+
1361
+ Integra l'hook nel tuo componente principale in modo che gli attributi HTML vengano aggiornati ogni volta che cambia la lingua:
1362
+
1363
+ ```tsx fileName="src/app.tsx" codeFormat="typescript"
1364
+ import type { FunctionalComponent } from "preact";
1365
+ import { IntlayerProvider } from "preact-intlayer"; // useIntlayer già importato se AppContent ne ha bisogno
1366
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1367
+ import "./app.css";
1368
+ // Definizione di AppContent dal Passo 5
1369
+
1370
+ const AppWithHooks: FunctionalComponent = () => {
1371
+ // Applica l'hook per aggiornare gli attributi lang e dir del tag <html> in base alla lingua.
1372
+ useI18nHTMLAttributes();
1373
+
1374
+ // Supponendo che AppContent sia il tuo componente principale per visualizzare i contenuti dal Passo 5
1375
+ return <AppContent />;
1376
+ };
1377
+
1378
+ const App: FunctionalComponent = () => (
1379
+ <IntlayerProvider>
1380
+ <AppWithHooks />
1381
+ </IntlayerProvider>
1382
+ );
1383
+
1384
+ export default App;
1385
+ ```
1386
+
1387
+ ```jsx fileName="src/app.jsx" codeFormat="esm"
1388
+ import { IntlayerProvider } from "preact-intlayer";
1389
+ import { useI18nHTMLAttributes } from "./hooks/useI18nHTMLAttributes";
1390
+ import "./app.css";
1391
+ // Definizione di AppContent dal Passo 5
1392
+
1393
+ const AppWithHooks = () => {
1394
+ useI18nHTMLAttributes();
1395
+ return <AppContent />;
1396
+ };
1397
+
1398
+ const App = () => (
1399
+ <IntlayerProvider>
1400
+ <AppWithHooks />
1401
+ </IntlayerProvider>
1402
+ );
1403
+
1404
+ export default App;
1405
+ ```
1406
+
1407
+ ```jsx fileName="src/app.cjsx" codeFormat="commonjs"
1408
+ const { IntlayerProvider } = require("preact-intlayer");
1409
+ const { useI18nHTMLAttributes } = require("./hooks/useI18nHTMLAttributes");
1410
+ require("./app.css");
1411
+ // Definizione di AppContent dal Passo 5
1412
+
1413
+ const AppWithHooks = () => {
1414
+ useI18nHTMLAttributes();
1415
+ return <AppContent />;
1416
+ };
1417
+
1418
+ const App = () => (
1419
+ <IntlayerProvider>
1420
+ <AppWithHooks />
1421
+ </IntlayerProvider>
1422
+ );
1423
+
1424
+ module.exports = App;
1425
+ ```
1426
+
1427
+ Applicando queste modifiche, la tua applicazione:
1428
+
1429
+ - Garantirà che l'attributo **lingua** (`lang`) rifletta correttamente la lingua corrente, importante per SEO e comportamento del browser.
1430
+ - Adatterà la **direzione del testo** (`dir`) in base alla lingua, migliorando la leggibilità e l'usabilità per lingue con ordini di lettura diversi.
1431
+ - Fornirà un'esperienza più **accessibile**, poiché le tecnologie assistive dipendono da questi attributi per funzionare in modo ottimale.
1432
+
1433
+ ### (Opzionale) Passo 10: Creazione di un Componente Link Localizzato
1434
+
1435
+ Per garantire che la navigazione della tua applicazione rispetti la lingua corrente, puoi creare un componente `Link` personalizzato. Questo componente aggiunge automaticamente un prefisso agli URL interni con la lingua corrente.
1436
+
1437
+ Questo comportamento è utile per diversi motivi:
1438
+
1439
+ - **SEO ed Esperienza Utente**: Gli URL localizzati aiutano i motori di ricerca a indicizzare correttamente le pagine specifiche per lingua e forniscono agli utenti contenuti nella loro lingua preferita.
1440
+ - **Coerenza**: Utilizzando un link localizzato in tutta l'applicazione, garantisci che la navigazione rimanga nel contesto della lingua corrente, evitando cambiamenti di lingua inaspettati.
1441
+ - **Manutenibilità**: Centralizzando la logica di localizzazione in un unico componente, semplifichi la gestione degli URL.
1442
+
1443
+ Per Preact con `preact-iso`, i tag `<a>` standard sono generalmente utilizzati per la navigazione, e `preact-iso` gestisce il routing. Se hai bisogno di una navigazione programmata al clic (ad esempio, per eseguire azioni prima di navigare), puoi utilizzare la funzione `route` da `useLocation`. Ecco come creare un componente anchor personalizzato che localizza gli URL:
1444
+
1445
+ ```tsx fileName="src/components/LocalizedLink.tsx" codeFormat="typescript"
1446
+ import { getLocalizedUrl } from "intlayer";
1447
+ import { useLocale, useLocation, route } from "preact-intlayer"; // Supponendo che useLocation e route possano essere da preact-iso tramite preact-intlayer se riesportati, o importati direttamente
1448
+ // Se non riesportati, importa direttamente: import { useLocation, route } from "preact-iso";
1449
+ import type { JSX } from "preact"; // Per HTMLAttributes
1450
+ import { forwardRef } from "preact/compat"; // Per inoltrare i ref
1451
+
1452
+ export interface LocalizedLinkProps
1453
+ extends JSX.HTMLAttributes<HTMLAnchorElement> {
1454
+ href: string;
1455
+ replace?: boolean; // Opzionale: per sostituire lo stato della cronologia
1456
+ }
1457
+
1458
+ /**
1459
+ * Funzione di utilità per verificare se un URL è esterno.
1460
+ * Se l'URL inizia con http:// o https://, è considerato esterno.
1461
+ */
1462
+ export const checkIsExternalLink = (href?: string): boolean =>
1463
+ /^https?:\/\//.test(href ?? "");
1464
+
1465
+ /**
1466
+ * Un componente Link personalizzato che adatta l'attributo href in base alla lingua corrente.
1467
+ * Per i link interni, utilizza `getLocalizedUrl` per aggiungere un prefisso all'URL con la lingua (ad esempio, /it/about).
1468
+ * Questo garantisce che la navigazione rimanga nel contesto della lingua corrente.
1469
+ * Utilizza un tag <a> standard ma può attivare la navigazione lato client utilizzando `route` di preact-iso.
1470
+ */
1471
+ export const LocalizedLink = forwardRef<HTMLAnchorElement, LocalizedLinkProps>(
1472
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1473
+ const { locale } = useLocale();
1474
+ const location = useLocation(); // da preact-iso
1475
+ const isExternalLink = checkIsExternalLink(href);
1476
+
1477
+ const hrefI18n =
1478
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1479
+
1480
+ const handleClick = (event: JSX.TargetedMouseEvent<HTMLAnchorElement>) => {
1481
+ if (onClick) {
1482
+ onClick(event);
1483
+ }
1484
+ if (
1485
+ !isExternalLink &&
1486
+ href && // Assicurati che href sia definito
1487
+ event.button === 0 && // Clic sinistro
1488
+ !event.metaKey &&
1489
+ !event.ctrlKey &&
1490
+ !event.shiftKey &&
1491
+ !event.altKey && // Controllo dei modificatori standard
1492
+ !props.target // Non sta puntando a una nuova scheda/finestra
1493
+ ) {
1494
+ event.preventDefault();
1495
+ if (location.url !== hrefI18n) {
1496
+ // Naviga solo se l'URL è diverso
1497
+ route(hrefI18n, replace); // Usa route di preact-iso
1498
+ }
1499
+ }
1500
+ };
1501
+
1502
+ return (
1503
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1504
+ {children}
1505
+ </a>
1506
+ );
1507
+ }
1508
+ );
1509
+ ```
1510
+
1511
+ ```jsx fileName="src/components/LocalizedLink.jsx" codeFormat="esm"
1512
+ import { getLocalizedUrl } from "intlayer";
1513
+ import { useLocale } from "preact-intlayer";
1514
+
1515
+ import { useLocation, route } from "preact-iso"; // Importa da preact-iso
1516
+ import { forwardRef } from "preact/compat";
1517
+ import { h } from "preact"; // Per JSX
1518
+
1519
+ export const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1520
+
1521
+ export const LocalizedLink = forwardRef(
1522
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1523
+ const { locale } = useLocale();
1524
+ const location = useLocation();
1525
+ const isExternalLink = checkIsExternalLink(href);
1526
+
1527
+ const hrefI18n =
1528
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1529
+
1530
+ const handleClick = (event) => {
1531
+ if (onClick) {
1532
+ onClick(event);
1533
+ }
1534
+ if (
1535
+ !isExternalLink &&
1536
+ href &&
1537
+ event.button === 0 &&
1538
+ !event.metaKey &&
1539
+ !event.ctrlKey &&
1540
+ !event.shiftKey &&
1541
+ !event.altKey &&
1542
+ !props.target
1543
+ ) {
1544
+ event.preventDefault();
1545
+ if (location.url !== hrefI18n) {
1546
+ route(hrefI18n, replace);
1547
+ }
1548
+ }
1549
+ };
1550
+
1551
+ return (
1552
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1553
+ {children}
1554
+ </a>
1555
+ );
1556
+ }
1557
+ );
1558
+ ```
1559
+
1560
+ ```jsx fileName="src/components/LocalizedLink.cjsx" codeFormat="commonjs"
1561
+ const { getLocalizedUrl } = require("intlayer");
1562
+ const { useLocale } = require("preact-intlayer");
1563
+ const { useLocation, route } = require("preact-iso"); // Importa da preact-iso
1564
+ const { forwardRef } = require("preact/compat");
1565
+ const { h } = require("preact"); // Per JSX
1566
+
1567
+ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1568
+
1569
+ const LocalizedLink = forwardRef(
1570
+ ({ href, children, onClick, replace = false, ...props }, ref) => {
1571
+ const { locale } = useLocale();
1572
+ const location = useLocation();
1573
+ const isExternalLink = checkIsExternalLink(href);
1574
+
1575
+ const hrefI18n =
1576
+ href && !isExternalLink ? getLocalizedUrl(href, locale) : href;
1577
+
1578
+ const handleClick = (event) => {
1579
+ if (onClick) {
1580
+ onClick(event);
1581
+ }
1582
+ if (
1583
+ !isExternalLink &&
1584
+ href &&
1585
+ event.button === 0 &&
1586
+ !event.metaKey &&
1587
+ !event.ctrlKey &&
1588
+ !event.shiftKey &&
1589
+ !event.altKey &&
1590
+ !props.target
1591
+ ) {
1592
+ event.preventDefault();
1593
+ if (location.url !== hrefI18n) {
1594
+ route(hrefI18n, replace);
1595
+ }
1596
+ }
1597
+ };
1598
+
1599
+ return (
1600
+ <a href={hrefI18n} ref={ref} onClick={handleClick} {...props}>
1601
+ {children}
1602
+ </a>
1603
+ );
1604
+ }
1605
+ );
1606
+
1607
+ module.exports = { LocalizedLink, checkIsExternalLink };
1608
+ ```
1609
+
1610
+ #### Come Funziona
1611
+
1612
+ - **Rilevamento dei Link Esterni**:
1613
+ La funzione helper `checkIsExternalLink` determina se un URL è esterno. I link esterni rimangono invariati.
1614
+ - **Recupero della Lingua Corrente**:
1615
+ L'hook `useLocale` fornisce la lingua corrente.
1616
+ - **Localizzazione dell'URL**:
1617
+ Per i link interni, `getLocalizedUrl` aggiunge il prefisso della lingua corrente all'URL.
1618
+ - **Navigazione Lato Client**:
1619
+ La funzione `handleClick` verifica se si tratta di un link interno e se la navigazione standard deve essere evitata. In tal caso, utilizza la funzione `route` di `preact-iso` (ottenuta tramite `useLocation` o importata direttamente) per eseguire la navigazione lato client. Questo fornisce un comportamento simile a una SPA senza ricaricare completamente la pagina.
1620
+ - **Restituzione del Link**:
1621
+ Il componente restituisce un elemento `<a>` con l'URL localizzato e il gestore di clic personalizzato.
1622
+
1623
+ ### Configurare TypeScript
1624
+
1625
+ Intlayer utilizza l'estensione dei moduli per sfruttare i vantaggi di TypeScript e rendere il tuo codice più robusto.
1626
+
1627
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
1628
+
1629
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1630
+
1631
+ Assicurati che la configurazione di TypeScript includa i tipi generati automaticamente.
1632
+
1633
+ ```json5 fileName="tsconfig.json"
1634
+ {
1635
+ // ... Le tue configurazioni TypeScript esistenti
1636
+ "compilerOptions": {
1637
+ // ...
1638
+ "jsx": "react-jsx",
1639
+ "jsxImportSource": "preact", // Consigliato per Preact 10+
1640
+ // ...
1641
+ },
1642
+ "include": [
1643
+ // ... Le tue configurazioni TypeScript esistenti
1644
+ ".intlayer/**/*.ts", // Includi i tipi generati automaticamente
1645
+ ],
1646
+ }
1647
+ ```
1648
+
1649
+ > Assicurati che il tuo `tsconfig.json` sia configurato per Preact, in particolare `jsx` e `jsxImportSource` o `jsxFactory`/`jsxFragmentFactory` per le versioni precedenti di Preact se non utilizzi i valori predefiniti di `preset-vite`.
1650
+
1651
+ ### Configurazione Git
1652
+
1653
+ Si consiglia di ignorare i file generati da Intlayer. Questo ti permette di evitare di commetterli nel tuo repository Git.
1654
+
1655
+ Per fare ciò, puoi aggiungere le seguenti istruzioni al tuo file `.gitignore`:
1656
+
1657
+ ```plaintext
1658
+ # Ignora i file generati da Intlayer
1659
+ .intlayer
1660
+ ```
1661
+
1662
+ ### Estensione VS Code
1663
+
1664
+ Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare l'estensione ufficiale **Intlayer VS Code Extension**.
1665
+
1666
+ [Installa dal Marketplace di VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1667
+
1668
+ Questa estensione fornisce:
1669
+
1670
+ - **Autocompletamento** per le chiavi di traduzione.
1671
+ - **Rilevamento degli errori in tempo reale** per le traduzioni mancanti.
1672
+ - **Anteprime inline** del contenuto tradotto.
1673
+ - **Azioni rapide** per creare e aggiornare facilmente le traduzioni.
1674
+
1675
+ Per maggiori dettagli su come utilizzare l'estensione, consulta la [documentazione dell'estensione Intlayer per VS Code](https://intlayer.org/doc/vs-code-extension).
1676
+
1677
+ ---
1678
+
1679
+ ### Approfondimenti
1680
+
1681
+ Per approfondire, puoi implementare l'[editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/it/intlayer_visual_editor.md) o esternalizzare il tuo contenuto utilizzando il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/it/intlayer_CMS.md).