Docs / Démarrer / Démarrage rapide
Page traduite automatiquement
Démarrage rapide avec Angular
Traduis avec verbatra les fichiers de locale ngx-translate de ton app Angular, de l'installation au premier texte allemand à l'écran.
À la fin de cette page, ton app Angular affiche un texte allemand que verbatra a traduit depuis src/assets/i18n/en.json, 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 Angular 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.
Ajoute un fichier de locale source
Si src/assets/i18n/en.json existe déjà, passe cette étape. Sinon, crée-le avec deux textes, dont un avec un placeholder :
{
"greeting": "Hello, {{name}}!",
"cart": {
"empty": "Your cart is empty."
}
}Génère une configuration
npx @verbatra/cli init --format ngx-translate-json --provider gemini --yes--format ngx-translate-json est le format de fichier de @ngx-translate/core. init trouve tes fichiers de locale, ou écrit le motif src/assets/i18n/{locale}.json 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 src/assets/i18n/de.json. La formulation dépend du modèle, par exemple :
{
"greeting": "Hallo, {{name}}!",
"cart": {
"empty": "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 @ngx-translate/core :
npm install @ngx-translate/core @ngx-translate/http-loaderPuis charge les deux fichiers et affiche la salutation :
import { provideHttpClient } from "@angular/common/http";
import type { ApplicationConfig } from "@angular/core";
import { provideTranslateService } from "@ngx-translate/core";
import { provideTranslateHttpLoader } from "@ngx-translate/http-loader";
export const appConfig: ApplicationConfig = {
providers: [
// keep the providers the Angular CLI generated, and add:
provideHttpClient(),
provideTranslateService({
lang: "de",
fallbackLang: "en",
loader: provideTranslateHttpLoader({ prefix: "./assets/i18n/", suffix: ".json" }),
}),
],
};import { Component } from "@angular/core";
import { TranslatePipe } from "@ngx-translate/core";
@Component({
selector: "app-root",
imports: [TranslatePipe],
template: `<p>{{ 'greeting' | translate: { name: 'Ada' } }}</p>`,
})
export class App {}// projects.<name>.architect.build.options
"assets": [
{ "glob": "**/*", "input": "public" },
{ "glob": "**/*", "input": "src/assets", "output": "assets" }
]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.