La CLI de Lingo.dev funciona en cualquier entorno de CI/CD con Node.js. Agrégala como un paso del pipeline para traducir en cada push: el lockfile garantiza que solo se procesen las cadenas modificadas, para que las traducciones sigan siendo rápidas y rentables a medida que tu proyecto crece.
¿Usas GitHub? Tienes dos formas de ejecutarlo
La GitHub App es la opción más simple en GitHub: la instalas una sola vez y responde automáticamente a los pushes y pull requests. Sin runner, sin secreto de API key y sin lockfile; configuras el repositorio con .lingo/config.json y un engineId.
La GitHub Action y las demás integraciones de abajo ejecutan la CLI dentro de tu propio pipeline con i18n.json, un i18n.lock lockfile y un secreto LINGODOTDEV_API_KEY. Elige esta opción cuando quieras que la traducción corra junto con otros pasos de CI, o si no usas GitHub.
El resto de esta guía cubre GitHub Action y la CLI.
Cómo funciona#
El pipeline de CI/CD ejecuta la CLI como un paso después del checkout. La CLI lee tu configuración de i18n.json, compara los archivos fuente con el lockfile para detectar cambios, traduce el delta a través de un motor de localización configurado y escribe los resultados en los archivos del idioma de destino. Después, el pipeline hace commit de los archivos traducidos o abre un pull request, según la opción de flujo de trabajo que prefieras.
Elige tu flujo de trabajo#
Cuatro patrones de flujo de trabajo cubren la mayoría de las estructuras de equipo. Empieza con el más simple y evoluciona a medida que tu equipo crece.
| Flujo de trabajo | Cómo funciona | Ideal para | Trade-off |
|---|---|---|---|
| Commit a main | Traduce y hace commit directo a main | Equipos pequeños, cero fricción | Sin paso de revisión para las traducciones |
| PR desde main | Traduce y abre un PR para revisión | Equipos que revisan traducciones | Requiere aprobación manual del PR |
| Commit a feature branch | Traduce al hacer push a la feature branch | Feature branches de larga duración | Commits de traducción en el historial de la rama |
| PR desde feature branch | Traduce y abre un PR desde la feature branch | Máximo control por funcionalidad | Varios PR por funcionalidad |
Recomendación para empezar
Hacer commit a main funciona bien para la mayoría de los equipos. Las traducciones se entregan con cada push, el lockfile garantiza consistencia y las reglas de glosario y voz de marca del motor de localización se encargan de la calidad. Pásate a flujos de trabajo basados en PR cuando necesites revisión humana de las traducciones.
Configuración rápida#
Guarda tu API key de Lingo.dev como un secreto de CI/CD y luego agrega el paso de traducción a tu pipeline.
Lingo.dev ofrece una GitHub Action oficial que se encarga del checkout, la traducción y la creación del commit o PR.
¿Prefieres no administrar un archivo de flujo de trabajo, un secreto de API key o un lockfile? La GitHub App hace localización continua en GitHub sin nada de eso: instálala una vez y configura .lingo/config.json.
Commit a main:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}PR desde main - agrega pull-request: true y un GH_TOKEN:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ github.token }}Consulta la guía completa de integración con GitHub Actions para flujos de trabajo con feature branches, mensajes de commit personalizados, soporte para monorepos y firma GPG.
Verificación de traducción#
La opción --frozen y el lockfile forman parte de GitHub Action y la CLI. La GitHub App rastrea el estado de la traducción del lado del servidor y no tiene lockfile ni un equivalente de --frozen.
Usa la opción --frozen como compuerta de despliegue para garantizar que no llegue contenido sin traducir a producción. La CLI termina con un estado distinto de cero si alguna cadena necesita traducción.
npx lingo.dev@latest run --frozenAgrega esto como un paso independiente del pipeline antes del despliegue:
- name: Verify translations
run: npx lingo.dev@latest run --frozenFlujos de trabajo para monorepos#
Para monorepos con varios paquetes, cada uno con sus propios archivos de traducción, usa la opción working-directory para apuntar a paquetes específicos:
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
working-directory: apps/webConflictos de merge#
Esto aplica a GitHub Action y la CLI. La GitHub App no usa lockfile, así que no tiene conflictos de i18n.lock que resolver.
El lockfile (i18n.lock) puede generar conflictos cuando se fusionan ramas con cambios de traducción. La solución es simple: elimina el lockfile en conflicto, completa el merge y vuélvelo a generar:
git merge feature-branch
rm i18n.lock
git add .
git merge --continue
npx lingo.dev@latest lockfile --forceEl comando lockfile --force reconstruye el lockfile a partir del estado actual de tus archivos fuente sin activar nuevas traducciones. Consulta la guía de patrones avanzados de integración para ver estrategias de resolución basadas en rebase y prevención de conflictos.
