Ingeniería//15 min de lectura

CI/CD para Localización: Automatizando Traducciones en tu Pipeline de Deployment

Eray Gündoğmuş
Compartir

CI/CD para Localización: Automatizando Traducciones en tu Pipeline de Deployment

Conclusiones Clave

  • La integración CI/CD elimina la gestión manual de archivos de traducción y garantiza que las traducciones se entreguen con cada deployment
  • La extracción y validación automatizada de strings detecta traducciones faltantes antes de que lleguen a producción
  • Los builds activados por webhooks permiten la localización continua — las traducciones se publican en cuanto son aprobadas
  • Las verificaciones pre-merge pueden bloquear PRs con strings sin traducir, evitando que localizaciones incompletas lleguen a producción

¿Por qué Automatizar la Localización en CI/CD?

Los flujos de trabajo manuales de localización crean cuellos de botella:

  • Los desarrolladores olvidan subir nuevos strings al TMS
  • Los archivos traducidos esperan en el TMS hasta que alguien los descargue
  • Los conflictos de merge surgen por la colocación manual de archivos
  • Las traducciones faltantes se cuelan en producción

La automatización CI/CD resuelve estos problemas convirtiendo la sincronización de traducciones en una parte estándar de cada build y deployment.

Arquitectura del Pipeline

Code Push → CI Triggered → Extract Strings → Push to TMS
                                                  ↓
Production ← Deploy ← Build ← Pull Translations ← Translations Complete (webhook)

Implementación con GitHub Actions

En Pull Request: Validar Traducciones

name: Translation Check
on: pull_request

jobs:
  check-translations:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Scan for new strings
        run: npx better-i18n scan --check
        # Falla si se encuentran strings sin traducir

      - name: Validate translation files
        run: npx better-i18n validate
        # Verifica sintaxis JSON, claves faltantes, consistencia de marcadores

En Merge a Main: Sincronizar y Deployer

name: Deploy with Translations
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Push new strings to TMS
        run: npx better-i18n push
        env:
          BETTER_I18N_TOKEN: ${{ secrets.BETTER_I18N_TOKEN }}

      - name: Pull latest translations
        run: npx better-i18n pull --all

      - name: Build
        run: npm run build

      - name: Deploy
        run: npm run deploy

Al Completar Traducción: Build Activado por Webhook

name: Translation Update
on:
  repository_dispatch:
    types: [translations-updated]

jobs:
  rebuild:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npx better-i18n pull --all
      - run: npm run build
      - run: npm run deploy

Verificaciones de Validación Automatizadas

Incorpora estas verificaciones en tu CI Pipeline:

VerificaciónQué DetectaCuándo Ejecutar
Traducciones faltantesClaves sin traducciones en locales destinoVerificación PR
Consistencia de marcadores{name} en origen pero {nom} en traducciónVerificación PR
Sintaxis JSON/XLIFFArchivos de traducción malformadosCada build
Longitud de stringTraducciones que exceden límites de caracteres en la UIVerificación PR
Claves sin usarClaves de traducción ya no referenciadas en el códigoProgramado semanal

Manejo de Traducciones Incompletas

No todas las traducciones estarán completas al momento del deployment. Estrategias:

  1. Fallback al idioma fuente — Mostrar inglés si falta la traducción (la más común)
  2. Bloquear deployment — Solo deployer cuando todos los locales destino están 100% traducidos (la más estricta)
  3. Umbral de porcentaje — Deployer si el locale está >90% traducido, bloquear si está por debajo
  4. Prioridad por clave — Los strings críticos de UI deben traducirse, los no críticos pueden hacer fallback

Preguntas Frecuentes

¿Debo hacer commit de los archivos de traducción en git? Sí. Hacer commit de los archivos de traducción garantiza que los builds funcionen incluso si la API del TMS no está disponible. El CI Pipeline obtiene traducciones actualizadas y hace commit de los cambios automáticamente.

¿Cómo evito conflictos de merge en archivos de traducción? Usa el TMS como fuente de verdad. CI obtiene traducciones frescas en cada build, sobreescribiendo archivos locales. Los desarrolladores nunca editan los archivos de traducción manualmente.

¿Qué hago si las traducciones no están listas cuando necesito deployer? Usa estrategias de fallback (mostrar idioma fuente para strings no traducidos). Monitorea el porcentaje de completitud de traducción y configura alertas cuando caiga por debajo del umbral.

¿Cómo gestiono el desarrollo basado en ramas? Pusha strings de feature branches a namespaces o ramas separadas del TMS. Fusiona las traducciones cuando el feature branch se fusiona con main.

¿Puedo ejecutar CI/CD de localización para aplicaciones móviles también? Sí. Los mismos principios aplican — push de strings al TMS, pull de traducciones durante el build, validar antes del lanzamiento. Específico para móvil: incluir metadatos ASO en el pipeline y validar formatos de archivo .strings/.xml.

Comments

Loading comments...