Python学习,VNR调用Jbeijing翻译的代码

栏目: Python · 发布时间: 7年前

内容简介:由于excite关闭了网页翻译功能,google的网页翻译有时候也不太灵光,就去看了下jbeijing的翻译API调用,正好VNR中已有相关代码,就学习一下。这段代码是调用JBJCT.dll中的方法(看注释大神是用IDA反编译dll在看函数的参数),功能是将unicode文本从日文翻译成中文,下面是运行效果

由于excite关闭了网页翻译功能,google的网页翻译有时候也不太灵光,就去看了下jbeijing的翻译API调用,正好VNR中已有相关代码,就学习一下。

def transferUnicode(self, text, to, fr=CODEPAGE_JA):  
    """
    @param  text  unicode  not str
    @param  to  uint  code page
    @param  fr  uint  code page
    @raise  WindowsError, AttributeError
    From IDA:
    int __cdecl JC_Transfer_Unicode(int, UINT CodePage, int, int, int, LPCWSTR lpWideCharStr, int, int, int, int)
    Values are get by runtime debugging.

    Guessed
    int __cdecl JC_Transfer_Unicode(
      HWND hwnd,
      UINT fromCodePage,
      UINT toCodePage,
      int unknown,
      int unknown,
      LPCWSTR from,
      LPWSTR to,
      int &toCapacity,
      LPWSTR buffer,
      int &bufferCapacity)

    Note: This function is not thread-safe!
    Using persistent buffers is faster, but not thread-safe!
    """
    size = BUFFER_SIZE
    if self.BUFFER_THREAD_SAFE:
      # Limit buffer size would result in crash ... no idea why
      #size = min(size, len(text) * 10) # the translation should be no more larger than 10 times of Japanese
      out = ctypes.create_unicode_buffer(size)
      buf = ctypes.create_unicode_buffer(size)
    else:
      out = self.buffer1
      buf = self.buffer2
    outsz = ctypes.c_int(size)
    bufsz = ctypes.c_int(size)
    #self.dll.JC_Transfer_Unicode(
    self.JC_Transfer_Unicode(
      0,    # int, unknown
      fr,   # uint from, supposed to be 0x3a4 (cp932)
      to,   # uint to, eighter cp950 or cp932
      1,    # int, unknown
      1,    # int, unknown
      text,
      out,  # wchar_t*
      ctypes.byref(outsz), # ∫
      buf,  # wchar_t*
      ctypes.byref(bufsz)) # ∫
    return out.value

这段代码是调用JBJCT.dll中的方法(看注释大神是用IDA反编译dll在看函数的参数),功能是将unicode文本从日文翻译成中文,下面是运行效果

结果

Python学习,VNR调用Jbeijing翻译的代码 Python学习,VNR调用Jbeijing翻译的代码 Python学习,VNR调用Jbeijing翻译的代码

实际运用中发现一个问题,翻译的文本是有上限的,如果原文是太长的文章,返回的译文可能会缺失(大概5k以上不行)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

GitHub入门与实践

GitHub入门与实践

[日] 大塚弘记 / 支鹏浩、刘斌 / 人民邮电出版社 / 2015-7 / 39.00元

本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。一起来看看 《GitHub入门与实践》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器