Seite 1 von 1

googletrans

Verfasst: Mittwoch 5. Februar 2025, 16:58
von Hellstern
Hallo zusammen
Ich bin am schreiben eines Programmes für die Übersetzung von Text.
Dazu möchte ich Googletrans verwenden.
Ich verwende Python 3.13 und die neueste Version von Googletrans 4.0

Für den Einstieg habe ich Code von einem youtube Video verwendet.
Im Video funktioniert alles, nur bei mir nicht, leider finde ich einfach keinen Fehler.
Hat ev. jemand von Euch noch einen Tip woran das liegen könnte?
Vielen Dank

Fehlermeldung: AttributeError: 'coroutine' object has no attribute 'text'

Code: Alles auswählen

from googletrans import Translator

text_deutsch = 'ich spreche deutsch'
translator = Translator()
text_translated = translator.translate(text_deutsch, dest='en')
print(text_translated.text)

Re: googletrans

Verfasst: Mittwoch 5. Februar 2025, 17:10
von DeaD_EyE
Ein Link wäre besser gewesen. Ich vermute mal, dass du das hier einsetzt: https://pypi.org/project/googletrans/

Das Modul nutzt asyncio. Um auf das Ergebnis einer Coroutine zu warten, wird in einer asynchronen Funktion das Schlüsselwort await genutzt. Für Anfänger nicht so einfach, da es ein Mix aus asynchronen und synchronen Funktionen sein kann.

Code: Alles auswählen

import asyncio
from googletrans import Translator


async def translate_text():
    async with Translator() as translator:
        result = await translator.translate("Guten Tag auf Russisch.", dest="ru")
        print(result.text)


asyncio.run(translate_text())
Verwende einfach ein anderes Modul. Für Google Translate gibt es mehr als ein Paket auf PyPi.

Re: googletrans

Verfasst: Mittwoch 5. Februar 2025, 17:54
von noisefloor
Das Problem ist, dass die Doku in Teilen veraltet ist, weil es mit Version 4 "breaking change" in der API gab, siehe https://github.com/ssut/py-googletrans/ ... tag/v4.0.0: "API Transition to Async: All synchronous APIs have been removed. If you’re upgrading, ensure your code is updated to use async functions."

Heißt konkret: so wie von dir probiert geht das nicht mehr, der von @DeaD_EyE gezeigt Weg via async ist der einzig funktionierend. So ist es auch auf https://github.com/ssut/py-googletrans, die Doku unter https://py-googletrans.readthedocs.io/en/latest/ ist veraltet, sprich auf dem Stand von 3.0.

Also a) entweder asyncio verwenden, b) die alte Version installieren, c) ein andere Python-Modul nehmen oder d) ein anderes Übersetzungstool nutzen. Wenn ich mehr übersetzen muss nehme ich gerne Deepl (Python-Modul: https://github.com/DeepLcom/deepl-python). Das ist aber nur begrenzt kostenlos, aber eine gewissen Menge an Text braucht man eine kostenpflichtigen Login. Deepl ist eine Firma mit Sitz in Deutschland, kann ja, je nach dem, was man so zum Übersetzen schickt, auch relevant sein.

Gruß, noisefloor