Skip to main content

i18n कन्वर्टर

32+ i18n फ़ाइल फ़ॉर्मेट के बीच कन्वर्ट करें। Android XML, iOS Strings, XLIFF, PO, JSON, YAML और अन्य। जहाँ संभव हो, कन्वर्ज़न बिना डेटा हानि के होता है और ऐसा संभव न होने पर डेटा हानि की स्पष्ट चेतावनियाँ मिलती हैं।

समस्या

हर प्लेटफ़ॉर्म एक अलग अनुवाद फ़ॉर्मेट का उपयोग करता है। Android strings.xml का उपयोग करता है। iOS .strings और .stringsdict का उपयोग करता है। वेब ऐप्स JSON या YAML का उपयोग करते हैं। अनुवादकों और TMS प्लेटफ़ॉर्म को XLIFF या PO चाहिए। जब आपको प्लेटफ़ॉर्म के बीच स्ट्रिंग्स साझा करनी होती हैं, तो फ़ॉर्मेट के बीच कॉपी-पेस्ट करना, किसी एक काम के लिए स्क्रिप्ट लिखना या फ़ाइलों की संरचना मैन्युअल रूप से बदलना पड़ता है। यह थकाऊ है, इसमें त्रुटियों की आशंका रहती है और हर नए फ़ॉर्मेट के आने पर प्रक्रिया टूट जाती है।

एक ही मोबाइल + वेब प्रोजेक्ट में आसानी से 5+ अलग-अलग अनुवाद फ़ाइल फ़ॉर्मेट हो सकते हैं। उन्हें मैन्युअल रूप से सिंक रखना ऐसी लड़ाई है जिसे जीता नहीं जा सकता।

समाधान

i18n-convert एक ही CLI टूल है, जो 32+ i18n फ़ाइल फ़ॉर्मेट के बीच कन्वर्ट करता है। यह इनपुट फ़ॉर्मेट की अपने-आप पहचान करता है, यथासंभव पूरी संरचना सुरक्षित रखता है और किसी कन्वर्ज़न में डेटा खोने की आशंका होने पर आपको चेतावनी देता है, जैसे CSV में बहुवचन।

Terminal
# 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 की मदद से सोर्स से बिल्ड करें।

Terminal
npm install -g @i18n-agent/i18n-convert
npm पैकेज में macOS, Linux और Windows के लिए पहले से बिल्ड की गई बाइनरी शामिल हैं। Rust टूलचेन की आवश्यकता नहीं है।

सामान्य कन्वर्ज़न

अधिकांश टीमों को कुछ कन्वर्ज़न बार-बार करने पड़ते हैं: मोबाइल के लिए JSON से Android XML, वेब के लिए PO से JSON और अनुवादकों को फ़ाइलें सौंपने तथा वापस लेने के लिए XLIFF राउंड-ट्रिप। यहाँ कुछ सामान्य पैटर्न दिए गए हैं।

Batch conversion
# 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+ फ़ॉर्मेट का समर्थन करता है।

मोबाइल

FormatExtensionFlag
Android XML.xml--to android-xml
iOS Strings.strings--to ios-strings
iOS Stringsdict.stringsdict--to ios-stringsdict
Flutter ARB.arb--to arb

वेब

FormatExtensionFlag
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

लोकलाइज़ेशन मानक

FormatExtensionFlag
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

डेटा एक्सचेंज

FormatExtensionFlag
CSV.csv--to csv
TSV.tsv--to tsv
Excel.xlsx--to xlsx

डेटा हानि की चेतावनियाँ

सभी फ़ॉर्मेट समान नहीं होते। XLIFF नोट्स, संदर्भ और बहुवचन रूपों का समर्थन करता है। CSV इनमें से किसी का भी समर्थन नहीं करता। जब आप किसी समृद्ध फ़ॉर्मेट को अधिक सरल फ़ॉर्मेट में कन्वर्ट करते हैं, तो i18n-convert आपको ठीक-ठीक बताता है कि क्या खो जाएगा।

Terminal
$ 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-run
प्रोडक्शन में किसी सरल फ़ॉर्मेट में कन्वर्ट करने से पहले हमेशा --dry-run का उपयोग करें। यह कोई फ़ाइल लिखे बिना आपको हर चेतावनी दिखाता है।

CI इंटीग्रेशन

अपनी CI/CD पाइपलाइन में फ़ॉर्मेट सिंक्रोनाइज़ेशन को ऑटोमेट करें। आपकी सोर्स अनुवाद फ़ाइल बदलने पर सभी व्युत्पन्न फ़ॉर्मेट अपने-आप दोबारा जनरेट करें, ताकि मोबाइल, वेब और अनुवादकों के लिए फ़ाइलें सिंक में रहें।

.github/workflows/format-sync.yml
# .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
अपनी CI पाइपलाइन में i18n-convert को i18n-validate के साथ उपयोग करें। पहले फ़ॉर्मेट कन्वर्ट करें, फिर जाँचें कि सभी लक्ष्य फ़ाइलें पूरी और सही संरचना में हैं।

i18n Agent अभी आज़माएँ

अपनी अनुवाद फ़ाइल यहाँ छोड़ें

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

या ब्राउज़ करने के लिए क्लिक करें

लक्षित भाषाएँ

साइन अप की ज़रूरत नहींतुरंत अनुमान

अक्सर पूछे जाने वाले प्रश्न