Skip to main content

CI-fordításellenőrzés: i18n-ellenőrzések automatizálása a folyamatban

A fordítási hibák láthatatlanok a kódellenőrzésben. Hiányzó kulcs, hibás helyőrző, rosszul formázott többes szám — egyik sem látszik a különbségben. A CI-szintű ellenőrzés élesítés előtt észleli őket.

1

Miért csúsznak át a fordítási hibák a kódellenőrzésen?

Egy fejlesztő 10 új kulcsot ad az en.json fájlhoz. Az ellenőrző átnézi a kódot és az angol szövegeket, majd jóváhagyja. Senki sem hasonlítja össze a másik 14 területifájlt. Három hiba kerül élesbe: de.json-ból hiányzik 2 kulcs (nyers útvonalak), fr.json-ban hibás a {count} helyőrző (literális {count}), ja.json-ban hibás az ICU többes szám (összeomlás). Egy 30 másodperces CI-ellenőrzés mindet megelőzi.

A fordítási hibák egyediek: láthatatlanok a fejlesztőnek és ellenőrzőnek, csak egy adott terület felhasználói látják. A CI-ellenőrzés az egyetlen megbízható módszer az élesítés előtti észlelésükre.
2

Az i18n-validate telepítése

Adja az i18n-validate eszközt fejlesztési függőségként a projekthez. Alapból támogatja a JSON, YAML, PO, XLIFF és ARB formátumot — az egyszerű használathoz nincs szükség beállításra.

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

GitHub Actions-integráció

Adja az i18n-validate eszközt a pull request munkafolyamat egyik lépéseként. Hiba esetén 1-es kóddal lép ki, meghiúsítva az ellenőrzést. JUnit XML-kimenettel és tesztjelentő művelettel közvetlenül a PR-különbségen kap soron belüli megjegyzéseket.

.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
Rögzítse az i18n-validate verzióját a munkafolyamatban az új szabályok okozta váratlan törések elkerüléséhez. @latest csak fejlesztéskor ajánlott.
4

GitLab CI-integráció

Adjon fordításellenőrzési feladatot a .gitlab-ci.yml folyamathoz. A GitLab natívan támogatja a JUnit XML-műtermékeket — töltse fel a jelentést, a hibák pedig megjelennek a merge request Tests lapján.

.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

Gyorsabb visszajelzéshez futtassa az ellenőrzést pre-commit hookként. Így még CI előtt észleli a hibákat, csökkentve a folyamat idejét és a visszacsatolási kört. Hookkezeléshez használjon Huskyt (JS) vagy pre-commitot (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
A pre-commit hook minden véglegesítésnél fut, ezért legyen gyors. A --locales kapcsolóval csak az aktuális commitban módosult területeket ellenőrizze az összes helyett. A legtöbb projektnél így 2 másodperc alatt marad.
6

Beállítás és súlyossági szintek

Az ellenőrzést .i18n-validate.toml fájllal szabja testre. Szabályonként állítson súlyosságot (error, warning, off), adja meg az elvárt nyelveket, zárja ki a fejlesztés alatt álló területeket, és állítsa be a kimenetet. CI-ben csak a hibák állítják meg a folyamatot; a figyelmeztetések nem blokkolnak.

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
}

Try i18n Agent Now

Drop your translation file here

JSON, YAML, PO, XML, CSV, Markdown, Properties

or click to browse

Target languages

No signup requiredInstant estimate

CI-fordításellenőrzés – gyakori kérdések