Skip to main content

Конвертер i18n

Перетворюйте файли між понад 32 форматами i18n: Android XML, iOS Strings, XLIFF, PO, JSON, YAML та іншими. Дані зберігаються без втрат, де це можливо; в інших випадках Ви отримаєте чіткі попередження.

Проблема

Кожна платформа використовує власний формат перекладу. Android використовує strings.xml, iOS — .strings і .stringsdict, а вебзастосунки — JSON або YAML. Перекладачам і платформам TMS потрібні XLIFF або PO. Коли рядками потрібно обмінюватися між платформами, доводиться копіювати й вставляти дані між форматами, писати одноразові скрипти або вручну перебудовувати файли. Це виснажливо, спричиняє помилки й перестає працювати з появою кожного нового формату.

В одному проєкті для мобільних і вебзастосунків легко може бути понад 5 різних форматів файлів перекладу. Синхронізувати їх вручну вкрай складно.

Рішення

i18n-convert дає змогу перетворювати файли між понад 32 форматами i18n за допомогою одного CLI-інструмента. Він автоматично визначає вхідний формат, максимально зберігає структуру та попереджає Вас, якщо перетворення призведе до втрати даних, наприклад форм множини в 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

Автоматичне визначення

Вхідний формат автоматично визначається за розширенням і вмістом файлу. Прапорці не потрібні.

Без втрат, де це можливо

Метадані, коментарі та форми множини зберігаються, якщо цільовий формат їх підтримує.

Попередження про втрату даних

Якщо перетворення призведе до втрати інформації, Ви отримаєте чіткі попередження до записування будь-якого файлу.

Встановлення

Для найпростішого налаштування встановіть інструмент через npm, на macOS скористайтеся Homebrew або зберіть його з вихідного коду за допомогою Cargo.

Terminal
npm install -g @i18n-agent/i18n-convert
Пакет npm містить готові виконувані файли для macOS, Linux і Windows. Набір інструментів Rust не потрібен.

Поширені перетворення

Більшості команд регулярно потрібні лише кілька перетворень: із JSON в Android XML для мобільних застосунків, із PO в JSON для вебзастосунків, а також двостороннє перетворення XLIFF для передавання перекладачам. Нижче наведено кілька поширених схем.

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/

Підтримувані формати

i18n-convert підтримує понад 32 формати для мобільних і вебзастосунків, стандартів локалізації та обміну даними.

Мобільні платформи

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

Вебплатформи

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

Стандарти локалізації

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

Обмін даними

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

Попередження про втрату даних

Можливості форматів різняться. XLIFF підтримує примітки, контекст і форми множини, а CSV — ні. Під час перетворення з багатофункціонального формату на простіший i18n-convert точно повідомляє, які дані буде втрачено.

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
Перед перетворенням на простіший формат у виробничому середовищі завжди використовуйте --dry-run. Так Ви побачите всі попередження без записування файлів.

Інтеграція з CI

Автоматизуйте синхронізацію форматів у своєму процесі CI/CD. Коли вихідний файл перекладу змінюється, автоматично створюйте заново всі похідні формати, щоб файли для мобільних і вебзастосунків та перекладачів залишалися синхронізованими.

.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
Поєднайте i18n-convert з i18n-validate у своєму процесі CI. Спочатку перетворіть формати, а потім перевірте повноту й правильність структури всіх цільових файлів.

Спробуйте i18n Agent зараз

Перетягніть сюди файл для перекладу

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

або натисніть, щоб вибрати

Цільові мови

Реєстрація не потрібнаМиттєвий розрахунок

Поширені запитання