diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index 538fa2473..544f7e31f 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -754,7 +754,8 @@ std::unique_ptr InternalServer::handle_viewer_settings(const RequestCo const kainjow::mustache::object data{ {"enable_toolbar", m_withTaskbar ? "true" : "false" }, {"enable_link_blocking", m_blockExternalLinks ? "true" : "false" }, - {"enable_library_button", m_withLibraryButton ? "true" : "false" } + {"enable_library_button", m_withLibraryButton ? "true" : "false" }, + {"default_user_language", request.get_user_language() } }; return ContentResponse::build(*this, RESOURCE::templates::viewer_settings_js, data, "application/javascript; charset=utf-8"); } diff --git a/static/templates/viewer_settings.js b/static/templates/viewer_settings.js index 0ccf6579f..37669bb17 100644 --- a/static/templates/viewer_settings.js +++ b/static/templates/viewer_settings.js @@ -1,5 +1,6 @@ const viewerSettings = { toolbarEnabled: {{enable_toolbar}}, linkBlockingEnabled: {{enable_link_blocking}}, - libraryButtonEnabled: {{enable_library_button}} + libraryButtonEnabled: {{enable_library_button}}, + defaultUserLanguage: "{{default_user_language}}" } diff --git a/test/server.cpp b/test/server.cpp index 520f89ce3..72670d074 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -1926,7 +1926,8 @@ TEST_F(ServerTest, viewerSettings) R"(const viewerSettings = { toolbarEnabled: false, linkBlockingEnabled: false, - libraryButtonEnabled: false + libraryButtonEnabled: false, + defaultUserLanguage: "en" } )"); } @@ -1937,7 +1938,8 @@ R"(const viewerSettings = { R"(const viewerSettings = { toolbarEnabled: false, linkBlockingEnabled: true, - libraryButtonEnabled: false + libraryButtonEnabled: false, + defaultUserLanguage: "en" } )"); } @@ -1948,7 +1950,8 @@ R"(const viewerSettings = { R"(const viewerSettings = { toolbarEnabled: true, linkBlockingEnabled: false, - libraryButtonEnabled: false + libraryButtonEnabled: false, + defaultUserLanguage: "en" } )"); } @@ -1959,7 +1962,47 @@ R"(const viewerSettings = { R"(const viewerSettings = { toolbarEnabled: true, linkBlockingEnabled: false, - libraryButtonEnabled: true + libraryButtonEnabled: true, + defaultUserLanguage: "en" +} +)"); + } + + { + resetServer(ZimFileServer::WITH_TASKBAR_AND_LIBRARY_BUTTON); + const Headers headers{ {"Accept-Language", "fr"} }; + ASSERT_EQ(zfs1_->GET("/ROOT%23%3F/viewer_settings.js", headers)->body, +R"(const viewerSettings = { + toolbarEnabled: true, + linkBlockingEnabled: false, + libraryButtonEnabled: true, + defaultUserLanguage: "fr" +} +)"); + } + + { + resetServer(ZimFileServer::WITH_TASKBAR_AND_LIBRARY_BUTTON); + const Headers headers{ {"Accept-Language", "test;q=0.2, en;q=0.9"} }; + ASSERT_EQ(zfs1_->GET("/ROOT%23%3F/viewer_settings.js", headers)->body, +R"(const viewerSettings = { + toolbarEnabled: true, + linkBlockingEnabled: false, + libraryButtonEnabled: true, + defaultUserLanguage: "en" +} +)"); + } + + { + resetServer(ZimFileServer::WITH_TASKBAR_AND_LIBRARY_BUTTON); + const Headers headers{ {"Accept-Language", "test;q=0.9, en;q=0.2"} }; + ASSERT_EQ(zfs1_->GET("/ROOT%23%3F/viewer_settings.js", headers)->body, +R"(const viewerSettings = { + toolbarEnabled: true, + linkBlockingEnabled: false, + libraryButtonEnabled: true, + defaultUserLanguage: "test" } )"); }