# General Translation Knowledge Base: Come si traducono i titoli SEO e le meta description?
URL: https://generaltranslation.com/it/kb/translate-seo-metadata.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Scrivi il titolo e la meta description di ogni versione linguistica nella lingua corrispondente, usando le parole che gli utenti di quel mercato cercano, spesso diverse da una traduzione letterale. Poi localizza i tag correlati, tra cui Open Graph, canonical, hreflang, html lang e dati strutturati. gt-next di General Translation traduce titoli e descrizioni all'interno di generateMetadata con getGT.
Category: SEO multilingue
Last updated: 2026-10-28
Authors: General Translation Team
Published: 2026-10-28

Assegna a ogni versione linguistica di una pagina un titolo e una meta description propri, scritti nella lingua della pagina con i termini cercati dagli utenti di quel mercato. Poi assicurati che i tag correlati siano coerenti: un URL canonical che punti alla pagina stessa, le alternative hreflang, l&#39;attributo `lang`, l&#39;impostazione regionale di Open Graph e i dati strutturati tradotti. I motori di ricerca generano il titolo e lo snippet di ogni risultato a partire da questi elementi, e Google può sostituire un titolo la cui lingua o il cui sistema di scrittura non corrisponda a quelli della pagina.

## Cosa localizzare in ogni pagina

La maggior parte di questi elementi si trova nell&#39;`<head>` o negli attributi, quindi non è visibile quando qualcuno rivede la pagina renderizzata.

| Elemento                          | Dove si trova                                                        | Cosa fare                                                                                                                          |
| --------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Titolo                            | `<title>`                                                            | Riscrivilo in base ai termini di ricerca usati nel mercato, nella lingua e nel sistema di scrittura della pagina                   |
| Meta description                  | `<meta name="description">`                                          | Traducila per ogni pagina; Google potrebbe mostrarla come snippet                                                                  |
| Anteprime social                  | `og:title`, `og:description`, `twitter:title`, `twitter:description` | Traducile insieme al titolo e alla descrizione                                                                                     |
| Impostazione regionale Open Graph | `og:locale`, `og:locale:alternate`                                   | Indica l&#39;impostazione regionale della pagina nel formato `language_TERRITORY`, ad esempio `pt_BR`, ed elenca le altre versioni |
| Immagine di condivisione          | `og:image`, `og:image:alt`                                           | Traduci il testo alternativo; usa un&#39;immagine localizzata se l&#39;immagine contiene testo                                     |
| URL canonical                     | `<link rel="canonical">`                                             | Fai puntare ogni versione a se stessa                                                                                              |
| Alternative hreflang              | `<link rel="alternate" hreflang>`                                    | Elenca tutte le versioni, compresa la pagina stessa (vedi [cos&#39;è hreflang](/kb/what-is-hreflang))                              |
| Lingua del documento              | `<html lang>`                                                        | Imposta il codice locale della pagina, che viene usato da browser e screen reader                                                  |
| Dati strutturati                  | JSON-LD                                                              | Traduci nomi e descrizioni e imposta `inLanguage`                                                                                  |
| Immagini                          | `<img alt>`, nomi dei file                                           | Traduci il testo alternativo e i nomi dei file delle immagini localizzate                                                          |
| Slug dell&#39;URL                 | Il percorso                                                          | Facoltativo: `/de/preise` invece di `/de/pricing` (vedi [slug localizzati](/kb/multilingual-url-structure#localized-slugs))        |

Il [protocollo Open Graph](https://ogp.me/) definisce `og:locale` nel formato `language_TERRITORY`, con valore predefinito `en_US`, e stabilisce che una pagina che imposta `og:image` dovrebbe impostare anche `og:image:alt`. Per JSON-LD, la proprietà [`inLanguage`](https://schema.org/inLanguage) di schema.org accetta un codice BCP 47, mentre le [linee guida sui dati strutturati](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) di Google stabiliscono che il markup deve descrivere contenuti visibili nella pagina: il markup di una pagina tedesca riporta quindi il nome e la descrizione in tedesco. Secondo le [indicazioni sulle immagini](https://developers.google.com/search/docs/appearance/google-images) di Google, il testo alternativo serve a comprendere il contenuto di un&#39;immagine, ed è consigliabile tradurre anche i nomi dei file delle immagini localizzate.

## Come i motori di ricerca usano i metadati tradotti

Il titolo e lo snippet di un risultato di ricerca derivano dai tuoi metadati, ma non soltanto da questi:

* **Titoli.** La [guida ai link del titolo](https://developers.google.com/search/docs/appearance/title-link) di Google richiede un `<title>` nella stessa lingua e nello stesso sistema di scrittura del contenuto principale della pagina. Se non corrispondono, ad esempio in una pagina in hindi con un titolo in inglese o traslitterato, Google può generare il link del titolo a partire dalla pagina stessa.
* **Descrizioni.** Google [crea gli snippet principalmente dal contenuto della pagina](https://developers.google.com/search/docs/appearance/snippet) e usa la meta description quando descrive meglio la pagina. Consiglia una descrizione univoca per ogni pagina: su un sito multilingue, questo significa una descrizione per ogni pagina in ciascuna lingua.
* **La pagina viene prima di tutto.** Google considera le versioni localizzate come duplicati solo se il [contenuto principale non è tradotto](https://developers.google.com/search/docs/specialty/international/localized-versions) e ignora `lang` e hreflang quando rileva la lingua di una pagina. I metadati tradotti non possono sostituire una pagina tradotta.

## Errori comuni

### Tradurre le parole chiave alla lettera

In ogni mercato le persone cercano usando le proprie parole. Gli acquirenti britannici cercano &quot;trainers&quot; mentre gli americani cercano &quot;sneakers&quot;, e il telefono cellulare si chiama &quot;celular&quot; in Brasile, &quot;telemóvel&quot; in Portogallo e &quot;Handy&quot; in Germania. Una traduzione letterale di un titolo inglese rischia di non intercettare il termine che gli utenti di quel mercato digitano davvero. Scegli il termine di riferimento per ciascuna impostazione regionale (il rapporto Prestazioni di Search Console, filtrato per paese, mostra le query che ti portano già traffico), poi assicurati che compaia in ogni titolo e in ogni descrizione.

### Riutilizzare i limiti di lunghezza pensati per l&#39;inglese

Google non impone alcun limite di caratteri a titoli o descrizioni, ma li [tronca per adattarli alla larghezza del dispositivo](https://developers.google.com/search/docs/appearance/title-link). Un limite di caratteri pensato per l&#39;inglese non vale per le altre lingue. L&#39;articolo del W3C sulla [dimensione del testo nella traduzione](https://www.w3.org/International/articles/article-text-size) cita le linee guida di IBM, secondo cui un testo inglese di 31-50 caratteri, la lunghezza tipica di un titolo, una volta tradotto arriva in media al 140-160% della lunghezza originale. L&#39;articolo osserva inoltre che ogni carattere cinese o coreano occupa all&#39;incirca lo spazio di due caratteri latini. Metti il termine principale all&#39;inizio: in questo modo il troncamento taglierà la parte finale del titolo e la parola chiave resterà visibile.

### Far puntare tutti i canonical alla lingua di origine

Una pagina tradotta il cui canonical punta alla pagina in inglese segnala a Google che la traduzione è un duplicato. Le [linee guida di Google sugli URL duplicati](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) consigliano di usare un canonical nella stessa lingua quando si utilizza hreflang. (Vedi [canonical autoreferenziali](/kb/what-is-hreflang#should-hreflang-pages-use-self-referencing-canonicals).)

### Dimenticare i tag che nessuno vede

I tag Open Graph, il JSON-LD e il testo alternativo delle immagini non compaiono nella pagina renderizzata, quindi chi revisiona la versione tedesca della pagina nel browser non si accorgerà che sono rimasti in inglese. Prima del lancio, controlla il codice sorgente della pagina, o un&#39;anteprima social, per ogni impostazione regionale.

## Modi per produrre metadati tradotti

| Approccio                                         | Termini specifici per mercato                                                                            | Quando il testo sorgente cambia                                                                         | Lunghezza                             | Revisione                            |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------- | ------------------------------------ |
| Scriverli a mano per ogni mercato                 | Scelti tramite ricerca di parole chiave                                                                  | Qualcuno aggiorna ogni lingua                                                                           | La controlla chi scrive               | Integrata                            |
| Traduzione automatica (Google Translate, DeepL)   | Traduce il testo sorgente; i glossari di DeepL possono fissare i termini                                 | Copia e incolla manuale o automazione tramite le loro API                                               | Nessun controllo                      | Passaggio separato                   |
| Un&#39;API di IA diretta (OpenAI API, Claude API) | Segue le istruzioni, ad esempio quale termine usare per ogni mercato                                     | Rieseguire lo script                                                                                    | Si può richiedere un limite           | Passaggio separato                   |
| General Translation                               | Termini del Glossario per impostazione regionale, prompt personalizzati e `$context` per singola stringa | [`npx gt translate`](/docs/cli/reference/commands/translate) o Locadex traducono le stringhe modificate | `$maxChars` imposta un limite massimo | Editor di traduzione nella dashboard |

Scrivi i metadati a mano per le poche pagine che portano la maggior parte del traffico di ricerca in ciascun mercato prioritario: lì un titolo studiato con cura vale il tempo investito. Usa la traduzione automatica per una prima bozza da far revisionare. Usa General Translation quando titoli e descrizioni si trovano nel codice o nel CMS e devono essere ritradotti a ogni modifica della sorgente, quindi rifinisci a mano nella dashboard le pagine più importanti.

## Come implementarlo

### In un&#39;app Next.js

Nell&#39;App Router i metadati vengono generati da `generateMetadata`, quindi sono le stringhe restituite da questa funzione a dover essere tradotte. In questa pagina si utilizza [`getGT`](/docs/react/nextjs/reference/functions/get-gt) di General Translation, che restituisce una funzione di traduzione per l&#39;impostazione regionale della richiesta, e si presuppone l&#39;uso di route con prefisso dell&#39;impostazione regionale, come `/de/pricing`:

```tsx title="app/[locale]/pricing/page.tsx"
import type { Metadata } from 'next';
import { getGT, getLocale } from 'gt-next/server';

const LOCALES = ['en', 'de', 'fr', 'pt-BR'];
const pageUrl = (locale: string) => `https://example.com/${locale}/pricing`;

// Converte da BCP 47 (pt-BR) al formato language_TERRITORY di Open Graph (pt_BR).
// maximize() aggiunge la regione più probabile a un codice privo di regione: de diventa de-Latn-DE.
function ogLocale(locale: string) {
  const { language, region } = new Intl.Locale(locale).maximize();
  return `${language}_${region}`;
}

export async function generateMetadata(): Promise<Metadata> {
  const gt = await getGT();
  const locale = await getLocale();

  // $context indica al traduttore che cosa rappresenta la stringa.
  const title = gt('Pricing for teams of every size', {
    $context: 'SEO title of the pricing page',
  });
  const description = gt(
    'Compare plans, see what each one includes, and start for free.',
    { $context: 'Meta description of the pricing page' },
  );

  return {
    title,
    description,
    alternates: { canonical: pageUrl(locale) }, // aggiungi qui anche le alternative hreflang
    openGraph: {
      title,
      description,
      url: pageUrl(locale),
      locale: ogLocale(locale),
      alternateLocale: LOCALES.filter((l) => l !== locale).map(ogLocale),
      images: [
        {
          url: `https://example.com/og/pricing-${locale}.png`, // un'immagine per ogni impostazione regionale, se contiene testo
          alt: gt('Plan comparison table', { $context: 'Alt text of the share image' }),
        },
      ],
    },
    twitter: { card: 'summary_large_image', title, description },
  };
}
```

In un&#39;app realizzata con Next.js 16.4.3 e `gt-next` 11.4.16, la pagina `/de/pricing` ha renderizzato questi tag specifici del locale, oltre ai tag title, description e Twitter:

```html title="/de/pricing"
<html lang="de">
<link rel="canonical" href="https://example.com/de/pricing"/>
<meta property="og:url" content="https://example.com/de/pricing"/>
<meta property="og:locale" content="de_DE"/>
<meta property="og:image" content="https://example.com/og/pricing-de.png"/>
<meta property="og:locale:alternate" content="en_US"/>
<meta property="og:locale:alternate" content="fr_FR"/>
<meta property="og:locale:alternate" content="pt_BR"/>
```

L&#39;attributo `lang` proviene dal layout `[locale]`. Il routing delle impostazioni regionali, le versioni alternative hreflang e la mappa del sito sono trattati in [Come si configura la SEO per un&#39;app Next.js multilingue?](/kb/multilingual-nextjs-seo), che genera `alternates.languages` a partire da un Record delle impostazioni regionali pubblicate.

### Su un sito statico

In genere i generatori di siti statici ricavano il titolo e la descrizione di una pagina dal suo front matter, quindi ogni file tradotto ha i propri. In Docusaurus, ad esempio, il [front matter `description`](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs) diventa sia `<meta name="description">` sia `og:description`, e la documentazione tradotta si trova in `i18n/[locale]/docusaurus-plugin-content-docs/current/`. Traduci il front matter insieme al corpo del testo.

### In un CMS o in un site builder

Salva i campi SEO per ogni impostazione regionale, esattamente come il contenuto della pagina, così che ogni lingua abbia titolo e descrizione propri. Per un sito su WordPress o Shopify che non sviluppi tramite codice, un proxy come Weglot [traduce titoli, meta description e dati strutturati](https://support.weglot.com/article/293-how-does-weglot-manage-the-seo) insieme alla pagina. (Vedi [General Translation vs. Weglot](/kb/general-translation-vs-weglot).)

## Come General Translation traduce i metadati SEO

Nell&#39;App Router di Next.js, `gt-next` di General Translation traduce le stringhe che passi a [`getGT`](/docs/react/nextjs/reference/functions/get-gt) all&#39;interno di `generateMetadata`. Passa stringhe letterali in modo che la CLI possa individuarle ed esegui [`npx gt translate`](/docs/cli/reference/commands/translate) prima di `next build`; quando modifichi il titolo in inglese, la build successiva traduce il nuovo testo in ogni impostazione regionale. Nella pagina precedente, [`npx gt generate`](/docs/cli/reference/commands/generate), il comando offline della CLI che genera i template, elenca il titolo, la descrizione e il testo alternativo come stringhe di origine.

Due [opzioni di traduzione](/docs/react/reference/types/inline-translation-options) sono utili per i metadati. `$context` indica alla traduzione di che stringa si tratta, ad esempio &quot;titolo SEO della pagina dei prezzi&quot;. `$maxChars` richiede una traduzione entro un determinato numero di caratteri e, se la traduzione supera comunque il limite, `gt-next` la tronca al limite aggiungendo i puntini di sospensione in fase di rendering: consideralo quindi un tetto massimo, non un limite preciso al pixel. È facoltativo: Google non fissa una lunghezza precisa e un tetto massimo può troncare una buona traduzione, quindi aggiungilo solo dove il tuo layout, ad esempio una scheda di condivisione o un campo del CMS, impone un limite rigido.

Per le parole chiave specifiche di un mercato, aggiungi il termine a un [Context Group](/docs/platform/dashboard/guides/defining-context-for-translations): una voce del Glossario ne contiene la traduzione per ciascuna impostazione regionale, mentre un prompt personalizzato può valere per una singola impostazione regionale. General Translation applica entrambi alle nuove traduzioni, che si tratti di titoli, descrizioni o testo del corpo. Verifica il risultato nell&#39;[Editor di traduzione della Dashboard](/docs/platform/dashboard/guides/reviewing-translations) prima della pubblicazione.

Nel nostro test su un nuovo progetto senza Glossario (`gt` 2.26.11 e `gt-next` 11.4.16), una pagina di categoria di scarpe da corsa scritta in `en-US` è stata tradotta usando il termine specifico di ciascun mercato. Il titolo e la descrizione sono passati per [`getGT`](/docs/react/nextjs/reference/functions/get-gt), ciascuno con un `$context` che descriveva la pagina, ovvero la categoria scarpe da corsa di un negozio online di calzature, e le pagine generate dalla build hanno mostrato:

```html title="Rendered metadata"
<!-- /en-US/running (originale) -->
<title>Running Sneakers for Trail and Road</title>
<meta name="description" content="Shop lightweight running sneakers with cushioned soles for long runs on trails and city streets."/>

<!-- /en-GB/running -->
<title>Running Trainers for Trail and Road</title>
<meta name="description" content="Shop lightweight running trainers with cushioned soles for long runs on trails and city streets."/>

<!-- /de/running -->
<title>Laufschuhe für Gelände und Straße</title>
<meta name="description" content="Entdecke leichte Laufschuhe mit gut dämpfenden Sohlen für lange Läufe auf Trails und Straßen."/>
```

La pagina britannica usa trainers, mentre il titolo tedesco usa Laufschuhe, il termine tedesco per &quot;scarpe da corsa&quot; ([Duden](https://www.duden.de/rechtschreibung/Laufschuh)), anziché un letterale &quot;Lauf-Sneaker&quot;. Senza `$context` il titolo è risultato identico: per una stringa così chiara, l&#39;impostazione regionale di destinazione è bastata. Il titolo tedesco è anche più corto di quello inglese, 33 caratteri contro 35, quindi misura ogni impostazione regionale invece di dare per scontato che le traduzioni siano sempre più lunghe. Due aspetti richiedono comunque un intervento umano: la descrizione tedesca si rivolge al lettore in modo informale (*Entdecke*), quindi aggiungi un prompt personalizzato per il tedesco se il tuo brand usa il formale *Sie*; inoltre, il termine scelto da un modello è una valutazione del comportamento di ricerca, quindi confrontalo con le query che Search Console mostra per quel paese e, se è importante, fissalo nel Glossario.

Al di fuori del codice dell&#39;applicazione:

* **Payload CMS:** con `gt-payload`, ai campi renderizzati dal plugin SEO di Payload vengono applicate [lunghezze consigliate](/docs/integrations/payload/reference/supported-content#character-limits) di 60 caratteri per il meta title e 150 per la meta description. Se una traduzione è più lunga, ne viene richiesta una versione più breve; il testo viene troncato, al confine di una parola e con i puntini di sospensione propri dell&#39;impostazione regionale, solo se il campo imposta anche `maxLength`.
* **Mintlify:** Locadex [traduce il frontmatter](/docs/integrations/mintlify/reference/supported-content), come titoli e descrizioni delle pagine, così i metadati SEO di un sito di documentazione sono disponibili in tutte le lingue.

Ramp localizza la propria dashboard, la landing page e l&#39;app iOS in oltre 11 impostazioni regionali con General Translation. (Vedi le [distribuzioni in produzione](https://generaltranslation.com/enterprise).)

## Punti chiave

* Traduci ogni titolo e meta description nella lingua e nel sistema di scrittura della pagina: Google potrebbe sostituire un titolo che non corrisponde alla pagina.
* Scegli le parole chiave in base al mercato, ad esempio trainers in `en-GB` e sneakers in `en-US`, anziché tradurre il termine inglese.
* Non riutilizzare i limiti di caratteri pensati per l&#39;inglese: Google tronca in base alla larghezza del dispositivo e la lunghezza delle traduzioni varia a seconda della lingua e della stringa, quindi misurala per ogni impostazione regionale.
* Localizza anche i tag che accompagnano il titolo: canonical autoreferenziale, hreflang, `lang`, `og:locale`, testo alternativo e JSON-LD.
* In Next.js, [`getGT`](/docs/react/nextjs/reference/functions/get-gt) di General Translation traduce i metadati in `generateMetadata`, con `$context` per indicare l&#39;intento e un limite `$maxChars` facoltativo per i layout con un vincolo di lunghezza rigido.

## Related questions

- [Come si configura la SEO per un'app Next.js multilingue?](https://generaltranslation.com/it/kb/multilingual-nextjs-seo.mdx): Assegna a ogni lingua un proprio URL con prefisso, come /en/about e /es/about, quindi pubblica html lang, un canonical autoreferenziale, alternative hreflang con x-default, un titolo e una descrizione tradotti e una voce nella mappa del sito per ogni lingua pubblicata. Contrassegna con noindex le versioni non pubblicate. gt-next di General Translation instrada ogni lingua verso il proprio URL e traduce i titoli con getGT.
- [Che cos'è hreflang e come si configura?](https://generaltranslation.com/it/kb/what-is-hreflang.mdx): Hreflang indica a Google quali URL sono versioni linguistiche o regionali della stessa pagina, così che possa mostrare quella giusta nei risultati di ricerca. Puoi aggiungerlo con tag link HTML, intestazioni HTTP Link o una mappa del sito: assicurati che ogni collegamento sia reciproco e usa codici validi come en-GB, non en-UK.
- [Come si crea una mappa del sito per un sito web multilingue?](https://generaltranslation.com/it/kb/multilingual-sitemap.mdx): Elenca ogni versione linguistica di ciascuna pagina come voce url a sé stante. Se la mappa del sito contiene gli hreflang, assegna a ogni voce alternative xhtml:link per tutte le versioni, compresa quella della voce stessa, più un x-default facoltativo, e suddividi i file al raggiungimento di 50.000 URL o 50 MB. gt-next di General Translation assegna a ogni impostazione regionale un URL dedicato, che la mappa del sito può elencare.
- [Sottodirectory, sottodominio o ccTLD per la SEO multilingue](https://generaltranslation.com/it/kb/multilingual-url-structure.mdx): Usa sottodirectory come example.com/de/ quando un unico prodotto condivide sito e processo di rilascio. Solo un ccTLD indica un paese, i sottodomini consentono un hosting separato, Google sconsiglia i parametri ?lang= e tratta i domini di fantasia come .io e .ai come generici.
- [Come si rende multilingue un sito web?](https://generaltranslation.com/it/kb/make-website-multilingual.mdx): Scegli dove gestire le traduzioni (in un proxy, in un plugin del CMS, in un site builder o nel tuo codice), poi assegna a ogni lingua un URL dedicato, come raccomanda Google. Traduci le pagine per intero, compresi titoli e meta description, collega le versioni con hreflang e offri un selettore della lingua anziché reindirizzare automaticamente i visitatori.

## Previous and next questions

- Previous question: [Come si traducono i file PO e POT?](https://generaltranslation.com/it/kb/translate-po-files.mdx)
- Next question: [Come si traducono le animazioni Lottie?](https://generaltranslation.com/it/kb/translate-lottie-animations.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/it/kb/sitemap.md) for every article.
