\n\n
\n\n\n\n

{$content.title}

\n\n

{@const Title = $content.title}</h1>\n<!-- Per rendere il contenuto come stringa -->\n<div aria-label={$content.title.value}></div>\n<div aria-label={$content.title.toString()}></div>\n<div aria-label={String($content.title)}></div>\n```\n\n> Se la tua app esiste già, puoi utilizzare l' [Intlayer Compiler](/it/doc/compiler) in combinazione con il [comando extract](/it/doc/concept/cli/extract) per convertire migliaia di componenti in un secondo.\n\n</Step>\n\n<Step number={6} title=\"Cambia la lingua del tuo contenuto\" isOptional={true}>\n\n```svelte fileName=\"src/App.svelte\"\n<script lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Ottieni informazioni sulla locale e la funzione setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Gestisci il cambio di locale\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n</script>\n\n<div>\n <select value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n <option value={loc}>\n {getLocaleName(loc)}\n </option>\n {/each}\n </select>\n</div>\n```\n\n</Step>\n\n<Step number={7} title=\"Renderizza Markdown\" isOptional={true}>\n\nIntlayer supporta il rendering di contenuti Markdown direttamente nella tua applicazione Svelte. Per default, il Markdown è trattato come testo semplice. Per convertire il Markdown in HTML ricco, puoi integrare `@humanspeak/svelte-markdown` o un altro parser Markdown.\n\n> Per vedere come dichiarare contenuti markdown usando il pacchetto `intlayer`, consulta la [documentazione markdown](https://github.com/aymericzip/intlayer/tree/main/docs/docs/it/dictionary/markdown.md).\n\n```svelte fileName=\"src/App.svelte\"\n<script>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // rendi il contenuto markdown come stringa\n return markdown;\n );\n</script>\n\n<h1>{$content.markdownContent}</h1>\n```\n\n> Puoi anche accedere ai dati del front-matter del tuo markdown usando la proprietà `content.markdownContent.metadata.xxx`.\n\n</Step>\n\n<Step number={8} title=\"Configura l'editor / CMS di intlayer\" isOptional={true}>\n\nPer configurare l'editor di intlayer, devi seguire la [documentazione dell'editor intlayer](/it/doc/concept/editor).\n\nPer configurare il CMS di intlayer, devi seguire la [documentazione del CMS intlayer](/it/doc/concept/cms).\n\n</Step>\n\n<Step number={7} title=\"Aggiungi il routing localizzato alla tua applicazione\" isOptional={true}>\n\nPer gestire il routing localizzato nella tua applicazione Svelte, puoi usare `svelte-spa-router` insieme a `localeFlatMap` di Intlayer per generare le rotte per ogni locale.\n\nPer prima cosa, installa `svelte-spa-router`:\n\n```bash packageManager=\"npm\"\nnpm install svelte-spa-router\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add svelte-spa-router\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add svelte-spa-router\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add svelte-spa-router\n```\n\nQuindi, crea un file `Router.svelte` per definire le tue rotte:\n\n```svelte fileName=\"src/Router.svelte\"\n<script lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n</script>\n\n<Router {routes} />\n```\n\nAggiorna il tuo `main.ts` per montare il componente `Router` invece di `App`:\n\n```typescript fileName=\"src/main.ts\"\nimport { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n```\n\nInfine, aggiorna il tuo `App.svelte` per ricevere la prop `locale` e utilizzarla con `useIntlayer`:\n\n```svelte fileName=\"src/App.svelte\"\n<script lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n// Usa useIntlayer per ottenere i contenuti localizzati per l'app\n$: content = useIntlayer('app', locale);\n</script>\n\n<main>\n <div class=\"locale-switcher-container\">\n <LocaleSwitcher currentLocale={locale} />\n </div>\n\n <!-- ... resto della tua app ... -->\n</main>\n```\n\n#### Configura il Routing lato Server (Opzionale)\n\nIn parallelo, puoi anche utilizzare `intlayerProxy` 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 basandosi sulle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, effettuerà un reindirizzamento alla locale predefinita.\n\n> Nota che per utilizzare `intlayerProxy` in produzione, è necessario spostare il pacchetto `vite-intlayer` da `devDependencies` a `dependencies`.\n\n```typescript {3,7} fileName=\"vite.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n plugins: [intlayerProxy(), // should be placed first\n svelte(), intlayer()],\n});\n```\n\n</Step>\n\n<Step number={8} title=\"Cambiare l'URL quando la lingua cambia\" isOptional={true}>\n\nPer permettere agli utenti di cambiare lingua e aggiornare di conseguenza l'URL, puoi creare un componente `LocaleSwitcher`. Questo componente utilizzerà `getLocalizedUrl` da `intlayer` e `push` da `svelte-spa-router`.\n\n```svelte fileName=\"src/lib/LocaleSwitcher.svelte\"\n<script lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Ottieni le informazioni sulla lingua\nconst { locale, availableLocales } = useLocale();\n\n// Gestisci il cambio di lingua\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n</script>\n\n<div class=\"locale-switcher\">\n <select value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n <option value={loc}>\n {getLocaleName(loc)}\n </option>\n {/each}\n </select>\n</div>\n```\n\n</Step>\n\n<Step number={1} title=\"Estrarre il contenuto dei tuoi componenti\" isOptional={true}>\n\nSe hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.\n\nPer facilitare questo processo, Intlayer propone un [compilatore](/it/doc/compiler) / [estrattore](/it/doc/concept/cli/extract) per trasformare i tuoi componenti ed estrarre il contenuto.\n\nPer configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:\n\n```typescript fileName=\"intlayer.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Resto della tua configurazione\n compiler: {\n /**\n * Indica se il compilatore deve essere abilitato.\n */\n enabled: true,\n\n /**\n * Definisce il percorso dei file di output\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.\n */\n saveComponents: false,\n\n /**\n * Prefisso chiave dizionario\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n```\n\n<Tabs>\n <Tab value='Comando di estrazione'>\n\nEsegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto\n\n```bash packageManager=\"npm\"\nnpx intlayer extract\n```\n\n```bash packageManager=\"pnpm\"\npnpm intlayer extract\n```\n\n```bash packageManager=\"yarn\"\nyarn intlayer extract\n```\n\n```bash packageManager=\"bun\"\nbun x intlayer extract\n```\n\n </Tab>\n <Tab value='Compilatore Babel'>\n\nAggiorna il tuo `vite.config.ts` per includere il plugin `intlayerCompiler`:\n\n```ts fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Aggiunge il plugin del compilatore\n ],\n});\n```\n\n```bash packageManager=\"npm\"\nnpm run build # Oppure npm run dev\n```\n\n```bash packageManager=\"pnpm\"\npnpm run build # O pnpm run dev\n```\n\n```bash packageManager=\"yarn\"\nyarn build # O yarn dev\n```\n\n```bash packageManager=\"bun\"\nbun run build # Or bun run dev\n```\n\n </Tab>\n</Tabs>\n</Step>\n\n</Steps>\n\n### Configurazione Git\n\nSi consiglia di ignorare i file generati da Intlayer. Questo permette di evitare di committarli nel tuo repository Git.\n\nPer farlo, puoi aggiungere le seguenti istruzioni nel tuo file `.gitignore`:\n\n```bash\n# Ignora i file generati da Intlayer\n.intlayer\n```\n\n### Estensione VS Code\n\nPer migliorare la tua esperienza di sviluppo con Intlayer, puoi installare la **Intlayer VS Code Extension** ufficiale.\n\n[Installa dal VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nQuesta estensione offre:\n\n- **Completamento automatico** per le chiavi di traduzione.\n- **Rilevamento errori in tempo reale** per traduzioni mancanti.\n- **Anteprime inline** dei contenuti tradotti.\n- **Azioni rapide** per creare e aggiornare facilmente le traduzioni.\n\nPer maggiori dettagli su come utilizzare l'estensione, consulta la [documentazione della Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).\n\n---\n\n### (Opzionale) Sitemap e robots.txt (generazione in build)\n\nIntlayer espone utilità - `generateSitemap` e `getMultilingualUrls` - per formattare `sitemap.xml` multilingue e `robots.txt` pronti per i crawler e scriverli automaticamente in `public/`. Di solito si esegue un piccolo script Node **prima** di Vite (ad esempio hook npm `predev` / `prebuild`) così che i file siano presenti in build o in sviluppo.\n\n#### Sitemap\n\nIl generatore di sitemap di Intlayer rispetta le tue lingue e aggiunge i metadati attesi dai crawler.\n\n> La sitemap supporta lo spazio dei nomi `xhtml:link` (hreflang). Invece di elencare solo URL “piatti”, Intlayer collega in modo bidirezionale tutte le versioni linguistiche di ogni pagina (ad es. `/about`, `/fr/about` o `/about?lang=fr` a seconda del routing).\n\n#### Robots.txt\n\nUsa `getMultilingualUrls` così le regole `Disallow` coprono tutte le varianti localizzate dei percorsi sensibili.\n\n#### 1. Aggiungi `generate-seo.mjs` nella root del progetto\n\n```javascript fileName=\"generate-seo.mjs\"\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n```\n\nServe il pacchetto `intlayer` installato. Imposta `SITE_URL` in ambiente per la produzione (es. in CI).\n\n> Preferisci `generate-seo.mjs` per l’ESM di Node. Con `generate-seo.js` imposta `\"type\": \"module\"` in `package.json` oppure abilita l’ESM in Node.\n\n#### 2. Esegui lo script prima di Vite\n\n```json fileName=\"package.json\"\n{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n```\n\nAdatta i comandi se usi pnpm o yarn. Puoi anche richiamare lo script dalla CI o da un altro passo del pipeline.\n\n### Vai oltre\n\nPer andare oltre, puoi implementare l'[editor visuale](/it/doc/concept/editor) o esternalizzare i tuoi contenuti utilizzando il [CMS](/it/doc/concept/cms).\n","description":"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Svelte multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.","url":"https://intlayer.org/it/doc/environment/vite-and-svelte","datePublished":"2025-04-18","dateModified":"2026-05-31","version":"8.9.0","keywords":"Internazionalizzazione, Documentazione, Intlayer, Vite, Svelte, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Sviluppatori, Manager dei contenuti"}}</script></head><body class="relative flex size-full min-h-screen flex-col overflow-auto overflow-x-clip scroll-smooth bg-background leading-8 transition md:flex"><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-105"></ol></div><!--$--><script>((e, i, s, u, m, a, l, h) => { let d = document.documentElement, w = ["light", "dark"]; function p(n) { (Array.isArray(e) ? e : [e]).forEach((y) => { let k = y === "class", S = k && a ? m.map((f) => a[f] || f) : m; k ? (d.classList.remove(...S), d.classList.add(a && a[n] ? a[n] : n)) : d.setAttribute(y, n); }), R(n); } function R(n) { h && w.includes(n) && (d.style.colorScheme = n); } function c() { return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; } if (u) p(u); else try { let n = localStorage.getItem(i) || s; p(l && n === "system" ? c() : n); } catch (n) {} })("data-theme","theme","system",null,["light","dark"],null,true,true)</script><nav class="sticky top-0 z-50 flex w-full items-center bg-card/95 px-4 py-3 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur"><div class="group/dropdown relative flex items-center" aria-label="DropDown navbar-logo" id="dropdown-container-navbar-logo"><a aria-label="Logo dell'azienda - Vai alla home page" aria-current="page" id="dropdown-trigger-navbar-logo" aria-haspopup="true" aria-controls="dropdown-panel-navbar-logo" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral active" href="/it" target="_self" data-status="active"><svg width="2704" height="517" viewBox="0 0 2704 517" fill="none" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" role="img" aria-label="Intlayer logo" class="max-h-6 w-auto flex-auto text-text"><path fill-rule="evenodd" clip-rule="evenodd" d="M5 46C5 21.1472 25.1472 1 50 1H295C319.853 1 340 21.1472 340 46C340 70.8528 319.853 91 295 91H50C25.1472 91 5 70.8528 5 46ZM50 176C25.1472 176 5 196.147 5 221C5 245.853 25.1472 266 50 266H430C454.853 266 475 245.853 475 221C475 196.147 454.853 176 430 176H50ZM50 349C25.1472 349 5 369.147 5 394C5 418.853 25.1472 439 50 439H230C254.853 439 275 418.853 275 394C275 369.147 254.853 349 230 349H50ZM841.5 38V403H914.5V38H841.5ZM991.215 143V403H1060.21V250C1060.21 239 1062.71 229.5 1067.71 221.5C1073.05 213.167 1080.38 206.667 1089.71 202C1099.05 197 1109.71 194.5 1121.71 194.5C1137.71 194.5 1149.38 199.5 1156.71 209.5C1164.05 219.167 1167.71 234.833 1167.71 256.5V403H1236.21V243C1236.21 206.667 1228.71 180.167 1213.71 163.5C1199.05 146.5 1176.05 138 1144.71 138C1126.05 138 1109.55 141 1095.21 147C1081.21 152.667 1068.88 161.5 1058.21 173.5H1057.21L1056.71 143H991.215ZM1341.52 389C1355.52 401.667 1378.19 408 1409.52 408C1420.52 408 1431.19 407.167 1441.52 405.5C1451.85 404.167 1462.69 401.833 1474.02 398.5L1468.52 344C1461.85 346.333 1454.52 348.167 1446.52 349.5C1438.85 350.833 1431.52 351.5 1424.52 351.5C1411.52 351.5 1402.52 348.5 1397.52 342.5C1392.52 336.167 1390.02 325.167 1390.02 309.5V196.5H1474.52V143H1390.02V58H1321.02V143H1264.52V196.5H1321.02V326.5C1321.02 355.5 1327.85 376.333 1341.52 389ZM1536.71 38V403H1606.71V38H1536.71ZM1681.19 386.5C1696.19 400.833 1716.52 408 1742.19 408C1759.19 408 1775.86 404.833 1792.19 398.5C1808.52 392.167 1821.36 383.667 1830.69 373H1831.19L1832.19 403H1897.69V239C1897.69 214 1894.19 194.167 1887.19 179.5C1880.19 164.5 1869.02 153.833 1853.69 147.5C1838.36 141.167 1817.36 138 1790.69 138C1769.69 138 1748.52 139.833 1727.19 143.5C1706.19 146.833 1687.02 151.667 1669.69 158L1678.19 211C1694.19 204.667 1711.19 199.833 1729.19 196.5C1747.19 192.833 1764.52 191 1781.19 191C1793.86 191 1803.52 192.333 1810.19 195C1817.19 197.333 1822.02 201.667 1824.69 208C1827.69 214.333 1829.19 223.333 1829.19 235H1794.69C1751.36 235 1717.86 243.167 1694.19 259.5C1670.86 275.833 1659.19 299 1659.19 329C1659.19 353 1666.52 372.167 1681.19 386.5ZM1798.69 350C1789.36 354 1778.86 356 1767.19 356C1753.52 356 1742.86 353 1735.19 347C1727.86 341 1724.19 332.667 1724.19 322C1724.19 307.667 1730.86 297.167 1744.19 290.5C1757.52 283.5 1777.69 280 1804.69 280H1829.19V309.5C1829.19 318.167 1826.36 326.167 1820.69 333.5C1815.36 340.5 1808.02 346 1798.69 350ZM2025.11 401.5L1982.11 508H2054.61L2197.61 143H2123.61L2060.11 335.5H2059.11L1996.11 143L1922.61 143.5L2025.11 401.5ZM2251.46 373C2276.79 396.333 2312.79 408 2359.46 408C2376.13 408 2392.63 406.5 2408.96 403.5C2425.63 400.833 2440.13 397 2452.46 392L2444.46 339.5C2432.13 344.167 2417.96 347.833 2401.96 350.5C2385.96 353.167 2370.79 354.5 2356.46 354.5C2331.13 354.5 2312.29 349 2299.96 338C2289.75 328.893 2283.77 315.56 2282.01 298H2464.46C2464.79 295 2464.96 290.5 2464.96 284.5C2465.29 278.5 2465.46 273.167 2465.46 268.5C2465.46 226.833 2454.79 194.667 2433.46 172C2412.46 149.333 2382.46 138 2343.46 138C2303.13 138 2271.46 150 2248.46 174C2225.46 198 2213.96 231 2213.96 273C2213.96 316.333 2226.46 349.667 2251.46 373ZM2282.19 250.5C2283.95 232.347 2288.87 218.18 2296.96 208C2307.29 194.667 2322.79 188 2343.46 188C2363.13 188 2377.63 194.333 2386.96 207C2394.74 217.188 2399.38 231.688 2400.91 250.5H2282.19ZM2583.09 143H2517.09V403H2586.59V283C2586.59 267 2591.59 252.5 2601.59 239.5C2611.59 226.167 2625.09 215.667 2642.09 208C2659.09 200.333 2677.93 196.5 2698.59 196.5V138C2683.59 138 2668.93 140.167 2654.59 144.5C2640.59 148.5 2627.59 154.5 2615.59 162.5C2603.93 170.167 2593.76 179.833 2585.09 191.5H2583.59L2583.09 143Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M5 46C5 21.1472 25.1472 1 50 1H295C319.853 1 340 21.1472 340 46C340 70.8528 319.853 91 295 91H50C25.1472 91 5 70.8528 5 46ZM50 176C25.1472 176 5 196.147 5 221C5 245.853 25.1472 266 50 266H430C454.853 266 475 245.853 475 221C475 196.147 454.853 176 430 176H50ZM50 349C25.1472 349 5 369.147 5 394C5 418.853 25.1472 439 50 439H230C254.853 439 275 418.853 275 394C275 369.147 254.853 349 230 349H50ZM841.5 38V403H914.5V38H841.5ZM991.215 143V403H1060.21V250C1060.21 239 1062.71 229.5 1067.71 221.5C1073.05 213.167 1080.38 206.667 1089.71 202C1099.05 197 1109.71 194.5 1121.71 194.5C1137.71 194.5 1149.38 199.5 1156.71 209.5C1164.05 219.167 1167.71 234.833 1167.71 256.5V403H1236.21V243C1236.21 206.667 1228.71 180.167 1213.71 163.5C1199.05 146.5 1176.05 138 1144.71 138C1126.05 138 1109.55 141 1095.21 147C1081.21 152.667 1068.88 161.5 1058.21 173.5H1057.21L1056.71 143H991.215ZM1341.52 389C1355.52 401.667 1378.19 408 1409.52 408C1420.52 408 1431.19 407.167 1441.52 405.5C1451.85 404.167 1462.69 401.833 1474.02 398.5L1468.52 344C1461.85 346.333 1454.52 348.167 1446.52 349.5C1438.85 350.833 1431.52 351.5 1424.52 351.5C1411.52 351.5 1402.52 348.5 1397.52 342.5C1392.52 336.167 1390.02 325.167 1390.02 309.5V196.5H1474.52V143H1390.02V58H1321.02V143H1264.52V196.5H1321.02V326.5C1321.02 355.5 1327.85 376.333 1341.52 389ZM1536.71 38V403H1606.71V38H1536.71ZM1681.19 386.5C1696.19 400.833 1716.52 408 1742.19 408C1759.19 408 1775.86 404.833 1792.19 398.5C1808.52 392.167 1821.36 383.667 1830.69 373H1831.19L1832.19 403H1897.69V239C1897.69 214 1894.19 194.167 1887.19 179.5C1880.19 164.5 1869.02 153.833 1853.69 147.5C1838.36 141.167 1817.36 138 1790.69 138C1769.69 138 1748.52 139.833 1727.19 143.5C1706.19 146.833 1687.02 151.667 1669.69 158L1678.19 211C1694.19 204.667 1711.19 199.833 1729.19 196.5C1747.19 192.833 1764.52 191 1781.19 191C1793.86 191 1803.52 192.333 1810.19 195C1817.19 197.333 1822.02 201.667 1824.69 208C1827.69 214.333 1829.19 223.333 1829.19 235H1794.69C1751.36 235 1717.86 243.167 1694.19 259.5C1670.86 275.833 1659.19 299 1659.19 329C1659.19 353 1666.52 372.167 1681.19 386.5ZM1798.69 350C1789.36 354 1778.86 356 1767.19 356C1753.52 356 1742.86 353 1735.19 347C1727.86 341 1724.19 332.667 1724.19 322C1724.19 307.667 1730.86 297.167 1744.19 290.5C1757.52 283.5 1777.69 280 1804.69 280H1829.19V309.5C1829.19 318.167 1826.36 326.167 1820.69 333.5C1815.36 340.5 1808.02 346 1798.69 350ZM2025.11 401.5L1982.11 508H2054.61L2197.61 143H2123.61L2060.11 335.5H2059.11L1996.11 143L1922.61 143.5L2025.11 401.5ZM2251.46 373C2276.79 396.333 2312.79 408 2359.46 408C2376.13 408 2392.63 406.5 2408.96 403.5C2425.63 400.833 2440.13 397 2452.46 392L2444.46 339.5C2432.13 344.167 2417.96 347.833 2401.96 350.5C2385.96 353.167 2370.79 354.5 2356.46 354.5C2331.13 354.5 2312.29 349 2299.96 338C2289.75 328.893 2283.77 315.56 2282.01 298H2464.46C2464.79 295 2464.96 290.5 2464.96 284.5C2465.29 278.5 2465.46 273.167 2465.46 268.5C2465.46 226.833 2454.79 194.667 2433.46 172C2412.46 149.333 2382.46 138 2343.46 138C2303.13 138 2271.46 150 2248.46 174C2225.46 198 2213.96 231 2213.96 273C2213.96 316.333 2226.46 349.667 2251.46 373ZM2282.19 250.5C2283.95 232.347 2288.87 218.18 2296.96 208C2307.29 194.667 2322.79 188 2343.46 188C2363.13 188 2377.63 194.333 2386.96 207C2394.74 217.188 2399.38 231.688 2400.91 250.5H2282.19ZM2583.09 143H2517.09V403H2586.59V283C2586.59 267 2591.59 252.5 2601.59 239.5C2611.59 226.167 2625.09 215.667 2642.09 208C2659.09 200.333 2677.93 196.5 2698.59 196.5V138C2683.59 138 2668.93 140.167 2654.59 144.5C2640.59 148.5 2627.59 154.5 2615.59 162.5C2603.93 170.167 2593.76 179.833 2585.09 191.5H2583.59L2583.09 143Z" fill="currentColor"></path><path d="M841.5 403H840.5V404H841.5V403ZM841.5 38V37H840.5V38H841.5ZM914.5 403V404H915.5V403H914.5ZM914.5 38H915.5V37H914.5V38ZM991.215 403H990.215V404H991.215V403ZM991.215 143V142H990.215V143H991.215ZM1060.21 403V404H1061.21V403H1060.21ZM1067.71 221.5L1066.87 220.961L1066.87 220.97L1067.71 221.5ZM1089.71 202L1090.16 202.894L1090.17 202.888L1090.19 202.881L1089.71 202ZM1156.71 209.5L1155.91 210.091L1155.91 210.098L1155.92 210.104L1156.71 209.5ZM1167.71 403H1166.71V404H1167.71V403ZM1236.21 403V404H1237.21V403H1236.21ZM1213.71 163.5L1212.96 164.153L1212.96 164.161L1212.97 164.169L1213.71 163.5ZM1095.21 147L1095.59 147.927L1095.6 147.922L1095.21 147ZM1058.21 173.5V174.5H1058.66L1058.96 174.164L1058.21 173.5ZM1057.21 173.5L1056.21 173.516L1056.23 174.5H1057.21V173.5ZM1056.71 143L1057.71 142.984L1057.7 142H1056.71V143ZM1341.52 389L1340.84 389.733L1340.85 389.742L1341.52 389ZM1441.52 405.5L1441.39 404.508L1441.38 404.51L1441.36 404.513L1441.52 405.5ZM1474.02 398.5L1474.3 399.459L1475.1 399.225L1475.01 398.4L1474.02 398.5ZM1468.52 344L1469.51 343.9L1469.39 342.637L1468.19 343.056L1468.52 344ZM1446.52 349.5L1446.36 348.514L1446.35 348.515L1446.52 349.5ZM1397.52 342.5L1396.73 343.12L1396.74 343.13L1396.75 343.14L1397.52 342.5ZM1390.02 196.5V195.5H1389.02V196.5H1390.02ZM1474.52 196.5V197.5H1475.52V196.5H1474.52ZM1474.52 143H1475.52V142H1474.52V143ZM1390.02 143H1389.02V144H1390.02V143ZM1390.02 58H1391.02V57H1390.02V58ZM1321.02 58V57H1320.02V58H1321.02ZM1321.02 143V144H1322.02V143H1321.02ZM1264.52 143V142H1263.52V143H1264.52ZM1264.52 196.5H1263.52V197.5H1264.52V196.5ZM1321.02 196.5H1322.02V195.5H1321.02V196.5ZM1536.71 403H1535.71V404H1536.71V403ZM1536.71 38V37H1535.71V38H1536.71ZM1606.71 403V404H1607.71V403H1606.71ZM1606.71 38H1607.71V37H1606.71V38ZM1681.19 386.5L1680.49 387.215L1680.5 387.223L1681.19 386.5ZM1830.69 373V372H1830.24L1829.94 372.341L1830.69 373ZM1831.19 373L1832.19 372.967L1832.16 372H1831.19V373ZM1832.19 403L1831.19 403.033L1831.22 404H1832.19V403ZM1897.69 403V404H1898.69V403H1897.69ZM1887.19 179.5L1886.29 179.923L1886.29 179.931L1887.19 179.5ZM1853.69 147.5L1854.07 146.576L1854.07 146.576L1853.69 147.5ZM1727.19 143.5L1727.35 144.488L1727.36 144.486L1727.19 143.5ZM1669.69 158L1669.35 157.061L1668.57 157.344L1668.7 158.158L1669.69 158ZM1678.19 211L1677.2 211.158L1677.4 212.388L1678.56 211.93L1678.19 211ZM1729.19 196.5L1729.37 197.483L1729.38 197.482L1729.39 197.48L1729.19 196.5ZM1810.19 195L1809.82 195.928L1809.85 195.939L1809.88 195.949L1810.19 195ZM1824.69 208L1823.77 208.388L1823.78 208.408L1823.79 208.428L1824.69 208ZM1829.19 235V236H1830.19V235H1829.19ZM1694.19 259.5L1693.62 258.677L1693.62 258.681L1694.19 259.5ZM1735.19 347L1734.56 347.774L1734.57 347.781L1734.58 347.788L1735.19 347ZM1744.19 290.5L1744.64 291.394L1744.65 291.39L1744.66 291.385L1744.19 290.5ZM1829.19 280H1830.19V279H1829.19V280ZM1820.69 333.5L1819.9 332.889L1819.9 332.894L1820.69 333.5ZM1982.11 508L1981.18 507.626L1980.62 509H1982.11V508ZM2025.11 401.5L2026.03 401.874L2026.18 401.503L2026.03 401.131L2025.11 401.5ZM2054.61 508V509H2055.29L2055.54 508.365L2054.61 508ZM2197.61 143L2198.54 143.365L2199.07 142H2197.61V143ZM2123.61 143V142H2122.88L2122.66 142.687L2123.61 143ZM2060.11 335.5V336.5H2060.83L2061.06 335.813L2060.11 335.5ZM2059.11 335.5L2058.16 335.811L2058.38 336.5H2059.11V335.5ZM1996.11 143L1997.06 142.689L1996.83 141.995L1996.1 142L1996.11 143ZM1922.61 143.5L1922.6 142.5L1921.14 142.51L1921.68 143.869L1922.61 143.5ZM2251.46 373L2250.78 373.731L2250.78 373.736L2251.46 373ZM2408.96 403.5L2408.8 402.513L2408.79 402.514L2408.78 402.516L2408.96 403.5ZM2452.46 392L2452.84 392.927L2453.57 392.63L2453.45 391.849L2452.46 392ZM2444.46 339.5L2445.45 339.349L2445.26 338.127L2444.11 338.565L2444.46 339.5ZM2299.96 338L2299.3 338.746L2299.3 338.746L2299.96 338ZM2282.01 298V297H2280.9L2281.01 298.1L2282.01 298ZM2464.46 298V299H2465.36L2465.45 298.11L2464.46 298ZM2464.96 284.5L2463.96 284.445L2463.96 284.472V284.5H2464.96ZM2433.46 172L2432.73 172.68L2432.73 172.685L2433.46 172ZM2296.96 208L2297.74 208.622L2297.75 208.613L2296.96 208ZM2282.19 250.5L2281.19 250.404L2281.09 251.5H2282.19V250.5ZM2386.96 207L2386.16 207.593L2386.16 207.6L2386.17 207.607L2386.96 207ZM2400.91 250.5V251.5H2401.99L2401.9 250.419L2400.91 250.5ZM2517.09 143V142H2516.09V143H2517.09ZM2583.09 143L2584.09 142.99L2584.08 142H2583.09V143ZM2517.09 403H2516.09V404H2517.09V403ZM2586.59 403V404H2587.59V403H2586.59ZM2601.59 239.5L2602.39 240.11L2602.39 240.1L2601.59 239.5ZM2642.09 208L2641.68 207.088L2641.68 207.088L2642.09 208ZM2698.59 196.5V197.5H2699.59V196.5H2698.59ZM2698.59 138H2699.59V137H2698.59V138ZM2654.59 144.5L2654.87 145.462L2654.88 145.459L2654.88 145.457L2654.59 144.5ZM2615.59 162.5L2616.14 163.336L2616.15 163.332L2615.59 162.5ZM2585.09 191.5V192.5H2585.6L2585.9 192.096L2585.09 191.5ZM2583.59 191.5L2582.59 191.51L2582.6 192.5H2583.59V191.5ZM50 0C24.5949 0 4 20.5949 4 46H6C6 21.6995 25.6995 2 50 2V0ZM295 0H50V2H295V0ZM341 46C341 20.5949 320.405 0 295 0V2C319.301 2 339 21.6995 339 46H341ZM295 92C320.405 92 341 71.4051 341 46H339C339 70.3005 319.301 90 295 90V92ZM50 92H295V90H50V92ZM4 46C4 71.4051 24.5949 92 50 92V90C25.6995 90 6 70.3005 6 46H4ZM6 221C6 196.699 25.6995 177 50 177V175C24.5949 175 4 195.595 4 221H6ZM50 265C25.6995 265 6 245.301 6 221H4C4 246.405 24.5949 267 50 267V265ZM430 265H50V267H430V265ZM474 221C474 245.301 454.301 265 430 265V267C455.405 267 476 246.405 476 221H474ZM430 177C454.301 177 474 196.699 474 221H476C476 195.595 455.405 175 430 175V177ZM50 177H430V175H50V177ZM6 394C6 369.699 25.6995 350 50 350V348C24.5949 348 4 368.595 4 394H6ZM50 438C25.6995 438 6 418.3 6 394H4C4 419.405 24.5949 440 50 440V438ZM230 438H50V440H230V438ZM274 394C274 418.3 254.301 438 230 438V440C255.405 440 276 419.405 276 394H274ZM230 350C254.301 350 274 369.699 274 394H276C276 368.595 255.405 348 230 348V350ZM50 350H230V348H50V350ZM842.5 403V38H840.5V403H842.5ZM914.5 402H841.5V404H914.5V402ZM913.5 38V403H915.5V38H913.5ZM841.5 39H914.5V37H841.5V39ZM992.215 403V143H990.215V403H992.215ZM1060.21 402H991.215V404H1060.21V402ZM1059.21 250V403H1061.21V250H1059.21ZM1066.87 220.97C1061.75 229.154 1059.21 238.844 1059.21 250H1061.21C1061.21 239.156 1063.68 229.846 1068.56 222.03L1066.87 220.97ZM1089.27 201.106C1079.78 205.848 1072.31 212.467 1066.87 220.961L1068.56 222.039C1073.79 213.866 1080.98 207.485 1090.16 202.894L1089.27 201.106ZM1121.71 193.5C1109.57 193.5 1098.74 196.031 1089.24 201.119L1090.19 202.881C1099.36 197.969 1109.86 195.5 1121.71 195.5V193.5ZM1157.52 208.909C1149.95 198.579 1137.93 193.5 1121.71 193.5V195.5C1137.5 195.5 1148.82 200.421 1155.91 210.091L1157.52 208.909ZM1168.71 256.5C1168.71 234.767 1165.05 218.827 1157.51 208.896L1155.92 210.104C1163.05 219.506 1166.71 234.9 1166.71 256.5H1168.71ZM1168.71 403V256.5H1166.71V403H1168.71ZM1236.21 402H1167.71V404H1236.21V402ZM1235.21 243V403H1237.21V243H1235.21ZM1212.97 164.169C1227.73 180.567 1235.21 206.769 1235.21 243H1237.21C1237.21 206.564 1229.7 179.766 1214.46 162.831L1212.97 164.169ZM1144.71 139C1175.88 139 1198.55 147.45 1212.96 164.153L1214.47 162.847C1199.55 145.55 1176.22 137 1144.71 137V139ZM1095.6 147.922C1109.79 141.983 1126.15 139 1144.71 139V137C1125.94 137 1109.31 140.017 1094.83 146.078L1095.6 147.922ZM1058.96 174.164C1069.53 162.272 1081.74 153.532 1095.59 147.927L1094.84 146.073C1080.69 151.801 1068.23 160.728 1057.47 172.836L1058.96 174.164ZM1057.21 174.5H1058.21V172.5H1057.21V174.5ZM1055.71 143.016L1056.21 173.516L1058.21 173.484L1057.71 142.984L1055.71 143.016ZM991.215 144H1056.71V142H991.215V144ZM1409.52 407C1378.28 407 1355.92 400.679 1342.19 388.258L1340.85 389.742C1355.12 402.654 1378.09 409 1409.52 409V407ZM1441.36 404.513C1431.08 406.171 1420.47 407 1409.52 407V409C1420.57 409 1431.29 408.163 1441.68 406.487L1441.36 404.513ZM1473.74 397.541C1462.45 400.861 1451.67 403.182 1441.39 404.508L1441.65 406.492C1452.04 405.151 1462.92 402.806 1474.3 399.459L1473.74 397.541ZM1467.52 344.1L1473.02 398.6L1475.01 398.4L1469.51 343.9L1467.52 344.1ZM1446.68 350.486C1454.73 349.145 1462.12 347.299 1468.85 344.944L1468.19 343.056C1461.58 345.368 1454.31 347.188 1446.36 348.514L1446.68 350.486ZM1424.52 352.5C1431.58 352.5 1438.97 351.827 1446.69 350.485L1446.35 348.515C1438.73 349.839 1431.46 350.5 1424.52 350.5V352.5ZM1396.75 343.14C1402.04 349.483 1411.41 352.5 1424.52 352.5V350.5C1411.62 350.5 1403 347.517 1398.29 341.86L1396.75 343.14ZM1389.02 309.5C1389.02 325.211 1391.51 336.507 1396.73 343.12L1398.3 341.88C1393.52 335.826 1391.02 325.123 1391.02 309.5H1389.02ZM1389.02 196.5V309.5H1391.02V196.5H1389.02ZM1474.52 195.5H1390.02V197.5H1474.52V195.5ZM1473.52 143V196.5H1475.52V143H1473.52ZM1390.02 144H1474.52V142H1390.02V144ZM1389.02 58V143H1391.02V58H1389.02ZM1321.02 59H1390.02V57H1321.02V59ZM1322.02 143V58H1320.02V143H1322.02ZM1264.52 144H1321.02V142H1264.52V144ZM1265.52 196.5V143H1263.52V196.5H1265.52ZM1321.02 195.5H1264.52V197.5H1321.02V195.5ZM1322.02 326.5V196.5H1320.02V326.5H1322.02ZM1342.2 388.267C1328.83 375.873 1322.02 355.374 1322.02 326.5H1320.02C1320.02 355.626 1326.88 376.794 1340.84 389.733L1342.2 388.267ZM1537.71 403V38H1535.71V403H1537.71ZM1606.71 402H1536.71V404H1606.71V402ZM1605.71 38V403H1607.71V38H1605.71ZM1536.71 39H1606.71V37H1536.71V39ZM1742.19 407C1716.72 407 1696.65 399.893 1681.88 385.777L1680.5 387.223C1695.73 401.774 1716.33 409 1742.19 409V407ZM1791.83 397.568C1775.61 403.858 1759.06 407 1742.19 407V409C1759.32 409 1776.11 405.809 1792.55 399.432L1791.83 397.568ZM1829.94 372.341C1820.73 382.861 1808.05 391.279 1791.83 397.568L1792.55 399.432C1809 393.054 1821.98 384.472 1831.44 373.659L1829.94 372.341ZM1831.19 372H1830.69V374H1831.19V372ZM1833.19 402.967L1832.19 372.967L1830.19 373.033L1831.19 403.033L1833.19 402.967ZM1897.69 402H1832.19V404H1897.69V402ZM1896.69 239V403H1898.69V239H1896.69ZM1886.29 179.931C1893.2 194.41 1896.69 214.077 1896.69 239H1898.69C1898.69 213.923 1895.18 193.923 1888.09 179.069L1886.29 179.931ZM1853.31 148.424C1868.41 154.662 1879.39 165.15 1886.29 179.923L1888.1 179.077C1880.99 163.85 1869.64 153.004 1854.07 146.576L1853.31 148.424ZM1790.69 139C1817.3 139 1838.15 142.162 1853.31 148.424L1854.07 146.576C1838.57 140.171 1817.42 137 1790.69 137V139ZM1727.36 144.486C1748.64 140.828 1769.75 139 1790.69 139V137C1769.63 137 1748.41 138.838 1727.02 142.514L1727.36 144.486ZM1670.03 158.939C1687.3 152.631 1706.4 147.812 1727.35 144.488L1727.03 142.512C1705.98 145.854 1686.75 150.702 1669.35 157.061L1670.03 158.939ZM1679.18 210.842L1670.68 157.842L1668.7 158.158L1677.2 211.158L1679.18 210.842ZM1729.01 195.517C1710.95 198.861 1693.89 203.712 1677.82 210.07L1678.56 211.93C1694.5 205.622 1711.43 200.806 1729.37 197.483L1729.01 195.517ZM1781.19 190C1764.45 190 1747.05 191.841 1728.99 195.52L1729.39 197.48C1747.33 193.825 1764.6 192 1781.19 192V190ZM1810.56 194.072C1803.72 191.334 1793.9 190 1781.19 190V192C1793.81 192 1803.33 193.332 1809.82 195.928L1810.56 194.072ZM1825.61 207.612C1822.83 200.992 1817.76 196.468 1810.51 194.051L1809.88 195.949C1816.62 198.199 1821.22 202.341 1823.77 208.388L1825.61 207.612ZM1830.19 235C1830.19 223.271 1828.69 214.1 1825.6 207.572L1823.79 208.428C1826.7 214.567 1828.19 223.395 1828.19 235H1830.19ZM1794.69 236H1829.19V234H1794.69V236ZM1694.76 260.323C1718.19 244.15 1751.46 236 1794.69 236V234C1751.25 234 1717.52 242.184 1693.62 258.677L1694.76 260.323ZM1660.19 329C1660.19 299.306 1671.72 276.454 1694.76 260.319L1693.62 258.681C1670 275.213 1658.19 298.694 1658.19 329H1660.19ZM1681.89 385.785C1667.45 371.672 1660.19 352.78 1660.19 329H1658.19C1658.19 353.22 1665.6 372.662 1680.49 387.215L1681.89 385.785ZM1767.19 357C1778.97 357 1789.61 354.98 1799.09 350.919L1798.3 349.081C1789.11 353.02 1778.74 355 1767.19 355V357ZM1734.58 347.788C1742.48 353.971 1753.39 357 1767.19 357V355C1753.66 355 1743.24 352.029 1735.81 346.212L1734.58 347.788ZM1723.19 322C1723.19 332.924 1726.96 341.559 1734.56 347.774L1735.82 346.226C1728.75 340.441 1725.19 332.409 1725.19 322H1723.19ZM1743.74 289.606C1736.95 293.004 1731.8 297.408 1728.35 302.839C1724.9 308.273 1723.19 314.673 1723.19 322H1725.19C1725.19 314.994 1726.82 308.977 1730.04 303.911C1733.25 298.842 1738.1 294.663 1744.64 291.394L1743.74 289.606ZM1804.69 279C1777.64 279 1757.28 282.501 1743.73 289.615L1744.66 291.385C1757.77 284.499 1777.74 281 1804.69 281V279ZM1829.19 279H1804.69V281H1829.19V279ZM1830.19 309.5V280H1828.19V309.5H1830.19ZM1821.48 334.111C1827.27 326.616 1830.19 318.404 1830.19 309.5H1828.19C1828.19 317.93 1825.44 325.717 1819.9 332.889L1821.48 334.111ZM1799.09 350.919C1808.55 346.862 1816.03 341.263 1821.49 334.106L1819.9 332.894C1814.68 339.737 1807.5 345.138 1798.3 349.081L1799.09 350.919ZM1983.03 508.374L2026.03 401.874L2024.18 401.126L1981.18 507.626L1983.03 508.374ZM2054.61 507H1982.11V509H2054.61V507ZM2196.67 142.635L2053.67 507.635L2055.54 508.365L2198.54 143.365L2196.67 142.635ZM2123.61 144H2197.61V142H2123.61V144ZM2061.06 335.813L2124.56 143.313L2122.66 142.687L2059.16 335.187L2061.06 335.813ZM2059.11 336.5H2060.11V334.5H2059.11V336.5ZM1995.16 143.311L2058.16 335.811L2060.06 335.189L1997.06 142.689L1995.16 143.311ZM1922.61 144.5L1996.11 144L1996.1 142L1922.6 142.5L1922.61 144.5ZM2026.03 401.131L1923.53 143.131L1921.68 143.869L2024.18 401.869L2026.03 401.131ZM2359.46 407C2312.95 407 2277.23 395.375 2252.14 372.264L2250.78 373.736C2276.36 397.292 2312.63 409 2359.46 409V407ZM2408.78 402.516C2392.51 405.505 2376.07 407 2359.46 407V409C2376.19 409 2392.75 407.495 2409.14 404.484L2408.78 402.516ZM2452.09 391.073C2439.84 396.038 2425.41 399.855 2408.8 402.513L2409.12 404.487C2425.84 401.812 2440.42 397.962 2452.84 392.927L2452.09 391.073ZM2443.47 339.651L2451.47 392.151L2453.45 391.849L2445.45 339.349L2443.47 339.651ZM2402.13 351.486C2418.18 348.811 2432.41 345.13 2444.81 340.435L2444.11 338.565C2431.85 343.204 2417.75 346.855 2401.8 349.514L2402.13 351.486ZM2356.46 355.5C2370.86 355.5 2386.08 354.161 2402.13 351.486L2401.8 349.514C2385.84 352.172 2370.73 353.5 2356.46 353.5V355.5ZM2299.3 338.746C2311.89 349.978 2331.01 355.5 2356.46 355.5V353.5C2331.25 353.5 2312.7 348.022 2300.63 337.254L2299.3 338.746ZM2281.01 298.1C2282.79 315.834 2288.85 329.429 2299.3 338.746L2300.63 337.254C2290.65 328.358 2284.74 315.286 2283 297.9L2281.01 298.1ZM2464.46 297H2282.01V299H2464.46V297ZM2463.96 284.5C2463.96 290.492 2463.79 294.947 2463.47 297.89L2465.45 298.11C2465.79 295.053 2465.96 290.508 2465.96 284.5H2463.96ZM2464.46 268.5C2464.46 273.144 2464.29 278.458 2463.96 284.445L2465.96 284.555C2466.29 278.542 2466.46 273.19 2466.46 268.5H2464.46ZM2432.73 172.685C2453.84 195.111 2464.46 227 2464.46 268.5H2466.46C2466.46 226.667 2455.75 194.222 2434.19 171.315L2432.73 172.685ZM2343.46 139C2382.26 139 2411.96 150.268 2432.73 172.68L2434.19 171.32C2412.96 148.399 2382.66 137 2343.46 137V139ZM2249.18 174.692C2271.96 150.93 2303.34 139 2343.46 139V137C2302.92 137 2270.97 149.07 2247.74 173.308L2249.18 174.692ZM2214.96 273C2214.96 231.187 2226.41 198.46 2249.18 174.692L2247.74 173.308C2224.52 197.54 2212.96 230.813 2212.96 273H2214.96ZM2252.14 372.269C2227.4 349.172 2214.96 316.135 2214.96 273H2212.96C2212.96 316.532 2225.52 350.161 2250.78 373.731L2252.14 372.269ZM2296.18 207.378C2287.93 217.759 2282.96 232.133 2281.19 250.404L2283.19 250.596C2284.93 232.561 2289.81 218.602 2297.74 208.622L2296.18 207.378ZM2343.46 187C2322.56 187 2306.74 193.754 2296.17 207.387L2297.75 208.613C2307.85 195.579 2323.03 189 2343.46 189V187ZM2387.77 206.407C2378.2 193.421 2363.36 187 2343.46 187V189C2362.9 189 2377.06 195.246 2386.16 207.593L2387.77 206.407ZM2401.9 250.419C2400.37 231.501 2395.69 216.789 2387.76 206.393L2386.17 207.607C2393.78 217.586 2398.4 231.874 2399.91 250.581L2401.9 250.419ZM2282.19 251.5H2400.91V249.5H2282.19V251.5ZM2517.09 144H2583.09V142H2517.09V144ZM2518.09 403V143H2516.09V403H2518.09ZM2586.59 402H2517.09V404H2586.59V402ZM2585.59 283V403H2587.59V283H2585.59ZM2600.8 238.89C2590.67 252.06 2585.59 266.774 2585.59 283H2587.59C2587.59 267.226 2592.52 252.94 2602.39 240.11L2600.8 238.89ZM2641.68 207.088C2624.55 214.816 2610.91 225.416 2600.79 238.9L2602.39 240.1C2612.28 226.917 2625.64 216.517 2642.5 208.912L2641.68 207.088ZM2698.59 195.5C2677.8 195.5 2658.83 199.357 2641.68 207.088L2642.5 208.912C2659.36 201.309 2678.05 197.5 2698.59 197.5V195.5ZM2697.59 138V196.5H2699.59V138H2697.59ZM2654.88 145.457C2669.12 141.152 2683.69 139 2698.59 139V137C2683.5 137 2668.73 139.181 2654.3 143.543L2654.88 145.457ZM2616.15 163.332C2628.06 155.39 2640.97 149.433 2654.87 145.462L2654.32 143.538C2640.22 147.567 2627.13 153.61 2615.04 161.668L2616.15 163.332ZM2585.9 192.096C2594.5 180.52 2604.58 170.935 2616.14 163.336L2615.04 161.664C2603.28 169.398 2593.02 179.147 2584.29 190.904L2585.9 192.096ZM2583.59 192.5H2585.09V190.5H2583.59V192.5ZM2582.09 143.01L2582.59 191.51L2584.59 191.49L2584.09 142.99L2582.09 143.01Z" fill="currentColor"></path></svg></a><div class="absolute z-100 min-w-full left-0 top-[calc(100%+0.5rem)]" role="region" aria-labelledby="dropdown-trigger-navbar-logo" id="dropdown-panel-navbar-logo"><div role="none" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] delay-0 group-hover/dropdown:delay-600"><div style="min-height:0px" class="overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] delay-0 group-hover/dropdown:delay-600"><div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 px-3 py-2 gap-3 border border-text/5"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-vector-square flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="M19.5 7a24 24 0 0 1 0 10"></path><path d="M4.5 7a24 24 0 0 0 0 10"></path><path d="M7 19.5a24 24 0 0 0 10 0"></path><path d="M7 4.5a24 24 0 0 1 10 0"></path><rect x="17" y="17" width="5" height="5" rx="1"></rect><rect x="17" y="2" width="5" height="5" rx="1"></rect><rect x="2" y="17" width="5" height="5" rx="1"></rect><rect x="2" y="2" width="5" height="5" rx="1"></rect></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Scarica SVG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-image flex-none shrink-0 size-4 mr-3" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Scarica PNG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-vector-square flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="M19.5 7a24 24 0 0 1 0 10"></path><path d="M4.5 7a24 24 0 0 0 0 10"></path><path d="M7 19.5a24 24 0 0 0 10 0"></path><path d="M7 4.5a24 24 0 0 1 10 0"></path><rect x="17" y="17" width="5" height="5" rx="1"></rect><rect x="17" y="2" width="5" height="5" rx="1"></rect><rect x="2" y="17" width="5" height="5" rx="1"></rect><rect x="2" y="2" width="5" height="5" rx="1"></rect></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Copia come SVG</span></span></button><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-neutral ring-neutral-500/5 *:text-text-light rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-image flex-none shrink-0 size-4 mr-3" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="ml-2 flex w-full text-text">Copia come immagine</span></span></button></div></div></div></div></div><div class="relative z-0 flex size-full flex-row items-center border-text ml-[2vw] h-auto gap-3 overflow-x-auto text-neutral tracking-wide lg:ml-[5vw] lg:gap-3 xl:ml-[10vw] xl:gap-6" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><a aria-label="Vai alla pagina iniziale" aria-current="page" id="home" role="tab" aria-selected="false" data-active="false" tabindex="-1" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0 active" href="/it" target="_self" data-status="active">Home</a><a aria-label="Vai al Playground" id="playground" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="/it/playground" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Ambiente di test</a><a aria-label="Visualizza i progetti Intlayer" id="showcase" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="https://showcase.intlayer.org/it" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Vetrina</a><a aria-label="Vai alla dashboard" id="dashboard" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="https://app.intlayer.org/it" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">App</a><a aria-label="Vai alla pagina di documentazione" aria-current="page" id="doc" role="tab" aria-selected="true" data-active="true" tabindex="0" href="/it/doc/get-started" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Doc</a><a aria-label="Vai al blog" id="blog" role="tab" aria-selected="false" data-active="false" tabindex="-1" href="/it/blog" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex text-nowrap px-4 py-0.5 text-sm aria-[current]:bg-current/0">Blog</a></div><div class="mr-4 flex items-center justify-end gap-2 md:gap-4"><div class="flex rounded-xl text-text transition-colors"><div class="group/dropdown relative flex" aria-label="DropDown locale-switcher" id="dropdown-container-locale-switcher"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-7 px-3 text-xs max-md:py-1 text-text ring-text/20 *:text-text-opposite rounded-[4rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[5rem] rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center w-full cursor-pointer group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4 p-0!" aria-label="Cambia lingua" aria-haspopup="true" aria-busy="false" aria-disabled="false" aria-controls="dropdown-panel-locale-switcher" id="dropdown-trigger-locale-switcher"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><div class="flex w-full items-center justify-between"><div class="text-nowrap px-2 text-base">IT</div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-vertical w-5 self-center" aria-hidden="true"><path d="M12 2v20"></path><path d="m8 18 4 4 4-4"></path><path d="m8 6 4-4 4 4"></path></svg></div></span></button><div class="absolute z-100 min-w-full right-0 top-[calc(100%+0.5rem)]" role="region" aria-labelledby="dropdown-trigger-locale-switcher" id="dropdown-panel-locale-switcher"><div role="none" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"><div style="min-height:0px" class="overflow-x-visible group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr] group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"><div class="flex flex-col text-text backdrop-blur rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl bg-card/95 p-0 divide-y divide-dashed divide-text/20 gap-0 max-h-[80vh] min-w-28 border border-text/5"><div class="p-3"><input class="w-full select-text resize-none text-base shadow-none outline-none transition-all duration-300 md:text-sm ring-0 disabled:opacity-50 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text bg-neutral-50 dark:bg-neutral-950 ring-text/20 disabled:ring-0 hover:ring-3 focus-within:ring-4 focus-visible:outline-none focus-visible:ring-4 [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error px-2 py-3 md:py-2" type="search" aria-label="Ricerca lingua" placeholder="Cerca una lingua"/></div><ul class="divide-y divide-dashed divide-text/20 overflow-y-auto p-1" aria-label="Elenco lingue"><li class="py-1 pr-3"><a aria-label="Passa a Inglese" href="/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="en">English</span><span class="text-neutral text-xs">Inglese</span></div><span class="text-nowrap text-neutral text-sm">EN</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Russo" href="/ru/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ru">Русский</span><span class="text-neutral text-xs">Russo</span></div><span class="text-nowrap text-neutral text-sm">RU</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Giapponese" href="/ja/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ja">日本語</span><span class="text-neutral text-xs">Giapponese</span></div><span class="text-nowrap text-neutral text-sm">JA</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Francese" href="/fr/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="fr">français</span><span class="text-neutral text-xs">Francese</span></div><span class="text-nowrap text-neutral text-sm">FR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Coreano" href="/ko/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="ko">한국어</span><span class="text-neutral text-xs">Coreano</span></div><span class="text-nowrap text-neutral text-sm">KO</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Cinese" href="/zh/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="zh">中文</span><span class="text-neutral text-xs">Cinese</span></div><span class="text-nowrap text-neutral text-sm">ZH</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Spagnolo" href="/es/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="es">Español</span><span class="text-neutral text-xs">Spagnolo</span></div><span class="text-nowrap text-neutral text-sm">ES</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Tedesco" href="/de/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="de">Deutsch</span><span class="text-neutral text-xs">Tedesco</span></div><span class="text-nowrap text-neutral text-sm">DE</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Arabo" href="/ar/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="rtl" lang="ar">العربية</span><span class="text-neutral text-xs">Arabo</span></div><span class="text-nowrap text-neutral text-sm">AR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Italiano" aria-current="page" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text active" href="/it/doc/environment/vite-and-svelte" target="_self" data-status="active"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="it">Italiano</span><span class="text-neutral text-xs">Italiano</span></div><span class="text-nowrap text-neutral text-sm">IT</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Inglese britannico" href="/en-GB/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="en-GB">British English</span><span class="text-neutral text-xs">Inglese britannico</span></div><span class="text-nowrap text-neutral text-sm">EN-GB</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Portoghese" href="/pt/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="pt">Português</span><span class="text-neutral text-xs">Portoghese</span></div><span class="text-nowrap text-neutral text-sm">PT</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Hindi" href="/hi/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="hi">हिन्दी</span><span class="text-neutral text-xs">Hindi</span></div><span class="text-nowrap text-neutral text-sm">HI</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Turco" href="/tr/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="tr">Türkçe</span><span class="text-neutral text-xs">Turco</span></div><span class="text-nowrap text-neutral text-sm">TR</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Polacco" href="/pl/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="pl">polski</span><span class="text-neutral text-xs">Polacco</span></div><span class="text-nowrap text-neutral text-sm">PL</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Indonesiano" href="/id/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="id">Indonesia</span><span class="text-neutral text-xs">Indonesiano</span></div><span class="text-nowrap text-neutral text-sm">ID</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Vietnamita" href="/vi/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="vi">Tiếng Việt</span><span class="text-neutral text-xs">Vietnamita</span></div><span class="text-nowrap text-neutral text-sm">VI</span></div></a></li><li class="py-1 pr-3"><a aria-label="Passa a Ucraino" href="/uk/doc/environment/vite-and-svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text"><div class="flex flex-row items-center justify-between gap-3 px-2 py-1"><div class="flex flex-col text-nowrap"><span dir="ltr" lang="uk">Українська</span><span class="text-neutral text-xs">Ucraino</span></div><span class="text-nowrap text-neutral text-sm">UK</span></div></a></li></ul></div></div></div></div></div></div><!--$--><!--/$--><a aria-label="Vai al server di Discord" rel="noopener noreferrer nofollow" href="https://discord.gg/7uxamYVeCk" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative min-h-8 flex-row justify-center border-current text-center font-medium text-sm ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 max-md:py-2 text-text ring-text/20 flex cursor-pointer items-center gap-2 rounded-full border-[1.3px] p-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="800px" viewBox="0 0 71 80" fill="none" role="img" aria-label="Discord logo" class="aspect-square h-auto"><path d="M60.1045 13.8978C55.5792 11.8214 50.7265 10.2916 45.6527 9.41542C45.5603 9.39851 45.468 9.44077 45.4204 9.52529C44.7963 10.6353 44.105 12.0834 43.6209 13.2216C38.1637 12.4046 32.7345 12.4046 27.3892 13.2216C26.905 12.0581 26.1886 10.6353 25.5617 9.52529C25.5141 9.44359 25.4218 9.40133 25.3294 9.41542C20.2584 10.2888 15.4057 11.8186 10.8776 13.8978C10.8384 13.9147 10.8048 13.9429 10.7825 13.9795C1.57795 27.7309 -0.943561 41.1443 0.293408 54.3914C0.299005 54.4562 0.335386 54.5182 0.385761 54.5576C6.45866 59.0174 12.3413 61.7249 18.1147 63.5195C18.2071 63.5477 18.305 63.5139 18.3638 63.4378C19.7295 61.5728 20.9469 59.6063 21.9907 57.5383C22.0523 57.4172 21.9935 57.2735 21.8676 57.2256C19.9366 56.4931 18.0979 55.6 16.3292 54.5858C16.1893 54.5041 16.1781 54.304 16.3068 54.2082C16.679 53.9293 17.0513 53.6391 17.4067 53.3461C17.471 53.2926 17.5606 53.2813 17.6362 53.3151C29.2558 58.6202 41.8354 58.6202 53.3179 53.3151C53.3935 53.2785 53.4831 53.2898 53.5502 53.3433C53.9057 53.6363 54.2779 53.9293 54.6529 54.2082C54.7816 54.304 54.7732 54.5041 54.6333 54.5858C52.8646 55.6197 51.0259 56.4931 49.0921 57.2228C48.9662 57.2707 48.9102 57.4172 48.9718 57.5383C50.038 59.6034 51.2554 61.5699 52.5959 63.435C52.6519 63.5139 52.7526 63.5477 52.845 63.5195C58.6464 61.7249 64.529 59.0174 70.6019 54.5576C70.6551 54.5182 70.6887 54.459 70.6943 54.3942C72.1747 39.0791 68.2147 25.7757 60.1968 13.9823C60.1772 13.9429 60.1437 13.9147 60.1045 13.8978ZM23.7259 46.3253C20.2276 46.3253 17.3451 43.1136 17.3451 39.1693C17.3451 35.225 20.1717 32.0133 23.7259 32.0133C27.308 32.0133 30.1626 35.2532 30.1066 39.1693C30.1066 43.1136 27.28 46.3253 23.7259 46.3253ZM47.3178 46.3253C43.8196 46.3253 40.9371 43.1136 40.9371 39.1693C40.9371 35.225 43.7636 32.0133 47.3178 32.0133C50.9 32.0133 53.7545 35.2532 53.6986 39.1693C53.6986 43.1136 50.9 46.3253 47.3178 46.3253Z" fill="currentColor"></path></svg></a><a aria-label="Vai al repository di Github" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative min-h-8 flex-row justify-center bg-current text-center font-medium text-sm ring-0 *:text-text-opposite hover:bg-current/90 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 max-md:py-2 rounded-full text-text ring-text/20 group/github flex cursor-pointer items-center gap-1 p-0.5"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="25"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="18" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star mr-1 group-hover/github:fill-text-opposite" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></a></div></nav><main class="relative flex w-full flex-1 flex-col"><div class="flex w-full bg-card max-md:flex-col md:h-[calc(100dvh-3.5rem)]"><aside aria-label="Navigazione della documentazione" class="z-40 flex-none"><div class="fixed top-18 left-2 z-50 flex-col gap-1 md:hidden hidden"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-search-trigger" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Clicca per cercare" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search flex-none shrink-0 size-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Clicca per cercare</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-search-trigger" id="unrollable-panel-search-trigger"><kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">/</span></span></kbd></div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center rotate-180" aria-label="Comprimi" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="doc-nav-content"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left-to-line flex-none shrink-0 size-4" aria-hidden="true"><path d="M3 19V5"></path><path d="m13 6-6 6 6 6"></path><path d="M7 12h14"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Comprimi</span></button></div><div class="top-0 left-0 z-40 flex h-full justify-end max-md:fixed max-md:transition-transform max-md:duration-300 max-md:ease-in-out max-md:translate-x-0" role="region"><div class="flex flex-col text-text backdrop-blur rounded-none bg-card/95 p-0 border-text gap-0 h-full sticky top-15 rounded-br-2xl"><div class="relative h-full max-w-80"><div class="flex flex-col text-text backdrop-blur rounded-none bg-card/95 p-0 border-text gap-0 sticky top-[3.6rem] z-10 m-auto pt-4"><div class="relative m-auto flex w-full flex-row items-center justify-center gap-2 px-2"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-doc-nav-framework-filter" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Filtra per framework" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-funnel flex-none shrink-0 size-4" aria-hidden="true"><path d="M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Filtra per framework</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text gap-0 absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 min-w-50 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-doc-nav-framework-filter" id="unrollable-panel-doc-nav-framework-filter">Filtra la documentazione per framework</div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text w-full select-text resize-none rounded-2xl text-base shadow-none outline-none supports-[corner-shape:squircle]:rounded-4xl transition-shadow duration-100 md:text-sm ring-0 disabled:opacity-50 text-text bg-neutral-50 dark:bg-neutral-950 ring-neutral-100 dark:ring-neutral-700 hover:ring-3 aria-selected:ring-4 focus-visible:ring-3 disabled:ring-0 focus-visible:outline-none [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error justify-center text-center mb-1 pr-1.5" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search flex-none shrink-0 size-4 mr-3" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="flex w-full items-center gap-2">Cerca<kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs ml-auto"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">/</span></span></kbd></span></span></button><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-doc-nav-collapse" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center transition-transform" aria-label="Comprimi" aria-expanded="true" aria-busy="false" aria-disabled="false" aria-controls="doc-nav-content"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left-to-line flex-none shrink-0 size-4" aria-hidden="true"><path d="M3 19V5"></path><path d="m13 6-6 6 6 6"></path><path d="M7 12h14"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Comprimi</span></button><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-doc-nav-collapse" id="unrollable-panel-doc-nav-collapse"><kbd class="inline-flex items-center justify-center gap-0.5 p-0.5 rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl font-medium font-sans border-1 border-neutral/20 text-neutral text-xs"><span class="inline-flex items-center"><span class="min-w-4 px-0.5 text-center">Alt</span></span><span class="inline-flex items-center"><span class="text-neutral/50">+</span><span class="min-w-4 px-0.5 text-center">←</span></span></kbd></div></div><div class="absolute bottom-0 left-0 h-8 w-full translate-y-full bg-linear-to-b from-card/90 backdrop-blur"></div></div></div><div id="doc-nav-content" class="sticky top-28 pt-0"><div class="relative grid h-full overflow-x-hidden overflow-y-hidden transition-all duration-500 ease-in-out grid-cols-[1fr]" aria-hidden="false"><div style="min-width:0px" class=""><div class="relative overflow-hidden"><nav aria-label="Sezioni della documentazione" class="m-auto flex max-h-[calc(100vh-8.2rem)] min-w-40 max-w-xl flex-col gap-5 overflow-auto px-3 pt-8 pb-20"><div><a aria-label="why" href="/it/doc/why" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Perché Intlayer?</span></a></div><div><a aria-label="get-started" href="/it/doc/get-started" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Iniziare</span></a></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="concept"><span class="flex items-center gap-1.5 opacity-60">Concetto</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="how-works-intlayer" href="/it/doc/concept/how-works-intlayer" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Come funziona Intlayer</span></a></li><li><a aria-label="configuration" href="/it/doc/concept/configuration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Configurazione</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_e6qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="cli" href="/it/doc/concept/cli" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">CLI</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_e6qb9bcq_-accordion-content" aria-labelledby="_R_e6qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="test" href="/it/doc/concept/cli/test" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Test</span></a><a aria-label="fill" href="/it/doc/concept/cli/fill" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Fill</span></a><a aria-label="build" href="/it/doc/concept/cli/build" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Build</span></a><a aria-label="watch" href="/it/doc/concept/cli/watch" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Watch</span></a><a aria-label="extract" href="/it/doc/concept/cli/extract" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Extract</span></a><a aria-label="login" href="/it/doc/concept/cli/login" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Login</span></a><a aria-label="push" href="/it/doc/concept/cli/push" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Push</span></a><a aria-label="pull" href="/it/doc/concept/cli/pull" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Pull</span></a><a aria-label="configuration" href="/it/doc/concept/cli/configuration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Configuration</span></a><a aria-label="list" href="/it/doc/concept/cli/list" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">List</span></a><a aria-label="version" href="/it/doc/concept/cli/version" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Version</span></a><a aria-label="editor" href="/it/doc/concept/cli/editor" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Editor</span></a><a aria-label="live" href="/it/doc/concept/cli/live" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Live</span></a><a aria-label="debug" href="/it/doc/concept/cli/debug" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Debug</span></a><a aria-label="doc-review" href="/it/doc/concept/cli/doc-review" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Doc Review</span></a><a aria-label="doc-translate" href="/it/doc/concept/cli/doc-translate" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Doc Translate</span></a><a aria-label="sdk" href="/it/doc/concept/cli/sdk" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">SDK</span></a><a aria-label="scan" href="/it/doc/concept/cli/scan" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Scan</span></a></div></div></div></div></div></li><li><a aria-label="editor" href="/it/doc/concept/editor" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Editor visuale</span></a></li><li><a aria-label="cms" href="/it/doc/concept/cms" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">CMS</span></a></li><li><a aria-label="ci-cd" href="/it/doc/concept/ci-cd" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Integrazione CI/CD</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_u6qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="content" href="/it/doc/concept/content" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Dichiarazione dei contenuti</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_u6qb9bcq_-accordion-content" aria-labelledby="_R_u6qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="translation" href="/it/doc/concept/content/translation" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Traduzione</span></a><a aria-label="plural" href="/it/doc/concept/content/plural" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Plurale</span></a><a aria-label="enumeration" href="/it/doc/concept/content/enumeration" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Enumerazione</span></a><a aria-label="condition" href="/it/doc/concept/content/condition" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Condizione</span></a><a aria-label="gender" href="/it/doc/concept/content/gender" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Genere</span></a><a aria-label="insertion" href="/it/doc/concept/content/insertion" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Inserimento</span></a><a aria-label="file" href="/it/doc/concept/content/file" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">File</span></a><a aria-label="nesting" href="/it/doc/concept/content/nesting" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Annidamento</span></a><a aria-label="markdown" href="/it/doc/concept/content/markdown" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Markdown</span></a><a aria-label="html" href="/it/doc/concept/content/html" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">HTML</span></a><a aria-label="function-fetching" href="/it/doc/concept/content/function-fetching" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Recupero funzione</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_126qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="dynamic-dyctionary" href="/it/doc/concept/dynamic-dictionaries" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">File per locale</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_126qb9bcq_-accordion-content" aria-labelledby="_R_126qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="collections" href="/it/doc/concept/collections" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Collezioni</span></a><a aria-label="variants" href="/it/doc/concept/variants" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Varianti</span></a><a aria-label="dynamic-content" href="/it/doc/concept/dynamic-records" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Record dinamici</span></a></div></div></div></div></div></li><li><a aria-label="per-locale-file" href="/it/doc/concept/per-locale-file" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">File per locale</span></a></li><li><a aria-label="compiler" href="/it/doc/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Compilatore</span></a></li><li><a aria-label="auto-fill" href="/it/doc/concept/auto-fill" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Compilazione automatica</span></a></li><li><a aria-label="testing" href="/it/doc/testing" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Test</span></a></li><li><a aria-label="bundle_optimization" href="/it/doc/concept/bundle-optimization" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Ottimizzazione del bundle</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="environment"><span class="flex items-center gap-1.5 opacity-60">Ambiente</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_68qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="nextjs" href="/it/doc/environment/nextjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_68qb9bcq_-accordion-content" aria-labelledby="_R_68qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="14" href="/it/doc/environment/nextjs/14" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js 14 e App Router</span></a><a aria-label="15" href="/it/doc/environment/nextjs/15" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js 15</span></a><a aria-label="no-locale-path" href="/it/doc/environment/nextjs/no-locale-path" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js senza locale URL</span></a><a aria-label="next-with-Page-Router" href="/it/doc/environment/nextjs/next-with-page-router" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js e Page Router</span></a><a aria-label="next-with-compiler" href="/it/doc/environment/nextjs/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Compiler</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_a8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="tanstack-start" href="/it/doc/environment/tanstack-start" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg height="660" viewBox="0 0 663 660" width="663" xmlns="http://www.w3.org/2000/svg" fill="currentColor" role="img" aria-label="Tanstack logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m305.114318.62443771c8.717817-1.14462121 17.926803-.36545135 26.712694-.36545135 32.548987 0 64.505987 5.05339923 95.64868 14.63098274 39.74418 12.2236582 76.762804 31.7666864 109.435876 57.477568 40.046637 31.5132839 73.228974 72.8472109 94.520714 119.2362609 39.836383 86.790386 39.544267 191.973146-1.268422 278.398081-26.388695 55.880442-68.724007 102.650458-119.964986 136.75724-41.808813 27.828603-90.706831 44.862601-140.45707 50.89341-63.325458 7.677926-131.784923-3.541603-188.712259-32.729444-106.868873-54.795293-179.52309291-165.076271-180.9604082-285.932068-.27660564-23.300971.08616998-46.74071 4.69884909-69.814998 7.51316071-37.57857 20.61272131-73.903917 40.28618971-106.877282 21.2814003-35.670293 48.7704861-67.1473767 81.6882804-92.5255597 38.602429-29.7610135 83.467691-51.1674988 130.978372-62.05777669 11.473831-2.62966514 22.9946-4.0869914 34.57273-5.4964306l3.658171-.44480576c3.050084-.37153079 6.104217-.74794222 9.162589-1.14972654zm-110.555861 549.44131429c-14.716752 1.577863-30.238964 4.25635-42.869928 12.522173 2.84343.683658 6.102369.004954 9.068638 0 7.124652-.011559 14.317732-.279903 21.434964.032202 17.817402.781913 36.381729 3.63214 53.58741 8.350042 22.029372 6.040631 41.432961 17.928687 62.656049 25.945156 22.389644 8.456554 44.67706 11.084675 68.427 11.084675 11.96813 0 23.845573-.035504 35.450133-3.302696-6.056202-3.225083-14.72582-2.619864-21.434964-3.963236-14.556814-2.915455-28.868774-6.474936-42.869928-11.470264-10.304996-3.676672-20.230803-8.214291-30.11097-12.848661l-6.348531-2.985046c-9.1705-4.309263-18.363277-8.560752-27.845391-12.142608-24.932161-9.418465-52.560181-14.071964-79.144482-11.221737zm22.259385-62.614168c-29.163917 0-58.660076 5.137344-84.915434 18.369597-6.361238 3.206092-12.407546 7.02566-18.137277 11.258891-1.746125 1.290529-4.841829 2.948483-5.487351 5.191839-.654591 2.275558 1.685942 4.182039 3.014086 5.637703 6.562396-3.497556 12.797498-7.199878 19.78612-9.855246 45.19892-17.169893 99.992458-13.570779 145.098218 2.172348 22.494346 7.851335 43.219483 19.592421 65.129314 28.800338 24.503461 10.297807 49.53043 16.975034 75.846795 20.399104 31.04195 4.037546 66.433549.7654 94.808495-13.242161 9.970556-4.921843 23.814245-12.422267 28.030337-23.320339-5.207047.454947-9.892236 2.685918-14.83959 4.224149-7.866632 2.445646-15.827248 4.51974-23.908229 6.138887-27.388113 5.486604-56.512458 6.619429-84.091013 1.639788-25.991939-4.693152-50.142596-14.119246-74.179513-24.03502l-3.068058-1.268177c-2.045137-.846788-4.089983-1.695816-6.135603-2.544467l-3.069142-1.272366c-12.279956-5.085721-24.606928-10.110797-37.210937-14.51024-24.485325-8.546552-50.726667-13.784628-76.671218-13.784628zm51.114145-447.9909432c-34.959602 7.7225298-66.276908 22.7605319-96.457338 41.7180089-17.521434 11.0054099-34.281927 22.2799893-49.465301 36.4444283-22.5792616 21.065423-39.8360564 46.668751-54.8866988 73.411509-15.507372 27.55357-25.4498976 59.665686-30.2554517 90.824149-4.7140432 30.568106-5.4906485 62.70747-.0906864 93.301172 6.7503648 38.248526 19.5989769 74.140579 39.8896436 107.337631 6.8187918-3.184625 11.659796-10.445603 17.3128555-15.336896 11.4149428-9.875888 23.3995608-19.029311 36.2745548-26.928535 4.765981-2.923712 9.662222-5.194315 14.83959-7.275014 1.953055-.785216 5.14604-1.502727 6.06527-3.647828 1.460876-3.406732-1.240754-9.335897-1.704904-12.865654-1.324845-10.095517-2.124534-20.362774-1.874735-30.549941.725492-29.668947 6.269727-59.751557 16.825623-87.521453 7.954845-20.924233 20.10682-39.922168 34.502872-56.971512 4.884699-5.785498 10.077731-11.170545 15.437296-16.512656 3.167428-3.157378 7.098271-5.858983 9.068639-9.908915-10.336599.006606-20.674847 2.987289-30.503603 6.013385-21.174447 6.519522-41.801477 16.19312-59.358362 29.841512-8.008432 6.226409-13.873368 14.387371-21.44733 20.939921-2.32322 2.010516-6.484901 4.704691-9.695199 3.187928-4.8500728-2.29042-4.1014979-11.835213-4.6571581-16.222019-2.1369011-16.873476 4.2548401-38.216325 12.3778671-52.843142 13.039878-23.479694 37.150915-43.528712 65.467327-42.82854 12.228647.302197 22.934587 4.551115 34.625711 7.324555-2.964621-4.211764-6.939158-7.28162-10.717482-10.733763-9.257431-8.459031-19.382979-16.184864-30.503603-22.028985-4.474136-2.350694-9.291232-3.77911-14.015169-5.506421-2.375159-.867783-5.36616-2.062533-6.259834-4.702213-1.654614-4.888817 7.148561-9.416813 10.381943-11.478522 12.499882-7.969406 27.826705-14.525258 42.869928-14.894334 23.509209-.577147 46.479246 12.467678 56.162903 34.665926 3.404469 7.803171 4.411273 16.054969 5.079109 24.382907l.121749 1.56229.174325 2.345587c.01913.260708.038244.521433.057403.782164l.11601 1.56437.120128 1.563971c7.38352-6.019164 12.576553-14.876995 19.78612-21.323859 16.861073-15.07846 39.936636-21.7722 61.831627-14.984333 19.786945 6.133107 36.984382 19.788105 47.105807 37.959541 2.648042 4.754231 10.035685 16.373942 4.698379 21.109183-4.177345 3.707277-9.475079.818243-13.880788-.719162-3.33605-1.16376-6.782939-1.90214-10.241828-2.585698l-1.887262-.369639c-.629089-.122886-1.257979-.246187-1.886079-.372129-11.980496-2.401886-25.91652-2.152533-37.923398-.041284-7.762754 1.364839-15.349083 4.127545-23.083807 5.271929v1.651348c21.149714.175043 41.608563 12.240618 52.043268 30.549941 4.323267 7.585468 6.482428 16.267431 8.138691 24.770223 2.047864 10.50918.608423 21.958802-2.263037 32.201289-.962925 3.433979-2.710699 9.255807-6.817143 10.046802-2.902789.558982-5.36781-2.330878-7.024898-4.279468-4.343878-5.10762-8.475879-9.96341-13.573278-14.374161-12.895604-11.157333-26.530715-21.449361-40.396663-31.373138-7.362086-5.269452-15.425755-12.12007-23.908229-15.340199 2.385052 5.745041 4.721463 11.086326 5.532694 17.339156 2.385876 18.392716-5.314223 35.704625-16.87179 49.540445-3.526876 4.222498-7.29943 8.475545-11.744712 11.755948-1.843407 1.360711-4.156734 3.137561-6.595373 2.752797-7.645687-1.207961-8.555849-12.73272-9.728176-18.637115-3.970415-19.998652-2.375984-39.861068 3.132802-59.448534-4.901187 2.485279-8.443727 7.923994-11.521293 12.385111-6.770975 9.816439-12.645804 20.199291-16.858599 31.375615-16.777806 44.519521-16.616219 96.664142 5.118834 139.523233 2.427098 4.786433 6.110614 4.144058 10.894733 4.144058.720854 0 1.44257-.004515 2.164851-.010924l2.168232-.022283c4.338648-.045438 8.686803-.064635 12.979772.508795 2.227588.297243 5.320818.032202 7.084256 1.673642 2.111344 1.966755.986008 5.338808.4996 7.758859-1.358647 6.765574-1.812904 12.914369-1.812904 19.816178 9.02412-1.398692 11.525415-15.866153 14.724172-23.118874 3.624982-8.216283 7.313444-16.440823 10.667192-24.770223 1.648843-4.093692 3.854171-8.671229 3.275427-13.210785-.649644-5.10184-4.335633-10.510831-6.904531-14.862134-4.86244-8.234447-10.389363-16.70834-13.969002-25.595896-2.861567-7.104926-.197036-15.983399 7.871579-18.521521 4.450228-1.400344 9.198073 1.345848 12.094266 4.562675 6.07269 6.74328 9.992815 16.777697 14.401823 24.692609l34.394873 61.925556c2.920926 5.243856 5.848447 10.481933 8.836976 15.687808 1.165732 2.031158 2.352075 5.167068 4.740424 6.0332 2.127008.77118 5.033095-.325315 7.148561-.748886 5.492297-1.099798 10.97635-2.287117 16.488434-3.28288 6.605266-1.193099 16.673928-.969342 21.434964-6.129805-6.963066-2.205375-15.011895-2.074919-22.259386-1.577863-4.352947.298894-9.178287 1.856116-13.178381-.686135-5.953149-3.783239-9.910373-12.522173-13.552668-18.377854-8.980425-14.439388-17.441465-29.095929-26.041008-43.760726l-1.376261-2.335014-2.765943-4.665258c-1.380597-2.334387-2.750786-4.67476-4.079753-7.036188-1.02723-1.826391-2.549937-4.233231-1.078344-6.24705 1.545791-2.114476 4.91472-2.239146 7.956473-2.243117l.603351.000261c1.195428.001526 2.315572.002427 3.222811-.11692 12.27399-1.615019 24.718635-2.952611 37.098976-2.952611-.963749-3.352237-3.719791-7.141255-2.838484-10.73046 1.972017-8.030506 13.526287-10.543033 18.899867-4.780653 3.60767 3.868283 5.704174 9.192229 8.051303 13.859765 3.097352 6.162006 6.624228 12.118418 9.940876 18.16483 5.805578 10.585967 12.146205 20.881297 18.116667 31.375615.49237.865561.999687 1.726685 1.512269 2.587098l.771613 1.290552c2.577138 4.303168 5.164895 8.635123 6.553094 13.461506-20.735854-.9487-36.30176-25.018751-45.343193-41.283704-.721369 2.604176.450959 4.928448 1.388326 7.431066 1.948109 5.197619 4.276275 10.147535 7.20627 14.862134 4.184765 6.732546 8.982075 13.665732 15.313633 18.553722 11.236043 8.673707 26.05255 8.721596 39.572241 7.794364 8.669619-.595311 19.50252-4.542034 28.030338-1.864372 8.513803 2.673532 11.940924 12.063098 6.884745 19.276187-3.787393 5.403211-8.842747 7.443452-15.128962 8.257566 4.445282 9.53571 10.268996 18.385285 14.490036 28.072919 1.758491 4.035895 3.59118 10.22102 7.8048 12.350433 2.805507 1.416857 6.824562.09743 9.85761.034678-3.043765-8.053625-8.742992-14.887729-11.541904-23.118874 8.533589.390544 16.786875 4.843404 24.732651 7.685374 15.630376 5.590144 31.063836 11.701854 46.475333 17.86913l7.112077 2.848685c6.338978 2.538947 12.71588 5.052299 18.961699 7.812528 2.285297 1.009799 5.449427 3.370401 7.975455 1.917215 2.061054-1.186494 3.394144-4.015253 4.665403-5.931643 3.55573-5.361927 6.775921-10.928622 9.965609-16.513481 12.774414-22.36586 22.143967-46.872692 28.402976-71.833646 20.645168-82.323009 2.934117-173.156241-46.677107-241.922507-19.061454-26.420745-43.033164-49.262193-69.46165-68.1783861-66.13923-47.336721-152.911262-66.294198-232.486917-48.7172481zm135.205158 410.5292842c-17.532977 4.570931-35.601827 8.714164-53.58741 11.040088 2.365265 8.052799 8.145286 15.885969 12.376218 23.118874 1.635653 2.796558 3.3859 6.541816 6.618457 7.755557 3.651364 1.370619 8.063669-.853747 11.508927-1.975838-1.595256-4.364513-4.279573-8.292245-6.476657-12.385112-.905215-1.687677-2.305907-3.685809-1.559805-5.68972 1.410585-3.786541 7.266452-3.563609 10.509727-4.221671 8.54678-1.733916 17.004522-3.898008 25.557073-5.611281 3.150939-.631641 7.538512-2.342438 10.705115-1.285575 2.371037.791232 3.800147 2.744743 5.152304 4.781948l.606196.918752c.80912 1.222827 1.637246 2.41754 2.671212 3.351165 3.457625 3.121874 8.628398 3.60159 13.017619 4.453686-2.678546-6.027421-7.130424-11.301001-9.984571-17.339156-1.659561-3.511592-3.023155-8.677834-6.656381-10.707341-5.005064-2.795733-15.341663 2.461334-20.458024 3.795624zm-110.472507-40.151706c-.825246 10.467897-4.036369 18.984725-9.068639 28.072919 5.76683.729896 11.649079.989984 17.312856 2.39363 4.244947 1.051908 8.156828 3.058296 12.366325 4.211763-2.250671-6.157877-6.426367-11.651913-9.661398-17.339156-3.266358-5.740912-6.189758-12.717032-10.949144-17.339156z" transform="translate(.9778)"></path></svg><!--/$--></span>Tanstack Start</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_a8qb9bcq_-accordion-content" aria-labelledby="_R_a8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="tanstack-start-solid" href="/it/doc/environment/tanstack-start/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Tanstack Start Solid</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_e8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="astro" href="/it/doc/environment/astro" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg viewBox="0 0 85 107" role="img" aria-label="Astro logo" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="z-index:0" class="shrink-0 size-3.5"><path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="currentColor"></path><path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="url(#paint0_linear_1_59)"></path><path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="currentColor"></path><defs><linearGradient id="paint0_linear_1_59" x1="22.4702" y1="107" x2="69.1451" y2="84.9468" gradientUnits="userSpaceOnUse"><stop stop-color="#D83333"></stop><stop offset="1" stop-color="#F041FF"></stop></linearGradient></defs></svg><!--/$--></span>Astro</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_e8qb9bcq_-accordion-content" aria-labelledby="_R_e8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="astro-and-react" href="/it/doc/environment/astro/react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Astro e React</span></a><a aria-label="astro-and-svelte" href="/it/doc/environment/astro/svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Astro e Svelte</span></a><a aria-label="astro-and-vue" href="/it/doc/environment/astro/vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Astro e Vue</span></a><a aria-label="astro-and-solid" href="/it/doc/environment/astro/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Astro e Solid</span></a><a aria-label="astro-and-preact" href="/it/doc/environment/astro/preact" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" aria-label="Preact" role="img" viewBox="0 0 512 512" style="z-index:0" class="shrink-0 size-3.5"><g transform="translate(256,256)"><path d="M0,-256 222,-128 222,128 0,256 -222,128 -222,-128z" fill="#673ab8"></path><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(52.5)"></ellipse><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(-52.5)"></ellipse><circle cx="0" cy="0" r="34" fill="#ffffff"></circle></g></svg><!--/$--></span>Astro e Preact</span></a><a aria-label="astro-and-lit" href="/it/doc/environment/astro/lit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 256 320" preserveAspectRatio="xMidYMid" role="img" aria-label="Lit"><path fill="#00E8FF" d="m64 192 25.926-44.727 38.233-19.114 63.974 63.974 10.833 61.754L192 320l-64-64-38.074-25.615z"></path><path d="M128 256V128l64-64v128l-64 64ZM0 256l64 64 9.202-60.602L64 192l-37.542 23.71L0 256Z" fill="#283198"></path><path d="M64 192V64l64-64v128l-64 64Zm128 128V192l64-64v128l-64 64ZM0 256V128l64 64-64 64Z" fill="#324FFF"></path><path fill="#0FF" d="M64 320V192l64 64z"></path></svg><!--/$--></span>Astro e Lit</span></a><a aria-label="astro-and-vanilla-js" href="/it/doc/environment/astro/vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Astro e Vanilla JS</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_i8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-react" href="/it/doc/environment/vite-and-react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Vite e React</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_i8qb9bcq_-accordion-content" aria-labelledby="_R_i8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="react-router-v7" href="/it/doc/environment/vite-and-react/react-router-v7" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Router v7</span></a><a aria-label="react-router-v7-fs-routes" href="/it/doc/environment/vite-and-react/react-router-v7-fs-routes" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Router v7 (fs-routes)</span></a><a aria-label="compiler" href="/it/doc/environment/vite-and-react/compiler" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>Compiler</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_m8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-vue" href="/it/doc/environment/vite-and-vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Vite e Vue</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_m8qb9bcq_-accordion-content" aria-labelledby="_R_m8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="nuxt-and-vue" href="/it/doc/environment/nuxt-and-vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 298" preserveAspectRatio="xMidYMid" role="img" aria-label="Nuxt logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="none" fill-rule="nonzero"><path fill="#00C58E" d="M227.92099 82.07407l-13.6889 23.7037-46.8148-81.08641L23.7037 273.58025h97.3037c0 13.0912 10.61252 23.7037 23.70371 23.7037H23.70371c-8.46771 0-16.29145-4.52017-20.5246-11.85382-4.23315-7.33366-4.23272-16.36849.00114-23.70174L146.89383 12.83951c4.23415-7.33433 12.0596-11.85252 20.5284-11.85252 8.46878 0 16.29423 4.51819 20.52839 11.85252l39.97037 69.23456z"></path><path fill="#2F495E" d="M331.6642 261.7284l-90.05432-155.95062-13.6889-23.7037-13.68888 23.7037-90.04445 155.95061c-4.23385 7.33325-4.23428 16.36808-.00113 23.70174 4.23314 7.33365 12.05689 11.85382 20.5246 11.85382h166.4c8.46946 0 16.29644-4.51525 20.532-11.84955 4.23555-7.3343 4.23606-16.37123.00132-23.706h.01976zM144.7111 273.58024L227.921 129.48148l83.19012 144.09877h-166.4z"></path><path fill="#108775" d="M396.04938 285.4321c-4.23344 7.33254-12.05656 11.85185-20.52345 11.85185H311.1111c13.0912 0 23.7037-10.6125 23.7037-23.7037h40.66173L260.09877 73.74815l-18.4889 32.02963-13.68888-23.7037L239.5753 61.8963c4.23416-7.33433 12.0596-11.85252 20.5284-11.85252 8.46879 0 16.29423 4.51819 20.52839 11.85252l115.41728 199.8321c4.23426 7.33395 4.23426 16.36975 0 23.7037z"></path></g></svg><!--/$--></span>Nuxt e Vue</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-solid" href="/it/doc/environment/vite-and-solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Vite e Solid</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="true" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_u8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-svelte" aria-current="page" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text active" href="/it/doc/environment/vite-and-svelte" target="_self" data-status="active"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Vite e Svelte</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out rotate-0" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div role="region" class="group/height-smoother relative grid w-full overflow-hidden transition-all duration-700 ease-in-out grid-rows-[1fr] overflow-x-auto" id="_R_u8qb9bcq_-accordion-content" aria-labelledby="_R_u8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="vite-and-svelte-kit" href="/it/doc/environment/sveltekit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>SvelteKit</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-preact" href="/it/doc/environment/vite-and-preact" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" aria-label="Preact" role="img" viewBox="0 0 512 512" style="z-index:0" class="shrink-0 size-3.5"><g transform="translate(256,256)"><path d="M0,-256 222,-128 222,128 0,256 -222,128 -222,-128z" fill="#673ab8"></path><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(52.5)"></ellipse><ellipse cx="0" cy="0" stroke-width="16" rx="75" ry="196" fill="none" stroke="#ffffff" transform="rotate(-52.5)"></ellipse><circle cx="0" cy="0" r="34" fill="#ffffff"></circle></g></svg><!--/$--></span>Vite e Preact</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_168qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="vite-and-vanilla-js" href="/it/doc/environment/vite-and-vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Vite e Vanilla JS</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_168qb9bcq_-accordion-content" aria-labelledby="_R_168qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="vanilla-js" href="/it/doc/environment/vanilla" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 1052 1052" role="img" aria-label="Vanilla JavaScript logo"><path fill="#f0db4f" d="M0 0h1052v1052H0z"></path><path d="M965.9 801.1c-7.7-48-39-88.3-131.7-125.9-32.2-14.8-68.1-25.399-78.8-49.8-3.8-14.2-4.3-22.2-1.9-30.8 6.9-27.9 40.2-36.6 66.6-28.6 17 5.7 33.1 18.801 42.8 39.7 45.4-29.399 45.3-29.2 77-49.399-11.6-18-17.8-26.301-25.4-34-27.3-30.5-64.5-46.2-124-45-10.3 1.3-20.699 2.699-31 4-29.699 7.5-58 23.1-74.6 44-49.8 56.5-35.6 155.399 25 196.1 59.7 44.8 147.4 55 158.6 96.9 10.9 51.3-37.699 67.899-86 62-35.6-7.4-55.399-25.5-76.8-58.4-39.399 22.8-39.399 22.8-79.899 46.1 9.6 21 19.699 30.5 35.8 48.7 76.2 77.3 266.899 73.5 301.1-43.5 1.399-4.001 10.6-30.801 3.199-72.101zm-394-317.6h-98.4c0 85-.399 169.4-.399 254.4 0 54.1 2.8 103.7-6 118.9-14.4 29.899-51.7 26.2-68.7 20.399-17.3-8.5-26.1-20.6-36.3-37.699-2.8-4.9-4.9-8.7-5.601-9-26.699 16.3-53.3 32.699-80 49 13.301 27.3 32.9 51 58 66.399 37.5 22.5 87.9 29.4 140.601 17.3 34.3-10 63.899-30.699 79.399-62.199 22.4-41.3 17.6-91.3 17.4-146.6.5-90.2 0-180.4 0-270.9z" fill="#323330"></path></svg><!--/$--></span>Vanilla JS (senza bundler)</span></a></div></div></div></div></div></li><li><a aria-label="vite-and-lit" href="/it/doc/environment/vite-and-lit" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 256 320" preserveAspectRatio="xMidYMid" role="img" aria-label="Lit"><path fill="#00E8FF" d="m64 192 25.926-44.727 38.233-19.114 63.974 63.974 10.833 61.754L192 320l-64-64-38.074-25.615z"></path><path d="M128 256V128l64-64v128l-64 64ZM0 256l64 64 9.202-60.602L64 192l-37.542 23.71L0 256Z" fill="#283198"></path><path d="M64 192V64l64-64v128l-64 64Zm128 128V192l64-64v128l-64 64ZM0 256V128l64 64-64 64Z" fill="#324FFF"></path><path fill="#0FF" d="M64 320V192l64 64z"></path></svg><!--/$--></span>Vite e Lit</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1e8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><a aria-label="angular" href="/it/doc/environment/angular" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Angular 21</span></a></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1e8qb9bcq_-accordion-content" aria-labelledby="_R_1e8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="19" href="/it/doc/environment/angular/19" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Angular 19 (Webpack)</span></a><a aria-label="analog" href="/it/doc/environment/analog" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Angular logo" version="1.1" preserveAspectRatio="xMidYMid" viewBox="20 20 210 210" style="z-index:0" class="shrink-0 size-3.5"><g><polygon style="fill:#DD0031" points="125,30 125,30 125,30 31.9,63.2 46.1,186.3 125,230 125,230 125,230 203.9,186.3 218.1,63.2 "></polygon><polygon style="fill:#C3002F" points="125,30 125,52.2 125,52.1 125,153.4 125,153.4 125,230 125,230 203.9,186.3 218.1,63.2 125,30 "></polygon><path style="fill:#FFFFFF" d="M125,52.1L66.8,182.6h0h21.7h0l11.7-29.2h49.4l11.7,29.2h0h21.7h0L125,52.1L125,52.1L125,52.1L125,52.1 L125,52.1z M142,135.4H108l17-40.9L142,135.4z"></path></g></svg><!--/$--></span>Analog</span></a></div></div></div></div></div></li><li><a aria-label="create-react-app" href="/it/doc/environment/create-react-app" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React CRA</span></a></li><li><a aria-label="react-native-and-expo" href="/it/doc/environment/react-native-and-expo" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="175.7 78 490.6 436.9" role="img" aria-label="React logo" style="z-index:0" class="shrink-0 size-3.5"><g fill="#61dafb"><path d="m666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9v-22.3c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6v-22.3c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zm-101.4 106.7c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24s9.5 15.8 14.4 23.4zm73.9-208.1c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6s22.9-35.6 58.3-50.6c8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zm53.8 142.9c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6z"></path><circle cx="420.9" cy="296.5" r="45.7"></circle></g></svg><!--/$--></span>React Native e Expo</span></a></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1q8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="truncate font-semibold text-neutral transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text" label="node"><span class="flex items-center gap-1.5 opacity-60">Node & Backend</span></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1q8qb9bcq_-accordion-content" aria-labelledby="_R_1q8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="express" href="/it/doc/environment/express" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1333.33 773.55" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" role="img" aria-label="Express logo" fill="currentColor" style="z-index:0" class="shrink-0 size-3.5"><path d="M1333.33 753.49c-48.5 12.33-78.5.54-105.41-39.87L1036.5 448.79l-27.67-36.67L785.29 714.5c-25.54 36.38-52.33 52.2-100 39.33l286.25-384.25-266.5-347.09c45.83-8.91 77.5-4.38 105.62 36.67l198.54 268.13 200-266.67c25.62-36.38 53.17-50.2 99.17-36.8l-103.33 137-140 182.29c-16.67 20.83-14.38 35.09.96 55.2l267.33 355.18zM.34 363.16l23.41-115.17c63.75-227.92 325-322.63 505.17-181.8 105.29 82.83 131.46 200 126.25 331.25H61.67C52.76 633.69 222.8 776.27 439.58 703.53c76.04-25.54 120.83-85.09 143.25-159.58 11.38-37.33 30.2-43.17 65.29-32.5-17.91 93.17-58.33 171-143.75 219.71-127.62 72.91-309.8 49.33-405.62-52C41.66 620.36 18.08 545.87 7.5 466.2c-1.67-13.17-5-25.71-7.5-38.33.22-21.56.34-43.11.34-64.67v-.04zm62.41-15.83h536.33c-3.5-170.83-109.87-292.17-255.25-293.2-159.58-1.25-274.17 117.2-281.09 293.2h.01z" fill-rule="nonzero"></path></svg><!--/$--></span>Express.js</span></a><a aria-label="nest" href="/it/doc/environment/nest" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" height="966" viewBox="0 0 264.58333 255.58751" width="1000" role="img" aria-label="NestJS logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m153.33845 45.652481c-1.80934 0-3.48944.387729-5.04032.904673 3.29558 2.19706 5.10493 5.104961 6.00963 8.400551.0648.45233.19386.775444.25856 1.227759.0648.387729.12916.775444.12916 1.163171.2586 5.686509-1.48628 6.397323-2.71403 9.757543-1.87398 4.329529-1.35704 8.982133.90466 12.730079.19387.452318.45234.969275.77546 1.421618-2.45558-16.348759 11.17919-18.804304 13.69932-23.90924.19386-4.458761-3.48944-7.431263-6.39731-9.499092-2.77864-1.680104-5.29884-2.197062-7.62513-2.197062zm20.54903 3.683318c-.25858 1.486247-.0647 1.09853-.12913 1.873973-.0647.516945-.0647 1.163157-.12914 1.680102-.12914.516959-.2586 1.033904-.45236 1.550886-.12913.516945-.32309 1.033903-.51694 1.550847-.2586.516983-.45234.969301-.71082 1.486258-.19385.258585-.32309.516945-.51695.775443-.12914.193857-.25858.387715-.38771.581572-.32309.452355-.64621.904673-.96929 1.292387-.38774.387729-.71083.840046-1.16319 1.163171v.0647c-.38771.3231-.77543.710815-1.22775 1.033903-1.35702 1.033902-2.90787 1.809344-4.32952 2.778644-.45231.323088-.90468.581587-1.29238.9693-.45233.323088-.84006.646176-1.22776 1.033903-.45236.387715-.77545.775442-1.16318 1.227784-.32309.387728-.7108.840048-.96927 1.292402-.32312.452317-.6462.904661-.9047 1.35699-.25857.516944-.45233.969299-.71081 1.486245-.19385.516944-.38773.969301-.51695 1.486244-.19386.581586-.3231 1.098544-.45234 1.615514-.0647.258583-.0647.58156-.12914.840045-.0648.258584-.0648.516945-.12913.775443 0 .516944-.0647 1.09853-.0647 1.615475 0 .387727 0 .775441.0647 1.163169 0 .516946.0647 1.033892.19385 1.615476.0647.516944.19384 1.033902.32312 1.550885.19386.516944.3231 1.033902.51694 1.550847.12916.323126.32309.646213.45236.904673l-14.86252-5.75114c-2.52018-.710815-4.9757-1.35699-7.49588-1.938576-1.357-.323087-2.714-.646198-4.07102-.969299-3.87719-.77543-7.81895-1.356991-11.76076-1.744705-.12913 0-.19385-.06471-.32309-.06471-3.8772-.387714-7.68973-.581572-11.5669-.581572-2.84328 0-5.68656.129131-8.465201.323088-3.941798.258584-7.883602.775442-11.825373 1.421617-.969302.129144-1.938602.323125-2.907905.516984-2.003199.387689-3.941771.840044-5.815742 1.292386-.9693.258584-1.938602.516958-2.907903.775419-.96927.387713-1.87394.84007-2.778642 1.227784-.710811.323088-1.421619.646187-2.132431.9693-.129139.06471-.25858.06471-.32309.129144-.64621.323087-1.22779.581547-1.809341.904671-.193861.06471-.323122.129132-.452351.193859-.71081.323089-1.421618.710803-2.003201 1.033902-.45235.193858-.90467.452343-1.292389.646213-.193862.129131-.452353.258572-.581582.323088-.581579.323088-1.16316.646174-1.680111.9693-.581581.323087-1.098532.646175-1.550882.969263-.452318.323125-.904667.581585-1.29239.904672-.06474.06471-.129139.06471-.193861.129145-.387719.258583-.840039.581571-1.227758.904696 0 0-.06473.0647-.12914.129142-.32309.258584-.646212.516947-.969301.775407-.129138.06471-.258581.193857-.38772.258583-.32309.258586-.64618.581586-.969271.84007-.06473.129143-.193859.193858-.258581.258585-.38772.387715-.775441.710802-1.163161 1.09853-.06473 0-.06473.06471-.129139.129131-.38772.3231-.775439.710816-1.163159 1.098543-.06473.06471-.06473.12913-.12914.12913-.32309.323089-.64618.646213-.969301 1.033902-.129137.129143-.32309.258586-.452319.387715-.32309.387728-.710811.775443-1.09853 1.163171-.06473.129132-.19386.193858-.258582.323087-.516952.516983-.969302 1.033928-1.486252 1.550885-.06473.06471-.129138.129128-.193859.193858-1.033931 1.098529-2.132463 2.197059-3.295594 3.166352-1.163159 1.0339-2.390922 2.0032-3.618711 2.84325-1.292392.9047-2.520152 1.68011-3.877173 2.45555-1.292392.71079-2.649412 1.35701-4.071032 1.9386-1.357022.58157-2.778641 1.09854-4.200264 1.55085-2.714041.58157-5.492684 1.68011-7.883605 1.87397-.51695 0-1.098531.12915-1.615482.19385-.581578.12914-1.098529.25859-1.615479.38774-.516951.19384-1.033931.38771-1.550883.58156-.516951.19386-1.033901.45235-1.550852.71083-.45235.32308-.969299.58157-1.421651.90466-.452322.32309-.904672.7108-1.292393 1.09853-.452319.32312-.904669.77545-1.29239 1.16315-.387721.45237-.77544.84008-1.0985304 1.29239-.3230901.51695-.7108108.96931-.9693016 1.48627-.32309.45235-.6461799.96929-.9046707 1.48622-.2585815.58161-.5169498 1.09855-.7108107 1.68014-.1938599.51695-.3877199 1.09852-.5815799 1.68011-.1291382.51694-.2585813 1.0339-.3230898 1.55083 0 .0648-.064719.12916-.064719.19387-.1291392.58161-.1291392 1.35706-.1938608 1.74479-.064719.45232-.1291373.84002-.1291373 1.29238 0 .25858 0 .58155.064719.84003.064719.45236.1291371.84007.2585814 1.22782.1291382.38766.2585815.77539.4523201 1.16312v.0647c.1938599.38775.4523506.77545.7108108 1.16317.2585814.38772.5169804.77544.8400704 1.16317.3230899.32309.7108109.71078 1.0985304 1.03389.3877209.38772.7754421.71081 1.2277611 1.0339 1.550881 1.35703 1.938601 1.80938 3.941806 2.84327.323087.19387.64621.32311 1.03393.51697.06473 0 .129139.0647.193859.0647 0 .12913 0 .19387.06473.32313.06472.51696.193859 1.03389.32309 1.55086.129138.58158.323121 1.09855.516981 1.55087.19386.38773.32309.77543.516951 1.16317.06472.12915.12914.25858.19386.32309.258581.51694.51695.96932.77541 1.42162.323121.45233.64621.90466.969299 1.35703.323092.3877.710813.84004 1.098532 1.22775.387721.38773.775442.71083 1.227793 1.09852 0 0 .06473.0648.129137.0648.387722.32312.77544.64622 1.163162.90466.45232.32311.90467.58157 1.421619.84007.452351.25858.969302.51695 1.486252.71082.387721.19386.84004.32311 1.292392.45234.06473.0648.129138.0648.258582.12916.258581.0648.581548.12912.840039.19384-.193859 3.48945-.258582 6.78504.258583 7.94822.58155 1.29238 3.424821-2.64941 6.268094-7.17277-.387719 4.45875-.646211 9.6929 0 11.24381.710809 1.61545 4.587982-3.42487 7.948203-8.98215 45.815262-10.59757 87.62418 21.066 92.01829 65.78273-.84006-6.97892-9.43446-10.85608-13.37623-9.88677-1.93861 4.78183-5.2342 10.92068-10.53299 14.73324.45233-4.2649.25856-8.65901-.64619-12.92392-1.42165 5.94501-4.2003 11.50232-8.01287 16.28415-6.138857.45232-12.277729-2.52019-15.50872-6.97891-.258582-.19388-.323091-.58159-.516951-.84006-.193862-.45238-.387719-.90467-.516951-1.35703-.193859-.45232-.323089-.90467-.387719-1.35699-.06473-.45236-.06473-.90469-.06473-1.42163 0-.32312 0-.6462 0-.96928.06473-.45238.19386-.90471.323091-1.35705.129138-.45232.25858-.90467.45235-1.35701.258582-.45231.45232-.90466.775441-1.35698 1.09853-3.10178 1.09853-5.62192-.90467-7.10816-.387721-.25858-.775441-.45236-1.227791-.64622-.258584-.0647-.581582-.19386-.84004-.25857-.193861-.0647-.32309-.12916-.516951-.19387-.452351-.12914-.904702-.25859-1.357022-.32309-.45235-.12913-.90467-.19386-1.35702-.19386-.452321-.0648-.969303-.12914-1.421622-.12914-.323089 0-.64621.0647-.969301.0647-.516949 0-.969299.0648-1.421621.19386-.45235.0648-.904669.12913-1.357019.25856-.452322.12915-.904673.25859-1.357023.45238-.452319.19385-.840041.38771-1.292389.58157-.38769.19387-.775412.45232-1.227761.64618-15.056371 9.82217-6.074235 32.82674 4.200264 39.48256-3.877175.71081-7.818947 1.5509-8.917479 2.39092-.06473.0647-.129138.12915-.129138.12915 2.778642 1.68009 5.686516 3.10173 8.723616 4.32949 4.135665 1.35702 8.529786 2.58479 10.468387 3.10176v.0647c5.363424 1.09854 10.79148 1.48626 16.284139 1.16317 28.62649-2.00321 52.0834-23.78003 56.3483-52.47111.12914.58159.25858 1.09852.38772 1.68012.19387 1.16312.45232 2.3909.58155 3.61867v.0648c.12914.58158.19386 1.16315.25858 1.6801v.25859c.0648.58157.12915 1.16316.12915 1.6801.0647.71082.12914 1.42162.12914 2.13247v1.0339c0 .32312.0647.7108.0647 1.03392 0 .38773-.0647.77542-.0647 1.16314v.90467c0 .45236-.0648.84006-.0648 1.2924 0 .25856 0 .51696-.0647.84006 0 .45236-.0647.90466-.0647 1.42162-.0648.19386-.0648.38772-.0648.58159-.0647.51696-.12914.9693-.19387 1.48626 0 .19387 0 .38771-.0647.58159-.0648.64617-.19385 1.22777-.25855 1.87394v.0648.0647c-.12914.58157-.2586 1.22776-.38775 1.80933v.19387c-.12912.58156-.25858 1.16316-.3877 1.74471 0 .0648-.0647.19387-.0647.25856-.12916.5816-.2586 1.16317-.45232 1.74478v.19384c-.19386.64617-.38773 1.22776-.51698 1.80934-.0647.0647-.0647.12914-.0647.12914-.19387.64621-.38771 1.29239-.58155 1.93858-.25858.64621-.45234 1.22778-.71081 1.87398-.25857.6462-.45236 1.2924-.71083 1.87396-.25859.64622-.51697 1.2278-.77543 1.87397h-.0648c-.2586.58157-.51699 1.22779-.8401 1.80938-.0647.19383-.12912.32309-.19384.4523-.0647.0648-.0647.12914-.12914.19388-4.20026 8.46514-10.40377 15.89639-18.15809 21.71217-.51695.32309-1.03392.71082-1.55086 1.09852-.12915.12915-.32312.19388-.45235.32309-.45235.3231-.90468.64618-1.42161.96931l.19385.38772h.0647c.90466-.12913 1.80934-.25858 2.71402-.38772h.0647c1.68012-.25858 3.36023-.58158 5.04035-.90467.45231-.0648.9693-.19385 1.42161-.32312.32309-.0648.58158-.12913.90467-.19386.45235-.0648.90468-.19386 1.35704-.25857.3877-.12914.77543-.19388 1.16314-.3231 6.46195-1.55089 12.73007-3.68335 18.73965-6.20349-10.27448 14.02243-24.03847 25.33087-40.12874 32.76212 7.43127-.51696 14.86251-1.74472 22.03528-3.81254 26.0417-7.68977 47.94772-25.20165 61.06549-48.7878-2.6494 14.92714-8.5944 29.14344-17.38265 41.55041 6.26809-4.13569 12.01923-8.91753 17.25342-14.34557 14.47478-15.12097 23.97388-34.31296 27.20483-54.92665 2.19708 10.2099 2.84328 20.74293 1.87398 31.14666 46.65534-65.07192 3.87717-132.53476-14.02244-150.305141-.0648-.129133-.12914-.193858-.12914-.323089-.0648.0647-.0648.0647-.0648.129144 0-.06471 0-.06471-.0647-.129144 0 .775442-.0647 1.550848-.12914 2.326291-.19387 1.48625-.38771 2.907879-.64621 4.329529-.32308 1.42162-.71081 2.84322-1.09854 4.26488-.45232 1.35699-.96925 2.77862-1.55085 4.13565-.58158 1.29237-1.22778 2.64939-1.93859 3.9418-.71082 1.22778-1.48625 2.52016-2.32629 3.6833-.84006 1.2278-1.74474 2.39093-2.64943 3.48944-.96931 1.16318-2.00319 2.1971-3.03712 3.23101-.64618.58158-1.22775 1.09853-1.87398 1.61546-.51694.45236-.96927.84009-1.48625 1.29239-1.16314.90468-2.32629 1.74474-3.61867 2.52019-1.22778.77542-2.52014 1.55086-3.81254 2.19707-1.35702.64619-2.71404 1.22776-4.07104 1.80935-1.35702.51693-2.77864.96928-4.20031 1.35701-1.42161.3877-2.90785.71081-4.32949.96928-1.48623.25858-2.97249.38771-4.39412.51697-1.03392.0647-2.06782.12915-3.10175.12915-1.48626 0-2.97248-.12915-4.39412-.25858-1.48624-.12914-2.97251-.32314-4.39413-.64623-1.48625-.25858-2.9079-.64621-4.32953-1.09851h-.0647c1.42163-.12914 2.84327-.2586 4.26492-.51697 1.48622-.25858 2.90785-.58156 4.3295-.96931 1.42162-.38771 2.84325-.84006 4.20026-1.357 1.42162-.51696 2.77865-1.16313 4.07105-1.80936 1.357-.64621 2.58478-1.357 3.87716-2.13244 1.22776-.84005 2.45554-1.68009 3.61869-2.58479 1.16316-.90466 2.26167-1.87394 3.29562-2.90786 1.09853-.96932 2.06781-2.06784 3.03711-3.16638.96927-1.16312 1.87396-2.32628 2.71402-3.48944.12915-.19387.25859-.45232.38774-.64619.64617-1.03392 1.29235-2.06783 1.87392-3.10176.71083-1.29239 1.35704-2.58479 1.9386-3.94177.58159-1.35702 1.09855-2.71405 1.55089-4.13566.45232-1.35703.77542-2.77864 1.09853-4.200258.25859-1.486258.51694-2.90791.64619-4.329528.12914-1.486244.25857-2.972503.25857-4.394119 0-1.033928-.0648-2.06783-.12912-3.101733-.12915-1.486246-.32311-2.9079-.51696-4.329519-.25859-1.486257-.58157-2.907873-.96931-4.329529-.45231-1.356991-.90467-2.778634-1.42161-4.135623-.51699-1.357028-1.16315-2.714042-1.80938-4.006443-.71081-1.292388-1.42161-2.584776-2.19704-3.812536-.84005-1.22776-1.68013-2.390917-2.5848-3.554087-.96927-1.098531-1.93857-2.19706-2.97251-3.29559-.51694-.516947-1.09853-1.098532-1.6801-1.615476-2.90787-2.2617-5.945-4.394159-8.9821-6.332732-.45233-.258574-.84005-.452342-1.2924-.646212-2.13246-1.356992-4.13566-2.067831-6.13885-2.714007z" fill="#e0234e" fill-rule="evenodd" transform="translate(0 -41.412487)"></path></svg><!--/$--></span>NestJS</span></a><a aria-label="fastify" href="/it/doc/environment/fastify" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" preserveAspectRatio="xMidYMid" viewBox="0 0 256 167.509" role="img" aria-label="Fastify logo"><path fill="currentColor" d="M247.942 23.314 256 2.444l-.35-1.293-79.717 21.003C184.433 9.86 181.513 0 181.513 0s-25.457 16.257-44.709 15.832c-19.251-.426-25.457-5.564-54.977 3.853-29.52 9.41-37.86 38.295-46.419 44.5S0 90.603 0 90.603l.058.359 24.207-7.707S17.625 89.51 3.52 108.52l-.659-.609.025.134s11.336 17.324 22.463 14.121c1.118-.325 2.377-.859 3.753-1.56 4.48 2.495 10.327 4.947 16.783 5.622 0 0-4.37-5.08-8.016-10.86.984-.634 1.994-1.293 3.02-1.96l-.476.334 9.217 3.386-1.017-8.666c.033-.017.058-.042.091-.059l9.059 3.328-1.126-7.882a76.868 76.868 0 0 1 3.436-1.693l9.443-35.717 39.045-26.634-3.103 7.808c-7.916 19.468-22.78 24.064-22.78 24.064l-6.206 2.352c-4.612 5.455-6.556 6.798-8.14 25.107 3.72-.934 7.273-1.16 10.492-.292 16.683 4.496 22.463 24.599 17.967 30.162-1.126 1.393-3.803 3.77-7.181 6.565h-6.773l-.092 5.488c-.234.184-.467.359-.693.542h-6.89l-.083 5.355c-.609.468-1.218.918-1.801 1.36-6.473.133-14.673-5.514-14.673-5.514 0 5.139 4.28 13.046 4.28 13.046s.283-.133.758-.367c-.417.309-.65.476-.65.476s17.324 11.552 28.235 7.273c9.7-3.804 34.816-23.606 56.495-32.981l65.603-17.283 8.65-22.413-49.997 13.17V83.597l58.664-15.457 8.65-22.413-67.297 17.734V43.324z"></path></svg><!--/$--></span>Fastify</span></a><a aria-label="hono" href="/it/doc/environment/hono" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" preserveAspectRatio="xMidYMid" viewBox="0 0 256 330" role="img" aria-label="Hono logo"><path d="M134.129.029c.876-.113 1.65.108 2.319.662a1256.253 1256.253 0 0 1 69.573 93.427c16.094 24.231 29.788 49.851 41.082 76.862 18.037 48.108 8.65 89.963-28.16 125.564-32.209 27.22-69.314 37.822-111.318 31.805-50.208-10.237-84.332-39.28-102.373-87.133C.553 225.638-.993 209.736.614 193.51c2.676-27.93 9.302-54.877 19.878-80.838 4.407-10.592 10.15-20.31 17.228-29.154a381.88 381.88 0 0 1 16.565 21.203c2.44 2.55 4.98 4.98 7.62 7.289C82.06 72.01 106.135 34.685 134.13.029Z" fill="#FF5B11" opacity=".993"></path><path d="M129.49 53.7c24.314 28.2 46.29 58.238 65.93 90.114a187.318 187.318 0 0 1 15.24 33.13c8.338 32.804-.607 59.86-26.836 81.169-25.367 17.85-53.196 23.15-83.488 15.902-32.666-10.136-51.55-32.113-56.653-65.929-1.238-10.662-.133-21.043 3.314-31.142a225.41 225.41 0 0 1 17.89-35.78l19.878-29.155a5509.508 5509.508 0 0 0 44.726-58.31Z" fill="#FF9758"></path></svg><!--/$--></span>Hono</span></a><a aria-label="adonis" href="/it/doc/environment/adonisjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg style="z-index:0" class="shrink-0 size-3.5" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" role="img" aria-label="Adonis logo"><path d="M106.812 307.933l78.418-178.207c13.23-30.039 38.692-46.332 70.77-46.332 32.078 0 57.535 16.29 70.773 46.328l78.414 178.211c3.562 8.656 6.617 19.86 6.617 29.531 0 44.297-31.059 75.356-75.36 75.356-15.085 0-27.07-3.848-39.198-7.746-12.43-3.993-25.012-8.036-41.246-8.036-16.047 0-28.938 4.079-41.614 8.09-12.257 3.88-24.316 7.692-38.832 7.692-44.296 0-75.359-31.055-75.359-75.352 0-9.676 3.059-20.879 6.617-29.535z" fill="#fff"></path><path d="M6 256c0 201.628 48.371 250 250 250 201.628 0 250-48.372 250-250C506 54.37 457.627 6 256 6 54.37 6 6 54.371 6 256zm100.812 51.933l78.418-178.207c13.23-30.039 38.692-46.332 70.77-46.332 32.078 0 57.535 16.29 70.773 46.328l78.414 178.211c3.562 8.656 6.617 19.86 6.617 29.531 0 44.297-31.059 75.356-75.36 75.356-15.085 0-27.07-3.848-39.198-7.746-12.43-3.993-25.012-8.036-41.246-8.036-16.047 0-28.938 4.079-41.614 8.09-12.257 3.88-24.316 7.692-38.832 7.692-44.296 0-75.359-31.055-75.359-75.352 0-9.676 3.059-20.879 6.621-29.535h-.004zM256 160.785L178.605 335.94c22.914-10.695 49.39-15.785 77.395-15.785 26.988 0 54.48 5.09 76.374 15.781L256 160.789v-.004z" fill="#5a45ff"></path></svg><!--/$--></span>Adonis</span></a></div></div></div></div></div></li><li><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full py-0! pl-0!" aria-expanded="false" aria-pressed="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1u8qb9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap"><span class="truncate font-semibold text-neutral transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text" label="other"><span class="flex items-center gap-1.5 opacity-60">Altro</span></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out" id="_R_1u8qb9bcq_-accordion-content" aria-labelledby="_R_1u8qb9bcq_-accordion-content"><div style="min-height:0px" class=""><div class="pl-3 text-sm"><div class="flex flex-col items-start gap-2 p-1 text-neutral transition-colors hover:text-text"><a aria-label="lynx-and-react" href="/it/doc/environment/lynx-and-react" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-xs transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="27" height="28" viewBox="0 0 27 28" fill="currentColor" role="img" aria-label="Lynx logo" xmlns="http://www.w3.org/2000/svg" style="z-index:0" class="shrink-0 size-3.5"><g style="opacity:0"></g><g><circle style="fill:#ffffff;stroke-width:0.2;stroke:#1a1a1a;stroke-dasharray:none" cx="13.533393" cy="-14.052804" r="13.173257" transform="scale(1,-1)"></circle><g transform="matrix(0.81399984,0,0,0.81399984,2.5290274,2.4955799)" style="fill:#000000"><path fill-rule="evenodd" clip-rule="evenodd" d="M 7.56542,6.19594 3.90642,8.7164 C 3.50877,8.99031 3.23346,9.40191 3.13675,9.86708 L 2.77902,11.5878 C 2.76005,11.679 2.71799,11.7642 2.65665,11.8355 l -1.660344,2.1766 c -0.223545,0.2601 -0.218154,0.9511 0.394134,1.3936 0.23479,0.2046 0.54871,0.6634 0.90578,1.1853 0.75602,1.1049 1.70547,2.4926 2.5069,2.3484 1.13408,-0.3984 2.52232,-0.5259 3.58816,0 2.07192,1.7888 1.56321,3.4381 0.83386,5.8027 -0.29349,0.9515 -0.62271,2.0188 -0.83386,3.2576 0.99515,-3.622 3.23292,-7.8286 7.26792,-9.256 -0.727,-0.5939 -2.2106,-1.1456 -3.5235,-1.2784 0,0 4.0334,-3.4532 9.0082,-5.0399 C 17.671,4.16205 11.9386,0.213095 11.9386,0.213095 11.6465,-0.148197 11.0566,-0.0296711 10.9349,0.414774 10.8371,1.72112 10.675,2.60942 10.4074,3.44676 L 8.39128,1.12029 C 8.18068,0.866399 7.75965,1.013 7.76176,1.33949 8.10312,3.23719 8.05521,4.30239 7.56542,6.19594 Z M 8.9846,6.02248 8.99663,6.02171 C 9.02298,6.02002 9.0489,6.01659 9.07424,6.01153 Z M 11.7123,1.7617 C 13.094,4.1491 13.7199,5.5054 13.9322,8.03659 12.4625,7.2017 11.8221,6.98923 10.7413,6.99451 11.3718,5.0773 11.5644,3.92284 11.7123,1.7617 Z" fill="white" style="fill:#000000"></path><path d="m 20.5926,19.4929 c -5.6277,1.2877 -8.8245,3.2269 -11.26936,8.5072 4.38876,-7.3634 17.67436,-6.0465 17.67436,-6.0465 -0.2482,-1.2028 -2.8897,-3.4965 -4.627,-4.9033 0,0 1.4016,-1.7231 4.5,-2.5953 0,0 -5.9571,0.3452 -9.4251,2.2177 1.1235,0.5929 2.5626,1.5936 3.1471,2.8202 z" fill="white" style="fill:#000000"></path></g></g></svg><!--/$--></span>Lynx e React</span></a></div></div></div></div></div></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="plugins"><span class="flex items-center gap-1.5 opacity-60">Plugins</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="syncJSON" href="/it/doc/plugin/sync-json" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">JSON</span></a></li><li><a aria-label="syncPO" href="/it/doc/plugin/sync-po" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">gettext (.po)</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="dev-tools"><span class="flex items-center gap-1.5 opacity-60">Strumenti per sviluppatori</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="vs-code-extension" href="/it/doc/vs-code-extension" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Estensione VS Code</span></a></li><li><a aria-label="mcp-server" href="/it/doc/mcp-server" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Server MCP</span></a></li><li><a aria-label="agent-skills" href="/it/doc/agent_skills" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Abilità dell’agente</span></a></li><li><a aria-label="lsp" href="/it/doc/lsp" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">Language Server Protocol</span></a></li></ul></div><div><span class="flex w-full truncate text-nowrap p-2 text-left font-semibold text-neutral transition-color" label="releases"><span class="flex items-center gap-1.5 opacity-60">Versioni</span></span><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="v9" href="/it/doc/releases/v9" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v9</span></a></li><li><a aria-label="v8" href="/it/doc/versioni/v8" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v8</span></a></li><li><a aria-label="v7" href="/it/doc/releases/v7" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v7</span></a></li><li><a aria-label="v6" href="/it/doc/releases/v6" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60">v6</span></a></li></ul></div><div><a aria-label="benchmark" href="/it/doc/benchmark" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Benchmark</span></a><ul class="mt-4 flex flex-col gap-4 border-neutral border-l-[0.5px] p-1 text-base"><li><a aria-label="nextjs" href="/it/doc/benchmark/nextjs" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg width="800px" height="800px" viewBox="0 0 256 256" version="1.1" preserveAspectRatio="xMidYMid" fill="currentColor" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Nextjs logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m 119.90598,4.4814875 c -0.53154,0.048313 -2.22282,0.2174192 -3.745,0.3382075 C 81.054703,7.9843533 48.17125,26.923985 27.344258,56.034007 15.746859,72.219661 8.329357,90.57951 5.5266527,110.02645 c -0.9906106,6.78831 -1.1114168,8.7934 -1.1114168,17.99748 0,9.20409 0.1208062,11.20918 1.1114168,17.99749 6.7168263,46.40692 39.7452473,85.39745 84.5401943,99.84374 8.021533,2.58488 16.477973,4.34839 26.094133,5.41133 3.745,0.41069 19.93304,0.41069 23.67803,0 16.59877,-1.83598 30.66062,-5.94279 44.52917,-13.021 2.12619,-1.08709 2.53693,-1.37699 2.247,-1.61856 -0.19329,-0.14494 -9.25375,-12.29627 -20.12631,-26.98414 l -19.7639,-26.69426 -24.76528,-36.64721 c -13.62694,-20.14753 -24.83776,-36.62307 -24.934405,-36.62307 -0.09665,-0.0242 -0.19329,16.25813 -0.241612,36.13991 -0.07248,34.81123 -0.09665,36.21238 -0.531547,37.03375 -0.628193,1.18372 -1.111418,1.66687 -2.12619,2.19834 -0.77316,0.38652 -1.449674,0.459 -5.098022,0.459 h -4.179896 l -1.111416,-0.70058 c -0.724838,-0.45899 -1.256386,-1.06293 -1.618805,-1.7635 l -0.507385,-1.08711 0.04832,-48.43617 0.07249,-48.460335 0.748999,-0.94215 c 0.386579,-0.507311 1.208061,-1.159569 1.787931,-1.47362 0.990612,-0.483153 1.377191,-0.531468 5.557087,-0.531468 4.928894,0 5.750376,0.193262 7.030921,1.594408 0.36242,0.386523 13.7719,20.582355 29.81498,44.909155 16.04305,24.3268 37.98146,57.54363 48.75739,73.85007 l 19.5706,29.64148 0.99061,-0.65225 c 8.77054,-5.70121 18.04845,-13.81819 25.39347,-22.27339 15.63232,-17.94917 25.70756,-39.83604 29.09014,-63.17237 0.99062,-6.78831 1.11141,-8.7934 1.11141,-17.99749 0,-9.20408 -0.12079,-11.20917 -1.11141,-17.99748 C 243.75652,63.619523 210.72809,24.629005 165.93316,10.182703 158.03243,7.6219874 149.62432,5.8584758 140.20143,4.7955375 137.88194,4.5539609 121.91136,4.2882259 119.90598,4.4814875 Z m 50.59365,74.7439055 c 1.15974,0.579785 2.10202,1.691038 2.44028,2.850608 0.1933,0.6281 0.24162,14.059778 0.1933,44.329369 l -0.0725,43.43554 -7.65911,-11.74064 -7.68328,-11.74064 v -31.57411 c 0,-20.413252 0.0966,-31.888157 0.24161,-32.443785 0.38658,-1.352829 1.23223,-2.415769 2.39196,-3.043868 0.99061,-0.507311 1.35304,-0.555627 5.14636,-0.555627 3.57585,0 4.20405,0.04831 5.00138,0.483153 z" fill="currentColor"></path></svg><!--/$--></span>Next.js</span></a></li><li><a aria-label="tanstack" href="/it/doc/benchmark/tanstack" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg height="660" viewBox="0 0 663 660" width="663" xmlns="http://www.w3.org/2000/svg" fill="currentColor" role="img" aria-label="Tanstack logo" style="z-index:0" class="shrink-0 size-3.5"><path d="m305.114318.62443771c8.717817-1.14462121 17.926803-.36545135 26.712694-.36545135 32.548987 0 64.505987 5.05339923 95.64868 14.63098274 39.74418 12.2236582 76.762804 31.7666864 109.435876 57.477568 40.046637 31.5132839 73.228974 72.8472109 94.520714 119.2362609 39.836383 86.790386 39.544267 191.973146-1.268422 278.398081-26.388695 55.880442-68.724007 102.650458-119.964986 136.75724-41.808813 27.828603-90.706831 44.862601-140.45707 50.89341-63.325458 7.677926-131.784923-3.541603-188.712259-32.729444-106.868873-54.795293-179.52309291-165.076271-180.9604082-285.932068-.27660564-23.300971.08616998-46.74071 4.69884909-69.814998 7.51316071-37.57857 20.61272131-73.903917 40.28618971-106.877282 21.2814003-35.670293 48.7704861-67.1473767 81.6882804-92.5255597 38.602429-29.7610135 83.467691-51.1674988 130.978372-62.05777669 11.473831-2.62966514 22.9946-4.0869914 34.57273-5.4964306l3.658171-.44480576c3.050084-.37153079 6.104217-.74794222 9.162589-1.14972654zm-110.555861 549.44131429c-14.716752 1.577863-30.238964 4.25635-42.869928 12.522173 2.84343.683658 6.102369.004954 9.068638 0 7.124652-.011559 14.317732-.279903 21.434964.032202 17.817402.781913 36.381729 3.63214 53.58741 8.350042 22.029372 6.040631 41.432961 17.928687 62.656049 25.945156 22.389644 8.456554 44.67706 11.084675 68.427 11.084675 11.96813 0 23.845573-.035504 35.450133-3.302696-6.056202-3.225083-14.72582-2.619864-21.434964-3.963236-14.556814-2.915455-28.868774-6.474936-42.869928-11.470264-10.304996-3.676672-20.230803-8.214291-30.11097-12.848661l-6.348531-2.985046c-9.1705-4.309263-18.363277-8.560752-27.845391-12.142608-24.932161-9.418465-52.560181-14.071964-79.144482-11.221737zm22.259385-62.614168c-29.163917 0-58.660076 5.137344-84.915434 18.369597-6.361238 3.206092-12.407546 7.02566-18.137277 11.258891-1.746125 1.290529-4.841829 2.948483-5.487351 5.191839-.654591 2.275558 1.685942 4.182039 3.014086 5.637703 6.562396-3.497556 12.797498-7.199878 19.78612-9.855246 45.19892-17.169893 99.992458-13.570779 145.098218 2.172348 22.494346 7.851335 43.219483 19.592421 65.129314 28.800338 24.503461 10.297807 49.53043 16.975034 75.846795 20.399104 31.04195 4.037546 66.433549.7654 94.808495-13.242161 9.970556-4.921843 23.814245-12.422267 28.030337-23.320339-5.207047.454947-9.892236 2.685918-14.83959 4.224149-7.866632 2.445646-15.827248 4.51974-23.908229 6.138887-27.388113 5.486604-56.512458 6.619429-84.091013 1.639788-25.991939-4.693152-50.142596-14.119246-74.179513-24.03502l-3.068058-1.268177c-2.045137-.846788-4.089983-1.695816-6.135603-2.544467l-3.069142-1.272366c-12.279956-5.085721-24.606928-10.110797-37.210937-14.51024-24.485325-8.546552-50.726667-13.784628-76.671218-13.784628zm51.114145-447.9909432c-34.959602 7.7225298-66.276908 22.7605319-96.457338 41.7180089-17.521434 11.0054099-34.281927 22.2799893-49.465301 36.4444283-22.5792616 21.065423-39.8360564 46.668751-54.8866988 73.411509-15.507372 27.55357-25.4498976 59.665686-30.2554517 90.824149-4.7140432 30.568106-5.4906485 62.70747-.0906864 93.301172 6.7503648 38.248526 19.5989769 74.140579 39.8896436 107.337631 6.8187918-3.184625 11.659796-10.445603 17.3128555-15.336896 11.4149428-9.875888 23.3995608-19.029311 36.2745548-26.928535 4.765981-2.923712 9.662222-5.194315 14.83959-7.275014 1.953055-.785216 5.14604-1.502727 6.06527-3.647828 1.460876-3.406732-1.240754-9.335897-1.704904-12.865654-1.324845-10.095517-2.124534-20.362774-1.874735-30.549941.725492-29.668947 6.269727-59.751557 16.825623-87.521453 7.954845-20.924233 20.10682-39.922168 34.502872-56.971512 4.884699-5.785498 10.077731-11.170545 15.437296-16.512656 3.167428-3.157378 7.098271-5.858983 9.068639-9.908915-10.336599.006606-20.674847 2.987289-30.503603 6.013385-21.174447 6.519522-41.801477 16.19312-59.358362 29.841512-8.008432 6.226409-13.873368 14.387371-21.44733 20.939921-2.32322 2.010516-6.484901 4.704691-9.695199 3.187928-4.8500728-2.29042-4.1014979-11.835213-4.6571581-16.222019-2.1369011-16.873476 4.2548401-38.216325 12.3778671-52.843142 13.039878-23.479694 37.150915-43.528712 65.467327-42.82854 12.228647.302197 22.934587 4.551115 34.625711 7.324555-2.964621-4.211764-6.939158-7.28162-10.717482-10.733763-9.257431-8.459031-19.382979-16.184864-30.503603-22.028985-4.474136-2.350694-9.291232-3.77911-14.015169-5.506421-2.375159-.867783-5.36616-2.062533-6.259834-4.702213-1.654614-4.888817 7.148561-9.416813 10.381943-11.478522 12.499882-7.969406 27.826705-14.525258 42.869928-14.894334 23.509209-.577147 46.479246 12.467678 56.162903 34.665926 3.404469 7.803171 4.411273 16.054969 5.079109 24.382907l.121749 1.56229.174325 2.345587c.01913.260708.038244.521433.057403.782164l.11601 1.56437.120128 1.563971c7.38352-6.019164 12.576553-14.876995 19.78612-21.323859 16.861073-15.07846 39.936636-21.7722 61.831627-14.984333 19.786945 6.133107 36.984382 19.788105 47.105807 37.959541 2.648042 4.754231 10.035685 16.373942 4.698379 21.109183-4.177345 3.707277-9.475079.818243-13.880788-.719162-3.33605-1.16376-6.782939-1.90214-10.241828-2.585698l-1.887262-.369639c-.629089-.122886-1.257979-.246187-1.886079-.372129-11.980496-2.401886-25.91652-2.152533-37.923398-.041284-7.762754 1.364839-15.349083 4.127545-23.083807 5.271929v1.651348c21.149714.175043 41.608563 12.240618 52.043268 30.549941 4.323267 7.585468 6.482428 16.267431 8.138691 24.770223 2.047864 10.50918.608423 21.958802-2.263037 32.201289-.962925 3.433979-2.710699 9.255807-6.817143 10.046802-2.902789.558982-5.36781-2.330878-7.024898-4.279468-4.343878-5.10762-8.475879-9.96341-13.573278-14.374161-12.895604-11.157333-26.530715-21.449361-40.396663-31.373138-7.362086-5.269452-15.425755-12.12007-23.908229-15.340199 2.385052 5.745041 4.721463 11.086326 5.532694 17.339156 2.385876 18.392716-5.314223 35.704625-16.87179 49.540445-3.526876 4.222498-7.29943 8.475545-11.744712 11.755948-1.843407 1.360711-4.156734 3.137561-6.595373 2.752797-7.645687-1.207961-8.555849-12.73272-9.728176-18.637115-3.970415-19.998652-2.375984-39.861068 3.132802-59.448534-4.901187 2.485279-8.443727 7.923994-11.521293 12.385111-6.770975 9.816439-12.645804 20.199291-16.858599 31.375615-16.777806 44.519521-16.616219 96.664142 5.118834 139.523233 2.427098 4.786433 6.110614 4.144058 10.894733 4.144058.720854 0 1.44257-.004515 2.164851-.010924l2.168232-.022283c4.338648-.045438 8.686803-.064635 12.979772.508795 2.227588.297243 5.320818.032202 7.084256 1.673642 2.111344 1.966755.986008 5.338808.4996 7.758859-1.358647 6.765574-1.812904 12.914369-1.812904 19.816178 9.02412-1.398692 11.525415-15.866153 14.724172-23.118874 3.624982-8.216283 7.313444-16.440823 10.667192-24.770223 1.648843-4.093692 3.854171-8.671229 3.275427-13.210785-.649644-5.10184-4.335633-10.510831-6.904531-14.862134-4.86244-8.234447-10.389363-16.70834-13.969002-25.595896-2.861567-7.104926-.197036-15.983399 7.871579-18.521521 4.450228-1.400344 9.198073 1.345848 12.094266 4.562675 6.07269 6.74328 9.992815 16.777697 14.401823 24.692609l34.394873 61.925556c2.920926 5.243856 5.848447 10.481933 8.836976 15.687808 1.165732 2.031158 2.352075 5.167068 4.740424 6.0332 2.127008.77118 5.033095-.325315 7.148561-.748886 5.492297-1.099798 10.97635-2.287117 16.488434-3.28288 6.605266-1.193099 16.673928-.969342 21.434964-6.129805-6.963066-2.205375-15.011895-2.074919-22.259386-1.577863-4.352947.298894-9.178287 1.856116-13.178381-.686135-5.953149-3.783239-9.910373-12.522173-13.552668-18.377854-8.980425-14.439388-17.441465-29.095929-26.041008-43.760726l-1.376261-2.335014-2.765943-4.665258c-1.380597-2.334387-2.750786-4.67476-4.079753-7.036188-1.02723-1.826391-2.549937-4.233231-1.078344-6.24705 1.545791-2.114476 4.91472-2.239146 7.956473-2.243117l.603351.000261c1.195428.001526 2.315572.002427 3.222811-.11692 12.27399-1.615019 24.718635-2.952611 37.098976-2.952611-.963749-3.352237-3.719791-7.141255-2.838484-10.73046 1.972017-8.030506 13.526287-10.543033 18.899867-4.780653 3.60767 3.868283 5.704174 9.192229 8.051303 13.859765 3.097352 6.162006 6.624228 12.118418 9.940876 18.16483 5.805578 10.585967 12.146205 20.881297 18.116667 31.375615.49237.865561.999687 1.726685 1.512269 2.587098l.771613 1.290552c2.577138 4.303168 5.164895 8.635123 6.553094 13.461506-20.735854-.9487-36.30176-25.018751-45.343193-41.283704-.721369 2.604176.450959 4.928448 1.388326 7.431066 1.948109 5.197619 4.276275 10.147535 7.20627 14.862134 4.184765 6.732546 8.982075 13.665732 15.313633 18.553722 11.236043 8.673707 26.05255 8.721596 39.572241 7.794364 8.669619-.595311 19.50252-4.542034 28.030338-1.864372 8.513803 2.673532 11.940924 12.063098 6.884745 19.276187-3.787393 5.403211-8.842747 7.443452-15.128962 8.257566 4.445282 9.53571 10.268996 18.385285 14.490036 28.072919 1.758491 4.035895 3.59118 10.22102 7.8048 12.350433 2.805507 1.416857 6.824562.09743 9.85761.034678-3.043765-8.053625-8.742992-14.887729-11.541904-23.118874 8.533589.390544 16.786875 4.843404 24.732651 7.685374 15.630376 5.590144 31.063836 11.701854 46.475333 17.86913l7.112077 2.848685c6.338978 2.538947 12.71588 5.052299 18.961699 7.812528 2.285297 1.009799 5.449427 3.370401 7.975455 1.917215 2.061054-1.186494 3.394144-4.015253 4.665403-5.931643 3.55573-5.361927 6.775921-10.928622 9.965609-16.513481 12.774414-22.36586 22.143967-46.872692 28.402976-71.833646 20.645168-82.323009 2.934117-173.156241-46.677107-241.922507-19.061454-26.420745-43.033164-49.262193-69.46165-68.1783861-66.13923-47.336721-152.911262-66.294198-232.486917-48.7172481zm135.205158 410.5292842c-17.532977 4.570931-35.601827 8.714164-53.58741 11.040088 2.365265 8.052799 8.145286 15.885969 12.376218 23.118874 1.635653 2.796558 3.3859 6.541816 6.618457 7.755557 3.651364 1.370619 8.063669-.853747 11.508927-1.975838-1.595256-4.364513-4.279573-8.292245-6.476657-12.385112-.905215-1.687677-2.305907-3.685809-1.559805-5.68972 1.410585-3.786541 7.266452-3.563609 10.509727-4.221671 8.54678-1.733916 17.004522-3.898008 25.557073-5.611281 3.150939-.631641 7.538512-2.342438 10.705115-1.285575 2.371037.791232 3.800147 2.744743 5.152304 4.781948l.606196.918752c.80912 1.222827 1.637246 2.41754 2.671212 3.351165 3.457625 3.121874 8.628398 3.60159 13.017619 4.453686-2.678546-6.027421-7.130424-11.301001-9.984571-17.339156-1.659561-3.511592-3.023155-8.677834-6.656381-10.707341-5.005064-2.795733-15.341663 2.461334-20.458024 3.795624zm-110.472507-40.151706c-.825246 10.467897-4.036369 18.984725-9.068639 28.072919 5.76683.729896 11.649079.989984 17.312856 2.39363 4.244947 1.051908 8.156828 3.058296 12.366325 4.211763-2.250671-6.157877-6.426367-11.651913-9.661398-17.339156-3.266358-5.740912-6.189758-12.717032-10.949144-17.339156z" transform="translate(.9778)"></path></svg><!--/$--></span>TanStack</span></a></li><li><a aria-label="vue" href="/it/doc/benchmark/vue" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 261.76 226.69" role="img" aria-label="Vuejs logo" style="z-index:0" class="shrink-0 size-3.5"><g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)"><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" fill="#41b883"></path></g><g transform="translate(178.06 235.01)"><path d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" fill="#34495e"></path></g></g></svg><!--/$--></span>Vue</span></a></li><li><a aria-label="solid" href="/it/doc/benchmark/solid" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Solid logo" style="z-index:0" class="shrink-0 size-3.5"><defs><linearGradient id="a" x1="27.5" x2="152" y1="3" y2="63.5" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#76b3e1"></stop><stop offset=".3" stop-color="#dcf2fd"></stop><stop offset="1" stop-color="#76b3e1"></stop></linearGradient><linearGradient id="b" x1="95.8" x2="74" y1="32.6" y2="105.2" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#76b3e1"></stop><stop offset=".5" stop-color="#4377bb"></stop><stop offset="1" stop-color="#1f3b77"></stop></linearGradient><linearGradient id="c" x1="18.4" x2="144.3" y1="64.2" y2="149.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#315aa9"></stop><stop offset=".5" stop-color="#518ac8"></stop><stop offset="1" stop-color="#315aa9"></stop></linearGradient><linearGradient id="d" x1="75.2" x2="24.4" y1="74.5" y2="260.8" gradientTransform="translate(-3.22 1.507) scale(.80503)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4377bb"></stop><stop offset=".5" stop-color="#1a336b"></stop><stop offset="1" stop-color="#1a336b"></stop></linearGradient></defs><path fill="#76b3e1" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z"></path><path fill="url(#a)" d="M128 29.683S85.333-1.713 52.327 5.532l-2.415.805c-4.83 1.61-8.855 4.025-11.27 7.245l-1.61 2.415-12.076 20.931 20.93 4.025c8.856 5.636 20.127 8.05 30.592 5.636l37.031 7.245z" opacity=".3"></path><path fill="#518ac8" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z"></path><path fill="url(#b)" d="m38.642 29.683-3.22.805C21.735 34.513 17.71 47.394 24.955 58.664c8.05 10.465 24.956 16.1 38.641 12.076l49.912-16.906S70.843 22.438 38.642 29.683z" opacity=".3"></path><path fill="url(#c)" d="M104.654 65.91a36.226 36.226 0 0 0-38.641-12.076L16.1 69.934 0 98.111l90.164 15.295 16.1-28.981c3.22-5.635 2.415-12.075-1.61-18.516z"></path><path fill="url(#d)" d="M88.553 94.085A36.226 36.226 0 0 0 49.912 82.01L0 98.11s42.667 32.202 75.673 24.152l2.415-.806c13.686-4.025 18.516-16.905 10.465-27.37z"></path></svg><!--/$--></span>Solid</span></a></li><li><a aria-label="svelte" href="/it/doc/benchmark/svelte" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text truncate font-semibold transition-color block w-full flex-row items-center text-nowrap p-2 text-left text-sm transition-colors hover:text-text"><span class="flex items-center gap-1.5 opacity-60"><span class="mr-1 flex items-center"><!--$--><svg xmlns="http://www.w3.org/2000/svg" viewBox="10 10 130 130" role="img" aria-label="Svelte logo" style="z-index:0" class="shrink-0 size-3.5"><path style="fill:none" d="M0,.2H150v150H0Z" transform="translate(0 -0.2)"></path><path style="fill:#FF3E00" d="M120.85,29.22v-.09C109.38,12.72,86.74,7.86,70.36,18.29L41.61,36.61a32.94,32.94,0,0,0-14.9,22A34.73,34.73,0,0,0,30.12,81,33.12,33.12,0,0,0,25.19,93.3a35.19,35.19,0,0,0,6,26.6c11.47,16.4,34.12,21.27,50.49,10.84l28.75-18.25a33.08,33.08,0,0,0,14.91-22,34.79,34.79,0,0,0-3.43-22.31,33.14,33.14,0,0,0,4.94-12.32A35.16,35.16,0,0,0,120.85,29.22Zm-8.23,23.46a22.87,22.87,0,0,1-.68,2.68L111.39,57l-1.47-1.1a37.31,37.31,0,0,0-11.24-5.63L97.57,50l.1-1.1a6.47,6.47,0,0,0-1.16-4.28,6.88,6.88,0,0,0-7.35-2.65,6,6,0,0,0-1.76.77L58.63,61a6,6,0,0,0-2.7,4A6.44,6.44,0,0,0,57,69.82a6.89,6.89,0,0,0,7.33,2.74,6.44,6.44,0,0,0,1.76-.78l11-7A20.75,20.75,0,0,1,83,62.22a22.83,22.83,0,0,1,24.51,9.09,21.09,21.09,0,0,1,3.61,16,19.8,19.8,0,0,1-9,13.29L73.4,118.92a21.53,21.53,0,0,1-5.85,2.57A22.87,22.87,0,0,1,43,112.39a21.14,21.14,0,0,1-3.6-16,18.39,18.39,0,0,1,.68-2.65l.54-1.66,1.48,1.1a37.25,37.25,0,0,0,11.21,5.58l1.1.32-.09,1.11a6.43,6.43,0,0,0,1.2,4.24,6.86,6.86,0,0,0,7.38,2.73,6.06,6.06,0,0,0,1.77-.77L93.41,88.08a6,6,0,0,0,2.7-4A6.36,6.36,0,0,0,95,79.25a6.9,6.9,0,0,0-7.39-2.74,6.31,6.31,0,0,0-1.76.78l-11,7A21.05,21.05,0,0,1,69,86.84a22.84,22.84,0,0,1-24.48-9.08,21.13,21.13,0,0,1-3.58-16,19.83,19.83,0,0,1,9-13.29L78.7,30.15a21.2,21.2,0,0,1,5.8-2.56A22.85,22.85,0,0,1,109,36.69,21.09,21.09,0,0,1,112.62,52.68Z" transform="translate(0 -0.2)"></path></svg><!--/$--></span>Svelte</span></a></li></ul></div><div><a aria-label="Vai al blog" href="/it/blog" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text flex w-full truncate text-nowrap p-2 text-left font-semibold transition-color"><span class="flex items-center gap-1.5 opacity-60">Blog</span></a></div><div><a aria-label="Clicca per accedere al chatbot intelligente per la documentazione intelligente" href="/it/doc/chat" target="_self" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl text-text w-full truncate text-nowrap p-2 text-left font-semibold transition-color flex items-center"><span class="flex items-center gap-1.5 opacity-60"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bot" aria-hidden="true"><path d="M12 8V4H8"></path><rect width="16" height="12" x="4" y="8" rx="2"></rect><path d="M2 14h2"></path><path d="M20 14h2"></path><path d="M15 13v2"></path><path d="M9 13v2"></path></svg>Fai una domanda</span></a></div></nav></div></div></div></div></div></div></div></aside><div class="mx-1 mb-3 flex min-h-0 min-w-0 flex-1 flex-row rounded-2xl border border-neutral/40 bg-background md:mr-2"><article aria-label="Contenuto della documentazione" class="no-scrollbar relative mb-3 h-full max-h-[calc(100vh-4.5rem)] w-auto flex-1 grow overflow-auto px-4 pb-24 max-md:pl-10 md:px-10" id="content"><div class="m-auto max-w-3xl"><nav aria-label="breadcrumb"><ol class="flex flex-row flex-wrap items-center gap-2 mt-12 ml-3 text-xs" itemScope="" itemType="http://schema.org/BreadcrumbList"><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><a href="/it/doc/get-started" aria-label="Go to Documentation" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral" itemProp="item" itemScope="" itemType="https://schema.org/WebPage" itemID="/it/doc/get-started"><span itemProp="name">Documentation</span></a><meta itemProp="position" content="1"/></li><li aria-hidden="true" class="flex items-center"><span class="text-neutral"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span></li><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><span itemProp="item" class="inline-flex items-center font-medium text-neutral-700 transition-colors duration-200"><span itemProp="name">Ambiente</span><meta itemProp="position" content="2"/></span></li><li aria-hidden="true" class="flex items-center"><span class="text-neutral"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span></li><li itemProp="itemListElement" itemScope="" itemType="https://schema.org/ListItem" class="flex items-center"><a href="https://intlayer.org/it/doc/environment/vite-and-svelte" aria-label="Go to Vite e Svelte" target="_self" aria-current="page" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral" itemProp="item" itemScope="" itemType="https://schema.org/WebPage" itemID="https://intlayer.org/it/doc/environment/vite-and-svelte"><span itemProp="name">Vite e Svelte</span></a><meta itemProp="position" content="3"/></li></ol></nav><header class="z-10 mx-auto mt-5 flex flex-col gap-2 px-4 py-2 text-xs"><span class="flex items-center gap-2">Autore<!-- -->:<!-- --> <div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-author-social-medias" aria-haspopup="true"><a href="https://github.com/aymericzip" aria-label="Pagina github di Aymeric PINEAU" rel="noopener noreferrer nofollow" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl flex items-center gap-2 text-neutral"><div class="rounded-full border-text ring-offset-0 transition-ring duration-200 size-7 border-[1px] p-0.25 scale-70" aria-label="Avatar di Aymeric PINEAU" role="img"><div class="relative flex aspect-square size-full flex-row items-center justify-center"><div class="absolute top-0 left-0 flex aspect-square size-full flex-col items-center justify-center rounded-full bg-text text-text-opposite"><img class="size-full rounded-full object-cover" src="https://avatars.githubusercontent.com/u/62554073?v=4&size=124" srcSet="https://avatars.githubusercontent.com/u/62554073?v=4&size=124" alt="Avatar di Aymeric PINEAU" width="59" height="59" loading="lazy" draggable="false"/></div></div></div>Aymeric PINEAU</a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 flex w-auto min-w-0 flex-row gap-2 p-2 delay-200 group-hover/popover:delay-100" role="group" aria-labelledby="unrollable-panel-button-author-social-medias" id="unrollable-panel-author-social-medias"><a href="https://www.linkedin.com/in/aymericpineau/" aria-label="Go to https://www.linkedin.com/in/aymericpineau/" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg role="img" aria-label="LinkedIn logo" xmlns="http://www.w3.org/2000/svg" width="72" height="72" viewBox="0 0 72 72" class="h-auto max-h-full max-w-full"><mask id="linkedin-mask"><rect width="72" height="72" fill="white"></rect><path d="M62,62 L51.315625,62 L51.315625,43.8021149 C51.315625,38.8127542 49.4197917,36.0245323 45.4707031,36.0245323 C41.1746094,36.0245323 38.9300781,38.9261103 38.9300781,43.8021149 L38.9300781,62 L28.6333333,62 L28.6333333,27.3333333 L38.9300781,27.3333333 L38.9300781,32.0029283 C38.9300781,32.0029283 42.0260417,26.2742151 49.3825521,26.2742151 C56.7356771,26.2742151 62,30.7644705 62,40.051212 L62,62 Z M16.349349,22.7940133 C12.8420573,22.7940133 10,19.9296567 10,16.3970067 C10,12.8643566 12.8420573,10 16.349349,10 C19.8566406,10 22.6970052,12.8643566 22.6970052,16.3970067 C22.6970052,19.9296567 19.8566406,22.7940133 16.349349,22.7940133 Z M11.0325521,62 L21.769401,62 L21.769401,27.3333333 L11.0325521,27.3333333 L11.0325521,62 Z" fill="black"></path></mask><rect width="72" height="72" rx="8" fill="currentColor" mask="url(#linkedin-mask)"></rect></svg></a><a href="https://x.com/aymericzip" aria-label="Go to https://x.com/aymericzip" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 271" width="300" height="271" fill="currentColor" role="img" aria-label="X logo" class="h-auto max-h-full max-w-full"><path d="m236 0h46l-101 115 118 156h-92.6l-72.5-94.8-83 94.8h-46l107-123-113-148h94.9l65.5 86.6zm-16.1 244h25.5l-165-218h-27.4z"></path></svg></a><a href="https://github.com/aymericzip" aria-label="Go to https://github.com/aymericzip" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl max-h-5 max-w-5 shrink-0 transition-colors hover:text-primary"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="h-auto max-h-full max-w-full"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg></a></div></div></span><div class="flex w-full flex-row justify-between gap-4 py-2"><span class="block">Creazione<!-- -->:<span class="ml-2 text-neutral">2025-04-18</span></span><span class="block">Ultimo aggiornamento<!-- -->:<span class="ml-2 text-neutral">2026-05-31</span></span></div></header><div class="text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/70 p-0 border-text sticky top-10 z-10 mx-auto mt-5 flex max-w-3xl flex-col gap-2 px-4 py-2 max-md:overflow-x-auto"><div class="flex w-full flex-row justify-between gap-4"><div class="flex w-full shrink flex-row items-center justify-start gap-4"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-mcp" aria-haspopup="true"><a aria-label="Visualizza il modello di applicazione" rel="noopener noreferrer" href="https://github.dev/aymericzip/intlayer-vite-svelte-template" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg role="img" aria-label="GitHub logo" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="size-4"><path d="M127.975 10C61.1744 10 7 64.167 7 130.99C7 184.444 41.663 229.787 89.7396 245.786C95.7928 246.9 97.9987 243.164 97.9987 239.955C97.9987 237.088 97.8947 229.475 97.8353 219.382C64.1824 226.69 57.082 203.161 57.082 203.161C51.5784 189.182 43.6461 185.461 43.6461 185.461C32.6612 177.96 44.4779 178.108 44.4779 178.108C56.6215 178.963 63.0089 190.579 63.0089 190.579C73.8007 209.065 91.329 203.725 98.2215 200.628C99.3208 192.814 102.448 187.482 105.901 184.459C79.0369 181.406 50.7911 171.023 50.7911 124.662C50.7911 111.456 55.5074 100.65 63.2466 92.1974C61.9988 89.1374 57.847 76.8304 64.435 60.1785C64.435 60.1785 74.588 56.9254 97.7016 72.582C107.35 69.8934 117.703 68.5565 127.99 68.5045C138.269 68.5565 148.615 69.8934 158.278 72.582C181.377 56.9254 191.515 60.1785 191.515 60.1785C198.118 76.8304 193.966 89.1374 192.726 92.1974C200.48 100.65 205.159 111.456 205.159 124.662C205.159 171.142 176.869 181.369 149.923 184.362C154.26 188.098 158.13 195.481 158.13 206.77C158.13 222.939 157.981 235.989 157.981 239.955C157.981 243.193 160.165 246.959 166.3 245.778C214.339 229.743 248.973 184.429 248.973 130.99C248.973 64.167 194.798 10 127.975 10Z"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-mcp" id="unrollable-panel-mcp"><strong>Visualizza il modello di applicazione su GitHub</strong><p class="text-neutral">Questa pagina ha un modello di applicazione disponibile.</p></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-application-showcase" aria-haspopup="true"><a aria-label="Vedi l'applicazione showcase" rel="noopener noreferrer" href="https://intlayer-vite-svelte-template.vercel.app" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe size-4" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-application-showcase" id="unrollable-panel-application-showcase"><strong>Vedi l'applicazione showcase</strong><p class="text-neutral">Questa pagina collega a una demo dal vivo del modello.</p></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-summarize" aria-haspopup="true"><a href="https://chatgpt.com/?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con ChatGPT" rel="noopener noreferrer nofollow" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><!--$--><svg role="img" aria-label="ChatGPT logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320" fill="currentColor" class="size-4"><path d="m297.06 130.97c7.26-21.79 4.76-45.66-6.85-65.48-17.46-30.4-52.56-46.04-86.84-38.68-15.25-17.18-37.16-26.95-60.13-26.81-35.04-.08-66.13 22.48-76.91 55.82-22.51 4.61-41.94 18.7-53.31 38.67-17.59 30.32-13.58 68.54 9.92 94.54-7.26 21.79-4.76 45.66 6.85 65.48 17.46 30.4 52.56 46.04 86.84 38.68 15.24 17.18 37.16 26.95 60.13 26.8 35.06.09 66.16-22.49 76.94-55.86 22.51-4.61 41.94-18.7 53.31-38.67 17.57-30.32 13.55-68.51-9.94-94.51zm-120.28 168.11c-14.03.02-27.62-4.89-38.39-13.88.49-.26 1.34-.73 1.89-1.07l63.72-36.8c3.26-1.85 5.26-5.32 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zm-128.84-55.03c-7.03-12.14-9.56-26.37-7.15-40.18.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83l-64.41 37.19c-28.69 16.52-65.33 6.7-81.92-21.95zm-16.77-139.09c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91-26.93 15.55c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94-7.01 12.14-18.05 21.44-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8c-3.23-1.89-7.23-1.89-10.47 0l-77.79 44.92v-31.1c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22 6.99 12.12 9.52 26.31 7.15 40.1zm-168.51 55.43-26.94-15.55c-.29-.14-.48-.42-.52-.74v-74.39c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07l-63.72 36.8c-3.26 1.85-5.26 5.31-5.24 9.06l-.04 89.79zm14.63-31.54 34.65-20.01 34.65 20v40.01l-34.65 20-34.65-20z"></path></svg><!--/$--></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral left-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-50 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-summarize" id="unrollable-panel-summarize"><strong>Riferimento a questa documentazione al tuo assistente AI preferito</strong><a href="https://chatgpt.com/?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con ChatGPT" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="ChatGPT logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 320" fill="currentColor" class="size-4"><path d="m297.06 130.97c7.26-21.79 4.76-45.66-6.85-65.48-17.46-30.4-52.56-46.04-86.84-38.68-15.25-17.18-37.16-26.95-60.13-26.81-35.04-.08-66.13 22.48-76.91 55.82-22.51 4.61-41.94 18.7-53.31 38.67-17.59 30.32-13.58 68.54 9.92 94.54-7.26 21.79-4.76 45.66 6.85 65.48 17.46 30.4 52.56 46.04 86.84 38.68 15.24 17.18 37.16 26.95 60.13 26.8 35.06.09 66.16-22.49 76.94-55.86 22.51-4.61 41.94-18.7 53.31-38.67 17.57-30.32 13.55-68.51-9.94-94.51zm-120.28 168.11c-14.03.02-27.62-4.89-38.39-13.88.49-.26 1.34-.73 1.89-1.07l63.72-36.8c3.26-1.85 5.26-5.32 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zm-128.84-55.03c-7.03-12.14-9.56-26.37-7.15-40.18.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83l-64.41 37.19c-28.69 16.52-65.33 6.7-81.92-21.95zm-16.77-139.09c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91-26.93 15.55c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94-7.01 12.14-18.05 21.44-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8c-3.23-1.89-7.23-1.89-10.47 0l-77.79 44.92v-31.1c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22 6.99 12.12 9.52 26.31 7.15 40.1zm-168.51 55.43-26.94-15.55c-.29-.14-.48-.42-.52-.74v-74.39c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07l-63.72 36.8c-3.26 1.85-5.26 5.31-5.24 9.06l-.04 89.79zm14.63-31.54 34.65-20.01 34.65 20v40.01l-34.65 20-34.65-20z"></path></svg><!--/$-->ChatGPT</a><a href="https://claude.ai/new?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Claude" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Anthropic logo" fill="none" viewBox="0 0 24 24" height="24" width="24" class="size-4"><path fill="currentColor" d="m13.788825 3.932 6.43325 16.136075h3.5279L17.316725 3.932H13.788825Z" stroke-width="0.25"></path><path fill="currentColor" d="m6.325375 13.682775 2.20125 -5.67065 2.201275 5.67065H6.325375ZM6.68225 3.932 0.25 20.068075h3.596525l1.3155 -3.3886h6.729425l1.315275 3.3886h3.59655L10.371 3.932H6.68225Z" stroke-width="0.25"></path></svg><!--/$-->Claude</a><a href="https://chat.deepseek.com/?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con DeepSeek" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="DeepSeek logo" fill="currentColor" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z"></path></svg><!--/$-->DeepSeek</a><a href="https://www.google.com/search?udm=50&aep=11&q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Google AI mode" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Google AI logo" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="size-4"><path d="M915.2 448l-4.2-17.8H524V594h231.2c-24 114-135.4 174-226.4 174-66.2 0-136-27.8-182.2-72.6-47.4-46-77.6-113.8-77.6-183.6 0-69 31-138 76.2-183.4 45-45.2 113.2-70.8 181-70.8 77.6 0 133.2 41.2 154 60l116.4-115.8c-34.2-30-128-105.6-274.2-105.6-112.8 0-221 43.2-300 122C144.4 295.8 104 408 104 512s38.2 210.8 113.8 289c80.8 83.4 195.2 127 313 127 107.2 0 208.8-42 281.2-118.2 71.2-75 108-178.8 108-287.6 0-45.8-4.6-73-4.8-74.2z"></path></svg><!--/$-->Google AI mode</a><a href="https://gemini.google.com/?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Gemini" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Gemini logo" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="size-4"><path d="M16 8.016A8.522 8.522 0 008.016 16h-.032A8.521 8.521 0 000 8.016v-.032A8.521 8.521 0 007.984 0h.032A8.522 8.522 0 0016 7.984v.032z" fill="currentColor"></path></svg><!--/$-->Gemini</a><a href="https://www.perplexity.ai/search/new?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Perplexity" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg width="400" role="img" aria-label="Perplexity logo" height="400" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg" class="size-4"><path fill-rule="evenodd" clip-rule="evenodd" d="M101.008 42L190.99 124.905L190.99 124.886L190.99 42.1913H208.506L208.506 125.276L298.891 42V136.524L336 136.524V272.866H299.005V357.035L208.506 277.525L208.506 357.948H190.99L190.99 278.836L101.11 358V272.866H64V136.524H101.008V42ZM177.785 153.826H81.5159V255.564H101.088V223.472L177.785 153.826ZM118.625 231.149V319.392L190.99 255.655L190.99 165.421L118.625 231.149ZM209.01 254.812V165.336L281.396 231.068V272.866H281.489V318.491L209.01 254.812ZM299.005 255.564H318.484V153.826L222.932 153.826L299.005 222.751V255.564ZM281.375 136.524V81.7983L221.977 136.524L281.375 136.524ZM177.921 136.524H118.524V81.7983L177.921 136.524Z" fill="currentColor"></path></svg><!--/$-->Perplexity</a><a href="https://chat.mistral.ai/chat/?q=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Mistral" rel="noopener noreferrer nofollow" target="_blank" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg fill="currentColor" role="img" aria-label="Mistral logo" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path clip-rule="evenodd" d="M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z"></path></svg><!--/$-->Mistral</a><a href=" https://x.com/i/grok?text=Riepiloga il documento seguente : https://intlayer.org/it/doc/environment/vite-and-svelte.md" aria-label="Riepilogo con Grok" target="_self" class="duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex flex-row items-center gap-4 p-3"><!--$--><svg role="img" aria-label="Grok logo" fill="currentColor" fill-rule="evenodd" height="1em" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" class="size-4"><path d="M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815"></path></svg><!--/$-->Grok</a><p class="text-neutral">Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta</p></div></div><div class="flex size-5 h-8 flex-1 flex-row items-center justify-between gap-5 p-2"><svg role="progressbar" viewBox="0 0 10 10" aria-valuenow="0" aria-valuemin="0" aria-valuemax="1" class="block h-full shrink-0"><circle cx="5" cy="5" r="4" fill="none" stroke-width="1" class="stroke-current/25"></circle><circle cx="5" cy="5" r="4" fill="none" stroke-width="1" stroke="currentColor" stroke-dasharray="25.132741228718345" stroke-dashoffset="25.132741228718345" stroke-linecap="round" transform="rotate(-90 5 5)" class="transition-all"></circle></svg><span class="w-full flex-1 truncate text-neutral text-xs"></span></div></div><div class="flex shrink-0 flex-row items-center justify-end gap-4"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-outdated-translation" aria-haspopup="true"><div class="flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock size-4" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg></div><div class="backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-neutral text-sm" role="group" aria-labelledby="unrollable-panel-button-outdated-translation" id="unrollable-panel-outdated-translation"><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 divide-y divide-dashed divide-text/20 border-text gap-0 mt-3 max-h-[60vh] min-w-64" role="list" aria-label="Document history"><h4 class="mb-2 pb-4 font-medium text-sm text-text">Cronologia delle versioni</h4><ol class="divide-y divide-dashed divide-text/20 overflow-y-auto p-1"><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->8.9.0</span><span class="text-nowrap">04/05/2026</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Aggiungi comando init"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->7.5.9</span><span class="text-nowrap">30/12/2025</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Aggiornamento doc"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->5.5.11</span><span class="text-nowrap">19/11/2025</span></div></li><li class="flex flex-row items-center justify-between gap-3 px-2 py-1 pr-1.5"><span class="mt-1 text-text text-xs">"Inizializzazione cronologia"</span><div class="flex flex-col items-end justify-between gap-1 px-2 py-1 text-neutral text-sm"><span class="text-nowrap">v<!-- -->5.5.10</span><span class="text-nowrap">29/06/2025</span></div></li></ol></div></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-language" aria-haspopup="true"><div class="flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages size-4" aria-hidden="true"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg></div><div class="backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-neutral text-sm" role="group" aria-labelledby="unrollable-panel-button-language" id="unrollable-panel-language"><p>Il contenuto di questa pagina è stato tradotto con un'IA.</p><a aria-label="Fai clic per cambiare la lingua in inglese" href="/doc/environment/vite-and-svelte" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text">Vedi l'ultima versione del contenuto originale in inglese</a></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-contribute" aria-haspopup="true"><a aria-label="Clicca qui per contribuire" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/edit/main/docs/docs/it/intlayer_with_vite+svelte.md" target="_blank" class="gap-3 duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text flex p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-pen size-4" aria-hidden="true"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"></path></svg></a><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-1 flex-col gap-2 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-contribute" id="unrollable-panel-contribute"><strong>Modifica questa documentazione</strong><p class="text-neutral">Se hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.</p><a aria-label="Clicca qui per contribuire" rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+svelte.md" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text">Collegamento GitHub alla documentazione<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center p-2" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-4" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copia</strong><p class="text-neutral">Copia il Markdown del documento nella porta-documenti</p></div></div></div></div></div><div class="m-auto flex max-w-2xl flex-col gap-8 p-4 text-text/90 max-md:px-0"><div class="flex flex-col gap-8 py-10"><h1 class="text-3xl mb-8 text-text" id="traduci-il-tuo-sito-web-vite-e-svelte-usando-intlayer--internazionalizzazione-i18n">Traduci il tuo sito web Vite e Svelte usando Intlayer | Internazionalizzazione (i18n)</h1><div class="relative w-full rounded-xl border border-card"><div class="flex shrink-0 gap-3 p-3 sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"><div class="relative z-0 flex size-full flex-row items-center gap-2 border-text text-text" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none" data-active="true" role="tab" aria-selected="true" aria-controls="tabpanel-code" id="tab-code" type="button" tabindex="0">Codice</button><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none text-neutral/70" data-active="false" role="tab" aria-selected="false" aria-controls="tabpanel-demo" id="tab-demo" type="button" tabindex="-1">Demo</button></div></div><div class="relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]" style="touch-action:pan-y"><div role="tablist" aria-orientation="horizontal" class="grid w-full min-w-0 transition-transform duration-300 ease-in-out" style="grid-template-columns:repeat(2, 100%);transform:translateX(-0%)"><div role="tabpanel" aria-labelledby="tab-code" id="tabpanel-code" aria-hidden="false" tabindex="0" data-active="true" class="w-full min-w-0 p-3 opacity-100 transition-opacity duration-300 ease-in-out"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts" title="Demo CodeSandbox - Intlayer" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">ide.intlayer.org<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div></div></div><div role="tabpanel" aria-labelledby="tab-demo" id="tabpanel-demo" aria-hidden="true" tabindex="-1" data-active="false" class="w-full min-w-0 p-3 transition-opacity duration-300 ease-in-out pointer-events-none opacity-0"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://intlayer-vite-svelte-template.vercel.app" title="Demo - intlayer-vite-svelte-template" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://intlayer-vite-svelte-template.vercel.app/" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">intlayer-vite-svelte-template.vercel.app<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div></div></div></div></div></div><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="indice" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Indice</h2><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="perche-intlayer-rispetto-alle-alternative" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Perché Intlayer rispetto alle alternative?</h2><p>Rispetto alle soluzioni principali come <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-i18n</code> o <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">i18next</code>, Intlayer è una soluzione dotata di ottimizzazioni integrate come:</p> <div class="text-text rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl px-3 py-2 border-[1.3px] border-neutral/20 backdrop-blur-none bg-transparent flex flex-col gap-1 overflow-hidden"> <div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Copertura completa e snella</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_1259j9bcq_-accordion-content" aria-labelledby="_R_1259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Intlayer è ottimizzato per funzionare perfettamente con Svelte offrendo <strong class="text-text">ambito del contenuto a livello di componente</strong>, <strong class="text-text">traduzioni reattive</strong> e tutte le funzionalità necessarie per scalare l'internazionalizzazione (i18n).</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_1i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Dimensione del bundle</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_1i59j9bcq_-accordion-content" aria-labelledby="_R_1i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Invece di caricare enormi file JSON nelle tue pagine, carica solo il contenuto necessario. Intlayer aiuta a <strong class="text-text">ridurre le dimensioni del bundle e della pagina fino al 50%</strong>.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_2259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Manutenibilità</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_2259j9bcq_-accordion-content" aria-labelledby="_R_2259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>L'ambito del contenuto dell'applicazione <strong class="text-text">facilita la manutenzione</strong> per applicazioni su larga scala. Puoi duplicare o eliminare una singola cartella di funzionalità senza l'onere mentale di rivedere l'intera codebase dei contenuti. Inoltre, Intlayer è <strong class="text-text">completamente tipizzato (fully typed)</strong> per garantire l'accuratezza dei tuoi contenuti.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_2i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Agente IA</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_2i59j9bcq_-accordion-content" aria-labelledby="_R_2i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>La co-localizzazione dei contenuti <strong class="text-text">riduce il contesto necessario</strong> dai Large Language Models (LLM). Intlayer viene fornito anche con una suite di strumenti, come una <strong class="text-text">CLI</strong> per verificare le traduzioni mancanti,<strong class="text-text"><a href="/it/doc/lsp" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">LSP</a></strong>, <strong class="text-text"><a href="/it/doc/mcp-server" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">MCP</a></strong> e <strong class="text-text"><a href="/it/doc/agent_skills" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">capacità dell'agente</a></strong>, per rendere l'esperienza dello sviluppatore (DX) ancora più fluida per gli agenti IA.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_3259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Automazione</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_3259j9bcq_-accordion-content" aria-labelledby="_R_3259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Utilizza l'automazione per tradurre nella tua pipeline CI/CD utilizzando il LLM di tua scelta al costo del tuo provider di intelligenza artificiale. Intlayer offre anche un <strong class="text-text">compilatore</strong> per automatizzare l'estrazione dei contenuti, nonché una <a href="/it/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">piattaforma web</a> per aiutare a <strong class="text-text">tradurre in background</strong>.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_3i59j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Prestazione</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_3i59j9bcq_-accordion-content" aria-labelledby="_R_3i59j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>La connessione di enormi file JSON ai componenti può portare a problemi di prestazioni e reattività. Intlayer ottimizza il caricamento dei contenuti in fase di compilazione.</p> </div></div></div></div><div class="w-full"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 min-h-8 px-6 text-sm max-md:py-2 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-start text-left w-full flex items-center justify-between gap-2 text-lg!" aria-expanded="false" aria-busy="false" aria-disabled="false" aria-controls="_R_4259j9bcq_-accordion-content"><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="flex-1 truncate whitespace-nowrap">Scalabilità con nessuno sviluppatore</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down flex-none shrink-0 size-4 ml-3 transform transition-transform duration-500 ease-in-out -rotate-180" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div tabindex="-1" role="region" class="group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out divide-y divide-neutral" id="_R_4259j9bcq_-accordion-content" aria-labelledby="_R_4259j9bcq_-accordion-content"><div style="min-height:0px" class="divide-y divide-neutral"><div class="mb-8 flex flex-col gap-6 px-4 pt-6 text-sm text-text/80"> <p>Più di una semplice soluzione i18n, Intlayer fornisce un <strong class="text-text"><a href="/it/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">editor visivo</a></strong> self-hosted e un <strong class="text-text"><a href="/it/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">CMS completo</a></strong> per aiutarti gestisci i tuoi contenuti multilingue in <strong class="text-text">tempo reale</strong>, semplificando la collaborazione con traduttori, copywriter e altri membri del team. I contenuti possono essere archiviati localmente e/o in remoto.</p> </div></div></div></div></div><hr class="mx-6 mt-16 border-dashed text-neutral"/><h2 class="mb-2 text-2xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-16 text-text" id="guida-passo-passo-per-configurare-intlayer-in-unapplicazione-vite-e-svelte" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Guida passo-passo per configurare Intlayer in un'applicazione Vite e Svelte</h2><div class="flex flex-col text-text backdrop-blur rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl bg-card/70 border-[1.3px] border-neutral/20 gap-0 overflow-hidden p-0"><iframe sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts" loading="lazy" src="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts" title="Demo CodeSandbox - Come internazionalizzare la tua applicazione usando Intlayer" class="block max-h-[80vh] min-h-[12rem] w-full m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"></iframe><div class="flex items-center justify-between gap-3 px-3 py-1"><a href="https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts" aria-label="" rel="noopener noreferrer" target="_blank" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] hover:bg-current/0 hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl inline-flex min-w-0 max-w-[calc(100%-3rem)] items-center gap-2 text-neutral text-xs underline-offset-2 hover:text-text hover:underline">ide.intlayer.org<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Open embedded page in fullscreen" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Open embedded page in fullscreen</span></button></div></div><p>Consulta il <a rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer-vite-svelte-template" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Template dell'Applicazione<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a> su GitHub.</p> <ol class="list-none"> <li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">1</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-1-installa-le-dipendenze" aria-label="Passo 1: Installa le dipendenze">Installa le dipendenze</h3></div> <p>Installa i pacchetti necessari usando npm:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il gestore dei pacchetti"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm install intlayer svelte-intlayer</span><span class="line block w-full">npm install vite-intlayer --save-dev</span><span class="line block w-full">npx intlayer init</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> <ul class="mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80"><li><p><strong class="text-text">intlayer</strong></p> <p>Il pacchetto core che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la <a href="/it/doc/concept/content" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">dichiarazione dei contenuti</a>, la transpilation e i <a href="/it/doc/concept/cli" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">comandi CLI</a>.</p> </li><li><p><strong class="text-text">svelte-intlayer</strong> Il pacchetto che integra Intlayer con l'applicazione Svelte. Fornisce context provider e hook per l'internazionalizzazione in Svelte.</p> </li><li><p><strong class="text-text">vite-intlayer</strong> Include il plugin Vite per integrare Intlayer con il <a rel="noopener noreferrer" href="https://vite.dev/guide/why.html#why-bundle-for-production" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">bundler Vite<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a>, oltre a middleware per rilevare la locale preferita dall'utente, gestire i cookie e gestire il reindirizzamento degli URL.</p> </li></ul></div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">2</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-2-configurazione-del-tuo-progetto" aria-label="Passo 2: Configurazione del tuo progetto">Configurazione del tuo progetto</h3></div> <p>Crea un file di configurazione per impostare le lingue della tua applicazione:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">intlayer.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { Locales, type IntlayerConfig } from "intlayer";</span><span class="line block w-full"></span><span class="line block w-full">const config: IntlayerConfig = {</span><span class="line block w-full"> internationalization: {</span><span class="line block w-full"> locales: [</span><span class="line block w-full"> Locales.ENGLISH,</span><span class="line block w-full"> Locales.FRENCH,</span><span class="line block w-full"> Locales.SPANISH,</span><span class="line block w-full"> // Le tue altre localizzazioni</span><span class="line block w-full"> ],</span><span class="line block w-full"> defaultLocale: Locales.ENGLISH,</span><span class="line block w-full"> },</span><span class="line block w-full">};</span><span class="line block w-full"></span><span class="line block w-full">export default config;</span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Attraverso questo file di configurazione, puoi impostare URL localizzati, reindirizzamenti middleware, nomi dei cookie, la posizione e l'estensione delle tue dichiarazioni di contenuto, disabilitare i log di Intlayer nella console e altro ancora. Per un elenco completo dei parametri disponibili, consulta la <a href="/it/doc/concept/configuration" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione di configurazione</a>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">3</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-3-integra-intlayer-nella-tua-configurazione-vite" aria-label="Passo 3: Integra Intlayer nella tua configurazione Vite">Integra Intlayer nella tua configurazione Vite</h3></div> <p>Aggiungi il plugin intlayer nella tua configurazione.</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { defineConfig } from "vite";</span><span class="line block w-full">import { svelte } from "@sveltejs/vite-plugin-svelte";</span><span class="line block w-full">import { intlayer } from "vite-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">// https://vitejs.dev/config/</span><span class="line block w-full">export default defineConfig({</span><span class="line block w-full"> plugins: [svelte(), intlayer()],</span><span class="line block w-full">});</span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Il plugin Vite <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer()</code> viene utilizzato per integrare Intlayer con Vite. Garantisce la generazione 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.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">4</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-4-dichiara-il-tuo-contenuto" aria-label="Passo 4: Dichiara il tuo contenuto">Dichiara il tuo contenuto</h3></div> <p>Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/app.content.tsx</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il formato del dizionario"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { t, type Dictionary } from "intlayer"; const appContent = { key: "app", content: { title: t({ en: "Hello World", fr: "Bonjour le monde", es: "Hola mundo", }), }, } satisfies Dictionary; export default appContent;</code></pre></div></div> <!-- --> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Le tue dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione non appena sono incluse nella directory <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">contentDir</code> (di default, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">./src</code>). E devono corrispondere all'estensione del file di dichiarazione del contenuto (di default, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}</code>).</blockquote> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Per maggiori dettagli, consulta la <a href="/it/doc/concept/content" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione sulla dichiarazione del contenuto</a>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">5</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-5-utilizza-intlayer-nel-tuo-codice" aria-label="Passo 5: Utilizza Intlayer nel tuo codice">Utilizza Intlayer nel tuo codice</h3></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script></span><span class="line block w-full"> import { useIntlayer } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full"> const content = useIntlayer("app");</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div></span><span class="line block w-full"></span><span class="line block w-full"></span><span class="line block w-full"><!-- Renderizza il contenuto come contenuto semplice --></span><span class="line block w-full"><h1>{$content.title}</h1></span><span class="line block w-full"><!-- Per rendere il contenuto modificabile usando l'editor --></span><span class="line block w-full"><h1>{@const Title = $content.title}<Title /></h1></span><span class="line block w-full"><!-- Per rendere il contenuto come stringa --></span><span class="line block w-full"><div aria-label={$content.title.value}></div></span><span class="line block w-full"><div aria-label={$content.title.toString()}></div></span><span class="line block w-full"><div aria-label={String($content.title)}></div></span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Se la tua app esiste già, puoi utilizzare l' <a href="/it/doc/compiler" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Intlayer Compiler</a> in combinazione con il <a href="/it/doc/concept/cli/extract" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">comando extract</a> per convertire migliaia di componenti in un secondo.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">6</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-6-cambia-la-lingua-del-tuo-contenuto" aria-label="Passo 6: Cambia la lingua del tuo contenuto">Cambia la lingua del tuo contenuto</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { getLocaleName } from 'intlayer';</span><span class="line block w-full">import { useLocale } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">// Ottieni informazioni sulla locale e la funzione setLocale</span><span class="line block w-full">const { locale, availableLocales, setLocale } = useLocale();</span><span class="line block w-full"></span><span class="line block w-full">// Gestisci il cambio di locale</span><span class="line block w-full">const changeLocale = (event: Event) => {</span><span class="line block w-full"> const target = event.target as HTMLSelectElement;</span><span class="line block w-full"> const newLocale = target.value;</span><span class="line block w-full"> setLocale(newLocale);</span><span class="line block w-full">};</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div></span><span class="line block w-full"> <select value={$locale} on:change={changeLocale}></span><span class="line block w-full"> {#each availableLocales ?? [] as loc}</span><span class="line block w-full"> <option value={loc}></span><span class="line block w-full"> {getLocaleName(loc)}</span><span class="line block w-full"> </option></span><span class="line block w-full"> {/each}</span><span class="line block w-full"> </select></span><span class="line block w-full"></div></span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">7</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-7-renderizza-markdown" aria-label="Passo 7: Renderizza Markdown">Renderizza Markdown</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <p>Intlayer supporta il rendering di contenuti Markdown direttamente nella tua applicazione Svelte. Per default, il Markdown è trattato come testo semplice. Per convertire il Markdown in HTML ricco, puoi integrare <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">@humanspeak/svelte-markdown</code> o un altro parser Markdown.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Per vedere come dichiarare contenuti markdown usando il pacchetto <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code>, consulta la <a rel="noopener noreferrer" href="https://github.com/aymericzip/intlayer/tree/main/docs/docs/it/dictionary/markdown.md" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione markdown<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a>.</blockquote> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script></span><span class="line block w-full"> import { setIntlayerMarkdown } from "svelte-intlayer";</span><span class="line block w-full"></span><span class="line block w-full"> setIntlayerMarkdown((markdown) =></span><span class="line block w-full"> // rendi il contenuto markdown come stringa</span><span class="line block w-full"> return markdown;</span><span class="line block w-full"> );</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><h1>{$content.markdownContent}</h1></span></code></pre></div></div><!--/$--></div></div></div> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Puoi anche accedere ai dati del front-matter del tuo markdown usando la proprietà <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">content.markdownContent.metadata.xxx</code>.</blockquote> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">8</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-8-configura-l'editor-/-cms-di-intlayer" aria-label="Passo 8: Configura l'editor / CMS di intlayer">Configura l'editor / CMS di intlayer</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <p>Per configurare l'editor di intlayer, devi seguire la <a href="/it/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione dell'editor intlayer</a>.</p> <p>Per configurare il CMS di intlayer, devi seguire la <a href="/it/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione del CMS intlayer</a>.</p> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">7</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-7-aggiungi-il-routing-localizzato-alla-tua-applicazione" aria-label="Passo 7: Aggiungi il routing localizzato alla tua applicazione">Aggiungi il routing localizzato alla tua applicazione</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <p>Per gestire il routing localizzato nella tua applicazione Svelte, puoi usare <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code> insieme a <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">localeFlatMap</code> di Intlayer per generare le rotte per ogni locale.</p> <p>Per prima cosa, installa <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il gestore dei pacchetti"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm install svelte-spa-router</span><span class="line block w-full">npx intlayer init</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> <p>Quindi, crea un file <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Router.svelte</code> per definire le tue rotte:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/Router.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { localeFlatMap } from "intlayer";</span><span class="line block w-full">import Router from "svelte-spa-router";</span><span class="line block w-full">import { wrap } from "svelte-spa-router/wrap";</span><span class="line block w-full">import App from "./App.svelte";</span><span class="line block w-full"></span><span class="line block w-full">const routes = Object.fromEntries(</span><span class="line block w-full"> localeFlatMap(({locale, urlPrefix}) => [</span><span class="line block w-full"> [</span><span class="line block w-full"> urlPrefix || '/',</span><span class="line block w-full"> wrap({</span><span class="line block w-full"> component: App as any,</span><span class="line block w-full"> props: {</span><span class="line block w-full"> locale,</span><span class="line block w-full"> },</span><span class="line block w-full"> }),</span><span class="line block w-full"> ],</span><span class="line block w-full"> ])</span><span class="line block w-full">);</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><Router {routes} /></span></code></pre></div></div><!--/$--></div></div></div> <p>Aggiorna il tuo <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">main.ts</code> per montare il componente <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Router</code> invece di <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">App</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/main.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { mount } from "svelte";</span><span class="line block w-full">import Router from "./Router.svelte";</span><span class="line block w-full"></span><span class="line block w-full">const app = mount(Router, {</span><span class="line block w-full"> target: document.getElementById("app")!,</span><span class="line block w-full">});</span><span class="line block w-full"></span><span class="line block w-full">export default app;</span></code></pre></div></div><!--/$--></div></div></div> <p>Infine, aggiorna il tuo <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">App.svelte</code> per ricevere la prop <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">locale</code> e utilizzarla con <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">useIntlayer</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/App.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import type { Locale } from 'intlayer';</span><span class="line block w-full">import { useIntlayer } from "svelte-intlayer";</span><span class="line block w-full">import Counter from './lib/Counter.svelte';</span><span class="line block w-full">import LocaleSwitcher from './lib/LocaleSwitcher.svelte';</span><span class="line block w-full"></span><span class="line block w-full">export let locale: Locale;</span><span class="line block w-full"></span><span class="line block w-full">// Usa useIntlayer per ottenere i contenuti localizzati per l'app</span><span class="line block w-full">$: content = useIntlayer('app', locale);</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><main></span><span class="line block w-full"> <div class="locale-switcher-container"></span><span class="line block w-full"> <LocaleSwitcher currentLocale={locale} /></span><span class="line block w-full"> </div></span><span class="line block w-full"></span><span class="line block w-full"> <!-- ... resto della tua app ... --></span><span class="line block w-full"></main></span></code></pre></div></div><!--/$--></div></div></div> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="configura-il-routing-lato-server-opzionale" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Configura il Routing lato Server (Opzionale)</h4><p>In parallelo, puoi anche utilizzare <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerProxy</code> 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 basandosi sulle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, effettuerà un reindirizzamento alla locale predefinita.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Nota che per utilizzare <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerProxy</code> in produzione, è necessario spostare il pacchetto <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">vite-intlayer</code> da <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">devDependencies</code> a <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">dependencies</code>.</blockquote> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il formato del codice"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; import { intlayer, intlayerProxy } from "vite-intlayer"; plugins: [intlayerProxy(), // should be placed first svelte(), intlayer()], });</code></pre></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">8</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-8-cambiare-l'url-quando-la-lingua-cambia" aria-label="Passo 8: Cambiare l'URL quando la lingua cambia">Cambiare l'URL quando la lingua cambia</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <p>Per permettere agli utenti di cambiare lingua e aggiornare di conseguenza l'URL, puoi creare un componente <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">LocaleSwitcher</code>. Questo componente utilizzerà <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getLocalizedUrl</code> da <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code> e <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">push</code> da <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">svelte-spa-router</code>.</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">src/lib/LocaleSwitcher.svelte</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"><script lang="ts"></span><span class="line block w-full">import { getLocaleName, getLocalizedUrl } from "intlayer";</span><span class="line block w-full">import { useLocale } from "svelte-intlayer";</span><span class="line block w-full">import { push } from "svelte-spa-router";</span><span class="line block w-full"></span><span class="line block w-full">export let currentLocale: string | undefined = undefined;</span><span class="line block w-full"></span><span class="line block w-full">// Ottieni le informazioni sulla lingua</span><span class="line block w-full">const { locale, availableLocales } = useLocale();</span><span class="line block w-full"></span><span class="line block w-full">// Gestisci il cambio di lingua</span><span class="line block w-full">const changeLocale = (event: Event) => {</span><span class="line block w-full"> const target = event.target as HTMLSelectElement;</span><span class="line block w-full"> const newLocale = target.value;</span><span class="line block w-full"> const currentUrl = window.location.pathname;</span><span class="line block w-full"> const url = getLocalizedUrl( currentUrl, newLocale);</span><span class="line block w-full"> push(url);</span><span class="line block w-full">};</span><span class="line block w-full"></script></span><span class="line block w-full"></span><span class="line block w-full"><div class="locale-switcher"></span><span class="line block w-full"> <select value={currentLocale ?? $locale} onchange={changeLocale}></span><span class="line block w-full"> {#each availableLocales ?? [] as loc}</span><span class="line block w-full"> <option value={loc}></span><span class="line block w-full"> {getLocaleName(loc)}</span><span class="line block w-full"> </option></span><span class="line block w-full"> {/each}</span><span class="line block w-full"> </select></span><span class="line block w-full"></div></span></code></pre></div></div><!--/$--></div></div></div> </div></li><li class="group relative flex w-full flex-1 gap-4"><div class="flex flex-col max-md:hidden" aria-hidden="true"><div class="ml-4 h-10 border-text/20 border-l border-dashed group-first-of-type:hidden"></div><span class="flex size-8 shrink-0 items-center justify-center rounded-full border-2 border-text/30 border-dotted bg-background font-black text-base text-text/70 max-md:hidden group-first-of-type:mt-10">1</span><div class="ml-4 flex-1 border-text/20 border-l border-dashed group-last-of-type:h-40 group-last-of-type:flex-none group-last-of-type:[-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] group-last-of-type:[mask-image:linear-gradient(to_bottom,black,transparent)]"></div></div><div class="mt-10 mb-8 flex w-full min-w-0 flex-col gap-8"><div class="flex items-center items-center gap-2"><h3 class="mb-2 relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 font-semibold text-lg text-text" id="step-1-estrarre-il-contenuto-dei-tuoi-componenti" aria-label="Passo 1: Estrarre il contenuto dei tuoi componenti">Estrarre il contenuto dei tuoi componenti</h3><span class="mb-2 ml-4 rounded-full bg-neutral/15 px-3 py-1 text-text/90 text-xs">Opzionale</span></div> <p>Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.</p> <p>Per facilitare questo processo, Intlayer propone un <a href="/it/doc/compiler" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">compilatore</a> / <a href="/it/doc/concept/cli/extract" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">estrattore</a> per trasformare i tuoi componenti ed estrarre il contenuto.</p> <p>Per configurarlo, puoi aggiungere una sezione <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">compiler</code> nel tuo file <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer.config.ts</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">intlayer.config.ts</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il formato del codice"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><pre class="min-w-0 max-w-full overflow-x-auto"><code>import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Resto della tua configurazione compiler: { /** * Indica se il compilatore deve essere abilitato. */ enabled: true, /** * Definisce il percorso dei file di output */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso. */ saveComponents: false, /** * Prefisso chiave dizionario */ dictionaryKeyPrefix: "", }, }; export default config;</code></pre></div></div> <div class="relative w-full rounded-xl border border-card"><div class="flex shrink-0 gap-3 p-3 sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"><div class="relative z-0 flex size-full flex-row items-center gap-2 border-text text-text" aria-orientation="horizontal" aria-multiselectable="false" role="tablist"><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none" data-active="true" role="tab" aria-selected="true" aria-controls="tabpanel-Comando di estrazione" id="tab-Comando di estrazione" type="button" tabindex="0">Comando di estrazione</button><button class="cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none text-neutral/70" data-active="false" role="tab" aria-selected="false" aria-controls="tabpanel-Compilatore Babel" id="tab-Compilatore Babel" type="button" tabindex="-1">Compilatore Babel</button></div></div><div class="relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]" style="touch-action:pan-y"><div role="tablist" aria-orientation="horizontal" class="grid w-full min-w-0 transition-transform duration-300 ease-in-out" style="grid-template-columns:repeat(2, 100%);transform:translateX(-0%)"><div role="tabpanel" aria-labelledby="tab-Comando di estrazione" id="tabpanel-Comando di estrazione" aria-hidden="false" tabindex="0" data-active="true" class="w-full min-w-0 p-3 opacity-100 transition-opacity duration-300 ease-in-out"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <p>Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il gestore dei pacchetti"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npx intlayer extract</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> </div></div><div role="tabpanel" aria-labelledby="tab-Compilatore Babel" id="tabpanel-Compilatore Babel" aria-hidden="true" tabindex="-1" data-active="false" class="w-full min-w-0 p-3 transition-opacity duration-300 ease-in-out pointer-events-none opacity-0"><div class="flex w-full min-w-0 flex-col items-stretch gap-6"> <p>Aggiorna il tuo <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">vite.config.ts</code> per includere il plugin <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayerCompiler</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">vite.config.ts</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import { defineConfig } from "vite";</span><span class="line block w-full">import { intlayer, intlayerCompiler } from "vite-intlayer";</span><span class="line block w-full"></span><span class="line block w-full">export default defineConfig({</span><span class="line block w-full"> plugins: [</span><span class="line block w-full"> intlayer(),</span><span class="line block w-full"> intlayerCompiler(), // Aggiunge il plugin del compilatore</span><span class="line block w-full"> ],</span><span class="line block w-full">});</span></code></pre></div></div><!--/$--></div></div></div> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"><button type="button" role="combobox" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full cursor-pointer items-center justify-between whitespace-nowrap select-text text-base shadow-none outline-none md:text-sm rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl px-2 py-3 md:py-2 bg-neutral-50 dark:bg-neutral-950 text-text ring-0 focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-500 focus-visible:ring-offset-white dark:focus-visible:ring-offset-neutral-500 [box-shadow:none] focus:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-error [&>span]:line-clamp-1 py-1!" aria-label="Seleziona il gestore dei pacchetti"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevrons-up-down size-4 opacity-50" aria-hidden="true"><path d="m7 15 5 5 5-5"></path><path d="m7 9 5-5 5 5"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex items-center h-11"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">npm run build # Oppure npm run dev</span></code></pre></div></div><!--/$--></div></div></div> <!-- --> <!-- --> <!-- --> </div></div></div></div></div></div></li></ol><h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="configurazione-git" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Configurazione Git</h3><p>Si consiglia di ignorare i file generati da Intlayer. Questo permette di evitare di committarli nel tuo repository Git.</p> <p>Per farlo, puoi aggiungere le seguenti istruzioni nel tuo file <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">.gitignore</code>:</p> <div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">bash</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full"># Ignora i file generati da Intlayer</span><span class="line block w-full">.intlayer</span></code></pre></div></div><!--/$--></div></div></div> <h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="estensione-vs-code" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Estensione VS Code</h3><p>Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare la <strong class="text-text">Intlayer VS Code Extension</strong> ufficiale.</p> <p><a rel="noopener noreferrer" href="https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension" target="_blank" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">Installa dal VS Code Marketplace<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-2 inline-block size-4" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></p> <p>Questa estensione offre:</p> <ul class="mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80"><li><strong class="text-text">Completamento automatico</strong> per le chiavi di traduzione.</li><li><strong class="text-text">Rilevamento errori in tempo reale</strong> per traduzioni mancanti.</li><li><strong class="text-text">Anteprime inline</strong> dei contenuti tradotti.</li><li><strong class="text-text">Azioni rapide</strong> per creare e aggiornare facilmente le traduzioni.</li></ul><p>Per maggiori dettagli su come utilizzare l'estensione, consulta la <a href="/it/doc/vs-code-extension" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">documentazione della Intlayer VS Code Extension</a>.</p> <hr class="mx-6 mt-16 border-dashed text-neutral"/><h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="opzionale-sitemap-e-robotstxt-generazione-in-build" aria-label="Click to scroll to section undefined and copy the link to the clipboard">(Opzionale) Sitemap e robots.txt (generazione in build)</h3><p>Intlayer espone utilità - <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generateSitemap</code> e <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getMultilingualUrls</code> - per formattare <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">sitemap.xml</code> multilingue e <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">robots.txt</code> pronti per i crawler e scriverli automaticamente in <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">public/</code>. Di solito si esegue un piccolo script Node <strong class="text-text">prima</strong> di Vite (ad esempio hook npm <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">predev</code> / <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">prebuild</code>) così che i file siano presenti in build o in sviluppo.</p> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="sitemap" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Sitemap</h4><p>Il generatore di sitemap di Intlayer rispetta le tue lingue e aggiunge i metadati attesi dai crawler.</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">La sitemap supporta lo spazio dei nomi <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">xhtml:link</code> (hreflang). Invece di elencare solo URL “piatti”, Intlayer collega in modo bidirezionale tutte le versioni linguistiche di ogni pagina (ad es. <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/about</code>, <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/fr/about</code> o <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">/about?lang=fr</code> a seconda del routing).</blockquote> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="robotstxt" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Robots.txt</h4><p>Usa <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">getMultilingualUrls</code> così le regole <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">Disallow</code> coprono tutte le varianti localizzate dei percorsi sensibili.</p> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="1-aggiungi-generate-seomjs-nella-root-del-progetto" aria-label="Click to scroll to section undefined and copy the link to the clipboard">1. Aggiungi <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.mjs</code> nella root del progetto</h4><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">generate-seo.mjs</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">import fs from "fs";</span><span class="line block w-full">import path from "path";</span><span class="line block w-full">import { fileURLToPath } from "url";</span><span class="line block w-full">import { generateSitemap, getMultilingualUrls } from "intlayer";</span><span class="line block w-full"></span><span class="line block w-full">const __dirname = path.dirname(fileURLToPath(import.meta.url));</span><span class="line block w-full"></span><span class="line block w-full">const SITE_URL = (process.env.SITE_URL || "http://localhost:5173").replace(</span><span class="line block w-full"> /\/$/,</span><span class="line block w-full"> ""</span><span class="line block w-full">);</span><span class="line block w-full"></span><span class="line block w-full">const pathList = [</span><span class="line block w-full"> { path: "/", changefreq: "daily", priority: 1.0 },</span><span class="line block w-full"> { path: "/about", changefreq: "monthly", priority: 0.7 },</span><span class="line block w-full">];</span><span class="line block w-full"></span><span class="line block w-full">const sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });</span><span class="line block w-full">fs.writeFileSync(path.join(__dirname, "public", "sitemap.xml"), sitemapXml);</span><span class="line block w-full"></span><span class="line block w-full">const getAllMultilingualUrls = (urls) =></span><span class="line block w-full"> urls.flatMap((url) => Object.values(getMultilingualUrls(url)));</span><span class="line block w-full"></span><span class="line block w-full">const disallowedPaths = getAllMultilingualUrls(["/admin", "/private"]);</span><span class="line block w-full"></span><span class="line block w-full">const robotsTxt = [</span><span class="line block w-full"> "User-agent: *",</span><span class="line block w-full"> "Allow: /",</span><span class="line block w-full"> ...disallowedPaths.map((path) => `Disallow: ${path}`),</span><span class="line block w-full"> "",</span><span class="line block w-full"> `Sitemap: ${SITE_URL}/sitemap.xml`,</span><span class="line block w-full">].join("\n");</span><span class="line block w-full"></span><span class="line block w-full">fs.writeFileSync(path.join(__dirname, "public", "robots.txt"), robotsTxt);</span><span class="line block w-full"></span><span class="line block w-full">console.log("SEO files generated successfully.");</span></code></pre></div></div><!--/$--></div></div></div> <p>Serve il pacchetto <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">intlayer</code> installato. Imposta <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">SITE_URL</code> in ambiente per la produzione (es. in CI).</p> <blockquote class="mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral">Preferisci <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.mjs</code> per l’ESM di Node. Con <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">generate-seo.js</code> imposta <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">"type": "module"</code> in <code class="rounded-md border border-neutral/30 bg-card/60 box-decoration-clone px-1.5 py-0.5 font-mono text-sm">package.json</code> oppure abilita l’ESM in Node.</blockquote> <h4 class="text-lg relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-3 text-text" id="2-esegui-lo-script-prima-di-vite" aria-label="Click to scroll to section undefined and copy the link to the clipboard">2. Esegui lo script prima di Vite</h4><div class="flex flex-col text-text backdrop-blur rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/40 p-0 border-text gap-0 relative min-w-0 max-w-full text-sm leading-6 with-line-number ml-0"><div class="grid w-full grid-cols-[1fr_auto] items-center justify-between rounded-t-xl bg-card/50 py-1.5 pr-12 pl-4 text-neutral text-xs"><span class="truncate">package.json</span><div class="flex items-center gap-2"></div></div><div class="sticky top-46 z-20"><div class="absolute right-2 bottom-0 flex h-7 items-center"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-copy" aria-haspopup="true"><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/10 aria-[current]:bg-current/5 justify-center text-center" aria-label="Copia contenuto" aria-busy="false" aria-disabled="false" tabindex="0" title="Copia contenuto"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy flex-none shrink-0 size-3" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Copia contenuto</span></button><div class="text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 border-text absolute z-60 rounded-md ring-1 ring-neutral right-0 top-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:right-2 before:-top-2.5 before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800 flex min-w-64 flex-col gap-3 p-3 text-sm" role="group" aria-labelledby="unrollable-panel-button-copy" id="unrollable-panel-copy"><strong>Copiare il codice</strong><p class="text-neutral">Copiare il codice nella clipboard</p></div></div></div></div><div class="grid w-full min-w-0 max-w-full overflow-x-auto p-2"><div class="flex w-full min-w-0 max-w-full overflow-x-auto"><!--$--><div class="[&_pre.shiki]:!bg-transparent min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre.shiki]:max-w-full [&_pre.shiki]:overflow-x-auto [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]"><div class="min-w-0 max-w-full overflow-x-auto"><pre class="min-w-0 max-w-full overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"><code><span class="line block w-full">{</span><span class="line block w-full"> "scripts": {</span><span class="line block w-full"> "dev": "vite",</span><span class="line block w-full"> "prebuild": "node generate-seo.mjs",</span><span class="line block w-full"> "build": "vite build",</span><span class="line block w-full"> "preview": "vite preview"</span><span class="line block w-full"> }</span><span class="line block w-full">}</span></code></pre></div></div><!--/$--></div></div></div> <p>Adatta i comandi se usi pnpm o yarn. Puoi anche richiamare lo script dalla CI o da un altro passo del pipeline.</p> <h3 class="mb-2 text-xl relative scroll-mb-8 scroll-mt-[30vh] scroll-p-8 after:content-['#'] after:scale-75 after:px-6 after:text-neutral after:top-0 after:h-full after:-left-12 after:absolute after:to-neutral after:md:opacity-0 after:transition-opacity hover:after:opacity-80 after:duration-200 after:delay-100 mt-5 text-text" id="vai-oltre" aria-label="Click to scroll to section undefined and copy the link to the clipboard">Vai oltre</h3><p>Per andare oltre, puoi implementare l'<a href="/it/doc/concept/editor" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">editor visuale</a> o esternalizzare i tuoi contenuti utilizzando il <a href="/it/doc/concept/cms" target="_self" class="gap-3 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 h-auto justify-start border-inherit bg-current/0 px-1 font-medium decoration-[1.5] underline-offset-5 hover:bg-current/0 hover:text-current/80 hover:underline hover:underline-offset-6 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl underline">CMS</a>.</p></div></div><div class="my-3 flex flex-row flex-wrap justify-between gap-3 px-10 text-sm"><a aria-label="Vai alla sezione precedente" target="_self" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative cursor-pointer border-[1.3px] border-current text-center font-medium ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral min-h-8 text-sm max-md:py-2 ring-neutral/20 wrap-break-words ml-auto flex h-auto w-full max-w-1/2 flex-1 flex-row items-center justify-start gap-2 whitespace-normal text-nowrap rounded-lg px-2 py-5" to="/it/doc/environment/vite-and-solid"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left size-5" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg><span class="text-text">Vite e Solid</span></a><a aria-label="Vai alla sezione successiva" target="_self" class="transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 relative cursor-pointer border-[1.3px] border-current text-center font-medium ring-0 *:text-text hover:bg-current/20 hover:ring-5 aria-selected:ring-5 aria-[current]:ring-5 [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-neutral min-h-8 text-sm max-md:py-2 ring-neutral/20 wrap-break-words ml-auto flex h-auto w-full max-w-1/2 flex-1 flex-row items-center justify-end gap-2 whitespace-normal text-nowrap rounded-lg px-2 py-5" to="/it/doc/environment/sveltekit"><span class="text-text">SvelteKit</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-5" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></a></div></div></article><aside aria-label="Su questa pagina" class="flex flex-none flex-row max-lg:hidden"><div class="relative flex min-h-0 w-70 flex-1 flex-col"><div class="relative z-10 mt-10 flex w-full flex-row items-center pt-2"><h2 class="ml-3 text-nowrap text-neutral/80 text-sm uppercase">In questa pagina</h2><div class="absolute bottom-0 left-0 h-8 w-full translate-y-full bg-linear-to-b from-background/90 backdrop-blur"></div></div><div class="relative flex min-h-0 w-full flex-1 overflow-hidden rounded-2xl md:pt-0"><div class="mt-4 flex pl-3"><nav class="flex h-full min-h-0 flex-col"><ul class="flex min-h-0 flex-1 flex-col gap-3 overflow-auto pt-8 pr-3 pb-20"></ul></nav></div><div class="border-dashed transition max-h-[80%] cursor-ns-resize border-neutral-200 border-t-[1px] dark:border-neutral-950 before:absolute before:top-0 before:left-1/2 before:z-10 before:block before:h-1 before:w-10 before:-translate-x-1/2 before:-translate-y-1/2 before:transform before:cursor-ns-resize before:rounded-full before:bg-neutral-200 before:transition before:content-[""] dark:before:bg-neutral-950 active:border-neutral-400 active:before:bg-neutral-400 dark:active:border-neutral-600 active:dark:before:bg-neutral-600 absolute bottom-0 left-0 size-full bg-background/70 backdrop-blur" style="height:250px;min-height:0px" aria-valuemin="0" aria-valuenow="250" aria-label="Resizable component - drag the handle to adjust height" role="slider" tabindex="0"><div role="presentation" class="absolute top-0 left-0 size-full cursor-default overflow-hidden"><div class="justify-bottom size-full text-sm"><div class="flex size-full flex-col items-center justify-between overflow-auto"><div class="relative flex size-full flex-auto"><div class="absolute inset-0 size-full"><div data-testid="virtuoso-scroller" data-virtuoso-scroller="true" style="height:100%;outline:none;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch" tabindex="0"><div data-viewport-type="element" style="height:100%;position:absolute;top:0;width:100%"><div data-testid="virtuoso-item-list" style="box-sizing:border-box;margin-top:0;padding-bottom:0;padding-top:0"></div><div></div></div></div></div></div><div class="w-full flex-1"><form class="item-end flex h-auto flex-col items-end justify-center gap-3 px-4 py-3" autoComplete="off" noValidate=""><div class="flex w-full flex-col flex-wrap gap-2 px-1 py-2" id="_R_ukqj9bcq_"><textarea class="w-full select-text text-base shadow-none outline-none transition-all duration-300 md:text-sm ring-0 disabled:opacity-50 rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl text-text bg-neutral-50 dark:bg-neutral-950 ring-text/20 disabled:ring-0 hover:ring-3 focus-within:ring-4 focus-visible:outline-none focus-visible:ring-4 [box-shadow:none] focus:[box-shadow:none] aria-invalid:border-error px-2 py-3 md:py-2 overflow-y-auto resize-none" data-testid="question" id="question" name="question" rows="2" placeholder="Fai qualcosa..." aria-label="Fai una domanda alla nostra documentazione intelligente" aria-describedby="_R_ukqj9bcq_-form-item-description" aria-invalid="false"></textarea></div><div class="ml-auto flex items-center justify-end gap-2 max-md:w-full"><div class="group/popover relative flex cursor-pointer" id="unrollable-panel-button-chat-info" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info z-50 mr-3 text-neutral" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><div class="flex flex-col text-text backdrop-blur [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl bg-card/95 p-0 border-text gap-0 absolute z-60 min-w-full rounded-md ring-1 ring-neutral left-1/2 -translate-x-1/2 bottom-[calc(100%+1rem)] before:absolute before:z-[999] before:h-0 before:w-0 before:content-[""] before:left-1/2 before:-translate-x-1/2 before:-bottom-2.5 before:border-t-[10px] before:border-t-neutral before:border-r-[10px] before:border-r-transparent before:border-l-[10px] before:border-l-transparent overflow-x-visible opacity-0 transition-all duration-400 ease-in-out invisible group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800" role="group" aria-labelledby="unrollable-panel-button-chat-info" id="unrollable-panel-chat-info"><p class="min-w-60 max-w-60 p-4 text-neutral text-xs">Le discussioni sono anonime e vengono regolarmente esaminate per affrontare problemi comuni. Sentiti libero di condividere idee per nuove funzionalità, feedback sulla documentazione o qualsiasi cosa relativa a Intlayer, utilizziamo questi input per definire la nostra roadmap e migliorare il prodotto.</p></div></div><button role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center" aria-label="Clicca per aprire il chatbot" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-diagonal flex-none shrink-0 size-4" aria-hidden="true"><path d="M11 19H5v-6"></path><path d="M13 5h6v6"></path><path d="M19 5 5 19"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Clicca per aprire il chatbot</span></button><button disabled="" role="button" type="button" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current! hover:bg-current/20 focus-visible:bg-current/20 hover:ring-5 focus-visible:ring-5 aria-selected:ring-5 justify-center text-center opacity-0" aria-label="Clicca per cancellare" aria-busy="false" aria-disabled="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eraser flex-none shrink-0 size-4" aria-hidden="true"><path d="M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21"></path><path d="m5.082 11.09 8.828 8.828"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Clicca per cancellare</span></button><button role="button" type="submit" class="relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 p-1.5 text-text ring-text/20 *:text-text-opposite rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl bg-current hover:bg-current/90 hover:ring-5 aria-selected:ring-5 justify-center text-center" aria-label="Clicca per inviare la domanda" aria-busy="false" aria-disabled="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up flex-none shrink-0 size-4" aria-hidden="true"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg><div class="flex items-center justify-center transition-[width] duration-300"></div><span class="sr-only">Clicca per inviare la domanda</span></button></div></form></div></div></div></div></div></div></div></aside></div></div></main><div class="flex w-full flex-0 flex-col"></div><script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script><!--/$--><script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-Bw9yQaJj.js","/assets/chunk-Cyuzqnbw.js","/assets/preload-helper-B8fFrdxC.js","/assets/contributors-hwMJZD2h.js","/assets/frequent-questions-ColnmfP0.js","/assets/buildOrganizationJsonLd-CDgipqaX.js","/assets/_-XYNRneuJ.js","/assets/buildWebsiteJsonLd-C0N39csk.js","/assets/esm-3MTWDjoQ.js","/assets/package_mock-BDluuYi_.js","/assets/NotFoundComponent-Bgr-e0gL.js","/assets/_-C4167Raf.js","/assets/blog-BzPtT7kP.js","/assets/chat-D_eebsPv.js","/assets/search-CiZlrVdG.js","/assets/_-PkJ9jxsi.js","/assets/privacy-notice-gc0H7wqY.js","/assets/terms-of-service-B15yrD0Q.js","/assets/seo-6taQxeNF.js","/assets/dist-BB4NsXlo.js","/assets/dist-ClM9H4W8.js","/assets/scroll-restoration-Ds11_EjL.js","/assets/IsRestoringProvider-DPTyBt-E.js","/assets/mutation-Bsa9tKKh.js","/assets/Match-DiNoTNTM.js","/assets/useStore-DlCoWsDY.js","/assets/matchContext-IegwGVKo.js","/assets/defer-BLyZxUjE.js","/assets/createServerFn-CXa74b5t.js","/assets/dist-BlKQxgFq.js","/assets/cn-SXa2TCS8.js","/assets/features-animation-Du4JOzyU.js","/assets/Link-aa68EiCJ.js","/assets/x-DL_kax-t.js","/assets/react-dom-BJD-Lcob.js","/assets/compiler-runtime-CQOss3SY.js","/assets/jsx-runtime-CXk3X59i.js","/assets/react-Bi8cP4Js.js","/assets/getHTMLTextDir-C8-9aPEx.js","/assets/usePersistedStore-BzkChKRN.js","/assets/routes-Cre-4Fxz.js","/assets/esm-DRNfMHzC.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-Bw9yQaJj.js"}}]},"/{-$locale}":$R[8]={preloads:$R[9]=["/assets/route-CQW21vXM.js"]},"/{-$locale}/_docs":$R[10]={preloads:$R[11]=["/assets/route-DnecKG0E.js","/assets/PageLayout-U6A7rpHn.js"]},"/{-$locale}/_docs/doc/$":$R[12]={preloads:$R[13]=["/assets/_-BJyRGMQ_.js","/assets/DocPageNavigation-Cjem7A8P.js","/assets/DocumentationRender-BDCy3TqB.js","/assets/DocPageLayout-5Kt9kfLJ.js"]}}},matches:$R[14]=[$R[15]={i:"__root__�",u:1785037799463,s:"success",ssr:!0},$R[16]={i:"�{-$locale}�it",u:1785037799463,s:"success",ssr:!0},$R[17]={i:"�{-$locale}�_docs�it",u:1785037799463,s:"success",ssr:!0},$R[18]={i:"�{-$locale}�_docs�doc�$�it�doc�environment�vite-and-svelte",u:1785037799677,s:"success",l:$R[19]={locale:"it",slugs:$R[20]=["environment","vite-and-svelte"],docData:$R[21]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Svelte multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[22]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[23]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[24]=[$R[25]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[26]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[27]={version:"5.5.11",date:"2025-11-19",changes:"\"Aggiornamento doc\""},$R[28]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:$R[29]={name:"Aymeric PINEAU",title:"Founder of Intlayer, open-source multilingual CMS for Next.js and React",url:"https://github.com/aymericzip",image:"https://avatars.githubusercontent.com/u/62554073?v=4&size=124",socialMedias:$R[30]=["https://www.linkedin.com/in/aymericpineau/","https://x.com/aymericzip","https://github.com/aymericzip"],knowsAbout:$R[31]=["Expert in technical internationalization","Senior software engineer","Multilingual SEO","AI translation automation"],github:"aymericzip"},docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+svelte.md",relativeUrl:"/it/doc/environment/vite-and-svelte",url:"https://intlayer.org/it/doc/environment/vite-and-svelte"},defaultDocData:$R[32]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Complete guide to translate your app",description:"No more i18next. The 2026 guide to building a multilingual (i18n) Vite + Svelte app. Translate with AI agents and optimize bundle size, SEO and performances.",keywords:$R[33]=["Internationalization","Documentation","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[34]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[35]=[$R[36]={version:"8.9.0",date:"2026-05-04",changes:"\"Update Solid useIntlayer API usage to direct property access\""},$R[37]={version:"7.5.9",date:"2025-12-30",changes:"\"Add init command\""},$R[38]={version:"5.5.11",date:"2025-11-19",changes:"\"Update documentation\""},$R[39]={version:"5.5.10",date:"2025-06-29",changes:"\"Initial history\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_with_vite+svelte.md",relativeUrl:"/doc/environment/vite-and-svelte",url:"https://intlayer.org/doc/environment/vite-and-svelte"},docContent:"---\ncreatedAt: 2025-04-18\nupdatedAt: 2026-05-31\ntitle: \"Vite + Svelte i18n - Guida completa per tradurre la tua applicazione\"\ndescription: \"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Svelte multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.\"\nkeywords:\n - Internazionalizzazione\n - Documentazione\n - Intlayer\n - Vite\n - Svelte\n - JavaScript\nslugs:\n - doc\n - environment\n - vite-and-svelte\napplicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template\napplicationShowcase: https://intlayer-vite-svelte-template.vercel.app\nhistory:\n - version: 8.9.0\n date: 2026-05-04\n changes: \"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\"\n - version: 7.5.9\n date: 2025-12-30\n changes: \"Aggiungi comando init\"\n - version: 5.5.11\n date: 2025-11-19\n changes: \"Aggiornamento doc\"\n - version: 5.5.10\n date: 2025-06-29\n changes: \"Inizializzazione cronologia\"\nauthor: aymericzip\n---\n\n# Traduci il tuo sito web Vite e Svelte usando Intlayer | Internazionalizzazione (i18n)\n\n\x3CTabs defaultTab=\"code\">\n \x3CTab label=\"Codice\" value=\"code\">\n\n\x3Ciframe\n src=\"https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Demo CodeSandbox - Intlayer\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\n \x3C/Tab>\n \x3CTab label=\"Demo\" value=\"demo\">\n\n\x3Ciframe\n src=\"https://intlayer-vite-svelte-template.vercel.app\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Demo - intlayer-vite-svelte-template\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\n \x3C/Tab>\n\x3C/Tabs>\n\n## Indice\n\n\x3CTOC/>\n\n## Perché Intlayer rispetto alle alternative?\n\nRispetto alle soluzioni principali come `svelte-i18n` o `i18next`, Intlayer è una soluzione dotata di ottimizzazioni integrate come:\n\n\x3CAccordionGroup>\n\n\x3CAccordion header=\"Copertura completa e snella\">\n\nIntlayer è ottimizzato per funzionare perfettamente con Svelte offrendo **ambito del contenuto a livello di componente**, **traduzioni reattive** e tutte le funzionalità necessarie per scalare l'internazionalizzazione (i18n).\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Dimensione del bundle\">\n\nInvece di caricare enormi file JSON nelle tue pagine, carica solo il contenuto necessario. Intlayer aiuta a **ridurre le dimensioni del bundle e della pagina fino al 50%**.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Manutenibilità\">\n\nL'ambito del contenuto dell'applicazione **facilita la manutenzione** per applicazioni su larga scala. Puoi duplicare o eliminare una singola cartella di funzionalità senza l'onere mentale di rivedere l'intera codebase dei contenuti. Inoltre, Intlayer è **completamente tipizzato (fully typed)** per garantire l'accuratezza dei tuoi contenuti.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Agente IA\">\n\nLa co-localizzazione dei contenuti **riduce il contesto necessario** dai Large Language Models (LLM). Intlayer viene fornito anche con una suite di strumenti, come una **CLI** per verificare le traduzioni mancanti,**[LSP](/it/doc/lsp)**, **[MCP](/it/doc/mcp-server)** e **[capacità dell'agente](/it/doc/agent_skills)**, per rendere l'esperienza dello sviluppatore (DX) ancora più fluida per gli agenti IA.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Automazione\">\n\nUtilizza l'automazione per tradurre nella tua pipeline CI/CD utilizzando il LLM di tua scelta al costo del tuo provider di intelligenza artificiale. Intlayer offre anche un **compilatore** per automatizzare l'estrazione dei contenuti, nonché una [piattaforma web](/it/doc/concept/cms) per aiutare a **tradurre in background**.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Prestazione\">\n\nLa connessione di enormi file JSON ai componenti può portare a problemi di prestazioni e reattività. Intlayer ottimizza il caricamento dei contenuti in fase di compilazione.\n\n\x3C/Accordion>\n\n\x3CAccordion header=\"Scalabilità con nessuno sviluppatore\">\n\nPiù di una semplice soluzione i18n, Intlayer fornisce un **[editor visivo](/it/doc/concept/editor)** self-hosted e un **[CMS completo](/it/doc/concept/cms)** per aiutarti gestisci i tuoi contenuti multilingue in **tempo reale**, semplificando la collaborazione con traduttori, copywriter e altri membri del team. I contenuti possono essere archiviati localmente e/o in remoto.\n\n\x3C/Accordion>\n\x3C/AccordionGroup>\n\n---\n\n## Guida passo-passo per configurare Intlayer in un'applicazione Vite e Svelte\n\n\x3Ciframe\n src=\"https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts\"\n className=\"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full\"\n title=\"Demo CodeSandbox - Come internazionalizzare la tua applicazione usando Intlayer\"\n sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n loading=\"lazy\"\n/>\n\nConsulta il [Template dell'Applicazione](https://github.com/aymericzip/intlayer-vite-svelte-template) su GitHub.\n\n\x3CSteps>\n\n\x3CStep number={1} title=\"Installa le dipendenze\">\n\nInstalla i pacchetti necessari usando npm:\n\n```bash packageManager=\"npm\"\nnpm install intlayer svelte-intlayer\nnpm install vite-intlayer --save-dev\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add intlayer svelte-intlayer\npnpm add vite-intlayer --save-dev\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add intlayer svelte-intlayer\nyarn add vite-intlayer --save-dev\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add intlayer svelte-intlayer\nbun add vite-intlayer --save-dev\nbun x intlayer init\n```\n\n- **intlayer**\n\n Il pacchetto core che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la [dichiarazione dei contenuti](/it/doc/concept/content), la transpilation e i [comandi CLI](/it/doc/concept/cli).\n\n- **svelte-intlayer**\n Il pacchetto che integra Intlayer con l'applicazione Svelte. Fornisce context provider e hook per l'internazionalizzazione in Svelte.\n\n- **vite-intlayer**\n 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 locale preferita dall'utente, gestire i cookie e gestire il reindirizzamento degli URL.\n\n\x3C/Step>\n\n\x3CStep number={2} title=\"Configurazione del tuo progetto\">\n\nCrea un file di configurazione per impostare le lingue della tua applicazione:\n\n```typescript fileName=\"intlayer.config.ts\"\nimport { Locales, type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n internationalization: {\n locales: [\n Locales.ENGLISH,\n Locales.FRENCH,\n Locales.SPANISH,\n // Le tue altre localizzazioni\n ],\n defaultLocale: Locales.ENGLISH,\n },\n};\n\nexport default config;\n```\n\n> Attraverso questo file di configurazione, puoi impostare URL localizzati, reindirizzamenti middleware, nomi dei cookie, la posizione e l'estensione delle tue dichiarazioni di contenuto, disabilitare i log di Intlayer nella console e altro ancora. Per un elenco completo dei parametri disponibili, consulta la [documentazione di configurazione](/it/doc/concept/configuration).\n\n\x3C/Step>\n\n\x3CStep number={3} title=\"Integra Intlayer nella tua configurazione Vite\">\n\nAggiungi il plugin intlayer nella tua configurazione.\n\n```typescript fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [svelte(), intlayer()],\n});\n```\n\n> Il plugin Vite `intlayer()` viene utilizzato per integrare Intlayer con Vite. Garantisce la generazione 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.\n\n\x3C/Step>\n\n\x3CStep number={4} title=\"Dichiara il tuo contenuto\">\n\nCrea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:\n\n```tsx fileName=\"src/app.content.tsx\" contentDeclarationFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { t, type Dictionary } from \"intlayer\";\n\nconst appContent = {\n key: \"app\",\n content: {\n title: t({\n en: \"Hello World\",\n fr: \"Bonjour le monde\",\n es: \"Hola mundo\",\n }),\n },\n} satisfies Dictionary;\n\nexport default appContent;\n```\n\n```json fileName=\"src/app.content.json\" contentDeclarationFormat=\"json\"\n{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"app\",\n \"content\": {\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"Hello World\",\n \"fr\": \"Bonjour le monde\",\n \"es\": \"Hola mundo\"\n }\n }\n }\n}\n```\n\n> 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,cjs,md,mdx,yaml,yml}`).\n\n> Per maggiori dettagli, consulta la [documentazione sulla dichiarazione del contenuto](/it/doc/concept/content).\n\n\x3C/Step>\n\n\x3CStep number={5} title=\"Utilizza Intlayer nel tuo codice\">\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript>\n import { useIntlayer } from \"svelte-intlayer\";\n\n const content = useIntlayer(\"app\");\n\x3C/script>\n\n\x3Cdiv>\n\n\n\x3C!-- Renderizza il contenuto come contenuto semplice -->\n\x3Ch1>{$content.title}\x3C/h1>\n\x3C!-- Per rendere il contenuto modificabile usando l'editor -->\n\x3Ch1>{@const Title = $content.title}\x3CTitle />\x3C/h1>\n\x3C!-- Per rendere il contenuto come stringa -->\n\x3Cdiv aria-label={$content.title.value}>\x3C/div>\n\x3Cdiv aria-label={$content.title.toString()}>\x3C/div>\n\x3Cdiv aria-label={String($content.title)}>\x3C/div>\n```\n\n> Se la tua app esiste già, puoi utilizzare l' [Intlayer Compiler](/it/doc/compiler) in combinazione con il [comando extract](/it/doc/concept/cli/extract) per convertire migliaia di componenti in un secondo.\n\n\x3C/Step>\n\n\x3CStep number={6} title=\"Cambia la lingua del tuo contenuto\" isOptional={true}>\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Ottieni informazioni sulla locale e la funzione setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Gestisci il cambio di locale\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n\x3C/script>\n\n\x3Cdiv>\n \x3Cselect value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n```\n\n\x3C/Step>\n\n\x3CStep number={7} title=\"Renderizza Markdown\" isOptional={true}>\n\nIntlayer supporta il rendering di contenuti Markdown direttamente nella tua applicazione Svelte. Per default, il Markdown è trattato come testo semplice. Per convertire il Markdown in HTML ricco, puoi integrare `@humanspeak/svelte-markdown` o un altro parser Markdown.\n\n> Per vedere come dichiarare contenuti markdown usando il pacchetto `intlayer`, consulta la [documentazione markdown](https://github.com/aymericzip/intlayer/tree/main/docs/docs/it/dictionary/markdown.md).\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // rendi il contenuto markdown come stringa\n return markdown;\n );\n\x3C/script>\n\n\x3Ch1>{$content.markdownContent}\x3C/h1>\n```\n\n> Puoi anche accedere ai dati del front-matter del tuo markdown usando la proprietà `content.markdownContent.metadata.xxx`.\n\n\x3C/Step>\n\n\x3CStep number={8} title=\"Configura l'editor / CMS di intlayer\" isOptional={true}>\n\nPer configurare l'editor di intlayer, devi seguire la [documentazione dell'editor intlayer](/it/doc/concept/editor).\n\nPer configurare il CMS di intlayer, devi seguire la [documentazione del CMS intlayer](/it/doc/concept/cms).\n\n\x3C/Step>\n\n\x3CStep number={7} title=\"Aggiungi il routing localizzato alla tua applicazione\" isOptional={true}>\n\nPer gestire il routing localizzato nella tua applicazione Svelte, puoi usare `svelte-spa-router` insieme a `localeFlatMap` di Intlayer per generare le rotte per ogni locale.\n\nPer prima cosa, installa `svelte-spa-router`:\n\n```bash packageManager=\"npm\"\nnpm install svelte-spa-router\nnpx intlayer init\n```\n\n```bash packageManager=\"pnpm\"\npnpm add svelte-spa-router\npnpm intlayer init\n```\n\n```bash packageManager=\"yarn\"\nyarn add svelte-spa-router\nyarn intlayer init\n```\n\n```bash packageManager=\"bun\"\nbun add svelte-spa-router\n```\n\nQuindi, crea un file `Router.svelte` per definire le tue rotte:\n\n```svelte fileName=\"src/Router.svelte\"\n\x3Cscript lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n\x3C/script>\n\n\x3CRouter {routes} />\n```\n\nAggiorna il tuo `main.ts` per montare il componente `Router` invece di `App`:\n\n```typescript fileName=\"src/main.ts\"\nimport { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n```\n\nInfine, aggiorna il tuo `App.svelte` per ricevere la prop `locale` e utilizzarla con `useIntlayer`:\n\n```svelte fileName=\"src/App.svelte\"\n\x3Cscript lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n// Usa useIntlayer per ottenere i contenuti localizzati per l'app\n$: content = useIntlayer('app', locale);\n\x3C/script>\n\n\x3Cmain>\n \x3Cdiv class=\"locale-switcher-container\">\n \x3CLocaleSwitcher currentLocale={locale} />\n \x3C/div>\n\n \x3C!-- ... resto della tua app ... -->\n\x3C/main>\n```\n\n#### Configura il Routing lato Server (Opzionale)\n\nIn parallelo, puoi anche utilizzare `intlayerProxy` 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 basandosi sulle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, effettuerà un reindirizzamento alla locale predefinita.\n\n> Nota che per utilizzare `intlayerProxy` in produzione, è necessario spostare il pacchetto `vite-intlayer` da `devDependencies` a `dependencies`.\n\n```typescript {3,7} fileName=\"vite.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n plugins: [intlayerProxy(), // should be placed first\n svelte(), intlayer()],\n});\n```\n\n\x3C/Step>\n\n\x3CStep number={8} title=\"Cambiare l'URL quando la lingua cambia\" isOptional={true}>\n\nPer permettere agli utenti di cambiare lingua e aggiornare di conseguenza l'URL, puoi creare un componente `LocaleSwitcher`. Questo componente utilizzerà `getLocalizedUrl` da `intlayer` e `push` da `svelte-spa-router`.\n\n```svelte fileName=\"src/lib/LocaleSwitcher.svelte\"\n\x3Cscript lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Ottieni le informazioni sulla lingua\nconst { locale, availableLocales } = useLocale();\n\n// Gestisci il cambio di lingua\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n\x3C/script>\n\n\x3Cdiv class=\"locale-switcher\">\n \x3Cselect value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n```\n\n\x3C/Step>\n\n\x3CStep number={1} title=\"Estrarre il contenuto dei tuoi componenti\" isOptional={true}>\n\nSe hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.\n\nPer facilitare questo processo, Intlayer propone un [compilatore](/it/doc/compiler) / [estrattore](/it/doc/concept/cli/extract) per trasformare i tuoi componenti ed estrarre il contenuto.\n\nPer configurarlo, puoi aggiungere una sezione `compiler` nel tuo file `intlayer.config.ts`:\n\n```typescript fileName=\"intlayer.config.ts\" codeFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Resto della tua configurazione\n compiler: {\n /**\n * Indica se il compilatore deve essere abilitato.\n */\n enabled: true,\n\n /**\n * Definisce il percorso dei file di output\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.\n */\n saveComponents: false,\n\n /**\n * Prefisso chiave dizionario\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n```\n\n\x3CTabs>\n \x3CTab value='Comando di estrazione'>\n\nEsegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto\n\n```bash packageManager=\"npm\"\nnpx intlayer extract\n```\n\n```bash packageManager=\"pnpm\"\npnpm intlayer extract\n```\n\n```bash packageManager=\"yarn\"\nyarn intlayer extract\n```\n\n```bash packageManager=\"bun\"\nbun x intlayer extract\n```\n\n \x3C/Tab>\n \x3CTab value='Compilatore Babel'>\n\nAggiorna il tuo `vite.config.ts` per includere il plugin `intlayerCompiler`:\n\n```ts fileName=\"vite.config.ts\"\nimport { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Aggiunge il plugin del compilatore\n ],\n});\n```\n\n```bash packageManager=\"npm\"\nnpm run build # Oppure npm run dev\n```\n\n```bash packageManager=\"pnpm\"\npnpm run build # O pnpm run dev\n```\n\n```bash packageManager=\"yarn\"\nyarn build # O yarn dev\n```\n\n```bash packageManager=\"bun\"\nbun run build # Or bun run dev\n```\n\n \x3C/Tab>\n\x3C/Tabs>\n\x3C/Step>\n\n\x3C/Steps>\n\n### Configurazione Git\n\nSi consiglia di ignorare i file generati da Intlayer. Questo permette di evitare di committarli nel tuo repository Git.\n\nPer farlo, puoi aggiungere le seguenti istruzioni nel tuo file `.gitignore`:\n\n```bash\n# Ignora i file generati da Intlayer\n.intlayer\n```\n\n### Estensione VS Code\n\nPer migliorare la tua esperienza di sviluppo con Intlayer, puoi installare la **Intlayer VS Code Extension** ufficiale.\n\n[Installa dal VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)\n\nQuesta estensione offre:\n\n- **Completamento automatico** per le chiavi di traduzione.\n- **Rilevamento errori in tempo reale** per traduzioni mancanti.\n- **Anteprime inline** dei contenuti tradotti.\n- **Azioni rapide** per creare e aggiornare facilmente le traduzioni.\n\nPer maggiori dettagli su come utilizzare l'estensione, consulta la [documentazione della Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).\n\n---\n\n### (Opzionale) Sitemap e robots.txt (generazione in build)\n\nIntlayer espone utilità - `generateSitemap` e `getMultilingualUrls` - per formattare `sitemap.xml` multilingue e `robots.txt` pronti per i crawler e scriverli automaticamente in `public/`. Di solito si esegue un piccolo script Node **prima** di Vite (ad esempio hook npm `predev` / `prebuild`) così che i file siano presenti in build o in sviluppo.\n\n#### Sitemap\n\nIl generatore di sitemap di Intlayer rispetta le tue lingue e aggiunge i metadati attesi dai crawler.\n\n> La sitemap supporta lo spazio dei nomi `xhtml:link` (hreflang). Invece di elencare solo URL “piatti”, Intlayer collega in modo bidirezionale tutte le versioni linguistiche di ogni pagina (ad es. `/about`, `/fr/about` o `/about?lang=fr` a seconda del routing).\n\n#### Robots.txt\n\nUsa `getMultilingualUrls` così le regole `Disallow` coprono tutte le varianti localizzate dei percorsi sensibili.\n\n#### 1. Aggiungi `generate-seo.mjs` nella root del progetto\n\n```javascript fileName=\"generate-seo.mjs\"\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n```\n\nServe il pacchetto `intlayer` installato. Imposta `SITE_URL` in ambiente per la produzione (es. in CI).\n\n> Preferisci `generate-seo.mjs` per l’ESM di Node. Con `generate-seo.js` imposta `\"type\": \"module\"` in `package.json` oppure abilita l’ESM in Node.\n\n#### 2. Esegui lo script prima di Vite\n\n```json fileName=\"package.json\"\n{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n```\n\nAdatta i comandi se usi pnpm o yarn. Puoi anche richiamare lo script dalla CI o da un altro passo del pipeline.\n\n### Vai oltre\n\nPer andare oltre, puoi implementare l'[editor visuale](/it/doc/concept/editor) o esternalizzare i tuoi contenuti utilizzando il [CMS](/it/doc/concept/cms).\n",docParsed:$R[40]={ast:$R[41]=[$R[42]={children:$R[43]=[$R[44]={text:"Traduci il tuo sito web Vite e Svelte usando Intlayer | Internazionalizzazione (i18n)",type:"27"}],id:"traduci-il-tuo-sito-web-vite-e-svelte-usando-intlayer--internazionalizzazione-i18n",level:1,type:"9"},$R[45]={attrs:$R[46]={defaultTab:"code"},noInnerParse:!1,tag:"Tabs",children:$R[47]=[$R[48]={attrs:$R[49]={label:"Codice",value:"code"},noInnerParse:!1,tag:"Tab",children:$R[50]=[$R[51]={type:"19"},$R[52]={attrs:$R[53]={src:"https://ide.intlayer.org/aymericzip/intlayer-vite-svelte-template?file=intlayer.config.ts",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Demo CodeSandbox - Intlayer",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"}],type:"34"},$R[54]={attrs:$R[55]={label:"Demo",value:"demo"},noInnerParse:!1,tag:"Tab",children:$R[56]=[$R[57]={type:"19"},$R[58]={attrs:$R[59]={src:"https://intlayer-vite-svelte-template.vercel.app",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Demo - intlayer-vite-svelte-template",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"}],type:"34"}],type:"34"},$R[60]={children:$R[61]=[$R[62]={text:"Indice",type:"27"}],id:"indice",level:2,type:"9"},$R[63]={attrs:null,tag:"TOC",type:"13"},$R[64]={children:$R[65]=[$R[66]={text:"Perché Intlayer rispetto alle alternative?",type:"27"}],id:"perche-intlayer-rispetto-alle-alternative",level:2,type:"9"},$R[67]={children:$R[68]=[$R[69]={text:"Rispetto alle soluzioni principali come ",type:"27"},$R[70]={text:"svelte-i18n",type:"5"},$R[71]={text:" o ",type:"27"},$R[72]={text:"i18next",type:"5"},$R[73]={text:", Intlayer è una soluzione dotata di ottimizzazioni integrate come",type:"27"},$R[74]={text:":",type:"27"}],type:"21"},$R[75]={type:"19"},$R[76]={attrs:null,noInnerParse:!1,tag:"AccordionGroup",children:$R[77]=[$R[78]={type:"19"},$R[79]={attrs:$R[80]={header:"Copertura completa e snella"},noInnerParse:!1,tag:"Accordion",children:$R[81]=[$R[82]={type:"19"},$R[83]={children:$R[84]=[$R[85]={text:"Intlayer è ottimizzato per funzionare perfettamente con Svelte offrendo ",type:"27"},$R[86]={children:$R[87]=[$R[88]={text:"ambito del contenuto a livello di componente",type:"27"}],type:"28"},$R[89]={text:", ",type:"27"},$R[90]={children:$R[91]=[$R[92]={text:"traduzioni reattive",type:"27"}],type:"28"},$R[93]={text:" e tutte le funzionalità necessarie per scalare l'internazionalizzazione (i18n).",type:"27"}],type:"21"},$R[94]={type:"19"}],type:"34"},$R[95]={attrs:$R[96]={header:"Dimensione del bundle"},noInnerParse:!1,tag:"Accordion",children:$R[97]=[$R[98]={type:"19"},$R[99]={children:$R[100]=[$R[101]={text:"Invece di caricare enormi file JSON nelle tue pagine, carica solo il contenuto necessario. Intlayer aiuta a ",type:"27"},$R[102]={children:$R[103]=[$R[104]={text:"ridurre le dimensioni del bundle e della pagina fino al 50%",type:"27"}],type:"28"},$R[105]={text:".",type:"27"}],type:"21"},$R[106]={type:"19"}],type:"34"},$R[107]={attrs:$R[108]={header:"Manutenibilità"},noInnerParse:!1,tag:"Accordion",children:$R[109]=[$R[110]={type:"19"},$R[111]={children:$R[112]=[$R[113]={text:"L'ambito del contenuto dell'applicazione ",type:"27"},$R[114]={children:$R[115]=[$R[116]={text:"facilita la manutenzione",type:"27"}],type:"28"},$R[117]={text:" per applicazioni su larga scala. Puoi duplicare o eliminare una singola cartella di funzionalità senza l'onere mentale di rivedere l'intera codebase dei contenuti. Inoltre, Intlayer è ",type:"27"},$R[118]={children:$R[119]=[$R[120]={text:"completamente tipizzato (fully typed)",type:"27"}],type:"28"},$R[121]={text:" per garantire l'accuratezza dei tuoi contenuti.",type:"27"}],type:"21"},$R[122]={type:"19"}],type:"34"},$R[123]={attrs:$R[124]={header:"Agente IA"},noInnerParse:!1,tag:"Accordion",children:$R[125]=[$R[126]={type:"19"},$R[127]={children:$R[128]=[$R[129]={text:"La co",type:"27"},$R[130]={text:"-localizzazione dei contenuti ",type:"27"},$R[131]={children:$R[132]=[$R[133]={text:"riduce il contesto necessario",type:"27"}],type:"28"},$R[134]={text:" dai Large Language Models (LLM). Intlayer viene fornito anche con una suite di strumenti, come una ",type:"27"},$R[135]={children:$R[136]=[$R[137]={text:"CLI",type:"27"}],type:"28"},$R[138]={text:" per verificare le traduzioni mancanti,",type:"27"},$R[139]={children:$R[140]=[$R[141]={children:$R[142]=[$R[143]={text:"LSP",type:"27"}],target:"/it/doc/lsp",title:void 0,type:"15"}],type:"28"},$R[144]={text:", ",type:"27"},$R[145]={children:$R[146]=[$R[147]={children:$R[148]=[$R[149]={text:"MCP",type:"27"}],target:"/it/doc/mcp-server",title:void 0,type:"15"}],type:"28"},$R[150]={text:" e ",type:"27"},$R[151]={children:$R[152]=[$R[153]={children:$R[154]=[$R[155]={text:"capacità dell'agente",type:"27"}],target:"/it/doc/agent_skills",title:void 0,type:"15"}],type:"28"},$R[156]={text:", per rendere l'esperienza dello sviluppatore (DX) ancora più fluida per gli agenti IA.",type:"27"}],type:"21"},$R[157]={type:"19"}],type:"34"},$R[158]={attrs:$R[159]={header:"Automazione"},noInnerParse:!1,tag:"Accordion",children:$R[160]=[$R[161]={type:"19"},$R[162]={children:$R[163]=[$R[164]={text:"Utilizza l'automazione per tradurre nella tua pipeline CI/CD utilizzando il LLM di tua scelta al costo del tuo provider di intelligenza artificiale. Intlayer offre anche un ",type:"27"},$R[165]={children:$R[166]=[$R[167]={text:"compilatore",type:"27"}],type:"28"},$R[168]={text:" per automatizzare l'estrazione dei contenuti, nonché una ",type:"27"},$R[169]={children:$R[170]=[$R[171]={text:"piattaforma web",type:"27"}],target:"/it/doc/concept/cms",title:void 0,type:"15"},$R[172]={text:" per aiutare a ",type:"27"},$R[173]={children:$R[174]=[$R[175]={text:"tradurre in background",type:"27"}],type:"28"},$R[176]={text:".",type:"27"}],type:"21"},$R[177]={type:"19"}],type:"34"},$R[178]={attrs:$R[179]={header:"Prestazione"},noInnerParse:!1,tag:"Accordion",children:$R[180]=[$R[181]={type:"19"},$R[182]={children:$R[183]=[$R[184]={text:"La connessione di enormi file JSON ai componenti può portare a problemi di prestazioni e reattività. Intlayer ottimizza il caricamento dei contenuti in fase di compilazione.",type:"27"}],type:"21"},$R[185]={type:"19"}],type:"34"},$R[186]={attrs:$R[187]={header:"Scalabilità con nessuno sviluppatore"},noInnerParse:!1,tag:"Accordion",children:$R[188]=[$R[189]={type:"19"},$R[190]={children:$R[191]=[$R[192]={text:"Più di una semplice soluzione i18n, Intlayer fornisce un ",type:"27"},$R[193]={children:$R[194]=[$R[195]={children:$R[196]=[$R[197]={text:"editor visivo",type:"27"}],target:"/it/doc/concept/editor",title:void 0,type:"15"}],type:"28"},$R[198]={text:" self",type:"27"},$R[199]={text:"-hosted e un ",type:"27"},$R[200]={children:$R[201]=[$R[202]={children:$R[203]=[$R[204]={text:"CMS completo",type:"27"}],target:"/it/doc/concept/cms",title:void 0,type:"15"}],type:"28"},$R[205]={text:" per aiutarti gestisci i tuoi contenuti multilingue in ",type:"27"},$R[206]={children:$R[207]=[$R[208]={text:"tempo reale",type:"27"}],type:"28"},$R[209]={text:", semplificando la collaborazione con traduttori, copywriter e altri membri del team. I contenuti possono essere archiviati localmente e/o in remoto.",type:"27"}],type:"21"},$R[210]={type:"19"}],type:"34"}],type:"34"},$R[211]={type:"2"},$R[212]={children:$R[213]=[$R[214]={text:"Guida passo",type:"27"},$R[215]={text:"-passo per configurare Intlayer in un'applicazione Vite e Svelte",type:"27"}],id:"guida-passo-passo-per-configurare-intlayer-in-unapplicazione-vite-e-svelte",level:2,type:"9"},$R[216]={attrs:$R[217]={src:"https://ide.intlayer.org/aymericzip/intlayer-vite-react-template?file=intlayer.config.ts",className:"m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full",title:"Demo CodeSandbox - Come internazionalizzare la tua applicazione usando Intlayer",sandbox:"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts",loading:"lazy"},tag:"iframe",type:"13"},$R[218]={children:$R[219]=[$R[220]={text:"Consulta il ",type:"27"},$R[221]={children:$R[222]=[$R[223]={text:"Template dell'Applicazione",type:"27"}],target:"https://github.com/aymericzip/intlayer-vite-svelte-template",title:void 0,type:"15"},$R[224]={text:" su GitHub.",type:"27"}],type:"21"},$R[225]={type:"19"},$R[226]={attrs:null,noInnerParse:!1,tag:"Steps",children:$R[227]=[$R[228]={type:"19"},$R[229]={attrs:$R[230]={number:"1",title:"Installa le dipendenze"},noInnerParse:!1,tag:"Step",children:$R[231]=[$R[232]={type:"19"},$R[233]={children:$R[234]=[$R[235]={text:"Installa i pacchetti necessari usando npm",type:"27"},$R[236]={text:":",type:"27"}],type:"21"},$R[237]={type:"19"},$R[238]={attrs:$R[239]={packageManager:"npm"},lang:"bash",text:"npm install intlayer svelte-intlayer\nnpm install vite-intlayer --save-dev\nnpx intlayer init\n",type:"3"},$R[240]={type:"19"},$R[241]={attrs:$R[242]={packageManager:"pnpm"},lang:"bash",text:"pnpm add intlayer svelte-intlayer\npnpm add vite-intlayer --save-dev\npnpm intlayer init\n",type:"3"},$R[243]={type:"19"},$R[244]={attrs:$R[245]={packageManager:"yarn"},lang:"bash",text:"yarn add intlayer svelte-intlayer\nyarn add vite-intlayer --save-dev\nyarn intlayer init\n",type:"3"},$R[246]={type:"19"},$R[247]={attrs:$R[248]={packageManager:"bun"},lang:"bash",text:"bun add intlayer svelte-intlayer\nbun add vite-intlayer --save-dev\nbun x intlayer init\n",type:"3"},$R[249]={type:"19"},$R[250]={items:$R[251]=[$R[252]=[$R[253]={children:$R[254]=[$R[255]={children:$R[256]=[$R[257]={text:"intlayer",type:"27"}],type:"28"}],type:"21"},$R[258]={type:"19"},$R[259]={children:$R[260]=[$R[261]={text:"Il pacchetto core che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la ",type:"27"},$R[262]={children:$R[263]=[$R[264]={text:"dichiarazione dei contenuti",type:"27"}],target:"/it/doc/concept/content",title:void 0,type:"15"},$R[265]={text:", la transpilation e i ",type:"27"},$R[266]={children:$R[267]=[$R[268]={text:"comandi CLI",type:"27"}],target:"/it/doc/concept/cli",title:void 0,type:"15"},$R[269]={text:".",type:"27"}],type:"21"},$R[270]={type:"19"}],$R[271]=[$R[272]={children:$R[273]=[$R[274]={children:$R[275]=[$R[276]={text:"svelte",type:"27"},$R[277]={text:"-intlayer",type:"27"}],type:"28"},$R[278]={text:"\nIl pacchetto che integra Intlayer con l'applicazione Svelte. Fornisce context provider e hook per l'internazionalizzazione in Svelte.",type:"27"}],type:"21"},$R[279]={type:"19"}],$R[280]=[$R[281]={children:$R[282]=[$R[283]={children:$R[284]=[$R[285]={text:"vite",type:"27"},$R[286]={text:"-intlayer",type:"27"}],type:"28"},$R[287]={text:"\nInclude il plugin Vite per integrare Intlayer con il ",type:"27"},$R[288]={children:$R[289]=[$R[290]={text:"bundler Vite",type:"27"}],target:"https://vite.dev/guide/why.html#why-bundle-for-production",title:void 0,type:"15"},$R[291]={text:", oltre a middleware per rilevare la locale preferita dall'utente, gestire i cookie e gestire il reindirizzamento degli URL.",type:"27"}],type:"21"},$R[292]={type:"19"}]],ordered:!1,start:void 0,type:"33"}],type:"34"},$R[293]={attrs:$R[294]={number:"2",title:"Configurazione del tuo progetto"},noInnerParse:!1,tag:"Step",children:$R[295]=[$R[296]={type:"19"},$R[297]={children:$R[298]=[$R[299]={text:"Crea un file di configurazione per impostare le lingue della tua applicazione",type:"27"},$R[300]={text:":",type:"27"}],type:"21"},$R[301]={type:"19"},$R[302]={attrs:$R[303]={fileName:"intlayer.config.ts"},lang:"typescript",text:"import { Locales, type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n internationalization: {\n locales: [\n Locales.ENGLISH,\n Locales.FRENCH,\n Locales.SPANISH,\n // Le tue altre localizzazioni\n ],\n defaultLocale: Locales.ENGLISH,\n },\n};\n\nexport default config;\n",type:"3"},$R[304]={type:"19"},$R[305]={alert:void 0,children:$R[306]=[$R[307]={text:"Attraverso questo file di configurazione, puoi impostare URL localizzati, reindirizzamenti middleware, nomi dei cookie, la posizione e l'estensione delle tue dichiarazioni di contenuto, disabilitare i log di Intlayer nella console e altro ancora. Per un elenco completo dei parametri disponibili, consulta la ",type:"27"},$R[308]={children:$R[309]=[$R[310]={text:"documentazione di configurazione",type:"27"}],target:"/it/doc/concept/configuration",title:void 0,type:"15"},$R[311]={text:".",type:"27"}],type:"0"},$R[312]={type:"19"}],type:"34"},$R[313]={attrs:$R[314]={number:"3",title:"Integra Intlayer nella tua configurazione Vite"},noInnerParse:!1,tag:"Step",children:$R[315]=[$R[316]={type:"19"},$R[317]={children:$R[318]=[$R[319]={text:"Aggiungi il plugin intlayer nella tua configurazione.",type:"27"}],type:"21"},$R[320]={type:"19"},$R[321]={attrs:$R[322]={fileName:"vite.config.ts"},lang:"typescript",text:"import { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer } from \"vite-intlayer\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [svelte(), intlayer()],\n});\n",type:"3"},$R[323]={type:"19"},$R[324]={alert:void 0,children:$R[325]=[$R[326]={text:"Il plugin Vite ",type:"27"},$R[327]={text:"intlayer()",type:"5"},$R[328]={text:" viene utilizzato per integrare Intlayer con Vite. Garantisce la generazione 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.",type:"27"}],type:"0"},$R[329]={type:"19"}],type:"34"},$R[330]={attrs:$R[331]={number:"4",title:"Dichiara il tuo contenuto"},noInnerParse:!1,tag:"Step",children:$R[332]=[$R[333]={type:"19"},$R[334]={children:$R[335]=[$R[336]={text:"Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni",type:"27"},$R[337]={text:":",type:"27"}],type:"21"},$R[338]={type:"19"},$R[339]={attrs:$R[340]={fileName:"src/app.content.tsx",contentDeclarationFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"tsx",text:"import { t, type Dictionary } from \"intlayer\";\n\nconst appContent = {\n key: \"app\",\n content: {\n title: t({\n en: \"Hello World\",\n fr: \"Bonjour le monde\",\n es: \"Hola mundo\",\n }),\n },\n} satisfies Dictionary;\n\nexport default appContent;\n",type:"3"},$R[341]={type:"19"},$R[342]={attrs:$R[343]={fileName:"src/app.content.json",contentDeclarationFormat:"json"},lang:"json",text:"{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"app\",\n \"content\": {\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"Hello World\",\n \"fr\": \"Bonjour le monde\",\n \"es\": \"Hola mundo\"\n }\n }\n }\n}\n",type:"3"},$R[344]={type:"19"},$R[345]={alert:void 0,children:$R[346]=[$R[347]={text:"Le tue dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione non appena sono incluse nella directory ",type:"27"},$R[348]={text:"contentDir",type:"5"},$R[349]={text:" (di default, ",type:"27"},$R[350]={text:"./src",type:"5"},$R[351]={text:"). E devono corrispondere all'estensione del file di dichiarazione del contenuto (di default, ",type:"27"},$R[352]={text:".content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}",type:"5"},$R[353]={text:").",type:"27"}],type:"0"},$R[354]={type:"19"},$R[355]={alert:void 0,children:$R[356]=[$R[357]={text:"Per maggiori dettagli, consulta la ",type:"27"},$R[358]={children:$R[359]=[$R[360]={text:"documentazione sulla dichiarazione del contenuto",type:"27"}],target:"/it/doc/concept/content",title:void 0,type:"15"},$R[361]={text:".",type:"27"}],type:"0"},$R[362]={type:"19"}],type:"34"},$R[363]={attrs:$R[364]={number:"5",title:"Utilizza Intlayer nel tuo codice"},noInnerParse:!1,tag:"Step",children:$R[365]=[$R[366]={type:"19"},$R[367]={attrs:$R[368]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript>\n import { useIntlayer } from \"svelte-intlayer\";\n\n const content = useIntlayer(\"app\");\n\x3C/script>\n\n\x3Cdiv>\n\n\n\x3C!-- Renderizza il contenuto come contenuto semplice -->\n\x3Ch1>{$content.title}\x3C/h1>\n\x3C!-- Per rendere il contenuto modificabile usando l'editor -->\n\x3Ch1>{@const Title = $content.title}\x3CTitle />\x3C/h1>\n\x3C!-- Per rendere il contenuto come stringa -->\n\x3Cdiv aria-label={$content.title.value}>\x3C/div>\n\x3Cdiv aria-label={$content.title.toString()}>\x3C/div>\n\x3Cdiv aria-label={String($content.title)}>\x3C/div>\n",type:"3"},$R[369]={type:"19"},$R[370]={alert:void 0,children:$R[371]=[$R[372]={text:"Se la tua app esiste già, puoi utilizzare l' ",type:"27"},$R[373]={children:$R[374]=[$R[375]={text:"Intlayer Compiler",type:"27"}],target:"/it/doc/compiler",title:void 0,type:"15"},$R[376]={text:" in combinazione con il ",type:"27"},$R[377]={children:$R[378]=[$R[379]={text:"comando extract",type:"27"}],target:"/it/doc/concept/cli/extract",title:void 0,type:"15"},$R[380]={text:" per convertire migliaia di componenti in un secondo.",type:"27"}],type:"0"},$R[381]={type:"19"}],type:"34"},$R[382]={attrs:$R[383]={number:"6",title:"Cambia la lingua del tuo contenuto",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[384]=[$R[385]={type:"19"},$R[386]={attrs:$R[387]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { getLocaleName } from 'intlayer';\nimport { useLocale } from \"svelte-intlayer\";\n\n// Ottieni informazioni sulla locale e la funzione setLocale\nconst { locale, availableLocales, setLocale } = useLocale();\n\n// Gestisci il cambio di locale\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n setLocale(newLocale);\n};\n\x3C/script>\n\n\x3Cdiv>\n \x3Cselect value={$locale} on:change={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n",type:"3"},$R[388]={type:"19"}],type:"34"},$R[389]={attrs:$R[390]={number:"7",title:"Renderizza Markdown",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[391]=[$R[392]={type:"19"},$R[393]={children:$R[394]=[$R[395]={text:"Intlayer supporta il rendering di contenuti Markdown direttamente nella tua applicazione Svelte. Per default, il Markdown è trattato come testo semplice. Per convertire il Markdown in HTML ricco, puoi integrare ",type:"27"},$R[396]={text:"@humanspeak/svelte-markdown",type:"5"},$R[397]={text:" o un altro parser Markdown.",type:"27"}],type:"21"},$R[398]={type:"19"},$R[399]={alert:void 0,children:$R[400]=[$R[401]={text:"Per vedere come dichiarare contenuti markdown usando il pacchetto ",type:"27"},$R[402]={text:"intlayer",type:"5"},$R[403]={text:", consulta la ",type:"27"},$R[404]={children:$R[405]=[$R[406]={text:"documentazione markdown",type:"27"}],target:"https://github.com/aymericzip/intlayer/tree/main/docs/docs/it/dictionary/markdown.md",title:void 0,type:"15"},$R[407]={text:".",type:"27"}],type:"0"},$R[408]={type:"19"},$R[409]={attrs:$R[410]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript>\n import { setIntlayerMarkdown } from \"svelte-intlayer\";\n\n setIntlayerMarkdown((markdown) =>\n // rendi il contenuto markdown come stringa\n return markdown;\n );\n\x3C/script>\n\n\x3Ch1>{$content.markdownContent}\x3C/h1>\n",type:"3"},$R[411]={type:"19"},$R[412]={alert:void 0,children:$R[413]=[$R[414]={text:"Puoi anche accedere ai dati del front",type:"27"},$R[415]={text:"-matter del tuo markdown usando la proprietà ",type:"27"},$R[416]={text:"content.markdownContent.metadata.xxx",type:"5"},$R[417]={text:".",type:"27"}],type:"0"},$R[418]={type:"19"}],type:"34"},$R[419]={attrs:$R[420]={number:"8",title:"Configura l'editor / CMS di intlayer",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[421]=[$R[422]={type:"19"},$R[423]={children:$R[424]=[$R[425]={text:"Per configurare l'editor di intlayer, devi seguire la ",type:"27"},$R[426]={children:$R[427]=[$R[428]={text:"documentazione dell'editor intlayer",type:"27"}],target:"/it/doc/concept/editor",title:void 0,type:"15"},$R[429]={text:".",type:"27"}],type:"21"},$R[430]={type:"19"},$R[431]={children:$R[432]=[$R[433]={text:"Per configurare il CMS di intlayer, devi seguire la ",type:"27"},$R[434]={children:$R[435]=[$R[436]={text:"documentazione del CMS intlayer",type:"27"}],target:"/it/doc/concept/cms",title:void 0,type:"15"},$R[437]={text:".",type:"27"}],type:"21"},$R[438]={type:"19"}],type:"34"},$R[439]={attrs:$R[440]={number:"7",title:"Aggiungi il routing localizzato alla tua applicazione",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[441]=[$R[442]={type:"19"},$R[443]={children:$R[444]=[$R[445]={text:"Per gestire il routing localizzato nella tua applicazione Svelte, puoi usare ",type:"27"},$R[446]={text:"svelte-spa-router",type:"5"},$R[447]={text:" insieme a ",type:"27"},$R[448]={text:"localeFlatMap",type:"5"},$R[449]={text:" di Intlayer per generare le rotte per ogni locale.",type:"27"}],type:"21"},$R[450]={type:"19"},$R[451]={children:$R[452]=[$R[453]={text:"Per prima cosa, installa ",type:"27"},$R[454]={text:"svelte-spa-router",type:"5"},$R[455]={text:":",type:"27"}],type:"21"},$R[456]={type:"19"},$R[457]={attrs:$R[458]={packageManager:"npm"},lang:"bash",text:"npm install svelte-spa-router\nnpx intlayer init\n",type:"3"},$R[459]={type:"19"},$R[460]={attrs:$R[461]={packageManager:"pnpm"},lang:"bash",text:"pnpm add svelte-spa-router\npnpm intlayer init\n",type:"3"},$R[462]={type:"19"},$R[463]={attrs:$R[464]={packageManager:"yarn"},lang:"bash",text:"yarn add svelte-spa-router\nyarn intlayer init\n",type:"3"},$R[465]={type:"19"},$R[466]={attrs:$R[467]={packageManager:"bun"},lang:"bash",text:"bun add svelte-spa-router\n",type:"3"},$R[468]={type:"19"},$R[469]={children:$R[470]=[$R[471]={text:"Quindi, crea un file ",type:"27"},$R[472]={text:"Router.svelte",type:"5"},$R[473]={text:" per definire le tue rotte",type:"27"},$R[474]={text:":",type:"27"}],type:"21"},$R[475]={type:"19"},$R[476]={attrs:$R[477]={fileName:"src/Router.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { localeFlatMap } from \"intlayer\";\nimport Router from \"svelte-spa-router\";\nimport { wrap } from \"svelte-spa-router/wrap\";\nimport App from \"./App.svelte\";\n\nconst routes = Object.fromEntries(\n localeFlatMap(({locale, urlPrefix}) => [\n [\n urlPrefix || '/',\n wrap({\n component: App as any,\n props: {\n locale,\n },\n }),\n ],\n ])\n);\n\x3C/script>\n\n\x3CRouter {routes} />\n",type:"3"},$R[478]={type:"19"},$R[479]={children:$R[480]=[$R[481]={text:"Aggiorna il tuo ",type:"27"},$R[482]={text:"main.ts",type:"5"},$R[483]={text:" per montare il componente ",type:"27"},$R[484]={text:"Router",type:"5"},$R[485]={text:" invece di ",type:"27"},$R[486]={text:"App",type:"5"},$R[487]={text:":",type:"27"}],type:"21"},$R[488]={type:"19"},$R[489]={attrs:$R[490]={fileName:"src/main.ts"},lang:"typescript",text:"import { mount } from \"svelte\";\nimport Router from \"./Router.svelte\";\n\nconst app = mount(Router, {\n target: document.getElementById(\"app\")!,\n});\n\nexport default app;\n",type:"3"},$R[491]={type:"19"},$R[492]={children:$R[493]=[$R[494]={text:"Infine, aggiorna il tuo ",type:"27"},$R[495]={text:"App.svelte",type:"5"},$R[496]={text:" per ricevere la prop ",type:"27"},$R[497]={text:"locale",type:"5"},$R[498]={text:" e utilizzarla con ",type:"27"},$R[499]={text:"useIntlayer",type:"5"},$R[500]={text:":",type:"27"}],type:"21"},$R[501]={type:"19"},$R[502]={attrs:$R[503]={fileName:"src/App.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport type { Locale } from 'intlayer';\nimport { useIntlayer } from \"svelte-intlayer\";\nimport Counter from './lib/Counter.svelte';\nimport LocaleSwitcher from './lib/LocaleSwitcher.svelte';\n\nexport let locale: Locale;\n\n// Usa useIntlayer per ottenere i contenuti localizzati per l'app\n$: content = useIntlayer('app', locale);\n\x3C/script>\n\n\x3Cmain>\n \x3Cdiv class=\"locale-switcher-container\">\n \x3CLocaleSwitcher currentLocale={locale} />\n \x3C/div>\n\n \x3C!-- ... resto della tua app ... -->\n\x3C/main>\n",type:"3"},$R[504]={type:"19"},$R[505]={children:$R[506]=[$R[507]={text:"Configura il Routing lato Server (Opzionale)",type:"27"}],id:"configura-il-routing-lato-server-opzionale",level:4,type:"9"},$R[508]={children:$R[509]=[$R[510]={text:"In parallelo, puoi anche utilizzare ",type:"27"},$R[511]={text:"intlayerProxy",type:"5"},$R[512]={text:" 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 basandosi sulle preferenze linguistiche del browser dell'utente. Se non viene rilevata alcuna locale, effettuerà un reindirizzamento alla locale predefinita.",type:"27"}],type:"21"},$R[513]={type:"19"},$R[514]={alert:void 0,children:$R[515]=[$R[516]={text:"Nota che per utilizzare ",type:"27"},$R[517]={text:"intlayerProxy",type:"5"},$R[518]={text:" in produzione, è necessario spostare il pacchetto ",type:"27"},$R[519]={text:"vite-intlayer",type:"5"},$R[520]={text:" da ",type:"27"},$R[521]={text:"devDependencies",type:"5"},$R[522]={text:" a ",type:"27"},$R[523]={text:"dependencies",type:"5"},$R[524]={text:".",type:"27"}],type:"0"},$R[525]={type:"19"},$R[526]={attrs:$R[527]={3:!0,7:!0,fileName:"vite.config.ts",codeFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"typescript",text:"import { defineConfig } from \"vite\";\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { intlayer, intlayerProxy } from \"vite-intlayer\";\n\n plugins: [intlayerProxy(), // should be placed first\n svelte(), intlayer()],\n});\n",type:"3"},$R[528]={type:"19"}],type:"34"},$R[529]={attrs:$R[530]={number:"8",title:"Cambiare l'URL quando la lingua cambia",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[531]=[$R[532]={type:"19"},$R[533]={children:$R[534]=[$R[535]={text:"Per permettere agli utenti di cambiare lingua e aggiornare di conseguenza l'URL, puoi creare un componente ",type:"27"},$R[536]={text:"LocaleSwitcher",type:"5"},$R[537]={text:". Questo componente utilizzerà ",type:"27"},$R[538]={text:"getLocalizedUrl",type:"5"},$R[539]={text:" da ",type:"27"},$R[540]={text:"intlayer",type:"5"},$R[541]={text:" e ",type:"27"},$R[542]={text:"push",type:"5"},$R[543]={text:" da ",type:"27"},$R[544]={text:"svelte-spa-router",type:"5"},$R[545]={text:".",type:"27"}],type:"21"},$R[546]={type:"19"},$R[547]={attrs:$R[548]={fileName:"src/lib/LocaleSwitcher.svelte"},lang:"svelte",text:"\x3Cscript lang=\"ts\">\nimport { getLocaleName, getLocalizedUrl } from \"intlayer\";\nimport { useLocale } from \"svelte-intlayer\";\nimport { push } from \"svelte-spa-router\";\n\nexport let currentLocale: string | undefined = undefined;\n\n// Ottieni le informazioni sulla lingua\nconst { locale, availableLocales } = useLocale();\n\n// Gestisci il cambio di lingua\nconst changeLocale = (event: Event) => {\n const target = event.target as HTMLSelectElement;\n const newLocale = target.value;\n const currentUrl = window.location.pathname;\n const url = getLocalizedUrl( currentUrl, newLocale);\n push(url);\n};\n\x3C/script>\n\n\x3Cdiv class=\"locale-switcher\">\n \x3Cselect value={currentLocale ?? $locale} onchange={changeLocale}>\n {#each availableLocales ?? [] as loc}\n \x3Coption value={loc}>\n {getLocaleName(loc)}\n \x3C/option>\n {/each}\n \x3C/select>\n\x3C/div>\n",type:"3"},$R[549]={type:"19"}],type:"34"},$R[550]={attrs:$R[551]={number:"1",title:"Estrarre il contenuto dei tuoi componenti",isOptional:!0},noInnerParse:!1,tag:"Step",children:$R[552]=[$R[553]={type:"19"},$R[554]={children:$R[555]=[$R[556]={text:"Se hai una base di codice esistente, trasformare migliaia di file può richiedere molto tempo.",type:"27"}],type:"21"},$R[557]={type:"19"},$R[558]={children:$R[559]=[$R[560]={text:"Per facilitare questo processo, Intlayer propone un ",type:"27"},$R[561]={children:$R[562]=[$R[563]={text:"compilatore",type:"27"}],target:"/it/doc/compiler",title:void 0,type:"15"},$R[564]={text:" / ",type:"27"},$R[565]={children:$R[566]=[$R[567]={text:"estrattore",type:"27"}],target:"/it/doc/concept/cli/extract",title:void 0,type:"15"},$R[568]={text:" per trasformare i tuoi componenti ed estrarre il contenuto.",type:"27"}],type:"21"},$R[569]={type:"19"},$R[570]={children:$R[571]=[$R[572]={text:"Per configurarlo, puoi aggiungere una sezione ",type:"27"},$R[573]={text:"compiler",type:"5"},$R[574]={text:" nel tuo file ",type:"27"},$R[575]={text:"intlayer.config.ts",type:"5"},$R[576]={text:":",type:"27"}],type:"21"},$R[577]={type:"19"},$R[578]={attrs:$R[579]={fileName:"intlayer.config.ts",codeFormat:"[\"typescript\", \"esm\", \"commonjs\"]"},lang:"typescript",text:"import { type IntlayerConfig } from \"intlayer\";\n\nconst config: IntlayerConfig = {\n // ... Resto della tua configurazione\n compiler: {\n /**\n * Indica se il compilatore deve essere abilitato.\n */\n enabled: true,\n\n /**\n * Definisce il percorso dei file di output\n */\n output: ({ fileName, extension }) => `./${fileName}${extension}`,\n\n /**\n * Indica se i componenti devono essere salvati dopo essere stati trasformati. In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi rimosso.\n */\n saveComponents: false,\n\n /**\n * Prefisso chiave dizionario\n */\n dictionaryKeyPrefix: \"\",\n },\n};\n\nexport default config;\n",type:"3"},$R[580]={type:"19"},$R[581]={attrs:null,noInnerParse:!1,tag:"Tabs",children:$R[582]=[$R[583]={attrs:$R[584]={value:"Comando di estrazione"},noInnerParse:!1,tag:"Tab",children:$R[585]=[$R[586]={type:"19"},$R[587]={children:$R[588]=[$R[589]={text:"Esegui l'estrattore per trasformare i tuoi componenti ed estrarre il contenuto",type:"27"}],type:"21"},$R[590]={type:"19"},$R[591]={attrs:$R[592]={packageManager:"npm"},lang:"bash",text:"npx intlayer extract\n",type:"3"},$R[593]={type:"19"},$R[594]={attrs:$R[595]={packageManager:"pnpm"},lang:"bash",text:"pnpm intlayer extract\n",type:"3"},$R[596]={type:"19"},$R[597]={attrs:$R[598]={packageManager:"yarn"},lang:"bash",text:"yarn intlayer extract\n",type:"3"},$R[599]={type:"19"},$R[600]={attrs:$R[601]={packageManager:"bun"},lang:"bash",text:"bun x intlayer extract\n",type:"3"},$R[602]={type:"19"}],type:"34"},$R[603]={attrs:$R[604]={value:"Compilatore Babel"},noInnerParse:!1,tag:"Tab",children:$R[605]=[$R[606]={type:"19"},$R[607]={children:$R[608]=[$R[609]={text:"Aggiorna il tuo ",type:"27"},$R[610]={text:"vite.config.ts",type:"5"},$R[611]={text:" per includere il plugin ",type:"27"},$R[612]={text:"intlayerCompiler",type:"5"},$R[613]={text:":",type:"27"}],type:"21"},$R[614]={type:"19"},$R[615]={attrs:$R[616]={fileName:"vite.config.ts"},lang:"ts",text:"import { defineConfig } from \"vite\";\nimport { intlayer, intlayerCompiler } from \"vite-intlayer\";\n\nexport default defineConfig({\n plugins: [\n intlayer(),\n intlayerCompiler(), // Aggiunge il plugin del compilatore\n ],\n});\n",type:"3"},$R[617]={type:"19"},$R[618]={attrs:$R[619]={packageManager:"npm"},lang:"bash",text:"npm run build # Oppure npm run dev\n",type:"3"},$R[620]={type:"19"},$R[621]={attrs:$R[622]={packageManager:"pnpm"},lang:"bash",text:"pnpm run build # O pnpm run dev\n",type:"3"},$R[623]={type:"19"},$R[624]={attrs:$R[625]={packageManager:"yarn"},lang:"bash",text:"yarn build # O yarn dev\n",type:"3"},$R[626]={type:"19"},$R[627]={attrs:$R[628]={packageManager:"bun"},lang:"bash",text:"bun run build # Or bun run dev\n",type:"3"},$R[629]={type:"19"}],type:"34"}],type:"34"}],type:"34"}],type:"34"},$R[630]={children:$R[631]=[$R[632]={text:"Configurazione Git",type:"27"}],id:"configurazione-git",level:3,type:"9"},$R[633]={children:$R[634]=[$R[635]={text:"Si consiglia di ignorare i file generati da Intlayer. Questo permette di evitare di committarli nel tuo repository Git.",type:"27"}],type:"21"},$R[636]={type:"19"},$R[637]={children:$R[638]=[$R[639]={text:"Per farlo, puoi aggiungere le seguenti istruzioni nel tuo file ",type:"27"},$R[640]={text:".gitignore",type:"5"},$R[641]={text:":",type:"27"}],type:"21"},$R[642]={type:"19"},$R[643]={attrs:null,lang:"bash",text:"# Ignora i file generati da Intlayer\n.intlayer\n",type:"3"},$R[644]={type:"19"},$R[645]={children:$R[646]=[$R[647]={text:"Estensione VS Code",type:"27"}],id:"estensione-vs-code",level:3,type:"9"},$R[648]={children:$R[649]=[$R[650]={text:"Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare la ",type:"27"},$R[651]={children:$R[652]=[$R[653]={text:"Intlayer VS Code Extension",type:"27"}],type:"28"},$R[654]={text:" ufficiale.",type:"27"}],type:"21"},$R[655]={type:"19"},$R[656]={children:$R[657]=[$R[658]={children:$R[659]=[$R[660]={text:"Installa dal VS Code Marketplace",type:"27"}],target:"https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension",title:void 0,type:"15"}],type:"21"},$R[661]={type:"19"},$R[662]={children:$R[663]=[$R[664]={text:"Questa estensione offre",type:"27"},$R[665]={text:":",type:"27"}],type:"21"},$R[666]={type:"19"},$R[667]={items:$R[668]=[$R[669]=[$R[670]={children:$R[671]=[$R[672]={text:"Completamento automatico",type:"27"}],type:"28"},$R[673]={text:" per le chiavi di traduzione.",type:"27"}],$R[674]=[$R[675]={children:$R[676]=[$R[677]={text:"Rilevamento errori in tempo reale",type:"27"}],type:"28"},$R[678]={text:" per traduzioni mancanti.",type:"27"}],$R[679]=[$R[680]={children:$R[681]=[$R[682]={text:"Anteprime inline",type:"27"}],type:"28"},$R[683]={text:" dei contenuti tradotti.",type:"27"}],$R[684]=[$R[685]={children:$R[686]=[$R[687]={text:"Azioni rapide",type:"27"}],type:"28"},$R[688]={text:" per creare e aggiornare facilmente le traduzioni.",type:"27"}]],ordered:!1,start:void 0,type:"33"},$R[689]={children:$R[690]=[$R[691]={text:"Per maggiori dettagli su come utilizzare l'estensione, consulta la ",type:"27"},$R[692]={children:$R[693]=[$R[694]={text:"documentazione della Intlayer VS Code Extension",type:"27"}],target:"https://intlayer.org/doc/vs-code-extension",title:void 0,type:"15"},$R[695]={text:".",type:"27"}],type:"21"},$R[696]={type:"19"},$R[697]={type:"2"},$R[698]={children:$R[699]=[$R[700]={text:"(Opzionale) Sitemap e robots.txt (generazione in build)",type:"27"}],id:"opzionale-sitemap-e-robotstxt-generazione-in-build",level:3,type:"9"},$R[701]={children:$R[702]=[$R[703]={text:"Intlayer espone utilità ",type:"27"},$R[704]={text:"- ",type:"27"},$R[705]={text:"generateSitemap",type:"5"},$R[706]={text:" e ",type:"27"},$R[707]={text:"getMultilingualUrls",type:"5"},$R[708]={text:" ",type:"27"},$R[709]={text:"- per formattare ",type:"27"},$R[710]={text:"sitemap.xml",type:"5"},$R[711]={text:" multilingue e ",type:"27"},$R[712]={text:"robots.txt",type:"5"},$R[713]={text:" pronti per i crawler e scriverli automaticamente in ",type:"27"},$R[714]={text:"public/",type:"5"},$R[715]={text:". Di solito si esegue un piccolo script Node ",type:"27"},$R[716]={children:$R[717]=[$R[718]={text:"prima",type:"27"}],type:"28"},$R[719]={text:" di Vite (ad esempio hook npm ",type:"27"},$R[720]={text:"predev",type:"5"},$R[721]={text:" / ",type:"27"},$R[722]={text:"prebuild",type:"5"},$R[723]={text:") così che i file siano presenti in build o in sviluppo.",type:"27"}],type:"21"},$R[724]={type:"19"},$R[725]={children:$R[726]=[$R[727]={text:"Sitemap",type:"27"}],id:"sitemap",level:4,type:"9"},$R[728]={children:$R[729]=[$R[730]={text:"Il generatore di sitemap di Intlayer rispetta le tue lingue e aggiunge i metadati attesi dai crawler.",type:"27"}],type:"21"},$R[731]={type:"19"},$R[732]={alert:void 0,children:$R[733]=[$R[734]={text:"La sitemap supporta lo spazio dei nomi ",type:"27"},$R[735]={text:"xhtml:link",type:"5"},$R[736]={text:" (hreflang). Invece di elencare solo URL “piatti”, Intlayer collega in modo bidirezionale tutte le versioni linguistiche di ogni pagina (ad es. ",type:"27"},$R[737]={text:"/about",type:"5"},$R[738]={text:", ",type:"27"},$R[739]={text:"/fr/about",type:"5"},$R[740]={text:" o ",type:"27"},$R[741]={text:"/about?lang=fr",type:"5"},$R[742]={text:" a seconda del routing).",type:"27"}],type:"0"},$R[743]={type:"19"},$R[744]={children:$R[745]=[$R[746]={text:"Robots.txt",type:"27"}],id:"robotstxt",level:4,type:"9"},$R[747]={children:$R[748]=[$R[749]={text:"Usa ",type:"27"},$R[750]={text:"getMultilingualUrls",type:"5"},$R[751]={text:" così le regole ",type:"27"},$R[752]={text:"Disallow",type:"5"},$R[753]={text:" coprono tutte le varianti localizzate dei percorsi sensibili.",type:"27"}],type:"21"},$R[754]={type:"19"},$R[755]={children:$R[756]=[$R[757]={text:"1. Aggiungi ",type:"27"},$R[758]={text:"generate-seo.mjs",type:"5"},$R[759]={text:" nella root del progetto",type:"27"}],id:"1-aggiungi-generate-seomjs-nella-root-del-progetto",level:4,type:"9"},$R[760]={attrs:$R[761]={fileName:"generate-seo.mjs"},lang:"javascript",text:"import fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { generateSitemap, getMultilingualUrls } from \"intlayer\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst SITE_URL = (process.env.SITE_URL || \"http://localhost:5173\").replace(\n /\\/$/,\n \"\"\n);\n\nconst pathList = [\n { path: \"/\", changefreq: \"daily\", priority: 1.0 },\n { path: \"/about\", changefreq: \"monthly\", priority: 0.7 },\n];\n\nconst sitemapXml = generateSitemap(pathList, { siteUrl: SITE_URL });\nfs.writeFileSync(path.join(__dirname, \"public\", \"sitemap.xml\"), sitemapXml);\n\nconst getAllMultilingualUrls = (urls) =>\n urls.flatMap((url) => Object.values(getMultilingualUrls(url)));\n\nconst disallowedPaths = getAllMultilingualUrls([\"/admin\", \"/private\"]);\n\nconst robotsTxt = [\n \"User-agent: *\",\n \"Allow: /\",\n ...disallowedPaths.map((path) => `Disallow: ${path}`),\n \"\",\n `Sitemap: ${SITE_URL}/sitemap.xml`,\n].join(\"\\n\");\n\nfs.writeFileSync(path.join(__dirname, \"public\", \"robots.txt\"), robotsTxt);\n\nconsole.log(\"SEO files generated successfully.\");\n",type:"3"},$R[762]={type:"19"},$R[763]={children:$R[764]=[$R[765]={text:"Serve il pacchetto ",type:"27"},$R[766]={text:"intlayer",type:"5"},$R[767]={text:" installato. Imposta ",type:"27"},$R[768]={text:"SITE_URL",type:"5"},$R[769]={text:" in ambiente per la produzione (es. in CI).",type:"27"}],type:"21"},$R[770]={type:"19"},$R[771]={alert:void 0,children:$R[772]=[$R[773]={text:"Preferisci ",type:"27"},$R[774]={text:"generate-seo.mjs",type:"5"},$R[775]={text:" per l’ESM di Node. Con ",type:"27"},$R[776]={text:"generate-seo.js",type:"5"},$R[777]={text:" imposta ",type:"27"},$R[778]={text:"\"type\": \"module\"",type:"5"},$R[779]={text:" in ",type:"27"},$R[780]={text:"package.json",type:"5"},$R[781]={text:" oppure abilita l’ESM in Node.",type:"27"}],type:"0"},$R[782]={type:"19"},$R[783]={children:$R[784]=[$R[785]={text:"2. Esegui lo script prima di Vite",type:"27"}],id:"2-esegui-lo-script-prima-di-vite",level:4,type:"9"},$R[786]={attrs:$R[787]={fileName:"package.json"},lang:"json",text:"{\n \"scripts\": {\n \"dev\": \"vite\",\n \"prebuild\": \"node generate-seo.mjs\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\"\n }\n}\n",type:"3"},$R[788]={type:"19"},$R[789]={children:$R[790]=[$R[791]={text:"Adatta i comandi se usi pnpm o yarn. Puoi anche richiamare lo script dalla CI o da un altro passo del pipeline.",type:"27"}],type:"21"},$R[792]={type:"19"},$R[793]={children:$R[794]=[$R[795]={text:"Vai oltre",type:"27"}],id:"vai-oltre",level:3,type:"9"},$R[796]={children:$R[797]=[$R[798]={text:"Per andare oltre, puoi implementare l'",type:"27"},$R[799]={children:$R[800]=[$R[801]={text:"editor visuale",type:"27"}],target:"/it/doc/concept/editor",title:void 0,type:"15"},$R[802]={text:" o esternalizzare i tuoi contenuti utilizzando il ",type:"27"},$R[803]={children:$R[804]=[$R[805]={text:"CMS",type:"27"}],target:"/it/doc/concept/cms",title:void 0,type:"15"},$R[806]={text:".",type:"27"}],type:"21"},$R[807]={type:"19"}],footnotes:$R[808]=[],inline:!1},nextDoc:$R[809]={title:"SvelteKit",url:"/it/doc/environment/sveltekit"},prevDoc:$R[810]={title:"Vite e Solid",url:"/it/doc/environment/vite-and-solid"},navData:$R[811]={why:$R[812]={title:"Perché Intlayer?",default:$R[813]={createdAt:"2024-08-14",updatedAt:"2026-05-31",title:"Interesse per Intlayer",description:"Scopri i vantaggi e i benefici dell'utilizzo di Intlayer nei tuoi progetti. Comprendi perché Intlayer si distingue tra gli altri framework.",keywords:$R[814]=["Benefici","Vantaggi","Intlayer","Framework","Confronto"],slugs:$R[815]=["doc","why"],history:$R[816]=[$R[817]={version:"8.11.2",date:"2026-05-31",changes:"\"Aggiunta la sezione Perché Intlayer rispetto alle alternative\""},$R[818]={version:"7.3.1",date:"2025-11-27",changes:"\"Rilascio del Compilatore\""},$R[819]={version:"5.8.0",date:"2025-08-19",changes:"\"Aggiornata la tabella comparativa\""},$R[820]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/interest_of_intlayer.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/interest_of_intlayer.md",relativeUrl:"/it/doc/why",url:"https://intlayer.org/it/doc/why"}},"get-started":$R[821]={title:"Iniziare",default:$R[822]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Introduzione",description:"Scopri come funziona Intlayer. Guarda i passaggi che Intlayer utilizza nella tua applicazione. Scopri cosa fanno i diversi pacchetti.",keywords:$R[823]=["Introduzione","Iniziare","Intlayer","Applicazione","Pacchetti"],slugs:$R[824]=["doc","get-started"],history:$R[825]=[$R[826]={version:"5.5.10",date:"2025-06-29",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/introduction.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/introduction.md",relativeUrl:"/it/doc/get-started",url:"https://intlayer.org/it/doc/get-started"}},concept:$R[827]={title:"Concetto",subSections:$R[828]={"how-works-intlayer":$R[829]={title:"Come funziona Intlayer",default:$R[830]={createdAt:"2024-08-12",updatedAt:"2025-06-29",title:"Come funziona Intlayer",description:"Scopri come funziona Intlayer internamente. Comprendi l'architettura e i componenti che rendono Intlayer potente.",keywords:$R[831]=["Intlayer","Come funziona","Architettura","Componenti","Funzionamento interno"],slugs:$R[832]=["doc","concept","how-works-intlayer"],history:$R[833]=[$R[834]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/how_works_intlayer.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/how_works_intlayer.md",relativeUrl:"/it/doc/concept/how-works-intlayer",url:"https://intlayer.org/it/doc/concept/how-works-intlayer"}},configuration:$R[835]={title:"Configurazione",default:$R[836]={createdAt:"2024-08-13",updatedAt:"2026-05-12",title:"Configurazione",description:"Scopri come configurare Intlayer per la tua applicazione. Comprendi le diverse impostazioni e opzioni disponibili per personalizzare Intlayer secondo le tue necessità.",keywords:$R[837]=["configurazione","impostazioni","personalizzazione","Intlayer","opzioni"],slugs:$R[838]=["doc","concept","configuration"],history:$R[839]=[$R[840]={version:"8.9.4",date:"2026-05-12",changes:"\"Aggiunto il supporto per il provider LM Studio\""},$R[841]={version:"8.7.0",date:"2026-04-08",changes:"\"Aggiunte le opzioni `prune` e `minify` alla configurazione di build\""},$R[842]={version:"8.7.0",date:"2026-04-03",changes:"\"Aggiunta l'opzione `currentDomain`\""},$R[843]={version:"8.4.0",date:"2026-03-20",changes:"\"Aggiunta la notazione ad oggetto per 'compiler.output' e 'dictionary.fill' per locale\""},$R[844]={version:"8.3.0",date:"2026-03-11",changes:"\"Spostato 'baseDir' dalla configurazione 'content' alla configurazione 'system'\""},$R[845]={version:"8.2.0",date:"2026-03-09",changes:"\"Aggiornate le opzioni del compilatore, aggiunto supporto per 'output' e 'noMetadata'\""},$R[846]={version:"8.1.7",date:"2026-02-25",changes:"\"Aggiornate le opzioni del compilatore\""},$R[847]={version:"8.1.5",date:"2026-02-23",changes:"\"Aggiunta l'opzione del compilatore 'build-only' e il prefisso del dizionario\""},$R[848]={version:"8.0.6",date:"2026-02-12",changes:"\"Aggiunto supporto per i fornitori Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face e Together AI\""},$R[849]={version:"8.0.5",date:"2026-02-06",changes:"\"Aggiunto `dataSerialization` alla configurazione AI\""},$R[850]={version:"8.0.0",date:"2026-01-24",changes:"\"Rinominata la modalità di importazione `live` in `fetch` per descrivere meglio il meccanismo sottostante.\""},$R[851]={version:"8.0.0",date:"2026-01-22",changes:"\"Spostata la configurazione di build `importMode` nella configurazione `dictionary`.\""},$R[852]={version:"8.0.0",date:"2026-01-22",changes:"\"Aggiunta l'opzione `rewrite` alla configurazione del routing\""},$R[853]={version:"8.0.0",date:"2026-01-18",changes:"\"Separata la configurazione di sistema dalla configurazione del contenuto. Spostati i percorsi interni alla proprietà `system`. Aggiunto `codeDir` per separare i file di contenuto dalle trasformazioni del codice.\""},$R[854]={version:"8.0.0",date:"2026-01-18",changes:"\"Aggiunte le opzioni del dizionario `location` e `schema`\""},$R[855]={version:"7.5.1",date:"2026-01-10",changes:"\"Aggiunto supporto per i formati di file JSON5 e JSONC\""},$R[856]={version:"7.5.0",date:"2025-12-17",changes:"\"Aggiunta l'opzione `buildMode`\""},$R[857]={version:"7.0.0",date:"2025-10-25",changes:"\"Aggiunta la configurazione `dictionary`\""},$R[858]={version:"7.0.0",date:"2025-10-21",changes:"\"Sostituito `middleware` con la configurazione `routing`\""},$R[859]={version:"7.0.0",date:"2025-10-12",changes:"\"Aggiunta l'opzione `formatCommand`\""},$R[860]={version:"6.2.0",date:"2025-10-12",changes:"\"Aggiornata l'opzione `excludedPath`\""},$R[861]={version:"6.0.2",date:"2025-09-23",changes:"\"Aggiunta l'opzione `outputFormat`\""},$R[862]={version:"6.0.0",date:"2025-09-21",changes:"\"Rimosse le proprietà `dictionaryOutput` e `i18nextResourcesDir`\""},$R[863]={version:"6.0.0",date:"2025-09-16",changes:"\"Aggiunta la modalità di importazione `live`\""},$R[864]={version:"6.0.0",date:"2025-09-04",changes:"\"Sostituita la proprietà `hotReload` con `liveSync` e aggiunte le proprietà `liveSyncPort`, `liveSyncURL`\""},$R[865]={version:"5.6.1",date:"2025-07-25",changes:"\"Sostituita l'opzione `activateDynamicImport` con `importMode`\""},$R[866]={version:"5.6.0",date:"2025-07-13",changes:"\"Cambiata la `contentDir` predefinita da `['src']` a `['.']`\""},$R[867]={version:"5.5.11",date:"2025-06-29",changes:"\"Aggiunti i comandi `docs`\""}],author:"aymericzip",docKey:"./docs/en/configuration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/configuration.md",relativeUrl:"/it/doc/concept/configuration",url:"https://intlayer.org/it/doc/concept/configuration"}},cli:$R[868]={title:"CLI",default:$R[869]={createdAt:"2024-08-11",updatedAt:"2026-03-31",title:"CLI - Tutti i comandi della CLI di Intlayer per il tuo sito web multilingue",description:"Scopri come utilizzare la CLI di Intlayer per gestire il tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[870]=["CLI","Interfaccia della linea di comando","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[871]=["doc","concept","cli"],history:$R[872]=[$R[873]={version:"9.0.0",date:"2026-06-11",changes:"\"Aggiunto comando scan\""},$R[874]={version:"8.6.4",date:"2026-03-31",changes:"\"Aggiunto comando standalone\""},$R[875]={version:"7.5.11",date:"2026-01-06",changes:"\"Aggiunto comando CI\""},$R[876]={version:"7.5.11",date:"2026-01-06",changes:"\"Aggiunto comando list projects\""},$R[877]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiunto comando init\""},$R[878]={version:"7.2.3",date:"2025-11-22",changes:"\"Aggiunto comando extract\""},$R[879]={version:"7.1.0",date:"2025-11-05",changes:"\"Aggiunta opzione skipIfExists al comando translate\""},$R[880]={version:"6.1.4",date:"2025-01-27",changes:"\"Aggiunti alias per argomenti e comandi della CLI\""},$R[881]={version:"6.1.3",date:"2025-10-05",changes:"\"Aggiunta opzione build ai comandi\""},$R[882]={version:"6.1.2",date:"2025-09-26",changes:"\"Aggiunto comando version\""},$R[883]={version:"6.1.0",date:"2025-09-26",changes:"\"Impostata opzione verbose su true di default usando la CLI\""},$R[884]={version:"6.1.0",date:"2025-09-23",changes:"\"Aggiunto comando watch e opzione with\""},$R[885]={version:"6.0.1",date:"2025-09-23",changes:"\"Aggiunto comando editor\""},$R[886]={version:"6.0.0",date:"2025-09-17",changes:"\"Aggiunti comandi content test e list\""},$R[887]={version:"5.5.11",date:"2025-07-11",changes:"\"Aggiornata documentazione dei parametri dei comandi CLI\""},$R[888]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/cli/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/index.md",relativeUrl:"/it/doc/concept/cli",url:"https://intlayer.org/it/doc/concept/cli"},subSections:$R[889]={test:$R[890]={title:"Test",default:$R[891]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Test delle traduzioni mancanti",description:"Scopri come testare e identificare le traduzioni mancanti nei tuoi dizionari.",keywords:$R[892]=["Test","Traduzioni Mancanti","CLI","Intlayer"],slugs:$R[893]=["doc","concept","cli","test"],author:"aymericzip",docKey:"./docs/en/cli/test.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/test.md",relativeUrl:"/it/doc/concept/cli/test",url:"https://intlayer.org/it/doc/concept/cli/test"}},fill:$R[894]={title:"Fill",default:$R[895]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Riempire Dizionari",description:"Impara come riempire, controllare e tradurre i tuoi dizionari usando l'AI.",keywords:$R[896]=["Riempire","Controllare","Tradurre","Dizionari","CLI","Intlayer","AI"],slugs:$R[897]=["doc","concept","cli","fill"],author:"aymericzip",docKey:"./docs/en/cli/fill.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/fill.md",relativeUrl:"/it/doc/concept/cli/fill",url:"https://intlayer.org/it/doc/concept/cli/fill"}},build:$R[898]={title:"Build",default:$R[899]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Costruire Dizionari",description:"Impara come costruire i tuoi dizionari Intlayer dai file di dichiarazione dei contenuti.",keywords:$R[900]=["Costruire","Dizionari","CLI","Intlayer"],slugs:$R[901]=["doc","concept","cli","build"],history:$R[902]=[$R[903]={version:"8.1.5",date:"2026-02-23",changes:"\"Aggiungi opzione checkTypes\""}],author:"aymericzip",docKey:"./docs/en/cli/build.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/build.md",relativeUrl:"/it/doc/concept/cli/build",url:"https://intlayer.org/it/doc/concept/cli/build"}},watch:$R[904]={title:"Watch",default:$R[905]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Osservare i Dizionari",description:"Scopri come osservare le modifiche nei tuoi file di dichiarazione dei contenuti e costruire automaticamente i dizionari.",keywords:$R[906]=["Osservare","Dizionari","CLI","Intlayer"],slugs:$R[907]=["doc","concept","cli","watch"],author:"aymericzip",docKey:"./docs/en/cli/watch.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/watch.md",relativeUrl:"/it/doc/concept/cli/watch",url:"https://intlayer.org/it/doc/concept/cli/watch"}},extract:$R[908]={title:"Extract",default:$R[909]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Estrai stringhe",description:"Scopri come estrarre le stringhe dai tuoi componenti in un file .content vicino al componente.",keywords:$R[910]=["Estrazione","Componenti","Migrazione","CLI","Intlayer"],slugs:$R[911]=["doc","concept","cli","extract"],author:"aymericzip",docKey:"./docs/en/cli/extract.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/extract.md",relativeUrl:"/it/doc/concept/cli/extract",url:"https://intlayer.org/it/doc/concept/cli/extract"}},login:$R[912]={title:"Login",default:$R[913]={createdAt:"2025-12-16",updatedAt:"2025-12-16",title:"CLI - Login",description:"Scopri come utilizzare il comando login della CLI di Intlayer per autenticarti con il CMS di Intlayer e ottenere le credenziali di accesso.",keywords:$R[914]=["CLI","Login","Autenticazione","CMS","Intlayer","Credenziali"],slugs:$R[915]=["doc","concept","cli","login"],author:"aymericzip",docKey:"./docs/en/cli/login.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/login.md",relativeUrl:"/it/doc/concept/cli/login",url:"https://intlayer.org/it/doc/concept/cli/login"}},push:$R[916]={title:"Push",default:$R[917]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Push Dizionari",description:"Scopri come inviare i tuoi dizionari all'editor e CMS di Intlayer.",keywords:$R[918]=["Push","Dizionari","CLI","Intlayer","Editor","CMS"],slugs:$R[919]=["doc","concept","cli","push"],author:"aymericzip",docKey:"./docs/en/cli/push.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/push.md",relativeUrl:"/it/doc/concept/cli/push",url:"https://intlayer.org/it/doc/concept/cli/push"}},pull:$R[920]={title:"Pull",default:$R[921]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Estrazione Dizionari",description:"Scopri come estrarre dizionari dall'editor Intlayer e dal CMS.",keywords:$R[922]=["Estrazione","Dizionari","CLI","Intlayer","Editor","CMS"],slugs:$R[923]=["doc","concept","cli","pull"],author:"aymericzip",docKey:"./docs/en/cli/pull.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/pull.md",relativeUrl:"/it/doc/concept/cli/pull",url:"https://intlayer.org/it/doc/concept/cli/pull"}},configuration:$R[924]={title:"Configuration",default:$R[925]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Gestire la Configurazione",description:"Scopri come ottenere e inviare la tua configurazione Intlayer al CMS.",keywords:$R[926]=["Configurazione","Config","CLI","Intlayer","CMS"],slugs:$R[927]=["doc","concept","cli","configuration"],author:"aymericzip",docKey:"./docs/en/cli/configuration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/configuration.md",relativeUrl:"/it/doc/concept/cli/configuration",url:"https://intlayer.org/it/doc/concept/cli/configuration"}},list:$R[928]={title:"List",default:$R[929]={createdAt:"2024-08-11",updatedAt:"2026-01-06",title:"Elencare i file di dichiarazione del contenuto",description:"Scopri come elencare tutti i file di dichiarazione del contenuto nel tuo progetto.",keywords:$R[930]=["Elenco","Dichiarazione del contenuto","CLI","Intlayer"],slugs:$R[931]=["doc","concept","cli","list"],history:$R[932]=[$R[933]={version:"7.5.12",date:"2026-01-06",changes:"\"Aggiunta opzione di output assoluto al comando list\""},$R[934]={version:"7.5.11",date:"2026-01-06",changes:"\"Aggiunta opzione di output JSON al comando list\""}],author:"aymericzip",docKey:"./docs/en/cli/list.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/list.md",relativeUrl:"/it/doc/concept/cli/list",url:"https://intlayer.org/it/doc/concept/cli/list"}},version:$R[935]={title:"Version",default:$R[936]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Controllare la versione della CLI",description:"Scopri come verificare la versione della CLI Intlayer installata.",keywords:$R[937]=["Versione","CLI","Intlayer"],slugs:$R[938]=["doc","concept","cli","version"],author:"aymericzip",docKey:"./docs/en/cli/version.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/version.md",relativeUrl:"/it/doc/concept/cli/version",url:"https://intlayer.org/it/doc/concept/cli/version"}},editor:$R[939]={title:"Editor",default:$R[940]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Comandi dell'Editor",description:"Scopri come utilizzare i comandi dell'editor di Intlayer.",keywords:$R[941]=["Editor","Editor Visuale","CLI","Intlayer"],slugs:$R[942]=["doc","concept","cli","editor"],author:"aymericzip",docKey:"./docs/en/cli/editor.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/editor.md",relativeUrl:"/it/doc/concept/cli/editor",url:"https://intlayer.org/it/doc/concept/cli/editor"}},live:$R[943]={title:"Live",default:$R[944]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Comandi Live Sync",description:"Scopri come utilizzare Live Sync per riflettere le modifiche dei contenuti CMS in tempo reale.",keywords:$R[945]=["Live Sync","CMS","Runtime","CLI","Intlayer"],slugs:$R[946]=["doc","concept","cli","live"],author:"aymericzip",docKey:"./docs/en/cli/live.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/live.md",relativeUrl:"/it/doc/concept/cli/live",url:"https://intlayer.org/it/doc/concept/cli/live"}},debug:$R[947]={title:"Debug",default:$R[948]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Debug del comando Intlayer",description:"Scopri come eseguire il debug e risolvere i problemi della CLI di Intlayer.",keywords:$R[949]=["Debug","Risoluzione problemi","CLI","Intlayer"],slugs:$R[950]=["doc","concept","cli","debug"],author:"aymericzip",docKey:"./docs/en/cli/debug.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/debug.md",relativeUrl:"/it/doc/concept/cli/debug",url:"https://intlayer.org/it/doc/concept/cli/debug"}},"doc-review":$R[951]={title:"Doc Review",default:$R[952]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Revisione Documento",description:"Scopri come revisionare i file di documentazione per qualità, coerenza e completezza tra diverse localizzazioni.",keywords:$R[953]=["Revisione","Documento","Documentazione","AI","CLI","Intlayer"],slugs:$R[954]=["doc","concept","cli","doc-review"],author:"aymericzip",docKey:"./docs/en/cli/doc-review.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-review.md",relativeUrl:"/it/doc/concept/cli/doc-review",url:"https://intlayer.org/it/doc/concept/cli/doc-review"}},"doc-translate":$R[955]={title:"Doc Translate",default:$R[956]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"Traduci Documento",description:"Scopri come tradurre automaticamente i file di documentazione utilizzando servizi di traduzione AI.",keywords:$R[957]=["Traduci","Documento","Documentazione","AI","CLI","Intlayer"],slugs:$R[958]=["doc","concept","cli","doc-translate"],author:"aymericzip",docKey:"./docs/en/cli/doc-translate.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/doc-translate.md",relativeUrl:"/it/doc/concept/cli/doc-translate",url:"https://intlayer.org/it/doc/concept/cli/doc-translate"}},sdk:$R[959]={title:"SDK",default:$R[960]={createdAt:"2024-08-11",updatedAt:"2025-11-22",title:"SDK CLI",description:"Scopri come utilizzare l'SDK CLI di Intlayer nel tuo codice.",keywords:$R[961]=["SDK","CLI","Intlayer","Programmatico"],slugs:$R[962]=["doc","concept","cli","sdk"],author:"aymericzip",docKey:"./docs/en/cli/sdk.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/sdk.md",relativeUrl:"/it/doc/concept/cli/sdk",url:"https://intlayer.org/it/doc/concept/cli/sdk"}},scan:$R[963]={title:"Scan",default:$R[964]={createdAt:"2026-06-11",updatedAt:"2026-06-11",title:"Scansiona il sito web",description:"Scopri come utilizzare il comando scan della CLI di Intlayer per misurare la dimensione della pagina e controllare la salute i18n/SEO di qualsiasi sito web.",keywords:$R[965]=["Scan","SEO","i18n","Controllo","CLI","Intlayer","Dimensione pagina","Bundle"],slugs:$R[966]=["doc","concept","cli","scan"],history:$R[967]=[$R[968]={version:"9.0.0",date:"2026-06-11",changes:"\"Aggiunto comando scan\""}],author:"aymericzip",docKey:"./docs/en/cli/scan.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/cli/scan.md",relativeUrl:"/it/doc/concept/cli/scan",url:"https://intlayer.org/it/doc/concept/cli/scan"}}}},editor:$R[969]={title:"Editor visuale",default:$R[970]={createdAt:"2024-08-11",updatedAt:"2025-06-29",title:"Editor Visual Intlayer | Modifica il tuo contenuto utilizzando un editor visuale",description:"Scopri come utilizzare l’Editor Intlayer per gestire il tuo sito web multilingue. Segui i passi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[971]=["Editor","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[972]=["doc","concept","editor"],youtubeVideo:"https://www.youtube.com/watch?v=UDDTnirwi_4",history:$R[973]=[$R[974]={version:"5.5.10",date:"2025-06-29",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_visual_editor.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_visual_editor.md",relativeUrl:"/it/doc/concept/editor",url:"https://intlayer.org/it/doc/concept/editor"}},cms:$R[975]={title:"CMS",default:$R[976]={createdAt:"2025-08-23",updatedAt:"2025-08-23",title:"Intlayer CMS | Esternalizza i tuoi contenuti nel CMS di Intlayer",description:"Esternalizza i tuoi contenuti nel CMS di Intlayer per delegare la gestione dei tuoi contenuti al tuo team.",keywords:$R[977]=["CMS","Editor Visivo","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[978]=["doc","concept","cms"],youtubeVideo:"https://www.youtube.com/watch?v=UDDTnirwi_4",history:$R[979]=[$R[980]={version:"6.0.1",date:"2025-09-22",changes:"\"Aggiunta documentazione sulla sincronizzazione live\""},$R[981]={version:"6.0.0",date:"2025-09-04",changes:"\"Sostituito il campo `hotReload` con `liveSync`\""},$R[982]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_CMS.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_CMS.md",relativeUrl:"/it/doc/concept/cms",url:"https://intlayer.org/it/doc/concept/cms"}},"ci-cd":$R[983]={title:"Integrazione CI/CD",default:$R[984]={createdAt:"2025-05-20",updatedAt:"2025-08-13",title:"Integrazione CI/CD",description:"Scopri come integrare Intlayer nella tua pipeline CI/CD per la gestione e il deployment automatizzato dei contenuti.",keywords:$R[985]=["CI/CD","Integrazione Continua","Deployment Continuo","Automazione","Internazionalizzazione","Documentazione","Intlayer"],slugs:$R[986]=["doc","concept","ci-cd"],history:$R[987]=[$R[988]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializza la cronologia\""}],author:"aymericzip",docKey:"./docs/en/CI_CD.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/CI_CD.md",relativeUrl:"/it/doc/concept/ci-cd",url:"https://intlayer.org/it/doc/concept/ci-cd"}},content:$R[989]={title:"Dichiarazione dei contenuti",default:$R[990]={createdAt:"2025-02-07",updatedAt:"2026-05-12",title:"File di Contenuto",description:"Scopri come personalizzare le estensioni per i tuoi file di dichiarazione dei contenuti. Segui questa documentazione per implementare condizioni in modo efficiente nel tuo progetto.",keywords:$R[991]=["File di Contenuto","Documentazione","Intlayer"],slugs:$R[992]=["doc","concept","content"],history:$R[993]=[$R[994]={version:"8.10.0",date:"2026-05-19",changes:"\"Aggiunto supporto per i formati di file YAML e Markdown\""},$R[995]={version:"8.9.0",date:"2026-05-12",changes:"\"Aggiungi il tipo di nodo di contenuto `plural`\""},$R[996]={version:"8.0.0",date:"2026-01-28",changes:"\"Aggiunto tipo di nodo contenuto `html`\""},$R[997]={version:"8.0.0",date:"2026-01-24",changes:"\"Rename `live` import mode to `fetch` to better describe the underlying mechanism.\""},$R[998]={version:"8.0.0",date:"2026-01-18",changes:"\"Aggiunte opzioni dizionario `location` e `schema`\""},$R[999]={version:"7.5.0",date:"2025-12-13",changes:"\"Aggiunto supporto per i formati ICU e i18next\""},$R[1000]={version:"6.0.0",date:"2025-09-20",changes:"\"Aggiunta documentazione dei campi\""},$R[1001]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/dictionary/content_file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/content_file.md",relativeUrl:"/it/doc/concept/content",url:"https://intlayer.org/it/doc/concept/content"},subSections:$R[1002]={translation:$R[1003]={title:"Traduzione",default:$R[1004]={createdAt:"2024-08-11",updatedAt:"2025-06-29",title:"Traduzione",description:"Scopri come dichiarare e utilizzare la traduzione nel tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[1005]=["Traduzione","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1006]=["doc","concept","content","translation"],history:$R[1007]=[$R[1008]={version:"5.5.10",date:"2025-06-29",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/dictionary/translation.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/translation.md",relativeUrl:"/it/doc/concept/content/translation",url:"https://intlayer.org/it/doc/concept/content/translation"}},plural:$R[1009]={title:"Plurale",default:$R[1010]={createdAt:"2026-05-04",updatedAt:"2026-05-04",title:"Plurale",description:"Scopri come dichiarare e utilizzare contenuti plurali basati sulla localizzazione (basati su CLDR) nel tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[1011]=["Plurale","Pluralizzazione","CLDR","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1012]=["doc","concept","content","plural"],history:$R[1013]=[$R[1014]={version:"8.8.0",date:"2026-05-04",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/dictionary/plurial.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/plurial.md",relativeUrl:"/it/doc/concept/content/plural",url:"https://intlayer.org/it/doc/concept/content/plural"}},enumeration:$R[1015]={title:"Enumerazione",default:$R[1016]={createdAt:"2024-08-11",updatedAt:"2025-06-29",title:"Enumerazione",description:"Scopri come dichiarare e utilizzare le enumerazioni nel tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[1017]=["Enumerazione","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1018]=["doc","concept","content","enumeration"],history:$R[1019]=[$R[1020]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/dictionary/enumeration.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/enumeration.md",relativeUrl:"/it/doc/concept/content/enumeration",url:"https://intlayer.org/it/doc/concept/content/enumeration"}},condition:$R[1021]={title:"Condizione",default:$R[1022]={createdAt:"2025-02-07",updatedAt:"2025-06-29",title:"Contenuto Condizionale",description:"Scopri come utilizzare il contenuto condizionale in Intlayer per visualizzare dinamicamente contenuti in base a condizioni specifiche. Segui questa documentazione per implementare condizioni in modo efficiente nel tuo progetto.",keywords:$R[1023]=["Contenuto Condizionale","Rendering dinamico","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1024]=["doc","concept","content","condition"],author:"aymericzip",docKey:"./docs/en/dictionary/condition.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/condition.md",relativeUrl:"/it/doc/concept/content/condition",url:"https://intlayer.org/it/doc/concept/content/condition",history:$R[1025]=[$R[1026]={version:"5.5.10",date:"2025-06-29",changes:"\"Init history\""}]}},gender:$R[1027]={title:"Genere",default:$R[1028]={createdAt:"2025-07-27",updatedAt:"2025-07-27",title:"Contenuto Basato sul Genere",description:"Scopri come utilizzare contenuti basati sul genere in Intlayer per visualizzare dinamicamente contenuti in base al genere. Segui questa documentazione per implementare contenuti specifici per genere in modo efficiente nel tuo progetto.",keywords:$R[1029]=["Contenuto Basato sul Genere","Rendering Dinamico","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1030]=["doc","concept","content","gender"],history:$R[1031]=[$R[1032]={version:"5.7.2",date:"2025-07-27",changes:"\"Introduzione del contenuto basato sul genere\""}],author:"aymericzip",docKey:"./docs/en/dictionary/gender.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/gender.md",relativeUrl:"/it/doc/concept/content/gender",url:"https://intlayer.org/it/doc/concept/content/gender"}},insertion:$R[1033]={title:"Inserimento",default:$R[1034]={createdAt:"2025-03-13",updatedAt:"2025-06-29",title:"Inserimento",description:"Scopri come dichiarare e utilizzare segnaposto di inserimento nel tuo contenuto. Questa documentazione ti guida attraverso i passaggi per inserire dinamicamente valori all'interno di strutture di contenuto predefinite.",keywords:$R[1035]=["Inserimento","Contenuto Dinamico","Segnaposto","Intlayer","Next.js","JavaScript","React"],slugs:$R[1036]=["doc","concept","content","insertion"],history:$R[1037]=[$R[1038]={version:"8.0.0",date:"2026-01-18",changes:"\"Decorazione automatica del contenuto di inserimento\""},$R[1039]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/dictionary/insertion.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/insertion.md",relativeUrl:"/it/doc/concept/content/insertion",url:"https://intlayer.org/it/doc/concept/content/insertion"}},file:$R[1040]={title:"File",default:$R[1041]={createdAt:"2025-03-13",updatedAt:"2025-06-29",title:"File",description:"Scopri come incorporare file esterni nel tuo dizionario di contenuti usando la funzione `file`. Questa documentazione spiega come Intlayer collega e gestisce dinamicamente il contenuto dei file.",keywords:$R[1042]=["File","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1043]=["doc","concept","content","file"],history:$R[1044]=[$R[1045]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/dictionary/file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/file.md",relativeUrl:"/it/doc/concept/content/file",url:"https://intlayer.org/it/doc/concept/content/file"}},nesting:$R[1046]={title:"Annidamento",default:$R[1047]={createdAt:"2025-02-07",updatedAt:"2025-06-29",title:"Nesting del dizionario",description:"Scopri come utilizzare l’annidamento dei contenuti in Intlayer per riutilizzare e strutturare il tuo contenuto multilingue in modo efficiente. Segui questa documentazione per implementare facilmente l’annidamento nel tuo progetto.",keywords:$R[1048]=["Nesting","Riutilizzo del contenuto","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1049]=["doc","concept","content","nesting"],author:"aymericzip",docKey:"./docs/en/dictionary/nesting.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/nesting.md",relativeUrl:"/it/doc/concept/content/nesting",url:"https://intlayer.org/it/doc/concept/content/nesting",history:$R[1050]=[$R[1051]={version:"5.5.10",date:"2025-06-29",changes:"\"Init history\""}]}},markdown:$R[1052]={title:"Markdown",default:$R[1053]={createdAt:"2025-02-07",updatedAt:"2026-05-19",title:"Markdown",description:"Scopri come dichiarare e utilizzare i contenuti Markdown nel tuo sito web multilingue con Intlayer. Segui i passaggi in questa documentazione online per integrare perfettamente Markdown nel tuo progetto.",keywords:$R[1054]=["Markdown","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1055]=["doc","concept","content","markdown"],history:$R[1056]=[$R[1057]={version:"8.11.0",date:"2026-05-28",changes:"\"Consenti la pre-analisi dell'AST Markdown per SSR / idratazione\""},$R[1058]={version:"8.10.0",date:"2026-05-19",changes:"\"Aggiunto il supporto per i file `.content.md`\""},$R[1059]={version:"8.5.0",date:"2026-03-24",changes:"\"Aggiunto l'oggetto plugin `intlayerMarkdown`; usa `app.use(intlayerMarkdown)` al posto di `app.use(installIntlayerMarkdown)`\""},$R[1060]={version:"8.5.0",date:"2026-03-24",changes:"\"Spostata l'importazione da `{{framework}}-intlayer` a `{{framework}}-intlayer/markdown`\""},$R[1061]={version:"8.0.0",date:"2026-01-22",changes:"\"Aggiunte le utility MarkdownRenderer / useMarkdownRenderer / renderMarkdown e l'opzione forceInline\""},$R[1062]={version:"8.0.0",date:"2026-01-18",changes:"\"Decorazione automatica dei contenuti markdown, supporto per MDX e SSR\""},$R[1063]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/dictionary/markdown.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/markdown.md",relativeUrl:"/it/doc/concept/content/markdown",url:"https://intlayer.org/it/doc/concept/content/markdown"}},html:$R[1064]={title:"HTML",default:$R[1065]={createdAt:"2026-01-20",updatedAt:"2026-03-24",title:"Contenuto HTML",description:"Scopri come dichiarare e usare contenuti HTML con componenti personalizzati in Intlayer. Segui questa documentazione per incorporare contenuti ricchi in stile HTML con sostituzione dinamica dei componenti nel tuo progetto internazionalizzato.",keywords:$R[1066]=["HTML","Componenti personalizzati","Contenuto ricco","Intlayer","Next.js","JavaScript","React","Vue","Svelte","Solid","Angular"],slugs:$R[1067]=["doc","concept","content","html"],history:$R[1068]=[$R[1069]={version:"8.5.0",date:"2026-03-24",changes:"\"Add `intlayerHTML` plugin object; use `app.use(intlayerHTML)` instead of `app.use(installIntlayerHTML)`\""},$R[1070]={version:"8.5.0",date:"2026-03-24",changes:"\"spostare l'importazione da {{framework}}-intlayer a {{framework}}-intlayer/html\""},$R[1071]={version:"8.0.0",date:"2026-01-22",changes:"\"Aggiunta dell'utility HTMLRenderer / useHTMLRenderer / renderHTML\""},$R[1072]={version:"8.0.0",date:"2026-01-20",changes:"\"Aggiunto il supporto per il parsing HTML\""}],author:"aymericzip",docKey:"./docs/en/dictionary/html.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/html.md",relativeUrl:"/it/doc/concept/content/html",url:"https://intlayer.org/it/doc/concept/content/html"}},"function-fetching":$R[1073]={title:"Recupero funzione",default:$R[1074]={createdAt:"2024-08-11",updatedAt:"2025-06-29",title:"Recupero Funzioni",description:"Scopri come dichiarare e utilizzare il recupero di funzioni nel tuo sito web multilingue. Segui i passaggi in questa documentazione online per configurare il tuo progetto in pochi minuti.",keywords:$R[1075]=["Recupero Funzioni","Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React"],slugs:$R[1076]=["doc","concept","content","function-fetching"],history:$R[1077]=[$R[1078]={version:"5.5.10",date:"2025-06-29",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/dictionary/function_fetching.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dictionary/function_fetching.md",relativeUrl:"/it/doc/concept/content/function-fetching",url:"https://intlayer.org/it/doc/concept/content/function-fetching"}}}},"dynamic-dyctionary":$R[1079]={title:"File per locale",default:$R[1080]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Dizionari Dinamici",description:"Panoramica delle tre funzionalità di dizionario dinamico di Intlayer — collezioni, varianti e record dinamici — per la creazione di contenuti i18n flessibili e guidati dal runtime.",keywords:$R[1081]=["Dizionari Dinamici","Collezioni","Varianti","Record Dinamici","Intlayer","Internazionalizzazione"],slugs:$R[1082]=["doc","concept","dynamic-dictionaries"],history:$R[1083]=[$R[1084]={version:"9.0.0",date:"2026-06-12",changes:"\"Rilascio della funzionalità dei dizionari dinamici\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dynamic_dictionaries/index.md",relativeUrl:"/it/doc/concept/dynamic-dictionaries",url:"https://intlayer.org/it/doc/concept/dynamic-dictionaries"},subSections:$R[1085]={collections:$R[1086]={title:"Collezioni",default:$R[1087]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Collezioni",description:"Utilizza il campo dei metadati item nei file di contenuto di Intlayer per creare collezioni ordinate di elementi localizzati selezionabili per indice a runtime.",keywords:$R[1088]=["Collezioni","Lista di Contenuti","Contenuto Dinamico","Intlayer","Internazionalizzazione"],slugs:$R[1089]=["doc","concept","collections"],history:$R[1090]=[$R[1091]={version:"9.0.0",date:"2026-06-12",changes:"\"Rilascio della funzionalità delle collezioni di dizionari\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/collections.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dynamic_dictionaries/collections.md",relativeUrl:"/it/doc/concept/collections",url:"https://intlayer.org/it/doc/concept/collections"}},variants:$R[1092]={title:"Varianti",default:$R[1093]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Varianti",description:"Utilizza il campo dei metadati variant nei file di contenuto di Intlayer per dichiarare alternative di contenuto denominate (test A/B, banner stagionali, testi sotto feature flag) e passare da una all'altra a runtime senza modifiche al codice.",keywords:$R[1094]=["Varianti","Test A/B","Feature Flag","Contenuto Dinamico","Intlayer","Internazionalizzazione"],slugs:$R[1095]=["doc","concept","variants"],history:$R[1096]=[$R[1097]={version:"9.0.0",date:"2026-06-12",changes:"\"Rilascio della funzionalità delle varianti di dizionari\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/variants.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dynamic_dictionaries/variants.md",relativeUrl:"/it/doc/concept/variants",url:"https://intlayer.org/it/doc/concept/variants"}},"dynamic-content":$R[1098]={title:"Record dinamici",default:$R[1099]={createdAt:"2026-06-12",updatedAt:"2026-06-12",title:"Record Dinamici",description:"Utilizza il campo meta nei file di contenuto di Intlayer per dichiarare record gestiti da CMS recuperati a runtime tramite un ID opaco, abilitando contenuti dinamici fortemente tipizzati senza enumerazione a tempo di compilazione.",keywords:$R[1100]=["Record Dinamici","Contenuto Dinamico","CMS","Contenuto a Runtime","Intlayer","Internazionalizzazione"],slugs:$R[1101]=["doc","concept","dynamic-records"],history:$R[1102]=[$R[1103]={version:"9.0.0",date:"2026-06-12",changes:"\"Rilascio della funzionalità di contenuto dinamico\""}],author:"aymericzip",docKey:"./docs/en/dynamic_dictionaries/dynamic_content.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/dynamic_dictionaries/dynamic_content.md",relativeUrl:"/it/doc/concept/dynamic-records",url:"https://intlayer.org/it/doc/concept/dynamic-records"}}}},"per-locale-file":$R[1104]={title:"File per locale",default:$R[1105]={createdAt:"2025-04-18",updatedAt:"2025-06-29",title:"Dichiarazione di Contenuto `Per-Locale` in Intlayer",description:"Scopri come dichiarare contenuti per locale in Intlayer. Segui la documentazione per comprendere i diversi formati e casi d'uso.",keywords:$R[1106]=["Internazionalizzazione","Documentazione","Intlayer","Per-Locale","TypeScript","JavaScript"],slugs:$R[1107]=["doc","concept","per-locale-file"],history:$R[1108]=[$R[1109]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/per_locale_file.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/per_locale_file.md",relativeUrl:"/it/doc/concept/per-locale-file",url:"https://intlayer.org/it/doc/concept/per-locale-file"}},compiler:$R[1110]={title:"Compilatore",default:$R[1111]={createdAt:"2025-09-09",updatedAt:"2026-03-12",title:"Compiler Intlayer | Estrazione automatica dei contenuti per i18n",description:"Automatizza il tuo processo di internazionalizzazione con il compilatore Intlayer. Estrai contenuti direttamente dai tuoi componenti per un i18n più veloce ed efficiente in Vite, Next.js e altro.",keywords:$R[1112]=["Intlayer","Compiler","Internazionalizzazione","i18n","Automazione","Estrazione","Velocità","Vite","Next.js","React","Vue","Svelte"],slugs:$R[1113]=["doc","compiler"],history:$R[1114]=[$R[1115]={version:"8.2.0",date:"2026-03-10",changes:"\"Update compiler options, add FilePathPattern support\""},$R[1116]={version:"8.1.7",date:"2026-02-25",changes:"\"Aggiorna le opzioni del compilatore\""},$R[1117]={version:"7.3.1",date:"2025-11-27",changes:"\"Rilascio Compiler\""}],author:"aymericzip",docKey:"./docs/en/compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/compiler.md",relativeUrl:"/it/doc/compiler",url:"https://intlayer.org/it/doc/compiler"}},"auto-fill":$R[1118]={title:"Compilazione automatica",default:$R[1119]={createdAt:"2025-03-13",updatedAt:"2025-09-20",title:"Compilazione Automatica",description:"Scopri come utilizzare la funzionalità di compilazione automatica in Intlayer per popolare automaticamente i contenuti basati su modelli predefiniti. Segui questa documentazione per implementare efficacemente le funzionalità di compilazione automatica nel tuo progetto.",keywords:$R[1120]=["Compilazione Automatica","Automazione dei Contenuti","Contenuto Dinamico","Intlayer","Next.js","JavaScript","React"],slugs:$R[1121]=["doc","concept","auto-fill"],history:$R[1122]=[$R[1123]={version:"6.0.0",date:"2025-09-20",changes:"\"Aggiunta configurazione globale\""},$R[1124]={version:"6.0.0",date:"2025-09-17",changes:"\"Aggiunta variabile `{{fileName}}`\""},$R[1125]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/autoFill.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/autoFill.md",relativeUrl:"/it/doc/concept/auto-fill",url:"https://intlayer.org/it/doc/concept/auto-fill"}},testing:$R[1126]={title:"Test",default:$R[1127]={createdAt:"2025-03-01",updatedAt:"2025-09-20",title:"Testare i tuoi contenuti",description:"Scopri come testare i tuoi contenuti con Intlayer.",keywords:$R[1128]=["Test","Intlayer","Internazionalizzazione","CMS","Sistema di Gestione dei Contenuti","Editor Visivo"],slugs:$R[1129]=["doc","testing"],history:$R[1130]=[$R[1131]={version:"6.0.0",date:"2025-09-20",changes:"\"Introduzione dei test\""}],author:"aymericzip",docKey:"./docs/en/testing.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/testing.md",relativeUrl:"/it/doc/testing",url:"https://intlayer.org/it/doc/testing"}},bundle_optimization:$R[1132]={title:"Ottimizzazione del bundle",default:$R[1133]={createdAt:"2025-11-25",updatedAt:"2026-06-07",title:"Ottimizzazione delle dimensioni e delle prestazioni del bundle i18n",description:"Riduci le dimensioni del bundle della tua applicazione ottimizzando i contenuti di internazionalizzazione (i18n). Scopri come sfruttare il tree shaking e il lazy loading per i dizionari con Intlayer.",keywords:$R[1134]=["Ottimizzazione Bundle","Automazione Contenuti","Contenuto Dinamico","Intlayer","Next.js","JavaScript","React"],slugs:$R[1135]=["doc","concept","bundle-optimization"],history:$R[1136]=[$R[1137]={version:"8.12.0",date:"2026-06-07",changes:"\"Aggiunto `intlayerPurgeBabelPlugin` e `intlayerMinifyBabelPlugin` per Babel/Webpack; chiarimento della pipeline dei plugin\""},$R[1138]={version:"8.7.0",date:"2026-04-08",changes:"\"Aggiunte le opzioni `minify` e `purge` alla configurazione di build\""}],author:"aymericzip",docKey:"./docs/en/bundle_optimization.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/bundle_optimization.md",relativeUrl:"/it/doc/concept/bundle-optimization",url:"https://intlayer.org/it/doc/concept/bundle-optimization"}}},routing:$R[1139]={title:"Routing",subSections:$R[1140]={custom_url_rewrites:$R[1141]={title:"Riscritture URL personalizzate",default:$R[1142]={createdAt:"2024-08-13",updatedAt:"2026-01-26",title:"Riscritture URL personalizzate",description:"Scopri come configurare e utilizzare le riscritture URL personalizzate in Intlayer per definire percorsi specifici per lingua.",keywords:$R[1143]=["Riscritture URL personalizzate","Routing","Internationalization","i18n"],slugs:$R[1144]=["doc","concept","custom_url_rewrites"],history:$R[1145]=[$R[1146]={version:"8.0.0",date:"2026-01-25",changes:"\"Implementazione di riscritture URL centralizzate con formatter specifici per framework e l'hook useRewriteURL.\""}],author:"aymericzip",docKey:"./docs/en/custom_url_rewrites.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/custom_url_rewrites.md",relativeUrl:"/it/doc/concept/custom_url_rewrites",url:"https://intlayer.org/it/doc/concept/custom_url_rewrites"}},"domains-i18n":$R[1147]={title:"Domini i18n",default:$R[1148]={createdAt:"2026-04-02",updatedAt:"2026-04-02",title:"Domini personalizzati",description:"Impara come configurare il routing delle locale basato su dominio in Intlayer per servire diverse locale da hostname dedicati.",keywords:$R[1149]=["Domini personalizzati","Routing di dominio","Routing","Internazionalizzazione","i18n"],slugs:$R[1150]=["doc","concept","custom_domains"],history:$R[1151]=[$R[1152]={version:"8.5.0",date:"2026-04-02",changes:"\"Aggiunta del routing delle locale basato su dominio tramite la configurazione routing.domains.\""}],author:"aymericzip",docKey:"./docs/en/custom_domains.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/custom_domains.md",relativeUrl:"/it/doc/concept/custom_domains",url:"https://intlayer.org/it/doc/concept/custom_domains"}}}}},environment:$R[1153]={title:"Ambiente",subSections:$R[1154]={nextjs:$R[1155]={title:"Next.js",default:$R[1156]={createdAt:"2024-12-06",updatedAt:"2026-05-31",title:"Next.js 16 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js 16 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1157]=["Internazionalizzazione","Documentazione","Intlayer","Next.js 16","JavaScript","React"],slugs:$R[1158]=["doc","environment","nextjs"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-16-template",applicationShowcase:"https://intlayer-next-16-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1159]=[$R[1160]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1161]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1162]={version:"7.0.6",date:"2025-11-01",changes:"\"Aggiunta menzione di `x-default` nell'oggetto `alternates`\""},$R[1163]={version:"7.0.0",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_16.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_16.md",relativeUrl:"/it/doc/environment/nextjs",url:"https://intlayer.org/it/doc/environment/nextjs"},subSections:$R[1164]={14:$R[1165]={title:"Next.js 14 e App Router",default:$R[1166]={createdAt:"2024-12-06",updatedAt:"2026-05-31",title:"Next.js 14 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js 14 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1167]=["Internazionalizzazione","Documentazione","Intlayer","Next.js 14","JavaScript","React"],slugs:$R[1168]=["doc","environment","nextjs","14"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-14-template",applicationShowcase:"https://intlayer-next-14-template.vercel.app",history:$R[1169]=[$R[1170]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_14.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_14.md",relativeUrl:"/it/doc/environment/nextjs/14",url:"https://intlayer.org/it/doc/environment/nextjs/14"},frameworks:$R[1171]=["nextjs","react"]},15:$R[1172]={title:"Next.js 15",default:$R[1173]={createdAt:"2024-12-06",updatedAt:"2026-05-31",title:"Next.js 15 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js 15 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1174]=["Internazionalizzazione","Documentazione","Intlayer","Next.js 15","JavaScript","React"],slugs:$R[1175]=["doc","environment","nextjs","15"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-15-template",applicationShowcase:"https://next-15-intlayer-template-xt83.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1176]=[$R[1177]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1178]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1179]={version:"5.5.10",date:"2025-06-29",changes:"\"Storia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_15.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_15.md",relativeUrl:"/it/doc/environment/nextjs/15",url:"https://intlayer.org/it/doc/environment/nextjs/15"},frameworks:$R[1180]=["nextjs","react"]},"no-locale-path":$R[1181]={title:"Next.js senza locale URL",default:$R[1182]={createdAt:"2026-01-10",updatedAt:"2026-05-31",title:"Next.js 16 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js 16 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1183]=["Internazionalizzazione","Documentazione","Intlayer","Next.js 16","JavaScript","React"],slugs:$R[1184]=["doc","environment","nextjs","no-locale-path"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-no-lolale-path-template",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1185]=[$R[1186]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1187]={version:"8.0.0",date:"2026-01-10",changes:"\"Rilascio iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_no_locale_path.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_no_locale_path.md",relativeUrl:"/it/doc/environment/nextjs/no-locale-path",url:"https://intlayer.org/it/doc/environment/nextjs/no-locale-path"},frameworks:$R[1188]=["nextjs","react"]},"next-with-Page-Router":$R[1189]={title:"Next.js e Page Router",default:$R[1190]={createdAt:"2024-12-07",updatedAt:"2026-05-31",title:"Next.js Page Router i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js Page Router multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1191]=["Internazionalizzazione","Documentazione","Intlayer","Page Router","Next.js","JavaScript","React"],slugs:$R[1192]=["doc","environment","nextjs","next-with-page-router"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-14-template",applicationShowcase:"https://intlayer-next-14-template.vercel.app",history:$R[1193]=[$R[1194]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1195]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1196]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_page_router.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_page_router.md",relativeUrl:"/it/doc/environment/nextjs/next-with-page-router",url:"https://intlayer.org/it/doc/environment/nextjs/next-with-page-router"},frameworks:$R[1197]=["nextjs","react"]},"next-with-compiler":$R[1198]={title:"Compiler",default:$R[1199]={createdAt:"2026-01-10",updatedAt:"2026-05-31",title:"Next.js i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Next.js multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1200]=["Internazionalizzazione","Documentazione","Intlayer","Next.js","JavaScript","React","Compilatore","IA"],slugs:$R[1201]=["doc","environment","nextjs","compiler"],applicationTemplate:"https://github.com/aymericzip/intlayer-next-no-lolale-path-template",youtubeVideo:"https://www.youtube.com/watch?v=e_PPG7PTqGU",history:$R[1202]=[$R[1203]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1204]={version:"8.2.0",date:"2026-03-09",changes:"\"Update compiler options, add FilePathPattern support\""},$R[1205]={version:"8.1.6",date:"2026-02-23",changes:"\"Rilascio iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nextjs_compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_compiler.md",relativeUrl:"/it/doc/environment/nextjs/compiler",url:"https://intlayer.org/it/doc/environment/nextjs/compiler"},frameworks:$R[1206]=["nextjs","react"]}},frameworks:$R[1207]=["nextjs","react"]},"tanstack-start":$R[1208]={title:"Tanstack Start",default:$R[1209]={createdAt:"2025-09-09",updatedAt:"2026-05-31",title:"TanStack Start i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione TanStack Start multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1210]=["Internazionalizzazione","Documentazione","Intlayer","TanStack Start","React","i18n","TypeScript","Routing Locale","Sitemap"],slugs:$R[1211]=["doc","environment","tanstack-start"],applicationTemplate:"https://github.com/aymericzip/intlayer-tanstack-start-template",applicationShowcase:"https://intlayer-tanstack-start-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=_XTdKVWaeqg",history:$R[1212]=[$R[1213]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1214]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1215]={version:"7.4.0",date:"2025-12-11",changes:"\"Introduci validatePrefix e aggiungi il passaggio 14: Gestione delle pagine 404 con rotte localizzate.\""},$R[1216]={version:"7.3.9",date:"2025-12-05",changes:"\"Aggiungi passaggio 13: Recupera la lingua locale nelle tue server action (Opzionale)\""},$R[1217]={version:"7.2.3",date:"2025-11-18",changes:"\"Aggiungi passaggio 13: Adatta Nitro\""},$R[1218]={version:"7.1.0",date:"2025-11-17",changes:"\"Risolto il prefisso predefinito aggiungendo la funzione getPrefix, l'uso di useLocalizedNavigate, LocaleSwitcher e LocalizedLink.\""},$R[1219]={version:"6.5.2",date:"2025-10-03",changes:"\"Aggiorna doc\""},$R[1220]={version:"5.8.1",date:"2025-09-09",changes:"\"Aggiunto per TanStack Start\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_tanstack.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_tanstack.md",relativeUrl:"/it/doc/environment/tanstack-start",url:"https://intlayer.org/it/doc/environment/tanstack-start"},frameworks:$R[1221]=["tanstack","react","vite"],subSections:$R[1222]={"tanstack-start-solid":$R[1223]={title:"Tanstack Start Solid",default:$R[1224]={createdAt:"2025-03-25",updatedAt:"2026-05-31",title:"TanStack Start + Solid i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione TanStack Start + Solid multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1225]=["Internazionalizzazione","Documentazione","Intlayer","Tanstack Start","Solid","i18n","TypeScript","Routing di localizzazione","Sitemap"],slugs:$R[1226]=["doc","environment","tanstack-start","solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-tanstack-start-solid-template",applicationShowcase:"https://intlayer-tanstack-start-solid.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=_XTdKVWaeqg",history:$R[1227]=[$R[1228]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1229]={version:"8.5.1",date:"2026-03-25",changes:"\"Aggiunto per Tanstack Start Solid.js\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_tanstack+solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_tanstack+solid.md",relativeUrl:"/it/doc/environment/tanstack-start/solid",url:"https://intlayer.org/it/doc/environment/tanstack-start/solid"},frameworks:$R[1230]=["solid","tanstack","vite"]}}},astro:$R[1231]={title:"Astro",default:$R[1232]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Astro i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1233]=["internazionalizzazione","documentazione","Intlayer","Vite","React","i18n","JavaScript"],slugs:$R[1234]=["doc","environment","astro"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1235]=[$R[1236]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1237]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiunto comando init\""},$R[1238]={version:"6.2.0",date:"2025-10-03",changes:"\"Aggiornamento dell'integrazione, configurazione e utilizzo di Astro\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro.md",relativeUrl:"/it/doc/environment/astro",url:"https://intlayer.org/it/doc/environment/astro"},frameworks:$R[1239]=["astro","vite"],subSections:$R[1240]={"astro-and-react":$R[1241]={title:"Astro e React",default:$R[1242]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Astro + React i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + React multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1243]=["internazionalizzazione","documentazione","Intlayer","Astro","React","i18n","JavaScript"],slugs:$R[1244]=["doc","environment","astro","react"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1245]=[$R[1246]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1247]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiunto comando init\""},$R[1248]={version:"6.2.0",date:"2025-10-03",changes:"\"Aggiornamento dell'integrazione, configurazione e utilizzo di Astro\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_react.md",relativeUrl:"/it/doc/environment/astro/react",url:"https://intlayer.org/it/doc/environment/astro/react"},frameworks:$R[1249]=["react","astro","vite"]},"astro-and-svelte":$R[1250]={title:"Astro e Svelte",default:$R[1251]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Svelte i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Svelte multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1252]=["internazionalizzazione","documentazione","Intlayer","Astro","Svelte","i18n","JavaScript"],slugs:$R[1253]=["doc","environment","astro","svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1254]=[$R[1255]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1256]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Svelte\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_svelte.md",relativeUrl:"/it/doc/environment/astro/svelte",url:"https://intlayer.org/it/doc/environment/astro/svelte"},frameworks:$R[1257]=["svelte","astro","vite"]},"astro-and-vue":$R[1258]={title:"Astro e Vue",default:$R[1259]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Vue i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Vue multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1260]=["internazionalizzazione","documentazione","Intlayer","Astro","Vue","i18n","JavaScript"],slugs:$R[1261]=["doc","environment","astro","vue"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1262]=[$R[1263]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1264]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Vue\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_vue.md",relativeUrl:"/it/doc/environment/astro/vue",url:"https://intlayer.org/it/doc/environment/astro/vue"},frameworks:$R[1265]=["vue","astro","vite"]},"astro-and-solid":$R[1266]={title:"Astro e Solid",default:$R[1267]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Solid i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Solid multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1268]=["internazionalizzazione","documentazione","Intlayer","Astro","Solid","i18n","JavaScript"],slugs:$R[1269]=["doc","environment","astro","solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1270]=[$R[1271]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1272]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Solid\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_solid.md",relativeUrl:"/it/doc/environment/astro/solid",url:"https://intlayer.org/it/doc/environment/astro/solid"},frameworks:$R[1273]=["solid","astro","vite"]},"astro-and-preact":$R[1274]={title:"Astro e Preact",default:$R[1275]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Preact i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Preact multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1276]=["internazionalizzazione","documentazione","Intlayer","Astro","Preact","i18n","JavaScript"],slugs:$R[1277]=["doc","environment","astro","preact"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1278]=[$R[1279]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1280]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Preact\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_preact.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_preact.md",relativeUrl:"/it/doc/environment/astro/preact",url:"https://intlayer.org/it/doc/environment/astro/preact"},frameworks:$R[1281]=["preact","astro","vite"]},"astro-and-lit":$R[1282]={title:"Astro e Lit",default:$R[1283]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Lit i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Lit multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1284]=["internazionalizzazione","documentazione","Intlayer","Astro","Lit","Web Components","i18n","JavaScript"],slugs:$R[1285]=["doc","environment","astro","lit"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1286]=[$R[1287]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1288]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Lit\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_lit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_lit.md",relativeUrl:"/it/doc/environment/astro/lit",url:"https://intlayer.org/it/doc/environment/astro/lit"},frameworks:$R[1289]=["lit","astro","vite"]},"astro-and-vanilla-js":$R[1290]={title:"Astro e Vanilla JS",default:$R[1291]={createdAt:"2026-04-24",updatedAt:"2026-05-31",title:"Astro + Vanilla JS i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Astro + Vanilla JS multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1292]=["internazionalizzazione","documentazione","Intlayer","Astro","Vanilla JS","JavaScript","TypeScript"],slugs:$R[1293]=["doc","environment","astro","vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-astro-template",applicationShowcase:"https://intlayer-astro-template.vercel.app",history:$R[1294]=[$R[1295]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1296]={version:"8.7.7",date:"2026-04-24",changes:"\"Documentazione iniziale per Astro + Vanilla JS\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_astro_vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_astro_vanilla.md",relativeUrl:"/it/doc/environment/astro/vanilla",url:"https://intlayer.org/it/doc/environment/astro/vanilla"},frameworks:$R[1297]=["vanilla","astro","vite"]}}},"vite-and-react":$R[1298]={title:"Vite e React",default:$R[1299]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Vite + React i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + React multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1300]=["Internazionalizzazione","Documentazione","Intlayer","Vite","React","i18n","JavaScript"],slugs:$R[1301]=["doc","environment","vite-and-react"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-react-template",applicationShowcase:"https://intlayer-vite-react-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1302]=[$R[1303]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1304]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1305]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+react.md",relativeUrl:"/it/doc/environment/vite-and-react",url:"https://intlayer.org/it/doc/environment/vite-and-react"},subSections:$R[1306]={"react-router-v7":$R[1307]={title:"React Router v7",default:$R[1308]={createdAt:"2025-09-04",updatedAt:"2026-05-31",title:"React Router v7 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione React Router v7 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1309]=["Internazionalizzazione","Documentazione","Intlayer","React Router v7","React","i18n","TypeScript","Routing Locale"],slugs:$R[1310]=["doc","environment","vite-and-react","react-router-v7"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-router-v7-template",applicationShowcase:"https://intlayer-react-router-v7.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1311]=[$R[1312]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1313]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1314]={version:"7.5.6",date:"2025-12-27",changes:"\"Aggiorna Layout e gestisci 404\""},$R[1315]={version:"6.1.5",date:"2025-10-03",changes:"\"Documentazione aggiornata\""},$R[1316]={version:"5.8.2",date:"2025-09-04",changes:"\"Aggiunto per React Router v7\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_router_v7.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_react_router_v7.md",relativeUrl:"/it/doc/environment/vite-and-react/react-router-v7",url:"https://intlayer.org/it/doc/environment/vite-and-react/react-router-v7"},frameworks:$R[1317]=["react","vite"]},"react-router-v7-fs-routes":$R[1318]={title:"React Router v7 (fs-routes)",default:$R[1319]={createdAt:"2025-12-07",updatedAt:"2026-05-31",title:"React Router v7 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione React Router v7 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1320]=["Internazionalizzazione","Documentazione","Intlayer","React Router v7","fs-routes","Route basate sul file system","React","i18n","TypeScript","Routing Locale"],slugs:$R[1321]=["doc","environment","vite-and-react","react-router-v7-fs-routes"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-router-v7-fs-routes-template",applicationShowcase:"https://intlayer-react-router-v7-fs-routes.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1322]=[$R[1323]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1324]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1325]={version:"7.3.4",date:"2025-12-08",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_router_v7_fs_routes.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_react_router_v7_fs_routes.md",relativeUrl:"/it/doc/environment/vite-and-react/react-router-v7-fs-routes",url:"https://intlayer.org/it/doc/environment/vite-and-react/react-router-v7-fs-routes"},frameworks:$R[1326]=["react","vite"]},compiler:$R[1327]={title:"Compiler",default:$R[1328]={createdAt:"2024-03-07",updatedAt:"2026-05-31",title:"Vite + React i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + React multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1329]=["Internazionalizzazione","Documentazione","Intlayer","Vite","React","Compilatore","IA"],slugs:$R[1330]=["doc","environment","vite-and-react","compiler"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-react-template",applicationShowcase:"https://intlayer-vite-react-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=dS9L7uJeak4",history:$R[1331]=[$R[1332]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1333]={version:"8.2.0",date:"2026-03-09",changes:"\"Update compiler options, add FilePathPattern support\""},$R[1334]={version:"8.1.6",date:"2026-02-23",changes:"\"Rilascio iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+react_compiler.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+react_compiler.md",relativeUrl:"/it/doc/environment/vite-and-react/compiler",url:"https://intlayer.org/it/doc/environment/vite-and-react/compiler"},frameworks:$R[1335]=["react","vite"]}},frameworks:$R[1336]=["react","vite"]},"vite-and-vue":$R[1337]={title:"Vite e Vue",default:$R[1338]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Vue i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Vue multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1339]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Vue","JavaScript"],slugs:$R[1340]=["doc","environment","vite-and-vue"],history:$R[1341]=[$R[1342]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1343]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1344]={version:"5.5.10",date:"2025-06-29",changes:"\"Storia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+vue.md",relativeUrl:"/it/doc/environment/vite-and-vue",url:"https://intlayer.org/it/doc/environment/vite-and-vue",applicationTemplate:"https://github.com/aymericzip/intlayer-vite-vue-template",applicationShowcase:"https://intlayer-vite-vue-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=IE3XWkZ6a5U"},frameworks:$R[1345]=["vue","vite"],subSections:$R[1346]={"nuxt-and-vue":$R[1347]={title:"Nuxt e Vue",default:$R[1348]={createdAt:"2025-06-18",updatedAt:"2026-05-31",title:"Nuxt i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Nuxt multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1349]=["Internazionalizzazione","Documentazione","Intlayer","Nuxt","Vue","JavaScript"],slugs:$R[1350]=["doc","environment","nuxt-and-vue"],applicationTemplate:"https://github.com/aymericzip/intlayer-nuxt-4-template",applicationShowcase:"https://intlayer-nuxt-4-template.vercel.app",youtubeVideo:"https://www.youtube.com/watch?v=nhUcUAVQ6eQ",history:$R[1351]=[$R[1352]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1353]={version:"7.3.11",date:"2025-12-07",changes:"\"Aggiornamento LocaleSwitcher, SEO, metadata\""},$R[1354]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_nuxt.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nuxt.md",relativeUrl:"/it/doc/environment/nuxt-and-vue",url:"https://intlayer.org/it/doc/environment/nuxt-and-vue"},frameworks:$R[1355]=["nuxt","vue","vite"]}}},"vite-and-solid":$R[1356]={title:"Vite e Solid",default:$R[1357]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Solid i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Solid multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1358]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Solid","JavaScript"],slugs:$R[1359]=["doc","environment","vite-and-solid"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-solid-template",history:$R[1360]=[$R[1361]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1362]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1363]={version:"5.5.10",date:"2025-06-29",changes:"\"Storia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+solid.md",relativeUrl:"/it/doc/environment/vite-and-solid",url:"https://intlayer.org/it/doc/environment/vite-and-solid"},frameworks:$R[1364]=["solid","vite"]},"vite-and-svelte":$R[1365]={title:"Vite e Svelte",default:$R[1366]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Svelte i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Svelte multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1367]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Svelte","JavaScript"],slugs:$R[1368]=["doc","environment","vite-and-svelte"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-svelte-template",applicationShowcase:"https://intlayer-vite-svelte-template.vercel.app",history:$R[1369]=[$R[1370]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1371]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1372]={version:"5.5.11",date:"2025-11-19",changes:"\"Aggiornamento doc\""},$R[1373]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+svelte.md",relativeUrl:"/it/doc/environment/vite-and-svelte",url:"https://intlayer.org/it/doc/environment/vite-and-svelte"},subSections:$R[1374]={"vite-and-svelte-kit":$R[1375]={title:"SvelteKit",default:$R[1376]={createdAt:"2025-11-20",updatedAt:"2026-05-31",title:"SvelteKit i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione SvelteKit multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1377]=["Internazionalizzazione","Documentazione","Intlayer","SvelteKit","JavaScript","SSR"],slugs:$R[1378]=["doc","environment","sveltekit"],applicationTemplate:"https://github.com/aymericzip/intlayer-sveltekit-template",applicationShowcase:"https://intlayer-sveltekit-template.vercel.app",history:$R[1379]=[$R[1380]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1381]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1382]={version:"7.1.10",date:"2025-11-20",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_svelte_kit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_svelte_kit.md",relativeUrl:"/it/doc/environment/sveltekit",url:"https://intlayer.org/it/doc/environment/sveltekit"},frameworks:$R[1383]=["svelte","vite"]}},frameworks:$R[1384]=["svelte","vite"]},"vite-and-preact":$R[1385]={title:"Vite e Preact",default:$R[1386]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Vite + Preact i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Preact multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1387]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Preact","JavaScript"],slugs:$R[1388]=["doc","environment","vite-and-preact"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-preact-template",applicationShowcase:"https://intlayer-vite-preact-template.vercel.app",history:$R[1389]=[$R[1390]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1391]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1392]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+preact.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+preact.md",relativeUrl:"/it/doc/environment/vite-and-preact",url:"https://intlayer.org/it/doc/environment/vite-and-preact"},frameworks:$R[1393]=["preact","vite"]},"vite-and-vanilla-js":$R[1394]={title:"Vite e Vanilla JS",default:$R[1395]={createdAt:"2026-03-23",updatedAt:"2026-05-31",title:"Vite + Vanilla JS i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Vanilla JS multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1396]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Vanilla JS","JavaScript","TypeScript","HTML"],slugs:$R[1397]=["doc","environment","vite-and-vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-vanilla-template",applicationShowcase:"https://intlayer-vite-vanilla.vercel.app",history:$R[1398]=[$R[1399]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1400]={version:"8.4.10",date:"2026-03-23",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+vanilla.md",relativeUrl:"/it/doc/environment/vite-and-vanilla",url:"https://intlayer.org/it/doc/environment/vite-and-vanilla"},frameworks:$R[1401]=["vanilla","vite"],subSections:$R[1402]={"vanilla-js":$R[1403]={title:"Vanilla JS (senza bundler)",default:$R[1404]={createdAt:"2026-03-31",updatedAt:"2026-05-31",title:"Vanilla JS i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vanilla JS multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1405]=["Internazionalizzazione","Documentazione","Intlayer","Vanilla JS","JavaScript","TypeScript","HTML"],slugs:$R[1406]=["doc","environment","vanilla"],applicationTemplate:"https://github.com/aymericzip/intlayer-vanilla-template",applicationShowcase:"https://intlayer-vanilla-template.vercel.app",history:$R[1407]=[$R[1408]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1409]={version:"8.4.10",date:"2026-03-31",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vanilla.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vanilla.md",relativeUrl:"/it/doc/environment/vanilla",url:"https://intlayer.org/it/doc/environment/vanilla"},frameworks:$R[1410]=["vanilla"]}}},"vite-and-lit":$R[1411]={title:"Vite e Lit",default:$R[1412]={createdAt:"2026-03-23",updatedAt:"2026-05-31",title:"Vite + Lit i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Vite + Lit multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1413]=["Internazionalizzazione","Documentazione","Intlayer","Vite","Lit","Web Components","JavaScript"],slugs:$R[1414]=["doc","environment","vite-and-lit"],applicationTemplate:"https://github.com/aymericzip/intlayer-vite-lit-template",applicationShowcase:"https://intlayer-vite-lit-template.vercel.app",history:$R[1415]=[$R[1416]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1417]={version:"8.4.10",date:"2026-03-23",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_vite+lit.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_vite+lit.md",relativeUrl:"/it/doc/environment/vite-and-lit",url:"https://intlayer.org/it/doc/environment/vite-and-lit"},frameworks:$R[1418]=["lit","vite"]},angular:$R[1419]={title:"Angular 21",default:$R[1420]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Angular 21 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Angular 21 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1421]=["Internazionalizzazione","Documentazione","Intlayer","Angular","JavaScript"],slugs:$R[1422]=["doc","environment","angular"],applicationTemplate:"https://github.com/aymericzip/intlayer-angular-21-template",applicationShowcase:"https://intlayer-angular-21-template.vercel.app/",history:$R[1423]=[$R[1424]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornato l'uso dell'API Solid useIntlayer per l'accesso diretto alle proprietà\""},$R[1425]={version:"8.0.0",date:"2026-01-26",changes:"\"Rilascio versione stabile\""},$R[1426]={version:"8.0.0",date:"2025-12-30",changes:"\"Aggiunto comando init\""},$R[1427]={version:"5.5.10",date:"2025-06-29",changes:"\"Storico iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_angular_21.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_angular_21.md",relativeUrl:"/it/doc/environment/angular",url:"https://intlayer.org/it/doc/environment/angular"},subSections:$R[1428]={19:$R[1429]={title:"Angular 19 (Webpack)",default:$R[1430]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Angular 19 i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Angular 19 multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1431]=["Internazionaliizzazione","Documentazione","Intlayer","Angular","JavaScript"],slugs:$R[1432]=["doc","environment","angular","19"],applicationTemplate:"https://github.com/aymericzip/intlayer-angular-19-template",applicationShowcase:"https://intlayer-angular-19-template.vercel.app",history:$R[1433]=[$R[1434]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1435]={version:"8.0.0",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1436]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializza cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_angular_19.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_angular_19.md",relativeUrl:"/it/doc/environment/angular/19",url:"https://intlayer.org/it/doc/environment/angular/19"},frameworks:$R[1437]=["angular","webpack"]},analog:$R[1438]={title:"Analog",default:$R[1439]={createdAt:"2025-04-18",updatedAt:"2026-05-31",title:"Analog i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Analog multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1440]=["Internationalization","Documentation","Intlayer","Analog","Angular","JavaScript"],slugs:$R[1441]=["doc","environment","analog"],applicationTemplate:"https://github.com/aymericzip/intlayer-analog-template",applicationShowcase:"https://intlayer-analog-template.vercel.app",history:$R[1442]=[$R[1443]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1444]={version:"8.0.4",date:"2026-01-26",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_analog.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_analog.md",relativeUrl:"/it/doc/environment/analog",url:"https://intlayer.org/it/doc/environment/analog"},frameworks:$R[1445]=["angular","vite"]}},frameworks:$R[1446]=["angular","vite"]},"create-react-app":$R[1447]={title:"React CRA",default:$R[1448]={createdAt:"2024-08-11",updatedAt:"2026-05-31",title:"Create React App i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Create React App multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1449]=["Internazionalizzazione","Documentazione","Intlayer","Create React App","CRA","JavaScript","React"],slugs:$R[1450]=["doc","environment","create-react-app"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-cra-template",history:$R[1451]=[$R[1452]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1453]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1454]={version:"5.5.10",date:"2025-06-29",changes:"\"Cronologia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_create_react_app.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_create_react_app.md",relativeUrl:"/it/doc/environment/create-react-app",url:"https://intlayer.org/it/doc/environment/create-react-app"},frameworks:$R[1455]=["react","vite"]},"react-native-and-expo":$R[1456]={title:"React Native e Expo",default:$R[1457]={createdAt:"2025-06-18",updatedAt:"2026-05-31",title:"Expo + React Native i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Expo + React Native multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1458]=["Internazionalizzazione","Documentazione","Intlayer","React Native","Expo","JavaScript"],slugs:$R[1459]=["doc","environment","react-native-and-expo"],applicationTemplate:"https://github.com/aymericzip/intlayer-react-native-template",applicationShowcase:"https://intlayer-react-native.vercel.app",history:$R[1460]=[$R[1461]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1462]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1463]={version:"5.5.10",date:"2025-06-29",changes:"\"Storia iniziale\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_react_native+expo.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_react_native+expo.md",relativeUrl:"/it/doc/environment/react-native-and-expo",url:"https://intlayer.org/it/doc/environment/react-native-and-expo"},frameworks:$R[1464]=["react","react-native","expo"]},node:$R[1465]={title:"Node & Backend",subSections:$R[1466]={express:$R[1467]={title:"Express.js",default:$R[1468]={createdAt:"2024-08-11",updatedAt:"2026-05-31",title:"Express i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Express multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1469]=["Internazionalizzazione","Documentazione","Intlayer","Express","JavaScript","Backend"],slugs:$R[1470]=["doc","environment","express"],applicationTemplate:"https://github.com/aymericzip/intlayer-express-template",history:$R[1471]=[$R[1472]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1473]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1474]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_express.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_express.md",relativeUrl:"/it/doc/environment/express",url:"https://intlayer.org/it/doc/environment/express"},frameworks:$R[1475]=["express","node"]},nest:$R[1476]={title:"NestJS",default:$R[1477]={createdAt:"2025-09-09",updatedAt:"2026-05-31",title:"NestJS i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione NestJS multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1478]=["Internazionalizzazione","Documentazione","Intlayer","NestJS","JavaScript","Backend"],slugs:$R[1479]=["doc","environment","nest"],author:"AydinTheFirst",history:$R[1480]=[$R[1481]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1482]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1483]={version:"5.8.0",date:"2025-09-09",changes:"\"Documentazione iniziale\""}],docKey:"./docs/en/intlayer_with_nestjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nestjs.md",relativeUrl:"/it/doc/environment/nest",url:"https://intlayer.org/it/doc/environment/nest"},frameworks:$R[1484]=["nest","node"]},fastify:$R[1485]={title:"Fastify",default:$R[1486]={createdAt:"2025-12-30",updatedAt:"2026-05-31",title:"Fastify i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Fastify multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1487]=["Internazionalizzazione","Documentazione","Intlayer","Fastify","JavaScript","Backend"],slugs:$R[1488]=["doc","environment","fastify"],applicationTemplate:"https://github.com/aymericzip/intlayer-fastify-template",history:$R[1489]=[$R[1490]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1491]={version:"7.6.0",date:"2025-12-31",changes:"\"Aggiunto comando init\""},$R[1492]={version:"7.6.0",date:"2025-12-31",changes:"\"Inizializzata cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_fastify.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_fastify.md",relativeUrl:"/it/doc/environment/fastify",url:"https://intlayer.org/it/doc/environment/fastify"},frameworks:$R[1493]=["fastify","node"]},hono:$R[1494]={title:"Hono",default:$R[1495]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"Hono i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Hono multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1496]=["Internazionalizzazione","Documentazione","Intlayer","Hono","JavaScript","Backend"],slugs:$R[1497]=["doc","environment","hono"],applicationTemplate:"https://github.com/aymericzip/intlayer-hono-template",history:$R[1498]=[$R[1499]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1500]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1501]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_hono.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_hono.md",relativeUrl:"/it/doc/environment/hono",url:"https://intlayer.org/it/doc/environment/hono"},frameworks:$R[1502]=["hono","node"]},adonis:$R[1503]={title:"Adonis",default:$R[1504]={createdAt:"2025-08-23",updatedAt:"2026-05-31",title:"AdonisJS i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione AdonisJS multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1505]=["Internazionalizzazione","Documentazione","Intlayer","AdonisJS","JavaScript","Backend"],slugs:$R[1506]=["doc","environment","adonisjs"],applicationTemplate:"https://github.com/aymericzip/intlayer-adonis-template",history:$R[1507]=[$R[1508]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1509]={version:"8.0.0",date:"2025-12-30",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_adonisjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_adonisjs.md",relativeUrl:"/it/doc/environment/adonisjs",url:"https://intlayer.org/it/doc/environment/adonisjs"},frameworks:$R[1510]=["adonis","node"]}}},other:$R[1511]={title:"Altro",subSections:$R[1512]={"lynx-and-react":$R[1513]={title:"Lynx e React",default:$R[1514]={createdAt:"2025-03-09",updatedAt:"2026-05-31",title:"Lynx + React i18n - Guida completa per tradurre la tua applicazione",description:"Niente più i18next. La guida 2026 per creare un'applicazione Lynx + React multilingue (i18n). Traduci con agenti AI e ottimizza la dimensione del bundle, SEO e prestazioni.",keywords:$R[1515]=["Internazionalizzazione","Documentazione","Intlayer","Vite","React","Lynx","JavaScript"],slugs:$R[1516]=["doc","environment","lynx-and-react"],applicationTemplate:"https://github.com/aymericzip/intlayer-lynx-template",history:$R[1517]=[$R[1518]={version:"8.9.0",date:"2026-05-04",changes:"\"Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà\""},$R[1519]={version:"7.5.9",date:"2025-12-30",changes:"\"Aggiungi comando init\""},$R[1520]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizio cronologia\""}],author:"aymericzip",docKey:"./docs/en/intlayer_with_lynx+react.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_lynx+react.md",relativeUrl:"/it/doc/environment/lynx-and-react",url:"https://intlayer.org/it/doc/environment/lynx-and-react"},frameworks:$R[1521]=["lynx","react"]}}}}},plugins:$R[1522]={title:"Plugins",subSections:$R[1523]={syncJSON:$R[1524]={title:"JSON",default:$R[1525]={createdAt:"2025-03-13",updatedAt:"2025-12-13",title:"Plugin Sync JSON",description:"Sincronizza i dizionari Intlayer con file JSON i18n di terze parti (i18next, next-intl, react-intl, vue-i18n e altri). Mantieni il tuo i18n esistente mentre usi Intlayer per gestire, tradurre e testare i tuoi messaggi.",keywords:$R[1526]=["Intlayer","Sync JSON","i18next","next-intl","react-intl","vue-i18n","next-translate","nuxt-i18n","LinguiJS","Polyglot.js","Solid-i18next","svelte-i18n","i18n","traduzioni"],slugs:$R[1527]=["doc","plugin","sync-json"],youtubeVideo:"https://www.youtube.com/watch?v=MpGMxniDHNg",history:$R[1528]=[$R[1529]={version:"7.5.0",date:"2025-12-13",changes:"\"Aggiunto supporto per i formati ICU e i18next\""},$R[1530]={version:"6.1.6",date:"2025-10-05",changes:"\"Documentazione iniziale del plugin Sync JSON\""}],author:"aymericzip",docKey:"./docs/en/plugins/sync-json.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/plugins/sync-json.md",relativeUrl:"/it/doc/plugin/sync-json",url:"https://intlayer.org/it/doc/plugin/sync-json"}},syncPO:$R[1531]={title:"gettext (.po)",default:$R[1532]={createdAt:"2026-05-10",updatedAt:"2026-05-10",title:"Plugin Sync PO",description:"Sincronizza i dizionari Intlayer con i file Gettext PO. Mantieni la tua i18n esistente utilizzando Intlayer per gestire, tradurre e testare i tuoi messaggi.",keywords:$R[1533]=["Intlayer","Sync PO","Gettext","i18n","traduzioni"],slugs:$R[1534]=["doc","plugin","sync-po"],youtubeVideo:"https://www.youtube.com/watch?v=MpGMxniDHNg",history:$R[1535]=[$R[1536]={version:"8.9.4",date:"2026-05-10",changes:"\"Documentazione iniziale del plugin Sync PO\""}],author:"aymericzip",docKey:"./docs/en/plugins/sync-po.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/plugins/sync-po.md",relativeUrl:"/it/doc/plugin/sync-po",url:"https://intlayer.org/it/doc/plugin/sync-po"}}}},"dev-tools":$R[1537]={title:"Strumenti per sviluppatori",subSections:$R[1538]={"vs-code-extension":$R[1539]={title:"Estensione VS Code",default:$R[1540]={createdAt:"2025-03-17",updatedAt:"2025-09-30",title:"Estensione Ufficiale per VS Code",description:"Scopri come utilizzare l'estensione Intlayer in VS Code per migliorare il tuo flusso di lavoro di sviluppo. Naviga rapidamente tra i contenuti localizzati e gestisci i tuoi dizionari in modo efficiente.",keywords:$R[1541]=["Estensione VS Code","Intlayer","Localizzazione","Strumenti di Sviluppo","React","Next.js","JavaScript","TypeScript"],slugs:$R[1542]=["doc","vs-code-extension"],history:$R[1543]=[$R[1544]={version:"6.1.5",date:"2025-09-30",changes:"\"Aggiunta gif demo\""},$R[1545]={version:"6.1.0",date:"2025-09-24",changes:"\"Aggiunta sezione selezione ambiente\""},$R[1546]={version:"6.0.0",date:"2025-09-22",changes:"\"Comandi Intlayer Tab / Fill & Test\""},$R[1547]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione cronologia\""}],author:"aymericzip",docKey:"./docs/en/vs_code_extension.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/vs_code_extension.md",relativeUrl:"/it/doc/vs-code-extension",url:"https://intlayer.org/it/doc/vs-code-extension"}},"mcp-server":$R[1548]={title:"Server MCP",default:$R[1549]={createdAt:"2025-06-07",updatedAt:"2026-03-03",title:"Documentazione del Server MCP",description:"Esplora le funzionalità e la configurazione del Server MCP per ottimizzare la gestione e le operazioni del tuo server.",keywords:$R[1550]=["Server MCP","Gestione Server","Ottimizzazione","Intlayer","Documentazione","Configurazione","Funzionalità"],slugs:$R[1551]=["doc","mcp-server"],history:$R[1552]=[$R[1553]={version:"5.5.12",date:"2025-07-11",changes:"\"Aggiunta configurazione di ChatGPT\""},$R[1554]={version:"5.5.12",date:"2025-07-10",changes:"\"Aggiunta configurazione di Claude Desktop\""},$R[1555]={version:"5.5.12",date:"2025-07-10",changes:"\"Aggiunto trasporto Streamable HTTP e server remoto\""},$R[1556]={version:"5.5.10",date:"2025-06-29",changes:"\"Inizializzazione della cronologia\""}],author:"aymericzip",docKey:"./docs/en/mcp_server.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/mcp_server.md",relativeUrl:"/it/doc/mcp-server",url:"https://intlayer.org/it/doc/mcp-server"}},"agent-skills":$R[1557]={title:"Abilità dell’agente",default:$R[1558]={createdAt:"2026-02-09",updatedAt:"2026-03-03",title:"Competenze dell'Agente",description:"Scopri come utilizzare le Intlayer Agent Skills per migliorare la comprensione del tuo progetto da parte del tuo agente AI, inclusi i manuali completi di configurazione per Metadati, Sitemap e Azioni del Server.",keywords:$R[1559]=["Intlayer","Competenze dell'Agente","Agente AI","Internazionalizzazione","Documentazione"],slugs:$R[1560]=["doc","agent_skills"],history:$R[1561]=[$R[1562]={version:"8.1.0",date:"2026-02-09",changes:"\"Init history\""}],author:"aymericzip",docKey:"./docs/en/agent_skills.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/agent_skills.md",relativeUrl:"/it/doc/agent_skills",url:"https://intlayer.org/it/doc/agent_skills"}},lsp:$R[1563]={title:"Language Server Protocol",default:$R[1564]={createdAt:"2025-06-07",updatedAt:"2026-05-31",title:"Server LSP Intlayer",description:"Scopri come il server di linguaggio Intlayer fornisce la funzionalità \"Vai alla definizione\" e altre funzionalità IDE per useIntlayer, getIntlayer e chiamate correlate in tutti gli editor supportati.",keywords:$R[1565]=["LSP","Server di linguaggio","Vai alla definizione","IDE","Intlayer","VS Code","Neovim","TypeScript"],slugs:$R[1566]=["doc","lsp"],history:$R[1567]=[$R[1568]={version:"8.12.0",date:"2026-06-01",changes:"\"Release LSP\""}],author:"aymericzip",docKey:"./docs/en/lsp.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/lsp.md",relativeUrl:"/it/doc/lsp",url:"https://intlayer.org/it/doc/lsp"}}}},releases:$R[1569]={title:"Versioni",subSections:$R[1570]={v9:$R[1571]={title:"v9",default:$R[1572]={createdAt:"2026-06-14",updatedAt:"2026-06-14",title:"Nuovo Intlayer v9 - Cosa c'è di nuovo?",description:"Scopri le novità di Intlayer v9. Introduzione di package di compatibilità drop-in per le più diffuse librerie i18n e supporto per Collections, Variants e Dynamic Records.",keywords:$R[1573]=["Intlayer","Compatibilità","Migrazione","Collections","Variants","Dynamic Records","i18next","next-intl","vue-i18n"],slugs:$R[1574]=["doc","releases","v9"],author:"aymericzip",docKey:"./docs/en/releases/v9.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/releases/v9.md",relativeUrl:"/it/doc/releases/v9",url:"https://intlayer.org/it/doc/releases/v9"}},v8:$R[1575]={title:"v8",default:$R[1576]={createdAt:"2025-09-22",updatedAt:"2026-06-14",title:"Nuovo Intlayer v8 - Novità",description:"Scopri le novità di Intlayer v8. Miglioramenti significativi nella Developer Experience, nella validazione dei contenuti e nella gestione dei dizionari.",keywords:$R[1577]=["Intlayer","CMS","Developer Experience","Features","React","Next.js","JavaScript","TypeScript"],youtubeVideo:"https://www.youtube.com/watch?v=ia6JmVf-kkU",slugs:$R[1578]=["doc","releases","v8"],author:"aymericzip",docKey:"./docs/en/releases/v8.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/releases/v8.md",relativeUrl:"/it/doc/versioni/v8",url:"https://intlayer.org/it/doc/versioni/v8"}},v7:$R[1579]={title:"v7",default:$R[1580]={createdAt:"2025-09-22",updatedAt:"2025-09-23",title:"Nuovo Intlayer v7 - Novità",description:"Scopri le novità di Intlayer v7. Miglioramenti significativi nelle prestazioni, nell'esperienza dello sviluppatore e nuove funzionalità per migliorare il tuo flusso di lavoro di internazionalizzazione.",keywords:$R[1581]=["Intlayer","Localizzazione","Sviluppo","Prestazioni","Esperienza dello sviluppatore","Funzionalità","React","Next.js","JavaScript","TypeScript"],slugs:$R[1582]=["doc","releases","v7"],author:"aymericzip",docKey:"./docs/en/releases/v7.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/releases/v7.md",relativeUrl:"/it/doc/releases/v7",url:"https://intlayer.org/it/doc/releases/v7"}},v6:$R[1583]={title:"v6",default:$R[1584]={createdAt:"2025-09-22",updatedAt:"2025-09-22",title:"Nuovo Intlayer v6 - Novità",description:"Scopri le novità di Intlayer v6. Miglioramenti significativi nelle prestazioni, nell'esperienza dello sviluppatore e nuove funzionalità per migliorare il tuo flusso di lavoro di internazionalizzazione.",keywords:$R[1585]=["Intlayer","Localizzazione","Sviluppo","Prestazioni","Esperienza dello sviluppatore","Funzionalità","React","Next.js","JavaScript","TypeScript"],slugs:$R[1586]=["doc","releases","v6"],author:"aymericzip",docKey:"./docs/en/releases/v6.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/releases/v6.md",relativeUrl:"/it/doc/releases/v6",url:"https://intlayer.org/it/doc/releases/v6"}}}},benchmark:$R[1587]={title:"Benchmark",default:$R[1588]={createdAt:"2026-04-20",updatedAt:"2026-04-20",title:"Benchmark delle librerie i18n",description:"Scopri come Intlayer si confronta con altre librerie i18n in termini di prestazioni e dimensioni del bundle.",keywords:$R[1589]=["benchmark","i18n","intl","nextjs","tanstack","intlayer"],slugs:$R[1590]=["doc","benchmark"],history:$R[1591]=[$R[1592]={version:"8.7.5",date:"2026-01-06",changes:"\"Inizializzazione benchmark\""}],author:"aymericzip",docKey:"./docs/en/benchmark/index.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/index.md",relativeUrl:"/it/doc/benchmark",url:"https://intlayer.org/it/doc/benchmark"},subSections:$R[1593]={nextjs:$R[1594]={title:"Next.js",default:$R[1595]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Migliore soluzione i18n per Next.js nel 2026 - Rapporto Benchmark",description:"Confronta le librerie di internazionalizzazione (i18n) per Next.js come next-intl, next-i18next e Intlayer. Rapporto dettagliato sulle prestazioni relative a dimensioni del bundle, leakage e reattività.",keywords:$R[1596]=["benchmark","i18n","intl","nextjs","prestazioni","intlayer"],slugs:$R[1597]=["doc","benchmark","nextjs"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n",history:$R[1598]=[$R[1599]={version:"8.9.8",date:"2026-05-18",changes:"\"Aggiungi comparazione delle stelle di GitHub\""},$R[1600]={version:"8.7.5",date:"2026-01-06",changes:"\"Inizializzazione benchmark\""}],docKey:"./docs/en/benchmark/nextjs.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/nextjs.md",relativeUrl:"/it/doc/benchmark/nextjs",url:"https://intlayer.org/it/doc/benchmark/nextjs"},frameworks:$R[1601]=["nextjs","react"]},tanstack:$R[1602]={title:"TanStack",default:$R[1603]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Migliore soluzione i18n per TanStack Start nel 2026 - Rapporto Benchmark",description:"Confronta le librerie di internazionalizzazione per TanStack Start come react-i18next, use-intl e Intlayer. Rapporto dettagliato sulle prestazioni relative a dimensioni del bundle, leakage e reattività.",keywords:$R[1604]=["benchmark","i18n","intl","tanstack","prestazioni","intlayer"],slugs:$R[1605]=["doc","benchmark","tanstack"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-tanstack-start-template",history:$R[1606]=[$R[1607]={version:"8.9.8",date:"2026-05-18",changes:"\"Aggiungi comparazione delle stelle di GitHub\""},$R[1608]={version:"8.7.5",date:"2026-01-06",changes:"\"Inizializzazione benchmark\""}],docKey:"./docs/en/benchmark/tanstack.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/tanstack.md",relativeUrl:"/it/doc/benchmark/tanstack",url:"https://intlayer.org/it/doc/benchmark/tanstack"},frameworks:$R[1609]=["tanstack","react"]},vue:$R[1610]={title:"Vue",default:$R[1611]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Migliore soluzione i18n per Vue nel 2026 - Rapporto Benchmark",description:"Confronta le librerie di internazionalizzazione (i18n) per Vue come vue-i18n, fluent-vue e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.",keywords:$R[1612]=["benchmark","i18n","intl","vue","prestazioni","intlayer"],slugs:$R[1613]=["doc","benchmark","vue"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-vue-template",history:$R[1614]=[$R[1615]={version:"8.9.8",date:"2026-05-18",changes:"\"Aggiungi comparazione delle stelle di GitHub\""},$R[1616]={version:"8.7.12",date:"2026-01-06",changes:"\"Inizializzazione del benchmark\""}],docKey:"./docs/en/benchmark/vue.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/vue.md",relativeUrl:"/it/doc/benchmark/vue",url:"https://intlayer.org/it/doc/benchmark/vue"},frameworks:$R[1617]=["vue"]},solid:$R[1618]={title:"Solid",default:$R[1619]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Migliore soluzione i18n per Solid nel 2026 - Rapporto Benchmark",description:"Confronta le librerie di internazionalizzazione (i18n) per Solid come solid-primitives, solid-i18next e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.",keywords:$R[1620]=["benchmark","i18n","intl","solid","prestazioni","intlayer"],slugs:$R[1621]=["doc","benchmark","solid"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-solid-template",history:$R[1622]=[$R[1623]={version:"8.9.8",date:"2026-05-18",changes:"\"Aggiungi comparazione delle stelle di GitHub\""},$R[1624]={version:"8.7.12",date:"2026-01-06",changes:"\"Inizializzazione del benchmark\""}],docKey:"./docs/en/benchmark/solid.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/solid.md",relativeUrl:"/it/doc/benchmark/solid",url:"https://intlayer.org/it/doc/benchmark/solid"},frameworks:$R[1625]=["solid"]},svelte:$R[1626]={title:"Svelte",default:$R[1627]={createdAt:"2026-04-20",updatedAt:"2026-05-18",title:"Migliore soluzione i18n per Svelte nel 2026 - Rapporto Benchmark",description:"Confronta le librerie di internazionalizzazione (i18n) per Svelte come svelte-i18n, Paraglide e Intlayer. Rapporto dettagliato sulle prestazioni in termini di dimensioni del bundle, leak e reattività.",keywords:$R[1628]=["benchmark","i18n","intl","svelte","prestazioni","intlayer"],slugs:$R[1629]=["doc","benchmark","svelte"],author:"aymericzip",applicationTemplate:"https://github.com/intlayer-org/benchmark-i18n-svelte-template",history:$R[1630]=[$R[1631]={version:"8.9.8",date:"2026-05-18",changes:"\"Aggiungi comparazione delle stelle di GitHub\""},$R[1632]={version:"8.7.12",date:"2026-01-06",changes:"\"Inizializzazione del benchmark\""}],docKey:"./docs/en/benchmark/svelte.md",githubUrl:"https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/benchmark/svelte.md",relativeUrl:"/it/doc/benchmark/svelte",url:"https://intlayer.org/it/doc/benchmark/svelte"},frameworks:$R[1633]=["svelte"]}}}}},ssr:!0}],lastMatchId:"�{-$locale}�_docs�doc�$�it�doc�environment�vite-and-svelte"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script><script type="module" async="" src="/assets/index-Bw9yQaJj.js"></script></body></html>