Skip to main content

Převodník i18n

Převádějte mezi více než 32 formáty i18n souborů. Android XML, iOS Strings, XLIFF, PO, JSON, YAML a další. Kde je to možné, bezztrátově; kde ne, s jasnými varováními o ztrátě dat.

Problém

Každá platforma mluví jiným formátem překladů. Android používá strings.xml. iOS používá .strings a .stringsdict. Webové aplikace používají JSON nebo YAML. Překladatelé a TMS platformy chtějí XLIFF nebo PO. Když potřebujete sdílet řetězce mezi platformami, skončíte kopírováním mezi formáty, psaním jednorázových skriptů nebo ručním restrukturováním souborů. Je to únavné, náchylné k chybám a pokaždé se to rozbije, když se objeví nový formát.

Jeden mobilní + webový projekt může snadno zahrnovat 5+ různých formátů souborů překladů. Ručně je udržovat synchronizované je předem prohraný boj.

Řešení

i18n-convert je jediný CLI nástroj, který převádí mezi 32+ formáty i18n souborů. Automaticky zjistí vstupní formát, zachová co nejvíc struktury a varuje Vás, když by převod způsobil ztrátu dat (například plurály v 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

Automatická detekce

Vstupní formát se automaticky detekuje podle přípony souboru a obsahu. Nejsou potřeba žádné přepínače.

Bezztrátově, kde to jde

Metadata, komentáře a tvary plurálů se zachovají, pokud je cílový formát podporuje.

Varování o ztrátě dat

Když by převod způsobil ztrátu informací, dostanete explicitní varování ještě předtím, než se zapíše jakýkoli soubor.

Instalace

Nainstalujte přes npm pro nejsnazší nastavení, přes Homebrew na macOS, nebo sestavte ze zdrojů pomocí Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Balíček npm obsahuje předpřipravené binární soubory pro macOS, Linux a Windows. Rust toolchain není potřeba.

Běžné převody

Většina týmů opakovaně potřebuje několik převodů: JSON na Android XML pro mobil, PO na JSON pro web, XLIFF round-tripy pro předání překladatelům. Zde jsou běžné vzory.

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/

Podporované formáty

i18n-convert podporuje více než 32 formátů napříč mobilními a webovými platformami, lokalizačními standardy a kategoriemi pro výměnu dat.

Mobilní

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

Lokalizační standardy

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

Výměna dat

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

Varování o ztrátě dat

Ne všechny formáty jsou stejné. XLIFF podporuje poznámky, kontexty a tvary plurálů. CSV nepodporuje nic z toho. Když převádíte z bohatého formátu do jednoduššího, i18n-convert Vám přesně řekne, co se ztratí.

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
Před převodem do jednoduššího formátu v produkci vždy použijte --dry-run. Zobrazí Vám všechna varování, aniž by se zapsaly jakékoli soubory.

Integrace CI

Automatizujte synchronizaci formátů ve Vaší CI/CD pipeline. Když se změní zdrojový soubor s překlady, automaticky znovu vygenerujte všechny odvozené formáty, aby mobilní, webové a soubory pro překladatele zůstaly synchronizované.

.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
V CI pipeline zkombinujte i18n-convert s i18n-validate. Nejprve převeďte formáty a potom ověřte, že všechny cílové soubory jsou kompletní a správně naformátované.

Vyzkoušejte i18n Agent nyní

Sem přetáhněte svůj překladový soubor

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

nebo klikněte a vyberte soubor

Cílové jazyky

Bez registraceOkamžitý odhad

Často kladené otázky