Python class which chains Google translations back and forth between two languages
I think that you should be more explicit about the source language instead of relying exclusively on auto-detection, in both your Translate constructor and when you call translator.translate().  Japanese is easy enough to detect unambiguously in most cases.  However, phrases in other languages could easily be interpreted as several possible languages.

Recursion is rarely the most idiomatic solution in Python.  Rather, generators are often a better idea.  Here's a generator that will translate back and forth between two languages as many times as you want:

from googletrans import Translator

def chained_translations(phrase, target_language='en', source_language=None):
    translator = Translator()
    source_language = source_language or translator.detect(phrase).lang
    while True:
        phrase = translator.translate(phrase, src=source_language, dest=target_language).text
        yield phrase
        source_language, target_language = target_language, source_language


This solution is much simpler, because the state is kept in the execution flow of the generator code itself.

Example usage:

&gt;&gt;&gt; test = chained_translations('は忙しい。彼は多忙な人間だ。勉強をしたい')
&gt;&gt;&gt; print(next(test))
'I am busy. He is a busy man. I want to learn'
&gt;&gt;&gt; print(next(test))
'私は忙しいです。彼は忙しい人だ。学びたい'
&gt;&gt;&gt; from itertools import islice
&gt;&gt;&gt; print(list(islice(test, 3)))
['I am busy. He is a busy man. I want to learn', '私は忙しいです。彼は忙しい人だ。学びたい', 'I am busy. He is a busy man. I want to learn']