Skip to main content

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.

Satu projek mudah alih + web boleh melibatkan lebih daripada 5 format fail terjemahan yang berbeza dengan mudah. Mengekalkannya segerak secara manual ialah perjuangan yang tidak berkesudahan.

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).

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

Pengesanan 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.

Terminal
npm install -g @i18n-agent/i18n-convert
Pakej npm menyertakan binari siap bina untuk macOS, Linux, dan Windows. Tiada rantai alat Rust diperlukan.

Penukaran 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.

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/

Format yang Disokong

i18n-convert menyokong lebih daripada 32 format untuk kategori mudah alih, web, standard penyetempatan, dan pertukaran data.

Mudah Alih

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

Standard Penyetempatan

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

Pertukaran Data

FormatExtensionFlag
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.

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
Sentiasa gunakan --dry-run sebelum menukar kepada format lebih ringkas dalam pengeluaran. Pilihan ini memaparkan semua amaran tanpa menulis fail.

Penyepaduan 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
# .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
Gabungkan i18n-convert dengan i18n-validate dalam saluran CI. Tukar format terlebih dahulu, kemudian sahkan bahawa semua fail sasaran lengkap dan berformat baik.

Cuba i18n Agent Sekarang

Lepaskan fail terjemahan anda di sini

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

atau klik untuk semak imbas

Bahasa sasaran

Tidak perlu mendaftarAnggaran serta-merta

Soalan Lazim