跳转到主要内容

一个灵活的免费且无限制的Python工具,通过多种翻译器以简单的方式在不同语言之间进行翻译。

项目描述

deep-translator-icon

https://img.shields.io/pypi/v/deep-translator.svg https://img.shields.io/travis/nidhaloff/deep-translator.svg Documentation Status https://img.shields.io/pypi/l/deep-translator https://img.shields.io/pypi/status/deep-translator https://pepy.tech/badge/deep-translator https://img.shields.io/pypi/wheel/deep-translator https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit Twitter URL

为人类翻译

一个灵活的 免费无限 的工具,通过多种翻译器以简单的方式在不同语言之间进行翻译。





动机

我需要使用 Python 翻译文本。很难找到一种简单的方法来做这件事。虽然有一些库可以用于这项任务,但其中大部分都有 错误、不是免费的、有限制、不再受支持或使用复杂。

因此,我决定构建这个简单的工具。它是100%免费、无限、易于使用,并支持所有语言。

基本上,我的目标是让这个工具集成对多个著名翻译器的支持。

何时使用它

  • 如果你想使用 Python 翻译文本

  • 如果你想从文件中翻译

  • 如果你想从多个来源获取翻译,而不仅仅是单个来源

  • 如果你想自动化翻译

  • 如果你想使用 ChatGpt 进行翻译

  • 如果你想比较不同的翻译

  • 如果你想自动检测语言

为什么你应该使用它

  • 它是唯一一个集成多个翻译器的 Python 工具

  • 多语言支持

  • 支持 ChatGpt(版本 >= 1.11.0)

  • 支持批量翻译

  • 高度抽象

  • 自动语言检测

  • 易于使用和扩展

  • 支持大多数著名的通用翻译器

  • 稳定且定期维护

  • API 非常易于使用

  • 支持代理集成

特性

安装

安装稳定版本

$ 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 翻译器

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 的开发版本并执行单元测试以验证功能。有关如何进行此操作的更多信息,请参阅 贡献指南

帮助

如果您遇到任何问题,请随时提交问题。此外,您可以联系作者获取更多信息/问题。

您喜欢 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++ 移动应用程序

Icon of the app

您可以在 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日在谷歌应用商店发布了第一个版本

以下是一些截图

  • 手机

screenshot1 screenshot2 spinner
  • 平板电脑

screenshot3

网站 & 桌面应用程序

目前,有基于深度翻译的网站和/或桌面应用程序的提议。您可以在此处跟踪问题:https://github.com/nidhaloff/deep-translator/issues/144

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

deep_translator-1.11.4.tar.gz (36.0 kB 查看哈希值)

上传时间

构建分布

deep_translator-1.11.4-py3-none-any.whl (42.3 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面