GitHub Actions

Traduction IA avec GitHub Actions et Lingo.dev CI/CD

Qu'est-ce que GitHub Actions ?

GitHub Actions est une plateforme de CI/CD et d'automatisation intégrée à GitHub. Elle permet aux utilisateurs de définir des workflows dans des fichiers YAML pour construire, tester et déployer du code ou automatiser des tâches déclenchées par des événements du dépôt.

Qu'est-ce que Lingo.dev CI/CD ?

Lingo.dev CI/CD est un outil alimenté par l'IA pour localiser des applications et du contenu dans un environnement CI/CD, garantissant que les traductions ne sont jamais obsolètes. Il est construit sur Lingo.dev CLI et disponible via la commande ci :

npx lingo.dev@latest ci --help

À propos de ce guide

Ce guide explique comment configurer Lingo.dev CI/CD avec GitHub Actions et Lingo.dev Engine.

Étape 1. Configurer Lingo.dev CLI

Pour commencer, suivez le Guide de démarrage rapide pour Lingo.dev CLI.

Vous devriez obtenir :

  • une clé API pour Lingo.dev
  • un fichier i18n.json qui configure le comportement d'un pipeline de traduction
  • la capacité de traduire du contenu avec npx lingo.dev@latest run

Étape 2. Configurer un secret de dépôt

  1. Naviguez vers Settings > Secrets and variables > Actions.
  2. Cliquez sur New repository secret.
  3. Dans le champ Name, saisissez LINGODOTDEV_API_KEY.
  4. Dans le champ Secret, saisissez une clé API Lingo.dev.
  5. Cliquez sur Add secret.

Étape 3. Choisir un workflow

Vous pouvez configurer Lingo.dev CI/CD de différentes manières pour prendre en charge différents workflows. Voici quelques workflows que nous recommandons (et pour lesquels nous fournissons des exemples) :

  • Lorsque du contenu est fusionné dans main, commit des traductions dans main
  • Lorsque du contenu est fusionné dans main, création d'une pull request à partir de main
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, commit des traductions dans la branche
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, création d'une pull request à partir de la branche

Mais il n'y a pas de workflow "idéal". Ils présentent tous des compromis. Si vous ne savez pas par où commencer, nous vous recommandons de débuter avec la première option. C'est le workflow le plus simple et le plus transparent.

Étape 4. Configurer le workflow

  1. Dans le dépôt, créez un répertoire .github/workflows :

    mkdir -p .github/workflows
    

    Assurez-vous d'inclure le . au début de .github.

  2. Dans le répertoire .github/workflows, créez un fichier YAML :

    touch .github/workflows/translate.yml
    

    Le nom du fichier n'est pas important.

  3. Copiez l'un des workflows d'exemple dans le fichier.

  4. Si le workflow crée des pull requests :

    1. Accédez à Settings > Actions > General.
    2. Activez Allow GitHub Actions to create and approve pull requests.
    3. Cliquez sur Save.
  5. Committez et poussez les modifications vers la branche main :

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

(Optionnel) Étape 5. Personnaliser le workflow

Lingo.dev CI/CD possède des valeurs par défaut qui, dans la plupart des cas, n'ont pas besoin d'être personnalisées. Vous pouvez, cependant, les remplacer en utilisant les flags CLI de la commande ci,

npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY" --commit-message "Mon message de commit personnalisé !"

Pour voir toutes les options disponibles, consultez Commandes CLI.

Workflows d'exemple

Commit vers main

Lorsque du contenu est fusionné dans main, les traductions sont committées vers main.

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev
        run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}

Voir sur GitHub

Pull request depuis main

Lorsque du contenu est fusionné dans main, une pull request est créée depuis 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: Run Lingo.dev
        run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Voir sur GitHub

Commit vers une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, les traductions sont commitées directement dans cette branche.

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Lingo.dev (commit to non-main)
        run: npx lingo.dev@latest ci --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}

Voir sur GitHub

Pull request depuis une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, une pull request est créée à partir de cette branche.

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: Run Lingo.dev
        run: npx lingo.dev@latest ci --pull-request --api-key "$LINGODOTDEV_API_KEY"
        env:
          LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Voir sur GitHub