solid_stack_web 1.5.0 → 1.6.0
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.
- checksums.yaml +4 -4
- data/README.md +157 -3
- data/app/assets/stylesheets/solid_stack_web/_02_layout.css +12 -0
- data/app/assets/stylesheets/solid_stack_web/_07_dashboard.css +4 -3
- data/app/controllers/solid_stack_web/application_controller.rb +10 -0
- data/app/controllers/solid_stack_web/audit_controller.rb +1 -1
- data/app/controllers/solid_stack_web/cable/channel_purges_controller.rb +1 -1
- data/app/controllers/solid_stack_web/cable/purges_controller.rb +1 -1
- data/app/controllers/solid_stack_web/cache/flushes_controller.rb +1 -1
- data/app/controllers/solid_stack_web/cache_entries_controller.rb +1 -1
- data/app/controllers/solid_stack_web/failed_jobs/arguments_controller.rb +3 -3
- data/app/controllers/solid_stack_web/failed_jobs/selections_controller.rb +4 -4
- data/app/controllers/solid_stack_web/failed_jobs_controller.rb +2 -2
- data/app/controllers/solid_stack_web/jobs/selections_controller.rb +2 -2
- data/app/controllers/solid_stack_web/jobs_controller.rb +2 -2
- data/app/controllers/solid_stack_web/recurring_tasks/runs_controller.rb +4 -4
- data/app/controllers/solid_stack_web/scheduled_jobs_controller.rb +5 -5
- data/app/helpers/solid_stack_web/application_helper.rb +30 -17
- data/app/views/layouts/solid_stack_web/application.html.erb +28 -24
- data/app/views/solid_stack_web/audit/index.html.erb +18 -18
- data/app/views/solid_stack_web/cable/index.html.erb +22 -19
- data/app/views/solid_stack_web/cable_messages/index.html.erb +15 -14
- data/app/views/solid_stack_web/cache/index.html.erb +19 -19
- data/app/views/solid_stack_web/cache_entries/index.html.erb +16 -15
- data/app/views/solid_stack_web/cache_entries/show.html.erb +11 -11
- data/app/views/solid_stack_web/dashboard/index.html.erb +54 -33
- data/app/views/solid_stack_web/errors/internal_server_error.html.erb +4 -4
- data/app/views/solid_stack_web/errors/not_found.html.erb +4 -4
- data/app/views/solid_stack_web/failed_jobs/destroy.turbo_stream.erb +2 -2
- data/app/views/solid_stack_web/failed_jobs/errors/index.html.erb +10 -10
- data/app/views/solid_stack_web/failed_jobs/index.html.erb +22 -22
- data/app/views/solid_stack_web/failed_jobs/show.html.erb +16 -16
- data/app/views/solid_stack_web/history/index.html.erb +19 -18
- data/app/views/solid_stack_web/jobs/_empty.html.erb +8 -8
- data/app/views/solid_stack_web/jobs/index.html.erb +35 -34
- data/app/views/solid_stack_web/jobs/show.html.erb +16 -16
- data/app/views/solid_stack_web/processes/index.html.erb +8 -8
- data/app/views/solid_stack_web/queues/index.html.erb +13 -13
- data/app/views/solid_stack_web/queues/show.html.erb +16 -16
- data/app/views/solid_stack_web/recurring_tasks/index.html.erb +16 -16
- data/app/views/solid_stack_web/shared/_locale_switcher.html.erb +14 -0
- data/app/views/solid_stack_web/stats/index.html.erb +13 -13
- data/config/locales/en.yml +395 -0
- data/config/locales/es.yml +395 -0
- data/lib/solid_stack_web/engine.rb +1 -0
- data/lib/solid_stack_web/version.rb +1 -1
- data/lib/solid_stack_web.rb +14 -1
- metadata +4 -1
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
en:
|
|
2
|
+
solid_stack_web:
|
|
3
|
+
layout:
|
|
4
|
+
title: "Solid Stack Dashboard"
|
|
5
|
+
skip_to_content: "Skip to main content"
|
|
6
|
+
logo: "Solid Stack"
|
|
7
|
+
theme_toggle: "Switch to dark mode"
|
|
8
|
+
nav:
|
|
9
|
+
main_navigation: "Main navigation"
|
|
10
|
+
queue: "Queue"
|
|
11
|
+
cache: "Cache"
|
|
12
|
+
cable: "Cable"
|
|
13
|
+
subnav:
|
|
14
|
+
cache_section: "Cache section"
|
|
15
|
+
cable_section: "Cable section"
|
|
16
|
+
queue_section: "Queue section"
|
|
17
|
+
overview: "Overview"
|
|
18
|
+
entries: "Entries"
|
|
19
|
+
jobs: "Jobs"
|
|
20
|
+
failed: "Failed"
|
|
21
|
+
queues: "Queues"
|
|
22
|
+
recurring: "Recurring"
|
|
23
|
+
stats: "Stats"
|
|
24
|
+
history: "History"
|
|
25
|
+
processes: "Processes"
|
|
26
|
+
audit: "Audit"
|
|
27
|
+
shared:
|
|
28
|
+
actions: "Actions"
|
|
29
|
+
pagination: "Pagination"
|
|
30
|
+
clear: "Clear"
|
|
31
|
+
back_to_dashboard: "Back to Dashboard"
|
|
32
|
+
select_all: "Select all"
|
|
33
|
+
export_csv: "Export CSV"
|
|
34
|
+
period_filter:
|
|
35
|
+
label: "Time period"
|
|
36
|
+
all: "All"
|
|
37
|
+
locale_switcher:
|
|
38
|
+
label: "Language"
|
|
39
|
+
dashboard:
|
|
40
|
+
title: "Overview"
|
|
41
|
+
solid_queue: "Solid Queue"
|
|
42
|
+
solid_cache: "Solid Cache"
|
|
43
|
+
solid_cable: "Solid Cable"
|
|
44
|
+
view_jobs: "View Jobs →"
|
|
45
|
+
view_cache: "View Cache →"
|
|
46
|
+
view_cable: "View Cable →"
|
|
47
|
+
ready: "Ready"
|
|
48
|
+
scheduled: "Scheduled"
|
|
49
|
+
running: "Running"
|
|
50
|
+
blocked: "Blocked"
|
|
51
|
+
failed: "Failed"
|
|
52
|
+
done_1h: "Done (1h)"
|
|
53
|
+
done_24h: "Done (24h)"
|
|
54
|
+
slow_24h: "Slow (24h)"
|
|
55
|
+
healthy: "Healthy"
|
|
56
|
+
stale: "Stale"
|
|
57
|
+
messages: "Messages"
|
|
58
|
+
channels: "Channels"
|
|
59
|
+
msg_per_hr: "Msg/hr"
|
|
60
|
+
oldest: "Oldest"
|
|
61
|
+
entries: "Entries"
|
|
62
|
+
size: "Size"
|
|
63
|
+
throughput_label: "Throughput — last 12 hours"
|
|
64
|
+
failures_label: "Failures — last 12 hours"
|
|
65
|
+
top_channels: "Top channels"
|
|
66
|
+
axis:
|
|
67
|
+
twelve_h_ago: "12h ago"
|
|
68
|
+
six_h_ago: "6h ago"
|
|
69
|
+
now: "now"
|
|
70
|
+
jobs:
|
|
71
|
+
title: "Jobs"
|
|
72
|
+
detail: "Detail"
|
|
73
|
+
export_csv: "Export CSV"
|
|
74
|
+
run_all_now: "Run All Now (%{count})"
|
|
75
|
+
discard_all: "Discard All (%{count})"
|
|
76
|
+
all_queues: "All queues"
|
|
77
|
+
all_priorities: "All priorities"
|
|
78
|
+
priority_option: "Priority %{n}"
|
|
79
|
+
selected_count: "%{count} selected"
|
|
80
|
+
selected_label: "selected"
|
|
81
|
+
placeholder_job_class: "Filter by job class…"
|
|
82
|
+
aria_filter_job_class: "Filter by job class"
|
|
83
|
+
aria_filter_queue: "Filter by queue"
|
|
84
|
+
aria_filter_priority: "Filter by priority"
|
|
85
|
+
col_job_class: "Job Class"
|
|
86
|
+
col_queue: "Queue"
|
|
87
|
+
col_priority: "Priority"
|
|
88
|
+
col_enqueued_at: "Enqueued At"
|
|
89
|
+
col_scheduled_at: "Scheduled At"
|
|
90
|
+
col_wait_time: "Wait Time"
|
|
91
|
+
run_now: "Run Now"
|
|
92
|
+
discard: "Discard"
|
|
93
|
+
discard_selected: "Discard Selected"
|
|
94
|
+
confirm_run_all_now: "Run all %{count} scheduled jobs immediately?"
|
|
95
|
+
confirm_run_now: "Run this job immediately?"
|
|
96
|
+
confirm_discard: "Discard this job?"
|
|
97
|
+
confirm_discard_all: "Discard all %{count} jobs? This cannot be undone."
|
|
98
|
+
confirm_discard_selected: "Discard selected jobs? This cannot be undone."
|
|
99
|
+
no_jobs_matching: "No %{status} jobs matching \"%{search}\""
|
|
100
|
+
no_jobs: "No %{status} jobs"
|
|
101
|
+
hint_ready: "Jobs will appear here once they are enqueued and ready to be picked up."
|
|
102
|
+
hint_scheduled: "No jobs are scheduled to run in the future."
|
|
103
|
+
hint_claimed: "No jobs are currently being processed by a worker."
|
|
104
|
+
hint_blocked: "No jobs are blocked by concurrency controls."
|
|
105
|
+
clear_search: "Clear search"
|
|
106
|
+
section_details: "Details"
|
|
107
|
+
section_arguments: "Arguments"
|
|
108
|
+
discard_job: "Discard Job"
|
|
109
|
+
field_status: "Status"
|
|
110
|
+
field_queue: "Queue"
|
|
111
|
+
field_priority: "Priority"
|
|
112
|
+
field_active_job_id: "Active Job ID"
|
|
113
|
+
field_concurrency_key: "Concurrency Key"
|
|
114
|
+
field_blocked_until: "Blocked Until"
|
|
115
|
+
field_enqueued_at: "Enqueued At"
|
|
116
|
+
field_scheduled_at: "Scheduled At"
|
|
117
|
+
field_finished_at: "Finished At"
|
|
118
|
+
tab_ready: "Ready"
|
|
119
|
+
tab_scheduled: "Scheduled"
|
|
120
|
+
tab_claimed: "Running"
|
|
121
|
+
tab_blocked: "Blocked"
|
|
122
|
+
failed_jobs:
|
|
123
|
+
title: "Failed Jobs"
|
|
124
|
+
error_summary: "Error Summary"
|
|
125
|
+
export_csv: "Export CSV"
|
|
126
|
+
filtered_by: "Filtered by"
|
|
127
|
+
clear_filter: "Clear filter"
|
|
128
|
+
detail: "Detail"
|
|
129
|
+
col_job_class: "Job Class"
|
|
130
|
+
col_queue: "Queue"
|
|
131
|
+
col_error: "Error"
|
|
132
|
+
col_failed_at: "Failed At"
|
|
133
|
+
retry: "Retry"
|
|
134
|
+
discard: "Discard"
|
|
135
|
+
retry_selected: "Retry Selected"
|
|
136
|
+
discard_selected: "Discard Selected"
|
|
137
|
+
confirm_discard: "Discard this job?"
|
|
138
|
+
confirm_discard_selected: "Discard selected failed jobs? This cannot be undone."
|
|
139
|
+
empty_title: "No failed jobs"
|
|
140
|
+
empty_hint: "All clear — your jobs are running without errors."
|
|
141
|
+
section_details: "Details"
|
|
142
|
+
section_backtrace: "Backtrace"
|
|
143
|
+
section_arguments: "Arguments"
|
|
144
|
+
update_retry: "Update & Retry"
|
|
145
|
+
field_queue: "Queue"
|
|
146
|
+
field_priority: "Priority"
|
|
147
|
+
field_active_job_id: "Active Job ID"
|
|
148
|
+
field_failed_at: "Failed At"
|
|
149
|
+
field_error: "Error"
|
|
150
|
+
field_message: "Message"
|
|
151
|
+
arguments_aria_label: "Job arguments JSON"
|
|
152
|
+
errors_title: "Error Summary"
|
|
153
|
+
back_to_failed_jobs: "← Failed Jobs"
|
|
154
|
+
errors_col_class: "Error Class"
|
|
155
|
+
errors_col_message: "Message"
|
|
156
|
+
errors_col_count: "Count"
|
|
157
|
+
view_jobs: "View Jobs"
|
|
158
|
+
queues:
|
|
159
|
+
title: "Queues"
|
|
160
|
+
col_name: "Name"
|
|
161
|
+
col_size: "Size"
|
|
162
|
+
col_depth: "Depth (12h)"
|
|
163
|
+
col_status: "Status"
|
|
164
|
+
status_paused: "Paused"
|
|
165
|
+
status_running: "Running"
|
|
166
|
+
pause: "Pause"
|
|
167
|
+
resume: "Resume"
|
|
168
|
+
discard_all_ready: "Discard All Ready (%{count})"
|
|
169
|
+
confirm_discard_all_ready: "Discard all %{count} ready jobs in %{queue}? This cannot be undone."
|
|
170
|
+
empty_title: "No queues with ready jobs"
|
|
171
|
+
empty_hint: "Workers are idle or all jobs are in another state."
|
|
172
|
+
check_jobs: "Check job statuses →"
|
|
173
|
+
show_col_job_class: "Job Class"
|
|
174
|
+
show_col_priority: "Priority"
|
|
175
|
+
show_col_enqueued_at: "Enqueued At"
|
|
176
|
+
discard: "Discard"
|
|
177
|
+
confirm_discard: "Discard this job?"
|
|
178
|
+
no_ready_jobs: "No ready jobs in %{queue}."
|
|
179
|
+
processes:
|
|
180
|
+
title: "Processes"
|
|
181
|
+
col_kind: "Kind"
|
|
182
|
+
col_name: "Name"
|
|
183
|
+
col_pid: "PID"
|
|
184
|
+
col_host: "Host"
|
|
185
|
+
col_last_heartbeat: "Last Heartbeat"
|
|
186
|
+
empty_title: "No active processes"
|
|
187
|
+
empty_hint: "Start a Solid Queue worker to begin processing jobs."
|
|
188
|
+
recurring_tasks:
|
|
189
|
+
title: "Recurring Tasks"
|
|
190
|
+
col_key: "Key"
|
|
191
|
+
col_schedule: "Schedule"
|
|
192
|
+
col_job_command: "Job / Command"
|
|
193
|
+
col_queue: "Queue"
|
|
194
|
+
col_next_run: "Next Run"
|
|
195
|
+
col_last_run: "Last Run"
|
|
196
|
+
col_type: "Type"
|
|
197
|
+
type_static: "Static"
|
|
198
|
+
type_dynamic: "Dynamic"
|
|
199
|
+
run_now: "Run Now"
|
|
200
|
+
confirm_run_now: "Run \"%{key}\" immediately?"
|
|
201
|
+
empty_title: "No recurring tasks configured"
|
|
202
|
+
empty_hint: "Define recurring tasks in your Solid Queue configuration to see them here."
|
|
203
|
+
stats:
|
|
204
|
+
title: "Performance Stats"
|
|
205
|
+
col_job_class: "Job Class"
|
|
206
|
+
col_executions: "Executions"
|
|
207
|
+
col_avg: "Avg"
|
|
208
|
+
col_p50: "p50"
|
|
209
|
+
col_p95: "p95"
|
|
210
|
+
col_p99: "p99"
|
|
211
|
+
col_std_dev: "Std Dev"
|
|
212
|
+
col_min: "Min"
|
|
213
|
+
col_max: "Max"
|
|
214
|
+
empty_title: "No finished jobs yet"
|
|
215
|
+
empty_hint: "Performance stats appear here once jobs complete."
|
|
216
|
+
view_active_jobs: "View active jobs →"
|
|
217
|
+
history:
|
|
218
|
+
title: "Job History"
|
|
219
|
+
export_csv: "Export CSV"
|
|
220
|
+
placeholder_filter: "Filter by job class…"
|
|
221
|
+
aria_filter: "Filter by job class"
|
|
222
|
+
filtering_by_queue: "Filtering by queue:"
|
|
223
|
+
clear_filter: "Clear filter"
|
|
224
|
+
col_job_class: "Job Class"
|
|
225
|
+
col_queue: "Queue"
|
|
226
|
+
col_duration: "Duration"
|
|
227
|
+
col_finished_at: "Finished At"
|
|
228
|
+
no_match_title: "No finished jobs match your filters"
|
|
229
|
+
no_match_hint: "Clear filters"
|
|
230
|
+
empty_title: "No finished jobs yet"
|
|
231
|
+
empty_hint: "Completed jobs will appear here once workers process them."
|
|
232
|
+
audit:
|
|
233
|
+
title: "Audit Log"
|
|
234
|
+
export_csv: "Export CSV"
|
|
235
|
+
all_actions: "All actions"
|
|
236
|
+
aria_filter_action: "Filter by action"
|
|
237
|
+
actor_label: "Actor:"
|
|
238
|
+
queue_label: "Queue:"
|
|
239
|
+
aria_clear_actor: "Clear actor filter"
|
|
240
|
+
aria_clear_queue: "Clear queue filter"
|
|
241
|
+
clear_all: "Clear all"
|
|
242
|
+
col_time: "Time"
|
|
243
|
+
col_action: "Action"
|
|
244
|
+
col_actor: "Actor"
|
|
245
|
+
col_job_class: "Job Class"
|
|
246
|
+
col_queue: "Queue"
|
|
247
|
+
col_count: "Count"
|
|
248
|
+
empty: "No audit events recorded yet."
|
|
249
|
+
cache:
|
|
250
|
+
title: "Solid Cache"
|
|
251
|
+
total_entries: "Total Entries"
|
|
252
|
+
total_size: "Total Size"
|
|
253
|
+
size_distribution: "Size Distribution"
|
|
254
|
+
largest_entries: "Largest Entries"
|
|
255
|
+
col_range: "Range"
|
|
256
|
+
col_entries: "Entries"
|
|
257
|
+
col_distribution: "Distribution"
|
|
258
|
+
col_key: "Key"
|
|
259
|
+
col_size: "Size"
|
|
260
|
+
entries_written: "Entries written — last 24 hours"
|
|
261
|
+
bytes_written: "Bytes written — last 24 hours"
|
|
262
|
+
axis_24h_ago: "24h ago"
|
|
263
|
+
axis_12h_ago: "12h ago"
|
|
264
|
+
axis_now: "now"
|
|
265
|
+
cache_entries:
|
|
266
|
+
title: "Cache Entries"
|
|
267
|
+
flush_all: "Flush All"
|
|
268
|
+
back_to_entries: "← Entries"
|
|
269
|
+
placeholder_key: "Filter by key…"
|
|
270
|
+
aria_filter_key: "Filter by key"
|
|
271
|
+
col_key: "Key"
|
|
272
|
+
col_size: "Size"
|
|
273
|
+
col_created: "Created"
|
|
274
|
+
delete: "Delete"
|
|
275
|
+
confirm_flush_all: "Delete all cache entries? This cannot be undone."
|
|
276
|
+
confirm_delete: "Delete this cache entry?"
|
|
277
|
+
no_entries_matching: "No entries matching \"%{search}\""
|
|
278
|
+
clear_search: "Clear search"
|
|
279
|
+
empty_title: "No cache entries"
|
|
280
|
+
empty_hint: "Entries will appear here once your application writes to the cache."
|
|
281
|
+
show_section_details: "Details"
|
|
282
|
+
show_section_value: "Value"
|
|
283
|
+
show_key: "Key"
|
|
284
|
+
show_size: "Size"
|
|
285
|
+
show_created: "Created"
|
|
286
|
+
show_truncated: "Showing first 4 KB of %{size} total."
|
|
287
|
+
show_preview_disabled: "Value preview is disabled. Set config.allow_value_preview = true in your initializer to enable."
|
|
288
|
+
cable:
|
|
289
|
+
title: "Solid Cable"
|
|
290
|
+
total_messages: "Total Messages"
|
|
291
|
+
channels: "Channels"
|
|
292
|
+
messages_timeline: "Messages — last 24 hours"
|
|
293
|
+
placeholder_channel: "Filter by channel…"
|
|
294
|
+
aria_filter_channel: "Filter by channel"
|
|
295
|
+
older_than_1_day: "Older than 1 day"
|
|
296
|
+
older_than_7_days: "Older than 7 days"
|
|
297
|
+
older_than_30_days: "Older than 30 days"
|
|
298
|
+
purge_old: "Purge Old"
|
|
299
|
+
confirm_purge: "Purge these messages? This cannot be undone."
|
|
300
|
+
col_channel: "Channel"
|
|
301
|
+
col_messages: "Messages"
|
|
302
|
+
col_last_message: "Last Message"
|
|
303
|
+
no_channels_matching: "No channels matching \"%{search}\""
|
|
304
|
+
clear_search: "Clear search"
|
|
305
|
+
empty_title: "No cable messages"
|
|
306
|
+
empty_hint: "Messages will appear here once clients connect and broadcast over Action Cable."
|
|
307
|
+
axis_24h_ago: "24h ago"
|
|
308
|
+
axis_12h_ago: "12h ago"
|
|
309
|
+
axis_now: "now"
|
|
310
|
+
cable_messages:
|
|
311
|
+
purge_channel: "Purge Channel"
|
|
312
|
+
back_to_channels: "← Channels"
|
|
313
|
+
back_to_channels_link: "Back to channels →"
|
|
314
|
+
confirm_purge_channel: "Delete all messages for this channel? This cannot be undone."
|
|
315
|
+
placeholder_payload: "Filter by payload…"
|
|
316
|
+
aria_filter_payload: "Filter by payload"
|
|
317
|
+
clear_search: "Clear search"
|
|
318
|
+
col_id: "ID"
|
|
319
|
+
col_payload: "Payload"
|
|
320
|
+
col_sent: "Sent"
|
|
321
|
+
no_messages_matching: "No messages matching \"%{search}\""
|
|
322
|
+
empty_title: "No messages for this channel"
|
|
323
|
+
empty_hint: "Messages may have been purged or the channel has gone quiet."
|
|
324
|
+
errors:
|
|
325
|
+
not_found_title: "Not Found"
|
|
326
|
+
not_found_message: "404 — The record you're looking for doesn't exist or has been removed."
|
|
327
|
+
server_error_title: "Something Went Wrong"
|
|
328
|
+
server_error_message: "500 — An unexpected error occurred."
|
|
329
|
+
flash:
|
|
330
|
+
job_discarded: "Job discarded."
|
|
331
|
+
jobs_discarded:
|
|
332
|
+
one: "1 job discarded."
|
|
333
|
+
other: "%{count} jobs discarded."
|
|
334
|
+
job_retried: "Job retried."
|
|
335
|
+
jobs_retried:
|
|
336
|
+
one: "1 job retried."
|
|
337
|
+
other: "%{count} jobs retried."
|
|
338
|
+
cache_entry_deleted: "Cache entry deleted."
|
|
339
|
+
arguments_updated: "Arguments updated and job queued for retry."
|
|
340
|
+
cache_flushed: "All cache entries flushed."
|
|
341
|
+
channel_purged: "All messages for this channel have been purged."
|
|
342
|
+
messages_purged:
|
|
343
|
+
one: "Messages older than 1 day purged."
|
|
344
|
+
other: "Messages older than %{count} days purged."
|
|
345
|
+
task_queued: '"%{key}" queued for immediate execution.'
|
|
346
|
+
jobs_run_immediately:
|
|
347
|
+
one: "1 job scheduled to run immediately."
|
|
348
|
+
other: "%{count} jobs scheduled to run immediately."
|
|
349
|
+
job_run_immediately: "Job scheduled to run immediately."
|
|
350
|
+
job_rescheduled: "Job rescheduled by +%{offset}."
|
|
351
|
+
audit_migration_required: "Audit log requires running `rails solid_stack_web:install:migrations && rails db:migrate`."
|
|
352
|
+
cannot_retry_jobs: "Could not retry jobs: %{error}"
|
|
353
|
+
cannot_discard_jobs: "Could not discard jobs: %{error}"
|
|
354
|
+
cannot_run_jobs: "Could not run jobs: %{error}"
|
|
355
|
+
cannot_reschedule_job: "Could not reschedule job: %{error}"
|
|
356
|
+
cannot_update_job: "Could not update job: %{error}"
|
|
357
|
+
invalid_json: "Invalid JSON — arguments were not saved."
|
|
358
|
+
task_not_found: "Recurring task not found."
|
|
359
|
+
cannot_run_task: "Could not run task: %{error}"
|
|
360
|
+
cannot_enqueue_task: 'Could not enqueue "%{key}" — it may have just run.'
|
|
361
|
+
cannot_discard: "Cannot discard %{status} jobs."
|
|
362
|
+
invalid_offset: "Invalid offset."
|
|
363
|
+
helpers:
|
|
364
|
+
cache_entry_this_hour:
|
|
365
|
+
one: "1 entry this hour"
|
|
366
|
+
other: "%{count} entries this hour"
|
|
367
|
+
cache_entry_hours_ago:
|
|
368
|
+
one: "1 entry %{hours}h ago"
|
|
369
|
+
other: "%{count} entries %{hours}h ago"
|
|
370
|
+
cache_size_this_hour: "%{size} written this hour"
|
|
371
|
+
cache_size_hours_ago: "%{size} written %{hours}h ago"
|
|
372
|
+
cable_message_this_hour:
|
|
373
|
+
one: "1 message this hour"
|
|
374
|
+
other: "%{count} messages this hour"
|
|
375
|
+
cable_message_hours_ago:
|
|
376
|
+
one: "1 message %{hours}h ago"
|
|
377
|
+
other: "%{count} messages %{hours}h ago"
|
|
378
|
+
throughput_last_hour:
|
|
379
|
+
one: "1 job in the last hour"
|
|
380
|
+
other: "%{count} jobs in the last hour"
|
|
381
|
+
throughput_hours_ago:
|
|
382
|
+
one: "1 job (%{from}h–%{to}h ago)"
|
|
383
|
+
other: "%{count} jobs (%{from}h–%{to}h ago)"
|
|
384
|
+
queue_depth_now:
|
|
385
|
+
one: "1 ready job now"
|
|
386
|
+
other: "%{count} ready jobs now"
|
|
387
|
+
queue_depth_hours_ago:
|
|
388
|
+
one: "1 ready job %{hours}h ago"
|
|
389
|
+
other: "%{count} ready jobs %{hours}h ago"
|
|
390
|
+
failure_last_hour:
|
|
391
|
+
one: "1 failure in the last hour"
|
|
392
|
+
other: "%{count} failures in the last hour"
|
|
393
|
+
failure_hours_ago:
|
|
394
|
+
one: "1 failure (%{from}h–%{to}h ago)"
|
|
395
|
+
other: "%{count} failures (%{from}h–%{to}h ago)"
|