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
tox-gh is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel

tox-gh is a tox plugin which helps running tox on GitHub Actions with multiple different Python versions on multiple workers in parallel. This project is inspired by tox-travis.

tox development team 19 Dec 26, 2022
Run python scripts and pass data between multiple python and node processes using this npm module

Run python scripts and pass data between multiple python and node processes using this npm module. process-communication has a event based architecture for interacting with python data and errors inside nodejs.

Tyler Laceby 2 Aug 6, 2021
Hello World in different languages !

Hello World And some Examples in different Programming Languages This repository contains a big list of programming languages and some examples for th

AmirHossein Mohammadi 131 Dec 26, 2022
2 Way Sync Between Notion Database and Google Calendar

Notion-and-Google-Calendar-2-Way-Sync 2 Way Sync Between a Notion Database and Google Calendar WARNING: This repo will be undergoing a good bit of cha

null 248 Dec 26, 2022
Enjoy Discords Unlimited Storage

Discord Storage V.3.5 (Beta) Made by BoKa Enjoy Discords free and unlimited storage... Prepare: Clone this from Github, make sure there either a folde

null 0 Dec 16, 2021
This script can be used to get unlimited Gb for WARP.

Warp-Unlimited-GB This script can be used to get unlimited Gb for WARP. How to use Change the value of the 'referrer' to warp id of yours You can down

Anix Sam Saji 1 Feb 14, 2022
A chain of stores wants a 3-month demand forecast for its 10 different stores and 50 different products.

Demand Forecasting Objective A chain store wants a machine learning project for a 3-month demand forecast for 10 different stores and 50 different pro

null 2 Jan 6, 2022
Your copilot to studies and work (Pomodoro-timer, Translate and Notes app)

Copylot Your copilot to studies and work (Pomodoro-timer, Translate and Notes app) Copylot are three applications in one: Pomodoro Translate Notes Cop

Eduardo Mendes 20 Dec 16, 2022
an opensourced roblox group finder writen in python 100% free and virus-free

Roblox-Group-Finder an opensourced roblox group finder writen in python 100% free and virus-free note : if you don't want install python or just use w

mollomm1 1 Nov 11, 2021
UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses.

UdemyPy UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses. How does it work? For publishing

null 88 Dec 25, 2022
Gba-free-fonts - Free font resources for GBA game development

gba-free-fonts Free font resources for GBA game development This repo contains m

null 28 Dec 30, 2022
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 1k Dec 16, 2022
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 935 Feb 20, 2021
Simple yet flexible natural sorting in Python.

natsort Simple yet flexible natural sorting in Python. Source Code: https://github.com/SethMMorton/natsort Downloads: https://pypi.org/project/natsort

Seth Morton 712 Dec 23, 2022
Url-check-migration-python - A python script using Apica API's to migrate URL checks between environments

url-check-migration-python A python script using Apica API's to migrate URL chec

Angelo Aquino 1 Feb 16, 2022
Little tool in python to watch anime from the terminal (the better way to watch anime)

anipy-cli Little tool in python to watch anime from the terminal (the better way to watch anime) Has a resume playback function when picking from Hist

sdao 97 Dec 29, 2022
A python tool for synchronizing the messages from different threads, processes, or hosts.

Sync-stream This project is designed for providing the synchoronization of the stdout / stderr among different threads, processes, devices or hosts.

Yuchen Jin 0 Aug 11, 2021
Flames Calculater App used to calculate flames status between two names created using python's Flask web framework.

Flames Finder Web App Flames Calculater App used to calculate flames status between two names created using python's Flask web framework. First, App g

Siva Prakash 4 Jan 2, 2022
basic tool for NFT. let's spam, this is the easiest way to generate a hell lotta image

NFT generator this is the easiest way to generate a hell lotta image buckle up and follow me! how to first have your image in .png (transparent backgr

null 34 Nov 18, 2022