Zum automatischen Übersetzen von Texten gibt es viele Anlässe. Vielleicht möchtest Du die Texte in einer Anwendung automatisch übersetzen lassen, damit Du selbst die Übersetzung nur noch prüfen und gegebenenfalls anpassen musst. Oder Du hast Texte in einer anderen Sprache, die Du gern in die deutsche Sprache übersetzen möchtest, um diese leichter lesen zu können. Wie auch immer: Es gibt zwar Dienste wie Google Translate, mit denen man das im Browser erledigen kann, aber wenn man viele oder umfangreiche Texte übersetzen lassen möchte, ist diese Lösung unbefriedigend. In diesem Fall bietet sich eine Automation des Vorgangs an. Und wie das geht, zeigen wir anhand eines der aktuell besten Übersetzungstools, nämlich DeepL. DeepL bietet eine API an, die wir per VBA oder mit anderen Programmiersprachen ansteuern können. Dieser Artikel stellt die Grundlagen dazu vor.
Übersetzen mit DeepL
Die erste Anlaufstelle für die Arbeit mit der API des Übersetzungstools DeepL ist die Webseite https://www.deepl.com. Hier finden wir gleich zwei Textfelder, deren linkes wir für die Eingabe des zu übersetzenden Textes nutzen können. Geben wir hier einen Text ein, erkennt DeepL automatisch die verwendete Sprache und übersetzt den Text in die Sprache, die für das rechte Textfeld ausgewählt ist. Das geht auch recht schnell, sodass das Ergebnis wie in Bild 1 aussieht.
Bild 1: DeepL in Aktion
Die DeepL-API
Mit einem Klick auf das Menü rechts oben finden wir schnell den Eintrag API. Klicken wir diesen an, landen wir auf einer Seite, die eine kostenlose Registrierung anbietet.
Wählen wir diese Option, landen wir auf der Seite mit den verschiedenen Angeboten (siehe Bild 2). Die gute Nachricht ist: die kostenlose Variante reicht zum Ausprobieren der API wie in diesem Artikel beschrieben völlig aus.
Bild 2: Angebot der DeepL-Api
Wenn Du nicht auf mehr als 500.000 Zeichen im Monat kommst, wählst Du einfach diese Option – und wenn es mehr werden, wäre die zweite Option sinnvoll. Hier fallen allerdings nach aktuellem Stand 20 EUR pro 1.000.000 übersetzter Zeichen an. Wer einmal Texte von Hand übersetzt hat und die Qualität der Übersetzung von DeepL geprüft hat, wird dies vermutlich als sehr faires Angebot ansehen. Aber wie gesagt: Für uns reicht die kostenlose Variante.
Zur Anmeldung benötigt DeepL Deine E-Mail-Adresse und Kennwort sowie einige weitere Informationen. Die Kreditkarteninformationen müssen angegeben werden, weil DeepL so Mehrfachanmeldungen und damit Missbrauch des kostenlosen Angebots umgehen möchte – es ist also eher eine vereinfachte Identitätsprüfung.
Nach der Prüfung des Kreditkartenkontos bestätigt man noch die Bedingungen und danach kann es schon losgehen.
DeepL-Konto verwalten
Im folgenden Schritt sehen wir eine Seite, von der aus wir uns unser Konto verwalten, aber auch einen Authentifizierungsschlüssel abrufen können.
Letzteres ist genau das, was wir brauchen, um später per VBA auf die API von DeepL zuzugreifen (siehe Bild 3).
Bild 3: Link zum Authentifizierungsschlüssel
Den Authentifizierungsschlüssel finden wir dort schließlich im Bereich Konto. Diesen Schlüssel kannst Du schon einmal in die Zwischenablage kopieren und dann in einem VBA-Modul eine Konstante mit diesem füllen (siehe Bild 4).
Bild 4: Holen des Authentifizierungsschlüssel von DeepL
Authentifizierungsschlüssel in Konstante speichern
Die Konstante zum Speichern des Authentifizierungsschlüssels sieht wie folgt aus:
Private Const cStrAuthKey As String = "74dd9c25-8129-7d29-xxxx-332fc440e56a:fx"
In den nachfolgend vorgestellten Prozeduren holen wir den Wert dieser Konstanten mit der folgenden Funktion:
Public Function GetAuthKey() GetAuthKey = cStrAuthKey End Function
Warum greifen wir nicht einfach auf die Konstante zu? Weil wir je nach Anwendung, also Access, Word, Excel et cetera, eine andere Möglichkeit wählen können, um den Authentifizierungsschlüssel zu speichern. In Access würden wir diesen beispielsweise in einer Optionentabelle speichern, unter Excel vielleicht in einem separaten Worksheet, in Word vielleicht wie hier vorgeschlagen in einer Konstanten.
Endpunkt in Konstante speichern
In einer weiteren Konstanten speichern wir die URL des zu verwendenden Endpunkts, also der Adresse, unter welcher die API zu erreichen ist.
Für die freie Version lautet dieser:
Private Const cStrAPIEndpoint As String = _ "https://api-free.deepl.com"
Für die kostenpflichtige Version verwenden wir den folgenden Endpunkt:
Private Const cStrAPIEndpoint As String = _ "https://api.deepl.com"
Funktion zum Übersetzen von Texten
Die Funktion, die wir zum Übersetzen von Texten aufrufen, heißt TranslateDeepL und sieht wie in Listing 1 aus. Sie erwartet die folgenden Parameter:
Public Function TranslateDeepL(strToTranslate As String, intSourceLang As SourceLanguage, _ intTargetLang As TargetLanguage) As String Dim strRequest As String Dim strResponse As String Dim strAuth_Key As String Dim strText As String Dim strSource_Lang As String Dim strTarget_Lang As String Dim strStatus As String Dim col As Collection strAuth_Key = "?auth_key=" & GetAuthKey strText = "&text=" & URLEncode(strToTranslate) strSource_Lang = "&source_lang=" & GetLanguageCodeSource(intSourceLang) strTarget_Lang = "&target_lang=" & GetLanguageCodeTarget(intTargetLang) strRequest = cStrAPIEndpoint & "/v2/translate" & strAuth_Key & strText & strSource_Lang & strTarget_Lang _ & "&tag_handling=xml" Debug.Print strRequest If HTTPRequest(strRequest, strResponse, strStatus) = 200 Then Debug.Print strResponse strResponse = Replace(strResponse, "{""translations"":[{""detected_source_language"":""DE"",""text"":""", "") strResponse = Replace(strResponse, """}]}", "") TranslateDeepL = strResponse Else MsgBox "Fehler beim Aufruf: " & strStatus End If End Function
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: