|
Documentación
Agenda una demoPlataforma
PlataformaMCPCLIAPIFlujos de trabajo
Guías
Registro de cambios

Localización

  • Resumen
  • API de traducción
  • Localización de apps web
  • Localización de apps móviles
  • iOS con String Catalogs
  • Android con strings.xml
  • Localización de emails
  • Contenido estático (p. ej., .md, .json)
  • Next.js con Markdoc
  • Rails con i18n

Flujos de trabajo

  • Configuración del motor con MCP
  • Triaje de Jira
  • CI/CD

Flujos de trabajo de localización en CI/CD

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 trabajoCómo funcionaIdeal paraTrade-off
Commit a mainTraduce y hace commit directo a mainEquipos pequeños, cero fricciónSin paso de revisión para las traducciones
PR desde mainTraduce y abre un PR para revisiónEquipos que revisan traduccionesRequiere aprobación manual del PR
Commit a feature branchTraduce al hacer push a la feature branchFeature branches de larga duraciónCommits de traducción en el historial de la rama
PR desde feature branchTraduce y abre un PR desde la feature branchMáximo control por funcionalidadVarios 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:

yaml
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:

yaml
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.

bash
npx lingo.dev@latest run --frozen

Agrega esto como un paso independiente del pipeline antes del despliegue:

yaml
- name: Verify translations
  run: npx lingo.dev@latest run --frozen

Flujos 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:

yaml
- uses: lingodotdev/lingo.dev@main
  with:
    api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
    working-directory: apps/web

Conflictos 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:

bash
git merge feature-branch
rm i18n.lock
git add .
git merge --continue
npx lingo.dev@latest lockfile --force

El 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.

Siguientes pasos#

GitHub App
Localización continua administrada en GitHub, sin runner, secreto ni lockfile
GitHub Actions
Configuración completa de GitHub Actions con firma GPG y configuración personalizada
GitLab CI
Configuración completa de GitLab CI/CD con access tokens y merge requests
Bitbucket Pipelines
Configuración completa de Bitbucket Pipelines con pipes y pull requests
Patrones avanzados
Selección de flujo de trabajo, resolución de conflictos y compuertas de despliegue

¿Te resultó útil esta página?

Max PrilutskiyMax Prilutskiy·Actualizado hace 24 días·6 min de lectura