Экспорт и импорт¶
Используйте эти команды, когда нужно поделиться переводами или собрать изменения обратно в 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
.