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.
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.
# 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 jsonDetectare 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.
npm install -g @i18n-agent/i18n-convertConversii 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.
# 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
| 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 |
Standarde de localizare
| 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 |
Schimb de date
| Format | Extension | Flag |
|---|---|---|
| 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.
$ 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-runIntegrarea 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
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Î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ă