Перевод модов Project Zomboid Build 42: JSON-файлы
Перевод мода прост и помогает познакомить с ним больше игроков. Автор отмечает, что у Project Zomboid большое сообщество, не говорящее по-английски, в том числе многочисленные испаноязычные игроки, а тысячи игровых строк ещё не переведены. Далее рассматриваются каталоги и ключи переводов Build 42.
Главное правило
Автор утверждает, что Build 42 читает только файлы .json, а старые текстовые файлы Build 41 — например ItemName_ES.txt и Sandbox_ES.txt — игнорируются без предупреждения: вместо переведённой строки игра показывает сам ключ, например Tooltip_MiMod_Algo. Это утверждение о поведении игры не проверялось; в 42.21 возможны сообщения о пропущенном переводе. Сверьте формат и диагностику с целевым билдом.
Куда поместить файлы
Структура из руководства:
Папки перевода мода:
media/lua/shared/Translate/
├── ES/
│ ├── ItemName.json
│ ├── Tooltip.json
│ ├── Recipes.json
│ ├── IG_UI.json
│ └── Sandbox.json
└── EN/
└── (те же файлы)
Для каждого языка создайте папку с его кодом, например ES, EN, PTBR, FR или RU. Автор советует сверять точные коды по папкам, поставляемым вместе с игрой, в media/lua/shared/Translate/.
Какой ключ указывать в каждом файле
Таблица источника связывает категории JSON с назначением и форматом ключа:
| Файл | Назначение | Ключ | Пример |
|---|---|---|---|
| ItemName.json | Названия предметов | Module.Item | "SL.SableLuz": "Lightsaber" |
| Tooltip.json | Описание, показываемое при наведении курсора | Значение, указанное для Tooltip = у предмета | "Tooltip_SL_SableLuz": "Glows when you wield it." |
| Recipes.json | Названия рецептов | Имя craftRecipe | "SLEnsamblarSable": "Assemble lightsaber" |
| IG_UI.json | Текст интерфейса, названия машин и заголовки контейнеров | Ключ, который используется в Lua | "IGUI_VehicleNameWanaco": "Wanaco" |
| Sandbox.json | Параметры песочницы мода | Sandbox_ + имя параметра | "Sandbox_MiMod_Dificultad": "Difficulty" |
Полный пример ES/ItemName.json. В английском EN/ItemName.json используются те же ключи, но английские значения:
ES/ItemName.json (код источника):
{
"SL.SableLuz": "Sable de Luz",
"SL.CristalKyber": "Cristal Kyber (rojo)",
"SL.EmpunaduraSable": "Empuñadura de Sable de Luz"
}
Советы по файлам
- Сохраняйте файлы в UTF-8, иначе символы с диакритикой, например é и ñ, могут отображаться неправильно.
- Лишняя запятая делает JSON некорректным; после последней записи запятую не ставят. Если перевод не показывается, автор советует проверить JSON валидатором.
- Автор рекомендует включать английский и испанский переводы и утверждает, что английский служит резервным для остальных языков. Это редакционная рекомендация, а резервное поведение нужно подтвердить для целевого билда; наличие обоих языков не объявляется универсальным требованием игры.
- Названия оставляйте короткими, а подробности переносите в подсказку.