TOP

Traductor de Google en LibreOffice Calc

Descripción

La funcionalidad estándar del programa LibreOffice Calc no incluye funciones para traducir texto a otros idiomas. Sin embargo, cualquier usuario puede crear dicha función de forma independiente.

En este artículo, veremos la función personalizada GoogleTranslate_YouLibreCalc(), que le permitirá traducir texto directamente en una celda de cualquier hoja de trabajo.

Para la traducción de texto, la función utiliza el sitio "Google Translate" y se puede utilizar en cualquier fórmula tanto de forma independiente como junto con otras funciones estándar.



Código BASIC para la función Google Translate

Para agregar la función Google Translate, abra el menú Tools - Macros - Edit Macros..., seleccione Module1 y copie el siguiente texto en el módulo:

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
    
  ' Ejecutamos la llamada API al servidor web mediante una petición AJAX 
  Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
 
  XMLHTTP.Open "GET", WebsiteURL, False  
  XMLHTTP.Send
 
  ' Creamos un documento HTML utilizando el texto de respuesta de una solicitud AJAX 
  Set oHTML = CreateObject("HTMLFile")
  With oHTML
        .Open
        .Write XMLHTTP.responseText
        .Close
  End With
  
  ' Convertimos texto HTML en un modelo de objetos usando la biblioteca de elementos web Microsoft HTML Object Library 
  Set HTMLDoc = oHTML  
  
  Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)
  If Not ObjClass Is Nothing Then
    GoogleTranslate_YouLibreCalc = ObjClass.innerText    
  End If 
 
  ' Liberamos la memoria 
  Set ObjClass = Nothing
  Set oHTML    = Nothing
  Set XMLHTTP  = Nothing  
End Function

A continuación, cierre Macro Editor y regrese a la hoja de trabajo LibreOffice Calc, seleccione cualquier celda y use nuestra nueva función GoogleTranslate_YouLibreCalc().

Usando la extensión YouLibreCalc

También puedes usar la función GOOGLETRANSLATE() configurando la extensión " YouLibreCalc.oxt ". Después de eso, esta función estará disponible en todos los archivos que se abrirán en LibreOffice Calc.