Skip to main content

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.

Un singolo progetto mobile e web può facilmente comprendere più di 5 formati diversi di file di traduzione. Mantenerli sincronizzati manualmente è una battaglia persa.

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.

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

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

Terminal
npm install -g @i18n-agent/i18n-convert
Il pacchetto npm include binari precompilati per macOS, Linux e Windows. Non serve la toolchain Rust.

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

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/

Formati supportati

i18n-convert supporta più di 32 formati nelle categorie dispositivi mobili, web, standard di localizzazione e scambio di dati.

Dispositivi mobili

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 di localizzazione

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

Scambio di dati

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

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
Usi sempre --dry-run prima di convertire in produzione verso un formato più semplice. Visualizzerà tutti gli avvisi senza scrivere alcun file.

Integrazione 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
# .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
Combini i18n-convert con i18n-validate nella pipeline CI. Converta prima i formati, quindi verifichi che tutti i file di destinazione siano completi e ben formati.

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

Nessuna registrazione richiestaPreventivo immediato

Domande frequenti