feat(admin): Control Center redesign, Explore dual-view и полный RU/EN i18n
CI / test (push) Failing after 3m9s
CI / push-image (push) Has been skipped
CI / ci-done (push) Failing after 0s

Refs EventHub/EventHubFrontAdmin#32
This commit is contained in:
2026-07-14 17:58:33 +03:00
parent de379e28bf
commit fd2c1f10ad
95 changed files with 12699 additions and 4410 deletions
+438 -18
View File
@@ -1,4 +1,442 @@
{
"common": {
"appTitle": "EventHub",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"delete": "Delete",
"edit": "Edit",
"open": "Open",
"close": "Close",
"create": "Create",
"add": "Add",
"find": "Search",
"search": "Search",
"actions": "Actions",
"backToList": "Back to list",
"tryAgain": "Try again",
"toDashboard": "Go to dashboard",
"yes": "Yes",
"no": "No",
"noData": "No data",
"loading": "Loading…",
"emDash": "—",
"all": "All",
"allStatuses": "All statuses",
"allPlans": "All plans",
"allTypes": "All types",
"total": "Total",
"freeze": "Freeze",
"unfreeze": "Unfreeze",
"quickView": "Quick view",
"show": "Show",
"hide": "Hide",
"irreversible": "This action cannot be undone.",
"pageOf": "{{current}} / {{total}}",
"shownRange": "Showing {{from}}{{to}} of {{total}}",
"pageLabel": "Page {{current}}",
"perPage": "Per page",
"searchPlaceholder": "Search…",
"selectRole": "Select role",
"selectStatus": "Select status",
"selectType": "Select type",
"selectPlan": "Select plan",
"selectLanguage": "Select language",
"selectTimezone": "Select timezone",
"selectAdmin": "Select admin",
"enterReason": "Enter reason for status change",
"unassigned": "Unassigned",
"email": "Email",
"nickname": "Nickname",
"role": "Role",
"status": "Status",
"reason": "Reason",
"phone": "Phone",
"language": "Language",
"timezone": "Timezone",
"lastLogin": "Last login",
"createdAt": "Created",
"updatedAt": "Updated",
"title": "Title",
"description": "Description",
"type": "Type",
"start": "Start",
"rating": "Rating",
"owner": "Owner",
"target": "Target",
"targetType": "Target type",
"sender": "Reporter",
"plan": "Plan",
"comment": "Comment",
"password": "Password",
"error": "Error",
"word": "Word",
"date": "Date",
"dateFrom": "From",
"dateTo": "To",
"assigned": "Assigned",
"expiresAt": "Expires at",
"count": "Count",
"firstSeen": "First seen",
"lastSeen": "Last seen",
"user": "User",
"entityUpdated": "Updated",
"entityDeleted": "Deleted",
"entityCreated": "Created",
"updateError": "Update failed",
"deleteError": "Delete failed",
"createError": "Create failed",
"loadError": "Load failed",
"notFound": "Not found",
"langRu": "Русский",
"langEn": "English",
"reviewed": "Reviewed",
"dismissed": "Dismissed",
"resolved": "Resolved",
"inProgress": "In progress",
"pendingUsers": "Unverified",
"queueEmpty": "Queue is empty",
"openInbox": "Open inbox",
"nothingFound": "Nothing found",
"category": "Category",
"ip": "IP",
"apply": "Apply",
"id": "ID",
"changeStatusTo": "Change status to «{{status}}»",
"confirmMarkAs": "Mark as «{{status}}»?",
"bulkUpdated": "Statuses updated",
"bulkUpdateError": "Bulk update failed",
"openFull": "Open full details",
"socialLinks": "Social links",
"shortName": "Short name",
"color": "Color",
"image": "Image",
"confirmation": "Confirmation",
"settings": "Settings",
"specialist": "Specialist",
"calendar": "Calendar",
"masterEvent": "Master event",
"attachments": "Attachments",
"editHistory": "Edit history",
"recurrence": "Recurrence",
"location": "Location",
"isInstance": "Is instance",
"likes": "Likes",
"dislikes": "Dislikes",
"errorHash": "Error hash",
"errorMessage": "Message",
"stacktrace": "Stack trace",
"context": "Context",
"resolution": "Resolution",
"resolutionNote": "Resolution comment",
"assign": "Assign"
},
"navGroup": {
"work": "Work",
"overview": "Overview",
"content": "Content",
"moderation": "Moderation",
"system": "System",
"account": "Account"
},
"nav": {
"inboxReports": "Inbox · reports",
"inboxTickets": "Inbox · tickets",
"dashboard": "Dashboard",
"monitoring": "Monitoring",
"users": "Users",
"calendars": "Calendars",
"events": "Events",
"subscriptions": "Subscriptions",
"reports": "Reports (list)",
"reviews": "Reviews",
"bannedWords": "Banned words",
"tickets": "Tickets (list)",
"admins": "Admins",
"audit": "Audit",
"profile": "My profile"
},
"layout": {
"search": "Search",
"searchHotkey": "Search (⌘K)",
"myProfile": "My profile",
"uiLanguage": "UI language",
"logout": "Log out",
"densityCompact": "Density: compact",
"densityNormal": "Density: comfortable",
"densityToNormal": "Comfortable density",
"densityToCompact": "Compact density",
"paletteTitle": "Command palette",
"palettePlaceholder": "Go to section…",
"paletteHints": "↑↓ navigate · Enter open · Esc close",
"nodesNoData": "Nodes: no data",
"nodesPrev": "Previous nodes",
"nodesNext": "Next nodes"
},
"explore": {
"viewAria": "List view",
"table": "Table",
"rows": "Rows",
"tops": "Tops",
"listsCount": "{{count}} lists",
"descPreviewName": "Explore · click name for preview, ⋯ for actions",
"descPreviewTitle": "Explore · click title for preview, ⋯ for actions",
"descActions": "Explore · ⋯ for actions",
"descBulk": "Explore · ⋯ for actions, bulk via row selection",
"descRowOpen": "Explore · click row to open, ⋯ for actions",
"searchEvents": "Search events…",
"searchCalendars": "Search calendars…",
"searchUsers": "Search (email, nickname)…",
"searchWord": "Search by word",
"expiringSoon": "Expiring soon",
"paid30d": "Paid · 30 days",
"byRating": "Rating",
"byReviews": "Reviews",
"positive": "Positive",
"negative": "Negative",
"allReviews": "All reviews",
"byReports": "By reports",
"loginAt": "login {{date}}",
"ownerId": "owner {{id}}"
},
"inbox": {
"reportsTitle": "Inbox · Reports",
"ticketsTitle": "Inbox · Tickets",
"reportsHints": "j/k · Enter open · 1 reviewed · 2 dismissed · link → preview",
"ticketsHints": "j/k · Enter open · 1 resolved · 2 in progress",
"pending": "Pending",
"all": "All",
"active": "Active",
"mine": "Mine",
"queue": "Queue ({{count}})",
"selectReport": "Select a report from the queue",
"selectTicket": "Select a ticket from the queue",
"reportCard": "Report {{id}}",
"fullCard": "Full card",
"bannerReports": "Day-to-day report work lives in the inbox",
"bannerTickets": "Day-to-day ticket work lives in the inbox"
},
"dashboard": {
"controlCenter": "Control Center",
"moderation": "Moderation",
"support": "Support",
"subtitleAdmin": "Work · Overview · Investigate",
"subtitleModeration": "Primary mode is the inbox. Shift KPIs only.",
"subtitleSupport": "Focus on assigned tickets — not the full error catalog.",
"reportsInboxTitle": "Reports inbox",
"reportsInboxDesc": "Split-view queue: j/k, 1 reviewed, 2 dismissed",
"ticketsInboxTitle": "Tickets inbox",
"ticketsInboxDesc": "Active / mine · j/k · 1 resolved · 2 in progress",
"reportQueueTitle": "Reports queue",
"reportQueueDesc": "Pending: {{count}}",
"ticketQueueTitle": "Tickets queue",
"ticketQueueDesc": "Open: {{count}}",
"quickOverview": "Quick overview",
"pending": "Pending",
"reviewed": "Reviewed",
"avgTimeH": "Avg time (h)",
"assignedOpen": "Assigned open",
"assignedTotal": "Assigned total",
"avgResolutionH": "Avg resolution (h)",
"eventsByDay": "Events by day",
"registrationsByDay": "Registrations by day",
"reviewsByDay": "Reviews by day",
"reportsByDay": "Reports by day",
"ticketsByDay": "Tickets by day",
"subscriptionsByDay": "Subscriptions by day",
"loadStatsError": "Failed to load stats",
"ticketsTotal": "Tickets (total)",
"ticketsOpen": "Open tickets",
"trialSubscriptions": "Trial subscriptions"
},
"monitoring": {
"title": "Observe · Monitoring",
"subtitle": "Live WS + metrics history · range {{minutes}} min",
"noData": "no data",
"waitingTitle": "Waiting for telemetry",
"waitingDesc": "Metrics appear via WebSocket or REST history for the selected range.",
"noPoints": "No data points yet.",
"node": "Node",
"nodeNamed": "Node {{name}}",
"refreshing": "Refreshing history…",
"m5": "5 min",
"m15": "15 min",
"m30": "30 min",
"h1": "1 hour",
"onlineNodes": "Online nodes",
"cpuPeak": "CPU peak (latest)",
"memoryAvg": "Memory avg",
"cpuMemory": "CPU and memory (MB)",
"memoryByType": "Memory by type (MB)",
"wsQueue": "WebSocket and queue",
"mnesia": "Mnesia",
"mnesiaTables": "Mnesia table sizes (latest)",
"noTableData": "No table data for the selected range",
"table": "Table",
"records": "Records",
"healthy": "{{count}} nodes healthy",
"load": "{{count}} nodes · load"
},
"status": {
"active": "Active",
"frozen": "Frozen",
"deleted": "Deleted",
"pending": "Pending",
"reviewed": "Reviewed",
"dismissed": "Dismissed",
"open": "Open",
"in_progress": "In progress",
"resolved": "Resolved",
"closed": "Closed",
"visible": "Visible",
"hidden": "Hidden",
"cancelled": "Cancelled",
"completed": "Completed",
"expired": "Expired"
},
"ws": {
"newReport": "New report",
"reportId": "Report #{{id}}",
"onTarget": "on {{type}}",
"newTicket": "New ticket created",
"ticketCreated": "Ticket #{{id}} created",
"open": "Open"
},
"errors": {
"forbiddenTitle": "403",
"forbiddenMessage": "You do not have access to «{{section}}».",
"renderTitle": "Render error",
"renderFallback": "Could not render this page."
},
"login": {
"title": "Sign in",
"subtitle": "Control Center · moderation and support",
"email": "Email",
"password": "Password",
"submit": "Sign in",
"invalid_credentials": "Invalid email or password",
"insufficient_permissions": "Insufficient permissions",
"error": "Sign-in error"
},
"profile": {
"title": "My profile",
"description": "Admin account details",
"edit": "Edit",
"saved": "Profile updated",
"saveError": "Failed to update profile",
"avatarUrl": "Avatar URL",
"preferences": "Preferences",
"preferencesJson": "Preferences (JSON)",
"invalidJson": "Invalid JSON",
"preferencesInvalidJson": "Preferences must be valid JSON"
},
"users": {
"title": "Users",
"editTitle": "Edit user",
"deleteTitle": "Delete user?",
"deleteHint": "This cannot be undone. Set a reason via edit first if needed.",
"statusTitle": "Change status to «{{status}}»",
"notFound": "User not found"
},
"events": {
"title": "Events",
"entity": "Event",
"detailTitle": "Event {{name}}",
"editTitle": "Edit event",
"deleteTitle": "Delete event?",
"notFound": "Event not found",
"topsRating": "Top by rating",
"startDatetime": "Start date and time",
"durationMin": "Duration (min)",
"capacity": "Capacity",
"specialistId": "Specialist (ID)",
"calendarId": "Calendar (ID)",
"onlineLink": "Online link",
"tags": "Tags",
"recurrenceInterval": "{{freq}} (interval: {{interval}})",
"ratingWithCount": "{{avg}} ({{count}} ratings)"
},
"calendars": {
"title": "Calendars",
"entity": "Calendar",
"detailTitle": "Calendar {{name}}",
"editTitle": "Edit calendar",
"deleteTitle": "Delete calendar?",
"notFound": "Calendar not found"
},
"reports": {
"title": "Reports",
"entity": "Report",
"notFound": "Report not found",
"detailTitle": "Report {{id}}",
"resolvedAt": "Resolved at",
"resolvedBy": "Resolved by",
"id": "ID"
},
"reviews": {
"title": "Reviews",
"detailTitle": "Review {{id}}",
"editTitle": "Edit review",
"hideSelected": "Hide selected",
"showSelected": "Show selected",
"deleteSelected": "Delete selected",
"notFound": "Review not found",
"score": "Score",
"likesDislikes": "Likes / Dislikes",
"selectAllAria": "Select all on page",
"selectReviewAria": "Select review {{id}}",
"selectReviews": "Select reviews",
"reasonRequired": "Enter a reason for the status change",
"reasonRequiredShort": "Enter a reason",
"bulkStatusTitle": "Change status to «{{status}}» for {{count}} reviews",
"bulkReasonPlaceholder": "Shared reason for selected reviews",
"ratingValue": "Score {{rating}}"
},
"tickets": {
"title": "Tickets",
"detailTitle": "Ticket {{id}}",
"deleteTitle": "Delete ticket?",
"notFound": "Ticket not found",
"statsHint": "Explore · closed {{closed}}, total errors {{errors}}"
},
"subscriptions": {
"title": "Subscriptions",
"editTitle": "Edit subscription",
"deleteTitle": "Delete subscription?",
"trial": "Trial",
"trialUsed": "Trial used",
"trialCount": "Trial",
"expiresUntil": "until {{date}}",
"trialBadge": "trial"
},
"admins": {
"title": "Admins",
"detailTitle": "Admin {{name}}",
"description": "Manage administrator accounts",
"add": "Add admin",
"createTitle": "Create admin",
"editTitle": "Edit admin",
"deleteTitle": "Delete admin?",
"notFound": "Admin not found"
},
"audit": {
"title": "Audit",
"description": "Administrator action log",
"admin": "Admin",
"action": "Action",
"name": "Name",
"searchAdmin": "Search administrator",
"searchAdminPlaceholder": "Email…"
},
"bannedWords": {
"title": "Banned words",
"description": "Manage banned words in content",
"placeholder": "New word",
"deleteTitle": "Delete word?",
"deleteBody": "«{{word}}» will be removed from the banned list.",
"addedBy": "Added by",
"addedAt": "Added at"
},
"menu": {
"dashboard": "Dashboard",
"users": "Users",
@@ -12,23 +450,5 @@
"admins": "Admins",
"audit": "Audit",
"monitoring": "Monitoring"
},
"profile": {
"title": "My profile",
"edit": "Edit",
"saved": "Profile updated"
},
"login": {
"title": "Sign in",
"email": "Email",
"password": "Password",
"submit": "Sign in",
"invalid_credentials": "Invalid email or password",
"insufficient_permissions": "Insufficient permissions",
"error": "Sign-in error"
},
"ws": {
"newReport": "New report",
"newTicket": "New ticket"
}
}
+438 -18
View File
@@ -1,4 +1,442 @@
{
"common": {
"appTitle": "EventHub",
"cancel": "Отмена",
"save": "Сохранить",
"saving": "Сохранение…",
"delete": "Удалить",
"edit": "Редактировать",
"open": "Открыть",
"close": "Закрыть",
"create": "Создать",
"add": "Добавить",
"find": "Найти",
"search": "Поиск",
"actions": "Действия",
"backToList": "К списку",
"tryAgain": "Попробовать снова",
"toDashboard": "На дашборд",
"yes": "Да",
"no": "Нет",
"noData": "Нет данных",
"loading": "Загрузка…",
"emDash": "—",
"all": "Все",
"allStatuses": "Все статусы",
"allPlans": "Все планы",
"allTypes": "Все типы",
"total": "Всего",
"freeze": "Заморозить",
"unfreeze": "Разморозить",
"quickView": "Быстрый просмотр",
"show": "Показать",
"hide": "Скрыть",
"irreversible": "Это действие нельзя отменить.",
"pageOf": "{{current}} / {{total}}",
"shownRange": "Показано {{from}}{{to}} из {{total}}",
"pageLabel": "Страница {{current}}",
"perPage": "На странице",
"searchPlaceholder": "Поиск…",
"selectRole": "Выберите роль",
"selectStatus": "Выберите статус",
"selectType": "Выберите тип",
"selectPlan": "Выберите план",
"selectLanguage": "Выберите язык",
"selectTimezone": "Выберите пояс",
"selectAdmin": "Выберите администратора",
"enterReason": "Введите причину изменения статуса",
"unassigned": "Не назначен",
"email": "Email",
"nickname": "Ник",
"role": "Роль",
"status": "Статус",
"reason": "Причина",
"phone": "Телефон",
"language": "Язык",
"timezone": "Часовой пояс",
"lastLogin": "Последний вход",
"createdAt": "Создано",
"updatedAt": "Обновлено",
"title": "Название",
"description": "Описание",
"type": "Тип",
"start": "Начало",
"rating": "Рейтинг",
"owner": "Владелец",
"target": "Цель",
"targetType": "Тип цели",
"sender": "Отправитель",
"plan": "План",
"comment": "Комментарий",
"password": "Пароль",
"error": "Ошибка",
"word": "Слово",
"date": "Дата",
"dateFrom": "Дата с",
"dateTo": "Дата по",
"assigned": "Назначен",
"expiresAt": "Дата окончания",
"count": "Повторов",
"firstSeen": "Первый раз",
"lastSeen": "Последний",
"user": "Пользователь",
"entityUpdated": "Обновлено",
"entityDeleted": "Удалено",
"entityCreated": "Создано",
"updateError": "Ошибка обновления",
"deleteError": "Ошибка удаления",
"createError": "Ошибка создания",
"loadError": "Ошибка загрузки",
"notFound": "Не найдено",
"langRu": "Русский",
"langEn": "English",
"reviewed": "Рассмотрено",
"dismissed": "Отклонено",
"resolved": "Решено",
"inProgress": "В работу",
"pendingUsers": "Неподтверждённые",
"queueEmpty": "Очередь пуста",
"openInbox": "Открыть входящие",
"nothingFound": "Ничего не найдено",
"category": "Категория",
"ip": "IP",
"apply": "Применить",
"id": "ID",
"changeStatusTo": "Изменить статус на «{{status}}»",
"confirmMarkAs": "Отметить как «{{status}}»?",
"bulkUpdated": "Статусы обновлены",
"bulkUpdateError": "Ошибка массового обновления",
"openFull": "Открыть полностью",
"socialLinks": "Социальные ссылки",
"shortName": "Короткое имя",
"color": "Цвет",
"image": "Изображение",
"confirmation": "Подтверждение",
"settings": "Настройки",
"specialist": "Специалист",
"calendar": "Календарь",
"masterEvent": "Мастер-событие",
"attachments": "Вложения",
"editHistory": "История изменений",
"recurrence": "Повторение",
"location": "Локация",
"isInstance": "Является экземпляром",
"likes": "Лайки",
"dislikes": "Дизлайки",
"errorHash": "Хеш ошибки",
"errorMessage": "Сообщение",
"stacktrace": "Стектрейс",
"context": "Контекст",
"resolution": "Решение",
"resolutionNote": "Комментарий решения",
"assign": "Назначить"
},
"navGroup": {
"work": "Работа",
"overview": "Обзор",
"content": "Контент",
"moderation": "Модерация",
"system": "Система",
"account": "Аккаунт"
},
"nav": {
"inboxReports": "Входящие · жалобы",
"inboxTickets": "Входящие · тикеты",
"dashboard": "Дашборд",
"monitoring": "Мониторинг",
"users": "Пользователи",
"calendars": "Календари",
"events": "События",
"subscriptions": "Подписки",
"reports": "Жалобы (список)",
"reviews": "Отзывы",
"bannedWords": "Бан-слова",
"tickets": "Тикеты (список)",
"admins": "Администраторы",
"audit": "Аудит",
"profile": "Мой профиль"
},
"layout": {
"search": "Поиск",
"searchHotkey": "Поиск (⌘K)",
"myProfile": "Мой профиль",
"uiLanguage": "Язык интерфейса",
"logout": "Выйти",
"densityCompact": "Плотность: компактная",
"densityNormal": "Плотность: обычная",
"densityToNormal": "Обычная плотность",
"densityToCompact": "Компактная плотность",
"paletteTitle": "Командная палитра",
"palettePlaceholder": "Перейти к разделу…",
"paletteHints": "↑↓ навигация · Enter открыть · Esc закрыть",
"nodesNoData": "Ноды: нет данных",
"nodesPrev": "Предыдущие ноды",
"nodesNext": "Следующие ноды"
},
"explore": {
"viewAria": "Вид списка",
"table": "Таблица",
"rows": "Строки",
"tops": "Топы",
"listsCount": "{{count}} списка",
"descPreviewName": "Explore · клик по имени — preview, ⋯ — действия",
"descPreviewTitle": "Explore · клик по названию — preview, ⋯ — действия",
"descActions": "Explore · ⋯ — действия",
"descBulk": "Explore · ⋯ — действия, массовые операции через выбор строк",
"descRowOpen": "Explore · клик по строке — открыть, ⋯ — действия",
"searchEvents": "Поиск событий…",
"searchCalendars": "Поиск календарей…",
"searchUsers": "Поиск (email, ник)…",
"searchWord": "Поиск по слову",
"expiringSoon": "Скоро истекают",
"paid30d": "Платные · 30 дней",
"byRating": "Рейтинг",
"byReviews": "Отзывы",
"positive": "Позитивные",
"negative": "Негативные",
"allReviews": "Все отзывы",
"byReports": "По жалобам",
"loginAt": "вход {{date}}",
"ownerId": "владелец {{id}}"
},
"inbox": {
"reportsTitle": "Входящие · Жалобы",
"ticketsTitle": "Входящие · Тикеты",
"reportsHints": "j/k · Enter открыть · 1 рассмотрено · 2 отклонено · клик по ссылке → preview",
"ticketsHints": "j/k · Enter открыть · 1 решено · 2 в работу",
"pending": "Ожидают",
"all": "Все",
"active": "Активные",
"mine": "Мои",
"queue": "Очередь ({{count}})",
"selectReport": "Выберите жалобу из очереди",
"selectTicket": "Выберите тикет из очереди",
"reportCard": "Жалоба {{id}}",
"fullCard": "Полная карточка",
"bannerReports": "Оперативная работа с жалобами — во входящих",
"bannerTickets": "Оперативная работа с тикетами — во входящих"
},
"dashboard": {
"controlCenter": "Control Center",
"moderation": "Модерация",
"support": "Поддержка",
"subtitleAdmin": "Работа · Обзор · расследование",
"subtitleModeration": "Главный рабочий режим — входящие. Здесь только KPI смены.",
"subtitleSupport": "Фокус на назначенных тикетах — не на полном каталоге ошибок.",
"reportsInboxTitle": "Входящие жалобы",
"reportsInboxDesc": "Split-view очередь: j/k, 1 рассмотрено, 2 отклонено",
"ticketsInboxTitle": "Входящие тикеты",
"ticketsInboxDesc": "Активные / мои · j/k · 1 решено · 2 в работу",
"reportQueueTitle": "Очередь жалоб",
"reportQueueDesc": "Ожидают: {{count}}",
"ticketQueueTitle": "Очередь тикетов",
"ticketQueueDesc": "Открытых: {{count}}",
"quickOverview": "Быстрый обзор",
"pending": "Ожидают",
"reviewed": "Рассмотрено",
"avgTimeH": "Ср. время (ч)",
"assignedOpen": "Назначено открытых",
"assignedTotal": "Всего назначено",
"avgResolutionH": "Ср. решение (ч)",
"eventsByDay": "События по дням",
"registrationsByDay": "Регистрации по дням",
"reviewsByDay": "Отзывы по дням",
"reportsByDay": "Жалобы по дням",
"ticketsByDay": "Тикеты по дням",
"subscriptionsByDay": "Подписки по дням",
"loadStatsError": "Не удалось загрузить статистику",
"ticketsTotal": "Тикеты (всего)",
"ticketsOpen": "Открытых тикетов",
"trialSubscriptions": "Пробные подписки"
},
"monitoring": {
"title": "Наблюдение · Мониторинг",
"subtitle": "Live WS + история метрик · диапазон {{minutes}} мин",
"noData": "нет данных",
"waitingTitle": "Ожидание телеметрии",
"waitingDesc": "Метрики появятся по WebSocket или после ответа REST history за выбранный интервал.",
"noPoints": "Пока нет точек данных.",
"node": "Нода",
"nodeNamed": "Нода {{name}}",
"refreshing": "Обновление истории…",
"m5": "5 мин",
"m15": "15 мин",
"m30": "30 мин",
"h1": "1 час",
"onlineNodes": "Онлайн-ноды",
"cpuPeak": "Пик CPU (latest)",
"memoryAvg": "Память avg",
"cpuMemory": "CPU и память (МБ)",
"memoryByType": "Память по типам (МБ)",
"wsQueue": "WebSocket и очередь",
"mnesia": "Mnesia",
"mnesiaTables": "Размеры таблиц Mnesia (последняя точка)",
"noTableData": "Нет данных по таблицам за выбранный интервал",
"table": "Таблица",
"records": "Записей",
"healthy": "{{count}} нод в норме",
"load": "{{count}} нод · нагрузка"
},
"status": {
"active": "Активен",
"frozen": "Заморожен",
"deleted": "Удалён",
"pending": "Ожидает",
"reviewed": "Рассмотрено",
"dismissed": "Отклонено",
"open": "Открыт",
"in_progress": "В работе",
"resolved": "Решён",
"closed": "Закрыт",
"visible": "Видимый",
"hidden": "Скрыт",
"cancelled": "Отменён",
"completed": "Завершён",
"expired": "Истёк"
},
"ws": {
"newReport": "Новая жалоба",
"reportId": "Жалоба #{{id}}",
"onTarget": "на {{type}}",
"newTicket": "Создан новый тикет",
"ticketCreated": "Тикет #{{id}} создан",
"open": "Открыть"
},
"errors": {
"forbiddenTitle": "403",
"forbiddenMessage": "У вас нет доступа к разделу «{{section}}».",
"renderTitle": "Ошибка отображения",
"renderFallback": "Не удалось отобразить страницу."
},
"login": {
"title": "Вход",
"subtitle": "Control Center · модерация и поддержка",
"email": "Email",
"password": "Пароль",
"submit": "Войти",
"invalid_credentials": "Неверный email или пароль",
"insufficient_permissions": "Недостаточно прав для входа",
"error": "Ошибка входа"
},
"profile": {
"title": "Мой профиль",
"description": "Данные учётной записи администратора",
"edit": "Редактировать",
"saved": "Профиль обновлён",
"saveError": "Ошибка обновления профиля",
"avatarUrl": "URL аватара",
"preferences": "Настройки",
"preferencesJson": "Настройки (JSON)",
"invalidJson": "Невалидный JSON",
"preferencesInvalidJson": "Поле «Настройки» должно быть валидным JSON"
},
"users": {
"title": "Пользователи",
"editTitle": "Редактировать пользователя",
"deleteTitle": "Удалить пользователя?",
"deleteHint": "Это действие нельзя отменить. При необходимости предварительно укажите причину через редактирование.",
"statusTitle": "Изменить статус на «{{status}}»",
"notFound": "Пользователь не найден"
},
"events": {
"title": "События",
"entity": "Событие",
"detailTitle": "Событие {{name}}",
"editTitle": "Редактировать событие",
"deleteTitle": "Удалить событие?",
"notFound": "Событие не найдено",
"topsRating": "Топ по рейтингу",
"startDatetime": "Дата и время начала",
"durationMin": "Продолжительность (мин)",
"capacity": "Вместимость",
"specialistId": "Специалист (ID)",
"calendarId": "Календарь (ID)",
"onlineLink": "Ссылка онлайн",
"tags": "Теги",
"recurrenceInterval": "{{freq}} (интервал: {{interval}})",
"ratingWithCount": "{{avg}} ({{count}} оценок)"
},
"calendars": {
"title": "Календари",
"entity": "Календарь",
"detailTitle": "Календарь {{name}}",
"editTitle": "Редактировать календарь",
"deleteTitle": "Удалить календарь?",
"notFound": "Календарь не найден"
},
"reports": {
"title": "Жалобы",
"entity": "Жалоба",
"notFound": "Жалоба не найдена",
"detailTitle": "Жалоба {{id}}",
"resolvedAt": "Решено",
"resolvedBy": "Кем решено",
"id": "ID"
},
"reviews": {
"title": "Отзывы",
"detailTitle": "Отзыв {{id}}",
"editTitle": "Редактировать отзыв",
"hideSelected": "Скрыть выбранные",
"showSelected": "Показать выбранные",
"deleteSelected": "Удалить выбранные",
"notFound": "Отзыв не найден",
"score": "Оценка",
"likesDislikes": "Лайки / Дизлайки",
"selectAllAria": "Выбрать все на странице",
"selectReviewAria": "Выбрать отзыв {{id}}",
"selectReviews": "Выберите отзывы",
"reasonRequired": "Укажите причину изменения статуса",
"reasonRequiredShort": "Укажите причину",
"bulkStatusTitle": "Изменить статус на «{{status}}» для {{count}} отзывов",
"bulkReasonPlaceholder": "Общая причина для выбранных отзывов",
"ratingValue": "Оценка {{rating}}"
},
"tickets": {
"title": "Тикеты",
"detailTitle": "Тикет {{id}}",
"deleteTitle": "Удалить тикет?",
"notFound": "Тикет не найден",
"statsHint": "Explore · закрыто {{closed}}, всего ошибок {{errors}}"
},
"subscriptions": {
"title": "Подписки",
"editTitle": "Редактировать подписку",
"deleteTitle": "Удалить подписку?",
"trial": "Пробный",
"trialUsed": "Пробный период использован",
"trialCount": "Пробные",
"expiresUntil": "до {{date}}",
"trialBadge": "пробный"
},
"admins": {
"title": "Администраторы",
"detailTitle": "Администратор {{name}}",
"description": "Управление учётными записями администраторов",
"add": "Добавить администратора",
"createTitle": "Создать администратора",
"editTitle": "Редактировать администратора",
"deleteTitle": "Удалить администратора?",
"notFound": "Администратор не найден"
},
"audit": {
"title": "Аудит",
"description": "Журнал действий администраторов",
"admin": "Администратор",
"action": "Действие",
"name": "Наименование",
"searchAdmin": "Поиск администратора",
"searchAdminPlaceholder": "Email…"
},
"bannedWords": {
"title": "Бан-слова",
"description": "Управление запрещёнными словами в контенте",
"placeholder": "Новое слово",
"deleteTitle": "Удалить слово?",
"deleteBody": "Слово «{{word}}» будет удалено из списка запрещённых.",
"addedBy": "Кем добавлено",
"addedAt": "Дата добавления"
},
"menu": {
"dashboard": "Дашборд",
"users": "Пользователи",
@@ -12,23 +450,5 @@
"admins": "Администраторы",
"audit": "Аудит",
"monitoring": "Мониторинг"
},
"profile": {
"title": "Мой профиль",
"edit": "Редактировать",
"saved": "Профиль обновлён"
},
"login": {
"title": "Вход",
"email": "Email",
"password": "Пароль",
"submit": "Войти",
"invalid_credentials": "Неверный email или пароль",
"insufficient_permissions": "Недостаточно прав для входа",
"error": "Ошибка входа"
},
"ws": {
"newReport": "Новая жалоба",
"newTicket": "Новый тикет"
}
}