Skip to main content

i18n Converter

Converteer tussen meer dan 32 i18n-bestandsindelingen: Android XML, iOS Strings, XLIFF, PO, JSON, YAML en meer. Waar mogelijk zonder verlies, met duidelijke waarschuwingen als er gegevens verloren gaan.

Het probleem

Elk platform gebruikt een andere vertaalindeling. Android gebruikt strings.xml. iOS gebruikt .strings en .stringsdict. Webapps gebruiken JSON of YAML. Vertalers en TMS-platforms willen XLIFF of PO. Als je tekenreeksen tussen platforms wilt delen, moet je tussen indelingen kopiëren en plakken, eenmalige scripts schrijven of bestanden handmatig herstructureren. Dat is omslachtig, foutgevoelig en loopt telkens stuk zodra er een nieuwe indeling verschijnt.

Eén project voor mobiel en web kan al snel meer dan 5 verschillende indelingen voor vertaalbestanden bevatten. Die handmatig gesynchroniseerd houden is onbegonnen werk.

De oplossing

i18n-convert is één CLI-tool waarmee je tussen meer dan 32 i18n-bestandsindelingen converteert. De tool detecteert automatisch de invoerindeling, behoudt zo veel mogelijk structuur en waarschuwt je als bij een conversie gegevens verloren zouden gaan, zoals meervoudsvormen in CSV.

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

Automatische detectie

De invoerindeling wordt automatisch gedetecteerd aan de hand van de bestandsextensie en inhoud. Er zijn geen flags nodig.

Waar mogelijk zonder verlies

Metagegevens, opmerkingen en meervoudsvormen blijven behouden als de doelindeling deze ondersteunt.

Waarschuwingen voor gegevensverlies

Als bij een conversie informatie verloren zou gaan, krijg je duidelijke waarschuwingen voordat er een bestand wordt geschreven.

Installatie

Installeer de tool via npm voor de eenvoudigste configuratie, via Homebrew op macOS of bouw hem vanuit de broncode met Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Het npm-pakket bevat vooraf gebouwde binaire bestanden voor macOS, Linux en Windows. Je hebt geen Rust-toolchain nodig.

Veelgebruikte conversies

De meeste teams hebben regelmatig een paar conversies nodig: JSON naar Android XML voor mobiel, PO naar JSON voor web en heen-en-terugconversies met XLIFF voor de overdracht aan vertalers. Hieronder staan enkele veelgebruikte patronen.

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/

Ondersteunde indelingen

i18n-convert ondersteunt meer dan 32 indelingen voor mobiel, web, lokalisatiestandaarden en gegevensuitwisseling.

Mobiel

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

Web

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

Lokalisatiestandaarden

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

Gegevensuitwisseling

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

Waarschuwingen voor gegevensverlies

Niet alle indelingen zijn gelijkwaardig. XLIFF ondersteunt notities, contexten en meervoudsvormen. CSV ondersteunt geen van deze onderdelen. Als je een rijke indeling naar een eenvoudigere converteert, vertelt i18n-convert je precies wat er verloren gaat.

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
Gebruik altijd --dry-run voordat je in een productieomgeving naar een eenvoudigere indeling converteert. Zo zie je alle waarschuwingen zonder bestanden te schrijven.

CI-integratie

Automatiseer de synchronisatie van indelingen in je CI/CD-pipeline. Genereer alle afgeleide indelingen automatisch opnieuw wanneer je bronvertaalbestand verandert, zodat de bestanden voor mobiel, web en vertalers gesynchroniseerd blijven.

.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
Combineer i18n-convert met i18n-validate in je CI-pipeline. Converteer eerst de indelingen en valideer daarna of alle doelbestanden volledig en correct gevormd zijn.

Probeer i18n Agent nu

Zet je vertaalbestand hier neer

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

of klik om een bestand te selecteren

Doeltalen

Geen registratie nodigDirecte prijsindicatie

Veelgestelde vragen