Traduce solo lo que cambió.
verbatra compara tu locale de origen con un archivo de bloqueo confirmado, envía solo las claves nuevas y modificadas al proveedor que elijas y deja intactas todas las demás.
npm i -D @verbatra/cli- Última versión
- @verbatra/cli 0.11.1
- Formatos de archivo
- 14
- Proveedores
- 6
- Licencia
- MIT
Funciona con los archivos de locale que ya tienes.
Cada ejecución es un diff, no una reescritura.
Una sesión de ejemplo de verbatra en la línea de comandos.
- verbatra translate
- diff en.json · 2 nuevas · 1 cambiada · 117 sin cambios
- de 3 traducidas · 117 sin tocar · 0 retenidas
- es 3 traducidas · 117 sin tocar · 0 retenidas
- fr 3 traducidas · 117 sin tocar · 0 retenidas
- ✓ 9 claves traducidas en 1,8 s · 351 sin tocar · bloqueo actualizado
El archivo de bloqueo
Un hash por clave y locale, confirmado junto a tus archivos.
{ "de": {"inbox.title": "a1b2c3d4e5f6a7b8","inbox.count": "9f8e7d6c5b4a3210"} }
Escrito, y solo eso
de.json después de la ejecución.
{ "inbox": { "title": "Posteingang",nueva "count": "{count} neue Nachrichten"conservada }}Rechazado antes de llegar al archivo
Retenido, nunca escrito, enviado de nuevo en la siguiente ejecución.
- clave
- inbox.count
- candidata
- "Neue Nachrichten"
- falta
- {count}
- motivo
- placeholder
- conservada
- "{count} neue Nachrichten"
1. Configura
Locale de origen, destinos, un proveedor.
2. Compara
Nuevas, cambiadas, sin cambios o huérfanas, frente al archivo de bloqueo.
3. Traduce
Solo salen las claves nuevas y cambiadas.
4. Verifica y escribe
Los resultados rotos se retienen, el resto se escribe.
Seis proveedores, una interfaz.
Cambia modificando una línea de la configuración.
Pasa el cursor por las tarjetas o recórrelas con Tab.
El resto del ciclo de traducción, en la misma herramienta.
Entrega un libro a los traductores e impórtalo de vuelta.
Exporta, recíbelo relleno e impórtalo por la misma puerta de integridad.
Leer sobre la entrega en Excelverbatra exportverbatra import translations.xlsx| clave | origen | destino |
|---|---|---|
| cart.pay | Pay now | Bezahlen |
| cart.total | Total | Gesamt |
| nav.home | Home | Start |
Consulta el estado de cada locale en Verbatra Studio.
Cobertura, entradas marcadas, ediciones in situ. Sin llamadas al proveedor.
Revisar traducciones en Studio
Ejecútalo al guardar, en CI o desde una GitHub Action.
watch traduce con cada cambio. check hace fallar el pull request cuando un locale se desvía.
verbatra check --json{ "command": "check",
"result": { "inSync": false, "locales": [
{ "locale": "de", "missing": 0, "stale": 2 }
] } }O déjaselo a tu agente.
Un servidor MCP, más skills instalables para la CLI, MCP y Studio.
Empezar con IAnpx skills@latest add verbatra/skills --skill verbatra-cli -yverbatra mcpllms.txtllms-full.txtDocumentación del servidor MCPverbatra/skills
Lo que realmente obtienes.
El alemán, el español y el francés de esta página salen de ahí.
- Pagas por las claves que has cambiado.
- Solo las claves nuevas y cambiadas van al proveedor, y cada ejecución imprime su recuento de tokens por locale.
de: 2 translated, 281 unchanged, 468 tokens (394 in, 74 out)una ejecución sobre los mensajes de este sitio- Un placeholder roto nunca llega a producción.
- Una traducción candidata que pierde un placeholder, rompe ICU o desequilibra el marcado se retiene, nunca se escribe y se envía de nuevo en la siguiente ejecución.
de: 1 translated, 0 unchanged, 1 integrity-withheldla misma puerta de integridad protege las ediciones en Studio y las importaciones- La deriva de un locale hace fallar el pull request.
verbatra checksale con código 1 cuando falta algún locale o está desactualizado, con--jsonpara CI.- docs-i18n-check.ymleste sitio lo ejecuta en cada pull request
- Tus términos y tu tono se mantienen fijos.
- Un glosario fija cómo se traducen los términos listados;
tonedefine un tono formal, informal o neutro. - glossary: { verbatra: "verbatra" }, tone: "informal"el verbatra.config.ts de este sitio
- Cada traducción es un diff de git.
- Los archivos de locale y el archivo de bloqueo son texto plano en tu repo, y nada se elimina sin
--prune. - verbatra.lock.jsonun hash por clave y locale de destino
- Personas y otras herramientas pueden tomar el relevo.
- Exportación e importación de Excel para traductores, TMX para la memoria de traducción y tipos de TypeScript generados para tus claves.
- export, import, tmx, typescuatro de los catorce comandos
Preguntas frecuentes
JSON para i18next, vue-i18n, next-intl y ngx-translate, además de XLIFF, YAML, Flutter ARB, .properties de Java/Spring, .strings de Apple y los String Catalogs de Xcode, strings.xml de Android, archivos .po/.pot de gettext, INI y .resx de .NET. Eso cubre React, Next.js, Vue, Nuxt, Angular, SvelteKit, Astro, Node.js, Spring, Flutter, iOS, macOS, Android y cualquier stack basado en gettext. verbatra lee los archivos que ya tienes; no hay ningún formato propio de verbatra al que migrar.
Mantiene un archivo de bloqueo confirmado que registra lo que ya se tradujo. Cada ejecución compara tu locale de origen con ese archivo de bloqueo y envía solo las claves nuevas o modificadas a tu proveedor. Las claves sin cambios no se tocan nunca, así que una ejecución típica cuesta un puñado de cadenas, no todo tu catálogo.
Seis, detrás de una sola interfaz: Anthropic, OpenAI y Gemini (LLM), DeepL y Google Cloud Translation (traducción automática), y openai-compatible, que apunta verbatra a un servidor local o autoalojado como Ollama, LM Studio o vLLM. Eliges uno por su id en tu configuración y puedes cambiarlo más adelante editando esa única línea. Gemini tiene un nivel gratuito de verdad, y un modelo local no cuesta nada por llamada.
Cada resultado pasa unas comprobaciones de integridad de placeholders e ICU antes de escribirse. Una traducción que omite, inventa o reordena un placeholder, o que produce una sintaxis de mensaje ICU inválida, se retiene en lugar de guardarse en tu archivo de locale. La misma puerta de integridad se aplica a las ediciones y retraducciones hechas en Verbatra Studio.
verbatra en sí es gratuito y de código abierto bajo la licencia MIT. El único coste es el uso de tu proveedor, y ese lo controlas tú: traduce solo lo que cambió, y puedes ejecutarlo gratis en el nivel gratuito de Gemini o en un modelo local compatible con OpenAI.