Update README.md to include Russian text sources and placeholder information
This commit is contained in:
11
README.md
11
README.md
@@ -1,2 +1,13 @@
|
|||||||
# Fanslayer
|
# Fanslayer
|
||||||
|
|
||||||
|
Набор вынесенных `ru`-текстов из соседних проектов:
|
||||||
|
|
||||||
|
- `aegis/`: backend-сообщения, ошибки, системные сообщения и валидация из `../Aegis`
|
||||||
|
- `lotus/`: контент, UI-тексты, ошибки и alert-ы из `../Lotus`
|
||||||
|
- `runtime/`: тексты экранов, статусы, ошибки и уведомления из `../Launcher-Runtime`
|
||||||
|
- `common/`: повторяющиеся кнопки, сущности, общие сообщения и базовая валидация
|
||||||
|
|
||||||
|
Плейсхолдеры в строках:
|
||||||
|
|
||||||
|
- `{name}`, `{count}`, `{error}`, `{version}`, `{stage}` и подобные значения подставляются на стороне потребителя
|
||||||
|
|
||||||
|
|||||||
52
aegis/errors.json
Normal file
52
aegis/errors.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"auth": {
|
||||||
|
"unauthorized": "Требуется авторизация",
|
||||||
|
"accessDenied": "Доступ запрещен",
|
||||||
|
"userNotFound": "Пользователь не найден",
|
||||||
|
"profileNotFound": "Профиль не найден",
|
||||||
|
"profileDoesNotBelongToUser": "Профиль не принадлежит пользователю",
|
||||||
|
"noTokenProvided": "Токен доступа не передан",
|
||||||
|
"recoverySessionNotFound": "Сессия восстановления не найдена",
|
||||||
|
"passwordResetChallengeExpired": "Сессия сброса пароля недействительна или истекла"
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"texturesNotFound": "Текстуры не найдены",
|
||||||
|
"skinNotFound": "Скин не найден",
|
||||||
|
"cloakNotFound": "Плащ не найден",
|
||||||
|
"maxProfilesAllowed": "Можно создать не более {max} профилей",
|
||||||
|
"profileNameAlreadyExists": "Профиль с таким именем уже существует",
|
||||||
|
"cannotDeleteGeneralProfile": "Нельзя удалить основной профиль"
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"profileAndFileRequired": "Необходимо передать profile_id и файл",
|
||||||
|
"profileNotFoundOrAccessDenied": "Профиль не найден или доступ запрещен",
|
||||||
|
"failedToUploadSkin": "Не удалось загрузить скин",
|
||||||
|
"failedToUploadCloak": "Не удалось загрузить плащ"
|
||||||
|
},
|
||||||
|
"discord": {
|
||||||
|
"botAuthNotConfigured": "Аутентификация бота не настроена",
|
||||||
|
"invalidBotToken": "Недействительный токен бота",
|
||||||
|
"failedToGenerateUniqueCode": "Не удалось сгенерировать уникальный код подключения",
|
||||||
|
"invalidConnectionCode": "Недействительный код подключения",
|
||||||
|
"discordAccountAlreadyConnected": "Этот Discord-аккаунт уже привязан к другому пользователю"
|
||||||
|
},
|
||||||
|
"messenger": {
|
||||||
|
"missingConversationIdOrToken": "Не переданы conversationId или token",
|
||||||
|
"directConversationMustHaveOneParticipant": "В личной беседе должен быть ровно один собеседник",
|
||||||
|
"groupConversationMustHaveName": "У групповой беседы должно быть название",
|
||||||
|
"cannotCreateConversationWithYourself": "Нельзя создать беседу с самим собой",
|
||||||
|
"directConversationAlreadyExists": "Личная беседа уже существует",
|
||||||
|
"replyMessageNotFound": "Сообщение для ответа не найдено",
|
||||||
|
"cannotAddParticipantsToDirectConversation": "В личную беседу нельзя добавлять участников",
|
||||||
|
"allUsersAlreadyParticipants": "Все пользователи уже состоят в беседе",
|
||||||
|
"conversationNotFound": "Беседа не найдена",
|
||||||
|
"onlyOwnerCanDeleteGroupConversation": "Только владелец может удалить групповую беседу",
|
||||||
|
"ownerCannotLeaveGroup": "Владелец не может покинуть группу. Сначала удалите беседу или передайте права.",
|
||||||
|
"onlyOwnerCanRemoveParticipants": "Только владелец может исключать участников",
|
||||||
|
"canOnlyRemoveParticipantsFromGroup": "Исключать участников можно только из групповых бесед",
|
||||||
|
"cannotRemoveOwnerFromConversation": "Нельзя удалить владельца из беседы",
|
||||||
|
"onlyOwnerCanUpdateConversationName": "Только владелец может менять название беседы",
|
||||||
|
"canOnlyUpdateGroupConversationName": "Менять название можно только у групповых бесед",
|
||||||
|
"unknownError": "Неизвестная ошибка"
|
||||||
|
}
|
||||||
|
}
|
||||||
38
aegis/system.json
Normal file
38
aegis/system.json
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"auth": {
|
||||||
|
"confirmEmailToCompleteRegistration": "Пожалуйста, подтвердите ваш email для завершения регистрации"
|
||||||
|
},
|
||||||
|
"userLogs": {
|
||||||
|
"userSignIn": {
|
||||||
|
"title": "Вход в аккаунт",
|
||||||
|
"description": "Пользователь успешно вошел в аккаунт"
|
||||||
|
},
|
||||||
|
"profileCreated": {
|
||||||
|
"title": "Создание профиля",
|
||||||
|
"description": "Вы создали профиль {name}"
|
||||||
|
},
|
||||||
|
"profileDeleted": {
|
||||||
|
"title": "Удаление профиля",
|
||||||
|
"description": "Вы удалили профиль {name}"
|
||||||
|
},
|
||||||
|
"profileSkinUploaded": {
|
||||||
|
"title": "Загрузка скина",
|
||||||
|
"description": "Вы загрузили скин для профиля {displayName}"
|
||||||
|
},
|
||||||
|
"profileCloakUploaded": {
|
||||||
|
"title": "Загрузка плаща",
|
||||||
|
"description": "Вы загрузили плащ для профиля {displayName}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"messenger": {
|
||||||
|
"fallbackUser": "Пользователь {shortId}",
|
||||||
|
"groupCreated": "{actorName} создал(а) группу \"{groupName}\"",
|
||||||
|
"participantsInvitedOne": "{actorName} пригласил(а) {userName}",
|
||||||
|
"participantsInvitedMany": "{actorName} пригласил(а): {userNames}",
|
||||||
|
"participantLeft": "{userName} покинул(а) группу",
|
||||||
|
"participantsRemovedOne": "{actorName} исключил(а) {userName}",
|
||||||
|
"participantsRemovedMany": "{actorName} исключил(а): {userNames}",
|
||||||
|
"groupNameChanged": "{actorName} изменил(а) название группы с \"{oldName}\" на \"{newName}\"",
|
||||||
|
"groupNameSet": "{actorName} установил(а) название группы: \"{newName}\""
|
||||||
|
}
|
||||||
|
}
|
||||||
11
aegis/validation.json
Normal file
11
aegis/validation.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"assets": {
|
||||||
|
"profileIdAndFileAreRequired": "Необходимо передать profile_id и файл"
|
||||||
|
},
|
||||||
|
"messenger": {
|
||||||
|
"subscribePayload": "Для подписки нужны conversationId и token"
|
||||||
|
},
|
||||||
|
"passwordReset": {
|
||||||
|
"challengeWindow": "ChallengeId выдается на 10 минут после успешной проверки кода восстановления"
|
||||||
|
}
|
||||||
|
}
|
||||||
10
common/dates.json
Normal file
10
common/dates.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"formats": {
|
||||||
|
"ruLocale": "ru-RU"
|
||||||
|
},
|
||||||
|
"labels": {
|
||||||
|
"expiresAt": "Заканчивается",
|
||||||
|
"updatedAt": "Обновлено",
|
||||||
|
"createdAt": "Создано"
|
||||||
|
}
|
||||||
|
}
|
||||||
30
common/general.json
Normal file
30
common/general.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"brand": {
|
||||||
|
"project": "Петрозаводск",
|
||||||
|
"runtime": "Launcher Runtime",
|
||||||
|
"minecraftState": "Суверенное государство-корпорация Minecraft"
|
||||||
|
},
|
||||||
|
"entities": {
|
||||||
|
"account": "Аккаунт",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"server": "Сервер",
|
||||||
|
"launcher": "Лаунчер",
|
||||||
|
"discord": "Discord",
|
||||||
|
"email": "Электронная почта",
|
||||||
|
"password": "Пароль",
|
||||||
|
"playerName": "Имя игрока",
|
||||||
|
"playerNameOrEmail": "Имя игрока или почта",
|
||||||
|
"activityFeed": "Лента активности",
|
||||||
|
"settings": "Настройки",
|
||||||
|
"security": "Безопасность"
|
||||||
|
},
|
||||||
|
"states": {
|
||||||
|
"online": "Онлайн",
|
||||||
|
"offline": "Офлайн",
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"waiting": "Ожидание",
|
||||||
|
"done": "Готово",
|
||||||
|
"unknown": "Неизвестно",
|
||||||
|
"unlimited": "Не ограничено"
|
||||||
|
}
|
||||||
|
}
|
||||||
23
common/messages.json
Normal file
23
common/messages.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"progress": {
|
||||||
|
"initialization": "Инициализация...",
|
||||||
|
"checkingStatus": "Проверка статуса...",
|
||||||
|
"checkingCode": "Проверка...",
|
||||||
|
"creating": "Создание...",
|
||||||
|
"deleting": "Удаление...",
|
||||||
|
"generatingCode": "Генерация кода...",
|
||||||
|
"loadingSettings": "Загрузка настроек...",
|
||||||
|
"loadingProfiles": "Загрузка профилей...",
|
||||||
|
"waitingForData": "Ожидание данных...",
|
||||||
|
"logsUnavailable": "Логи пока отсутствуют"
|
||||||
|
},
|
||||||
|
"success": {
|
||||||
|
"emailConfirmed": "Почта подтверждена. Теперь войдите в аккаунт.",
|
||||||
|
"passwordUpdated": "Пароль обновлен. Теперь можно войти."
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"serverNotSelected": "Сервер не выбран",
|
||||||
|
"profileNotSelected": "Выберите профиль, чтобы продолжить",
|
||||||
|
"noOptionals": "Нет доступных опциональных модов"
|
||||||
|
}
|
||||||
|
}
|
||||||
35
common/ui.json
Normal file
35
common/ui.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"actions": {
|
||||||
|
"continue": "Продолжить",
|
||||||
|
"back": "Назад",
|
||||||
|
"close": "Закрыть",
|
||||||
|
"cancel": "Отмена",
|
||||||
|
"create": "Создать",
|
||||||
|
"delete": "Удалить",
|
||||||
|
"save": "Сохранить",
|
||||||
|
"copy": "Копировать",
|
||||||
|
"copied": "Скопировано!",
|
||||||
|
"refresh": "Обновить",
|
||||||
|
"download": "Скачать",
|
||||||
|
"login": "Войти",
|
||||||
|
"logout": "Выйти",
|
||||||
|
"register": "Регистрация",
|
||||||
|
"generateCode": "Сгенерировать код",
|
||||||
|
"confirmCode": "Подтвердить код",
|
||||||
|
"loadMore": "Загрузить больше",
|
||||||
|
"activate": "Активировать"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"home": "Главная",
|
||||||
|
"howToStart": "Как начать",
|
||||||
|
"servers": "Сервера",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"messages": "Сообщения"
|
||||||
|
},
|
||||||
|
"controls": {
|
||||||
|
"toggleTheme": "Переключить тему",
|
||||||
|
"minimizeWindow": "Свернуть окно",
|
||||||
|
"closeWindow": "Закрыть окно",
|
||||||
|
"changeProfile": "Сменить профиль"
|
||||||
|
}
|
||||||
|
}
|
||||||
20
common/validation.json
Normal file
20
common/validation.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"required": {
|
||||||
|
"fillAllFields": "Пожалуйста, заполните все поля",
|
||||||
|
"email": "Введите email",
|
||||||
|
"selectImage": "Пожалуйста, выберите изображение",
|
||||||
|
"profileIdAndFile": "Необходимо передать profile_id и файл"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"minimumLength": "Пароль должен быть не менее 8 символов",
|
||||||
|
"mismatch": "Пароли не совпадают"
|
||||||
|
},
|
||||||
|
"code": {
|
||||||
|
"enterSixDigits": "Введите 6 цифр кода",
|
||||||
|
"invalid": "Код недействителен"
|
||||||
|
},
|
||||||
|
"session": {
|
||||||
|
"expired": "Сессия истекла",
|
||||||
|
"requestAgain": "{message}. Запросите код заново."
|
||||||
|
}
|
||||||
|
}
|
||||||
20
lotus/alerts.json
Normal file
20
lotus/alerts.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"profile": {
|
||||||
|
"me": {
|
||||||
|
"selectImage": "Пожалуйста, выберите изображение",
|
||||||
|
"skinUploadFailed": "Ошибка при загрузке скина",
|
||||||
|
"skinUploadFailedWithReason": "Ошибка загрузки скина: {error}",
|
||||||
|
"cloakUploadFailed": "Ошибка при загрузке плаща",
|
||||||
|
"cloakUploadFailedWithReason": "Ошибка загрузки плаща: {error}",
|
||||||
|
"createProfileFailed": "Ошибка при создании профиля",
|
||||||
|
"deleteGeneralProfileForbidden": "Нельзя удалить основной профиль",
|
||||||
|
"deleteProfileFailed": "Ошибка при удалении профиля",
|
||||||
|
"genericError": "Ошибка: {error}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"forgotPassword": {
|
||||||
|
"requestCodeAgain": "{message}. Запросите код заново."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
405
lotus/content.json
Normal file
405
lotus/content.json
Normal file
@@ -0,0 +1,405 @@
|
|||||||
|
{
|
||||||
|
"layout": {
|
||||||
|
"header": {
|
||||||
|
"navItems": [
|
||||||
|
{ "label": "Главная", "href": "/#hero" },
|
||||||
|
{ "label": "Как начать", "href": "/#onboarding" },
|
||||||
|
{ "label": "Сервера", "href": "/#servers" }
|
||||||
|
],
|
||||||
|
"accountFallback": "Аккаунт",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"messages": "Сообщения",
|
||||||
|
"logout": "Выйти",
|
||||||
|
"register": "Регистрация",
|
||||||
|
"login": "Авторизация",
|
||||||
|
"themeToggleAria": "Переключить тему"
|
||||||
|
},
|
||||||
|
"messengerMobileHeader": {
|
||||||
|
"accountFallback": "Аккаунт",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"messages": "Сообщения",
|
||||||
|
"logout": "Выйти",
|
||||||
|
"register": "Регистрация",
|
||||||
|
"login": "Вход",
|
||||||
|
"themeToggleAria": "Переключить тему"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"brand": "Петрозаводск",
|
||||||
|
"creator": "Нефильтрованные Приложения",
|
||||||
|
"navLinks": [
|
||||||
|
{ "label": "Лаунчер", "href": "/download" },
|
||||||
|
{ "label": "Публичная оферта", "href": "/offer" },
|
||||||
|
{ "label": "Правила", "href": "/rules" },
|
||||||
|
{ "label": "Конфиденциальность", "href": "/rules" },
|
||||||
|
{ "label": "Условия использования", "href": "/offer" }
|
||||||
|
],
|
||||||
|
"legalLinks": [
|
||||||
|
{ "label": "Публичная оферта", "href": "/offer" },
|
||||||
|
{ "label": "Правила", "href": "/rules" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sections": {
|
||||||
|
"hero": {
|
||||||
|
"statusChecking": "Проверка статуса...",
|
||||||
|
"statusOffline": "Государство офлайн",
|
||||||
|
"statusOnline": "Государство онлайн",
|
||||||
|
"badge": "kpp совет discord",
|
||||||
|
"title": "Петрозаводск",
|
||||||
|
"subtitleAccent": "Суверенное",
|
||||||
|
"subtitleTail": "государство-корпорация Minecraft",
|
||||||
|
"description": "На руинах старого мира КПП держит Кодекс и инфраструктуру, а частные сектора двигают экономику, политику и социальную жизнь через Совет Корпораций.",
|
||||||
|
"primaryCta": "Подать заявку гражданина",
|
||||||
|
"secondaryCta": "Скачать лаунчер"
|
||||||
|
},
|
||||||
|
"news": {
|
||||||
|
"eyebrow": "Информационный бюллетень",
|
||||||
|
"title": "Лента новостей Петрозаводска",
|
||||||
|
"description": "Официальные обновления КПП, решения Совета Корпораций и ключевые изменения экономической системы государства.",
|
||||||
|
"archive": "Онлайн-архив процедур",
|
||||||
|
"feedTitle": "Оперативная лента",
|
||||||
|
"entriesLabel": "{count} записей",
|
||||||
|
"tags": [
|
||||||
|
"Протокол Совета",
|
||||||
|
"Архив Discord"
|
||||||
|
],
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"title": "Открыт реестр частных секторов",
|
||||||
|
"content": "КПП запустила официальный реестр корпораций. Теперь заявки на регистрацию, вид деятельности и закрепление территорий проходят через единый Discord-канал с прозрачным протоколом.",
|
||||||
|
"category": "Государство",
|
||||||
|
"date": "11.02.2026",
|
||||||
|
"accent": "Регистрация бизнеса",
|
||||||
|
"note": "Оформление секторов и прав на территорию переведено в единый регламент."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "Совет Корпораций утвердил первый налоговый цикл",
|
||||||
|
"content": "Еженедельный взнос теперь зависит от размера территории и активности сектора. Средства казны направят на дороги, порталы и публичные логистические узлы.",
|
||||||
|
"category": "Экономика",
|
||||||
|
"date": "10.02.2026",
|
||||||
|
"accent": "Казна и инфраструктура",
|
||||||
|
"note": "Налоговая модель привязана к масштабу сектора и его фактической активности."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "Запущен канал инициатив граждан",
|
||||||
|
"content": "Игроки могут выдвигать предложения по законам и регламентам. Идеи с поддержкой переходят в повестку Совета и выносятся на голосование.",
|
||||||
|
"category": "Политика",
|
||||||
|
"date": "09.02.2026",
|
||||||
|
"accent": "Демократия снизу",
|
||||||
|
"note": "Поддержанные инициативы автоматически попадают в повестку Совета."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"title": "Арбитраж КПП переведен в тикетный формат",
|
||||||
|
"content": "Разбирательства между секторами и гражданами фиксируются в тикетах: стороны, доказательства и итоговое решение теперь доступны в архиве процедур.",
|
||||||
|
"category": "Право",
|
||||||
|
"date": "08.02.2026",
|
||||||
|
"accent": "Прозрачный арбитраж",
|
||||||
|
"note": "Каждый спор теперь сохраняется в архиве процедур с единым шаблоном решения."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"howToRegistration": {
|
||||||
|
"eyebrow": "Быстрый старт",
|
||||||
|
"title": "Как начать играть?",
|
||||||
|
"description": "Три простых шага, чтобы стать частью виртуального государства Петрозаводск",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"title": "Зарегистрироваться",
|
||||||
|
"description": "Создай аккаунт за минуту, чтобы синхронизировать прогресс и видеть статус вайпов.",
|
||||||
|
"action": "Перейти к регистрации",
|
||||||
|
"href": "/auth/register"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Скачать лаунчер",
|
||||||
|
"description": "Готовые пресеты модов, автообновления и системные пресеты под слабые ПК.",
|
||||||
|
"action": "Скачать",
|
||||||
|
"href": "/download"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Залететь на сервер",
|
||||||
|
"description": "Выбери любой сервак из лаунчера и появись в стартовом хабе. Дальше - дело твоей фантазии.",
|
||||||
|
"action": "Смотреть сервера",
|
||||||
|
"href": "#servers"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ourServers": {
|
||||||
|
"desktopTitle": "Главный сервер Петрозаводска",
|
||||||
|
"desktopSubtitle": "Один центр силы.",
|
||||||
|
"mobileTitle": "Главный сервер",
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"title": "Петрозаводск: Государственный контур",
|
||||||
|
"description": "Единый главный сервер Fabric 1.21.8, где КПП регулирует Кодекс и инфраструктуру, а частные сектора развивают экономику и политику.",
|
||||||
|
"online": "112/300 граждан",
|
||||||
|
"tags": [
|
||||||
|
"kpp",
|
||||||
|
"corporations",
|
||||||
|
"discord-governance"
|
||||||
|
],
|
||||||
|
"content": "Здесь строится государство-корпорация: регистрируйте сектор, получайте территорию, участвуйте в Совете Корпораций, платите налоги в казну и влияйте на развитие дорог, порталов и ивентов через официальные Discord-процедуры."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"aboutServers": {
|
||||||
|
"eyebrow": "Лор сервера",
|
||||||
|
"title": "Петрозаводск - суверенное государство-корпорация на руинах старого мира",
|
||||||
|
"description": "Его держит Коммунистическая Пивная Партия: не диктат, а менеджмент-бюро, которое ведет Кодекс, выделяет землю и следит, чтобы прогресс не убил дух товарищества. Малый онлайн управляется через частные сектора и Совет Корпораций, а экономика живет на налогах, общей казне и честной торговле.",
|
||||||
|
"timelineTitle": "Хроника государства",
|
||||||
|
"timelineStepsLabel": "4 этапа",
|
||||||
|
"timeline": [
|
||||||
|
{
|
||||||
|
"title": "После катастрофы",
|
||||||
|
"text": "На руинах старого мира появляется автономный город-государство."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Рождение КПП",
|
||||||
|
"text": "Партия берет на себя регуляцию, кодекс и инфраструктуру."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Власть корпораций",
|
||||||
|
"text": "Частные сектора становятся опорой экономики и социальных связей."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Цифровая столица",
|
||||||
|
"text": "Discord превращается в портал законов, торговли и политики."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pillars": [
|
||||||
|
{
|
||||||
|
"title": "КПП и порядок",
|
||||||
|
"text": "Партия фиксирует базовые правила, защищает от гриферства и выступает арбитром между корпорациями."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Частные сектора",
|
||||||
|
"text": "Гильдии получают землю, строят бизнес, ведут свою экономику и влияют на решения государства."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Совет корпораций",
|
||||||
|
"text": "Главы секторов собираются для законов, налогов и споров при партийном надзоре."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"discordJoinTitle": "Стань частью виртуального государства Петрозаводск",
|
||||||
|
"discordJoinButton": "Присоединиться к Discord серверу",
|
||||||
|
"discordLinkNoteTitle": "Для доступа ко всем функциям свяжи игровой аккаунт с Discord ботом",
|
||||||
|
"discordLinkNoteText": "После присоединения используй команду /connect в канале с ботом для синхронизации аккаунтов.",
|
||||||
|
"discordLinkButton": "Связать аккаунт",
|
||||||
|
"discordBlockEyebrow": "Центральная нервная система",
|
||||||
|
"discordBlockTitle": "Роль и функции Discord в проекте \"Петрозаводск\"",
|
||||||
|
"discordBlockDescription": "Discord здесь - это центральная нервная система и правительственный портал всего государства, где осуществляется 90% управленческой, экономической и социальной активности. Это не просто чат, а инструмент для легитимного управления малым, но сложно организованным сообществом.",
|
||||||
|
"discordFeatures": [
|
||||||
|
{
|
||||||
|
"title": "Единый источник правды",
|
||||||
|
"text": "Все официальные правила, протоколы заседаний и объявления публикуются в специальных каналах."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Связь с государством",
|
||||||
|
"text": "Через систему тикетов решаются все вопросы: регистрация бизнеса, согласование построек, жалобы."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Политическая система",
|
||||||
|
"text": "Проведение выборов, голосований и законодательных инициатив через ботов и опросы."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Экономическая инфраструктура",
|
||||||
|
"text": "Регистрация корпораций, торговая площадка, учет налогов и госзаказов."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Социальная организация",
|
||||||
|
"text": "Система ролей, частные пространства для корпораций, общественные каналы для общения."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Масштабируемость",
|
||||||
|
"text": "Легко добавляются новые боты для голосований, экономического учета и управления ролями."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"login": {
|
||||||
|
"eyebrow": "Вернуться в игру",
|
||||||
|
"title": "Авторизуйтесь, чтобы продолжить строительство в Петрозаводске",
|
||||||
|
"description": "Логин и пароль - все, что нужно для входа. Быстро и без лишнего.",
|
||||||
|
"separator": "или",
|
||||||
|
"createAccount": "Создать новый аккаунт",
|
||||||
|
"formTitle": "Вход",
|
||||||
|
"usernameLabel": "Имя игрока или почта",
|
||||||
|
"passwordLabel": "Пароль",
|
||||||
|
"rememberMe": "Запомнить меня",
|
||||||
|
"forgotPassword": "Забыли пароль?",
|
||||||
|
"submit": "Войти",
|
||||||
|
"submitLoading": "Вход...",
|
||||||
|
"footnote": "Авторизуясь, вы подтверждаете согласие с правилами проекта, которые валяются где-то в закромах головы руководства проекта и не только."
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"eyebrow": "Новый аккаунт",
|
||||||
|
"title": "Регистрация с подтверждением по коду из email",
|
||||||
|
"description": "Сначала создайте аккаунт, затем подтвердите почту одноразовым кодом.",
|
||||||
|
"existingAccount": "уже есть аккаунт?",
|
||||||
|
"loginLink": "Войти",
|
||||||
|
"formTitle": "Регистрация",
|
||||||
|
"usernameLabel": "Имя игрока",
|
||||||
|
"emailLabel": "Электронная почта",
|
||||||
|
"passwordLabel": "Пароль",
|
||||||
|
"repeatPasswordLabel": "Повтор пароля",
|
||||||
|
"submit": "Создать аккаунт",
|
||||||
|
"submitLoading": "Создание...",
|
||||||
|
"enterCodeFromEmail": "Ввести код из письма"
|
||||||
|
},
|
||||||
|
"forgotPassword": {
|
||||||
|
"title": "Восстановление пароля",
|
||||||
|
"emailLabel": "Электронная почта",
|
||||||
|
"emailPlaceholder": "player@mail.com",
|
||||||
|
"requestCodeButton": "Получить код восстановления",
|
||||||
|
"requestCodeButtonLoading": "Отправка...",
|
||||||
|
"otpTitle": "Подтверждение кода",
|
||||||
|
"otpDescription": "Введите одноразовый код из письма, чтобы перейти к смене пароля.",
|
||||||
|
"newPasswordTitle": "Новый пароль",
|
||||||
|
"newPasswordLabel": "Новый пароль",
|
||||||
|
"repeatPasswordLabel": "Повторите пароль",
|
||||||
|
"passwordPlaceholder": "********",
|
||||||
|
"savePasswordButton": "Сохранить новый пароль",
|
||||||
|
"savePasswordButtonLoading": "Сохранение..."
|
||||||
|
},
|
||||||
|
"otpModal": {
|
||||||
|
"submit": "Подтвердить код",
|
||||||
|
"submitLoading": "Проверка...",
|
||||||
|
"helper": "Введите {length}-значный код одним блоком или по символам."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"discord": {
|
||||||
|
"loading": "Загрузка...",
|
||||||
|
"eyebrow": "discord integration",
|
||||||
|
"title": "Подключение Discord",
|
||||||
|
"description": "Свяжите свой аккаунт с Discord для получения уведомлений и доступа к дополнительным функциям.",
|
||||||
|
"connectedTitle": "Discord подключен",
|
||||||
|
"connectedDescription": "Ваш аккаунт успешно связан с Discord",
|
||||||
|
"connectedIdLabel": "ID: {discordId}",
|
||||||
|
"benefitsTitle": "Преимущества подключенного Discord аккаунта:",
|
||||||
|
"benefits": [
|
||||||
|
"Уведомления о важных событиях",
|
||||||
|
"Доступ к специальным каналам",
|
||||||
|
"Синхронизация статуса и ролей"
|
||||||
|
],
|
||||||
|
"howToTitle": "Как подключить Discord",
|
||||||
|
"steps": [
|
||||||
|
"Нажмите кнопку \"Сгенерировать код\" ниже",
|
||||||
|
"Скопируйте полученный код подключения",
|
||||||
|
"Откройте Discord и отправьте команду /подключить [код] боту П.И.О.Н.Е.Р",
|
||||||
|
"Подождите несколько секунд - подключение произойдет автоматически"
|
||||||
|
],
|
||||||
|
"connectionCodeLabel": "Ваш код подключения:",
|
||||||
|
"copyButton": "Копировать",
|
||||||
|
"copiedButton": "Скопировано!",
|
||||||
|
"codeHint": "Код действителен до успешного подключения. После подключения код будет автоматически удален.",
|
||||||
|
"generateButton": "Сгенерировать код подключения",
|
||||||
|
"generateButtonLoading": "Генерация кода..."
|
||||||
|
},
|
||||||
|
"me": {
|
||||||
|
"quickStats": [
|
||||||
|
{ "label": "Игровое время", "value": "6ч 12м", "hint": "за последнюю неделю" },
|
||||||
|
{ "label": "Активные сервера", "value": "3", "hint": "кол-во серверов, на которые вы заходили" },
|
||||||
|
{ "label": "Уровень доступа", "value": "Explorer", "hint": "расширяется подпиской" }
|
||||||
|
],
|
||||||
|
"settingsBlueprint": [
|
||||||
|
{
|
||||||
|
"key": "notifications",
|
||||||
|
"title": "Системные уведомления",
|
||||||
|
"description": "Присылать события аккаунта и новости."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "loginAlerts",
|
||||||
|
"title": "Уведомления о входе",
|
||||||
|
"description": "Сигнализировать при подозрительных попытках."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "devPreviews",
|
||||||
|
"title": "Dev-превью",
|
||||||
|
"description": "Получать ранний доступ к экспериментам."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"roadmap": [
|
||||||
|
{
|
||||||
|
"label": "Supabase профили",
|
||||||
|
"detail": "Синк никнейма, ролей и статусов в реальном времени."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Подписки",
|
||||||
|
"detail": "Встроенная покупка и управление тарифами."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Аналитика сервера",
|
||||||
|
"detail": "Метрики времени онлайн, активность друзей."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"eyebrow": "inside profile",
|
||||||
|
"title": "Личный кабинет",
|
||||||
|
"description": "Пространство для управления аккаунтом.",
|
||||||
|
"personalization": "Персонализация",
|
||||||
|
"discordConnection": "Подключение Discord",
|
||||||
|
"viewerLoading": "Загрузка...",
|
||||||
|
"disableAnimation": "Выключить анимацию",
|
||||||
|
"enableAnimation": "Включить анимацию",
|
||||||
|
"disableAutoRotate": "Выключить автовращение",
|
||||||
|
"enableAutoRotate": "Включить автовращение",
|
||||||
|
"profilesRemaining": "Осталось {count} из 5",
|
||||||
|
"generalProfile": "Основной профиль",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"deleteProfile": "Удалить профиль",
|
||||||
|
"newProfile": "Новый профиль",
|
||||||
|
"newShort": "Новый",
|
||||||
|
"profileShort": "Профиль",
|
||||||
|
"accountTitle": "Ваш аккаунт",
|
||||||
|
"accountLoading": "Загрузка...",
|
||||||
|
"profileInfo": "Информация о профиле",
|
||||||
|
"defaultRole": "Гражданин",
|
||||||
|
"defaultCorporate": "Петрозаводск",
|
||||||
|
"balance": "Баланс",
|
||||||
|
"balanceValue": "1000 пт.",
|
||||||
|
"expiresAt": "Заканчивается",
|
||||||
|
"unlimited": "Не ограничено",
|
||||||
|
"editProfile": "Редактировать профиль",
|
||||||
|
"uploadLoading": "Загрузка...",
|
||||||
|
"updateSkin": "Обновить скин",
|
||||||
|
"updateCloak": "Обновить плащ",
|
||||||
|
"statsTitle": "Ваши показатели",
|
||||||
|
"activityTitle": "Лента активности",
|
||||||
|
"activityDescription": "Последние события аккаунта",
|
||||||
|
"loadMore": "Загрузить больше",
|
||||||
|
"subscriptionEyebrow": "подписка",
|
||||||
|
"subscriptionTitle": "Premium",
|
||||||
|
"subscriptionDescription": "Платная подписка, чтобы быть крутым",
|
||||||
|
"subscriptionFeatures": [
|
||||||
|
"+ Не придумал",
|
||||||
|
"+ Особые теги в профиле",
|
||||||
|
"+ Приоритет на серверах"
|
||||||
|
],
|
||||||
|
"subscriptionActivate": "Активировать",
|
||||||
|
"settingsTitle": "Настройки и безопасность",
|
||||||
|
"settingsDescription": "Тумблеры пока локальные, дальше уйдут в Supabase.",
|
||||||
|
"deleteModal": {
|
||||||
|
"title": "Подтверждение удаления",
|
||||||
|
"description": "Вы уверены, что хотите удалить профиль \"{name}\"? Это действие нельзя отменить.",
|
||||||
|
"submit": "Удалить",
|
||||||
|
"submitLoading": "Удаление...",
|
||||||
|
"cancel": "Отмена"
|
||||||
|
},
|
||||||
|
"createModal": {
|
||||||
|
"title": "Создать новый профиль",
|
||||||
|
"nameLabel": "Имя профиля",
|
||||||
|
"namePlaceholder": "Введите имя профиля",
|
||||||
|
"submit": "Создать",
|
||||||
|
"submitLoading": "Создание...",
|
||||||
|
"cancel": "Отмена"
|
||||||
|
},
|
||||||
|
"logsModal": {
|
||||||
|
"title": "Лента активности"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
lotus/errors.json
Normal file
37
lotus/errors.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"auth": {
|
||||||
|
"login": {
|
||||||
|
"fillAllFields": "Пожалуйста, заполните все поля",
|
||||||
|
"loginFailed": "Не удалось выполнить вход",
|
||||||
|
"serverDidNotReturnAccessToken": "Сервер не вернул токен доступа"
|
||||||
|
},
|
||||||
|
"register": {
|
||||||
|
"requiredFields": "Имя игрока, почта и пароль обязательны",
|
||||||
|
"passwordMismatch": "Пароли не совпадают",
|
||||||
|
"passwordTooShort": "Пароль должен быть не менее 8 символов",
|
||||||
|
"createAccountFailed": "Не удалось создать аккаунт",
|
||||||
|
"completeRegistrationFirst": "Сначала завершите регистрацию",
|
||||||
|
"verifyCodeFailed": "Не удалось подтвердить код"
|
||||||
|
},
|
||||||
|
"forgotPassword": {
|
||||||
|
"emailNotFound": "Email не найден",
|
||||||
|
"emailRequired": "Введите email",
|
||||||
|
"sendMailFailed": "Не удалось отправить письмо",
|
||||||
|
"enterSixDigits": "Введите 6 цифр кода",
|
||||||
|
"invalidCode": "Код недействителен",
|
||||||
|
"verifyCodeFailed": "Ошибка проверки кода",
|
||||||
|
"recoverySessionExpired": "Сессия восстановления истекла",
|
||||||
|
"fillAllFields": "Заполните все поля",
|
||||||
|
"passwordTooShort": "Пароль должен быть не менее 8 символов",
|
||||||
|
"passwordMismatch": "Пароли не совпадают",
|
||||||
|
"updatePasswordFailed": "Не удалось обновить пароль",
|
||||||
|
"passwordUpdateError": "Ошибка обновления пароля"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"discord": {
|
||||||
|
"loadingConnectionFailed": "Ошибка при загрузке информации о подключении",
|
||||||
|
"generateCodeFailed": "Ошибка при генерации кода подключения"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
runtime/alerts.json
Normal file
20
runtime/alerts.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"login": {
|
||||||
|
"errorToast": "Ошибка авторизации, проверьте правильность введенных данных"
|
||||||
|
},
|
||||||
|
"download": {
|
||||||
|
"logsUnavailable": "Логи запуска пока отсутствуют"
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"waitingForData": "Ожидание данных...",
|
||||||
|
"logsUnavailable": "Логи пока отсутствуют"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"initialization": "Инициализация...",
|
||||||
|
"loadingRuntimeData": "Загрузка данных runtime...",
|
||||||
|
"loadingProfiles": "Загрузка профилей...",
|
||||||
|
"connectingToRuntimeApi": "Подключение к runtime API...",
|
||||||
|
"loadingAuthMethods": "Загрузка способов авторизации...",
|
||||||
|
"checkingSavedSession": "Проверка сохраненной сессии..."
|
||||||
|
}
|
||||||
|
}
|
||||||
143
runtime/content.json
Normal file
143
runtime/content.json
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
{
|
||||||
|
"app": {
|
||||||
|
"bootMessages": {
|
||||||
|
"loadingRuntimeData": "Загрузка данных runtime...",
|
||||||
|
"loadingProfiles": "Загрузка профилей...",
|
||||||
|
"connectingToRuntimeApi": "Подключение к runtime API...",
|
||||||
|
"loadingAuthMethods": "Загрузка способов авторизации...",
|
||||||
|
"checkingSavedSession": "Проверка сохраненной сессии..."
|
||||||
|
},
|
||||||
|
"sceneTitles": {
|
||||||
|
"login": "Авторизация",
|
||||||
|
"profiles": "Выбор профиля",
|
||||||
|
"serverSelect": "Выбор сервера",
|
||||||
|
"serverDetails": "Сервер",
|
||||||
|
"serverSettings": "Настройки",
|
||||||
|
"serverOptionals": "Опциональные",
|
||||||
|
"download": "Загрузка",
|
||||||
|
"debug": "Отладка"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"windowFrame": {
|
||||||
|
"defaultTitle": "Не установлено",
|
||||||
|
"runtimeLabel": "Launcher Runtime",
|
||||||
|
"back": "Назад",
|
||||||
|
"profile": "Профиль",
|
||||||
|
"changeProfile": "Сменить профиль",
|
||||||
|
"logout": "Выйти",
|
||||||
|
"toggleTheme": "Переключить тему",
|
||||||
|
"minimizeWindow": "Свернуть окно",
|
||||||
|
"closeWindow": "Закрыть окно"
|
||||||
|
},
|
||||||
|
"login": {
|
||||||
|
"errorToast": "Ошибка авторизации, проверьте правильность введенных данных",
|
||||||
|
"title": "Петрозаводск",
|
||||||
|
"subtitleAccent": "Суверенное",
|
||||||
|
"subtitleTail": "государство-корпорация Minecraft",
|
||||||
|
"description": "На руинах старого мира КПП держит Кодекс и инфраструктуру, а частные сектора двигают экономику, политику и социальную жизнь через Совет Корпораций.",
|
||||||
|
"register": "Регистрация",
|
||||||
|
"discord": "Discord",
|
||||||
|
"backToSite": "Вернуться на сайт",
|
||||||
|
"usernameLabel": "Имя игрока или почта",
|
||||||
|
"passwordLabel": "Пароль",
|
||||||
|
"rememberMe": "Запомнить меня",
|
||||||
|
"forgotPassword": "Забыли пароль?",
|
||||||
|
"submit": "Войти",
|
||||||
|
"submitLoading": "Вход...",
|
||||||
|
"footnote": "Авторизуясь, вы подтверждаете согласие с правилами проекта, которые валяются где-то в закромах головы руководства проекта и не только."
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"eyebrow": "Actor profile",
|
||||||
|
"title": "Выберите профиль игрока",
|
||||||
|
"selected": "Выбран профиль: {title}",
|
||||||
|
"selectToContinue": "Выберите профиль, чтобы продолжить",
|
||||||
|
"empty": "Профили не получены от backend API.",
|
||||||
|
"userLabel": "Пользователь: {username}"
|
||||||
|
},
|
||||||
|
"serverSelect": {
|
||||||
|
"eyebrow": "Server lineup",
|
||||||
|
"title": "Выберите сервер для запуска",
|
||||||
|
"versionLabel": "Версия: {version}",
|
||||||
|
"unknownVersion": "unknown",
|
||||||
|
"preparingCards": "Подготовка карточек серверов...",
|
||||||
|
"serverNotSelected": "Сервер не выбран",
|
||||||
|
"selectAndContinue": "Выберите сервер и нажмите продолжить."
|
||||||
|
},
|
||||||
|
"serverPage": {
|
||||||
|
"serverNotSelected": "Сервер не выбран",
|
||||||
|
"eyebrow": "Лор сервера",
|
||||||
|
"title": "Петрозаводск - суверенное государство-корпорация на руинах старого мира",
|
||||||
|
"description": "Его держит Коммунистическая Пивная Партия: не диктат, а менеджмент-бюро, которое ведет Кодекс, выделяет землю и следит, чтобы прогресс не убил дух товарищества. Малый онлайн управляется через частные сектора и Совет Корпораций, а экономика живет на налогах, общей казне и честной торговле.",
|
||||||
|
"stats": {
|
||||||
|
"type": "Тип сервера",
|
||||||
|
"worldSize": "Размер мира",
|
||||||
|
"netherSize": "Размер ада",
|
||||||
|
"endSize": "Размер энда"
|
||||||
|
},
|
||||||
|
"timelineTitle": "Хроника государства",
|
||||||
|
"timeline": [
|
||||||
|
{
|
||||||
|
"title": "После катастрофы",
|
||||||
|
"text": "На руинах старого мира появляется автономный город-государство."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Рождение КПП",
|
||||||
|
"text": "Партия берет на себя регуляцию, кодекс и инфраструктуру."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Власть корпораций",
|
||||||
|
"text": "Частные сектора становятся опорой экономики и социальных связей."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Цифровая столица",
|
||||||
|
"text": "Discord превращается в портал законов, торговли и политики."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"serverSettings": {
|
||||||
|
"title": "Настройки сервера",
|
||||||
|
"loading": "Загрузка настроек...",
|
||||||
|
"memory": "Оперативная память",
|
||||||
|
"auto": "Авто",
|
||||||
|
"gb": "ГБ",
|
||||||
|
"java": "Java",
|
||||||
|
"recommended": "[RECOMMENDED]",
|
||||||
|
"flags": "Флаги"
|
||||||
|
},
|
||||||
|
"serverOptionals": {
|
||||||
|
"empty": "Нет доступных опциональных модов"
|
||||||
|
},
|
||||||
|
"download": {
|
||||||
|
"fallbackBootMessage": "Инициализация...",
|
||||||
|
"speedLabel": "Скорость: {value} Mbit/s",
|
||||||
|
"logsUnavailable": "Логи запуска пока отсутствуют"
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"title": "Debug Output",
|
||||||
|
"waitingForData": "Ожидание данных...",
|
||||||
|
"copy": "Копировать",
|
||||||
|
"kill": "Kill",
|
||||||
|
"logsUnavailable": "Логи пока отсутствуют"
|
||||||
|
},
|
||||||
|
"launchConsole": {
|
||||||
|
"stages": {
|
||||||
|
"assetVerify": "Проверка ассетов",
|
||||||
|
"hashing": "Хеширование",
|
||||||
|
"diff": "Сравнение файлов",
|
||||||
|
"download": "Скачивание",
|
||||||
|
"deleteExtra": "Удаление лишних файлов",
|
||||||
|
"done.part": "Подготовка",
|
||||||
|
"done": "Готово"
|
||||||
|
},
|
||||||
|
"stagePrefix": "[INFO] Этап: {stage}",
|
||||||
|
"totalDownloadFallback": "[INFO] Получен общий размер загрузки",
|
||||||
|
"totalDownload": "[INFO] Общий размер: {size}",
|
||||||
|
"launchRequested": "[INFO] Launch requested",
|
||||||
|
"downloadComplete": "[INFO] Download complete",
|
||||||
|
"minecraftStarted": "[INFO] Minecraft process started",
|
||||||
|
"minecraftFinished": "[INFO] Minecraft process finished",
|
||||||
|
"terminateRequested": "[WARN] Terminate requested",
|
||||||
|
"launchFailed": "[ERROR] {reason}",
|
||||||
|
"waiting": "Ожидание"
|
||||||
|
}
|
||||||
|
}
|
||||||
15
runtime/errors.json
Normal file
15
runtime/errors.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"general": {
|
||||||
|
"generic": "Ошибка",
|
||||||
|
"initializationFailed": "Ошибка инициализации: {error}"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"authorizationToast": "Ошибка авторизации, проверьте правильность введенных данных"
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"empty": "Профили не получены от backend API."
|
||||||
|
},
|
||||||
|
"servers": {
|
||||||
|
"serverNotSelected": "Сервер не выбран"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user