@lingo.dev/cli

Actualizado: la semana pasada · 3 min de lectura

@lingo.dev/cli envía tu contenido fuente a un motor de localización, que lo traduce en el servidor y vuelve a escribir los resultados en disco, en el mismo comando con --wait o más tarde con lingo pull. Sustituye al flujo heredado de npx lingo.dev: mismo proyecto, pero una arquitectura totalmente 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 push sube 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ón
  • lingo pull recupera los resultados del push más reciente. Funciona aunque hayas cerrado el terminal a mitad de la traducción, siempre que hagas pull en la misma máquina y desde el mismo checkout.
  • 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 permite algo que la CLI heredada no podía hacer: traducciones largas sin dejar el terminal colgado. Haz push, cierra el terminal y recupera los resultados más tarde.

Esperar los resultados#

lingo push sube las fuentes, inicia el flujo de trabajo en el servidor y sale en cuanto se envía la ejecución; no espera a que terminen las traducciones ni escribe los resultados. Recógelos con lingo pull o añade --wait (-w) para hacerlo todo en un solo comando.

bash
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 pull vuelve a enlazarse con el push más reciente de este proyecto y descarga sus resultados. Funciona incluso después de cerrar el terminal. El estado de la ejecución se guarda por máquina en ~/.lingo/runs/<project-hash>.json, asociado a la ruta del proyecto, así que pull retoma el proceso 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#

ComandoModoCuándo
lingo pushIncremental: compara las fuentes con .lingo/lock.json, traduce solo las claves nuevas o modificadas en los destinos existentes y conserva el restoPara las ejecuciones habituales (añade --wait en CI)
lingo push --backfill-missingBootstrap: rellena los ARCHIVOS de destino que aún no existenPrimer push o después de añadir un idioma nuevo
lingo push --forceRetraducción completa: sobrescribe todos los destinos (incluidas las ediciones manuales); --yes/-y omite la confirmaciónEn 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.

Qué encontrarás en esta sección#

Guía rápida
Instala, autentícate, vincúlalo a un motor y ejecuta tu primer push y pull.
Configuración
`.lingo/config.json`, `.lingo/lock.json` y el estado de ejecución por máquina en `~/.lingo/runs/<hash>.json`.
lingo push
Envía las fuentes e inicia una ejecución de traducción. Añade `--wait` para escribir los resultados en el mismo comando. Patrones acotados, `--force` y semántica de reintento.
lingo pull
Recupera los resultados del último push, incluso entre sesiones de terminal, en la misma máquina. Detección de conflictos.
Otros comandos
login, logout, link, unlink, whoami: los comandos de configuración e identidad.