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"
}
}