Verifique as traduções antes de publicar
Executa em sua máquina, não precisa de chave e não envia nada para lugar nenhum. Ele encontra variáveis perdidas como {name}, números alterados, chaves ausentes e linhas vazias. Com erros, sai com o código 1, para que a CI possa parar o merge; uma linha vazia é só um aviso e dá código 1 apenas com --strict.
npx kaeris check --source en.json --langs de
Sem Python: npx executa o pacote npm com Node 18 ou mais recente. Com Python, pip install kaeris oferece o mesmo comando kaeris check.
{
"greeting": "Hallo!",
"delete": "50 Dateien löschen",
"save": "",
"terms": "Lies unsere <b>AGB</b>"
}
✗ de: 1 placeholder mismatch(es): greeting: missing ['{name}'], added - ✗ de: 3 translation fault(s): greeting: lost placeholder {name} delete: number 50 appears in the translation but not the source delete: number 5 from the source is missing or changed in the translation ! de: 1 warning(s): save: empty translation — the source has text ✗ 1 placeholder mismatch, 3 translation faults
Fonte: {"greeting": "Hello, {name}!", "delete": "Delete 5 files", "save": "Save changes", …}
| Flag | Significado |
|---|---|
--strict | Falha também com avisos (por exemplo, uma tradução vazia) e com chaves extras que não estão no arquivo de origem. |
--pattern '{lang}/common.json' | Onde ficam as traduções. Padrão: onde o translate as grava, ao lado do arquivo de origem (de.json, app_de.arb, values-de/strings.xml). |
--json | Resultado legível por máquina em vez do relatório. |
--sarif kaeris.sarif | Também escreve um relatório SARIF 2.1.0 para GitHub, veja abaixo. |
Arquivo de origem: qualquer um dos 13 formatos (JSON, YAML, .strings, .xcstrings, Markdown/MDX, .po, ARB, Android XML, CSV, XLIFF, .properties, .resx, Fluent). Códigos de saída: 0 sem problemas, 1 problemas encontrados, 2 uso incorreto ou um arquivo que não consegue ler.
Guias por formato: JSON · YAML · PO · XLIFF · ARB · .strings · .xcstrings · Fluent · .properties · .resx · CSV · Markdown · Android XML
CI recipes (in English): GitHub Actions · GitLab CI · pre-commit · Make and npm scripts
Glossário: uma palavra por termo, em cada idioma
--keep deixa uma palavra como está. Quando um termo precisa ser traduzido, mas sempre da mesma forma, coloque-o em kaeris-glossary.json ao lado de kaeris.json. translate passa as palavras combinadas ao modelo, e check falha quando uma tradução usa outra palavra.
{"terms": [
{"term": "workspace", "pos": "noun",
"note": "the shared project area, not a desk",
"translations": {"de": "Arbeitsbereich",
"fr": "espace de travail",
"ru": "рабочее пространство"}},
{"term": "KAERIS", "keep": true}
]}
→ Glossary: 1 term(s), 1 kept as is ✗ fr: 1 translation fault(s): open: glossary: "workspace" should be "espace de travail" ! ru: 1 warning(s): leave: glossary: "workspace" should be "рабочее пространство" — not found, not even as an inflected form; check this line ✗ 1 translation fault
Fonte: {"open": "Open the workspace", "leave": "Leave the workspace"}. A tradução francesa diz «bureau»; a russa, «рабочей области».
Um termo conta como palavra inteira: Pro não é encontrado em «product». Uma forma flexionada da palavra combinada passa. Onde as palavras mudam de forma ou se juntam em compostos (russo, polonês, alemão e outros), uma ausência é um aviso, não um erro, porque ainda pode ser gramática correta. Uma lista de palavras define variantes aceitas. Funciona em todos os planos, inclusive na demo gratuita.
Achados na linha, dentro do pull request
Com --sarif cada achado se torna uma nota na linha exata do arquivo de idioma, ao lado dos comentários do seu revisor.
- uses: kaeris-io/kaeris-action@v1
with:
mode: check
source: locales/en.json
languages: de,fr,es
sarif-file: kaeris.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: kaeris.sarif
"greeting": "Hallo, {name}!",
- "delete": "5 Dateien löschen",+ "delete": "50 Dateien löschen",KAERIS i18n · delete: number 5 from the source is missing or changed in the translation "save": "Änderungen speichern"
O relatório é escrito mesmo em uma execução limpa, porque upload-sarif falha quando o arquivo está faltando. Notas na linha são gratuitas em repositórios públicos; os privados precisam de GitHub Advanced Security. Sem ele, a verificação ainda funciona: o job falha e o log lista cada achado.
KAERIS traduziu esta página e verificou cada linha traduzindo-a de volta. Um falante nativo ainda não revisou. Original em inglês