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以上不行)


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

查看所有标签

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

JavaScript & jQuery

JavaScript & jQuery

David Sawyer McFarland / O Reilly / 2011-10-28 / USD 39.99

You don't need programming experience to add interactive and visual effects to your web pages with JavaScript. This Missing Manual shows you how the jQuery library makes JavaScript programming fun, ea......一起来看看 《JavaScript & jQuery》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具