@lingo.dev/cli envía tu contenido fuente a un motor de localización, espera mientras el motor genera las traducciones y vuelca los resultados de nuevo en disco. Sustituye al flujo heredado de npx lingo.dev: es el mismo proyecto, pero con una arquitectura radicalmente distinta.
Qué ha cambiado frente a la CLI heredada#
La CLI heredada (npx lingo.dev run) extraía cadenas, llamaba directamente a un LLM desde tu máquina y escribía los archivos en una única pasada síncrona. La nueva CLI está diseñada para funcionar de forma asíncrona:
lingo pushsube las fuentes a tu motor, pone en marcha un flujo de trabajo del lado del servidor y espera a que termine o devuelve al instante un ID de ejecuciónlingo pullrecupera los resultados del último push; funciona incluso si cerraste el terminal en 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 marcar las ediciones locales antes de que se sobrescriban
Esto desbloquea dos cosas que la CLI heredada no podía hacer: traducciones de larga duración sin dejar el terminal colgado y recuperar los resultados en una máquina distinta de la que ejecutó push (o en CI).
Esperar los resultados#
A día de 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 engancharte más tarde a una ejecución ya 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 versión ya en camino cambiará el comportamiento por defecto a async. lingo push enviará la ejecución y saldrá al instante; ejecutará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 termina el flujo de trabajo y escribe los resultados en el mismo comando.lingo pullvuelve a engancharse al último push de este proyecto y descarga sus resultados; funciona incluso después de cerrar el 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, define LINGO_API_KEY y no necesitas nada más.
Modos de push#
| Comando | Modo | Cuándo usarlo |
|---|---|---|
lingo push | Incremental: compara las diferencias entre la fuente y .lingo/lock.json, traduce solo las claves nuevas o modificadas en los destinos existentes y conserva el resto | En cada ejecución habitual / CI |
lingo push --backfill-missing | Bootstrap: rellena los ARCHIVOS de destino que todavía no existen | Primer push o después de añadir un idioma nuevo |
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 opción de bootstrap. Lanza una solicitud nueva y acotada, y solo añade archivos de destino completos que faltan; NO traduce claves recién añadidas en 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 a mano#
Si usas lingo push sin opciones, las ediciones manuales se conservan por clave:
- Editas una cadena de destino (sin cambios en su fuente) → esa cadena se conserva; las demás claves siguen actualizándose.
- Cambia la fuente de una clave editada → se genera una traducción nueva para esa clave, sustituyendo la edición manual.
- Se añade una nueva clave fuente → se traduce y se añade, incluso en archivos con ediciones manuales.
