rails_error_dashboard 0.14.4 → 0.16.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 +19 -8
- data/app/controllers/rails_error_dashboard/application_controller.rb +28 -4
- data/app/controllers/rails_error_dashboard/errors_controller.rb +97 -4
- data/app/controllers/rails_error_dashboard/health_controller.rb +38 -0
- data/app/controllers/rails_error_dashboard/webhooks_controller.rb +10 -9
- data/app/helpers/rails_error_dashboard/application_helper.rb +2 -2
- data/app/helpers/rails_error_dashboard/backtrace_helper.rb +63 -16
- data/app/helpers/rails_error_dashboard/overview_helper.rb +4 -0
- data/app/jobs/rails_error_dashboard/baseline_alert_job.rb +20 -2
- data/app/jobs/rails_error_dashboard/cascade_detection_job.rb +30 -0
- data/app/jobs/rails_error_dashboard/concerns/plain_channel_message.rb +33 -6
- data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +31 -0
- data/app/jobs/rails_error_dashboard/scheduled_digest_job.rb +6 -1
- data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +1 -1
- data/app/jobs/rails_error_dashboard/telegram_error_notification_job.rb +25 -0
- data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +2 -18
- data/app/models/rails_error_dashboard/error_log.rb +54 -20
- data/app/models/rails_error_dashboard/error_occurrence.rb +1 -0
- data/app/models/rails_error_dashboard/error_occurrence_context.rb +14 -0
- data/app/models/rails_error_dashboard/missing_translation.rb +43 -0
- data/app/views/layouts/rails_error_dashboard.html.erb +14 -2
- data/app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb +45 -0
- data/app/views/rails_error_dashboard/errors/_error_info.html.erb +12 -3
- data/app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb +12 -0
- data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +3 -1
- data/app/views/rails_error_dashboard/errors/_source_code.html.erb +3 -9
- data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +28 -0
- data/app/views/rails_error_dashboard/errors/boot_errors.html.erb +130 -0
- data/app/views/rails_error_dashboard/errors/index.html.erb +1 -1
- data/app/views/rails_error_dashboard/errors/missing_translations.html.erb +143 -0
- data/app/views/rails_error_dashboard/errors/overview.html.erb +10 -7
- data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +16 -11
- data/app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb +7 -4
- data/app/views/rails_error_dashboard/errors/settings.html.erb +23 -8
- data/app/views/rails_error_dashboard/errors/show.html.erb +7 -4
- data/config/locales/de.yml +87 -5
- data/config/locales/en.yml +99 -4
- data/config/locales/es.yml +88 -5
- data/config/locales/fr.yml +88 -5
- data/config/locales/it.yml +88 -5
- data/config/locales/ja.yml +86 -4
- data/config/locales/pl.yml +89 -5
- data/config/locales/pt-BR.yml +88 -5
- data/config/locales/ru.yml +89 -5
- data/config/locales/uk.yml +89 -5
- data/config/locales/zh-CN.yml +86 -4
- data/config/routes.rb +6 -0
- data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +10 -2
- data/db/migrate/20260106094256_backfill_application_for_existing_errors.rb +3 -3
- data/db/migrate/20261010000001_create_missing_translations.rb +50 -0
- data/db/migrate/20261015000001_create_rails_error_dashboard_error_occurrence_contexts.rb +35 -0
- data/db/migrate/20261015000002_add_capture_source_to_error_occurrences_and_error_logs.rb +46 -0
- data/lib/generators/rails_error_dashboard/install/install_generator.rb +9 -4
- data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +41 -5
- data/lib/rails_error_dashboard/commands/assign_error.rb +24 -1
- data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +11 -2
- data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +16 -3
- data/lib/rails_error_dashboard/commands/batch_unmute_errors.rb +7 -2
- data/lib/rails_error_dashboard/commands/find_or_increment_error.rb +6 -0
- data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +101 -0
- data/lib/rails_error_dashboard/commands/flush_rack_attack_events.rb +2 -4
- data/lib/rails_error_dashboard/commands/flush_storm_counts.rb +7 -6
- data/lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb +2 -4
- data/lib/rails_error_dashboard/commands/log_error.rb +20 -8
- data/lib/rails_error_dashboard/commands/record_occurrence_context.rb +60 -0
- data/lib/rails_error_dashboard/commands/resolve_error.rb +2 -15
- data/lib/rails_error_dashboard/commands/update_error_status.rb +7 -0
- data/lib/rails_error_dashboard/configuration.rb +61 -4
- data/lib/rails_error_dashboard/engine.rb +42 -1
- data/lib/rails_error_dashboard/error_reporter.rb +4 -2
- data/lib/rails_error_dashboard/manual_error_reporter.rb +11 -1
- data/lib/rails_error_dashboard/middleware/error_catcher.rb +18 -4
- data/lib/rails_error_dashboard/middleware/rate_limiter.rb +7 -1
- data/lib/rails_error_dashboard/plugin.rb +19 -3
- data/lib/rails_error_dashboard/plugin_registry.rb +61 -12
- data/lib/rails_error_dashboard/queries/analytics_stats.rb +0 -12
- data/lib/rails_error_dashboard/queries/boot_errors.rb +76 -0
- data/lib/rails_error_dashboard/queries/co_occurring_errors.rb +59 -33
- data/lib/rails_error_dashboard/queries/dashboard_stats.rb +3 -11
- data/lib/rails_error_dashboard/queries/errors_list.rb +8 -16
- data/lib/rails_error_dashboard/queries/health_status.rb +191 -0
- data/lib/rails_error_dashboard/queries/missing_translation_summary.rb +82 -0
- data/lib/rails_error_dashboard/queries/platform_comparison.rb +14 -6
- data/lib/rails_error_dashboard/services/active_storage_probe.rb +91 -0
- data/lib/rails_error_dashboard/services/backtrace_parser.rb +13 -7
- data/lib/rails_error_dashboard/services/backtrace_processor.rb +31 -7
- data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +30 -0
- data/lib/rails_error_dashboard/services/crash_capture.rb +90 -2
- data/lib/rails_error_dashboard/services/digest_builder.rb +9 -6
- data/lib/rails_error_dashboard/services/error_notification_dispatcher.rb +6 -0
- data/lib/rails_error_dashboard/services/github_link_generator.rb +25 -14
- data/lib/rails_error_dashboard/services/markdown_error_formatter.rb +15 -16
- data/lib/rails_error_dashboard/services/missing_translation_handler.rb +152 -0
- data/lib/rails_error_dashboard/services/missing_translation_tracker.rb +316 -0
- data/lib/rails_error_dashboard/services/repository_url.rb +18 -0
- data/lib/rails_error_dashboard/services/resolution_callbacks.rb +44 -0
- data/lib/rails_error_dashboard/services/severity_classifier.rb +52 -0
- data/lib/rails_error_dashboard/services/similarity_calculator.rb +3 -9
- data/lib/rails_error_dashboard/services/source_code_reader.rb +23 -3
- data/lib/rails_error_dashboard/services/storm_protection/count_buffer.rb +6 -3
- data/lib/rails_error_dashboard/services/storm_protection/gate.rb +6 -1
- data/lib/rails_error_dashboard/services/telegram_delivery.rb +134 -0
- data/lib/rails_error_dashboard/services/telegram_payload_builder.rb +105 -0
- data/lib/rails_error_dashboard/services/webhook_delivery.rb +63 -0
- data/lib/rails_error_dashboard/services/webhook_signer.rb +80 -0
- data/lib/rails_error_dashboard/value_objects/occurrence_snapshot.rb +23 -0
- data/lib/rails_error_dashboard/version.rb +1 -1
- data/lib/rails_error_dashboard.rb +28 -0
- data/lib/tasks/error_dashboard.rake +2 -3
- metadata +29 -2
data/config/locales/de.yml
CHANGED
|
@@ -36,6 +36,8 @@ de:
|
|
|
36
36
|
healthy: "✅ Fehlerfrei"
|
|
37
37
|
warning: "⚠️ Warnung"
|
|
38
38
|
critical: "\U0001F534 Kritisch"
|
|
39
|
+
not_rated: "Nicht bewertet"
|
|
40
|
+
not_rated_hint: "Eine Bewertung vergleicht Plattformen und braucht daher Fehler auf mindestens zwei."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Mobil
|
|
41
43
|
tablet: Tablet
|
|
@@ -60,6 +62,8 @@ de:
|
|
|
60
62
|
llm: LLM
|
|
61
63
|
n_plus_one: N+1-Abfragen
|
|
62
64
|
deprecations: Deprecations
|
|
65
|
+
missing_translations: "Übersetzungen"
|
|
66
|
+
boot_errors: "Startfehler"
|
|
63
67
|
swallowed: Verschluckt
|
|
64
68
|
diagnostic_dumps: Diagnose
|
|
65
69
|
storms: Fehlerstürme
|
|
@@ -240,6 +244,10 @@ de:
|
|
|
240
244
|
inactive_body: aktivieren, um ausgeführte Zeilen zu sehen
|
|
241
245
|
enable: Aktivieren
|
|
242
246
|
disable: Deaktivieren
|
|
247
|
+
occurrence:
|
|
248
|
+
title: "Vorkommen #%{id}"
|
|
249
|
+
body: "Breadcrumbs, Systemzustand und Variablen stammen aus diesem Vorkommen. Alles andere zeigt die neueste Erfassung."
|
|
250
|
+
show_latest: "Neueste anzeigen"
|
|
243
251
|
baselines:
|
|
244
252
|
title: Referenzstatistiken
|
|
245
253
|
anomaly_label: 'Anomalie:'
|
|
@@ -495,6 +503,14 @@ de:
|
|
|
495
503
|
one: "+%{count} weiterer"
|
|
496
504
|
other: "+%{count} weitere"
|
|
497
505
|
view_errors: Fehler ansehen
|
|
506
|
+
captured_occurrences:
|
|
507
|
+
title: "Erfasste Vorkommen"
|
|
508
|
+
hint: "Breadcrumbs, Systemzustand und Variablen werden für die neuesten Vorkommen aufbewahrt (occurrence_context_limit). Öffnen Sie eines, um sie zu sehen."
|
|
509
|
+
column_occurrence: "Vorkommen"
|
|
510
|
+
column_occurred_at: "Aufgetreten"
|
|
511
|
+
column_version: "Version"
|
|
512
|
+
view: "Anzeigen"
|
|
513
|
+
viewing: "Angezeigt"
|
|
498
514
|
co_occurring:
|
|
499
515
|
title: Gemeinsam auftretende Fehler
|
|
500
516
|
badge: Zeitliche Muster
|
|
@@ -739,6 +755,7 @@ de:
|
|
|
739
755
|
other: "%{count} Frames"
|
|
740
756
|
click_to_expand: "(zum Aufklappen klicken)"
|
|
741
757
|
view_source: Quellcode ansehen
|
|
758
|
+
client_report_note: "Diese Frames stammen aus einem Client-Bericht (ManualErrorReporter). Sie beschreiben Code, der auf dem Client lief, daher öffnet RED für sie keine Quelldatei, zeigt keinen Ausschnitt und führt kein git blame aus."
|
|
742
759
|
none: Kein Backtrace verfügbar
|
|
743
760
|
row:
|
|
744
761
|
new_badge: NEU
|
|
@@ -828,6 +845,53 @@ de:
|
|
|
828
845
|
gelangt sind
|
|
829
846
|
footer_tip: Verschluckte Exceptions werden ausgelöst und dann still abgefangen.
|
|
830
847
|
Sie können echte Fehler verbergen.
|
|
848
|
+
missing_translations_page:
|
|
849
|
+
title: "Fehlende Übersetzungen"
|
|
850
|
+
empty_title: "Keine fehlenden Übersetzungen erfasst"
|
|
851
|
+
empty_body: "In den letzten %{days} Tagen wurden keine fehlenden Übersetzungsschlüssel erfasst."
|
|
852
|
+
how_title: "So werden fehlende Übersetzungen erfasst:"
|
|
853
|
+
how_enabled_html: "Die Erfassung muss aktiviert sein (%{option})"
|
|
854
|
+
how_hooked: "RED umhüllt I18n.exception_handler und reicht an den Handler weiter, den Ihre App bereits hatte; sonst ändert sich nichts an Ihrer I18n-Konfiguration"
|
|
855
|
+
how_recorded: "Jede Abfrage, die beim Handler landet – über I18n.t ebenso wie über den View-Helper t() – wird nach Locale und Schlüssel gezählt, zusammen mit der zuerst gesehenen Aufrufstelle"
|
|
856
|
+
how_not_seen: "Eine Abfrage mit :default schlägt nie fehl, und eine mit raise_on_missing_translations löst eine Ausnahme aus, bevor ein Handler läuft; beide werden hier nicht gezählt"
|
|
857
|
+
how_buffered: "Fehlschläge werden im Speicher gezählt und am Ende der Anfrage oder des Jobs geschrieben; rechnen Sie mit einer kurzen Verzögerung, bis sie erscheinen"
|
|
858
|
+
missing_keys: "Fehlende Schlüssel"
|
|
859
|
+
total_misses: "Fehlschläge gesamt"
|
|
860
|
+
locales_affected: "Betroffene Locales"
|
|
861
|
+
all_title: "Fehlende Übersetzungsschlüssel"
|
|
862
|
+
column_key: "Schlüssel"
|
|
863
|
+
column_locale: "Locale"
|
|
864
|
+
column_source: "Zuerst gesehen in"
|
|
865
|
+
column_misses: "Fehlschläge"
|
|
866
|
+
column_first_seen: "Zuerst gesehen"
|
|
867
|
+
overflow_notice: "%{count} Fehlschläge konnten keinem Schlüssel zugeordnet werden, weil der Puffer des Trackers (%{limit} Schlüssel pro Thread) voll war."
|
|
868
|
+
footer_tip: "Fügen Sie den Schlüssel der Locale-Datei hinzu oder übergeben Sie ein :default. Schlüssel, auf die Nutzer tatsächlich gestoßen sind, stehen zuerst."
|
|
869
|
+
docs: "Rails-i18n-Leitfaden"
|
|
870
|
+
|
|
871
|
+
boot_errors_page:
|
|
872
|
+
title: "Startfehler"
|
|
873
|
+
empty_title: "Keine Startfehler erfasst"
|
|
874
|
+
empty_body: "In den letzten %{days} Tagen ist kein Prozess beim Starten abgestürzt."
|
|
875
|
+
how_title: "So werden Startfehler erfasst:"
|
|
876
|
+
how_enabled_html: "Die Absturzerfassung muss aktiviert sein (%{option})"
|
|
877
|
+
how_hooked: "RED registriert seinen at_exit-Hook direkt nach Ihren Initializern und vor dem Eager Loading von Rails, sodass ein Absturz beim Start erfasst wird, obwohl die App nie fertig gestartet ist"
|
|
878
|
+
how_captured_html: "%{zeitwerk} aus einer Datei, die die falsche Konstante definiert, ein %{syntax} in einem Model, ein Initializer, der eine Ausnahme auslöst: alles, was den Prozess beendet, bevor er eine Anfrage bedient"
|
|
879
|
+
how_imported: "Der Absturz wird auf die Festplatte geschrieben, weil es noch keine Datenbank gibt, und beim nächsten erfolgreichen Start importiert"
|
|
880
|
+
how_never: "Ein per SIGKILL beendeter oder abgestürzter (Segfault) Prozess wird von at_exit nie gesehen, in keinem Werkzeug"
|
|
881
|
+
unresolved: "Ungelöst"
|
|
882
|
+
boot_crashes: "Startabstürze"
|
|
883
|
+
failed_boots: "Fehlgeschlagene Starts"
|
|
884
|
+
all_title: "Startabstürze nach Fehler"
|
|
885
|
+
column_error: "Fehler"
|
|
886
|
+
column_file: "Datei"
|
|
887
|
+
column_constant: "Konstante"
|
|
888
|
+
column_boots: "Starts"
|
|
889
|
+
column_first_seen: "Zuerst gesehen"
|
|
890
|
+
column_status: "Status"
|
|
891
|
+
status_open: "Offen"
|
|
892
|
+
status_resolved: "Gelöst"
|
|
893
|
+
footer_tip: "Ein Startabsturz bedeutet, dass der Prozess nie eine Anfrage bedient hat. Beheben Sie ihn vor dem nächsten Deploy; die Zeile wird wie jeder andere Fehler gelöst."
|
|
894
|
+
|
|
831
895
|
rack_attack_page:
|
|
832
896
|
title: Rate-Limit-Ereignisse
|
|
833
897
|
missing_title: Rack Attack ist nicht installiert
|
|
@@ -1052,6 +1116,9 @@ de:
|
|
|
1052
1116
|
events:
|
|
1053
1117
|
one: "%{count} Ereignis"
|
|
1054
1118
|
other: "%{count} Ereignisse"
|
|
1119
|
+
occurrences:
|
|
1120
|
+
one: "%{count} Vorkommen"
|
|
1121
|
+
other: "%{count} Vorkommen"
|
|
1055
1122
|
queries:
|
|
1056
1123
|
one: "%{count} Abfrage"
|
|
1057
1124
|
other: "%{count} Abfragen"
|
|
@@ -1087,7 +1154,7 @@ de:
|
|
|
1087
1154
|
unable_to_detect: Erkennung nicht möglich
|
|
1088
1155
|
no_user_model: Kein User-Modell erkannt
|
|
1089
1156
|
unable_to_query_count: Anzahl konnte nicht abgefragt werden
|
|
1090
|
-
|
|
1157
|
+
retention_enforced_by_job: "Wird vom RetentionCleanupJob gelöscht, sobald Ihr Scheduler ihn ausführt"
|
|
1091
1158
|
keep_forever: Dauerhaft behalten
|
|
1092
1159
|
no_automatic_deletion: Keine automatische Löschung
|
|
1093
1160
|
run_command: 'Ausführen:'
|
|
@@ -1095,8 +1162,8 @@ de:
|
|
|
1095
1162
|
options:
|
|
1096
1163
|
enable_middleware: Fängt unbehandelte Exceptions ab
|
|
1097
1164
|
enable_error_subscriber: Abonniert Rails-Fehlerereignisse
|
|
1098
|
-
retention_days:
|
|
1099
|
-
|
|
1165
|
+
retention_days: "Fehler löschen, die so viele Tage nicht mehr aufgetreten sind. Durchgesetzt vom RetentionCleanupJob, den das Gem selbst nicht einplant"
|
|
1166
|
+
occurrence_context_limit: "Für wie viele der neuesten Vorkommen je Fehler Breadcrumbs, Systemzustand und Variablen aufbewahrt werden (0 = aus)"
|
|
1100
1167
|
max_backtrace_lines: Maximale Backtrace-Tiefe
|
|
1101
1168
|
sampling_rate: Anteil der erfassten Fehler
|
|
1102
1169
|
application_name: Name dieser Anwendung (wird automatisch erkannt, wenn nicht
|
|
@@ -1115,7 +1182,7 @@ de:
|
|
|
1115
1182
|
erkannt, wenn nicht gesetzt)
|
|
1116
1183
|
async_logging: Verarbeitung über Hintergrund-Jobs
|
|
1117
1184
|
async_adapter: Adapter für die Job-Warteschlange
|
|
1118
|
-
enable_rate_limiting:
|
|
1185
|
+
enable_rate_limiting: "Dashboard-Anfragen pro IP und Pfad drosseln"
|
|
1119
1186
|
rate_limit_per_minute: Anfragen pro Minute und IP
|
|
1120
1187
|
enable_slack_notifications: Echtzeit-Benachrichtigungen
|
|
1121
1188
|
slack_webhook_url: Slack-Webhook-Endpunkt
|
|
@@ -1124,10 +1191,15 @@ de:
|
|
|
1124
1191
|
notification_email_from: Absenderadresse
|
|
1125
1192
|
enable_discord_notifications: Discord-Webhook-Benachrichtigungen
|
|
1126
1193
|
discord_webhook_url: Discord-Webhook-Endpunkt
|
|
1194
|
+
enable_telegram_notifications: "Telegram-Benachrichtigungen über die Bot-API"
|
|
1195
|
+
telegram_bot_token: "Bot-Token von @BotFather (Umgebungsvariable TELEGRAM_BOT_TOKEN setzen)"
|
|
1196
|
+
telegram_chat_id: "Chat, Gruppe oder Kanal, in den der Bot schreibt"
|
|
1197
|
+
telegram_api_base_url: "Bot-API-Server (nur für einen Proxy oder selbst gehosteten Server ändern)"
|
|
1127
1198
|
enable_pagerduty_notifications: Eskalation bei kritischen Fehlern
|
|
1128
1199
|
pagerduty_integration_key: PagerDuty-API-Schlüssel
|
|
1129
1200
|
enable_webhook_notifications: Allgemeine Webhook-Endpunkte
|
|
1130
1201
|
webhook_urls: Eigene Webhook-Endpunkte
|
|
1202
|
+
webhook_signing_secret: Signiert ausgehende Webhooks mit HMAC-SHA256 (Umgebungsvariable WEBHOOK_SIGNING_SECRET setzen)
|
|
1131
1203
|
enable_scheduled_digests: Tägliche/wöchentliche Zusammenfassungs-E-Mails.
|
|
1132
1204
|
Planung über SolidQueue, Sidekiq oder cron
|
|
1133
1205
|
digest_frequency: Wie oft Zusammenfassungs-E-Mails gesendet werden
|
|
@@ -1148,7 +1220,7 @@ de:
|
|
|
1148
1220
|
source_code_context_lines: Zeilen vor und nach der Zielzeile
|
|
1149
1221
|
enable_git_blame: git-blame-Informationen anzeigen
|
|
1150
1222
|
source_code_cache_ttl: Cache-Dauer für den Quellcode
|
|
1151
|
-
only_show_app_code_source:
|
|
1223
|
+
only_show_app_code_source: "Gem- und Vendor-Code im Quelltext-Viewer ausblenden"
|
|
1152
1224
|
git_branch_strategy: Strategie zur Branch-Auflösung
|
|
1153
1225
|
enable_breadcrumbs: Aktivitätsverlauf der Anfrage erfassen
|
|
1154
1226
|
breadcrumb_buffer_size: Maximale Anzahl Breadcrumbs pro Anfrage
|
|
@@ -1180,6 +1252,7 @@ de:
|
|
|
1180
1252
|
enable_crash_capture: at_exit-Hook für unbehandelte Abstürze
|
|
1181
1253
|
enable_coverage_tracking: Diagnosemodus — über das Dashboard aktivieren, um
|
|
1182
1254
|
ausgeführte Zeilen in der Quellcodeansicht zu sehen (Ruby 3.2+)
|
|
1255
|
+
enable_missing_translation_tracking: "Zählt die I18n-Fehlschläge der App nach Locale und Schlüssel (umhüllt I18n.exception_handler)"
|
|
1183
1256
|
enable_rack_attack_tracking: Throttle- und Blocklist-Ereignisse in einer eigenen
|
|
1184
1257
|
Tabelle erfassen
|
|
1185
1258
|
enable_actioncable_tracking: WebSocket-Kanalereignisse als Breadcrumbs erfassen
|
|
@@ -1235,6 +1308,8 @@ de:
|
|
|
1235
1308
|
breadcrumbs: Breadcrumbs
|
|
1236
1309
|
system_health: Systemzustand
|
|
1237
1310
|
swallowed_exceptions: Erkennung verschluckter Exceptions
|
|
1311
|
+
missing_translations: "Erfassung fehlender Übersetzungen"
|
|
1312
|
+
boot_errors: "Erfassung von Startfehlern"
|
|
1238
1313
|
rack_attack: Rack-Attack-Erfassung
|
|
1239
1314
|
actioncable: ActionCable-Erfassung
|
|
1240
1315
|
activestorage: ActiveStorage-Erfassung
|
|
@@ -1640,6 +1715,13 @@ de:
|
|
|
1640
1715
|
guide_link: ActionCable-Leitfaden
|
|
1641
1716
|
activestorage:
|
|
1642
1717
|
title: ActiveStorage-Zustand
|
|
1718
|
+
probe:
|
|
1719
|
+
title: "Erreichbarkeit des Dienstes"
|
|
1720
|
+
reachable: "Erreichbar"
|
|
1721
|
+
unreachable: "Nicht erreichbar"
|
|
1722
|
+
service: "Dienst: %{name}"
|
|
1723
|
+
latency: "%{ms} ms Umlaufzeit"
|
|
1724
|
+
how: "Eine Existenzprüfung für einen Schlüssel, der nie gespeichert wird, beim Laden dieser Seite. GET /health führt dieselbe Prüfung aus."
|
|
1643
1725
|
empty:
|
|
1644
1726
|
title: Keine ActiveStorage-Ereignisse gefunden
|
|
1645
1727
|
message: In den Fehler-Breadcrumbs der letzten %{days} Tage wurden keine
|
data/config/locales/en.yml
CHANGED
|
@@ -82,6 +82,8 @@ en:
|
|
|
82
82
|
healthy: "✅ Healthy"
|
|
83
83
|
warning: "⚠️ Warning"
|
|
84
84
|
critical: "🔴 Critical"
|
|
85
|
+
not_rated: "Not rated"
|
|
86
|
+
not_rated_hint: "A rating compares platforms, so it needs errors on at least two."
|
|
85
87
|
|
|
86
88
|
# Device classes reported by the user-agent parser. Browser and OS names
|
|
87
89
|
# (Chrome, Safari, Windows, iOS) are brands and stay as written; these
|
|
@@ -116,6 +118,8 @@ en:
|
|
|
116
118
|
llm: "LLM"
|
|
117
119
|
n_plus_one: "N+1 Queries"
|
|
118
120
|
deprecations: "Deprecations"
|
|
121
|
+
missing_translations: "Translations"
|
|
122
|
+
boot_errors: "Boot Errors"
|
|
119
123
|
swallowed: "Swallowed"
|
|
120
124
|
diagnostic_dumps: "Diagnostics"
|
|
121
125
|
storms: "Storms"
|
|
@@ -377,6 +381,11 @@ en:
|
|
|
377
381
|
enable: "Enable"
|
|
378
382
|
disable: "Disable"
|
|
379
383
|
|
|
384
|
+
occurrence:
|
|
385
|
+
title: "Occurrence #%{id}"
|
|
386
|
+
body: "Breadcrumbs, system health and variables are from this occurrence. Everything else shows the latest capture."
|
|
387
|
+
show_latest: "Show latest"
|
|
388
|
+
|
|
380
389
|
baselines:
|
|
381
390
|
title: "Baseline Statistics"
|
|
382
391
|
# %{sigma} is a standard-deviation count, %{level} an anomaly level.
|
|
@@ -700,6 +709,15 @@ en:
|
|
|
700
709
|
other: "+%{count} more"
|
|
701
710
|
view_errors: "View Errors"
|
|
702
711
|
|
|
712
|
+
captured_occurrences:
|
|
713
|
+
title: "Captured occurrences"
|
|
714
|
+
hint: "Breadcrumbs, system health and variables are kept for the most recent occurrences (occurrence_context_limit). Open one to see them."
|
|
715
|
+
column_occurrence: "Occurrence"
|
|
716
|
+
column_occurred_at: "Occurred"
|
|
717
|
+
column_version: "Version"
|
|
718
|
+
view: "View"
|
|
719
|
+
viewing: "Viewing"
|
|
720
|
+
|
|
703
721
|
co_occurring:
|
|
704
722
|
title: "Co-occurring Errors"
|
|
705
723
|
badge: "Time Patterns"
|
|
@@ -1055,6 +1073,7 @@ en:
|
|
|
1055
1073
|
other: "%{count} frames"
|
|
1056
1074
|
click_to_expand: "(click to expand)"
|
|
1057
1075
|
view_source: "View Source"
|
|
1076
|
+
client_report_note: "These frames came from a client report (ManualErrorReporter). They describe code that ran on the client, so RED opens no source file, shows no snippet and runs no git blame for them."
|
|
1058
1077
|
none: "No backtrace available"
|
|
1059
1078
|
|
|
1060
1079
|
row:
|
|
@@ -1185,6 +1204,61 @@ en:
|
|
|
1185
1204
|
view_unrescued: "View any unrescued %{exception} errors that leaked into error_log"
|
|
1186
1205
|
footer_tip: "Swallowed exceptions are raised then silently rescued. They may hide real bugs."
|
|
1187
1206
|
|
|
1207
|
+
missing_translations_page:
|
|
1208
|
+
title: "Missing Translations"
|
|
1209
|
+
empty_title: "No Missing Translations Recorded"
|
|
1210
|
+
# %{days} is the selected day range.
|
|
1211
|
+
empty_body: "No missing translation keys were recorded over the last %{days} days."
|
|
1212
|
+
how_title: "How missing translations are tracked:"
|
|
1213
|
+
# %{option} is a config option name as a <code> element.
|
|
1214
|
+
how_enabled_html: "Tracking must be enabled (%{option})"
|
|
1215
|
+
# I18n.exception_handler, I18n.t, t(), :default and raise_on_missing_translations are Ruby/Rails API names, not prose.
|
|
1216
|
+
how_hooked: "RED wraps I18n.exception_handler and delegates to the handler your app already had; nothing else in your I18n configuration changes"
|
|
1217
|
+
how_recorded: "Every lookup that falls through to the handler — I18n.t and the t() view helper alike — is counted by locale and key, with the first call site seen"
|
|
1218
|
+
how_not_seen: "A lookup given a :default never misses, and one made with raise_on_missing_translations raises before any handler runs, so neither is counted here"
|
|
1219
|
+
how_buffered: "Misses are counted in memory and written at the end of the request or job, so allow a short delay before they appear"
|
|
1220
|
+
missing_keys: "Missing Keys"
|
|
1221
|
+
total_misses: "Total Misses"
|
|
1222
|
+
locales_affected: "Locales Affected"
|
|
1223
|
+
all_title: "Missing Translation Keys"
|
|
1224
|
+
column_key: "Key"
|
|
1225
|
+
column_locale: "Locale"
|
|
1226
|
+
column_source: "First Seen In"
|
|
1227
|
+
column_misses: "Misses"
|
|
1228
|
+
column_first_seen: "First Seen"
|
|
1229
|
+
# %{count} is a number of misses, %{limit} the per-thread buffer size.
|
|
1230
|
+
overflow_notice: "%{count} misses could not be attributed to a key because the tracker's buffer (%{limit} keys per thread) was full."
|
|
1231
|
+
footer_tip: "Add the key to the locale file, or pass a :default. Keys users actually hit are listed first."
|
|
1232
|
+
docs: "Rails i18n guide"
|
|
1233
|
+
|
|
1234
|
+
boot_errors_page:
|
|
1235
|
+
title: "Boot Errors"
|
|
1236
|
+
empty_title: "No Boot Errors Recorded"
|
|
1237
|
+
# %{days} is the selected day range.
|
|
1238
|
+
empty_body: "No process died while booting over the last %{days} days."
|
|
1239
|
+
how_title: "How boot errors are captured:"
|
|
1240
|
+
# %{option} is a config option name as a <code> element.
|
|
1241
|
+
how_enabled_html: "Crash capture must be enabled (%{option})"
|
|
1242
|
+
# at_exit, SIGKILL and segfault are Ruby/OS terms, not prose.
|
|
1243
|
+
how_hooked: "RED registers its at_exit hook right after your initializers run and before Rails eager-loads, so a crash during boot is seen even though the app never finished starting"
|
|
1244
|
+
# %{zeitwerk} and %{syntax} are exception class names as <code> elements.
|
|
1245
|
+
how_captured_html: "%{zeitwerk} from a file that defines the wrong constant, a %{syntax} in a model, an initializer that raised: anything that kills the process before it serves a request"
|
|
1246
|
+
how_imported: "The crash is written to disk, because there is no database yet, and imported on the next boot that succeeds"
|
|
1247
|
+
how_never: "A process killed by SIGKILL or a segfault is never seen by at_exit, in any tool"
|
|
1248
|
+
unresolved: "Unresolved"
|
|
1249
|
+
boot_crashes: "Boot Crashes"
|
|
1250
|
+
failed_boots: "Failed Boots"
|
|
1251
|
+
all_title: "Boot Crashes by Error"
|
|
1252
|
+
column_error: "Error"
|
|
1253
|
+
column_file: "File"
|
|
1254
|
+
column_constant: "Constant"
|
|
1255
|
+
column_boots: "Boots"
|
|
1256
|
+
column_first_seen: "First Seen"
|
|
1257
|
+
column_status: "Status"
|
|
1258
|
+
status_open: "Open"
|
|
1259
|
+
status_resolved: "Resolved"
|
|
1260
|
+
footer_tip: "A boot crash means the process never served a request. Fix it before the next deploy; the row resolves like any other error."
|
|
1261
|
+
|
|
1188
1262
|
rack_attack_page:
|
|
1189
1263
|
title: "Rate Limit Events"
|
|
1190
1264
|
missing_title: "Rack Attack Is Not Installed"
|
|
@@ -1475,6 +1549,9 @@ en:
|
|
|
1475
1549
|
events:
|
|
1476
1550
|
one: "%{count} event"
|
|
1477
1551
|
other: "%{count} events"
|
|
1552
|
+
occurrences:
|
|
1553
|
+
one: "%{count} occurrence"
|
|
1554
|
+
other: "%{count} occurrences"
|
|
1478
1555
|
queries:
|
|
1479
1556
|
one: "%{count} query"
|
|
1480
1557
|
other: "%{count} queries"
|
|
@@ -1523,7 +1600,7 @@ en:
|
|
|
1523
1600
|
unable_to_detect: "Unable to detect"
|
|
1524
1601
|
no_user_model: "No User model detected"
|
|
1525
1602
|
unable_to_query_count: "Unable to query count"
|
|
1526
|
-
|
|
1603
|
+
retention_enforced_by_job: "Deleted by RetentionCleanupJob once your scheduler runs it"
|
|
1527
1604
|
keep_forever: "Keep Forever"
|
|
1528
1605
|
no_automatic_deletion: "No automatic deletion"
|
|
1529
1606
|
# These label a rake command rendered beside them. The command is never
|
|
@@ -1538,7 +1615,8 @@ en:
|
|
|
1538
1615
|
options:
|
|
1539
1616
|
enable_middleware: "Catches unhandled exceptions"
|
|
1540
1617
|
enable_error_subscriber: "Subscribes to Rails error events"
|
|
1541
|
-
retention_days: "
|
|
1618
|
+
retention_days: "Delete errors not seen for this many days. Enforced by RetentionCleanupJob, which nothing in the gem schedules"
|
|
1619
|
+
occurrence_context_limit: "How many recent occurrences per error keep their breadcrumbs, system health and variables (0 = off)"
|
|
1542
1620
|
max_backtrace_lines: "Stack trace depth limit"
|
|
1543
1621
|
sampling_rate: "Percentage of errors captured"
|
|
1544
1622
|
application_name: "Name of this application (auto-detected if not set)"
|
|
@@ -1552,7 +1630,7 @@ en:
|
|
|
1552
1630
|
total_users_for_impact: "For impact % calculation (auto-detected if not set)"
|
|
1553
1631
|
async_logging: "Background job processing"
|
|
1554
1632
|
async_adapter: "Job queue adapter"
|
|
1555
|
-
enable_rate_limiting: "Throttle
|
|
1633
|
+
enable_rate_limiting: "Throttle dashboard requests per IP and path"
|
|
1556
1634
|
rate_limit_per_minute: "Requests per minute per IP"
|
|
1557
1635
|
enable_slack_notifications: "Real-time notifications"
|
|
1558
1636
|
slack_webhook_url: "Slack webhook endpoint"
|
|
@@ -1561,10 +1639,15 @@ en:
|
|
|
1561
1639
|
notification_email_from: "Sender address"
|
|
1562
1640
|
enable_discord_notifications: "Discord webhook notifications"
|
|
1563
1641
|
discord_webhook_url: "Discord webhook endpoint"
|
|
1642
|
+
enable_telegram_notifications: "Telegram Bot API notifications"
|
|
1643
|
+
telegram_bot_token: "Bot token from @BotFather (set TELEGRAM_BOT_TOKEN env var)"
|
|
1644
|
+
telegram_chat_id: "Chat, group or channel the bot posts to"
|
|
1645
|
+
telegram_api_base_url: "Bot API server (change only for a proxy or self-hosted server)"
|
|
1564
1646
|
enable_pagerduty_notifications: "Critical error escalation"
|
|
1565
1647
|
pagerduty_integration_key: "PagerDuty API key"
|
|
1566
1648
|
enable_webhook_notifications: "Generic webhook endpoints"
|
|
1567
1649
|
webhook_urls: "Custom webhook endpoints"
|
|
1650
|
+
webhook_signing_secret: "Signs outbound webhooks with HMAC-SHA256 (set WEBHOOK_SIGNING_SECRET env var)"
|
|
1568
1651
|
enable_scheduled_digests: "Daily/weekly summary emails. Schedule via SolidQueue, Sidekiq, or cron"
|
|
1569
1652
|
digest_frequency: "How often to send digest emails"
|
|
1570
1653
|
digest_recipients: "Email addresses (falls back to notification recipients)"
|
|
@@ -1582,7 +1665,7 @@ en:
|
|
|
1582
1665
|
source_code_context_lines: "Lines before/after target line"
|
|
1583
1666
|
enable_git_blame: "Show git blame info"
|
|
1584
1667
|
source_code_cache_ttl: "Source code cache duration"
|
|
1585
|
-
only_show_app_code_source: "Hide
|
|
1668
|
+
only_show_app_code_source: "Hide gem and vendored code in the source viewer"
|
|
1586
1669
|
git_branch_strategy: "Branch resolution strategy"
|
|
1587
1670
|
enable_breadcrumbs: "Capture request activity trail"
|
|
1588
1671
|
breadcrumb_buffer_size: "Max breadcrumbs per request"
|
|
@@ -1608,6 +1691,7 @@ en:
|
|
|
1608
1691
|
enable_diagnostic_dump: "On-demand system state snapshots"
|
|
1609
1692
|
enable_crash_capture: "at_exit hook for unhandled crashes"
|
|
1610
1693
|
enable_coverage_tracking: "Diagnostic mode — enable via dashboard to see executed lines in source view (Ruby 3.2+)"
|
|
1694
|
+
enable_missing_translation_tracking: "Count the app's I18n misses by locale and key (wraps I18n.exception_handler)"
|
|
1611
1695
|
enable_rack_attack_tracking: "Record throttle/blocklist events to their own table"
|
|
1612
1696
|
enable_actioncable_tracking: "Track WebSocket channel events as breadcrumbs"
|
|
1613
1697
|
enable_activestorage_tracking: "Track uploads/downloads/deletes as breadcrumbs"
|
|
@@ -1687,6 +1771,8 @@ en:
|
|
|
1687
1771
|
breadcrumbs: "Breadcrumbs"
|
|
1688
1772
|
system_health: "System health"
|
|
1689
1773
|
swallowed_exceptions: "Swallowed exception detection"
|
|
1774
|
+
missing_translations: "Missing-translation tracking"
|
|
1775
|
+
boot_errors: "Boot error capture"
|
|
1690
1776
|
rack_attack: "Rack Attack tracking"
|
|
1691
1777
|
actioncable: "ActionCable tracking"
|
|
1692
1778
|
activestorage: "ActiveStorage tracking"
|
|
@@ -2231,6 +2317,15 @@ en:
|
|
|
2231
2317
|
|
|
2232
2318
|
activestorage:
|
|
2233
2319
|
title: "ActiveStorage Health"
|
|
2320
|
+
probe:
|
|
2321
|
+
# Live reachability card. %{name} is the service name from
|
|
2322
|
+
# config/storage.yml and %{ms} a number of milliseconds.
|
|
2323
|
+
title: "Service reachability"
|
|
2324
|
+
reachable: "Reachable"
|
|
2325
|
+
unreachable: "Unreachable"
|
|
2326
|
+
service: "Service: %{name}"
|
|
2327
|
+
latency: "%{ms} ms round trip"
|
|
2328
|
+
how: "One existence check for a key that is never stored, made when this page loads. GET /health runs the same probe."
|
|
2234
2329
|
|
|
2235
2330
|
empty:
|
|
2236
2331
|
title: "No ActiveStorage Events Found"
|
data/config/locales/es.yml
CHANGED
|
@@ -36,6 +36,8 @@ es:
|
|
|
36
36
|
healthy: "✅ Correcto"
|
|
37
37
|
warning: "⚠️ Advertencia"
|
|
38
38
|
critical: "\U0001F534 Crítico"
|
|
39
|
+
not_rated: "Sin calificar"
|
|
40
|
+
not_rated_hint: "La calificación compara plataformas, así que necesita errores en al menos dos."
|
|
39
41
|
device_type:
|
|
40
42
|
mobile: Móvil
|
|
41
43
|
tablet: Tableta
|
|
@@ -60,6 +62,8 @@ es:
|
|
|
60
62
|
llm: LLM
|
|
61
63
|
n_plus_one: Consultas N+1
|
|
62
64
|
deprecations: Deprecations
|
|
65
|
+
missing_translations: "Traducciones"
|
|
66
|
+
boot_errors: "Errores de arranque"
|
|
63
67
|
swallowed: Silenciadas
|
|
64
68
|
diagnostic_dumps: Diagnóstico
|
|
65
69
|
storms: Tormentas
|
|
@@ -245,6 +249,10 @@ es:
|
|
|
245
249
|
inactive_body: actívela para ver las líneas ejecutadas
|
|
246
250
|
enable: Activar
|
|
247
251
|
disable: Desactivar
|
|
252
|
+
occurrence:
|
|
253
|
+
title: "Aparición #%{id}"
|
|
254
|
+
body: "Los breadcrumbs, el estado del sistema y las variables provienen de esta aparición. Todo lo demás muestra la captura más reciente."
|
|
255
|
+
show_latest: "Ver la más reciente"
|
|
248
256
|
baselines:
|
|
249
257
|
title: Estadísticas de referencia
|
|
250
258
|
anomaly_label: 'Anomalía:'
|
|
@@ -517,6 +525,14 @@ es:
|
|
|
517
525
|
other: "+%{count} más"
|
|
518
526
|
many: "+%{count} más"
|
|
519
527
|
view_errors: Ver los errores
|
|
528
|
+
captured_occurrences:
|
|
529
|
+
title: "Apariciones capturadas"
|
|
530
|
+
hint: "Los breadcrumbs, el estado del sistema y las variables se conservan para las apariciones más recientes (occurrence_context_limit). Abra una para verlos."
|
|
531
|
+
column_occurrence: "Aparición"
|
|
532
|
+
column_occurred_at: "Ocurrió"
|
|
533
|
+
column_version: "Versión"
|
|
534
|
+
view: "Ver"
|
|
535
|
+
viewing: "En pantalla"
|
|
520
536
|
co_occurring:
|
|
521
537
|
title: Errores concurrentes
|
|
522
538
|
badge: Patrones temporales
|
|
@@ -767,6 +783,7 @@ es:
|
|
|
767
783
|
many: "%{count} frames"
|
|
768
784
|
click_to_expand: "(haga clic para desplegar)"
|
|
769
785
|
view_source: Ver el código fuente
|
|
786
|
+
client_report_note: "Estos frames provienen de un informe de cliente (ManualErrorReporter). Describen código que se ejecutó en el cliente, así que RED no abre archivos fuente, no muestra fragmentos ni ejecuta git blame para ellos."
|
|
770
787
|
none: No hay backtrace disponible
|
|
771
788
|
row:
|
|
772
789
|
new_badge: NUEVO
|
|
@@ -858,6 +875,53 @@ es:
|
|
|
858
875
|
error_log
|
|
859
876
|
footer_tip: Las excepciones silenciadas se lanzan y luego se capturan sin
|
|
860
877
|
aviso. Pueden ocultar errores reales.
|
|
878
|
+
missing_translations_page:
|
|
879
|
+
title: "Traducciones faltantes"
|
|
880
|
+
empty_title: "No se registraron traducciones faltantes"
|
|
881
|
+
empty_body: "No se registraron claves de traducción faltantes en los últimos %{days} días."
|
|
882
|
+
how_title: "Cómo se registran las traducciones faltantes:"
|
|
883
|
+
how_enabled_html: "El seguimiento debe estar activado (%{option})"
|
|
884
|
+
how_hooked: "RED envuelve I18n.exception_handler y delega en el handler que su aplicación ya tenía; nada más cambia en su configuración de I18n"
|
|
885
|
+
how_recorded: "Cada búsqueda que llega al handler — tanto I18n.t como el helper de vista t() — se cuenta por locale y clave, junto con el primer punto de llamada visto"
|
|
886
|
+
how_not_seen: "Una búsqueda con :default nunca falla, y una hecha con raise_on_missing_translations lanza una excepción antes de que se ejecute cualquier handler, así que ninguna se cuenta aquí"
|
|
887
|
+
how_buffered: "Los fallos se cuentan en memoria y se escriben al final de la petición o del job, así que espere un breve retraso antes de que aparezcan"
|
|
888
|
+
missing_keys: "Claves faltantes"
|
|
889
|
+
total_misses: "Fallos totales"
|
|
890
|
+
locales_affected: "Locales afectados"
|
|
891
|
+
all_title: "Claves de traducción faltantes"
|
|
892
|
+
column_key: "Clave"
|
|
893
|
+
column_locale: "Locale"
|
|
894
|
+
column_source: "Visto primero en"
|
|
895
|
+
column_misses: "Fallos"
|
|
896
|
+
column_first_seen: "Visto por primera vez"
|
|
897
|
+
overflow_notice: "%{count} fallos no pudieron atribuirse a una clave porque el búfer del rastreador (%{limit} claves por hilo) estaba lleno."
|
|
898
|
+
footer_tip: "Añada la clave al archivo de locale o pase un :default. Las claves que los usuarios realmente encontraron aparecen primero."
|
|
899
|
+
docs: "Guía i18n de Rails"
|
|
900
|
+
|
|
901
|
+
boot_errors_page:
|
|
902
|
+
title: "Errores de arranque"
|
|
903
|
+
empty_title: "No se registraron errores de arranque"
|
|
904
|
+
empty_body: "Ningún proceso murió al arrancar en los últimos %{days} días."
|
|
905
|
+
how_title: "Cómo se capturan los errores de arranque:"
|
|
906
|
+
how_enabled_html: "La captura de fallos debe estar activada (%{option})"
|
|
907
|
+
how_hooked: "RED registra su hook at_exit justo después de sus initializers y antes del eager loading de Rails, así que un fallo durante el arranque se ve aunque la app nunca termine de arrancar"
|
|
908
|
+
how_captured_html: "Un %{zeitwerk} por un archivo que define la constante equivocada, un %{syntax} en un modelo, un initializer que lanza una excepción: cualquier cosa que mate el proceso antes de atender una petición"
|
|
909
|
+
how_imported: "El fallo se escribe en disco, porque aún no hay base de datos, y se importa en el siguiente arranque que tenga éxito"
|
|
910
|
+
how_never: "Un proceso terminado con SIGKILL o por un segfault nunca es visto por at_exit, en ninguna herramienta"
|
|
911
|
+
unresolved: "Sin resolver"
|
|
912
|
+
boot_crashes: "Fallos de arranque"
|
|
913
|
+
failed_boots: "Arranques fallidos"
|
|
914
|
+
all_title: "Fallos de arranque por error"
|
|
915
|
+
column_error: "Error"
|
|
916
|
+
column_file: "Archivo"
|
|
917
|
+
column_constant: "Constante"
|
|
918
|
+
column_boots: "Arranques"
|
|
919
|
+
column_first_seen: "Visto por primera vez"
|
|
920
|
+
column_status: "Estado"
|
|
921
|
+
status_open: "Abierto"
|
|
922
|
+
status_resolved: "Resuelto"
|
|
923
|
+
footer_tip: "Un fallo de arranque significa que el proceso nunca atendió una petición. Corríjalo antes del próximo despliegue; la fila se resuelve como cualquier otro error."
|
|
924
|
+
|
|
861
925
|
rack_attack_page:
|
|
862
926
|
title: Eventos de límite de tasa
|
|
863
927
|
missing_title: Rack Attack no está instalado
|
|
@@ -1089,6 +1153,10 @@ es:
|
|
|
1089
1153
|
one: "%{count} evento"
|
|
1090
1154
|
other: "%{count} eventos"
|
|
1091
1155
|
many: "%{count} eventos"
|
|
1156
|
+
occurrences:
|
|
1157
|
+
one: "%{count} aparición"
|
|
1158
|
+
other: "%{count} apariciones"
|
|
1159
|
+
many: "%{count} apariciones"
|
|
1092
1160
|
queries:
|
|
1093
1161
|
one: "%{count} consulta"
|
|
1094
1162
|
other: "%{count} consultas"
|
|
@@ -1129,7 +1197,7 @@ es:
|
|
|
1129
1197
|
unable_to_detect: No se pudo detectar
|
|
1130
1198
|
no_user_model: No se detectó ningún modelo User
|
|
1131
1199
|
unable_to_query_count: No se pudo consultar la cantidad
|
|
1132
|
-
|
|
1200
|
+
retention_enforced_by_job: "Eliminados por RetentionCleanupJob cuando su planificador lo ejecute"
|
|
1133
1201
|
keep_forever: Conservar indefinidamente
|
|
1134
1202
|
no_automatic_deletion: Sin eliminación automática
|
|
1135
1203
|
run_command: 'Ejecutar:'
|
|
@@ -1137,8 +1205,8 @@ es:
|
|
|
1137
1205
|
options:
|
|
1138
1206
|
enable_middleware: Captura las excepciones no gestionadas
|
|
1139
1207
|
enable_error_subscriber: Se suscribe a los eventos de error de Rails
|
|
1140
|
-
retention_days:
|
|
1141
|
-
|
|
1208
|
+
retention_days: "Eliminar errores no vistos durante estos días. Lo aplica RetentionCleanupJob, que la gema no programa por sí misma"
|
|
1209
|
+
occurrence_context_limit: "Cuántas apariciones recientes por error conservan sus breadcrumbs, estado del sistema y variables (0 = desactivado)"
|
|
1142
1210
|
max_backtrace_lines: Profundidad máxima del backtrace
|
|
1143
1211
|
sampling_rate: Porcentaje de errores capturados
|
|
1144
1212
|
application_name: Nombre de esta aplicación (se detecta automáticamente si
|
|
@@ -1157,7 +1225,7 @@ es:
|
|
|
1157
1225
|
si no se define)
|
|
1158
1226
|
async_logging: Procesamiento mediante jobs en segundo plano
|
|
1159
1227
|
async_adapter: Adaptador de la cola de jobs
|
|
1160
|
-
enable_rate_limiting: Limitar las solicitudes
|
|
1228
|
+
enable_rate_limiting: "Limitar las solicitudes del panel por IP y ruta"
|
|
1161
1229
|
rate_limit_per_minute: Solicitudes por minuto y por IP
|
|
1162
1230
|
enable_slack_notifications: Notificaciones en tiempo real
|
|
1163
1231
|
slack_webhook_url: Endpoint del webhook de Slack
|
|
@@ -1166,10 +1234,15 @@ es:
|
|
|
1166
1234
|
notification_email_from: Dirección del remitente
|
|
1167
1235
|
enable_discord_notifications: Notificaciones por webhook de Discord
|
|
1168
1236
|
discord_webhook_url: Endpoint del webhook de Discord
|
|
1237
|
+
enable_telegram_notifications: "Notificaciones de Telegram mediante la Bot API"
|
|
1238
|
+
telegram_bot_token: "Token del bot de @BotFather (configure la variable de entorno TELEGRAM_BOT_TOKEN)"
|
|
1239
|
+
telegram_chat_id: "Chat, grupo o canal donde publica el bot"
|
|
1240
|
+
telegram_api_base_url: "Servidor de la Bot API (cámbielo solo para un proxy o un servidor propio)"
|
|
1169
1241
|
enable_pagerduty_notifications: Escalado de errores críticos
|
|
1170
1242
|
pagerduty_integration_key: Clave de API de PagerDuty
|
|
1171
1243
|
enable_webhook_notifications: Endpoints de webhook genéricos
|
|
1172
1244
|
webhook_urls: Endpoints de webhook personalizados
|
|
1245
|
+
webhook_signing_secret: Firma los webhooks salientes con HMAC-SHA256 (defina la variable de entorno WEBHOOK_SIGNING_SECRET)
|
|
1173
1246
|
enable_scheduled_digests: Correos de resumen diarios/semanales. Programación
|
|
1174
1247
|
mediante SolidQueue, Sidekiq o cron
|
|
1175
1248
|
digest_frequency: Frecuencia de envío de los correos de resumen
|
|
@@ -1189,7 +1262,7 @@ es:
|
|
|
1189
1262
|
source_code_context_lines: Líneas antes y después de la línea de destino
|
|
1190
1263
|
enable_git_blame: Mostrar la información de git blame
|
|
1191
1264
|
source_code_cache_ttl: Duración de la caché del código fuente
|
|
1192
|
-
only_show_app_code_source: Ocultar gems y
|
|
1265
|
+
only_show_app_code_source: "Ocultar el código de gems y vendor en el visor de código"
|
|
1193
1266
|
git_branch_strategy: Estrategia de resolución de la rama
|
|
1194
1267
|
enable_breadcrumbs: Capturar el rastro de actividad de la solicitud
|
|
1195
1268
|
breadcrumb_buffer_size: Número máximo de breadcrumbs por solicitud
|
|
@@ -1224,6 +1297,7 @@ es:
|
|
|
1224
1297
|
enable_crash_capture: Hook at_exit para caídas no gestionadas
|
|
1225
1298
|
enable_coverage_tracking: 'Modo diagnóstico: actívelo desde el panel para
|
|
1226
1299
|
ver las líneas ejecutadas en la vista del código fuente (Ruby 3.2+)'
|
|
1300
|
+
enable_missing_translation_tracking: "Cuenta los fallos de I18n de la app por locale y clave (envuelve I18n.exception_handler)"
|
|
1227
1301
|
enable_rack_attack_tracking: Registrar los eventos throttle/blocklist en su
|
|
1228
1302
|
propia tabla
|
|
1229
1303
|
enable_actioncable_tracking: Seguir los eventos de canal de WebSocket como
|
|
@@ -1281,6 +1355,8 @@ es:
|
|
|
1281
1355
|
breadcrumbs: Breadcrumbs
|
|
1282
1356
|
system_health: Estado del sistema
|
|
1283
1357
|
swallowed_exceptions: Detección de excepciones silenciadas
|
|
1358
|
+
missing_translations: "Seguimiento de traducciones faltantes"
|
|
1359
|
+
boot_errors: "Captura de errores de arranque"
|
|
1284
1360
|
rack_attack: Seguimiento de Rack Attack
|
|
1285
1361
|
actioncable: Seguimiento de ActionCable
|
|
1286
1362
|
activestorage: Seguimiento de ActiveStorage
|
|
@@ -1694,6 +1770,13 @@ es:
|
|
|
1694
1770
|
guide_link: Guía de ActionCable
|
|
1695
1771
|
activestorage:
|
|
1696
1772
|
title: Estado de ActiveStorage
|
|
1773
|
+
probe:
|
|
1774
|
+
title: "Accesibilidad del servicio"
|
|
1775
|
+
reachable: "Accesible"
|
|
1776
|
+
unreachable: "Inaccesible"
|
|
1777
|
+
service: "Servicio: %{name}"
|
|
1778
|
+
latency: "%{ms} ms de ida y vuelta"
|
|
1779
|
+
how: "Una comprobación de existencia de una clave que nunca se almacena, hecha al cargar esta página. GET /health ejecuta la misma comprobación."
|
|
1697
1780
|
empty:
|
|
1698
1781
|
title: No se encontraron eventos de ActiveStorage
|
|
1699
1782
|
message: No se detectaron operaciones del servicio ActiveStorage en los
|