Skip to main content

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.

Un simple projet mobile + web peut facilement impliquer plus de 5 formats de fichiers de traduction différents. Les synchroniser manuellement est une bataille perdue d'avance.

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).

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

Dé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.

Terminal
npm install -g @i18n-agent/i18n-convert
Le paquet npm inclut des binaires précompilés pour macOS, Linux et Windows. Aucune chaîne d'outils Rust n'est requise.

Conversions 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.

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/

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

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

Normes de localisation

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

Échange de données

FormatExtensionFlag
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.

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
Utilisez toujours --dry-run avant de convertir vers un format plus simple en production. Cela affiche tous les avertissements sans écrire le moindre fichier.

Inté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
# .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
Combinez i18n-convert et i18n-validate dans votre pipeline CI. Convertissez d'abord les formats, puis validez que tous les fichiers cibles sont complets et bien formés.

Essayez i18n Agent maintenant

Déposez votre fichier de traduction ici

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

ou cliquez pour parcourir

Langues cibles

Aucune inscription requiseEstimation instantanée

Questions fréquentes