i18n कन्वर्टर
32+ i18n फ़ाइल फ़ॉर्मेट के बीच कन्वर्ट करें। Android XML, iOS Strings, XLIFF, PO, JSON, YAML और अन्य। जहाँ संभव हो, कन्वर्ज़न बिना डेटा हानि के होता है और ऐसा संभव न होने पर डेटा हानि की स्पष्ट चेतावनियाँ मिलती हैं।
समस्या
हर प्लेटफ़ॉर्म एक अलग अनुवाद फ़ॉर्मेट का उपयोग करता है। Android strings.xml का उपयोग करता है। iOS .strings और .stringsdict का उपयोग करता है। वेब ऐप्स JSON या YAML का उपयोग करते हैं। अनुवादकों और TMS प्लेटफ़ॉर्म को XLIFF या PO चाहिए। जब आपको प्लेटफ़ॉर्म के बीच स्ट्रिंग्स साझा करनी होती हैं, तो फ़ॉर्मेट के बीच कॉपी-पेस्ट करना, किसी एक काम के लिए स्क्रिप्ट लिखना या फ़ाइलों की संरचना मैन्युअल रूप से बदलना पड़ता है। यह थकाऊ है, इसमें त्रुटियों की आशंका रहती है और हर नए फ़ॉर्मेट के आने पर प्रक्रिया टूट जाती है।
समाधान
i18n-convert एक ही CLI टूल है, जो 32+ i18n फ़ाइल फ़ॉर्मेट के बीच कन्वर्ट करता है। यह इनपुट फ़ॉर्मेट की अपने-आप पहचान करता है, यथासंभव पूरी संरचना सुरक्षित रखता है और किसी कन्वर्ज़न में डेटा खोने की आशंका होने पर आपको चेतावनी देता है, जैसे CSV में बहुवचन।
# Auto-detect input format, convert to Android XML
i18n-convert en.json --to android-xml -o strings.xml
# iOS Strings to Gettext PO
i18n-convert Localizable.strings --to po -o messages.po
# XLIFF to Rails YAML
i18n-convert translations.xliff --to yaml-rails -o en.yml
# Pipe to stdout
i18n-convert messages.po --to jsonस्वतः पहचान
फ़ाइल एक्सटेंशन और सामग्री से इनपुट फ़ॉर्मेट की अपने-आप पहचान हो जाती है। किसी फ़्लैग की आवश्यकता नहीं है।
जहाँ संभव हो, बिना डेटा हानि के
लक्ष्य फ़ॉर्मेट द्वारा समर्थित होने पर मेटाडेटा, टिप्पणियाँ और बहुवचन रूप सुरक्षित रखे जाते हैं।
डेटा हानि की चेतावनियाँ
किसी कन्वर्ज़न में जानकारी खोने की आशंका होने पर, कोई भी फ़ाइल लिखे जाने से पहले आपको स्पष्ट चेतावनियाँ मिलती हैं।
इंस्टॉलेशन
सबसे आसान सेटअप के लिए npm से, macOS पर Homebrew से इंस्टॉल करें या Cargo की मदद से सोर्स से बिल्ड करें।
npm install -g @i18n-agent/i18n-convertसामान्य कन्वर्ज़न
अधिकांश टीमों को कुछ कन्वर्ज़न बार-बार करने पड़ते हैं: मोबाइल के लिए JSON से Android XML, वेब के लिए PO से JSON और अनुवादकों को फ़ाइलें सौंपने तथा वापस लेने के लिए XLIFF राउंड-ट्रिप। यहाँ कुछ सामान्य पैटर्न दिए गए हैं।
# Convert all PO files to JSON
for f in locales/*.po; do
i18n-convert "$f" --to json -o "${f%.po}.json"
done
# Convert entire directory
i18n-convert locales/ --to json --out-dir locales-json/समर्थित फ़ॉर्मेट
i18n-convert मोबाइल, वेब, लोकलाइज़ेशन मानकों और डेटा एक्सचेंज श्रेणियों के 32+ फ़ॉर्मेट का समर्थन करता है।
मोबाइल
| Format | Extension | Flag |
|---|---|---|
| Android XML | .xml | --to android-xml |
| iOS Strings | .strings | --to ios-strings |
| iOS Stringsdict | .stringsdict | --to ios-stringsdict |
| Flutter ARB | .arb | --to arb |
वेब
| Format | Extension | Flag |
|---|---|---|
| JSON (flat) | .json | --to json |
| JSON (nested) | .json | --to json-nested |
| YAML | .yml | --to yaml |
| YAML (Rails) | .yml | --to yaml-rails |
| Properties | .properties | --to properties |
लोकलाइज़ेशन मानक
| Format | Extension | Flag |
|---|---|---|
| XLIFF 1.2 | .xlf | --to xliff |
| XLIFF 2.0 | .xlf | --to xliff-2 |
| Gettext PO | .po | --to po |
| Gettext POT | .pot | --to pot |
| TMX | .tmx | --to tmx |
| TBX | .tbx | --to tbx |
डेटा एक्सचेंज
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
डेटा हानि की चेतावनियाँ
सभी फ़ॉर्मेट समान नहीं होते। XLIFF नोट्स, संदर्भ और बहुवचन रूपों का समर्थन करता है। CSV इनमें से किसी का भी समर्थन नहीं करता। जब आप किसी समृद्ध फ़ॉर्मेट को अधिक सरल फ़ॉर्मेट में कन्वर्ट करते हैं, तो i18n-convert आपको ठीक-ठीक बताता है कि क्या खो जाएगा।
$ i18n-convert plurals.po --to csv
Data loss warnings:
[ERROR] 3 entries use plurals (not supported by CSV)
Proceed? [y/N]
# Skip prompts
i18n-convert plurals.po --to csv --force
# Preview warnings without writing
i18n-convert plurals.po --to csv --dry-runCI इंटीग्रेशन
अपनी CI/CD पाइपलाइन में फ़ॉर्मेट सिंक्रोनाइज़ेशन को ऑटोमेट करें। आपकी सोर्स अनुवाद फ़ाइल बदलने पर सभी व्युत्पन्न फ़ॉर्मेट अपने-आप दोबारा जनरेट करें, ताकि मोबाइल, वेब और अनुवादकों के लिए फ़ाइलें सिंक में रहें।
# .github/workflows/format-sync.yml
name: Sync Translation Formats
on:
push:
branches: [main]
paths: ['locales/en.json']
jobs:
sync-formats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install i18n-convert
run: npm install -g @i18n-agent/i18n-convert
- name: Convert JSON to Android XML
run: i18n-convert locales/en.json --to android-xml -o android/res/values/strings.xml
- name: Convert JSON to iOS Strings
run: i18n-convert locales/en.json --to ios-strings -o ios/en.lproj/Localizable.strings
- name: Commit synced formats
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
git add android/ ios/
git diff --cached --quiet || git commit -m "chore: sync translation formats"
git pushइनका भी अनुवाद करें:
i18n Agent अभी आज़माएँ
अपनी अनुवाद फ़ाइल यहाँ छोड़ें
JSON, YAML, PO, XML, CSV, Markdown, Properties
या ब्राउज़ करने के लिए क्लिक करें
लक्षित भाषाएँ