googletrans

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hellstern
User
Beiträge: 15
Registriert: Mittwoch 4. Januar 2023, 08:14

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)
Benutzeravatar
DeaD_EyE
User
Beiträge: 1224
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
noisefloor
User
Beiträge: 4175
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten