# 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