@intlayer/docs 5.5.11 → 5.5.12

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 (313) hide show
  1. package/blog/ar/intlayer_with_next-intl.md +0 -1
  2. package/blog/ar/list_i18n_technologies/CMS/wordpress.md +1 -1
  3. package/blog/ar/list_i18n_technologies/frameworks/angular.md +1 -1
  4. package/blog/ar/list_i18n_technologies/frameworks/flutter.md +1 -1
  5. package/blog/ar/list_i18n_technologies/frameworks/react-native.md +1 -1
  6. package/blog/ar/list_i18n_technologies/frameworks/react.md +1 -1
  7. package/blog/ar/list_i18n_technologies/frameworks/svelte.md +1 -1
  8. package/blog/ar/list_i18n_technologies/frameworks/vue.md +1 -1
  9. package/blog/ar/what_is_internationalization.md +2 -2
  10. package/blog/de/intlayer_with_next-intl.md +0 -1
  11. package/blog/de/list_i18n_technologies/CMS/wordpress.md +1 -1
  12. package/blog/de/list_i18n_technologies/frameworks/angular.md +1 -1
  13. package/blog/de/list_i18n_technologies/frameworks/flutter.md +1 -1
  14. package/blog/de/list_i18n_technologies/frameworks/react-native.md +1 -1
  15. package/blog/de/list_i18n_technologies/frameworks/react.md +1 -1
  16. package/blog/de/list_i18n_technologies/frameworks/svelte.md +1 -1
  17. package/blog/de/list_i18n_technologies/frameworks/vue.md +1 -1
  18. package/blog/de/what_is_internationalization.md +2 -2
  19. package/blog/en/intlayer_with_next-intl.md +0 -1
  20. package/blog/en/list_i18n_technologies/CMS/wordpress.md +1 -1
  21. package/blog/en/list_i18n_technologies/frameworks/angular.md +1 -1
  22. package/blog/en/list_i18n_technologies/frameworks/flutter.md +1 -1
  23. package/blog/en/list_i18n_technologies/frameworks/react-native.md +1 -1
  24. package/blog/en/list_i18n_technologies/frameworks/react.md +1 -1
  25. package/blog/en/list_i18n_technologies/frameworks/svelte.md +1 -1
  26. package/blog/en/list_i18n_technologies/frameworks/vue.md +1 -1
  27. package/blog/en/what_is_internationalization.md +2 -2
  28. package/blog/en-GB/intlayer_with_next-intl.md +0 -1
  29. package/blog/en-GB/list_i18n_technologies/CMS/wordpress.md +1 -1
  30. package/blog/en-GB/list_i18n_technologies/frameworks/angular.md +1 -1
  31. package/blog/en-GB/list_i18n_technologies/frameworks/flutter.md +1 -1
  32. package/blog/en-GB/list_i18n_technologies/frameworks/react-native.md +1 -1
  33. package/blog/en-GB/list_i18n_technologies/frameworks/svelte.md +1 -1
  34. package/blog/en-GB/list_i18n_technologies/frameworks/vue.md +1 -1
  35. package/blog/en-GB/what_is_internationalization.md +2 -2
  36. package/blog/es/intlayer_with_next-intl.md +0 -1
  37. package/blog/es/list_i18n_technologies/CMS/wordpress.md +1 -1
  38. package/blog/es/list_i18n_technologies/frameworks/angular.md +1 -1
  39. package/blog/es/list_i18n_technologies/frameworks/flutter.md +1 -1
  40. package/blog/es/list_i18n_technologies/frameworks/react-native.md +1 -1
  41. package/blog/es/list_i18n_technologies/frameworks/react.md +1 -1
  42. package/blog/es/list_i18n_technologies/frameworks/svelte.md +1 -1
  43. package/blog/es/list_i18n_technologies/frameworks/vue.md +1 -1
  44. package/blog/es/what_is_internationalization.md +2 -2
  45. package/blog/fr/intlayer_with_next-intl.md +0 -1
  46. package/blog/fr/list_i18n_technologies/CMS/wordpress.md +1 -1
  47. package/blog/fr/list_i18n_technologies/frameworks/angular.md +1 -1
  48. package/blog/fr/list_i18n_technologies/frameworks/flutter.md +1 -1
  49. package/blog/fr/list_i18n_technologies/frameworks/react-native.md +1 -1
  50. package/blog/fr/list_i18n_technologies/frameworks/react.md +1 -1
  51. package/blog/fr/list_i18n_technologies/frameworks/svelte.md +1 -1
  52. package/blog/fr/list_i18n_technologies/frameworks/vue.md +1 -1
  53. package/blog/fr/what_is_internationalization.md +2 -2
  54. package/blog/hi/list_i18n_technologies/CMS/wordpress.md +1 -1
  55. package/blog/hi/list_i18n_technologies/frameworks/angular.md +1 -1
  56. package/blog/hi/list_i18n_technologies/frameworks/flutter.md +1 -1
  57. package/blog/hi/list_i18n_technologies/frameworks/react-native.md +1 -1
  58. package/blog/hi/list_i18n_technologies/frameworks/react.md +1 -1
  59. package/blog/hi/list_i18n_technologies/frameworks/svelte.md +1 -1
  60. package/blog/hi/list_i18n_technologies/frameworks/vue.md +1 -1
  61. package/blog/hi/what_is_internationalization.md +2 -2
  62. package/blog/it/intlayer_with_next-intl.md +0 -1
  63. package/blog/it/list_i18n_technologies/CMS/wordpress.md +1 -1
  64. package/blog/it/list_i18n_technologies/frameworks/angular.md +1 -1
  65. package/blog/it/list_i18n_technologies/frameworks/react-native.md +1 -1
  66. package/blog/it/list_i18n_technologies/frameworks/react.md +1 -1
  67. package/blog/it/list_i18n_technologies/frameworks/svelte.md +1 -1
  68. package/blog/it/list_i18n_technologies/frameworks/vue.md +1 -1
  69. package/blog/it/what_is_internationalization.md +2 -2
  70. package/blog/ja/intlayer_with_next-intl.md +0 -1
  71. package/blog/ja/list_i18n_technologies/CMS/wordpress.md +1 -1
  72. package/blog/ja/list_i18n_technologies/frameworks/angular.md +1 -1
  73. package/blog/ja/list_i18n_technologies/frameworks/flutter.md +1 -1
  74. package/blog/ja/list_i18n_technologies/frameworks/react-native.md +1 -1
  75. package/blog/ja/list_i18n_technologies/frameworks/react.md +1 -1
  76. package/blog/ja/list_i18n_technologies/frameworks/svelte.md +1 -1
  77. package/blog/ja/list_i18n_technologies/frameworks/vue.md +1 -1
  78. package/blog/ja/what_is_internationalization.md +2 -2
  79. package/blog/ko/intlayer_with_next-intl.md +0 -1
  80. package/blog/ko/list_i18n_technologies/CMS/wordpress.md +1 -1
  81. package/blog/ko/list_i18n_technologies/frameworks/angular.md +1 -1
  82. package/blog/ko/list_i18n_technologies/frameworks/react-native.md +1 -1
  83. package/blog/ko/list_i18n_technologies/frameworks/react.md +1 -1
  84. package/blog/ko/list_i18n_technologies/frameworks/vue.md +1 -1
  85. package/blog/pt/intlayer_with_next-intl.md +0 -1
  86. package/blog/pt/list_i18n_technologies/CMS/wordpress.md +1 -1
  87. package/blog/pt/list_i18n_technologies/frameworks/angular.md +1 -1
  88. package/blog/pt/list_i18n_technologies/frameworks/flutter.md +1 -1
  89. package/blog/pt/list_i18n_technologies/frameworks/react-native.md +1 -1
  90. package/blog/pt/list_i18n_technologies/frameworks/react.md +1 -1
  91. package/blog/pt/list_i18n_technologies/frameworks/svelte.md +1 -1
  92. package/blog/pt/list_i18n_technologies/frameworks/vue.md +1 -1
  93. package/blog/pt/what_is_internationalization.md +2 -2
  94. package/blog/ru/intlayer_with_next-intl.md +0 -1
  95. package/blog/ru/list_i18n_technologies/CMS/wordpress.md +1 -1
  96. package/blog/ru/list_i18n_technologies/frameworks/angular.md +1 -1
  97. package/blog/ru/list_i18n_technologies/frameworks/flutter.md +1 -1
  98. package/blog/ru/list_i18n_technologies/frameworks/react-native.md +1 -1
  99. package/blog/ru/list_i18n_technologies/frameworks/react.md +1 -1
  100. package/blog/ru/list_i18n_technologies/frameworks/svelte.md +1 -1
  101. package/blog/ru/list_i18n_technologies/frameworks/vue.md +1 -1
  102. package/blog/ru/what_is_internationalization.md +2 -2
  103. package/blog/zh/intlayer_with_next-intl.md +0 -1
  104. package/blog/zh/list_i18n_technologies/CMS/wordpress.md +1 -1
  105. package/blog/zh/list_i18n_technologies/frameworks/angular.md +1 -1
  106. package/blog/zh/list_i18n_technologies/frameworks/flutter.md +1 -1
  107. package/blog/zh/list_i18n_technologies/frameworks/react-native.md +1 -1
  108. package/blog/zh/list_i18n_technologies/frameworks/react.md +1 -1
  109. package/blog/zh/list_i18n_technologies/frameworks/svelte.md +1 -1
  110. package/blog/zh/list_i18n_technologies/frameworks/vue.md +1 -1
  111. package/blog/zh/what_is_internationalization.md +2 -2
  112. package/dist/cjs/blog.cjs +2 -2
  113. package/dist/cjs/blog.cjs.map +1 -1
  114. package/dist/cjs/common.cjs +17 -6
  115. package/dist/cjs/common.cjs.map +1 -1
  116. package/dist/cjs/doc.cjs +2 -2
  117. package/dist/cjs/doc.cjs.map +1 -1
  118. package/dist/cjs/frequentQuestions.cjs +2 -2
  119. package/dist/cjs/frequentQuestions.cjs.map +1 -1
  120. package/dist/cjs/generated/blog.entry.cjs +1152 -252
  121. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  122. package/dist/cjs/generated/docs.entry.cjs +3778 -1124
  123. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  124. package/dist/cjs/generated/frequentQuestions.entry.cjs +794 -161
  125. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  126. package/dist/cjs/generated/legal.entry.cjs +32 -31
  127. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  128. package/dist/cjs/legal.cjs +2 -2
  129. package/dist/cjs/legal.cjs.map +1 -1
  130. package/dist/esm/blog.mjs +2 -2
  131. package/dist/esm/blog.mjs.map +1 -1
  132. package/dist/esm/common.mjs +17 -6
  133. package/dist/esm/common.mjs.map +1 -1
  134. package/dist/esm/doc.mjs +2 -2
  135. package/dist/esm/doc.mjs.map +1 -1
  136. package/dist/esm/frequentQuestions.mjs +2 -2
  137. package/dist/esm/frequentQuestions.mjs.map +1 -1
  138. package/dist/esm/generated/blog.entry.mjs +1151 -252
  139. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  140. package/dist/esm/generated/docs.entry.mjs +3777 -1124
  141. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  142. package/dist/esm/generated/frequentQuestions.entry.mjs +793 -161
  143. package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
  144. package/dist/esm/generated/legal.entry.mjs +31 -31
  145. package/dist/esm/generated/legal.entry.mjs.map +1 -1
  146. package/dist/esm/legal.mjs +2 -2
  147. package/dist/esm/legal.mjs.map +1 -1
  148. package/dist/types/blog.d.ts +2 -2
  149. package/dist/types/blog.d.ts.map +1 -1
  150. package/dist/types/common.d.ts +3 -2
  151. package/dist/types/common.d.ts.map +1 -1
  152. package/dist/types/doc.d.ts +2 -2
  153. package/dist/types/doc.d.ts.map +1 -1
  154. package/dist/types/frequentQuestions.d.ts +2 -2
  155. package/dist/types/frequentQuestions.d.ts.map +1 -1
  156. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  157. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  158. package/dist/types/generated/frequentQuestions.entry.d.ts +1 -0
  159. package/dist/types/generated/frequentQuestions.entry.d.ts.map +1 -1
  160. package/dist/types/generated/legal.entry.d.ts.map +1 -1
  161. package/dist/types/legal.d.ts +2 -2
  162. package/dist/types/legal.d.ts.map +1 -1
  163. package/docs/ar/intlayer_with_vite+react.md +100 -108
  164. package/docs/de/intlayer_with_vite+react.md +121 -142
  165. package/docs/en/CI_CD.md +3 -1
  166. package/docs/en/autoFill.md +3 -1
  167. package/docs/en/configuration.md +4 -1
  168. package/docs/en/dictionary/condition.md +3 -1
  169. package/docs/en/dictionary/content_extention_customization.md +3 -1
  170. package/docs/en/dictionary/enumeration.md +3 -1
  171. package/docs/en/dictionary/file.md +3 -1
  172. package/docs/en/dictionary/function_fetching.md +3 -1
  173. package/docs/en/dictionary/get_started.md +3 -1
  174. package/docs/en/dictionary/insertion.md +3 -1
  175. package/docs/en/dictionary/markdown.md +3 -1
  176. package/docs/en/dictionary/nesting.md +3 -1
  177. package/docs/en/dictionary/translation.md +3 -1
  178. package/docs/en/how_works_intlayer.md +3 -1
  179. package/docs/en/index.md +3 -1
  180. package/docs/en/interest_of_intlayer.md +3 -1
  181. package/docs/en/intlayer_CMS.md +3 -1
  182. package/docs/en/intlayer_cli.md +3 -1
  183. package/docs/en/intlayer_visual_editor.md +3 -1
  184. package/docs/en/intlayer_with_angular.md +3 -1
  185. package/docs/en/intlayer_with_create_react_app.md +3 -1
  186. package/docs/en/intlayer_with_express.md +3 -1
  187. package/docs/en/intlayer_with_lynx+react.md +3 -1
  188. package/docs/en/intlayer_with_nextjs_14.md +6 -1
  189. package/docs/en/intlayer_with_nextjs_15.md +5 -1
  190. package/docs/en/intlayer_with_nextjs_page_router.md +5 -1
  191. package/docs/en/intlayer_with_nuxt.md +3 -1
  192. package/docs/en/intlayer_with_react_native+expo.md +3 -1
  193. package/docs/en/intlayer_with_vite+preact.md +3 -1
  194. package/docs/en/intlayer_with_vite+react.md +9 -7
  195. package/docs/en/intlayer_with_vite+solid.md +3 -1
  196. package/docs/en/intlayer_with_vite+svelte.md +3 -1
  197. package/docs/en/intlayer_with_vite+vue.md +3 -1
  198. package/docs/en/introduction.md +3 -1
  199. package/docs/en/mcp_server.md +42 -1
  200. package/docs/en/packages/@intlayer/api/index.md +3 -1
  201. package/docs/en/packages/@intlayer/chokidar/index.md +3 -1
  202. package/docs/en/packages/@intlayer/cli/index.md +3 -1
  203. package/docs/en/packages/@intlayer/config/index.md +3 -1
  204. package/docs/en/packages/@intlayer/core/index.md +3 -1
  205. package/docs/en/packages/@intlayer/design-system/index.md +3 -1
  206. package/docs/en/packages/@intlayer/dictionary-entry/index.md +3 -1
  207. package/docs/en/packages/@intlayer/editor/index.md +3 -1
  208. package/docs/en/packages/@intlayer/editor-react/index.md +3 -1
  209. package/docs/en/packages/@intlayer/webpack/index.md +3 -1
  210. package/docs/en/packages/angular-intlayer/index.md +3 -1
  211. package/docs/en/packages/express-intlayer/index.md +3 -1
  212. package/docs/en/packages/express-intlayer/t.md +3 -1
  213. package/docs/en/packages/intlayer/getConfiguration.md +3 -1
  214. package/docs/en/packages/intlayer/getEnumeration.md +3 -1
  215. package/docs/en/packages/intlayer/getHTMLTextDir.md +3 -1
  216. package/docs/en/packages/intlayer/getLocaleLang.md +3 -1
  217. package/docs/en/packages/intlayer/getLocaleName.md +3 -1
  218. package/docs/en/packages/intlayer/getLocalizedUrl.md +3 -1
  219. package/docs/en/packages/intlayer/getMultilingualUrls.md +3 -1
  220. package/docs/en/packages/intlayer/getPathWithoutLocale.md +3 -1
  221. package/docs/en/packages/intlayer/getTranslation.md +3 -1
  222. package/docs/en/packages/intlayer/getTranslationContent.md +3 -1
  223. package/docs/en/packages/intlayer/index.md +3 -1
  224. package/docs/en/packages/intlayer-cli/index.md +3 -1
  225. package/docs/en/packages/intlayer-editor/index.md +3 -1
  226. package/docs/en/packages/lynx-intlayer/index.md +3 -1
  227. package/docs/en/packages/next-intlayer/index.md +3 -1
  228. package/docs/en/packages/next-intlayer/t.md +3 -1
  229. package/docs/en/packages/next-intlayer/useDictionary.md +3 -1
  230. package/docs/en/packages/next-intlayer/useIntlayer.md +3 -1
  231. package/docs/en/packages/next-intlayer/useIntlayerAsync.md +3 -1
  232. package/docs/en/packages/next-intlayer/useLocale.md +3 -1
  233. package/docs/en/packages/nuxt-intlayer/index.md +3 -1
  234. package/docs/en/packages/preact-intlayer/index.md +3 -1
  235. package/docs/en/packages/react-intlayer/index.md +3 -1
  236. package/docs/en/packages/react-intlayer/t.md +3 -1
  237. package/docs/en/packages/react-intlayer/useDictionary.md +3 -1
  238. package/docs/en/packages/react-intlayer/useIntlayer.md +3 -1
  239. package/docs/en/packages/react-intlayer/useIntlayerAsync.md +3 -1
  240. package/docs/en/packages/react-intlayer/useLocale.md +3 -1
  241. package/docs/en/packages/react-native-intlayer/index.md +3 -1
  242. package/docs/en/packages/react-scripts-intlayer/index.md +3 -1
  243. package/docs/en/packages/solid-intlayer/index.md +3 -1
  244. package/docs/en/packages/svelte-intlayer/index.md +3 -1
  245. package/docs/en/packages/vite-intlayer/index.md +3 -1
  246. package/docs/en/packages/vue-intlayer/index.md +3 -1
  247. package/docs/en/per_locale_file.md +3 -1
  248. package/docs/en/roadmap.md +5 -2
  249. package/docs/en/vs_code_extension.md +3 -1
  250. package/docs/en-GB/intlayer_with_vite+react.md +64 -83
  251. package/docs/es/intlayer_with_vite+react.md +91 -94
  252. package/docs/fr/intlayer_with_vite+react.md +73 -65
  253. package/docs/hi/intlayer_with_vite+react.md +107 -107
  254. package/docs/it/intlayer_with_vite+react.md +156 -112
  255. package/docs/ja/intlayer_with_vite+react.md +153 -218
  256. package/docs/ko/intlayer_with_vite+react.md +116 -148
  257. package/docs/ko/packages/intlayer/getLocalizedUrl.md +1 -23
  258. package/docs/pt/intlayer_with_vite+react.md +110 -132
  259. package/docs/ru/intlayer_with_vite+react.md +98 -83
  260. package/docs/zh/intlayer_with_vite+react.md +147 -184
  261. package/docs/zh/packages/intlayer/getLocalizedUrl.md +1 -23
  262. package/frequent_questions/ar/build_error_CI_CD.md +75 -0
  263. package/frequent_questions/de/build_error_CI_CD.md +75 -0
  264. package/frequent_questions/en/build_error_CI_CD.md +75 -0
  265. package/frequent_questions/en-GB/build_error_CI_CD.md +75 -0
  266. package/frequent_questions/es/build_error_CI_CD.md +75 -0
  267. package/frequent_questions/fr/build_error_CI_CD.md +75 -0
  268. package/frequent_questions/hi/build_error_CI_CD.md +75 -0
  269. package/frequent_questions/it/build_error_CI_CD.md +75 -0
  270. package/frequent_questions/ja/build_error_CI_CD.md +75 -0
  271. package/frequent_questions/ja/intlayer_command_undefined.md +3 -3
  272. package/frequent_questions/ko/build_error_CI_CD.md +75 -0
  273. package/frequent_questions/ko/intlayer_command_undefined.md +3 -3
  274. package/frequent_questions/pt/build_error_CI_CD.md +75 -0
  275. package/frequent_questions/ru/build_error_CI_CD.md +75 -0
  276. package/frequent_questions/zh/build_error_CI_CD.md +75 -0
  277. package/frequent_questions/zh/intlayer_command_undefined.md +3 -3
  278. package/legal/ar/privacy_notice.md +83 -0
  279. package/legal/ar/terms_of_service.md +55 -0
  280. package/legal/de/privacy_notice.md +83 -0
  281. package/legal/de/terms_of_service.md +55 -0
  282. package/legal/en/privacy_notice.md +83 -0
  283. package/legal/en/terms_of_service.md +55 -0
  284. package/legal/en-GB/privacy_notice.md +83 -0
  285. package/legal/en-GB/terms_of_service.md +55 -0
  286. package/legal/es/privacy_notice.md +83 -0
  287. package/legal/es/terms_of_service.md +55 -0
  288. package/legal/fr/privacy_notice.md +83 -0
  289. package/legal/fr/terms_of_service.md +55 -0
  290. package/legal/hi/privacy_notice.md +83 -0
  291. package/legal/hi/terms_of_service.md +55 -0
  292. package/legal/it/privacy_notice.md +83 -0
  293. package/legal/it/terms_of_service.md +55 -0
  294. package/legal/ja/privacy_notice.md +83 -0
  295. package/legal/ja/terms_of_service.md +55 -0
  296. package/legal/ko/privacy_notice.md +83 -0
  297. package/legal/ko/terms_of_service.md +55 -0
  298. package/legal/pt/privacy_notice.md +83 -0
  299. package/legal/pt/terms_of_service.md +55 -0
  300. package/legal/ru/privacy_notice.md +83 -0
  301. package/legal/ru/terms_of_service.md +55 -0
  302. package/legal/zh/privacy_notice.md +83 -0
  303. package/legal/zh/terms_of_service.md +55 -0
  304. package/package.json +7 -6
  305. package/src/blog.ts +6 -4
  306. package/src/common.ts +23 -7
  307. package/src/doc.ts +6 -4
  308. package/src/frequentQuestions.ts +6 -4
  309. package/src/generated/blog.entry.ts +1177 -280
  310. package/src/generated/docs.entry.ts +3868 -1217
  311. package/src/generated/frequentQuestions.entry.ts +808 -178
  312. package/src/generated/legal.entry.ts +34 -36
  313. package/src/legal.ts +6 -4
@@ -1,23 +1,23 @@
1
1
  ---
2
- createdAt: 2025-03-07
3
- updatedAt: 2025-06-29
4
- title: Traduci la tua app mobile React Native e Expo (i18n)
5
- description: Scopri come rendere la tua app mobile React Native e Expo multilingue. Segui la documentazione per internazionalizzarla (i18n) e tradurla.
2
+ createdAt: 2024-03-07
3
+ updatedAt: 2024-03-07
4
+ title: Iniziare con Intlayer in Vite + React
5
+ description: Scopri come aggiungere l'internazionalizzazione (i18n) alla tua applicazione Vite e React utilizzando Intlayer. Segui questa guida per rendere la tua app multilingue.
6
6
  keywords:
7
7
  - Internazionalizzazione
8
8
  - Documentazione
9
9
  - Intlayer
10
10
  - Vite
11
11
  - React
12
- - React Native
12
+ - i18n
13
13
  - JavaScript
14
14
  slugs:
15
15
  - doc
16
16
  - environment
17
- - react-native-and-expo
17
+ - vite-and-react
18
18
  ---
19
19
 
20
- # Iniziare con l'internazionalizzazione (i18n) usando Intlayer, Vite e React
20
+ # Iniziare con l'internazionalizzazione (i18n) con Intlayer, Vite e React
21
21
 
22
22
  Consulta il [Template dell'Applicazione](https://github.com/aymericzip/intlayer-vite-react-template) su GitHub.
23
23
 
@@ -27,10 +27,10 @@ Consulta il [Template dell'Applicazione](https://github.com/aymericzip/intlayer-
27
27
 
28
28
  Con Intlayer, puoi:
29
29
 
30
- - **Gestire facilmente le traduzioni** utilizzando dizionari dichiarativi a livello di componente.
31
- - **Localizzare dinamicamente i metadata**, le rotte e i contenuti.
32
- - **Garantire il supporto a TypeScript** con tipi autogenerati, migliorando l'autocompletamento e il rilevamento degli errori.
33
- - **Beneficiare di funzionalità avanzate**, come il rilevamento e il cambio dinamico della lingua.
30
+ - **Gestisci facilmente le traduzioni** utilizzando dizionari dichiarativi a livello di componente.
31
+ - **Localizza dinamicamente i metadata**, le rotte e i contenuti.
32
+ - **Garantisci il supporto a TypeScript** con tipi autogenerati, migliorando l'autocompletamento e il rilevamento degli errori.
33
+ - **Approfitta di funzionalità avanzate**, come il rilevamento e il cambio dinamico della lingua.
34
34
 
35
35
  ---
36
36
 
@@ -60,14 +60,14 @@ yarn add --save-dev vite-intlayer
60
60
  Il pacchetto principale che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la [dichiarazione dei contenuti](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/get_started.md), la traspilazione e i [comandi CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_cli.md).
61
61
 
62
62
  - **react-intlayer**
63
- Il pacchetto che integra Intlayer con l'applicazione React. Fornisce provider di contesto e hook per l'internazionalizzazione in React.
63
+ Il pacchetto che integra Intlayer con le applicazioni React. Fornisce provider di contesto e hook per l'internazionalizzazione in React.
64
64
 
65
65
  - **vite-intlayer**
66
66
  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 dall'utente, gestire i cookie e gestire il reindirizzamento degli URL.
67
67
 
68
68
  ### Passo 2: Configurazione del tuo progetto
69
69
 
70
- Crea un file di configurazione per configurare le lingue della tua applicazione:
70
+ Crea un file di configurazione per impostare le lingue della tua applicazione:
71
71
 
72
72
  ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
73
73
  import { Locales, type IntlayerConfig } from "intlayer";
@@ -78,7 +78,7 @@ const config: IntlayerConfig = {
78
78
  Locales.ENGLISH,
79
79
  Locales.FRENCH,
80
80
  Locales.SPANISH,
81
- // Le tue altre lingue
81
+ // Le tue altre localizzazioni
82
82
  ],
83
83
  defaultLocale: Locales.ENGLISH,
84
84
  },
@@ -91,14 +91,13 @@ export default config;
91
91
  import { Locales } from "intlayer";
92
92
 
93
93
  /** @type {import('intlayer').IntlayerConfig} */
94
- // Configurazione per Intlayer
95
94
  const config = {
96
95
  internationalization: {
97
96
  locales: [
98
97
  Locales.ENGLISH,
99
98
  Locales.FRENCH,
100
99
  Locales.SPANISH,
101
- // Le tue altre lingue
100
+ // Le tue altre localizzazioni
102
101
  ],
103
102
  defaultLocale: Locales.ENGLISH,
104
103
  },
@@ -111,14 +110,13 @@ export default config;
111
110
  const { Locales } = require("intlayer");
112
111
 
113
112
  /** @type {import('intlayer').IntlayerConfig} */
114
- // Configurazione per Intlayer
115
113
  const config = {
116
114
  internationalization: {
117
115
  locales: [
118
116
  Locales.ENGLISH,
119
117
  Locales.FRENCH,
120
118
  Locales.SPANISH,
121
- // Le tue altre lingue
119
+ // Le tue altre localizzazioni
122
120
  ],
123
121
  defaultLocale: Locales.ENGLISH,
124
122
  },
@@ -166,9 +164,9 @@ module.exports = defineConfig({
166
164
  });
167
165
  ```
168
166
 
169
- > Il plugin Vite `intlayerPlugin()` viene utilizzato per integrare Intlayer con Vite. Garantisce la creazione dei file di dichiarazione dei contenuti e li monitora in modalità sviluppo. Definisce le variabili d'ambiente di Intlayer all'interno dell'applicazione Vite. Inoltre, fornisce alias per ottimizzare le prestazioni.
167
+ > Il plugin Vite `intlayerPlugin()` viene utilizzato per integrare Intlayer con Vite. Garantisce la creazione dei file di dichiarazione del contenuto e li monitora in modalità sviluppo. Definisce le variabili d'ambiente di Intlayer all'interno dell'applicazione Vite. Inoltre, fornisce alias per ottimizzare le prestazioni.
170
168
 
171
- ### Passo 4: Dichiara i Tuoi Contenuti
169
+ ### Passo 4: Dichiara il Tuo Contenuto
172
170
 
173
171
  Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:
174
172
 
@@ -260,7 +258,7 @@ const appContent = {
260
258
  // Non dimenticare di importare React se usi un nodo React nel tuo contenuto
261
259
  en: (
262
260
  <>
263
- Modifica <code>src/App.tsx</code> e salva per testare HMR
261
+ Edit <code>src/App.tsx</code> e salva per testare HMR
264
262
  </>
265
263
  ),
266
264
  fr: (
@@ -276,7 +274,7 @@ const appContent = {
276
274
  },
277
275
 
278
276
  readTheDocs: t({
279
- en: "Click on the Vite and React logos to learn more",
277
+ en: "Clicca sui loghi di Vite e React per saperne di più",
280
278
  fr: "Cliquez sur les logos Vite et React pour en savoir plus",
281
279
  es: "Haga clic en los logotipos de Vite y React para obtener más información",
282
280
  }),
@@ -297,13 +295,11 @@ const appContent = {
297
295
  en: "Vite logo",
298
296
  fr: "Logo Vite",
299
297
  es: "Logo Vite",
300
- it: "Logo Vite",
301
298
  }),
302
299
  reactLogo: t({
303
300
  en: "React logo",
304
301
  fr: "Logo React",
305
302
  es: "Logo React",
306
- it: "Logo React",
307
303
  }),
308
304
 
309
305
  title: "Vite + React",
@@ -312,7 +308,6 @@ const appContent = {
312
308
  en: "count is ",
313
309
  fr: "le compte est ",
314
310
  es: "el recuento es ",
315
- it: "il conteggio è ",
316
311
  }),
317
312
 
318
313
  edit:
@@ -322,7 +317,7 @@ const appContent = {
322
317
  // Non dimenticare di importare React se usi un nodo React nel tuo contenuto
323
318
  en: (
324
319
  <>
325
- Edit <code>src/App.tsx</code> and save to test HMR
320
+ Edit <code>src/App.tsx</code> e salva per testare HMR
326
321
  </>
327
322
  ),
328
323
  fr: (
@@ -332,7 +327,7 @@ const appContent = {
332
327
  ),
333
328
  es: (
334
329
  <>
335
- Modifica <code>src/App.tsx</code> e salva per testare HMR
330
+ Edita <code>src/App.tsx</code> e salva per testare HMR
336
331
  </>
337
332
  ),
338
333
  },
@@ -411,13 +406,13 @@ module.exports = appContent;
411
406
 
412
407
  > Le tue dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione non appena sono incluse nella directory `contentDir` (di default, `./src`). E devono corrispondere all'estensione del file di dichiarazione del contenuto (di default, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
413
408
 
414
- > Per maggiori dettagli, consulta la [documentazione sulla dichiarazione del contenuto](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/get_started.md).
409
+ > Per maggiori dettagli, consulta la [documentazione sulle dichiarazioni di contenuto](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/get_started.md).
415
410
 
416
411
  > Se il tuo file di contenuto include codice TSX, dovresti considerare di importare `import React from "react";` nel tuo file di contenuto.
417
412
 
418
413
  ### Passo 5: Utilizza Intlayer nel tuo Codice
419
414
 
420
- Accedi ai tuoi dizionari di contenuti in tutta l'applicazione:
415
+ Accedi ai tuoi dizionari di contenuti in tutta la tua applicazione:
421
416
 
422
417
  ```tsx {5,9} fileName="src/App.tsx" codeFormat="typescript"
423
418
  import { useState, type FC } from "react";
@@ -457,7 +452,7 @@ const AppContent: FC = () => {
457
452
  );
458
453
  };
459
454
 
460
- const App = () => (
455
+ const App: FC = () => (
461
456
  <IntlayerProvider>
462
457
  <AppContent />
463
458
  </IntlayerProvider>
@@ -560,7 +555,7 @@ const App = () => (
560
555
  module.exports = App;
561
556
  ```
562
557
 
563
- > Se vuoi usare il tuo contenuto in un attributo di tipo `string`, come `alt`, `title`, `href`, `aria-label`, ecc., devi chiamare il valore della funzione, ad esempio:
558
+ > Se vuoi usare il tuo contenuto in un attributo `string`, come `alt`, `title`, `href`, `aria-label`, ecc., devi chiamare il valore della funzione, come:
564
559
 
565
560
  > ```jsx
566
561
  > <img src={content.image.src.value} alt={content.image.value} />
@@ -582,7 +577,7 @@ const LocaleSwitcher: FC = () => {
582
577
 
583
578
  return (
584
579
  <button onClick={() => setLocale(Locales.English)}>
585
- Cambia lingua in inglese
580
+ Cambia lingua in Inglese
586
581
  </button>
587
582
  );
588
583
  };
@@ -597,7 +592,7 @@ const LocaleSwitcher = () => {
597
592
 
598
593
  return (
599
594
  <button onClick={() => setLocale(Locales.English)}>
600
- Cambia lingua in inglese
595
+ Cambia lingua in Inglese
601
596
  </button>
602
597
  );
603
598
  };
@@ -612,7 +607,7 @@ const LocaleSwitcher = () => {
612
607
 
613
608
  return (
614
609
  <button onClick={() => setLocale(Locales.English)}>
615
- Cambia lingua in inglese
610
+ Cambia lingua in Inglese
616
611
  </button>
617
612
  );
618
613
  };
@@ -620,9 +615,9 @@ const LocaleSwitcher = () => {
620
615
 
621
616
  > Per saperne di più sull'hook `useLocale`, consulta la [documentazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/packages/react-intlayer/useLocale.md).
622
617
 
623
- ### (Opzionale) Passo 7: Aggiungi il routing localizzato alla tua applicazione
618
+ ### (Opzionale) Passo 7: Aggiungere il routing localizzato alla tua applicazione
624
619
 
625
- Lo scopo di questo passaggio è creare percorsi unici per ogni lingua. Questo è utile per la SEO e per URL amichevoli per i motori di ricerca.
620
+ Lo scopo di questo passaggio è creare rotte uniche per ogni lingua. Questo è utile per la SEO e per URL amichevoli per i motori di ricerca.
626
621
  Esempio:
627
622
 
628
623
  ```plaintext
@@ -631,13 +626,13 @@ Esempio:
631
626
  - https://example.com/fr/about
632
627
  ```
633
628
 
634
- > Per impostazione predefinita, le rotte non sono prefissate per la lingua predefinita. Se desideri aggiungere un prefisso anche per la lingua predefinita, puoi impostare l'opzione `middleware.prefixDefault` a `true` nella tua configurazione. Consulta la [documentazione della configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md) per maggiori informazioni.
629
+ > Per impostazione predefinita, i percorsi non sono prefissati per la lingua predefinita. Se desideri aggiungere un prefisso anche per la lingua predefinita, puoi impostare l'opzione `middleware.prefixDefault` su `true` nella tua configurazione. Consulta la [documentazione sulla configurazione](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md) per maggiori informazioni.
635
630
 
636
631
  Per aggiungere il routing localizzato alla tua applicazione, puoi creare un componente `LocaleRouter` che avvolge le rotte della tua applicazione e gestisce il routing basato sulla lingua. Ecco un esempio che utilizza [React Router](https://reactrouter.com/home):
637
632
 
638
633
  ```tsx fileName="src/components/LocaleRouter.tsx" codeFormat="typescript"
639
- // Importazione delle dipendenze e funzioni necessarie
640
- import { type Locales, configuration, getPathWithoutLocale } from "intlayer"; // Funzioni e tipi di utilità da 'intlayer'
634
+ // Importing necessary dependencies and functions
635
+ import { type Locales, configuration, getPathWithoutLocale } from "intlayer"; // Funzioni di utilità e tipi da 'intlayer'
641
636
  import type { FC, PropsWithChildren } from "react"; // Tipi React per componenti funzionali e props
642
637
  import { IntlayerProvider } from "react-intlayer"; // Provider per il contesto di internazionalizzazione
643
638
  import {
@@ -654,7 +649,7 @@ const { locales, defaultLocale } = internationalization;
654
649
 
655
650
  /**
656
651
  * Un componente che gestisce la localizzazione e avvolge i figli con il contesto locale appropriato.
657
- * Gestisce il rilevamento e la validazione della locale basata sull'URL.
652
+ * Gestisce il rilevamento e la validazione della lingua basata sull'URL.
658
653
  */
659
654
  const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
660
655
  children,
@@ -662,25 +657,25 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
662
657
  }) => {
663
658
  const { pathname, search } = useLocation(); // Ottieni il percorso URL corrente
664
659
 
665
- // Determina la lingua corrente, utilizzando quella predefinita se non fornita
660
+ // Determina la locale corrente, utilizzando quella di default se non fornita
666
661
  const currentLocale = locale ?? defaultLocale;
667
662
 
668
- // Rimuove il prefisso della lingua dal percorso per costruire un percorso base
663
+ // Rimuovi il prefisso della locale dal percorso per costruire un percorso base
669
664
  const pathWithoutLocale = getPathWithoutLocale(
670
665
  pathname // Percorso URL corrente
671
666
  );
672
667
 
673
668
  /**
674
- * Se middleware.prefixDefault è true, la lingua predefinita deve sempre essere prefissata.
669
+ * Se middleware.prefixDefault è true, la locale di default deve sempre essere prefissata.
675
670
  */
676
671
  if (middleware.prefixDefault) {
677
- // Valida la lingua
672
+ // Valida la locale
678
673
  if (!locale || !locales.includes(locale)) {
679
- // Reindirizza alla lingua predefinita con il percorso aggiornato
674
+ // Reindirizza alla locale di default con il percorso aggiornato
680
675
  return (
681
676
  <Navigate
682
677
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
683
- replace // Sostituisce la voce corrente della cronologia con quella nuova
678
+ replace // Sostituisce la voce corrente nella cronologia con quella nuova
684
679
  />
685
680
  );
686
681
  }
@@ -692,7 +687,7 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
692
687
  } else {
693
688
  /**
694
689
  * Quando middleware.prefixDefault è falso, la locale predefinita non è prefissata.
695
- * Assicura che la locale corrente sia valida e non la locale predefinita.
690
+ * Assicurarsi che la locale corrente sia valida e non la locale predefinita.
696
691
  */
697
692
  if (
698
693
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -700,13 +695,13 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
700
695
  .filter(
701
696
  (locale) => locale.toString() !== defaultLocale.toString() // Esclude la locale predefinita
702
697
  )
703
- .includes(currentLocale) // Controlla se la lingua corrente è nella lista delle lingue valide
698
+ .includes(currentLocale) // Controlla se la locale corrente è nella lista delle locale valide
704
699
  ) {
705
- // Reindirizza al percorso senza prefisso della lingua
700
+ // Reindirizza al percorso senza prefisso della locale
706
701
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
707
702
  }
708
703
 
709
- // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
704
+ // Avvolge i figli con IntlayerProvider e imposta la locale corrente
710
705
  return (
711
706
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
712
707
  );
@@ -714,8 +709,8 @@ const AppLocalized: FC<PropsWithChildren<{ locale: Locales }>> = ({
714
709
  };
715
710
 
716
711
  /**
717
- * Un componente router che configura le rotte specifiche per lingua.
718
- * Usa React Router per gestire la navigazione e rendere i componenti localizzati.
712
+ * Un componente router che configura le rotte specifiche per la locale.
713
+ * Usa React Router per gestire la navigazione e renderizzare componenti localizzati.
719
714
  */
720
715
  export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
721
716
  <BrowserRouter>
@@ -734,7 +729,7 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
734
729
  ))}
735
730
 
736
731
  {
737
- // Se il prefisso per la locale predefinita è disabilitato, renderizza i figli direttamente al percorso root
732
+ // Se il prefisso per la locale predefinita è disabilitato, renderizza i figli direttamente nel percorso root
738
733
  !middleware.prefixDefault && (
739
734
  <Route
740
735
  path="*"
@@ -750,7 +745,7 @@ export const LocaleRouter: FC<PropsWithChildren> = ({ children }) => (
750
745
  ```
751
746
 
752
747
  ```jsx fileName="src/components/LocaleRouter.mjx" codeFormat="esm"
753
- // Importazione delle dipendenze e delle funzioni necessarie
748
+ // Importazione delle dipendenze e funzioni necessarie
754
749
  import { configuration, getPathWithoutLocale } from "intlayer"; // Funzioni e tipi di utilità da 'intlayer'
755
750
  // Funzioni e tipi di utilità da 'intlayer'
756
751
  import { IntlayerProvider } from "react-intlayer"; // Provider per il contesto di internazionalizzazione
@@ -760,19 +755,19 @@ import {
760
755
  Route,
761
756
  Navigate,
762
757
  useLocation,
763
- } from "react-router-dom"; // Componenti del router per gestire la navigazione
758
+ } from "react-router-dom"; // Componenti del router per la gestione della navigazione
764
759
 
765
760
  // Destrutturazione della configurazione da Intlayer
766
761
  const { internationalization, middleware } = configuration;
767
762
  const { locales, defaultLocale } = internationalization;
768
763
 
769
764
  /**
770
- * Un componente che gestisce la localizzazione e avvolge i children con il contesto locale appropriato.
765
+ * Un componente che gestisce la localizzazione e avvolge i figli con il contesto della locale appropriata.
771
766
  /**
772
767
  * Gestisce il rilevamento e la validazione della localizzazione basata sull'URL.
773
768
  */
774
769
  const AppLocalized = ({ children, locale }) => {
775
- const { pathname, search } = useLocation(); // Ottieni il percorso URL corrente
770
+ const { pathname, search } = useLocation(); // Ottiene il percorso URL corrente
776
771
 
777
772
  // Determina la localizzazione corrente, utilizzando quella di default se non fornita
778
773
  const currentLocale = locale ?? defaultLocale;
@@ -792,7 +787,7 @@ const AppLocalized = ({ children, locale }) => {
792
787
  return (
793
788
  <Navigate
794
789
  to={`/${defaultLocale}/${pathWithoutLocale}${search}`}
795
- replace // Sostituisce la voce corrente nella cronologia con quella nuova
790
+ replace // Sostituisce la voce corrente della cronologia con quella nuova
796
791
  />
797
792
  );
798
793
  }
@@ -803,8 +798,8 @@ const AppLocalized = ({ children, locale }) => {
803
798
  );
804
799
  } else {
805
800
  /**
806
- * Quando middleware.prefixDefault è falso, la locale predefinita non è prefissata.
807
- * Assicurarsi che la locale corrente sia valida e non sia la locale predefinita.
801
+ * Quando middleware.prefixDefault è false, la locale predefinita non è prefissata.
802
+ * Assicura che la locale corrente sia valida e non sia la locale predefinita.
808
803
  */
809
804
  if (
810
805
  currentLocale.toString() !== defaultLocale.toString() &&
@@ -826,7 +821,7 @@ const AppLocalized = ({ children, locale }) => {
826
821
  };
827
822
 
828
823
  /**
829
- * Un componente router che configura le rotte specifiche per localizzazione.
824
+ * Un componente router che configura le rotte specifiche per la localizzazione.
830
825
  * Utilizza React Router per gestire la navigazione e rendere i componenti localizzati.
831
826
  */
832
827
  export const LocaleRouter = ({ children }) => (
@@ -838,7 +833,7 @@ export const LocaleRouter = ({ children }) => (
838
833
  )
839
834
  .map((locale) => (
840
835
  <Route
841
- // Pattern di route per catturare la locale (es. /en/, /fr/) e corrispondere a tutti i percorsi successivi
836
+ // Modello di percorso per catturare la locale (es. /en/, /fr/) e abbinare tutti i percorsi successivi
842
837
  path={`/${locale}/*`}
843
838
  key={locale}
844
839
  element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Avvolge i figli con la gestione della locale
@@ -846,7 +841,7 @@ export const LocaleRouter = ({ children }) => (
846
841
  ))}
847
842
 
848
843
  {
849
- // Se il prefisso della locale predefinita è disabilitato, renderizza i figli direttamente al percorso root
844
+ // Se il prefisso per la locale predefinita è disabilitato, renderizza i figli direttamente al percorso root
850
845
  !middleware.prefixDefault && (
851
846
  <Route
852
847
  path="*"
@@ -862,9 +857,24 @@ export const LocaleRouter = ({ children }) => (
862
857
  ```
863
858
 
864
859
  ```jsx fileName="src/components/LocaleRouter.cjx" codeFormat="commonjs"
860
+ // Importazione delle dipendenze e delle funzioni necessarie
861
+ const { configuration, getPathWithoutLocale } = require("intlayer"); // Funzioni e tipi di utilità da 'intlayer'
862
+ const { IntlayerProvider, useLocale } = require("react-intlayer"); // Provider per il contesto di internazionalizzazione
863
+ const {
864
+ BrowserRouter,
865
+ Routes,
866
+ Route,
867
+ Navigate,
868
+ useLocation,
869
+ } = require("react-router-dom"); // Componenti del router per la gestione della navigazione
870
+
871
+ // Destrutturazione della configurazione da Intlayer
872
+ const { internationalization, middleware } = configuration;
873
+ const { locales, defaultLocale } = internationalization;
874
+
865
875
  /**
866
- * Un componente che gestisce la localizzazione e avvolge i figli con il contesto di localizzazione appropriato.
867
- * Gestisce il rilevamento e la validazione della localizzazione basata sull'URL.
876
+ * Un componente che gestisce la localizzazione e avvolge i figli con il contesto locale appropriato.
877
+ * Gestisce il rilevamento e la validazione della locale basata sull'URL.
868
878
  */
869
879
  const AppLocalized = ({ children, locale }) => {
870
880
  const { pathname, search } = useLocation(); // Ottieni il percorso URL corrente
@@ -872,7 +882,7 @@ const AppLocalized = ({ children, locale }) => {
872
882
  // Determina la locale corrente, utilizzando quella di default se non fornita
873
883
  const currentLocale = locale ?? defaultLocale;
874
884
 
875
- // Rimuovi il prefisso della locale dal percorso per costruire un percorso base
885
+ // Rimuove il prefisso della locale dal percorso per costruire un percorso base
876
886
  const pathWithoutLocale = getPathWithoutLocale(
877
887
  pathname // Percorso URL corrente
878
888
  );
@@ -898,22 +908,22 @@ const AppLocalized = ({ children, locale }) => {
898
908
  );
899
909
  } else {
900
910
  /**
901
- * Quando middleware.prefixDefault è falso, la locale predefinita non è prefissata.
902
- * Assicurarsi che la locale corrente sia valida e non la locale predefinita.
911
+ * Quando middleware.prefixDefault è falso, la locale di default non è prefissata.
912
+ * Assicurarsi che la locale corrente sia valida e non la locale di default.
903
913
  */
904
914
  if (
905
915
  currentLocale.toString() !== defaultLocale.toString() &&
906
916
  !locales
907
917
  .filter(
908
- (locale) => locale.toString() !== defaultLocale.toString() // Esclude la locale predefinita
918
+ (locale) => locale.toString() !== defaultLocale.toString() // Esclude la locale di default
909
919
  )
910
- .includes(currentLocale) // Verifica se la locale corrente è nella lista delle locale valide
920
+ .includes(currentLocale) // Controlla se la locale corrente è nella lista delle locale valide
911
921
  ) {
912
- // Reindirizza al percorso senza prefisso della localizzazione
922
+ // Reindirizza al percorso senza prefisso della lingua
913
923
  return <Navigate to={`${pathWithoutLocale}${search}`} replace />;
914
924
  }
915
925
 
916
- // Avvolge i figli con IntlayerProvider e imposta la localizzazione corrente
926
+ // Avvolge i figli con IntlayerProvider e imposta la lingua corrente
917
927
  return (
918
928
  <IntlayerProvider locale={currentLocale}>{children}</IntlayerProvider>
919
929
  );
@@ -921,7 +931,7 @@ const AppLocalized = ({ children, locale }) => {
921
931
  };
922
932
 
923
933
  /**
924
- * Un componente router che configura le rotte specifiche per localizzazione.
934
+ * Un componente router che configura le rotte specifiche per la lingua.
925
935
  * Utilizza React Router per gestire la navigazione e rendere i componenti localizzati.
926
936
  */
927
937
  const LocaleRouter = ({ children }) => (
@@ -933,7 +943,7 @@ const LocaleRouter = ({ children }) => (
933
943
  )
934
944
  .map((locale) => (
935
945
  <Route
936
- // Modello di rotta per catturare la localizzazione (es. /en/, /fr/) e abbinare tutti i percorsi successivi
946
+ // Pattern della rotta per catturare la lingua (es. /en/, /fr/) e corrispondere a tutti i percorsi successivi
937
947
  path={`/${locale}/*`}
938
948
  key={locale}
939
949
  element={<AppLocalized locale={locale}>{children}</AppLocalized>} // Avvolge i figli con la gestione della localizzazione
@@ -941,7 +951,7 @@ const LocaleRouter = ({ children }) => (
941
951
  ))}
942
952
 
943
953
  {
944
- // Se il prefisso per la localizzazione predefinita è disabilitato, renderizza i figli direttamente al percorso root
954
+ // Se il prefisso per la localizzazione predefinita è disabilitato, renderizza i figli direttamente al percorso radice
945
955
  !middleware.prefixDefault && (
946
956
  <Route
947
957
  path="*"
@@ -956,7 +966,7 @@ const LocaleRouter = ({ children }) => (
956
966
  );
957
967
  ```
958
968
 
959
- Poi, puoi usare il componente `LocaleRouter` nella tua applicazione:
969
+ Quindi, puoi utilizzare il componente `LocaleRouter` nella tua applicazione:
960
970
 
961
971
  ```tsx fileName="src/App.tsx" codeFormat="typescript"
962
972
  import { LocaleRouter } from "./components/LocaleRouter";
@@ -995,7 +1005,7 @@ const App = () => (
995
1005
  );
996
1006
  ```
997
1007
 
998
- In parallelo, puoi anche utilizzare il `intLayerMiddlewarePlugin` per aggiungere il routing lato server alla tua applicazione. Questo plugin rileverà automaticamente la locale corrente basandosi sull'URL e imposterà il cookie della locale appropriata. Se non viene specificata alcuna locale, il plugin determinerà la locale più appropriata in base alle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, verrà effettuato un reindirizzamento alla locale predefinita.
1008
+ In parallelo, puoi anche utilizzare il `intLayerMiddlewarePlugin` per aggiungere il routing lato server alla tua applicazione. Questo plugin rileverà automaticamente la locale corrente basandosi sull'URL e imposterà il cookie della locale appropriata. Se non viene specificata alcuna locale, il plugin determinerà la locale più adatta in base alle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, verrà effettuato un reindirizzamento alla locale predefinita.
999
1009
 
1000
1010
  ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
1001
1011
  import { defineConfig } from "vite";
@@ -1032,7 +1042,7 @@ module.exports = defineConfig({
1032
1042
 
1033
1043
  ### (Opzionale) Passo 8: Cambiare l'URL quando la lingua cambia
1034
1044
 
1035
- Per cambiare l'URL quando la lingua cambia, puoi usare la proprietà `onLocaleChange` fornita dal hook `useLocale`. Parallelamente, puoi usare i hook `useLocation` e `useNavigate` di `react-router-dom` per aggiornare il percorso dell'URL.
1045
+ Per cambiare l'URL quando la lingua cambia, puoi usare la proprietà `onLocaleChange` fornita dall'hook `useLocale`. Parallelamente, puoi usare gli hook `useLocation` e `useNavigate` di `react-router-dom` per aggiornare il percorso dell'URL.
1036
1046
 
1037
1047
  ```tsx fileName="src/components/LocaleSwitcher.tsx" codeFormat="typescript"
1038
1048
  import { useLocation, useNavigate } from "react-router-dom";
@@ -1076,15 +1086,15 @@ const LocaleSwitcher: FC = () => {
1076
1086
  key={localeItem}
1077
1087
  >
1078
1088
  <span>
1079
- {/* Localizzazione - es. FR */}
1089
+ {/* Località - es. FR */}
1080
1090
  {localeItem}
1081
1091
  </span>
1082
1092
  <span>
1083
- {/* Lingua nella sua stessa localizzazione - es. Français */}
1093
+ {/* Lingua nella sua stessa località - es. Français */}
1084
1094
  {getLocaleName(localeItem, locale)}
1085
1095
  </span>
1086
1096
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1087
- {/* Lingua nella localizzazione corrente - es. Francés con localizzazione corrente impostata su Locales.SPANISH */}
1097
+ {/* Lingua nella località corrente - es. Francés con la località corrente impostata su Locales.SPANISH */}
1088
1098
  {getLocaleName(localeItem)}
1089
1099
  </span>
1090
1100
  <span dir="ltr" lang={Locales.ENGLISH}>
@@ -1148,7 +1158,7 @@ const LocaleSwitcher = () => {
1148
1158
  {getLocaleName(localeItem, locale)}
1149
1159
  </span>
1150
1160
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1151
- {/* Lingua nella locale corrente - es. Francés con la locale corrente impostata su Locales.SPANISH */}
1161
+ {/* Lingua nella localizzazione corrente - es. Francés con la localizzazione corrente impostata su Locales.SPANISH */}
1152
1162
  {getLocaleName(localeItem)}
1153
1163
  </span>
1154
1164
  <span dir="ltr" lang={Locales.ENGLISH}>
@@ -1204,15 +1214,15 @@ const LocaleSwitcher = () => {
1204
1214
  key={localeItem}
1205
1215
  >
1206
1216
  <span>
1207
- {/* Localizzazione - es. FR */}
1217
+ {/* Locale - es. FR */}
1208
1218
  {localeItem}
1209
1219
  </span>
1210
1220
  <span>
1211
- {/* Lingua nella sua stessa localizzazione - es. Français */}
1221
+ {/* Lingua nella sua stessa Locale - es. Français */}
1212
1222
  {getLocaleName(localeItem, locale)}
1213
1223
  </span>
1214
1224
  <span dir={getHTMLTextDir(localeItem)} lang={localeItem}>
1215
- {/* Lingua nella localizzazione corrente - es. Francés con la localizzazione corrente impostata su Locales.SPANISH */}
1225
+ {/* Lingua nella Locale corrente - es. Francés con la locale corrente impostata su Locales.SPANISH */}
1216
1226
  {getLocaleName(localeItem)}
1217
1227
  </span>
1218
1228
  <span dir="ltr" lang={Locales.ENGLISH}>
@@ -1242,19 +1252,19 @@ Di seguito il **Passo 9** aggiornato con spiegazioni aggiuntive ed esempi di cod
1242
1252
 
1243
1253
  ---
1244
1254
 
1245
- ### (Opzionale) Passo 9: Cambiare gli attributi di lingua e direzione dell'HTML
1255
+ ### (Opzionale) Passo 9: Cambiare gli attributi di lingua e direzione dellHTML
1246
1256
 
1247
1257
  Quando la tua applicazione supporta più lingue, è fondamentale aggiornare gli attributi `lang` e `dir` del tag `<html>` per corrispondere alla locale corrente. Questo garantisce:
1248
1258
 
1249
1259
  - **Accessibilità**: I lettori di schermo e le tecnologie assistive si basano sull'attributo `lang` corretto per pronunciare e interpretare accuratamente il contenuto.
1250
1260
  - **Rendering del testo**: L'attributo `dir` (direzione) assicura che il testo venga visualizzato nell'ordine corretto (ad esempio, da sinistra a destra per l'inglese, da destra a sinistra per l'arabo o l'ebraico), essenziale per la leggibilità.
1251
- - **SEO**: I motori di ricerca utilizzano l'attributo `lang` per determinare la lingua della tua pagina, aiutando a fornire il contenuto localizzato giusto nei risultati di ricerca.
1261
+ - **SEO**: I motori di ricerca utilizzano l'attributo `lang` per determinare la lingua della tua pagina, aiutando a mostrare il contenuto localizzato appropriato nei risultati di ricerca.
1252
1262
 
1253
1263
  Aggiornando dinamicamente questi attributi quando la lingua cambia, garantisci un'esperienza coerente e accessibile per gli utenti in tutte le lingue supportate.
1254
1264
 
1255
1265
  #### Implementazione del Hook
1256
1266
 
1257
- Crea un hook personalizzato per gestire gli attributi HTML. Il hook ascolta i cambiamenti di lingua e aggiorna gli attributi di conseguenza:
1267
+ Crea un hook personalizzato per gestire gli attributi HTML. L'hook ascolta i cambiamenti della lingua e aggiorna gli attributi di conseguenza:
1258
1268
 
1259
1269
  ```tsx fileName="src/hooks/useI18nHTMLAttributes.tsx" codeFormat="typescript"
1260
1270
  import { useEffect } from "react";
@@ -1263,7 +1273,7 @@ import { getHTMLTextDir } from "intlayer";
1263
1273
 
1264
1274
  /**
1265
1275
  * Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base alla lingua corrente.
1266
- * - `lang`: Informa i browser e i motori di ricerca sulla lingua della pagina.
1276
+ * - `lang`: Informa browser e motori di ricerca sulla lingua della pagina.
1267
1277
  * - `dir`: Garantisce l'ordine di lettura corretto (es. 'ltr' per inglese, 'rtl' per arabo).
1268
1278
  *
1269
1279
  * Questo aggiornamento dinamico è essenziale per una corretta resa del testo, accessibilità e SEO.
@@ -1272,10 +1282,10 @@ export const useI18nHTMLAttributes = () => {
1272
1282
  const { locale } = useLocale();
1273
1283
 
1274
1284
  useEffect(() => {
1275
- // Aggiorna l'attributo della lingua alla locale corrente.
1285
+ // Aggiorna l'attributo della lingua all'attuale locale.
1276
1286
  document.documentElement.lang = locale;
1277
1287
 
1278
- // Imposta la direzione del testo in base alla locale corrente.
1288
+ // Imposta la direzione del testo in base all'attuale locale.
1279
1289
  document.documentElement.dir = getHTMLTextDir(locale);
1280
1290
  }, [locale]);
1281
1291
  };
@@ -1287,7 +1297,7 @@ import { useLocale } from "react-intlayer";
1287
1297
  import { getHTMLTextDir } from "intlayer";
1288
1298
 
1289
1299
  /**
1290
- * Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base alla locale corrente.
1300
+ * Aggiorna gli attributi `lang` e `dir` dell'elemento HTML <html> in base al locale corrente.
1291
1301
  * - `lang`: Informa i browser e i motori di ricerca sulla lingua della pagina.
1292
1302
  * - `dir`: Garantisce l'ordine di lettura corretto (ad esempio, 'ltr' per l'inglese, 'rtl' per l'arabo).
1293
1303
  *
@@ -1404,17 +1414,33 @@ module.exports = App;
1404
1414
 
1405
1415
  Applicando queste modifiche, la tua applicazione:
1406
1416
 
1407
- - Garantirà che l'attributo **language** (`lang`) rifletta correttamente la locale corrente, importante per SEO e comportamento del browser.
1408
- - Adatterà la **direzione del testo** (`dir`) in base alla locale, migliorando leggibilità e usabilità per lingue con ordini di lettura differenti.
1409
- - Fornirà un'esperienza più **accessibile**, poiché le tecnologie assistive dipendono da questi attributi per funzionare al meglio.
1417
+ - Garantirà che l'attributo **language** (`lang`) rifletta correttamente la locale corrente, importante per la SEO e il comportamento del browser.
1418
+ - Adatterà la **direzione del testo** (`dir`) in base alla locale, migliorando la leggibilità e l'usabilità per lingue con ordini di lettura differenti.
1419
+ - Fornirà un'esperienza più **accessibile**, poiché le tecnologie assistive si basano su questi attributi per funzionare al meglio.
1420
+
1421
+ ### (Opzionale) Passo 10: Creare un componente Link localizzato
1422
+
1423
+ // Applica l'hook per aggiornare gli attributi lang e dir del tag <html> in base alla locale.
1424
+ useI18nHTMLAttributes();
1425
+
1426
+ // ... Resto del tuo componente
1427
+ };
1428
+
1429
+ const App = () => (
1430
+ <IntlayerProvider>
1431
+ <AppContent />
1432
+ </IntlayerProvider>
1433
+ );
1434
+
1435
+ module.exports = App;
1410
1436
 
1411
- ### (Opzionale) Passo 10: Creare un Componente Link Localizzato
1437
+ ````
1412
1438
 
1413
1439
  Applicando queste modifiche, la tua applicazione:
1414
1440
 
1415
- - Garantirà che l'attributo **language** (`lang`) rifletta correttamente la locale corrente, cosa importante per la SEO e il comportamento del browser.
1441
+ - Garantirà che l'attributo **lingua** (`lang`) rifletta correttamente la locale corrente, cosa importante per la SEO e il comportamento del browser.
1416
1442
  - Adatterà la **direzione del testo** (`dir`) in base alla locale, migliorando la leggibilità e l'usabilità per le lingue con ordini di lettura differenti.
1417
- - Fornirà un'esperienza più **accessibile**, poiché le tecnologie assistive dipendono da questi attributi per funzionare al meglio.
1443
+ - Fornirà un'esperienza più **accessibile**, poiché le tecnologie assistive dipendono da questi attributi per funzionare in modo ottimale.
1418
1444
 
1419
1445
  ### (Opzionale) Passo 10: Creare un componente Link localizzato
1420
1446
 
@@ -1423,7 +1449,7 @@ Per garantire che la navigazione della tua applicazione rispetti la lingua corre
1423
1449
  Questo comportamento è utile per diversi motivi:
1424
1450
 
1425
1451
  - **SEO e 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.
1426
- - **Coerenza**: Utilizzando un link localizzato in tutta l'applicazione, garantisci che la navigazione rimanga all'interno della lingua corrente, evitando cambiamenti di lingua inattesi.
1452
+ - **Coerenza**: Utilizzando un link localizzato in tutta l'applicazione, garantisci che la navigazione rimanga all'interno della lingua corrente, evitando cambiamenti di lingua imprevisti.
1427
1453
  - **Manutenibilità**: Centralizzare la logica di localizzazione in un unico componente semplifica la gestione degli URL, rendendo il tuo codice più facile da mantenere ed estendere man mano che la tua applicazione cresce.
1428
1454
 
1429
1455
  Di seguito è riportata l'implementazione di un componente `Link` localizzato in TypeScript:
@@ -1452,8 +1478,8 @@ export const checkIsExternalLink = (href?: string): boolean =>
1452
1478
 
1453
1479
  /**
1454
1480
  * Un componente Link personalizzato che adatta l'attributo href in base alla locale corrente.
1455
- * Per i link interni, utilizza `getLocalizedUrl` per anteporre la locale all'URL (es. /fr/about).
1456
- * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto locale.
1481
+ * Per i link interni, utilizza `getLocalizedUrl` per aggiungere il prefisso della locale all'URL (es. /fr/about).
1482
+ * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto di locale.
1457
1483
  */
1458
1484
  export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
1459
1485
  ({ href, children, ...props }, ref) => {
@@ -1473,7 +1499,7 @@ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
1473
1499
  );
1474
1500
 
1475
1501
  Link.displayName = "Link";
1476
- ```
1502
+ ````
1477
1503
 
1478
1504
  ```jsx fileName="src/components/Link.mjx" codeFormat="esm"
1479
1505
  import { getLocalizedUrl } from "intlayer";
@@ -1488,9 +1514,9 @@ export const checkIsExternalLink = (href?: string): boolean =>
1488
1514
  /^https?:\/\//.test(href ?? "");
1489
1515
 
1490
1516
  /**
1491
- * Componente Link personalizzato che adatta l'attributo href in base alla locale corrente.
1517
+ * Un componente Link personalizzato che adatta l'attributo href in base alla locale corrente.
1492
1518
  * Per i link interni, utilizza `getLocalizedUrl` per aggiungere il prefisso della locale all'URL (es. /fr/about).
1493
- * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto locale.
1519
+ * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto di locale.
1494
1520
  */
1495
1521
  export const Link = forwardRef(({ href, children, ...props }, ref) => {
1496
1522
  const { locale } = useLocale();
@@ -1524,7 +1550,7 @@ const checkIsExternalLink = (href) => /^https?:\/\//.test(href ?? "");
1524
1550
  /**
1525
1551
  * Un componente Link personalizzato che adatta l'attributo href in base alla locale corrente.
1526
1552
  * Per i link interni, utilizza `getLocalizedUrl` per anteporre la locale all'URL (es. /fr/about).
1527
- * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto locale.
1553
+ * Questo garantisce che la navigazione rimanga all'interno dello stesso contesto di locale.
1528
1554
  */
1529
1555
  const Link = forwardRef(({ href, children, ...props }, ref) => {
1530
1556
  const { locale } = useLocale();
@@ -1554,14 +1580,32 @@ Link.displayName = "Link";
1554
1580
  La funzione di supporto `checkIsExternalLink` determina se un URL è esterno. I link esterni vengono lasciati invariati perché non necessitano di localizzazione.
1555
1581
 
1556
1582
  - **Recupero della Locale Corrente**:
1557
- L'hook `useLocale` fornisce la locale corrente (ad esempio, `fr` per il francese).
1583
+ L'hook `useLocale` fornisce la locale corrente (ad esempio, `fr` per francese).
1558
1584
 
1559
1585
  - **Localizzazione dell'URL**:
1560
- Per i link interni (cioè non esterni), `getLocalizedUrl` viene utilizzato per aggiungere automaticamente il prefisso della locale corrente all'URL. Ciò significa che se l'utente è in francese, passando `/about` come `href`, questo verrà trasformato in `/fr/about`.
1586
+ Per i link interni (cioè non esterni), `getLocalizedUrl` viene utilizzato per aggiungere automaticamente il prefisso della locale corrente all'URL. Ciò significa che se l'utente è in francese, passando `/about` come `href` verrà trasformato in `/fr/about`.
1561
1587
 
1562
1588
  - **Restituzione del Link**:
1563
1589
  Il componente restituisce un elemento `<a>` con l'URL localizzato, garantendo che la navigazione sia coerente con la lingua selezionata.
1564
1590
 
1591
+ Integrando questo componente `Link` in tutta la tua applicazione, mantieni un'esperienza utente coerente e consapevole della lingua, beneficiando anche di un miglior SEO e usabilità.
1592
+
1593
+ ### Configurare TypeScript
1594
+
1595
+ Intlayer utilizza l'augmentation dei moduli per sfruttare i vantaggi di TypeScript e rendere il tuo codice più robusto.
1596
+
1597
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png)
1598
+
1599
+ ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1600
+
1601
+ Assicurati che la tua configurazione di TypeScript includa i tipi generati automaticamente.
1602
+
1603
+ ````json5 fileName="tsconfig.json"
1604
+ {
1605
+ // ... Le tue configurazioni TypeScript esistenti
1606
+ "include": [
1607
+ Il componente restituisce un elemento `<a>` con l'URL localizzato, garantendo che la navigazione sia coerente con la lingua selezionata.
1608
+
1565
1609
  Integrando questo componente `Link` in tutta la tua applicazione, mantieni un'esperienza utente coerente e consapevole della lingua, beneficiando inoltre di un miglior SEO e usabilità.
1566
1610
 
1567
1611
  ### Configurare TypeScript
@@ -1572,7 +1616,7 @@ Intlayer utilizza l'augmentation dei moduli per sfruttare i vantaggi di TypeScri
1572
1616
 
1573
1617
  ![alt text](https://github.com/aymericzip/intlayer/blob/main/docs/assets/translation_error.png)
1574
1618
 
1575
- Assicurati che la configurazione di TypeScript includa i tipi generati automaticamente.
1619
+ Assicurati che la tua configurazione TypeScript includa i tipi generati automaticamente.
1576
1620
 
1577
1621
  ```json5 fileName="tsconfig.json"
1578
1622
  {
@@ -1582,7 +1626,7 @@ Assicurati che la configurazione di TypeScript includa i tipi generati automatic
1582
1626
  ".intlayer/**/*.ts", // Includi i tipi generati automaticamente
1583
1627
  ],
1584
1628
  }
1585
- ```
1629
+ ````
1586
1630
 
1587
1631
  ### Configurazione Git
1588
1632
 
@@ -1597,14 +1641,14 @@ Per farlo, puoi aggiungere le seguenti istruzioni al tuo file `.gitignore`:
1597
1641
 
1598
1642
  ### Estensione VS Code
1599
1643
 
1600
- Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare l’**Estensione ufficiale Intlayer per VS Code**.
1644
+ Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare l'estensione ufficiale **Intlayer VS Code Extension**.
1601
1645
 
1602
1646
  [Installa dal Marketplace di VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
1603
1647
 
1604
1648
  Questa estensione offre:
1605
1649
 
1606
1650
  - **Completamento automatico** per le chiavi di traduzione.
1607
- - **Rilevamento errori in tempo reale** per traduzioni mancanti.
1651
+ - **Rilevamento errori in tempo reale** per le traduzioni mancanti.
1608
1652
  - **Anteprime inline** del contenuto tradotto.
1609
1653
  - **Azioni rapide** per creare e aggiornare facilmente le traduzioni.
1610
1654
 
@@ -1614,7 +1658,7 @@ Per maggiori dettagli su come utilizzare l'estensione, consulta la [documentazio
1614
1658
 
1615
1659
  ### Approfondimenti
1616
1660
 
1617
- Per approfondire, puoi implementare l'[editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) oppure esternalizzare i tuoi contenuti utilizzando il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md).
1661
+ Per approfondire, puoi implementare l'[editor visuale](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md) o esternalizzare i tuoi contenuti utilizzando il [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md).
1618
1662
 
1619
1663
  ---
1620
1664