# 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