
CI अनुवाद सत्यापन: अपनी पाइपलाइन में i18n जाँचें ऑटोमेट करें
कोड समीक्षा में अनुवाद संबंधी बग दिखाई नहीं देते। कोई गुम कुंजी, खराब प्लेसहोल्डर या गलत तरीके से बना बहुवचन—इनमें से कुछ भी diff में दिखाई नहीं देता। CI स्तर पर सत्यापन इन्हें प्रोडक्शन तक पहुँचने से पहले पकड़ लेता है।
अनुवाद संबंधी बग कोड समीक्षा से कैसे बच निकलते हैं
कोई डेवलपर en.json में 10 नई कुंजियाँ जोड़कर सुविधा का कोड अपडेट करता है। PR समीक्षक कोड की जाँच करता है, अंग्रेज़ी स्ट्रिंग सत्यापित करता है और स्वीकृति दे देता है। बाकी 14 लोकैल फ़ाइलों का diff कोई नहीं देखता। तीन बग प्रोडक्शन में पहुँच जाते हैं: de.json में 2 कुंजियाँ नहीं हैं (जर्मन यूज़र्स को वास्तविक टेक्स्ट के बजाय बिना प्रोसेस हुए कुंजी पथ दिखाई देते हैं), fr.json में {count} प्लेसहोल्डर खराब है (फ़्रेंच यूज़र्स को शाब्दिक रूप से {count} दिखाई देता है) और ja.json में ICU plural गलत तरीके से बना है (जापानी यूज़र्स को क्रैश का सामना करना पड़ता है)। CI में 30 सेकंड की जाँच से इन समस्याओं को रोका जा सकता है।
i18n-validate इंस्टॉल करें
अपने प्रोजेक्ट में i18n-validate को dev dependency के रूप में जोड़ें। यह JSON, YAML, PO, XLIFF और ARB फ़ॉर्मैट का तुरंत समर्थन करता है—बुनियादी उपयोग के लिए किसी कॉन्फ़िगरेशन की आवश्यकता नहीं होती।
npm install --save-dev @anthropic/i18n-validateGitHub Actions इंटीग्रेशन
अपने pull request कार्य-प्रवाह में i18n-validate को एक चरण के रूप में जोड़ें। गड़बड़ियाँ मिलने पर यह टूल code 1 के साथ बंद होता है, जिससे PR जाँच विफल हो जाती है। सीधे PR diff पर इनलाइन एनोटेशन पाने के लिए टेस्ट रिपोर्टर ऐक्शन के साथ JUnit XML आउटपुट का उपयोग करें।
# .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.xmlGitLab CI इंटीग्रेशन
अपनी .gitlab-ci.yml पाइपलाइन में अनुवाद सत्यापन जॉब जोड़ें। GitLab में JUnit XML आर्टिफ़ैक्ट्स के लिए मूल समर्थन मौजूद है—सत्यापन रिपोर्ट अपलोड करें और गड़बड़ियाँ merge request के Test टैब में दिखाई देंगी।
# .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 हुक
जल्दी फ़ीडबैक पाने के लिए सत्यापन को pre-commit हुक के रूप में चलाएँ। इससे समस्याएँ CI तक पहुँचने से पहले ही पकड़ में आ जाती हैं, जिससे पाइपलाइन का समय बचता है और फ़ीडबैक चक्र छोटा होता है। हुक प्रबंधित करने के लिए Husky (JS) या 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
fiकॉन्फ़िगरेशन और गंभीरता के स्तर
.i18n-validate.toml कॉन्फ़िगरेशन फ़ाइल की मदद से सत्यापन के व्यवहार को अपनी ज़रूरत के अनुसार ढालें। हर नियम के लिए जाँच की गंभीरता (error, warning, off) सेट करें, अपेक्षित भाषाएँ निर्धारित करें, WIP लोकैल बाहर रखें और आउटपुट फ़ॉर्मैट कॉन्फ़िगर करें। CI में केवल errors के कारण पाइपलाइन विफल होती है—warnings रिपोर्ट में दिखाई देती हैं, लेकिन प्रक्रिया को रोकती नहीं हैं।
// 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
}i18n Agent अभी आज़माएँ
अपनी अनुवाद फ़ाइल यहाँ छोड़ें
JSON, YAML, PO, XML, CSV, Markdown, Properties
या ब्राउज़ करने के लिए क्लिक करें
लक्षित भाषाएँ