2014-11-10 2 views
3

영어 : Sale ID prefix is a required field구글 번역 API를 출력 HTML 엔티티

프랑스 : Vente préfixe d'ID est un champ obligatoire

구글이 출력되지에게 HTML 개체 대신 출력 실제 문자 (')

번역을 사용하는 방법이 있을까요

CODE : (translateTo 참조)

#!/usr/bin/php 
<?php 
$languages = array('english' => 'en', 'spanish' => 'es', 'indonesia' => 'id', 'french' => 'fr', 'italian' => 'it', 'dutch' => 'nl', 'portugues' => 'pt', 'arabic' => 'ar'); 

fwrite(STDOUT, "Please enter file: "); 
$file = trim(fgets(STDIN)); 

//Run until user kills it 
while(true) 
{ 
    fwrite(STDOUT, "Please enter key: "); 
    $key = trim(fgets(STDIN)); 

    fwrite(STDOUT, "Please enter english value: "); 
    $value = trim(fgets(STDIN)); 

    foreach($languages as $folder=>$code) 
    { 
     $path = dirname(__FILE__).'/../../application/language/'.$folder.'/'.$file; 
     $transaltedValue = translateTo($value, $code); 

     $current_file_contents = file_get_contents($path); 

     //If we have already translated, update it 
     if (preg_match("/['\"]{1}${key}['\"]{1}/",$current_file_contents)) 
     { 
      $find_existing_translation = "/(\[['\"]{1})(${key}['\"]{1}[^=]+=[ ]*['\"]{1})([^'\"]+)(['\"]{1};)/"; 
      $new_file_contents = preg_replace($find_existing_translation, '${1}${2}'.$transaltedValue.'${4}', $current_file_contents); 
      file_put_contents($path, $new_file_contents); 
     } 
     else //We haven't translated: Add 
     { 
      $pair = "\$lang['$key'] = '$transaltedValue';"; 
      file_put_contents($path, str_replace('?>', "$pair\n?>", $current_file_contents)); 
     } 
    } 


    fwrite(STDOUT, "Quit? (y/n): "); 
    $quit = strtolower(trim(fgets(STDIN))); 

    if ($quit == 'y' || $quit == 'yes') 
    { 
     exit(0); 
    } 
} 

function translateTo($value, $language_key) 
{ 
    if ($language_key == 'en') 
    { 
     return $value; 
    } 

    $api_key = 'MY_API_KEY'; 
    $value = urlencode($value); 

    $url ="https://www.googleapis.com/language/translate/v2?key=$api_key&q=$value&source=en&target=$language_key"; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    $body = curl_exec($ch); 
    curl_close($ch); 

    $json = json_decode($body); 

    return $json->data->translations[0]->translatedText; 
} 
?> 
+0

당신은 텍스트로 형식을 지정하는 시도? [API 문서] (https://cloud.google.com/translate/v2/using_rest#query-params)에 따르면이 기본값은 HTML입니다. ** 번역 될 텍스트의 형식을 지정하는 데 사용된다는 것을 이해합니다. 그러나 응답은 요청과 동일한 형식으로 고려해야합니다. –

+0

그랬습니다! 포인트를받을 수 있도록 답변 해주세요! –

답변

5

Google 번역 문서에 따르면 인 텍스트를 제공 할 형식을 (format : query parameters 참조)으로 번역 할 수 있습니다. 지정하지 않을 경우 기본값은 HTML입니다.

Google이 번역 된 텍스트를 수신 할 때와 동일한 형식으로 반환하기 때문에 일반 텍스트를 보내고 있음을 나타내려면이 검색어 매개 변수를 text으로 설정해야합니다.

그래서 PHP 코드가 될 수 :

$baseUrl = "https://www.googleapis.com/language/translate/v2"; 
$params ="?key=$api_key&q=$value&source=en&target=$language_key&format=text"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $baseUrl + $params);