如何在Python中翻译语言?了解如何使用 Googletrans 库 (Google Translation API) 制作语言翻译器和检测器,以使用 Python 翻译 100 多种语言,包括Python翻译语言示例。
Google 翻译是一项免费服务,可将单词、短语和整个网页翻译成100多种语言。你可能已经知道它,并且在你的生活中多次使用它。
在本教程中,你将学习如何使用Googletrans库在 Python 中执行语言翻译。Googletrans是一个免费且无限制的 Python 库,可对 Google Translate API进行非官方的Ajax调用,以检测语言并翻译文本。
以下是该库的主要功能:
- 自动语言检测(它也提供语言检测)
- 批量翻译
- 快速可靠
- HTTP/2 支持
- 连接池
首先,让我们使用pip安装它:
pip3 install googletrans
Python如何翻译语言?翻译文本
导入必要的库:
from googletrans import Translator, constants
from pprint import pprint
如何在Python中翻译语言?Googletrans 为我们提供了一个方便的界面,让我们初始化我们的翻译器实例:
# init the Google API translator
translator = Translator()
请注意, Translator 类有几个可选参数:
service_urls
: 这应该是一个字符串列表,这些字符串是 google translate API 的 URLs,一个例子是["translate.google.com", "translate.google.co.uk"]
.user_agent
:将包含在请求中的User-Agent标头中的字符串。proxies
(dictionary):一个 Python 字典,将协议或协议和主机映射到代理的 URL,一个例子是{'http': 'example.com:3128', 'http://domain.example': 'example.com:3555'}
,更多关于本教程中的代理。timeout
:你发出的每个请求的超时时间,以秒表示。
Python翻译语言示例 - 现在我们只需使用translate()
方法来获取翻译文本:
# translate a spanish text to english text (by default)
translation = translator.translate("Hola Mundo")
print(f"{translation.origin} ({translation.src}) --> {translation.text} ({translation.dest})")
这将打印原始文本和语言以及翻译后的文本和语言:
Hola Mundo (es) --> Hello World (en)
如果上面的代码导致这样的错误:
AttributeError: 'NoneType' object has no attribute 'group'
然后你必须卸载当前的googletrans版本并使用以下命令安装新版本:
$ pip3 uninstall googletrans
$ pip3 install googletrans==3.1.0a0
回到代码,它会自动检测语言并默认翻译成英语,让我们翻译成另一种语言,例如阿拉伯语:
# translate a spanish text to arabic for instance
translation = translator.translate("Hola Mundo", dest="ar")
print(f"{translation.origin} ({translation.src}) --> {translation.text} ({translation.dest})")
"ar"
是阿拉伯语的语言代码,这里是输出:
Hola Mundo (es) --> مرحبا بالعالم (ar)
现在让我们设置源语言并翻译成英语:
# specify source language
translation = translator.translate("Wie gehts ?", src="de")
print(f"{translation.origin} ({translation.src}) --> {translation.text} ({translation.dest})")
输出:
Wie gehts ? (de) --> How are you ? (en)
你还可以检查其他翻译和其他一些额外数据:
# print all translations and other data
pprint(translation.extra_data)
查看输出:
{'all-translations': [['interjection',
['How are you doing?', "What's up?"],
[['How are you doing?', ["Wie geht's?"]],
["What's up?", ["Wie geht's?"]]],
"Wie geht's?",
9]],
'confidence': 1.0,
'definitions': None,
'examples': None,
'language': [['de'], None, [1.0], ['de']],
'original-language': 'de',
'possible-mistakes': None,
'possible-translations': [['Wie gehts ?',
None,
[['How are you ?', 1000, True, False],
["How's it going ?", 1000, True, False],
['How are you?', 0, True, False]],
[[0, 11]],
'Wie gehts ?',
0,
0]],
'see-also': None,
'synonyms': None,
'translation': [['How are you ?', 'Wie gehts ?', None, None, 1]]}
大量数据可以从中受益,你拥有所有可能的翻译、信心、定义甚至示例。
翻译短语列表
如何在Python中翻译语言?你还可以传递文本列表来单独翻译每个句子:
# translate more than a phrase
sentences = [
"Hello everyone",
"How are you ?",
"Do you speak english ?",
"Good bye!"
]
translations = translator.translate(sentences, dest="tr")
for translation in translations:
print(f"{translation.origin} ({translation.src}) --> {translation.text} ({translation.dest})")
输出:
Hello everyone (en) --> herkese merhaba (tr)
How are you ? (en) --> Nasılsın ? (tr)
Do you speak english ? (en) --> İngilizce biliyor musunuz ? (tr)
Good bye! (en) --> Güle güle! (tr)
语言检测
Google Translate API 也为我们提供了语言检测调用:
# detect a language
detection = translator.detect("नमस्ते दुनिया")
print("Language code:", detection.lang)
print("Confidence:", detection.confidence)
这将打印检测到的语言的代码以及置信度(1.0表示100%置信度):
Language code: hi
Confidence: 1.0
这将返回语言代码,要获取完整的语言名称,你可以使用GoogletransLANGUAGES
提供的字典:
print("Language:", constants.LANGUAGES[detection.lang])
输出:
Language: hindi
支持的语言
Python翻译语言示例:你可能知道,Google 翻译支持 100 多种语言,让我们打印所有语言:
# print all available languages
print("Total supported languages:", len(constants.LANGUAGES))
print("Languages:")
pprint(constants.LANGUAGES)
这是一个截断的输出:
Total supported languages: 107
{'af': 'afrikaans',
'sq': 'albanian',
'am': 'amharic',
'ar': 'arabic',
'hy': 'armenian',
...
<SNIPPED>
...
'vi': 'vietnamese',
'cy': 'welsh',
'xh': 'xhosa',
'yi': 'yiddish',
'yo': 'yoruba',
'zu': 'zulu'}
结论
如何在Python中翻译语言?有了它,这个库对于想要快速翻译应用程序中文本的每个人来说都非常有用。但是,如前所述,该库是非官方的,作者指出单个文本的最大字符长度为 15K。
它也不能保证库在任何时候都能正常工作,如果你想使用稳定的 API,你应该使用官方的谷歌翻译 API。
Python如何翻译语言?如果5xx
这个库出现HTTP错误,那么谷歌已经禁止了你的 IP 地址,这是因为经常使用这个库,谷歌翻译可能会阻止你的 IP 地址,你需要考虑通过将代理字典传递给类中的参数来使用代理,或使用所讨论的官方 API。proxiesTranslator()
此外,我编写了一个快速的 Python 脚本,它允许你在命令行中翻译句子和文档中的文本,请在此处查看。