Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Das Internet bietet für beinahe jeden Zweck einen Service. Auch für das Übersetzen von Texten. Ein Anbieter heißt DeepL. Er bietet nicht nur eine Benutzeroberfläche, in die man Texte eingeben kann, die direkt übersetzt werden, sondern auch noch eine API. Dieser können wir programmgesteuert Texte übergeben und die Übersetzung entgegennehmen. Das ist sehr praktisch für diejenigen Bereiche der Programmierung, wo man Texte in einer anderen oder in mehreren Sprachen braucht. In diesem Artikel wollen wir uns jedoch ansehen, wie wir aus den Techniken, die wir in weiteren Artikeln vorgestellt haben, ein COM-Add-In bauen, das sich nahtlos in die Word-Benutzeroberfläche eingliedert und auf Knopfdruck komplette Dokumente oder auch nur markierte Bereiche in die gewünschte Sprache übersetzt.
Übersetzen mit DeepL
Die Artikel, in denen wir auf die Grundlagen zu DeepL eingehen, findest Du unter Excel: Übersetzungen mit DeepL (www.vbentwickler.de/325), Texte übersetzen mit DeepL (www.vbentwickler.de/322) und Übersetzen mit Word und DeepL (www.vbentwickler.de/346).
Da DeepL seine API für bis zu 500.000 Zeichen pro Monat kostenlos anbietet, nutzen wir es gern als Beispiel für den Zugriff auf eine REST API. Wenn Du mehr als diese Anzahl Zeichen übersetzen möchtest, kannst Du den kostenpflichten Pro-Account nutzen. Beide schließt Du unter folgendem Link ab:
https://www.deepl.com/de/pro#developer
twinBASIC
Auch das Tool, das wir zum Erstellen des COM-Add-Ins nutzen, ist zumindest in der Variante, die das Erstellen von 32-Bit-Dateien erlaubt, kostenlos. Du findest weitere Informationen dazu zum Beispiel in twinBASIC: Visual Basic für die Zukunft (www.vbentwickler.de/310), COM-Add-Ins mit twinBASIC (www.vbentwickler.de/311) und Ribbon-Signaturen für VBA, VB6 und twinBASIC (www.vbentwickler.de/314).
Ziel des Artikels
Bevor wir in die Programmierung einsteigen, schauen wir uns den Plan an. Das Ziel ist es, dass wir per Mausklick auf einen Ribbon-Eintrag einen Übersetzungsvorgang starten können. Dieser Vorgang soll entweder den aktuell markierten Text übersetzen oder, wenn keine Markierung vorhanden ist, den Absatz übersetzen, in dem sich aktuell die Einfügemarke befindet.
Neben dem Button für das eigentliche Übersetzen benötigen wir natürlich noch eine Möglichkeit, die Original- und die Zielsprache festzulegen. Dies wollen wir ebenfalls im Ribbon ermöglichen, indem wir die verfügbaren Sprachen dort zur Auswahl anbieten.
Anlegen eines twinBASIC-Projekts
Für das COM-Add-In benötigen wir ein twinBASIC-Projekt, welches wir nach dem Öffnen von twinBASIC auf Basis des Beispielprojekts Sample 5. MyCOMAddIn erstellen (siehe Bild 1).
Bild 1: Auswahl einer Vorlage
Wir schauen uns nicht im Detail an, welche Änderungen wir an dem bestehenden Code vornehmen, sondern beschreiben im Anschluss den neuen Code des COM-Add-Ins.
Hinzufügen benötigter Verweise
Wir wollen das Add-In nutzen, um auf das Objektmodell von Word zuzugreifen und die darin markierten Elemente auslesen, um diese zu übersetzen.
Damit wir dabei nicht mit Late Binding arbeiten müssen, fügen wir einen Verweis auf die Bibliothek Microsoft Word 16.0 Object Library hinzu. Außerdem brauchen wir noch einen Verweis auf die Bibliothek Microsoft XML, v6.0.
Dieser liefert das Objekt ServerXMLHTTP60, das wir für den Zugriff auf die DeepL-REST-API benötigen.
Diese Verweise fügen wir in twinBASIC im Bereich Settings hinzu. Hier scrollen wir ein wenig nach unten und finden dort den Bereich COM Type Library / ActiveX References. In der unteren Liste namens ALL AVAILABLE COM REFERENCES können wir nach den Namen dieser beiden Bibliotheken suchen und sie durch Setzen eines Hakens zum Projekt hinzufügen (siehe Bild 2).
Bild 2: Hinzufügen von Verweisen
Weitere Projekteinstellungen anpassen
Bevor wir die Änderungen nach dem Hinzufügen der Verweise speichern, was vor dem Kompilieren unbedingt notwendig ist, stellen wir gleich noch ein paar weitere Eigenschaften ein. Dabei handelt es sich um den Projektnamen, die Projektbeschreibung und den Anwendungstitel. Alle drei stellen wir im oberen Bereich unter Settings ein (siehe Bild 3).
Bild 3: Ändern weiterer Projekteigenschaften
Danach speichern wir das Projekt und geben als Namen beispielsweise amvWordTranslator.twinproj an.
Modul mit DeepL-Funktionen einfügen
Bevor wir uns um die eigentliche Funktionalität kümmern, fügen wir noch ein neues Modul hinzu. Dazu klicken wir mit der rechten Maustaste auf den Eintrag Sources im Projekt-Explorer und wählen dort den Eintrag Add|Add Module aus (siehe Bild 4).
Bild 4: Hinzufügen eines neuen Moduls