Padrões avançados de localização em CI/CD — escolha de workflow, verificação da integridade das traduções e resolução de conflitos de merge.
Escolhendo um workflow#
Quatro padrões de workflow atendem à maioria das estruturas de equipe. Cada um traz trade-offs diferentes em automação, esforço de revisão e organização das branches.
| Workflow | Ideal para | Trade-off |
|---|---|---|
| Commit na main | Equipes pequenas, atualizações sem atrito | Sem etapa de revisão para traduções |
| PR a partir da main | Equipes que querem revisar as traduções | Exige aprovação manual do PR |
| Commit na feature branch | Feature branches de longa duração | Commits de tradução no histórico da branch |
| PR a partir da feature branch | Máximo controle por funcionalidade | Vários PRs por funcionalidade para gerenciar |
No GitHub, o Lingo.dev GitHub App cuida da maior parte desses padrões para você no servidor: ele reage a pushes e PRs, faz commit das traduções de volta e não exige runner nem secret. Recorra aos padrões de CLI abaixo quando a localização rodar no seu próprio pipeline.
Se estiver em dúvida, comece com "Commit na main". É o workflow mais simples e evita totalmente conflitos de merge, já que não há divergência entre branches.
Verificando a integridade das traduções#
O comando lingo check verifica se todo o conteúdo foi traduzido sem gerar novas traduções. Ele retorna um código de status diferente de zero se houver conteúdo faltando:
lingo checkUse isso como gate de deploy para evitar publicar conteúdo sem tradução. Instale a CLI com npm install -g @lingo.dev/cli (Node 22+) e autentique o runner com a variável de ambiente 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 }}Resolvendo conflitos de merge#
Conflitos de merge acontecem quando o arquivo .lingo/lock.json diverge entre branches — normalmente quando as traduções são atualizadas de forma independente em branches diferentes.
Prevenção#
Fazer commit das traduções diretamente em main (em vez de usar feature branches para traduções) elimina por completo os conflitos no lockfile.
Resolução via merge#
Inicie o merge
git merge <branch-name>Exclua o lockfile em conflito
rm .lingo/lock.jsonConclua o merge
git add .
git merge --continueRegenere o lockfile
lingo pushAo executar lingo push, .lingo/lock.json é recriado com base no estado atual dos seus arquivos-fonte, como parte da sincronização normal.
Resolução via rebase#
A mesma abordagem funciona com rebase: exclua .lingo/lock.json em cada etapa de conflito, continue o rebase e, ao final, execute lingo push para regenerar o lockfile:
git rebase <branch-name>
# On each conflict: rm .lingo/lock.json && git add . && git rebase --continue
lingo push