一个灵活的免费且无限制的Python工具,通过多种翻译器以简单的方式在不同语言之间进行翻译。
项目描述
为人类翻译
一个灵活的 免费 且 无限 的工具,通过多种翻译器以简单的方式在不同语言之间进行翻译。
免费软件:MIT许可证
Swagger API: https://deep-translator-api.azurewebsites.net/docs.
动机
我需要使用 Python 翻译文本。很难找到一种简单的方法来做这件事。虽然有一些库可以用于这项任务,但其中大部分都有 错误、不是免费的、有限制、不再受支持或使用复杂。
因此,我决定构建这个简单的工具。它是100%免费、无限、易于使用,并支持所有语言。
基本上,我的目标是让这个工具集成对多个著名翻译器的支持。
何时使用它
如果你想使用 Python 翻译文本
如果你想从文件中翻译
如果你想从多个来源获取翻译,而不仅仅是单个来源
如果你想自动化翻译
如果你想使用 ChatGpt 进行翻译
如果你想比较不同的翻译
如果你想自动检测语言
为什么你应该使用它
它是唯一一个集成多个翻译器的 Python 工具
多语言支持
支持 ChatGpt(版本 >= 1.11.0)
支持批量翻译
高度抽象
自动语言检测
易于使用和扩展
支持大多数著名的通用翻译器
稳定且定期维护
API 非常易于使用
支持代理集成
特性
支持谷歌翻译
支持微软翻译器(版本 >= 1.3.5)
支持Pons 翻译器
支持Yandex 翻译器(版本 >= 1.2.1)
支持QcriTranslator 翻译器(版本 >= 1.2.4)
支持DeeplTranslator 翻译器(版本 >= 1.2.5)
支持Papago 翻译器(版本 >= 1.4.4)
支持 ChatGpt
支持代理使用
自动单语言检测
批量语言检测
直接从文本文件翻译
翻译 docx 文件(版本 >= 1.9.4)
翻译 PDF 文件(版本 >= 1.9.4)
为单词获取多个翻译
自动化翻译不同语言的段落
直接从终端翻译(版本 >= 1.1.0)
安装
安装稳定版本
$ pip install -U deep-translator
$ poetry add deep-translator # for poetry usage
如果您想从源代码安装,请查看文档。
此外,如果您想支持特定用例,可以安装额外组件。例如,翻译 Docx 和 PDF 文件
$ pip install deep-translator[docx] # add support for docx translation
$ pip install deep-translator[pdf] # add support for pdf translation
$ pip install deep-translator[ai] # add support for ChatGpt
$ poetry add deep-translator --extras "docx pdf ai" # for poetry usage
快速开始
from deep_translator import GoogleTranslator
# Use any translator you like, in this example GoogleTranslator
translated = GoogleTranslator(source='auto', target='de').translate("keep it up, you are awesome") # output -> Weiter so, du bist großartig
或使用代理
from deep_translator import GoogleTranslator
proxies_example = {
"https": "34.195.196.27:8080",
"http": "34.195.196.27:8080"
}
translated = GoogleTranslator(source='auto', target='de', proxies=proxies_example).translate("keep it up, you are awesome") # output -> Weiter so, du bist großartig
甚至直接从终端
$ deep-translator --source "en" --target "de" --text "hello world"
or shorter
$ dt -tg de -txt "hello world"
用法
本节提供了如何使用该工具中所有集成翻译器的演示。
导入
from deep_translator import (GoogleTranslator,
ChatGptTranslator,
MicrosoftTranslator,
PonsTranslator,
LingueeTranslator,
MyMemoryTranslator,
YandexTranslator,
PapagoTranslator,
DeeplTranslator,
QcriTranslator,
single_detection,
batch_detection)
检查支持的语言
# default return type is a list
langs_list = GoogleTranslator().get_supported_languages() # output: [arabic, french, english etc...]
# alternatively, you can the dictionary containing languages mapped to their abbreviation
langs_dict = GoogleTranslator().get_supported_languages(as_dict=True) # output: {arabic: ar, french: fr, english:en etc...}
语言检测
单文本检测
lang = single_detection('bonjour la vie', api_key='your_api_key')
print(lang) # output: fr
批量检测
lang = batch_detection(['bonjour la vie', 'hello world'], api_key='your_api_key')
print(lang) # output: [fr, en]
Google 翻译
text = 'happy coding'
您可以使用自动语言检测来检测源语言
translated = GoogleTranslator(source='auto', target='de').translate(text=text)
您可以通过名称或缩写传递语言
translated = GoogleTranslator(source='auto', target='german').translate(text=text)
# Alternatively, you can pass languages by their abbreviation:
translated = GoogleTranslator(source='en', target='de').translate(text=text)
您还可以重用翻译器类并更改/更新其属性。
(请注意,这对性能也很重要,因为实例化新对象是昂贵的)
# let's say first you need to translate from auto to german
my_translator = GoogleTranslator(source='auto', target='german')
result = my_translator.translate(text=text)
print(f"Translation using source = {my_translator.source} and target = {my_translator.target} -> {result}")
# let's say later you want to reuse the class but your target is french now
# This is the best practice and how you should use deep-translator.
# Please don't over-instantiate translator objects without a good reason, otherwise you will run into performance issues
my_translator.target = 'fr' # this will override the target 'german' passed previously
result = my_translator.translate(text=text)
print(f"Translation using source = {my_translator.source} and target = {my_translator.target} -> {result}")
# you can also update the source language as well
my_translator.source = 'en' # this will override the source 'auto' passed previously
result = my_translator.translate(text=text)
print(f"Translation using source = {my_translator.source} and target = {my_translator.target} -> {result}")
翻译文本批量
texts = ["hallo welt", "guten morgen"]
# the translate_sentences function is deprecated, use the translate_batch function instead
translated = GoogleTranslator('de', 'en').translate_batch(texts)
从文件翻译
translated = GoogleTranslator(source='auto', target='german').translate_file('path/to/file')
Mymemory 翻译器
简单翻译
text = 'Keep it up. You are awesome'
translated = MyMemoryTranslator(source='auto', target='french').translate(text)
翻译文本批量
texts = ["hallo welt", "guten morgen"]
# the translate_sentences function is deprecated, use the translate_batch function instead
translated = MyMemoryTranslator('de', 'en').translate_batch(texts)
从文件翻译
path = "your_file.txt"
translated = MyMemoryTranslator(source='en', target='fr').translate_file(path)
DeeplTranslator
简单翻译
text = 'Keep it up. You are awesome'
translated = DeeplTranslator(api_key="your_api_key", source="en", target="en", use_free_api=True).translate(text)
翻译文本批量
texts = ["hallo welt", "guten morgen"]
# the translate_sentences function is deprecated, use the translate_batch function instead
translated = DeeplTranslator("your_api_key").translate_batch(texts)
QcriTranslator
检查语言
# as a property
print("language pairs: ", QcriTranslator("your_api_key").languages)
检查域名
# as a property
print("domains: ", QcriTranslator("your_api_key").domains)
文本翻译
text = 'Education is great'
translated = QcriTranslator("your_api_key").translate(source='en', target='ar', domain="news", text=text)
# output -> التعليم هو عظيم
# see docs for batch translation and more.
Linguee 翻译器
word = 'good'
简单翻译
translated_word = LingueeTranslator(source='english', target='french').translate(word)
返回所有同义词或匹配的单词
# set the argument return_all to True if you want to get all synonyms of the word to translate
translated_word = LingueeTranslator(source='english', target='french').translate(word, return_all=True)
翻译一组单词
translated_words = LingueeTranslator(source='english', target='french').translate_words(["good", "awesome"])
PONS 翻译器
word = 'awesome'
简单翻译
translated_word = PonsTranslator(source='english', target='french').translate(word)
# pass language by their abbreviation
translated_word = PonsTranslator(source='en', target='fr').translate(word)
返回所有同义词或匹配的单词
# set the argument return_all to True if you want to get all synonyms of the word to translate
translated_word = PonsTranslator(source='english', target='french').translate(word, return_all=True)
翻译一组单词
translated_words = PonsTranslator(source='english', target='french').translate_words(["good", "awesome"])
Yandex 翻译器
语言检测
lang = YandexTranslator('your_api_key').detect('Hallo, Welt')
print(f"language detected: {lang}") # output -> language detected: 'de'
文本翻译
# with auto detection | meaning provide only the target language and let yandex detect the source
translated = YandexTranslator('your_api_key').translate(source="auto", target="en", text='Hallo, Welt')
print(f"translated text: {translated}") # output -> translated text: Hello world
# provide source and target language explicitly
translated = YandexTranslator('your_api_key').translate(source="de", target="en", text='Hallo, Welt')
print(f"translated text: {translated}") # output -> translated text: Hello world
文件翻译
translated = YandexTranslator('your_api_key').translate_file(source="auto", target="en", path="path_to_your_file")
批量翻译
translated = YandexTranslator('your_api_key').translate_batch(source="auto", target="de", batch=["hello world", "happy coding"])
Microsoft 翻译器
必需和可选属性
有两个必需属性,即“api_key”(字符串)和“target”(字符串或列表)。属性“source”是可选的。此外,Microsoft API接受许多其他可选属性,您可以在以下位置找到它们: https://docs.microsoft.com/azure/cognitive-services/translator/reference/v3-0-translate 您可以直接在必需属性后添加它们,请参阅示例。
text = 'happy coding'
translated = MicrosoftTranslator(api_key='some-key', target='de').translate(text=text)
translated_two_targets = MicrosoftTranslator(api_key='some-key', target=['de', 'ru']).translate(text=text)
translated_with_optional_attr = MicrosoftTranslator(api_key='some-key', target='de', textType='html']).translate(text=text)
您可以通过名称或缩写传递语言
translated = MicrosoftTranslator(api_key='some-key', target='german').translate(text=text)
# Alternatively, you can pass languages by their abbreviation:
translated = MicrosoftTranslator(api_key='some-key', target='de').translate(text=text)
翻译文本批量
texts = ["hallo welt", "guten morgen"]
translated = MicrosoftTranslator(api_key='some-key', target='english').translate_batch(texts)
从文件翻译
translated = MicrosoftTranslator(api_key='some-key', target='german').translate_file('path/to/file')
ChatGpt 翻译器
必需和可选属性
有两个必需属性,即“api_key”(字符串)和“target”(字符串或列表)。属性“source”是可选的。
您可以将API密钥作为参数提供,或者将其作为环境变量导出,例如 export OPENAI_API_KEY="your_key"
text = 'happy coding'
translated = ChatGptTranslator(api_key='your_key', target='german').translate(text=text)
翻译文本批量
texts = ["hallo welt", "guten morgen"]
translated = ChatGptTranslator(api_key='some-key', target='english').translate_batch(texts)
从文件翻译
translated = ChatGptTranslator(api_key='some-key', target='german').translate_file('path/to/file')
Papago 翻译器
text = 'happy coding'
translated = PapagoTranslator(client_id='your_client_id', secret_key='your_secret_key', source='en', target='ko').translate(text=text) # output: 행복한 부호화
Libre 翻译器
text = 'laufen'
translated = LibreTranslator(source='auto', target='en', base_url = 'https://libretranslate.com/', api_key = 'your_api_key').translate(text=text) # output: run
您可以通过名称或缩写传递语言
translated = LibreTranslator(source='german', target='english').translate(text=text)
# Alternatively, you can pass languages by their abbreviation:
translated = LibreTranslator(source='de', target='en').translate(text=text)
翻译文本批量
texts = ["hallo welt", "guten morgen"]
translated = LibreTranslator(source='auto', target='en').translate_batch(texts)
从文件翻译
translated = LibreTranslator(source='auto', target='en').translate_file('path/to/file')
百度翻译器
简单翻译
text = 'Hello world'
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate(text)
翻译文本批量
texts = ["Hello world", "How are you?"]
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_batch(texts)
从文件翻译
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_file('path/to/file')
百度翻译器
简单翻译
text = 'Hello world'
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate(text)
翻译文本批量
texts = ["Hello world", "How are you?"]
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_batch(texts)
从文件翻译
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_file('path/to/file')
代理使用
deep-translator 提供开箱即用的代理使用。只需将您的代理配置定义为字典,并将其传递给相应的翻译器。下面是使用 GoogleTranslator 的示例,但此功能可用于所有支持的翻译器。
from deep_translator import GoogleTranslator
# define your proxy configs:
proxies_example = {
"https": "your https proxy", # example: 34.195.196.27:8080
"http": "your http proxy if available"
}
translated = GoogleTranslator(source='auto', target='de', proxies=proxies_example).translate("this package is awesome")
文件翻译
Deep-translator(版本 >= 1.9.4)不仅支持文本文件翻译,还支持 docx 和 PDF 文件。但是,您需要使用特定 extras 安装 deep-translator。
关于 docx 翻译
pip install deep-translator[docx]
关于 PDF 翻译
pip install deep-translator[pdf]
从终端使用
Deep-translator 支持一系列命令行参数,以便在您的控制台中直接快速简单地访问翻译器。
有关可用翻译器的列表
$ deep-translator list
要翻译字符串或文本行
$ deep_translator google --source "english" --target "german" --text "happy coding"
备选简短选项名称,以及使用语言缩写
$ deep_translator google -src "en" -tgt "de" -txt "happy coding"
最后,要获取给定翻译器的可用语言列表
$ deep-translator languages google
测试
开发者可以安装 deep-translator 的开发版本并执行单元测试以验证功能。有关如何进行此操作的更多信息,请参阅 贡献指南
链接
查看 medium 上的这篇文章,了解为什么您应该使用 deep-translator 包以及如何使用 Python 进行文本翻译。 https://medium.com/@nidhalbacc/how-to-translate-text-with-python-9d203139dcf5
帮助
如果您遇到任何问题,请随时提交问题。此外,您可以联系作者获取更多信息/问题。
您喜欢 deep-translator 吗?您始终可以通过以下方式帮助此项目的开发:
在 github 和/或 twitter 上关注
推广此项目(例如,在 github 上给它加星标)
关注 github 仓库以获取新版本
关于此包的推文
帮助他人解决 github 上的问题
创建问题和拉取请求
赞助此项目
下一步
查看示例文件夹以获取更多信息 :) 欢迎贡献。请在此处阅读贡献指南 Here
鸣谢
非常感谢 @KirillSklyarenko 对微软翻译集成所做的贡献
许可证
MIT 许可证
版权(c)2020 年至今,Nidhal Baccouri
Swagger UI
deep-translator 为方便与其他应用程序集成提供了 API 服务器。非 Python 应用程序可以直接与 API 通信并利用 deep-translator 的功能。
在此处访问 API: https://deep-translator-api.azurewebsites.net/docs
Translator++ 移动应用程序
您可以在 play store 下载并尝试此应用 https://play.google.com/store/apps/details?id=org.translator.translator&hl=en_US&gl=US
在开发 deep-translator 后,我意识到如果我能将其用作手机上的应用程序,这将多么酷。当然,有谷歌翻译、pons 和 linguee 等应用程序,但将这些翻译器集成到一个应用程序中不是更酷吗?
长话短说,我开始着手开发应用程序。我决定使用 kivy 框架,因为我想要用 Python 编码并开发跨平台应用程序。我在我的 github 上也开源了 Translator++ 应用程序。请随意查看代码或提出拉取请求 ;)
我在2020年2月8日在谷歌应用商店发布了第一个版本
以下是一些截图
手机
平板电脑
网站 & 桌面应用程序
目前,有基于深度翻译的网站和/或桌面应用程序的提议。您可以在此处跟踪问题:https://github.com/nidhaloff/deep-translator/issues/144
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。