Docs / Guides
Page traduite automatiquement
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.
Ajoute la locale à ta configuration
Ajoute le code à targetLocales dans verbatra.config.ts :
import { defineConfig } from "@verbatra/cli";
export default defineConfig({
sourceLocale: "en",
targetLocales: ["de", "fr"],
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
Écris le code sous forme BCP 47, avec un trait d'union : pt-BR, pas pt_. 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_. 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, et verbatra doctor te dit si un fournisseur prend en charge la nouvelle langue.
Prévisualise le travail
Regarde ce que ferait une exécution avant de dépenser quoi que ce soit :
verbatra diff --locales frLa 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.
Traduis
verbatra translateL'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
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_ qui nomme ce qui manque.
Générer les formes manquantes
Si tu utilises du JSON i18next avec un fournisseur LLM, verbatra peut écrire les formes manquantes :
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
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 pour ce qui retombe sur l'avis, et Pluriels pour la façon dont verbatra décide des formes dont une langue a besoin.
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
verbatra translateetverbatra diff: chaque flag utilisé sur cette page.- Le fichier de configuration :
targetLocales,files.patternetfiles.localeStyle. - Prise en charge des langues : les langues couvertes par chaque fournisseur, les écritures, les variantes régionales et le texte de droite à gauche.
- Le fichier de verrouillage : pourquoi les locales existantes ne coûtent rien lors d'une nouvelle exécution.