From 34b50ba30e9393f6f65fa5eabf0b0caa765fbbc3 Mon Sep 17 00:00:00 2001 From: Nikhil Tanwar <2002nikhiltanwar@gmail.com> Date: Mon, 14 Feb 2022 15:18:05 +0530 Subject: [PATCH 1/3] Add mappings for languages not given by libicu Adds a std::map with display names for language codes not given by libicu Fault language codes are taken from library.kiwix.org --- src/opds_dumper.cpp | 62 +++++++++++++++++++++++++++++++---- src/server/internalServer.cpp | 1 - 2 files changed, 56 insertions(+), 7 deletions(-) diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index 361eaa204..f16ee5693 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -126,13 +126,62 @@ BooksData getBooksData(const Library* library, const std::vector& b return booksData; } +std::map iso639_3 = { + {"atj","atikamekw"}, + {"azb","آذربایجان دیلی"}, + {"bcl","central bikol"}, + {"bgs","tagabawa"}, + {"bxr","буряад хэлэн"}, + {"cbk","chavacano"}, + {"cdo","閩東語"}, + {"diq","dimli"}, + {"dty","डोटेली"}, + {"eml","emiliân-rumagnōl"}, + {"fbs","српскохрватски"}, + {"kbp","kabɩyɛ"}, + {"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"}, + {"ido","ido"} +}; + +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; + locale.getDisplayLanguage(locale, ustring); + std::string displayLanguage; + ustring.toUTF8String(displayLanguage); + std::string iso3LangCode = locale.getISO3Language(); + iso639_3.insert({iso3LangCode, displayLanguage}); + } +} + std::string getLanguageSelfName(const std::string& lang) { - const icu::Locale locale(lang.c_str()); - icu::UnicodeString ustring; - locale.getDisplayLanguage(locale, ustring); - std::string result; - ustring.toUTF8String(result); - return result; + const auto itr = iso639_3.find(lang); + if (itr != iso639_3.end()) { + return itr->second; + } + return lang; }; } // unnamed namespace @@ -210,6 +259,7 @@ std::string OPDSDumper::languagesOPDSFeed() const { const auto now = gen_date_str(); kainjow::mustache::list languageData; + std::call_once(fillLanguagesFlag, fillLanguagesMap); for ( const auto& langAndBookCount : library->getBooksLanguagesWithCounts() ) { const std::string languageCode = langAndBookCount.first; const int bookCount = langAndBookCount.second; diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index af26bcc98..df17033c1 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -146,7 +146,6 @@ bool InternalServer::start() { if (m_verbose.load()) flags |= MHD_USE_DEBUG; - struct sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); sockAddr.sin_family = AF_INET; From 9488842416a40d545426b3ee7b537910aa781b98 Mon Sep 17 00:00:00 2001 From: Nikhil Tanwar <2002nikhiltanwar@gmail.com> Date: Fri, 25 Feb 2022 16:33:20 +0530 Subject: [PATCH 2/3] Add dagbani language in language map Adds dagbani (dag) language in iso639_3 language map --- src/opds_dumper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index f16ee5693..5df9fb944 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -157,7 +157,8 @@ std::map iso639_3 = { {"rmy","romani shib"}, {"roa","romance languages"}, {"twi","twi"}, - {"ido","ido"} + {"ido","ido"}, + {"dag", "Dagbani"} }; std::once_flag fillLanguagesFlag; From 4bd02f07eb3fa391dd40044529312c3a86ef22e4 Mon Sep 17 00:00:00 2001 From: Emmanuel Engelhart Date: Sat, 5 Mar 2022 16:56:21 +0100 Subject: [PATCH 3/3] Beautify slightly the code --- src/opds_dumper.cpp | 66 ++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/opds_dumper.cpp b/src/opds_dumper.cpp index 5df9fb944..af642246c 100644 --- a/src/opds_dumper.cpp +++ b/src/opds_dumper.cpp @@ -127,43 +127,43 @@ BooksData getBooksData(const Library* library, const std::vector& b } std::map iso639_3 = { - {"atj","atikamekw"}, - {"azb","آذربایجان دیلی"}, - {"bcl","central bikol"}, - {"bgs","tagabawa"}, - {"bxr","буряад хэлэн"}, - {"cbk","chavacano"}, - {"cdo","閩東語"}, - {"diq","dimli"}, - {"dty","डोटेली"}, - {"eml","emiliân-rumagnōl"}, - {"fbs","српскохрватски"}, - {"kbp","kabɩyɛ"}, - {"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"}, - {"ido","ido"}, - {"dag", "Dagbani"} + {"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ɩyɛ"}, + {"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() +void fillLanguagesMap() { for (auto icuLangPtr = icu::Locale::getISOLanguages(); *icuLangPtr != NULL; ++icuLangPtr) { auto lang = *icuLangPtr;