@lingo.dev/cli
@lingo.dev/cli envía tu contenido fuente a un motor de localización, que lo traduce del lado del servidor y escribe los resultados en disco, ya sea en el mismo comando con --wait o más tarde con lingo pull. Reemplaza 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, siempre que ejecutes pull en la misma máquina y desde el mismo checkout.- 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 algo que la CLI heredada no podía hacer: traducciones de larga duración sin dejar la terminal bloqueada. Haz push, cierra la terminal y recupera los resultados más tarde con pull.
Esperar los resultados#
lingo push sube las fuentes, inicia el flujo de trabajo del lado del servidor y termina apenas se envía la ejecución: no espera a que terminen las traducciones ni escribe los resultados. Recupéralos con lingo pull o usa --wait (-w) para hacerlo todo en un solo comando.
lingo push # submit the run and exit (default)
lingo pull # later: re-attach to the most recent push and download its outputs
lingo push --wait # submit, wait, and write outputs in one command--wait(-w) bloquea hasta que termine el flujo de trabajo y escribe los resultados en el mismo comando.lingo pullvuelve a enlazarse con el push más reciente de este proyecto y descarga sus resultados. Funciona incluso después de cerrar la terminal. El estado de la ejecución se guarda por máquina en~/.lingo/runs/<project-hash>.json, usando la ruta del proyecto como clave, así quepullse reanuda en la misma máquina y desde el mismo checkout.
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 habitual (agrega --wait en 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.