Skip to main content

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.

Viename mobiliosios ir interneto programos projekte lengvai susidaro 5+ skirtingi vertimo failų formatai. Rankomis juos sinchronizuoti – pralaimėta kova.

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).

Terminal
# 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 json

Automatinis 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.

Terminal
npm install -g @i18n-agent/i18n-convert
npm pakete yra iš anksto sukomponuoti dvejetainiai failai, skirti macOS, Linux ir Windows. Rust įrankių grandinės nereikia.

Daž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.

Batch conversion
# 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

FormatExtensionFlag
Android XML.xml--to android-xml
iOS Strings.strings--to ios-strings
iOS Stringsdict.stringsdict--to ios-stringsdict
Flutter ARB.arb--to arb

Internetas

FormatExtensionFlag
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

FormatExtensionFlag
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

FormatExtensionFlag
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.

Terminal
$ 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-run
Prieš gamybinėje aplinkoje konvertuodami į paprastesnį formatą visada naudokite --dry-run. Taip pamatysite visus įspėjimus neįrašydami jokių failų.

CI 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
# .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 push
CI konvejeryje sujunkite i18n-convert su i18n-validate. Pirmiausia konvertuokite formatus, tada patikrinkite, ar visi tiksliniai failai išsamūs ir tinkamai suformuoti.

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

Registruotis nereikiaMomentinis įvertis

Dažnai užduodami klausimai