简介
谷歌翻译库Googletrans久负盛名,但是由于tk值计算问题,频繁出现AttributeError: 'NoneType' object has no attribute 'group'异常。
google_trans_new库在Googletrans的基础上进行了完善,算是能够正常运行吧,但是效果也不太尽如人意,翻译结果与谷歌翻译网页结果不太一致,翻译效果较差。
项目地址为https://github.com/lushan88a/google_trans_new。
google_trans_new库当前发行版本为1.1.9,可使用pip install google_trans_new。
注意!1.19版本有一个问题没有修复,导致会出现json解析异常json.decoder.JSONDecodeError: Extra data: line 1 column 300 (char 299)。
作者虽然修复了这个问题,但是一直没有将最新代码推送到pip。
因此,解决方法有两种:
- 安装1.19版本,找到
google_trans_new.py,将第151行response = (decoded_line + ']')修改为response = decoded_line。 - 到下载最新源码进行源码安装或者直接覆盖原有
google_trans_new.py。
使用方法
快捷翻译
- 导入
google_translator类 - 构造
google_translator类实例。 - 调用
translate方法,指定待翻译文本、翻译目标语言。 - 结果返回翻译文本。
from google_trans_new import google_translator
translator = google_translator()
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')
print(translate_text)
结果为:Hello Chinese
检测语言
- 导入
google_translator类 - 构造
google_translator类实例。 - 调用
detect方法,指定待翻译文本。 - 结果返回检测语言列表。
from google_trans_new import google_translator
detector = google_translator()
detect_result = detector.detect('สวัสดีจีน')
print(detect_result)
结果为:['th', 'thai']
检测结果发音
- 导入
google_translator类 - 构造
google_translator类实例。 - 调用
translate方法,指定待翻译文本、文本源语言、翻译目标语言,设置pronounce参数为True。 - 结果返回翻译文本及文本发音。
from google_trans_new import google_translator
translator = google_translator()
Pronounce = translator.translate('สวัสดีจีน',lang_src='th',lang_tgt='zh-cn',pronounce=True)
print(Pronounce)
源码分析
google_trans_new库的结构非常简单:
│ __init__.py # 重构命名空间,暴露google_translator类
│ constant.py # 定义LANGUAGES(语言列表)和DEFAULT_SERVICE_URLS (谷歌翻译地址)
│ google_trans_new.py # 翻译API
google_trans_new.py模块主要包含google_new_transError(Exception)和google_translator两个类。
google_translator类的方法如下:
-
构造方法:签名为
__init__(self, url_suffix="cn", timeout=5, proxies=None)- 参数:
url_suffix指定谷歌翻译地址,默认值为cn。timeout指定超时时间,默认值为5。proxies指定代理。
- 参数:
-
请求构造方法:签名为
_package_rpc(self, text, lang_src='auto', lang_tgt='auto')- 参数:
text待翻译文本。lang_src翻译文本源语言,默认值为auto,即自动。lang_tgt翻译文本目标语言,默认值为auto,即自动。
- 返回值:请求字符串。
- 参数:
-
翻译方法:签名为
translate(self, text, lang_tgt='auto', lang_src='auto', pronounce=False)- 参数:
text待翻译文本。用于调用_package_rpc方法构造请求。lang_src翻译文本源语言,默认值为auto,即自动。用于调用_package_rpc方法构造请求数据。lang_tgt翻译文本目标语言,默认值为auto,即自动。用于调用_package_rpc方法构造请求数据。pronounce是否返回发音。
- 返回值:翻译结果。
- 大致流程:
- 检测翻译语言参数是否合法,不合法设置为默认值。
- 检测文本是否超过5000字符,超过提示异常。
- 通过
_package_rpc构造请求数据。 - 通过
requests库返回请求结果。 - 解析请求结果。
- 参数:
-
语言检测方法:签名为
detect(self, text)- 参数:
text待检测文本。
- 返回值:检测结果。
- 参数:
本文介绍了google_trans_new库,它是对谷歌翻译库Googletrans的改进版,解决了AttributeError异常问题。尽管翻译效果可能与网页版谷歌翻译略有出入,但提供了稳定的翻译功能。文章详细讲解了库的安装、使用方法以及源码分析,并给出了翻译和语言检测的示例代码。同时,提到了1.1.9版本的json解析异常问题及其解决方案。





