#P translation_framework
Index: contrib/google_translation/google_translation.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/translation_framework/contrib/google_translation/google_translation.module,v
retrieving revision 1.1
diff -u -r1.1 google_translation.module
--- contrib/google_translation/google_translation.module	26 Aug 2008 22:47:15 -0000	1.1
+++ contrib/google_translation/google_translation.module	15 May 2009 07:25:20 -0000
@@ -8,7 +8,7 @@
 define('GOOGLE_TRANSLATION_PATH',        drupal_get_path('module', 'google_translation'));
 
 // variables required by the module in order to function correctly
-define('GOOGLE_TRANSLATION_URL',         variable_get('google_translation_url', 'http://google.com/translate_t?langpair='));
+define('GOOGLE_TRANSLATION_URL',         variable_get('google_translation_url', 'http://translate.google.com/translate_a/t?client=t'));
 define('GOOGLE_TRANSLATION_HTTP_METHOD', variable_get('google_translation_http_method', 'GET'));
 define('GOOGLE_TRANSLATION_HTTP_RETRY',  variable_get('google_translation_http_retry', 3));
 
@@ -124,12 +124,20 @@
  *      The translation object that will have the translate portion set
  */
 function google_translation_translate($translate) {
-  $lp = $translate->src .'|'. $translate->dst; // setting the language pairs that google is looking for
-  $url = GOOGLE_TRANSLATION_URL . $lp .'&text='. urlencode($translate->data);
-  $result = drupal_http_request($url, array(), GOOGLE_TRANSLATION_HTTP_METHOD, NULL, GOOGLE_TRANSLATION_HTTP_RETRY);
+  // Map Drupal language code to Google one's
+  $src_lang = ($translate->src == 'zh-hans') ? '&sl=zh-CN' : '&sl=' . $translate->src; 
+  $dst_lang = ($translate->dst == 'zh-hans') ? '&tl=zh-CN' : '&tl=' . $translate->dst; 
+
+  $url = GOOGLE_TRANSLATION_URL . $src_lang . $dst_lang .'&text='. urlencode($translate->data);
+  $result = drupal_http_request($url, array('User-Agent' => 'Mozilla/5.0'), GOOGLE_TRANSLATION_HTTP_METHOD, NULL, GOOGLE_TRANSLATION_HTTP_RETRY);
   if ($result->code == 200) {
-    preg_match('/<div id=result_box dir="ltr">(.*?)<\/div>/', $result->data, $out);
-    $translate->translation = utf8_encode($out[1]);
+  	// $result->data is in format ["translation", [["noun", "translation 2", ..], ["verb", "translation 3"], ..]]
+  	if (substr($result->data, 0, 1) == '[') {  		
+  		$trans_variants = explode(',', substr($result->data, 1, -1)); 
+  		$translate->translation = substr($trans_variants[0], 1, -1);
+  	}    else {
+        $translate->translation = substr($result->data, 1, -1);  		
+  	}
   }
   else {
     $translate->error_code = $result->code;
