gt-sanity@2.0.0
Descripción general
gt-sanity v2 es un lanzamiento importante que actualiza el plugin para ofrecer compatibilidad con Sanity v5 y React 19, simplifica la configuración con un cuadro de diálogo para traducir que no requiere configuración y añade nuevas opciones para controlar qué campos aparecen en los documentos traducidos.
Novedades
Configuración más sencilla: cuadro de diálogo Traducir
El cambio más importante de la v2 es cómo los desarrolladores interactúan con la interfaz de usuario de traducción. Antes, tenías que configurar structureTool con un defaultDocumentNode personalizado para añadir una pestaña Translations a tus documentos. Ahora, el plugin añade automáticamente la acción Traducir a todos los documentos; al hacer clic en ella, se abre un cuadro de diálogo con toda la interfaz de usuario de traducción.
Esto significa que la configuración mínima consta de solo dos pasos: instalar el plugin y añadirlo a tu configuración.
import { defineConfig } from 'sanity';
import { gtPlugin } from 'gt-sanity';
export default defineConfig({
plugins: [
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
}),
],
});El componente TranslationsTab se sigue exportando para quienes prefieren una pestaña específica, pero ahora es opcional.
Opción de configuración defaultLocale
Si ya tienes un gt.config.json de usar gt-next o gt-react, ahora puedes expandirlo directamente en la configuración del plugin. El campo defaultLocale se admite como alias de sourceLocale:
import gtConfig from './gt.config.json';
gtPlugin({
...gtConfig, // { defaultLocale: 'en', locales: ['es', 'zh', 'ja'] }
});Si se proporcionan tanto sourceLocale como defaultLocale, sourceLocale prevalece.
Opción skipFields
Una nueva opción de configuración, skipFields, elimina por completo los campos coincidentes de los documentos traducidos. Esto es distinto de ignoreFields, que copia el valor del documento de origen en el documento traducido: skipFields garantiza que el campo no aparezca en absoluto en el documento traducido.
Usa skipFields para campos como slugs de documento únicos, URL canónicas de SEO o metadatos exclusivos del origen que no deberían trasladarse a las traducciones:
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
skipFields: [
{ fields: [{ property: '$.slug', type: 'slug' }] },
{ fields: [{ property: '$.canonicalUrl' }] },
],
});En cambio, ignoreFields sirve para los campos que no quieres traducir, pero que sí quieres copiar desde la fuente, como categorías, etiquetas o metadatos internos que deben tener el mismo valor en todos los idiomas.
Al igual que con ignoreFields, puedes aplicar las reglas de omisión a documentos específicos mediante documentId y usar expresiones JSONPath para property.
Mejora en el comportamiento de ignoreFields
En la v1, los campos ignorados solo se restauraban desde el documento de origen después de la traducción; el contenido seguía enviándose a la API de traducción. En la v2, los campos ignorados ahora se eliminan del documento antes de la serialización, por lo que el contenido ignorado nunca se envía a la API.
Cambios incompatibles
Sanity v5 y React 19
gt-sanity v2 requiere Sanity v5+ y React 19+. Si aún usas Sanity v3 o v4, sigue usando gt-sanity v1.
La pestaña Translations ya no se registra automáticamente
El plugin ya no registra automáticamente la vista de la pestaña Translations. El cuadro de diálogo Traducir la sustituye como modelo de interacción predeterminado. Si aún quieres una pestaña dedicada, puedes añadirla manualmente; consulta el Quickstart.