Penukar i18n
Tukar antara lebih daripada 32 format fail i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML, dan banyak lagi. Tanpa kehilangan data apabila boleh, dengan amaran jelas jika tidak.
Masalahnya
Setiap platform menggunakan format terjemahan yang berbeza. Android menggunakan strings.xml. iOS menggunakan .strings dan .stringsdict. Aplikasi web menggunakan JSON atau YAML. Penterjemah dan platform TMS mahukan XLIFF atau PO. Apabila perlu berkongsi rentetan antara platform, anda perlu menyalin-tampal antara format, menulis skrip sekali guna, atau menyusun semula fail secara manual. Proses ini meletihkan, mudah tersilap, dan rosak setiap kali format baharu muncul.
Penyelesaiannya
i18n-convert ialah satu alat CLI yang menukar antara lebih daripada 32 format fail i18n. Alat mengesan format input secara automatik, mengekalkan sebanyak mungkin struktur, dan memberi amaran apabila penukaran akan kehilangan data (seperti bentuk jamak dalam 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 jsonPengesanan Automatik
Format input dikesan secara automatik daripada sambungan fail dan kandungan. Tiada bendera diperlukan.
Tanpa Kehilangan Data Apabila Boleh
Metadata, komen, dan bentuk jamak dikekalkan jika format sasaran menyokongnya.
Amaran Kehilangan Data
Apabila penukaran akan menghilangkan maklumat, anda menerima amaran yang jelas sebelum fail ditulis.
Pemasangan
Pasang melalui npm untuk persediaan paling mudah, Homebrew pada macOS, atau bina daripada sumber dengan Cargo.
npm install -g @i18n-agent/i18n-convertPenukaran Umum
Kebanyakan pasukan berulang kali memerlukan beberapa penukaran: JSON kepada Android XML untuk mudah alih, PO kepada JSON untuk web, dan perjalanan pergi balik XLIFF untuk penyerahan kepada penterjemah. Berikut ialah beberapa corak umum.
# 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/Format yang Disokong
i18n-convert menyokong lebih daripada 32 format untuk kategori mudah alih, web, standard penyetempatan, dan pertukaran data.
Mudah Alih
| 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 |
Standard Penyetempatan
| 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 |
Pertukaran Data
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Amaran Kehilangan Data
Tidak semua format setara. XLIFF menyokong nota, konteks, dan bentuk jamak. CSV tidak menyokong semua itu. Apabila anda menukar format kaya kepada format lebih ringkas, i18n-convert memberitahu dengan tepat data yang akan hilang.
$ 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-runPenyepaduan CI
Automatikkan penyegerakan format dalam saluran CI/CD. Apabila fail terjemahan sumber berubah, jana semula semua format terbitan secara automatik supaya fail mudah alih, web, dan penterjemah kekal segerak.
# .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 pushCuba i18n Agent Sekarang
Lepaskan fail terjemahan anda di sini
JSON, YAML, PO, XML, CSV, Markdown, Properties
atau klik untuk semak imbas
Bahasa sasaran