GitHub Actions

KI-Übersetzung mit GitHub Actions und Lingo.dev CI/CD

Was ist GitHub Actions?

GitHub Actions ist eine in GitHub integrierte CI/CD- und Automatisierungsplattform. Sie ermöglicht es Benutzern, Workflows in YAML-Dateien zu definieren, um Code zu erstellen, zu testen und bereitzustellen oder Aufgaben zu automatisieren, die durch Repository-Ereignisse ausgelöst werden.

Was ist Lingo.dev CI/CD?

Lingo.dev CI/CD ist ein KI-gestütztes Tool zur Lokalisierung von Apps und Inhalten in CI/CD, das sicherstellt, dass Übersetzungen niemals veralten. Für GitHub stellt Lingo.dev eine benutzerdefinierte GitHub Action bereit, die die Integration vereinfacht.

Über diesen Leitfaden

Dieser Leitfaden erklärt, wie Sie Lingo.dev CI/CD mit der Lingo.dev GitHub Action und Lingo.dev Engine einrichten.

Schritt 1. Lingo.dev CLI einrichten

Folgen Sie zunächst dem Quickstart für Lingo.dev CLI.

Sie sollten am Ende Folgendes haben:

  • einen API-Schlüssel für Lingo.dev
  • eine i18n.jsonDatei, die das Verhalten einer Übersetzungspipeline konfiguriert
  • die Möglichkeit, Inhalte mit npx lingo.dev@latest run zu übersetzen

Schritt 2. Repository-Secret konfigurieren

  1. Navigieren Sie zu Settings > Secrets and variables > Actions.
  2. Klicken Sie auf New repository secret.
  3. Geben Sie im Feld Name LINGODOTDEV_API_KEY ein.
  4. Geben Sie im Feld Secret einen Lingo.dev API-Schlüssel ein.
  5. Klicken Sie auf Add secret.

Schritt 3. Workflow auswählen

Sie können Lingo.dev CI/CD auf verschiedene Arten einrichten, um unterschiedliche Workflows zu unterstützen. Dies sind einige der Workflows, die wir empfehlen (und für die wir Beispiele bereitstellen):

  • Wenn Inhalte in main zusammengeführt werden, werden Übersetzungen in main committet
  • Wenn Inhalte in main zusammengeführt werden, wird ein Pull Request von main erstellt
  • Wenn Inhalte in einen Feature-Branch gemergt werden, werden Übersetzungen in den Branch committet
  • Wenn Inhalte in einen Feature-Branch gemergt werden, wird ein Pull Request vom Branch erstellt

Es gibt jedoch keinen "besten" Workflow. Alle haben Kompromisse. Wenn Sie nicht sicher sind, wo Sie beginnen sollen, empfehlen wir, mit der ersten Option zu starten. Es ist der einfachste und unauffälligste Workflow.

Schritt 4. Den Workflow einrichten

  1. Erstellen Sie im Repository ein .github/workflows Verzeichnis:

    mkdir -p .github/workflows
    

    Stellen Sie sicher, dass Sie den . am Anfang von .github einfügen.

  2. Erstellen Sie im .github/workflows Verzeichnis eine YAML-Datei:

    touch .github/workflows/translate.yml
    

    Der Name der Datei ist nicht wichtig.

  3. Kopieren Sie einen der Beispiel-Workflows in die Datei.

  4. Wenn der Workflow Pull Requests erstellt:

    1. Navigieren Sie zu Settings > Actions > General.
    2. Aktivieren Sie Allow GitHub Actions to create and approve pull requests.
    3. Klicken Sie auf Save.
  5. Committen und pushen Sie die Änderungen zum main Branch:

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

(Optional) Schritt 5. Den Workflow anpassen

Lingo.dev CI/CD hat Standardwerte, die in den meisten Fällen nicht angepasst werden müssen. Sie können diese überschreiben, indem Sie Inputs an die GitHub Action übergeben:

Verfügbare Inputs:

  • version: Lingo.dev CLI-Version (Standard: "latest")
  • api-key: Lingo.dev Platform API Key (erforderlich)
  • pull-request: Einen Pull Request mit Änderungen erstellen (Standard: false)
  • commit-message: Benutzerdefinierte Commit-Nachricht (Standard: "feat: update translations via @LingoDotDev")
  • pull-request-title: Benutzerdefinierter Pull Request-Titel (Standard: "feat: update translations via @LingoDotDev")
  • commit-author-name: Git Commit-Autor-Name (Standard: "Lingo.dev")
  • commit-author-email: Git Commit-Autor-E-Mail (Standard: "[email protected]")
  • working-directory: Arbeitsverzeichnis (Standard: ".")
  • process-own-commits: Commits verarbeiten, die von dieser Action erstellt wurden (Standard: false)
  • parallel: Im Parallel-Modus ausführen (Standard: false)

Beispiel mit benutzerdefinierten Inputs:

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

Beispiel-Workflows

Commit zu main

Wenn Inhalte in main zusammengeführt werden, Übersetzungen in main committen.

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

Auf GitHub ansehen

Pull Request von main

Wenn Inhalte in main zusammengeführt werden, einen Pull Request von main erstellen.

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

Auf GitHub ansehen

Commit in Feature-Branch

Wenn Inhalte in einen Feature-Branch zusammengeführt werden, Übersetzungen in den Branch committen.

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

Auf GitHub ansehen

Pull Request von Feature-Branch

Wenn Inhalte in einen Feature-Branch zusammengeführt werden, einen Pull Request vom Branch erstellen.

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

Auf GitHub ansehen