A flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators.

Overview

deep-translator

deep-translator-icon


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

Translation for humans

A flexible FREE and UNLIMITED tool to translate between different languages in a simple way using multiple translators.

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

Features

Installation

Install the stable release:

$ pip install -U deep_translator

take a look at the docs if you want to install from source.

Quick Start

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

or from terminal

$ deep_translator -trans "google" -src "en" -tg "de" -txt "keep it up, you are awesome"

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

Imports

from deep_translator import (GoogleTranslator,
                             PonsTranslator,
                             LingueeTranslator,
                             MyMemoryTranslator,
                             YandexTranslator,
                             DeepL,
                             QCRI,
                             single_detection,
                             batch_detection)

Check Supported Languages

Note

You can check the supported languages of each translator by calling the get_supported_languages function as a static method.

# 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
lang = single_detection('bonjour la vie', api_key='your_api_key')
print(lang) # output: fr
  • Batch Detection
lang = batch_detection(['bonjour la vie', 'hello world'], api_key='your_api_key')
print(lang) # output: [fr, en]

Google Translate

text = 'happy coding'
  • You can use automatic language detection to detect the source language:
translated = GoogleTranslator(source='auto', target='de').translate(text=text)
  • You can pass languages by name or by abbreviation:
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)
  • Translate batch of texts
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 from a file:
translated = GoogleTranslator(source='auto', target='german').translate_file('path/to/file')

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
text = 'Keep it up. You are awesome'

translated = MyMemoryTranslator(source='auto', target='french').translate(text)
  • Translate batch of texts
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 from file
path = "your_file.txt"

translated = MyMemoryTranslator(source='en', target='fr').translate_file(path)

DeepL Translator

Note

In order to use the DeepL translator, you need to generate an api key. Visit https://www.deepl.com/en/docs-api/ for more information

  • Simple translation
text = 'Keep it up. You are awesome'

translated = DeepL("your_api_key").translate(text)
  • Translate batch of texts
texts = ["hallo welt", "guten morgen"]

# the translate_sentences function is deprecated, use the translate_batch function instead
translated = DeepL("your_api_key").translate_batch(texts)

QCRI Translator

Note

In order to use the QCRI translator, you need to generate a free api key. Visit https://mt.qcri.org/api/ for more information

  • Check languages
# as a property
print("language pairs: ", QCRI("your_api_key").languages)
  • Check domains
# as a property
print("domains: ", QCRI("your_api_key").domains)
  • Text translation
text = 'Education is great'

translated = QCRI("your_api_key").translate(source='en', target='ar', domain="news", text=text)
# output -> التعليم هو عظيم

# see docs for batch translation and more.

Linguee Translator

word = 'good'
  • Simple Translation
translated_word = LingueeTranslator(source='english', target='french').translate(word)

# pass language by their abbreviation
translated_word = LingueeTranslator(source='en', target='fr').translate(word)
  • Return all synonyms or words that matches
# 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
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

word = 'awesome'
  • Simple Translation
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 matches
# 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
translated_words = LingueeTranslator(source='english', target='french').translate_words(["good", "awesome"])

Yandex Translator

Note

You need to require an 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
lang = YandexTranslator('your_api_key').detect('Hallo, Welt')
print(f"language detected: {lang}")  # output -> language detected: 'de'
  • Text translation
# 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
translated = YandexTranslator('your_api_key').translate_file(source="auto", target="en", path="path_to_your_file")
  • Batch translation
translated = YandexTranslator('your_api_key').translate_batch(source="auto", target="de", batch=["hello world", "happy coding"])

Usage from Terminal

For a quick access, you can use the deep_translator from terminal. For this to work, you need to provide the right arguments, which are the translator you want to use, source language, target language and the text you want to translate.

For example, provide "google" as an argument to use the google translator. Alternatively you can use the other supported translators. Just read the documentation to have an overview about the supported translators in this library.

$ deep_translator --translator "google" --source "english" --target "german" --text "happy coding"

Or you can go for the short version:

$ deep_translator -trans "google" -src "english" -tg "german" -txt "happy coding"

If you want, you can also pass the source and target language by their abbreviation

$ deep_translator -trans "google" -src "en" -tg "de" -txt "happy coding"

Tests

  • Install dev requirements
$ pip install -r requirements_dev.txt
  • Or just install pytest
$ pip install pytest
  • you can run tests individually for each translator by passing the prefix test_ followed by the translator name as an argument to pytest.
$ pytest test_google_trans
$ pytest test_linguee
$ pytest test_mymemory
$ pytest test_pons
  • Alternatively, you can run the test suite
$ pytest -ra

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

Next Steps

Take a look in the examples folder for more :) Contributions are always welcome. Read the Contribution guildlines Here

The Translator++ mobile app

Icon of the app

After developing the deep_translator, I realised 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 since I wanted to code in python and to develop a cross platform app. I open sourced the 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

screenshot1

screenshot2

spinner

  • Tablet:

screenshot3

Comments
  • update deep-translator's cli

    update deep-translator's cli

    Description

    The cli functionality needs to be updated since more translators are now integrated. This is a fair easy issue for new comers to help people contribute to the project.

    PS: consider using click https://click.palletsprojects.com/en/8.0.x/

    enhancement help wanted good first issue easy 
    opened by nidhaloff 13
  • Text translation that once worked now does not work

    Text translation that once worked now does not work

    • deep_translator version: 1.1.7
    • Python version: 3.8.3
    • Operating System: Manjaro 20.0.3

    I'm trying to semi-automatize an HTML page using BeautifulSoup. I was very happy with deep-translator until something strange happened...

    It rises 'TranslationNotFound' with some text that was already working!

    text = 'If you are a school administrator or local official who has control over school opening decisions, we strongly urge you to keep schools closed until there is no more community transmission of the virus. There must be no more transmission of the virus in your community and the surrounding areas for 14 days. If you would like more guidance on why reopening schools is dangerous and how to talk to students, teachers, parents and staff, EndCoronavirus.org is here to help.Please contact us for more information.'
    
    GoogleTranslator(source='auto', target='spanish').translate(text=tag.text)
    

    Traceback:

    TranslationNotFound                       Traceback (most recent call last)
    <ipython-input-8-466242e1794e> in <module>
          1 # Using deep_translator with Google's engine (spanish)
    ----> 2 traslated = GoogleTranslator(source='auto', target='spanish').translate(text=tag.text)
          3 traslated
    
    ~/.local/lib/python3.8/site-packages/deep_translator/google_trans.py in translate(self, text, **kwargs)
         78             if not element:
         79                 # raise ElementNotFoundInGetRequest(element)
    ---> 80                 raise TranslationNotFound(text)
         81 
         82             return element.get_text(strip=True)
    
    TranslationNotFound: If you are a school administrator or local official who has control over school opening decisions, we strongly urge you to keep schools closed until there is no more community transmission of the virus. There must be no more transmission of the virus in your community and the surrounding areas for 14 days. If you would like more guidance on why reopening schools is dangerous and how to talk to students, teachers, parents and staff, EndCoronavirus.org is here to help.Please contact us for more information. --> No translation was found using the current translator. Try another translator?
    

    Maybe I exceeded the max translations allowed? It should be unlimited, right?

    And when I use 'MyMemoryTranslator' I get:

    'QUERY LENGTH LIMIT EXCEDEED. MAX ALLOWED QUERY : 500 CHARS'

    Also unexpected!

    bug 
    opened by ecuracosta 13
  • [Feature Request] Support for libretranslate.com

    [Feature Request] Support for libretranslate.com

    Description

    Support for https://libretranslate.com/

    Also, I think in this case, the construct should have the url as parameter, since as described at https://github.com/LibreTranslate/LibreTranslate#mirrors , the project can be used locally or by other servers.

    enhancement help wanted good first issue Hacktoberfest 
    opened by fcolecumberri 12
  • `KeyError: 'hl'` when running `translate_batch()`

    `KeyError: 'hl'` when running `translate_batch()`

    • deep_translator version: 1.3.9
    • Python version: 3.7.4
    • Operating System: Windows 10

    Description

    I couldn't translate 2000+ words from a text file (described in here #40) so I thought about using translate_batch() instead. Running:

    translated_list = GoogleTranslator(select_source_language, select_target_language).translate_batch(list_of_words)
    

    gives me this error:

    Traceback (most recent call last):
      File "script.py", line 113, in <module>
        translated_list = GoogleTranslator(select_source_language, select_target_language).translate_batch(list_of_words)
      File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\deep_translator\google_trans.py", line 169, in translate_batch
        translated = self.translate(text)
      File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\deep_translator\google_trans.py", line 113, in translate
        return self.translate(text)
      File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\deep_translator\google_trans.py", line 112, in translate
        del self._url_params["hl"]
    KeyError: 'hl'
    

    What's the reason behind it? How to make it work?

    bug question discussion 
    opened by vardecab 12
  • Keyerror: 'h1' when performing translations

    Keyerror: 'h1' when performing translations

    • deep_translator version: 1.3.3
    • Python version: 3.6
    • Operating System: Google Colab

    Description

    I have been using this script to translate words but just today it stopped working and I get this error: KeyError: 'hl'

    Full error: Screenshot 2021-02-13 at 1 06 25 AM

    from deep_translator import GoogleTranslator
    from deep_translator import GoogleTranslator as GT
    from deep_translator import exceptions as excp
    
    
    def translate(x):
        try:
            v = GT(source='auto', target='en').translate(x['tweet_text']) if (x['tweet_text'] != " " and x['lang'] != "en") else x['tweet_text']
        except (excp.NotValidPayload, excp.NotValidLength) as e:
            v = f'Translation Exception: {type(e)}'
        return v
    
    # translate the column
    df_bdtu['translated'] = df_bdtu[['tweet_text', 'lang']].swifter.apply(lambda x: translate(x), axis = 1)
    
    opened by yudhiesh 11
  • Bug fix in google_trans.py

    Bug fix in google_trans.py

    Close #90 Close #52

     super(GoogleTranslator, self).__init__(base_url=self.__base_url,
                                                   source=self._source,
                                                   target=self._target,
                                                   element_tag='div',
                                                   element_query={"class": "t0"},
                                                   payload_key='q',  # key of text in the url
                                                   tl=self._target,
                                                   sl=self._source,
                                                   **kwargs)
    

    This code fixes the above issues, I have been experimenting for a week to figure it out, also this fix doesn't cause issues with any other language. We can not assign self._target to hl.

    opened by kuspia 9
  • Asked changes done for excel

    Asked changes done for excel

    @nothead31 please have a look at it, if anything is missing please tell me. As per your requirement I have set it up in main.py instead of google_trans.py.

    enhancement 
    opened by debjyoti003 9
  • Excel column data translation feature added

    Excel column data translation feature added

    I have added the excel column data translation feature as requested by foubou. Please merge this if you find it suitable, also if you want to add something more, you can tell me.

    enhancement discussion pending 
    opened by debjyoti003 9
  • Add tests for the cli

    Add tests for the cli

    Description

    The cli was re-written using the click library. However, there are no tests for the functionality of cli at the moment. Click offers great support for unit testing. Read here

    I will let this issue open for newcomers or anyone who is looking for a good first issue. I think this would be a great task for anyone who wants to join the project.

    enhancement help wanted good first issue easy 
    opened by nidhaloff 7
  • libre no longer translating

    libre no longer translating

    • deep_translator version: 1.8.0
    • Python version: 3.8
    • Operating System: Linux

    Description

    Translating "Ich mag Züge" which is German for "I like trains" with the libre flavor.

    The result is still in German. All other flavors work.

    bug 
    opened by Zethson 6
  • Doesn't work with Chinese as target.

    Doesn't work with Chinese as target.

    • deep_translator version: 1.5.4
    • Python version: 3.9.7
    • Operating System: macOs 11.6

    Description

    What happened:

    GoogleTranslator not working when target is set to chinese.

    I am trying to translate english paragraphs to Chinese, here is what I did:

    class Translator:
        def __init__(self):
            pass
    
        def translate(self, textInput: str):
            textSliced = SentenceSplitter(language="en").split(textInput)
            textTranslated = GoogleTranslator(source="auto", target="chinese").translate_batch(textSliced)
            textTranslated = " ".join(textTranslated)
            return textTranslated
    

    where SentenceSplitter returns a list of strings each is a sentence from the original paragraph, and:

    if __name__ == "__main__":
        to_translate = "Currently, the application of deep learning in crop disease classification is one of the active areas of research for which an image dataset is required. Eggplant (Solanum melongena) is one of the important crops, but it is susceptible to serious diseases which hinder its production."
    
        print(Translator().translate(to_translate))
    

    where to_translate is piece of random text. It returns the original text:

    Please wait.. This may take a couple of seconds because deep_translator sleeps for two seconds after each request in order to not spam the google server.
    sentence number  1  has been translated successfully
    sentence number  2  has been translated successfully
    
    Currently, the application of deep learning in crop disease classification is one of the active areas of research for which an image dataset is required. Eggplant (Solanum melongena) is one of the important crops, but it is susceptible to serious diseases which hinder its production.
    

    when it is expected to turn its chinese translation.

    This method functions perfectly well when GoogleTranslator is replaced with MyMemoryTranslator, MyMemoryTranslator however raises TooManyRequests:

    Server Error: You made too many requests to the server. According to google, you are allowed to make 5 requests per second and up to 200k requests per day. You can wait and try again later or you can try the translate_batch function
    

    it looks like its time.sleep is not functioning properly.

    To summarise:

    1. GoogleTranslator doesn't work at all when target is chinese.
    2. MyMemoryTranslator needs a proper time.sleep mechanism.
    opened by Don-Yin 6
  • Linguee French-to-English translation not working

    Linguee French-to-English translation not working

    Linguee French-to-English translation not working

    • deep_translator version:v1.9.1(https://github.com/nidhaloff/deep-translator/commit/a694c92b6741fc9c3200835b64be2fd910cd761b)
    • Python version: 3.10.6
    • Operating System: GNU/Linux x86_64(Ubuntu 22.04)

    Description

    Hi, thank you for publishing such a useful plugin! I noticed that Linguee’s French-to-English translation didn’t work. And it seems that English-to-French, French-to-German, German-to-French also doesn’t work. I suspect it’s because the URL format of Linguee(such as path and query) has been changed as following.

    the URL deep-translator using

    https://www.linguee.com/fr-en/translation/courir.html
    

    the correct(and valid) URL

    https://www.linguee.com/english-french/search?source=french&query=courir
    

    If you guys are OK, I would be interested in contributing this.

    What I Did

    (expected returning 'run')

    >>> from deep_translator import LingueeTranslator
    >>> res = LingueeTranslator(source="fr", target="en").translate("courir", return_all=False)                        
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/root/share-ws/common/deep-translator/deep_translator/linguee.py", line 77, in translate
        raise ElementNotFoundInGetRequest(elements)
    deep_translator.exceptions.ElementNotFoundInGetRequest: [] --> Required element was not found in the API response
    
    
    opened by wf001 0
  • Update microsoft translator

    Update microsoft translator

    Update the code for microsoft translation api to accept global source to default and auto detect source language (preventing The source language is not valid.).

    opened by Jourdelune 0
  • using certain cuda in multi gpu environment?

    using certain cuda in multi gpu environment?

    Hello!

    As my nvidia-smi monitor displays an increase in gpu usage when making a translation it seems that deep-translator is using cuda, if available. But I have three graphic cards and due to performance reasons I need to use always the related gpu. Is it possible to influence this?

    opened by Marcophono2 0
  • Bump wheel from 0.35.1 to 0.38.1 in /docs

    Bump wheel from 0.35.1 to 0.38.1 in /docs

    Bumps wheel from 0.35.1 to 0.38.1.

    Changelog

    Sourced from wheel's changelog.

    Release Notes

    UNRELEASED

    • Updated vendored packaging to 22.0

    0.38.4 (2022-11-09)

    • Fixed PKG-INFO conversion in bdist_wheel mangling UTF-8 header values in METADATA (PR by Anderson Bravalheri)

    0.38.3 (2022-11-08)

    • Fixed install failure when used with --no-binary, reported on Ubuntu 20.04, by removing setup_requires from setup.cfg

    0.38.2 (2022-11-05)

    • Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with multiple platform tags

    0.38.1 (2022-11-04)

    • Removed install dependency on setuptools
    • The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was faulty. Fixed so that future changes in the SOABI will not change the tag.

    0.38.0 (2022-10-21)

    • Dropped support for Python < 3.7
    • Updated vendored packaging to 21.3
    • Replaced all uses of distutils with setuptools
    • The handling of license_files (including glob patterns and default values) is now delegated to setuptools>=57.0.0 (#466). The package dependencies were updated to reflect this change.
    • Fixed potential DoS attack via the WHEEL_INFO_RE regular expression
    • Fixed ValueError: ZIP does not support timestamps before 1980 when using SOURCE_DATE_EPOCH=0 or when on-disk timestamps are earlier than 1980-01-01. Such timestamps are now changed to the minimum value before packaging.

    0.37.1 (2021-12-22)

    • Fixed wheel pack duplicating the WHEEL contents when the build number has changed (#415)
    • Fixed parsing of file names containing commas in RECORD (PR by Hood Chatham)

    0.37.0 (2021-08-09)

    • Added official Python 3.10 support
    • Updated vendored packaging library to v20.9

    ... (truncated)

    Commits
    • 6f1608d Created a new release
    • cf8f5ef Moved news item from PR #484 to its proper place
    • 9ec2016 Removed install dependency on setuptools (#483)
    • 747e1f6 Fixed PyPy SOABI parsing (#484)
    • 7627548 [pre-commit.ci] pre-commit autoupdate (#480)
    • 7b9e8e1 Test on Python 3.11 final
    • a04dfef Updated the pypi-publish action
    • 94bb62c Fixed docs not building due to code style changes
    • d635664 Updated the codecov action to the latest version
    • fcb94cd Updated version to match the release
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bad link under tests section

    Bad link under tests section

    Description

    Clicking on the link for the contributing guidelines under the Tests section leads to a 404 Link: https://deep-translator.readthedocs.io/en/latest/contributing.html/

    What I Did

    Clicked on link under Tests

    opened by thembow 0
Releases(untagged-b2080c9e6014b2d2c054)
  • untagged-b2080c9e6014b2d2c054(Nov 4, 2022)

    What’s Changed

    • fixed mymemory return_all (#170) @nidhaloff
    • Adding response.close() for non API-key translator (#160) @edisugi1996
    • Add 24 Languages to Google Translator (#168) @JettScythe
    • fix typos in documentation (#164) @joao-vitor-souza
    • Hotfix/linguee (#159) @nidhaloff
    • fixed make install (#151) (#152) @yutkat
    Source code(tar.gz)
    Source code(zip)
  • v1.8.3(Mar 31, 2022)

  • v1.8.2(Mar 19, 2022)

  • v1.8.1(Mar 14, 2022)

  • v1.8.0(Mar 9, 2022)

    Commits

    • dbaf8a8: Autogenerate the a dictionary of translators. (Vincent STRAGIER) #130
    • 697d292: Remove dictionary initialization. (Vincent STRAGIER) #130
    • 0d67af1: renamed parent to base (nidhal baccouri) #136
    • 2bbc526: huge refactoring (nidhal baccouri) #136
    • d03a2fc: simplified code and enhanced consistency (nidhal baccouri) #136
    • 5c85230: added engines dunder (nidhal baccouri) #136
    • f89616a: updated base urls (nidhal baccouri) #136
    • 4524f4c: refactored tests (nidhal baccouri) #136
    • 70f6ed6: global refactoring (nidhal baccouri) #136
    • 7216951: fixed examples (nidhal baccouri) #136
    • 78d0ff1: added black for formatting (nidhal baccouri) #139
    • 76688c0: removed unused constants (nidhal baccouri) #139
    • 7ade3be: added typing (nidhal baccouri) #139
    • 76aa3b2: renamed input validation func (nidhal baccouri) #139
    • 7a05cd7: sorted imports (nidhal baccouri) #139
    • 1e8da0a: updated version (nidhal baccouri)
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Feb 4, 2022)

    Commits

    • d3c12a3: updated cli in argparse (nidhal baccouri) #127
    • 37d3379: added cli class (nidhal baccouri) #127
    • 4a2e5df: temporarly removed cli tests (nidhal baccouri) #127
    • c228ada: added unit tests for cli (nidhal baccouri) #127
    • ed150d4: updated docs (nidhal baccouri)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Jan 13, 2022)

    Updates

    • Fixed file translation bug
    • Support for utf-8 encoding

    Commits

    • 33c503f: updated tests (nidhal baccouri)
    • 0d1a764: fixed file translation encoding (nidhal baccouri) #117
    • a0b5eac: removed relative imports (nidhal baccouri) #117
    • 050157d: fixed relative imports (nidhal baccouri) #117
    • b8fcb92: fixed relative imports bug (nidhal baccouri) #117
    • c585ffe: upadted version for patch (nidhal baccouri)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Dec 24, 2021)

    Major Updates

    • Added support for the Libre Translator ( thanks to @rahulbanerjee26 , @saminul )

    Commits

    • 7c6d7e3: updated version (nidhal baccouri)
    • 3d6d95e: Update google_trans.py (kuspia) #95
    • 16b4632: Update constants.py (kuspia) #95
    • 214e2c6: Update test_google_trans.py (kuspia) #95
    • 33eb915: Update test_google_trans.py (kuspia) #95
    • 6438d56: Update constants.py (kuspia) #95
    • f8ccea0: Update test_google_trans.py (kuspia) #95
    • b40098f: Update google_trans.py (kuspia) #95
    • 6291d40: Update google_trans.py (kuspia) #95
    • 9632fac: Update google_trans.py (kuspia) #95
    • 39b7794: Add files via upload (kuspia) #95
    • faefd3f: Update test_google_trans.py (kuspia) #95
    • f58b97c: Update constants.py (kuspia) #95
    • 7914bb3: Update test_google_trans.py (kuspia) #95
    • 1aab85c: Updated Importing syntax in code-blocks README.rst (K R S Nandhan) #99
    • 1eb68a8: Update README.rst (Alex) #107
    • af03d64: Merge branch 'master' into master (Nidhal Baccouri) #99
    • 7162fd1: fixed merge (nidhal baccouri)
    • 7a8f545: updated batch translation (nidhal baccouri)
    • 74bcc29: updated version (nidhal baccouri)
    • a05c704: updated toml file (nidhal baccouri)
    • fd6b374: updated tests (nidhal baccouri)
    • ffa7560: updated tests (nidhal baccouri)
    • 1d42175: initial setup (Saminul) #115
    • 5a8d2be: implemented function for LibreTranslator class (Saminul) #115
    • 9a69d6b: added payload check in LibreTranslator.translate and added tests in test_libre.py (Saminul) #115
    • 50c16a8: Added test cases and support for translate_batch and translate_file (Rahul Banerjee) #115
    • a8c6e0d: Fixed some linting issues (Rahul Banerjee) #115
    • a887ba6: Updated README to add Libre Translator (saminul) #115
    • ba3ac27: Updated docs (Rahul Banerjee) #115
    • b1ea671: Fixed link to Libre Translator mirrors in usage.rst (saminul) #115
    • 616a476: Fixed link to Libre Translator mirrors in README (saminul) #115
    • f130669: added release actions (nidhal baccouri)
    • 878ab25: added a tagged release action (nidhal baccouri)
    • eb81737: updated github action (nidhal baccouri)
    • ad67197: updated version (nidhal baccouri)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.4(Aug 23, 2021)

    @kuspia: restructured google trans url to resolve language conflicts. Supercedes fix in 1.5.3

    This release should resolve the long-standing translator issues with specific languages using the GTrans service. Additional language-specific issues should continue to be reported.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Aug 23, 2021)

  • v1.5.0(Jul 23, 2021)

    • improved the CLI
    • switched to click for the cli design
    • added subcommands
    • fixed bugs
    • refactored codebase and switched configurations to setup.cfg
    Source code(tar.gz)
    Source code(zip)
  • 1.4.4(May 21, 2021)

  • 1.4.3(May 15, 2021)

  • 1.4.1(Mar 8, 2021)

  • 1.3.9(Feb 28, 2021)

  • 1.3.8(Feb 28, 2021)

  • 1.3.5(Feb 19, 2021)

  • 1.3.4(Feb 12, 2021)

  • 1.3.3(Feb 11, 2021)

Owner
Nidhal Baccouri
A software engineer who wants to improve the software world.
Nidhal Baccouri
Cross-platform config and manager for click console utilities.

climan Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayPal: https

3 Aug 31, 2021
PREFS is a Python library to store and manage preferences and settings.

PREFS PREFS is a Python library to store and manage preferences and settings. PREFS stores a Python dictionary in a total human-readable file, the PRE

Pat 13 May 26, 2022
When should you berserk in lichess arena tournament games?

When should you berserk in a lichess arena tournament game? 1+0 arena tournament 3+0 arena tournament Explanation For details on how I arrived at the

18 Aug 03, 2022
Logging-monitoring-instrumentation - A brief repository on logging monitoring and instrumentation in Python

logging-monitoring-instrumentation A brief repository on logging monitoring and

Noah Gift 6 Feb 17, 2022
An After Effects render queue for ShotGrid Toolkit.

AEQueue An After Effects render queue for ShotGrid Toolkit. Features Render multiple comps to locations defined by templates in your Toolkit config. C

Brand New School 5 Nov 20, 2022
Bible-App : Simple Tool To Show Bible Books

Bible App Simple Tool To Show Bible Books Socials: Language:

ميخائيل 5 Jan 18, 2022
GA SEI Unit 4 project backend for Bloom.

Grow Your OpportunitiesTM Background Watch the Bloom Intro Video At Bloom, we believe every job seeker deserves an opportunity to find meaningful work

Jonathan Herman 3 Sep 20, 2021
This is the community maintained fork of ungleich's cdist (after f061fb1).

cdist This is the community maintained fork of ungleich's cdist (after f061fb1). Work is split between three repositories: cdist - implementation of t

cdist community edition 0 Aug 02, 2022
NeurIPS'19: Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting (Pytorch implementation for noisy labels).

Meta-Weight-Net NeurIPS'19: Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting (Official Pytorch implementation for noisy labels). The

243 Jan 03, 2023
Project repository of Apache Airflow, deployed on Docker in Amazon EC2 via GitLab.

Airflow on Docker in EC2 + GitLab's CI/CD Personal project for simple data pipeline using Airflow. Airflow will be installed inside Docker container,

Ammar Chalifah 13 Nov 29, 2022
Safely pass trusted data to untrusted environments and back.

ItsDangerous ... so better sign this Various helpers to pass data to untrusted environments and to get it back safe and sound. Data is cryptographical

The Pallets Projects 2.6k Jan 01, 2023
Find all social media accounts with a username!

Aliens_eye FIND ALL SOCIAL MEDIA ACCOUNTS WITH A USERNAME! OSINT To install: Open terminal and type: git clone https://github.com/BLINKING-IDIOT/Alien

Aaron Thomas 84 Dec 28, 2022
:art: Diagram as Code for prototyping cloud system architectures

Diagrams Diagram as Code. Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture d

MinJae Kwon 27.5k Jan 04, 2023
PIP VA TASHQI KUTUBXONALAR

39-dars PIP VA TASHQI KUTUBXONALAR KIRISH Avvalgi darsimizda Python bilan birga o'rnatluvchi, standart kutubxona va undagi ba'zi foydali modullar bila

Sayfiddin 3 Nov 25, 2021
🎴 LearnQuick is a flashcard application that you can study with decks and cards.

🎴 LearnQuick is a flashcard application that you can study with decks and cards. The main function of the application is to show the front sides of the created cards to the user and ask them to guess

Mehmet Güdük 7 Aug 21, 2022
Automatic certificate unpinning for Android apps

What is this? Script used to perform automatic certificate unpinning of an APK by adding a custom network security configuration that permits user-add

Antoine Neuenschwander 5 Jul 28, 2021
School helper, helps you at your pyllabus's.

pyllabus, helps you at your syllabus's... WARNING: It won't run without config.py! You should add config.py yourself, it will include your APIKEY. e.g

Ahmet Efe AKYAZI 6 Aug 07, 2022
a really simple bot that send you memes from reddit to whatsapp

a really simple bot that send you memes from reddit to whatsapp want to use use it? install the dependencies with pip3 install -r requirements.txt the

pai 10 Nov 28, 2021
creates a batch file that uses adb to auto-install apks into the Windows Subsystem for Android and registers it as the default application to open apks.

wsa-apktool creates a batch file that uses adb to auto-install apks into the Windows Subsystem for Android and registers it as the default application

Aditya Vikram 3 Apr 05, 2022
Python implementation of Newton's Fractal

Newton's Fractal Animates Newton's fractal between two polynomials of the same order. Inspired by this video by 3Blue1Brown. Example fractals can be f

Jaime Liew 10 Aug 04, 2022