Docs / Démarrer / Démarrage rapide
Page traduite automatiquement
Démarrage rapide avec Flutter
Traduis avec verbatra les fichiers de locale ARB de ton app Flutter, de l'installation au premier texte allemand à l'écran.
À la fin de cette page, ton app Flutter affiche un texte allemand que verbatra a traduit depuis lib/l10n/app_, et un fichier de verrouillage fait que chaque exécution suivante ne traduit que ce qui a changé. Il te faut Node.js ^22.18.0 || >=24, un projet Flutter et une dizaine de minutes. Les quatre premières étapes ne demandent ni compte ni clé d'API.
Tu as déjà des fichiers de locale et un agent de code ? Donne-lui plutôt le prompt de Configure verbatra avec un agent IA : il part des fichiers que ton projet a déjà et s'arrête avant de dépenser quoi que ce soit.
Étapes
Installe la CLI
npm install --save-dev @verbatra/cliverbatra est un outil de développement et n'est jamais livré dans ton app. Les commandes ci-dessous utilisent npx ; avec pnpm, yarn ou bun, lance plutôt pnpm verbatra, yarn verbatra ou bun run verbatra.
Une app Flutter n'a pas de package.json
Ton gestionnaire de paquets en crée un à la première installation. Ajoute node_ à ton .gitignore.
Ajoute un fichier de locale source
Si lib/l10n/app_ existe déjà, passe cette étape. Sinon, crée-le avec deux textes, dont un avec un placeholder :
{
"@@locale": "en",
"greeting": "Hello, {name}!",
"@greeting": {
"placeholders": { "name": { "type": "String" } }
},
"cartEmpty": "Your cart is empty."
}Génère une configuration
npx @verbatra/cli init --format arb --provider gemini --yes--format arb est le format de fichier de flutter_. init trouve tes fichiers de locale, ou écrit le motif lib/l10n/app_ quand il n'y en a pas encore. --yes reprend ce que init a détecté au lieu de poser des questions. Le nouveau verbatra.config.ts traduit de en vers de ; ajoute des codes à targetLocales pour d'autres langues.
Prévisualise l'exécution sans clé
npx @verbatra/cli translate --dry-runverbatra: dry run over 1 locale, no provider call
verbatra: de done, 2 would translate
verbatra translate (dry run)
de: 2 would translate, 0 unchanged
1 succeeded, 0 partial, 0 failed (dry run: nothing written)
[ok] dry run done in 0.0s, nothing written
next: verbatra translate (run it for real)Une exécution à blanc ne construit aucun fournisseur : elle n'a pas besoin de clé, ne dépense rien et n'écrit rien.
Traduis
cp .env.example .envOuvre .env et colle ta clé après GEMINI_. Pas encore de clé ? Gemini a une offre gratuite : crées-en une dans Google AI Studio. Les autres fournisseurs et leurs variables sont sur Fournisseurs.
npx @verbatra/cli translateverbatra envoie les deux textes à Gemini, vérifie que chaque placeholder a survécu et écrit lib/l10n/app_. La formulation dépend du modèle, par exemple :
{
"@@locale": "de",
"greeting": "Hallo, {name}!",
"cartEmpty": "Dein Warenkorb ist leer."
}Vérifie que chaque locale est synchronisée
npx @verbatra/cli check[ok] checking the locales (0.0s)
verbatra check
de: 0 missing, 0 stale, 2 up-to-date (in sync)
all locales in synccheck n'appelle aucun fournisseur et se termine avec 1 dès qu'une locale n'est plus synchronisée : il peut donc protéger une pull request.
Charge les locales dans ton app
Ajoute flutter_ :
flutter pub add flutter_localizations:"{sdk: flutter}" intl:anyPuis charge les deux fichiers et affiche la salutation :
flutter:
generate: truearb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dartimport 'package:flutter/material.dart';
import 'l10n/app_localizations.dart';
void main() => runApp(
MaterialApp(
locale: const Locale('de'),
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: Builder(
builder: (context) => Text(AppLocalizations.of(context)!.greeting('Ada')),
),
),
);Lance ton app : la salutation affiche Hallo, Ada!.
Ce qui vient de se passer
verbatra.lock.jsonenregistre un hash de chaque texte source, pour que l'exécution suivante n'envoie que les textes nouveaux ou modifiés. Voir Le fichier de verrouillage.- Un résultat qui perd un placeholder est retenu, jamais écrit. Voir Sûreté de la traduction.
Commite ensemble les fichiers de locale, verbatra.lock.json et verbatra.provenance.json.
Optionnel : connecte ton agent de code Disponible à partir de 0.12.0
npx @verbatra/cli init --agentAvec la configuration en place, init --agent la garde et ajoute seulement les fichiers pour l'agent : les règles verbatra dans AGENTS.md (ou CLAUDE.md, quand c'est ton seul fichier d'instructions) et le serveur MCP verbatra, sans les outils qui dépensent, dans la configuration de projet de chaque agent de code qu'il détecte. Quels fichiers il écrit pour quel agent, et comment choisir toi-même les agents avec --client, c'est dans Préparer les agents de code. --dry-run montre les fichiers sans les écrire.
Ou, sans la CLI, ajoute seulement le serveur MCP à ton profil utilisateur VS Code ; utilise une seule voie, jamais les deux :
Ensuite
Ajouter une langue
Ajoute une locale cible et laisse une exécution la remplir.
Exécuter verbatra en CI
Fais échouer une pull request quand une locale dérive.
Choisis ta stack
L'id de format et l'organisation de fichiers de tout autre framework.