diff --git a/google_translations/google_translations.module b/google_translations/google_translations.module
--- a/google_translations/google_translations.module
+++ b/google_translations/google_translations.module
@@ -2,6 +2,7 @@
 
 // $Id:
 
+class GoogleException extends Exception {}
 
 ////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////
@@ -41,7 +42,6 @@
   // get all the fields and translate each one
   
   $fields = icl_translate_get_fields($rid);
-  $success = TRUE;
   
   foreach ($fields as $field) {
     
@@ -56,13 +56,17 @@
         $field_data = implode(', ', array_values($field_data));
       }
       
-      $translation = _google_translations_translate_language($from->language, $to->language, $field_data);
-      if ($translation != NULL) {
-
-        if (strtolower($field['field_format']) == 'csv') {
-          $field_data = explode(',', $translation);
-          $translation = array();
-          foreach($field_data as $data) {
-            $translation[] = trim($data);
-          }
+      $translation = '';
+      try {
+      	$translation = _google_translations_translate_language($from->language, $to->language, $field_data);
+    	} catch (GoogleException $e) {
+    		$message = t('Google translation failed to %lang: %error', array('%lang' => $languages[$to->language], '%error' => $e->getMessage()));
+    		return array('service_rid' => FALSE, 'status' => 0, 'message' => $message);
+    	}
+    	
+      if (strtolower($field['field_format']) == 'csv') {
+        $field_data = explode(',', $translation);
+        $translation = array();
+        foreach($field_data as $data) {
+          $translation[] = trim($data);
         }
@@ -68,6 +72,2 @@
         }
-        
-        icl_translate_update_field_translation($rid, $field['field_type'], $translation, 1);
-      } else {
-        $success = FALSE;
       }
@@ -73,2 +73,4 @@
       }
+      
+      icl_translate_update_field_translation($rid, $field['field_type'], $translation, 1);
     }
@@ -74,15 +76,3 @@
     }
-
-  }
-    
-  if ($success) {
-    icl_translate_process_translation($rid, $to->language);
-  
-    $message = t('Google translation to %lang', array('%lang' => $languages[$to->language]));
-    return array('service_rid' => $rid, 'status' => ICL_STATUS_SUCCESSFUL, 'message' => $message);
-  } else {
-    
-    $message = t('Google translation failed to %lang', array('%lang' => $languages[$to->language]));
-    return array('service_rid' => FALSE, 'status' => 0, 'message' => $message);
   }
   
@@ -87,5 +77,10 @@
   }
   
+  icl_translate_process_translation($rid, $to->language);
+  
+  $message = t('Google translation to %lang', array('%lang' => $languages[$to->language]));
+  return array('service_rid' => $rid, 'status' => ICL_STATUS_SUCCESSFUL, 'message' => $message);
+    
 }
 
 function _google_translations_translate_language($from, $to, $text) {
@@ -97,7 +92,7 @@
 /*  $pattern = "/<span id=result_box.*?><span.*?>(.*?)<\/span>/"; */
 //  preg_match($pattern, $in, $matches);
 
-  $url = "ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" . urlencode($text)."&langpair=" .urlencode($lp);
+	$url = "http://ajax.googleapis.com/ajax/services/language/translate";
 
   if (!function_exists('curl_init')) {
     return NULL;
@@ -109,6 +104,11 @@
   curl_setopt($curl_session, CURLOPT_HTTPHEADER, array(
 		'Referer: ' . $base_url,
 	));
+	curl_setopt($curl_session, CURLOPT_POSTFIELDS, array(
+		"v" => "1.0",
+		"q" => $text,
+		"langpair" => $lp,
+	));
 
   $results = curl_exec($curl_session);
   curl_close($curl_session);
@@ -118,6 +118,6 @@
 //  } else {
 //    return NULL;
 //  }
-  if ($results === false) { return NULL; }
+  if ($results === "") { throw new GoogleException(curl_error($curl_session)); }
 
   $results = json_decode($results, true);
@@ -122,6 +122,7 @@
 
   $results = json_decode($results, true);
-  if ($results['responseStatus'] != 200) { return NULL; }
+	
+	if ($results['responseStatus'] != 200) { throw new GoogleException("Google returned error #" . $results['responseStatus'] . ": " . $results['responseDetails']); }
 
   return $results['responseData']['translatedText'];
 }
