From 44fb0afffa5c1df68bba3bde1f0c3633fa327e79 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 May 2026 13:42:28 +0300 Subject: [PATCH 1/7] refactor: reformat locales --- src_data/locales/cn.json | 18 ++++++++++++------ src_data/locales/en.json | 18 ++++++++++++------ src_data/locales/it.json | 18 ++++++++++++------ src_data/locales/nl.json | 18 ++++++++++++------ src_data/locales/ru.json | 18 ++++++++++++------ src_data/pages/dashboard.html | 4 ++-- src_data/pages/upgrade.html | 4 ++-- 7 files changed, 64 insertions(+), 34 deletions(-) diff --git a/src_data/locales/cn.json b/src_data/locales/cn.json index 9b8f90e..9e0928f 100644 --- a/src_data/locales/cn.json +++ b/src_data/locales/cn.json @@ -89,7 +89,7 @@ "thermostat": { "heating": "供暖", "dhw": "生活热水", - "temp.current": "当前温度", + "currentTemp": "当前温度", "enable": "启用", "turbo": "Turbo 模式" }, @@ -188,7 +188,9 @@ }, "sta": { - "channel.note": "自动选择设置为0" + "channel": { + "note": "自动选择设置为0" + } } }, @@ -528,10 +530,14 @@ "name": "固件升级", "section": { - "backupAndRestore": "备份与恢复", - "backupAndRestore.desc": "本功能支持备份和恢复全部设置", - "upgrade": "升级", - "upgrade.desc": "本模块支持升级设备的固件与系统文件。
可从以下地址下载最新版本 Releases page 。" + "backupAndRestore": { + "title": "备份与恢复", + "desc": "本功能支持备份和恢复全部设置" + }, + "upgrade": { + "title": "升级", + "desc": "本模块支持升级设备的固件与系统文件。
可从以下地址下载最新版本 Releases page 。" + } }, "note": { diff --git a/src_data/locales/en.json b/src_data/locales/en.json index 90e2a68..f5f4c06 100644 --- a/src_data/locales/en.json +++ b/src_data/locales/en.json @@ -89,7 +89,7 @@ "thermostat": { "heating": "Heating", "dhw": "DHW", - "temp.current": "Current", + "currentTemp": "Current", "enable": "Enable", "turbo": "Turbo mode" }, @@ -188,7 +188,9 @@ }, "sta": { - "channel.note": "set 0 for auto select" + "channel": { + "note": "set 0 for auto select" + } } }, @@ -528,10 +530,14 @@ "name": "Upgrade", "section": { - "backupAndRestore": "Backup & restore", - "backupAndRestore.desc": "In this section you can save and restore a backup of ALL settings.", - "upgrade": "Upgrade", - "upgrade.desc": "In this section you can upgrade the firmware and filesystem of your device.
Latest releases can be downloaded from the Releases page of the project repository." + "backupAndRestore": { + "title": "Backup & restore", + "desc": "In this section you can save and restore a backup of ALL settings." + }, + "upgrade": { + "title": "Upgrade", + "desc": "In this section you can upgrade the firmware and filesystem of your device.
Latest releases can be downloaded from the Releases page of the project repository." + } }, "note": { diff --git a/src_data/locales/it.json b/src_data/locales/it.json index 9b0292a..55fe3f9 100644 --- a/src_data/locales/it.json +++ b/src_data/locales/it.json @@ -89,7 +89,7 @@ "thermostat": { "heating": "Riscaldamento", "dhw": "ACS", - "temp.current": "Attuale", + "currentTemp": "Attuale", "enable": "Attiva", "turbo": "Turbo" }, @@ -188,7 +188,9 @@ }, "sta": { - "channel.note": "Metti 0 per auto selezione" + "channel": { + "note": "Metti 0 per auto selezione" + } } }, @@ -528,10 +530,14 @@ "name": "Aggiornamenti", "section": { - "backupAndRestore": "Backup & restore", - "backupAndRestore.desc": "In questa sezione puoi salvare e recuperare un backup di tutte le impostazioni.", - "upgrade": "Aggiorna", - "upgrade.desc": "In questa sezione puoi aggiornare il firmware il filesystem del tuo dispositivo.
L'ultimo aggiornamento può essere scaricato da Releases page del progetto." + "backupAndRestore": { + "title": "Backup & restore", + "desc": "In questa sezione puoi salvare e recuperare un backup di tutte le impostazioni." + }, + "upgrade": { + "title": "Aggiorna", + "desc": "In questa sezione puoi aggiornare il firmware il filesystem del tuo dispositivo.
L'ultimo aggiornamento può essere scaricato da Releases page del progetto." + } }, "note": { diff --git a/src_data/locales/nl.json b/src_data/locales/nl.json index eadab19..ca1d514 100644 --- a/src_data/locales/nl.json +++ b/src_data/locales/nl.json @@ -82,7 +82,7 @@ "thermostat": { "heating": "Verwarming", "dhw": "Warm water", - "temp.current": "Huidig", + "currentTemp": "Huidig", "enable": "Inschakelen", "turbo": "Turbomodus" }, @@ -169,7 +169,9 @@ "dns": "DNS" }, "sta": { - "channel.note": "zet op 0 voor automatische selectie" + "channel": { + "note": "zet op 0 voor automatische selectie" + } } }, "sensors": { @@ -490,10 +492,14 @@ "title": "Upgrade - OpenTherm Gateway", "name": "Upgrade", "section": { - "backupAndRestore": "Back-up & herstel", - "backupAndRestore.desc": "In deze sectie kunt u een back-up van ALLE instellingen opslaan en herstellen.", - "upgrade": "Upgrade", - "upgrade.desc": "In deze sectie kunt u de firmware en het bestandssysteem van uw apparaat upgraden.
De nieuwste releases kunnen worden gedownload van de Releases-pagina van de projectrepository." + "backupAndRestore": { + "title": "Back-up & herstel", + "desc": "In deze sectie kunt u een back-up van ALLE instellingen opslaan en herstellen." + }, + "upgrade": { + "title": "Upgrade", + "desc": "In deze sectie kunt u de firmware en het bestandssysteem van uw apparaat upgraden.
De nieuwste releases kunnen worden gedownload van de Releases-pagina van de projectrepository." + } }, "note": { "disclaimer1": "Na een succesvolle upgrade van het bestandssysteem worden ALLE instellingen teruggezet naar de standaardwaarden! Sla een back-up op voordat u gaat upgraden.", diff --git a/src_data/locales/ru.json b/src_data/locales/ru.json index 5e1e5c3..7fdfa72 100644 --- a/src_data/locales/ru.json +++ b/src_data/locales/ru.json @@ -90,7 +90,7 @@ "thermostat": { "heating": "Отопление", "dhw": "ГВС", - "temp.current": "Текущая", + "currentTemp": "Текущая", "enable": "Вкл", "turbo": "Турбо" }, @@ -189,7 +189,9 @@ }, "sta": { - "channel.note": "установите 0 для автоматического выбора" + "channel": { + "note": "установите 0 для автоматического выбора" + } } }, @@ -529,10 +531,14 @@ "name": "Обновление", "section": { - "backupAndRestore": "Резервное копирование и восстановление", - "backupAndRestore.desc": "В этом разделе вы можете сохранить и восстановить резервную копию ВСЕХ настроек.", - "upgrade": "Обновление", - "upgrade.desc": "В этом разделе вы можете обновить прошивку и файловую систему вашего устройства.
Последнюю версию можно загрузить со страницы Релизы в репозитории проекта." + "backupAndRestore": { + "title": "Резервное копирование и восстановление", + "desc": "В этом разделе вы можете сохранить и восстановить резервную копию ВСЕХ настроек." + }, + "upgrade": { + "title": "Обновление", + "desc": "В этом разделе вы можете обновить прошивку и файловую систему вашего устройства.
Последнюю версию можно загрузить со страницы Релизы в репозитории проекта." + } }, "note": { diff --git a/src_data/pages/dashboard.html b/src_data/pages/dashboard.html index 7e87834..50f57e5 100644 --- a/src_data/pages/dashboard.html +++ b/src_data/pages/dashboard.html @@ -47,7 +47,7 @@
dashboard.thermostat.heating
-
dashboard.thermostat.temp.current:
+
dashboard.thermostat.currentTemp:
@@ -68,7 +68,7 @@
dashboard.thermostat.dhw
-
dashboard.thermostat.temp.current:
+
dashboard.thermostat.currentTemp:
diff --git a/src_data/pages/upgrade.html b/src_data/pages/upgrade.html index 80c6202..dcdca33 100644 --- a/src_data/pages/upgrade.html +++ b/src_data/pages/upgrade.html @@ -35,7 +35,7 @@
-

upgrade.section.backupAndRestore

+

upgrade.section.backupAndRestore.title

upgrade.section.backupAndRestore.desc

@@ -56,7 +56,7 @@
-

upgrade.section.upgrade

+

upgrade.section.upgrade.title

upgrade.section.upgrade.desc

From ec7a24ce0c9eb08852e652d6c5d66a44678fe43a Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sat, 16 May 2026 15:00:23 +0200 Subject: [PATCH 2/7] refactor(translation): updated Russian language (#245) Currently translated at 100.0% (346 of 346 strings) Translation: OTGateway/Portal Translate-URL: https://hosted.weblate.org/projects/otgateway/portal/ru/ Co-authored-by: Yurii --- src_data/locales/ru.json | 50 +++------------------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/src_data/locales/ru.json b/src_data/locales/ru.json index 7fdfa72..726f0b1 100644 --- a/src_data/locales/ru.json +++ b/src_data/locales/ru.json @@ -8,7 +8,6 @@ "issues": "Проблемы и вопросы", "releases": "Релизы" }, - "units": { "days": "д.", "hours": "ч.", @@ -22,7 +21,6 @@ "byte": "байт", "mbyte": "мбайт" }, - "button": { "upgrade": "Обновить", "restart": "Перезагрузка", @@ -37,15 +35,12 @@ "success": "Успешно", "error": "Ошибка" }, - "index": { "title": "OpenTherm Gateway", - "section": { "network": "Сеть", "system": "Система" }, - "system": { "build": { "title": "Билд", @@ -57,8 +52,8 @@ }, "uptime": "Аптайм", "memory": { - "heap": "Heap", - "psram": "Psram", + "heap": "Память (heap)", + "psram": "Память (PSRAM)", "maxFreeBlock": "макс. блок", "min": "мин." }, @@ -75,18 +70,15 @@ "lastResetReason": "Причина перезагрузки" } }, - "dashboard": { "name": "Дашборд", "title": "Дашборд - OpenTherm Gateway", - "section": { "control": "Управление", "states": "Состояние", "sensors": "Сенсоры", "diag": "Диагностика OpenTherm" }, - "thermostat": { "heating": "Отопление", "dhw": "ГВС", @@ -94,7 +86,6 @@ "enable": "Вкл", "turbo": "Турбо" }, - "notify": { "fault": { "title": "Состояние неисправности котла активно!", @@ -106,7 +97,6 @@ }, "reset": "Сбросить" }, - "states": { "mNetworkConnected": "Подключение к сети", "mMqttConnected": "Подключение к MQTT", @@ -114,7 +104,6 @@ "mExtPumpState": "Внешний насос", "mCascadeControlInput": "Каскадное управление (вход)", "mCascadeControlOutput": "Каскадное управление (выход)", - "sConnected": "Подключение к OpenTherm", "sFlame": "Пламя", "sCoolingActive": "Охлаждение", @@ -123,7 +112,6 @@ "sFaultCode": "Код ошибки", "sDiagActive": "Диагностика", "sDiagCode": "Диагностический код", - "mHeatEnabled": "Отопление", "mHeatBlocking": "Блокировка отопления", "mHeatOverheat": "Отопление, перегрев", @@ -135,7 +123,6 @@ "mHeatRetTemp": "Отопление, температура обратки", "mHeatIndoorTemp": "Отопление, внутренняя темп.", "mHeatOutdoorTemp": "Отопление, наружная темп.", - "mDhwEnabled": "ГВС", "mDhwOverheat": "ГВС, перегрев", "sDhwActive": "Активность ГВС", @@ -143,7 +130,6 @@ "mDhwCurrTemp": "ГВС, текущая температура", "mDhwRetTemp": "ГВС, температура обратки" }, - "sensors": { "values": { "temp": "Температура", @@ -153,23 +139,19 @@ } } }, - "network": { "title": "Сеть - OpenTherm Gateway", "name": "Настройки сети", - "section": { "static": "Статические параметры", "availableNetworks": "Доступные сети", "staSettings": "Настройки подключения", "apSettings": "Настройки точки доступа" }, - "scan": { "pos": "#", "info": "Инфо" }, - "wifi": { "ssid": "Имя сети", "password": "Пароль", @@ -177,7 +159,6 @@ "signal": "Сигнал", "connected": "Подключено" }, - "params": { "hostname": "Имя хоста", "dhcp": "Использовать DHCP", @@ -187,18 +168,15 @@ "gateway": "Адрес шлюза", "dns": "DNS адрес" }, - "sta": { "channel": { "note": "установите 0 для автоматического выбора" } } }, - "sensors": { "title": "Настройки сенсоров - OpenTherm Gateway", "name": "Настройки сенсоров", - "enabled": "Включить и использовать", "sensorName": { "title": "Имя сенсора", @@ -255,7 +233,6 @@ "otHeatingPumpHours": "OpenTherm, кол-во часов работы насоса (отопление)", "otDhwPumpHours": "OpenTherm, кол-во часов работы насоса (ГВС)", "otCoolingHours": "OpenTherm, кол-во часов работы охлаждения", - "ntcTemp": "NTC датчик", "dallasTemp": "DALLAS датчик", "bluetooth": "BLE датчик", @@ -287,11 +264,9 @@ } } }, - "settings": { "title": "Настройки - OpenTherm Gateway", "name": "Настройки", - "section": { "portal": "Настройки портала", "system": "Системные настройки", @@ -306,14 +281,12 @@ "extPump": "Настройки дополнительного насоса", "cascadeControl": "Настройки каскадного управления" }, - "enable": "Вкл", "note": { "restart": "После изменения этих настроек устройство необходимо перезагрузить, чтобы изменения вступили в силу.", "blankNotUse": "пусто - не использовать", "bleDevice": "BLE устройство можно использовать только с некоторыми платами ESP32, которые поддерживают BLE!" }, - "temp": { "min": "Мин. температура", "max": "Макс. температура" @@ -343,14 +316,12 @@ "note": "Порог, при котором отопление будет принудительно включено" } }, - "portal": { "login": "Логин", "password": "Пароль", "auth": "Требовать аутентификацию", "mdns": "Использовать mDNS" }, - "system": { "unit": "Система единиц", "metric": "Метрическая (цельсии, литры, бары)", @@ -370,7 +341,6 @@ "timezonePresets": "Выберите пресет..." } }, - "heating": { "hyst": { "title": "Гистерезис", @@ -384,17 +354,14 @@ }, "turboFactor": "Коэфф. турбо режима" }, - "emergency": { "desc": "Аварийный режим активируется автоматически, если «ПИД» или «ПЗА» не могут рассчитать уставку теплоносителя:
- если «ПЗА» включен и датчик наружной температуры отключен;
- если включен «ПИД» или OT опция «Передать управление отоплением котлу» и датчик внутренней температуры отключен.
Примечание: При сбое сети или MQTT датчики с типом «Вручную через MQTT/API» будут находиться в состоянии ОТКЛЮЧЕН.", - "target": { "title": "Целевая температура", "note": "Важно: Целевая температура в помещении, если включена ОТ опция «Передать управление отоплением котлу».
Во всех остальных случаях целевая температура теплоносителя." }, "treshold": "Пороговое время включения (сек)" }, - "equitherm": { "slope": { "title": "Наклон", @@ -418,7 +385,6 @@ "outdoorTemp": "Наружная температура" } }, - "pid": { "p": "Коэффициент P", "i": "Коэффициент I", @@ -438,7 +404,6 @@ "thresholdLow": "Нижний порог" } }, - "ot": { "advanced": "Дополнительные настройки", "inGpio": "Вход GPIO", @@ -454,7 +419,6 @@ "title": "Макс. мощность котла (кВт)", "note": "0 - попробовать определить автоматически. Обычно можно найти в спецификации котла как \"максимальная полезная тепловая мощность\"." }, - "options": { "title": "Опции (дополнительные настройки)", "desc": "Опции могут менять логику работы котла. Не все опции задокументированы в протоколе, поэтому одна и та же опция может иметь разный эффект на разных котлах.
Примечание: Нет необходимости что-то менять, если всё работает хорошо.", @@ -476,13 +440,11 @@ "immergasFix": "Фикс для котлов Immergas", "alwaysSendIndoorTemp": "Передавать текущую темп. в помещении котлу" }, - "nativeOTC": { "title": "Нативный режим OTC (расчёт температуры теплоносителя)", "note": "Работает ТОЛЬКО если котел в режиме OTC: требует и принимает целевую температуру в помещении и сам регулирует температуру теплоносителя на основе встроенного режима кривых. Несовместимо с ПИД и ПЗА." } }, - "mqtt": { "homeAssistantDiscovery": "Home Assistant Discovery", "server": "Адрес сервера", @@ -492,7 +454,6 @@ "prefix": "Префикс", "interval": "Интервал публикации (сек)" }, - "extPump": { "use": "Использовать доп. насос", "gpio": "GPIO реле", @@ -501,7 +462,6 @@ "antiStuckInterval": "Интервал защиты от блокировки (в днях)", "antiStuckTime": "Время работы насоса (в минутах)" }, - "cascadeControl": { "input": { "desc": "Может использоваться для включения отопления только при неисправности другого котла. Контроллер другого котла должен изменить состояние входа GPIO в случае неисправности.", @@ -525,11 +485,9 @@ } } }, - "upgrade": { "title": "Обновление - OpenTherm Gateway", "name": "Обновление", - "section": { "backupAndRestore": { "title": "Резервное копирование и восстановление", @@ -540,15 +498,13 @@ "desc": "В этом разделе вы можете обновить прошивку и файловую систему вашего устройства.
Последнюю версию можно загрузить со страницы Релизы в репозитории проекта." } }, - "note": { "disclaimer1": "После успешного обновления файловой системы ВСЕ настройки будут сброшены на стандартные! Создайте резервную копию ПЕРЕД обновлением.", "disclaimer2": "После успешного обновления устройство автоматически перезагрузится через 15 секунд." }, - "settingsFile": "Файл настроек", "fw": "Прошивка", "fs": "Файловая система" } } -} \ No newline at end of file +} From dd9cb0b88f40c2dcef35590ba46b791c09494f89 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 May 2026 15:20:14 +0200 Subject: [PATCH 3/7] refactor(translation): updated English language Currently translated at 100.0% (346 of 346 strings) Translation: OTGateway/Portal Translate-URL: https://hosted.weblate.org/projects/otgateway/portal/en/ --- src_data/locales/en.json | 51 ++++------------------------------------ 1 file changed, 4 insertions(+), 47 deletions(-) diff --git a/src_data/locales/en.json b/src_data/locales/en.json index f5f4c06..c78a461 100644 --- a/src_data/locales/en.json +++ b/src_data/locales/en.json @@ -21,7 +21,6 @@ "byte": "byte", "mbyte": "MB" }, - "button": { "upgrade": "Upgrade", "restart": "Restart", @@ -36,15 +35,12 @@ "success": "Success", "error": "Error" }, - "index": { "title": "OpenTherm Gateway", - "section": { "network": "Network", "system": "System" }, - "system": { "build": { "title": "Build", @@ -56,8 +52,8 @@ }, "uptime": "Uptime", "memory": { - "heap": "Heap", - "psram": "Psram", + "heap": "Memory (heap)", + "psram": "Memory (PSRAM)", "maxFreeBlock": "max free block", "min": "min" }, @@ -74,18 +70,15 @@ "lastResetReason": "Last reset reason" } }, - "dashboard": { "name": "Dashboard", "title": "Dashboard - OpenTherm Gateway", - "section": { "control": "Control", "states": "States", "sensors": "Sensors", "diag": "OpenTherm diagnostic" }, - "thermostat": { "heating": "Heating", "dhw": "DHW", @@ -93,7 +86,6 @@ "enable": "Enable", "turbo": "Turbo mode" }, - "notify": { "fault": { "title": "Boiler Fault state is active!", @@ -105,7 +97,6 @@ }, "reset": "Try reset" }, - "states": { "mNetworkConnected": "Network connection", "mMqttConnected": "MQTT connection", @@ -113,7 +104,6 @@ "mExtPumpState": "External pump", "mCascadeControlInput": "Cascade control (input)", "mCascadeControlOutput": "Cascade control (output)", - "sConnected": "OpenTherm connection", "sFlame": "Flame", "sCoolingActive": "Cooling", @@ -122,7 +112,6 @@ "sFaultCode": "Fault code", "sDiagActive": "Diagnostic", "sDiagCode": "Diagnostic code", - "mHeatEnabled": "Heating enabled", "mHeatBlocking": "Heating blocked", "mHeatOverheat": "Heating overheat", @@ -134,7 +123,6 @@ "mHeatRetTemp": "Heating return temp", "mHeatIndoorTemp": "Heating, indoor temp", "mHeatOutdoorTemp": "Heating, outdoor temp", - "mDhwEnabled": "DHW enabled", "mDhwOverheat": "DHW overheat", "sDhwActive": "DHW active", @@ -142,7 +130,6 @@ "mDhwCurrTemp": "DHW current temp", "mDhwRetTemp": "DHW return temp" }, - "sensors": { "values": { "temp": "Temperature", @@ -152,23 +139,19 @@ } } }, - "network": { "title": "Network - OpenTherm Gateway", "name": "Network settings", - "section": { "static": "Static settings", "availableNetworks": "Available networks", "staSettings": "WiFi settings", "apSettings": "AP settings" }, - "scan": { "pos": "#", "info": "Info" }, - "wifi": { "ssid": "SSID", "password": "Password", @@ -176,7 +159,6 @@ "signal": "Signal", "connected": "Connected" }, - "params": { "hostname": "Hostname", "dhcp": "Use DHCP", @@ -186,18 +168,15 @@ "gateway": "Gateway", "dns": "DNS" }, - "sta": { "channel": { "note": "set 0 for auto select" } } }, - "sensors": { "title": "Sensors settings - OpenTherm Gateway", "name": "Sensors settings", - "enabled": "Enabled", "sensorName": { "title": "Sensor name", @@ -254,7 +233,6 @@ "otHeatingPumpHours": "OpenTherm, number of pump operating hours (heating)", "otDhwPumpHours": "OpenTherm, number of pump operating hours (DHW)", "otCoolingHours": "OpenTherm, number of cooling hours", - "ntcTemp": "NTC sensor", "dallasTemp": "DALLAS sensor", "bluetooth": "BLE sensor", @@ -286,11 +264,9 @@ } } }, - "settings": { "title": "Settings - OpenTherm Gateway", "name": "Settings", - "section": { "portal": "Portal settings", "system": "System settings", @@ -305,14 +281,12 @@ "extPump": "External pump settings", "cascadeControl": "Cascade control settings" }, - "enable": "Enable", "note": { "restart": "After changing these settings, the device must be restarted for the changes to take effect.", "blankNotUse": "blank - not use", "bleDevice": "BLE device can be used only with some ESP32 boards with BLE support!" }, - "temp": { "min": "Minimum temperature", "max": "Maximum temperature" @@ -342,14 +316,12 @@ "note": "Threshold when heating is forced to turn on" } }, - "portal": { "login": "Login", "password": "Password", "auth": "Require authentication", "mdns": "Use mDNS" }, - "system": { "unit": "Unit system", "metric": "Metric (celsius, liters, bar)", @@ -369,7 +341,6 @@ "timezonePresets": "Select preset..." } }, - "heating": { "hyst": { "title": "Hysteresis", @@ -383,17 +354,14 @@ }, "turboFactor": "Turbo mode coeff." }, - "emergency": { "desc": "Emergency mode is activated automatically when «PID» or «Equitherm» cannot calculate the heat carrier setpoint:
- if «Equitherm» is enabled and the outdoor temperature sensor is disconnected;
- if «PID» or OT option «Native heating control» is enabled and the indoor temperature sensor is disconnected.
Note: On network fault or MQTT fault, sensors with «Manual via MQTT/API» type will be in DISCONNECTED state.", - "target": { "title": "Target temperature", "note": "Important: Target indoor temperature if OT option «Native heating control» is enabled.
In all other cases, the target heat carrier temperature." }, "treshold": "Treshold time (sec)" }, - "equitherm": { "slope": { "title": "Slope", @@ -417,7 +385,6 @@ "outdoorTemp": "Outdoor temperature" } }, - "pid": { "p": "P factor", "i": "I factor", @@ -437,7 +404,6 @@ "thresholdLow": "Threshold low" } }, - "ot": { "advanced": "Advanced Settings", "inGpio": "In GPIO", @@ -453,7 +419,6 @@ "title": "Max boiler power (kW)", "note": "0 - try detect automatically. Typically found in the boiler specification as \"maximum useful heat output\"." }, - "options": { "title": "Options (additional settings)", "desc": "Options can change the logic of the boiler. Not all options are documented in the protocol, so the same option can have different effects on different boilers.
Note: There is no need to change anything if everything works well.", @@ -475,13 +440,11 @@ "immergasFix": "Fix for Immergas boilers", "alwaysSendIndoorTemp": "Send current indoor temp to boiler" }, - "nativeOTC": { "title": "Native OTC mode", "note": "Works ONLY if the boiler is in OTC mode: requires and accepts the target indoor temperature and self-regulates the heat carrier temperature based on the built-in curves mode. Incompatible with PID and Equitherm." } }, - "mqtt": { "homeAssistantDiscovery": "Home Assistant Discovery", "server": "Server", @@ -491,7 +454,6 @@ "prefix": "Prefix", "interval": "Publish interval (sec)" }, - "extPump": { "use": "Use external pump", "gpio": "Relay GPIO", @@ -500,7 +462,6 @@ "antiStuckInterval": "Anti stuck interval (days)", "antiStuckTime": "Anti stuck time (min)" }, - "cascadeControl": { "input": { "desc": "Can be used to turn on the heating only if another boiler is faulty. The other boiler controller must change the state of the GPIO input in the event of a fault.", @@ -524,11 +485,9 @@ } } }, - "upgrade": { "title": "Upgrade - OpenTherm Gateway", "name": "Upgrade", - "section": { "backupAndRestore": { "title": "Backup & restore", @@ -537,17 +496,15 @@ "upgrade": { "title": "Upgrade", "desc": "In this section you can upgrade the firmware and filesystem of your device.
Latest releases can be downloaded from the Releases page of the project repository." - } + } }, - "note": { "disclaimer1": "After a successful upgrade the filesystem, ALL settings will be reset to default values! Save backup before upgrading.", "disclaimer2": "After a successful upgrade, the device will automatically reboot after 15 seconds." }, - "settingsFile": "Settings file", "fw": "Firmware", "fs": "Filesystem" } } -} \ No newline at end of file +} From ea95b5fa7d7fcbe2323231e965e0e38412a58b23 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 May 2026 15:24:22 +0200 Subject: [PATCH 4/7] refactor(translation): updated Italian language Currently translated at 100.0% (346 of 346 strings) Translation: OTGateway/Portal Translate-URL: https://hosted.weblate.org/projects/otgateway/portal/it/ --- src_data/locales/it.json | 49 +++------------------------------------- 1 file changed, 3 insertions(+), 46 deletions(-) diff --git a/src_data/locales/it.json b/src_data/locales/it.json index 55fe3f9..54555e6 100644 --- a/src_data/locales/it.json +++ b/src_data/locales/it.json @@ -21,7 +21,6 @@ "byte": "byte", "mbyte": "MB" }, - "button": { "upgrade": "Aggiorna", "restart": "Riavvia", @@ -36,15 +35,12 @@ "success": "Riuscito", "error": "Errore" }, - "index": { "title": "OpenTherm Gateway", - "section": { "network": "Rete", "system": "Sistema" }, - "system": { "build": { "title": "Build", @@ -56,8 +52,8 @@ }, "uptime": "Tempo di attività", "memory": { - "heap": "Heap", - "psram": "Psram", + "heap": "Memoria (heap)", + "psram": "Memoria (PSRAM)", "maxFreeBlock": "max free block", "min": "min" }, @@ -74,18 +70,15 @@ "lastResetReason": "Motivo ultimo Reset" } }, - "dashboard": { "name": "Pannello", "title": "Pannello - OpenTherm Gateway", - "section": { "control": "Controlli", "states": "Stato", "sensors": "Sensori", "diag": "Diagnostica OpenTherm" }, - "thermostat": { "heating": "Riscaldamento", "dhw": "ACS", @@ -93,7 +86,6 @@ "enable": "Attiva", "turbo": "Turbo" }, - "notify": { "fault": { "title": "Rilevamento guasti caldiaia attivo!", @@ -105,7 +97,6 @@ }, "reset": "Prova a resettare" }, - "states": { "mNetworkConnected": "Connessione Rete", "mMqttConnected": "Connessione MQTT", @@ -113,7 +104,6 @@ "mExtPumpState": "Pompa esterna", "mCascadeControlInput": "Controllo a cascata (input)", "mCascadeControlOutput": "Controllo a cascata (output)", - "sConnected": "Connessione OpenTherm", "sFlame": "Fiamma", "sCoolingActive": "Raffrescamento", @@ -122,7 +112,6 @@ "sFaultCode": "Codice anomalia", "sDiagActive": "Diagnostica", "sDiagCode": "Codice Diagnostica", - "mHeatEnabled": "Riscaldamento attivato", "mHeatBlocking": "Riscaldamento bloccato", "mHeatOverheat": "Riscaldamento surriscaldamento", @@ -134,7 +123,6 @@ "mHeatRetTemp": "Temp ritorno riscaldamento", "mHeatIndoorTemp": "Riscaldamento, temp interna", "mHeatOutdoorTemp": "Riscaldamento, temp esterna", - "mDhwEnabled": "ACS attivata", "mDhwOverheat": "ACS surriscaldamento", "sDhwActive": "ACS attiva", @@ -142,7 +130,6 @@ "mDhwCurrTemp": "ACS temp attuale", "mDhwRetTemp": "ACS temp ricircolo" }, - "sensors": { "values": { "temp": "Temperatura", @@ -152,23 +139,19 @@ } } }, - "network": { "title": "Rete - OpenTherm Gateway", "name": "Impostazioni rete", - "section": { "static": "Impostazioni statico", "availableNetworks": "Reti disponibili", "staSettings": "Impostazioni WiFi", "apSettings": "Impostazioni AP" }, - "scan": { "pos": "#", "info": "Info" }, - "wifi": { "ssid": "SSID", "password": "Password", @@ -176,7 +159,6 @@ "signal": "Segnale", "connected": "Connesso" }, - "params": { "hostname": "Hostname", "dhcp": "Usa DHCP", @@ -186,18 +168,15 @@ "gateway": "Gateway", "dns": "DNS" }, - "sta": { "channel": { "note": "Metti 0 per auto selezione" } } }, - "sensors": { "title": "Impostazione sensori - OpenTherm Gateway", "name": "Impostazione sensori", - "enabled": "Attivato", "sensorName": { "title": "Nome sensore", @@ -254,7 +233,6 @@ "otHeatingPumpHours": "OpenTherm, numero di ore di funzionamento della pompa (riscaldamento)", "otDhwPumpHours": "OpenTherm, numero di ore di funzionamento della pompa (ACS)", "otCoolingHours": "OpenTherm, numero di ore di funzionamento della cooling", - "ntcTemp": "Sensore NTC", "dallasTemp": "Sensore DALLAS", "bluetooth": "Sensore BLE", @@ -286,11 +264,9 @@ } } }, - "settings": { "title": "Impostazioni - OpenTherm Gateway", "name": "Impostazioni", - "section": { "portal": "Impostazioni Accesso", "system": "Impostazioni sistema", @@ -305,14 +281,12 @@ "extPump": "Impostazioni pompa esterna", "cascadeControl": "Impostazioni controllo a cascata" }, - "enable": "Attiva", "note": { "restart": "Dopo aver cambiato queste impostazioni, il sistema sarà riavviato perchè i cambiamenti abbiano effetto.", "blankNotUse": "vuoto - non usare", "bleDevice": "Dispositivi BLE possono essere usati solo con alcune schede ESP32 che supportano il bluetooth!" }, - "temp": { "min": "Temperatura minima", "max": "Temperatura massima" @@ -342,14 +316,12 @@ "note": "Soglia quando il riscaldamento viene forzatamente attivato" } }, - "portal": { "login": "Login", "password": "Password", "auth": "Richiede autenticazione", "mdns": "Usa mDNS" }, - "system": { "unit": "Unità di misura", "metric": "Metrico (celsius, litri, bar)", @@ -369,7 +341,6 @@ "timezonePresets": "Seleziona preimpostato..." } }, - "heating": { "hyst": { "title": "Isteresi", @@ -383,17 +354,14 @@ }, "turboFactor": "Turbo mode coeff." }, - "emergency": { "desc": "Il modo emergenza è attivato automaticamente quando «PID» o «Equitherm» non possono calcolare il setpoint:
- se «Equitherm» è attivato e il sensore della temperatura esternare è disconnesso;
- se «PID» o l'opzione OT «Impostazioni riscaldamento native» è attiva e il sensore di temperatura interno è disconnesso.
Nota: In mancanza di rete o MQTT, sensore di tipo «Manuale via MQTT/API» è in stato Disconnesso.", - "target": { "title": "Temperatura impostata", "note": "Importante: Temperatura interna impostata se l'opzione OT «Controllo riscaldamento interno» è attivato.
In tutti gli altri casi, la target heat carrier temperature." }, "treshold": "Tempo di soglia (sec)" }, - "equitherm": { "slope": { "title": "Pendenza", @@ -417,7 +385,6 @@ "outdoorTemp": "Temperatura esterna" } }, - "pid": { "p": "Fattore P", "i": "Fattore I", @@ -437,7 +404,6 @@ "thresholdLow": "Soglia inferiore" } }, - "ot": { "advanced": "Impostazioni avanzate", "inGpio": "In GPIO", @@ -453,7 +419,6 @@ "title": "Potenza massima caldaia (kW)", "note": "0 - prova a rilevarla automaticamente. Di solito si trova nelle specifiche delle caldaia come \"potenza massima disponibile\"." }, - "options": { "title": "Opzioni (impostazioni aggiuntive)", "desc": "Le opzioni possono modificare la logica della caldaia. Non tutte le opzioni sono documentate nel protocollo, quindi la stessa opzione può avere effetti diversi su caldaie diverse.
Nota: Non è necessario modificare nulla se tutto funziona correttamente.", @@ -475,13 +440,11 @@ "immergasFix": "Fix per caldiaie Immergas", "alwaysSendIndoorTemp": "Invia la temp attuale interna alla caldaia" }, - "nativeOTC": { "title": "Modalità nativa di calcolo della temperatura del vettore termico", "note": "Funziona SOLO se la caldaia è in modalità OTC: richiede e accetta la temperatura interna target e regola autonomamente la temperatura del vettore termico basata sulla modalità curve integrata. Incompatibile con PID e Equitherm." } }, - "mqtt": { "homeAssistantDiscovery": "Home Assistant Discovery", "server": "Server", @@ -491,7 +454,6 @@ "prefix": "Prefisso", "interval": "Intervallo invio (sec)" }, - "extPump": { "use": "Usa pompa/circolatore esterno", "gpio": "GPIO relè", @@ -500,7 +462,6 @@ "antiStuckInterval": "Intervallo antiblocco (days)", "antiStuckTime": "Tempo antiblocco (min)" }, - "cascadeControl": { "input": { "desc": "Può essere attivata la caldaia se un'altra ha fallito. Il controllo dell'altra caldaia cambia lo stato dell'ingresso del GPIO in caso di errore.", @@ -524,11 +485,9 @@ } } }, - "upgrade": { "title": "Aggiornamenti - OpenTherm Gateway", "name": "Aggiornamenti", - "section": { "backupAndRestore": { "title": "Backup & restore", @@ -539,15 +498,13 @@ "desc": "In questa sezione puoi aggiornare il firmware il filesystem del tuo dispositivo.
L'ultimo aggiornamento può essere scaricato da Releases page del progetto." } }, - "note": { "disclaimer1": "Dopo un aggiornamento riuscito del filesystem, tutte le impostazioni sono impostate di default! Salva un backup prima di aggiornare.", "disclaimer2": "Dopo un aggiornamento riuscito, il sistema viene automaticamente riavviato dopo 15 secondi." }, - "settingsFile": "Settings file", "fw": "Firmware", "fs": "Filesystem" } } -} \ No newline at end of file +} From 5d053690c695ee4096d8f8c03281cdc066631345 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 May 2026 15:24:02 +0200 Subject: [PATCH 5/7] refactor(translation): updated Chinese (Simplified Han script) language Currently translated at 100.0% (346 of 346 strings) Translation: OTGateway/Portal Translate-URL: https://hosted.weblate.org/projects/otgateway/portal/zh_Hans/ --- src_data/locales/cn.json | 51 ++++------------------------------------ 1 file changed, 4 insertions(+), 47 deletions(-) diff --git a/src_data/locales/cn.json b/src_data/locales/cn.json index 9e0928f..bd2314b 100644 --- a/src_data/locales/cn.json +++ b/src_data/locales/cn.json @@ -21,7 +21,6 @@ "byte": "byte", "mbyte": "MB" }, - "button": { "upgrade": "固件升级", "restart": "重启", @@ -36,15 +35,12 @@ "success": "成功", "error": "错误" }, - "index": { "title": "OpenTherm Gateway", - "section": { "network": "网络", "system": "系统" }, - "system": { "build": { "title": "Build", @@ -56,8 +52,8 @@ }, "uptime": "运行时间", "memory": { - "heap": "Heap", - "psram": "Psram", + "heap": "内存 (heap)", + "psram": "内存 (PSRAM)", "maxFreeBlock": "max free block", "min": "min" }, @@ -74,18 +70,15 @@ "lastResetReason": "上次重置原因" } }, - "dashboard": { "name": "仪表盘", "title": "仪表盘 - OpenTherm Gateway", - "section": { "control": "调节", "states": "状态", "sensors": "传感器", "diag": "OpenTherm 诊断" }, - "thermostat": { "heating": "供暖", "dhw": "生活热水", @@ -93,7 +86,6 @@ "enable": "启用", "turbo": "Turbo 模式" }, - "notify": { "fault": { "title": "锅炉报警状态已激活!", @@ -105,7 +97,6 @@ }, "reset": "点击复位" }, - "states": { "mNetworkConnected": "网络连接状态", "mMqttConnected": "MQTT服务器连接状态", @@ -113,7 +104,6 @@ "mExtPumpState": "外置循环泵", "mCascadeControlInput": "Cascade 控制 (input)", "mCascadeControlOutput": "Cascade 控制 (output)", - "sConnected": "OpenTherm 通讯状态", "sFlame": "火焰", "sCoolingActive": "制冷", @@ -122,7 +112,6 @@ "sFaultCode": "报警代码", "sDiagActive": "诊断状态", "sDiagCode": "诊断代码", - "mHeatEnabled": "供暖功能已启用", "mHeatBlocking": "供暖", "mHeatOverheat": "供暖超热保护", @@ -134,7 +123,6 @@ "mHeatRetTemp": "供暖回水温度", "mHeatIndoorTemp": "供暖,室内温度", "mHeatOutdoorTemp": "供暖,室外温度", - "mDhwEnabled": "生活热水功能已启用", "mDhwOverheat": "生活热水超热保护", "sDhwActive": "生活热水激活", @@ -142,7 +130,6 @@ "mDhwCurrTemp": "生活热水当前出水温度", "mDhwRetTemp": "生活热水回水温度" }, - "sensors": { "values": { "temp": "温度", @@ -152,23 +139,19 @@ } } }, - "network": { "title": "网络 - OpenTherm Gateway", "name": "网络设置", - "section": { "static": "静态设置", "availableNetworks": "可用网络", "staSettings": "WiFi 设置", "apSettings": "AP 设置" }, - "scan": { "pos": "#", "info": "Info" }, - "wifi": { "ssid": "SSID", "password": "密码", @@ -176,7 +159,6 @@ "signal": "信号强度", "connected": "已连接" }, - "params": { "hostname": "Hostname", "dhcp": "自动 (DHCP)", @@ -186,18 +168,15 @@ "gateway": "网关", "dns": "DNS 服务器" }, - "sta": { "channel": { "note": "自动选择设置为0" } } }, - "sensors": { "title": "传感器设置 - OpenTherm Gateway", "name": "传感器设置", - "enabled": "启用", "sensorName": { "title": "传感器名称", @@ -254,7 +233,6 @@ "otHeatingPumpHours": "OpenTherm, number of pump operating hours (heating)", "otDhwPumpHours": "OpenTherm, number of pump operating hours (DHW)", "otCoolingHours": "OpenTherm, number of cooling hours", - "ntcTemp": "NTC 传感器", "dallasTemp": "DALLAS 传感器", "bluetooth": "BLE 传感器", @@ -286,11 +264,9 @@ } } }, - "settings": { "title": "设置 - OpenTherm Gateway", "name": "设置", - "section": { "portal": "Portal 设置", "system": "系统设置", @@ -305,14 +281,12 @@ "extPump": "外置循环泵设置", "cascadeControl": "Cascade 级联控制设置" }, - "enable": "启用", "note": { "restart": "更改这些设置后,必须重启设备以使变更生效", "blankNotUse": "空白 - 未使用", "bleDevice": "BLE设备仅支持搭载BLE功能的特定ESP32开发板使用!" }, - "temp": { "min": "最低温度", "max": "最高温度" @@ -342,14 +316,12 @@ "note": "强制开启加热的阈值" } }, - "portal": { "login": "登录", "password": "密码", "auth": "需身份验证", "mdns": "使用 mDNS" }, - "system": { "unit": "单位", "metric": "公制 (摄氏度、升、巴)", @@ -369,7 +341,6 @@ "timezonePresets": "选择预设配置..." } }, - "heating": { "hyst": { "title": "滞回", @@ -383,17 +354,14 @@ }, "turboFactor": "Turbo 模式系数" }, - "emergency": { - "desc": "紧急模式会在以下情况自动激活(当PID或气候补偿无法计算热媒设定值时):
启用气候补偿但室外温度传感器断开连接;
启用PID或 OpenTherm 选项中启用原生供暖控制但室内温度传感器断开连接。
注意: 网络故障或MQTT 服务器连接故障时,类型为通过MQTT/API手动控制的传感器将显示为断开连接状态。", - + "desc": "紧急模式会在以下情况自动激活(当PID或气候补偿无法计算热媒设定值时):
启用气候补偿但室外温度传感器断开连接;
启用PID或 OpenTherm 选项中启用原生供暖控制但室内温度传感器断开连接。
注意: 网络故障或MQTT 服务器连接故障时,类型为通过MQTT/API手动控制的传感器将显示为断开连接状态。", "target": { "title": "目标温度", "note": "重要提示: 若启用OpenTherm选项 «原生供暖控制»,此处设定值为目标室内温度
其他所有情况下,此处设定值为 目标热媒出水温度." }, "treshold": "阈值时间 (秒)" }, - "equitherm": { "slope": { "title": "斜率", @@ -417,7 +385,6 @@ "outdoorTemp": "室外温度" } }, - "pid": { "p": "P 系数", "i": "I 系数", @@ -437,7 +404,6 @@ "thresholdLow": "Threshold low" } }, - "ot": { "advanced": "高级设置", "inGpio": "In GPIO", @@ -451,9 +417,8 @@ }, "maxPower": { "title": "最大锅炉功率 (kW)", - "note": "0 - 自动检测,通常在锅炉参数设置中的\"最大有效热输出\"。 " + "note": "0 - 自动检测,通常在锅炉参数设置中的\"最大有效热输出\"。" }, - "options": { "title": "选项(附加设置)", "desc": "附加设置选项可调整锅炉的运行逻辑。由于协议未完整记录所有选项,同一选项在不同锅炉上可能产生不同效果。
注意:若系统运行正常,无需修改设置。", @@ -475,13 +440,11 @@ "immergasFix": "针对Immergas锅炉的兼容性修复", "alwaysSendIndoorTemp": "向锅炉发送当前室内温度" }, - "nativeOTC": { "title": "原生热载体温度计算模式", "note": "仅在锅炉处于 OTC 模式时工作:需要并接受目标室内温度,并基于内置曲线模式自行调节热载体温度。与 PID 和 Equitherm 不兼容。" } }, - "mqtt": { "homeAssistantDiscovery": "Home Assistant 自动发现", "server": "服务器地址", @@ -491,7 +454,6 @@ "prefix": "Prefix 前缀", "interval": "发布间隔 (秒)" }, - "extPump": { "use": "使用外置循环泵", "gpio": "继电器 GPIO引脚", @@ -500,7 +462,6 @@ "antiStuckInterval": "防卡死间隔时间(天)", "antiStuckTime": "防卡死运行时长(分钟)" }, - "cascadeControl": { "input": { "desc": "仅当另一台锅炉发生故障时启用本锅炉加热。另一台锅炉的控制器需在故障发生时切换GPIO输入状态以触发本功能。", @@ -524,11 +485,9 @@ } } }, - "upgrade": { "title": "固件升级 - OpenTherm Gateway", "name": "固件升级", - "section": { "backupAndRestore": { "title": "备份与恢复", @@ -539,12 +498,10 @@ "desc": "本模块支持升级设备的固件与系统文件。
可从以下地址下载最新版本 Releases page 。" } }, - "note": { "disclaimer1": "升级系统文件成功后,所有设置将恢复为默认值!升级前请务必备份配置。", "disclaimer2": "升级成功后,设备将在15秒后自动重启。" }, - "settingsFile": "设置文件", "fw": "Firmware", "fs": "Filesystem" From 01a70b3288895e23a5cf423ee8c3629a53fad6e8 Mon Sep 17 00:00:00 2001 From: Yurii Date: Sat, 16 May 2026 15:24:45 +0200 Subject: [PATCH 6/7] refactor(translation): updated Dutch language Currently translated at 100.0% (346 of 346 strings) Translation: OTGateway/Portal Translate-URL: https://hosted.weblate.org/projects/otgateway/portal/nl/ --- src_data/locales/nl.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src_data/locales/nl.json b/src_data/locales/nl.json index ca1d514..fcce416 100644 --- a/src_data/locales/nl.json +++ b/src_data/locales/nl.json @@ -52,8 +52,8 @@ }, "uptime": "Uptime", "memory": { - "heap": "Heap", - "psram": "Psram", + "heap": "Geheugen (heap)", + "psram": "Geheugen (PSRAM)", "maxFreeBlock": "max. vrij blok", "min": "min" }, @@ -233,7 +233,6 @@ "otHeatingPumpHours": "OpenTherm, aantal pompuren (verwarming)", "otDhwPumpHours": "OpenTherm, aantal pompuren (warm water)", "otCoolingHours": "OpenTherm, aantal cooling", - "ntcTemp": "NTC-sensor", "dallasTemp": "DALLAS-sensor", "bluetooth": "BLE-sensor", @@ -317,7 +316,6 @@ "note": "Drempel wanneer de verwarming geforceerd wordt ingeschakeld" } }, - "portal": { "login": "Gebruikersnaam", "password": "Wachtwoord", @@ -442,7 +440,6 @@ "immergasFix": "Fix voor Immergas-ketels", "alwaysSendIndoorTemp": "Stuur huidige binnentemp naar ketel" }, - "nativeOTC": { "title": "Native warmtedrager temperatuur berekeningsmodus", "note": "Werkt ALLEEN als de ketel in OTC-modus is: vereist en accepteert de doel binnentemperatuur en regelt zelf de warmtedrager temperatuur op basis van de ingebouwde curves modus. Incompatibel met PID en Equitherm." From bfc1cc11185b9e444e619a6e22ff9f7875d8ceca Mon Sep 17 00:00:00 2001 From: Yurii <34578544+Laxilef@users.noreply.github.com> Date: Sat, 16 May 2026 17:14:00 +0300 Subject: [PATCH 7/7] chore: update README --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 67c662b..5c47af6 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![GitHub version](https://img.shields.io/github/release/Laxilef/OTGateway.svg?include_prereleases)](https://github.com/Laxilef/OTGateway/releases) [![GitHub download](https://img.shields.io/github/downloads/Laxilef/OTGateway/total.svg)](https://github.com/Laxilef/OTGateway/releases/latest) + [![Translations](https://hosted.weblate.org/widget/otgateway/svg-badge.svg)](https://hosted.weblate.org/engage/otgateway/) [![License](https://img.shields.io/github/license/Laxilef/OTGateway.svg)](LICENSE.txt) [![Telegram](https://img.shields.io/badge/Telegram-Channel-33A8E3)](https://t.me/otgateway) @@ -71,10 +72,18 @@ All available information and instructions can be found in the wiki: * [Connection](https://github.com/Laxilef/OTGateway/wiki/OT-adapters#connection) * [Leds on board](https://github.com/Laxilef/OTGateway/wiki/OT-adapters#leds-on-board) +## Translations +The project uses [Weblate](https://hosted.weblate.org/new-lang/otgateway/) to manage translations of the interface.
+Anyone is welcome to add their native language as a [new localization](https://hosted.weblate.org/new-lang/otgateway/portal/). All contributions are welcome! + + +Translation status + + ## Gratitude * To the developers of the libraries used: [OpenTherm Library](https://github.com/ihormelnyk/opentherm_library), [ESP8266Scheduler](https://github.com/nrwiersma/ESP8266Scheduler), [ArduinoJson](https://github.com/bblanchon/ArduinoJson), [NimBLE-Arduino](https://github.com/h2zero/NimBLE-Arduino), [ArduinoMqttClient](https://github.com/arduino-libraries/ArduinoMqttClient), [ESPTelnet](https://github.com/LennartHennigs/ESPTelnet), [FileData](https://github.com/GyverLibs/FileData), [GyverPID](https://github.com/GyverLibs/GyverPID), [GyverBlinker](https://github.com/GyverLibs/GyverBlinker), [OneWireNg](https://github.com/pstolarz/OneWireNg) & [OneWire](https://github.com/PaulStoffregen/OneWire) * To the [PlatformIO](https://platformio.org/) Team * To the team and contributors of the [pioarduino](https://github.com/pioarduino/platform-espressif32) project * To the [BrowserStack](https://www.browserstack.com/) team. This project is tested with BrowserStack. * To the [PVS-Studio](https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source) - static analyzer for C, C++, C#, and Java code. -* And of course to the contributors for their contribution to the development of the project! \ No newline at end of file +* And of course to the contributors for their contribution to the development of the project!