ВГОРУ

Google Перекладач в LibreOffice Calc

YLC Utilities logo
YLC

Опис

Стандартний функціонал програми LibreOffice Calc не містить функцій для перекладу тексту на інші мови. Проте, будь який користувач може створити таку функцію самостійно.

В даній статті ми розглянемо користувацьку функцію GoogleTranslate_YouLibreCalc(), яка дозволить вам перекладати текст безпосередньо в комірці на будь-якому робочому аркуші.

Для перекладу тексту функція використовує сайт "Google Перекладач" та може використовуватись в будь-яких формулах як самостійно, так і спільно з іншими стандартними функціями.



StarBASIC код для функції Google Translate

Щоб додати функцію Google Translate, відкрийте меню 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
    
  'Виконуємо API звернення до веб-сервера за допомогою AJAX-запиту
  Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
 
  XMLHTTP.Open "GET", WebsiteURL, False  
  XMLHTTP.Send
 
  'Створюємо HTML документ, використовуючи текст відповіді AJAX-запиту
  Set oHTML = CreateObject("HTMLFile")
  With oHTML
        .Open
        .Write XMLHTTP.responseText
        .Close
  End With
  
  'Конвертуємо HTML текст в об'єктну модель за допомогою бібліотеки веб-елементів 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 
 
  'Звільняємо пам'ять
  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.