8753e84a03
Resolve VERSION from EventHubSpec; VITE_APP_BUILD from run_number; show Admin UI / API as version.build (sha). Co-authored-by: Cursor <cursoragent@cursor.com>
526 lines
17 KiB
JSON
526 lines
17 KiB
JSON
{
|
||
"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",
|
||
"ageJustNow": "just now",
|
||
"ageMinutes": "{{count}}m",
|
||
"ageHours": "{{count}}h",
|
||
"ageYesterday": "yesterday",
|
||
"ageDays": "{{count}}d",
|
||
"selectedCount": "Selected: {{count}}",
|
||
"bulkReviewed": "Reviewed ({{count}})",
|
||
"bulkDismissed": "Dismissed ({{count}})",
|
||
"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": "Queue · reports",
|
||
"inboxTickets": "Queue · tickets",
|
||
"inboxAutomod": "Queue · automod",
|
||
"dashboard": "Dashboard",
|
||
"monitoring": "Monitoring",
|
||
"users": "Users",
|
||
"calendars": "Calendars",
|
||
"events": "Events",
|
||
"subscriptions": "Subscriptions",
|
||
"reports": "Reports · archive",
|
||
"reviews": "Reviews",
|
||
"bannedWords": "Banned words",
|
||
"automodSettings": "Automoderation",
|
||
"tickets": "Tickets · archive",
|
||
"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 a section or paste an ID…",
|
||
"paletteHints": "↑↓ navigate · Enter open · Esc close",
|
||
"paletteOpenReportInbox": "Report in inbox",
|
||
"paletteOpenReport": "Report detail",
|
||
"paletteOpenTicketInbox": "Ticket in inbox",
|
||
"paletteOpenTicket": "Ticket detail",
|
||
"paletteOpenEvent": "Event detail",
|
||
"paletteOpenUser": "User detail",
|
||
"paletteJumpGroup": "By ID",
|
||
"nodesNoData": "Nodes: no data",
|
||
"nodesLabel": "Nodes · CPU",
|
||
"nodesPrev": "Previous nodes",
|
||
"nodesNext": "Next nodes",
|
||
"nodeTooltipTitle": "Node {{node}} · CPU / RAM",
|
||
"nodeCpu": "CPU: {{value}}%",
|
||
"nodeMemory": "Memory: {{used}} / {{total}} MB ({{percent}}%)",
|
||
"nodeWas": "was {{value}}%",
|
||
"nodeAria": "{{node}}: CPU {{cpu}}%, memory {{memory}}%",
|
||
"adminVersion": "Admin UI {{version}}",
|
||
"apiVersion": "API {{version}}",
|
||
"apiVersionUnavailable": "API — unavailable"
|
||
},
|
||
"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": "Queue · Reports",
|
||
"ticketsTitle": "Queue · 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 work is in Queue · reports. This is archive and filters.",
|
||
"bannerTickets": "Day-to-day work is in Queue · tickets. This is the full list and filters."
|
||
},
|
||
"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",
|
||
"automodHit": "Automoderation hit",
|
||
"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)",
|
||
"periodChip": "start_time range: {{from}} — {{to}}",
|
||
"emptyFiltered": "No events match the current filters",
|
||
"emptyInRange": "No events in the selected period",
|
||
"widenPeriod": "Widen period",
|
||
"resetFilters": "Reset filters"
|
||
},
|
||
"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}}",
|
||
"source": "Source",
|
||
"sourceAll": "All sources",
|
||
"sourceBackend": "Backend",
|
||
"sourceFrontend": "Frontend",
|
||
"sourceManual": "Manual"
|
||
},
|
||
"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"
|
||
},
|
||
"automodSettings": {
|
||
"title": "Automoderation settings",
|
||
"description": "Keyword policy, matching mode, and report threshold",
|
||
"keywordAction": "Action on banned word",
|
||
"actionFlag": "Flag (queue + soft-hide)",
|
||
"actionReject": "Reject save",
|
||
"actionCensor": "Replace with ***",
|
||
"matchMode": "Match mode",
|
||
"matchWordBoundary": "Word boundary",
|
||
"matchSubstring": "Substring",
|
||
"reportThreshold": "Pending reports threshold",
|
||
"thresholdInvalid": "Threshold must be ≥ 1",
|
||
"saved": "Settings saved",
|
||
"saveFailed": "Failed to save settings"
|
||
},
|
||
"automodInbox": {
|
||
"title": "Automoderation queue",
|
||
"description": "Hits from keywords and report threshold",
|
||
"createdAt": "When",
|
||
"trigger": "Trigger",
|
||
"entity": "Entity",
|
||
"words": "Words",
|
||
"action": "Action",
|
||
"status": "Status",
|
||
"actions": "Decision",
|
||
"approve": "Approve",
|
||
"reject": "Reject",
|
||
"filterOpen": "Open",
|
||
"filterAll": "All",
|
||
"filterApproved": "Approved",
|
||
"filterRejected": "Rejected",
|
||
"resolved": "Decision saved",
|
||
"resolveFailed": "Failed to save decision"
|
||
},
|
||
"menu": {
|
||
"dashboard": "Dashboard",
|
||
"users": "Users",
|
||
"calendars": "Calendars",
|
||
"events": "Events",
|
||
"reports": "Reports",
|
||
"reviews": "Reviews",
|
||
"bannedWords": "Banned words",
|
||
"tickets": "Tickets",
|
||
"subscriptions": "Subscriptions",
|
||
"admins": "Admins",
|
||
"audit": "Audit",
|
||
"monitoring": "Monitoring"
|
||
}
|
||
}
|