# General Translation Integrations: Gestionar traducciones
URL: https://generaltranslation.com/es/docs/integrations/sanity/guides/managing-translations.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Cómo importar, aplicar parches a referencias, publicar en bloque y gestionar el comportamiento de los campos para las traducciones de Sanity.

Gestiona las traducciones generadas en Sanity tras la configuración inicial con las herramientas de traducción del plugin.

Esta guía abarca la herramienta **Translations** para todo el sitio, la aplicación de parches a referencias, la publicación en bloque, el comportamiento de los campos y la serialización personalizada.

## Usa la herramienta Translations [#translations-tool]

El plugin registra una herramienta **Translations** para todo el sitio que muestra todos los documentos traducibles. Desde ella puedes:

* Generar traducciones para todos los documentos (**Translate All**).
* Conservar las traducciones actuales de Sanity antes de ejecuciones posteriores (**Guardar ediciones locales**).
* Enviar las traducciones actuales de Sanity a General Translation sin iniciar una ejecución (**Guardar ediciones locales**).
* Importar todas las traducciones listas, sobrescribiendo las existentes (**Import All**).
* Importar solo las traducciones que aún no estén registradas en los metadatos del documento fuente (**Import Missing**).
* Aplicar parches a las referencias en los documentos traducidos (**Aplicar parches a referencias**).
* Publicar documentos traducidos cuyo documento fuente esté publicado (**Publicar traducciones**).

La actualización automática y la importación automática están activadas de forma predeterminada. La aplicación automática de parches y la publicación automática están desactivadas. Los cambios en estos interruptores y en **Guardar ediciones locales** se guardan en el almacenamiento del navegador para el proyecto y conjunto de datos actuales de Sanity.

*Nota: **Import Missing**, **Aplicar parches a referencias** y **Publicar traducciones** dependen de `translation.metadata` a nivel de documento. Para la localización a nivel de campo, usa **Import All** o importa una configuración regional desde su fila de estado, y luego revisa y publica el documento fuente mediante el flujo de trabajo normal de Sanity.*

(Consulta [Conservar las ediciones de las traducciones](/docs/integrations/sanity/guides/translating-content#preserve-edits) para elegir entre el interruptor y la acción bajo demanda).

## Importar traducciones [#import]

Las traducciones generadas deben importarse en Sanity. Para la localización a nivel de documento, el plugin fusiona los campos traducidos en un documento de configuración regional, de modo que los campos que no se enviaron a traducir se conservan. Para la localización a nivel de campo, fusiona los valores traducidos en las listas internacionalizadas del documento fuente.

* Para un solo documento, importa desde la acción **Traducir** o desde la pestaña opcional **General Translation**.
* Para varios documentos, usa **Import All** o **Import Missing** en la herramienta **Translations**.

Si se eliminó una traducción a nivel de documento pero su entrada de `translation.metadata` se mantuvo, al importar esa configuración regional se crea una traducción de reemplazo y se actualiza la referencia en los metadatos. Usa **Import All** o importa la configuración regional directamente; **Import Missing** omite las configuraciones regionales ya registradas en los metadatos. La importación falla en un documento cuando su fuente ya no existe.

## Aplicar parches a referencias [#patch-references]

Los documentos traducidos pueden hacer referencia a otros documentos. La aplicación de parches a referencias reescribe cada referencia `_ref` para que apunte a la traducción del documento referenciado en la misma configuración regional, cuando exista. El plugin resuelve estas referencias a partir de los documentos `translation.metadata`.

Usa **Aplicar parches a referencias** en la herramienta Translations para ejecutar esto en los documentos traducidos existentes, o activa **aplicación automática de parches después de la importación** en el diálogo de documento único. La aplicación automática de parches está desactivada de forma predeterminada.

Si un documento traducido ya está publicado y no tiene borrador, la aplicación de parches crea un borrador a partir del documento publicado y actualiza ese borrador. No cambia el documento publicado directamente.

## Publicar traducciones [#publish]

Usa **Publish Translations** para publicar documentos traducidos de forma masiva. El plugin publica solo los documentos traducidos cuyo documento fuente ya está publicado. Esto resulta útil después de importar muchas traducciones o de aplicar parches a referencias en toda una configuración regional.

Las traducciones a nivel de documento importadas se crean como borradores. Activa **publicación automática después de la importación** para publicarlas automáticamente o deja desactivada la opción predeterminada para revisarlas antes de publicarlas.

## Consultar información de depuración [#debug-info]

El pie de página de la herramienta **Translations** y el diálogo de documento muestran la versión instalada de `gt-sanity`. Haz clic en **Información de depuración** para consultar y copiar la configuración efectiva del plugin para una solicitud de soporte.

La salida incluye las configuraciones regionales resueltas, el modo de traducción, las reglas de documentos y campos, los valores de preferencia actuales, el conteo de traducciones, el proyecto y el conjunto de datos de Sanity, y si se encontró el documento de secretos. Nunca incluye la API key; solo indica si hay una configurada.

## Gestiona el comportamiento de los campos [#field-behavior]

Usa selectores de campos cuando algunos campos no deban traducirse de la forma habitual. Cada selector se aplica a campos con una expresión JSONPath `property` y, opcionalmente, un `_id` de documento.

### Copiar campos sin traducir

Usa `ignoreFields` para los campos que deban copiarse del documento fuente sin enviarse a la API de traducción, como categorías, etiquetas o metadatos internos.

```ts
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'zh', 'ja'],
  ignoreFields: [
    { fields: [{ property: '$.category' }] },
    { fields: [{ property: '$..linkType' }] },
  ],
});
```

### Copiar campos y hacerlos únicos

Usa `dedupeFields` para los campos que deben partir del valor de origen, pero volverse únicos para cada configuración regional. Esto es habitual en los slugs.

```ts
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'zh', 'ja'],
  dedupeFields: [{ fields: [{ property: '$.slug', type: 'slug' }] }],
});
```

Para un slug de Sanity, `{ _type: 'slug', current: 'about' }` se convierte en `{ _type: 'slug', current: 'about-es' }` para el español. Si más adelante un editor cambia el slug traducido, las importaciones futuras conservarán ese valor editado.

### Excluir campos de las traducciones

Usa `skipFields` para los campos que no deban copiarse en absoluto a los documentos traducidos, como metadatos solo del source o slugs que los editores configuran manualmente para cada idioma.

```ts
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'zh', 'ja'],
  skipFields: [
    { fields: [{ property: '$.slug', type: 'slug' }] },
    { fields: [{ property: '$.canonicalUrl' }] },
  ],
});
```

(Consulta la [referencia de los *selectores de campo*](/docs/integrations/sanity/reference/plugin-configuration#field-matchers) para ver el tipo completo).

## Evita que se traduzcan los tipos personalizados [#stop-types]

De forma predeterminada, el plugin conserva un conjunto de tipos de esquema no traducibles. Usa `additionalStopTypes` para añadir tus propios tipos personalizados.

```ts
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'zh', 'ja'],
  additionalStopTypes: ['codeBlock', 'mux.video', 'mux.videoAsset'],
});
```

(Consulta la lista completa de [tipos de exclusión predeterminados](/docs/integrations/sanity/reference/plugin-configuration#stop-types)).

## Personaliza la serialización [#serialization]

El plugin convierte los documentos a HTML para traducirlos y luego los vuelve a convertir. La mayoría de los proyectos no necesitan cambiar esto. Usa serializadores personalizados solo cuando tu esquema tenga marcas o tipos de bloque personalizados que los predeterminados no admiten.

```ts title="sanity.config.ts"
import { attachGTData, gtPlugin } from 'gt-sanity';

gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'zh', 'ja'],
  additionalSerializers: {
    marks: {
      link: ({ value, children }) =>
        attachGTData(`<a>${children}</a>`, value, 'markDef'),
      inlineMath: ({ value, children }) =>
        attachGTData(`<span>${children}</span>`, value, 'markDef'),
    },
  },
});
```

`attachGTData(html, data, 'markDef')` inserta los datos de la marca en el HTML serializado para que el plugin pueda reconstruirla al volver a integrar la traducción. (Consulta la [referencia de serialización](/docs/integrations/sanity/reference/plugin-configuration#serialization)).

## Next steps

- /docs/integrations/sanity/guides/translating-content
- /docs/integrations/sanity/guides/querying-translations
- /docs/integrations/sanity/guides/configuring-sanity

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
