### 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>/', $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, ""); $pieces = explode("", $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>/', $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;