# sanity: Serializzazione
URL: https://generaltranslation.com/it/docs/sanity/guides/serialization.mdx
---
title: Serializzazione
description: Personalizza il modo in cui i documenti di Sanity vengono serializzati per la traduzione
---
## Panoramica
Il plugin converte i documenti di Sanity in HTML per la traduzione, quindi deserializza l'HTML tradotto nel formato Sanity. Puoi personalizzare questo processo per tipi di campo specifici.
## Come funziona la serializzazione
1. **Serializzazione**: `gt-sanity` converte il documento in HTML
2. **Traduzione**: l'HTML viene inviato all'API di General Translation per la traduzione. Il contenuto viene riorganizzato e riformattato per l'impostazione regionale di destinazione.
3. **Deserializzazione**: `gt-sanity` analizza l'HTML tradotto e lo integra nel documento originale
## Comportamento predefinito
### Tipi tradotti
Il serializzatore elabora ricorsivamente questi tipi:
* Stringhe e campi di testo
* Blocchi Portable Text (paragrafi, intestazioni, elenchi, ecc.)
* Oggetti annidati
* Array
### Tipi esclusi (stop types)
Questi tipi vengono mantenuti e non inviati alla traduzione:
```typescript
const defaultStopTypes = [
'reference',
'crossDatasetReference',
'date',
'datetime',
'file',
'geopoint',
'image',
'number',
'slug',
'url',
];
```
## Serializzatori personalizzati
In alcuni casi, alcuni campi potrebbero non essere serializzati o deserializzati correttamente per impostazione predefinita. In questi casi, potrebbe essere necessario aggiungere regole di serializzazione personalizzate per tipi di blocco specifici.
```typescript title="sanity.config.ts"
import { attachGTData, gtPlugin } from 'gt-sanity';
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalSerializers: {
// Serializzatori aggiuntivi per i mark (annotazioni personalizzate)
marks: {
link: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
inlineMath: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
},
},
});
```
Nell'esempio sopra, usiamo `attachGTData` per incorporare dati aggiuntivi nell'HTML serializzato, che vengono poi usati dal deserializzatore per facilitare la reintegrazione dell'HTML tradotto nel documento originale.
### Firma della funzione di serializzatore
```typescript
type Serializer = (props: {
value: any; // Il valore del blocco/campo Sanity
isInline?: boolean; // Se si tratta di un elemento inline
children?: string; // Contenuto figlio serializzato
}) => string; // Restituisce una stringa HTML
```
## Ulteriori stop types
Impedisci la traduzione di tipi specifici:
```typescript
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalStopTypes: [
'codeBlock', // Frammenti di codice
'embedCode', // Incorporamenti di terze parti
'mathFormula', // Contenuto LaTeX/matematico
'technicalId', // Identificatori interni
],
});
```
Ad esempio, se il tuo Sanity Studio utilizza il plugin di input Mux, aggiungi sia il
tipo di campo video Mux sia il tipo di metadati delle risorse Mux:
```typescript
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalStopTypes: [
'mux.video', // Campo video Mux
'mux.videoAsset', // Metadati asset Mux
],
});
```
Il plugin Mux archivia i campi video come `mux.video` e può esporre i metadati
dell'asset referenziato come `mux.videoAsset`. Bloccare entrambi i tipi impedisce a GT di inviare
i metadati dell'asset video, come ID di riproduzione, nomi di file e stato di elaborazione,
per la traduzione.
## Passaggi successivi
* [Guida alla configurazione](/docs/sanity/guides/configuration) - Opzioni di configurazione del plugin
* [Riferimento API](/docs/sanity/api/plugin-config) - API della classe di serializzazione