i18n pārveidotājs
Pārveidojiet vairāk nekā 32 i18n failu formātus. Android XML, iOS Strings, XLIFF, PO, JSON, YAML un citus. Kur iespējams — bez zudumiem, citādi ar skaidriem brīdinājumiem par datu zudumu.
Problēma
Katra platforma izmanto citu tulkošanas formātu. Android izmanto strings.xml, iOS — .strings un .stringsdict, tīmekļa lietotnes — JSON vai YAML, bet tulkotāji un TMS platformas vēlas XLIFF vai PO. Ja virknes jālieto vairākās platformās, tās jākopē starp formātiem, jāraksta vienreizēji skripti vai manuāli jāpārstrukturē faili. Tas ir apnicīgi, kļūdaini un sabojājas ikreiz, kad parādās jauns formāts.
Risinājums
i18n-convert ir viens CLI rīks, kas pārveido vairāk nekā 32 i18n failu formātus. Tas automātiski nosaka ievades formātu, saglabā pēc iespējas vairāk struktūras un brīdina, ja pārveidošana zaudētu datus (piemēram, daudzskaitli CSV failā).
# 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 jsonAutomātiska noteikšana
Ievades formāts tiek automātiski noteikts pēc faila paplašinājuma un satura. Karodziņi nav vajadzīgi.
Kur iespējams, bez zudumiem
Metadati, komentāri un daudzskaitļa formas tiek saglabātas, ja mērķa formāts tos atbalsta.
Brīdinājumi par datu zudumu
Ja pārveidošana zaudētu informāciju, pirms faila ierakstīšanas saņemat skaidrus brīdinājumus.
Instalēšana
Vienkāršākai iestatīšanai instalējiet ar npm, macOS vidē — ar Homebrew vai būvējiet no pirmkoda ar Cargo.
npm install -g @i18n-agent/i18n-convertBiežākie pārveidojumi
Vairumam komandu atkārtoti vajadzīgi daži pārveidojumi: JSON par Android XML mobilajām ierīcēm, PO par JSON tīmeklim, XLIFF turp un atpakaļ nodošanai tulkotājiem. Lūk, daži bieži modeļi.
# 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/Atbalstītie formāti
i18n-convert atbalsta vairāk nekā 32 formātus mobilajām ierīcēm, tīmeklim, lokalizācijas standartiem un datu apmaiņai.
Mobilās ierīces
| 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 |
Tīmeklis
| 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ācijas standarti
| 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 |
Datu apmaiņa
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Brīdinājumi par datu zudumu
Ne visi formāti ir vienādi. XLIFF atbalsta piezīmes, kontekstus un daudzskaitļa formas, bet CSV — neko no tā. Pārveidojot izteiksmīgu formātu vienkāršākā, i18n-convert precīzi norāda, kas tiks zaudēts.
$ 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ācija
Automatizējiet formātu sinhronizāciju CI/CD konveijerā. Mainoties avota tulkošanas failam, automātiski ģenerējiet visus atvasinātos formātus no jauna, lai mobilo ierīču, tīmekļa un tulkotāju faili paliktu sinhronizēti.
# .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 pushIzmēģiniet i18n Agent tūlīt
Nometiet tulkošanas failu šeit
JSON, YAML, PO, XML, CSV, Markdown, Properties
vai noklikšķiniet, lai izvēlētos
Mērķa valodas