# sanity: Serialización
URL: https://generaltranslation.com/es/docs/sanity/guides/serialization.mdx
---
title: Serialización
description: Personaliza la serialización de los documentos de Sanity para su traducción
---
## Resumen
El plugin convierte los documentos de Sanity a HTML para su traducción y, después, deserializa el HTML traducido de nuevo al formato de Sanity. Puedes personalizar este proceso para tipos de campo específicos.
## Cómo funciona la serialización
1. **Serializar**: `gt-sanity` convierte el documento a HTML
2. **Translate**: el HTML se envía a la API de General Translation para su traducción. El contenido se reorganiza y se reformatea para la configuración regional de destino.
3. **Deserializar**: `gt-sanity` analiza el HTML traducido y lo combina con el documento original
## Comportamiento predeterminado
### Tipos traducibles
El serializador procesa estos tipos de forma recursiva:
* Cadenas y campos de texto
* Bloques de Portable Text (párrafos, encabezados, listas, etc.)
* Objetos anidados
* Arrays
### Tipos omitidos (tipos de exclusión)
Estos tipos se conservan y no se envían para su traducción:
```typescript
const defaultStopTypes = [
'reference',
'crossDatasetReference',
'date',
'datetime',
'file',
'geopoint',
'image',
'number',
'slug',
'url',
];
```
## Serializadores personalizados
En algunos casos, es posible que ciertos campos no se serialicen o deserialicen correctamente de forma predeterminada. En esos casos, puede que necesites añadir reglas de serialización personalizadas para tipos de bloque específicos.
```typescript title="sanity.config.ts"
import { attachGTData, gtPlugin } from 'gt-sanity';
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalSerializers: {
// Serializadores adicionales para marcas (anotaciones personalizadas)
marks: {
link: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
inlineMath: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
},
},
});
```
En el ejemplo anterior, usamos `attachGTData` para incrustar datos adicionales en el HTML serializado, que luego el deserializador usa para ayudar a combinar el HTML traducido de nuevo con el documento original.
### Firma de la función del serializador
```typescript
type Serializer = (props: {
value: any; // El valor del bloque/campo de Sanity
isInline?: boolean; // Si es un elemento en línea
children?: string; // Contenido del elemento hijo serializado
}) => string; // Devuelve una cadena HTML
```
## Tipos de exclusión adicionales
Evita traducir tipos específicos:
```typescript
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalStopTypes: [
'codeBlock', // Fragmentos de código
'embedCode', // Incrustaciones de terceros
'mathFormula', // Contenido LaTeX/matemático
'technicalId', // Identificadores internos
],
});
```
## Próximos pasos
* [Guía de configuración](/docs/sanity/guides/configuration) - Opciones de configuración del plugin
* [Referencia de la API](/docs/sanity/api/plugin-config) - API de la clase de serialización