При отправке сообщения на форуме оно блокируется, а в всплывающем окне отображается ошибка 418 или 502 Bad Gateway. Это сообщение не совсем точно. В каком месте форума можно оптимизировать это уведомление, чтобы сделать его более подробным и понятным для пользователя?
Если пользователь откроет DevTools в браузере (правый клик > Inspect > Console), там обычно будет записано сообщение об ошибке. Также его можно найти в /logs (доступно только администраторам).
Есть ли способ изменить это сообщение об ошибке? Например, заменить текст в этом всплывающем окне на «Ошибка сети/шлюза».
Возможно, здесь кроется более глубокая проблема. Ошибки такого рода встречаются не так часто.
Похоже, я выяснил, откуда берётся это сообщение.
Когда Discourse не находит структурированное сообщение об ошибке в ответе, он использует код статуса HTTP и statusText в качестве резервного варианта:
if (!parsedError) {
if (error.status && error.status >= 400) {
parsedError = error.status + " " + error.statusText;
}
}
Исходный код Discourse: резервное обращение при ошибке HTTP.[1]
Это означает, что 502 Bad Gateway — это не обычная запись в Site Text. Она формируется на основе кода статуса и текста статуса HTTP-ответа.
Полученное сообщение затем передаётся в диалоговое окно предупреждения Discourse здесь.[2]
Discourse уже использует переведённые строки, когда сервер возвращает error_key или другую структурированную ошибку. Однако в случае «сырого» ответа 502 срабатывает описанный выше резервный вариант.
Плагин мог бы заменить сообщение перед отображением собственного диалогового окна об ошибке, но я не вижу публичного хука Plugin API для глобального изменения этого резервного сообщения. Вероятно, потребуется изменение в ядре или новый хук Plugin API, чтобы сделать эти резервные сообщения HTTP глобально настраиваемыми/переводимыми.
