程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么字典没有用 Flask-Babel 翻译大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么字典没有用 Flask-Babel 翻译?

开发过程中遇到为什么字典没有用 Flask-Babel 翻译的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么字典没有用 Flask-Babel 翻译的解决方法建议,希望对你解决为什么字典没有用 Flask-Babel 翻译有所启发或帮助;

我正在 Flask 编写网站。我使用 flask-babel 翻译成不同的语言。我使用 lazy_gettext 来翻译字典值。在网站上更改语言时,我包装的所有短语和句子都应翻译。除了 MgttTOAA 类中这个 mqtt.py 文件中包含的单词之外,所有内容都被翻译。告诉我可能是什么问题或建议其他一些翻译选项。谢谢

@H_944_10@# mqtt.py from app import socketio,app from flask import request from flask_mqtt import Mqtt from flask_babel import lazy_gettext as _l from app.tasks import schedulerTask import Json import copy import logging mqtt = Mqtt(app) logger = logging.getLogger('flask.flask_mqtt') logger.Disabled = True class MqttTOAA(object): # топик контроля воротами забора,топик данных воротами забора,топик контроля гаражными,топик данных гаражными type_topic = ["/Control","/Data"] m_request_state = {"comm": "3"} # запрос на получение статуса ворот m_start = {"Gate": "Start"} # сообщение для открытия/закрытия ворот m_stop = {"Gate": "Stop"} # сообщение для остановки ворот qos_request = 1 qos_sub = 2 struct_state_devices = None # словарь информации о состоянии устройств # состояние ворот: действие # действие: статус,отображаемый на странице # поля: текст кнопки,отображаемый статус,код устройства # статус ворот # предыдущая позиция ворот и отметка о том,были ли отсановленны Dict_gate = {"Dict_state_button": {'con_Clos': _l(u'Открыть'),'con_Open': _l(u'Закрыть'),"fl_OpenClos": (_l(u'Продолжить'),_l(u'Остановить'),_l(u'Прервать'))},"Dict_state_text": {_l(u'Открыть'): _l(u'закрыты'),_l(u'Закрыть'): _l(u'открыты'),_l(u'Продолжить'): _l(u'остановлены'),_l(u'Прервать'): _l(u'закрываются'),_l(u'Остановить'): (_l(u'открываются'),_l(u'закрываются'),_l(u'в движении'))},"Dict_type_element": {"button": u'',"text": u'',"device_code": u'',},"state_gate": {},"position": {"state": u'',"stop": falsE},"reverse": false,} close_msg = _l(u'закрываются') open_msg = _l(u'открываются') POol_TIME = 2 # Интервал отправки запроса брокеру end_publish = None devices = None app_Now = None schedulers_List = List() sch_task = None code_List = List() def __init__(self,devices,app): mqtt._connect() self.devices = devices self.app_Now = app self.sch_task = schedulerTask() self.create_devices_Dict() self.handle_mqtt_connect() self.mqtt_onmessage = mqtt.on_message()(self._handle_mqtt_messagE) self.mqtt_onlog = mqtt.on_log()(self._handle_logging) self.socketio_error = socketio.on_error()(self._handle_error) self.handle_change_state = socketio.on('change_state')(self._handle_change_statE) self.handle_unsubscribe_all = socketio.on('unsubscribe_all')(self._handle_unsubscribe_all) # ожидание подключения к брокеру,# затем подписка на топик и запуск потока для постоянной отсылки сообщений в топик Control def handle_mqtt_connect(self): task = None for dev in self.devices: if Dev.device_code not in self.code_List: # запущен ли уже поток с таким кодом mqtt.subscribe("BK" + dev.device_code + self.type_topic[1],self.qos_sub) self.code_List.append(dev.device_codE) task = self.sch_task.add_scheduler_publish(dev.device_code,mqtt,"BK" + dev.device_code + self.type_topic[0],self.m_request_state,self.qos_request,self.POol_TIME) if task is not None: self.schedulers_List.append(task) if len(self.schedulers_List) > 0: self.sch_task.start_schedulers() self.code_List.clear() # обработчик ошибок @staticmethod def _handle_error(): print(request.event["message"]) # "my error event" print(request.event["args"]) # (data,) # отмена подписки на топик @staticmethod def _handle_unsubscribe_all(): mqtt.unsubscribe_all() # функция изменения состояния ворот по нажатию def _handle_change_state(self,codE): print(codE) # print(self.struct_state_devices[code]) message = None if code is not None: try: type_g = self.struct_state_devices[code]["state_gate"] if type_g["fl_OpenClos"] == 1: # ворота в движении -> остановка message = self.m_stop else: if self.struct_state_devices[code]["reverse"] is True: # остановились и двигаются в обратном направлении -> остановка if self.struct_state_devices[code]["position"]["state"] == self.close_msg: message = self.m_stop self.struct_state_devices[code]["position"]["state"] = self.open_msg else: message = self.m_start else: # ворота остановленны -> продолжение движения message = self.m_start print("Msg:" + str(messagE)) except Exception as ex: print(eX) if message is not None: mqtt.publish("BK" + code + self.type_topic[0],Json.dumps(messagE),self.qos_request) else: print("Error change state " + codE) # обработка принятых сообщений от топика,на который подписан def _handle_mqtt_message(self,clIEnt,userdata,messagE): # print("Get message") data = Dict( topic=message.topic,payload=message.payload.decode(),qos=message.qos,) try: data = Json.loads(data['payload']) self.gate_msg(data) except Exception as ex: print("Exception: " + str(eX)) # логирование @staticmethod def _handle_logging(self,level,buf): print(level,buf) pass # создание словаря устройств def create_devices_Dict(self): if self.struct_state_devices is None: self.struct_state_devices = Dict() for dev in self.devices: self.struct_state_devices[dev.device_code] = self.Dict_gate.copy() # добавление словаря устройства if Dev.typedev.reverse: self.struct_state_devices[dev.device_code]['reverse'] = True # функция измения состояния гаражных ворот (с реверсом) def gate_msg(self,data): k = "" code = data["esp_ID"][2:] Dict_dev = copy.deepcopy(self.struct_state_devices[code]) Dict_dev["state_gate"] = data.copy() try: if Dict_dev["state_gate"]["con_Clos"] == 0: # ворота закрыты # print("1") k = "con_Clos" Dict_dev["position"]["state"] = k Dict_dev["position"]["stop"] = false elif Dict_dev["state_gate"]["con_Open"] == 0: # ворота открыты # print("2") k = "con_Open" Dict_dev["position"]["state"] = k Dict_dev["position"]["stop"] = false elif Dict_dev["state_gate"]["fl_OpenClos"] == 0: # ворота остановленны/движение прервано # print("3") k = "fl_OpenClos" # обратный ход ворот при закрытии if Dict_dev["position"]["state"] == self.close_msg and Dict_dev["reverse"] is True: # print("4") k1 = 1 k2 = 0 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] Dict_dev["position"]["stop"] = false else: # print("5") k1 = 0 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]] Dict_dev["position"]["stop"] = True elif Dict_dev["state_gate"]["fl_OpenClos"] == 1: # ворота в движении # print("6") k = "fl_OpenClos" # Если невозможно определить открываются или закрываются ворота if len(Dict_dev["position"]["state"]) == 0: # print("7") k1 = 1 k2 = 2 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] # определение - закрываются или открываются ворота elif Dict_dev["position"]["state"] == "con_Clos" or \ Dict_dev["position"]["state"] == self.open_msg: if Dict_dev["position"]["stop"]: # print("8") k1 = 1 k2 = 1 Dict_dev["position"]["stop"] = false Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] else: # print("9") k1 = 1 k2 = 0 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] elif Dict_dev["position"]["state"] == "con_Open" or \ Dict_dev["position"]["state"] == self.close_msg: if Dict_dev["reverse"]: # print("10") k1 = 2 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]] else: if Dict_dev["position"]["stop"]: # print("11") k1 = 1 k2 = 0 Dict_dev["position"]["stop"] = false Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] else: # print("12") k1 = 1 k2 = 1 Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k][k1]][k2] if Dict_dev["position"]["state"] != Dict_dev["Dict_type_element"]["text"]: # print("13") Dict_dev["position"]["state"] = Dict_dev["Dict_type_element"]["text"] if k == "fl_OpenClos": Dict_dev["Dict_type_element"]["button"] = Dict_dev["Dict_state_button"][k][k1] else: Dict_dev["Dict_type_element"]["button"] = Dict_dev["Dict_state_button"][k] Dict_dev["Dict_type_element"]["text"] = \ Dict_dev["Dict_state_text"][Dict_dev["Dict_state_button"][k]] except Exception as ex: print("Exception (gate_msg): " + str(eX)) Dict_dev["Dict_type_element"]["device_code"] = data["esp_ID"][2:] Dict_dev["Dict_type_element"]["temp"] = data["temp_1"] Dict_dev["Dict_type_element"]["button"] = copy.deepcopy(str(Dict_dev["Dict_type_element"]["button"])) Dict_dev["Dict_type_element"]["text"] = copy.deepcopy(str(Dict_dev["Dict_type_element"]["text"])) self.struct_state_devices[code] = copy.deepcopy(Dict_dev) socketio.emit('mqtt_message',data=Dict_dev["Dict_type_element"])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的为什么字典没有用 Flask-Babel 翻译全部内容,希望文章能够帮你解决为什么字典没有用 Flask-Babel 翻译所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:翻译