Conversor de i18n
Convierta entre más de 32 formatos de i18n: XML de Android, Strings de iOS, XLIFF, PO, JSON, YAML y otros. Sin pérdidas siempre que sea posible y con advertencias claras cuando no lo sea.
El problema
Cada plataforma utiliza un formato de traducción distinto. Android usa strings.xml; iOS, .strings y .stringsdict; las aplicaciones web, JSON o YAML; y los traductores y plataformas TMS quieren XLIFF o PO. Para compartir cadenas entre plataformas, acaba copiando y pegando entre formatos, escribiendo scripts puntuales o reestructurando archivos a mano. Es tedioso, propenso a errores y se rompe cada vez que aparece un formato nuevo.
La solución
i18n-convert es una única herramienta de CLI que convierte entre más de 32 formatos de i18n. Detecta automáticamente la entrada, conserva toda la estructura posible y le avisa cuando una conversión perdería datos, como plurales 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 jsonDetección automática
El formato de entrada se detecta automáticamente por la extensión y el contenido. No necesita indicadores.
Sin pérdidas cuando sea posible
Los metadatos, comentarios y formas plurales se conservan si el formato de destino los admite.
Advertencias de pérdida de datos
Cuando una conversión vaya a perder información, recibirá advertencias expresas antes de escribir ningún archivo.
Instalación
Instálelo mediante npm para configurarlo con más facilidad, Homebrew en macOS o compílelo desde el código fuente con Cargo.
npm install -g @i18n-agent/i18n-convertConversiones habituales
La mayoría de los equipos necesita repetir unas pocas conversiones: JSON a XML de Android para móviles, PO a JSON para web y viajes de ida y vuelta por XLIFF para entregar contenido a traductores. Estos son algunos patrones habituales.
# 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/Formatos admitidos
i18n-convert admite más de 32 formatos de las categorías de móvil, web, estándares de localización e intercambio de datos.
Móvil
| 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 |
Estándares de localización
| 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 |
Intercambio de datos
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Advertencias de pérdida de datos
No todos los formatos son iguales. XLIFF admite notas, contextos y formas plurales; CSV no admite nada de ello. Al convertir un formato rico en otro más sencillo, i18n-convert le indica exactamente qué se perderá.
$ 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-runIntegración con CI
Automatice la sincronización de formatos en su proceso de CI/CD. Cuando cambie el archivo de traducción de origen, vuelva a generar automáticamente todos los formatos derivados para mantener sincronizados los archivos de móvil, web y traductores.
# .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 pushTambién puede traducir:
Pruebe i18n Agent ahora
Arrastre y suelte aquí su archivo de traducción
JSON, YAML, PO, XML, CSV, Markdown, Properties
o haga clic para seleccionar
Idiomas de destino