---
title: "Ajouter une langue"
description: "Ajoute une locale cible à un projet verbatra existant avec une ligne de configuration et une exécution de translate, sans toucher à tes locales existantes."
type: "how-to"
---
# Ajouter une langue

Ajoute une locale cible à un projet verbatra existant avec une ligne de configuration et une exécution de translate, sans toucher à tes locales existantes.

Utilise ceci quand un projet traduit déjà vers quelques langues et que tu en veux une de plus. Il suffit d'une ligne de configuration et d'une exécution. verbatra considère que la nouvelle locale n'a aucune clé et la remplit ; tes locales existantes ne coûtent rien, car le fichier de verrouillage les enregistre toujours comme à jour.

Il te faut un projet qui fonctionne : une configuration, un fichier de locale source et une clé de fournisseur. Si tu n'en as pas encore, commence par le [démarrage rapide](https://verbatra.kreitz-webdev.de/fr/docs/quickstart.md).

## Ajoute la locale à ta configuration [#ajoute-la-locale-à-ta-configuration]

Ajoute le code à `targetLocales` dans `verbatra.config.ts` :

```ts title="verbatra.config.ts"
import { defineConfig } from "@verbatra/cli";

export default defineConfig({
  sourceLocale: "en",
  targetLocales: ["de", "fr"], // [!code highlight]
  format: "i18next-json",
  files: { pattern: "locales/{locale}.json" },
  provider: { id: "gemini", options: { model: "gemini-2.5-flash", maxOutputTokens: 4096 } },
});
```

### Règles des codes de locale [#règles-des-codes-de-locale]

<AvailableFrom version="0.12.0" />

Écris le code sous forme BCP 47, avec un trait d'union : `pt-BR`, pas `pt_BR`. Si tes fichiers utilisent des tirets bas, écris quand même `pt-BR` et règle `files.localeStyle` sur `posix` ; verbatra garde le nom de fichier `pt_BR.json`. Le chargement de la configuration refuse un code invalide, la locale source et deux codes qui ne diffèrent que par la casse. Les règles complètes sont dans [Codes de locale](https://verbatra.kreitz-webdev.de/fr/docs/config-file.md#codes-de-locale), et [`verbatra doctor`](https://verbatra.kreitz-webdev.de/fr/docs/cli/doctor.md) te dit si un fournisseur prend en charge la nouvelle langue.

## Prévisualise le travail [#prévisualise-le-travail]

Regarde ce que ferait une exécution avant de dépenser quoi que ce soit :

```bash
verbatra diff --locales fr
```

La nouvelle locale n'a pas encore de fichier, donc chaque clé source est listée comme manquante. Retire `--locales` pour vérifier que tes autres locales ne listent rien. `diff` n'appelle aucun fournisseur et n'écrit rien. Pour une estimation du coût, lance `verbatra translate --estimate` ; voir [Estimer le coût avant une exécution](https://verbatra.kreitz-webdev.de/fr/docs/estimating-cost.md).

## Traduis [#traduis]

```bash
verbatra translate
```

L'exécution traduit chaque clé source dans la nouvelle locale et écrit le fichier à ton `files.pattern`, ici `locales/fr.json`. Seule la nouvelle locale déclenche des appels au fournisseur : les autres locales n'ont aucune clé manquante ou modifiée par rapport à leur référence dans le fichier de verrouillage, donc rien n'est envoyé pour elles.

Si l'exécution ne garde rien pour la nouvelle locale, parce que chaque clé a échoué à une vérification, que ses requêtes au fournisseur ont échoué ou qu'un budget de tokens les a retenues, aucun fichier n'est créé. Les clés restent manquantes et la prochaine exécution les réessaie.

Ensuite, `verbatra check` se termine avec `0` quand chaque locale, la nouvelle comprise, est synchronisée.

## Langues avec plus de catégories de pluriel [#langues-avec-plus-de-catégories-de-pluriel]

Certaines langues ont besoin de plus de formes de pluriel que ta source. L'anglais a `one` et `other` ; le polonais en demande quatre, l'arabe six, et le français ajoute `many`. Par défaut, verbatra traduit les formes présentes dans ta source et n'invente pas les autres : l'exécution réussit et signale un avis `PLURAL_CATEGORIES_INCOMPLETE` qui nomme ce qui manque.

### Générer les formes manquantes [#générer-les-formes-manquantes]

<AvailableFrom version="0.3.0" />

Si tu utilises du JSON i18next avec un fournisseur LLM, verbatra peut écrire les formes manquantes :

```ts title="verbatra.config.ts"
export default defineConfig({
  // ...
  generatePlurals: true,
});
```

Les formes générées passent les mêmes contrôles d'intégrité que toute traduction.

### Formes issues de CLDR [#formes-issues-de-cldr]

<AvailableFrom version="0.12.0" />

Les formes dont une langue a besoin viennent des règles de pluriel CLDR intégrées à Node.js, pour chaque langue, ordinaux compris. Les formats ICU (next-intl et ARB) gardent un pluriel entier dans une seule valeur, ils n'ont donc besoin d'aucune génération : on demande au fournisseur exactement les branches qu'utilise la langue cible. Voir [`generatePlurals`](https://verbatra.kreitz-webdev.de/fr/docs/config-file.md#generateplurals) pour ce qui retombe sur l'avis, et [Pluriels](https://verbatra.kreitz-webdev.de/fr/docs/language-support.md#pluriels) pour la façon dont verbatra décide des formes dont une langue a besoin.

## Continue à maintenir seulement la source [#continue-à-maintenir-seulement-la-source]

Désormais, tu ne modifies que la locale source. Ajoutes-y une chaîne et relance `translate` : verbatra la remplit dans chaque cible, y compris celle que tu viens d'ajouter.

## Voir aussi [#voir-aussi]

- [`verbatra translate`](https://verbatra.kreitz-webdev.de/fr/docs/cli/translate.md) et [`verbatra diff`](https://verbatra.kreitz-webdev.de/fr/docs/cli/diff.md) : chaque flag utilisé sur cette page.
- [Le fichier de configuration](https://verbatra.kreitz-webdev.de/fr/docs/config-file.md#locales-et-fichiers) : `targetLocales`, `files.pattern` et `files.localeStyle`.
- [Prise en charge des langues](https://verbatra.kreitz-webdev.de/fr/docs/language-support.md) : les langues couvertes par chaque fournisseur, les écritures, les variantes régionales et le texte de droite à gauche.
- [Le fichier de verrouillage](https://verbatra.kreitz-webdev.de/fr/docs/the-lock-file.md) : pourquoi les locales existantes ne coûtent rien lors d'une nouvelle exécution.
