diff --git a/src/server/i18n.h b/src/server/i18n.h index e1cbcc68..79005b72 100644 --- a/src/server/i18n.h +++ b/src/server/i18n.h @@ -111,6 +111,12 @@ private: // data const Parameters params; }; +inline ParameterizedMessage nonParameterizedMessage(const std::string& msgId) +{ + const ParameterizedMessage::Parameters noParams; + return ParameterizedMessage(msgId, noParams); +} + struct LangPreference { const std::string lang; diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index cdfa4deb..6f98b409 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -190,12 +190,6 @@ ParameterizedMessage tooManyBooksMsg(size_t nbBooks, size_t limit) ); } -ParameterizedMessage nonParameterizedMessage(const std::string& msgId) -{ - const ParameterizedMessage::Parameters noParams; - return ParameterizedMessage(msgId, noParams); -} - struct Error : public std::runtime_error { explicit Error(const ParameterizedMessage& message) : std::runtime_error("Error while handling request"), @@ -650,11 +644,11 @@ std::unique_ptr InternalServer::handle_request(const RequestContext& r } catch (std::exception& e) { fprintf(stderr, "===== Unhandled error : %s\n", e.what()); return HTTP500Response(*this, request) - + e.what(); + + ParameterizedMessage("non-translated-text", {{"MSG", e.what()}}); } catch (...) { fprintf(stderr, "===== Unhandled unknown error\n"); return HTTP500Response(*this, request) - + "Unknown error"; + + nonParameterizedMessage("unknown-error"); } } diff --git a/src/server/response.cpp b/src/server/response.cpp index f03ee5fc..36a2da24 100644 --- a/src/server/response.cpp +++ b/src/server/response.cpp @@ -205,15 +205,11 @@ UrlNotFoundResponse::UrlNotFoundResponse(const InternalServer& server, *this += ParameterizedMessage("url-not-found", {{"url", requestUrl}}); } -HTTPErrorResponse& HTTPErrorResponse::operator+(const std::string& msg) -{ - m_data["details"].push_back({"p", msg}); - return *this; -} - HTTPErrorResponse& HTTPErrorResponse::operator+(const ParameterizedMessage& details) { - return *this + details.getText(m_request.get_user_language()); + const std::string msg = details.getText(m_request.get_user_language()); + m_data["details"].push_back({"p", msg}); + return *this; } HTTPErrorResponse& HTTPErrorResponse::operator+=(const ParameterizedMessage& details) @@ -251,8 +247,7 @@ HTTP500Response::HTTP500Response(const InternalServer& server, "500-page-title", "500-page-heading") { - // operator+() is a state-modifying operator (akin to operator+=) - *this + "An internal server error occured. We are sorry about that :/"; + *this += nonParameterizedMessage("500-page-text"); } std::unique_ptr HTTP500Response::generateResponseObject() const diff --git a/src/server/response.h b/src/server/response.h index 32702de4..46ed4775 100644 --- a/src/server/response.h +++ b/src/server/response.h @@ -169,7 +169,6 @@ struct HTTPErrorResponse : ContentResponseBlueprint const std::string& headingMsgId, const std::string& cssUrl = ""); - HTTPErrorResponse& operator+(const std::string& msg); HTTPErrorResponse& operator+(const ParameterizedMessage& errorDetails); HTTPErrorResponse& operator+=(const ParameterizedMessage& errorDetails); }; diff --git a/static/skin/i18n/en.json b/static/skin/i18n/en.json index 97a71d55..8c4a6b0b 100644 --- a/static/skin/i18n/en.json +++ b/static/skin/i18n/en.json @@ -22,6 +22,7 @@ , "404-page-heading" : "Not Found" , "500-page-title" : "Internal Server Error" , "500-page-heading" : "Internal Server Error" + , "500-page-text": "An internal server error occured. We are sorry about that :/" , "fulltext-search-unavailable" : "Fulltext search unavailable" , "no-search-results": "The fulltext search engine is not available for this content." , "library-button-text": "Go to welcome page" @@ -52,4 +53,6 @@ , "download-links-heading": "Download links for {{BOOK_TITLE}}" , "download-links-title": "Download book" , "preview-book": "Preview" + , "non-translated-text": "{{MSG}}" + , "unknown-error": "Unknown error" } diff --git a/static/skin/i18n/qqq.json b/static/skin/i18n/qqq.json index d647a75e..4fa2ef94 100644 --- a/static/skin/i18n/qqq.json +++ b/static/skin/i18n/qqq.json @@ -25,6 +25,7 @@ "404-page-heading": "Heading of the 404 error page", "500-page-title": "Title of the 500 error page", "500-page-heading": "Heading of the 500 error page", + "500-page-text": "Text of the 500 error page", "fulltext-search-unavailable": "Title of the error page returned when search is attempted in a book without fulltext search database", "no-search-results": "Text of the error page returned when search is attempted in a book without fulltext search database", "library-button-text": "Tooltip of the button leading to the welcome page", @@ -53,5 +54,7 @@ "welcome-to-kiwix-server": "Title shown in browser's title bar/page tab", "download-links-heading": "Heading for no-js download page", "download-links-title": "Title for no-js download page", - "preview-book": "Tooltip of book-tile leading to the book" + "preview-book": "Tooltip of book-tile leading to the book", + "non-translated-text": "Used to display text that is generated at runtime and cannot be translated. Nothing to translate about this one.", + "unknown-error": "Unknown error" }