Skip to main content

Conversor de i18n

Converta entre mais de 32 formatos de i18n: XML do Android, Strings do iOS, XLIFF, PO, JSON, YAML e outros. Sem perdas quando possível e com avisos claros quando houver perda de dados.

O problema

Cada plataforma utiliza um formato de tradução diferente. O Android utiliza strings.xml; o iOS, .strings e .stringsdict; as aplicações Web, JSON ou YAML; os tradutores e TMS pretendem XLIFF ou PO. Para compartilhar strings entre plataformas, acaba copiando e colando entre formatos, escrevendo scripts descartáveis ou reestruturando arquivos manualmente. É demorado, propenso a erros e quebra sempre que aparece um novo formato.

Um só projeto para dispositivos móveis e Web pode envolver facilmente mais de 5 formatos de arquivo de tradução. Mantê-los sincronizados manualmente é uma batalha perdida.

A solução

i18n-convert é uma única ferramenta de CLI que converte entre mais de 32 formatos de i18n. Detecta automaticamente a entrada, preserva o máximo possível da estrutura e avisa quando uma conversão perderia dados —por exemplo, plurais em 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

Detecção automática

O formato de entrada é detectado automaticamente pela extensão e pelo conteúdo. Não precisa de sinalizadores.

Sem perdas quando possível

Os metadados, comentários e formas plurais são preservados quando o formato de destino os aceita.

Avisos de perda de dados

Se uma conversão puder perder informação, recebe avisos explícitos antes de ser gravado qualquer arquivo.

Instalação

Instale através de npm para uma configuração simples, Homebrew no macOS ou compile a partir do código-fonte com Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
O pacote npm inclui binários pré-compilados para macOS, Linux e Windows. Não precisa da cadeia de ferramentas Rust.

Conversões habituais

A maioria das equipes repete algumas conversões: JSON para XML do Android em dispositivos móveis, PO para JSON na Web e viagens de ida e volta por XLIFF para entregar conteúdo aos tradutores. Eis alguns padrões frequentes.

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 compatíveis

i18n-convert é compatível com mais de 32 formatos nas categorias de dispositivos móveis, Web, normas de localização e intercâmbio de dados.

Dispositivos móveis

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

Normas de localização

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

Intercâmbio de dados

FormatExtensionFlag
CSV.csv--to csv
TSV.tsv--to tsv
Excel.xlsx--to xlsx

Avisos de perda de dados

Nem todos os formatos são iguais. O XLIFF aceita notas, contextos e formas plurais; o CSV não aceita nenhum destes elementos. Quando converte um formato rico em um mais simples, i18n-convert indica exatamente aquilo que será perdido.

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
Utilize sempre --dry-run antes de converter para um formato mais simples em produção. Verá todos os avisos sem gravar arquivos.

Integração com CI

Automatize a sincronização de formatos no pipeline de CI/CD. Quando o arquivo de tradução de origem mudar, volte a gerar automaticamente todos os formatos derivados para manter sincronizados os arquivos de dispositivos móveis, Web e tradutores.

.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 com i18n-validate no pipeline de CI. Converta primeiro os formatos e depois valide se todos os arquivos de destino estão completos e bem formados.

Experimente já o i18n Agent

Solte aqui seu arquivo de tradução

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

ou clique para selecionar

Idiomas de destino

Sem cadastroEstimativa imediata

Perguntas frequentes