LibreOffice Calc 程序的标准功能不包括将文本翻译成其他语言的功能。然而,任何用户都可以独立创建这样的功能。
在本文中,我们将了解自定义函数 GoogleTranslate_YouLibreCalc(),它允许您直接翻译任何工作表上单元格中的文本。
该功能使用该网站来翻译文本 “谷歌翻译” 可以在任何公式中独立使用,也可以与其他标准函数一起使用。
加上 函数谷歌翻译 ,打开菜单 Tools - Macros - Edit Macros... , 选择 模块1 并将以下文本复制到模块中:
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
' 我们使用 AJAX 请求对 Web 服务器执行 API 调用
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
XMLHTTP.Open "GET", WebsiteURL, False
XMLHTTP.Send
' 我们使用 AJAX 请求的响应文本创建一个 HTML 文档
Set oHTML = CreateObject("HTMLFile")
With oHTML
.Open
.Write XMLHTTP.responseText
.Close
End With
' 我们使用 Web 元素库 Microsoft HTML Object Library 将 HTML 文本转换为对象模型
Set HTMLDoc = oHTML
Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)
If Not ObjClass Is Nothing Then
GoogleTranslate_YouLibreCalc = ObjClass.innerText
End If
' 我们释放内存
Set ObjClass = Nothing
Set oHTML = Nothing
Set XMLHTTP = Nothing
End Function
接下来,关闭 Macro Editor 并返回工作表 LibreOffice Calc ,选择任何单元格并使用我们的新功能 GoogleTranslate_YouLibreCalc() 。
您还可以通过安装免费扩展来使用 GOOGLETRANSLATE() 函数 YouLibreCalc.oxt 或其全功能版本 YLC_Utilities.oxt 。
之后,该功能将在 LibreOffice Calc 中打开的所有文件中可用。