mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 12:34:22 +08:00
670 lines
38 KiB
JSON
670 lines
38 KiB
JSON
{
|
||
"common": {
|
||
"next": "Далее",
|
||
"prev": "Назад",
|
||
"finish": "Завершить",
|
||
"cancel": "Отмена",
|
||
"save": "Сохранить",
|
||
"loading": "Загрузка...",
|
||
"confirm": "Подтвердить",
|
||
"success": "Успех",
|
||
"error": "Ошибка",
|
||
"delete": "Удалить",
|
||
"edit": "Редактировать",
|
||
"add": "Добавить",
|
||
"search": "Поиск",
|
||
"clear": "Очистить",
|
||
"close": "Закрыть",
|
||
"yes": "Да",
|
||
"no": "Нет",
|
||
"submit": "Отправить",
|
||
"reset": "Сбросить",
|
||
"import": "Импорт",
|
||
"export": "Экспорт",
|
||
"create": "Создать",
|
||
"update": "Обновить",
|
||
"refresh": "Обновить",
|
||
"view": "Просмотр",
|
||
"name": "Имя",
|
||
"status": "Статус",
|
||
"operation": "Операция",
|
||
"description": "Описание",
|
||
"total": "Всего {{count}} элементов",
|
||
"noData": "Нет данных",
|
||
"pleaseSelect": "Пожалуйста, выберите",
|
||
"pleaseEnter": "Пожалуйста, введите",
|
||
"readOnly": "Режим только для чтения",
|
||
"none": "Нет",
|
||
"more": "Больше"
|
||
},
|
||
"oobe": {
|
||
"title": "Добро пожаловать в SecScore",
|
||
"subtitle": "Эксперт по управлению образовательными баллами",
|
||
"step": "Шаг {{current}}/{{total}}",
|
||
"skip": "Пропустить",
|
||
"steps": {
|
||
"entry": {
|
||
"title": "Начало работы",
|
||
"description": "Выберите процедуру, которую нужно выполнить",
|
||
"enterOobe": "Войти в OOBE",
|
||
"connectPostgresAutoSync": "Подключиться к PostgreSQL с автоматической синхронизацией",
|
||
"skipDirect": "Пропустить OOBE и войти напрямую"
|
||
},
|
||
"postgresql": {
|
||
"title": "Подключение к PostgreSQL",
|
||
"description": "Введите строку подключения к PostgreSQL. Система автоматически подключится и синхронизируется.",
|
||
"connectionPlaceholder": "postgresql://user:password@host:port/database?sslmode=require",
|
||
"autoSyncAndEnter": "Автоматическое подключение и синхронизация"
|
||
},
|
||
"language": {
|
||
"title": "Выбор языка",
|
||
"description": "Пожалуйста, выберите предпочитаемый язык"
|
||
},
|
||
"theme": {
|
||
"title": "Настройка темы",
|
||
"description": "Выберите внешний вид интерфейса",
|
||
"mode": "Режим",
|
||
"lightMode": "Светлый",
|
||
"darkMode": "Темный",
|
||
"primaryColor": "Основной цвет",
|
||
"backgroundGradient": "Градиент фона"
|
||
},
|
||
"password": {
|
||
"title": "Настройка пароля",
|
||
"description": "Установите пароль для защиты данных (необязательно)",
|
||
"adminPassword": "Пароль администратора",
|
||
"adminPasswordHint": "Доступ ко всем функциям, 6 цифр",
|
||
"pointsPassword": "Пароль баллов",
|
||
"pointsPasswordHint": "Только операции с баллами, 6 цифр",
|
||
"passwordPlaceholder": "Введите 6 цифр",
|
||
"hint": "Оставьте пустым для пропуска, настройте позже в настройках"
|
||
},
|
||
"students": {
|
||
"title": "Импорт списка студентов",
|
||
"description": "Добавьте список студентов, чтобы начать управление баллами",
|
||
"import": "Импорт списка",
|
||
"manual": "Добавить вручную",
|
||
"importHint": "Поддерживает файлы Excel (.xlsx) или JSON",
|
||
"manualHint": "Вставьте несколько строк, одно имя студента на строку",
|
||
"dragDrop": "Перетащите файлы сюда или нажмите для выбора",
|
||
"supportedFormats": "Поддерживаемые форматы: .xlsx, .json",
|
||
"studentName": "Имя студента",
|
||
"addStudent": "Добавить студента",
|
||
"noStudents": "Студентов пока нет, пожалуйста, добавьте или импортируйте",
|
||
"studentCount": "Добавлено {{count}} студентов",
|
||
"studentExists": "Студент уже существует",
|
||
"importSuccess": "Успешно импортировано {{count}} студентов",
|
||
"noNewStudents": "Нет новых студентов для импорта",
|
||
"parseFailed": "Ошибка анализа файла",
|
||
"unsupportedFormat": "Неподдерживаемый формат файла"
|
||
},
|
||
"reasons": {
|
||
"title": "Настройка причин",
|
||
"description": "Добавьте распространенные причины изменения баллов",
|
||
"addReason": "Добавить причину",
|
||
"reasonName": "Название причины",
|
||
"points": "Баллы",
|
||
"positive": "Добавить баллы",
|
||
"negative": "Снять баллы",
|
||
"noReasons": "Причин пока нет, пожалуйста, добавьте распространенные причины",
|
||
"reasonCount": "Добавлено {{count}} причин",
|
||
"reasonExists": "Причина уже существует"
|
||
},
|
||
"start": {
|
||
"title": "Готово к использованию",
|
||
"description": "Все готово. Давайте начнем использовать SecScore!",
|
||
"features": {
|
||
"score": "Легко управляйте баллами студентов",
|
||
"history": "Полная история изменений баллов",
|
||
"settlement": "Поддержка расчета и архивирования"
|
||
},
|
||
"startButton": "Начать"
|
||
}
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "Системные настройки",
|
||
"tabs": {
|
||
"appearance": "Внешний вид",
|
||
"security": "Безопасность",
|
||
"account": "Учетная запись",
|
||
"database": "Подключение к базе данных",
|
||
"dataManagement": "Управление данными",
|
||
"urlProtocol": "Протокол URL",
|
||
"about": "О программе"
|
||
},
|
||
"language": "Язык",
|
||
"languageHint": "Выберите язык отображения интерфейса",
|
||
"fontFamily": "Глобальный шрифт",
|
||
"fontFamilyHint": "Выберите шрифт интерфейса (требуется обновление)",
|
||
"theme": "Тема",
|
||
"password": "Настройка пароля",
|
||
"themeMode": "Режим",
|
||
"lightMode": "Светлый",
|
||
"darkMode": "Темный",
|
||
"primaryColor": "Основной цвет",
|
||
"backgroundGradient": "Градиент фона",
|
||
"searchKeyboard": {
|
||
"title": "Клавиатура поиска",
|
||
"hint": "Выберите раскладку клавиатуры под полем поиска",
|
||
"disableToggle": "Отключить клавиатуру поиска",
|
||
"disableHint": "Клавиатура больше не будет отображаться под полем поиска",
|
||
"options": {
|
||
"qwerty26": "26 клавиш (QWERTY)",
|
||
"t9": "9 клавиш (T9)"
|
||
}
|
||
},
|
||
"interfaceZoom": "Масштаб интерфейса",
|
||
"zoomOptions": {
|
||
"small70": "Маленький (70%)",
|
||
"default100": "По умолчанию (100%)",
|
||
"large150": "Большой (150%)"
|
||
},
|
||
"general": {
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения"
|
||
},
|
||
"zoomHint": "Настройка общего размера интерфейса",
|
||
"mobile": {
|
||
"navigationTitle": "Входы на страницу",
|
||
"bottomNav": {
|
||
"label": "Функции нижней навигации",
|
||
"hint": "Выберите функции для отображения в нижней панели мобильного устройства. Панель отображает максимум 4 элемента, остальные переходят в «Ещё»."
|
||
},
|
||
"dragHint": "Перетащите для изменения порядка. Первые 4 элемента отображаются в нижней панели, остальные в «Ещё».",
|
||
"dropHere": "Отпустите здесь",
|
||
"bottomSection": "Нижняя панель (макс. 4)",
|
||
"moreSection": "Ещё",
|
||
"moveToMore": "Переместить в Ещё",
|
||
"moveToBottom": "Переместить вниз"
|
||
},
|
||
"zoomUpdated": "Масштаб интерфейса обновлен",
|
||
"updateFailed": "Ошибка обновления",
|
||
"security": {
|
||
"title": "Система защиты паролем",
|
||
"adminPassword": "Пароль администратора",
|
||
"pointsPassword": "Пароль баллов",
|
||
"recoveryString": "Строка восстановления",
|
||
"set": "Установлено",
|
||
"notSet": "Не установлено",
|
||
"generated": "Создано",
|
||
"notGenerated": "Не создано",
|
||
"enterPassword": "Введите 6 цифр (оставьте пустым для пропуска)",
|
||
"adminPasswordPlaceholder": "Введите 6 цифр пароля администратора (оставьте пустым для пропуска)",
|
||
"pointsPasswordPlaceholder": "Введите 6 цифр пароля баллов (оставьте пустым для пропуска)",
|
||
"recoveryPlaceholder": "Введите строку восстановления",
|
||
"savePassword": "Сохранить пароль",
|
||
"savePasswords": "Сохранить пароли",
|
||
"generateRecovery": "Создать строку восстановления",
|
||
"clearAllPasswords": "Очистить все пароли",
|
||
"recoveryReset": "Сброс строки восстановления",
|
||
"enterRecovery": "Введите строку восстановления",
|
||
"resetPassword": "Сброс пароля",
|
||
"resetHint": "Сброс очистит пароли администратора и баллов и создаст новую строку восстановления.",
|
||
"confirmClear": "Подтвердить очистку всех паролей?",
|
||
"clearHint": "После очистки защита будет отключена (без пароля по умолчанию - права администратора).",
|
||
"saved": "Пароль обновлен",
|
||
"saveFailed": "Ошибка обновления",
|
||
"generateFailed": "Ошибка создания",
|
||
"resetFailed": "Ошибка сброса",
|
||
"cleared": "Очищено",
|
||
"clearFailed": "Ошибка очистки",
|
||
"passwordClearedNewRecovery": "Пароль очищен, новая строка восстановления",
|
||
"newRecoveryString": "Новая строка восстановления (пожалуйста, сохраните)"
|
||
},
|
||
"account": {
|
||
"title": "Учетная запись SECTL Auth",
|
||
"notLoggedIn": "Не вошел в SECTL Auth",
|
||
"oauthHint": "Войдите в свою учетную запись SECTL Auth для использования единой аутентификации и удаленного выхода",
|
||
"loginButton": "Войти через SECTL Auth",
|
||
"loginSuccess": "Успешный вход",
|
||
"logout": "Выход",
|
||
"userId": "ID пользователя",
|
||
"permission": "Уровень разрешений"
|
||
},
|
||
"database": {
|
||
"title": "Подключение к базе данных",
|
||
"currentStatus": "Текущий статус базы данных",
|
||
"sqliteLocal": "Локальная база данных SQLite",
|
||
"postgresqlRemote": "Удаленная база данных PostgreSQL",
|
||
"connected": "Подключено",
|
||
"disconnected": "Отключено",
|
||
"postgresqlConnection": "Удаленное подключение PostgreSQL",
|
||
"connectionHint": "Введите строку подключения PostgreSQL для подключения к удаленной базе данных, поддержка синхронизации на нескольких платформах.",
|
||
"testConnection": "Тест подключения",
|
||
"switchToPostgreSQL": "Переключиться на PostgreSQL",
|
||
"switchToSQLite": "Переключиться на локальный SQLite",
|
||
"connectionTestSuccess": "Тест подключения успешен",
|
||
"connectionTestFailed": "Ошибка теста подключения",
|
||
"switchedTo": "Переключено на базу данных {{type}}",
|
||
"switchedToSQLite": "Переключено на локальную базу данных SQLite",
|
||
"switchFailed": "Ошибка переключения",
|
||
"syncDescription": "Инструкции по синхронизации на нескольких платформах",
|
||
"syncPoint1": "Использование удаленной базы данных PostgreSQL позволяет синхронизировать данные на нескольких платформах.",
|
||
"syncPoint2": "Встроенная очередь операций для обеспечения согласованности данных при одновременных операциях.",
|
||
"syncPoint3": "Требуется перезапуск приложения после переключения базы данных.",
|
||
"syncPoint4": "Рекомендуемые облачные сервисы баз данных: Neon, Supabase, AWS RDS и др.",
|
||
"enterConnectionString": "Пожалуйста, введите строку подключения PostgreSQL",
|
||
"connectionExample": "Пример: postgresql://xxxxxx_xxxxx:xxxxxxxx@xx-xxx.xxx.neon.xxxx/xxxxdxx?sslmode=require",
|
||
"uploadButton": "Загрузить локальные данные на удаленный сервер",
|
||
"uploadHint": "После подключения к удаленной базе данных загрузите и объедините локальную историю SQLite на удаленный сервер.",
|
||
"uploadNeedRemote": "Сначала переключитесь и подключитесь к удаленной базе данных PostgreSQL",
|
||
"noNeedUpload": "Локальные и удаленные данные уже согласованы",
|
||
"uploadConfirmTitle": "Подтвердить загрузку локальных данных на удаленный сервер?",
|
||
"uploadConfirmContent": "Синхронизация будет отдавать приоритет локальным данным. Обнаружено: только локальные {{localOnly}}, только удаленные {{remoteOnly}}, конфликты {{conflicts}}.",
|
||
"uploadSuccess": "Локальные данные загружены на удаленный сервер",
|
||
"uploadFailed": "Ошибка загрузки"
|
||
},
|
||
"data": {
|
||
"title": "Управление данными",
|
||
"settlement": "Расчет",
|
||
"settlementAndRestart": "Рассчитать и перезапустить",
|
||
"settlementHint": "Классифицирует нерассчитанные записи в один этап и сбрасывает все баллы студентов в ноль.",
|
||
"importExport": "Импорт / Экспорт",
|
||
"exportJson": "Экспорт JSON",
|
||
"importJson": "Импорт JSON",
|
||
"importHint": "Импорт перезапишет существующих студентов/причины/записи/настройки (настройки безопасности исключены).",
|
||
"logs": "Журналы",
|
||
"logLevel": "Уровень журнала",
|
||
"logOperation": "Операция с журналами",
|
||
"viewLogs": "Просмотр журналов",
|
||
"exportLogs": "Экспорт журналов",
|
||
"clearLogs": "Очистить журналы",
|
||
"logsCleared": "Журналы очищены",
|
||
"systemLogs": "Системные журналы (последние 200)",
|
||
"noLogs": "Нет журналов",
|
||
"logLevelUpdated": "Уровень журнала обновлен",
|
||
"readLogsFailed": "Ошибка чтения журналов",
|
||
"logsExported": "Журналы экспортированы",
|
||
"exportFailed": "Ошибка экспорта",
|
||
"exportSuccess": "Экспорт успешен",
|
||
"importSuccess": "Импорт успешен, обновление",
|
||
"importFailed": "Ошибка импорта",
|
||
"clearFailed": "Ошибка очистки",
|
||
"confirmSettlement": "Подтвердить расчет и перезапуск?",
|
||
"settlementConfirm1": "Это архивирует нерассчитанные записи в один этап и сбросит все баллы студентов в ноль.",
|
||
"settlementConfirm2": "Список студентов остается без изменений; история расчетов доступна на странице «История расчетов».",
|
||
"settlementSuccess": "Расчет успешен, баллы перезапущены",
|
||
"settlementFailed": "Ошибка расчета",
|
||
"settle": "Рассчитать",
|
||
"logLevels": {
|
||
"debug": "DEBUG (отладка)",
|
||
"info": "INFO (информация)",
|
||
"warn": "WARN (предупреждение)",
|
||
"error": "ERROR (ошибка)"
|
||
}
|
||
},
|
||
"url": {
|
||
"title": "Протокол URL (secscore://)",
|
||
"protocol": "Протокол URL",
|
||
"description": "Вы можете вызвать SecScore через URL для выполнения операций, например:",
|
||
"register": "Зарегистрировать протокол URL",
|
||
"registered": "Протокол URL зарегистрирован",
|
||
"registerFailed": "Ошибка регистрации",
|
||
"installerRequired": "Требуется установленная версия SecScore, может не работать в режиме разработки."
|
||
},
|
||
"mcp": {
|
||
"title": "Сервис MCP",
|
||
"description": "Управление встроенным HTTP-сервисом MCP для внешних клиентов MCP.",
|
||
"running": "Запущен",
|
||
"stopped": "Остановлен",
|
||
"noUrl": "Нет URL",
|
||
"host": "Хост",
|
||
"port": "Порт",
|
||
"start": "Запустить",
|
||
"stop": "Остановить",
|
||
"refresh": "Обновить состояние",
|
||
"hint": "Рекомендуется привязывать только к 127.0.0.1; после запуска конечная точка - http://host:port/mcp",
|
||
"hostRequired": "Пожалуйста, введите хост MCP",
|
||
"portInvalid": "Пожалуйста, введите действительный порт (1-65535)",
|
||
"startSuccess": "Сервер MCP запущен",
|
||
"startFailed": "Ошибка запуска сервера MCP",
|
||
"stopSuccess": "Сервер MCP остановлен",
|
||
"stopFailed": "Ошибка остановки сервера MCP",
|
||
"startTimeout": "Время ожидания запуска сервера MCP истекло, повторите попытку",
|
||
"stopTimeout": "Время ожидания остановки сервера MCP истекло, повторите попытку"
|
||
},
|
||
"app": {
|
||
"title": "Управление приложением",
|
||
"description": "Быстро перезапустить или закрыть приложение.",
|
||
"restart": "Перезапустить приложение",
|
||
"quit": "Закрыть приложение",
|
||
"confirmRestartTitle": "Подтвердить перезапуск приложения?",
|
||
"confirmRestartContent": "Приложение будет немедленно закрыто и перезапущено.",
|
||
"confirmQuitTitle": "Подтвердить закрытие приложения?",
|
||
"confirmQuitContent": "Приложение будет немедленно закрыто.",
|
||
"restartFailed": "Ошибка перезапуска",
|
||
"quitFailed": "Ошибка закрытия"
|
||
},
|
||
"about": {
|
||
"title": "О программе",
|
||
"appName": "Управление образовательными баллами",
|
||
"version": "Версия",
|
||
"copyright": "Авторские права",
|
||
"ipcStatus": "Статус IPC",
|
||
"ipcConnected": "Подключено",
|
||
"ipcDisconnected": "Отключено (Ошибка предварительной загрузки)",
|
||
"environment": "Среда",
|
||
"toggleDevTools": "Переключить инструменты разработчика",
|
||
"license": "SecScore распространяется по лицензии GPL3.0",
|
||
"copyRightText": "CopyRight © 2025-{{year}} SECTL"
|
||
}
|
||
},
|
||
"sidebar": {
|
||
"home": "Главная",
|
||
"students": "Управление студентами",
|
||
"score": "Операции с баллами",
|
||
"boards": "Доски",
|
||
"leaderboard": "Таблица лидеров",
|
||
"settlements": "История расчетов",
|
||
"reasons": "Управление причинами",
|
||
"autoScore": "Автоматическое добавление баллов",
|
||
"rewardExchange": "Обмен наградами",
|
||
"rewardSettings": "Настройки наград",
|
||
"settings": "Системные настройки",
|
||
"remoteDb": "Удаленная база данных",
|
||
"refreshStatus": "Обновить состояние",
|
||
"syncNow": "Синхронизировать сейчас",
|
||
"syncSuccess": "Синхронизация успешна",
|
||
"syncFailed": "Ошибка синхронизации",
|
||
"getDbStatusFailed": "Ошибка получения статуса базы данных",
|
||
"notRemoteMode": "Режим удаленной базы данных не активирован, перезапустите приложение",
|
||
"dbNotConnected": "База данных не подключена"
|
||
},
|
||
"auth": {
|
||
"unlock": "Разблокировать разрешение",
|
||
"unlockHint": "Введите 6-значный пароль: пароль администратора = полный доступ, пароль баллов = только операции с баллами.",
|
||
"unlockButton": "Разблокировать",
|
||
"unlocked": "Разрешение разблокировано",
|
||
"logout": "Переключено в режим только для чтения",
|
||
"passwordPlaceholder": "например, 123456",
|
||
"passwordError": "Неверный пароль",
|
||
"enterPassword": "Введите пароль",
|
||
"lock": "Заблокировать"
|
||
},
|
||
"languages": {
|
||
"zh-CN": "简体中文",
|
||
"en-US": "English",
|
||
"ja-JP": "日本語",
|
||
"fr-FR": "Français",
|
||
"es-ES": "Español",
|
||
"ko-KR": "한국어",
|
||
"ru-RU": "Русский",
|
||
"de-DE": "Deutsch",
|
||
"pt-BR": "Português",
|
||
"ar-SA": "العربية"
|
||
},
|
||
"theme": {
|
||
"colorAndBackground": "Цвет и фон",
|
||
"gradientLabels": {
|
||
"blue": "Свежий синий",
|
||
"pink": "Нежный розовый",
|
||
"cyan": "Голубой",
|
||
"purple": "Фиолетовый"
|
||
},
|
||
"gradientDirections": {
|
||
"vertical": "Вертикально",
|
||
"horizontal": "Горизонтально",
|
||
"diagonal": "По диагонали"
|
||
},
|
||
"generate": "Создать",
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения",
|
||
"mode": "Режим",
|
||
"myTheme": "Моя тема"
|
||
},
|
||
"permissions": {
|
||
"admin": "Разрешение администратора",
|
||
"points": "Разрешение баллов",
|
||
"view": "Только для чтения"
|
||
},
|
||
"home": {
|
||
"title": "Домашняя страница баллов студентов",
|
||
"subtitle": "Всего {{count}} студентов, нажмите на карточку для выполнения операций",
|
||
"searchPlaceholder": "Поиск имени/пиньинь...",
|
||
"sortBy": {
|
||
"alphabet": "Сортировка по имени",
|
||
"surname": "Группа по фамилии",
|
||
"group": "Сортировка по группе",
|
||
"score": "Рейтинг по баллам"
|
||
},
|
||
"layoutBy": {
|
||
"grouped": "Группированный список",
|
||
"squareGrid": "Квадратная сетка",
|
||
"largeAvatar": "Большой аватар"
|
||
},
|
||
"noStudents": "Нет данных о студентах, пожалуйста, добавьте в управлении студентами",
|
||
"noMatch": "Нет совпадающих студентов",
|
||
"clearSearch": "Очистить поиск",
|
||
"points": "баллы",
|
||
"currentScore": "Текущие баллы",
|
||
"quickOptions": "Быстрые опции",
|
||
"adjustPoints": "Настройка баллов",
|
||
"customPoints": "Пользовательские баллы",
|
||
"customPointsHint": "Введите любое значение в поле ввода",
|
||
"reason": "Причина",
|
||
"reasonPlaceholder": "Введите причину изменения баллов (необязательно)",
|
||
"preview": "Предпросмотр изменения",
|
||
"noReason": "(Без причины)",
|
||
"ungrouped": "Без группы",
|
||
"category": {
|
||
"others": "Другие"
|
||
},
|
||
"scoreAdded": "{{points}} баллов добавлено {{name}}",
|
||
"scoreDeducted": "{{points}} баллов снято у {{name}}",
|
||
"submitFailed": "Ошибка отправки",
|
||
"pleaseSelectPoints": "Пожалуйста, выберите или введите баллы",
|
||
"reasonDefault": "{{action}} {{points}} баллов",
|
||
"studentCount": "{{count}} студентов",
|
||
"operationTitle": "Операция с баллами: {{name}}",
|
||
"submitOperation": "Отправить операцию",
|
||
"operationTitleBatch": "Операция с баллами: выбрано {{count}}",
|
||
"undoLastAction": "Отменить",
|
||
"undoLastHint": "Отменить последнее: {{name}} {{delta}}",
|
||
"undoUnavailable": "Нет операций с баллами для отмены",
|
||
"undoLastSuccess": "Последняя операция с баллами отменена",
|
||
"multiSelect": "Множественный выбор",
|
||
"batchMode": "Пакетный режим",
|
||
"selectAll": "Выбрать все",
|
||
"clearSelected": "Очистить выбор",
|
||
"batchOperate": "Пакетные баллы",
|
||
"selected": "Выбрано",
|
||
"selectedCount": "Выбрано {{count}}",
|
||
"batchSuccess": "Баллы отправлены для {{count}} студентов",
|
||
"batchPartial": "Успешно отправлено {{success}}/{{total}} студентов",
|
||
"selectStudentFirst": "Пожалуйста, сначала выберите одного или нескольких студентов",
|
||
"addPoints": "Добавить баллы",
|
||
"deductPoints": "Снять баллы",
|
||
"pointsChange": "Изменение баллов",
|
||
"reasonLabel": "Причина: "
|
||
},
|
||
"students": {
|
||
"title": "Управление студентами",
|
||
"importList": "Импорт списка",
|
||
"addStudent": "Добавить студента",
|
||
"name": "Имя",
|
||
"group": "Группа",
|
||
"avatar": "Аватар",
|
||
"currentScore": "Текущие баллы",
|
||
"tags": "Теги",
|
||
"noTags": "Нет тегов",
|
||
"editTags": "Редактировать теги",
|
||
"editAvatar": "Настроить аватар",
|
||
"deleteConfirm": "Подтвердить удаление этого студента?",
|
||
"addTitle": "Добавить студента",
|
||
"addConfirm": "Добавить",
|
||
"namePlaceholder": "Введите имя студента",
|
||
"groupPlaceholder": "Введите название группы (необязательно)",
|
||
"nameRequired": "Пожалуйста, введите имя",
|
||
"nameExists": "Имя студента уже существует",
|
||
"addSuccess": "Добавлено успешно",
|
||
"addFailed": "Ошибка добавления",
|
||
"deleteSuccess": "Удалено успешно",
|
||
"deleteFailed": "Ошибка удаления",
|
||
"tagSaveSuccess": "Теги сохранены успешно",
|
||
"tagSaveFailed": "Ошибка сохранения тегов",
|
||
"importTitle": "Импорт списка",
|
||
"importTextHint": "Вставьте несколько строк, одно имя студента на строку",
|
||
"importTextPlaceholder": "Пример:\nИван\nМария\nПётр",
|
||
"importByText": "Импорт из текста",
|
||
"importByXlsx": "Импорт через xlsx",
|
||
"importByBanyou": "Импорт из BanYou",
|
||
"xlsxPreview": "Предпросмотр и импорт xlsx",
|
||
"file": "Файл",
|
||
"selectNameCol": "Нажмите на заголовок для выбора столбца с именами",
|
||
"previewRows": "Предпросмотр первых 50 строк",
|
||
"importConfirm": "Импорт",
|
||
"importComplete": "Импорт завершен: добавлено {{inserted}}, пропущено {{skipped}}",
|
||
"workerNotReady": "Рабочий не инициализирован",
|
||
"parseXlsxFailed": "Ошибка анализа xlsx",
|
||
"selectNameColFirst": "Пожалуйста, сначала выберите «Столбец с именами»",
|
||
"noNamesFound": "В выбранном столбце не найдено импортируемых имен",
|
||
"importFailed": "Ошибка импорта",
|
||
"banyouCookieHint": "После входа в BanYou Web скопируйте полную куку и вставьте ниже.",
|
||
"banyouCookiePlaceholder": "uid=...; accessToken=...; ...",
|
||
"banyouCookieRequired": "Пожалуйста, сначала вставьте куку",
|
||
"banyouFetch": "Получить список классов",
|
||
"banyouFetchSuccess": "Получено {{count}} классов",
|
||
"banyouFetchFailed": "Ошибка получения классов BanYou",
|
||
"banyouCreatedClasses": "Мои созданные классы",
|
||
"banyouJoinedClasses": "Мои присоединенные классы",
|
||
"banyouNoClasses": "Нет данных о классах"
|
||
},
|
||
"boards": {
|
||
"title": "Управление досками",
|
||
"addBoard": "Добавить доску",
|
||
"editBoard": "Редактировать доску",
|
||
"deleteBoard": "Удалить доску",
|
||
"name": "Название доски",
|
||
"description": "Описание",
|
||
"visibility": "Видимость",
|
||
"public": "Публичная",
|
||
"private": "Частная",
|
||
"studentsCount": "{{count}} студентов",
|
||
"noBoards": "Нет досок",
|
||
"addTitle": "Добавить доску",
|
||
"editTitle": "Редактировать доску",
|
||
"namePlaceholder": "Введите название доски",
|
||
"descriptionPlaceholder": "Введите описание",
|
||
"confirmDelete": "Подтвердить удаление этой доски?",
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения",
|
||
"deleted": "Удалено",
|
||
"deleteFailed": "Ошибка удаления",
|
||
"boardExists": "Доска уже существует"
|
||
},
|
||
"leaderboard": {
|
||
"title": "Таблица лидеров",
|
||
"sortBy": "Сортировать по",
|
||
"score": "Баллы",
|
||
"name": "Имя",
|
||
"rank": "Ранг",
|
||
"student": "Студент",
|
||
"points": "Баллы",
|
||
"noData": "Нет данных рейтинга",
|
||
"topStudents": "Лучшие студенты",
|
||
"rankChanged": "Ранг: {{rank}}"
|
||
},
|
||
"settlements": {
|
||
"title": "История расчетов",
|
||
"phase": "Этап",
|
||
"date": "Дата",
|
||
"studentCount": "Количество студентов",
|
||
"totalPoints": "Всего баллов",
|
||
"actions": "Действия",
|
||
"viewDetails": "Просмотреть детали",
|
||
"noSettlements": "Нет расчетов",
|
||
"phaseDetail": "Детали этапа {{phase}}",
|
||
"settlementDate": "Дата расчета: {{date}}",
|
||
"totalStudents": "Всего студентов: {{count}}",
|
||
"totalPointsChange": "Общее изменение баллов: {{points}}"
|
||
},
|
||
"reasons": {
|
||
"title": "Управление причинами",
|
||
"addReason": "Добавить причину",
|
||
"editReason": "Редактировать причину",
|
||
"name": "Название причины",
|
||
"points": "Баллы",
|
||
"positive": "Положительный",
|
||
"negative": "Отрицательный",
|
||
"noReasons": "Нет причин",
|
||
"addTitle": "Добавить причину",
|
||
"editTitle": "Редактировать причину",
|
||
"namePlaceholder": "Введите название причины",
|
||
"pointsPlaceholder": "Введите баллы",
|
||
"confirmDelete": "Подтвердить удаление этой причины?",
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения",
|
||
"deleted": "Удалено",
|
||
"deleteFailed": "Ошибка удаления",
|
||
"reasonExists": "Причина уже существует"
|
||
},
|
||
"autoScore": {
|
||
"title": "Автоматическое добавление баллов",
|
||
"addRule": "Добавить правило",
|
||
"editRule": "Редактировать правило",
|
||
"deleteRule": "Удалить правило",
|
||
"ruleName": "Название правила",
|
||
"trigger": "Триггер",
|
||
"action": "Действие",
|
||
"interval": "Интервал",
|
||
"enabled": "Включено",
|
||
"noRules": "Нет правил",
|
||
"addTitle": "Добавить правило",
|
||
"editTitle": "Редактировать правило",
|
||
"namePlaceholder": "Введите название правила",
|
||
"triggerPlaceholder": "Выберите триггер",
|
||
"actionPlaceholder": "Выберите действие",
|
||
"intervalPlaceholder": "Выберите интервал",
|
||
"confirmDelete": "Подтвердить удаление этого правила?",
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения",
|
||
"deleted": "Удалено",
|
||
"deleteFailed": "Ошибка удаления",
|
||
"ruleExists": "Правило уже существует"
|
||
},
|
||
"rewardExchange": {
|
||
"title": "Обмен наградами",
|
||
"rewards": "Награды",
|
||
"exchange": "Обмен",
|
||
"history": "История",
|
||
"noRewards": "Нет наград",
|
||
"noHistory": "Нет истории",
|
||
"rewardName": "Название награды",
|
||
"cost": "Стоимость",
|
||
"stock": "Склад",
|
||
"exchangeSuccess": "Обмен успешен",
|
||
"exchangeFailed": "Ошибка обмена",
|
||
"insufficientPoints": "Недостаточно баллов",
|
||
"outOfStock": "Нет в наличии"
|
||
},
|
||
"rewardSettings": {
|
||
"title": "Настройки наград",
|
||
"addReward": "Добавить награду",
|
||
"editReward": "Редактировать награду",
|
||
"deleteReward": "Удалить награду",
|
||
"name": "Название",
|
||
"cost": "Стоимость",
|
||
"stock": "Склад",
|
||
"noRewards": "Нет наград",
|
||
"addTitle": "Добавить награду",
|
||
"editTitle": "Редактировать награду",
|
||
"namePlaceholder": "Введите название",
|
||
"costPlaceholder": "Введите стоимость",
|
||
"stockPlaceholder": "Введите склад",
|
||
"confirmDelete": "Подтвердить удаление этой награды?",
|
||
"saved": "Сохранено",
|
||
"saveFailed": "Ошибка сохранения",
|
||
"deleted": "Удалено",
|
||
"deleteFailed": "Ошибка удаления",
|
||
"rewardExists": "Награда уже существует"
|
||
},
|
||
"recovery": {
|
||
"title": "Строка восстановления SecScore",
|
||
"saved": "Я сохранил",
|
||
"export": "Экспорт текстового файла",
|
||
"exportHint": "Рекомендуется экспортировать и хранить в автономном режиме. При потере восстановить невозможно.",
|
||
"hint": "Рекомендуется экспортировать и хранить в автономном режиме после экспорта. При потере восстановить невозможно."
|
||
}
|
||
}
|