HomeAmbiente di testVetrinaAppDocBlog
    • Englishinglese
      EN
    • русскийrusso
      RU
    • 日本語giapponese
      JA
    • françaisfrancese
      FR
    • 한국어coreano
      KO
    • 中文cinese
      ZH
    • españolspagnolo
      ES
    • Deutschtedesco
      DE
    • العربيةarabo
      AR
    • italianoitaliano
      IT
    • British Englishinglese britannico
      EN-GB
    • portuguêsportoghese
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolacco
      PL
    • Indonesiaindonesiano
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraino
      UK
    /
    Filtra la documentazione per framework
    Alt+←
    Perché Intlayer?
    Iniziare
    Concetto
    • Come funziona Intlayer
    • Configurazione
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visuale
    • CMS
    • Integrazione CI/CD
    • TraduzionePluraleEnumerazioneCondizioneGenereInserimentoFileAnnidamentoMarkdownHTMLRecupero funzione
    • File per locale
    • Compilatore
    • Compilazione automatica
    • Test
    • Ottimizzazione del bundle
    Ambiente
    • Next.js 14 e App Router
      Next.js 15
      Next.js senza locale URL
      Next.js e Page Router
      Compiler
    • Tanstack Start Solid
    • Astro e React
      Astro e Svelte
      Astro e Vue
      Astro e Solid
      Astro e Preact
      Astro e Lit
      Astro e Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt e Vue
    • Vite e Solid
    • SvelteKit
    • Vite e Preact
    • Vite e Vanilla JS
    • Vite e Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native e Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx e React
    Plugins
    • JSON
    • gettext (.po)
    Estensione VS Code
    Agente
    • Server MCP
    • Abilità dell’agente
    Versioni
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Fai una domanda
    1. Documentation
    2. Ambiente
    3. Nuxt and vue
    \n\n\n```\n\n#### Accesso ai Contenuti in Intlayer\n\nIntlayer offre diverse API per accedere ai tuoi contenuti:\n\n- **Sintassi basata su componenti** (consigliata):\n Usa la sintassi ``, o `` per rendere il contenuto come un Nodo Intlayer. Questo si integra perfettamente con il [Visual Editor](/it/doc/concept/editor) e il [CMS](/it/doc/concept/cms).\n\n- **Sintassi basata su stringhe**:\n Usa `{{ myContent }}` per rendere il contenuto come testo semplice, senza supporto per il Visual Editor.\n\n- **Sintassi HTML grezzo**:\n Usa `
    ` per rendere il contenuto come HTML grezzo, senza supporto per il Visual Editor.\n\n- **Sintassi di destrutturazione**:\n Il composable `useIntlayer` restituisce un Proxy con il contenuto. Questo proxy può essere destrutturato per accedere al contenuto mantenendo la reattività.\n - Usa `const content = useIntlayer(\"myContent\");` e `{{ content.myContent }}` / ``.\n - Oppure usa `const { myContent } = useIntlayer(\"myContent\");` e `{{ myContent}}` / `` per destrutturare il contenuto.\n\n### (Opzionale) Passo 6: Cambiare la lingua del tuo contenuto\n\nPer cambiare la lingua del tuo contenuto, puoi usare la funzione `setLocale` fornita dal composable `useLocale`. Questa funzione ti permette di impostare la locale dell'applicazione e aggiornare di conseguenza il contenuto.\n\nCrea un componente per cambiare lingua usando `NuxtLink`. **Usare link invece di pulsanti per il cambio di locale è una best practice per la SEO e la scoperta delle pagine**, poiché permette ai motori di ricerca di scansionare e indicizzare tutte le versioni localizzate delle tue pagine:\n\n```vue fileName=\"components/LocaleSwitcher.vue\"\n\n\n\n```\n\n> L'uso di `NuxtLink` con attributi `href` corretti (tramite `getLocalizedUrl`) garantisce che i motori di ricerca possano scoprire tutte le varianti linguistiche delle tue pagine. Questo è preferibile rispetto al cambio di lingua basato solo su JavaScript, che i crawler dei motori di ricerca potrebbero non seguire.\n\nQuindi, configura il tuo `app.vue` per utilizzare i layout:\n\n```vue fileName=\"app.vue\"\n\n```\n\n### (Opzionale) Passo 6b: Crea un Layout con Navigazione\n\nI layout di Nuxt ti permettono di definire una struttura comune per le tue pagine. Crea un layout di default che includa il selettore di lingua e la navigazione:\n\n```vue fileName=\"layouts/default.vue\"\n\n\n\n```\n\nIl componente `Links` (mostrato di seguito) garantisce che i link di navigazione interna siano automaticamente localizzati.\n\n### (Opzionale) Passo 7: Aggiungi il Routing localizzato alla tua applicazione\n\nNuxt gestisce automaticamente il routing localizzato quando si utilizza il modulo `nuxt-intlayer`. Questo crea rotte per ogni lingua automaticamente in base alla struttura della directory delle tue pagine.\n\nEsempio:\n\n```plaintext\npages/\n├── index.vue → /, /fr, /es\n├── about.vue → /about, /fr/about, /es/about\n└── contact/\n └── index.vue → /contact, /fr/contact, /es/contact\n```\n\nPer creare pagine localizzate, crea semplicemente i tuoi file Vue nella directory `pages/`. Ecco due esempi di pagine:\n\n**Pagina Home (`pages/index.vue`):**\n\n```vue fileName=\"pages/index.vue\"\n\n\n\n```\n\n**Pagina About (`pages/about.vue`):**\n\n```vue fileName=\"pages/about.vue\"\n\n\n\n```\n\n> Nota: `useHead` è importato automaticamente in Nuxt. Puoi accedere ai valori del contenuto usando `.value` (reattivo) o `.raw` (stringa primitiva) a seconda delle tue esigenze.\n\nIl modulo `nuxt-intlayer` farà automaticamente:\n\n- Rilevare la locale preferita dall'utente\n- Gestire il cambio di locale tramite URL\n- Impostare l'attributo `` appropriato\n- Gestire i cookie della locale\n- Reindirizzare gli utenti all'URL localizzato corretto\n\n### (Opzionale) Passo 8: Creare un componente Link localizzato\n\nPer garantire che la navigazione della tua applicazione rispetti la lingua corrente, puoi creare un componente `Links` personalizzato. Questo componente aggiunge automaticamente il prefisso della lingua corrente agli URL interni, cosa essenziale per la **SEO e la scoperta delle pagine**.\n\n```vue fileName=\"components/Links.vue\"\n\n\n\n```\n\nQuindi usa questo componente in tutta la tua applicazione:\n\n```vue fileName=\"layouts/default.vue\"\n\n\n\n```\n\n> Utilizzando `NuxtLink` con percorsi localizzati, si garantisce che:\n>\n> - I motori di ricerca possano eseguire la scansione e indicizzare tutte le versioni linguistiche delle tue pagine\n> - Gli utenti possano condividere direttamente URL localizzati\n> - La cronologia del browser funzioni correttamente con URL prefissati dalla locale\n\n### (Opzionale) Passo 9: Gestire Metadata e SEO\n\nNuxt offre eccellenti funzionalità SEO tramite il composable `useHead` (auto-importato). Puoi utilizzare Intlayer per gestire i metadata localizzati usando l'accessore `.raw` o `.value` per ottenere il valore stringa primitivo:\n\n```vue fileName=\"pages/about.vue\"\n\n\n\n```\n\n> In alternativa, puoi usare la funzione `import { getIntlayer } from \"intlayer\"` per ottenere il contenuto senza la reattività di Vue.\n\n> **Accesso ai valori del contenuto:**\n>\n> - Usa `.raw` per ottenere il valore stringa primitivo (non reattivo)\n> - Usa `.value` per ottenere il valore reattivo\n> - Usa la sintassi componente `` per il supporto all'Editor Visuale\n\nCrea la dichiarazione di contenuto corrispondente:\n\n```ts fileName=\"pages/about-page.content.ts\" contentDeclarationFormat={[\"typescript\", \"esm\", \"commonjs\"]}\nimport { t, type Dictionary } from \"intlayer\";\n\nconst aboutPageContent = {\n key: \"about-page\",\n content: {\n metaTitle: t({\n en: \"About Us - My Company\",\n fr: \"À Propos - Ma Société\",\n es: \"Acerca de Nosotros - Mi Empresa\",\n }),\n metaDescription: t({\n it: \"Scopri di più sulla nostra azienda e sulla nostra missione\",\n en: \"Learn more about our company and our mission\",\n fr: \"En savoir plus sur notre société et notre mission\",\n es: \"Conozca más sobre nuestra empresa y nuestra misión\",\n }),\n title: t({\n it: \"Chi Siamo\",\n en: \"About Us\",\n fr: \"À Propos\",\n es: \"Acerca de Nosotros\",\n }),\n },\n} satisfies Dictionary;\n\nexport default aboutPageContent;\n```\n\n```json fileName=\"pages/about-page.content.json\" contentDeclarationFormat=\"json\"\n{\n \"$schema\": \"https://intlayer.org/schema.json\",\n \"key\": \"about-page\",\n \"content\": {\n \"metaTitle\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"About Us - My Company\",\n \"fr\": \"À Propos - Ma Société\",\n \"es\": \"Acerca de Nosotros - Mi Empresa\",\n \"it\": \"Chi Siamo - La Mia Azienda\"\n }\n },\n \"metaDescription\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"Learn more about our company and our mission\",\n \"fr\": \"En savoir plus sur notre société et notre mission\",\n \"es\": \"Conozca más sobre nuestra empresa y nuestra misión\",\n \"it\": \"Scopri di più sulla nostra azienda e sulla nostra missione\"\n }\n },\n \"title\": {\n \"nodeType\": \"translation\",\n \"translation\": {\n \"en\": \"About Us\",\n \"fr\": \"À Propos\",\n \"es\": \"Acerca de Nosotros\",\n \"it\": \"Chi Siamo\"\n }\n }\n }\n}\n```\n\n### Configurazione Git\n\nSi consiglia di ignorare i file generati da Intlayer. Questo ti permette di evitare di committarli nel tuo repository Git.\n\nPer farlo, puoi aggiungere le seguenti istruzioni al tuo file `.gitignore`:\n\n```plaintext fileName=\".gitignore\"\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- **Autocompletamento** per le chiavi di traduzione.\n- **Rilevamento errori in tempo reale** per traduzioni mancanti.\n- **Anteprime inline** del contenuto tradotto.\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### 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","about":"Scopri come rendere il tuo sito Nuxt e Vue multilingue. Segui la documentazione per internazionalizzare (i18n) e tradurlo.","url":"https://intlayer.org/it/doc/environment/nuxt-and-vue","datePublished":"18-06-2025","dateModified":"06-05-2026","keywords":"Internazionalizzazione, Documentazione, Intlayer, Nuxt, Vue, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Sviluppatori, Manager dei contenuti"}}
    Creazione:2025-06-18Ultimo aggiornamento:2026-05-06
    Visualizza il modello di applicazione su GitHub

    Questa pagina ha un modello di applicazione disponibile.

    Vedi l'applicazione showcase

    Questa pagina collega a una demo dal vivo del modello.

    Guarda il video tutorial

    Questa pagina ha un video tutorial disponibile.

    Riferimento a questa documentazione al tuo assistente AI preferito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta

    Cronologia delle versioni

    1. "Aggiornare l'uso dell'API useIntlayer di Solid all'accesso diretto alle proprietà"
      v8.9.004/05/2026
    2. "Aggiornamento LocaleSwitcher, SEO, metadata"
      v7.3.1107/12/2025
    3. "Inizializzazione cronologia"
      v5.5.1029/06/2025

    Il contenuto di questa pagina è stato tradotto con un'IA.

    Vedi l'ultima versione del contenuto originale in inglese
    Modifica questa documentazione

    Se hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.

    Collegamento GitHub alla documentazione
    Copia

    Copia il Markdown del documento nella porta-documenti

    Traduci il tuo sito Nuxt e Vue usando Intlayer | Internazionalizzazione (i18n)

    Indice

    Cos'è Intlayer?

    Intlayer è una libreria di internazionalizzazione (i18n) innovativa e open-source progettata per semplificare il supporto multilingue nelle moderne applicazioni web.

    Con Intlayer, puoi:

    • Gestire facilmente le traduzioni utilizzando dizionari dichiarativi a livello di componente.
    • Localizzare dinamicamente metadata, rotte e contenuti.
    • Garantire il supporto a TypeScript con tipi autogenerati, migliorando l'autocompletamento e il rilevamento degli errori.
    • Beneficiare di funzionalità avanzate, come il rilevamento e lo switch dinamico della locale.

    Guida passo-passo per configurare Intlayer in un'applicazione Nuxt

    www.youtube.com
    ide.intlayer.org
    intlayer-nuxt-4-template.vercel.app

    Vedi il Template dell'Applicazione su GitHub.

    Passo 1: Installa le dipendenze

    Installa i pacchetti necessari usando npm:

    bash
    Copiare il codice

    Copiare il codice nella clipboard

    npm install intlayer vue-intlayernpm install --save-dev nuxt-intlayernpx intlayer init
    • intlayer

      Il pacchetto core che fornisce strumenti di internazionalizzazione per la gestione della configurazione, la traduzione, la dichiarazione dei contenuti, la traspilazione e i comandi CLI.

    • vue-intlayer Il pacchetto che integra Intlayer con l'applicazione Vue. Fornisce i composables per i componenti Vue.

    • nuxt-intlayer Il modulo Nuxt che integra Intlayer con le applicazioni Nuxt. Fornisce una configurazione automatica, middleware per il rilevamento della locale, gestione dei cookie e reindirizzamento degli URL.

    Passo 2: Configurazione del tuo progetto

    Crea un file di configurazione per configurare le lingue della tua applicazione:

    intlayer.config.ts
    Copiare il codice

    Copiare il codice nella clipboard

    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [
          Locales.ENGLISH,
          Locales.FRENCH,
          Locales.SPANISH,
          // Le tue altre localizzazioni
        ],
        defaultLocale: Locales.ENGLISH,
      },
    };
    
    export default config;
    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.

    Passo 3: Integra Intlayer nella tua configurazione Nuxt

    Aggiungi il modulo intlayer alla tua configurazione Nuxt:

    nuxt.config.ts
    Copiare il codice

    Copiare il codice nella clipboard

    import { defineNuxtConfig } from "nuxt/config";export default defineNuxtConfig({  // ... La tua configurazione Nuxt esistente  modules: ["nuxt-intlayer"],});
    Il modulo nuxt-intlayer gestisce automaticamente l'integrazione di Intlayer con Nuxt. Configura la costruzione delle dichiarazioni di contenuto, monitora i file in modalità sviluppo, fornisce middleware per il rilevamento della locale e gestisce il routing localizzato.

    Passo 4: Dichiara il tuo contenuto

    Crea e gestisci le tue dichiarazioni di contenuto per memorizzare le traduzioni:

    Le tue dichiarazioni di contenuto possono essere definite ovunque nella tua applicazione purché siano incluse nella directory contentDir (di default, ./src). E corrispondano all'estensione del file di dichiarazione del contenuto (di default, .content.{json,ts,tsx,js,jsx,mjs,cjs}).
    Per maggiori dettagli, consulta la documentazione sulla dichiarazione dei contenuti.

    Passo 5: Utilizza Intlayer nel Tuo Codice

    Accedi ai tuoi dizionari di contenuti in tutta l'applicazione Nuxt utilizzando il composable useIntlayer:

    components/HelloWorld.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  nuxtIntlayer,  learnMore,  nuxtDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://nuxt.com/docs/getting-started/introduction" target="_blank"      >Nuxt</a    >, <nuxtIntlayer />  </p>  <p>    <learnMore />    <a href="https://nuxt.com" target="_blank"><nuxtDocs /></a>.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>

    Accesso ai Contenuti in Intlayer

    Intlayer offre diverse API per accedere ai tuoi contenuti:

    • Sintassi basata su componenti (consigliata): Usa la sintassi <myContent />, o <Component :is="myContent" /> per rendere il contenuto come un Nodo Intlayer. Questo si integra perfettamente con il Visual Editor e il CMS.

    • Sintassi basata su stringhe: Usa {{ myContent }} per rendere il contenuto come testo semplice, senza supporto per il Visual Editor.

    • Sintassi HTML grezzo: Usa <div v-html="myContent" /> per rendere il contenuto come HTML grezzo, senza supporto per il Visual Editor.

    • Sintassi di destrutturazione: Il composable useIntlayer restituisce un Proxy con il contenuto. Questo proxy può essere destrutturato per accedere al contenuto mantenendo la reattività.

      • Usa const content = useIntlayer("myContent"); e {{ content.myContent }} / <content.myContent />.
      • Oppure usa const { myContent } = useIntlayer("myContent"); e {{ myContent}} / <myContent/> per destrutturare il contenuto.

    (Opzionale) Passo 6: Cambiare la lingua del tuo contenuto

    Per cambiare la lingua del tuo contenuto, puoi usare la funzione setLocale fornita dal composable useLocale. Questa funzione ti permette di impostare la locale dell'applicazione e aggiornare di conseguenza il contenuto.

    Crea un componente per cambiare lingua usando NuxtLink. Usare link invece di pulsanti per il cambio di locale è una best practice per la SEO e la scoperta delle pagine, poiché permette ai motori di ricerca di scansionare e indicizzare tutte le versioni localizzate delle tue pagine:

    components/LocaleSwitcher.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Nuxt importa automaticamente useRouteconst route = useRoute();const { locale, availableLocales, setLocale } = useLocale();</script><template>  <nav class="locale-switcher">    <NuxtLink      v-for="localeEl in availableLocales"      :key="localeEl"      :to="getLocalizedUrl(route.fullPath, localeEl)"      class="locale-link"      :class="{ 'active-locale': localeEl === locale }"      @click="setLocale(localeEl)"    >      {{ getLocaleName(localeEl) }}    </NuxtLink>  </nav></template>
    L'uso di NuxtLink con attributi href corretti (tramite getLocalizedUrl) garantisce che i motori di ricerca possano scoprire tutte le varianti linguistiche delle tue pagine. Questo è preferibile rispetto al cambio di lingua basato solo su JavaScript, che i crawler dei motori di ricerca potrebbero non seguire.

    Quindi, configura il tuo app.vue per utilizzare i layout:

    app.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <template>  <NuxtLayout>    <NuxtPage />  </NuxtLayout></template>

    (Opzionale) Passo 6b: Crea un Layout con Navigazione

    I layout di Nuxt ti permettono di definire una struttura comune per le tue pagine. Crea un layout di default che includa il selettore di lingua e la navigazione:

    layouts/default.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Home</Links>    <Links href="/about">About</Links>  </div></template>

    Il componente Links (mostrato di seguito) garantisce che i link di navigazione interna siano automaticamente localizzati.

    (Opzionale) Passo 7: Aggiungi il Routing localizzato alla tua applicazione

    Nuxt gestisce automaticamente il routing localizzato quando si utilizza il modulo nuxt-intlayer. Questo crea rotte per ogni lingua automaticamente in base alla struttura della directory delle tue pagine.

    Esempio:

    plaintext
    Copiare il codice

    Copiare il codice nella clipboard

    pages/├── index.vue          → /, /fr, /es├── about.vue          → /about, /fr/about, /es/about└── contact/    └── index.vue      → /contact, /fr/contact, /es/contact

    Per creare pagine localizzate, crea semplicemente i tuoi file Vue nella directory pages/. Ecco due esempi di pagine:

    Pagina Home (pages/index.vue):

    pages/index.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("home-page");useHead({  title: content.metaTitle.raw,  meta: [    {      name: "description",      content: content.metaDescription.raw,    },  ],});</script><template>  <h1><content.title /></h1></template>

    Pagina About (pages/about.vue):

    pages/about.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Usa .raw per accedere alla stringa primitiva  meta: [    {      name: "description",      content: content.metaDescription.raw, // Usa .raw per accedere alla stringa primitiva    },  ],});</script><template>  <h1><content.title /></h1></template>
    Nota: useHead è importato automaticamente in Nuxt. Puoi accedere ai valori del contenuto usando .value (reattivo) o .raw (stringa primitiva) a seconda delle tue esigenze.

    Il modulo nuxt-intlayer farà automaticamente:

    • Rilevare la locale preferita dall'utente
    • Gestire il cambio di locale tramite URL
    • Impostare l'attributo <html lang=""> appropriato
    • Gestire i cookie della locale
    • Reindirizzare gli utenti all'URL localizzato corretto

    (Opzionale) Passo 8: Creare un componente Link localizzato

    Per garantire che la navigazione della tua applicazione rispetti la lingua corrente, puoi creare un componente Links personalizzato. Questo componente aggiunge automaticamente il prefisso della lingua corrente agli URL interni, cosa essenziale per la SEO e la scoperta delle pagine.

    components/Links.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { getLocalizedUrl } from "intlayer";// Importa il composable per la gestione della lingua correnteimport { useLocale } from "vue-intlayer";interface Props {  href: string;  locale?: string;}const props = defineProps<Props>();const { locale: currentLocale } = useLocale();// Calcola il percorso finaleconst finalPath = computed(() => {  // 1. Verifica se il link è esterno  const isExternal = /^https?:\/\//.test(props.href || "");  // 2. Se esterno, restituisci così com'è (NuxtLink gestisce la generazione del tag <a>)  if (isExternal) return props.href;  // 3. Se è interno, localizza l'URL  const targetLocale = props.locale || currentLocale.value;  return getLocalizedUrl(props.href, targetLocale);});</script><template>  <NuxtLink :to="finalPath" v-bind="$attrs">    <slot />  </NuxtLink></template>

    Quindi usa questo componente in tutta la tua applicazione:

    layouts/default.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Home</Links>    <Links href="/about">About</Links>  </div></template>

    Utilizzando NuxtLink con percorsi localizzati, si garantisce che:

    • I motori di ricerca possano eseguire la scansione e indicizzare tutte le versioni linguistiche delle tue pagine
    • Gli utenti possano condividere direttamente URL localizzati
    • La cronologia del browser funzioni correttamente con URL prefissati dalla locale

    (Opzionale) Passo 9: Gestire Metadata e SEO

    Nuxt offre eccellenti funzionalità SEO tramite il composable useHead (auto-importato). Puoi utilizzare Intlayer per gestire i metadata localizzati usando l'accessore .raw o .value per ottenere il valore stringa primitivo:

    pages/about.vue
    Copiare il codice

    Copiare il codice nella clipboard

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer";// useHead è auto-importato in Nuxtconst content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Usa .raw per accedere al valore stringa primitivo  meta: [    {      name: "description",      content: content.metaDescription.raw, // Usa .raw per accedere alla stringa primitiva    },  ],});</script><template>  <h1><content.title /></h1></template>
    In alternativa, puoi usare la funzione import { getIntlayer } from "intlayer" per ottenere il contenuto senza la reattività di Vue.

    Accesso ai valori del contenuto:

    • Usa .raw per ottenere il valore stringa primitivo (non reattivo)
    • Usa .value per ottenere il valore reattivo
    • Usa la sintassi componente <content.key /> per il supporto all'Editor Visuale

    Crea la dichiarazione di contenuto corrispondente:

    pages/about-page.content.ts
    Copiare il codice

    Copiare il codice nella clipboard

    import { t, type Dictionary } from "intlayer";
    
    const aboutPageContent = {
      key: "about-page",
      content: {
        metaTitle: t({
          en: "About Us - My Company",
          fr: "À Propos - Ma Société",
          es: "Acerca de Nosotros - Mi Empresa",
        }),
        metaDescription: t({
          it: "Scopri di più sulla nostra azienda e sulla nostra missione",
          en: "Learn more about our company and our mission",
          fr: "En savoir plus sur notre société et notre mission",
          es: "Conozca más sobre nuestra empresa y nuestra misión",
        }),
        title: t({
          it: "Chi Siamo",
          en: "About Us",
          fr: "À Propos",
          es: "Acerca de Nosotros",
        }),
      },
    } satisfies Dictionary;
    
    export default aboutPageContent;

    Configurazione Git

    Si consiglia di ignorare i file generati da Intlayer. Questo ti permette di evitare di committarli nel tuo repository Git.

    Per farlo, puoi aggiungere le seguenti istruzioni al tuo file .gitignore:

    .gitignore
    Copiare il codice

    Copiare il codice nella clipboard

    # Ignora i file generati da Intlayer.intlayer

    Estensione VS Code

    Per migliorare la tua esperienza di sviluppo con Intlayer, puoi installare la Intlayer VS Code Extension ufficiale.

    Installa dal VS Code Marketplace

    Questa estensione offre:

    • Autocompletamento per le chiavi di traduzione.
    • Rilevamento errori in tempo reale per traduzioni mancanti.
    • Anteprime inline del contenuto tradotto.
    • Azioni rapide per creare e aggiornare facilmente le traduzioni.

    Per maggiori dettagli su come utilizzare l'estensione, consulta la documentazione della Intlayer VS Code Extension.


    Vai oltre

    Per andare oltre, puoi implementare l'editor visuale o esternalizzare i tuoi contenuti utilizzando il CMS.

    Vite e Vue
    Vite e Solid
    Alt+→

    In questa pagina

      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.

      npm install intlayer vue-intlayernpm install --save-dev nuxt-intlayernpx intlayer init
      import { defineNuxtConfig } from "nuxt/config";export default defineNuxtConfig({  // ... La tua configurazione Nuxt esistente  modules: ["nuxt-intlayer"],});
      <script setup lang="ts">import { ref } from "vue";import { useIntlayer } from "vue-intlayer";defineProps({  msg: String,});const {  count,  edit,  checkOut,  nuxtIntlayer,  learnMore,  nuxtDocs,  readTheDocs,} = useIntlayer("helloworld");const countRef = ref(0);</script><template>  <h1>{{ msg }}</h1>  <div class="card">    <button type="button" @click="countRef++">      <count />      {{ countRef }}    </button>    <p v-html="edit"></p>  </div>  <p>    <checkOut />    <a href="https://nuxt.com/docs/getting-started/introduction" target="_blank"      >Nuxt</a    >, <nuxtIntlayer />  </p>  <p>    <learnMore />    <a href="https://nuxt.com" target="_blank"><nuxtDocs /></a>.  </p>  <p class="read-the-docs"><readTheDocs /></p>  <p class="read-the-docs">{{ readTheDocs }}</p></template>
      <script setup lang="ts">import { getLocaleName, getLocalizedUrl } from "intlayer";import { useLocale } from "vue-intlayer";// Nuxt importa automaticamente useRouteconst route = useRoute();const { locale, availableLocales, setLocale } = useLocale();</script><template>  <nav class="locale-switcher">    <NuxtLink      v-for="localeEl in availableLocales"      :key="localeEl"      :to="getLocalizedUrl(route.fullPath, localeEl)"      class="locale-link"      :class="{ 'active-locale': localeEl === locale }"      @click="setLocale(localeEl)"    >      {{ getLocaleName(localeEl) }}    </NuxtLink>  </nav></template>
      <template>  <NuxtLayout>    <NuxtPage />  </NuxtLayout></template>
      <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Home</Links>    <Links href="/about">About</Links>  </div></template>
      pages/├── index.vue          → /, /fr, /es├── about.vue          → /about, /fr/about, /es/about└── contact/    └── index.vue      → /contact, /fr/contact, /es/contact
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("home-page");useHead({  title: content.metaTitle.raw,  meta: [    {      name: "description",      content: content.metaDescription.raw,    },  ],});</script><template>  <h1><content.title /></h1></template>
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";const content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Usa .raw per accedere alla stringa primitiva  meta: [    {      name: "description",      content: content.metaDescription.raw, // Usa .raw per accedere alla stringa primitiva    },  ],});</script><template>  <h1><content.title /></h1></template>
      <script setup lang="ts">import { getLocalizedUrl } from "intlayer";// Importa il composable per la gestione della lingua correnteimport { useLocale } from "vue-intlayer";interface Props {  href: string;  locale?: string;}const props = defineProps<Props>();const { locale: currentLocale } = useLocale();// Calcola il percorso finaleconst finalPath = computed(() => {  // 1. Verifica se il link è esterno  const isExternal = /^https?:\/\//.test(props.href || "");  // 2. Se esterno, restituisci così com'è (NuxtLink gestisce la generazione del tag <a>)  if (isExternal) return props.href;  // 3. Se è interno, localizza l'URL  const targetLocale = props.locale || currentLocale.value;  return getLocalizedUrl(props.href, targetLocale);});</script><template>  <NuxtLink :to="finalPath" v-bind="$attrs">    <slot />  </NuxtLink></template>
      <script setup lang="ts">import Links from "~/components/Links.vue";import LocaleSwitcher from "~/components/LocaleSwitcher.vue";</script><template>  <div>    <header>      <LocaleSwitcher />    </header>    <main>      <slot />    </main>    <Links href="/">Home</Links>    <Links href="/about">About</Links>  </div></template>
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer";// useHead è auto-importato in Nuxtconst content = useIntlayer("about-page");useHead({  title: content.metaTitle.raw, // Usa .raw per accedere al valore stringa primitivo  meta: [    {      name: "description",      content: content.metaDescription.raw, // Usa .raw per accedere alla stringa primitiva    },  ],});</script><template>  <h1><content.title /></h1></template>
      # Ignora i file generati da Intlayer.intlayer