rails_error_dashboard 0.14.3 → 0.15.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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -17
  3. data/app/controllers/rails_error_dashboard/application_controller.rb +28 -4
  4. data/app/controllers/rails_error_dashboard/errors_controller.rb +68 -2
  5. data/app/controllers/rails_error_dashboard/health_controller.rb +38 -0
  6. data/app/helpers/rails_error_dashboard/application_helper.rb +10 -2
  7. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +56 -2
  8. data/app/jobs/rails_error_dashboard/baseline_alert_job.rb +20 -2
  9. data/app/jobs/rails_error_dashboard/cascade_detection_job.rb +30 -0
  10. data/app/jobs/rails_error_dashboard/concerns/plain_channel_message.rb +33 -6
  11. data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +1 -1
  12. data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +1 -1
  13. data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +26 -0
  14. data/app/jobs/rails_error_dashboard/scheduled_digest_job.rb +6 -1
  15. data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +1 -1
  16. data/app/jobs/rails_error_dashboard/telegram_error_notification_job.rb +25 -0
  17. data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +2 -18
  18. data/app/models/rails_error_dashboard/error_log.rb +43 -12
  19. data/app/models/rails_error_dashboard/missing_translation.rb +43 -0
  20. data/app/views/layouts/rails_error_dashboard.html.erb +24 -1
  21. data/app/views/rails_error_dashboard/errors/_error_info.html.erb +3 -1
  22. data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +3 -1
  23. data/app/views/rails_error_dashboard/errors/_source_code.html.erb +3 -9
  24. data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +28 -0
  25. data/app/views/rails_error_dashboard/errors/boot_errors.html.erb +130 -0
  26. data/app/views/rails_error_dashboard/errors/index.html.erb +1 -1
  27. data/app/views/rails_error_dashboard/errors/missing_translations.html.erb +143 -0
  28. data/app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb +7 -4
  29. data/app/views/rails_error_dashboard/errors/settings.html.erb +19 -5
  30. data/config/locales/de.yml +72 -5
  31. data/config/locales/en.yml +83 -4
  32. data/config/locales/es.yml +72 -5
  33. data/config/locales/fr.yml +72 -5
  34. data/config/locales/it.yml +72 -5
  35. data/config/locales/ja.yml +72 -4
  36. data/config/locales/pl.yml +72 -5
  37. data/config/locales/pt-BR.yml +72 -5
  38. data/config/locales/ru.yml +72 -5
  39. data/config/locales/uk.yml +72 -5
  40. data/config/locales/zh-CN.yml +72 -4
  41. data/config/routes.rb +6 -0
  42. data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +10 -2
  43. data/db/migrate/20251225074653_remove_environment_from_error_logs.rb +9 -0
  44. data/db/migrate/20261010000001_create_missing_translations.rb +50 -0
  45. data/lib/generators/rails_error_dashboard/install/install_generator.rb +40 -38
  46. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +31 -3
  47. data/lib/generators/rails_error_dashboard/uninstall/uninstall_generator.rb +11 -2
  48. data/lib/rails_error_dashboard/commands/assign_error.rb +24 -1
  49. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +9 -1
  50. data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +103 -0
  51. data/lib/rails_error_dashboard/commands/log_error.rb +6 -3
  52. data/lib/rails_error_dashboard/commands/resolve_error.rb +2 -15
  53. data/lib/rails_error_dashboard/commands/update_error_status.rb +7 -0
  54. data/lib/rails_error_dashboard/configuration.rb +75 -2
  55. data/lib/rails_error_dashboard/engine.rb +52 -5
  56. data/lib/rails_error_dashboard/middleware/rate_limiter.rb +21 -43
  57. data/lib/rails_error_dashboard/plugin.rb +49 -3
  58. data/lib/rails_error_dashboard/plugin_registry.rb +61 -12
  59. data/lib/rails_error_dashboard/queries/boot_errors.rb +76 -0
  60. data/lib/rails_error_dashboard/queries/dashboard_stats.rb +3 -11
  61. data/lib/rails_error_dashboard/queries/errors_list.rb +11 -17
  62. data/lib/rails_error_dashboard/queries/health_status.rb +191 -0
  63. data/lib/rails_error_dashboard/queries/missing_translation_summary.rb +82 -0
  64. data/lib/rails_error_dashboard/services/active_storage_probe.rb +91 -0
  65. data/lib/rails_error_dashboard/services/backtrace_parser.rb +13 -7
  66. data/lib/rails_error_dashboard/services/backtrace_processor.rb +15 -0
  67. data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +30 -0
  68. data/lib/rails_error_dashboard/services/crash_capture.rb +85 -2
  69. data/lib/rails_error_dashboard/services/digest_builder.rb +9 -6
  70. data/lib/rails_error_dashboard/services/error_notification_dispatcher.rb +6 -0
  71. data/lib/rails_error_dashboard/services/exception_filter.rb +4 -1
  72. data/lib/rails_error_dashboard/services/github_link_generator.rb +25 -9
  73. data/lib/rails_error_dashboard/services/missing_translation_handler.rb +152 -0
  74. data/lib/rails_error_dashboard/services/missing_translation_tracker.rb +316 -0
  75. data/lib/rails_error_dashboard/services/resolution_callbacks.rb +44 -0
  76. data/lib/rails_error_dashboard/services/severity_classifier.rb +52 -0
  77. data/lib/rails_error_dashboard/services/solid_queue_config_check.rb +47 -0
  78. data/lib/rails_error_dashboard/services/source_code_reader.rb +23 -3
  79. data/lib/rails_error_dashboard/services/telegram_delivery.rb +134 -0
  80. data/lib/rails_error_dashboard/services/telegram_payload_builder.rb +105 -0
  81. data/lib/rails_error_dashboard/services/webhook_delivery.rb +63 -0
  82. data/lib/rails_error_dashboard/services/webhook_signer.rb +80 -0
  83. data/lib/rails_error_dashboard/version.rb +1 -1
  84. data/lib/rails_error_dashboard.rb +12 -0
  85. data/lib/tasks/error_dashboard.rake +43 -2
  86. metadata +21 -2
@@ -60,6 +60,8 @@ es:
60
60
  llm: LLM
61
61
  n_plus_one: Consultas N+1
62
62
  deprecations: Deprecations
63
+ missing_translations: "Traducciones"
64
+ boot_errors: "Errores de arranque"
63
65
  swallowed: Silenciadas
64
66
  diagnostic_dumps: Diagnóstico
65
67
  storms: Tormentas
@@ -86,6 +88,10 @@ es:
86
88
  Defina las variables de entorno <code>ERROR_DASHBOARD_USER</code> y <code>ERROR_DASHBOARD_PASSWORD</code>,
87
89
  o configure <code>authenticate_with</code> en su initializer.
88
90
  dismiss: Ocultar durante esta sesión
91
+ solid_queue:
92
+ label: "Solid Queue no ejecutará los trabajos de RED."
93
+ body_html: "Los errores capturados en segundo plano y las notificaciones esperan en la cola hasta que se corrija <code>config/queue.yml</code>. Ejecute <code>bin/rails error_dashboard:verify</code> para ver la corrección y luego reinicie."
94
+ guide: "Lo que RED necesita de Solid Queue"
89
95
  storm:
90
96
  active_title: Tormenta de errores en curso
91
97
  recent_title: La protección ante tormentas se activó recientemente
@@ -854,6 +860,53 @@ es:
854
860
  error_log
855
861
  footer_tip: Las excepciones silenciadas se lanzan y luego se capturan sin
856
862
  aviso. Pueden ocultar errores reales.
863
+ missing_translations_page:
864
+ title: "Traducciones faltantes"
865
+ empty_title: "No se registraron traducciones faltantes"
866
+ empty_body: "No se registraron claves de traducción faltantes en los últimos %{days} días."
867
+ how_title: "Cómo se registran las traducciones faltantes:"
868
+ how_enabled_html: "El seguimiento debe estar activado (%{option})"
869
+ 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"
870
+ 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"
871
+ 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í"
872
+ 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"
873
+ missing_keys: "Claves faltantes"
874
+ total_misses: "Fallos totales"
875
+ locales_affected: "Locales afectados"
876
+ all_title: "Claves de traducción faltantes"
877
+ column_key: "Clave"
878
+ column_locale: "Locale"
879
+ column_source: "Visto primero en"
880
+ column_misses: "Fallos"
881
+ column_first_seen: "Visto por primera vez"
882
+ overflow_notice: "%{count} fallos no pudieron atribuirse a una clave porque el búfer del rastreador (%{limit} claves por hilo) estaba lleno."
883
+ footer_tip: "Añada la clave al archivo de locale o pase un :default. Las claves que los usuarios realmente encontraron aparecen primero."
884
+ docs: "Guía i18n de Rails"
885
+
886
+ boot_errors_page:
887
+ title: "Errores de arranque"
888
+ empty_title: "No se registraron errores de arranque"
889
+ empty_body: "Ningún proceso murió al arrancar en los últimos %{days} días."
890
+ how_title: "Cómo se capturan los errores de arranque:"
891
+ how_enabled_html: "La captura de fallos debe estar activada (%{option})"
892
+ 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"
893
+ 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"
894
+ 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"
895
+ how_never: "Un proceso terminado con SIGKILL o por un segfault nunca es visto por at_exit, en ninguna herramienta"
896
+ unresolved: "Sin resolver"
897
+ boot_crashes: "Fallos de arranque"
898
+ failed_boots: "Arranques fallidos"
899
+ all_title: "Fallos de arranque por error"
900
+ column_error: "Error"
901
+ column_file: "Archivo"
902
+ column_constant: "Constante"
903
+ column_boots: "Arranques"
904
+ column_first_seen: "Visto por primera vez"
905
+ column_status: "Estado"
906
+ status_open: "Abierto"
907
+ status_resolved: "Resuelto"
908
+ 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."
909
+
857
910
  rack_attack_page:
858
911
  title: Eventos de límite de tasa
859
912
  missing_title: Rack Attack no está instalado
@@ -1125,7 +1178,7 @@ es:
1125
1178
  unable_to_detect: No se pudo detectar
1126
1179
  no_user_model: No se detectó ningún modelo User
1127
1180
  unable_to_query_count: No se pudo consultar la cantidad
1128
- manual_cleanup_required: Se requiere limpieza manual
1181
+ retention_enforced_by_job: "Eliminados por RetentionCleanupJob cuando su planificador lo ejecute"
1129
1182
  keep_forever: Conservar indefinidamente
1130
1183
  no_automatic_deletion: Sin eliminación automática
1131
1184
  run_command: 'Ejecutar:'
@@ -1133,8 +1186,7 @@ es:
1133
1186
  options:
1134
1187
  enable_middleware: Captura las excepciones no gestionadas
1135
1188
  enable_error_subscriber: Se suscribe a los eventos de error de Rails
1136
- retention_days: 'Solo limpieza manual (ejecutar: rails error_dashboard:cleanup_resolved
1137
- DAYS=90)'
1189
+ retention_days: "Eliminar errores no vistos durante estos días. Lo aplica RetentionCleanupJob, que la gema no programa por sí misma"
1138
1190
  max_backtrace_lines: Profundidad máxima del backtrace
1139
1191
  sampling_rate: Porcentaje de errores capturados
1140
1192
  application_name: Nombre de esta aplicación (se detecta automáticamente si
@@ -1153,7 +1205,7 @@ es:
1153
1205
  si no se define)
1154
1206
  async_logging: Procesamiento mediante jobs en segundo plano
1155
1207
  async_adapter: Adaptador de la cola de jobs
1156
- enable_rate_limiting: Limitar las solicitudes a la API
1208
+ enable_rate_limiting: "Limitar las solicitudes del panel por IP y ruta"
1157
1209
  rate_limit_per_minute: Solicitudes por minuto y por IP
1158
1210
  enable_slack_notifications: Notificaciones en tiempo real
1159
1211
  slack_webhook_url: Endpoint del webhook de Slack
@@ -1162,10 +1214,15 @@ es:
1162
1214
  notification_email_from: Dirección del remitente
1163
1215
  enable_discord_notifications: Notificaciones por webhook de Discord
1164
1216
  discord_webhook_url: Endpoint del webhook de Discord
1217
+ enable_telegram_notifications: "Notificaciones de Telegram mediante la Bot API"
1218
+ telegram_bot_token: "Token del bot de @BotFather (configure la variable de entorno TELEGRAM_BOT_TOKEN)"
1219
+ telegram_chat_id: "Chat, grupo o canal donde publica el bot"
1220
+ telegram_api_base_url: "Servidor de la Bot API (cámbielo solo para un proxy o un servidor propio)"
1165
1221
  enable_pagerduty_notifications: Escalado de errores críticos
1166
1222
  pagerduty_integration_key: Clave de API de PagerDuty
1167
1223
  enable_webhook_notifications: Endpoints de webhook genéricos
1168
1224
  webhook_urls: Endpoints de webhook personalizados
1225
+ webhook_signing_secret: Firma los webhooks salientes con HMAC-SHA256 (defina la variable de entorno WEBHOOK_SIGNING_SECRET)
1169
1226
  enable_scheduled_digests: Correos de resumen diarios/semanales. Programación
1170
1227
  mediante SolidQueue, Sidekiq o cron
1171
1228
  digest_frequency: Frecuencia de envío de los correos de resumen
@@ -1185,7 +1242,7 @@ es:
1185
1242
  source_code_context_lines: Líneas antes y después de la línea de destino
1186
1243
  enable_git_blame: Mostrar la información de git blame
1187
1244
  source_code_cache_ttl: Duración de la caché del código fuente
1188
- only_show_app_code_source: Ocultar gems y stdlib por seguridad
1245
+ only_show_app_code_source: "Ocultar el código de gems y vendor en el visor de código"
1189
1246
  git_branch_strategy: Estrategia de resolución de la rama
1190
1247
  enable_breadcrumbs: Capturar el rastro de actividad de la solicitud
1191
1248
  breadcrumb_buffer_size: Número máximo de breadcrumbs por solicitud
@@ -1220,6 +1277,7 @@ es:
1220
1277
  enable_crash_capture: Hook at_exit para caídas no gestionadas
1221
1278
  enable_coverage_tracking: 'Modo diagnóstico: actívelo desde el panel para
1222
1279
  ver las líneas ejecutadas en la vista del código fuente (Ruby 3.2+)'
1280
+ enable_missing_translation_tracking: "Cuenta los fallos de I18n de la app por locale y clave (envuelve I18n.exception_handler)"
1223
1281
  enable_rack_attack_tracking: Registrar los eventos throttle/blocklist en su
1224
1282
  propia tabla
1225
1283
  enable_actioncable_tracking: Seguir los eventos de canal de WebSocket como
@@ -1277,6 +1335,8 @@ es:
1277
1335
  breadcrumbs: Breadcrumbs
1278
1336
  system_health: Estado del sistema
1279
1337
  swallowed_exceptions: Detección de excepciones silenciadas
1338
+ missing_translations: "Seguimiento de traducciones faltantes"
1339
+ boot_errors: "Captura de errores de arranque"
1280
1340
  rack_attack: Seguimiento de Rack Attack
1281
1341
  actioncable: Seguimiento de ActionCable
1282
1342
  activestorage: Seguimiento de ActiveStorage
@@ -1690,6 +1750,13 @@ es:
1690
1750
  guide_link: Guía de ActionCable
1691
1751
  activestorage:
1692
1752
  title: Estado de ActiveStorage
1753
+ probe:
1754
+ title: "Accesibilidad del servicio"
1755
+ reachable: "Accesible"
1756
+ unreachable: "Inaccesible"
1757
+ service: "Servicio: %{name}"
1758
+ latency: "%{ms} ms de ida y vuelta"
1759
+ 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."
1693
1760
  empty:
1694
1761
  title: No se encontraron eventos de ActiveStorage
1695
1762
  message: No se detectaron operaciones del servicio ActiveStorage en los
@@ -60,6 +60,8 @@ fr:
60
60
  llm: LLM
61
61
  n_plus_one: Requêtes N+1
62
62
  deprecations: Dépréciations
63
+ missing_translations: "Traductions"
64
+ boot_errors: "Erreurs de démarrage"
63
65
  swallowed: Avalées
64
66
  diagnostic_dumps: Diagnostics
65
67
  storms: Tempêtes
@@ -87,6 +89,10 @@ fr:
87
89
  et <code>ERROR_DASHBOARD_PASSWORD</code>, ou configurez <code>authenticate_with</code>
88
90
  dans votre initializer.
89
91
  dismiss: Masquer pour cette session
92
+ solid_queue:
93
+ label: "Solid Queue n'exécutera pas les tâches de RED."
94
+ body_html: "Les erreurs capturées en arrière-plan et les notifications restent en file d'attente tant que <code>config/queue.yml</code> n'est pas corrigé. Lancez <code>bin/rails error_dashboard:verify</code> pour voir la correction, puis redémarrez."
95
+ guide: "Ce dont RED a besoin de Solid Queue"
90
96
  storm:
91
97
  active_title: Tempête d'erreurs en cours
92
98
  recent_title: La protection anti-tempête s'est déclenchée récemment
@@ -853,6 +859,53 @@ fr:
853
859
  dans error_log
854
860
  footer_tip: Les exceptions avalées sont levées puis rattrapées silencieusement.
855
861
  Elles peuvent masquer de vrais bugs.
862
+ missing_translations_page:
863
+ title: "Traductions manquantes"
864
+ empty_title: "Aucune traduction manquante enregistrée"
865
+ empty_body: "Aucune clé de traduction manquante n'a été enregistrée au cours des %{days} derniers jours."
866
+ how_title: "Comment les traductions manquantes sont suivies :"
867
+ how_enabled_html: "Le suivi doit être activé (%{option})"
868
+ how_hooked: "RED enveloppe I18n.exception_handler et délègue au handler que votre application avait déjà ; rien d'autre ne change dans votre configuration I18n"
869
+ how_recorded: "Chaque recherche qui aboutit au handler — via I18n.t comme via le helper de vue t() — est comptée par locale et par clé, avec le premier point d'appel observé"
870
+ how_not_seen: "Une recherche avec :default n'échoue jamais, et une recherche avec raise_on_missing_translations lève une exception avant tout handler ; aucune des deux n'est comptée ici"
871
+ how_buffered: "Les échecs sont comptés en mémoire et écrits à la fin de la requête ou du job ; comptez un court délai avant qu'ils n'apparaissent"
872
+ missing_keys: "Clés manquantes"
873
+ total_misses: "Échecs au total"
874
+ locales_affected: "Locales concernées"
875
+ all_title: "Clés de traduction manquantes"
876
+ column_key: "Clé"
877
+ column_locale: "Locale"
878
+ column_source: "Vu d'abord dans"
879
+ column_misses: "Échecs"
880
+ column_first_seen: "Première occurrence"
881
+ overflow_notice: "%{count} échecs n'ont pas pu être attribués à une clé parce que le tampon du suivi (%{limit} clés par thread) était plein."
882
+ footer_tip: "Ajoutez la clé au fichier de locale, ou passez un :default. Les clés réellement rencontrées par les utilisateurs sont listées en premier."
883
+ docs: "Guide i18n de Rails"
884
+
885
+ boot_errors_page:
886
+ title: "Erreurs de démarrage"
887
+ empty_title: "Aucune erreur de démarrage enregistrée"
888
+ empty_body: "Aucun processus n’est mort au démarrage au cours des %{days} derniers jours."
889
+ how_title: "Comment les erreurs de démarrage sont capturées :"
890
+ how_enabled_html: "La capture des plantages doit être activée (%{option})"
891
+ how_hooked: "RED enregistre son hook at_exit juste après vos initializers et avant l’eager loading de Rails, si bien qu’un plantage au démarrage est vu même si l’application n’a jamais fini de démarrer"
892
+ how_captured_html: "Une %{zeitwerk} due à un fichier qui définit la mauvaise constante, une %{syntax} dans un modèle, un initializer qui lève une exception : tout ce qui tue le processus avant qu’il serve une requête"
893
+ how_imported: "Le plantage est écrit sur disque, faute de base de données à ce stade, puis importé au prochain démarrage réussi"
894
+ how_never: "Un processus tué par SIGKILL ou un segfault n’est jamais vu par at_exit, dans aucun outil"
895
+ unresolved: "Non résolus"
896
+ boot_crashes: "Plantages au démarrage"
897
+ failed_boots: "Démarrages échoués"
898
+ all_title: "Plantages au démarrage par erreur"
899
+ column_error: "Erreur"
900
+ column_file: "Fichier"
901
+ column_constant: "Constante"
902
+ column_boots: "Démarrages"
903
+ column_first_seen: "Première occurrence"
904
+ column_status: "Statut"
905
+ status_open: "Ouvert"
906
+ status_resolved: "Résolu"
907
+ footer_tip: "Un plantage au démarrage signifie que le processus n’a jamais servi de requête. Corrigez-le avant le prochain déploiement ; la ligne se résout comme n’importe quelle autre erreur."
908
+
856
909
  rack_attack_page:
857
910
  title: Événements de limitation de débit
858
911
  missing_title: Rack Attack n'est pas installé
@@ -1126,7 +1179,7 @@ fr:
1126
1179
  unable_to_detect: Détection impossible
1127
1180
  no_user_model: Aucun modèle User détecté
1128
1181
  unable_to_query_count: Impossible d'interroger le nombre
1129
- manual_cleanup_required: Nettoyage manuel requis
1182
+ retention_enforced_by_job: "Supprimés par RetentionCleanupJob dès que votre planificateur l'exécute"
1130
1183
  keep_forever: Conserver indéfiniment
1131
1184
  no_automatic_deletion: Aucune suppression automatique
1132
1185
  run_command: 'Exécuter :'
@@ -1134,8 +1187,7 @@ fr:
1134
1187
  options:
1135
1188
  enable_middleware: Intercepte les exceptions non gérées
1136
1189
  enable_error_subscriber: S'abonne aux événements d'erreur de Rails
1137
- retention_days: 'Nettoyage manuel uniquement (exécuter : rails error_dashboard:cleanup_resolved
1138
- DAYS=90)'
1190
+ retention_days: "Supprimer les erreurs non vues depuis ce nombre de jours. Appliqué par RetentionCleanupJob, que la gem ne planifie pas elle-même"
1139
1191
  max_backtrace_lines: Profondeur maximale du backtrace
1140
1192
  sampling_rate: Pourcentage d'erreurs capturées
1141
1193
  application_name: Nom de cette application (détecté automatiquement si non
@@ -1154,7 +1206,7 @@ fr:
1154
1206
  si non défini)
1155
1207
  async_logging: Traitement par jobs en arrière-plan
1156
1208
  async_adapter: Adaptateur de file d'attente des jobs
1157
- enable_rate_limiting: Limiter le débit des requêtes API
1209
+ enable_rate_limiting: "Limiter les requêtes du tableau de bord par IP et par chemin"
1158
1210
  rate_limit_per_minute: Requêtes par minute et par IP
1159
1211
  enable_slack_notifications: Notifications en temps réel
1160
1212
  slack_webhook_url: Point de terminaison du webhook Slack
@@ -1163,10 +1215,15 @@ fr:
1163
1215
  notification_email_from: Adresse de l'expéditeur
1164
1216
  enable_discord_notifications: Notifications par webhook Discord
1165
1217
  discord_webhook_url: Point de terminaison du webhook Discord
1218
+ enable_telegram_notifications: "Notifications Telegram via l'API Bot"
1219
+ telegram_bot_token: "Jeton du bot fourni par @BotFather (définir la variable d'environnement TELEGRAM_BOT_TOKEN)"
1220
+ telegram_chat_id: "Discussion, groupe ou canal où le bot publie"
1221
+ telegram_api_base_url: "Serveur de l'API Bot (à modifier seulement pour un proxy ou un serveur auto-hébergé)"
1166
1222
  enable_pagerduty_notifications: Escalade des erreurs critiques
1167
1223
  pagerduty_integration_key: Clé API PagerDuty
1168
1224
  enable_webhook_notifications: Points de terminaison webhook génériques
1169
1225
  webhook_urls: Points de terminaison webhook personnalisés
1226
+ webhook_signing_secret: Signe les webhooks sortants en HMAC-SHA256 (définir la variable d’environnement WEBHOOK_SIGNING_SECRET)
1170
1227
  enable_scheduled_digests: E-mails de résumé quotidiens/hebdomadaires. Planification
1171
1228
  via SolidQueue, Sidekiq ou cron
1172
1229
  digest_frequency: Fréquence d'envoi des e-mails de résumé
@@ -1186,7 +1243,7 @@ fr:
1186
1243
  source_code_context_lines: Lignes avant et après la ligne ciblée
1187
1244
  enable_git_blame: Afficher les informations git blame
1188
1245
  source_code_cache_ttl: Durée de mise en cache du code source
1189
- only_show_app_code_source: Masquer les gems et la stdlib par sécurité
1246
+ only_show_app_code_source: "Masquer le code des gems et de vendor dans le visualiseur de code"
1190
1247
  git_branch_strategy: Stratégie de résolution de la branche
1191
1248
  enable_breadcrumbs: Capturer le fil d'activité de la requête
1192
1249
  breadcrumb_buffer_size: Nombre maximal de breadcrumbs par requête
@@ -1220,6 +1277,7 @@ fr:
1220
1277
  enable_crash_capture: Hook at_exit pour les plantages non gérés
1221
1278
  enable_coverage_tracking: Mode diagnostic — à activer depuis le tableau de
1222
1279
  bord pour voir les lignes exécutées dans la vue du code source (Ruby 3.2+)
1280
+ enable_missing_translation_tracking: "Compte les échecs I18n de l'app par locale et par clé (enveloppe I18n.exception_handler)"
1223
1281
  enable_rack_attack_tracking: Enregistrer les événements throttle/blocklist
1224
1282
  dans leur propre table
1225
1283
  enable_actioncable_tracking: Suivre les événements des canaux WebSocket sous
@@ -1277,6 +1335,8 @@ fr:
1277
1335
  breadcrumbs: Breadcrumbs
1278
1336
  system_health: État du système
1279
1337
  swallowed_exceptions: Détection des exceptions avalées
1338
+ missing_translations: "Suivi des traductions manquantes"
1339
+ boot_errors: "Capture des erreurs de démarrage"
1280
1340
  rack_attack: Suivi de Rack Attack
1281
1341
  actioncable: Suivi d'ActionCable
1282
1342
  activestorage: Suivi d'ActiveStorage
@@ -1693,6 +1753,13 @@ fr:
1693
1753
  guide_link: Guide d'ActionCable
1694
1754
  activestorage:
1695
1755
  title: État d'ActiveStorage
1756
+ probe:
1757
+ title: "Joignabilité du service"
1758
+ reachable: "Joignable"
1759
+ unreachable: "Injoignable"
1760
+ service: "Service : %{name}"
1761
+ latency: "%{ms} ms aller-retour"
1762
+ how: "Une vérification d’existence d’une clé jamais stockée, faite au chargement de cette page. GET /health exécute la même sonde."
1696
1763
  empty:
1697
1764
  title: Aucun événement ActiveStorage trouvé
1698
1765
  message: Aucune opération de service ActiveStorage n'a été détectée dans
@@ -60,6 +60,8 @@ it:
60
60
  llm: LLM
61
61
  n_plus_one: Query N+1
62
62
  deprecations: Deprecations
63
+ missing_translations: "Traduzioni"
64
+ boot_errors: "Errori di avvio"
63
65
  swallowed: Soppresse
64
66
  diagnostic_dumps: Diagnostica
65
67
  storms: Tempeste
@@ -86,6 +88,10 @@ it:
86
88
  Imposta le variabili d'ambiente <code>ERROR_DASHBOARD_USER</code> e <code>ERROR_DASHBOARD_PASSWORD</code>
87
89
  oppure configura <code>authenticate_with</code> nel tuo inizializzatore.
88
90
  dismiss: Nascondi per questa sessione
91
+ solid_queue:
92
+ label: "Solid Queue non eseguirà i job di RED."
93
+ body_html: "Gli errori acquisiti in background e le notifiche restano in coda finché <code>config/queue.yml</code> non viene corretto. Esegui <code>bin/rails error_dashboard:verify</code> per vedere la correzione, poi riavvia."
94
+ guide: "Cosa serve a RED da Solid Queue"
89
95
  storm:
90
96
  active_title: Tempesta di errori in corso
91
97
  recent_title: Protezione dalle tempeste attivata di recente
@@ -846,6 +852,53 @@ it:
846
852
  view_unrescued: Vedi gli errori %{exception} non intercettati finiti in error_log
847
853
  footer_tip: Le eccezioni soppresse vengono sollevate e poi intercettate in
848
854
  silenzio. Possono nascondere bug reali.
855
+ missing_translations_page:
856
+ title: "Traduzioni mancanti"
857
+ empty_title: "Nessuna traduzione mancante registrata"
858
+ empty_body: "Nessuna chiave di traduzione mancante è stata registrata negli ultimi %{days} giorni."
859
+ how_title: "Come vengono tracciate le traduzioni mancanti:"
860
+ how_enabled_html: "Il tracciamento deve essere attivo (%{option})"
861
+ how_hooked: "RED avvolge I18n.exception_handler e delega all'handler che la tua app aveva già; nient'altro cambia nella tua configurazione I18n"
862
+ how_recorded: "Ogni ricerca che arriva all'handler — sia da I18n.t sia dall'helper di vista t() — viene contata per locale e chiave, insieme al primo punto di chiamata osservato"
863
+ how_not_seen: "Una ricerca con :default non fallisce mai, e una fatta con raise_on_missing_translations solleva un'eccezione prima che qualsiasi handler venga eseguito, quindi nessuna delle due è contata qui"
864
+ how_buffered: "I fallimenti vengono contati in memoria e scritti alla fine della richiesta o del job, quindi attendi un breve ritardo prima che compaiano"
865
+ missing_keys: "Chiavi mancanti"
866
+ total_misses: "Fallimenti totali"
867
+ locales_affected: "Locale interessati"
868
+ all_title: "Chiavi di traduzione mancanti"
869
+ column_key: "Chiave"
870
+ column_locale: "Locale"
871
+ column_source: "Visto prima in"
872
+ column_misses: "Fallimenti"
873
+ column_first_seen: "Prima occorrenza"
874
+ overflow_notice: "%{count} fallimenti non sono stati attribuiti a una chiave perché il buffer del tracker (%{limit} chiavi per thread) era pieno."
875
+ footer_tip: "Aggiungi la chiave al file di locale, oppure passa un :default. Le chiavi effettivamente incontrate dagli utenti sono elencate per prime."
876
+ docs: "Guida i18n di Rails"
877
+
878
+ boot_errors_page:
879
+ title: "Errori di avvio"
880
+ empty_title: "Nessun errore di avvio registrato"
881
+ empty_body: "Nessun processo è morto durante l’avvio negli ultimi %{days} giorni."
882
+ how_title: "Come vengono catturati gli errori di avvio:"
883
+ how_enabled_html: "La cattura dei crash deve essere attiva (%{option})"
884
+ how_hooked: "RED registra il suo hook at_exit subito dopo i tuoi initializer e prima dell’eager loading di Rails, così un crash durante l’avvio viene visto anche se l’app non ha mai finito di partire"
885
+ how_captured_html: "Un %{zeitwerk} da un file che definisce la costante sbagliata, un %{syntax} in un modello, un initializer che solleva un’eccezione: qualsiasi cosa uccida il processo prima che serva una richiesta"
886
+ how_imported: "Il crash viene scritto su disco, perché non c’è ancora un database, e importato al successivo avvio riuscito"
887
+ how_never: "Un processo terminato da SIGKILL o da un segfault non viene mai visto da at_exit, in nessuno strumento"
888
+ unresolved: "Non risolti"
889
+ boot_crashes: "Crash all’avvio"
890
+ failed_boots: "Avvii falliti"
891
+ all_title: "Crash all’avvio per errore"
892
+ column_error: "Errore"
893
+ column_file: "File"
894
+ column_constant: "Costante"
895
+ column_boots: "Avvii"
896
+ column_first_seen: "Prima occorrenza"
897
+ column_status: "Stato"
898
+ status_open: "Aperto"
899
+ status_resolved: "Risolto"
900
+ footer_tip: "Un crash all’avvio significa che il processo non ha mai servito una richiesta. Correggilo prima del prossimo deploy; la riga si risolve come qualsiasi altro errore."
901
+
849
902
  rack_attack_page:
850
903
  title: Eventi di limite di richieste
851
904
  missing_title: Rack Attack non è installato
@@ -1116,7 +1169,7 @@ it:
1116
1169
  unable_to_detect: Impossibile rilevare
1117
1170
  no_user_model: Nessun modello User rilevato
1118
1171
  unable_to_query_count: Impossibile ottenere il conteggio
1119
- manual_cleanup_required: Richiesta pulizia manuale
1172
+ retention_enforced_by_job: "Eliminati da RetentionCleanupJob quando lo scheduler lo esegue"
1120
1173
  keep_forever: Conserva per sempre
1121
1174
  no_automatic_deletion: Nessuna eliminazione automatica
1122
1175
  run_command: 'Esegui:'
@@ -1124,8 +1177,7 @@ it:
1124
1177
  options:
1125
1178
  enable_middleware: Intercetta le eccezioni non gestite
1126
1179
  enable_error_subscriber: Si iscrive agli eventi di errore di Rails
1127
- retention_days: 'Solo pulizia manuale (esegui: rails error_dashboard:cleanup_resolved
1128
- DAYS=90)'
1180
+ retention_days: "Elimina gli errori non visti da questo numero di giorni. Applicato da RetentionCleanupJob, che la gem non pianifica da sola"
1129
1181
  max_backtrace_lines: Limite di profondità dello stack trace
1130
1182
  sampling_rate: Percentuale di errori acquisiti
1131
1183
  application_name: Nome di questa applicazione (rilevato automaticamente se
@@ -1144,7 +1196,7 @@ it:
1144
1196
  se non impostato)
1145
1197
  async_logging: Elaborazione in job in background
1146
1198
  async_adapter: Adapter della coda dei job
1147
- enable_rate_limiting: Limita le richieste alle API
1199
+ enable_rate_limiting: "Limita le richieste della dashboard per IP e percorso"
1148
1200
  rate_limit_per_minute: Richieste al minuto per IP
1149
1201
  enable_slack_notifications: Notifiche in tempo reale
1150
1202
  slack_webhook_url: Endpoint del webhook di Slack
@@ -1153,10 +1205,15 @@ it:
1153
1205
  notification_email_from: Indirizzo del mittente
1154
1206
  enable_discord_notifications: Notifiche tramite webhook di Discord
1155
1207
  discord_webhook_url: Endpoint del webhook di Discord
1208
+ enable_telegram_notifications: "Notifiche Telegram tramite la Bot API"
1209
+ telegram_bot_token: "Token del bot da @BotFather (impostare la variabile d'ambiente TELEGRAM_BOT_TOKEN)"
1210
+ telegram_chat_id: "Chat, gruppo o canale in cui scrive il bot"
1211
+ telegram_api_base_url: "Server della Bot API (da cambiare solo per un proxy o un server self-hosted)"
1156
1212
  enable_pagerduty_notifications: Escalation degli errori critici
1157
1213
  pagerduty_integration_key: Chiave API di PagerDuty
1158
1214
  enable_webhook_notifications: Endpoint webhook generici
1159
1215
  webhook_urls: Endpoint webhook personalizzati
1216
+ webhook_signing_secret: Firma i webhook in uscita con HMAC-SHA256 (imposta la variabile d’ambiente WEBHOOK_SIGNING_SECRET)
1160
1217
  enable_scheduled_digests: E-mail di riepilogo giornaliere/settimanali. Pianifica
1161
1218
  tramite SolidQueue, Sidekiq o cron
1162
1219
  digest_frequency: Con quale frequenza inviare le e-mail di riepilogo
@@ -1177,7 +1234,7 @@ it:
1177
1234
  source_code_context_lines: Righe prima e dopo quella di riferimento
1178
1235
  enable_git_blame: Mostra le informazioni di git blame
1179
1236
  source_code_cache_ttl: Durata della cache del codice sorgente
1180
- only_show_app_code_source: Nascondi gems/stdlib per sicurezza
1237
+ only_show_app_code_source: "Nascondi il codice di gem e vendor nel visualizzatore del codice"
1181
1238
  git_branch_strategy: Strategia di risoluzione del branch
1182
1239
  enable_breadcrumbs: Acquisisci la traccia delle attività della richiesta
1183
1240
  breadcrumb_buffer_size: Numero massimo di breadcrumbs per richiesta
@@ -1210,6 +1267,7 @@ it:
1210
1267
  enable_crash_capture: Hook at_exit per i crash non gestiti
1211
1268
  enable_coverage_tracking: Modalità diagnostica — abilitala dal pannello per
1212
1269
  vedere le righe eseguite nella vista del codice (Ruby 3.2+)
1270
+ enable_missing_translation_tracking: "Conta i fallimenti I18n dell'app per locale e chiave (avvolge I18n.exception_handler)"
1213
1271
  enable_rack_attack_tracking: Registra gli eventi throttle/blocklist in una
1214
1272
  tabella dedicata
1215
1273
  enable_actioncable_tracking: Traccia gli eventi dei canali WebSocket come
@@ -1267,6 +1325,8 @@ it:
1267
1325
  breadcrumbs: Breadcrumbs
1268
1326
  system_health: Stato del sistema
1269
1327
  swallowed_exceptions: Rilevamento delle eccezioni soppresse
1328
+ missing_translations: "Tracciamento delle traduzioni mancanti"
1329
+ boot_errors: "Cattura degli errori di avvio"
1270
1330
  rack_attack: Tracciamento di Rack Attack
1271
1331
  actioncable: Tracciamento di ActionCable
1272
1332
  activestorage: Tracciamento di ActiveStorage
@@ -1678,6 +1738,13 @@ it:
1678
1738
  guide_link: Guida ad ActionCable
1679
1739
  activestorage:
1680
1740
  title: Stato di ActiveStorage
1741
+ probe:
1742
+ title: "Raggiungibilità del servizio"
1743
+ reachable: "Raggiungibile"
1744
+ unreachable: "Non raggiungibile"
1745
+ service: "Servizio: %{name}"
1746
+ latency: "%{ms} ms andata e ritorno"
1747
+ how: "Un controllo di esistenza su una chiave mai memorizzata, eseguito al caricamento di questa pagina. GET /health esegue la stessa verifica."
1681
1748
  empty:
1682
1749
  title: Nessun evento ActiveStorage trovato
1683
1750
  message: Negli ultimi %{days} giorni non sono state rilevate operazioni
@@ -60,6 +60,8 @@ ja:
60
60
  llm: LLM
61
61
  n_plus_one: N+1 クエリ
62
62
  deprecations: 非推奨
63
+ missing_translations: "翻訳"
64
+ boot_errors: "起動エラー"
63
65
  swallowed: 握りつぶし
64
66
  diagnostic_dumps: 診断
65
67
  storms: ストーム
@@ -86,6 +88,10 @@ ja:
86
88
  と <code>ERROR_DASHBOARD_PASSWORD</code> を設定するか、イニシャライザで <code>authenticate_with</code>
87
89
  を設定してください。
88
90
  dismiss: このセッションでは表示しない
91
+ solid_queue:
92
+ label: "Solid Queue は RED のジョブを実行しません。"
93
+ body_html: "<code>config/queue.yml</code> を修正するまで、バックグラウンドで記録されたエラーと通知はキューで待機します。<code>bin/rails error_dashboard:verify</code> を実行して修正方法を確認し、再起動してください。"
94
+ guide: "RED が Solid Queue に必要とするもの"
89
95
  storm:
90
96
  active_title: エラーストームが発生中です
91
97
  recent_title: ストーム保護が最近作動しました
@@ -752,6 +758,53 @@ ja:
752
758
  column_ratio: 比率
753
759
  view_unrescued: error_log に記録された未 rescue の%{exception}エラーを表示
754
760
  footer_tip: 握りつぶされた例外とは、raise された後に暗黙的に rescue された例外です。実際の不具合を隠している可能性があります。
761
+ missing_translations_page:
762
+ title: "翻訳の欠落"
763
+ empty_title: "欠落した翻訳は記録されていません"
764
+ empty_body: "過去 %{days} 日間に欠落した翻訳キーは記録されていません。"
765
+ how_title: "翻訳の欠落を追跡する仕組み:"
766
+ how_enabled_html: "追跡を有効にする必要があります(%{option})"
767
+ how_hooked: "RED は I18n.exception_handler をラップし、アプリが元々使っていたハンドラーに処理を委譲します。それ以外の I18n 設定は変更しません"
768
+ how_recorded: "ハンドラーに到達した検索は、I18n.t でもビューヘルパー t() でも、ロケールとキーごとに、最初に観測された呼び出し元とともに数えられます"
769
+ how_not_seen: ":default を指定した検索は欠落になりません。raise_on_missing_translations を使った検索はハンドラーが動く前に例外を投げるため、どちらもここでは数えられません"
770
+ how_buffered: "欠落はメモリ上で数えられ、リクエストまたはジョブの終了時に書き込まれるため、表示されるまで少し時間がかかります"
771
+ missing_keys: "欠落キー"
772
+ total_misses: "欠落の合計"
773
+ locales_affected: "影響を受けたロケール"
774
+ all_title: "欠落している翻訳キー"
775
+ column_key: "キー"
776
+ column_locale: "ロケール"
777
+ column_source: "最初の検出箇所"
778
+ column_misses: "欠落数"
779
+ column_first_seen: "初回検出"
780
+ overflow_notice: "トラッカーのバッファ(スレッドあたり %{limit} キー)が満杯だったため、%{count} 件の欠落をキーに割り当てられませんでした。"
781
+ footer_tip: "ロケールファイルにキーを追加するか、:default を渡してください。実際にユーザーが遭遇したキーが先に表示されます。"
782
+ docs: "Rails i18n ガイド"
783
+
784
+ boot_errors_page:
785
+ title: "起動エラー"
786
+ empty_title: "起動エラーは記録されていません"
787
+ empty_body: "過去 %{days} 日間に起動中に終了したプロセスはありません。"
788
+ how_title: "起動エラーを捕捉する仕組み:"
789
+ how_enabled_html: "クラッシュ捕捉を有効にする必要があります(%{option})"
790
+ how_hooked: "RED は initializer の直後、Rails の eager load の前に at_exit フックを登録するため、アプリが起動し切る前のクラッシュも捕捉されます"
791
+ how_captured_html: "誤った定数を定義したファイルによる %{zeitwerk}、モデル内の %{syntax}、例外を投げた initializer など、リクエストを処理する前にプロセスを終了させるもの"
792
+ how_imported: "この時点ではデータベースがないためクラッシュはディスクに書き込まれ、次に起動が成功したときに取り込まれます"
793
+ how_never: "SIGKILL やセグメンテーション違反で終了したプロセスは、どのツールでも at_exit では捕捉できません"
794
+ unresolved: "未解決"
795
+ boot_crashes: "起動クラッシュ"
796
+ failed_boots: "失敗した起動"
797
+ all_title: "エラー別の起動クラッシュ"
798
+ column_error: "エラー"
799
+ column_file: "ファイル"
800
+ column_constant: "定数"
801
+ column_boots: "起動回数"
802
+ column_first_seen: "初回検出"
803
+ column_status: "状態"
804
+ status_open: "未対応"
805
+ status_resolved: "解決済み"
806
+ footer_tip: "起動クラッシュはプロセスが一度もリクエストを処理しなかったことを意味します。次のデプロイ前に修正してください。行は他のエラーと同様に解決できます。"
807
+
755
808
  rack_attack_page:
756
809
  title: レート制限イベント
757
810
  missing_title: Rack Attack がインストールされていません
@@ -968,7 +1021,7 @@ ja:
968
1021
  unable_to_detect: 検出できません
969
1022
  no_user_model: User モデルが見つかりません
970
1023
  unable_to_query_count: 件数を取得できません
971
- manual_cleanup_required: 手動でのクリーンアップが必要です
1024
+ retention_enforced_by_job: "スケジューラーが RetentionCleanupJob を実行すると削除されます"
972
1025
  keep_forever: 無期限に保持
973
1026
  no_automatic_deletion: 自動削除は行いません
974
1027
  run_command: '実行:'
@@ -976,7 +1029,7 @@ ja:
976
1029
  options:
977
1030
  enable_middleware: 未処理の例外を捕捉します
978
1031
  enable_error_subscriber: Rails のエラーイベントを購読します
979
- retention_days: '手動クリーンアップのみ (実行: rails error_dashboard:cleanup_resolved DAYS=90)'
1032
+ retention_days: "この日数の間発生しなかったエラーを削除します。RetentionCleanupJob が実行しますが、gem 自体はスケジュールしません"
980
1033
  max_backtrace_lines: スタックトレースの深さの上限
981
1034
  sampling_rate: エラーを記録する割合
982
1035
  application_name: このアプリケーションの名前 (未設定の場合は自動検出)
@@ -990,7 +1043,7 @@ ja:
990
1043
  total_users_for_impact: 影響率の算出に使用 (未設定の場合は自動検出)
991
1044
  async_logging: バックグラウンドジョブで処理します
992
1045
  async_adapter: ジョブキューのアダプタ
993
- enable_rate_limiting: API リクエストを制限します
1046
+ enable_rate_limiting: "ダッシュボードへのリクエストを IP とパスごとに制限します"
994
1047
  rate_limit_per_minute: IP ごとの1分あたりのリクエスト数
995
1048
  enable_slack_notifications: リアルタイム通知
996
1049
  slack_webhook_url: Slack の webhook エンドポイント
@@ -999,10 +1052,15 @@ ja:
999
1052
  notification_email_from: 送信元アドレス
1000
1053
  enable_discord_notifications: Discord の webhook 通知
1001
1054
  discord_webhook_url: Discord の webhook エンドポイント
1055
+ enable_telegram_notifications: "Telegram Bot API 通知"
1056
+ telegram_bot_token: "@BotFather のボットトークン(環境変数 TELEGRAM_BOT_TOKEN を設定)"
1057
+ telegram_chat_id: "ボットが投稿するチャット・グループ・チャンネル"
1058
+ telegram_api_base_url: "Bot API サーバー(プロキシやセルフホストの場合のみ変更)"
1002
1059
  enable_pagerduty_notifications: 重大なエラーのエスカレーション
1003
1060
  pagerduty_integration_key: PagerDuty の API キー
1004
1061
  enable_webhook_notifications: 汎用の webhook エンドポイント
1005
1062
  webhook_urls: カスタム webhook エンドポイント
1063
+ webhook_signing_secret: 送信 webhook に HMAC-SHA256 署名を付けます(環境変数 WEBHOOK_SIGNING_SECRET を設定)
1006
1064
  enable_scheduled_digests: 日次/週次のサマリーメール。SolidQueue、Sidekiq、cron でスケジュールします
1007
1065
  digest_frequency: ダイジェストメールの送信頻度
1008
1066
  digest_recipients: メールアドレス (未設定の場合は通知の宛先を使用)
@@ -1020,7 +1078,7 @@ ja:
1020
1078
  source_code_context_lines: 対象行の前後に表示する行数
1021
1079
  enable_git_blame: git blame の情報を表示します
1022
1080
  source_code_cache_ttl: ソースコードのキャッシュ保持時間
1023
- only_show_app_code_source: セキュリティのため gem/標準ライブラリを非表示にします
1081
+ only_show_app_code_source: "ソースビューアーで gem と vendor のコードを非表示にします"
1024
1082
  git_branch_strategy: ブランチの解決方法
1025
1083
  enable_breadcrumbs: リクエストの操作履歴を記録します
1026
1084
  breadcrumb_buffer_size: リクエストあたりの breadcrumb の最大数
@@ -1045,6 +1103,7 @@ ja:
1045
1103
  enable_crash_capture: 未処理のクラッシュを捕捉する at_exit フック
1046
1104
  enable_coverage_tracking: 診断モード — ダッシュボードから有効にすると、ソース表示で実行された行を確認できます (Ruby
1047
1105
  3.2 以上)
1106
+ enable_missing_translation_tracking: "アプリの I18n 欠落をロケールとキーごとに数えます(I18n.exception_handler をラップ)"
1048
1107
  enable_rack_attack_tracking: throttle/blocklist イベントを専用テーブルに記録します
1049
1108
  enable_actioncable_tracking: WebSocket のチャネルイベントを breadcrumb として記録します
1050
1109
  enable_activestorage_tracking: アップロード/ダウンロード/削除を breadcrumb として記録します
@@ -1090,6 +1149,8 @@ ja:
1090
1149
  breadcrumbs: Breadcrumb
1091
1150
  system_health: システムヘルス
1092
1151
  swallowed_exceptions: 握りつぶされた例外の検出
1152
+ missing_translations: "翻訳欠落の追跡"
1153
+ boot_errors: "起動エラーの捕捉"
1093
1154
  rack_attack: Rack Attack トラッキング
1094
1155
  actioncable: ActionCable トラッキング
1095
1156
  activestorage: ActiveStorage トラッキング
@@ -1458,6 +1519,13 @@ ja:
1458
1519
  guide_link: ActionCable ガイド
1459
1520
  activestorage:
1460
1521
  title: ActiveStorage の状態
1522
+ probe:
1523
+ title: "サービスの到達性"
1524
+ reachable: "到達可能"
1525
+ unreachable: "到達不能"
1526
+ service: "サービス: %{name}"
1527
+ latency: "往復 %{ms} ms"
1528
+ how: "このページの読み込み時に、保存されることのないキーの存在確認を 1 回行います。GET /health も同じ検査を実行します。"
1461
1529
  empty:
1462
1530
  title: ActiveStorage のイベントが見つかりません
1463
1531
  message: 過去%{days}日間、エラーの breadcrumb から ActiveStorage のサービス操作は検出されませんでした。