diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index 81c7f8a73..7ecde95af 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -443,11 +443,11 @@ SuggestionsList_t getSuggestions(SuggestionSearcherCache& cache, const zim::Arch namespace { -std::string makeFulltextSearchSuggestion(const std::string& queryString) +std::string makeFulltextSearchSuggestion(const std::string& lang, const std::string& queryString) { MustacheData data; data.set("SEARCH_TERMS", queryString); - const std::string tmpl = getTranslatedString("en", "suggest-full-text-search"); + const std::string tmpl = getTranslatedString(lang, "suggest-full-text-search"); return render_template(tmpl, data); } @@ -523,7 +523,8 @@ std::unique_ptr InternalServer::handle_suggest(const RequestContext& r /* Propose the fulltext search if possible */ if (archive->hasFulltextIndex()) { MustacheData result; - result.set("label", makeFulltextSearchSuggestion(queryString)); + const auto lang = request.get_user_language(); + result.set("label", makeFulltextSearchSuggestion(lang, queryString)); result.set("value", queryString + " "); result.set("kind", "pattern"); result.set("first", first); diff --git a/src/server/request_context.cpp b/src/server/request_context.cpp index 765d01adf..5ac9fe8dd 100644 --- a/src/server/request_context.cpp +++ b/src/server/request_context.cpp @@ -193,4 +193,9 @@ std::string RequestContext::get_query() const { return q; } +std::string RequestContext::get_user_language() const +{ + return get_optional_param("userlang", "en"); +} + } diff --git a/src/server/request_context.h b/src/server/request_context.h index 5457ae4bf..7bdd7d87c 100644 --- a/src/server/request_context.h +++ b/src/server/request_context.h @@ -94,6 +94,8 @@ class RequestContext { bool can_compress() const { return acceptEncodingDeflate; } + std::string get_user_language() const; + private: // data std::string full_url; std::string url; diff --git a/static/i18n/hy.json b/static/i18n/hy.json new file mode 100644 index 000000000..b1963af29 --- /dev/null +++ b/static/i18n/hy.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + ] + }, + "name":"Հայերեն", + "suggest-full-text-search": "որոնել '{{{SEARCH_TERMS}}}'..." +} diff --git a/static/i18n_resources_list.txt b/static/i18n_resources_list.txt index eb8bddb12..d7a04cdb9 100644 --- a/static/i18n_resources_list.txt +++ b/static/i18n_resources_list.txt @@ -1 +1,2 @@ i18n/en.json +i18n/hy.json diff --git a/static/skin/taskbar.js b/static/skin/taskbar.js index d2d26fb85..421758216 100644 --- a/static/skin/taskbar.js +++ b/static/skin/taskbar.js @@ -12,9 +12,10 @@ jq(document).ready(() => { ? (new URLSearchParams(window.location.search)).get('content') : window.location.pathname.split(`${root}/`)[1].split('/')[0]; + const userlang = (new URLSearchParams(window.location.search)).get('userlang') || "en"; $( "#kiwixsearchbox" ).autocomplete({ - source: `${root}/suggest?content=${bookName}`, + source: `${root}/suggest?content=${bookName}&userlang=${userlang}`, dataType: "json", cache: false, diff --git a/test/server.cpp b/test/server.cpp index d4056dda0..d56f22d51 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -1182,6 +1182,17 @@ R"EXPECTEDRESPONSE([ //EOLWHITESPACEMARKER } ] +)EXPECTEDRESPONSE" + }, + { /* url: */ "/ROOT/suggest?content=zimfile&term=abracadabra&userlang=hy", +R"EXPECTEDRESPONSE([ + { + "value" : "abracadabra ", + "label" : "որոնել 'abracadabra'...", + "kind" : "pattern" + //EOLWHITESPACEMARKER + } +] )EXPECTEDRESPONSE" }, };