@escalated-dev/escalated 0.8.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +388 -361
  3. package/package.json +85 -84
  4. package/src/components/ActiveChatsPanel.vue +246 -246
  5. package/src/components/AdminDashboard.stories.js +1423 -1423
  6. package/src/components/AttachmentList.vue +65 -65
  7. package/src/components/ChatActionBar.vue +226 -226
  8. package/src/components/ChatBubble.vue +162 -162
  9. package/src/components/ChatComposer.vue +308 -308
  10. package/src/components/ChatQueue.vue +222 -222
  11. package/src/components/ChatThread.vue +197 -197
  12. package/src/components/CustomTicketActions.stories.js +71 -0
  13. package/src/components/CustomTicketActions.vue +101 -0
  14. package/src/components/EscalatedLayout.vue +628 -604
  15. package/src/components/FollowButton.vue +20 -1
  16. package/src/components/MentionDropdown.vue +154 -154
  17. package/src/components/MetricComparison.vue +89 -89
  18. package/src/components/PercentileChart.vue +67 -67
  19. package/src/components/PeriodSelector.vue +98 -98
  20. package/src/components/PresenceIndicator.vue +228 -213
  21. package/src/components/ReplyComposer.vue +336 -336
  22. package/src/components/ReplyThread.vue +153 -153
  23. package/src/components/ReportChart.vue +395 -395
  24. package/src/components/ReportExportButton.vue +108 -108
  25. package/src/components/SaveViewDialog.vue +172 -172
  26. package/src/components/SavedViewSidebar.vue +208 -208
  27. package/src/components/SkillTagManager.vue +3 -0
  28. package/src/components/SnoozeButton.vue +247 -247
  29. package/src/components/TicketFilters.vue +270 -270
  30. package/src/components/TicketList.vue +655 -655
  31. package/src/components/TicketSidebar.vue +4 -0
  32. package/src/components/TicketSplitDialog.vue +98 -98
  33. package/src/components/TicketSubjects.stories.js +63 -0
  34. package/src/components/TicketSubjects.vue +107 -0
  35. package/src/components/TwoFactorSetup.vue +1 -37
  36. package/src/components/VariableTokenInput.vue +111 -111
  37. package/src/components/WorkflowActionConfig.vue +287 -287
  38. package/src/components/WorkflowActionList.vue +350 -350
  39. package/src/components/WorkflowConditionBuilder.vue +265 -265
  40. package/src/components/WorkflowTriggerSelector.vue +125 -125
  41. package/src/components/admin/newsletters/AnalyticsTiles.stories.js +14 -0
  42. package/src/components/admin/newsletters/AnalyticsTiles.vue +55 -0
  43. package/src/components/admin/newsletters/DeliveriesTable.stories.js +28 -0
  44. package/src/components/admin/newsletters/DeliveriesTable.vue +104 -0
  45. package/src/components/admin/newsletters/DynamicFilterBuilder.stories.js +11 -0
  46. package/src/components/admin/newsletters/DynamicFilterBuilder.vue +53 -0
  47. package/src/components/admin/newsletters/ListMemberTable.stories.js +12 -0
  48. package/src/components/admin/newsletters/ListMemberTable.vue +53 -0
  49. package/src/components/admin/newsletters/MarkdownEditor.stories.js +6 -0
  50. package/src/components/admin/newsletters/MarkdownEditor.vue +53 -0
  51. package/src/components/admin/newsletters/MergeFieldDropdown.stories.js +6 -0
  52. package/src/components/admin/newsletters/MergeFieldDropdown.vue +84 -0
  53. package/src/components/admin/newsletters/PreviewIframe.stories.js +7 -0
  54. package/src/components/admin/newsletters/PreviewIframe.vue +40 -0
  55. package/src/components/admin/newsletters/SummaryTiles.stories.js +8 -0
  56. package/src/components/admin/newsletters/SummaryTiles.vue +63 -0
  57. package/src/composables/useChat.js +187 -187
  58. package/src/composables/useI18n.js +102 -102
  59. package/src/composables/useMentions.js +134 -134
  60. package/src/composables/usePermissions.js +31 -0
  61. package/src/composables/useRealtime.js +182 -182
  62. package/src/index.js +85 -84
  63. package/src/locales/README.md +13 -13
  64. package/src/locales/ar.json +727 -727
  65. package/src/locales/de.json +690 -690
  66. package/src/locales/en.json +889 -729
  67. package/src/locales/es.json +691 -691
  68. package/src/locales/fr.json +691 -691
  69. package/src/locales/index.js +16 -16
  70. package/src/locales/it.json +727 -727
  71. package/src/locales/ja.json +727 -727
  72. package/src/locales/ko.json +727 -727
  73. package/src/locales/nl.json +727 -727
  74. package/src/locales/pl.json +727 -727
  75. package/src/locales/pt-BR.json +727 -727
  76. package/src/locales/ru.json +727 -727
  77. package/src/locales/tr.json +727 -727
  78. package/src/locales/zh-CN.json +727 -727
  79. package/src/pages/Admin/Automations/Form.vue +280 -0
  80. package/src/pages/Admin/Automations/Index.vue +230 -0
  81. package/src/pages/Admin/Newsletters/Compose.vue +192 -0
  82. package/src/pages/Admin/Newsletters/Edit.vue +24 -0
  83. package/src/pages/Admin/Newsletters/Index.vue +141 -0
  84. package/src/pages/Admin/Newsletters/Lists/Create.vue +64 -0
  85. package/src/pages/Admin/Newsletters/Lists/Index.vue +59 -0
  86. package/src/pages/Admin/Newsletters/Lists/Show.vue +53 -0
  87. package/src/pages/Admin/Newsletters/Settings.vue +85 -0
  88. package/src/pages/Admin/Newsletters/Show.vue +140 -0
  89. package/src/pages/Admin/Newsletters/Templates/Create.vue +11 -0
  90. package/src/pages/Admin/Newsletters/Templates/Index.vue +54 -0
  91. package/src/pages/Admin/Newsletters/Templates/Show.vue +65 -0
  92. package/src/pages/Admin/Newsletters/usePreview.js +44 -0
  93. package/src/pages/Admin/Plugins/Index.vue +10 -2
  94. package/src/pages/Admin/Reports/AgentDetail.vue +132 -132
  95. package/src/pages/Admin/Reports/AgentRanking.vue +246 -246
  96. package/src/pages/Admin/Reports/Cohorts.vue +180 -180
  97. package/src/pages/Admin/Reports/Comparison.vue +141 -141
  98. package/src/pages/Admin/Reports/Dashboard.vue +226 -226
  99. package/src/pages/Admin/Reports/ResolutionTimes.vue +164 -164
  100. package/src/pages/Admin/Reports/ResponseTimes.vue +164 -164
  101. package/src/pages/Admin/Reports/SlaTrends.vue +183 -183
  102. package/src/pages/Admin/Settings/DatabaseConnection.vue +228 -0
  103. package/src/pages/Admin/Settings/PublicTickets.vue +163 -0
  104. package/src/pages/Admin/Settings/SsoSettings.vue +157 -4
  105. package/src/pages/Admin/Settings/TwoFactor.vue +32 -6
  106. package/src/pages/Admin/Settings.vue +1008 -1008
  107. package/src/pages/Admin/Skills/Form.vue +30 -10
  108. package/src/pages/Admin/Tickets/Index.vue +126 -126
  109. package/src/pages/Admin/Tickets/Show.vue +254 -249
  110. package/src/pages/Admin/Users/Index.vue +145 -145
  111. package/src/pages/Admin/Webhooks/DeliveryLog.vue +1 -2
  112. package/src/pages/Admin/Workflows/Builder.vue +207 -207
  113. package/src/pages/Admin/Workflows/Form.vue +24 -0
  114. package/src/pages/Admin/Workflows/Index.vue +235 -235
  115. package/src/pages/Admin/Workflows/Logs.vue +286 -286
  116. package/src/pages/Agent/TicketIndex.vue +112 -112
  117. package/src/pages/Agent/TicketShow.vue +547 -494
  118. package/src/pages/Customer/Index.vue +56 -56
  119. package/src/pages/Customer/KnowledgeBase/Article.vue +129 -129
  120. package/src/pages/Plugin/Page.vue +61 -0
  121. package/src/plugin.js +175 -175
  122. package/src/utils/mentionHighlight.js +24 -24
  123. package/src/widget/EscalatedWidget.vue +804 -804
  124. package/src/widget/index.js +254 -254
@@ -1,729 +1,889 @@
1
- {
2
- "nav": {
3
- "admin": "Admin",
4
- "admin_badge": "ADMIN",
5
- "agent_panel": "Agent Panel",
6
- "back_to_app": "Back to App",
7
- "my_tickets": "My Tickets",
8
- "dashboard": "Dashboard",
9
- "tickets": "Tickets",
10
- "reports": "Reports",
11
- "departments": "Departments",
12
- "sla_policies": "SLA Policies",
13
- "escalation_rules": "Escalation Rules",
14
- "tags": "Tags",
15
- "canned_responses": "Canned Responses",
16
- "macros": "Macros",
17
- "api_tokens": "API Tokens",
18
- "plugins": "Plugins",
19
- "settings": "Settings"
20
- },
21
- "status": {
22
- "open": "Open",
23
- "in_progress": "In Progress",
24
- "waiting_on_customer": "Waiting on Customer",
25
- "waiting_on_agent": "Waiting on Agent",
26
- "escalated": "Escalated",
27
- "resolved": "Resolved",
28
- "closed": "Closed",
29
- "reopened": "Reopened"
30
- },
31
- "priority": {
32
- "low": "Low",
33
- "medium": "Medium",
34
- "high": "High",
35
- "urgent": "Urgent",
36
- "critical": "Critical"
37
- },
38
- "activity": {
39
- "status_changed": "changed status",
40
- "assigned": "assigned ticket",
41
- "unassigned": "unassigned ticket",
42
- "priority_changed": "changed priority",
43
- "tag_added": "added tag",
44
- "tag_removed": "removed tag",
45
- "escalated": "escalated ticket",
46
- "sla_breached": "SLA breached",
47
- "replied": "replied",
48
- "note_added": "added note",
49
- "department_changed": "changed department",
50
- "reopened": "reopened ticket",
51
- "resolved": "resolved ticket",
52
- "closed": "closed ticket",
53
- "system": "System",
54
- "no_activity": "No activity yet.",
55
- "to": "to",
56
- "assigned_to": "assigned to"
57
- },
58
- "ticket": {
59
- "reference": "Reference",
60
- "subject": "Subject",
61
- "requester": "Requester",
62
- "status": "Status",
63
- "priority": "Priority",
64
- "assignee": "Assignee",
65
- "last_reply": "Last Reply",
66
- "unknown": "Unknown",
67
- "unassigned": "Unassigned",
68
- "no_tickets": "No tickets found.",
69
- "details": "Details",
70
- "department": "Department",
71
- "created": "Created",
72
- "activity": "Activity",
73
- "conversation": "Conversation",
74
- "by": "by",
75
- "assign_to_me": "Assign to Me",
76
- "close_ticket": "Close Ticket",
77
- "reopen": "Reopen",
78
- "all_tickets": "All Tickets",
79
- "ticket_queue": "Ticket Queue",
80
- "my_tickets": "My Tickets",
81
- "new_ticket": "New Ticket",
82
- "create_ticket": "Create Ticket",
83
- "submit_ticket": "Submit Ticket",
84
- "no_replies": "No replies yet.",
85
- "ticket_closed_no_replies": "This ticket is closed. No further replies can be added."
86
- },
87
- "bulk": {
88
- "tickets_selected": ":count ticket(s) selected",
89
- "status_placeholder": "Status...",
90
- "priority_placeholder": "Priority...",
91
- "assign_placeholder": "Assign to...",
92
- "department_placeholder": "Department...",
93
- "delete": "Delete",
94
- "deselect_all": "Deselect All"
95
- },
96
- "filter": {
97
- "search_tickets": "Search tickets...",
98
- "all_statuses": "All Statuses",
99
- "all_priorities": "All Priorities",
100
- "all_agents": "All Agents",
101
- "all_departments": "All Departments",
102
- "following": "Following"
103
- },
104
- "quick_filter": {
105
- "my_tickets": "My Tickets",
106
- "unassigned": "Unassigned",
107
- "urgent_plus": "Urgent+",
108
- "sla_breaching": "SLA Breaching",
109
- "following": "Following"
110
- },
111
- "reply": {
112
- "reply": "Reply",
113
- "internal_note": "Internal Note",
114
- "note_visibility": "This note is only visible to agents.",
115
- "placeholder": "Type your reply...",
116
- "canned_responses": "Canned responses...",
117
- "add_note": "Add Note",
118
- "send_reply": "Send Reply",
119
- "pinned": "Pinned",
120
- "unpin": "Unpin",
121
- "pin": "Pin",
122
- "write_internal_note": "Write an internal note..."
123
- },
124
- "rating": {
125
- "customer_rating": "Customer Rating",
126
- "how_was_experience": "How was your experience?",
127
- "terrible": "Terrible",
128
- "poor": "Poor",
129
- "okay": "Okay",
130
- "good": "Good",
131
- "excellent": "Excellent",
132
- "feedback_placeholder": "Any additional feedback? (optional)",
133
- "thank_you": "Thank you for your feedback!",
134
- "submit_rating": "Submit Rating",
135
- "customer_satisfaction": "Customer Satisfaction"
136
- },
137
- "keyboard": {
138
- "title": "Keyboard Shortcuts",
139
- "list_view": "List View",
140
- "detail_view": "Detail View",
141
- "global": "Global",
142
- "move_down": "Move down",
143
- "move_up": "Move up",
144
- "toggle_select": "Toggle select",
145
- "open_ticket": "Open ticket",
146
- "reply": "Reply",
147
- "internal_note": "Internal note",
148
- "change_status": "Change status",
149
- "change_priority": "Change priority",
150
- "follow_unfollow": "Follow/unfollow",
151
- "show_help": "Show this help",
152
- "esc_to_close": "Press Esc to close"
153
- },
154
- "sla": {
155
- "overdue": "Overdue",
156
- "breached": "SLA Breached",
157
- "first_response": "First Response",
158
- "resolution": "Resolution"
159
- },
160
- "follow": {
161
- "following": "Following",
162
- "follow": "Follow"
163
- },
164
- "file": {
165
- "drop_or_browse": "Drop files here or :link",
166
- "browse": "browse"
167
- },
168
- "macro": {
169
- "apply_macro": "Apply Macro",
170
- "macros": "Macros",
171
- "no_macros": "No macros available"
172
- },
173
- "form": {
174
- "name": "Name",
175
- "description": "Description",
176
- "slug": "Slug",
177
- "auto_generated": "Auto-generated if empty",
178
- "active": "Active",
179
- "update": "Update",
180
- "create": "Create",
181
- "save": "Save",
182
- "cancel": "Cancel",
183
- "edit": "Edit",
184
- "delete": "Delete",
185
- "actions": "Actions",
186
- "order": "Order",
187
- "value": "Value",
188
- "yes": "Yes",
189
- "no": "No",
190
- "confirm": "Confirm",
191
- "none": "None",
192
- "general": "General",
193
- "shared": "Shared",
194
- "private": "Private",
195
- "color": "Color",
196
- "title": "Title",
197
- "copy": "Copy",
198
- "dismiss": "Dismiss",
199
- "saved": "Saved.",
200
- "saving": "Saving...",
201
- "creating": "Creating...",
202
- "submitting": "Submitting...",
203
- "sending": "Sending...",
204
- "uploading": "Uploading...",
205
- "copied": "Copied!",
206
- "subject": "Subject",
207
- "priority": "Priority",
208
- "department": "Department",
209
- "attachments": "Attachments"
210
- },
211
- "presence": {
212
- "also_viewing": "Also viewing: :names"
213
- },
214
- "pinned_notes": {
215
- "title": "Pinned Notes",
216
- "unpin": "Unpin"
217
- },
218
- "admin": {
219
- "settings": {
220
- "title": "Settings",
221
- "general": "General",
222
- "guest_tickets": "Guest Tickets",
223
- "guest_tickets_desc": "Allow visitors to submit tickets without signing in",
224
- "allow_customer_close": "Allow Customer Close",
225
- "allow_customer_close_desc": "Let customers close their own tickets",
226
- "auto_close": "Auto-close resolved tickets after",
227
- "auto_close_desc": "Days after resolution before auto-closing (0 to disable)",
228
- "days": "days",
229
- "limits": "Limits",
230
- "max_attachments": "Max attachments per reply",
231
- "max_attachment_size": "Max attachment size",
232
- "tickets": "Tickets",
233
- "reference_prefix": "Reference Prefix",
234
- "reference_prefix_desc": "Prefix for ticket references (e.g. ESC produces ESC-00001)",
235
- "inbound_email": "Inbound Email",
236
- "inbound_email_desc": "Allow creating and replying to tickets via email",
237
- "email_provider": "Email Provider",
238
- "email_provider_desc": "How inbound emails are received",
239
- "support_email": "Support Email Address",
240
- "support_email_desc": "The email address customers will send emails to (e.g. support@example.com)",
241
- "signing_key": "Signing Key",
242
- "webhook_url": "Webhook URL",
243
- "mailgun_webhook_desc": "Configure this URL in your Mailgun dashboard",
244
- "inbound_token": "Inbound Token",
245
- "postmark_webhook_desc": "Configure this URL in your Postmark server settings",
246
- "region": "Region",
247
- "topic_arn": "Topic ARN",
248
- "ses_webhook_desc": "Configure this URL as your SNS subscription endpoint",
249
- "host": "Host",
250
- "port": "Port",
251
- "encryption": "Encryption",
252
- "username": "Username",
253
- "password": "Password",
254
- "mailbox": "Mailbox",
255
- "save_settings": "Save Settings"
256
- },
257
- "reports": {
258
- "title": "Reports",
259
- "last_days": "Last :count days",
260
- "total_tickets": "Total Tickets",
261
- "resolved": "Resolved",
262
- "avg_first_response": "Avg First Response",
263
- "sla_breaches": "SLA Breaches",
264
- "by_status": "By Status",
265
- "by_priority": "By Priority",
266
- "no_data": "No ticket data for this period",
267
- "no_ratings": "No ratings for this period",
268
- "ratings_count": "(:count ratings)",
269
- "advanced_reports": "Advanced Reports",
270
- "sla_trends": "SLA Breach Trends",
271
- "response_times": "First Response Time Analysis",
272
- "resolution_times": "Resolution Time Analysis",
273
- "agent_ranking": "Agent Performance Rankings",
274
- "agent_detail": "Agent Deep-Dive",
275
- "cohorts": "Cohort Analysis",
276
- "comparison": "Period Comparison",
277
- "overview": "Overview",
278
- "agents": "Agents",
279
- "sla": "SLA",
280
- "csat": "CSAT",
281
- "export": "Export",
282
- "export_csv": "Export as CSV",
283
- "export_json": "Export as JSON",
284
- "period_custom": "Custom",
285
- "period_apply": "Apply",
286
- "period_start": "Start",
287
- "period_end": "End",
288
- "total_breaches": "Total Breaches",
289
- "breach_rate": "Breach Rate",
290
- "frt_breaches": "FRT Breaches",
291
- "resolution_breaches_label": "Resolution Breaches",
292
- "breach_count_over_time": "Breach Count Over Time",
293
- "frt_vs_resolution": "First Response vs Resolution Breaches",
294
- "breach_by_department": "Breach Rate by Department",
295
- "breach_by_priority": "Breach Rate by Priority",
296
- "at_risk": "At Risk - Approaching SLA Breach",
297
- "critical": "Critical",
298
- "warning": "Warning",
299
- "watch": "Watch",
300
- "hours_remaining": ":count h remaining",
301
- "no_at_risk": "No tickets currently at risk of breaching SLA.",
302
- "no_at_risk": "No tickets currently at risk.",
303
- "avg_frt": "Average FRT",
304
- "median_frt": "Median FRT",
305
- "p90_frt": "P90 FRT",
306
- "under_target": "Under Target",
307
- "frt_distribution": "FRT Distribution",
308
- "avg_frt_trend": "Average FRT Trend",
309
- "frt_by_department": "FRT by Department",
310
- "frt_by_priority": "FRT by Priority",
311
- "frt_by_agent": "FRT by Agent",
312
- "avg_resolution": "Avg Resolution",
313
- "median_resolution": "Median Resolution",
314
- "p90_resolution": "P90 Resolution",
315
- "resolution_distribution": "Resolution Time Distribution",
316
- "resolution_trend": "Avg Resolution Time Trend",
317
- "resolution_by_department": "Resolution by Department",
318
- "resolution_by_channel": "Resolution by Channel",
319
- "resolution_by_agent": "Resolution Time by Agent",
320
- "composite_score": "Score",
321
- "resolution_rate": "Resolution %",
322
- "volume": "Volume",
323
- "trend": "Trend",
324
- "top_performers": "Top Performers",
325
- "needs_attention": "Needs Attention",
326
- "back_to_rankings": "Back to Rankings",
327
- "response_percentiles": "Response Time Percentiles",
328
- "productivity": "Productivity (Replies & Resolutions per Day)",
329
- "productivity": "Productivity",
330
- "workload_over_time": "Workload Over Time",
331
- "csat_breakdown": "CSAT Breakdown",
332
- "by_tag": "By Tag",
333
- "by_department": "By Department",
334
- "by_channel": "By Channel",
335
- "by_type": "By Type",
336
- "no_cohort_data": "No data for this cohort type.",
337
- "current_period": "Current Period",
338
- "previous_period": "Previous Period",
339
- "vs_previous": "vs previous period",
340
- "pct_change": "% change",
341
- "sla_compliance": "SLA Compliance",
342
- "no_agent_data": "No agent data for this period.",
343
- "avg": "Avg",
344
- "median": "Median",
345
- "agent": "Agent",
346
- "back": "Back"
347
- },
348
- "departments": {
349
- "title": "Departments",
350
- "add": "Add Department",
351
- "edit_title": "Edit Department",
352
- "new_title": "New Department",
353
- "tickets": "Tickets",
354
- "agents": "Agents",
355
- "no_departments": "No departments yet",
356
- "no_departments_desc": "Create your first department to organize tickets",
357
- "confirm_delete": "Delete this department?"
358
- },
359
- "sla_policies": {
360
- "title": "SLA Policies",
361
- "add": "Add Policy",
362
- "edit_title": "Edit SLA Policy",
363
- "new_title": "New SLA Policy",
364
- "default": "Default",
365
- "business_hours": "Business Hours",
366
- "business_hours_only": "Business hours only",
367
- "default_policy": "Default policy",
368
- "first_response_hours": "First Response Hours (by priority)",
369
- "resolution_hours": "Resolution Hours (by priority)",
370
- "no_policies": "No SLA policies yet",
371
- "no_policies_desc": "Define response and resolution time targets",
372
- "confirm_delete": "Delete this SLA policy?"
373
- },
374
- "escalation_rules": {
375
- "title": "Escalation Rules",
376
- "add": "Add Rule",
377
- "edit_title": "Edit Escalation Rule",
378
- "new_title": "New Escalation Rule",
379
- "trigger": "Trigger",
380
- "trigger_type": "Trigger Type",
381
- "time_based": "Time Based",
382
- "sla_breach": "SLA Breach",
383
- "priority_based": "Priority Based",
384
- "conditions": "Conditions",
385
- "add_short": "+ Add",
386
- "status": "Status",
387
- "priority": "Priority",
388
- "assignment": "Assignment",
389
- "age_hours": "Age (hours)",
390
- "no_response_hours": "No Response (hours)",
391
- "sla_breached": "SLA Breached",
392
- "escalate": "Escalate",
393
- "change_priority": "Change Priority",
394
- "assign_to": "Assign To",
395
- "change_department": "Change Department",
396
- "no_rules": "No escalation rules yet",
397
- "no_rules_desc": "Set up automatic escalation for overdue tickets",
398
- "confirm_delete": "Delete this escalation rule?"
399
- },
400
- "canned_responses": {
401
- "title": "Canned Responses",
402
- "add": "Add Response",
403
- "title_placeholder": "Title",
404
- "body_placeholder": "Response body...",
405
- "category_placeholder": "Category (optional)",
406
- "no_responses": "No canned responses yet",
407
- "no_responses_desc": "Create reusable templates for common replies",
408
- "confirm_delete": "Delete this canned response?"
409
- },
410
- "tags": {
411
- "title": "Tags",
412
- "add": "Add Tag",
413
- "no_tags": "No tags yet",
414
- "no_tags_desc": "Create tags to categorize and filter tickets",
415
- "confirm_delete": "Delete this tag?"
416
- },
417
- "macros": {
418
- "title": "Macros",
419
- "subtitle": "Macros automate repetitive actions on tickets.",
420
- "create_macro": "Create Macro",
421
- "update_macro": "Update Macro",
422
- "shared_label": "Shared with all agents",
423
- "add_action": "+ Add Action",
424
- "no_actions": "No actions yet. Add actions to define what this macro does.",
425
- "set_status": "Set Status",
426
- "set_priority": "Set Priority",
427
- "assign_to": "Assign To",
428
- "add_tags": "Add Tags",
429
- "move_to_department": "Move to Department",
430
- "send_reply": "Send Reply",
431
- "add_internal_note": "Add Internal Note",
432
- "select_status": "Select status...",
433
- "select_priority": "Select priority...",
434
- "agent_placeholder": "Agent ID or email",
435
- "tags_placeholder": "Comma-separated tag names",
436
- "department_placeholder": "Department ID or name",
437
- "reply_placeholder": "Reply message...",
438
- "note_placeholder": "Note content...",
439
- "no_macros": "No macros yet",
440
- "no_macros_desc": "Create macros to automate repetitive ticket actions",
441
- "creator": "Creator",
442
- "confirm_delete": "Delete this macro? This cannot be undone."
443
- },
444
- "api_tokens": {
445
- "title": "API Tokens",
446
- "subtitle": "Manage API tokens for desktop apps and external integrations.",
447
- "create_token": "Create Token",
448
- "api_disabled": "The REST API is currently disabled. Set ESCALATED_API_ENABLED=true in your .env to enable it.",
449
- "token_created": "Token created! Copy it now — it won't be shown again.",
450
- "new_token": "New API Token",
451
- "token_name": "Token Name",
452
- "token_name_placeholder": "e.g. Desktop App - Work Laptop",
453
- "user": "User",
454
- "select_user": "Select user...",
455
- "abilities": "Abilities",
456
- "expires_in": "Expires In (days)",
457
- "no_expiration": "Leave empty for no expiration",
458
- "last_used": "Last Used",
459
- "expires": "Expires",
460
- "never": "Never",
461
- "expired": "Expired",
462
- "revoke": "Revoke",
463
- "no_tokens": "No API tokens created yet.",
464
- "confirm_revoke": "Are you sure you want to revoke this token? This cannot be undone."
465
- },
466
- "plugins": {
467
- "title": "Plugins",
468
- "upload": "Upload Plugin",
469
- "plugin_zip": "Plugin ZIP File",
470
- "installed": "Installed Plugins",
471
- "no_plugins": "No plugins installed",
472
- "no_plugins_alt": "No plugins installed yet.",
473
- "no_plugins_desc": "Upload a plugin ZIP to extend Escalated with custom functionality.",
474
- "active": "Active",
475
- "inactive": "Inactive",
476
- "installed_date": "Installed :date",
477
- "menu_items": ":count menu item(s)",
478
- "widgets": ":count widget(s)",
479
- "page_components": ":count page component(s)",
480
- "confirm_delete": "Are you sure you want to delete this plugin? This cannot be undone."
481
- }
482
- },
483
- "import": {
484
- "title": "Import Data",
485
- "description": "Migrate tickets, contacts, and history from another helpdesk platform.",
486
- "no_adapters": "No import adapters installed.",
487
- "connect": "Connect to {platform}",
488
- "test_connection": "Test Connection",
489
- "testing": "Testing...",
490
- "connected": "Connected successfully",
491
- "field_mapping": "Field Mapping",
492
- "skip_entity": "Skip importing {type}",
493
- "review": "Review Import",
494
- "start": "Start Import",
495
- "starting": "Starting...",
496
- "progress": "Import Progress",
497
- "pause": "Pause",
498
- "resume": "Resume",
499
- "cancel": "Cancel",
500
- "paused": "Import paused.",
501
- "resumed": "Import resumed.",
502
- "cancelled": "Import cancelled.",
503
- "completed": "Import completed successfully.",
504
- "history": "Import History",
505
- "suppression_notice": "Notifications and automations are suppressed during import.",
506
- "recent_errors": "Recent Errors"
507
- },
508
- "agent": {
509
- "dashboard": "Agent Dashboard",
510
- "open_tickets": "Open Tickets",
511
- "my_assigned": "My Assigned",
512
- "unassigned": "Unassigned",
513
- "sla_breached": "SLA Breached",
514
- "resolved_today": "Resolved Today",
515
- "needs_attention": "Needs Attention",
516
- "sla_breaching": "SLA Breaching",
517
- "unassigned_urgent": "Unassigned Urgent",
518
- "recent_tickets": "Recent Tickets",
519
- "no_recent_tickets": "No recent tickets",
520
- "my_performance": "My Performance",
521
- "resolved_this_week": "Resolved This Week"
522
- },
523
- "guest": {
524
- "submit_title": "Submit a Ticket",
525
- "submit_heading": "Submit a Support Ticket",
526
- "submit_desc": "No account needed. We'll give you a link to track your ticket.",
527
- "sign_in_link": "Already have an account? Sign in",
528
- "your_name": "Your Name",
529
- "email_address": "Email Address",
530
- "bookmark_title": "Bookmark this page",
531
- "bookmark_desc": "This is your private link to view and reply to this ticket.",
532
- "copy_link": "Copy Link",
533
- "write_reply": "Write your reply..."
534
- },
535
- "customer": {
536
- "replies": "Replies",
537
- "reply": "Reply"
538
- },
539
- "chat": {
540
- "live": "Live",
541
- "chat_with_us": "Chat with us",
542
- "start_chat": "Start Chat",
543
- "end_chat": "End Chat",
544
- "end_confirm": "End this chat?",
545
- "transfer": "Transfer",
546
- "typing": ":name is typing...",
547
- "chatting_with": "You're chatting with :name",
548
- "no_agents": "No agents available",
549
- "queue_position": "You're #:position in queue",
550
- "placeholder": "Type a message...",
551
- "note": "Note",
552
- "empty_state": "Chat started — waiting for messages",
553
- "new_messages": "New messages",
554
- "active_chats": "Active Chats",
555
- "no_active_chats": "No active chats",
556
- "open_panel": "Open chat panel",
557
- "close_panel": "Close chat panel",
558
- "no_chats_waiting": "No chats waiting",
559
- "customer": "Customer",
560
- "department": "Department",
561
- "first_message": "First Message",
562
- "wait_time": "Wait Time",
563
- "accept": "Accept",
564
- "agents": "Agents",
565
- "departments": "Departments",
566
- "how_was_experience": "How was your experience?",
567
- "start_new_chat": "Start New Chat",
568
- "close": "Close",
569
- "chat_ended": "Chat Ended",
570
- "thank_you": "Thank you for your feedback!",
571
- "submit_rating": "Submit Rating",
572
- "live_chats": "Live Chats"
573
- },
574
- "common": {
575
- "change_status": "Change Status...",
576
- "change_priority": "Change Priority...",
577
- "kb": "KB",
578
- "upload": "Upload"
579
- },
580
- "workflows": {
581
- "title": "Workflows",
582
- "create": "Create Workflow",
583
- "edit": "Edit Workflow",
584
- "delete_confirm": "Delete this workflow? This cannot be undone.",
585
- "no_workflows": "No workflows yet",
586
- "no_workflows_desc": "Create event-driven automations with conditions and actions",
587
- "name": "Workflow Name",
588
- "description": "Description",
589
- "active": "Active",
590
- "save": "Save Workflow",
591
- "cancel": "Cancel",
592
- "view_logs": "View Logs",
593
- "last_triggered": "Last Triggered",
594
- "trigger_count": "Runs",
595
- "trigger": {
596
- "title": "Trigger Event",
597
- "description": "When this happens...",
598
- "ticket_created": "Ticket Created",
599
- "ticket_created_desc": "When a new ticket is submitted",
600
- "ticket_updated": "Ticket Updated",
601
- "ticket_updated_desc": "When any ticket field is modified",
602
- "reply_added": "Reply Added",
603
- "reply_added_desc": "When a reply is posted on a ticket",
604
- "status_changed": "Status Changed",
605
- "status_changed_desc": "When the ticket status is updated",
606
- "ticket_assigned": "Ticket Assigned",
607
- "ticket_assigned_desc": "When a ticket is assigned to an agent",
608
- "ticket_escalated": "Ticket Escalated",
609
- "ticket_escalated_desc": "When a ticket is escalated",
610
- "sla_breached": "SLA Breached",
611
- "sla_breached_desc": "When an SLA target is breached",
612
- "sla_warning": "SLA Warning",
613
- "sla_warning_desc": "When an SLA target is approaching",
614
- "chat_started": "Chat Started",
615
- "chat_started_desc": "When a live chat session begins",
616
- "chat_ended": "Chat Ended",
617
- "chat_ended_desc": "When a live chat session ends"
618
- },
619
- "conditions": {
620
- "title": "Conditions",
621
- "description": "Only if these conditions are met...",
622
- "optional": "optional",
623
- "match_all": "All conditions (AND)",
624
- "match_any": "Any condition (OR)",
625
- "add_condition": "Add Condition",
626
- "preview": "Preview",
627
- "field": {
628
- "status": "Status",
629
- "priority": "Priority",
630
- "type": "Type",
631
- "channel": "Channel",
632
- "tags": "Tags",
633
- "department": "Department",
634
- "assigned_agent": "Assigned Agent",
635
- "subject": "Subject",
636
- "hours_since_created": "Hours Since Created",
637
- "hours_since_updated": "Hours Since Updated",
638
- "reply_count": "Reply Count",
639
- "custom_field": "Custom Field"
640
- },
641
- "operator": {
642
- "equals": "equals",
643
- "not_equals": "not equals",
644
- "contains": "contains",
645
- "in": "in",
646
- "greater_than": "greater than",
647
- "less_than": "less than",
648
- "is_empty": "is empty",
649
- "matches": "matches"
650
- }
651
- },
652
- "actions": {
653
- "title": "Actions",
654
- "description": "Then do this...",
655
- "add_action": "Add Action",
656
- "assign_agent": "Assign Agent",
657
- "assign_agent_desc": "Assign the ticket to an agent",
658
- "change_status": "Change Status",
659
- "change_status_desc": "Update the ticket status",
660
- "change_priority": "Change Priority",
661
- "change_priority_desc": "Update the ticket priority",
662
- "add_tag": "Add Tag",
663
- "add_tag_desc": "Add a tag to the ticket",
664
- "remove_tag": "Remove Tag",
665
- "remove_tag_desc": "Remove a tag from the ticket",
666
- "move_department": "Move Department",
667
- "move_department_desc": "Move ticket to another department",
668
- "add_note": "Add Internal Note",
669
- "add_note_desc": "Add an internal note to the ticket",
670
- "send_email": "Send Email Notification",
671
- "send_email_desc": "Send an email notification",
672
- "send_webhook": "Send Webhook",
673
- "send_webhook_desc": "Send data to an external URL",
674
- "delay": "Delay",
675
- "delay_desc": "Wait before continuing",
676
- "delay_message": "Wait {duration} {unit}, then continue...",
677
- "apply_macro": "Apply Macro",
678
- "apply_macro_desc": "Apply an existing macro",
679
- "close_ticket": "Close Ticket",
680
- "close_ticket_desc": "Close the ticket immediately",
681
- "snooze": "Snooze",
682
- "snooze_desc": "Snooze the ticket for a duration",
683
- "specific_agent": "Specific agent",
684
- "least_busy": "Least busy agent",
685
- "round_robin": "Round robin",
686
- "not_configured": "Not configured"
687
- },
688
- "logs": {
689
- "title": "Workflow Execution Logs",
690
- "description": "Track workflow executions and debug issues",
691
- "no_logs": "No execution logs yet",
692
- "no_logs_desc": "Logs appear when workflows are triggered",
693
- "timestamp": "Timestamp",
694
- "workflow": "Workflow",
695
- "ticket": "Ticket",
696
- "event": "Event",
697
- "matched": "Matched",
698
- "actions_executed": "Actions",
699
- "duration": "Duration",
700
- "status": "Status",
701
- "success": "Success",
702
- "failed": "Failed",
703
- "skipped": "Skipped",
704
- "action_details": "Action-by-Action Execution",
705
- "all_workflows": "All Workflows",
706
- "from": "From",
707
- "to": "To"
708
- },
709
- "variables": {
710
- "insert": "Insert Variable",
711
- "ticket_reference": "Ticket Reference",
712
- "ticket_subject": "Ticket Subject",
713
- "ticket_status": "Ticket Status",
714
- "agent_name": "Agent Name",
715
- "requester_name": "Requester Name",
716
- "requester_email": "Requester Email",
717
- "department_name": "Department Name"
718
- },
719
- "builder": {
720
- "step": "Step",
721
- "trigger_step": "Step 1: Trigger Event",
722
- "conditions_step": "Step 2: Conditions",
723
- "actions_step": "Step 3: Actions",
724
- "saving": "Saving...",
725
- "update": "Update Workflow",
726
- "create": "Create Workflow"
727
- }
728
- }
729
- }
1
+ {
2
+ "nav": {
3
+ "admin": "Admin",
4
+ "admin_badge": "ADMIN",
5
+ "agent_panel": "Agent Panel",
6
+ "back_to_app": "Back to App",
7
+ "my_tickets": "My Tickets",
8
+ "dashboard": "Dashboard",
9
+ "tickets": "Tickets",
10
+ "reports": "Reports",
11
+ "departments": "Departments",
12
+ "sla_policies": "SLA Policies",
13
+ "escalation_rules": "Escalation Rules",
14
+ "tags": "Tags",
15
+ "canned_responses": "Canned Responses",
16
+ "macros": "Macros",
17
+ "api_tokens": "API Tokens",
18
+ "plugins": "Plugins",
19
+ "settings": "Settings"
20
+ },
21
+ "status": {
22
+ "open": "Open",
23
+ "in_progress": "In Progress",
24
+ "waiting_on_customer": "Waiting on Customer",
25
+ "waiting_on_agent": "Waiting on Agent",
26
+ "escalated": "Escalated",
27
+ "resolved": "Resolved",
28
+ "closed": "Closed",
29
+ "reopened": "Reopened"
30
+ },
31
+ "priority": {
32
+ "low": "Low",
33
+ "medium": "Medium",
34
+ "high": "High",
35
+ "urgent": "Urgent",
36
+ "critical": "Critical"
37
+ },
38
+ "activity": {
39
+ "status_changed": "changed status",
40
+ "assigned": "assigned ticket",
41
+ "unassigned": "unassigned ticket",
42
+ "priority_changed": "changed priority",
43
+ "tag_added": "added tag",
44
+ "tag_removed": "removed tag",
45
+ "escalated": "escalated ticket",
46
+ "sla_breached": "SLA breached",
47
+ "replied": "replied",
48
+ "note_added": "added note",
49
+ "department_changed": "changed department",
50
+ "reopened": "reopened ticket",
51
+ "resolved": "resolved ticket",
52
+ "closed": "closed ticket",
53
+ "system": "System",
54
+ "no_activity": "No activity yet.",
55
+ "to": "to",
56
+ "assigned_to": "assigned to"
57
+ },
58
+ "ticket": {
59
+ "reference": "Reference",
60
+ "subject": "Subject",
61
+ "requester": "Requester",
62
+ "status": "Status",
63
+ "priority": "Priority",
64
+ "assignee": "Assignee",
65
+ "last_reply": "Last Reply",
66
+ "unknown": "Unknown",
67
+ "unassigned": "Unassigned",
68
+ "no_tickets": "No tickets found.",
69
+ "details": "Details",
70
+ "department": "Department",
71
+ "created": "Created",
72
+ "activity": "Activity",
73
+ "conversation": "Conversation",
74
+ "by": "by",
75
+ "assign_to_me": "Assign to Me",
76
+ "close_ticket": "Close Ticket",
77
+ "reopen": "Reopen",
78
+ "all_tickets": "All Tickets",
79
+ "ticket_queue": "Ticket Queue",
80
+ "my_tickets": "My Tickets",
81
+ "new_ticket": "New Ticket",
82
+ "create_ticket": "Create Ticket",
83
+ "submit_ticket": "Submit Ticket",
84
+ "no_replies": "No replies yet.",
85
+ "ticket_closed_no_replies": "This ticket is closed. No further replies can be added."
86
+ },
87
+ "bulk": {
88
+ "tickets_selected": ":count ticket(s) selected",
89
+ "status_placeholder": "Status...",
90
+ "priority_placeholder": "Priority...",
91
+ "assign_placeholder": "Assign to...",
92
+ "department_placeholder": "Department...",
93
+ "delete": "Delete",
94
+ "deselect_all": "Deselect All"
95
+ },
96
+ "filter": {
97
+ "search_tickets": "Search tickets...",
98
+ "all_statuses": "All Statuses",
99
+ "all_priorities": "All Priorities",
100
+ "all_agents": "All Agents",
101
+ "all_departments": "All Departments",
102
+ "following": "Following"
103
+ },
104
+ "quick_filter": {
105
+ "my_tickets": "My Tickets",
106
+ "unassigned": "Unassigned",
107
+ "urgent_plus": "Urgent+",
108
+ "sla_breaching": "SLA Breaching",
109
+ "following": "Following"
110
+ },
111
+ "reply": {
112
+ "reply": "Reply",
113
+ "internal_note": "Internal Note",
114
+ "note_visibility": "This note is only visible to agents.",
115
+ "placeholder": "Type your reply...",
116
+ "canned_responses": "Canned responses...",
117
+ "add_note": "Add Note",
118
+ "send_reply": "Send Reply",
119
+ "pinned": "Pinned",
120
+ "unpin": "Unpin",
121
+ "pin": "Pin",
122
+ "write_internal_note": "Write an internal note..."
123
+ },
124
+ "rating": {
125
+ "customer_rating": "Customer Rating",
126
+ "how_was_experience": "How was your experience?",
127
+ "terrible": "Terrible",
128
+ "poor": "Poor",
129
+ "okay": "Okay",
130
+ "good": "Good",
131
+ "excellent": "Excellent",
132
+ "feedback_placeholder": "Any additional feedback? (optional)",
133
+ "thank_you": "Thank you for your feedback!",
134
+ "submit_rating": "Submit Rating",
135
+ "customer_satisfaction": "Customer Satisfaction"
136
+ },
137
+ "keyboard": {
138
+ "title": "Keyboard Shortcuts",
139
+ "list_view": "List View",
140
+ "detail_view": "Detail View",
141
+ "global": "Global",
142
+ "move_down": "Move down",
143
+ "move_up": "Move up",
144
+ "toggle_select": "Toggle select",
145
+ "open_ticket": "Open ticket",
146
+ "reply": "Reply",
147
+ "internal_note": "Internal note",
148
+ "change_status": "Change status",
149
+ "change_priority": "Change priority",
150
+ "follow_unfollow": "Follow/unfollow",
151
+ "show_help": "Show this help",
152
+ "esc_to_close": "Press Esc to close"
153
+ },
154
+ "sla": {
155
+ "overdue": "Overdue",
156
+ "breached": "SLA Breached",
157
+ "first_response": "First Response",
158
+ "resolution": "Resolution"
159
+ },
160
+ "follow": {
161
+ "following": "Following",
162
+ "follow": "Follow"
163
+ },
164
+ "file": {
165
+ "drop_or_browse": "Drop files here or :link",
166
+ "browse": "browse"
167
+ },
168
+ "macro": {
169
+ "apply_macro": "Apply Macro",
170
+ "macros": "Macros",
171
+ "no_macros": "No macros available"
172
+ },
173
+ "form": {
174
+ "name": "Name",
175
+ "description": "Description",
176
+ "slug": "Slug",
177
+ "auto_generated": "Auto-generated if empty",
178
+ "active": "Active",
179
+ "update": "Update",
180
+ "create": "Create",
181
+ "save": "Save",
182
+ "cancel": "Cancel",
183
+ "edit": "Edit",
184
+ "delete": "Delete",
185
+ "actions": "Actions",
186
+ "order": "Order",
187
+ "value": "Value",
188
+ "yes": "Yes",
189
+ "no": "No",
190
+ "confirm": "Confirm",
191
+ "none": "None",
192
+ "general": "General",
193
+ "shared": "Shared",
194
+ "private": "Private",
195
+ "color": "Color",
196
+ "title": "Title",
197
+ "copy": "Copy",
198
+ "dismiss": "Dismiss",
199
+ "saved": "Saved.",
200
+ "saving": "Saving...",
201
+ "creating": "Creating...",
202
+ "submitting": "Submitting...",
203
+ "sending": "Sending...",
204
+ "uploading": "Uploading...",
205
+ "copied": "Copied!",
206
+ "subject": "Subject",
207
+ "priority": "Priority",
208
+ "department": "Department",
209
+ "attachments": "Attachments"
210
+ },
211
+ "presence": {
212
+ "also_viewing": "Also viewing: :names"
213
+ },
214
+ "pinned_notes": {
215
+ "title": "Pinned Notes",
216
+ "unpin": "Unpin"
217
+ },
218
+ "admin": {
219
+ "settings": {
220
+ "title": "Settings",
221
+ "general": "General",
222
+ "guest_tickets": "Guest Tickets",
223
+ "guest_tickets_desc": "Allow visitors to submit tickets without signing in",
224
+ "allow_customer_close": "Allow Customer Close",
225
+ "allow_customer_close_desc": "Let customers close their own tickets",
226
+ "auto_close": "Auto-close resolved tickets after",
227
+ "auto_close_desc": "Days after resolution before auto-closing (0 to disable)",
228
+ "days": "days",
229
+ "limits": "Limits",
230
+ "max_attachments": "Max attachments per reply",
231
+ "max_attachment_size": "Max attachment size",
232
+ "tickets": "Tickets",
233
+ "reference_prefix": "Reference Prefix",
234
+ "reference_prefix_desc": "Prefix for ticket references (e.g. ESC produces ESC-00001)",
235
+ "inbound_email": "Inbound Email",
236
+ "inbound_email_desc": "Allow creating and replying to tickets via email",
237
+ "email_provider": "Email Provider",
238
+ "email_provider_desc": "How inbound emails are received",
239
+ "support_email": "Support Email Address",
240
+ "support_email_desc": "The email address customers will send emails to (e.g. support@example.com)",
241
+ "signing_key": "Signing Key",
242
+ "webhook_url": "Webhook URL",
243
+ "mailgun_webhook_desc": "Configure this URL in your Mailgun dashboard",
244
+ "inbound_token": "Inbound Token",
245
+ "postmark_webhook_desc": "Configure this URL in your Postmark server settings",
246
+ "region": "Region",
247
+ "topic_arn": "Topic ARN",
248
+ "ses_webhook_desc": "Configure this URL as your SNS subscription endpoint",
249
+ "host": "Host",
250
+ "port": "Port",
251
+ "encryption": "Encryption",
252
+ "username": "Username",
253
+ "password": "Password",
254
+ "mailbox": "Mailbox",
255
+ "save_settings": "Save Settings"
256
+ },
257
+ "reports": {
258
+ "title": "Reports",
259
+ "last_days": "Last :count days",
260
+ "total_tickets": "Total Tickets",
261
+ "resolved": "Resolved",
262
+ "avg_first_response": "Avg First Response",
263
+ "sla_breaches": "SLA Breaches",
264
+ "by_status": "By Status",
265
+ "by_priority": "By Priority",
266
+ "no_data": "No ticket data for this period",
267
+ "no_ratings": "No ratings for this period",
268
+ "ratings_count": "(:count ratings)",
269
+ "advanced_reports": "Advanced Reports",
270
+ "sla_trends": "SLA Breach Trends",
271
+ "response_times": "First Response Time Analysis",
272
+ "resolution_times": "Resolution Time Analysis",
273
+ "agent_ranking": "Agent Performance Rankings",
274
+ "agent_detail": "Agent Deep-Dive",
275
+ "cohorts": "Cohort Analysis",
276
+ "comparison": "Period Comparison",
277
+ "overview": "Overview",
278
+ "agents": "Agents",
279
+ "sla": "SLA",
280
+ "csat": "CSAT",
281
+ "export": "Export",
282
+ "export_csv": "Export as CSV",
283
+ "export_json": "Export as JSON",
284
+ "period_custom": "Custom",
285
+ "period_apply": "Apply",
286
+ "period_start": "Start",
287
+ "period_end": "End",
288
+ "total_breaches": "Total Breaches",
289
+ "breach_rate": "Breach Rate",
290
+ "frt_breaches": "FRT Breaches",
291
+ "resolution_breaches_label": "Resolution Breaches",
292
+ "breach_count_over_time": "Breach Count Over Time",
293
+ "frt_vs_resolution": "First Response vs Resolution Breaches",
294
+ "breach_by_department": "Breach Rate by Department",
295
+ "breach_by_priority": "Breach Rate by Priority",
296
+ "at_risk": "At Risk - Approaching SLA Breach",
297
+ "critical": "Critical",
298
+ "warning": "Warning",
299
+ "watch": "Watch",
300
+ "hours_remaining": ":count h remaining",
301
+ "no_at_risk": "No tickets currently at risk of breaching SLA.",
302
+ "no_at_risk": "No tickets currently at risk.",
303
+ "avg_frt": "Average FRT",
304
+ "median_frt": "Median FRT",
305
+ "p90_frt": "P90 FRT",
306
+ "under_target": "Under Target",
307
+ "frt_distribution": "FRT Distribution",
308
+ "avg_frt_trend": "Average FRT Trend",
309
+ "frt_by_department": "FRT by Department",
310
+ "frt_by_priority": "FRT by Priority",
311
+ "frt_by_agent": "FRT by Agent",
312
+ "avg_resolution": "Avg Resolution",
313
+ "median_resolution": "Median Resolution",
314
+ "p90_resolution": "P90 Resolution",
315
+ "resolution_distribution": "Resolution Time Distribution",
316
+ "resolution_trend": "Avg Resolution Time Trend",
317
+ "resolution_by_department": "Resolution by Department",
318
+ "resolution_by_channel": "Resolution by Channel",
319
+ "resolution_by_agent": "Resolution Time by Agent",
320
+ "composite_score": "Score",
321
+ "resolution_rate": "Resolution %",
322
+ "volume": "Volume",
323
+ "trend": "Trend",
324
+ "top_performers": "Top Performers",
325
+ "needs_attention": "Needs Attention",
326
+ "back_to_rankings": "Back to Rankings",
327
+ "response_percentiles": "Response Time Percentiles",
328
+ "productivity": "Productivity (Replies & Resolutions per Day)",
329
+ "productivity": "Productivity",
330
+ "workload_over_time": "Workload Over Time",
331
+ "csat_breakdown": "CSAT Breakdown",
332
+ "by_tag": "By Tag",
333
+ "by_department": "By Department",
334
+ "by_channel": "By Channel",
335
+ "by_type": "By Type",
336
+ "no_cohort_data": "No data for this cohort type.",
337
+ "current_period": "Current Period",
338
+ "previous_period": "Previous Period",
339
+ "vs_previous": "vs previous period",
340
+ "pct_change": "% change",
341
+ "sla_compliance": "SLA Compliance",
342
+ "no_agent_data": "No agent data for this period.",
343
+ "avg": "Avg",
344
+ "median": "Median",
345
+ "agent": "Agent",
346
+ "back": "Back"
347
+ },
348
+ "departments": {
349
+ "title": "Departments",
350
+ "add": "Add Department",
351
+ "edit_title": "Edit Department",
352
+ "new_title": "New Department",
353
+ "tickets": "Tickets",
354
+ "agents": "Agents",
355
+ "no_departments": "No departments yet",
356
+ "no_departments_desc": "Create your first department to organize tickets",
357
+ "confirm_delete": "Delete this department?"
358
+ },
359
+ "sla_policies": {
360
+ "title": "SLA Policies",
361
+ "add": "Add Policy",
362
+ "edit_title": "Edit SLA Policy",
363
+ "new_title": "New SLA Policy",
364
+ "default": "Default",
365
+ "business_hours": "Business Hours",
366
+ "business_hours_only": "Business hours only",
367
+ "default_policy": "Default policy",
368
+ "first_response_hours": "First Response Hours (by priority)",
369
+ "resolution_hours": "Resolution Hours (by priority)",
370
+ "no_policies": "No SLA policies yet",
371
+ "no_policies_desc": "Define response and resolution time targets",
372
+ "confirm_delete": "Delete this SLA policy?"
373
+ },
374
+ "escalation_rules": {
375
+ "title": "Escalation Rules",
376
+ "add": "Add Rule",
377
+ "edit_title": "Edit Escalation Rule",
378
+ "new_title": "New Escalation Rule",
379
+ "trigger": "Trigger",
380
+ "trigger_type": "Trigger Type",
381
+ "time_based": "Time Based",
382
+ "sla_breach": "SLA Breach",
383
+ "priority_based": "Priority Based",
384
+ "conditions": "Conditions",
385
+ "add_short": "+ Add",
386
+ "status": "Status",
387
+ "priority": "Priority",
388
+ "assignment": "Assignment",
389
+ "age_hours": "Age (hours)",
390
+ "no_response_hours": "No Response (hours)",
391
+ "sla_breached": "SLA Breached",
392
+ "escalate": "Escalate",
393
+ "change_priority": "Change Priority",
394
+ "assign_to": "Assign To",
395
+ "change_department": "Change Department",
396
+ "no_rules": "No escalation rules yet",
397
+ "no_rules_desc": "Set up automatic escalation for overdue tickets",
398
+ "confirm_delete": "Delete this escalation rule?"
399
+ },
400
+ "canned_responses": {
401
+ "title": "Canned Responses",
402
+ "add": "Add Response",
403
+ "title_placeholder": "Title",
404
+ "body_placeholder": "Response body...",
405
+ "category_placeholder": "Category (optional)",
406
+ "no_responses": "No canned responses yet",
407
+ "no_responses_desc": "Create reusable templates for common replies",
408
+ "confirm_delete": "Delete this canned response?"
409
+ },
410
+ "tags": {
411
+ "title": "Tags",
412
+ "add": "Add Tag",
413
+ "no_tags": "No tags yet",
414
+ "no_tags_desc": "Create tags to categorize and filter tickets",
415
+ "confirm_delete": "Delete this tag?"
416
+ },
417
+ "macros": {
418
+ "title": "Macros",
419
+ "subtitle": "Macros automate repetitive actions on tickets.",
420
+ "create_macro": "Create Macro",
421
+ "update_macro": "Update Macro",
422
+ "shared_label": "Shared with all agents",
423
+ "add_action": "+ Add Action",
424
+ "no_actions": "No actions yet. Add actions to define what this macro does.",
425
+ "set_status": "Set Status",
426
+ "set_priority": "Set Priority",
427
+ "assign_to": "Assign To",
428
+ "add_tags": "Add Tags",
429
+ "move_to_department": "Move to Department",
430
+ "send_reply": "Send Reply",
431
+ "add_internal_note": "Add Internal Note",
432
+ "select_status": "Select status...",
433
+ "select_priority": "Select priority...",
434
+ "agent_placeholder": "Agent ID or email",
435
+ "tags_placeholder": "Comma-separated tag names",
436
+ "department_placeholder": "Department ID or name",
437
+ "reply_placeholder": "Reply message...",
438
+ "note_placeholder": "Note content...",
439
+ "no_macros": "No macros yet",
440
+ "no_macros_desc": "Create macros to automate repetitive ticket actions",
441
+ "creator": "Creator",
442
+ "confirm_delete": "Delete this macro? This cannot be undone."
443
+ },
444
+ "api_tokens": {
445
+ "title": "API Tokens",
446
+ "subtitle": "Manage API tokens for desktop apps and external integrations.",
447
+ "create_token": "Create Token",
448
+ "api_disabled": "The REST API is currently disabled. Set ESCALATED_API_ENABLED=true in your .env to enable it.",
449
+ "token_created": "Token created! Copy it now — it won't be shown again.",
450
+ "new_token": "New API Token",
451
+ "token_name": "Token Name",
452
+ "token_name_placeholder": "e.g. Desktop App - Work Laptop",
453
+ "user": "User",
454
+ "select_user": "Select user...",
455
+ "abilities": "Abilities",
456
+ "expires_in": "Expires In (days)",
457
+ "no_expiration": "Leave empty for no expiration",
458
+ "last_used": "Last Used",
459
+ "expires": "Expires",
460
+ "never": "Never",
461
+ "expired": "Expired",
462
+ "revoke": "Revoke",
463
+ "no_tokens": "No API tokens created yet.",
464
+ "confirm_revoke": "Are you sure you want to revoke this token? This cannot be undone."
465
+ },
466
+ "plugins": {
467
+ "title": "Plugins",
468
+ "upload": "Upload Plugin",
469
+ "plugin_zip": "Plugin ZIP File",
470
+ "installed": "Installed Plugins",
471
+ "no_plugins": "No plugins installed",
472
+ "no_plugins_alt": "No plugins installed yet.",
473
+ "no_plugins_desc": "Upload a plugin ZIP to extend Escalated with custom functionality.",
474
+ "active": "Active",
475
+ "inactive": "Inactive",
476
+ "installed_date": "Installed :date",
477
+ "menu_items": ":count menu item(s)",
478
+ "widgets": ":count widget(s)",
479
+ "page_components": ":count page component(s)",
480
+ "confirm_delete": "Are you sure you want to delete this plugin? This cannot be undone."
481
+ }
482
+ },
483
+ "import": {
484
+ "title": "Import Data",
485
+ "description": "Migrate tickets, contacts, and history from another helpdesk platform.",
486
+ "no_adapters": "No import adapters installed.",
487
+ "connect": "Connect to {platform}",
488
+ "test_connection": "Test Connection",
489
+ "testing": "Testing...",
490
+ "connected": "Connected successfully",
491
+ "field_mapping": "Field Mapping",
492
+ "skip_entity": "Skip importing {type}",
493
+ "review": "Review Import",
494
+ "start": "Start Import",
495
+ "starting": "Starting...",
496
+ "progress": "Import Progress",
497
+ "pause": "Pause",
498
+ "resume": "Resume",
499
+ "cancel": "Cancel",
500
+ "paused": "Import paused.",
501
+ "resumed": "Import resumed.",
502
+ "cancelled": "Import cancelled.",
503
+ "completed": "Import completed successfully.",
504
+ "history": "Import History",
505
+ "suppression_notice": "Notifications and automations are suppressed during import.",
506
+ "recent_errors": "Recent Errors"
507
+ },
508
+ "agent": {
509
+ "dashboard": "Agent Dashboard",
510
+ "open_tickets": "Open Tickets",
511
+ "my_assigned": "My Assigned",
512
+ "unassigned": "Unassigned",
513
+ "sla_breached": "SLA Breached",
514
+ "resolved_today": "Resolved Today",
515
+ "needs_attention": "Needs Attention",
516
+ "sla_breaching": "SLA Breaching",
517
+ "unassigned_urgent": "Unassigned Urgent",
518
+ "recent_tickets": "Recent Tickets",
519
+ "no_recent_tickets": "No recent tickets",
520
+ "my_performance": "My Performance",
521
+ "resolved_this_week": "Resolved This Week"
522
+ },
523
+ "guest": {
524
+ "submit_title": "Submit a Ticket",
525
+ "submit_heading": "Submit a Support Ticket",
526
+ "submit_desc": "No account needed. We'll give you a link to track your ticket.",
527
+ "sign_in_link": "Already have an account? Sign in",
528
+ "your_name": "Your Name",
529
+ "email_address": "Email Address",
530
+ "bookmark_title": "Bookmark this page",
531
+ "bookmark_desc": "This is your private link to view and reply to this ticket.",
532
+ "copy_link": "Copy Link",
533
+ "write_reply": "Write your reply..."
534
+ },
535
+ "customer": {
536
+ "replies": "Replies",
537
+ "reply": "Reply"
538
+ },
539
+ "chat": {
540
+ "live": "Live",
541
+ "chat_with_us": "Chat with us",
542
+ "start_chat": "Start Chat",
543
+ "end_chat": "End Chat",
544
+ "end_confirm": "End this chat?",
545
+ "transfer": "Transfer",
546
+ "typing": ":name is typing...",
547
+ "chatting_with": "You're chatting with :name",
548
+ "no_agents": "No agents available",
549
+ "queue_position": "You're #:position in queue",
550
+ "placeholder": "Type a message...",
551
+ "note": "Note",
552
+ "empty_state": "Chat started — waiting for messages",
553
+ "new_messages": "New messages",
554
+ "active_chats": "Active Chats",
555
+ "no_active_chats": "No active chats",
556
+ "open_panel": "Open chat panel",
557
+ "close_panel": "Close chat panel",
558
+ "no_chats_waiting": "No chats waiting",
559
+ "customer": "Customer",
560
+ "department": "Department",
561
+ "first_message": "First Message",
562
+ "wait_time": "Wait Time",
563
+ "accept": "Accept",
564
+ "agents": "Agents",
565
+ "departments": "Departments",
566
+ "how_was_experience": "How was your experience?",
567
+ "start_new_chat": "Start New Chat",
568
+ "close": "Close",
569
+ "chat_ended": "Chat Ended",
570
+ "thank_you": "Thank you for your feedback!",
571
+ "submit_rating": "Submit Rating",
572
+ "live_chats": "Live Chats"
573
+ },
574
+ "common": {
575
+ "change_status": "Change Status...",
576
+ "change_priority": "Change Priority...",
577
+ "kb": "KB",
578
+ "upload": "Upload"
579
+ },
580
+ "workflows": {
581
+ "title": "Workflows",
582
+ "create": "Create Workflow",
583
+ "edit": "Edit Workflow",
584
+ "delete_confirm": "Delete this workflow? This cannot be undone.",
585
+ "no_workflows": "No workflows yet",
586
+ "no_workflows_desc": "Create event-driven automations with conditions and actions",
587
+ "name": "Workflow Name",
588
+ "description": "Description",
589
+ "active": "Active",
590
+ "save": "Save Workflow",
591
+ "cancel": "Cancel",
592
+ "view_logs": "View Logs",
593
+ "last_triggered": "Last Triggered",
594
+ "trigger_count": "Runs",
595
+ "trigger": {
596
+ "title": "Trigger Event",
597
+ "description": "When this happens...",
598
+ "ticket_created": "Ticket Created",
599
+ "ticket_created_desc": "When a new ticket is submitted",
600
+ "ticket_updated": "Ticket Updated",
601
+ "ticket_updated_desc": "When any ticket field is modified",
602
+ "reply_added": "Reply Added",
603
+ "reply_added_desc": "When a reply is posted on a ticket",
604
+ "status_changed": "Status Changed",
605
+ "status_changed_desc": "When the ticket status is updated",
606
+ "ticket_assigned": "Ticket Assigned",
607
+ "ticket_assigned_desc": "When a ticket is assigned to an agent",
608
+ "ticket_escalated": "Ticket Escalated",
609
+ "ticket_escalated_desc": "When a ticket is escalated",
610
+ "sla_breached": "SLA Breached",
611
+ "sla_breached_desc": "When an SLA target is breached",
612
+ "sla_warning": "SLA Warning",
613
+ "sla_warning_desc": "When an SLA target is approaching",
614
+ "chat_started": "Chat Started",
615
+ "chat_started_desc": "When a live chat session begins",
616
+ "chat_ended": "Chat Ended",
617
+ "chat_ended_desc": "When a live chat session ends"
618
+ },
619
+ "conditions": {
620
+ "title": "Conditions",
621
+ "description": "Only if these conditions are met...",
622
+ "optional": "optional",
623
+ "match_all": "All conditions (AND)",
624
+ "match_any": "Any condition (OR)",
625
+ "add_condition": "Add Condition",
626
+ "preview": "Preview",
627
+ "field": {
628
+ "status": "Status",
629
+ "priority": "Priority",
630
+ "type": "Type",
631
+ "channel": "Channel",
632
+ "tags": "Tags",
633
+ "department": "Department",
634
+ "assigned_agent": "Assigned Agent",
635
+ "subject": "Subject",
636
+ "hours_since_created": "Hours Since Created",
637
+ "hours_since_updated": "Hours Since Updated",
638
+ "reply_count": "Reply Count",
639
+ "custom_field": "Custom Field"
640
+ },
641
+ "operator": {
642
+ "equals": "equals",
643
+ "not_equals": "not equals",
644
+ "contains": "contains",
645
+ "in": "in",
646
+ "greater_than": "greater than",
647
+ "less_than": "less than",
648
+ "is_empty": "is empty",
649
+ "matches": "matches"
650
+ }
651
+ },
652
+ "actions": {
653
+ "title": "Actions",
654
+ "description": "Then do this...",
655
+ "add_action": "Add Action",
656
+ "assign_agent": "Assign Agent",
657
+ "assign_agent_desc": "Assign the ticket to an agent",
658
+ "change_status": "Change Status",
659
+ "change_status_desc": "Update the ticket status",
660
+ "change_priority": "Change Priority",
661
+ "change_priority_desc": "Update the ticket priority",
662
+ "add_tag": "Add Tag",
663
+ "add_tag_desc": "Add a tag to the ticket",
664
+ "remove_tag": "Remove Tag",
665
+ "remove_tag_desc": "Remove a tag from the ticket",
666
+ "move_department": "Move Department",
667
+ "move_department_desc": "Move ticket to another department",
668
+ "add_note": "Add Internal Note",
669
+ "add_note_desc": "Add an internal note to the ticket",
670
+ "send_email": "Send Email Notification",
671
+ "send_email_desc": "Send an email notification",
672
+ "send_webhook": "Send Webhook",
673
+ "send_webhook_desc": "Send data to an external URL",
674
+ "delay": "Delay",
675
+ "delay_desc": "Wait before continuing",
676
+ "delay_message": "Wait {duration} {unit}, then continue...",
677
+ "apply_macro": "Apply Macro",
678
+ "apply_macro_desc": "Apply an existing macro",
679
+ "close_ticket": "Close Ticket",
680
+ "close_ticket_desc": "Close the ticket immediately",
681
+ "snooze": "Snooze",
682
+ "snooze_desc": "Snooze the ticket for a duration",
683
+ "specific_agent": "Specific agent",
684
+ "least_busy": "Least busy agent",
685
+ "round_robin": "Round robin",
686
+ "not_configured": "Not configured"
687
+ },
688
+ "logs": {
689
+ "title": "Workflow Execution Logs",
690
+ "description": "Track workflow executions and debug issues",
691
+ "no_logs": "No execution logs yet",
692
+ "no_logs_desc": "Logs appear when workflows are triggered",
693
+ "timestamp": "Timestamp",
694
+ "workflow": "Workflow",
695
+ "ticket": "Ticket",
696
+ "event": "Event",
697
+ "matched": "Matched",
698
+ "actions_executed": "Actions",
699
+ "duration": "Duration",
700
+ "status": "Status",
701
+ "success": "Success",
702
+ "failed": "Failed",
703
+ "skipped": "Skipped",
704
+ "action_details": "Action-by-Action Execution",
705
+ "all_workflows": "All Workflows",
706
+ "from": "From",
707
+ "to": "To"
708
+ },
709
+ "variables": {
710
+ "insert": "Insert Variable",
711
+ "ticket_reference": "Ticket Reference",
712
+ "ticket_subject": "Ticket Subject",
713
+ "ticket_status": "Ticket Status",
714
+ "agent_name": "Agent Name",
715
+ "requester_name": "Requester Name",
716
+ "requester_email": "Requester Email",
717
+ "department_name": "Department Name"
718
+ },
719
+ "builder": {
720
+ "step": "Step",
721
+ "trigger_step": "Step 1: Trigger Event",
722
+ "conditions_step": "Step 2: Conditions",
723
+ "actions_step": "Step 3: Actions",
724
+ "saving": "Saving...",
725
+ "update": "Update Workflow",
726
+ "create": "Create Workflow"
727
+ }
728
+ },
729
+ "newsletters": {
730
+ "nav": {
731
+ "newsletters": "Newsletters"
732
+ },
733
+ "index": {
734
+ "title": "Newsletters",
735
+ "new": "New newsletter",
736
+ "tabs": {
737
+ "drafts": "Drafts",
738
+ "scheduled": "Scheduled",
739
+ "sent": "Sent"
740
+ },
741
+ "empty": {
742
+ "drafts": "No drafts yet.",
743
+ "scheduled": "No scheduled sends.",
744
+ "sent": "No newsletters sent yet."
745
+ },
746
+ "columns": {
747
+ "subject": "Subject",
748
+ "list": "List",
749
+ "status": "Status",
750
+ "scheduled": "Scheduled",
751
+ "sent": "Sent",
752
+ "recipients": "Recipients"
753
+ }
754
+ },
755
+ "compose": {
756
+ "title": "New newsletter",
757
+ "subject": "Subject",
758
+ "from_name": "From name",
759
+ "from_email": "From email",
760
+ "reply_to": "Reply-To",
761
+ "list": "Target list",
762
+ "schedule": "Schedule send",
763
+ "schedule_at": "Send at",
764
+ "template": "Start from template",
765
+ "body": "Body (Markdown)",
766
+ "preview": "Preview",
767
+ "actions": {
768
+ "save_draft": "Save draft",
769
+ "test_send": "Send test to me",
770
+ "schedule": "Schedule",
771
+ "send_now": "Send now"
772
+ },
773
+ "mail_not_configured": "Configure outbound mail before sending newsletters."
774
+ },
775
+ "detail": {
776
+ "from": "From",
777
+ "tabs": {
778
+ "overview": "Overview",
779
+ "deliveries": "Deliveries",
780
+ "analytics": "Analytics"
781
+ },
782
+ "status": {
783
+ "draft": "Draft",
784
+ "scheduled": "Scheduled",
785
+ "sending": "Sending",
786
+ "sent": "Sent",
787
+ "paused": "Paused",
788
+ "failed": "Failed"
789
+ },
790
+ "actions": {
791
+ "edit": "Edit",
792
+ "pause": "Pause",
793
+ "resume": "Resume",
794
+ "duplicate": "Duplicate"
795
+ }
796
+ },
797
+ "deliveries": {
798
+ "columns": {
799
+ "contact": "Contact",
800
+ "status": "Status",
801
+ "sent_at": "Sent",
802
+ "opened_at": "Opened",
803
+ "clicked_at": "Last clicked",
804
+ "bounce_reason": "Bounce reason"
805
+ },
806
+ "status": {
807
+ "pending": "Pending",
808
+ "queued": "Queued",
809
+ "sent": "Sent",
810
+ "bounced": "Bounced",
811
+ "complained": "Complained",
812
+ "suppressed": "Suppressed",
813
+ "failed": "Failed"
814
+ },
815
+ "filter": "Filter by status",
816
+ "export": "Export CSV"
817
+ },
818
+ "analytics": {
819
+ "tiles": {
820
+ "sent": "Sent",
821
+ "delivered": "Delivered",
822
+ "opened": "Opened",
823
+ "clicked": "Clicked",
824
+ "bounced": "Bounced"
825
+ },
826
+ "top_clicked": "Top clicked URLs"
827
+ },
828
+ "lists": {
829
+ "title": "Lists",
830
+ "new": "New list",
831
+ "kind": {
832
+ "static": "Static",
833
+ "dynamic": "Dynamic"
834
+ },
835
+ "columns": {
836
+ "name": "Name",
837
+ "kind": "Kind",
838
+ "members": "Members",
839
+ "opted_out": "Opted out"
840
+ },
841
+ "create": {
842
+ "static_help": "Manually add contacts or import a CSV.",
843
+ "dynamic_help": "Saved filter that re-evaluates on every send."
844
+ },
845
+ "members": {
846
+ "add": "Add contact",
847
+ "remove": "Remove",
848
+ "import_csv": "Import CSV"
849
+ },
850
+ "filter_builder": {
851
+ "matches": "{count} contacts match"
852
+ }
853
+ },
854
+ "templates": {
855
+ "title": "Templates",
856
+ "new": "New template",
857
+ "columns": {
858
+ "name": "Name",
859
+ "theme": "Theme",
860
+ "last_used": "Last used"
861
+ },
862
+ "theme": "Theme",
863
+ "subject_template": "Default subject",
864
+ "body": "Body (Markdown)"
865
+ },
866
+ "settings": {
867
+ "title": "Newsletter settings",
868
+ "default_from": "Default From address",
869
+ "default_reply_to": "Default Reply-To",
870
+ "default_theme": "Default theme",
871
+ "rate_limit": "Rate limit (sends per minute)",
872
+ "batch_size": "Dispatcher batch size",
873
+ "tracking_enabled": "Enable open & click tracking",
874
+ "tracking_help": "When off, pixel and click-rewriting are skipped. Bounces and complaints from your ESP still update delivery status."
875
+ },
876
+ "merge_fields": {
877
+ "label": "Insert merge field",
878
+ "contact_name": "Contact's full name",
879
+ "contact_first_name": "Contact's first name",
880
+ "contact_email": "Contact's email",
881
+ "unsubscribe_url": "Unsubscribe URL",
882
+ "view_in_browser_url": "View-in-browser URL"
883
+ },
884
+ "permissions": {
885
+ "no_manage": "You need the newsletters.manage permission to view this page.",
886
+ "no_send": "You need the newsletters.send permission to send or schedule."
887
+ }
888
+ }
889
+ }