CLI od Lingo.dev běží v libovolném CI/CD prostředí s Node.js. Přidejte ho jako krok do pipeline a překládejte při každém pushi – lockfile zajistí, že se zpracují jen změněné řetězce, takže překlady zůstávají rychlé a nákladově efektivní i s růstem projektu.
Na GitHubu? Máte dvě možnosti
GitHub App je na GitHubu nejjednodušší volba – nainstalujete ji jednou a na push i pull requesty reaguje automaticky. Nepotřebujete runner, secret s API klíčem ani lockfile; repozitář nastavíte pomocí .lingo/config.json a engineId.
GitHub Action a ostatní integrace níže spouštějí CLI přímo ve vaší vlastní pipeline pomocí i18n.json, i18n.lock lockfile a secretu LINGODOTDEV_API_KEY. Tuhle cestu zvolte, pokud chcete překlady spouštět spolu s ostatními CI kroky nebo pokud nejste na GitHubu.
Zbytek této příručky se věnuje GitHub Action a CLI.
Jak to funguje#
CI/CD pipeline spustí CLI jako krok po checkoutu. CLI načte vaši konfiguraci i18n.json, porovná zdrojové soubory s lockfile a identifikuje změny, přeloží rozdíl přes nakonfigurovaný lokalizační engine a zapíše výsledky do souborů cílového jazyka. Pipeline potom přeložené soubory commitne nebo otevře pull request – podle toho, jaký workflow preferujete.
Vyberte si workflow#
Čtyři workflow pokrývají většinu týmových uspořádání. Začněte tím nejjednodušším a přejděte na pokročilejší variantu, až váš tým poroste.
| Workflow | Jak funguje | Ideální pro | Nevýhoda |
|---|---|---|---|
| Commit do mainu | Přeloží a commitne přímo do mainu | Malé týmy, bez zbytečného tření | Bez kroku pro kontrolu překladů |
| PR z mainu | Přeloží a otevře PR ke kontrole | Týmy, které překlady kontrolují | Vyžaduje ruční schválení PR |
| Commit do feature branche | Překládá při pushi do feature branche | Dlouho žijící feature branche | Commit s překlady zůstane v historii branche |
| PR z feature branche | Přeloží a otevře PR z feature branche | Maximální kontrola nad každou feature | Více PR na jednu feature |
Doporučení na začátek
Commit do mainu funguje dobře pro většinu týmů. Překlady se nasazují s každým pushem, lockfile zajišťuje konzistenci a o kvalitu se starají pravidla glosáře a hlasu značky v lokalizačním engine. Na workflow založené na PR přejděte ve chvíli, kdy potřebujete lidskou kontrolu překladů.
Rychlé nastavení#
Uložte API klíč Lingo.dev jako CI/CD secret a potom do pipeline přidejte krok pro překlad.
Lingo.dev nabízí oficiální GitHub Action, která se postará o checkout, překlad i vytvoření commitu nebo PR.
Nechcete spravovat workflow soubor, secret s API klíčem ani lockfile? GitHub App zajišťuje průběžnou lokalizaci na GitHubu bez ničeho z toho – stačí ji jednou nainstalovat a nastavit .lingo/config.json.
Commit do mainu:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}PR z mainu – přidejte pull-request: true a GH_TOKEN:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ github.token }}Podívejte se na kompletní příručku k integraci GitHub Actions, kde najdete workflow pro feature branche, vlastní commit messages, podporu monorepa i GPG podepisování.
Ověření překladů#
Flag --frozen i lockfile jsou součástí GitHub Action a CLI. GitHub App sleduje stav překladů na straně serveru a nemá lockfile ani ekvivalent --frozen.
Použijte flag --frozen jako podmínku pro nasazení, aby se do produkce nedostal žádný nepřeložený obsah. Pokud některé řetězce potřebují překlad, CLI skončí s nenulovým stavovým kódem.
npx lingo.dev@latest run --frozenPřidejte to jako samostatný krok pipeline, který poběží před nasazením:
- name: Verify translations
run: npx lingo.dev@latest run --frozenWorkflow pro monorepo#
U monorep s více balíčky, z nichž každý má vlastní soubory s překlady, použijte volbu working-directory a zacílete na konkrétní balíčky:
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
working-directory: apps/webKonflikty při merge#
Tohle platí pro GitHub Action i CLI. GitHub App lockfile nepoužívá, takže neřeší konflikty i18n.lock.
Lockfile (i18n.lock) může při merge větví se změnami v překladech způsobit konflikt. Řešení je jednoduché – smažte konfliktní lockfile, dokončete merge a pak ho znovu vygenerujte:
git merge feature-branch
rm i18n.lock
git add .
git merge --continue
npx lingo.dev@latest lockfile --forcePříkaz lockfile --force znovu sestaví lockfile z aktuálního stavu zdrojových souborů, aniž by spouštěl nové překlady. Postupy založené na rebase a strategie, jak konfliktům předcházet, najdete v příručce pokročilé integrační vzory.
