Skip to main content

i18n-i teisendi

Teisenda enam kui 32 i18n-failivormingu vahel: Android XML, iOS Strings, XLIFF, PO, JSON, YAML ja muud. Võimaluse korral kadudeta, muul juhul selgete andmekao hoiatustega.

Probleem

Iga platvorm kasutab eri tõlkevormingut. Android kasutab strings.xml-i. iOS kasutab .strings- ja .stringsdict-faile. Veebirakendused kasutavad JSON-i või YAML-i. Tõlkijad ja TMS-platvormid soovivad XLIFF-i või PO-d. Kui pead stringe platvormide vahel jagama, jõuad lõpuks vormingute vahel kopeerimise ja kleepimise, ühekordsete skriptide kirjutamise või failide käsitsi ümberstruktureerimiseni. See on tüütu, veaohtlik ja läheb katki iga uue vormingu ilmumisel.

Üks mobiili- ja veebiprojekt võib hõlpsalt hõlmata enam kui viit eri tõlkefailivormingut. Nende käsitsi sünkroonis hoidmine on kaotatud lahing.

Lahendus

i18n-convert on üks CLI-tööriist, mis teisendab enam kui 32 i18n-failivormingu vahel. See tuvastab sisendvormingu automaatselt, säilitab võimalikult palju struktuuri ja hoiatab, kui teisendamine kaotaks andmeid, näiteks CSV-s mitmusevormid.

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

Automaatne tuvastamine

Sisendvorming tuvastatakse automaatselt faililaiendi ja sisu järgi. Lippe pole vaja.

Võimaluse korral kadudeta

Metaandmed, kommentaarid ja mitmusevormid säilitatakse, kui sihtvorming neid toetab.

Andmekao hoiatused

Kui teisendamine kaotaks teavet, saad enne ühegi faili kirjutamist selgesõnalised hoiatused.

Paigaldamine

Lihtsaimaks seadistamiseks paigalda npm-i kaudu, macOS-is Homebrew'ga või ehita lähtekoodist Cargo abil.

Terminal
npm install -g @i18n-agent/i18n-convert
npm-pakett sisaldab macOS-i, Linux'i ja Windows'i jaoks valmis binaare. Rusti tööriistaahelat pole vaja.

Levinud teisendused

Enamik meeskondi vajab korduvalt mõnda teisendust: JSON Android XML-i mobiili jaoks, PO JSON-i veebi jaoks ja XLIFF-i edasi-tagasi teisendused tõlkijatele üleandmiseks. Siin on mõned levinud mustrid.

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/

Toetatud vormingud

i18n-convert toetab enam kui 32 vormingut mobiili, veebi, lokaliseerimisstandardite ja andmevahetuse kategooriates.

Mobiil

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

Veeb

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

Lokaliseerimisstandardid

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

Andmevahetus

FormatExtensionFlag
CSV.csv--to csv
TSV.tsv--to tsv
Excel.xlsx--to xlsx

Andmekao hoiatused

Kõik vormingud pole võrdsed. XLIFF toetab märkmeid, kontekste ja mitmusevorme. CSV ei toeta neist ühtegi. Kui teisendad rikkalikust vormingust lihtsamasse, annab i18n-convert täpselt teada, mis kaotsi läheb.

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
Kasuta tootmiskeskkonnas enne lihtsamasse vormingusse teisendamist alati valikut --dry-run. See näitab kõiki hoiatusi faile kirjutamata.

CI lõiming

Automatiseeri vormingute sünkroonimine CI/CD-konveieris. Kui lähtetõlkefail muutub, loo kõik tuletatud vormingud automaatselt uuesti, et mobiili-, veebi- ja tõlkijafailid püsiksid sünkroonis.

.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
Ühenda CI-konveieris i18n-convert ja i18n-validate. Teisenda esmalt vormingud ning valideeri seejärel, et kõik sihtfailid oleksid täielikud ja korrektselt vormistatud.

Proovi i18n Agent'i kohe

Kukuta tõlkefail siia

JSON, YAML, PO, XML, CSV, Markdown, Properties

või klõpsa faili valimiseks

Sihtkeeled

Registreerumine pole vajalikKohene hinnang

Korduma kippuvad küsimused