# General Translation Knowledge Base: Come si configura la SEO per un'app Next.js multilingue?
URL: https://generaltranslation.com/it/kb/multilingual-nextjs-seo.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 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.
Category: SEO multilingue
Last updated: 2026-10-22
Authors: General Translation Team
Published: 2026-02-17

Fare SEO multilingue in Next.js significa assegnare a ogni versione linguistica di una pagina un URL dedicato e indicare ai motori di ricerca come questi URL sono collegati tra loro. Una pagina che ricava la lingua da un cookie o dall&#39;intestazione `Accept-Language` ha un solo URL, quindi i motori di ricerca in genere la indicizzano in una sola lingua. Ogni versione linguistica deve soddisfare i sei requisiti riportati nella tabella, e routing, metadati e mappa del sito devono essere coerenti sull&#39;URL di ciascuna lingua.

| Requisito                     | A cosa serve                                                                                                           | Dove va in Next.js                                                                      |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Un URL per lingua             | Ogni versione è una pagina distinta da scansionare e indicizzare                                                       | Un segmento di route `[locale]` e un middleware di routing delle impostazioni regionali |
| `<html lang>`                 | Indica la lingua della pagina a browser e tecnologie assistive                                                         | Il layout radice, `app/[locale]/layout.tsx`                                             |
| URL canonical                 | Indica che questo URL è la versione preferita per la sua lingua, non un duplicato di un&#39;altra lingua               | `alternates.canonical` in `generateMetadata`                                            |
| Alternative `hreflang`        | Elencano tutte le versioni linguistiche pubblicate della pagina, compresa quella corrente, più un fallback `x-default` | `alternates.languages` in `generateMetadata`                                            |
| Titolo e descrizione tradotti | Il testo che di solito compare nei risultati di ricerca in quella lingua                                               | `title` e `description` in `generateMetadata`                                           |
| Voce nella mappa del sito     | Elenca tutti gli URL linguistici pubblicati di ogni pagina                                                             | `app/sitemap.ts`                                                                        |

`gt-next` di General Translation instrada ogni lingua verso un URL come `/es/about` e traduce titoli e descrizioni con [`getGT`](/docs/react/nextjs/reference/functions/get-gt). L&#39;URL canonical, le alternative `hreflang` e la mappa del sito si definiscono con l&#39;[API dei metadati](https://nextjs.org/docs/app/api-reference/functions/generate-metadata#alternates) di Next.js.

## Video

The video is narrated in English, with English captions.

[How do I set up SEO for a multilingual Next.js app?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-multilingual-nextjs-seo.mp4) (50 s)

General Translation lets you give every language its own URL and tell search engines about them. Move your pages into `app/[locale]` with `gt-next`'s middleware, set the html `lang` attribute with `useLocale`, add canonical and hreflang links with a helper, translate the title with `getGT`, and list every page in every language in a sitemap.

## Perché Google indicizza una sola lingua del mio sito Next.js?

Google indicizza una sola lingua quando tutte le lingue condividono lo stesso URL. Googlebot [invia le richieste senza l&#39;intestazione `Accept-Language`](https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages) e [non conserva i cookie tra un caricamento di pagina e l&#39;altro](https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript), quindi una pagina che determina la lingua in base a uno di questi due elementi mostrerà a Google sempre la lingua predefinita. Le altre lingue non hanno un URL che Google possa scansionare.

La soluzione è assegnare un URL distinto a ciascuna lingua, da elencare nelle alternative `hreflang` e nella mappa del sito. Google [consiglia di usare URL distinti per ogni versione linguistica](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) anziché affidarsi ai cookie o alle impostazioni del browser. Un&#39;app `gt-next` di General Translation senza middleware ha lo stesso problema: il suo selettore delle impostazioni locali salva la scelta in un cookie e lascia gli URL senza prefisso finché non aggiungi [`createNextMiddleware`](/docs/react/nextjs/reference/functions/create-next-middleware).

Le pagine in inglese e in francese completamente tradotte non sono duplicati per il solo fatto di descrivere lo stesso prodotto. Google considera duplicate le versioni localizzate solo quando il contenuto principale non è tradotto. (Consulta le [indicazioni di Google sulle pagine localizzate](https://developers.google.com/search/docs/specialty/international/localized-versions)).

## Le versioni linguistiche dovrebbero usare sottodirectory, sottodomini o domini separati?

Usa le sottodirectory, come `example.com/es/about`, a meno che ogni mercato non richieda una propria posizione del server o un sito dedicato. Nella guida di Google alla [gestione dei siti multiregionali e multilingue](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites), le sottodirectory sono indicate come facili da configurare e con una manutenzione ridotta, perché tutte le lingue restano sullo stesso host, mentre i parametri URL sono sconsigliati.

| Struttura                  | Esempio                     | Valutazione di Google                                                                        | In un&#39;app Next.js                                                                                                                                                          |
| -------------------------- | --------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Sottodirectory             | `example.com/es/about`      | Facili da configurare, manutenzione ridotta (stesso host), un&#39;unica posizione del server | Il middleware `gt-next` di General Translation gestisce questa struttura per impostazione predefinita                                                                          |
| Sottodomini                | `es.example.com/about`      | Facili da configurare, consentono posizioni del server diverse                               | Routing basato sull&#39;host da implementare manualmente; [`createNextMiddleware`](/docs/react/nextjs/reference/functions/create-next-middleware) instrada in base al percorso |
| Domini nazionali           | `example.es/about`          | Geotargeting chiaro, ma costosi, richiedono più infrastruttura e un dominio per ogni paese   | Una distribuzione o un routing basato sull&#39;host per ogni dominio                                                                                                           |
| Parametri URL              | `example.com/about?lang=es` | Sconsigliati                                                                                 | Da evitare                                                                                                                                                                     |
| Solo cookie o intestazione | `example.com/about`         | Meglio usare URL separati                                                                    | Indicizzato in una sola lingua                                                                                                                                                 |

Usa sottodomini o domini nazionali quando i mercati richiedono un hosting separato o un targeting per paese. Per una singola distribuzione Next.js, le sottodirectory richiedono meno codice: il middleware `gt-next` di General Translation gestisce `/es/about` per impostazione predefinita, mentre per sottodomini e domini nazionali devi implementare manualmente un routing basato sull&#39;host. (Per i pro e i contro, consulta il [confronto tra strutture URL](/kb/multilingual-url-structure).)

## Come posso assegnare a ogni lingua un URL dedicato in Next.js?

Aggiungi un middleware per il routing delle impostazioni regionali e un segmento di route `app/[locale]`. Con `gt-next` di General Translation, crea il file `proxy.ts` nella radice del progetto (`middleware.ts` in Next.js 15 e versioni precedenti):

```ts title="proxy.ts"
import { createNextMiddleware } from 'gt-next/middleware';

export default createNextMiddleware({ prefixDefaultLocale: true });

export const config = {
  matcher: ['/((?!api|static|.*\\..*|_next).*)'],
};
```

Poi sposta le pagine in `app/[locale]`:

```text
proxy.ts
app/
├── sitemap.ts
└── [locale]/
    ├── layout.tsx
    ├── page.tsx
    └── about/
        └── page.tsx
```

`prefixDefaultLocale: true` aggiunge un prefisso a tutte le impostazioni regionali, inglese compreso, così ogni URL di contenuto serve sempre una sola lingua. In questo articolo si usa sempre questa configurazione. Un percorso senza prefisso come `/about` diventa un punto di ingresso: il middleware risponde con un reindirizzamento temporaneo `307` verso l&#39;impostazione regionale salvata dal visitatore o verso quella che corrisponde meglio ad `Accept-Language`, oppure verso `/en/about` se non è disponibile nessuna delle due. Un URL localizzato non viene mai reindirizzato: `/en/about` restituisce la pagina in inglese anche a un browser che preferisce il francese. Senza questa opzione, l&#39;impostazione locale predefinita non ha prefisso e `/about` può reindirizzare in base al cookie o all&#39;intestazione del browser. (Per capire perché è importante, consulta [routing delle impostazioni regionali e SEO](/kb/locale-routing-seo).)

Altre due impostazioni modificano il routing:

* [`pathConfig`](/docs/react/nextjs/reference/functions/create-next-middleware#path-config) traduce i percorsi, ad esempio `/fr/a-propos` per `/about`.
* [`ignoreBrowserLocales: true`](/docs/react/nextjs/config#ignore-browser-locales) in `withGTConfig` impedisce al middleware di scegliere l&#39;impostazione regionale in base all&#39;intestazione `Accept-Language`. Google [sconsiglia di reindirizzare](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) i visitatori in base a supposizioni sulla loro lingua.

Se esegui il prerendering delle pagine con `generateStaticParams`, aggiungi anche `getLocale.ts` nella radice del progetto, perché il middleware non viene eseguito durante la generazione statica. Il file e tutti i passaggi per configurare il routing si trovano nella [guida al middleware dell&#39;App Router](/docs/react/nextjs/app-router-middleware#root-locale).

## Come si imposta l&#39;attributo html lang per ogni impostazione regionale?

Imposta `lang` a partire dal parametro di routing `[locale]` nel layout radice, `app/[locale]/layout.tsx`. Grazie al controllo [`isLocaleSupported`](/docs/react/nextjs/reference/functions/is-locale-supported), un&#39;impostazione regionale non configurata restituisce un 404 anziché ripiegare sull&#39;impostazione locale predefinita per quell&#39;URL:

```tsx title="app/[locale]/layout.tsx"
import { GTProvider, isLocaleSupported } from 'gt-next';
import { notFound } from 'next/navigation';

export default async function LocaleLayout({
  children,
  params,
}: {
  children: React.ReactNode;
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;

  if (!isLocaleSupported(locale)) {
    notFound();
  }

  return (
    <html lang={locale}>
      <body>
        <GTProvider>{children}</GTProvider>
      </body>
    </html>
  );
}
```

L&#39;attributo `lang` identifica la lingua della pagina per le tecnologie assistive e per i comportamenti del browser che dipendono dalla lingua. Google determina la lingua dal [contenuto visibile](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites#language), non dall&#39;attributo `lang`, quindi assicurati che sia corretto ai fini dell&#39;accessibilità anziché come leva per il posizionamento nei risultati di ricerca.

Il layout radice va posizionato in `app/[locale]/layout.tsx` quando le pagine vengono prerenderizzate, perché un layout al di sopra del segmento `[locale]` non può leggere l&#39;impostazione regionale durante la generazione statica. Se un segmento dell&#39;URL è un alias, come `/cn` per il cinese, convertilo con [`resolveCanonicalLocale`](/docs/react/nextjs/reference/functions/resolve-canonical-locale) in modo che `lang` valga `zh`. [Gestire la SEO degli alias delle impostazioni regionali](/docs/react/nextjs/locale-alias-seo) spiega come trattare gli alias nei metadati e nella mappa del sito.

## Come si aggiungono i link alternativi hreflang e gli URL canonical nell&#39;App Router di Next.js?

Nell&#39;App Router di Next.js, per aggiungere i link alternativi `hreflang` restituisci `alternates.languages` dalla `generateMetadata` di ogni pagina; per l&#39;URL canonical restituisci invece `alternates.canonical`. Next.js renderizza ogni voce di `alternates.languages` come un tag `<link rel="alternate" hreflang>`.

Google richiede che [ogni versione linguistica elenchi se stessa e tutte le altre versioni](https://developers.google.com/search/docs/specialty/international/localized-versions) e ignora i link `hreflang` che non sono dichiarati da entrambe le pagine: ogni versione di una pagina deve quindi restituire lo stesso elenco. La voce `x-default` è l&#39;URL destinato ai visitatori la cui lingua non corrisponde a nessuna delle versioni. Il canonical di ogni versione punta al proprio URL; evita di far puntare le pagine tradotte alla versione inglese. Il canonical è un&#39;indicazione, non una garanzia. (Vedi [tag hreflang e canonical](/kb/what-is-hreflang#should-hreflang-pages-use-self-referencing-canonicals)).

Una traduzione può restare indietro rispetto alla pagina originale, quindi ricava il canonical, le alternative e la mappa del sito da un unico Record che indichi in quali impostazioni regionali è pubblicata ciascuna pagina. Questo helper costruisce il canonical e le alternative a partire da quel Record e contrassegna come `noindex` le versioni non ancora pubblicate:

```ts title="lib/i18n-metadata.ts"
import type { Metadata } from 'next';
import { getLocale } from 'gt-next/server';

export const BASE_URL = 'https://example.com';

// Le impostazioni regionali in cui è pubblicata ciascuna pagina. Aggiungi un'impostazione regionale solo dopo che la relativa traduzione è stata revisionata.
export const PUBLISHED: Record<string, string[]> = {
  '/': ['en', 'fr', 'es'],
  '/about': ['en', 'fr', 'es'],
  '/pricing': ['en', 'fr'], // Lo spagnolo non è ancora stato tradotto
};

export const localeUrl = (locale: string, path: string) =>
  `${BASE_URL}/${locale}${path === '/' ? '' : path}`;

export async function getI18NMetadata(path: string): Promise<Metadata> {
  const locale = await getLocale();
  const published = PUBLISHED[path] ?? [];

  // Esclude dall'indicizzazione le versioni non pubblicate.
  if (!published.includes(locale)) {
    return {
      robots: { index: false },
      alternates: null,
    };
  }

  const languages: Record<string, string> = {};
  for (const loc of published) languages[loc] = localeUrl(loc, path);
  languages['x-default'] = localeUrl(published.includes('en') ? 'en' : published[0], path);

  return { alternates: { canonical: localeUrl(locale, path), languages } };
}
```

Poi chiamala da ogni pagina:

```tsx title="app/[locale]/pricing/page.tsx"
import { getI18NMetadata } from '@/lib/i18n-metadata';

export async function generateMetadata() {
  return getI18NMetadata('/pricing');
}
```

Compilata con Next.js 16.4.2 e `gt-next` 11.4.14, la pagina `/fr/about`, pubblicata in tutte e tre le lingue, ha renderizzato questo `<head>`:

```html title="/fr/about"
<html lang="fr">
<link rel="canonical" href="https://example.com/fr/about"/>
<link rel="alternate" hrefLang="en" href="https://example.com/en/about"/>
<link rel="alternate" hrefLang="fr" href="https://example.com/fr/about"/>
<link rel="alternate" hrefLang="es" href="https://example.com/es/about"/>
<link rel="alternate" hrefLang="x-default" href="https://example.com/en/about"/>
```

`/fr/pricing` non elenca alcuna alternativa in spagnolo, perché la pagina dei prezzi in spagnolo non è pubblicata:

```html title="/fr/pricing"
<html lang="fr">
<link rel="canonical" href="https://example.com/fr/pricing"/>
<link rel="alternate" hrefLang="en" href="https://example.com/en/pricing"/>
<link rel="alternate" hrefLang="fr" href="https://example.com/fr/pricing"/>
<link rel="alternate" hrefLang="x-default" href="https://example.com/en/pricing"/>
```

La route risponde ancora su `/es/pricing`, ma il suo `<head>` contiene solo `<meta name="robots" content="noindex"/>`, senza canonical né alternative, così i crawler possono rilevare l&#39;istruzione `noindex`. Impostando `alternates: null` si rimuovono eventuali canonical o alternative ereditati da un layout padre. Lascia la route accessibile ai crawler: `noindex` non è un meccanismo di controllo degli accessi. `x-default` punta all&#39;inglese, se pubblicato, altrimenti alla prima impostazione regionale pubblicata. L&#39;helper presuppone che il percorso sia lo stesso in ogni impostazione regionale; se usi percorsi tradotti da `pathConfig`, slug localizzati o alias di route, costruisci invece l&#39;URL di ciascuna impostazione regionale a partire da quella mappa delle route, in modo che `fr` punti a `/fr/a-propos`.

Fornisci inoltre un [selettore della lingua](/kb/language-switcher) con normali link alle pagine equivalenti. Hreflang non sostituisce un&#39;opzione di navigazione visibile.

## Come si traducono i titoli delle pagine e le meta description per ogni impostazione regionale in Next.js?

Traduci le stringhe restituite da `generateMetadata`. Nei risultati di ricerca compaiono di solito il titolo e la descrizione di una pagina: una pagina in spagnolo con un titolo in inglese mostrerà quindi testo in inglese nei risultati di ricerca in spagnolo. I motori di ricerca possono anche riscrivere i titoli e gli snippet visualizzati, perciò i metadati forniti non garantiscono una presentazione identica. La funzione [`getGT`](/docs/react/nextjs/reference/functions/get-gt) di General Translation, importata da `gt-next/server`, restituisce una funzione di traduzione per l&#39;impostazione regionale della richiesta corrente e funziona anche all&#39;interno di `generateMetadata`. Restituisci il titolo e la descrizione tradotti insieme alle alternative fornite dall&#39;helper:

```tsx title="app/[locale]/about/page.tsx"
import type { Metadata } from 'next';
import { getGT } from 'gt-next/server';
import { getI18NMetadata } from '@/lib/i18n-metadata';

export async function generateMetadata(): Promise<Metadata> {
  const gt = await getGT();
  const i18nMeta = await getI18NMetadata('/about');

  return {
    title: gt('About us'),
    description: gt('Meet the team that builds our product.'),
    ...i18nMeta,
  };
}
```

Passa stringhe letterali, come nell&#39;esempio precedente, così che la fase di build possa individuarle. Le traduzioni di produzione per [`getGT`](/docs/react/nextjs/reference/functions/get-gt) vengono preparate prima della distribuzione, quindi esegui [`npx gt translate`](/docs/cli/reference/commands/translate) prima di `next build`:

```json title="package.json"
{
  "scripts": {
    "build": "npx gt translate && next build"
  }
}
```

Quando il titolo in inglese cambia, la build successiva traduce il nuovo testo in tutte le impostazioni regionali, senza dover aggiornare alcun file di messaggi. Rivedi titoli e descrizioni nell&#39;[editor della dashboard](/docs/platform/dashboard/guides/reviewing-translations) prima di aggiungere un&#39;impostazione regionale a `PUBLISHED`. I [termini del Glossario](/docs/platform/dashboard/guides/defining-context-for-translations) condivisi aiutano a mantenere coerenti i nomi dei prodotti tra la pagina e i relativi metadati di ricerca. Dopo la pubblicazione, misura le impressioni, i clic e le conversioni effettive, anziché dare per scontato un miglioramento fisso del tasso di clic. (Consulta [Come si traducono i titoli SEO e le meta description?](/kb/translate-seo-metadata) per approfondire le parole chiave per ciascun mercato, la lunghezza dei testi nelle diverse lingue e i tag Open Graph.)

## Come aggiungo tutte le lingue a una mappa del sito di Next.js?

In `app/sitemap.ts`, elenca una voce per ogni pagina e per ogni impostazione regionale pubblicata. Leggi lo stesso Record `PUBLISHED`, così la mappa del sito e i link `hreflang` resteranno sempre allineati:

```ts title="app/sitemap.ts"
import type { MetadataRoute } from 'next';
import { PUBLISHED, localeUrl } from '@/lib/i18n-metadata';

export default function sitemap(): MetadataRoute.Sitemap {
  return Object.entries(PUBLISHED).flatMap(([path, locales]) =>
    locales.map((locale) => ({ url: localeUrl(locale, path) })),
  );
}
```

Il file `/sitemap.xml` generato elencava otto URL: `/en`, `/fr`, `/es`, le tre versioni di `/about`, `/en/pricing` e `/fr/pricing`. `/es/pricing` resta escluso finché non viene pubblicato. Se aggiungi `lastModified`, usa la data dell&#39;ultimo aggiornamento sostanziale della pagina, non l&#39;ora in cui è stata generata la mappa del sito (consulta le [linee guida sulle mappe del sito](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap) di Google).

Poiché i metadati della pagina dichiarano già `hreflang` nell&#39;HTML, questa mappa del sito elenca solo gli URL. In alternativa, puoi dichiarare `hreflang` direttamente nella mappa del sito: assegna a ogni voce una mappa `alternates.languages`, che Next.js 14.2 e versioni successive convertono in alternative `xhtml:link` all&#39;interno di ogni `<url>`. Google tratta [`hreflang` in una mappa del sito](https://developers.google.com/search/docs/specialty/international/localized-versions) esattamente come `hreflang` nell&#39;HTML. Secondo Google, usare entrambi i metodi non offre alcun vantaggio aggiuntivo nella Ricerca, quindi scegline uno. Il campo `alternates` è documentato nel [riferimento sulle mappe del sito](https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap#generate-a-localized-sitemap) di Next.js. (Consulta [Come si crea una mappa del sito per un sito web multilingue?](/kb/multilingual-sitemap) per i limiti di dimensione, la suddivisione tramite un indice delle mappe del sito e i controlli da eseguire prima dell&#39;invio.)

## Quale libreria i18n per Next.js gestisce le route per impostazione regionale e hreflang per la SEO?

Per la SEO, una libreria i18n per Next.js deve assegnare a ogni lingua un proprio URL. `gt-next` di General Translation e next-intl lo fanno entrambe tramite il middleware dell&#39;App Router; i18next e react-intl lasciano a te il routing. Il middleware di next-intl invia inoltre le alternative `hreflang` in un&#39;intestazione HTTP, mentre `gt-next` traduce titoli e descrizioni durante la build, senza file di messaggi. Nessuna di queste librerie genera al posto tuo l&#39;URL canonical o la mappa del sito.

| Approccio                                                    | URL per lingua                                                                                                                                                 | `hreflang`                                                                                                                                                                                    | Titoli e descrizioni tradotti                                                                                                                                     | URL canonical e mappa del sito                                                          |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| next-intl                                                    | Middleware con prefissi del locale (`/en/about` per impostazione predefinita), pathname localizzati o un dominio per impostazione regionale                    | Per impostazione predefinita, il middleware [invia le alternative, incluso `x-default`, in un&#39;intestazione HTTP `Link`](https://next-intl.dev/docs/routing/configuration#alternate-links) | Messaggi scritti dal tuo team o da un servizio di traduzione nel catalogo JSON di ciascuna lingua                                                                 | Li scrivi tu                                                                     |
| i18next o react-intl                                         | Nessun routing per Next.js; il middleware lo scrivi tu                                                                                                         | Li scrivi tu                                                                                                                                                                                  | Messaggi nel catalogo di ciascuna lingua                                                                                                                          | Li scrivi tu                                                                     |
| Google Translate nel browser del visitatore                  | Un URL per pagina                                                                                                                                              | Nessuno                                                                                                                                                                                       | Tradotti solo nel browser; i risultati di ricerca mostrano la lingua di origine                                                                                   | Un solo URL, quindi niente da elencare                                           |
| Un&#39;API di IA usata direttamente (OpenAI API, Claude API) | Route che costruisci tu                                                                                                                                        | Li scrivi tu                                                                                                                                                                                  | Uno script da rieseguire dopo ogni modifica ai testi                                                                                                              | Li scrivi tu                                                                     |
| General Translation (`gt-next` e la CLI `gt`)                | [`createNextMiddleware`](/docs/react/nextjs/reference/functions/create-next-middleware) serve `/en/about`, `/es/about` e percorsi tradotti come `/fr/a-propos` | Restituisci da `generateMetadata` un oggetto `alternates.languages` costruito a partire da un Record delle impostazioni regionali pubblicate                                                  | Stringhe [`getGT`](/docs/react/nextjs/reference/functions/get-gt), tradotte da [`npx gt translate`](/docs/cli/reference/commands/translate) prima di `next build` | Li scrivi in `generateMetadata` e `app/sitemap.ts` a partire dallo stesso Record |

Usa next-intl se il tuo team gestisce già cataloghi di messaggi e vuole che `hreflang` venga inviato dal middleware. Usa i18next o react-intl se hai a disposizione dei traduttori, testi che cambiano di rado e il tempo per scrivere il routing. Usa la traduzione nel browser solo per pagine che non devono ricevere traffico di ricerca in altre lingue, come un&#39;app protetta da login, che i motori di ricerca non possono scansionare. Usa `gt-next` di General Translation se l&#39;app pubblica spesso nuovi testi e ogni versione linguistica deve avere una propria pagina indicizzata e un titolo tradotto: i testi restano inline nei componenti e la build traduce insieme pagine e titoli. La piattaforma e la documentazione di Profound sono disponibili in oltre 47 impostazioni regionali grazie a General Translation. (Vedi le [distribuzioni in produzione](https://generaltranslation.com/enterprise).)

## Related questions

- [Reindirizzamenti per lingua e SEO: URL, cookie o Accept-Language?](https://generaltranslation.com/it/kb/locale-routing-seo.mdx): Lascia che sia l'URL a stabilire la lingua di ogni pagina che vuoi far indicizzare, perché Googlebot non invia alcuna intestazione Accept-Language ed esegue la scansione soprattutto da indirizzi statunitensi. Usa la scelta salvata in un cookie e, in subordine, Accept-Language solo per decidere verso quale pagina reindirizzare una radice neutra come /, con un reindirizzamento temporaneo 302 o 307.
- [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.
- [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.
- [Best practice per il selettore della lingua: UX, SEO e accessibilità](https://generaltranslation.com/it/kb/language-switcher.mdx): Indica ogni lingua con il suo nome nativo, ad esempio Deutsch o 日本語, ed evita le bandiere, che rappresentano paesi. Collega ogni opzione alla stessa pagina in quella lingua tramite un link scansionabile, memorizza la scelta in un cookie e non reindirizzare mai automaticamente un URL localizzato.
- [Checklist per il test di localizzazione delle app multilingue](https://generaltranslation.com/it/kb/multilingual-app-launch-checklist.mdx): Verifica nove aspetti in ogni impostazione regionale supportata su una build di produzione: percorsi completi, inclusi gli stati di errore e le email, cambio di lingua, plurali, valuta e fusi orari, espansione del testo, layout right-to-left, accessibilità, distribuzione delle traduzioni e URL per lingua scansionabili. Assegna a ogni verifica un criterio di superamento esplicito.

## Previous and next questions

- Previous question: [Come si traduce il testo condizionale in JSX?](https://generaltranslation.com/it/kb/translate-conditional-jsx.mdx)
- Next question: [Qual è il miglior software di localizzazione per sviluppatori?](https://generaltranslation.com/it/kb/best-localization-software.mdx)

## Sitemap

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