i18n Converter
Convertissez entre plus de 32 formats de fichiers i18n. Android XML, iOS Strings, XLIFF, PO, JSON, YAML et bien d'autres. Sans perte lorsque c'est possible, avec des avertissements clairs en cas de perte de données.
Le problème
Chaque plateforme utilise un format de traduction différent. Android utilise strings.xml. iOS utilise .strings et .stringsdict. Les applications web utilisent JSON ou YAML. Les traducteurs et les plateformes TMS veulent du XLIFF ou du PO. Lorsque vous devez partager des chaînes entre plateformes, vous finissez par copier-coller entre formats, écrire des scripts ponctuels ou restructurer des fichiers à la main. C'est fastidieux, source d'erreurs, et ça casse à chaque nouveau format.
La solution
i18n-convert est un outil CLI unique qui convertit entre plus de 32 formats de fichiers i18n. Il détecte automatiquement le format d'entrée, préserve autant que possible la structure, et vous avertit lorsqu'une conversion risque de perdre des données (comme les pluriels en 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 jsonDétection automatique
Le format d'entrée est détecté automatiquement à partir de l'extension et du contenu du fichier. Aucune option n'est nécessaire.
Sans perte lorsque c'est possible
Les métadonnées, les commentaires et les formes plurielles sont préservés lorsque le format cible les prend en charge.
Avertissements de perte de données
Lorsqu'une conversion risque de perdre des informations, vous recevez des avertissements explicites avant l'écriture de tout fichier.
Installation
Installez via npm pour la configuration la plus simple, via Homebrew sur macOS, ou compilez depuis les sources avec Cargo.
npm install -g @i18n-agent/i18n-convertConversions courantes
La plupart des équipes ont besoin, de manière répétée, d'une poignée de conversions : JSON vers Android XML pour le mobile, PO vers JSON pour le web, allers-retours XLIFF pour la transmission aux traducteurs. Voici quelques schémas courants.
# 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/Formats pris en charge
i18n-convert prend en charge plus de 32 formats répartis dans les catégories mobile, web, normes de localisation et échange de données.
Mobile
| 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 |
Normes de localisation
| 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 |
Échange de données
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Avertissements de perte de données
Tous les formats ne se valent pas. XLIFF prend en charge les notes, les contextes et les formes plurielles. CSV ne prend en charge aucun de ces éléments. Lorsque vous convertissez d'un format riche vers un format plus simple, i18n-convert vous indique précisément ce qui sera perdu.
$ 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-runIntégration CI
Automatisez la synchronisation des formats dans votre pipeline CI/CD. Lorsque votre fichier de traduction source change, régénérez automatiquement tous les formats dérivés afin que les fichiers mobile, web et traducteur restent synchronisés.
# .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 pushTraduisez également :
Essayez i18n Agent maintenant
Déposez votre fichier de traduction ici
JSON, YAML, PO, XML, CSV, Markdown, Properties
ou cliquez pour parcourir
Langues cibles