Конвертор за i18n
Преобразувайте между 32+ файлови формата за i18n: Android XML, iOS Strings, XLIFF, PO, JSON, YAML и други. Преобразуването е без загуба на данни, когато е възможно, а в останалите случаи получавате ясни предупреждения.
Проблемът
Всяка платформа използва различен формат за превод. Android използва strings.xml, iOS — .strings и .stringsdict, а уеб приложенията — JSON или YAML. Преводачите и TMS платформите предпочитат XLIFF или PO. Когато трябва да споделяте низове между различни платформи, се налага да ги копирате ръчно между форматите, да пишете еднократни скриптове или да преструктурирате файловете на ръка. Това е бавно, създава предпоставки за грешки и трябва да се повтаря при появата на всеки нов формат.
Решението
i18n-convert е единен CLI инструмент за преобразуване между 32+ файлови формата за i18n. Той разпознава автоматично входния формат, запазва възможно най-голяма част от структурата и Ви предупреждава, когато при преобразуването ще се загубят данни, например форми за множествено число в CSV.
# 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.
npm install -g @i18n-agent/i18n-convertЧесто използвани преобразувания
Повечето екипи многократно използват няколко основни преобразувания: от JSON към Android XML за мобилни приложения, от PO към JSON за уеб приложения и двупосочно преобразуване на XLIFF при обмен на файлове с преводачи. Ето някои често срещани варианти.
# 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+ формата за мобилни и уеб приложения, стандарти за локализация и обмен на данни.
Мобилни приложения
| Format | Extension | Flag |
|---|---|---|
| Android XML | .xml | --to android-xml |
| iOS Strings | .strings | --to ios-strings |
| iOS Stringsdict | .stringsdict | --to ios-stringsdict |
| Flutter ARB | .arb | --to arb |
Уеб приложения
| Format | Extension | Flag |
|---|---|---|
| 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 |
Стандарти за локализация
| Format | Extension | Flag |
|---|---|---|
| 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 |
Обмен на данни
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Предупреждения за загуба на данни
Не всички формати предлагат еднакви възможности. XLIFF поддържа бележки, контекст и форми за множествено число, а CSV не поддържа нито една от тях. Когато преобразувате от по-богат към по-опростен формат, i18n-convert Ви показва точно какво ще бъде загубено.
$ 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Интегриране с CI
Автоматизирайте синхронизирането на форматите във Вашия CI/CD пайплайн. Когато изходният файл за превод се промени, всички производни формати се създават отново автоматично, така че файловете за мобилни и уеб приложения и тези за преводачите да останат синхронизирани.
# .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 Agent сега
Пуснете тук Вашия файл за превод
JSON, YAML, PO, XML, CSV, Markdown, Properties
или натиснете, за да изберете файл
Целеви езици