Controlla le traduzioni prima della pubblicazione
Funziona sulla tua macchina, non richiede chiavi e non invia nulla. Trova variabili perse come {name}, numeri modificati, chiavi mancanti e righe vuote. Con errori esce con codice 1, così la CI può bloccare il merge; una riga vuota è solo un avviso e dà codice 1 soltanto con --strict.
npx kaeris check --source en.json --langs de
Senza Python: npx avvia il pacchetto npm con Node 18 o successivo. Con Python, pip install kaeris offre lo stesso 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
Sorgente: {"greeting": "Hello, {name}!", "delete": "Delete 5 files", "save": "Save changes", …}
| Flag | Significato |
|---|---|
--strict | Fallisce anche per gli avvisi (ad esempio una traduzione vuota) e per chiavi extra non presenti nel sorgente. |
--pattern '{lang}/common.json' | Dove si trovano le traduzioni. Predefinito: dove le scrive translate, accanto al sorgente (de.json, app_de.arb, values-de/strings.xml). |
--json | Risultato leggibile dalla macchina invece del report. |
--sarif kaeris.sarif | Scrive anche un report SARIF 2.1.0 per GitHub, vedi sotto. |
File sorgente: uno qualsiasi dei 13 formati (JSON, YAML, .strings, .xcstrings, Markdown/MDX, .po, ARB, Android XML, CSV, XLIFF, .properties, .resx, Fluent). Codici di uscita: 0 nessun problema, 1 problemi trovati, 2 uso errato o un file illeggibile.
Guide per 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
Glossario: una parola per termine, per ogni lingua
--keep lascia una parola così com'è. Quando un termine va tradotto, ma sempre allo stesso modo, inseriscilo in kaeris-glossary.json accanto a kaeris.json. translate passa al modello le parole concordate e check fallisce se una traduzione usa un'altra parola.
{"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
Sorgente: {"open": "Open the workspace", "leave": "Leave the workspace"}. La traduzione francese dice «bureau», quella russa «рабочей области».
Un termine conta come parola intera: Pro non viene trovato in «product». Una forma flessa della parola concordata passa. Dove le parole cambiano forma o si uniscono in composti (russo, polacco, tedesco e altre), un'assenza è un avviso, non un errore, perché può comunque essere grammatica corretta. Un elenco di parole indica le varianti accettate. Funziona con ogni piano, demo gratuita inclusa.
Riscontri sulla riga, all'interno della pull request
Con --sarif ogni riscontro diventa una nota sulla riga esatta del file di lingua, accanto ai commenti del tuo revisore.
- 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"
Il report viene scritto anche in caso di esecuzione pulita, perché upload-sarif fallisce quando il file è mancante. Le note sulla riga sono gratuite sui repository pubblici; quelli privati richiedono GitHub Advanced Security. Senza di esso il controllo funziona comunque: il job fallisce e il log elenca ogni riscontro.
KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese