Patrones avanzados para la localización en CI/CD: elección del flujo de trabajo, comprobaciones de traducciones completas y resolución de conflictos de merge.
Cómo elegir un flujo de trabajo#
Estos cuatro patrones de flujo de trabajo cubren la mayoría de las configuraciones de equipo. Cada uno implica concesiones distintas en automatización, carga de revisión e higiene de ramas.
| Flujo de trabajo | Ideal para | Inconveniente |
|---|---|---|
| Commit en main | Equipos pequeños y actualizaciones sin fricción | No hay paso de revisión para las traducciones |
| PR desde main | Equipos que quieren revisar las traducciones | Requiere aprobar la PR manualmente |
| Commit en la rama de funcionalidad | Ramas de funcionalidad de larga duración | Commits de traducción en el historial de la rama |
| PR desde la rama de funcionalidad | Máximo control por funcionalidad | Hay que gestionar varias PR por funcionalidad |
En GitHub, la Lingo.dev GitHub App se encarga de la mayoría de estos patrones por ti desde el servidor: reacciona a los pushes y las PR, vuelve a subir las traducciones con un commit y no necesita runner ni secretos. Recurre a los patrones de CLI que verás a continuación cuando la localización se ejecute dentro de tu propio pipeline.
Si no estás seguro, empieza con "Commit en main". Es el flujo de trabajo más sencillo y evita por completo los conflictos de merge, ya que no hay divergencia entre ramas.
Comprobar que las traducciones están completas#
El comando lingo check comprueba que todo el contenido esté traducido sin generar traducciones nuevas. Devuelve un código de salida distinto de cero si falta contenido:
lingo checkÚsalo como puerta de despliegue para evitar publicar contenido sin traducir. Instala la CLI con npm install -g @lingo.dev/cli (Node 22+) y autentica el runner con una variable de entorno LINGO_API_KEY.
name: Check translations
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm install -g @lingo.dev/cli
- run: lingo check
env:
LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}Resolver conflictos de merge#
Los conflictos de merge aparecen cuando el archivo .lingo/lock.json diverge entre ramas, normalmente cuando las traducciones se actualizan de forma independiente en distintas ramas.
Prevención#
Hacer commit de las traducciones directamente en main (en lugar de usar ramas de funcionalidad para las traducciones) elimina por completo los conflictos del lockfile.
Resolución mediante merge#
Inicia el merge
git merge <branch-name>Elimina el lockfile en conflicto
rm .lingo/lock.jsonCompleta el merge
git add .
git merge --continueRegenera el lockfile
lingo pushAl ejecutar lingo push, se reconstruye .lingo/lock.json a partir del estado actual de tus archivos fuente como parte de la sincronización habitual.
Resolución mediante rebase#
El mismo enfoque también funciona con rebase: elimina .lingo/lock.json en cada paso del conflicto, continúa el rebase y, al final, ejecuta lingo push para regenerar el lockfile:
git rebase <branch-name>
# On each conflict: rm .lingo/lock.json && git add . && git rebase --continue
lingo push