
Preverjanje prevodov v CI: avtomatizirajte preverjanja i18n v svojem pipelineu
Napake v prevodih so pri pregledu kode nevidne. Manjkajoč ključ, poškodovana označba mesta ali napačno oblikovana množinska oblika se v diffu ne pokažejo. Preverjanje na ravni CI jih odkrije, preden dosežejo produkcijo.
Zakaj se napake v prevodih izmuznejo pregledu kode
Razvijalec v en.json doda 10 novih ključev in posodobi kodo funkcije. Pregledovalec zahteve PR preveri kodo in angleška besedila ter jo odobri. Nihče ne primerja 14 drugih jezikovnih datotek. V produkcijo pridejo tri napake: v de.json manjkata 2 ključa (nemški uporabniki vidijo neobdelane poti ključev), v fr.json je poškodovana označba mesta {count} (francoski uporabniki dobesedno vidijo {count}), v ja.json pa je napačno oblikovana množinska oblika ICU (japonskim uporabnikom se aplikacija sesuje). Te napake lahko preprečite s 30-sekundnim preverjanjem v CI.
Namestite i18n-validate
i18n-validate dodajte svojemu projektu kot razvojno odvisnost. Že v osnovi podpira oblike JSON, YAML, PO, XLIFF in ARB, za osnovno uporabo pa ne potrebuje nastavitev.
npm install --save-dev @anthropic/i18n-validateIntegracija z GitHub Actions
i18n-validate dodajte kot korak delovnega toka za zahteve pull request. Ko orodje najde napake, se konča z izhodno kodo 1 in preverjanje zahteve PR ne uspe. Z izhodom JUnit XML in dejanjem za poročanje o testih dobite sprotne opombe neposredno v diffu zahteve PR.
# .github/workflows/i18n-validate.yml
name: Validate Translations
on:
pull_request:
paths:
- 'src/locales/**'
- 'public/locales/**'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Validate translation files
run: npx i18n-validate \
--source src/locales/en.json \
--targets 'src/locales/*.json' \
--check-missing \
--check-unused \
--check-placeholders \
--check-plurals \
--min-coverage 95 \
--junit-output reports/i18n.xml
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: i18n-validation-report
path: reports/i18n.xmlIntegracija z GitLab CI
V pipeline .gitlab-ci.yml dodajte opravilo za preverjanje prevodov. GitLab izvorno podpira artefakte JUnit XML: naložite poročilo preverjanja in napake se bodo prikazale na zavihku Test zahteve za združitev.
# .gitlab-ci.yml
i18n-validate:
stage: test
image: node:20
script:
- npm ci
- npx i18n-validate \
--source src/locales/en.json \
--targets 'src/locales/*.json' \
--check-missing \
--check-unused \
--check-placeholders \
--min-coverage 95 \
--junit-output reports/i18n.xml
artifacts:
reports:
junit: reports/i18n.xml
only:
changes:
- src/locales/**/*Hook pre-commit
Za hitrejše povratne informacije zaženite preverjanje kot hook pre-commit. Tako težave odkrijete, še preden dosežejo CI, prihranite čas pipelinea in skrajšate povratne zanke. Hooke upravljajte s Huskyjem (JS) ali pre-commitom (Python).
# .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# Only validate if translation files changed
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '(locales|i18n|translations)/')
if [ -n "$CHANGED_FILES" ]; then
echo "Translation files changed, validating..."
npx i18n-validate \
--source src/locales/en.json \
--targets 'src/locales/*.json' \
--check-missing \
--check-placeholders
fiNastavitve in ravni resnosti
Delovanje preverjanja prilagodite z nastavitveno datoteko .i18n-validate.toml. Za vsako pravilo nastavite resnost preverjanja (error, warning, off), določite pričakovane jezike, izključite jezikovne različice v pripravi in nastavite obliko izhoda. V CI pipeline prekinejo samo napake; opozorila so prikazana v poročilu, vendar postopka ne ustavijo.
// i18n-validate.config.json
{
"source": "src/locales/en.json",
"targets": "src/locales/*.json",
"checks": {
"missing": true, // Keys in source missing from target
"unused": true, // Keys in target not in source
"placeholders": true, // Mismatched {variables}
"plurals": true, // Missing CLDR plural forms
"icu": true, // ICU syntax validation
"emptyValues": true, // Empty string values
"duplicateValues": false // Same value as source (untranslated)
},
"minCoverage": 95,
"exclude": [
"src/locales/pseudo.json"
],
"junitOutput": "reports/i18n.xml",
"format": "json" // json | yaml | po | xliff
}Preizkusite i18n Agent zdaj
Spustite prevajalsko datoteko sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
ali kliknite za izbiro
Ciljni jeziki