mirror of https://github.com/kiwix/libkiwix.git
Properly implemented selectMostSuitableLanguage()
This commit is contained in:
parent
88597e1834
commit
634f3fcf14
|
@ -70,6 +70,14 @@ public: // functions
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t getStringCount(const std::string& lang) const {
|
||||||
|
try {
|
||||||
|
return lang2TableMap.at(lang)->entryCount;
|
||||||
|
} catch(const std::out_of_range&) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private: // functions
|
private: // functions
|
||||||
const I18nStringTable* getStringsFor(const std::string& lang) const {
|
const I18nStringTable* getStringsFor(const std::string& lang) const {
|
||||||
try {
|
try {
|
||||||
|
@ -84,13 +92,17 @@ private: // data
|
||||||
const I18nStringTable* enStrings;
|
const I18nStringTable* enStrings;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const I18nStringDB& getStringDb()
|
||||||
|
{
|
||||||
|
static const I18nStringDB stringDb;
|
||||||
|
return stringDb;
|
||||||
|
}
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
|
|
||||||
std::string getTranslatedString(const std::string& lang, const std::string& key)
|
std::string getTranslatedString(const std::string& lang, const std::string& key)
|
||||||
{
|
{
|
||||||
static const I18nStringDB stringDb;
|
return getStringDb().get(lang, key);
|
||||||
|
|
||||||
return stringDb.get(lang, key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace i18n
|
namespace i18n
|
||||||
|
@ -130,8 +142,17 @@ UserLangPreferences parseUserLanguagePreferences(const std::string& s)
|
||||||
|
|
||||||
std::string selectMostSuitableLanguage(const UserLangPreferences& prefs)
|
std::string selectMostSuitableLanguage(const UserLangPreferences& prefs)
|
||||||
{
|
{
|
||||||
// TOOD: implement properly
|
std::string bestLangSoFar("en");
|
||||||
return prefs[0].lang;
|
float bestScoreSoFar = 0;
|
||||||
|
const auto& stringDb = getStringDb();
|
||||||
|
for ( const auto& entry : prefs ) {
|
||||||
|
const float score = entry.preference * stringDb.getStringCount(entry.lang);
|
||||||
|
if ( score > bestScoreSoFar ) {
|
||||||
|
bestScoreSoFar = score;
|
||||||
|
bestLangSoFar = entry.lang;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bestLangSoFar;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace kiwix
|
} // namespace kiwix
|
||||||
|
|
Loading…
Reference in New Issue