Documentación

Mantén cada archivo de locale al día con tu origen.

verbatra traduce tus archivos de locale de i18n de forma incremental: envía solo las cadenas nuevas y modificadas al proveedor que configures, comprueba cada resultado y escribe los archivos de vuelta en su sitio.

pnpm add -D @verbatra/cli
~/acme-shop

An example verbatra command-line session.

  1. verbatra init
    • ✓ created verbatra.config.ts
    • source en · targets de, es, fr
    • provider gemini · key from GEMINI_API_KEY
  2. verbatra translate
    • diff en.json · 12 new · 0 changed · 108 unchanged
    • de 12 translated · 108 unchanged · 0 withheld
    • es 12 translated · 108 unchanged · 0 withheld
    • fr 12 translated · 108 unchanged · 0 withheld
    • ✓ 36 keys translated in 5.4s · 0 skipped · lock updated
  3. verbatra diff
    • en.json · 120 keys · source of truth
    • de 2 new · 1 changed · 117 up to date
    • es 0 new · 0 changed · 120 up to date
    • fr 5 new · 0 changed · 115 up to date
    • 8 keys would be sent · run verbatra translate to apply
  4. verbatra watch
    • watching en.json for changes
    • en.json changed · 1 new key
    • de 1 translated · 0 withheld
    • ✓ 3 keys translated · waiting for changes

El problema

Mantienes a mano un locale de origen. Todos los demás archivos de locale se desfasan a medida que ese origen evoluciona: las claves nuevas faltan en los destinos, las cadenas de origen editadas dejan atrás traducciones obsoletas y las claves eliminadas se quedan como huérfanas. Ponerse al día a mano no escala, y retraducirlo todo en cada cambio es lento, cuesta tokens del proveedor por cadenas que ya estaban bien y revuelve texto que tu equipo ya revisó.

Cómo lo resuelve verbatra

Un archivo de bloqueo confirmado, verbatra.lock.json, registra para cada clave traducida el hash de la cadena de origen de la que salió su traducción. Cada ejecución lee el locale de origen, hace diff de cada destino contra él y contra esa línea base, y envía al proveedor solo las claves faltantes y modificadas. Las claves que siguen vigentes se dejan en paz: ejecuta translate dos veces seguidas y la segunda ejecución no hace ni una llamada al proveedor.

Cada cadena que devuelve el proveedor se comprueba antes de escribirse: se exige la integridad de los marcadores de posición y la integridad ICU, y una traducción que rompe cualquiera de las dos se retiene en lugar de publicarse, y se reintenta en la siguiente ejecución. Los comandos de solo lectura check y diff informan del desfase sin escribir nada, así que CI puede condicionar sobre sus códigos de salida.

verbatra lee y escribe ocho formatos (JSON de i18next, vue-i18n, next-intl y ngx-translate, XLIFF, YAML, ARB de Flutter y properties de Java/Spring) y traduce a través de cinco proveedores (Anthropic, OpenAI, Gemini, DeepL y cualquier servidor compatible con OpenAI, incluidos los locales) detrás de una sola interfaz. Consulta Formatos y Proveedores.

Los paquetes

verbatra se distribuye como tres paquetes de npm:

  • @verbatra/cli proporciona el binario verbatra con ocho comandos: init, translate, watch, check, diff, export, import y studio. Es una capa fina sobre el SDK, así que todo lo que hace también está disponible de forma programática. Empieza por aquí.
  • @verbatra/sdk es el motor que hay debajo: translate() de una sola pasada, watch() de larga duración, check() y diff() de solo lectura, el viaje de ida y vuelta del libro de Excel para traductores humanos, y la carga de la configuración. Úsalo directamente desde scripts, herramientas de build o CI. Consulta el SDK.
  • @verbatra/studio es Verbatra Studio, un panel local sobre tu proyecto con edición integrada y una cola de revisión. La CLI lo arranca con verbatra studio; el gasto de proveedor desde Studio permanece desactivado a menos que pases --allow-spend. Consulta Revisión en Studio.

A dónde ir ahora