Команда Scan¶
Описание¶
Сканирует директорию мода RimWorld для извлечения единиц перевода из Languages/*/{Keyed,DefInjected} и английских исходных строк из Defs (например, <defName>.label, <defName>.description). Эта команда помогает собрать все строки для дальнейшей обработки или перевода.
Синопсис¶
rimloc-cli scan --root <PATH> [--out-csv <FILE>] [--out-json <FILE>] [--lang <CODE>] \
[--source-lang <CODE>] [--source-lang-dir <DIR>] [--defs-dir <PATH>] [--defs-dict <PATH>] \
[--defs-type-schema <PATH>] [--keyed-nested] [--no-inherit] \
[--format <csv|json>] [--game-version <VER>] [--include-all-versions]
Опции¶
| Опция | Описание | Обязательно |
|---|---|---|
-r, --root <PATH> |
Путь к корневой директории мода RimWorld для сканирования. | Да |
--out-csv <FILE> |
Сохранить извлечённые записи в CSV-файл (включая заголовок). | Нет |
--out-json <FILE> |
Сохранить извлечённые записи в JSON-файл (требует --format json). |
Нет |
--lang <CODE> |
Код языка для сканирования (например, en, ru). Если не указан, сканируются все языки. |
Нет |
--source-lang <CODE> |
Код исходного языка для дополнительных проверок (опционально). | Нет |
--source-lang-dir <DIR> |
Явный путь к директории исходного языка (опционально). | Нет |
--defs-dir <PATH> |
Ограничить поиск английских строк в Defs указанным путём (относительно --root или абсолютный). |
Нет |
--defs-dict <PATH> |
Дополнительные словари Defs (JSON: DefType → [field paths]). |
Нет |
--defs-type-schema <PATH> |
Необязательная типовая схема (JSON) для расширения полей Defs (например, сгенерированная оффлайн). |
Нет |
--defs-field <NAME> |
Дополнительные поля Defs для извлечения (флаг можно повторять или перечислить через запятую). | Нет |
--keyed-nested |
Считать вложенные элементы под LanguageData дотированными ключами Keyed (экспериментально). | Нет |
--no-inherit |
Отключить наследование ParentName при сканировании Defs (строгий режим). | Нет |
--format <csv|json> |
Формат вывода в stdout. По умолчанию — csv. |
Нет |
--game-version <VER> |
Папка версии, по которой работать (например, 1.4, v1.4). Если не указано — берётся последняя. |
Нет |
--include-all-versions |
Сканировать все подпапки версий под корнем, отключая авто-выбор последней. | Нет |
-r, --root <PATH>¶
Путь к корневой директории мода RimWorld для сканирования. Обязательно.
--out-csv <FILE>¶
Сохранить извлечённые записи в CSV-файл (включая заголовок).
--out-json <FILE>¶
Сохранить JSON-вывод в файл (нужно указать --format json). Команда всё равно печатает результат в stdout, пока вы его не перенаправите.
--lang <CODE>¶
Код языка для сканирования (например, en, ru). Если не указан, сканируются все языки.
--source-lang <CODE>¶
Код исходного языка для дополнительных проверок (опционально).
--source-lang-dir <DIR>¶
Явный путь к директории исходного языка (опционально).
--defs-dir <PATH>¶
Ограничивает сканирование Defs указанным путём. Если не задан, Defs под выбранным корнем (или папкой версии) учитываются автоматически. Путь может быть относительным к --root или абсолютным.
--defs-field <NAME>¶
Добавляет имена дополнительных полей для извлечения из Defs (например, labelFemale, title). Флаг можно повторять либо передать список через запятую. Значения по умолчанию можно задать в rimloc.toml в секции [scan] defs_fields = [ ... ].
--format <csv|json>¶
Формат вывода в stdout. По умолчанию — csv.
Форматы вывода:
csv— выводит CSV в stdout (используйте--out-csvдля сохранения в файл).json— выводит JSON-массив единиц перевода в stdout; добавьте--out-json, чтобы сохранить копию на диске.
Каждая единица перевода имеет следующую структуру:
{
"path": "<путь к файлу>",
"line": <номер строки>,
"key": "<ключ Keyed>",
"value": "<строковое значение>"
}
Примеры¶
Извлечь все языки и вывести JSON:
rimloc-cli --quiet scan --root ./test/TestMod --format json | jq .
Сканирует все языки и выводит единицы перевода в формате JSON.
Сканировать только английский и сохранить результаты в CSV-файл:
rimloc-cli scan --root ./test/TestMod --lang en --out-csv out.csv
Извлекает английские записи и записывает их в out.csv.
Сохранять JSON и оставлять вывод в консоли:
rimloc-cli --quiet scan --root ./test/TestMod --format json --out-json ./logs/scan.json
Создаёт scan.json, одновременно печатая JSON в stdout.
Вывести CSV напрямую в stdout:
rimloc-cli scan --root ./test/TestMod
Сканирует все языки и выводит CSV-данные в консоль.
Решение проблем¶
- На выходе 0 записей — убедитесь, что существует
Languages/<lang>/KeyedилиDefInjected, и что код языка совпадает с--lang. Для английского источника проверьте, что под выбранным корнем естьDefs, либо укажите--defs-dir. - CSV некорректно открывается в редакторе — stdout по умолчанию в UTF-8 без BOM; используйте
--out-csv <файл>, если инструмент не умеет работать с конвейером. - В JSON не видно плейсхолдеров — они остаются в исходном XML; добавьте
--source-lang/--source-lang-dir, чтобы сравнивать с конкретным языком во время дальнейшей обработки.
См. также¶
Note
Весь пользовательский вывод CLI (справка, сообщения) локализован с помощью Fluent.