Source for file functions.php

Documentation is available at functions.php

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

Documentation generated on Mon, 13 Jan 2020 04:22:39 +0100 by phpDocumentor 1.4.3