@lingo.dev/cli envía tu contenido fuente a un motor de localización, espera mientras el motor genera las traducciones y vuelve a escribir los resultados en disco. Sustituye el flujo heredado de npx lingo.dev: es el mismo proyecto, pero con una arquitectura radicalmente distinta.
Qué cambió frente al CLI heredado#
El CLI heredado (npx lingo.dev run) extraía cadenas, llamaba a un LLM directamente desde tu máquina y escribía los archivos en una sola pasada, todo en tu equipo. El CLI actual divide el trabajo en push y pull:
lingo pushsube las fuentes a tu motor, inicia un flujo de trabajo del lado del servidor y espera a que termine o regresa de inmediato con un ID de ejecuciónlingo pullrecupera los resultados del push más reciente; funciona incluso si cerraste la terminal a mitad de la traducción o si haces pull desde otra máquina- Un lockfile (
.lingo/lock.json) registra la última versión conocida en el servidor de cada destino para que la detección de conflictos pueda señalar ediciones locales antes de que se sobrescriban
Esto habilita dos cosas que el CLI heredado no podía hacer: traducciones de larga duración sin dejar la terminal bloqueada y descargar resultados en una máquina distinta de la que ejecutó push (o en CI).
Esperar los resultados#
Hoy, lingo push sube las fuentes, inicia el flujo de trabajo del lado del servidor, espera a que termine y escribe los resultados, todo en un solo comando. Pasar --wait (-w) hace explícito ese comportamiento bloqueante. También puedes volver a adjuntarte más tarde a una ejecución finalizada con lingo pull.
lingo push # submit, wait, and write outputs (current default)
lingo push --wait # same thing, made explicit
lingo pull # later: re-attach to the most recent push and download its outputsPróximo cambio: una próxima versión cambiará el comportamiento predeterminado para que lingo push envíe la ejecución y salga de inmediato; usarás lingo pull para descargar las traducciones terminadas, y --wait (-w) pasará a ser la forma de volver al flujo bloqueante de un solo comando.
--wait(-w) bloquea hasta que termine el flujo de trabajo y escribe los resultados en el mismo comando.lingo pullvuelve a adjuntarse al push más reciente de este proyecto y descarga sus resultados; funciona incluso después de que cerraste la terminal. El estado de ejecución se guarda por máquina en~/.lingo/runs/<project-hash>.json, así quepullse reanuda en la misma máquina.
Autenticación: ambos comandos leen LINGO_API_KEY (o --api-key, o una sesión de lingo login). En CI, configura LINGO_API_KEY y no necesitas nada más.
Modos de push#
| Comando | Modo | Cuándo |
|---|---|---|
lingo push | Incremental: compara la fuente con .lingo/lock.json, traduce solo las claves nuevas o modificadas en los destinos existentes y conserva el resto | En cada ejecución rutinaria / CI |
lingo push --backfill-missing | Bootstrap: completa los ARCHIVOS de destino que todavía no existen | Primer push o después de agregar un nuevo idioma |
lingo push --force | Retraducción completa: sobrescribe todos los destinos (incluidas las ediciones manuales); --yes/-y omite la confirmación | Rara vez (p. ej., después de cambiar el glosario o el motor) |
--backfill-missing es una bandera de bootstrap. Hace una solicitud nueva con alcance limitado y solo agrega archivos de destino completos que faltan; NO traduce claves recién agregadas dentro de archivos ya traducidos (la ejecución muestra "already up-to-date" y la clave se omite). Para cambios continuos, usa lingo push sin opciones.
Editar traducciones manualmente#
lingo push sin opciones conserva las ediciones manuales por clave:
- Editas una cadena de destino (sin cambios en su fuente) → esa cadena se conserva; las demás claves siguen actualizándose.
- La fuente detrás de una clave editada cambia → se genera una traducción nueva para esa clave, reemplazando la edición manual.
- Se agrega una nueva clave fuente → se traduce y se añade, incluso en archivos con ediciones manuales.
