Skip to main content

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.

Satu proyek seluler + web dapat dengan mudah melibatkan lebih dari 5 format file terjemahan berbeda. Menjaganya tetap sinkron secara manual adalah perjuangan tanpa akhir.

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

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

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

Terminal
npm install -g @i18n-agent/i18n-convert
Paket npm menyertakan binary siap pakai untuk macOS, Linux, dan Windows. Tidak diperlukan toolchain Rust.

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

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 Didukung

i18n-convert mendukung lebih dari 32 format untuk kategori seluler, web, standar lokalisasi, dan pertukaran data.

Seluler

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

Standar Lokalisasi

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

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.

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
Selalu gunakan --dry-run sebelum mengonversi ke format lebih sederhana di produksi. Opsi ini menampilkan semua peringatan tanpa menulis file.

Integrasi 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
# .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 pipeline CI. Konversikan format terlebih dahulu, lalu validasi bahwa semua file target lengkap dan berformat baik.

Coba i18n Agent Sekarang

Lepaskan file terjemahan Anda di sini

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

atau klik untuk menjelajahi

Bahasa target

Tidak perlu mendaftarEstimasi instan

Pertanyaan yang Sering Diajukan