TOP

LibreOffice Calc 中的谷歌翻译

LibreOffice Calc 程序的标准功能不包括将文本翻译成其他语言的功能。然而,任何用户都可以独立创建这样的功能。

在本文中,我们将了解自定义函数 GoogleTranslate_YouLibreCalc(),它允许您直接翻译任何工作表上单元格中的文本。

对于文本翻译,该函数使用“Google Translate”网站,可以独立或与其他标准函数一起在任何公式中使用。



BASIC Google 翻译功能的代码

要添加 Google 翻译功能,请打开菜单 Tools - Macros - Edit Macros...,选择 Module1 并将以下文本复制到模块中:

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() 函数。