Traduzir

Verifique traduções em GitHub Actions

Uma tradução que remove {name} ou pula uma chave quebra o app em tempo de execução, e a revisão raramente percebe. Este workflow roda kaeris check em cada pull request e deixa o job vermelho. É offline e gratuito: sem chave API, sem conta.

KAERIS traduziu esta página e verificou cada linha traduzindo-a de volta. Um falante nativo ainda não revisou. Original em inglês

A receita

O workflow

Salve como .github/workflows/i18n-check.yml. Altere source para seu arquivo base de idioma e languages para os locais que você distribui.

Configuração.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr

Sem Python: npx

O pacote npm kaeris executa a mesma verificação com Node 18 ou mais recente; o npx baixa o pacote sozinho, sem etapa de instalação. Ele tem só check: para traduzir é preciso o pacote Python.

Configuração.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npx kaeris check --source locales/en.json --langs de,fr

O mesmo sem o Action

Passos simples com Python e pip. O log então mostra cada achado linha a linha em vez da tabela que o Action imprime.

Configuração.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install kaeris
      - run: kaeris check --source locales/en.json --langs de,fr --ci

Achados na linha exata do pull request (opcional)

O Action também pode gerar um relatório SARIF; enviá-lo transforma cada achado em uma anotação no diff. Uploads de análise de código são gratuitos em repositórios públicos; privados precisam do GitHub Advanced Security.

Configuração.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
permissions:
  contents: read
  security-events: write
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr
          sarif-file: kaeris.sarif
      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: kaeris.sarif

O que ele imprime, em execuções reais

Saída do kaeris 0.2.35, capturada em 27 de outubro de 2026. A última linha de cada caixa é o código de saída que o job CI vê.

O que o job imprime

O Action imprime uma tabela resumo por idioma e termina com a linha de erro quando algo está errado. À esquerda: arquivos que estão corretos. À direita: de.json com {nam} em vez de {name} e a chave checkout faltando.

Arquivos que estão corretosAction step output
## KAERIS i18n — CI check

Placeholder-loss: **0** (should be 0).

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ✓ complete | 0 | 0 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
step exit=0
--- GITHUB_OUTPUT (without summary body):
missing=0
placeholder-issues=0
changed=false
check-exit-code=0
translate-exit-code=0
Uma tradução com erroAction step output
## KAERIS i18n — CI check

Placeholder-loss: **1** (should be 0).
Missing keys remaining: **1**.

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ⚠ 1 missing, 1 placeholder issue | 1 | 1 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
::error::kaeris check found incomplete/broken translations — see the job summary for the language matrix
step exit=1
--- GITHUB_OUTPUT (without summary body):
missing=1
placeholder-issues=1
changed=false
check-exit-code=1
translate-exit-code=0

O que a etapa com npx imprime

O mesmo projeto verificado com npx: kaeris 0.2.37 do npm, cache do npm vazio e CI=true, como em um runner novo. A primeira linha é o npm instalando o pacote.

Arquivos que estão corretosnpx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe
exit code: 0
Uma tradução com erronpx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✗ de: 1 missing key(s): checkout
✗ de: 1 placeholder mismatch(es):
    greeting: missing ['{name}'], added ['{nam}']
✗ de: 2 translation fault(s):
    greeting: lost placeholder {name}
    greeting: invented placeholder {nam} (not in source)
✓ fr: complete & placeholder-safe
✗ 1 missing key, 1 placeholder mismatch, 2 translation faults
exit code: 1

Configure em três passos

  1. Salve o workflow

    Crie .github/workflows/i18n-check.yml com o workflow acima, usando seu próprio source e languages.

  2. Abra um pull request

    Envie um branch que altere um arquivo de localidade. O job roda em todo pull request e fica vermelho se faltar um placeholder ou uma chave.

  3. Torne a verificação obrigatória

    Nas configurações do repositório, adicione o job como uma verificação de status obrigatória na proteção do branch. Um job vermelho bloqueia o merge.

Como verificamos isso

Todos os comandos desta página foram executados antes de serem escritos aqui. O que não foi executado também está listado.

Opções que vale a pena conhecer

Perguntas

Precisa de chave API ou conta?

Não. kaeris check é descrito em sua ajuda como estático, local e sem API, então o job não precisa de segredo. Traduzir é um comando separado que precisa de chave.

Quais formatos de arquivo ele lê?

A ajuda do kaeris check lista JSON, ARB, YAML, .strings, .xcstrings, .po, XML Android, CSV, XLIFF, .properties, .resx, Fluent e Markdown como formatos fonte (kaeris 0.2.35 e superiores). Guias por formato

O que faz o job falhar?

O código de saída do kaeris check: 0 limpo, 1 problema encontrado, 2 uso incorreto ou arquivo ilegível. Um problema que o check chama de vermelho falha o job; strict faz chaves obsoletas falharem também. Referência do GitHub Action

Continue

Outras receitas: GitLab CI · pre-commit · Make e scripts npm

Referência CLI · Referência Check · Referência GitHub Action · Check gratuito no navegador · Traduzir no navegador