Texte automatisch übersetzen lassen per VBADas Internet macht es möglich: Texte kann man schon längst kostenlos von beliebigen Sprachen in beliebige Sprachen übersetzen, da braucht man keine teuere Software mehr für. Für den geneigten VBA-Entwickler stellt sich da natürlich die Frage, wie man davon profitieren kann - etwa, um die Texte für eine mehrsprachige Anwendung zu beschafften, und wenn auch nur als Grundlage für das folgende Finetuning.
Beispiel Mehrsprachige AnwendungenWer mal eine mehrsprachige Anwendung programmiert hat, wird vermutlich Tabellen für die Texte in den verschiedenen Sprachen erstellt und diese dann selbst gefüllt 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 lässt.
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, zurückliefert.
Und das Schönste 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"
'Für 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 lässt man also am besten über Nacht durchführen oder überlegt sich eine Möglichkeit, mehrere Sätze/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.
|