美文网首页
MySQLWorkbench汉化(Python,google翻译

MySQLWorkbench汉化(Python,google翻译

作者: 白日一山 | 来源:发表于2018-11-18 01:30 被阅读0次

    注意是MAC版本的

    汉化主要是翻译main_menu.xml文件中相对应的英文
    主要用到Python爬虫去google翻译

    替换:
    /应用程序/MySQLWorkbench/Contents/Resources/data/main_menu.xml
    (注:右键显示包文件)

    需求:
    1.Python遍历文件找到对应英文内容,
    2.去google翻译,
    3.替换内容


    Tkk.js(文件是从git上找的,忘记出处了)

    //Tkk.js 负责计算 tk值
    function b(a, b) {
      for (var d = 0; d < b.length - 2; d += 3) {
          var c = b.charAt(d + 2),
              c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
              c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
          a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
      }
      return a
    }
    
    function tk(a,TKK) {
        for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
            var c = a.charCodeAt(f);
            128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
        }
        a = h;
        for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
        a = b(a, "+-3^+b+-f");
        a ^= Number(e[1]) || 0;
        0 > a && (a = (a & 2147483647) + 2147483648);
        a %= 1E6;
        return a.toString() + "." + (a ^ h)
    }
    

    Python代码

    import os
    import requests
    import json
    import execjs
    import urllib
    import re
    from lxml import etree
    
    
    def start(file):
    
        old_file = '/Users/***/Desktop/my/main_menu.xml'
    
        session = requests.session()
    
        with open(old_file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
            for line in f1:
                a = 'caption">'
                if a in line:
                    print(line)
                    q = line.index(a)
                    w = line.index('</')
                    selec_text = line[q+9:w]
                    print(selec_text)
    
                    new_text = get_English(session,selec_text)
    
                    if new_text is not None:
                        line = line.replace(selec_text, new_text)
    
                f2.write(line)
        # os.remove(file)
        os.rename("%s.bak" % file, file)
    
    def get_English(sess,ch):
        # 0.
        tt = ch
        # 1.
        session = sess
        # 2.
        url = "https://translate.google.cn/"
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0"}
        tkkHtml = session.get(url, headers=headers)
        if tkkHtml.status_code == 200:
            tkkHtml.encoding = "utf-8"
            tkkHtmlCont = tkkHtml.content
        else:
            print("获取网页源码错误,请检查程序")
        tkkEtree = etree.HTML(tkkHtmlCont)
        # 这里返回一个list/ This is a list
        tkkScript = tkkEtree.xpath(".//*[@id='gt-c']/script[1]")[0]
        tkkValue01 = re.search("TKK=\'\d*\.\d*'", tkkScript.text).group()
        print('url TKK=' + tkkValue01)
        tkk = re.search("\d*\.\d*", tkkValue01).group()
        # 3.
        tk_value = execjs.compile(
            open(r"./Tkk.js").read()).call(
            'tk', tt, tkk)
        print('tk_value=' + tk_value)
    
        tk = tk_value
        text = urllib.parse.quote(tt, safe='/', encoding='utf-8', errors=None)
        url = 'https://translate.google.cn/translate_a/single?client=webapp&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md\
        &dt=qca&dt=rw&dt=rm&dt=ss&dt=t&swap=1&source=btn&ssel=5&tsel=5&kc=0&tk=%s&q=%s' % (tk, text)
        header = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Mobile Safari/537.36'}
        try:
            response = session.get(url, headers=header)
            html_str = response.content.decode()
            english = json.loads(html_str)
            en = english[0][0][0]
            print(en)
            return en
        except BaseException as e:
            print('get网络连接失败....')
            return None
    
    start("/Users/***/Desktop/py/main_menu-2.xml")
    

    MySQLWorkbench汉化-version 8.0.13
    提取码: 39hx

    相关文章

      网友评论

          本文标题:MySQLWorkbench汉化(Python,google翻译

          本文链接:https://www.haomeiwen.com/subject/dzjwfqtx.html