Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Texte automatisch bersetzen lassen per VBA

Das Internet macht es mglich: Texte kann man schon lngst kostenlos von beliebigen Sprachen in beliebige Sprachen bersetzen, da braucht man keine teuere Software mehr fr. Fr den geneigten VBA-Entwickler stellt sich da natrlich die Frage, wie man davon profitieren kann - etwa, um die Texte fr eine mehrsprachige Anwendung zu beschafften, und wenn auch nur als Grundlage fr das folgende Finetuning.

Beispiel Mehrsprachige Anwendungen

Wer mal eine mehrsprachige Anwendung programmiert hat, wird vermutlich Tabellen fr die Texte in den verschiedenen Sprachen erstellt und diese dann selbst gefllt oder dies durch eine mit der jeweiligen Sprache vertraute Person erledigt lassen haben.

Diesen Vorgang kann man auch wesentlich vereinfachen, indem man die Texte in der jeweils unbekannten oder weniger bekannten Sprache automatisch bersetzen lsst.

Als Helfer bietet sich beispielsweise ein Google'scher Webservice an, der Texte in der einen Sprache entgegennimmt und die bersetzung, mal mehr, mal weniger holprig, zurckliefert.

Und das Schnste ist: Sie brauchen nur die folgende VBA-Funktion in Ihre Datenbank einzubauen, um auf den Webservice zuzugreifen:

Function GetTranslatedToEN(strDE As String) As String

    Dim objDOM As Object

    Dim objDoc As Object

    Dim strURL As String

    Dim strTranslated As String

    

    On Error GoTo Fehler

    strURL = "http://translate.google.com/translate_t?text='" & strDE & "'&langpair=de|en&hl=de"

    'Fr andere Sprachen die entspr. langpair-Tags einsetzen

    Set objDOM = CreateObject("MSXML2.XMLHTTP")

    objDOM.Open "POST", strURL, False

    objDOM.setRequestHeader "Content-Type", "text/xml"

    objDOM.send

    

    Set objDoc = CreateObject("htmlfile")

    objDoc.Body.innerHTML = StrConv(objDOM.responseBody, vbUnicode)

    strTranslated = objDoc.getElementById("result_box").innerText

    GetTranslatedToEN = Mid(strTranslated, 2, Len(strTranslated) - 2)

Ende:

    On Error Resume Next

    Set objDoc = Nothing

    Set objDOM = Nothing

    Exit Function

Fehler:

    Msgbox Err.Description

    Resume Ende

   

End Function

Der Aufruf sieht so aus:

? GetTranslatedToEN ("Das ist ja vielleicht ein cooles Feature!")

Einziger Nachteil: Der Webservice braucht schon kurze Zeit, um die Antwort zu liefern. Umfangreichere bersetzungen lsst man also am besten ber Nacht durchfhren oder berlegt sich eine Mglichkeit, mehrere Stze/Phrasen durch Trennzeichen zu schicken. Beispiel:

? GetTranslatedToEN("Das ist der erste Satz.|Das ist der zweite Satz.")

This is the first sentence. | This is the second sentence.

Wir setzen diese Funktion brigens in der Beispieldatenbank zu einem Artikel ein, der sich mit dem Thema Mehrsprachige Datenbanken auseinandersetzt. Der Artikel wird Anfang Juni in Ausgabe 3/2008 erscheinen.

 

 

© 2003-2015 André Minhorst Alle Rechte vorbehalten.