Skip to main content

一个灵活的免费且无限制的 python 工具,可以使用多个翻译器以简单的方式在不同语言之间进行翻译

项目描述

深度翻译器图标

https://img.shields.io/pypi/v/deep-translator.svg https://img.shields.io/travis/nidhaloff/deep-translator.svg 文件状态 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 ://deep-translator.readthedocs.io 。

  • Swagger API:https ://deep-translator-api.azurewebsites.net/docs 。



<nav class="contents" id="table-of-contents">

目录

</nav>


动机

我需要使用 python 翻译文本。很难找到一种简单的方法来做到这一点。还有其他库可用于此任务,但其中大多数都是错误的、不是免费的、有限的、不再受支持或使用复杂。

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

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

什么时候应该使用它

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

  • 如果您想从文件翻译

  • 如果您想从多个来源获得翻译,而不仅仅是一个

  • 如果您想自动翻译

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

  • 如果您想自动检测语言

为什么你应该使用它

  • 它是唯一集成了许多翻译器的python工具

  • 多语言支持

  • 支持批量翻译

  • 高度抽象

  • 自动语言检测

  • 易于使用和扩展

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

  • 稳定并定期维护

  • API 非常易于使用

  • 支持代理集成

特征

安装

安装稳定版:

$ pip install -U deep-translator

如果您想从源代码安装,请查看文档。

快速开始

from deep_translator import 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,
                             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]

谷歌翻译

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)
  • 您还可以重用 Translator 类并更改/更新其属性。

(请注意,这对性能也很重要,因为实例化新对象很昂贵)

# 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')

我的记忆翻译

  • 简单翻译

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)

深度翻译器

  • 简单翻译

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.

语言翻译器

word = 'good'
  • 简单翻译

translated_word = LingueeTranslator(source='english', target='french').translate(word)

# pass language by their abbreviation
translated_word = LingueeTranslator(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 = 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 = LingueeTranslator(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"])

微软翻译

  • 必需和可选属性

    有两个必需的属性,即“api_key”(字符串)和“target”(字符串或列表)。属性“来源”是可选的。此外,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')

帕帕戈翻译

text = 'happy coding'
translated = PapagoTranslator(client_id='your_client_id', secret_key='your_secret_key', source='en', target='ko').translate(text=text)  # output: 행복한 부호화

自由翻译

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')

代理使用

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 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

测试

开发人员可以安装深度翻译器的开发版本并执行单元测试来验证功能。有关执行此操作的更多信息,请参阅贡献指南

帮助

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

你喜欢深度翻译吗?您始终可以通过以下方式帮助该项目的开发:

  • 关注 github 和/或 twitter

  • 推广项目(例如:在 github 上给它一个星号)

  • 观看 github 存储库以获取新版本

  • 关于包裹的推文

  • 帮助他人解决 github 上的问题

  • 创建问题和拉取请求

  • 赞助项目

下一步

查看示例文件夹以获取更多信息:) 始终欢迎您的贡献。在此处阅读贡献指南

学分

非常感谢@KirillSklyarenko 在集成微软翻译器方面所做的工作

执照

麻省理工学院执照

版权所有 (c) 2020 年至今,Nidhal Baccouri

招摇用户界面

deep-translator 提供了一个 api 服务器,便于与其他应用程序集成。非 python 应用程序可以直接与 api 通信并利用 deep-translator 的特性

在此处访问 api:https ://deep-translator-api.azurewebsites.net/docs

Translator++ 移动应用程序

应用程序图标

您可以在 Play 商店下载并试用该应用程序https://play.google.com/store/apps/details?id=org.translator.translator&hl=en_US&gl=US

在开发了深度翻译器之后,我意识到如果我可以将它用作手机上的应用程序,那该有多酷。当然,有谷歌翻译、pons 和 linguee 应用程序等。但是制作一个集成了所有这些翻译器的应用程序不是更酷吗?

长话短说,我开始开发这个应用程序。我决定使用kivy 框架,因为我想用 python 编写代码并开发一个跨平台的应用程序。我也在我的 github 上开源了Translator++ 应用程序。随意查看代码或提出拉取请求;)

我于 2020 年 2 月 8 日在 google play store 上发布了第一个版本

以下是一些截图:

  • 电话

截图1 截图2 微调器
  • 药片:

截图3

网站和桌面应用程序

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

项目详情