---
title: "Introducción"
description: "Qué es verbatra y qué problema resuelve: traducir solo las claves que cambiaron. Además, cómo encajan la CLI y el SDK con Studio y el servidor MCP."
type: "overview"
---
# Introducción

Qué es verbatra y qué problema resuelve: traducir solo las claves que cambiaron. Además, cómo encajan la CLI y el SDK con Studio y el servidor MCP.

<DocsHomeHeader
  eyebrow="Documentación"
  headline="Configura verbatra y mantén cada locale al día."
  lead="Guías y referencia para la CLI, el SDK, Studio y el servidor MCP: empieza con el inicio rápido o deja que tu agente de código configure verbatra."
>

<DocsHomeTabs
  label="Puntos de entrada"
  tabs={[
    { label: "Inicio rápido", href: "/docs/quickstart" },
    { label: "CLI", href: "/docs/cli" },
    { label: "SDK", href: "/docs/sdk" },
    { label: "GitHub Action", href: "/docs/github-action" },
    { label: "Servidor MCP", href: "/docs/cli/mcp" },
    { label: "Studio", href: "/docs/review-in-studio" },
  ]}
/>

<DocsHomeAgentTip title="¿Usas un agente de código?">
Copia el prompt en Claude Code, Cursor o cualquier agente de código y configurará verbatra por ti; [Configurar con un agente de IA](https://verbatra.kreitz-webdev.de/es/docs/start-with-ai.md) muestra cada paso. Para que lea y edite tus traducciones directamente, conecta el [servidor MCP](https://verbatra.kreitz-webdev.de/es/docs/cli/mcp.md).
</DocsHomeAgentTip>

</DocsHomeHeader>

<DocsHomeBody>

<DocsHomeSection title="Empieza por tu objetivo" lead="Elige lo que quieres hacer; cada tarjeta abre la página que lo explica.">

<DocsHomePaths
  cards={[
    {
      goal: "Traducir un proyecto",
      page: "Inicio rápido",
      body: "Instala la CLI, previsualiza la ejecución sin clave y luego traduce tu primer archivo.",
      href: "/docs/quickstart",
    },
    {
      goal: "Proteger los pull requests",
      page: "CI y códigos de salida",
      body: "Haz fallar un pull request cuando un locale se desfase, con salida JSON para scripts.",
      href: "/docs/ci-and-exit-codes",
    },
    {
      goal: "Pasar el trabajo a traductores",
      page: "Traducción humana",
      body: "Exporta un libro de trabajo para que lo traduzca una persona y vuelve a importarlo.",
      href: "/docs/manual-translation",
    },
  ]}
/>

</DocsHomeSection>

<DocsHomeSection id="pick-your-stack" title="Elige tu stack" lead="Una tarjeta marcada con Inicio rápido abre una guía paso a paso para ese stack; cualquier otra tarjeta abre su comando init y su estructura de archivos.">

<StackCards
  labelledBy="pick-your-stack"
  cards={[
    { label: "React", icon: "web", mark: "react", formats: ["i18next-json"], href: "/docs/quickstart/react", badge: "Inicio rápido", description: "Traduce archivos JSON de i18next en una app de React." },
    { label: "Next.js", icon: "web", mark: "deviconNextjs", formats: ["next-intl-json"], href: "/docs/quickstart/nextjs", badge: "Inicio rápido", description: "Mantén sincronizados los archivos de mensajes de next-intl en cada locale." },
    { label: "Vue", icon: "web", mark: "fontawesomeVuejs", formats: ["vue-i18n-json"], href: "/docs/quickstart/vue", badge: "Inicio rápido", description: "Traduce mensajes JSON de vue-i18n en una app de Vue." },
    { label: "Nuxt", icon: "web", mark: "deviconNuxt", formats: ["vue-i18n-json"], href: "/docs/pick-your-stack#vue-y-nuxt-con-vue-i18n", description: "Traduce mensajes JSON de vue-i18n en una app de Nuxt." },
    { label: "Angular", icon: "web", mark: "angular", formats: ["ngx-translate-json"], href: "/docs/quickstart/angular", badge: "Inicio rápido", description: "Traduce archivos JSON de ngx-translate en una app de Angular." },
    { label: "Flutter", icon: "mobile", mark: "fontawesomeFlutter", formats: ["arb"], href: "/docs/quickstart/flutter", badge: "Inicio rápido", description: "Traduce archivos ARB para gen-l10n de Flutter." },
    { label: "Android", icon: "mobile", mark: "android", formats: ["android-xml"], href: "/docs/pick-your-stack#android", description: "Traduce recursos strings.xml, una carpeta por locale." },
    { label: "iOS y macOS", icon: "mobile", mark: "fontawesomeApple", formats: ["apple-strings", "apple-xcstrings"], href: "/docs/pick-your-stack#ios-y-macos", description: "Traduce .strings, .stringsdict y String Catalogs." },
    { label: "gettext", icon: "po", formats: ["gettext-po"], href: "/docs/pick-your-stack#gettext", description: "Traduce archivos PO a partir de una plantilla POT." },
    { label: "Java y Spring", icon: "server", mark: "deviconSpring", formats: ["properties"], href: "/docs/pick-your-stack#java-y-spring", description: "Traduce paquetes de mensajes .properties." },
    { label: ".NET", icon: "server", mark: "dotnet", formats: ["resx"], href: "/docs/pick-your-stack#net", description: "Traduce archivos de recursos .resx." },
    { label: "YAML", icon: "yaml", formats: ["yaml"], href: "/docs/pick-your-stack#yaml", description: "Traduce archivos de locale YAML anidados." },
    { label: "XLIFF", icon: "xliff", formats: ["xliff"], href: "/docs/pick-your-stack#xliff", description: "Traduce archivos XLIFF, el formato que intercambian las herramientas de traducción." },
    { label: "INI", icon: "ini", formats: ["ini"], href: "/docs/pick-your-stack#ini", description: "Traduce archivos de locale INI planos." },
  ]}
/>

<DocsHomeNote>
¿No ves tu stack? Empieza con el [inicio rápido general](https://verbatra.kreitz-webdev.de/es/docs/quickstart.md) o enséñale tu formato a verbatra con un [adaptador de formato propio](https://verbatra.kreitz-webdev.de/es/docs/custom-format-adapters.md).
</DocsHomeNote>

</DocsHomeSection>

<DocsHomeSection title="Cada ejecución es un diff, no una reescritura." lead="Qué pasa cuando ejecutas `verbatra translate`.">

Mantener a mano un locale de origen significa que todos los demás archivos de locale se desfasan: las claves nuevas faltan en los destinos, las cadenas editadas dejan atrás traducciones obsoletas y las claves eliminadas se quedan como huérfanas. verbatra cierra esa brecha comparando cada destino contra un archivo de bloqueo confirmado, `verbatra.lock.json`, y enviando al proveedor que configures solo lo que cambió; una segunda ejecución sin nada nuevo que traducir no hace ni una llamada al proveedor. Cada resultado se comprueba antes de escribirse, así que un placeholder roto se retiene y se reintenta, nunca se publica. Consulta [Cómo funciona](https://verbatra.kreitz-webdev.de/es/docs/how-it-works.md) para ver la canalización completa.

<DocsHomeSteps />

verbatra lee y escribe los formatos habituales de archivos de locale, de JSON y YAML a XLIFF, gettext y los catálogos de Android y Apple, y traduce a través de cualquier proveedor compatible, sea un LLM o un servicio de traducción automática, detrás de una sola interfaz (o de ninguno, para un [flujo solo humano](https://verbatra.kreitz-webdev.de/es/docs/human-only-workflow.md)), y un formato que no trae de serie se puede añadir como [adaptador personalizado](https://verbatra.kreitz-webdev.de/es/docs/custom-format-adapters.md). Las listas completas están en [Formatos](https://verbatra.kreitz-webdev.de/es/docs/formats.md) y [Proveedores](https://verbatra.kreitz-webdev.de/es/docs/providers.md).

</DocsHomeSection>

<DocsHomeSection title="Los paquetes" lead="Un motor, cuatro formas de manejarlo.">

<DocsHomeFeatures
  features={[
    {
      title: "@verbatra/cli",
      pkg: "cli",
      body: "El binario verbatra: todos los comandos, de init y extract a translate, check, export y studio, como una capa fina sobre el SDK. Empieza por aquí.",
      href: "/docs/cli",
    },
    {
      title: "@verbatra/sdk",
      pkg: "sdk",
      body: "El motor que hay debajo: translate, watch, check, diff, doctor, extract, pseudolocalización, generación de tipos y los ciclos de ida y vuelta con Excel y TMX, todo desde código.",
      href: "/docs/sdk",
    },
    {
      title: "@verbatra/studio",
      pkg: "studio",
      body: "Un panel local con edición in situ, una cola de revisión, un Overview de cobertura y ejecuciones y herramientas para agentes de navegador. El gasto de proveedor permanece desactivado hasta que lo actives.",
      href: "/docs/review-in-studio",
    },
    {
      title: "@verbatra/mcp",
      pkg: "mcp",
      body: "Un servidor MCP por stdio que expone el estado de traducción, el glosario y las herramientas de edición a Claude Code, Cursor o cualquier cliente MCP.",
      href: "/docs/cli/mcp",
    },
  ]}
/>

</DocsHomeSection>

</DocsHomeBody>
