Fortgeschrittene Muster für CI/CD-Lokalisierung – Workflow-Auswahl, Vollständigkeitsprüfungen für Übersetzungen und das Beheben von Merge-Konflikten.
Den passenden Workflow wählen#
Vier Workflow-Muster decken die meisten Team-Setups ab. Jedes bringt eigene Abwägungen bei Automatisierung, Prüfungsaufwand und Branch-Hygiene mit sich.
| Workflow | Am besten geeignet für | Trade-off |
|---|---|---|
| Direkt in main committen | Kleine Teams, reibungslose Updates | Kein Prüfungsschritt für Übersetzungen |
| PR aus main | Teams, die Übersetzungen prüfen möchten | Erfordert manuelle PR-Freigabe |
| Direkt in den Feature-Branch committen | Langlebige Feature-Branches | Übersetzungs-Commits im Branch-Verlauf |
| PR aus dem Feature-Branch | Maximale Kontrolle pro Feature | Mehrere PRs pro Feature müssen verwaltet werden |
Auf GitHub übernimmt die Lingo.dev GitHub App die meisten dieser Muster serverseitig für dich: Sie reagiert auf Pushes und PRs, committet Übersetzungen zurück und benötigt weder Runner noch Secret. Greif zu den unten stehenden CLI-Mustern, wenn du die Lokalisierung in deiner eigenen Pipeline ausführst.
Wenn du unsicher bist, starte mit „Direkt in main committen“. Das ist der einfachste Workflow und verhindert Merge-Konflikte komplett, weil es keine auseinanderlaufenden Branches gibt.
Vollständigkeit von Übersetzungen prüfen#
Der Befehl lingo check prüft, ob alle Inhalte übersetzt sind, ohne neue Übersetzungen zu erzeugen. Fehlen Inhalte, wird er mit einem Statuscode ungleich null beendet:
lingo checkNutze das als Deployment-Gate, damit keine nicht übersetzten Inhalte ausgeliefert werden. Installiere die CLI mit npm install -g @lingo.dev/cli (Node 22+) und authentifiziere den Runner über die Umgebungsvariable LINGO_API_KEY.
name: Check translations
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm install -g @lingo.dev/cli
- run: lingo check
env:
LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}Merge-Konflikte beheben#
Merge-Konflikte entstehen, wenn die Datei .lingo/lock.json zwischen Branches auseinanderläuft – typischerweise dann, wenn Übersetzungen in verschiedenen Branches unabhängig voneinander aktualisiert werden.
Vorbeugung#
Wenn du Übersetzungen direkt in main committest (statt dafür Feature-Branches zu verwenden), vermeidest du Konflikte in der Lockfile vollständig.
Behebung per Merge#
Merge starten
git merge <branch-name>Die konfliktbehaftete Lockfile löschen
rm .lingo/lock.jsonMerge abschließen
git add .
git merge --continueLockfile neu generieren
lingo pushBeim Ausführen von lingo push wird .lingo/lock.json im Rahmen der normalen Synchronisierung aus dem aktuellen Stand deiner Quelldateien neu erstellt.
Behebung per Rebase#
Der gleiche Ansatz funktioniert auch beim Rebase: Lösche .lingo/lock.json bei jedem Konfliktschritt, setze den Rebase fort und führe am Ende lingo push aus, um die Lockfile neu zu erzeugen:
git rebase <branch-name>
# On each conflict: rm .lingo/lock.json && git add . && git rebase --continue
lingo push