Skip to main content

Μετατροπέας i18n

Μετατρέψτε αρχεία μεταξύ περισσότερων από 32 μορφών i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML και πολλές άλλες. Χωρίς απώλειες όπου είναι δυνατόν, με σαφείς προειδοποιήσεις όταν υπάρχει κίνδυνος απώλειας δεδομένων.

Το πρόβλημα

Κάθε πλατφόρμα χρησιμοποιεί διαφορετική μορφή αρχείων μετάφρασης. Το Android χρησιμοποιεί strings.xml. Το iOS χρησιμοποιεί .strings και .stringsdict. Οι εφαρμογές Web χρησιμοποιούν JSON ή YAML. Οι μεταφραστές και οι πλατφόρμες TMS χρειάζονται XLIFF ή PO. Όταν πρέπει να μοιραστείτε συμβολοσειρές μεταξύ πλατφορμών, καταλήγετε να τις αντιγράφετε και να τις επικολλάτε μεταξύ μορφών, να γράφετε ειδικά scripts ή να αναδιαρθρώνετε τα αρχεία με μη αυτόματο τρόπο. Η διαδικασία είναι κουραστική, επιρρεπής σε σφάλματα και παύει να λειτουργεί κάθε φορά που εμφανίζεται μια νέα μορφή.

Ένα μόνο έργο για κινητές συσκευές και Web μπορεί εύκολα να περιλαμβάνει πάνω από 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

Αυτόματη ανίχνευση

Η μορφή εισόδου ανιχνεύεται αυτόματα από την επέκταση και το περιεχόμενο του αρχείου. Δεν απαιτούνται flags.

Χωρίς απώλειες όπου είναι δυνατόν

Τα μεταδεδομένα, τα σχόλια και οι μορφές πληθυντικού διατηρούνται, όταν υποστηρίζονται από τη μορφή προορισμού.

Προειδοποιήσεις απώλειας δεδομένων

Όταν μια μετατροπή θα προκαλούσε απώλεια πληροφοριών, λαμβάνετε σαφείς προειδοποιήσεις πριν από την εγγραφή οποιουδήποτε αρχείου.

Εγκατάσταση

Εγκαταστήστε το μέσω npm για την ευκολότερη αρχική ρύθμιση, μέσω Homebrew στο macOS ή δημιουργήστε το από τον πηγαίο κώδικα με Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Το πακέτο npm περιλαμβάνει προκατασκευασμένα binaries για macOS, Linux και Windows. Δεν απαιτείται toolchain Rust.

Συνήθεις μετατροπές

Οι περισσότερες ομάδες χρειάζονται επανειλημμένα ορισμένες μετατροπές: JSON σε Android XML για κινητές συσκευές, PO σε JSON για το Web και κύκλους εξαγωγής και επανεισαγωγής 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 μορφές για κινητές συσκευές, Web, πρότυπα τοπικής προσαρμογής και ανταλλαγή δεδομένων.

Κινητές συσκευές

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

Web

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

Αυτοματοποιήστε τον συγχρονισμό των μορφών στο pipeline CI/CD. Όταν αλλάζει το αρχείο μετάφρασης προέλευσης, δημιουργήστε ξανά αυτόματα όλες τις παράγωγες μορφές, ώστε τα αρχεία για κινητές συσκευές, Web και μεταφραστές να παραμένουν συγχρονισμένα.

.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
Συνδυάστε το i18n-convert με το i18n-validate στο pipeline CI. Μετατρέψτε πρώτα τις μορφές και έπειτα επαληθεύστε ότι όλα τα αρχεία προορισμού είναι πλήρη και σωστά διαμορφωμένα.

Δοκιμάστε τώρα το i18n Agent

Αφήστε εδώ το αρχείο μετάφρασής σας

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

ή κάντε κλικ για να επιλέξετε αρχείο

Γλώσσες-στόχοι

Δεν απαιτείται εγγραφήΆμεση εκτίμηση

Συχνές ερωτήσεις