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