i18n Converter
Pretvarajte između više od 32 formata i18n datoteka. Android XML, iOS Strings, XLIFF, PO, JSON, YAML i još mnogo toga. Bez gubitaka gdje god je moguće, uz jasna upozorenja o gubitku podataka kada nije.
Problem
Svaka platforma upotrebljava drukčiji format prijevoda. Android upotrebljava strings.xml. iOS upotrebljava .strings i .stringsdict. Web-aplikacije upotrebljavaju JSON ili YAML. Prevoditelji i TMS platforme zahtijevaju XLIFF ili PO. Kada trebate dijeliti tekstove među platformama, na kraju ih kopirate i lijepite između formata, pišete jednokratne skripte ili ručno preoblikujete datoteke. To je zamorno, podložno pogreškama i prestaje funkcionirati svaki put kada se pojavi novi format.
Rješenje
i18n-convert jedinstven je CLI alat koji pretvara između više od 32 formata i18n datoteka. Automatski otkriva ulazni format, čuva što je moguće više strukture i upozorava Vas kada bi se pretvorbom izgubili podaci (poput množina u CSV formatu).
# 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 jsonAutomatsko otkrivanje
Ulazni format automatski se otkriva na temelju nastavka i sadržaja datoteke. Oznake nisu potrebne.
Bez gubitaka gdje god je moguće
Metapodaci, komentari i oblici množine čuvaju se kada ih ciljni format podržava.
Upozorenja o gubitku podataka
Kada bi se pretvorbom izgubile informacije, primit ćete jasna upozorenja prije zapisivanja bilo koje datoteke.
Instalacija
Za najjednostavnije postavljanje instalirajte putem npm-a, putem Homebrewa na macOS-u ili izgradite iz izvornog koda pomoću Carga.
npm install -g @i18n-agent/i18n-convertUobičajene konverzije
Većini timova redovito treba nekoliko pretvorbi: JSON u Android XML za mobilne uređaje, PO u JSON za web i povratne pretvorbe XLIFF-a radi predaje prevoditeljima. Slijedi nekoliko uobičajenih obrazaca.
# 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/Podržani formati
i18n-convert podržava više od 32 formata u kategorijama mobilnih uređaja, weba, lokalizacijskih standarda i razmjene podataka.
Mobilni uređaji
| 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 |
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 |
Razmjena podataka
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Upozorenja o gubitku podataka
Nisu svi formati jednaki. XLIFF podržava napomene, kontekste i oblike množine. CSV ne podržava ništa od toga. Kada pretvarate iz sadržajno bogatog u jednostavniji format, i18n-convert točno Vam navodi što će se izgubiti.
$ 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 integracija
Automatizirajte sinkronizaciju formata u svojem CI/CD procesu. Kada se izvorna datoteka prijevoda promijeni, automatski ponovno generirajte sve izvedene formate kako bi datoteke za mobilne uređaje, web i prevoditelje ostale usklađene.
# .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 pushIsprobajte i18n Agent odmah
Povucite datoteku za prijevod ovdje
JSON, YAML, PO, XML, CSV, Markdown, Properties
ili kliknite za odabir
Ciljni jezici