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

Команда 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.