2011-12-01 137 views
0

我需要知道如何使用谷歌翻譯語言的API,以XML文件的英語使用PHP另一種語言的翻譯內容,數據在XML文件中顯示如下:需要翻譯與谷歌翻譯API的XML文件內容

<log> 
    <titles> 
     <logfile>Log File</logfile> 
     <clearlog>Clear Log File</clearlog> 
    </titles> 
</log> 

所以我需要通過文件來谷歌API和返回標籤之間新的數據在其他特定的語言像阿拉伯語:

<log> 
    <titles> 
     <logfile>ملف اللوج</logfile> 
     <clearlog>مسح محتويات الملف</clearlog> 
    </titles> 
</log> 

我希望這將是明確的..

謝謝

回答

1

您可以使用這是一個谷歌翻譯API的包裝,以減輕您的工作。下面是一個示例代碼:

require_once ("include/GTranslate.php"); 

// original input xml 
$orig_xml = "YOUR XML HERE"; 

// translate 
$gt = new Gtranslate; // google translate object 
$orig_text = array(); // original text 
$trans_text = array(); // translated text 

// extract text between tags 
$split_tags_pattern = '|<[^>]+>([^<>]+)<\/[^>]+>|'; 
$tags = array(); 

preg_match_all($split_tags_pattern, $orig_xml, $tags, PREG_SET_ORDER); 
/* 
* preg_match_all returns: 
* 
* array() { 
* array() { 
*  <xml tag>text</xml>, 
*  text 
* }, 
* ... 
* } 
*/ 

// translate each tag's inner text 
foreach ($tags as $tag) { 
    $text = trim($tag[1]); 
    if ($text != '') { 
     $orig_text[] = trim($tag[0]); 
     $trans_text[] = str_replace($text, $gt->en_to_ar($text), $tag[0]); // en_to_ar method is used to translate from english to arabic. 
    } 
} 

// replace original tag's inner text with translated ones 
$trans_xml = str_replace($orig_text, $trans_text, $orig_xml); 

注意的是谷歌限制每個IP每天的API請求,因此對於大型XML有許多標籤,這可能無法工作,或者你可以把整個XML(含標籤)到谷歌翻譯(這裏也有100000個字符限制,但這對於許多事情來說已經足夠了),然後從翻譯結果中提取已翻譯的內部文本。

+0

Google似乎更新了他們的API。該服務已付款。查看更多[here](https://developers.google.com/translate/v2/getting_started) – pl71