# 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