i18n-konverter
Konvertér mellem mere end 32 i18n-filformater. Android XML, iOS Strings, XLIFF, PO, JSON, YAML med mere. Uden tab, hvor det er muligt og med tydelige advarsler om datatab, når det ikke er.
Problemet
Alle platforme bruger forskellige oversættelsesformater. Android bruger strings.xml. iOS bruger .strings og .stringsdict. Webapps bruger JSON eller YAML. Oversættere og TMS-platforme foretrækker XLIFF eller PO. Når du skal dele tekster mellem platforme, ender du med at kopiere og indsætte mellem formater, skrive engangsscripts eller omstrukturere filer manuelt. Det er besværligt, giver let fejl og går i stykker, hver gang et nyt format dukker op.
Løsningen
i18n-convert er ét CLI-værktøj, der konverterer mellem mere end 32 i18n-filformater. Det registrerer automatisk inputformatet, bevarer så meget af strukturen som muligt og advarer dig, når en konvertering medfører datatab, f.eks. pluralisformer i CSV.
# 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 jsonAutomatisk registrering
Inputformatet registreres automatisk ud fra filtypen og indholdet. Der kræves ingen flag.
Uden tab, hvor det er muligt
Metadata, kommentarer og pluralisformer bevares, når målformatet understøtter dem.
Advarsler om datatab
Når en konvertering medfører tab af oplysninger, får du tydelige advarsler, før der skrives en fil.
Installation
Installér via npm for at få den nemmeste opsætning, via Homebrew på macOS eller byg fra kildekoden med Cargo.
npm install -g @i18n-agent/i18n-convertAlmindelige konverteringer
De fleste teams har løbende brug for nogle få konverteringer: JSON til Android XML til mobilapps, PO til JSON til webapps og XLIFF-rundture ved overdragelse til oversættere. Her er nogle almindelige mønstre.
# 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/Understøttede formater
i18n-convert understøtter mere end 32 formater inden for mobil, web, lokaliseringsstandarder og dataudveksling.
Mobil
| 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 |
Lokaliseringsstandarder
| 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 |
Dataudveksling
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Advarsler om datatab
Ikke alle formater er lige. XLIFF understøtter noter, kontekster og pluralisformer. CSV understøtter ingen af delene. Når du konverterer fra et avanceret format til et enklere format, fortæller i18n-convert dig præcis, hvad der går tabt.
$ 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-integration
Automatisér formatsynkronisering i din CI/CD-pipeline. Når din kildeoversættelsesfil ændres, kan du automatisk gendanne alle afledte formater, så mobil-, web- og oversætterfiler forbliver synkroniserede.
# .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 pushPrøv i18n Agent nu
Slip din oversættelsesfil her
JSON, YAML, PO, XML, CSV, Markdown, Properties
eller klik for at vælge en fil
Målsprog