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.
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.
# 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 jsonAutomatische 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.
npm install -g @i18n-agent/i18n-convertVeelgebruikte 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.
# 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
| 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 |
Lokalisatiestandaarden
| 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 |
Gegevensuitwisseling
| Format | Extension | Flag |
|---|---|---|
| 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.
$ 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-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
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 pushProbeer i18n Agent nu
Zet je vertaalbestand hier neer
JSON, YAML, PO, XML, CSV, Markdown, Properties
of klik om een bestand te selecteren
Doeltalen