Skip to main content

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.

Un solo proyecto para dispositivos móviles y web puede implicar fácilmente más de 5 formatos de archivos de traducción. Mantenerlos sincronizados manualmente es una batalla perdida.

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.

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

Detecció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.

Terminal
npm install -g @i18n-agent/i18n-convert
El paquete npm incluye binarios precompilados para macOS, Linux y Windows. No necesita las herramientas de Rust.

Conversiones habituales

La mayoría de los equipos necesita repetir unas pocas conversiones: JSON a XML de Android para dispositivos 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.

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/

Formatos admitidos

i18n-convert admite más de 32 formatos de las categorías de dispositivos móviles, web, estándares de localización e intercambio de datos.

Dispositivos móviles

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

Estándares de localización

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

Intercambio de datos

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

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
Utilice siempre --dry-run antes de convertir a un formato más sencillo en producción. Verá todas las advertencias sin escribir ningún archivo.

Integració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 para dispositivos móviles, web y traductores.

.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
Combine i18n-convert con i18n-validate en su proceso de CI. Convierta primero los formatos y después valide que todos los archivos de destino estén completos y bien formados.

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

No es necesario registrarsePresupuesto al instante

Preguntas frecuentes