# sanity: Configuración del plugin URL: https://generaltranslation.com/es/docs/sanity/api/plugin-config.mdx --- title: Configuración del plugin description: Referencia de la API de las opciones de configuración de gtPlugin --- ## resumen La función `gtPlugin` configura General Translation para tu Studio de Sanity. ```typescript import { gtPlugin } from 'gt-sanity' gtPlugin(config: GTPluginConfig) ``` ## GTPluginConfig string', description: 'Función para generar ID de singletons traducidos. Valor predeterminado: "${docId}-${locale}"', optional: true, }, ignoreFields: { type: 'IgnoreFields[]', description: 'Campos que se excluirán de la traducción', optional: true, }, translateDocuments: { type: 'TranslateDocumentFilter[]', description: 'Filtra qué documentos pueden traducirse', optional: true, }, secretsNamespace: { type: 'string', description: 'Espacio de nombres del documento de credenciales. Valor predeterminado: "generaltranslation"', optional: true, }, additionalStopTypes: { type: 'string[]', description: 'Tipos adicionales que se omitirán durante la serialización', optional: true, }, additionalSerializers: { type: 'Record', description: 'Serializadores HTML personalizados para tipos de bloque', optional: true, }, additionalDeserializers: { type: 'Record', description: 'Deserializadores HTML personalizados', optional: true, }, additionalBlockDeserializers: { type: 'BlockDeserializer[]', description: 'Deserializadores personalizados a nivel de bloque', optional: true, }, customMapping: { type: '(source: string, locale: string) => string', description: 'Función personalizada para mapear configuraciones regionales', optional: true, }, }} /> ## IgnoreFields Configure los campos que desea excluir de la traducción: ```typescript type IgnoreFields = { documentId?: string; fields?: Array<{ property: string; type?: string; }>; }; ``` ### Ejemplo ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es'], ignoreFields: [ // Ignorar slug en todos los documentos { fields: [{ property: 'slug' }], }, // Ignorar campos específicos en el documento con id 'article' { documentId: 'article', fields: [{ property: 'internalNotes' }, { property: 'canonical' }], }, ], }); ``` ## TranslateDocumentFilter Filtra los documentos disponibles para su traducción: ```typescript type TranslateDocumentFilter = { documentId?: string; // ID de documento específico type?: string; // Tipo de documento }; ``` ### Ejemplo ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es'], translateDocuments: [ { type: 'article' }, { type: 'page' }, { documentId: 'homepage' }, ], }); ``` ## Serializador Función personalizada para convertir un bloque de Sanity a HTML: ```typescript type Serializer = (props: { value: any; isInline?: boolean; children?: string; }) => string; ``` ### Ejemplo ```typescript import { attachGTData, gtPlugin } from 'gt-sanity'; gtPlugin({ sourceLocale: 'en', locales: ['es'], additionalSerializers: { link: ({ value, children }) => attachGTData(`${children}`, value, 'markDef'), }, }); ``` ## Tipos de exclusión predeterminados Estos tipos se conservan, pero no se envían para su traducción: ```typescript const defaultStopTypes = [ 'reference', 'crossDatasetReference', 'date', 'datetime', 'file', 'geopoint', 'image', 'number', 'slug', 'url', ]; ``` Agrega más con `additionalStopTypes`: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es'], additionalStopTypes: ['codeBlock', 'mathFormula'], }); ``` ## Ejemplo completo ```typescript title="sanity.config.ts" import { defineConfig } from 'sanity'; import { attachGTData, gtPlugin } from 'gt-sanity'; export default defineConfig({ plugins: [ gtPlugin({ // Obligatorio sourceLocale: 'en', locales: ['es', 'fr', 'de', 'ja'], // Gestión de documentos languageField: 'language', singletons: ['siteSettings', 'navigation'], singletonMapping: (id, locale) => `${id}_${locale}`, // Filtrado translateDocuments: [{ type: 'article' }, { type: 'page' }], ignoreFields: [{ fields: [{ property: 'slug' }] }], // Serialización - ¡No uses esto a menos que sepas lo que estás haciendo! additionalSerializers: { // Serializadores adicionales para marcas (anotaciones personalizadas) marks: { link: ({ value, children }) => attachGTData(`${children}`, value, 'markDef'), inlineMath: ({ value, children }) => attachGTData(`${children}`, value, 'markDef'), }, }, }), ], }); ``` ## Siguientes pasos * [Guía de configuración](/docs/sanity/guides/configuration) - Patrones de configuración * [Guía de serialización](/docs/sanity/guides/serialization) - Serialización personalizada