# sanity: Sérialisation URL: https://generaltranslation.com/fr/docs/sanity/guides/serialization.mdx --- title: Sérialisation description: Personnalisez la manière dont les documents Sanity sont sérialisés pour la traduction --- ## Vue d’ensemble Le plugin convertit les documents Sanity en HTML pour les traduire, puis redésérialise le HTML traduit au format Sanity. Vous pouvez personnaliser ce processus pour certains types de champs. ## Fonctionnement de la sérialisation 1. **Sérialiser** : `gt-sanity` convertit le document en HTML 2. **Traduire** : le HTML est envoyé à l’API de General Translation pour traduction. Le contenu est réorganisé et remis en forme pour le paramètre régional cible. 3. **Désérialiser** : `gt-sanity` analyse le HTML traduit et le fusionne avec le document d’origine ## Comportement par défaut ### Types traduits Le sérialiseur traite récursivement les types suivants : * Chaînes de caractères et champs de texte * Blocs Portable Text (paragraphes, titres, listes, etc.) * Objets imbriqués * Tableaux ### Types ignorés (types d’exclusion) Ces types sont conservés et ne sont pas envoyés en traduction : ```typescript const defaultStopTypes = [ 'reference', 'crossDatasetReference', 'date', 'datetime', 'file', 'geopoint', 'image', 'number', 'slug', 'url', ]; ``` ## Sérialiseurs personnalisés Il arrive que certains champs ne soient pas correctement sérialisés ou désérialisés par défaut. Dans ce cas, vous devrez peut-être ajouter des règles de sérialisation personnalisées pour certains types de blocs. ```typescript title="sanity.config.ts" import { attachGTData, gtPlugin } from 'gt-sanity'; gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], additionalSerializers: { // Sérialiseurs supplémentaires pour les marques (annotations personnalisées) marks: { link: ({ value, children }) => attachGTData(`${children}`, value, 'markDef'), inlineMath: ({ value, children }) => attachGTData(`${children}`, value, 'markDef'), }, }, }); ``` Dans l’exemple ci-dessus, nous utilisons `attachGTData` pour intégrer des données supplémentaires dans le HTML sérialisé, que le désérialiseur utilise ensuite pour réintégrer le HTML traduit dans le document d’origine. ### Signature de la fonction de sérialisation ```typescript type Serializer = (props: { value: any; // La valeur du bloc/champ Sanity isInline?: boolean; // Indique si c'est un élément en ligne children?: string; // Contenu enfant sérialisé }) => string; // Retourne une chaîne de caractères HTML ``` ## Types d’exclusion supplémentaires Empêchez la traduction de certains types : ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], additionalStopTypes: [ 'codeBlock', // Extraits de code 'embedCode', // Intégrations tierces 'mathFormula', // Contenu LaTeX/mathématique 'technicalId', // Identifiants internes ], }); ``` Par exemple, si votre Sanity Studio utilise le plugin d’entrée Mux, ajoutez à la fois le type de champ vidéo Mux et le type de métadonnées des ressources Mux : ```typescript gtPlugin({ sourceLocale: 'en', locales: ['es', 'zh', 'ja'], additionalStopTypes: [ 'mux.video', // Champ vidéo Mux 'mux.videoAsset', // Métadonnées de l'asset Mux ], }); ``` Le plugin Mux stocke les champs vidéo sous la forme `mux.video` et peut exposer les métadonnées de la ressource référencée sous la forme `mux.videoAsset`. Exclure ces deux types empêche GT d’envoyer les métadonnées de la ressource vidéo, telles que les identifiants de lecture, les noms de fichier et l’état de traitement, en traduction. ## Étapes suivantes * [Guide de configuration](/docs/sanity/guides/configuration) - Options de configuration du plugin * [Référence de l’API](/docs/sanity/api/plugin-config) - API de la classe de sérialisation