Patrones avanzados para localización en CI/CD: elección de flujo de trabajo, comprobación 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 distintos trade-offs en automatización, carga de revisión e higiene de ramas.
| Flujo de trabajo | Ideal para | Trade-off |
|---|---|---|
| Commit a main | Equipos pequeños, actualizaciones sin fricción | Sin paso de revisión para las traducciones |
| PR desde main | Equipos que quieren revisar las traducciones | Requiere aprobación manual del PR |
| Commit a feature branch | Feature branches de larga duración | Commits de traducción en el historial de la rama |
| PR desde feature branch | Máximo control por funcionalidad | Hay que gestionar varios PR por funcionalidad |
Si no estás seguro, empieza con "Commit a main". Es el flujo de trabajo más simple y evita por completo los conflictos de merge, ya que no hay divergencia entre ramas.
Comprobar que las traducciones estén completas#
La bandera --frozen verifica que todo el contenido esté traducido sin generar nuevas traducciones. Devuelve un código de salida distinto de cero si falta contenido:
npx lingo.dev@latest run --frozenÚsala como control de despliegue para evitar publicar contenido sin traducir.
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: 20
- run: npx lingo.dev@latest run --frozenResolver conflictos de merge#
Los conflictos de merge ocurren cuando el archivo i18n.lock 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 feature branches 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 i18n.lockCompleta el merge
git add .
git merge --continueRegenera el lockfile
npx lingo.dev@latest lockfile --forceEsto reconstruye el lockfile a partir del estado actual de tus archivos fuente sin activar nuevas traducciones.
Resolución mediante rebase#
El mismo enfoque funciona con rebase: elimina i18n.lock en cada paso del conflicto, continúa el rebase y luego regenera el lockfile al final:
git rebase <branch-name>
# On each conflict: rm i18n.lock && git add . && git rebase --continue
npx lingo.dev@latest lockfile --force