text: import os
  import os.path as osp
  import json
  import random
  import hashlib
  from urllib import parse
  import http.client
  from tqdm import tqdm
  from collections import defaultdict
  
  
  class BaiduTranslate:
      def __init__(self, fromLang, toLang):
          self.url = "/api/trans/vip/translate"
          self.appid = "20200311000396156"
          self.secretKey = "s6c3ZeYTI9lhrwQVugnM"
          self.fromLang = fromLang
          self.toLang = toLang
          self.salt = random.randint(32768, 65536)
  
      def BdTrans(self, text):
          sign = self.appid + text + str(self.salt) + self.secretKey
          md = hashlib.md5()
          md.update(sign.encode(encoding="utf-8"))
          sign = md.hexdigest()
          myurl = self.url + \
                  "?appid=" + self.appid + \
                  "&q=" + parse.quote(text) + \
                  "&from=" + self.fromLang + \
                  "&to=" + self.toLang + \
                  "&salt=" + str(self.salt) + \
                  "&sign=" + sign
          try:
              httpClient = http.client.HTTPConnection("api.fanyi.baidu.com")
              httpClient.request("GET", myurl)
              response = httpClient.getresponse()
              html = response.read().decode("utf-8")
              html = json.loads(html)
              dst = html["trans_result"][0]["dst"]
              return True, dst
          except Exception as e:
              return False, e
  
  
  # 获取所有可能带有ui的py文件
  ui_files = []
  widget_path = "eiseg/widget"
  widget_names = os.listdir(widget_path)
  for widget_name in widget_names:
      if widget_name != "__init__.py" and widget_name != "__pycache__":
          ui_files.append(osp.join(widget_path, widget_name))
  ui_files.append("eiseg/ui.py")
  ui_files.append("eiseg/app.py")
  
  # 查找
  chinese = []
  keys = "trans.put(\""
  for ui_file in ui_files:
      with open(ui_file, "r", encoding="utf-8") as f:
          codes = f.read()
          sp_codes = codes.split(keys)
          if len(sp_codes) == 1:
              continue
          else:
              sp_codes.pop(0)
              for sp_code in sp_codes:
                  chinese.append(sp_code.split("\")")[0])
  chinese = list(set(chinese))
  # print(len(chinese))
  # print(chinese)
  
  # 比对（以前有的不重新机翻）
  save_path = "eiseg/config/zh_CN.EN"
  now_words = defaultdict(dict)
  with open(save_path, "r", encoding="utf-8") as f:
      datas = f.readlines()
      for data in datas:
          words = data.strip().split("@")
          now_words[words[0]] = words[1]
  
  
  # 翻译
  def firstCharUpper(s):
      return s[:1].upper() + s[1:]
  
  
  translate = []
  baidu_trans = BaiduTranslate("zh", "en")
  for cn in tqdm(chinese):
      if cn not in now_words.keys():
          en = baidu_trans.BdTrans(cn)
          tr = cn + "@" + firstCharUpper(en[-1])  # 首字母大写
      else:
          tr = cn + "@" + now_words[cn]
      translate.append(tr)
  
  # 保存翻译内容
  with open(save_path, "w", encoding="utf-8") as f:
      for language in translate:
          f.write(language + "\n")
  
  print("trans OK!")
  