Destix
30.Июнь.2022 19:50:28
1
в mqtt топик подгружается неверная локализация
/devices/wb-mdm3_23/controls/Channel 1/meta
… “title”:{“ru”:"\u041a\u0430\u043d\u0430\u043b 1"} …
при выставленной English локализации (она ведь только в разделе …/#!/web-ui выставляется?)
при этом в топик /devices/wb-mdm3_23/meta
попадает нужная локализация {“driver”:“wb-modbus”,“title”:{“en”:“WB-MDM3 23”}}
в шаблонах всё верно прописано
удалять топик пробовал
удалять\добавлять устройство пробовал
Здравствуйте!
Переводы берутся из топиков meta, только если выбран русский язык.
Язык интерфейса меняется здесь:
Обновите страницы, если отрыта не одна вкладка в браузере. Вы так делаете?
Какой браузер используете? Попробуйте Chrome. Пришлите видео, если проблема останется.
Destix
01.Июль.2022 10:16:04
4
Тут язык стоит английский
Хром последний, кэш чистый
Всё на видео
А в веб-интерфейсе отображается все нормально? Если нет, то пришлите скриншоты или видео.
Destix
01.Июль.2022 12:23:08
6
в web интерфейсе всё нормально
Думаю, что в таком случае все нормально. Если есть перевод для канала на русский, то он содержится в теге /meta. То, что в title модуля всегда “en” пока ни на что не влияет.
Destix
01.Июль.2022 16:37:27
8
Так мне наоборот нужен en:
я забираю эти названия в Home Assistant, а вручную всё переписывать сложновато
в meta должен подкидываться из шаблона en: , а в топик control всегда прилетает ru:
Destix
04.Июль.2022 07:52:30
10
Методом научного тыка выяснил что при любом языке в интерфейсе в mqtt топик controls будет добавлено русское название.
Вопрос в том где взять названия “en” для топика controls в mqtt?
Все переводы берутся из раздела “translations” шаблонов. Если перевод не задан, то название берется из поля “name” соответствующего канала.
Посмотрите, например, диммер:
https://github.com/wirenboard/wb-mqtt-serial/blob/master/wb-mqtt-serial-templates/config-wb-mdm3.json
Это позволит решить вашу задачу или вам нужно, чтобы переводы были именно в топиках mqtt?
Destix
04.Июль.2022 09:24:45
12
Да, я видел откуда берется (в Вики есть где хранятся шаблоны).
Щас попробую заменить в шаблонах, либо вообще удалю раздел “ru”
Удобнее конечно из mqtt из controls/meta
Но попробую решить редактированием шаблонов.
Думаю нужный мне код вот тут
TTitleTranslations Translate(const std::string& name, bool idIsDefined, const TLoadingContext& context)
{
TTitleTranslations res;
if (context.translations) {
// Find translation for the name. Iterate through languages
for (auto it = context.translations->begin(); it != context.translations->end(); ++it) {
auto lang = it.name();
auto translatedName = (*it)[name];
if (!translatedName.isNull()) {
// Find prefix translated to the language or english translated prefix
auto prefixIt = context.translated_name_prefixes.find(lang);
if (prefixIt == context.translated_name_prefixes.end()) {
if (lang != "en") {
prefixIt = context.translated_name_prefixes.find("en");
}
}
// Take translation of prefix and add translated name
if (prefixIt != context.translated_name_prefixes.end()) {
res[lang] = prefixIt->second + " " + translatedName.asString();
continue;
This file has been truncated. show original
но разобраться в нем пока не готов
Destix
06.Июль.2022 09:14:50
13
Стер из шаблонов раздел
"translations": {
"ru": {}
кинул их в /etc/wb-mqtt-serial.conf.d/templates
чтобы не трогать оригинал
перезапустил сервис, они подтянулись. всё норм
serial_config.cpp видимо в mqtt кидает всё содержимое “translations”
причем если находит “en” то его, если “en” нет, то идет дальше и закидывает “ru”
PeteK
06.Июль.2022 10:33:32
14
Английские названия публикуются в title
только, если они отличаются от имени топика. Названия на других языках публикуются всегда. Выбор языка интерфейса в homeui
никак не влияет на публикацию названий.