i18n dönüştürücü
32'den fazla i18n dosya biçimi arasında dönüştürme yapın. Android XML, iOS Strings, XLIFF, PO, JSON, YAML ve daha fazlası. Mümkün olduğunda kayıpsız dönüşüm, aksi durumda açık veri kaybı uyarıları.
Sorun
Her platform farklı bir çeviri biçimi kullanır. Android strings.xml kullanır. iOS .strings ve .stringsdict kullanır. Web uygulamaları JSON veya YAML kullanır. Çevirmenler ve TMS platformları XLIFF veya PO ister. Dizeleri platformlar arasında paylaşmanız gerektiğinde biçimler arasında kopyalayıp yapıştırmak, tek kullanımlık betikler yazmak veya dosyaları elle yeniden yapılandırmak zorunda kalırsınız. Bu süreç yorucudur, hataya açıktır ve yeni bir biçim ortaya çıktığında yeniden bozulur.
Çözüm
i18n-convert, 32'den fazla i18n dosya biçimi arasında dönüştürme yapan tek bir CLI aracıdır. Girdi biçimini otomatik olarak algılar, yapıyı mümkün olduğunca korur ve bir dönüşümün veri kaybına yol açacağı durumlarda (CSV'deki çoğul biçimleri gibi) sizi uyarır.
# 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 jsonOtomatik algılama
Girdi biçimi, dosya uzantısından ve içerikten otomatik olarak algılanır. Bayrak gerekmez.
Mümkün olduğunda kayıpsız
Hedef biçim desteklediğinde meta veriler, yorumlar ve çoğul biçimleri korunur.
Veri kaybı uyarıları
Bir dönüşüm bilgi kaybına yol açacaksa herhangi bir dosya yazılmadan önce açık uyarılar alırsınız.
Kurulum
En kolay kurulum için npm, macOS'te Homebrew aracılığıyla yükleyin veya Cargo ile kaynak koddan derleyin.
npm install -g @i18n-agent/i18n-convertYaygın dönüşümler
Çoğu ekip birkaç dönüşümü düzenli olarak kullanır: mobil için JSON'dan Android XML'e, web için PO'dan JSON'a ve çevirmenlere teslim için XLIFF gidiş dönüşleri. Yaygın kalıplardan bazıları aşağıdadır.
# 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/Desteklenen biçimler
i18n-convert; mobil, web, yerelleştirme standartları ve veri alışverişi kategorilerinde 32'den fazla biçimi destekler.
Mobil
| 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 |
Yerelleştirme standartları
| 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 |
Veri alışverişi
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Veri kaybı uyarıları
Tüm biçimler aynı özelliklere sahip değildir. XLIFF notları, bağlamları ve çoğul biçimlerini destekler. CSV ise bunların hiçbirini desteklemez. Zengin bir biçimden daha basit bir biçime dönüştürme yaptığınızda i18n-convert tam olarak nelerin kaybolacağını bildirir.
$ 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-runCI entegrasyonu
CI/CD işlem hattınızda biçim eşzamanlamasını otomatikleştirin. Kaynak çeviri dosyanız değiştiğinde türetilmiş tüm biçimleri otomatik olarak yeniden oluşturun; böylece mobil, web ve çevirmen dosyaları eşzamanlı kalsın.
# .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Şunları da çevirin:
i18n Agent'ı şimdi deneyin
Çeviri dosyanızı buraya bırakın
JSON, YAML, PO, XML, CSV, Markdown, Properties
veya göz atmak için tıklayın
Hedef diller