@lingo.dev/cli envía tu contenido fuente a un motor de localización, espera mientras el motor genera las traducciones y escribe los resultados de vuelta en disco. Reemplaza el flujo heredado de npx lingo.dev: mismo proyecto, pero con una arquitectura radicalmente distinta.
Qué cambió frente a la CLI heredada#
La CLI heredada (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 sincrónica. La nueva CLI está diseñada para ser asíncrona:
lingo pushsube las fuentes a tu motor, inicia un flujo de trabajo del lado del servidor y espera a que termine o devuelve de inmediato un ID de ejecuciónlingo pulldescarga los resultados del push más reciente; funciona aunque hayas cerrado la terminal a mitad de la traducción o estés descargando 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 ediciones locales antes de que se sobrescriban
Esto habilita dos cosas que la CLI heredada no podía hacer: traducciones de larga duración sin dejar la terminal colgada 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 versión próxima cambiará el comportamiento predeterminado a asíncrono. lingo push enviará la ejecución y saldrá de inmediato; luego ejecutarás lingo pull para descargar las traducciones terminadas, y --wait (-w) será la forma de volver al flujo bloqueante de un solo comando.
--wait(-w) se bloquea hasta que termina 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 cerrar 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 hace falta 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 habitual / CI |
lingo push --backfill-missing | Bootstrap: completa los ARCHIVOS de destino que todavía no existen | En el primer push o después de agregar 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 un cambio en el glosario o en el motor) |
--backfill-missing es una opción de bootstrap. Hace una solicitud nueva acotada y solo agrega archivos de destino completos que faltan; NO traduce claves recién agregadas dentro de archivos ya traducidos (la ejecución informa "already up-to-date" y la clave se omite). Para cambios continuos, usa lingo push sin opciones.
Editar traducciones manualmente#
Si usas lingo push sin opciones, se conservan las ediciones manuales por clave:
- Edita una cadena de destino (sin cambios en su fuente) → esa cadena se conserva; las demás claves se siguen actualizando.
- Cambia la fuente de una clave editada → se genera una traducción nueva para esa clave, que reemplaza la edición manual.
- Se agrega una nueva clave fuente → se traduce y se agrega, incluso en archivos con ediciones manuales.
