Move lookup for translation path to separate method

This commit is contained in:
Thomas Basler 2024-10-18 20:46:35 +02:00
parent 4a247f5e94
commit 68c87c9217
3 changed files with 18 additions and 7 deletions

View File

@ -16,6 +16,7 @@ public:
I18nClass();
void init(Scheduler& scheduler);
std::list<LanguageInfo_t> getAvailableLanguages();
String getFilenameByLocale(String& locale) const;
private:
void readLangPacks();

View File

@ -25,6 +25,19 @@ std::list<LanguageInfo_t> I18nClass::getAvailableLanguages()
return _availLanguages;
}
String I18nClass::getFilenameByLocale(String& locale) const
{
auto it = std::find_if(_availLanguages.begin(), _availLanguages.end(), [locale](const LanguageInfo_t& elem) {
return elem.code == locale;
});
if (it != _availLanguages.end()) {
return it->filename;
} else {
return String();
}
}
void I18nClass::readLangPacks()
{
auto root = LittleFS.open("/");

View File

@ -40,13 +40,10 @@ void WebApiI18nClass::onI18nLanguage(AsyncWebServerRequest* request)
if (request->hasParam("code")) {
String code = request->getParam("code")->value();
const auto& languages = I18n.getAvailableLanguages();
auto it = std::find_if(languages.begin(), languages.end(), [code](const LanguageInfo_t& elem) {
return elem.code == code;
});
String filename = I18n.getFilenameByLocale(code);
if (it != languages.end()) {
String md5 = Utils::generateMd5FromFile(it->filename);
if (filename != "") {
String md5 = Utils::generateMd5FromFile(filename);
String expectedEtag;
expectedEtag = "\"";
@ -64,7 +61,7 @@ void WebApiI18nClass::onI18nLanguage(AsyncWebServerRequest* request)
if (eTagMatch) {
response = request->beginResponse(304);
} else {
response = request->beginResponse(LittleFS, it->filename, asyncsrv::T_application_json);
response = request->beginResponse(LittleFS, filename, asyncsrv::T_application_json);
}
// HTTP requires cache headers in 200 and 304 to be identical