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.
La función utiliza el sitio para traducir el texto. "Google Translate" y se puede utilizar en cualquier fórmula tanto de forma independiente como junto con otras funciones estándar.
para agregar función Google Translate , abre el menú Tools - Macros - Edit Macros... , seleccionar 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 la solicitud AJAX
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
XMLHTTP.Open "GET", WebsiteURL, False
XMLHTTP.Send
' Creamos un documento HTML usando el texto de respuesta de la 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, cerrar Macro Editor y regresar a la hoja de trabajo LibreOffice Calc , seleccione cualquier celda y use nuestra nueva función GoogleTranslate_YouLibreCalc() .
También puedes utilizar la función GOOGLETRANSLATE() instalando la extensión gratuita YouLibreCalc.oxt o su versión con todas las funciones YLC_Utilities.oxt .
Después de eso, esta función estará disponible en todos los archivos que se abrirán en LibreOffice Calc.