Skip to main content

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.

Vienā mobilās un tīmekļa lietotnes projektā viegli var būt vairāk nekā 5 dažādi tulkošanas failu formāti. Manuāli tos sinhronizēt ir zaudēta cīņa.

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

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

Automā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.

Terminal
npm install -g @i18n-agent/i18n-convert
npm pakotnē ir iepriekš būvēti binārie faili macOS, Linux un Windows. Rust rīku ķēde nav vajadzīga.

Biežā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.

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/

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

FormatExtensionFlag
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

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

Lokalizācijas standarti

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

Datu apmaiņa

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

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
Pirms pārveidošanas vienkāršākā formātā produkcijas vidē vienmēr izmantojiet --dry-run. Tas parāda visus brīdinājumus, neierakstot nevienu failu.

CI 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
# .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 konveijerā apvienojiet i18n-convert ar i18n-validate. Vispirms pārveidojiet formātus, pēc tam validējiet, vai visi mērķa faili ir pilnīgi un pareizi veidoti.

Izmēģ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

Reģistrācija nav vajadzīgaTūlītēja tāme

Bieži uzdotie jautājumi