@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 al disco. Sustituye al flujo heredado de npx lingo.dev: el mismo proyecto, pero con una arquitectura completamente 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 de una sola pasada en local. La CLI actual divide el trabajo en push y pull:
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 push más reciente: funciona incluso si cerraste el 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 de cada destino conocida por el servidor para que la detección de conflictos pueda avisarte de 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 descargar los 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 con 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 pendiente cambiará el comportamiento predeterminado para que lingo push envíe la ejecución y salga inmediatamente; 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 termine el flujo de trabajo y escribe los resultados en el mismo comando.lingo pullvuelve a engancharse al push más reciente 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, configura LINGO_API_KEY y no necesitas nada más.
Modos de push#
| Comando | Modo | Cuándo |
|---|---|---|
lingo push | Incremental: compara las fuentes 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: rellena los ARCHIVOS de destino que aún 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 | En contadas ocasiones (p. ej., tras un cambio en el glosario o en el motor) |
--backfill-missing es una bandera de bootstrap. Lanza una solicitud nueva con un alcance acotado 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#
lingo push sin opciones conserva las ediciones manuales por clave:
- Edita 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.
