GitHub Actions

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

Qu'est-ce que GitHub Actions ?

GitHub Actions est une plateforme CI/CD et d'automatisation intégrée à GitHub. Elle permet aux utilisateurs de définir des workflows dans des fichiers YAML pour compiler, 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 en CI/CD, garantissant que les traductions ne deviennent jamais obsolètes. Pour GitHub, Lingo.dev fournit une GitHub Action personnalisée qui simplifie l'intégration.

À propos de ce guide

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

Étape 1. Configurer Lingo.dev CLI

Pour commencer, suivez le Démarrage rapide pour Lingo.dev CLI.

Vous devriez obtenir :

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

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

  1. Accédez à 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-uns des workflows que nous recommandons (et pour lesquels nous fournissons des exemples) :

  • Lorsque du contenu est fusionné dans main, committer les traductions dans main
  • Lorsque du contenu est fusionné dans main, créer une pull request depuis main
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, committer les traductions dans la branche
  • Lorsque du contenu est fusionné dans une branche de fonctionnalité, créer une pull request depuis la branche

Mais il n'existe pas de workflow « idéal ». Tous présentent 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
    

    Veillez à 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'a pas d'importance.

  3. Copiez l'un des exemples de workflows dans le fichier.

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

    1. Accédez à Paramètres > Actions > Général.
    2. Activez Autoriser GitHub Actions à créer et approuver des pull requests.
    3. Cliquez sur Enregistrer.
  5. Validez 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
    

(Facultatif) É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 les remplacer en passant des paramètres à l'action GitHub :

Paramètres disponibles :

  • version : version de Lingo.dev CLI (par défaut : "latest")
  • api-key : clé API de la plateforme Lingo.dev (obligatoire)
  • pull-request : créer une pull request avec les modifications (par défaut : false)
  • commit-message : message de commit personnalisé (par défaut : "feat: update translations via @LingoDotDev")
  • pull-request-title : titre de pull request personnalisé (par défaut : "feat: update translations via @LingoDotDev")
  • commit-author-name : nom de l'auteur du commit Git (par défaut : "Lingo.dev")
  • commit-author-email : email de l'auteur du commit Git (par défaut : "[email protected]")
  • working-directory : répertoire de travail (par défaut : ".")
  • process-own-commits : traiter les commits effectués par cette action (par défaut : false)
  • parallel : exécuter en mode parallèle (par défaut : false)

Exemple avec des paramètres personnalisés :

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

Exemples de workflows

Commit vers main

Lorsque du contenu est fusionné dans main, commit des traductions dans 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 }}

Voir sur GitHub

Pull request depuis main

Lorsque du contenu est fusionné dans main, création d'une pull request à partir de 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 }}

Voir sur GitHub

Commit dans une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, commit des traductions dans la branche.

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 }}

Voir sur Github

Pull request depuis une branche de fonctionnalité

Lorsque du contenu est fusionné dans une branche de fonctionnalité, création d'une pull request à partir de la 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: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Voir sur GitHub