Различия
Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
authors_main:admin_api:admin_api_json [2021/10/19 12:48] phaust создано |
authors_main:admin_api:admin_api_json [2026/08/16 20:24] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | {{indexmenu_n>3}} | ||
| ======Структура JSON ====== | ======Структура JSON ====== | ||
| Строка 10: | Строка 11: | ||
| "lines": [] /* Список линеек прохождения */, | "lines": [] /* Список линеек прохождения */, | ||
| "tasks": [] /* Список уровней игры*/, | "tasks": [] /* Список уровней игры*/, | ||
| + | "translations": {} /* Переводы игры, по языкам. Только у многоязычной игры */, | ||
| } | } | ||
| </code> | </code> | ||
| Строка 86: | Строка 88: | ||
| "answer_prefix": "фф", | "answer_prefix": "фф", | ||
| /* Префикс кодов */ | /* Префикс кодов */ | ||
| - | "default_line": "" | + | "default_line": "", |
| /* Линейка по умолчанию (название) */ | /* Линейка по умолчанию (название) */ | ||
| + | "lang": "ru", | ||
| + | /* Язык игры - язык, на котором написаны все тексты. | ||
| + | Пустой, если локализация не включена */ | ||
| + | "langs": "{\"en\":null,\"uk\":null,\"*\":\"en\"}" | ||
| + | /* Языки перевода: строка с JSON вида | ||
| + | "язык перевода" -> "язык, на который он падает" (null - на язык игры). | ||
| + | Ключ "*" - куда отправлять все остальные языки. | ||
| + | Подробнее: authors_main:game_management:localization */ | ||
| } | } | ||
| } | } | ||
| Строка 132: | Строка 142: | ||
| } | } | ||
| </code> | </code> | ||
| + | |||
| + | ===== Переводы ===== | ||
| + | |||
| + | Секция появляется только у игры, в которой есть переводы, и приезжает обратно при импорте. Ключ — код языка (две буквы) или ''"*"'' — псевдоязык с пометками «не переводить нигде». | ||
| + | |||
| + | <code JavaScript [enable_line_numbers="false"]> | ||
| + | { | ||
| + | "translations": { | ||
| + | "en": [ | ||
| + | { | ||
| + | "src": "Строка из игры, как она есть в тексте", | ||
| + | /* Оригинал. Он же ключ: перевод ищется по тексту, | ||
| + | а не по id задания или поля */ | ||
| + | "dst": "The string as the player sees it" | ||
| + | /* Перевод. Пустой - перевода нет */ | ||
| + | }, | ||
| + | { | ||
| + | "src": "Nokia", | ||
| + | "dst": "", | ||
| + | "skip": true | ||
| + | /* Не переводить эту строку в этом языке */ | ||
| + | } | ||
| + | ], | ||
| + | "*": [ | ||
| + | { "src": "Nokia", "dst": "", "skip": true } | ||
| + | /* Не переводить нигде: пометка на все языки сразу */ | ||
| + | ] | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | Внутри ''src'' и ''dst'' встречаются плейсхолдеры ''⟦N⟧'' и ''⟦/N⟧'' — вместо разметки, ссылок и картинок — и подстановки вроде ''!username!''. Перевод, который их не сохраняет, импорт отклоняет целиком. Что это за строки, откуда берутся и как их переводить — [[authors_main:game_management:localization|Многоязычная игра]] и [[authors_main:game_management:localization_ai|Перевод игры с помощью AI]]. | ||
| + | |||
| + | Секция ''translations'' заменяет словари языков целиком. Точечная правка — секция ''translations_edit'': список записей ''{"lang": "en", "src": "...", "dst": "..."}'', где ''"delete": 1'' или пустой ''dst'' удаляет пару. Две секции в одном импорте вместе не идут. | ||
| ===== Уровень ===== | ===== Уровень ===== | ||
| Уровень в игре также имеет составную структуру: | Уровень в игре также имеет составную структуру: | ||
| + | |||
| + | При [[admin_json_export#Экспорт с идентификаторами|экспорте с ids=1]] в секции ''task'' появляется ещё поле ''id'' - идентификатор уровня в базе, по которому его можно адресовать при [[admin_api_import_game#Точечное редактирование|точечном редактировании]]. У кодов, бонусов и подсказок в этом случае появляются ''id'' и ''number''. | ||
| <code JavaScript [enable_line_numbers="false"]> | <code JavaScript [enable_line_numbers="false"]> | ||