X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Ftranslate%2Ffunctions.php;h=cef56833aa65d4cceb107f382ee884781b1691d9;hp=cee0d681fa3a150c390c0fc5ba127b1004361d29;hb=b4df37a525c34a317d5f6ff10baa518f75448703;hpb=47ccfad452e8d345542d09e59112cac317cffed8 diff --git a/plugins/translate/functions.php b/plugins/translate/functions.php index cee0d681..cef56833 100644 --- a/plugins/translate/functions.php +++ b/plugins/translate/functions.php @@ -3,7 +3,7 @@ /** * SquirrelMail translate plugin functions * - * @copyright © 2004-2006 The SquirrelMail Project Team + * @copyright © 2004-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package plugins @@ -11,13 +11,12 @@ */ /** - * Define for wrecked souls accessing functions script directly - * @ignore + * do not allow to call this file directly */ -if (!defined('SM_PATH')) { - define('SM_PATH','../../'); +if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) { + header("Location: ../../src/login.php"); + die(); } - /** Load default config */ if (file_exists(SM_PATH . 'plugins/translate/config_default.php')) { include_once(SM_PATH . 'plugins/translate/config_default.php'); @@ -85,39 +84,54 @@ function translate_read_form_function() { $translate_server_option='translate_' . $translate_server . '_enabled'; if ($translate_server=='gpltrans' && $translate_gpltrans_url=='' || ! $$translate_server_option || ! function_exists('translate_form_' . $translate_server)) { - error_box(_("Selected translation engine is disabled. Please update your translation preferences."),$color); + error_box(_("Selected translation engine is disabled. Please update your translation preferences.")); return; } $translate_dir = 'to'; $trans_ar = $message->findDisplayEntity(array(), array('text/plain')); $body = ''; - if ($trans_ar[0] != '') { + $final_body = ''; + if ( !empty($trans_ar[0]) ) { for ($i = 0; $i < count($trans_ar); $i++) { - $body .= formatBody($imapConnection, $message, $color, $wrap_at, $trans_ar[$i], $passed_id, $mailbox, true); + /* reduced version of formatBody and translateText functions */ + + // get message entity information + $body_message = getEntity($message, $trans_ar[$i]); + // get message body + $body = mime_fetch_body ($imapConnection, $passed_id, $trans_ar[$i]); + // convert encoded messages + $body = decodeBody($body, $body_message->header->encoding); + + /* + * if message part is html formated - convert spaces, html line feeds, + * less than and greater than html entities and remove tags + */ + if ($body_message->header->type1 == 'html') { + $entity_conv = array(' ' => ' ', + '
' => "\n", + '
' => "\n",
+ '
' => "\n",
+ '
' => "\n",
+ '
' => "\n",
+ '
' => "\n",
+ '>' => '>',
+ '<' => '<');
+ $body = strtr($body, $entity_conv);
+ $body = strip_tags($body);
+ }
+ // remove whitespace
+ $body = trim($body);
+ // save processed text and parse other entity
+ $final_body.= charset_decode($body_message->header->getParameter('charset'),$body);
}
- $hookResults = do_hook('message_body', $body);
- $body = $hookResults[1];
- } else {
- $body = 'Message can\'t be translated';
- }
-
- $new_body = $body;
- $trans = get_html_translation_table(HTML_ENTITIES);
- $trans[' '] = ' ';
- $trans = array_flip($trans);
- $new_body = strtr($new_body, $trans);
-
- $new_body = urldecode($new_body);
- $new_body = strip_tags($new_body);
-
- /* I really don't like this next part ... */
- $new_body = str_replace('"', "''", $new_body);
- $new_body = strtr($new_body, "\n", ' ');
-
- $function = 'translate_form_' . $translate_server;
- $function($new_body);
+ // add form if message is not empty
+ if (!empty($final_body)) {
+ $function = 'translate_form_' . $translate_server;
+ $function($final_body);
+ }
+ }
}
/**
@@ -269,7 +283,7 @@ function translate_showtrad() {
'http://www.dictionary.com/translate' );
if ($translate_google_enabled) translate_showtrad_internal( 'Google Translate',
_("No known limits, powered by Systran").
- '
'.sprintf(_("Number of supported language pairs: %s"),'12').' ' ,
+ '
'.sprintf(_("Number of supported language pairs: %s"),'20').' ' ,
'http://www.google.com/translate' );
if ($translate_gpltrans_enabled && $translate_gpltrans_url!='') translate_showtrad_internal( 'GPLTrans',
_("No known limits, powered by GPLTrans (free, open source)").
@@ -419,7 +433,7 @@ function translate_lang_opt($from, $to, $value, $text) {
* Starts translation box
*
* @param string $action url that has to recieve message for translation
- * @param string $charset (since sm 1.5.1) character set, that should be used
+ * @param string $charset (since sm 1.5.1) character set, that should be used
* to submit 8bit information.
* @access private
*/
@@ -440,7 +454,7 @@ function translate_new_form($action,$charset=null) {
if (!$translate_same_window) {
echo ' target="_blank"';
}
-
+
if (! is_null($charset))
echo ' accept-charset="'.htmlspecialchars($charset).'"';
@@ -894,10 +908,7 @@ function translate_form_promt($message) {
*/
function translate_form_google($message) {
translate_new_form('http://www.google.com/translate_t','utf-8');
- echo '' .
- '' .
- '' .
- '';
+ echo '';
echo ''.
- 'Google: ';
+ '' .
+ '' .
+ '' .
+ 'Google: ';
translate_table_end();
}
-?>
\ No newline at end of file