Padrões avançados de localização em CI/CD — escolha de workflow, verificação da completude das traduções e resolução de conflitos de merge.
Escolher um workflow#
Há quatro padrões de workflow que cobrem a maioria das configurações de equipa. Cada um implica diferentes compromissos ao nível da automação, do esforço de revisão e da higiene dos branches.
| Workflow | Ideal para | Compromisso |
|---|---|---|
| Commit na main | Equipas pequenas, atualizações sem fricção | Sem etapa de revisão para as traduções |
| PR a partir da main | Equipas que querem rever as traduções | Requer aprovação manual do PR |
| Commit no branch de funcionalidade | Branches de funcionalidade de longa duração | Commits de tradução no histórico do branch |
| PR a partir do branch de funcionalidade | Controlo máximo por funcionalidade | Vários PRs por funcionalidade para gerir |
Se tiver dúvidas, comece por "Commit na main". É o workflow mais simples e evita por completo os conflitos de merge, já que não existe divergência entre branches.
Verificar se as traduções estão completas#
A flag --frozen verifica se todo o conteúdo está traduzido sem gerar novas traduções. Termina com um código de estado diferente de zero se houver conteúdo em falta:
npx lingo.dev@latest run --frozenUse isto como barreira de deployment para evitar lançar conteúdo por traduzir.
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: 20
- run: npx lingo.dev@latest run --frozenResolver conflitos de merge#
Os conflitos de merge surgem quando o ficheiro i18n.lock 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 branches de funcionalidade para as traduções) elimina por completo os conflitos no lockfile.
Resolução por merge#
Iniciar o merge
git merge <branch-name>Eliminar o lockfile em conflito
rm i18n.lockConcluir o merge
git add .
git merge --continueRegenerar o lockfile
npx lingo.dev@latest lockfile --forceIsto recria o lockfile a partir do estado atual dos seus ficheiros de origem sem acionar novas traduções.
Resolução por rebase#
A mesma abordagem funciona com rebase — elimine i18n.lock em cada etapa de conflito, continue o rebase e, no fim, regenere o lockfile:
git rebase <branch-name>
# On each conflict: rm i18n.lock && git add . && git rebase --continue
npx lingo.dev@latest lockfile --force