### Eclipse Workspace Patch 1.0
#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.2.5
diff -u -r1.1.2.5 google_translation.module
--- contrib/google_translation/google_translation.module	23 Apr 2009 22:18:03 -0000	1.1.2.5
+++ contrib/google_translation/google_translation.module	19 May 2009 10:23:39 -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://translate.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));
 
@@ -182,13 +182,17 @@
           $translate->error_msg = t('Google Translation service could not translate the information that was received');
         }
       }
-      else {
-        $lp = $translate->src .'|'. $translate->dst;
-        $url = GOOGLE_TRANSLATION_URL . $lp .'&text='. urlencode($translate->data);
-        $result = drupal_http_request($url, array(), GOOGLE_TRANSLATION_HTTP_METHOD, NULL, GOOGLE_TRANSLATION_HTTP_RETRY);
+      else {      	
+      	$url = GOOGLE_TRANSLATION_URL . '&sl=' . $translate->src . '&tl=' . $translate->dst . '&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->translation = $translate->data;
@@ -213,14 +217,18 @@
   }
   $str = wordwrap($translate->data, $maxsize, "<BREAKONME>");
   $pieces = explode("<BREAKONME>", $str);
-  $lp = $translate->src .'|'. $translate->dst;
-  $url = GOOGLE_TRANSLATION_URL . $lp .'&text=';
+
+  $url = GOOGLE_TRANSLATION_URL . '&sl=' . $translate->src . '&tl=' . $translate->dst .'&text=';
   if (is_array($pieces) && !empty($pieces)) {
     foreach ($pieces as $piece) {
-      $result = drupal_http_request($url . urlencode($piece), array(), GOOGLE_TRANSLATION_HTTP_METHOD, NULL, GOOGLE_TRANSLATION_HTTP_RETRY);
+      $result = drupal_http_request($url . urlencode($piece), 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);
-        $translated_string .= utf8_encode($out[1]);
+          if (substr($result->data, 0, 1) == '[') {       
+            $trans_variants = explode(',', substr($result->data, 1, -1));
+            $translate->translation = substr($trans_variants[0], 1, -1);
+          }    else {
+            $translated_string .= substr($result->data, 1, -1);        
+          }          
       }
       else {
         $translate->translation = $translate->data;
