COM-Add-In zum Übersetzen von Word-Dokumenten

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).

Auswahl einer Vorlage

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).

Hinzufügen von Verweisen

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).

Ändern weiterer Projekteigenschaften

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).

Hinzufügen eines neuen Moduls

Bild 4: Hinzufügen eines neuen Moduls

 

Schreibe einen Kommentar