diff --git a/src/server/i18n.cpp b/src/server/i18n.cpp index f06c415b2..740df7da1 100644 --- a/src/server/i18n.cpp +++ b/src/server/i18n.cpp @@ -19,6 +19,8 @@ #include "i18n.h" +#include "tools/otherTools.h" + #include #include @@ -91,4 +93,17 @@ std::string getTranslatedString(const std::string& lang, const std::string& key) return stringDb.get(lang, key); } +namespace i18n +{ + +std::string expandParameterizedString(const std::string& lang, + const std::string& key, + const Parameters& params) +{ + const std::string tmpl = getTranslatedString(lang, key); + return render_template(tmpl, params); +} + +} // namespace i18n + } // namespace kiwix diff --git a/src/server/i18n.h b/src/server/i18n.h index ffc2341e5..4f1e645ff 100644 --- a/src/server/i18n.h +++ b/src/server/i18n.h @@ -21,6 +21,7 @@ #define KIWIX_SERVER_I18N #include +#include namespace kiwix { @@ -40,6 +41,17 @@ struct I18nStringTable { std::string getTranslatedString(const std::string& lang, const std::string& key); +namespace i18n +{ + +typedef kainjow::mustache::object Parameters; + +std::string expandParameterizedString(const std::string& lang, + const std::string& key, + const Parameters& params); + +} // namespace i18n + } // namespace kiwix #endif // KIWIX_SERVER_I18N diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index 7ecde95af..be831d5df 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -445,10 +445,11 @@ namespace std::string makeFulltextSearchSuggestion(const std::string& lang, const std::string& queryString) { - MustacheData data; - data.set("SEARCH_TERMS", queryString); - const std::string tmpl = getTranslatedString(lang, "suggest-full-text-search"); - return render_template(tmpl, data); + return i18n::expandParameterizedString(lang, "suggest-full-text-search", + { + {"SEARCH_TERMS", queryString} + } + ); } std::string noSuchBookErrorMsg(const std::string& bookName)