Source for file functions.php

Documentation is available at functions.php

  1. <?php
  2.  
  3. /**
  4.  * SquirrelMail translate plugin functions
  5.  *
  6.  * @copyright &copy; 2004-2006 The SquirrelMail Project Team
  7.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8.  * @version $Id: functions.php,v 1.20 2006/08/15 13:57:27 tokul Exp $
  9.  * @package plugins
  10.  * @subpackage translate
  11.  */
  12.  
  13. /**
  14.  * do not allow to call this file directly
  15.  */
  16. if ((isset($_SERVER['SCRIPT_FILENAME']&& $_SERVER['SCRIPT_FILENAME'== __FILE__||
  17.      (isset($HTTP_SERVER_SERVER['SCRIPT_FILENAME']&& $HTTP_SERVER_SERVER['SCRIPT_FILENAME'== __FILE__) ) {
  18.     header("Location: ../../src/login.php");
  19.     die();
  20. }
  21. /** Load default config */
  22. if (file_exists(SM_PATH 'plugins/translate/config_default.php')) {
  23.     include_once(SM_PATH 'plugins/translate/config_default.php');
  24. else {
  25.     /** Somebody removed default config */
  26.     global $translate_gpltrans_url;
  27.     $translate_gpltrans_url='';
  28.     global $disable_compose_translate;
  29.     $disable_compose_translate=true;
  30.     global $translate_default_engine;
  31.     $translate_default_engine='babelfish';
  32.     global $translate_babelfish_enabled;
  33.     $translate_babelfish_enabled=true;
  34.     global $translate_go_enabled;
  35.     $translate_go_enabled=false;
  36.     global $translate_dictionary_enabled;
  37.     $translate_dictionary_enabled=true;
  38.     global $translate_google_enabled;
  39.     $translate_google_enabled=true;
  40.     global $translate_intertran_enabled;
  41.     $translate_intertran_enabled=true;
  42.     global $translate_promt_enabled;
  43.     $translate_promt_enabled=true;
  44.     global $translate_otenet_enabled;
  45.     $translate_otenet_enabled=true;
  46.     global $translate_gpltrans_enabled;
  47.     $translate_gpltrans_enabled=true;
  48.     global $translate_custom_enabled;
  49.     $translate_custom_enabled=false;
  50.     // This is logged error message. Don't translate it.
  51.         error_log('SquirrelMail: default configuration file removed in translate plugin.');
  52. }
  53.  
  54. /** Load site config */
  55. if (file_exists(SM_PATH 'config/translate_config.php')) {
  56.     include_once(SM_PATH 'config/translate_config.php');
  57. elseif (file_exists(SM_PATH 'plugins/translate/config.php')) {
  58.     include_once(SM_PATH 'plugins/translate/config.php');
  59. }
  60.  
  61. /** Setup functions */
  62.  
  63. /**
  64.  * Shows translation box in message display window
  65.  * @access private
  66.  */
  67. function translate_read_form_function({
  68.     global $color$translate_server;
  69.     global $message$translate_dir;
  70.     global $translate_show_read;
  71.     global $imapConnection$wrap_at$passed_id$mailbox;
  72.     global $translate_gpltrans_url;
  73.  
  74.     global $translate_custom_enabled;
  75.  
  76.  
  77.     if (!$translate_show_read{
  78.         return;
  79.     }
  80.  
  81.     $translate_server_option='translate_' $translate_server '_enabled';
  82.     if ($translate_server=='gpltrans' && $translate_gpltrans_url=='' ||
  83.         $$translate_server_option || function_exists('translate_form_' $translate_server)) {
  84.         error_box(_("Selected translation engine is disabled. Please update your translation preferences."));
  85.         return;
  86.     }
  87.     $translate_dir 'to';
  88.  
  89.     $trans_ar $message->findDisplayEntity(array()array('text/plain'));
  90.     $body '';
  91.     $final_body '';
  92.     if ($trans_ar[0!= ''{
  93.         for ($i 0$i count($trans_ar)$i++{
  94.             /* reduced version of formatBody and translateText functions */
  95.  
  96.             // get message entity information
  97.             $body_message getEntity($message$trans_ar[$i]);
  98.             // get message body
  99.             $body mime_fetch_body ($imapConnection$passed_id$trans_ar[$i]);
  100.             // convert encoded messages
  101.             $body decodeBody($body$body_message->header->encoding);
  102.  
  103.             /*
  104.              * if message part is html formated - convert spaces, html line feeds,
  105.              * less than and greater than html entities and remove tags
  106.              */
  107.             if ($body_message->header->type1 == 'html'{
  108.                 $entity_conv array('&nbsp;' => ' ',
  109.                                      '<p>'    => "\n",
  110.                                      '<P>'    => "\n",
  111.                                      '<br>'   => "\n",
  112.                                      '<BR>'   => "\n",
  113.                                      '<br />' => "\n",
  114.                                      '<BR />' => "\n",
  115.                                      '&gt;'   => '>',
  116.                                      '&lt;'   => '<');
  117.                 $body strtr($body$entity_conv);
  118.                 $body strip_tags($body);
  119.             }
  120.             // remove whitespace
  121.             $body trim($body);
  122.             // save processed text and parse other entity
  123.             $final_body.= charset_decode($body_message->header->getParameter('charset'),$body);
  124.         }
  125.  
  126.         // add form if message is not empty
  127.         if (!empty($final_body)) {
  128.             $function 'translate_form_' $translate_server;
  129.             $function($final_body);
  130.         }
  131.     }
  132. }
  133.  
  134. /**
  135.  * Adds translation option block
  136.  * @access private
  137.  */
  138. function translate_optpage_function({
  139.     global $optpage_blocks;
  140.     $optpage_blocks[array(
  141.         'name' => _("Translation Options"),
  142.         'url'  => '../plugins/translate/options.php',
  143.         'desc' => _("Which translator should be used when you get messages in a different language?"),
  144.         'js'   => false
  145.     );
  146. }
  147.  
  148. /**
  149.  * Gets user's translation preferences
  150.  * @access private
  151.  */
  152. function translate_pref_function({
  153.     global $username$data_dir;
  154.     global $translate_server$translate_location;
  155.     global $translate_show_send$translate_show_read;
  156.     global $translate_same_window,$translate_default_engine;
  157.  
  158.     $translate_server getPref($data_dir$username'translate_server',$translate_default_engine);
  159.  
  160.     $translate_location getPref($data_dir$username'translate_location','center');
  161.  
  162.     $translate_show_send getPref($data_dir$username'translate_show_send');
  163.     $translate_show_read getPref($data_dir$username'translate_show_read');
  164.     $translate_same_window getPref($data_dir$username'translate_same_window');
  165. }
  166.  
  167. /**
  168.  * Should add translation options in compose window
  169.  *
  170.  * Unimplemented
  171.  * @access private
  172.  */
  173. function translate_button_function({
  174.     global $translate_show_send;
  175.  
  176.     if ($translate_show_send{
  177.         return;
  178.     }
  179. }
  180.  
  181. /**
  182.  * Save translation options
  183.  */
  184.     global $username$data_dir;
  185.     // Save preferences
  186.     if (sqgetGlobalVar('submit_translate',$tmp,SQ_POST)) {
  187.         if (sqgetGlobalVar('translate_translate_server',$translate_server,SQ_POST)) {
  188.             setPref($data_dir$username'translate_server'$translate_server);
  189.         else {
  190.             setPref($data_dir$username'translate_server'$translate_default_engine);
  191.         }
  192.  
  193.         if (sqgetGlobalVar('translate_translate_location',$translate_location,SQ_POST)) {
  194.             setPref($data_dir$username'translate_location'$translate_location);
  195.         else {
  196.             setPref($data_dir$username'translate_location''center');
  197.         }
  198.  
  199.         if (sqgetGlobalVar('translate_translate_show_read',$translate_show_read,SQ_POST)) {
  200.             setPref($data_dir$username'translate_show_read''1');
  201.         else {
  202.             setPref($data_dir$username'translate_show_read''');
  203.         }
  204.  
  205.         if (sqgetGlobalVar('translate_translate_show_send',$translate_show_send,SQ_POST)) {
  206.             setPref($data_dir$username'translate_show_send''1');
  207.         else {
  208.             setPref($data_dir$username'translate_show_send''');
  209.         }
  210.  
  211.         if (sqgetGlobalVar('translate_translate_same_window',$translate_same_windows,SQ_POST)) {
  212.             setPref($data_dir$username'translate_same_window''1');
  213.         else {
  214.             setPref($data_dir$username'translate_same_window''');
  215.         }
  216.     }
  217. }
  218.  
  219. /**
  220.  * Set option page name
  221.  * @access private
  222.  */
  223. function translate_set_loadinfo_function({
  224.     global $optpage$optpage_name;
  225.     if ($optpage=='translate'{
  226.         $optpage_name=_("Translation Preferences");
  227.     }
  228. }
  229.  
  230. /** Option functions */
  231.  
  232. /**
  233.  * Creates server selection options
  234.  * @access private
  235.  */
  236. function translate_showoption({
  237.  
  238.     if ($translate_babelfish_enabledtranslate_showoption_internal('server','babelfish''Babelfish');
  239.     if ($translate_go_enabledtranslate_showoption_internal('server','go''Go.com');
  240.     if ($translate_dictionary_enabledtranslate_showoption_internal('server','dictionary''Dictionary.com');
  241.     if ($translate_google_enabledtranslate_showoption_internal('server','google''Google Translate');
  242.     if ($translate_gpltrans_enabled && $translate_gpltrans_url!='')
  243.         translate_showoption_internal('server','gpltrans''GPLTrans');
  244.     if ($translate_intertran_enabledtranslate_showoption_internal('server','intertran''Intertran');
  245.     if ($translate_otenet_enabledtranslate_showoption_internal('server','otenet''OTEnet');
  246.     if ($translate_promt_enabledtranslate_showoption_internal('server','promt''PROMT');
  247.     if ($translate_custom_enabled && function_exists('translate_custom_showoption')) {
  248.         translate_custom_showoption();
  249.     }
  250. }
  251.  
  252. /**
  253.  * Displays comments about available translation engines
  254.  * @access private
  255.  */
  256. function translate_showtrad({
  257.  
  258.     if ($translate_babelfish_enabledtranslate_showtrad_internal'Babelfish',
  259.               _("Maximum of 150 words translated, powered by Systran").
  260.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'36').' ' ,
  261.               'http://babelfish.altavista.com/' );
  262.     if ($translate_go_enabledtranslate_showtrad_internal'Translator.Go.com',
  263.               _("Maximum of 25 kilobytes translated, powered by Systran").
  264.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'10').' ' ,
  265.               'http://translator.go.com/' );
  266.     if ($translate_dictionary_enabledtranslate_showtrad_internal'Dictionary.com',
  267.               _("No known limits, powered by Systran").
  268.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'24').' ' ,
  269.               'http://www.dictionary.com/translate' );
  270.     if ($translate_google_enabledtranslate_showtrad_internal'Google Translate',
  271.               _("No known limits, powered by Systran").
  272.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'20').' ' ,
  273.               'http://www.google.com/translate' );
  274.     if ($translate_gpltrans_enabled && $translate_gpltrans_url!=''translate_showtrad_internal'GPLTrans',
  275.               _("No known limits, powered by GPLTrans (free, open source)").
  276.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'16').' ' ,
  277.               'http://www.translator.cx/' );
  278.     if ($translate_intertran_enabledtranslate_showtrad_internal'InterTran',
  279.               _("No known limits, powered by Translation Experts' InterTran").
  280.               '<br />'.sprintf(_("Number of supported languages: %s"),'29').' ' ,
  281.               'http://www.tranexp.com/' );
  282.     if ($translate_otenet_enabledtranslate_showtrad_internal'OTEnet',
  283.               _("Hellenic translations, no known limits, powered by Systran").
  284.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'20').' ' ,
  285.               'http://systran.otenet.gr/' );
  286.     if ($translate_promt_enabledtranslate_showtrad_internal'PROMT',
  287.               _("Russian translations, maximum of 500 characters translated").
  288.               '<br />'.sprintf(_("Number of supported language pairs: %s"),'16').' ' ,
  289.               'http://www.online-translator.com/' );
  290.  
  291.     if ($translate_custom_enabled && function_exists('translate_custom_showtrad')) {
  292.         translate_custom_showtrad();
  293.     }
  294. }
  295.  
  296. /**
  297.  * Creates options for translation selection boxes
  298.  * @param string $Var option type (server,location)
  299.  * @param string $value option value
  300.  * @param string $Desc description of translation server
  301.  * @access private
  302.  * @since 1.5.1
  303.  */
  304. function translate_showoption_internal($Var,$value$Desc{
  305.     $Var='translate_' $Var;
  306.  
  307.     global $$Var;
  308.  
  309.     echo '<option value="' $value '"';
  310.     if ($$Var == $value{
  311.         echo ' selected="selected"';
  312.     }
  313.     echo '>' $Desc "</option>\n";
  314. }
  315.  
  316. /**
  317.  * Creates translation server description
  318.  * @param string $tit title
  319.  * @param string $com comments about translation server
  320.  * @param string $url url of translation server
  321.  * @access private
  322.  */
  323. function translate_showtrad_internal$tit$com$url {
  324.     echo "<li><b>$tit</b> - ".
  325.         $com .
  326.         "[ <a href=\"$url\" target=\"_blank\">$tit</a]</li>";
  327. }
  328.  
  329. /** Internal functions */
  330.  
  331. /**
  332.  * Closes table tags in translation box
  333.  * @access private
  334.  */
  335. function translate_table_end({
  336.     ?></td>
  337.       </tr>
  338.       </table>
  339.     </td>
  340.     </tr>
  341.     </table>
  342.     </form>
  343.     <?php
  344. }
  345.  
  346. /**
  347.  * Tries to select default translation combination
  348.  *
  349.  * This function could be speed up.
  350.  * It basically negates the process if a ! is found in the beginning and
  351.  * matches a * at the end with 0 or more characters.
  352.  *
  353.  * @param string $test language code that has to be tested.
  354.  * @return boolean true if language code matches user's language.
  355.  * @access private
  356.  */
  357. function translate_does_it_match_language($test{
  358.     global $squirrelmail_language;
  359.     $true 1;
  360.     $false 0;
  361.     $index 0;
  362.     $smindex 0;
  363.  
  364.     if ($test || $squirrelmail_language{
  365.         return $false;
  366.     }
  367.  
  368.     if ($test[$index== '!'{
  369.         $index ++;
  370.         $true 0;
  371.         $false 1;
  372.     }
  373.  
  374.     if (($index == 0&& ($test == $squirrelmail_language)) {
  375.         return $true;
  376.     }
  377.  
  378.     while (isset($test[$index]&& $test[$index]{
  379.         if ($test[$index== '*'{
  380.             return $true;
  381.         }
  382.         if ($test[$index!= $squirrelmail_language[$smindex]{
  383.             return $false;
  384.         }
  385.         $index ++;
  386.         $smindex ++;
  387.     }
  388.  
  389.     return $false;
  390. }
  391.  
  392. /**
  393.  * Creates language option selection box.
  394.  * @param string $from 
  395.  * @param string $to 
  396.  * @param string $value 
  397.  * @param string $text 
  398.  * @access private
  399.  */
  400. function translate_lang_opt($from$to$value$text{
  401.     global $translate_dir;
  402.  
  403.     $ret '  <option value="' $value '"';
  404.  
  405.     if (translate_does_it_match_language($to&& ($translate_dir == 'to')) {
  406.         $ret .= ' selected="selected"';
  407.     }
  408.  
  409.     if (translate_does_it_match_language($from&& ($translate_dir == 'from')) {
  410.         $ret .= ' selected="selected"';
  411.     }
  412.  
  413.     $ret .= '>' $text "</option>\n";
  414.  
  415.     return$ret );
  416. }
  417.  
  418. /**
  419.  * Starts translation box
  420.  *
  421.  * @param string $action url that has to recieve message for translation
  422.  * @param string $charset (since sm 1.5.1) character set, that should be used
  423.  *  to submit 8bit information.
  424.  * @access private
  425.  */
  426. function translate_new_form($action,$charset=null{
  427.     global $translate_dir$translate_location;
  428.     global $color$translate_same_window;
  429.  
  430.     echo '<form action="';
  431.  
  432.     if ($translate_dir == 'to'{
  433.         echo $action;
  434.     else {
  435.         echo 'translate.php';
  436.     }
  437.  
  438.     echo '" method="post"';
  439.  
  440.     if (!$translate_same_window{
  441.         echo ' target="_blank"';
  442.     }
  443.  
  444.     if (is_null($charset))
  445.         echo ' accept-charset="'.htmlspecialchars($charset).'"';
  446.  
  447.     echo ">\n";
  448.  
  449.     ?><table align="<?php echo $translate_location?>" cellpadding="3" cellspacing="0" border="0" bgcolor="<?php echo $color[10]?>">
  450.     <tr>
  451.       <td>
  452.         <table cellpadding="2" cellspacing="1" border="0" bgcolor="<?php echo $color[5]?>">
  453.           <tr>
  454.             <td><?php
  455. }
  456.  
  457. /**
  458.  * Babelfish translation engine functions
  459.  *
  460.  * @param string $message text that has to be translated.
  461.  * @access private
  462.  */
  463. function translate_form_babelfish($message{
  464.     translate_new_form('http://babelfish.altavista.com/babelfish/tr','utf-8');
  465. ?>
  466.     <input type="hidden" name="doit" value="done" />
  467.     <input type="hidden" name="intl" value="1" />
  468.     <input type="hidden" name="tt" value="urltext" />
  469.     <input type="hidden" name="trtext" value="<?php echo $message?>" />
  470.     <select name="lp"><?php
  471.         echo translate_lang_opt('zh_CN',  '',     'zh_en',
  472.                             sprintf_("%s to %s"),_("Chinese, Simplified"),_("English"))) .
  473.          translate_lang_opt('zh_TW',  '',     'zt_en',
  474.                             sprintf_("%s to %s"),_("Chinese, Traditional"),_("English"))) .
  475.          translate_lang_opt('en_US''zh_CN''en_zh',
  476.                             sprintf_("%s to %s"),_("English"),_("Chinese, Simplified"))) .
  477.          translate_lang_opt('en_US''zh_TW''en_zt',
  478.                             sprintf_("%s to %s"),_("English"),_("Chinese, Traditional"))) .
  479.          translate_lang_opt('en_US''nl_NL',  'en_nl',
  480.                             sprintf_("%s to %s"),_("English"),_("Dutch"))) .
  481.          translate_lang_opt('en_US''fr_FR',  'en_fr',
  482.                             sprintf_("%s to %s"),_("English"),_("French"))) .
  483.          translate_lang_opt('en_US''de_DE''en_de',
  484.                             sprintf_("%s to %s"),_("English"),_("German"))) .
  485.          translate_lang_opt('en_US''el_GR',  'en_el',
  486.                             sprintf_("%s to %s"),_("English"),_("Greek"))) .
  487.          translate_lang_opt('en_US''it_IT''en_it',
  488.                             sprintf_("%s to %s"),_("English"),_("Italian"))) .
  489.          translate_lang_opt('en_US''ja_JP''en_ja',
  490.                             sprintf_("%s to %s"),_("English"),_("Japanese"))) .
  491.          translate_lang_opt('en_US''ko_KR''en_ko',
  492.                             sprintf_("%s to %s"),_("English"),_("Korean"))) .
  493.          translate_lang_opt('en_US''pt*',   'en_pt',
  494.                             sprintf_("%s to %s"),_("English"),_("Portuguese"))) .
  495.          translate_lang_opt('en_US''ru_RU',  'en_ru',
  496.                             sprintf_("%s to %s"),_("English"),_("Russian"))) .
  497.          translate_lang_opt('en_US''es_ES''en_es',
  498.                             sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  499.          translate_lang_opt('nl_NL''',      'nl_en',
  500.                             sprintf_("%s to %s"),_("Dutch"),_("English"))) .
  501.          translate_lang_opt('nl_NL''',      'nl_fr',
  502.                             sprintf_("%s to %s"),_("Dutch"),_("French"))) .
  503.          translate_lang_opt('fr_FR''',      'fr_en',
  504.                             sprintf_("%s to %s"),_("French"),_("English"))) .
  505.          translate_lang_opt('fr_FR',  '',     'fr_de',
  506.                             sprintf_("%s to %s"),_("French"),_("German"))) .
  507.          translate_lang_opt('fr_FR',  '',     'fr_el',
  508.                             sprintf_("%s to %s"),_("French"),_("Greek"))) .
  509.          translate_lang_opt('fr_FR',  '',     'fr_it',
  510.                             sprintf_("%s to %s"),_("French"),_("Italian"))) .
  511.          translate_lang_opt('fr_FR',  '',     'fr_pt',
  512.                             sprintf_("%s to %s"),_("French"),_("Portuguese"))) .
  513.          translate_lang_opt('fr_FR',  '',     'fr_nl',
  514.                             sprintf_("%s to %s"),_("French"),_("Dutch"))) .
  515.          translate_lang_opt('fr_FR',  '',     'fr_es',
  516.                             sprintf_("%s to %s"),_("French"),_("Spanish"))) .
  517.          translate_lang_opt('de_DE''en_US''de_en',
  518.                             sprintf_("%s to %s"),_("German"),_("English"))) .
  519.          translate_lang_opt('de_DE',  '',     'de_fr',
  520.                             sprintf_("%s to %s"),_("German"),_("French"))) .
  521.          translate_lang_opt('el_GR''',      'el_en',
  522.                             sprintf_("%s to %s"),_("Greek"),_("English"))) .
  523.          translate_lang_opt('el_GR''',      'el_fr',
  524.                             sprintf_("%s to %s"),_("Greek"),_("French"))) .
  525.          translate_lang_opt('it_IT''',      'it_en',
  526.                             sprintf_("%s to %s"),_("Italian"),_("English"))) .
  527.          translate_lang_opt('it_IT''',      'it_fr',
  528.                             sprintf_("%s to %s"),_("Italian"),_("French"))) .
  529.          translate_lang_opt('ja_JP',  '',     'ja_en',
  530.                             sprintf_("%s to %s"),_("Japanese"),_("English"))) .
  531.          translate_lang_opt('ko_KR',  '',     'ko_en',
  532.                             sprintf_("%s to %s"),_("Korean"),_("English"))) .
  533.          translate_lang_opt('pt*',    '',     'pt_en',
  534.                             sprintf_("%s to %s"),_("Portuguese"),_("English"))) .
  535.          translate_lang_opt('pt*',    '',     'pt_fr',
  536.                             sprintf_("%s to %s"),_("Portuguese"),_("French"))) .
  537.          translate_lang_opt('ru_RU',  '',     'ru_en',
  538.                             sprintf_("%s to %s"),_("Russian"),_("English"))) .
  539.          translate_lang_opt('es_ES',  '',     'es_en',
  540.                             sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  541.          translate_lang_opt('es_ES',  '',     'es_fr',
  542.                             sprintf_("%s to %s"),_("Spanish"),_("French")));
  543.     echo '</select>'.
  544.          'Babelfish: <input type="submit" value="' _("Translate"'" />';
  545.  
  546.     translate_table_end();
  547. }
  548.  
  549. /**
  550.  * go.com translation engine (disabled)
  551.  *
  552.  * @param string $message text that has to be translated
  553.  * @access private
  554.  */
  555. function translate_form_go($message{
  556.     translate_new_form('http://translator.go.com/cb/trans_entry');
  557. ?>
  558.     <input type="hidden" name="input_type" value="text" />
  559.     <select name="lp"><?php
  560.         echo translate_lang_opt('en_US''es_ES''en_sp',
  561.                                 sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  562.          translate_lang_opt('en_US''fr_FR''en_fr',
  563.                             sprintf_("%s to %s"),_("English"),_("French"))) .
  564.          translate_lang_opt('en_US''de_DE''en_ge',
  565.                             sprintf_("%s to %s"),_("English"),_("German"))) .
  566.          translate_lang_opt('en_US''it_IT''en_it',
  567.                             sprintf_("%s to %s"),_("English"),_("Italian"))) .
  568.          translate_lang_opt('en_US''pt*',   'en_pt',
  569.                             sprintf_("%s to %s"),_("English"),_("Portuguese"))) .
  570.          translate_lang_opt('es_ES''',      'sp_en',
  571.                             sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  572.          translate_lang_opt('fr_FR''',      'fr_en',
  573.                             sprintf_("%s to %s"),_("French"),_("English"))) .
  574.          translate_lang_opt('de_DE''en_US''ge_en',
  575.                             sprintf_("%s to %s"),_("German"),_("English"))) .
  576.          translate_lang_opt('it_IT''',      'it_en',
  577.                             sprintf_("%s to %s"),_("Italian"),_("English"))) .
  578.          translate_lang_opt('pt*',   '',      'pt_en',
  579.                             sprintf_("%s to %s"),_("Portuguese"),_("English")));
  580.     echo '</select>'.
  581.          '<input type="hidden" name="text" value="'.$message.'" />'.
  582.          'Go.com: <input type="submit" value="' _("Translate"'" />';
  583.  
  584.     translate_table_end();
  585. }
  586.  
  587. /**
  588.  * intertran translation engine
  589.  *
  590.  * @param string $message text that has to be translated
  591.  * @access private
  592.  */
  593. function translate_form_intertran($message{
  594.     translate_new_form('http://intertran.tranexp.com/Translate/result.shtml');
  595.     echo '<input type="hidden" name="topframe" value="yes" />'.
  596.          '<input type="hidden" name="type" value="text" />'.
  597.          '<input type="hidden" name="keyb" value="non" />'.
  598.          '<input type="hidden" name="text" value="'.$message.'" />';
  599.  
  600.     $left '<select name="from">' .
  601.         translate_lang_opt('pt_BR''',    'pob'_("Brazilian Portuguese")).
  602.         translate_lang_opt('bg_BG''',    'bul'_("Bulgarian"' (CP 1251)').
  603.         translate_lang_opt('hr_HR''',    'cro'_("Croatian"' (CP 1250)').
  604.         translate_lang_opt('cs_CZ''',    'che'_("Czech"' (CP 1250)').
  605.         translate_lang_opt('da_DK''',    'dan'_("Danish")).
  606.         translate_lang_opt('nl_NL''',    'dut'_("Dutch")).
  607.         translate_lang_opt('en_US''!en''eng'_("English")).
  608.         translate_lang_opt('tl_PH''',    'tag'_("Filipino (Tagalog)")).
  609.         translate_lang_opt('fi_FI''',    'fin'_("Finnish")).
  610.         translate_lang_opt('fr_FR''',    'fre'_("French")).
  611.         translate_lang_opt('de_DE''',    'ger'_("German")).
  612.         translate_lang_opt('el_GR''',    'grk'_("Greek")).
  613.         translate_lang_opt('hu_HU''',    'hun'_("Hungarian"' (CP 1250)').
  614.         translate_lang_opt('is_IS''',    'ice'_("Icelandic")).
  615.         translate_lang_opt('it_IT''',    'ita'_("Italian")).
  616.         translate_lang_opt('ja_JP''',    'jpn'_("Japanese"' (Shift JIS)').
  617.         translate_lang_opt('la',    '',    'ltt'_("Latin")).
  618.         translate_lang_opt('es*',   '',    'spl'_("Latin American Spanish")).
  619.         translate_lang_opt('no*',   '',    'nor'_("Norwegian")).
  620.         translate_lang_opt('pl_PL''',    'pol'_("Polish"' (ISO 8859-2)').
  621.         translate_lang_opt('pt*',   '',    'poe'_("Portuguese")).
  622.         translate_lang_opt('ro_RO''',    'rom'_("Romanian"' (CP 1250)').
  623.         translate_lang_opt('ru_RU''',    'rus'_("Russian"' (CP 1251)').
  624.         translate_lang_opt('sr_YU''',    'sel'_("Serbian"' (CP 1250)').
  625.         translate_lang_opt('sl_SI''',    'slo'_("Slovenian"' (CP 1250)').
  626.         translate_lang_opt('es_ES''',    'spa'_("Spanish")).
  627.         translate_lang_opt('sv_SE''',    'swe'_("Swedish")).
  628.         translate_lang_opt('tr_TR''',    'tur'_("Turkish"' (CP 1254)').
  629.         translate_lang_opt('cy_GB''',    'wel'_("Welsh")).
  630.         '</select>';
  631.  
  632.     $right '<select name="to">'.
  633.         translate_lang_opt('',    'pt_BR''pob'_("Brazilian Portuguese")).
  634.         translate_lang_opt('',    'bg_BG''bul'_("Bulgarian"' (CP 1251)').
  635.         translate_lang_opt('',    'hr_HR''cro'_("Croatian"' (CP 1250)').
  636.         translate_lang_opt('',    'cs_CZ''che'_("Czech"' (CP 1250)').
  637.         translate_lang_opt('',    'da_DK''dan'_("Danish")).
  638.         translate_lang_opt('',    'nl_NL''dut'_("Dutch")).
  639.         translate_lang_opt('!en''en_US''eng'_("English")).
  640.         translate_lang_opt('',    'tl_PH''tag'_("Filipino (Tagalog)")).
  641.         translate_lang_opt('',    'fi_FI''fin'_("Finnish")).
  642.         translate_lang_opt('',    'fr_FR''fre'_("French")).
  643.         translate_lang_opt('',    'de_DE''ger'_("German")).
  644.         translate_lang_opt('',    'el_GR''grk'_("Greek")).
  645.         translate_lang_opt('',    'hu_HU''hun'_("Hungarian"' (CP 1250)').
  646.         translate_lang_opt('',    'is_IS''ice'_("Icelandic")).
  647.         translate_lang_opt('',    'it_IT''ita'_("Italian")).
  648.         translate_lang_opt('',    'ja_JP''jpn'_("Japanese"' (Shift JIS)').
  649.         translate_lang_opt('',    'la',    'ltt'_("Latin")).
  650.         translate_lang_opt('',    'es*',   'spl'_("Latin American Spanish")).
  651.         translate_lang_opt('',    'no*',   'nor'_("Norwegian")).
  652.         translate_lang_opt('',    'pl_PL''pol'_("Polish"' (ISO 8859-2)').
  653.         translate_lang_opt('',    'pt_PT''poe'_("Portuguese")).
  654.         translate_lang_opt('',    'ro_RO''rom'_("Romanian"' (CP 1250)').
  655.         translate_lang_opt('',    'ru_RU''rus'_("Russian"' (CP 1251)').
  656.         translate_lang_opt('',    'sr_YU''sel'_("Serbian"' (CP 1250)').
  657.         translate_lang_opt('',    'sl_SI''slo'_("Slovenian"' (CP 1250)').
  658.         translate_lang_opt('',    'es_ES''spa'_("Spanish")).
  659.         translate_lang_opt('',    'sv_SE''swe'_("Swedish")).
  660.         translate_lang_opt('',    'tr_TR''tur'_("Turkish"' (CP 1254)').
  661.         translate_lang_opt('',    'cy_GB''wel'_("Welsh")).
  662.         '</select>';
  663.     printf_("%s to %s")$left$right );
  664.     echo 'InterTran: <input type="submit" value="' _("Translate"'" />';
  665.  
  666.     translate_table_end();
  667. }
  668.  
  669. /**
  670.  * gpltrans translation engine
  671.  *
  672.  * @param string $message text that has to be translated
  673.  * @access private
  674.  */
  675. function translate_form_gpltrans($message{
  676.     global $translate_gpltrans_url;
  677.  
  678.     // make sure that it is not empty
  679.     if ($translate_gpltrans_url=='')
  680.         $translate_gpltrans_url='http://www.translator.cx/cgi-bin/gplTrans';
  681.  
  682.     translate_new_form($translate_gpltrans_url);
  683.     echo '<select name="language">'.
  684.         translate_lang_opt('''nl_NL''dutch_dict',      _("Dutch")).
  685.         translate_lang_opt('''fr_FR''french_dict',     _("French")).
  686.         translate_lang_opt('''de_DE''german_dict',     _("German")).
  687.         translate_lang_opt('''id_ID''indonesian_dict'_("Indonesian")).
  688.         translate_lang_opt('''it_IT''italian_dict',    _("Italian")).
  689.         translate_lang_opt('''la',    'latin_dict',      _("Latin")).
  690.         translate_lang_opt('''pt*',   'portuguese_dict'_("Portuguese")).
  691.         translate_lang_opt('''es_ES''spanish_dict',    _("Spanish")).
  692.         '</select>';
  693.     echo '<select name="toenglish">';
  694.     echo '<option value="yes">'_("to English"'</option>';
  695.     echo '<option value="no" selected="selected">' _("from English"'</option></select>';
  696.     echo '<input type="hidden" name="text" value="'.$message.'" />'.
  697.         'GPLTrans: <input type="submit" value="' _("Translate"'" />';
  698.  
  699.     translate_table_end();
  700. }
  701.  
  702. /**
  703.  * reference.com (dictionary) translation engine
  704.  *
  705.  * @param string $message text that has to be translated
  706.  * @access private
  707.  */
  708. function translate_form_dictionary($message{
  709.     translate_new_form('http://dictionary.reference.com/translate/text.html');
  710.     list($usec$secexplode(' ',microtime());
  711.     $time $sec . (float)$usec*100000000;
  712.     echo '<input type="hidden" name="text" value="'.$message.'" />'.
  713.          '<input type="hidden" name="ts" value="'.$time.'" />'.
  714.          '<select name="lp">'.
  715.          translate_lang_opt('en_US''zh_CN''en_zh',
  716.                             sprintf_("%s to %s"),_("English"),_("Chinese, Simplified"))) .
  717.          translate_lang_opt('en_US''zh_TW''en_zt',
  718.                             sprintf_("%s to %s"),_("English"),_("Chinese, Traditional"))) .
  719.          translate_lang_opt('en_US''nl_NL''en_nl',
  720.                             sprintf_("%s to %s"),_("English"),_("Dutch"))) .
  721.          translate_lang_opt('en_US''fr_FR''en_fr',
  722.                             sprintf_("%s to %s"),_("English"),_("French"))) .
  723.          translate_lang_opt('en_US''de_DE''en_ge',
  724.                             sprintf_("%s to %s"),_("English"),_("German"))) .
  725.          translate_lang_opt('en_US''el_GR''en_el',
  726.                             sprintf_("%s to %s"),_("English"),_("Greek"))) .
  727.          translate_lang_opt('en_US''it_IT''en_it',
  728.                             sprintf_("%s to %s"),_("English"),_("Italian"))) .
  729.          translate_lang_opt('en_US''ja_JP''en_ja',
  730.                             sprintf_("%s to %s"),_("English"),_("Japanese"))) .
  731.          translate_lang_opt('en_US''ko_KR''en_ko',
  732.                             sprintf_("%s to %s"),_("English"),_("Korean"))) .
  733.          translate_lang_opt('en_US''pt*',   'en_pt',
  734.                             sprintf_("%s to %s"),_("English"),_("Portuguese"))) .
  735.          translate_lang_opt('en_US''ru_RU''en_ru',
  736.                             sprintf_("%s to %s"),_("English"),_("Russian"))) .
  737.          translate_lang_opt('en_US''es_ES''en_es',
  738.                             sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  739.          translate_lang_opt('zh_CN',  '',     'zh_en',
  740.                             sprintf_("%s to %s"),_("Chinese, Simplified"),_("English"))) .
  741.          translate_lang_opt('zh_TW',  '',     'zt_en',
  742.                             sprintf_("%s to %s"),_("Chinese, Traditional"),_("English"))) .
  743.          translate_lang_opt('nl_NL',  '',     'nl_en',
  744.                             sprintf_("%s to %s"),_("Dutch"),_("English"))) .
  745.          translate_lang_opt('fr_FR',  '',     'fr_en',
  746.                             sprintf_("%s to %s"),_("French"),_("English"))) .
  747.          translate_lang_opt('de_DE''en_US''ge_en',
  748.                             sprintf_("%s to %s"),_("German"),_("English"))) .
  749.          translate_lang_opt('el_GR''',      'el_en',
  750.                             sprintf_("%s to %s"),_("Greek"),_("English"))) .
  751.          translate_lang_opt('it_IT',  '',     'it_en',
  752.                             sprintf_("%s to %s"),_("Italian"),_("English"))) .
  753.          translate_lang_opt('ja_JP',  '',     'ja_en',
  754.                             sprintf_("%s to %s"),_("Japanese"),_("English"))) .
  755.          translate_lang_opt('ko_KR',  '',     'ko_en',
  756.                             sprintf_("%s to %s"),_("Korean"),_("English"))) .
  757.          translate_lang_opt('pt*',    '',     'pt_en',
  758.                             sprintf_("%s to %s"),_("Portuguese"),_("English"))) .
  759.          translate_lang_opt('ru_RU',  '',     'ru_en',
  760.                             sprintf_("%s to %s"),_("Russian"),_("English"))) .
  761.          translate_lang_opt('es_ES',  '',     'es_en',
  762.                             sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  763.          '</select>'.
  764.          'Dictionary.com: <input type="submit" value="'._("Translate").'" />';
  765.  
  766.   translate_table_end();
  767. }
  768.  
  769. /**
  770.  * otenet translation engine
  771.  *
  772.  * @param string $message text that has to be translated
  773.  * @access private
  774.  */
  775. function translate_form_otenet($message{
  776.     translate_new_form('http://trans.otenet.gr/systran/box','windows-1253');
  777. ?>
  778.     <input type="hidden" name="doit" value="done" />
  779.     <input type="hidden" name="partner" value="OTEnet-en" />
  780.     <input type="hidden" name="urltext" value="<?php echo $message?>" />
  781.     <select name="lp" size="1"><?php
  782.         echo translate_lang_opt('en_US''el_GR''en_el',
  783.                                 sprintf_("%s to %s"),_("English"),_("Greek"))) .
  784.          translate_lang_opt('el_GR''en_US''el_en',
  785.                             sprintf_("%s to %s"),_("Greek"),_("English"))) .
  786.          translate_lang_opt('fr_FR''',      'fr_el',
  787.                                 sprintf_("%s to %s"),_("French"),_("Greek"))) .
  788.          translate_lang_opt('el_GR''fr_FR''el_fr',
  789.                             sprintf_("%s to %s"),_("Greek"),_("French"))) .
  790.          translate_lang_opt('#',  '',  '''----------------'.
  791.          translate_lang_opt('en_US''',      'en_fr',
  792.                             sprintf_("%s to %s"),_("English"),_("French"))) .
  793.          translate_lang_opt('fr_FR''',      'fr_en',
  794.                             sprintf_("%s to %s"),_("French"),_("English"))) .
  795.          translate_lang_opt('en_US''de_DE''en_de',
  796.                             sprintf_("%s to %s"),_("English"),_("German"))) .
  797.          translate_lang_opt('de_DE''',      'de_en',
  798.                             sprintf_("%s to %s"),_("German"),_("English"))) .
  799.          translate_lang_opt('en_US''es_ES''en_es',
  800.                             sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  801.          translate_lang_opt('es_ES''',      'es_en',
  802.                             sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  803.          translate_lang_opt('en_US''it_IT''en_it',
  804.                             sprintf_("%s to %s"),_("English"),_("Italian"))) .
  805.          translate_lang_opt('it_IT''',      'it_en',
  806.                             sprintf_("%s to %s"),_("Italian"),_("English"))) .
  807.          translate_lang_opt('en_US''pt*',   'en_pt',
  808.                             sprintf_("%s to %s"),_("English"),_("Portuguese"))) .
  809.          translate_lang_opt('pt*',   '',      'pt_en',
  810.                             sprintf_("%s to %s"),_("Portuguese"),_("English"))) .
  811.          translate_lang_opt('fr_FR''',      'fr_de',
  812.                             sprintf_("%s to %s"),_("French"),_("German"))) .
  813.          translate_lang_opt('de_DE''',      'de_fr',
  814.                             sprintf_("%s to %s"),_("German"),_("French"))) .
  815.          translate_lang_opt('fr_FR''',      'fr_es',
  816.                             sprintf_("%s to %s"),_("French"),_("Spanish"))) .
  817.          translate_lang_opt('es_ES''',      'es_fr',
  818.                             sprintf_("%s to %s"),_("Spanish"),_("French"))) .
  819.          translate_lang_opt('fr_FR''nl_NL''fr_nl',
  820.                             sprintf_("%s to %s"),_("French"),_("Dutch"))) .
  821.          translate_lang_opt('nl_NL''',      'nl_fr',
  822.                             sprintf_("%s to %s"),_("Dutch"),_("French"))) ;
  823.     echo '</select>'.
  824.          'OTEnet: <input type="submit" value="' _("Translate"'" />';
  825.  
  826.     translate_table_end();
  827. }
  828.  
  829. /**
  830.  * promt translation engine
  831.  *
  832.  * @param string $message text that has to be translated
  833.  * @access private
  834.  */
  835. function translate_form_promt($message{
  836.     translate_new_form('http://www.online-translator.com/text.asp#tr_form','windows-1251');
  837.     echo '<input type="hidden" name="status" value="translate" />';
  838.     echo '<input type="hidden" name="source" value="'.$message.'" />';
  839.     echo _("Interface language")." : ";
  840.     echo "<select size=\"1\" name=\"lang\">\n";
  841.     echo '<option value="en">' _("English""</option>\n";
  842.     echo '<option value="ru">' _("Russian""</option>\n";
  843.     echo '<option value="de">' _("German""</option>\n";
  844.     echo '<option value="fr">' _("French""</option>\n";
  845.     echo '<option value="es">' _("Spanish""</option>\n";
  846.     echo "</select><br />\n";
  847.     echo _("Translation direction")." : ";
  848.     echo '<select size="1" id="direction" name="direction">';
  849.         echo translate_lang_opt('en_US''ru_RU''er',
  850.                                 sprintf_("%s to %s"),_("English"),_("Russian"))) .
  851.             translate_lang_opt('ru_RU''en_US''re',
  852.                                sprintf_("%s to %s"),_("Russian"),_("English"))) .
  853.             translate_lang_opt('de_DE''',      'gr',
  854.                                sprintf_("%s to %s"),_("German"),_("Russian"))) .
  855.             translate_lang_opt('ru_RU''de_DE''rg',
  856.                                sprintf_("%s to %s"),_("Russian"),_("German"))) .
  857.             translate_lang_opt('fr_FR',  '',     'fr',
  858.                                sprintf_("%s to %s"),_("French"),_("Russian"))) .
  859.             translate_lang_opt('ru_RU''fr_FR''rf',
  860.                                sprintf_("%s to %s"),_("Russian"),_("French"))) .
  861.             translate_lang_opt('es_ES''',      'sr',
  862.                                sprintf_("%s to %s"),_("Spanish"),_("Russian"))) .
  863.             translate_lang_opt('ru_RU''es_ES''rs',
  864.                                sprintf_("%s to %s"),_("Russian"),_("Spanish"))) .
  865.             translate_lang_opt('it_IT''',      'ir',
  866.                                sprintf_("%s to %s"),_("Italian"),_("Russian"))) .
  867.             translate_lang_opt('en_US''',      'eg',
  868.                                sprintf_("%s to %s"),_("English"),_("German"))) .
  869.             translate_lang_opt('de_DE''',      'ge',
  870.                                sprintf_("%s to %s"),_("German"),_("English"))) .
  871.             translate_lang_opt('en_US''',      'es',
  872.                                sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  873.             translate_lang_opt('es_ES''',  'se',
  874.                                sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  875.             translate_lang_opt('en_US''',  'ef',
  876.                                sprintf_("%s to %s"),_("English"),_("French"))) .
  877.             translate_lang_opt('fr_FR''',  'fe',
  878.                                sprintf_("%s to %s"),_("French"),_("English"))) .
  879.             translate_lang_opt('en_US''',  'ep',
  880.                                sprintf_("%s to %s"),_("English"),_("Portuguese")));
  881.     echo "</select><br />\n";
  882.     echo "<input type=\"hidden\" name=\"template\" value=\"General\" />\n";
  883.     echo _("Transliterate unknown words:"'<input type="checkbox" id="transliterate" name="transliterate" /><br />';
  884.     echo 'PROMT: <input type="submit" value="' _("Translate"'" />';
  885.  
  886.     translate_table_end();
  887. }
  888.  
  889. /**
  890.  * google translation engine
  891.  *
  892.  * @param string $message text that has to be translated
  893.  * @access private
  894.  */
  895. function translate_form_google($message{
  896.     translate_new_form('http://www.google.com/translate_t','utf-8');
  897.     echo '<input type="hidden" name="text" value="' $message '" />';
  898.     echo '<select name="langpair">'.
  899.          translate_lang_opt('en_US''de_DE''en|de',
  900.                             sprintf_("%s to %s"),_("English"),_("German"))) .
  901.          translate_lang_opt('en_US''es_ES',  'en|es',
  902.                             sprintf_("%s to %s"),_("English"),_("Spanish"))) .
  903.          translate_lang_opt('en_US''fr_FR''en|fr',
  904.                             sprintf_("%s to %s"),_("English"),_("French"))) .
  905.          translate_lang_opt('en_US''it_IT''en|it',
  906.                             sprintf_("%s to %s"),_("English"),_("Italian"))) .
  907.          translate_lang_opt('en_US''pt*',   'en|pt',
  908.                             sprintf_("%s to %s"),_("English"),_("Portuguese"))) .
  909.          translate_lang_opt('en_US''ar',    'en|ar',
  910.                             sprintf_("%s to %s"),_("English"),_("Arabic"))) .
  911.          translate_lang_opt('en_US''ja_JP''en|ja',
  912.                             sprintf_("%s to %s"),_("English"),_("Japanese"))) .
  913.          translate_lang_opt('en_US''ko_KR''en|ko',
  914.                             sprintf_("%s to %s"),_("English"),_("Korean"))) .
  915.          translate_lang_opt('en_US''zh_CN''en|zh-CN',
  916.                             sprintf_("%s to %s"),_("English"),_("Chinese (Simplified)"))) .
  917.          translate_lang_opt('de_DE''en_US''de|en',
  918.                             sprintf_("%s to %s"),_("German"),_("English"))) .
  919.          translate_lang_opt('de_DE''''de|fr',
  920.                             sprintf_("%s to %s"),_("German"),_("French"))) .
  921.          translate_lang_opt('es_ES''''es|en',
  922.                             sprintf_("%s to %s"),_("Spanish"),_("English"))) .
  923.          translate_lang_opt('fr_FR''''fr|en',
  924.                             sprintf_("%s to %s"),_("French"),_("English"))) .
  925.          translate_lang_opt('fr_FR''''fr|de',
  926.                             sprintf_("%s to %s"),_("French"),_("German"))) .
  927.          translate_lang_opt('it_IT''''it|en',
  928.                             sprintf_("%s to %s"),_("Italian"),_("English"))) .
  929.          translate_lang_opt('pt*',   '''pt|en',
  930.                             sprintf_("%s to %s"),_("Portuguese"),_("English"))).
  931.          translate_lang_opt('ar',    '''ar|en',
  932.                             sprintf_("%s to %s"),_("Arabic"),_("English"))).
  933.          translate_lang_opt('ja_JP''''ja|en',
  934.                             sprintf_("%s to %s"),_("Japanese"),_("English"))).
  935.          translate_lang_opt('ko_KR''''ko|en',
  936.                             sprintf_("%s to %s"),_("Korean"),_("English"))).
  937.          translate_lang_opt('zh_CN''''zh-CN|en',
  938.                             sprintf_("%s to %s"),_("Chinese (Simplified)"),_("English")));
  939.     echo '</select>'.
  940.         '<input type="hidden" name="hl" value="en" />' .
  941.         '<input type="hidden" name="ie" value="UTF8" />' .
  942.         '<input type="hidden" name="oe" value="UTF8" />' .
  943.         'Google: <input type="submit" value="' _("Translate"'" />';
  944.  
  945.     translate_table_end();
  946. }

Documentation generated on Sat, 07 Oct 2006 16:11:19 +0300 by phpDocumentor 1.3.0RC6