Перейти к содержанию

Экспорт и импорт

Используйте эти команды, когда нужно поделиться переводами или собрать изменения обратно в XML.

Export-po

export-po сохраняет единый .po файл из исходного языка мода. Передайте его переводчикам или CAT-инструментам после scan и validate.

Использование

rimloc-cli export-po --root <MOD> --out-po <FILE> [--lang <CODE>] [--source-lang <CODE>] [--source-lang-dir <DIR>]

Опции

Опция Описание Обязательно
-r, --root <MOD> Путь к моду RimWorld или каталогу Languages/<locale>, из которого экспортируем строки. Да
--out-po <FILE> Итоговый .po файл. Существующий файл будет перезаписан. Да
--lang <CODE> Целевой язык перевода для заголовка PO (например, ru, ja). Нет
--source-lang <CODE> ISO-код исходного языка (по умолчанию en). Нет
--source-lang-dir <DIR> Явное имя папки исходного языка (например, English). Перекрывает --source-lang. Нет

Примеры

Экспортировать тестовый мод на русский (с --quiet, чтобы stdout оставался чистым):

rimloc-cli --quiet export-po --root ./test/TestMod --out-po ./logs/TestMod.po --lang ru

Получить японскую локализацию из Languages/Japanese:

rimloc-cli export-po \
  --root ./Mods/MyMod \
  --out-po ./build/MyMod.ja.po \
  --lang ja \
  --source-lang ja

Использовать свою папку исходного языка (если вместо English другое имя):

rimloc-cli export-po --root ./Mods/MyMod --source-lang-dir Original --out-po ./out/mymod.po

Советы

  • Без --lang в заголовке останется значение по умолчанию (ru). Передайте нужный язык сразу.
  • --source-lang преобразует ISO-коды в rimworld-папки (ruRussian). Для нестандартных названий используйте --source-lang-dir.
  • Перед экспортом запустите validate, чтобы не отдавать переводчикам битые ключи.

Import-po

import-po читает .po файл и возвращает переводы в XML. Команда умеет работать с одним XML, обновлять структуру мода и выполнять «сухой» запуск.

Использование

rimloc-cli import-po --po <FILE> [--out-xml <XML> | --mod-root <MOD>] [--game-version <VER>] [опции]

Опции

Опция Описание Обязательно
--po <FILE> Путь к PO-файлу для импорта. Да
--out-xml <XML> Записать всё в один XML-файл (взаимоисключает --mod-root). Нет
--mod-root <MOD> Обновить файлы внутри мода согласно ссылкам из PO. Нет
--lang <CODE> Код целевого языка (по умолчанию ru). Нужен для сопоставления Languages/<lang>. Нет
--lang-dir <DIR> Явное имя папки языка (перекрывает --lang). Нет
--keep-empty Не отбрасывать пустые строки. Нет
--dry-run Показать план записи, ничего не создавая. Нет
--backup Делать .bak копии перед перезаписью файлов. Нет
--single-file Вместе с --mod-root складывает всё в Keyed/_Imported.xml. Нет
--game-version <VER> При --mod-root указывает подпапку версии (например, 1.4). Нет
--format text|json Формат вывода для dry-run и отчётов (по умолчанию text). Нет
--report После импорта вывести сводку (создано/обновлено/пропущено, всего ключей). Нет
--incremental Пропускать запись файлов, если содержимое не изменится (побайтно). Нет
--only-diff Для существующих файлов записывать только изменённые/новые ключи; неизменённые пропускать. Нет

Примеры

Посмотреть, какие файлы изменятся в моде:

rimloc-cli --quiet import-po \
  --po ./build/MyMod.ja.po \
  --mod-root ./Mods/MyMod \
  --lang ja \
  --dry-run

Записать переводы в один XML для ручной проверки (тихий режим для минимального stdout):

rimloc-cli --quiet import-po --po ./logs/TestMod.po --out-xml ./out/TestMod.ru.xml --keep-empty

Обновить мод на месте и сохранить резервные копии:

rimloc-cli --quiet import-po \
  --po ./build/MyMod.ja.po \
  --mod-root ./Mods/MyMod \
  --lang ja \
  --backup --report --format json

Сложить всё в _Imported.xml (полезно, если нет исходных файлов):

rimloc-cli --quiet import-po --po ./logs/TestMod.po --mod-root ./Mods/MyMod --single-file

Импортировать только изменения для уже существующих файлов:

```bash
rimloc-cli import-po \
  --po ./build/MyMod.ja.po \
  --mod-root ./Mods/MyMod \
  --only-diff --report --format json | jq .

```

Советы

  • --dry-run выводит таблицу путей и количества ключей — удобно для CI и ревью.
  • Включайте --backup, если правите рабочую копию, которую сложно восстановить.
  • --lang-dir помогает, когда папка называется нестандартно, например German (Formal).
  • Пустые строки по умолчанию отбрасываются; используйте --keep-empty, если нужны заглушки.
  • --incremental пропустит файлы без реальных изменений содержимого.
  • --only-diff обновит только изменившиеся/новые ключи внутри каждого файла.

См. также

Решение проблем

  • Отсутствуют ключи при импорте – выполните scan и убедитесь, что PO сгенерирован из той же структуры.
  • Импорт ничего не записал – проверьте наличие папки Languages/<lang> и ссылки в PO.
  • Проблемы с кодировкой – PO должен быть в UTF-8; при необходимости прогоните msgconv --output=utf-8.