# General Translation Integrations: Gestionar traducciones URL: https://generaltranslation.com/es/docs/integrations/sanity/guides/managing-translations.mdx --- title: Gestionar traducciones description: "Cómo gestionar las traducciones de General Translation para Sanity: esta guía abarca las importaciones, la aplicación de parches a referencias, la publicación en bloque y el comportamiento de los campos." related: links: - /docs/integrations/sanity/guides/translating-content - /docs/integrations/sanity/guides/querying-translations - /docs/integrations/sanity/guides/configuring-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**). * 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**). * Actualizar las referencias entre documentos traducidos (**Patch Document References**). * Publicar documentos traducidos cuyo documento fuente esté publicado (**Publish Translations**). Activa **Auto-refresh** para consultar periódicamente el estado de la traducción, o usa **Refresh Status** para comprobarlo una sola vez. ## Importar traducciones [#import] Las traducciones generadas deben importarse en Sanity antes de que aparezcan como documentos traducidos. Al importarlas, el plugin fusiona los campos traducidos con el documento fuente, de modo que los campos que no se enviaron a traducir se conservan. * 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**. ## Corregir 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 **Patch Document References** en la herramienta Translations para ejecutar esto en los documentos traducidos existentes. En el diálogo de documento único, también se ejecuta automáticamente después de la importación (allí la corrección automática está activada de forma predeterminada). ## 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. ## 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 *field matchers*](/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 schema 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(`${children}`, value, 'markDef'), inlineMath: ({ value, children }) => attachGTData(`${children}`, 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