Skip to main content

Convertor i18n

Convertiți între peste 32 de formate de fișiere i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML și altele. Fără pierderi acolo unde este posibil și cu avertismente clare când se pot pierde date.

Problema

Fiecare platformă folosește un alt format de traducere. Android utilizează strings.xml. iOS utilizează .strings și .stringsdict. Aplicațiile web utilizează JSON sau YAML. Traducătorii și platformele TMS preferă XLIFF sau PO. Când trebuie să partajați texte între platforme, ajungeți să le copiați manual între formate, să scrieți scripturi de unică folosință sau să restructurați manual fișierele. Procesul este anevoios, predispus la erori și trebuie refăcut de fiecare dată când apare un format nou.

Un singur proiect pentru dispozitive mobile și web poate implica cu ușurință peste 5 formate diferite de fișiere de traducere. Sincronizarea lor manuală este o luptă imposibil de câștigat.

Soluția

i18n-convert este un singur instrument CLI care convertește între peste 32 de formate de fișiere i18n. Detectează automat formatul de intrare, păstrează cât mai mult din structură și vă avertizează când o conversie ar pierde date, precum formele de plural într-un fișier 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

Detectare automată

Formatul de intrare este detectat automat după extensia și conținutul fișierului. Nu sunt necesare opțiuni.

Fără pierderi acolo unde este posibil

Metadatele, comentariile și formele de plural sunt păstrate atunci când formatul destinație le acceptă.

Avertismente privind pierderea datelor

Când o conversie ar pierde informații, primiți avertismente explicite înainte de scrierea oricărui fișier.

Instalare

Pentru cea mai simplă configurare, instalați prin npm, prin Homebrew pe macOS sau compilați din codul sursă folosind Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Pachetul npm include fișiere binare precompilate pentru macOS, Linux și Windows. Nu este necesar setul de instrumente Rust.

Conversii uzuale

Majoritatea echipelor au nevoie în mod repetat de câteva conversii: din JSON în Android XML pentru aplicațiile mobile, din PO în JSON pentru web și conversii dus-întors XLIFF pentru predarea fișierelor traducătorilor. Iată câteva modele uzuale.

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/

Formate acceptate

i18n-convert acceptă peste 32 de formate pentru dispozitive mobile, web, standarde de localizare și schimb de date.

Dispozitive mobile

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

Standarde de localizare

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

Schimb de date

FormatExtensionFlag
CSV.csv--to csv
TSV.tsv--to tsv
Excel.xlsx--to xlsx

Avertismente privind pierderea datelor

Formatele nu sunt toate echivalente. XLIFF acceptă note, contexte și forme de plural. CSV nu acceptă niciuna dintre acestea. Când convertiți dintr-un format complex într-unul mai simplu, i18n-convert vă indică exact ce se va pierde.

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
Folosiți întotdeauna --dry-run înainte de a converti într-un format mai simplu în mediul de producție. Astfel puteți vedea toate avertismentele fără a scrie niciun fișier.

Integrarea CI

Automatizați sincronizarea formatelor în fluxul dumneavoastră CI/CD. Când fișierul-sursă de traducere se modifică, regenerați automat toate formatele derivate, astfel încât fișierele pentru dispozitive mobile, web și traducători să rămână sincronizate.

.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
Combinați i18n-convert cu i18n-validate în fluxul CI. Convertiți mai întâi formatele, apoi validați dacă toate fișierele destinație sunt complete și corect structurate.

Încercați acum i18n Agent

Plasați aici fișierul de traducere

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

sau faceți clic pentru a-l selecta

Limbi țintă

Nu este necesară înregistrareaEstimare instantanee

Întrebări frecvente