Multi-language/I18n support #22

This commit is contained in:
Proddy
2022-08-24 21:50:19 +02:00
parent 763337db3f
commit 1a4ce643fc
84 changed files with 5506 additions and 4196 deletions

View File

@@ -149,7 +149,7 @@ void WebDataService::sensor_data(AsyncWebServerRequest * request) {
obj["t"] = sensor.type();
if (sensor.type() != AnalogSensor::AnalogType::NOTUSED) {
obj["v"] = Helpers::round2(sensor.value(), 0); // is optional and is a float
obj["v"] = Helpers::transformNumFloat(sensor.value(), 0); // is optional and is a float
} else {
obj["v"] = 0; // must have a value for web sorting to work
}

View File

@@ -37,6 +37,7 @@ WebSettingsService::WebSettingsService(AsyncWebServer * server, FS * fs, Securit
}
void WebSettings::read(WebSettings & settings, JsonObject & root) {
root["locale"] = settings.locale;
root["tx_mode"] = settings.tx_mode;
root["ems_bus_id"] = settings.ems_bus_id;
root["syslog_enabled"] = settings.syslog_enabled;
@@ -107,10 +108,10 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
check_flag(prev, settings.tx_mode, ChangeFlags::UART);
prev = settings.rx_gpio;
settings.rx_gpio = root["rx_gpio"] | default_rx_gpio;
check_flag(prev, settings.rx_gpio, ChangeFlags::RESTART);
check_flag(prev, settings.rx_gpio, ChangeFlags::UART); // no need to restart
prev = settings.tx_gpio;
settings.tx_gpio = root["tx_gpio"] | default_tx_gpio;
check_flag(prev, settings.tx_gpio, ChangeFlags::RESTART);
check_flag(prev, settings.tx_gpio, ChangeFlags::UART); // no need to restart
// syslog
prev = settings.syslog_enabled;
@@ -203,8 +204,17 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
settings.low_clock = root["low_clock"] | false;
check_flag(prev, settings.low_clock, ChangeFlags::RESTART);
String old_local = settings.locale;
settings.locale = root["locale"] | EMSESP_DEFAULT_LOCALE;
EMSESP::system_.locale(settings.locale);
#ifndef EMSESP_STANDALONE
if (!old_local.equals(settings.locale)) {
add_flags(ChangeFlags::MQTT);
}
#endif
//
// without checks...
// without checks or necessary restarts...
//
settings.trace_raw = root["trace_raw"] | EMSESP_DEFAULT_TRACELOG_RAW;
EMSESP::trace_raw(settings.trace_raw);
@@ -269,6 +279,10 @@ void WebSettingsService::onUpdate() {
EMSESP::system_.led_init(true); // reload settings
}
if (WebSettings::has_flags(WebSettings::ChangeFlags::MQTT)) {
emsesp::EMSESP::mqtt_.reset_mqtt(); // reload MQTT, init HA etc
}
WebSettings::reset_flags();
}

View File

@@ -29,6 +29,7 @@ namespace emsesp {
class WebSettings {
public:
String locale;
uint8_t tx_mode;
uint8_t ems_bus_id;
bool shower_timer;
@@ -81,6 +82,7 @@ class WebSettings {
SHOWER = (1 << 4), // 16
LED = (1 << 5), // 32
BUTTON = (1 << 6), // 64
MQTT = (1 << 7), // 128
RESTART = 0xFF
};