# General Translation Changelog: gt-sanity 2.1.0: Localizzazione a livello di campo
URL: https://generaltranslation.com/it/blog/gt-sanity_v2_1_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Brian Lou
Published: 2026-07-14

## Panoramica

`gt-sanity` v2.1 aggiunge la **localizzazione a livello di campo**: invece di creare un documento separato per ogni impostazione regionale, ora puoi memorizzare il valore di ogni lingua nello stesso documento usando array internazionalizzati. Il plugin genera automaticamente i tipi di schema, offre un&#39;interfaccia di modifica inline per ogni impostazione regionale e gestisce la traduzione tramite lo stesso workflow di GT che già usi: i valori tradotti vengono reinseriti in-place nel documento sorgente.

La struttura dei dati corrisponde a [`sanity-plugin-internationalized-array`](https://github.com/sanity-io/sanity-plugin-internationalized-array) (`[{ _key, _type, language, value }]`), quindi i contenuti esistenti con array internazionalizzati funzionano senza alcuna migrazione.

***

## Novità

### Localizzazione a livello di campo (array internazionalizzato)

La traduzione a livello di documento rimane l&#39;impostazione predefinita: ogni impostazione regionale ha il proprio documento, collegato tramite `@sanity/document-internationalization`. Questo modello è adatto ai documenti in cui tutto varia a seconda della lingua.

Il nuovo modello a livello di campo mantiene un unico documento e localizza i singoli campi direttamente al suo interno:

```typescript
{
  _id: 'post-123',
  _type: 'post',
  title: [
    { _key: 'x1', _type: 'internationalizedArrayStringValue', language: 'en', value: 'Hello' },
    { _key: 'x2', _type: 'internationalizedArrayStringValue', language: 'es', value: 'Hola' },
  ],
}
```

Attivalo con la nuova opzione `internationalizedArray` (o con il relativo alias descrittivo, `fieldLevelLocalization`):

```typescript title="sanity.config.ts"
import { defineConfig } from 'sanity';
import { gtPlugin } from 'gt-sanity';

export default defineConfig({
  plugins: [
    gtPlugin({
      sourceLocale: 'en',
      locales: ['es', 'fr', 'ja'],
      translateDocuments: [{ type: 'post' }],
      internationalizedArray: { enabled: true },
      translationLevel: 'internationalizedArray',
    }),
  ],
});
```

### Tipi di schema generati

Quando è abilitato, il plugin genera tipi di schema `internationalizedArray*` (ad es. `internationalizedArrayString`, `internationalizedArrayText`) a partire dagli stessi `sourceLocale` / `locales` che passi già a `gtPlugin` — l&#39;identità dell’impostazione regionale viene definita una sola volta. Usali nei tuoi schemi come qualsiasi altro tipo:

```typescript
defineField({
  name: 'title',
  type: 'internationalizedArrayString',
});
```

`fieldTypes` controlla quali tipi vengono generati. Per impostazione predefinita è `['string', 'text']`, accetta `'block'` per Portable Text e definizioni di oggetti personalizzati per strutture di valore arbitrarie:

```typescript
internationalizedArray: {
  enabled: true,
  fieldTypes: [
    'string',
    'text',
    'block',
    { name: 'seo', type: 'seoFields' }, // genera internationalizedArraySeo
  ],
},
```

Puoi anche personalizzare i nomi dei tipi generati con `typePrefix` (gli alias di compatibilità con i nomi standard `internationalizedArray*` vengono mantenuti per impostazione predefinita) e le etichette delle lingue mostrate nello Studio con `languageTitles` o `getLanguageTitle`.

### Interfaccia di modifica inline per impostazione regionale

I tipi generati includono un input di Studio progettato appositamente: ogni lingua viene visualizzata come un editor inline etichettato (senza righe di oggetti compresse né dialog di modifica), con pulsanti di aggiunta e rimozione per ogni impostazione regionale. La lingua sorgente non può essere rimossa.

Se invece preferisci usare una tua interfaccia, l&#39;opzione `components` ti consente di sovrascrivere gli slot `input`, `item` e `field` — oppure di passare `false` per tornare al rendering predefinito di Sanity. In entrambi i casi, la traduzione non cambia, poiché agisce sui dati archiviati anziché sui componenti.

### `translationLevel` e modalità mista

La generazione dello schema e il routing della traduzione sono indipendenti: abilitare `internationalizedArray` aggiunge solo tipi di campo modificabili. La nuova opzione `translationLevel` controlla come vengono tradotti i documenti corrispondenti:

* `'document'` (predefinito) — traduzione dell&#39;intero documento con documenti separati per ogni impostazione regionale, invariata rispetto alla v2.0.
* `'internationalizedArray'` — tutti i documenti corrispondenti vengono localizzati in-place tramite array internazionalizzati.
* `'mixed'` — i tipi di documento elencati in `fieldLevelDocuments` usano la strategia basata su array; tutto il resto resta a livello di documento.

```typescript
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'fr'],
  translateDocuments: [{ type: 'post' }, { type: 'siteSettings' }],
  internationalizedArray: { enabled: true },
  translationLevel: 'mixed',
  fieldLevelDocuments: [{ type: 'siteSettings' }], // localizzato in-place
});
```

I tipi di documento localizzati in-place sono automaticamente esclusi da `@sanity/document-internationalization`, quindi non ricevono badge di lingua né modelli di documento per impostazione regionale.

### Importazione in-place

I documenti a livello di campo seguono lo stesso workflow di GT che usi già. Al momento dell&#39;importazione, i valori tradotti vengono reinseriti nello stesso documento: viene aggiornata solo l&#39;impostazione regionale di destinazione, mentre tutte le altre lingue — comprese le modifiche apportate mentre la traduzione era in corso — restano invariate.

Anche gli stati delle traduzioni nello Studio ora restano corretti dopo le importazioni in-place e i ricaricamenti della pagina, invece di mostrare le traduzioni completate come &quot;non iniziata&quot;.

***

## Link

* [Quickstart](/docs/integrations/sanity/quickstart)
* [Guida alla configurazione](/docs/integrations/sanity/guides/configuring-sanity)
* [Riferimento API](/docs/integrations/sanity/reference/plugin-configuration)

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
