Convertitore i18n
Converta tra più di 32 formati di file i18n: XML Android, Strings iOS, XLIFF, PO, JSON, YAML e altri. Senza perdite ove possibile, con avvisi chiari quando alcuni dati non possono essere preservati.
Il problema
Ogni piattaforma usa un formato di traduzione diverso. Android usa strings.xml. iOS usa .strings e .stringsdict. Le app web usano JSON o YAML. I traduttori e le piattaforme TMS richiedono XLIFF o PO. Quando deve condividere le stringhe tra piattaforme, finisce per copiarle e incollarle tra formati, scrivere script monouso o ristrutturare manualmente i file. È noioso, soggetto a errori e smette di funzionare ogni volta che compare un nuovo formato.
La soluzione
i18n-convert è un unico strumento CLI che converte tra più di 32 formati di file i18n. Rileva automaticamente il formato di input, preserva quanta più struttura possibile e avvisa quando una conversione causerebbe la perdita di dati, come i plurali in 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 jsonRilevamento automatico
Il formato di input viene rilevato automaticamente dall'estensione e dal contenuto del file. Non sono necessari flag.
Senza perdite ove possibile
Metadati, commenti e forme plurali vengono preservati quando il formato di destinazione li supporta.
Avvisi sulla perdita di dati
Quando una conversione causerebbe la perdita di informazioni, riceve avvisi espliciti prima che venga scritto qualsiasi file.
Installazione
Installi tramite npm per la configurazione più semplice, tramite Homebrew su macOS oppure compili dal codice sorgente con Cargo.
npm install -g @i18n-agent/i18n-convertConversioni comuni
La maggior parte dei team esegue ripetutamente alcune conversioni: da JSON a XML Android per i dispositivi mobili, da PO a JSON per il web, conversioni di andata e ritorno XLIFF per lo scambio con i traduttori. Ecco alcuni pattern comuni.
# 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/Formati supportati
i18n-convert supporta più di 32 formati nelle categorie dispositivi mobili, web, standard di localizzazione e scambio di dati.
Dispositivi mobili
| 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 di localizzazione
| 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 |
Scambio di dati
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Avvisi sulla perdita di dati
Non tutti i formati sono equivalenti. XLIFF supporta note, contesti e forme plurali; CSV non supporta nessuno di questi elementi. Quando converte da un formato ricco a uno più semplice, i18n-convert indica con precisione cosa andrà perso.
$ 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-runIntegrazione con la CI
Automatizzi la sincronizzazione dei formati nella pipeline CI/CD. Quando cambia il file di traduzione di origine, rigeneri automaticamente tutti i formati derivati per mantenere sincronizzati i file destinati ai dispositivi mobili, al web e ai traduttori.
# .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 pushTraduca anche:
Provi subito i18n Agent
Trascinare qui il file di traduzione
JSON, YAML, PO, XML, CSV, Markdown, Properties
oppure fare clic per selezionarlo
Lingue di destinazione