Konverter i18n
Konversikan lebih dari 32 format file i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML, dan lainnya. Tanpa kehilangan data bila memungkinkan, dengan peringatan jelas jika tidak.
Masalahnya
Setiap platform menggunakan format terjemahan berbeda. Android menggunakan strings.xml. iOS menggunakan .strings dan .stringsdict. Aplikasi web menggunakan JSON atau YAML. Penerjemah dan platform TMS menginginkan XLIFF atau PO. Saat perlu berbagi string antarplatform, Anda harus menyalin-tempel antarformat, menulis skrip sekali pakai, atau menyusun ulang file secara manual. Proses ini melelahkan, rentan kesalahan, dan rusak setiap kali format baru muncul.
Solusinya
i18n-convert adalah satu alat CLI yang mengonversi lebih dari 32 format file i18n. Alat mendeteksi format masukan secara otomatis, mempertahankan struktur sebanyak mungkin, dan memperingatkan saat konversi 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 jsonDeteksi Otomatis
Format masukan dideteksi secara otomatis dari ekstensi file dan konten. Tidak diperlukan flag.
Tanpa Kehilangan Data Bila Memungkinkan
Metadata, komentar, dan bentuk jamak dipertahankan jika format target mendukungnya.
Peringatan Kehilangan Data
Saat konversi akan menghilangkan informasi, Anda menerima peringatan eksplisit sebelum file ditulis.
Instalasi
Instal melalui npm untuk penyiapan termudah, Homebrew di macOS, atau build dari sumber dengan Cargo.
npm install -g @i18n-agent/i18n-convertKonversi Umum
Sebagian besar tim berulang kali memerlukan beberapa konversi: JSON ke Android XML untuk seluler, PO ke JSON untuk web, dan perjalanan pulang-pergi XLIFF untuk serah terima penerjemah. Berikut beberapa pola 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 Didukung
i18n-convert mendukung lebih dari 32 format untuk kategori seluler, web, standar lokalisasi, dan pertukaran data.
Seluler
| 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 |
Standar Lokalisasi
| 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 |
Peringatan Kehilangan Data
Tidak semua format setara. XLIFF mendukung catatan, konteks, dan bentuk jamak. CSV tidak mendukung semuanya. Saat Anda mengonversi format kaya ke format lebih sederhana, i18n-convert memberi tahu 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-runIntegrasi CI
Otomatiskan sinkronisasi format dalam pipeline CI/CD. Saat file terjemahan sumber berubah, buat ulang semua format turunan secara otomatis agar file seluler, web, dan penerjemah tetap sinkron.
# .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 pushCoba i18n Agent Sekarang
Lepaskan file terjemahan Anda di sini
JSON, YAML, PO, XML, CSV, Markdown, Properties
atau klik untuk menjelajahi
Bahasa target