{"id":55000322,"date":"2022-08-01T00:00:00","date_gmt":"2023-03-02T17:04:48","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=322"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Texte_uebersetzen_mit_DeepL","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Texte_uebersetzen_mit_DeepL\/","title":{"rendered":"Texte &uuml;bersetzen mit DeepL"},"content":{"rendered":"<p><b>Zum automatischen &Uuml;bersetzen von Texten gibt es viele Anl&auml;sse. Vielleicht m&ouml;chtest Du die Texte in einer Anwendung automatisch &uuml;bersetzen lassen, damit Du selbst die &Uuml;bersetzung nur noch pr&uuml;fen und gegebenenfalls anpassen musst. Oder Du hast Texte in einer anderen Sprache, die Du gern in die deutsche Sprache &uuml;bersetzen m&ouml;chtest, um diese leichter lesen zu k&ouml;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 &uuml;bersetzen lassen m&ouml;chte, ist diese L&ouml;sung unbefriedigend. In diesem Fall bietet sich eine Automation des Vorgangs an. Und wie das geht, zeigen wir anhand eines der aktuell besten &Uuml;bersetzungstools, n&auml;mlich DeepL. DeepL bietet eine API an, die wir per VBA oder mit anderen Programmiersprachen ansteuern k&ouml;nnen. Dieser Artikel stellt die Grundlagen dazu vor.<\/b><\/p>\n<h2>&Uuml;bersetzen mit DeepL<\/h2>\n<p>Die erste Anlaufstelle f&uuml;r die Arbeit mit der API des &Uuml;bersetzungstools <b>DeepL<\/b> ist die Webseite <b>https:\/\/www.deepl.com<\/b>. Hier finden wir gleich zwei Textfelder, deren linkes wir f&uuml;r die Eingabe des zu &uuml;bersetzenden Textes nutzen k&ouml;nnen. Geben wir hier einen Text ein, erkennt DeepL automatisch die verwendete Sprache und &uuml;bersetzt den Text in die Sprache, die f&uuml;r das rechte Textfeld ausgew&auml;hlt ist. Das geht auch recht schnell, sodass das Ergebnis wie in Bild 1 aussieht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_322_001.png\" alt=\"DeepL in Aktion\" width=\"699,627\" height=\"410,9792\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: DeepL in Aktion<\/span><\/b><\/p>\n<h2>Die DeepL-API<\/h2>\n<p>Mit einem Klick auf das Men&uuml; rechts oben finden wir schnell den Eintrag <b>API<\/b>. Klicken wir diesen an, landen wir auf einer Seite, die eine kostenlose Registrierung anbietet.<\/p>\n<p>W&auml;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&ouml;llig aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_322_002.png\" alt=\"Angebot der DeepL-Api\" width=\"649,627\" height=\"645,5494\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Angebot der DeepL-Api<\/span><\/b><\/p>\n<p>Wenn Du nicht auf mehr als 500.000 Zeichen im Monat kommst, w&auml;hlst Du einfach diese Option &#8211; und wenn es mehr werden, w&auml;re die zweite Option sinnvoll. Hier fallen allerdings nach aktuellem Stand 20 EUR pro 1.000.000 &uuml;bersetzter Zeichen an. Wer einmal Texte von Hand &uuml;bersetzt hat und die Qualit&auml;t der &Uuml;bersetzung von DeepL gepr&uuml;ft hat, wird dies vermutlich als sehr faires Angebot ansehen. Aber wie gesagt: F&uuml;r uns reicht die kostenlose Variante.<\/p>\n<p>Zur Anmeldung ben&ouml;tigt DeepL Deine E-Mail-Adresse und Kennwort sowie einige weitere Informationen. Die Kreditkarteninformationen m&uuml;ssen angegeben werden, weil DeepL so Mehrfachanmeldungen und damit Missbrauch des kostenlosen Angebots umgehen m&ouml;chte &#8211; es ist also eher eine vereinfachte Identit&auml;tspr&uuml;fung.<\/p>\n<p>Nach der Pr&uuml;fung des Kreditkartenkontos best&auml;tigt man noch die Bedingungen und danach kann es schon losgehen.<\/p>\n<h2>DeepL-Konto verwalten<\/h2>\n<p>Im folgenden Schritt sehen wir eine Seite, von der aus wir uns unser Konto verwalten, aber auch einen Authentifizierungsschl&uuml;ssel abrufen k&ouml;nnen.<\/p>\n<p>Letzteres ist genau das, was wir brauchen, um sp&auml;ter per VBA auf die API von DeepL zuzugreifen (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_322_003.png\" alt=\"Link zum Authentifizierungsschl&uuml;ssel\" width=\"649,627\" height=\"385,1953\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Link zum Authentifizierungsschl&uuml;ssel<\/span><\/b><\/p>\n<p>Den Authentifizierungsschl&uuml;ssel finden wir dort schlie&szlig;lich im Bereich <b>Konto<\/b>. Diesen Schl&uuml;ssel kannst Du schon einmal in die Zwischenablage kopieren und dann in einem VBA-Modul eine Konstante mit diesem f&uuml;llen (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_322_004.png\" alt=\"Holen des Authentifizierungsschl&uuml;ssel von DeepL\" width=\"699,627\" height=\"513,199\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Holen des Authentifizierungsschl&uuml;ssel von DeepL<\/span><\/b><\/p>\n<h2>Authentifizierungsschl&uuml;ssel in Konstante speichern<\/h2>\n<p>Die Konstante zum Speichern des Authentifizierungsschl&uuml;ssels sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>Const cStrAuthKey<span style=\"color:blue;\"> As String<\/span> = \"74dd9c25-8129-7d29-xxxx-332fc440e56a:fx\"<\/pre>\n<p>In den nachfolgend vorgestellten Prozeduren holen wir den Wert dieser Konstanten mit der folgenden Funktion:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>GetAuthKey()\r\n     GetAuthKey = cStrAuthKey\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Warum greifen wir nicht einfach auf die Konstante zu? Weil wir je nach Anwendung, also Access, Word, Excel et cetera, eine andere M&ouml;glichkeit w&auml;hlen k&ouml;nnen, um den Authentifizierungsschl&uuml;ssel zu speichern. In Access w&uuml;rden wir diesen beispielsweise in einer Optionentabelle speichern, unter Excel vielleicht in einem separaten Worksheet, in Word vielleicht wie hier vorgeschlagen in einer Konstanten.<\/p>\n<h2>Endpunkt in Konstante speichern<\/h2>\n<p>In einer weiteren Konstanten speichern wir die URL des zu verwendenden Endpunkts, also der Adresse, unter welcher die API zu erreichen ist.<\/p>\n<p>F&uuml;r die freie Version lautet dieser:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>Const cStrAPIEndpoint<span style=\"color:blue;\"> As String<\/span> = _\r\n      \"https:\/\/api-free.deepl.com\"<\/pre>\n<p>F&uuml;r die kostenpflichtige Version verwenden wir den folgenden Endpunkt:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>Const cStrAPIEndpoint<span style=\"color:blue;\"> As String<\/span> = _\r\n     \"https:\/\/api.deepl.com\"<\/pre>\n<h2>Funktion zum &Uuml;bersetzen von Texten<\/h2>\n<p>Die Funktion, die wir zum &Uuml;bersetzen von Texten aufrufen, hei&szlig;t <b>TranslateDeepL <\/b>und sieht wie in Listing 1 aus. Sie erwartet die folgenden Parameter:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>TranslateDeepL(strToTranslate<span style=\"color:blue;\"> As String<\/span>, intSourceLang<span style=\"color:blue;\"> As <\/span>SourceLanguage, _\r\nintTargetLang<span style=\"color:blue;\"> As <\/span>TargetLanguage)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strRequest<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strResponse<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strAuth_Key<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strText<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSource_Lang<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strTarget_Lang<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strStatus<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>col<span style=\"color:blue;\"> As <\/span>Collection\r\n     \r\n     strAuth_Key = \"?auth_key=\" & GetAuthKey\r\n     strText = \"&text=\" & URLEncode(strToTranslate)\r\n     strSource_Lang = \"&source_lang=\" & GetLanguageCodeSource(intSourceLang)\r\n     strTarget_Lang = \"&target_lang=\" & GetLanguageCodeTarget(intTargetLang)\r\n     \r\n     strRequest = cStrAPIEndpoint & \"\/v2\/translate\" & strAuth_Key & strText & strSource_Lang & strTarget_Lang _\r\n         & \"&tag_handling=xml\"\r\n     <span style=\"color:blue;\">Debug.Print<\/span> strRequest\r\n     <span style=\"color:blue;\">If <\/span>HTTPRequest(strRequest, strResponse, strStatus) = 200<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Debug.Print<\/span> strResponse\r\n         strResponse = <span style=\"color:blue;\">Replace<\/span>(strResponse, \"{\"\"translations\"\":[{\"\"detected_source_language\"\":\"\"DE\"\",\"\"text\"\":\"\"\", \"\")\r\n         strResponse = <span style=\"color:blue;\">Replace<\/span>(strResponse, \"\"\"}]}\", \"\")\r\n         TranslateDeepL = strResponse\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Fehler beim Aufruf: \" & strStatus\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000\"><a style=\"color: #ff0000\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000322\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000322?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000322\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"16c900693b\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zum automatischen &Uuml;bersetzen von Texten gibt es viele Anl&auml;sse. Vielleicht m&ouml;chtest Du die Texte in einer Anwendung automatisch &uuml;bersetzen lassen, damit Du selbst die &Uuml;bersetzung nur noch pr&uuml;fen und gegebenenfalls anpassen musst. Oder Du hast Texte in einer anderen Sprache, die Du gern in die deutsche Sprache &uuml;bersetzen m&ouml;chtest, um diese leichter lesen zu k&ouml;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 &uuml;bersetzen lassen m&ouml;chte, ist diese L&ouml;sung unbefriedigend. In diesem Fall bietet sich eine Automation des Vorgangs an. Und wie das geht, zeigen wir anhand eines der aktuell besten &Uuml;bersetzungstools, n&auml;mlich DeepL. DeepL bietet ein API an, die wir per VBA oder mit anderen Programmiersprachen ansteuern k&ouml;nnen. Dieser Artikel stellt die Grundlagen dazu vor.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662022,66042022,44000012,44000023,44000028],"tags":[],"yst_prominent_words":[],"class_list":["post-55000322","post","type-post","status-publish","format-standard","hentry","category-662022","category-66042022","category-Interaktiv","category-PowerApps","category-Word_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000322"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000322\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000322"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}