Envía archivos fuente al motor, espera a que termine la ejecución y escribe los archivos de salida en disco.
lingo push [patterns...] [--force] [--backfill-missing] [--yes]Comportamiento por defecto — envío delta#
Sin argumentos, lingo push se ejecuta en modo solo delta:
- Calcula el hash de cada archivo fuente que coincida con los patrones
filesde la configuración - Compara cada hash con el lockfile para detectar qué fuentes han cambiado
- Sube las fuentes modificadas como una ejecución en el motor
- Espera a que termine la ejecución
- Escribe los archivos de salida en disco
- Registra los nuevos hashes de las fuentes en el lockfile
Si no ha cambiado ninguna fuente desde el último envío correcto, el comando termina de inmediato con ✓ Nothing to push. — sin ida y vuelta al servidor y sin consumir tokens.
Argumentos y opciones#
Posicional: patterns... — envío acotado#
lingo push docs/en/about.md
lingo push 'docs/en/**/*.md' 'locales/en.json'Restringe el envío a archivos concretos (deben coincidir con patrones ya definidos en .lingo/config.json). Cambia el comando al modo acotado:
- Sin diff respecto a fuentes anteriores: toda fuente coincidente se considera dentro del alcance, aunque no haya cambiado.
- No-op en el servidor para los destinos que ya existen con hashes de fuente coincidentes: el motor los omite y la CLI los muestra como almacenados en caché.
Úsalo cuando quieras traducir exactamente un archivo actualizado sin volver a calcular el hash de todo el proyecto, o cuando quieras retraducir una sola página con --force.
--force / -f#
lingo push docs/en/about.md --forceRetraduce todos los destinos que coincidan, ignorando cualquier traducción existente y saltándose la caché del servidor. Requiere un alcance: patrones posicionales o --backfill-missing. lingo push --force por sí solo se rechaza porque retraduciría todo el proyecto.
Por defecto, --force pide confirmación antes de ejecutarse:
! --force will retranslate every target for pattern(s): docs/en/about.md and
overwrite existing translations. Continue? (Yes, retranslate / Cancel)Pasa --yes / -y para omitir la confirmación (ideal para CI).
--backfill-missing#
lingo push --backfill-missingTraduce todos los destinos que todavía no existen en todos los patrones configurados. Equivale a un envío acotado sobre todos los patrones de la configuración, pero solo genera archivos donde faltan. Úsalo después de añadir un nuevo idioma a targetLocales o en el primer envío de un proyecto nuevo.
Combínalo con --force para retraducirlo todo desde cero:
lingo push --backfill-missing --force --yes--yes / -y#
Omite la confirmación de --force. No tiene efecto sin --force.
Salida#
Si todo va bien:
Pushing source files to localization engine…
✓ Run run_a8c...: localized 12 target file(s), 4 already up-to-date, uploaded 1 new artifact(s).El resumen se desglosa así:
- N archivo(s) de destino localizados — el motor generó nuevas traducciones y la CLI las escribió.
- N ya actualizados — aciertos de caché en el servidor (la fuente coincidía y se reutilizó el destino).
- N artefacto(s) nuevos subidos — fuentes que el motor no había visto antes (contenido binario o de gran tamaño que se almacena una vez y después se referencia).
- N destino(s) omitidos (ediciones locales) — los hashes locales de los destinos difieren del lockfile. Vuelve a ejecutar con
--forcepara sobrescribirlos.
Si falla un destino concreto, la CLI muestra el error de cada destino fallido y sale con un código distinto de cero — útil para CI:
✓ Run run_a8c...: localized 10 target file(s).
2 target(s) failed:
locales/de.json: rate limit on engine; retry later
locales/fr.json: timeoutSemántica de los reintentos#
El lockfile se actualiza solo después de una ejecución completamente correcta. Un fallo parcial (por ejemplo, si un idioma agota el tiempo de espera) deja sin cambios los hashes de las fuentes en el lockfile, así que el siguiente lingo push reintenta el mismo diff — sin necesidad de reinicio manual.
Si el motor devuelve un error antes de que se produzca ninguna traducción (autenticación, validación), no se escribe nada y el lockfile no cambia.
Patrones habituales#
CI: traducir al fusionar#
- run: lingo push --backfill-missing --yes
- run: git add . && git commit -m "chore: refresh translations" && git push--backfill-missing es la opción segura por defecto: no sobrescribe nada, solo rellena los huecos.
Iteración sobre un único archivo#
lingo push docs/en/onboarding.md -f -yRetraduce una sola fuente después de un cambio importante en el texto. Omite la confirmación para iterar más rápido.
Añadir un nuevo idioma#
Después de ampliar targetLocales en .lingo/config.json:
lingo push --backfill-missingTraduce todo el corpus al nuevo idioma sin retraducir los ya existentes.
