i18n keitiklis
Konvertuokite 32+ i18n failų formatų. Android XML, iOS Strings, XLIFF, PO, JSON, YAML ir kitus. Kai įmanoma – be nuostolių, o kitu atveju pateikiami aiškūs įspėjimai apie duomenų praradimą.
Problema
Kiekviena platforma naudoja kitą vertimo formatą. Android naudoja strings.xml, iOS – .strings ir .stringsdict, interneto programos – JSON ar YAML, o vertėjai ir TMS platformos nori XLIFF ar PO. Kai eilutes reikia bendrinti tarp platformų, tenka kopijuoti iš vieno formato į kitą, rašyti vienkartinius scenarijus arba rankomis pertvarkyti failus. Tai vargina, sukelia klaidų ir sugenda kiekvieną kartą atsiradus naujam formatui.
Sprendimas
i18n-convert yra vienas CLI įrankis, konvertuojantis 32+ i18n failų formatų. Jis automatiškai aptinka įvesties formatą, išsaugo kuo daugiau struktūros ir įspėja, jei konvertuojant būtų prarasta duomenų (pavyzdžiui, daugiskaita CSV faile).
# 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 jsonAutomatinis aptikimas
Įvesties formatas automatiškai aptinkamas pagal failo plėtinį ir turinį. Žymų nereikia.
Kai įmanoma, be nuostolių
Metaduomenys, komentarai ir daugiskaitos formos išsaugomi, kai tikslinis formatas juos palaiko.
Įspėjimai apie duomenų praradimą
Jei konvertuojant būtų prarasta informacijos, prieš įrašant failą pateikiami aiškūs įspėjimai.
Diegimas
Kad sąranka būtų paprasčiausia, įdiekite per npm, macOS aplinkoje – per Homebrew arba sukomponuokite iš pirminio kodo naudodami Cargo.
npm install -g @i18n-agent/i18n-convertDažnos konversijos
Daugumai komandų nuolat reikia kelių konversijų: JSON į Android XML mobiliesiems įrenginiams, PO į JSON internetui, XLIFF pirmyn ir atgal perduodant vertėjams. Štai keli dažni šablonai.
# 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/Palaikomi formatai
i18n-convert palaiko 32+ formatų mobiliesiems įrenginiams, internetui, lokalizavimo standartams ir duomenų mainams.
Mobilieji įrenginiai
| 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 |
Internetas
| 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 |
Lokalizavimo standartai
| 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 |
Duomenų mainai
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Įspėjimai apie duomenų praradimą
Ne visi formatai vienodi. XLIFF palaiko pastabas, kontekstus ir daugiskaitos formas, o CSV – nė vieno iš jų. Kai raiškų formatą konvertuojate į paprastesnį, i18n-convert tiksliai nurodo, kas bus prarasta.
$ 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
Automatizuokite formatų sinchronizavimą CI/CD konvejeryje. Pasikeitus šaltinio vertimo failui automatiškai sugeneruokite visus išvestinius formatus iš naujo, kad mobiliųjų įrenginių, interneto ir vertėjų failai liktų sinchronizuoti.
# .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 pushTaip pat verskite:
Išbandykite i18n Agent dabar
Nuvilkite vertimo failą čia
JSON, YAML, PO, XML, CSV, Markdown, Properties
arba spustelėkite norėdami pasirinkti
Tikslinės kalbos