GitHub Actions

Traducción con IA mediante GitHub Actions y Lingo.dev CI/CD

¿Qué es GitHub Actions?

GitHub Actions es una plataforma de CI/CD y automatización integrada en GitHub. Permite a los usuarios definir flujos de trabajo en archivos YAML para compilar, probar y desplegar código o automatizar tareas activadas por eventos del repositorio.

¿Qué es Lingo.dev CI/CD?

Lingo.dev CI/CD es una herramienta impulsada por IA para localizar aplicaciones y contenido en CI/CD, garantizando que las traducciones nunca queden desactualizadas. Para GitHub, Lingo.dev proporciona una GitHub Action personalizada que simplifica la integración.

Acerca de esta guía

Esta guía explica cómo configurar Lingo.dev CI/CD con la GitHub Action de Lingo.dev y Lingo.dev Engine.

Paso 1. Configurar Lingo.dev CLI

Para comenzar, sigue el inicio rápido de Lingo.dev CLI.

Deberías terminar con:

  • una clave API para Lingo.dev
  • un archivo i18n.json que configura el comportamiento de un pipeline de traducción
  • la capacidad de traducir contenido con npx lingo.dev@latest run

Paso 2. Configurar un secreto del repositorio

  1. Navega a Settings > Secrets and variables > Actions.
  2. Haz clic en New repository secret.
  3. En el campo Name, introduce LINGODOTDEV_API_KEY.
  4. En el campo Secret, introduce una clave API de Lingo.dev.
  5. Haz clic en Add secret.

Paso 3. Elegir un flujo de trabajo

Puedes configurar Lingo.dev CI/CD de diferentes maneras para soportar distintos flujos de trabajo. Estos son algunos de los flujos de trabajo que recomendamos (y para los que proporcionamos ejemplos):

  • Cuando el contenido se fusiona en main, realiza commits de traducciones a main
  • Cuando el contenido se fusiona en main, crea un pull request desde main
  • Cuando el contenido se fusiona en una rama de funcionalidad, realiza commits de traducciones a la rama
  • Cuando el contenido se fusiona en una rama de funcionalidad, crea un pull request desde la rama

Pero no existe un flujo de trabajo "mejor". Todos tienen ventajas y desventajas. Si no estás seguro de por dónde empezar, recomendamos comenzar con la primera opción. Es el flujo de trabajo más simple e invisible.

Paso 4. Configurar el flujo de trabajo

  1. En el repositorio, crea un directorio .github/workflows:

    mkdir -p .github/workflows
    

    Asegúrate de incluir el . al inicio de .github.

  2. En el directorio .github/workflows, crea un archivo YAML:

    touch .github/workflows/translate.yml
    

    El nombre del archivo no es importante.

  3. Copia uno de los flujos de trabajo de ejemplo en el archivo.

  4. Si el flujo de trabajo crea pull requests:

    1. Navega a Configuración > Acciones > General.
    2. Habilita Permitir que GitHub Actions cree y apruebe pull requests.
    3. Haz clic en Guardar.
  5. Confirma y envía los cambios a la rama main:

    git add  .github/workflows/translate.yml
    git commit -m "feat: GitHub action for Lingo.dev"
    git push
    

(Opcional) Paso 5. Personalizar el flujo de trabajo

Lingo.dev CI/CD tiene valores predeterminados que, en la mayoría de los casos, no necesitan personalizarse. Puedes sobrescribirlos pasando entradas a la GitHub Action:

Entradas disponibles:

  • version: versión de Lingo.dev CLI (predeterminado: "latest")
  • api-key: clave de API de Lingo.dev Platform (requerido)
  • pull-request: crear un pull request con los cambios (predeterminado: false)
  • commit-message: mensaje de commit personalizado (predeterminado: "feat: update translations via @LingoDotDev")
  • pull-request-title: título de pull request personalizado (predeterminado: "feat: update translations via @LingoDotDev")
  • commit-author-name: nombre del autor del commit de Git (predeterminado: "Lingo.dev")
  • commit-author-email: correo electrónico del autor del commit de Git (predeterminado: "[email protected]")
  • working-directory: directorio de trabajo (predeterminado: ".")
  • process-own-commits: procesar commits realizados por esta acción (predeterminado: false)
  • parallel: ejecutar en modo paralelo (predeterminado: false)

Ejemplo con entradas personalizadas:

- name: Lingo.dev
  uses: lingodotdev/lingo.dev@main
  with:
    api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
    commit-message: "My custom commit message!"
    parallel: true

Flujos de trabajo de ejemplo

Confirmar en main

Cuando el contenido se fusiona en main, hacer commit de las traducciones a main.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

Ver en GitHub

Solicitud de extracción desde main

Cuando el contenido se fusiona en main, crear una solicitud de extracción desde main.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Ver en GitHub

Commit a rama de características

Cuando el contenido se fusiona en una rama de características, hacer commit de las traducciones a la rama.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

Ver en Github

Solicitud de extracción desde rama de características

Cuando el contenido se fusiona en una rama de características, crear una solicitud de extracción desde la rama.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Ver en GitHub