Move lookup for translation path to separate method
This commit is contained in:
parent
4a247f5e94
commit
68c87c9217
@ -16,6 +16,7 @@ public:
|
|||||||
I18nClass();
|
I18nClass();
|
||||||
void init(Scheduler& scheduler);
|
void init(Scheduler& scheduler);
|
||||||
std::list<LanguageInfo_t> getAvailableLanguages();
|
std::list<LanguageInfo_t> getAvailableLanguages();
|
||||||
|
String getFilenameByLocale(String& locale) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void readLangPacks();
|
void readLangPacks();
|
||||||
|
|||||||
13
src/I18n.cpp
13
src/I18n.cpp
@ -25,6 +25,19 @@ std::list<LanguageInfo_t> I18nClass::getAvailableLanguages()
|
|||||||
return _availLanguages;
|
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()
|
void I18nClass::readLangPacks()
|
||||||
{
|
{
|
||||||
auto root = LittleFS.open("/");
|
auto root = LittleFS.open("/");
|
||||||
|
|||||||
@ -40,13 +40,10 @@ void WebApiI18nClass::onI18nLanguage(AsyncWebServerRequest* request)
|
|||||||
if (request->hasParam("code")) {
|
if (request->hasParam("code")) {
|
||||||
String code = request->getParam("code")->value();
|
String code = request->getParam("code")->value();
|
||||||
|
|
||||||
const auto& languages = I18n.getAvailableLanguages();
|
String filename = I18n.getFilenameByLocale(code);
|
||||||
auto it = std::find_if(languages.begin(), languages.end(), [code](const LanguageInfo_t& elem) {
|
|
||||||
return elem.code == code;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (it != languages.end()) {
|
if (filename != "") {
|
||||||
String md5 = Utils::generateMd5FromFile(it->filename);
|
String md5 = Utils::generateMd5FromFile(filename);
|
||||||
|
|
||||||
String expectedEtag;
|
String expectedEtag;
|
||||||
expectedEtag = "\"";
|
expectedEtag = "\"";
|
||||||
@ -64,7 +61,7 @@ void WebApiI18nClass::onI18nLanguage(AsyncWebServerRequest* request)
|
|||||||
if (eTagMatch) {
|
if (eTagMatch) {
|
||||||
response = request->beginResponse(304);
|
response = request->beginResponse(304);
|
||||||
} else {
|
} 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
|
// HTTP requires cache headers in 200 and 304 to be identical
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user