# sanity: Configuración URL: https://generaltranslation.com/es/docs/sanity/guides/configuration.mdx --- title: Configuración description: Configura el plugin gt-sanity para tu proyecto de Sanity --- ## Resumen La función `gtPlugin` acepta un objeto de configuración para personalizar el comportamiento de la traducción, la configuración regional y la gestión de documentos. ```typescript title="sanity.config.ts" import { gtPlugin } from 'gt-sanity'; export default defineConfig({ plugins: [ gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], // Reemplaza con tus locales de destino languageField: 'language', singletons: ['siteSettings', 'navigation'], }), ], }); ``` ## Configuración básica ### Idioma de origen y locales de destino Define el idioma de origen y los locales de destino: ```typescript gtPlugin({ sourceLocale: 'en', // Idioma de origen del contenido locales: ['es', 'zh', 'ja'], // Idiomas de destino para su traducción }); ``` ### Campo de idioma Especifica qué campo almacena la configuración regional del documento. El valor predeterminado es `'language'`: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], languageField: 'locale', // por defecto, los documentos usan el campo 'language'. Aquí usamos 'locale' en su lugar. }); ``` ## Filtrado de documentos ### Traducir tipos de documento específicos Limita la traducción a tipos de documento específicos: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], translateDocuments: [{ type: 'page' }, { type: 'post' }], }); ``` ### Traducir documentos específicos Especifica ID de documentos específicos: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], translateDocuments: [ { documentId: 'homepage' }, { documentId: 'about-page' }, ], }); ``` ## Documentos singleton Los singleton son documentos de Sanity que existen en una única instancia con variantes traducidas. Configura cómo se nombran las versiones traducidas: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], singletons: ['siteSettings', 'navigation', 'footer'], // Lista de ID de documentos singleton singletonMapping: (docId, locale) => `${docId}-${locale}`, // Función opcional para personalizar los ID de los documentos singleton traducidos }); ``` Por defecto, las traducciones de los singletons tendrán ID generados aleatoriamente, a menos que se proporcione `singletonMapping`. ## Ignorar campos Excluye campos específicos de la traducción: ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], ignoreFields: [ { fields: [{ property: '$.slug', type: 'slug' }] }, { fields: [{ property: '$.category' }] }, { fields: [{ property: '$..linkType' }] }, { fields: [{ property: '$..frequencies.default' }] }, ], }); ``` `property` es una expresión de [JSONPath](https://goessner.net/articles/JsonPath/) que coincide con uno o más campos en documentos. `type` es un parámetro opcional para restringir aún más a tipos específicos los campos que se deben ignorar. ## Opciones de serialización Amplía el comportamiento de serialización predeterminado: ```typescript 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'), }, }, }); ``` Consulta la [Guía de serialización](/docs/sanity/guides/serialization) para más detalles. ## Ejemplo completo ```typescript title="sanity.config.ts" import { defineConfig } from 'sanity'; import { structureTool } from 'sanity/structure'; import { gtPlugin, TranslationsTab } from 'gt-sanity'; export default defineConfig({ name: 'default', title: 'My Project', projectId: 'your-project-id', dataset: 'production', plugins: [ structureTool({ defaultDocumentNode: (S, { schemaType }) => { // Agregar pestaña de traducciones a artículos y páginas if (['article', 'page'].includes(schemaType)) { return S.document().views([ S.view.form(), S.view.component(TranslationsTab).title('General Translation'), ]); } return S.document(); }, }), gtPlugin({ sourceLocale: 'en', locales: ['es', 'fr', 'de', 'ja', 'zh'], languageField: 'language', singletons: ['siteSettings', 'navigation'], translateDocuments: [{ type: 'article' }, { type: 'page' }], ignoreFields: [ { fields: [{ property: 'slug' }, { property: 'publishedAt' }], }, ], }), ], schema: { types: schemaTypes, }, }); ``` ## Próximos pasos * [Guía de serialización](/docs/sanity/guides/serialization) - Reglas de serialización personalizadas * [Referencia de la API](/docs/sanity/api/plugin-config) - Opciones de configuración completas