2014-12-16 10 views
2

Google 번역 api를 통해 텍스트 번역 작업 중입니다. 영어 데이터가 데이터베이스에서 다른 언어 (예 : 일본어와 같은 언어)로 변환되어야하며 데이터베이스에 다른 언어 출력도 저장해야합니다. 지금 나는 다른 언어로 출력을 얻으려면 API를 번역 구글로 모든 문자열을 보냈습니다. 하지만 그것은 매우 오랜 시간이 걸리며 여러 요청 제한으로 인해 전체 데이터를 변환 할 수 없습니다.google translator API를 사용하여 PHP 배열 값 변환

제 질문은 Google 번역기 API를 사용하여 한 번의 요청으로 전체 배열을 번역 할 수 있습니까?

는 지금은 코드 아래 사용하고 있습니다 :

for($mn=0;$mn<count($languageFieldData);$mn++) 
{ 
    $field = $languageFieldData[$mn]['field']; 

    $newVal = $leadQuery[0][$field]; 
    if(!empty($newVal)) 
    { 
     //$leadQuery['ko'][0][$field] = Translate($newVal,'ko'); 
     $leadQuery['ja'][0][$field] = Translate($newVal,'ja'); 
     //$leadQuery['zh-CN'][0][$field] = Translate($newVal,'zh-CN'); 
    } 
    $newVal = ""; 
} 

function curl($url,$params = array(),$is_coockie_set = false) 
{ 
    if(!$is_coockie_set) 
    { 
     $ckfile = tempnam ("/tmp", "CURLCOOKIE"); 
     $ch = curl_init ($url); 
     curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); 
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
     $output = curl_exec ($ch); 
    } 
    $str = ''; 
    $str_arr= array(); 
foreach($params as $key => $value) 
{ 
    $str_arr[] = urlencode($key)."=".urlencode($value); 
} 
if(!empty($str_arr)) 
    $str = '?'.implode('&',$str_arr); 
    $Url = $url.$str; 
    $ch = curl_init ($Url); 
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
    $output = curl_exec ($ch); 
    return $output; 
} 
function Translate($word,$conversion) 
{ 
    $word = urlencode($word); 
    $url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=en&tl='.$conversion.'&ie=UTF-8&oe=UTF-8&multires=1&otf=1&ssel=3&tsel=3&sc=1'; 
    $name_en = curl($url); 
    $name_en = explode('"',$name_en); 
    return $name_en[1]; 
} 

답변

0

짧은 대답은 : 아니, 당신은 하나의 요청을받을 수 없습니다. RESTful API [1]는 일련의 문자를 수신하는 메소드 만 정의합니다.

그러나 shuch 기능이 필요하다는 점은 문자열 배열 변환의 "힘든 작업"을 캡슐화하는 고유 한 메서드를 정의 할 수 있으므로 필요하지 않습니다.

기본 할당량 제한을 100 요청/초/사용자로 처리하려는 경우 제한을 늘리거나 스크립트에 로직을 추가하여 초당 X 요청을 초과하지 않도록 할 수 있습니다.

[1]

0

https://cloud.google.com/translate/v2/using_rest 나는 그것을 해결. 나는 div와 그 독특한 id의 도움으로 html로 배열을 변환했다. 구글 번역기는 HTML 탭과 속성을 번역하지 않는다. DIV 안에있는 내용 만 번역합니다.