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 е единен CLI инструмент за преобразуване между 32+ файлови формата за i18n. Той разпознава автоматично входния формат, запазва възможно най-голяма част от структурата и Ви предупреждава, когато при преобразуването ще се загубят данни, например форми за множествено число в 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, използвайте Homebrew в macOS или изградете инструмента от изходния код с 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

или натиснете, за да изберете файл

Целеви езици

Не се изисква регистрацияНезабавна оценка

Често задавани въпроси