Pretvornik i18n
Pretvarjajte med več kot 32 oblikami datotek i18n: Android XML, iOS Strings, XLIFF, PO, JSON, YAML in drugimi. Kjer je mogoče brez izgub, sicer z jasnimi opozorili o izgubi podatkov.
Težava
Vsaka platforma uporablja drugo prevajalsko obliko. Android uporablja strings.xml. iOS uporablja .strings in .stringsdict. Spletne aplikacije uporabljajo JSON ali YAML. Prevajalci in platforme TMS želijo XLIFF ali PO. Ko morate nize deliti med platformami, jih kopirate med oblikami, pišete enkratne skripte ali ročno preurejate datoteke. To je zamudno, nagnjeno k napakam in se pokvari ob vsaki novi obliki.
Rešitev
i18n-convert je enotno orodje CLI, ki pretvarja med več kot 32 oblikami datotek i18n. Samodejno zazna vhodno obliko, ohrani čim več strukture in Vas opozori, kadar bi pretvorba izgubila podatke, na primer množinske oblike v 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 jsonSamodejno zaznavanje
Vhodna oblika se samodejno zazna iz pripone datoteke in vsebine. Zastavice niso potrebne.
Brez izgub, kjer je mogoče
Metapodatki, komentarji in množinske oblike se ohranijo, kadar jih ciljna oblika podpira.
Opozorila o izgubi podatkov
Kadar bi pretvorba izgubila podatke, pred zapisom katere koli datoteke prejmete izrecna opozorila.
Namestitev
Za najpreprostejšo nastavitev namestite prek npm, v macOS prek Homebrew ali pa izvorno kodo zgradite s Cargo.
npm install -g @i18n-agent/i18n-convertPogoste pretvorbe
Večina ekip redno potrebuje nekaj pretvorb: JSON v Android XML za mobilne naprave, PO v JSON za splet in povratne pretvorbe XLIFF za predajo prevajalcem. Spodaj je nekaj pogostih vzorcev.
# 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/Podprte oblike
i18n-convert podpira več kot 32 oblik v kategorijah mobilnih in spletnih rešitev, lokalizacijskih standardov ter izmenjave podatkov.
Mobilne rešitve
| 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 |
Splet
| 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 |
Lokalizacijski standardi
| 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 |
Izmenjava podatkov
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Opozorila o izgubi podatkov
Vse oblike niso enakovredne. XLIFF podpira opombe, kontekste in množinske oblike, CSV pa nič od tega. Ko bogato obliko pretvorite v preprostejšo, i18n-convert natančno sporoči, kaj bo izgubljeno.
$ 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-runIntegracija CI
Sinhronizacijo oblik avtomatizirajte v svojem pipeline CI/CD. Ko se izvorna prevajalska datoteka spremeni, samodejno znova ustvarite vse izpeljane oblike, da mobilne, spletne in prevajalske datoteke ostanejo usklajene.
# .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 pushPreizkusite i18n Agent zdaj
Spustite prevajalsko datoteko sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
ali kliknite za izbiro
Ciljni jeziki