Ir al contenido

Código abierto · MIT · Trae tu propia clave de LLM

Tu agente localiza. El código garantiza.

Tu agente de programación mueve las cadenas codificadas en duro a claves y las traduce. glot verifica cada salida del LLM con código determinista y rechaza cualquier cosa rota o demasiado larga, con el motivo exacto, hasta que el reintento sea válido.

Abrir la app

Detecta tu stack i18n, extrae cadenas, traduce y comprueba. Vuelve a ejecutarlo tras cada cambio de UI.

Binario real de glot. El LLM de esta grabación está programado para fallar en tres cadenas; los rechazos son de glot.

Benchmark, 18 de octubre de 2026

Cadenas rotas que llegaron al catálogo

320 mensajes ICU por modelo y condición, 8 idiomas. Mismos prompts, mismos modelos.

Porcentaje de mensajes traducidos que estaban rotos, por modelo y condición
ModeloPrompt sin procesarCon glot
Claude Haiku 5.514,1 %0 %
Claude Sonnet 5.58,8 %0 %
Con glot, 1,9 % (Haiku) y 3,1 % (Sonnet) de las cadenas se rechazaron tras reintentos y se dejaron sin traducir en lugar de publicarlas rotas. Un juez independiente (FormatJS + Intl.PluralRules) lo confirma. Leer el informe completo

Cómo funciona

Tres pasos. Tu agente también puede ejecutarlos.

O los tres a la vez, idempotente: npx glot-i18n localize.

  1. 1

    Detectar

    Detecta tu librería de i18n y sus catálogos, y escribe glot.toml y las reglas que lee tu agente de programación.

    $ npx glot-i18n init

    next-intl · messages/{locale}.json

    wrote glot.toml, CLAUDE.md rules

  2. 2

    Extraer

    Mueve las cadenas de interfaz codificadas en duro a claves y reescribe los componentes para next-intl o react-i18next.

    $ npx glot-i18n i18nize

    42 strings → keys in 9 components

    app/checkout/page.tsx +12 −12

  3. 3

    Traducir, validado

    Solo el delta. Cada salida se verifica; un rechazo vuelve al modelo con el motivo. Si sigue inválida tras los reintentos, no se escribe nada.

    $ npx glot-i18n translate

    ✗ refused pl inbox.unread: missing few, many

    ✓ fixed pl attempt 2 · check passed

Las garantías

El LLM propone. El código decide qué se escribe.

Cada tarjeta muestra un rechazo real, palabra por palabra tal como lo imprime glot.

  • Marcadores y etiquetas

    Mismo conjunto que el original, sin inventar ni traducir ninguno. ICU, i18next y MessageFormat 2.

    fr "Bon retour, {nom} !"

    Rechazado por glot: Placeholder `{nom}` does not exist in the source; remove it or fix its name (the source only has {name}).

  • Plurales CLDR

    Todas las categorías que necesita el idioma de destino: cuatro para polaco, seis para árabe.

    pl "{count, plural, one {…} other {…}}"

    Rechazado por glot: `{count, plural, …}` is missing plural categories required by pl: few, many.

  • Glosario como código

    Tu glosario en el repo (glossary.toml): traducciones obligatorias y prohibidas, términos que no se traducen.

    fr "Ouvrez votre espace"

    Rechazado por glot: Glossary: `Workspace` must be translated as `Espace de travail` in fr.

  • Anchura en píxeles

    Medido con la fuente y el contenedor reales de tu app. Si es demasiado ancho se rechaza, nunca se trunca.

    de "Zahlungserinnerung an den Kunden senden"

    Rechazado por glot: Too wide for its box in the app: one line of 120px at Geist 14px/400; it renders 276px wide.

  • Lockfile

    glot.lock registra hashes del origen y la traducción. Solo se traduce lo modificado; las ediciones manuales nunca se sobrescriben.

    $ glot translate --locales fr

    Rechazado por glot: 1 edited by hand

  • Comprobación en CI

    glot check ejecuta todas las reglas sin conexión en cada catálogo y termina con código 1 y anotaciones en el PR.

    $ glot check --format github

    Rechazado por glot: ::error file=messages/de.json,line=12,title=glot tag_mismatch::[de] home.cta: Markup tags differ from the source: missing `<b>`

Presupuesto de píxeles

Traducciones que caben en el botón

El alemán suele ser un tercio más largo que el inglés. glot fit renderiza tu app en ejecución en cada idioma, mide cada texto frente a su contenedor, pide una variante más corta que conserve el significado y los marcadores, y vuelve a renderizar.

  • Medido en el navegador, no estimado a partir del número de caracteres
  • Las variantes acortadas siguen pasando el validador y el glosario
  • Se detiene tras un número fijo de pasadas, nunca en un bucle sin fin
Antes · Se desborda de su botón de 112 px
Zahlungserinnerung sendenAls bezahlt markierenArchivieren

"Zahlungserinnerung senden"

Después de glot fit, 1 iteración · Encaja
MahnungAls bezahlt markierenArchivieren

"Mahnung" · claude-haiku-5-5 · $0.0002

Ejecución real en la app de demostración, idioma alemán.

Pruébalo, sin instalar nada

¿Puedes romper glot?

Edita la traducción. El mismo validador que protege las traducciones de glot, compilado a WebAssembly, se ejecuta en tu navegador en cada pulsación de tecla.

Empezar desde una traducción rota

Cargando el validador…

Aún no hay rechazos. Prueba uno de los retos.

El ancho en píxeles y el glosario necesitan tu app y tu repositorio: pruébalos con la CLI.

Agentes

Funciona con el agente que ya usas

glot mcp te da a tu agente tus claves, dónde se usan y el glosario. Cada cadena que añade pasa por el mismo validador.

Configuración para cada agente

Edición dentro de la app

Alt+clic en cualquier texto de tu app

El overlay de desarrollo encuentra la clave detrás del texto en el que hiciste clic, la muestra en todos los idiomas con los problemas del validador en vivo y guarda en tus archivos de catálogo.

  • Sugerir, acortar, hacer más formal, traducir todo
  • Marca el texto que desborda su contenedor
  • Solo en desarrollo, unos 6 kB con gzip
Popover del overlay de glot que muestra una clave, su texto original y sus traducciones en cinco idiomas

Comparar

En qué se diferencia glot de las plataformas de traducción alojadas y de otras herramientas para desarrolladores.

FunciónglotLokaliseCrowdinLingo.devTolgee
PrecioGratis (MIT) + tu uso de LLMDesde $149/mes, prueba de 14 díasPlanes de pago tras prueba de 14 días, gratis para código abiertoCLI gratis con tu propia clave, motor alojado $0 base + usoPlan gratuito y autoalojamiento gratis, nube desde €58/mes
Código abierto
Trae tu propia clave de LLM
Validación determinista de cada cadena
Git como fuente de verdad (lockfile)
Servidor MCP para agentes de programación
Edición en contexto en tu app
Ajuste por presupuesto de píxeles renderizado

Comprobado en el sitio web público y la documentación de cada proveedor el 18 de octubre de 2026. Parcial significa limitado, según el plan o a través de una integración. No significa que no encontramos esa función en la documentación pública. Los planes cambian: cada celda enlaza a su fuente.

Fuentes y fechas de cada celda

¿Cuánto cuesta?

glot es MIT y gratuito. Pagas a tu proveedor de LLM con tu propia clave: 850 cadenas cuestan 0,035 $ con el modelo por defecto en nuestra prueba. glot translate --dry-run estima antes, y un presupuesto lo limita.

¿Añade una dependencia en tiempo de ejecución?

No. Tu app sigue usando next-intl, i18next o FormatJS con catálogos JSON simples. glot trabaja sobre los archivos, en tu repo y en CI.

¿Qué pasa si el modelo sigue fallando con una cadena?

glot envía el motivo exacto de vuelta y reintenta dos veces; luego prueba el modelo de respaldo. Si sigue fallando, no se escribe nada: la clave se informa como rechazada y permanece sin traducir.

¿Mi código sale de mi máquina?

Las cadenas a traducir y su contexto se envían a tu proveedor de LLM, no tus archivos fuente. Nada llega a los autores de glot; no hay telemetría.

¿Necesito la aplicación web?

No. La CLI y el servidor MCP hacen toda la tarea en local. La app añade un panel compartido, revisión y sincronización con GitHub para equipos.

Publica cada idioma con cada versión.

Un comando en tu repo. Nada roto llega a tus catálogos.

Leer la guía de inicio rápido