R/onetrans.R

#' translate using bing,baidu,google,etc
#' @description translate using onlie translators, such as bing(A),baidu(C),google(A-)
#' @param string the source text
#' @param src the source language
#' @param dest the destination language
#' @return result translated string
#' @export
#' @expamples
#' demo4= "珠江是华南一大河系,流经广州市,是中国第三长的河流,仅次于长江和黄河。珠江三角洲是中国最发达的地区之一,面积约 11000 平方公里。它在面积和人口方面也是世界上最大的城市聚集区。珠江三角洲九个最大城市共有 5700 多万人口。上世纪 70 年代末中国改革开放以来,珠江三角洲已成为中国和世界主要经济区域和制造中心之一。"
#' onetrans(demo4,engine = 'bing', src= 'zh-CN',dest = 'en')
#' onetrans(demo4,engine = 'baidu',src= 'zh-CN',dest = 'en')
#' onetrans(demo4,engine = 'google', src= 'zh-CN',dest = 'en')
#'
#' txten="The Pearl River Delta is also the largest urban agglomeration in the world in terms of size and population. "
#' onetrans(txten, engine = "google",src='en',dest = "zh-CN")
#' onetrans(txten, engine = "bing",src='en',dest = "zh-CN")
#' onetrans(txten, engine = "baidu",src='en',dest = "zh-CN")
#'
#' engines = c("google","bing","baidu")
#' purrr::map(engines,~onetrans(txt,engine=.x,src='en',dest='zh-CN'))
#'

onetrans <- function(string, engine = "bing", src = "en", dest = "zh-CN"){
  # trim the empty
	#string = stringr::str_replace_all(string," ","")
	#trans <- reticulate::import("translation")
	# google translate
	if (engine == "google") {
		res = gmtools::ggtrans(string, src,dest)
	} else if (engine== "bing") {
		path <- file.path(system.file(package = "gmtools"),'onetrans.py')
		cmd <- paste0('/anaconda3/bin/python ', path,' "' ,string,'" "',dest,'"')
		trans <- system(command=cmd, intern = TRUE)[1]
		#trans <- reticulate::import("translation")
		#res <- trans$bing(string, dst=dest)
		res <- c(string,trans,"必应翻译")

	} else if (engine == "baidu") {
		if (src == "zh-CN") {src = "zh"}
		if (dest == "zh-CN") {dest = "zh"}
		# path <- file.path(system.file(package = "gmtools"),'onetrans.py')
		#cmd <- glue::glue("/Users/gabe/anaconda/bin/python {path} '{string}' '{engine}' '{dest}'")
		#trans <- system(command=paste0('"',cmd,'"'), intern = TRUE)[1]

	   baidu_trans = function(string,src,dest){
	   	if (src=="zh") {
	   		string1 = stringr::str_replace_all(string," ","")
	   	} else if (src=="en") {
	  		string1 = stringr::str_replace_all(string," ","+")
	   	}
	     bd = glue::glue("http://fanyi.baidu.com/v2transapi?from={src}&to={dest}&query={string1}&transtype=translang&simple_means_flag=3")
	    trans = jsonlite::fromJSON(bd)
	     return(trans$trans_result$data$dst)
	   }

		res <- baidu_trans(string, src=src,dest=dest)
		res <- c(string,res,"百度翻译")

	  }

  return(res)
}
Gabegit/gmtools documentation built on May 6, 2019, 5:32 p.m.