Экспорт и импорт¶
Используйте эти команды, когда нужно поделиться переводами или собрать изменения обратно в 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-папки (ru→Russian). Для нестандартных названий используйте--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обновит только изменившиеся/новые ключи внутри каждого файла.
См. также¶
- Сканирование — извлечение Keyed-записей.
- Проверка — дубликаты, пустоты и плейсхолдеры в XML.
- Проверка PO — сверка плейсхолдеров перед импортом.
- Сборка мода — упаковать итоговый
.poв отдельный мод.
Решение проблем¶
- Отсутствуют ключи при импорте – выполните
scanи убедитесь, что PO сгенерирован из той же структуры. - Импорт ничего не записал – проверьте наличие папки
Languages/<lang>и ссылки в PO. - Проблемы с кодировкой – PO должен быть в UTF-8; при необходимости прогоните
msgconv --output=utf-8.