pgbus 0.17.1 → 0.17.3

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 (156) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -0
  3. data/README.md +83 -13
  4. data/Rakefile +26 -0
  5. data/app/assets/javascripts/pgbus/stream_source_element.js +34 -2
  6. data/app/assets/javascripts/pgbus/stream_source_element.min.js +6 -0
  7. data/app/assets/javascripts/pgbus/stream_source_element.min.js.map +1 -0
  8. data/app/controllers/concerns/pgbus/job_listing.rb +37 -0
  9. data/app/controllers/concerns/pgbus/process_listing.rb +17 -0
  10. data/app/controllers/pgbus/application_controller.rb +5 -2
  11. data/app/controllers/pgbus/batches_controller.rb +4 -1
  12. data/app/controllers/pgbus/dashboard_controller.rb +20 -6
  13. data/app/controllers/pgbus/dead_letter_controller.rb +27 -3
  14. data/app/controllers/pgbus/events_controller.rb +52 -3
  15. data/app/controllers/pgbus/frontends_controller.rb +25 -11
  16. data/app/controllers/pgbus/insights_controller.rb +19 -1
  17. data/app/controllers/pgbus/jobs_controller.rb +45 -26
  18. data/app/controllers/pgbus/locks_controller.rb +7 -2
  19. data/app/controllers/pgbus/outbox_controller.rb +4 -1
  20. data/app/controllers/pgbus/processes_controller.rb +3 -1
  21. data/app/controllers/pgbus/queues_controller.rb +16 -4
  22. data/app/controllers/pgbus/recurring_tasks_controller.rb +5 -7
  23. data/app/frontend/pgbus/application.min.js +2 -0
  24. data/app/frontend/pgbus/application.min.js.map +1 -0
  25. data/app/frontend/pgbus/modules/charts.js +137 -77
  26. data/app/frontend/pgbus/modules/charts.min.js +2 -0
  27. data/app/frontend/pgbus/modules/charts.min.js.map +1 -0
  28. data/app/frontend/pgbus/style.css +1 -1
  29. data/app/frontend/pgbus/tailwind.css +18 -0
  30. data/app/frontend/pgbus/vendor/turbo.min.js +54 -0
  31. data/app/frontend/pgbus/vendor/turbo.min.js.map +1 -0
  32. data/app/helpers/pgbus/application_helper.rb +155 -113
  33. data/app/helpers/pgbus/button_helper.rb +88 -0
  34. data/app/helpers/pgbus/dashboard_helper.rb +157 -0
  35. data/app/helpers/pgbus/events_helper.rb +40 -0
  36. data/app/helpers/pgbus/insights_helper.rb +39 -0
  37. data/app/helpers/pgbus/processes_helper.rb +79 -0
  38. data/app/views/layouts/pgbus/application.html.erb +0 -1
  39. data/app/views/pgbus/batches/_batches_table.html.erb +16 -13
  40. data/app/views/pgbus/batches/show.html.erb +3 -4
  41. data/app/views/pgbus/dashboard/_processes_table.html.erb +11 -11
  42. data/app/views/pgbus/dashboard/_queue_health.html.erb +42 -51
  43. data/app/views/pgbus/dashboard/_queues_table.html.erb +18 -16
  44. data/app/views/pgbus/dashboard/_recent_failures.html.erb +16 -12
  45. data/app/views/pgbus/dashboard/_stats_cards.html.erb +70 -36
  46. data/app/views/pgbus/dashboard/show.html.erb +1 -1
  47. data/app/views/pgbus/dead_letter/_error.html.erb +13 -0
  48. data/app/views/pgbus/dead_letter/_messages_table.html.erb +37 -96
  49. data/app/views/pgbus/dead_letter/_row.html.erb +75 -0
  50. data/app/views/pgbus/dead_letter/index.html.erb +6 -9
  51. data/app/views/pgbus/dead_letter/show.html.erb +37 -21
  52. data/app/views/pgbus/events/_list.html.erb +55 -0
  53. data/app/views/pgbus/events/_processed_table.html.erb +45 -0
  54. data/app/views/pgbus/events/_replay.html.erb +10 -0
  55. data/app/views/pgbus/events/_row.html.erb +162 -0
  56. data/app/views/pgbus/events/_tabs.html.erb +13 -0
  57. data/app/views/pgbus/events/index.html.erb +27 -48
  58. data/app/views/pgbus/events/show.html.erb +25 -7
  59. data/app/views/pgbus/insights/_chart_card.html.erb +21 -0
  60. data/app/views/pgbus/insights/_latency_table.html.erb +20 -0
  61. data/app/views/pgbus/insights/_status_table.html.erb +19 -0
  62. data/app/views/pgbus/insights/_throughput_table.html.erb +18 -0
  63. data/app/views/pgbus/insights/show.html.erb +83 -100
  64. data/app/views/pgbus/jobs/_list.html.erb +64 -0
  65. data/app/views/pgbus/jobs/_row.html.erb +107 -0
  66. data/app/views/pgbus/jobs/_tabs.html.erb +14 -0
  67. data/app/views/pgbus/jobs/index.html.erb +10 -10
  68. data/app/views/pgbus/jobs/show.html.erb +18 -20
  69. data/app/views/pgbus/locks/_concurrency.html.erb +25 -23
  70. data/app/views/pgbus/locks/_uniqueness.html.erb +20 -22
  71. data/app/views/pgbus/outbox/index.html.erb +30 -27
  72. data/app/views/pgbus/processes/_processes_table.html.erb +6 -25
  73. data/app/views/pgbus/processes/_row.html.erb +48 -0
  74. data/app/views/pgbus/processes/_status.html.erb +4 -0
  75. data/app/views/pgbus/queues/_queues_list.html.erb +28 -32
  76. data/app/views/pgbus/queues/show.html.erb +69 -118
  77. data/app/views/pgbus/recurring_tasks/_tasks_table.html.erb +75 -76
  78. data/app/views/pgbus/recurring_tasks/index.html.erb +1 -1
  79. data/app/views/pgbus/recurring_tasks/show.html.erb +45 -51
  80. data/app/views/pgbus/shared/_empty_row.html.erb +2 -0
  81. data/app/views/pgbus/shared/_pager.html.erb +34 -0
  82. data/config/i18n-tasks.yml +11 -2
  83. data/config/locales/da.yml +405 -113
  84. data/config/locales/de.yml +405 -113
  85. data/config/locales/en.yml +405 -113
  86. data/config/locales/es.yml +404 -112
  87. data/config/locales/fi.yml +404 -112
  88. data/config/locales/fr.yml +406 -114
  89. data/config/locales/it.yml +405 -113
  90. data/config/locales/ja.yml +405 -113
  91. data/config/locales/nb.yml +405 -113
  92. data/config/locales/nl.yml +405 -113
  93. data/config/locales/pt.yml +406 -114
  94. data/config/locales/sv.yml +404 -112
  95. data/config/routes.rb +1 -1
  96. data/lib/generators/pgbus/add_presence_generator.rb +2 -1
  97. data/lib/generators/pgbus/add_presence_seats_generator.rb +45 -0
  98. data/lib/generators/pgbus/templates/add_presence.rb.erb +32 -7
  99. data/lib/generators/pgbus/templates/add_presence_seats.rb.erb +38 -0
  100. data/lib/generators/pgbus/templates/initializer.rb.erb +4 -0
  101. data/lib/pgbus/active_job/executor.rb +16 -6
  102. data/lib/pgbus/cli/dlq.rb +32 -5
  103. data/lib/pgbus/client.rb +4 -2
  104. data/lib/pgbus/configuration/presence_settings.rb +103 -0
  105. data/lib/pgbus/configuration.rb +51 -2
  106. data/lib/pgbus/dead_letter_header.rb +129 -0
  107. data/lib/pgbus/doctor.rb +8 -4
  108. data/lib/pgbus/engine.rb +13 -7
  109. data/lib/pgbus/event_bus/handler.rb +18 -11
  110. data/lib/pgbus/event_bus/registry.rb +6 -0
  111. data/lib/pgbus/failed_event_recorder.rb +34 -0
  112. data/lib/pgbus/generators/migration_detector.rb +9 -1
  113. data/lib/pgbus/instrumentation.rb +2 -1
  114. data/lib/pgbus/mcp/base_tool.rb +25 -0
  115. data/lib/pgbus/mcp/tools/concurrency_tool.rb +23 -4
  116. data/lib/pgbus/mcp/tools/dlq_detail_tool.rb +4 -2
  117. data/lib/pgbus/mcp/tools/dlq_tool.rb +10 -4
  118. data/lib/pgbus/mcp/tools/locks_tool.rb +23 -5
  119. data/lib/pgbus/mcp/tools/recurring_tool.rb +33 -4
  120. data/lib/pgbus/outbox/poller.rb +1 -1
  121. data/lib/pgbus/process/consumer.rb +53 -3
  122. data/lib/pgbus/process/dispatcher.rb +1 -1
  123. data/lib/pgbus/process/supervisor.rb +32 -11
  124. data/lib/pgbus/process/worker.rb +45 -8
  125. data/lib/pgbus/recurring/scheduler.rb +2 -1
  126. data/lib/pgbus/streams/presence.rb +317 -81
  127. data/lib/pgbus/version.rb +1 -1
  128. data/lib/pgbus/web/data_source/dashboard_signals.rb +170 -0
  129. data/lib/pgbus/web/data_source/dead_letter.rb +142 -0
  130. data/lib/pgbus/web/data_source/event_list.rb +161 -0
  131. data/lib/pgbus/web/data_source/job_list.rb +323 -0
  132. data/lib/pgbus/web/data_source/list_counts.rb +80 -0
  133. data/lib/pgbus/web/data_source/process_list.rb +69 -0
  134. data/lib/pgbus/web/data_source/queue_summary.rb +122 -0
  135. data/lib/pgbus/web/data_source.rb +132 -254
  136. data/lib/pgbus/web/dead_letter_reason.rb +81 -0
  137. data/lib/pgbus/web/event_state.rb +71 -0
  138. data/lib/pgbus/web/health_app.rb +7 -3
  139. data/lib/pgbus/web/health_verdict.rb +78 -0
  140. data/lib/pgbus/web/insights_charts.rb +84 -0
  141. data/lib/pgbus/web/job_state.rb +111 -0
  142. data/lib/pgbus/web/process_activity.rb +97 -0
  143. data/lib/pgbus/web/process_state.rb +187 -0
  144. data/lib/pgbus/web/queue_summary.rb +104 -0
  145. data/lib/pgbus/web/stream_app.rb +18 -6
  146. data/lib/pgbus/web/streamer/connection.rb +7 -1
  147. data/lib/pgbus/web/streamer/falcon_connection.rb +7 -1
  148. data/lib/pgbus/web/streamer/heartbeat.rb +9 -3
  149. data/lib/pgbus/web/streamer/instance.rb +2 -1
  150. data/lib/pgbus/web/streamer/presence_tracker.rb +155 -0
  151. data/lib/pgbus/web/streamer/stream_event_dispatcher.rb +8 -37
  152. data/lib/pgbus/web/time_format.rb +128 -0
  153. metadata +55 -4
  154. data/app/views/pgbus/events/_pending_table.html.erb +0 -169
  155. data/app/views/pgbus/jobs/_enqueued_table.html.erb +0 -118
  156. data/app/views/pgbus/jobs/_failed_table.html.erb +0 -76
@@ -41,6 +41,7 @@ nl:
41
41
  title: Actieve processen
42
42
  queue_health:
43
43
  dead_tuples: Dode tupels
44
+ empty: Nog geen wachtrijtabellen om te meten
44
45
  headers:
45
46
  bloat: Bloat
46
47
  dead: Dood
@@ -60,14 +61,34 @@ nl:
60
61
  one: "%{count} tabel heeft vacuum nodig"
61
62
  other: "%{count} tabellen hebben vacuum nodig"
62
63
  title: Wachtrijgezondheid
64
+ words:
65
+ bloat:
66
+ critical: "%{ratio} op %{table} — lezen vertraagt; voer nu vacuum uit (kritiek boven %{critical}, waarschuwt boven %{warn})"
67
+ none: Nog niets te meten
68
+ ok: "%{ratio} op %{table} — prima (waarschuwt boven %{warn}, kritiek boven %{critical})"
69
+ warn: "%{ratio} op %{table} — vacuum nodig (waarschuwt boven %{warn}, kritiek boven %{critical})"
70
+ dead_tuples:
71
+ ok: Prima — waarschuwt boven %{limit} dode rijen
72
+ warn: Boven %{limit} — autovacuum loopt achter; de tabel hieronder toont waar
73
+ transaction:
74
+ critical: Meer dan %{critical} — vacuum kan geen rijen vrijgeven tot hij eindigt; zoek hem in pg_stat_activity (waarschuwt bij %{warn}; het gezondheidsoordeel gaat naar degraded na %{verdict})
75
+ none: Geen open transactie — vacuum kan elke dode rij vrijgeven (waarschuwt bij %{warn}, alarmeert bij %{critical}; het gezondheidsoordeel gaat naar degraded na %{verdict})
76
+ ok: Prima — waarschuwt bij %{warn}, alarmeert bij %{critical}; het gezondheidsoordeel gaat naar degraded na %{verdict}
77
+ warn: Meer dan %{warn} — een lange transactie verhindert dat vacuum rijen vrijgeeft (alarmeert bij %{critical}; het gezondheidsoordeel gaat naar degraded na %{verdict})
78
+ vacuum:
79
+ critical: Meer dan %{critical} — autovacuum bereikt deze tabellen niet; controleer de instellingen (waarschuwt na %{warn})
80
+ ok: Prima — waarschuwt na %{warn}, kritiek na %{critical}
81
+ unknown: Nooit vacuum uitgevoerd, of de statistieken zijn niet beschikbaar
82
+ warn: Meer dan %{warn} — autovacuum loopt mogelijk achter (kritiek na %{critical})
63
83
  worst_bloat: Ergste Bloat
64
84
  queues_table:
65
85
  empty: Geen wachtrijen gevonden
66
86
  headers:
67
87
  depth: Diepte
68
- oldest_claimable: Oudste beschikbaar (s)
88
+ oldest_claimable: Oudste beschikbaar
69
89
  parked: Geparkeerd
70
90
  queue: Wachtrij
91
+ status: Status
71
92
  total: Totaal
72
93
  visible: Zichtbaar
73
94
  title: Wachtrijen
@@ -75,7 +96,9 @@ nl:
75
96
  recent_failures:
76
97
  empty: Geen fouten
77
98
  headers:
99
+ attempt: Poging
78
100
  error: Fout
101
+ job: Job
79
102
  queue: Wachtrij
80
103
  when: Wanneer
81
104
  title: Recente fouten
@@ -83,19 +106,72 @@ nl:
83
106
  show:
84
107
  title: Dashboard
85
108
  stats_cards:
109
+ dead_lettered: Dead-lettered
110
+ dlq_newest_html: 'nieuwste: %{error_class} in %{job} %{ago}'
111
+ dlq_newest_legacy_html: 'nieuwste: %{job} %{ago} — geen reden geregistreerd'
112
+ dlq_newest_no_error_html: 'nieuwste: %{job} %{ago} — geen fout geregistreerd'
113
+ dlq_none: Niets dead-lettered
114
+ dlq_see_why: open de dead-letterpagina om te zien waarom elke job stierf
86
115
  enqueued: In de wachtrij geplaatst
87
- failed_dlq: Mislukt / DLQ
88
- failed_dlq_labels: Mislukt / Dead Lettered
116
+ enqueued_detail: "%{claimable} nu op te pakken · %{waiting} gepland, actief of opnieuw proberend"
117
+ enqueued_paused:
118
+ one: "%{count} in gepauzeerde wachtrijen"
119
+ other: "%{count} in gepauzeerde wachtrijen"
89
120
  parked_jobs: Geparkeerde jobs
90
121
  parked_jobs_oldest: oudste %{age}
91
122
  processes: Processen
123
+ processes_detail: "%{healthy} gezond · %{stalled} vastgelopen · %{stale} verouderd"
124
+ processes_none: Er draait niets — geen enkele job wordt opgepakt
125
+ processes_stale: verouderde processen hebben geen hartslag meer gestuurd; hun lopende jobs worden opnieuw uitgevoerd zodra hun visibility timeout verloopt
92
126
  queues: Wachtrijen
127
+ queues_detail: "%{paused} gepauzeerd · %{dlq} dead-letter"
128
+ queues_undrained:
129
+ one: "%{count} bevat jobs die door niets worden leeggemaakt"
130
+ other: "%{count} bevatten jobs die door niets worden leeggemaakt"
93
131
  recurring: Terugkerend
132
+ recurring_detail: Taken die de scheduler volgens schema in de wachtrij plaatst
133
+ retrying: Opnieuw proberen
134
+ retrying_due:
135
+ one: "%{count} nu aan de beurt"
136
+ other: "%{count} nu aan de beurt"
137
+ retrying_newest: nieuwste fout %{error_class}
138
+ retrying_next_html: volgende poging %{time}
139
+ retrying_none: Niets wordt opnieuw geprobeerd
94
140
  throughput: Doorvoer
95
- throughput_unit: berichten/s
96
- view_tasks: Bekijk taken
97
- visible: zichtbaar
141
+ throughput_detail: jobs/min over de laatste %{minutes} min
142
+ throughput_unavailable: vereist jobstatistieken (rails g pgbus:add_job_stats)
143
+ verdict:
144
+ links:
145
+ dlq: Dead letters
146
+ processes: Processen
147
+ look_at: 'Kijk bij:'
148
+ meaning:
149
+ degraded: Er is aandacht nodig, maar jobs blijven stromen. /readyz antwoordt nog steeds ready.
150
+ ok: Elke wachtrij met werk wordt leeggemaakt en elk proces stuurt een hartslag. /readyz antwoordt ready.
151
+ stalled: Jobs wachten en niets pakt ze op. /readyz antwoordt not ready (503).
152
+ statuses:
153
+ degraded: DEGRADED
154
+ ok: OK
155
+ stalled: STALLED
156
+ title: 'Gezondheid: %{status}'
157
+ unavailable: Gezondheidsoordeel niet beschikbaar — de onderliggende controles konden niet worden gelezen; zie het log
98
158
  dead_letter:
159
+ detail:
160
+ backtrace: Backtrace (eerste regels)
161
+ died: 'Gestorven:'
162
+ dlq: 'Dead letter-wachtrij:'
163
+ error_from_attempt: Fout uit poging %{attempt}; pogingen %{from}–%{to} registreerden geen fout.
164
+ source: 'Verplaatst door:'
165
+ sources:
166
+ consumer: event-consumer
167
+ worker: job-worker
168
+ why: Waarom hij stierf
169
+ filters:
170
+ all: Alle
171
+ clear_error_class: Filter wissen
172
+ error_class: 'Fout: %{error_class}'
173
+ filter_error_class: Toon alleen %{error_class}
174
+ label: Dead letters filteren
99
175
  index:
100
176
  discard_all: Alles weggooien
101
177
  discard_all_confirm: Alle DLQ-berichten permanent verwijderen?
@@ -115,10 +191,12 @@ nl:
115
191
  empty: Dead letter queue is leeg
116
192
  full_json_payload: Volledige JSON-inhoud
117
193
  headers:
118
- enqueued: In de wachtrij geplaatst
194
+ actions: Acties
195
+ attempts: Pogingen
196
+ died: Gestorven
119
197
  id: ID
120
- job_class: Taakklasse
121
- reads: Leest
198
+ job: Job
199
+ reason: Reden
122
200
  source_queue: Bronwachtrij
123
201
  headers_section: Headers
124
202
  job_id: 'Taak-ID:'
@@ -131,6 +209,16 @@ nl:
131
209
  visible_at: 'Zichtbaar op:'
132
210
  retry: Opnieuw proberen
133
211
  total_label: berichten in dead letter-wachtrij
212
+ view: Bekijk
213
+ reasons:
214
+ error_earlier_attempt_html: 'Herhaalpogingen op. Laatst geregistreerde fout, uit poging %{error_attempt}: %{error_class}: %{error_message}'
215
+ error_html: 'Herhaalpogingen op. Laatste fout: %{error_class}: %{error_message}'
216
+ event_no_error_html: Handler faalde bij %{attempts} afleveringen (max %{max}) — geen handlerfout geregistreerd
217
+ no_error_recorded_html: "%{max} herhaalpogingen overschreden na %{attempts} keer lezen — geen fout geregistreerd; elke mislukte poging crashte voordat die kon rapporteren"
218
+ not_recorded_html: Reden niet geregistreerd (naar de DLQ verplaatst vóór pgbus %{version})
219
+ retried_before:
220
+ one: Al eens eerder vanuit de DLQ opnieuw geprobeerd.
221
+ other: Al %{count} keer eerder vanuit de DLQ opnieuw geprobeerd.
134
222
  show:
135
223
  back: Terug naar DLQ
136
224
  context: Context
@@ -138,8 +226,10 @@ nl:
138
226
  discard_confirm: Permanent verwerpen?
139
227
  headers: Headers
140
228
  labels:
229
+ attempts: Pogingen
230
+ died: Gestorven
231
+ dlq: Dead letter-wachtrij
141
232
  enqueued_at: In de wachtrij geplaatst op
142
- read_count: Aantal keer gelezen
143
233
  source_queue: Bronwachtrij
144
234
  visibility_timeout: Zichtbaarheidstijdlimiet
145
235
  not_found: Bericht niet gevonden
@@ -163,6 +253,7 @@ nl:
163
253
  mark_handled_failed: Kon gebeurtenis niet als afgehandeld markeren.
164
254
  marked_handled: Gebeurtenis als afgehandeld gemarkeerd.
165
255
  none_selected: Geen gebeurtenissen geselecteerd.
256
+ payload_redacted: 'Niet opgeslagen: de payload bevat nog afgeschermde ([FILTERED]) waarden die de echte zouden vervangen.'
166
257
  payload_update_failed: Kon payload niet bijwerken. Controleer of de JSON geldig is.
167
258
  payload_updated: Payload bijgewerkt en gebeurtenis opnieuw in de wachtrij geplaatst.
168
259
  replay_failed: Gebeurtenis niet gevonden of kon niet worden afgespeeld.
@@ -170,56 +261,118 @@ nl:
170
261
  reroute_failed: Kon gebeurtenis niet omleiden.
171
262
  rerouted: Gebeurtenis omgeleid naar doelhandler.
172
263
  index:
173
- discard_selected: Geselecteerde Verwijderen
174
- discard_selected_confirm: Geselecteerde gebeurtenissen verwijderen?
175
- pending_empty: Geen openstaande gebeurtenissen
176
- pending_headers:
177
- enqueued: In de wachtrij geplaatst
178
- handler_queue: Handler Wachtrij
179
- id: ID
180
- reads: Lezingen
181
- routing_key: Routing Key
182
264
  pending_title: Openstaande Gebeurtenissen
183
- processed_empty: Nog geen gebeurtenissen verwerkt
184
- processed_headers:
185
- event_id: Gebeurtenis ID
186
- handler: Handler
187
- processed_at: Verwerkt op
188
265
  processed_title: Verwerkte gebeurtenissen
266
+ subscribers:
267
+ covered: Verwerkt door een draaiende consumer
268
+ uncovered: Geen draaiende consumer dekt dit patroon
269
+ unknown: Consumerdekking onbekend
270
+ view_pending: Wachtende tonen
189
271
  subscribers_empty: Geen geregistreerde abonnees
190
272
  subscribers_headers:
273
+ consumer: Consumer
191
274
  handler: Handler
192
275
  pattern: Patroon
276
+ pending: Wachtend
193
277
  queue: Wachtrij
194
278
  subscribers_title: Geregistreerde abonnees
195
279
  title: Gebeurtenissen
196
- pending_table:
197
- arguments: Payload
280
+ list:
198
281
  context: Context
199
282
  discard: Verwijderen
200
283
  discard_confirm: Deze gebeurtenis verwijderen? Deze wordt gearchiveerd.
284
+ discard_failure_confirm: Dit mislukte event verwijderen? Het bericht staat niet meer in de wachtrij.
285
+ discard_selected: Geselecteerde Verwijderen
286
+ discard_selected_confirm: Geselecteerde gebeurtenissen verwijderen?
201
287
  edit_payload: Bewerken & Opnieuw Proberen
202
288
  edit_payload_confirm: Payload bijwerken en deze gebeurtenis opnieuw in de wachtrij plaatsen?
203
289
  edit_payload_label: 'JSON Payload:'
290
+ empty:
291
+ all: Geen openstaande gebeurtenissen
292
+ ready: Geen events die wachten op verwerking
293
+ retrying: Geen events die wachten op een nieuwe poging
294
+ running: Geen events in verwerking
295
+ scheduled: Geen geplande events
204
296
  event_id: 'Gebeurtenis ID:'
205
297
  full_json_payload: Volledige JSON Payload
298
+ headers:
299
+ actions: Acties
300
+ attempts: Pogingen
301
+ event: Event
302
+ handler: Handler
303
+ id: ID
304
+ reason: Volgende run / Reden
305
+ state: Status
206
306
  headers_section: Headers
207
307
  mark_handled: Markeren als Afgehandeld
208
- mark_handled_confirm: Deze gebeurtenis als afgehandeld markeren? Deze wordt gearchiveerd en overgeslagen bij het afspelen.
308
+ mark_handled_confirm: Dit event als verwerkt markeren? Het bericht wordt gearchiveerd en de handler voert het niet uit.
209
309
  metadata: Metadata
210
310
  metadata_labels:
311
+ enqueued: 'In wachtrij gezet:'
211
312
  last_read: 'Laatst gelezen:'
313
+ published: 'Gepubliceerd:'
212
314
  read_count: 'Aantal lezingen:'
213
315
  visible_at: 'Zichtbaar op:'
316
+ payload: Payload
317
+ reasons:
318
+ handling_html: In verwerking door %{handler} — opgehaald %{ago} · lease verloopt %{time}
319
+ lease_expired_html: Lease verlopen (consumer waarschijnlijk gestopt) — opnieuw afgeleverd aan %{handler}, poging %{attempt}
320
+ no_consumer_for_queue_html: Geen draaiende consumer is geabonneerd op %{pattern} (%{handler})
321
+ no_consumers_html: Geen gezonde consumer actief
322
+ orphaned_html: Mislukt met %{error} in %{handler} — bericht staat niet meer in de wachtrij
323
+ paused_html: Wachtrij gepauzeerd
324
+ retrying_dlq_html: "%{handler} poging %{attempt}/%{max} mislukt: %{error} — de volgende leesactie verplaatst het naar de DLQ"
325
+ retrying_due_html: "%{handler} poging %{attempt}/%{max} mislukt: %{error} — volgende poging nu"
326
+ retrying_html: "%{handler} poging %{attempt}/%{max} mislukt: %{error} — volgende poging %{time}"
327
+ scheduled_html: Gepland — verwerkt door %{handler} %{time}
328
+ waiting_html: 'Wacht — %{count} ervoor · volgende: %{handler}'
329
+ waiting_unknown_html: Wacht op %{handler}
214
330
  reroute: Omleiden
215
331
  reroute_confirm: Deze gebeurtenis omleiden naar een andere handler?
216
332
  reroute_label: 'Doelhandler:'
333
+ states:
334
+ ready: Gereed
335
+ retrying: Opnieuw
336
+ running: In verwerking
337
+ scheduled: Gepland
338
+ tabs:
339
+ all: Alle
340
+ ready: Gereed
341
+ retrying: Opnieuw
342
+ running: In verwerking
343
+ scheduled: Gepland
344
+ tabs_label: Eventstatussen
345
+ view_failure: Fout bekijken
346
+ processed:
347
+ empty: Nog geen gebeurtenissen verwerkt
348
+ headers:
349
+ actions: Acties
350
+ event_id: Gebeurtenis ID
351
+ handler: Handler
352
+ reason: Reden
353
+ state: Status
354
+ reasons:
355
+ abandoned_html: Claim werd stil %{ago} — de volgende aflevering voert de handler opnieuw uit
356
+ completed_html: Voltooid %{ago}
357
+ completed_legacy_html: Vastgelegd %{ago} (claim in één fase; upgrade met pgbus:add_processed_event_completion)
358
+ handling_html: In verwerking — claim ververst %{ago}
359
+ replay: Opnieuw afspelen
360
+ replay_confirm: Dit event opnieuw afleveren aan zijn handler onder een nieuw event-ID? De handler draait opnieuw.
361
+ replay_unavailable:
362
+ no_handler: Handler niet meer geregistreerd
363
+ not_archived: Niet meer in het archief
364
+ states:
365
+ abandoned: Stil
366
+ completed: Voltooid
367
+ handling: In verwerking
217
368
  show:
218
369
  back: Terug naar gebeurtenissen
219
370
  labels:
371
+ completed_at: Voltooid op
220
372
  event_id: Gebeurtenis ID
221
373
  handler: Handler
222
374
  processed_at: Verwerkt op
375
+ state: Status
223
376
  not_found: Gebeurtenis niet gevonden
224
377
  title: Gebeurtenis %{event_id}
225
378
  helpers:
@@ -231,6 +384,7 @@ nl:
231
384
  bulk_select_row: Selecteer %{id}
232
385
  bulk_selected: geselecteerd
233
386
  pagination:
387
+ label: Paginering
234
388
  next: Volgende
235
389
  previous: Vorige
236
390
  showing: "%{from}–%{to} van %{total} weergegeven"
@@ -245,24 +399,50 @@ nl:
245
399
  healthy: Gezond
246
400
  stale: Verouderd
247
401
  stalled: Vastgelopen
402
+ time:
403
+ absolute_format: "%Y-%m-%d %H:%M:%S %Z"
404
+ clock_format: "%H:%M"
405
+ future: over %{distance}
406
+ now: nu
407
+ past: "%{distance} geleden"
408
+ range:
409
+ days:
410
+ one: "%{count} dag"
411
+ other: "%{count} dagen"
412
+ hours:
413
+ one: "%{count} uur"
414
+ other: "%{count} uur"
415
+ minutes:
416
+ one: "%{count} minuut"
417
+ other: "%{count} minuten"
418
+ units:
419
+ days: "%{count}d"
420
+ hours: "%{count}u"
421
+ milliseconds: "%{count}ms"
422
+ minutes: "%{count}m"
423
+ seconds: "%{count}s"
248
424
  insights:
249
425
  show:
250
426
  charts:
251
- failed_to_load: Fout bij laden grafiekgegevens
252
- latency: Wachtrijvertraging (ms)
427
+ captions:
428
+ latency: Jobs wachtten gemiddeld %{avg} voordat een worker ze oppakte, p95 %{p95}
429
+ status: "%{success} geslaagd, %{failed} mislukt, %{dead_lettered} dead-lettered"
430
+ throughput_html: "%{total} jobs in de afgelopen %{range}, piek %{peak} jobs/min %{at}"
431
+ data_table: Gegevenstabel
432
+ latency: Wachtrijvertraging
253
433
  latency_avg: Gemiddeld
254
434
  latency_p95: P95
255
435
  no_data: Nog geen gegevens
256
436
  series_name: Taken/min
257
437
  status_distribution: Statusverdeling
258
- throughput: Doorvoer (taken/min)
438
+ throughput: Doorvoer
259
439
  description_html: Prestatie-indicatoren voor de laatste %{range}
260
440
  latency_by_queue:
261
441
  empty: Nog geen vertraginggegevens
262
442
  headers:
263
- avg: Gemiddeld (ms)
443
+ avg: Gemiddeld
264
444
  count: Aantal
265
- p95: P95 (ms)
445
+ p95: P95
266
446
  queue: Wachtrij
267
447
  title: Vertraging per wachtrij
268
448
  live_streams:
@@ -282,6 +462,10 @@ nl:
282
462
  job_class: Taakklasse
283
463
  max: Maximaal
284
464
  title: Langzaamste Taakklassen (gem. duur)
465
+ statuses:
466
+ dead_lettered: Dead-lettered
467
+ failed: Mislukt
468
+ success: Geslaagd
285
469
  streams:
286
470
  summary:
287
471
  active: Actief
@@ -310,6 +494,20 @@ nl:
310
494
  p99_latency: P99 vertraging
311
495
  succeeded: Geslaagd
312
496
  total_jobs: Totaal Taken
497
+ tables:
498
+ captions:
499
+ latency_minute: Wachtrijvertraging per minuut
500
+ latency_step: Wachtrijvertraging per %{step}
501
+ status: Jobs per eindstatus
502
+ throughput_minute: Jobs per minuut
503
+ throughput_step: Jobs per %{step}
504
+ headers:
505
+ avg: Gemiddeld
506
+ from: Van
507
+ highest_p95: Hoogste p95
508
+ jobs: Jobs
509
+ share: Aandeel
510
+ status: Status
313
511
  time_ranges:
314
512
  1h: 1u
315
513
  24h: 24u
@@ -317,60 +515,87 @@ nl:
317
515
  7d: 7d
318
516
  title: Inzichten
319
517
  jobs:
320
- enqueued_table:
518
+ index:
519
+ discard_all: Alles Verwijderen
520
+ discard_all_confirm: Alle mislukte taken verwijderen?
521
+ discard_all_enqueued_notice: "%{count} taken in de wachtrij verwijderd en vergrendelingen vrijgegeven."
522
+ discard_selected: Geselecteerd verwijderen
523
+ discard_selected_confirm: Geselecteerde items verwijderen?
524
+ discarded_selected:
525
+ one: 1 geselecteerd item verwijderd.
526
+ other: "%{count} geselecteerde items verwijderd."
527
+ none_selected: Geen items geselecteerd.
528
+ retry_all: Alles Opnieuw Proberen
529
+ retry_all_confirm: Alle mislukte taken opnieuw proberen?
530
+ title: Taken
531
+ list:
321
532
  arguments: Argumenten
322
- discard: Verwerpen
323
- discard_all: Alles verwijderen
324
- discard_all_confirm: Alle taken in de wachtrij verwijderen en hun vergrendelingen vrijgeven? Dit kan niet ongedaan worden gemaakt.
325
- discard_confirm: Dit bericht verwerpen?
326
- empty: Geen in de wachtrij geplaatste taken
533
+ discard: Verwijderen
534
+ discard_all_enqueued: Alle in wachtrij verwijderen
535
+ discard_all_enqueued_confirm: Alle taken in de wachtrij verwijderen en hun vergrendelingen vrijgeven? Dit kan niet ongedaan worden gemaakt.
536
+ discard_confirm: Deze taak verwijderen?
537
+ empty:
538
+ all: Geen jobs
539
+ blocked: Geen jobs geblokkeerd door een gelijktijdigheidslimiet
540
+ ready: Geen jobs die wachten op uitvoering
541
+ retrying: Geen jobs die wachten op een nieuwe poging
542
+ running: Geen actieve jobs
543
+ scheduled: Geen geplande jobs
327
544
  full_json_payload: Volledige JSON payload
328
545
  headers:
329
- enqueued: In de wachtrij geplaatst
546
+ actions: Acties
547
+ attempts: Pogingen
330
548
  id: ID
331
- job_class: Taakklasse
549
+ job: Job
332
550
  queue: Wachtrij
333
- reads: Leest
551
+ reason: Volgende run / Reden
552
+ state: Status
334
553
  headers_section: Headers
335
554
  job_id: 'Taak ID:'
336
555
  metadata: Metadata
337
556
  metadata_labels:
557
+ concurrency_key: 'Gelijktijdigheidssleutel:'
558
+ enqueued: 'In wachtrij gezet:'
338
559
  last_read: 'Laatst gelezen:'
339
560
  locale: 'Locale:'
340
561
  priority: 'Prioriteit:'
341
- queue: 'Wachtrij:'
342
562
  scheduled: 'Gepland:'
343
563
  timezone: 'Tijdzone:'
344
564
  visible_at: 'Zichtbaar op:'
565
+ reasons:
566
+ blocked_html: Wacht op een gelijktijdigheidsslot voor %{key} (bezet %{held}/%{limit}) · geparkeerd %{ago}
567
+ blocked_no_slots_html: Wacht op een gelijktijdigheidsslot voor %{key} · geparkeerd %{ago}
568
+ lease_expired_html: Lease verlopen (worker waarschijnlijk gestopt) — opnieuw afgeleverd, poging %{attempt}
569
+ no_workers_html: Geen gezonde worker actief
570
+ not_drained_html: Geen worker verwerkt deze wachtrij
571
+ orphaned_html: Mislukt met %{error} — bericht staat niet meer in de wachtrij
572
+ paused_html: Wachtrij gepauzeerd
573
+ retrying_dlq_html: 'Poging %{attempt}/%{max} mislukt: %{error} — de volgende lezing verplaatst hem naar de DLQ'
574
+ retrying_due_html: 'Poging %{attempt}/%{max} mislukt: %{error} — volgende poging nu'
575
+ retrying_html: 'Poging %{attempt}/%{max} mislukt: %{error} — volgende poging %{time}'
576
+ running_html: Opgepakt %{ago} · lease verloopt %{time}
577
+ scheduled_html: Gepland — draait %{time}
578
+ waiting_html: Wacht — %{count} ervoor
579
+ waiting_priority_html: Wacht — %{count} ervoor met deze prioriteit
580
+ waiting_unknown_html: Wacht om opgepakt te worden
345
581
  retry: Opnieuw proberen
346
582
  retry_confirm: Zichtbaarheidstimeout resetten en opnieuw proberen?
347
- title: Taken in de wachtrij
348
- failed_table:
349
- discard: Verwijderen
350
- discard_confirm: Deze taak verwijderen?
351
- empty: Geen mislukte taken
352
- headers:
353
- actions: Acties
354
- error: Fout
355
- failed: Mislukt
356
- id: ID
357
- queue: Wachtrij
358
- retries: Herhalingen
359
- retry: Opnieuw proberen
360
- title: Mislukte Taken
361
- index:
362
- discard_all: Alles Verwijderen
363
- discard_all_confirm: Alle mislukte taken verwijderen?
364
- discard_all_enqueued_notice: "%{count} taken in de wachtrij verwijderd en vergrendelingen vrijgegeven."
365
- discard_selected: Geselecteerd verwijderen
366
- discard_selected_confirm: Geselecteerde items verwijderen?
367
- discarded_selected:
368
- one: 1 geselecteerd item verwijderd.
369
- other: "%{count} geselecteerde items verwijderd."
370
- none_selected: Geen items geselecteerd.
371
- retry_all: Alles Opnieuw Proberen
372
- retry_all_confirm: Alle mislukte taken opnieuw proberen?
373
- title: Taken
583
+ states:
584
+ blocked: Geblokkeerd
585
+ ready: Gereed
586
+ retrying: Opnieuw
587
+ running: Actief
588
+ scheduled: Gepland
589
+ tabs:
590
+ all: Alle
591
+ blocked: Geblokkeerd
592
+ ready: Gereed
593
+ retrying: Opnieuw
594
+ running: Actief
595
+ scheduled: Gepland
596
+ tabs_label: Jobstatussen
597
+ view_failure: Fout bekijken
598
+ view_locks: Locks bekijken
374
599
  show:
375
600
  back: Terug naar Taken
376
601
  backtrace: Stacktrace
@@ -423,6 +648,7 @@ nl:
423
648
  other: De %{count} jobs die achter deze sleutel geparkeerd staan verwijderen? Ze draaien nooit meer.
424
649
  empty: Geen gelijktijdigheidssleutels in gebruik
425
650
  headers:
651
+ actions: Acties
426
652
  in_use: In gebruik
427
653
  key: Sleutel
428
654
  lease: Lease
@@ -456,6 +682,7 @@ nl:
456
682
  discard_selected_confirm: Geselecteerde sloten verwijderen?
457
683
  empty: Geen actieve vergrendelingen
458
684
  headers:
685
+ actions: Acties
459
686
  age: Leeftijd
460
687
  lock_key: Vergrendelingssleutel
461
688
  msg_id: Bericht-ID
@@ -483,8 +710,6 @@ nl:
483
710
  pending: In afwachting
484
711
  published: Gepubliceerd
485
712
  stats:
486
- no_age: "—"
487
- oldest_age: "%{seconds}s"
488
713
  oldest_unpublished: Oudste niet-gepubliceerde
489
714
  total: Totaal
490
715
  unpublished: Niet gepubliceerd
@@ -493,18 +718,76 @@ nl:
493
718
  index:
494
719
  title: Processen
495
720
  processes_table:
721
+ capsule: capsule %{capsule} · proces %{process}
496
722
  empty: Geen processen actief
497
723
  headers:
498
- hostname: Hostnaam
499
- kind: Type
500
- last_heartbeat: Laatste hartslag
501
- metadata: Metadata
502
- pid: PID
724
+ activity: Activiteit
725
+ heartbeat: Hartslag
726
+ process: Proces
727
+ recycle: Recycling
503
728
  status: Status
504
- rates:
505
- dequeued: opgehaald
506
- failed: mislukt
507
- processed: verwerkt
729
+ no_raw_metadata: Geen andere metadata
730
+ raw_metadata: Andere metadata
731
+ started: Gestart
732
+ under_supervisor: onder supervisor %{pid}
733
+ uptime: actief %{duration}
734
+ state:
735
+ activity:
736
+ buffered: "%{number} gebufferd"
737
+ busy_slots: "%{busy}/%{capacity} slots bezet"
738
+ busy_threads: "%{busy}/%{capacity} threads bezet"
739
+ consumes: Consumeert %{topics}
740
+ drains: Verwerkt %{queues}
741
+ drains_all: Verwerkt alle queues
742
+ failed_rate: "%{rate} mislukt/s"
743
+ handled: "%{number} afgehandeld"
744
+ maintenance: Voert elke %{interval} onderhoud uit (geplande jobs, dode processen, archieven)
745
+ outbox: Publiceert outbox-items
746
+ rate: "%{rate} jobs/s"
747
+ schedule:
748
+ one: Voert %{count} terugkerende taak uit, controleert elke %{interval}
749
+ other: Voert %{count} terugkerende taken uit, controleert elke %{interval}
750
+ slots:
751
+ one: "%{count} slot"
752
+ other: "%{count} slots"
753
+ supervises: Bewaakt %{children}
754
+ supervises_none: Bewaakt geen processen op deze host
755
+ threads:
756
+ one: "%{count} thread"
757
+ other: "%{count} threads"
758
+ kinds:
759
+ consumer:
760
+ one: "%{count} consumer"
761
+ other: "%{count} consumers"
762
+ dispatcher:
763
+ one: dispatcher
764
+ other: "%{count} dispatchers"
765
+ outbox_poller:
766
+ one: outbox-poller
767
+ other: "%{count} outbox-pollers"
768
+ scheduler:
769
+ one: scheduler
770
+ other: "%{count} schedulers"
771
+ worker:
772
+ one: "%{count} worker"
773
+ other: "%{count} workers"
774
+ next:
775
+ stale_reaped: waarschijnlijk dood; verwijderd bij de volgende ronde van de dispatcher (binnen %{within})
776
+ stale_unreaped: waarschijnlijk dood; geen levende dispatcher om het te verwijderen
777
+ stalled_maintenance: geplande jobs, opruimen van dode processen en archiefcompactie lopen niet door
778
+ stalled_schedule: terugkerende taken worden niet in de queue gezet
779
+ stalled_standalone: geen supervisor om het te herstarten
780
+ stalled_supervised: de watchdog van de supervisor herstart het
781
+ reasons:
782
+ healthy_detection_off_html: Hartslag %{ago} (limiet %{limit}) · vastloopdetectie uit
783
+ healthy_heartbeat_html: Hartslag %{ago} (limiet %{limit})
784
+ healthy_loop_html: Lus tikte %{ago} (limiet %{limit})
785
+ stale_html: Geen hartslag sinds %{age} (limiet %{limit})
786
+ stalled_html: Lus tikte laatst %{ago} (limiet %{limit})
787
+ recycle:
788
+ jobs: "%{done} / %{limit} jobs"
789
+ lifetime: actief %{uptime} / %{limit}
790
+ memory: "%{used} / %{limit} MB"
508
791
  queues:
509
792
  destroy:
510
793
  success: Wachtrij %{name} verwijderd.
@@ -517,59 +800,70 @@ nl:
517
800
  headers:
518
801
  actions: Acties
519
802
  depth: Diepte
520
- newest: Nieuwste (s)
521
- oldest_claimable: Oudste beschikbaar (s)
803
+ newest: Nieuwste
804
+ oldest_claimable: Oudste beschikbaar
522
805
  parked: Geparkeerd
523
806
  queue: Wachtrij
524
807
  total_ever: Totaal ooit
525
808
  visible: Zichtbaar
526
809
  pause: Pauzeren
527
810
  pause_confirm: Verwerking pauzeren voor %{name}?
528
- paused: Gepauzeerd
529
811
  purge: Opschonen
530
812
  purge_confirm: Alle berichten verwijderen uit %{name}?
531
813
  resume: Hervatten
532
814
  show:
533
- arguments: Argumenten
534
815
  back: Terug naar wachtrijen
535
816
  delete_confirm: Deze wachtrij permanent verwijderen? Dit kan niet ongedaan worden gemaakt.
536
817
  delete_queue: Wachtrij verwijderen
537
- depth: 'Diepte:'
538
- discard: Verwerpen
539
- discard_confirm: Dit bericht verwerpen?
540
- empty: Wachtrij is leeg
541
- full_json_payload: Volledige JSON payload
542
- headers:
543
- enqueued: In de wachtrij geplaatst
544
- id: ID
545
- job_class: Taakklasse
546
- reads: Lezingen
547
- vt: VT
548
- headers_section: Headers
549
- job_id: 'Taak ID:'
818
+ dlq_link: Opnieuw proberen of verwijderen op de Dead Letter-pagina
819
+ dlq_pointer:
820
+ one: Dead-letterwachtrij voor %{logical} — %{count} bericht.
821
+ other: Dead-letterwachtrij voor %{logical} — %{count} berichten.
550
822
  message_discard_failed: Kon bericht niet verwerpen.
551
823
  message_discarded: Bericht verworpen.
552
824
  message_retried: Zichtbaarheid van bericht gereset.
553
825
  message_retry_failed: Kon bericht niet opnieuw proberen.
554
- metadata: Metadata
555
- metadata_labels:
556
- last_read: 'Laatst gelezen:'
557
- locale: 'Locale:'
558
- priority: 'Prioriteit:'
559
- queue: 'Wachtrij:'
560
- scheduled: 'Gepland:'
561
- timezone: 'Tijdzone:'
562
- visible_at: 'Zichtbaar op:'
563
- oldest: 'Oudste:'
564
- oldest_claimable: 'Oudste beschikbaar:'
565
- parked: 'Geparkeerd:'
826
+ metrics:
827
+ claimable: Nu op te pakken
828
+ depth: Diepte
829
+ oldest: Oudste
830
+ oldest_claimable: Oudste op te pakken
831
+ parked: Geparkeerd
832
+ total: Totaal ooit
833
+ other_levels: 'Andere prioriteitsniveaus:'
566
834
  pause: Pauzeren
567
835
  pause_confirm: Verwerking pauzeren?
568
836
  purge_confirm: Alle berichten verwijderen?
569
837
  purge_queue: Wachtrij opschonen
570
838
  resume: Hervatten
571
- retry: Opnieuw proberen
572
- retry_confirm: Zichtbaarheidstimeout resetten en opnieuw proberen?
839
+ summary:
840
+ backlog_html: "%{visible} nu op te pakken, oudste wacht al %{age} · %{parked} geparkeerd (gepland of opnieuw proberen)"
841
+ backlog_parked_only_html: Niets nu op te pakken · %{parked} geparkeerd (gepland of opnieuw proberen)
842
+ dlq_html: 'Dead-letterwachtrij voor %{logical}: jobs komen hier na %{max} mislukte pogingen'
843
+ drained_by_html:
844
+ one: Leeggemaakt door %{capsules} (%{count} gezonde worker)
845
+ other: Leeggemaakt door %{capsules} (%{count} gezonde workers)
846
+ drained_live_html:
847
+ one: Leeggemaakt door %{count} gezonde worker die naar deze wachtrij luistert
848
+ other: Leeggemaakt door %{count} gezonde workers die naar deze wachtrij luisteren
849
+ drained_wildcard_html:
850
+ one: Leeggemaakt door een wildcard-workercapsule (%{count} gezonde worker)
851
+ other: Leeggemaakt door een wildcard-workercapsule (%{count} gezonde workers)
852
+ empty_html: Niets in de wacht
853
+ handler_html: Event-handlerwachtrij — leeggemaakt door consumers (%{count} gezond)
854
+ no_consumers_html:
855
+ one: Event-handlerwachtrij zonder gezonde consumer — %{count} event wacht
856
+ other: Event-handlerwachtrij zonder gezonde consumer — %{count} events wachten
857
+ no_workers_html:
858
+ one: Geen gezonde worker actief — %{count} job is op te pakken maar niemand pakt hem op
859
+ other: Geen gezonde worker actief — %{count} jobs zijn op te pakken maar niemand pakt ze op
860
+ not_drained_html: Geen workercapsule maakt deze wachtrij leeg — jobs wachten tot er een is geconfigureerd
861
+ paused_circuit_breaker_html: 'Automatisch gepauzeerd %{ago} na %{failures} opeenvolgende fouten — hervat %{time} (activering #%{trip})'
862
+ paused_operator_html: Gepauzeerd %{ago} — %{reason}
863
+ paused_operator_no_reason_html: Gepauzeerd %{ago} door een operator
864
+ priority_level_html: Prioriteitsniveau %{level} van %{logical}
865
+ stream_html: Streamwachtrij — bezorgd via peek, niet leeggemaakt door workers
866
+ summary_label: Wachtrijoverzicht
573
867
  table_health:
574
868
  headers:
575
869
  bloat: Bloat
@@ -579,8 +873,6 @@ nl:
579
873
  table: Tabel
580
874
  oldest_txn: 'Oudste open transactie:'
581
875
  title: Tabelgezondheid
582
- total: 'Totaal:'
583
- visible: 'Zichtbaar:'
584
876
  recurring_tasks:
585
877
  index:
586
878
  task_count: