Skip to main content

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.

1

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.

Chyby v překladech mají jedinečnou vlastnost: jsou neviditelné pro vývojáře, neviditelné pro reviewera a viditelné pouze uživatelům v konkrétním locale. CI validace je jediný spolehlivý způsob, jak je zachytit před produkcí.
2

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.

Terminal
npm install --save-dev @anthropic/i18n-validate
3

Integrace 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
# .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.xml
Ve workflow připněte verzi i18n-validate, abyste se vyhnuli neočekávaným problémům kvůli novým validačním pravidlům. @latest používejte pouze ve vývoji.
4

Integrace 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
# .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/**/*
5

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
# .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
fi
Pre-commit hooky běží při každém commitu, proto je udržujte rychlé. Použijte flag --locales, aby se validovaly jen locales změněné v aktuálním commitu, a ne všechny. To udrží dobu běhu hooku u většiny projektů pod 2 sekundy.
6

Konfigurace 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
// 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

Bez registraceOkamžitý odhad

CI validace překladů FAQ