# 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