LibreOffice Calc プログラムの標準機能には、テキストを他の言語に翻訳する機能は含まれていません。ただし、どのユーザーでもそのような関数を独自に作成できます。
この記事では、ワークシートのセル内のテキストを直接翻訳できるようにするカスタム関数 GoogleTranslate_YouLibreCalc() について説明します。
テキストの翻訳には、この関数は「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() 関数を使用します。
拡張子「」を設定することで、関数 GOOGLETRANSLATE() を使用することもできます。 YouLibreCalc.oxt その後、この関数は LibreOffice Calc で開かれるすべてのファイルで使用できるようになります。