# General Translation Integrations: Gérer les traductions
URL: https://generaltranslation.com/fr/docs/integrations/sanity/guides/managing-translations.mdx
---
title: Gérer les traductions
description: "Comment gérer les traductions Sanity de General Translation : ce guide couvre les importations, la correction des références, la publication groupée et le comportement des champs."
related:
links:
- /docs/integrations/sanity/guides/translating-content
- /docs/integrations/sanity/guides/querying-translations
- /docs/integrations/sanity/guides/configuring-sanity
---
Gérez les traductions Sanity générées après la configuration à l’aide des outils de traduction du plugin.
Ce guide couvre l’outil **Translations** pour l’ensemble du site, la correction des références, la publication groupée, le comportement des champs et la sérialisation personnalisée.
## Utilisez l’outil Translations [#translations-tool]
Le plugin ajoute un outil **Translations** disponible sur l’ensemble du site, qui répertorie tous les documents traduisibles. Il vous permet de :
* Générer des traductions pour tous les documents (**Translate All**).
* Importer toutes les traductions prêtes, en écrasant les existantes (**Import All**).
* Importer uniquement les traductions qui ne sont pas encore enregistrées dans les métadonnées du document source (**Import Missing**).
* Corriger les références entre les documents traduits (**Patch Document References**).
* Publier les documents traduits dont le document source est publié (**Publish Translations**).
Activez **Auto-refresh** pour vérifier régulièrement l’état des traductions, ou utilisez **Refresh Status** pour effectuer une vérification ponctuelle.
## Importer les traductions [#import]
Les traductions générées doivent être importées dans Sanity avant d’apparaître en tant que documents traduits. Lors de l’importation, le plugin fusionne les champs traduits avec le document source, de sorte que les champs qui n’ont pas été envoyés à la traduction soient conservés.
* Pour un seul document, importez-le à partir de l’action **Translate** ou de l’onglet facultatif **General Translation**.
* Pour plusieurs documents, utilisez **Import All** ou **Import Missing** dans l’outil Translations.
## Correction des références [#patch-references]
Les documents traduits peuvent contenir des références vers d'autres documents. La correction des références réécrit chaque `_ref` afin qu'il pointe vers la traduction du document référencé dans le même paramètre régional, lorsqu'elle existe. Le plugin les résout à partir des documents `translation.metadata`.
Utilisez **Patch Document References** dans l'outil Translations pour appliquer cette opération aux documents traduits existants. Dans la boîte de dialogue d'un seul document, elle s'exécute aussi automatiquement après l'importation (la correction automatique y est activée par défaut).
## Publier les traductions [#publish]
Utilisez **Publish Translations** pour publier des documents traduits en lot. Le plugin publie uniquement les documents traduits dont le document source est publié. Cela est utile après l’importation d’un grand nombre de traductions ou la correction des références à l’échelle d’un paramètre régional.
## Gérer le comportement des champs [#field-behavior]
Utilisez des sélecteurs de champs lorsque certains champs ne doivent pas être traduits de manière habituelle. Chaque sélecteur cible des champs à l’aide d’une expression JSONPath `property` et, éventuellement, d’un `_id` de document.
### Copier des champs sans les traduire
Utilisez `ignoreFields` pour les champs qui doivent être copiés à partir du document source sans être envoyés à l’API de traduction, comme les catégories, les tags ou les métadonnées internes.
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
ignoreFields: [
{ fields: [{ property: '$.category' }] },
{ fields: [{ property: '$..linkType' }] },
],
});
```
### Copier des champs et les rendre uniques
Utilisez `dedupeFields` pour les champs qui doivent partir de la valeur source, puis devenir uniques pour chaque paramètre régional. C’est fréquent pour les slugs.
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
dedupeFields: [{ fields: [{ property: '$.slug', type: 'slug' }] }],
});
```
Pour un slug Sanity, `{ _type: 'slug', current: 'about' }` devient `{ _type: 'slug', current: 'about-es' }` en espagnol. Si un éditeur modifie ensuite le slug traduit, les importations ultérieures conservent cette valeur modifiée.
### Exclure des champs des traductions
Utilisez `skipFields` pour les champs qui ne doivent jamais être copiés dans les documents traduits, par exemple les métadonnées propres à la source ou les slugs que les éditeurs définissent manuellement pour chaque langue.
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
skipFields: [
{ fields: [{ property: '$.slug', type: 'slug' }] },
{ fields: [{ property: '$.canonicalUrl' }] },
],
});
```
Consultez la [référence des sélecteurs de champ](/docs/integrations/sanity/reference/plugin-configuration#field-matchers) pour connaître le type complet.
## Empêcher la traduction de types personnalisés [#stop-types]
Par défaut, le plugin conserve une liste de types de schéma non traduisibles. Utilisez `additionalStopTypes` pour ajouter vos propres types personnalisés.
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalStopTypes: ['codeBlock', 'mux.video', 'mux.videoAsset'],
});
```
Consultez la liste complète des [types exclus par défaut](/docs/integrations/sanity/reference/plugin-configuration#stop-types).
## Personnaliser la sérialisation [#serialization]
Le plugin convertit les documents en HTML pour la traduction, puis les reconvertit. La plupart des projets n’ont pas besoin de modifier ce comportement. Utilisez des sérialiseurs personnalisés uniquement lorsque votre schéma comporte des marques personnalisées ou des types de blocs que ceux par défaut ne prennent pas en charge.
```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')` intègre les données de la marque au HTML sérialisé pour que le plugin puisse reconstruire la marque lorsqu’il réinsère la traduction. Consultez la [référence de sérialisation](/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