1

I have a list of 1000 text in Russian language and want to convert it to English in R. I know there are some R packages for google translate but that requires API. And getting google API is paid now. In Excel VBA, I have a macro which visits google translate website and converts it. See the URL and parameters below -

getParam = "Прием (осмотр, консультация) врача-инфекциониста первичный"
translateFrom = "ru"
translateTo = "en"

URL = "https://translate.google.pl/m?hl=" & translateFrom & "&sl=" & translateFrom & "&tl=" & translateTo & "&ie=UTF-8&prev=_m&q=" & getParam

Can same thing be done in R?

john
  • 1,026
  • 8
  • 19

2 Answers2

1

Here is a solution ,

library(RCurl)
library(XML)

getParam = "Прием (осмотр, консультация) врача-инфекциониста первичный"
translateFrom = "ru"
translateTo = "en"

search <- gsub(" ", "%20", getParam)

URL <- paste("https://translate.google.pl/m?hl=",translateFrom,"&sl=",translateFrom,"&tl=",translateTo,"&ie=UTF-8&prev=_m&q=",search,sep="")

page <- getURL(URL)

tree <-htmlTreeParse(page)

body <- tree$children$html$children$body 

body_text <- body$children[[5]]$children[[1]]  

print(body_text) 

You can find more information about web parsing from this question.

maydin
  • 3,715
  • 3
  • 10
  • 27
0

Here is an approach that can be used for French to English. You can simply change the French for Russian and use the same approach.


library(pdftools)

send_Text_To_Google_Translage_French_To_English <- function(text_To_Translate)
{
  library(stringr)
  library(pagedown)
  library(pdftools)
  text_To_Translate <- str_replace_all(string = text_To_Translate, pattern = "[:space:]", replacement = "%20")
  url <- paste0('https://translate.google.com/?hl=fr&sl=fr&tl=en&text=', text_To_Translate, '&op=translate')
  temp_PDF <- tempfile(fileext = ".pdf")
  tryCatch(pagedown::chrome_print(input = url, output = temp_PDF, wait = 2), error = function(e) NA)
  translated_Text <- pdf_text(temp_PDF)
  translated_Text <- strsplit(translated_Text, split = "\r\n")[[1]]
  return(translated_Text)
}

text_To_Translate <- "La tutela de Vieux-la-Romaine est une "
text_Translated <- callr::r(func = sent_Text_To_Google_Translage_French_To_English, 
                             args = list(text_To_Translate = text_To_Translate))

text_Translated
Emmanuel Hamel
  • 1,769
  • 7
  • 19