Konvertor i18n
Konvertujte medzi viac ako 32 formátmi súborov i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML a ďalšie. Kde je to možné, bez straty údajov; v ostatných prípadoch s jasnými upozorneniami.
Problém
Každá platforma používa iný formát prekladov. Android používa strings.xml. iOS používa .strings a .stringsdict. Webové aplikácie používajú JSON alebo YAML. Prekladatelia a platformy TMS požadujú XLIFF alebo PO. Keď potrebujete zdieľať reťazce medzi platformami, skončíte pri kopírovaní medzi formátmi, písaní jednorazových skriptov alebo manuálnej zmene štruktúry súborov. Je to zdĺhavé, náchylné na chyby a prestane fungovať vždy, keď sa objaví nový formát.
Riešenie
i18n-convert je jediný nástroj príkazového riadka, ktorý konvertuje medzi viac ako 32 formátmi súborov i18n. Automaticky rozpozná vstupný formát, zachová čo najviac štruktúry a upozorní Vás, ak by pri konverzii došlo k strate údajov (napríklad tvarov množného čísla 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 jsonAutomatické rozpoznanie
Vstupný formát sa rozpozná automaticky podľa prípony a obsahu súboru. Nie sú potrebné žiadne príznaky.
Bezstratovo, kde je to možné
Metadáta, komentáre a tvary množného čísla sa zachovajú, ak ich cieľový formát podporuje.
Upozornenia na stratu údajov
Ak by pri konverzii došlo k strate informácií, ešte pred zápisom súboru dostanete výslovné upozornenia.
Inštalácia
Najjednoduchšie nastavenie získate inštaláciou cez npm, v systéme macOS môžete použiť Homebrew alebo zostaviť nástroj zo zdrojového kódu pomocou Cargo.
npm install -g @i18n-agent/i18n-convertBežné konverzie
Väčšina tímov opakovane potrebuje niekoľko konverzií: JSON na Android XML pre mobilné zariadenia, PO na JSON pre web a obojsmerné prevody XLIFF pri odovzdávaní prekladateľom. Tu je niekoľko bežných postupov.
# 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/Podporované formáty
i18n-convert podporuje viac ako 32 formátov pre mobilné zariadenia, web, lokalizačné štandardy a výmenu údajov.
Mobilné zariadenia
| 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 |
Lokalizačné štandardy
| 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 |
Výmena údajov
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Upozornenia na stratu údajov
Nie všetky formáty sú rovnocenné. XLIFF podporuje poznámky, kontexty a tvary množného čísla. CSV nepodporuje nič z toho. Pri konverzii z bohatého formátu na jednoduchší Vám i18n-convert presne oznámi, čo sa stratí.
$ 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-runIntegrácia CI
Automatizujte synchronizáciu formátov vo svojej pipeline CI/CD. Po zmene zdrojového prekladového súboru automaticky znova vygenerujte všetky odvodené formáty, aby súbory pre mobilné zariadenia, web a prekladateľov zostali synchronizované.
# .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 pushPrekladajte aj:
Vyskúšajte i18n Agent teraz
Potiahnite súbor na preklad sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
alebo kliknite a vyberte súbor
Cieľové jazyky