Merge pull request #701 from kiwix/ladakhISO

Add mappings for languages not given by libicu
This commit is contained in:
Kelson 2022-03-05 17:07:48 +01:00 committed by GitHub
commit 833bbc89ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 7 deletions

View File

@ -126,13 +126,63 @@ BooksData getBooksData(const Library* library, const std::vector<std::string>& b
return booksData; return booksData;
} }
std::string getLanguageSelfName(const std::string& lang) { std::map<std::string, std::string> iso639_3 = {
const icu::Locale locale(lang.c_str()); {"atj", "atikamekw"},
{"azb", "آذربایجان دیلی"},
{"bcl", "central bikol"},
{"bgs", "tagabawa"},
{"bxr", "буряад хэлэн"},
{"cbk", "chavacano"},
{"cdo", "閩東語"},
{"dag", "Dagbani"},
{"diq", "dimli"},
{"dty", "डोटेली"},
{"eml", "emiliân-rumagnōl"},
{"fbs", "српскохрватски"},
{"ido", "ido"},
{"kbp", "kabɩ"},
{"kld", "Gamilaraay"},
{"lbe", "лакку маз"},
{"lbj", "ལ་དྭགས་སྐད་"},
{"map", "Austronesian"},
{"mhr", "марий йылме"},
{"mnw", "ဘာသာမန်"},
{"myn", "mayan"},
{"nah", "nahuatl"},
{"nai", "north American Indian"},
{"nds", "plattdütsch"},
{"nrm", "bhasa narom"},
{"olo", "livvi"},
{"pih", "Pitcairn-Norfolk"},
{"pnb", "Western Panjabi"},
{"rmr", "Caló"},
{"rmy", "romani shib"},
{"roa", "romance languages"},
{"twi", "twi"}
};
std::once_flag fillLanguagesFlag;
void fillLanguagesMap()
{
for (auto icuLangPtr = icu::Locale::getISOLanguages(); *icuLangPtr != NULL; ++icuLangPtr) {
auto lang = *icuLangPtr;
const icu::Locale locale(lang);
icu::UnicodeString ustring; icu::UnicodeString ustring;
locale.getDisplayLanguage(locale, ustring); locale.getDisplayLanguage(locale, ustring);
std::string result; std::string displayLanguage;
ustring.toUTF8String(result); ustring.toUTF8String(displayLanguage);
return result; std::string iso3LangCode = locale.getISO3Language();
iso639_3.insert({iso3LangCode, displayLanguage});
}
}
std::string getLanguageSelfName(const std::string& lang) {
const auto itr = iso639_3.find(lang);
if (itr != iso639_3.end()) {
return itr->second;
}
return lang;
}; };
} // unnamed namespace } // unnamed namespace
@ -210,6 +260,7 @@ std::string OPDSDumper::languagesOPDSFeed() const
{ {
const auto now = gen_date_str(); const auto now = gen_date_str();
kainjow::mustache::list languageData; kainjow::mustache::list languageData;
std::call_once(fillLanguagesFlag, fillLanguagesMap);
for ( const auto& langAndBookCount : library->getBooksLanguagesWithCounts() ) { for ( const auto& langAndBookCount : library->getBooksLanguagesWithCounts() ) {
const std::string languageCode = langAndBookCount.first; const std::string languageCode = langAndBookCount.first;
const int bookCount = langAndBookCount.second; const int bookCount = langAndBookCount.second;

View File

@ -146,7 +146,6 @@ bool InternalServer::start() {
if (m_verbose.load()) if (m_verbose.load())
flags |= MHD_USE_DEBUG; flags |= MHD_USE_DEBUG;
struct sockaddr_in sockAddr; struct sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); memset(&sockAddr, 0, sizeof(sockAddr));
sockAddr.sin_family = AF_INET; sockAddr.sin_family = AF_INET;