diff --git a/static/skin/viewer.js b/static/skin/viewer.js index a311552db..8beec989e 100644 --- a/static/skin/viewer.js +++ b/static/skin/viewer.js @@ -10,13 +10,22 @@ let viewerState = { uiLanguage: 'en', }; +function dropUserLang(query) { + const q = new URLSearchParams(query); + q.delete('userlang'); + const pre = (query.startsWith('?') && q.size != 0 ? '?' : ''); + return pre + q.toString(); +} + function userUrl2IframeUrl(url) { if ( url == '' ) { return blankPageUrl; } if ( url.startsWith('search?') ) { - return `${root}/${url}`; + const q = new URLSearchParams(url.slice("search?".length)); + q.set('userlang', viewerState.uiLanguage); + return `${root}/search?${q.toString()}`; } return `${root}/content/${url}`; @@ -73,7 +82,7 @@ function quasiUriEncode(s, specialSymbols) { function performSearch() { const searchbox = document.getElementById('kiwixsearchbox'); const q = encodeURIComponent(searchbox.value); - gotoUrl(`/search?books.name=${currentBook}&pattern=${q}`); + gotoUrl(`/search?books.name=${currentBook}&pattern=${q}&userlang=${viewerState.uiLanguage}`); } function makeJSLink(jsCodeString, linkText, linkAttr="") { @@ -148,7 +157,7 @@ function iframeUrl2UserUrl(url, query) { } if ( url == `${root}/search` ) { - return `search${query}`; + return `search${dropUserLang(query)}`; } url = url.slice(root.length); @@ -537,9 +546,8 @@ function setupViewer() { const lang = getUserLanguage(); setUserLanguage(lang, finishViewerSetupOnceTranslationsAreLoaded); viewerState.uiLanguage = lang; - const q = new URLSearchParams(window.location.search); - q.delete('userlang'); - const rewrittenURL = makeURL(q.toString(), location.hash); + const cleanedUpQuery = dropUserLang(window.location.search); + const rewrittenURL = makeURL(cleanedUpQuery, location.hash); history.replaceState(viewerState, null, rewrittenURL); kiwixToolBarWrapper.style.display = 'block'; diff --git a/test/server.cpp b/test/server.cpp index 5a0bd072e..20d14acad 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -75,7 +75,7 @@ const ResourceCollection resources200Compressible{ { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css" }, { STATIC_CONTENT, "/ROOT%23%3F/skin/taskbar.css?cacheid=e014a885" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/viewer.js" }, - { STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=e9c025f2" }, + { STATIC_CONTENT, "/ROOT%23%3F/skin/viewer.js?cacheid=5fc4badf" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf" }, { STATIC_CONTENT, "/ROOT%23%3F/skin/fonts/Poppins.ttf?cacheid=af705837" }, { DYNAMIC_CONTENT, "/ROOT%23%3F/skin/fonts/Roboto.ttf" }, @@ -320,7 +320,7 @@ R"EXPECTEDRESULT( - + const blankPageUrl = root + "/skin/blank.html?cacheid=6b1fa032";