i18n Converter
Alakítson át több mint 32 i18n-fájlformátum között. Android XML, iOS Strings, XLIFF, PO, JSON, YAML és más formátumok. Ahol lehetséges, veszteségmentesen, ellenkező esetben egyértelmű adatvesztési figyelmeztetésekkel.
A probléma
Minden platform más fordítási formátumot használ. Az Android strings.xml, az iOS .strings és .stringsdict, a webalkalmazások JSON vagy YAML fájlokat használnak. A fordítók és TMS-platformok XLIFF vagy PO formátumot igényelnek. Ha karakterláncokat szeretne megosztani a platformok között, formátumok között másolgat, egyszer használatos szkripteket ír, vagy kézzel alakítja át a fájlokat. Ez fáradságos, hibalehetőségekkel teli, és minden új formátum megjelenésekor elromlik.
A megoldás
Az i18n-convert egyetlen parancssori eszköz, amely több mint 32 i18n-fájlformátum között alakít át. Automatikusan felismeri a bemeneti formátumot, a lehető legtöbb szerkezetet megőrzi, és figyelmeztet, ha az átalakítás adatvesztéssel járna (például CSV-ben a többes számú alakoknál).
# 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 jsonAutomatikus felismerés
A bemeneti formátumot a fájlkiterjesztés és a tartalom alapján automatikusan felismeri. Nincs szükség kapcsolókra.
Ahol lehetséges, veszteségmentes
A metaadatok, megjegyzések és többes számú alakok megmaradnak, ha a célformátum támogatja őket.
Adatvesztési figyelmeztetések
Ha egy átalakítás információvesztéssel járna, a fájl írása előtt kifejezett figyelmeztetéseket kap.
Telepítés
A legegyszerűbb beállításhoz telepítse npm-mel, macOS-en Homebrew-val, vagy fordítsa forrásból a Cargo segítségével.
npm install -g @i18n-agent/i18n-convertGyakori átalakítások
A legtöbb csapat rendszeresen néhány átalakítást használ: JSON-ból Android XML mobilhoz, PO-ból JSON webhez, XLIFF oda-vissza átalakítás fordítói átadáshoz. Íme néhány gyakori minta.
# 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/Támogatott formátumok
Az i18n-convert több mint 32 formátumot támogat mobil-, webes, lokalizációs szabvány- és adatcsere-kategóriákban.
Mobil
| 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 |
Lokalizációs szabványok
| 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 |
Adatcsere
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Adatvesztési figyelmeztetések
Nem minden formátum egyenértékű. Az XLIFF támogatja a megjegyzéseket, kontextusokat és többes számú alakokat. A CSV egyiket sem. Gazdag formátumból egyszerűbbe alakításkor az i18n-convert pontosan megmondja, mi fog elveszni.
$ 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-runCI-integráció
Automatizálja a formátumok szinkronizálását a CI/CD-folyamatban. A forrás fordításfájl változásakor automatikusan hozza létre újra az összes származtatott formátumot, hogy a mobil-, webes és fordítói fájlok szinkronban maradjanak.
# .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 pushAlso translate:
Try i18n Agent Now
Drop your translation file here
JSON, YAML, PO, XML, CSV, Markdown, Properties
or click to browse
Target languages