feat(admin): Control Center redesign, Explore dual-view и полный RU/EN i18n
Refs EventHub/EventHubFrontAdmin#32
This commit is contained in:
+438
-18
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user