Μετατροπέας i18n
Μετατρέψτε αρχεία μεταξύ περισσότερων από 32 μορφών i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML και πολλές άλλες. Χωρίς απώλειες όπου είναι δυνατόν, με σαφείς προειδοποιήσεις όταν υπάρχει κίνδυνος απώλειας δεδομένων.
Το πρόβλημα
Κάθε πλατφόρμα χρησιμοποιεί διαφορετική μορφή αρχείων μετάφρασης. Το Android χρησιμοποιεί strings.xml. Το iOS χρησιμοποιεί .strings και .stringsdict. Οι εφαρμογές Web χρησιμοποιούν JSON ή YAML. Οι μεταφραστές και οι πλατφόρμες TMS χρειάζονται XLIFF ή PO. Όταν πρέπει να μοιραστείτε συμβολοσειρές μεταξύ πλατφορμών, καταλήγετε να τις αντιγράφετε και να τις επικολλάτε μεταξύ μορφών, να γράφετε ειδικά scripts ή να αναδιαρθρώνετε τα αρχεία με μη αυτόματο τρόπο. Η διαδικασία είναι κουραστική, επιρρεπής σε σφάλματα και παύει να λειτουργεί κάθε φορά που εμφανίζεται μια νέα μορφή.
Η λύση
Το 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Αυτόματη ανίχνευση
Η μορφή εισόδου ανιχνεύεται αυτόματα από την επέκταση και το περιεχόμενο του αρχείου. Δεν απαιτούνται flags.
Χωρίς απώλειες όπου είναι δυνατόν
Τα μεταδεδομένα, τα σχόλια και οι μορφές πληθυντικού διατηρούνται, όταν υποστηρίζονται από τη μορφή προορισμού.
Προειδοποιήσεις απώλειας δεδομένων
Όταν μια μετατροπή θα προκαλούσε απώλεια πληροφοριών, λαμβάνετε σαφείς προειδοποιήσεις πριν από την εγγραφή οποιουδήποτε αρχείου.
Εγκατάσταση
Εγκαταστήστε το μέσω npm για την ευκολότερη αρχική ρύθμιση, μέσω Homebrew στο macOS ή δημιουργήστε το από τον πηγαίο κώδικα με Cargo.
npm install -g @i18n-agent/i18n-convertΣυνήθεις μετατροπές
Οι περισσότερες ομάδες χρειάζονται επανειλημμένα ορισμένες μετατροπές: JSON σε Android XML για κινητές συσκευές, PO σε JSON για το Web και κύκλους εξαγωγής και επανεισαγωγής 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 μορφές για κινητές συσκευές, Web, πρότυπα τοπικής προσαρμογής και ανταλλαγή δεδομένων.
Κινητές συσκευές
| 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 |
Web
| 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-runΕνσωμάτωση στο CI
Αυτοματοποιήστε τον συγχρονισμό των μορφών στο pipeline CI/CD. Όταν αλλάζει το αρχείο μετάφρασης προέλευσης, δημιουργήστε ξανά αυτόματα όλες τις παράγωγες μορφές, ώστε τα αρχεία για κινητές συσκευές, Web και μεταφραστές να παραμένουν συγχρονισμένα.
# .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
ή κάντε κλικ για να επιλέξετε αρχείο
Γλώσσες-στόχοι