# General Translation Integrations: Configurer les enregistrements
URL: https://generaltranslation.com/fr/docs/integrations/rrweb/guides/configuring-recordings.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Comment configurer la capture gt-rrweb, les overlays localisés, les contrôles, l'automatisation et la gestion du bundle.

Configurez la manière dont les démonstrations produit sont capturées, localisées à partir de vos catalogues publiés et stockées.

Ce guide part du principe que vous avez installé le recorder et activé les hachages de traduction dans le [Quickstart](/docs/integrations/rrweb/quickstart).

## Monter le recorder [#mount]

Montez [`GTRecorder`](/docs/integrations/rrweb/reference/recorder#gt-recorder) une seule fois à l&#39;intérieur de votre provider de traduction. Les contrôles placés ailleurs dans l&#39;application utilisent [`useRecorder()`](/docs/integrations/rrweb/reference/recorder#use-recorder) pour démarrer et arrêter cette même session définie au niveau du module.

```tsx title="src/RecordingTools.tsx"
'use client';

import { GTRecorder } from 'gt-rrweb';
import loadTranslations from './loadTranslations';

export default function RecordingTools() {
  return (
    <GTRecorder
      harvest={{
        loadTranslations,
        sourceLocale: 'en',
      }}
      onComplete={(bundle) => {
        // Enregistrez ou envoyez le bundle finalisé.
        console.log(bundle);
      }}
    />
  );
}
```

Définissez `enabled={false}` lorsque le recorder ne doit ni configurer la capture ni afficher son overlay d&#39;enregistrement.

## Définir la région et le cadre de capture [#capture-region]

Le recorder capture l&#39;intégralité du document. `contentSelector` identifie la région du produit délimitée par le cadre lors de la lecture ; sa valeur par défaut est `main, [data-gt-content]`.

```tsx title="src/RecordingTools.tsx"
<GTRecorder contentSelector="main" frame="16:9" />
```

Choisissez un cadre en fonction de l&#39;endroit où vous intégrerez la démonstration :

* `frame="none"` laisse la mise en page du document inchangée et rejoue l&#39;intégralité de la fenêtre d&#39;affichage enregistrée.
* `frame="16:9"` utilise le cadre de présentation intégré.
* `frame={{ aspect: 4 / 3 }}` utilise un rapport largeur/hauteur personnalisé.

Utilisez un rapport personnalisé fini et positif. Zéro, les valeurs négatives et `NaN` se comportent comme `none`.

<Callout type="warn">
  **Capture avec cadre :** l&#39;élément sélectionné doit utiliser `position: fixed` avant
  l&#39;enregistrement. Encadrer un contenu positionné de façon statique peut le déplacer hors de la
  fenêtre d&#39;affichage. Utilisez `frame="none"` lorsque l&#39;application ne peut pas appliquer cette mise en page.
</Callout>

## Configurer le replay localisé [#localized-replay]

`gt-rrweb` ne génère aucune traduction pendant la capture. Commencez par [publier vos traductions](/docs/cli/guides/generating-translations), puis configurez le recorder pour qu&#39;il construise les overlays de paramètres régionaux à partir de ces catalogues.

### Charger les catalogues publiés

Passez un loader via la prop `harvest`. Il reçoit un paramètre régional et renvoie le catalogue publié correspondant.

```tsx title="src/RecordingTools.tsx"
<GTRecorder
  harvest={{
    loadTranslations,
    sourceLocale: 'en',
  }}
/>
```

Le loader peut lire des fichiers locaux, interroger un réseau de diffusion de contenu (CDN) ou utiliser la même source que votre application. Définissez `sourceLocale` sur le paramètre régional visible pendant la capture. Si vous l&#39;omettez, la collecte lit le cookie désigné par `localeCookieName`, lorsqu&#39;il est configuré, puis se replie sur le premier paramètre régional transmis à `start()`. Le paramètre régional source résolu doit être égal à `locales[0]` ; cette première entrée est également intégrée à l&#39;enregistrement comme paramètre régional source pour la relecture.

### Choisir les locales

Indiquez d&#39;abord le paramètre régional enregistré, suivi de chaque paramètre régional cible dont le catalogue doit être chargé :

```tsx title="src/RecordButton.tsx"
const { start } = useRecorder();

await start({
  locales: ['en', 'es', 'fr', 'ja'],
});
```

La collecte ne s&#39;exécute que si `locales` contient au moins deux entrées. Une liste limitée à la source produit malgré tout un enregistrement valide, mais sans overlays localisés.

### Faire correspondre le contenu traduit

Activez [`_tagIds`](/docs/react/reference/config#tag-ids) afin que le contenu affiché par [`<T>`](/docs/react/reference/components/t) porte le hachage utilisé pour faire correspondre chaque entrée du catalogue. Les variables et les composants d&#39;affichage de valeurs conservent la valeur capturée lors de l&#39;enregistrement source.

Les chaînes brutes affichées par `gt()` ou [`useGT()`](/docs/react/reference/hooks/use-gt) nécessitent une fonction `hashMessage` compatible, issue du même pipeline de hachage que le catalogue. Il s&#39;agit d&#39;un point d&#39;intégration avancé : `gt-rrweb` n&#39;exporte pas ce hacheur, une configuration ordinaire doit donc s&#39;appuyer sur les hachages de [`<T>`](/docs/react/reference/components/t).

Le contenu reste dans le paramètre régional source lorsqu&#39;une traduction est manquante, qu&#39;un Plural ou une branche ne produit pas de forme unique affichée, que le texte traduit présente une structure de nœuds différente, ou qu&#39;une string brute interpolée ne correspond pas au hachage de son source template. Un échec du chargeur de catalogue reste circonscrit à ce paramètre régional : les overlays complétés pour les autres locales restent disponibles. Un échec de collecte plus général n&#39;est pas fatal : le bundle ne contient alors que la source.

## Personnaliser les contrôles d&#39;enregistrement [#controls]

L&#39;overlay intégré s&#39;affiche pendant la capture et comprend le contrôle permettant d&#39;arrêter la session. Utilisez `labels` pour remplacer les textes d&#39;enregistrement et d&#39;arrêt.

```tsx title="src/RecordingTools.tsx"
<GTRecorder
  labels={{
    rec: 'Capturing walkthrough',
    stop: 'Finish recording',
  }}
/>
```

La formulation du Runtime est purement visuelle. Votre application peut également afficher ses propres contrôles avec [`useRecorder()`](/docs/integrations/rrweb/reference/recorder#use-recorder).

## Exposer les contrôles à l&#39;automatisation [#automation]

Définissez `expose` lorsqu&#39;un test end-to-end ou un script d&#39;automatisation du navigateur doit piloter la capture. Le recorder ajoute un handle `window[name]` exposant `start` et `stop`.

```tsx title="src/RecordingTools.tsx"
<GTRecorder expose="gtRecorder" />
```

```js title="record.spec.js"
await page.evaluate(() => window.gtRecorder.start({ locales: ['en', 'es'] }));
// Déroulez le parcours produit.
const bundle = await page.evaluate(() => window.gtRecorder.stop());
```

`expose` vaut `false` par défaut. Laissez cette option désactivée lorsque l&#39;automatisation du navigateur n&#39;a pas besoin d&#39;un accès direct.

## Gérer les bundles terminés [#bundles]

Passez `onComplete` pour enregistrer ou téléverser chaque enregistrement réussi. Le callback s&#39;exécute une fois les overlays de paramètres régionaux collectés et reçoit le même [`RecorderBundle`](/docs/integrations/rrweb/reference/recorder#recorder-bundle) que celui renvoyé par `stop()`.

Le paquet ne téléverse ni ne conserve les enregistrements. Stockez le bundle sérialisable en JSON avec les assets de votre application ou dans un espace de stockage que vous contrôlez.

<Callout type="warn">
  Passez en revue chaque bundle avant de le publier. Les valeurs saisies dans les formulaires sont masquées, mais le flux d&#39;événements contient toujours le texte visible de la page ainsi que l&#39;état de l&#39;application pendant la session.
</Callout>

## Next steps

- /docs/integrations/rrweb/guides/recording-walkthroughs
- /docs/integrations/rrweb/guides/replaying-recordings

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
