i18n Converter
Konverter mellom 32+ i18n-filformater. Android XML, iOS Strings, XLIFF, PO, JSON, YAML og mer. Tapsfritt der det er mulig, med tydelige advarsler om datatap når det ikke er det.
Problemet
Hver plattform bruker sitt eget oversettelsesformat. Android bruker strings.xml. iOS bruker .strings og .stringsdict. Webapper bruker JSON eller YAML. Oversettere og TMS-plattformer vil ha XLIFF eller PO. Når du trenger å dele strenger mellom plattformer, ender du opp med å kopiere og lime inn mellom formater, skrive engangsskript eller omstrukturere filer manuelt. Det er tidkrevende, feilutsatt og slutter å fungere hver gang et nytt format dukker opp.
Løsningen
i18n-convert er ett enkelt CLI-verktøy som konverterer mellom 32+ i18n-filformater. Det oppdager automatisk inndataformatet, bevarer så mye struktur som mulig, og advarer deg når en konvertering vil føre til datatap (som flertallsformer 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 gjenkjenning
Inndataformatet gjenkjennes automatisk ut fra filendelse og innhold. Ingen flagg nødvendig.
Tapsfritt der det er mulig
Metadata, kommentarer og flertallsformer bevares når målformatet støtter dem.
Advarsler om datatap
Når en konvertering vil føre til tap av informasjon, får du tydelige advarsler før det skrives noen filer.
Installasjon
Installer via npm for enklest oppsett, Homebrew på macOS, eller bygg fra kildekode med Cargo.
npm install -g @i18n-agent/i18n-convertVanlige konverteringer
De fleste team trenger et fåtall konverteringer gjentatte ganger: JSON til Android XML for mobil, PO til JSON for web, XLIFF tur-retur for overlevering til oversettere. Her er noen vanlige 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/Støttede formater
i18n-convert støtter 32+ formater innenfor kategoriene mobil, web, lokaliseringsstandarder og datautveksling.
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 |
Datautveksling
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Advarsler om datatap
Ikke alle formater er like. XLIFF støtter notater, kontekster og flertallsformer. CSV støtter ingen av delene. Når du konverterer fra et rikt format til et enklere, forteller i18n-convert deg nøyaktig hva som vil gå tapt.
$ 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-integrasjon
Automatiser formatsynkronisering i CI/CD-pipelinen din. Når kildeoversettelsesfilen endres, regenereres automatisk alle avledede formater slik at mobil-, web- og oversetterfiler holdes synkronisert.
# .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 pushOversett også:
Prøv i18n Agent nå
Slipp oversettelsesfilen din her
JSON, YAML, PO, XML, CSV, Markdown, Properties
eller klikk for å bla gjennom
Målspråk