
CI validace překladů: Automatizujte i18n kontroly ve Vaší pipeline
Chyby v překladech nejsou v code review vidět. Chybějící klíč, poškozený placeholder, špatně zapsaný plurál — nic z toho se v diffu neprojeví. Validace na úrovni CI je zachytí dříve, než se dostanou do produkce.
Proč chyby v překladech procházejí code review
Vývojář přidá 10 nových klíčů do en.json a upraví kód feature. Reviewer zkontroluje kód, ověří anglické řetězce a schválí. Nikdo nediffuje dalších 14 locale souborů. Do produkce se dostanou tři chyby: v de.json chybí 2 klíče (němečtí uživatelé vidí surové cesty klíčů), fr.json má poškozený placeholder {count} (francouzští uživatelé vidí doslova {count}), a ja.json má nevalidní ICU plurál (japonští uživatelé zažijí pád). Tomu lze předejít 30sekundovou CI kontrolou.
Nainstalovat i18n-validate
Přidejte i18n-validate do projektu jako dev dependency. Podporuje formáty JSON, YAML, PO, XLIFF a ARB out of the box — pro základní použití není potřeba žádná konfigurace.
npm install --save-dev @anthropic/i18n-validateIntegrace GitHub Actions
Přidejte i18n-validate jako krok do workflow pro pull requesty. Nástroj skončí s kódem 1, když najde chyby, a tím shodí PR check. Použijte JUnit XML výstup s test reporter action, abyste získali inline anotace přímo v PR diffu.
# .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.xmlIntegrace GitLab CI
Přidejte job pro validaci překladů do pipeline v .gitlab-ci.yml. GitLab nativně podporuje artefakty JUnit XML — nahrajte validační report a chyby se objeví na kartě Test v merge requestu.
# .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/**/*Pre-commit hook
Pro rychlejší zpětnou vazbu spouštějte validaci jako pre-commit hook. Zachytí problémy ještě předtím, než se vůbec dostanou do CI, ušetří čas pipeline a zkrátí zpětnovazební smyčky. Pro správu hooků použijte Husky (JS) nebo pre-commit (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
fiKonfigurace a úrovně závažnosti
Přizpůsobte chování validace pomocí konfiguračního souboru .i18n-validate.toml. Nastavte závažnost kontrol (error, warning, off) pro každé pravidlo, definujte očekávané jazyky, vylučte WIP locales a nakonfigurujte formát výstupu. V CI pipeline selže pouze při chybách — varování se zobrazí v reportu, ale nic neblokují.
// 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
}Vyzkoušejte i18n Agent nyní
Sem přetáhněte svůj překladový soubor
JSON, YAML, PO, XML, CSV, Markdown, Properties
nebo klikněte a vyberte soubor
Cílové jazyky