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

使用 YouLibreCalc 扩展

您还可以通过设置扩展名“来使用函数 GOOGLETRANSLATE() YouLibreCalc.oxt ”。此后,该功能将在所有在 LibreOffice Calc 中打开的文件中可用。