TOP

Google Translate in LibreOffice Calc

Die Standardfunktionalität des Programms LibreOffice Calc umfasst keine Funktionen zum Übersetzen von Texten in andere Sprachen. Allerdings kann jeder Benutzer eine solche Funktion selbstständig erstellen.

In diesem Artikel betrachten wir die benutzerdefinierte Funktion GoogleTranslate_YouLibreCalc(), mit der Sie Text direkt in einer Zelle in einem beliebigen Arbeitsblatt übersetzen können.

Zur Textübersetzung nutzt die Funktion die Seite „Google Translate“ und kann in beliebigen Formeln sowohl unabhängig als auch zusammen mit anderen Standardfunktionen verwendet werden.



BASIC-Code für die Google Translate-Funktion

Um die Google Translate-Funktion hinzuzufügen, öffnen Sie das Menü Tools - Macros - Edit Macros..., wählen Sie Module1 aus und kopieren Sie den folgenden Text in das Modul:

Option VBASupport 1

Function GoogleTranslate_YouLibreCalc(TextToTranslate As String, SrcLang As String, TrgLang As String)
  'moonexcel.com.ua
  Dim FCalc      As Object
  Dim WebsiteURL As String  
  Dim XMLHTTP    As Object
  Dim oHTML      As Object
  Dim HTMLDoc    As HTMLDocument
  Dim ObjClass   As Object
    
  FCalc = CreateUnoService("com.sun.star.sheet.FunctionAccess") 
  TextToTranslate =  FCalc.callFunction("ENCODEURL", Array(TextToTranslate))
  
  SrcLang = LCase(SrcLang)
  TrgLang = LCase(TrgLang)
  
  IF SrcLang = "zh-cn" Then SrcLang = "zh-CN"
  IF SrcLang = "zh-tw" Then SrcLang = "zh-TW"
  
  IF TrgLang = "zh-cn" Then TrgLang = "zh-CN"
  IF TrgLang = "zh-tw" Then TrgLang = "zh-TW" 
    
  WebsiteURL = "https://translate.google.com/m?sl=" + SrcLang + "&tl=" + TrgLang + "&hl=en&q=" + TextToTranslate
    
  'Wir führen den API-Aufruf an den Webserver über eine AJAX-Anfrage aus
  Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
 
  XMLHTTP.Open "GET", WebsiteURL, False  
  XMLHTTP.Send
 
  'Wir erstellen ein HTML-Dokument mit dem Antworttext einer AJAX-Anfrage
  Set oHTML = CreateObject("HTMLFile")
  With oHTML
        .Open
        .Write XMLHTTP.responseText
        .Close
  End With
  
  'Wir konvertieren HTML-Text mithilfe der Bibliothek von Webelementen Microsoft HTML Object in ein Objektmodell
  Set HTMLDoc = oHTML  
  
  Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)
  If Not ObjClass Is Nothing Then
    GoogleTranslate_YouLibreCalc = ObjClass.innerText    
  End If 
 
  'Wir befreien die Erinnerung
  Set ObjClass = Nothing
  Set oHTML    = Nothing
  Set XMLHTTP  = Nothing  
End Function

Schließen Sie als Nächstes Macro Editor und kehren Sie zum Arbeitsblatt LibreOffice Calc zurück, wählen Sie eine beliebige Zelle aus und verwenden Sie unsere neue Funktion GoogleTranslate_YouLibreCalc().