davideuler
model default to default_model for mlx/gguf models, and add new text as optional layer; allow --no-original option to remove original content in pdf, just save the translated content
4a4fa23
################## | |
deep-translator | |
################## | |
.. image:: ../assets/icon.jpg | |
:width: 100 | |
:align: center | |
:alt: deep-translator-icon | |
| | |
.. image:: https://img.shields.io/pypi/v/deep-translator.svg | |
:target: https://pypi.python.org/pypi/deep-translator | |
.. image:: https://img.shields.io/travis/nidhaloff/deep-translator.svg | |
:target: https://github.com/nidhaloff/deep-translator/actions/workflows/build.yml | |
.. image:: https://readthedocs.org/projects/deep-translator/badge/?version=latest | |
:target: https://deep-translator.readthedocs.io/en/latest/?badge=latest | |
:alt: Documentation Status | |
.. image:: https://img.shields.io/pypi/l/deep-translator | |
:target: https://pypi.python.org/pypi/deep-translator | |
.. image:: https://img.shields.io/pypi/status/deep-translator | |
:target: https://pypi.python.org/pypi/deep-translator | |
.. image:: https://pepy.tech/badge/deep-translator | |
:target: https://pepy.tech/project/deep-translator | |
.. image:: https://img.shields.io/pypi/wheel/deep-translator | |
:target: https://pypi.python.org/pypi/deep-translator | |
.. image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit | |
:target: https://github.com/pre-commit/pre-commit | |
.. image:: https://img.shields.io/twitter/url?url=https%3A%2F%2Ftwitter.com%2FNidhalBaccouri | |
:alt: Twitter URL | |
:target: https://twitter.com/NidhalBaccouri | |
======================= | |
Translation for humans | |
======================= | |
A flexible **FREE** and **UNLIMITED** tool to translate between different languages in a simple way using multiple translators. | |
* Free software: MIT license | |
* Documentation: https://deep-translator.readthedocs.io. | |
* Swagger API: https://deep-translator-api.azurewebsites.net/docs. | |
| | |
| | |
.. contents:: Table of Contents | |
:depth: 3 | |
| | |
| | |
========== | |
Motivation | |
========== | |
I needed to translate a text using python. It was hard to find a simple way to do it. | |
There are other libraries that can be used for this task, but most of them | |
are **buggy, not free, limited, not supported anymore or complex to use.** | |
Therefore, I decided to build this simple tool. It is 100% free, unlimited, easy to use and provides | |
support for all languages. | |
Basically, my goal was to integrate support for multiple famous translators | |
in this tool. | |
====================== | |
When you should use it | |
====================== | |
- If you want to translate text using python | |
- If you want to translate from a file | |
- If you want to get translations from many sources and not only one | |
- If you want to automate translations | |
- If you want to use ChatGpt for translations | |
- If you want to compare different translations | |
- If you want to detect language automatically | |
====================== | |
Why you should use it | |
====================== | |
- It's the only python tool that integrates many translators | |
- Multi language support | |
- Support for ChatGpt (version >= 1.11.0) | |
- Supports batch translation | |
- High level of abstraction | |
- Automatic language detection | |
- Easy to use and extend | |
- Support for most famous universal translators | |
- Stable and maintained regularly | |
- The API is very easy to use | |
- Proxy integration is supported | |
======== | |
Features | |
======== | |
* Support for `google translate <https://translate.google.com/>`_ | |
* Support for the `microsoft translator <https://www.microsoft.com/en-us/translator//>`_ (version >= 1.3.5) | |
* Support for `Pons translator <https://de.pons.com/>`_ | |
* Support for the `Linguee translator <https://www.linguee.com/>`_ | |
* Support for the `Mymemory translator <https://mymemory.translated.net/>`_ | |
* Support for the `Yandex translator <https://yandex.com/>`_ (version >= 1.2.1) | |
* Support for the `QcriTranslator translator <https://mt.qcri.org/api/>`_ (version >= 1.2.4) | |
* Support for the `DeeplTranslator translator <https://www.deepl.com/en/translator/>`_ (version >= 1.2.5) | |
* Support for the `Papago translator <https://papago.naver.com/>`_ (version >= 1.4.4) | |
* Support for the `Libre translator <https://libretranslate.com/>`_ | |
* Support for ChatGpt | |
* Support for proxy usage | |
* Automatic single language detection | |
* Batch language detection | |
* Translate directly from a text file | |
* Translate docx files (version >= 1.9.4) | |
* Translate PDF files (version >= 1.9.4) | |
* Get multiple translation for a word | |
* Automate the translation of different paragraphs in different languages | |
* Translate directly from terminal (version >= 1.1.0) | |
============= | |
Installation | |
============= | |
Install the stable release: | |
.. code-block:: console | |
$ pip install -U deep-translator | |
$ poetry add deep-translator # for poetry usage | |
take a look at the docs if you want to install from source. | |
Also, you can install extras if you want support for specific use case. For example, translating Docx and PDF files | |
.. code-block:: console | |
$ 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 | |
============ | |
Quick Start | |
============ | |
.. code-block:: python | |
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 | |
or using proxies: | |
.. code-block:: python | |
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 | |
or even directly from terminal: | |
.. code-block:: console | |
$ deep-translator --source "en" --target "de" --text "hello world" | |
or shorter | |
$ dt --translator chatgpt -tg de -txt "hello world" | |
===== | |
Usage | |
===== | |
In this section, demos on how to use all different integrated translators in this tool are provided. | |
.. note:: | |
You can always pass the languages by the name or by abbreviation. | |
*Example*: If you want to use english as a source or target language, you can pass **english** or **en** as an argument | |
.. note:: | |
For all translators that require an ApiKey, you can either specify it as an argument to the translator class | |
or you can export it as an environment variable, this way you won't have to provide it to the class. | |
*Example*: export OPENAI_API_KEY="your_key" | |
Imports | |
-------- | |
.. code-block:: python | |
from deep_translator import (GoogleTranslator, | |
ChatGptTranslator, | |
MicrosoftTranslator, | |
PonsTranslator, | |
LingueeTranslator, | |
MyMemoryTranslator, | |
YandexTranslator, | |
PapagoTranslator, | |
DeeplTranslator, | |
QcriTranslator, | |
single_detection, | |
batch_detection) | |
Check Supported Languages | |
--------------------------- | |
.. note:: | |
You can check the supported languages of each translator by calling the | |
get_supported_languages function. | |
.. code-block:: python | |
# 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...} | |
Language Detection | |
------------------ | |
.. note:: | |
You can also detect language automatically. Notice that this package is free and my goal is to keep it free. | |
Therefore, you will need to get your own api_key if you want to use the language detection function. | |
I figured out you can get one for free here: https://detectlanguage.com/documentation | |
- Single Text Detection | |
.. code-block:: python | |
lang = single_detection('bonjour la vie', api_key='your_api_key') | |
print(lang) # output: fr | |
- Batch Detection | |
.. code-block:: python | |
lang = batch_detection(['bonjour la vie', 'hello world'], api_key='your_api_key') | |
print(lang) # output: [fr, en] | |
Google Translate | |
----------------- | |
.. code-block:: python | |
text = 'happy coding' | |
- You can use automatic language detection to detect the source language: | |
.. code-block:: python | |
translated = GoogleTranslator(source='auto', target='de').translate(text=text) | |
- You can pass languages by name or by abbreviation: | |
.. code-block:: python | |
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) | |
- You can also reuse the Translator class and change/update its properties. | |
(Notice that this is important for performance too, since instantiating new objects is expensive) | |
.. code-block:: python | |
# 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}") | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["hallo welt", "guten morgen"] | |
# the translate_sentences function is deprecated, use the translate_batch function instead | |
translated = GoogleTranslator('de', 'en').translate_batch(texts) | |
- Translate text from txt/docx/pdf: | |
.. code-block:: python | |
path = "your_file.txt" | |
translated = GoogleTranslator(source='auto', target='german').translate_file(path) | |
Mymemory Translator | |
-------------------- | |
.. note:: | |
As in google translate, you can use the automatic language detection with mymemory by using "auto" as an | |
argument for the source language. However, this feature in the mymemory translator is not so powerful as | |
in google translate. | |
- Simple translation | |
.. code-block:: python | |
text = 'Keep it up. You are awesome' | |
translated = MyMemoryTranslator(source='auto', target='french').translate(text) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["hallo welt", "guten morgen"] | |
# the translate_sentences function is deprecated, use the translate_batch function instead | |
translated = MyMemoryTranslator('de', 'en').translate_batch(texts) | |
- Translate text from txt/docx/pdf: | |
.. code-block:: python | |
path = "your_file.txt" | |
translated = MyMemoryTranslator(source='en', target='fr').translate_file(path) | |
DeeplTranslator | |
----------------- | |
.. note:: | |
In order to use the DeeplTranslator translator, you need to generate an api key. Deepl offers a Pro and a free API. | |
deep-translator supports both Pro and free APIs. Just check the examples below. | |
Visit https://www.deepl.com/en/docs-api/ for more information on how to generate your Deepl api key | |
- Simple translation | |
.. code-block:: python | |
text = 'Keep it up. You are awesome' | |
translated = DeeplTranslator(api_key="your_api_key", source="en", target="en", use_free_api=True).translate(text) | |
.. note:: | |
deep-translator uses free deepl api by default. If you have the pro version then simply set the use_free_api to false. | |
- Translate batch of texts | |
.. code-block:: python | |
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 | |
-------------------- | |
.. note:: | |
In order to use the QcriTranslator translator, you need to generate a free api key. Visit https://mt.qcri.org/api/ | |
for more information | |
- Check languages | |
.. code-block:: python | |
# as a property | |
print("language pairs: ", QcriTranslator("your_api_key").languages) | |
- Check domains | |
.. code-block:: python | |
# as a property | |
print("domains: ", QcriTranslator("your_api_key").domains) | |
- Text translation | |
.. code-block:: python | |
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 Translator | |
------------------- | |
.. code-block:: python | |
word = 'good' | |
- Simple Translation | |
.. code-block:: python | |
translated_word = LingueeTranslator(source='english', target='french').translate(word) | |
- Return all synonyms or words that match | |
.. code-block:: python | |
# 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) | |
- Translate a batch of words | |
.. code-block:: python | |
translated_words = LingueeTranslator(source='english', target='french').translate_words(["good", "awesome"]) | |
PONS Translator | |
---------------- | |
.. note:: | |
You can pass the languages by the name or by abbreviation just like | |
previous examples using GoogleTranslate | |
.. code-block:: python | |
word = 'awesome' | |
- Simple Translation | |
.. code-block:: python | |
translated_word = PonsTranslator(source='english', target='french').translate(word) | |
# pass language by their abbreviation | |
translated_word = PonsTranslator(source='en', target='fr').translate(word) | |
- Return all synonyms or words that match | |
.. code-block:: python | |
# 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) | |
- Translate a batch of words | |
.. code-block:: python | |
translated_words = PonsTranslator(source='english', target='french').translate_words(["good", "awesome"]) | |
Yandex Translator | |
------------------ | |
.. note:: | |
You need to require a **private api key** if you want to use the yandex translator. | |
Visit the official website for more information about how to get one | |
- Language detection | |
.. code-block:: python | |
lang = YandexTranslator('your_api_key').detect('Hallo, Welt') | |
print(f"language detected: {lang}") # output -> language detected: 'de' | |
- Text translation | |
.. code-block:: python | |
# 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 | |
- File translation | |
.. code-block:: python | |
translated = YandexTranslator('your_api_key').translate_file(source="auto", target="en", path="path_to_your_file") | |
- Batch translation | |
.. code-block:: python | |
translated = YandexTranslator('your_api_key').translate_batch(source="auto", target="de", batch=["hello world", "happy coding"]) | |
Microsoft Translator | |
--------------------- | |
.. note:: | |
You need to require an **api key** if you want to use the microsoft translator. | |
Visit the official website for more information about how to get one. | |
Microsoft offers a free tier 0 subscription (2 million characters per month). | |
- Required and optional attributes | |
There are two required attributes, namely "api_key" (string) and "target" (string or list). | |
Attribute "source" is optional. | |
Also, Microsoft API accepts a number of other optional attributes, you can find them here: https://docs.microsoft.com/azure/cognitive-services/translator/reference/v3-0-translate | |
You can simply add them after the required attributes, see the example. | |
.. code-block:: python | |
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) | |
- You can pass languages by name or by abbreviation: | |
.. code-block:: python | |
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) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["hallo welt", "guten morgen"] | |
translated = MicrosoftTranslator(api_key='some-key', target='english').translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = MicrosoftTranslator(api_key='some-key', target='german').translate_file('path/to/file') | |
ChatGpt Translator | |
--------------------- | |
.. note:: | |
You need to install the openai support extra. `pip install deep-translator[ai]` | |
.. note:: | |
You need to require an **api key** if you want to use the ChatGpt translator. | |
If you have an openai account, you can create an api key (https://platform.openai.com/account/api-keys). | |
- Required and optional attributes | |
There are two required attributes, namely "api_key" (string) and "target" (string or list). | |
Attribute "source" is optional. | |
You can provide your api key, api base as an argument or you can export it as an env var | |
e.g. | |
`export OPENAI_API_KEY="your_key"` | |
`export OPENAI_API_BASE=https://api.openai.com/v1` | |
.. code-block:: python | |
text = 'happy coding' | |
translated = ChatGptTranslator(api_key='your_key', base_url='https://api.xxx.com/v1', target='german').translate(text=text) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["hallo welt", "guten morgen"] | |
translated = ChatGptTranslator(api_key='some-key', target='english').translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = ChatGptTranslator(api_key='some-key', target='german').translate_file('path/to/file') | |
Papago Translator | |
--------------------- | |
.. note:: | |
You need to require a **client id** and **client secret key** if you want to use the papago translator. | |
Visit the official website for more information about how to get one. | |
.. code-block:: python | |
text = 'happy coding' | |
translated = PapagoTranslator(client_id='your_client_id', secret_key='your_secret_key', source='en', target='ko').translate(text=text) # output: 행복한 부호화 | |
Libre Translator | |
--------------------- | |
.. note:: | |
Libre translate has multiple `mirrors <https://github.com/LibreTranslate/LibreTranslate#mirrors>`_ which can be used for the API endpoint. | |
Some require an API key to be used. By default the base url is set to `libretranslate.de <https://libretranslate.de/>`_ . | |
This can be set using the "base_url" input parameter. | |
.. code-block:: python | |
text = 'laufen' | |
translated = LibreTranslator(source='auto', target='en', base_url = 'https://libretranslate.com/', api_key = 'your_api_key').translate(text=text) # output: run | |
- You can pass languages by name or by abbreviation: | |
.. code-block:: python | |
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) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["hallo welt", "guten morgen"] | |
translated = LibreTranslator(source='auto', target='en').translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = LibreTranslator(source='auto', target='en').translate_file('path/to/file') | |
TencentTranslator | |
----------------- | |
.. note:: | |
In order to use the TencentTranslator translator, you need to generate a secret_id and a secret_key. | |
deep-translator supports both Pro and free APIs. Just check the examples below. | |
Visit https://cloud.tencent.com/document/api/551/15619 for more information on how to generate your Tencent secret_id | |
and secret_key. | |
- Simple translation | |
.. code-block:: python | |
text = 'Hello world' | |
translated = TencentTranslator(secret_id="your-secret_id", secret_key="your-secret_key" source="en", target="zh").translate(text) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["Hello world", "How are you?"] | |
translated = TencentTranslator(secret_id="your-secret_id", secret_key="your-secret_key" source="en", target="zh").translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = TencentTranslator(secret_id="your-secret_id", secret_key="your-secret_key" source="en", target="zh").translate_file('path/to/file') | |
BaiduTranslator | |
----------------- | |
.. note:: | |
In order to use the BaiduTranslator translator, you need to generate a secret_id and a secret_key. | |
deep-translator supports both Pro and free APIs. Just check the examples below. | |
Visit http://api.fanyi.baidu.com/product/113 for more information on how to generate your Baidu appid | |
and appkey. | |
- Simple translation | |
.. code-block:: python | |
text = 'Hello world' | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate(text) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["Hello world", "How are you?"] | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_file('path/to/file') | |
BaiduTranslator | |
----------------- | |
.. note:: | |
In order to use the BaiduTranslator translator, you need to generate a secret_id and a secret_key. | |
deep-translator supports both Pro and free APIs. Just check the examples below. | |
Visit http://api.fanyi.baidu.com/product/113 for more information on how to generate your Baidu appid | |
and appkey. | |
- Simple translation | |
.. code-block:: python | |
text = 'Hello world' | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate(text) | |
- Translate batch of texts | |
.. code-block:: python | |
texts = ["Hello world", "How are you?"] | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_batch(texts) | |
- Translate from a file: | |
.. code-block:: python | |
translated = BaiduTranslator(appid="your-appid", appkey="your-appkey" source="en", target="zh").translate_file('path/to/file') | |
Proxy usage | |
------------- | |
deep-translator provides out of the box usage of proxies. Just define your proxies config as a dictionary | |
and pass it to the corresponding translator. Below is an example using the GoogleTranslator, but this feature | |
can be used with all supported translators. | |
.. code-block:: python | |
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") | |
File Translation | |
-------------------- | |
Deep-translator (version >= 1.9.4) supports not only text file translation, but docx and PDF files too. | |
However, you need to install deep-translator using the specific extras. | |
For docx translation: | |
.. code-block:: console | |
pip install deep-translator[docx] | |
For PDF translation: | |
.. code-block:: console | |
pip install deep-translator[pdf] | |
- Translate text from txt/docx/pdf: | |
Here is sample code for translating text directly from files | |
.. code-block:: python | |
path = "example/test.pdf" | |
translated = GoogleTranslator(source='auto', target='german').translate_file(path) | |
Usage from Terminal | |
-------------------- | |
Deep-translator supports a series of command line arguments for quick and simple access to the translators directly in your console. | |
.. note:: | |
The program accepts ``deep-translator`` or ``dt`` as a command, feel free to substitute whichever you prefer. | |
For a list of available translators: | |
.. code-block:: console | |
$ deep-translator list | |
To translate a string or line of text: | |
.. code-block:: console | |
$ deep_translator --translator google --source "english" --target "german" --text "happy coding" | |
$ | |
Alternate short option names, along with using language abbreviations: | |
.. code-block:: console | |
$ dt -trans google -src "en" -tg "de" -txt "happy coding" | |
$ dt -trans chatgpt -src "en" -tg "ja" -txt "happy coding" | |
Finally, to retrieve a list of available languages for a given translator: | |
.. code-block:: console | |
$ deep-translator languages google | |
====== | |
Tests | |
====== | |
Developers can install the development version of deep-translator and execute unit tests to verify functionality. For more information on doing this, see `the contribution guidelines <https://deep-translator.readthedocs.io/en/latest/contributing.html#get-started>`_ | |
======== | |
Links | |
======== | |
Check this article on medium to know why you should use the deep-translator package and how to translate text using python. | |
https://medium.com/@nidhalbacc/how-to-translate-text-with-python-9d203139dcf5 | |
====== | |
Help | |
====== | |
If you are facing any problems, please feel free to open an issue. | |
Additionally, you can make contact with the author for further information/questions. | |
Do you like deep-translator? | |
You can always help the development of this project by: | |
- Following on github and/or twitter | |
- Promote the project (ex: by giving it a star on github) | |
- Watch the github repo for new releases | |
- Tweet about the package | |
- Help others with issues on github | |
- Create issues and pull requests | |
- Sponsor the project | |
=========== | |
Next Steps | |
=========== | |
Take a look in the examples folder for more :) | |
Contributions are always welcome. | |
Read the Contribution guidelines `Here <https://deep-translator.readthedocs.io/en/latest/contributing.html#get-started>`_ | |
========== | |
Credits | |
========== | |
Many thanks to @KirillSklyarenko for his work on integrating the microsoft translator | |
========== | |
License | |
========== | |
MIT license | |
Copyright (c) 2020-present, Nidhal Baccouri | |
=========== | |
Swagger UI | |
=========== | |
deep-translator offers an api server for easy integration with other applications. Non python applications | |
can communicate with the api directly and leverage the features of deep-translator | |
Access the api here: https://deep-translator-api.azurewebsites.net/docs | |
=========================== | |
The Translator++ mobile app | |
=========================== | |
.. image:: ../assets/app-icon.png | |
:width: 100 | |
:alt: Icon of the app | |
You can download and try the app on play store https://play.google.com/store/apps/details?id=org.translator.translator&hl=en_US&gl=US | |
After developing the deep-translator, I realized how cool this would be if I can use it as an app on my mobile phone. | |
Sure, there is google translate, pons and linguee apps etc.. but isn't it cooler to make an app where all these | |
translators are integrated? | |
Long story short, I started working on the app. I decided to use the `kivy framework <https://kivy.org/#home/>`_ since | |
I wanted to code in python and to develop a cross platform app. | |
I open sourced the `Translator++ app <https://github.com/nidhaloff/deep-translator-app/>`_ on my github too. | |
Feel free to take a look at the code or make a pull request ;) | |
.. note:: | |
The Translator++ app is based on the deep-translator package. I just built the app to prove the capabilities | |
of the deep-translator package ;) | |
I published the first release on google play store on 02-08-2020 | |
Here are some screenshots: | |
- Phone | |
.. image:: ../assets/translator1.jpg | |
:width: 30% | |
:height: 200 | |
:alt: screenshot1 | |
.. image:: ../assets/translator2.jpg | |
:width: 30% | |
:height: 200 | |
:alt: screenshot2 | |
.. image:: ../assets/spinner.jpg | |
:width: 30% | |
:height: 200 | |
:alt: spinner | |
- Tablet: | |
.. image:: ../assets/hz_view.png | |
:width: 100% | |
:height: 300 | |
:alt: screenshot3 | |
=========================== | |
Website & Desktop app | |
=========================== | |
Currently, there are propositions for a website and/or desktop app based on deep-translator. | |
You can follow the issue here: https://github.com/nidhaloff/deep-translator/issues/144 | |