Skip to main content

Konwerter i18n

Konwertuj między ponad 32 formatami plików i18n: Android XML, iOS Strings, XLIFF, PO, JSON, YAML i innymi. Bezstratnie, gdy to możliwe, a w przeciwnym razie z jasnymi ostrzeżeniami o utracie danych.

Problem

Każda platforma posługuje się innym formatem tłumaczeń. Android używa strings.xml, iOS plików .strings i .stringsdict, a aplikacje internetowe JSON lub YAML. Tłumacze i platformy TMS oczekują XLIFF albo PO. Gdy trzeba udostępniać ciągi między platformami, kończy się na kopiowaniu między formatami, pisaniu jednorazowych skryptów lub ręcznej zmianie struktury plików. To żmudne, podatne na błędy i przestaje działać po pojawieniu się każdego nowego formatu.

Jeden projekt mobilny i internetowy może z łatwością używać ponad 5 różnych formatów plików tłumaczeń. Ręczne utrzymywanie ich synchronizacji to walka z góry skazana na porażkę.

Rozwiązanie

i18n-convert to jedno narzędzie CLI, które konwertuje między ponad 32 formatami plików i18n. Automatycznie wykrywa format wejściowy, zachowuje możliwie najwięcej struktury i ostrzega, gdy konwersja spowodowałaby utratę danych, na przykład form liczby mnogiej w 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

Automatyczne wykrywanie

Format wejściowy jest wykrywany automatycznie na podstawie rozszerzenia i zawartości pliku. Flagi nie są potrzebne.

Bezstratnie, gdy to możliwe

Metadane, komentarze i formy liczby mnogiej są zachowywane, jeśli format docelowy je obsługuje.

Ostrzeżenia o utracie danych

Jeśli konwersja spowodowałaby utratę informacji, przed zapisaniem jakiegokolwiek pliku otrzymasz wyraźne ostrzeżenia.

Instalacja

Zainstaluj przez npm, aby uzyskać najprostszą konfigurację, przez Homebrew w macOS albo zbuduj ze źródeł za pomocą Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Pakiet npm zawiera gotowe pliki binarne dla systemów macOS, Linux i Windows. Zestaw narzędzi Rust nie jest potrzebny.

Typowe konwersje

Większość zespołów regularnie potrzebuje kilku konwersji: JSON na Android XML dla aplikacji mobilnej, PO na JSON dla aplikacji internetowej oraz XLIFF w obie strony przy przekazywaniu plików tłumaczom. Oto kilka typowych wzorców.

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/

Obsługiwane formaty

i18n-convert obsługuje ponad 32 formaty z kategorii aplikacji mobilnych, internetu, standardów lokalizacyjnych i wymiany danych.

Aplikacje mobilne

FormatExtensionFlag
Android XML.xml--to android-xml
iOS Strings.strings--to ios-strings
iOS Stringsdict.stringsdict--to ios-stringsdict
Flutter ARB.arb--to arb

Internet

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

Standardy lokalizacyjne

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

Wymiana danych

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

Ostrzeżenia o utracie danych

Nie wszystkie formaty są równoważne. XLIFF obsługuje notatki, kontekst i formy liczby mnogiej, a CSV nie obsługuje żadnego z tych elementów. Podczas konwersji z bogatego formatu do prostszego i18n-convert dokładnie informuje, co zostanie utracone.

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
Przed konwersją do prostszego formatu w środowisku produkcyjnym zawsze używaj --dry-run. Zobaczysz wszystkie ostrzeżenia bez zapisywania plików.

Integracja z CI

Zautomatyzuj synchronizację formatów w pipeline CI/CD. Po zmianie źródłowego pliku tłumaczeń automatycznie wygeneruj ponownie wszystkie formaty pochodne, aby pliki mobilne, internetowe i przeznaczone dla tłumaczy pozostawały zsynchronizowane.

.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
Połącz i18n-convert z i18n-validate w pipeline CI. Najpierw skonwertuj formaty, a następnie sprawdź, czy wszystkie pliki docelowe są kompletne i prawidłowo sformułowane.

Wypróbuj i18n Agent

Upuść tutaj plik tłumaczenia

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

lub kliknij, aby go wybrać

Języki docelowe

Rejestracja nie jest wymaganaNatychmiastowa wycena

Najczęściej zadawane pytania