i18n-konverterare
Konvertera mellan fler än 32 i18n-filformat. Android XML, iOS Strings, XLIFF, PO, JSON, YAML med flera. Förlustfritt när det är möjligt, med tydliga varningar om dataförlust när det inte är det.
Problemet
Varje plattform använder sitt eget översättningsformat. Android använder strings.xml. iOS använder .strings och .stringsdict. Webbappar använder JSON eller YAML. Översättare och TMS-plattformar vill ha XLIFF eller PO. När du behöver dela strängar mellan plattformar slutar det ofta med att du kopierar och klistrar mellan format, skriver tillfälliga skript eller omstrukturerar filer manuellt. Det är tidskrävande, lätt att göra fel i och går sönder varje gång ett nytt format dyker upp.
Lösningen
i18n-convert är ett enda kommandoradsverktyg som konverterar mellan fler än 32 i18n-filformat. Det identifierar automatiskt indataformatet, bevarar så mycket av strukturen som möjligt och varnar dig när en konvertering skulle orsaka dataförlust, till exempel av pluralformer 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 identifiering
Indataformatet identifieras automatiskt utifrån filändelsen och innehållet. Inga flaggor behövs.
Förlustfritt när det är möjligt
Metadata, kommentarer och pluralformer bevaras när målformatet stöder dem.
Varningar om dataförlust
När en konvertering skulle medföra att information går förlorad får du tydliga varningar innan någon fil skrivs.
Installation
Installera via npm för enklast möjliga konfiguration, via Homebrew på macOS eller bygg från källkoden med Cargo.
npm install -g @i18n-agent/i18n-convertVanliga konverteringar
De flesta team behöver återkommande göra några få konverteringar: JSON till Android XML för mobilappar, PO till JSON för webben och tur-och-retur-konvertering med XLIFF vid överlämning till översättare. Här är några vanliga mönster.
# 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/Format som stöds
i18n-convert stöder fler än 32 format inom kategorierna mobil, webb, lokaliseringsstandarder och datautbyte.
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 |
Webb
| 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 |
Datautbyte
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Varningar om dataförlust
Alla format är inte likvärdiga. XLIFF stöder anteckningar, kontext och pluralformer. CSV stöder inget av detta. När du konverterar från ett innehållsrikt format till ett enklare visar i18n-convert exakt vad som kommer att gå förlorat.
$ 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-integrering
Automatisera formatsynkroniseringen i ditt CI/CD-arbetsflöde. När källfilen med översättningar ändras genereras alla härledda format automatiskt på nytt, så att filer för mobil, webb och översättare hålls synkroniserade.
# .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Översätt även:
Prova i18n Agent nu
Släpp din översättningsfil här
JSON, YAML, PO, XML, CSV, Markdown, Properties
eller klicka för att välja en fil
Målspråk