setup.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
  1. <?php
  2. /**
  3. * setup.php
  4. *
  5. * Copyright (c) 1999-2004 The SquirrelMail Project Team
  6. * Licensed under the GNU GPL. For full terms see the file COPYING.
  7. *
  8. * @version $Id$
  9. * @package plugins
  10. * @subpackage translate
  11. */
  12. /*
  13. Easy plugin that sends the body of the message to a new browser
  14. window using the specified translator.
  15. Translation of composed messages is not supported.
  16. */
  17. /**
  18. * Initialize the translation plugin
  19. * @return void
  20. * @access private
  21. */
  22. function squirrelmail_plugin_init_translate() {
  23. global $squirrelmail_plugin_hooks;
  24. $squirrelmail_plugin_hooks['read_body_bottom']['translate'] = 'translate_read_form';
  25. $squirrelmail_plugin_hooks['optpage_register_block']['translate'] = 'translate_optpage_register_block';
  26. $squirrelmail_plugin_hooks['loading_prefs']['translate'] = 'translate_pref';
  27. $squirrelmail_plugin_hooks['compose_button_row']['translate'] = 'translate_button';
  28. }
  29. /**
  30. * Shows translation box in message display window
  31. * @access private
  32. */
  33. function translate_read_form() {
  34. global $color, $translate_server;
  35. global $message, $translate_dir;
  36. global $translate_show_read;
  37. global $imapConnection, $wrap_at, $passed_id, $mailbox;
  38. if (!$translate_show_read) {
  39. return;
  40. }
  41. $translate_dir = 'to';
  42. $trans_ar = $message->findDisplayEntity(array(), array('text/plain'));
  43. $body = '';
  44. if ($trans_ar[0] != '') {
  45. for ($i = 0; $i < count($trans_ar); $i++) {
  46. $body .= formatBody($imapConnection, $message, $color, $wrap_at, $trans_ar[$i], $passed_id, $mailbox);
  47. }
  48. $hookResults = do_hook('message_body', $body);
  49. $body = $hookResults[1];
  50. } else {
  51. $body = 'Message can\'t be translated';
  52. }
  53. $new_body = $body;
  54. $pos = strpos($new_body,
  55. '">'. _("Download this as a file") . '</A></CENTER><BR></SMALL>');
  56. if (is_int($pos)) {
  57. $new_body = substr($new_body, 0, $pos);
  58. }
  59. $trans = get_html_translation_table(HTML_ENTITIES);
  60. $trans[' '] = '&nbsp;';
  61. $trans = array_flip($trans);
  62. $new_body = strtr($new_body, $trans);
  63. $new_body = urldecode($new_body);
  64. $new_body = strip_tags($new_body);
  65. /* I really don't like this next part ... */
  66. $new_body = str_replace('"', "''", $new_body);
  67. $new_body = strtr($new_body, "\n", ' ');
  68. $function = 'translate_form_' . $translate_server;
  69. $function($new_body);
  70. }
  71. /**
  72. * Closes table tags in translation box
  73. * @access private
  74. */
  75. function translate_table_end() {
  76. ?></td>
  77. </tr>
  78. </table>
  79. </td>
  80. </tr>
  81. </table>
  82. </form>
  83. <?php
  84. }
  85. /**
  86. * FIXME: Undocumented function.
  87. * @access private
  88. */
  89. function translate_button() {
  90. global $translate_show_send;
  91. if (! $translate_show_send) {
  92. return;
  93. }
  94. }
  95. /**
  96. * Adds translation option block
  97. * @access private
  98. */
  99. function translate_optpage_register_block() {
  100. global $optpage_blocks;
  101. $optpage_blocks[] = array(
  102. 'name' => _("Translation Options"),
  103. 'url' => '../plugins/translate/options.php',
  104. 'desc' => _("Which translator should be used when you get messages in a different language?"),
  105. 'js' => false
  106. );
  107. }
  108. /**
  109. * Gets user's translation preferences
  110. * @access private
  111. */
  112. function translate_pref() {
  113. global $username, $data_dir;
  114. global $translate_server, $translate_location;
  115. global $translate_show_send, $translate_show_read;
  116. global $translate_same_window;
  117. $translate_server = getPref($data_dir, $username, 'translate_server');
  118. if ($translate_server == '') {
  119. $translate_server = 'babelfish';
  120. }
  121. $translate_location = getPref($data_dir, $username, 'translate_location');
  122. if ($translate_location == '') {
  123. $translate_location = 'center';
  124. }
  125. $translate_show_send = getPref($data_dir, $username, 'translate_show_send');
  126. $translate_show_read = getPref($data_dir, $username, 'translate_show_read');
  127. $translate_same_window = getPref($data_dir, $username, 'translate_same_window');
  128. }
  129. /**
  130. * Tries to select default translation combination
  131. *
  132. * This function could be speed up.
  133. * It basically negates the process if a ! is found in the beginning and
  134. * matches a * at the end with 0 or more characters.
  135. *
  136. * @param string $test language code that has to be tested.
  137. * @return boolean true if language code matches user's language.
  138. * @access private
  139. */
  140. function translate_does_it_match_language($test) {
  141. global $squirrelmail_language;
  142. $true = 1;
  143. $false = 0;
  144. $index = 0;
  145. $smindex = 0;
  146. if (! $test || ! $squirrelmail_language) {
  147. return $false;
  148. }
  149. if ($test[$index] == '!') {
  150. $index ++;
  151. $true = 0;
  152. $false = 1;
  153. }
  154. if (($index == 0) && ($test == $squirrelmail_language)) {
  155. return $true;
  156. }
  157. while (isset($test[$index]) && $test[$index]) {
  158. if ($test[$index] == '*') {
  159. return $true;
  160. }
  161. if ($test[$index] != $squirrelmail_language[$smindex]) {
  162. return $false;
  163. }
  164. $index ++;
  165. $smindex ++;
  166. }
  167. return $false;
  168. }
  169. /**
  170. * Creates language option selection box.
  171. *
  172. * @access private
  173. */
  174. function translate_lang_opt($from, $to, $value, $text) {
  175. global $translate_dir;
  176. $ret = ' <option value="' . $value . '"';
  177. if (translate_does_it_match_language($to) && ($translate_dir == 'to')) {
  178. $ret .= ' SELECTED';
  179. }
  180. if (translate_does_it_match_language($from) && ($translate_dir == 'from')) {
  181. $ret .= ' SELECTED';
  182. }
  183. $ret .= '>' . $text . "</option>\n";
  184. return( $ret );
  185. }
  186. /**
  187. * Starts translation box
  188. *
  189. * @param string $action url that has to recieve message for translation
  190. * @access private
  191. */
  192. function translate_new_form($action) {
  193. global $translate_dir, $translate_new_window, $translate_location;
  194. global $color, $translate_same_window;
  195. echo '<form action="';
  196. if ($translate_dir == 'to') {
  197. echo $action;
  198. } else {
  199. echo 'translate.php';
  200. }
  201. echo '" method="post"';
  202. if (!$translate_same_window) {
  203. echo ' target="_blank"';
  204. }
  205. echo ">\n";
  206. ?><table align="<?php echo $translate_location ?>" cellpadding=3 cellspacing=0 border=0 bgcolor=<?php echo $color[10] ?>>
  207. <tr>
  208. <td>
  209. <table cellpadding=2 cellspacing=1 border=0 bgcolor="<?php echo $color[5] ?>">
  210. <tr>
  211. <td><?php
  212. }
  213. /**
  214. * Babelfish translation engine functions
  215. *
  216. * @param string $message text that has to be translated.
  217. * @access private
  218. */
  219. function translate_form_babelfish($message) {
  220. translate_new_form('http://babelfish.altavista.com/babelfish/tr');
  221. ?>
  222. <input type="hidden" name="doit" value="done">
  223. <input type="hidden" name="intl" value="1">
  224. <input type="hidden" name="tt" value="urltext">
  225. <input type="hidden" name="urltext" value="<?php echo $message; ?>">
  226. <select name="lp"><?php
  227. echo translate_lang_opt('en_US', 'zh_CN', 'en_zh',
  228. sprintf( _("%s to %s"),_("English"),_("Chinese"))) .
  229. translate_lang_opt('en_US', 'fr_FR', 'en_fr',
  230. sprintf( _("%s to %s"),_("English"),_("French"))) .
  231. translate_lang_opt('en_US', 'de_DE', 'en_de',
  232. sprintf( _("%s to %s"),_("English"),_("German"))) .
  233. translate_lang_opt('en_US', 'it_IT', 'en_it',
  234. sprintf( _("%s to %s"),_("English"),_("Italian"))) .
  235. translate_lang_opt('en_US', 'ja_JP', 'en_ja',
  236. sprintf( _("%s to %s"),_("English"),_("Japanese"))) .
  237. translate_lang_opt('en_US', 'ko_KR', 'en_ko',
  238. sprintf( _("%s to %s"),_("English"),_("Korean"))) .
  239. translate_lang_opt('en_US', 'pt*', 'en_pt',
  240. sprintf( _("%s to %s"),_("English"),_("Portuguese"))) .
  241. translate_lang_opt('en_US', 'es_ES', 'en_es',
  242. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  243. translate_lang_opt('zh_CN', '', 'zh_en',
  244. sprintf( _("%s to %s"),_("Chinese"),_("English"))) .
  245. translate_lang_opt('fr_FR', '', 'fr_en',
  246. sprintf( _("%s to %s"),_("French"),_("English"))) .
  247. translate_lang_opt('de_DE', 'en_US', 'de_en',
  248. sprintf( _("%s to %s"),_("German"),_("English"))) .
  249. translate_lang_opt('it_IT', '', 'it_en',
  250. sprintf( _("%s to %s"),_("Italian"),_("English"))) .
  251. translate_lang_opt('ja_JP', '', 'ja_en',
  252. sprintf( _("%s to %s"),_("Japanese"),_("English"))) .
  253. translate_lang_opt('ko_KR', '', 'ko_en',
  254. sprintf( _("%s to %s"),_("Korean"),_("English"))) .
  255. translate_lang_opt('pt*', '', 'pt_en',
  256. sprintf( _("%s to %s"),_("Portuguese"),_("English"))) .
  257. translate_lang_opt('es_ES', '', 'es_en',
  258. sprintf( _("%s to %s"),_("Spanish"),_("English"))) .
  259. translate_lang_opt('de_DE', '', 'de_fr',
  260. sprintf( _("%s to %s"),_("German"),_("French"))) .
  261. translate_lang_opt('fr_FR', '', 'fr_de',
  262. sprintf( _("%s to %s"),_("French"),_("German"))) .
  263. translate_lang_opt('ru_RU', '', 'ru_en',
  264. sprintf( _("%s to %s"),_("Russian"),_("English")));
  265. echo '</select>'.
  266. 'Babelfish: <input type="Submit" value="' . _("Translate") . '">';
  267. translate_table_end();
  268. }
  269. /**
  270. * go.com translation engine (disabled)
  271. *
  272. * @param string $message text that has to be translated
  273. * @access private
  274. */
  275. function translate_form_go($message) {
  276. translate_new_form('http://translator.go.com/cb/trans_entry');
  277. ?>
  278. <input type=hidden name=input_type value=text>
  279. <select name=lp><?php
  280. echo translate_lang_opt('en_US', 'es_ES', 'en_sp',
  281. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  282. translate_lang_opt('en_US', 'fr_FR', 'en_fr',
  283. sprintf( _("%s to %s"),_("English"),_("French"))) .
  284. translate_lang_opt('en_US', 'de_DE', 'en_ge',
  285. sprintf( _("%s to %s"),_("English"),_("German"))) .
  286. translate_lang_opt('en_US', 'it_IT', 'en_it',
  287. sprintf( _("%s to %s"),_("English"),_("Italian"))) .
  288. translate_lang_opt('en_US', 'pt*', 'en_pt',
  289. sprintf( _("%s to %s"),_("English"),_("Portuguese"))) .
  290. translate_lang_opt('es_ES', '', 'sp_en',
  291. sprintf( _("%s to %s"),_("Spanish"),_("English"))) .
  292. translate_lang_opt('fr_FR', '', 'fr_en',
  293. sprintf( _("%s to %s"),_("French"),_("English"))) .
  294. translate_lang_opt('de_DE', 'en_US', 'ge_en',
  295. sprintf( _("%s to %s"),_("German"),_("English"))) .
  296. translate_lang_opt('it_IT', '', 'it_en',
  297. sprintf( _("%s to %s"),_("Italian"),_("English"))) .
  298. translate_lang_opt('pt*', '', 'pt_en',
  299. sprintf( _("%s to %s"),_("Portuguese"),_("English")));
  300. echo '</select>'.
  301. "<input type=\"hidden\" name=\"text\" value=\"$message\">".
  302. 'Go.com: <input type="Submit" value="' . _("Translate") . '">';
  303. translate_table_end();
  304. }
  305. /**
  306. * intertran translation engine
  307. *
  308. * @param string $message text that has to be translated
  309. * @access private
  310. */
  311. function translate_form_intertran($message) {
  312. translate_new_form('http://www.tranexp.com:2000/InterTran');
  313. echo '<INPUT TYPE="hidden" NAME="topframe" VALUE="yes">'.
  314. '<INPUT TYPE="hidden" NAME="type" VALUE="text">'.
  315. "<input type=\"hidden\" name=\"text\" value=\"$message\">";
  316. $left = '<SELECT name="from">' .
  317. translate_lang_opt('pt_BR', '', 'pob', _("Brazilian Portuguese")).
  318. translate_lang_opt('bg_BG', '', 'bul', _("Bulgarian") . ' (CP 1251)').
  319. translate_lang_opt('hr_HR', '', 'cro', _("Croatian") . ' (CP 1250)').
  320. translate_lang_opt('cs_CZ', '', 'che', _("Czech") . ' (CP 1250)').
  321. translate_lang_opt('da_DK', '', 'dan', _("Danish")).
  322. translate_lang_opt('nl_NL', '', 'dut', _("Dutch")).
  323. translate_lang_opt('en_US', '!en', 'eng', _("English")).
  324. translate_lang_opt('tl_PH', '', 'tag', _("Filipino (Tagalog)")).
  325. translate_lang_opt('fi_FI', '', 'fin', _("Finnish")).
  326. translate_lang_opt('fr_FR', '', 'fre', _("French")).
  327. translate_lang_opt('de_DE', '', 'ger', _("German")).
  328. translate_lang_opt('el_GR', '', 'grk', _("Greek")).
  329. translate_lang_opt('hu_HU', '', 'hun', _("Hungarian") . ' (CP 1250)').
  330. translate_lang_opt('is_IS', '', 'ice', _("Icelandic")).
  331. translate_lang_opt('it_IT', '', 'ita', _("Italian")).
  332. translate_lang_opt('ja_JP', '', 'jpn', _("Japanese") . ' (Shift JIS)').
  333. translate_lang_opt('la', '', 'ltt', _("Latin")).
  334. translate_lang_opt('es*', '', 'spl', _("Latin American Spanish")).
  335. translate_lang_opt('no*', '', 'nor', _("Norwegian")).
  336. translate_lang_opt('pl_PL', '', 'pol', _("Polish") . ' (ISO 8859-2)').
  337. translate_lang_opt('pt*', '', 'poe', _("Portuguese")).
  338. translate_lang_opt('ro_RO', '', 'rom', _("Romanian") . ' (CP 1250)').
  339. translate_lang_opt('ru_RU', '', 'rus', _("Russian") . ' (CP 1251)').
  340. translate_lang_opt('sr_YU', '', 'sel', _("Serbian") . ' (CP 1250)').
  341. translate_lang_opt('sl_SI', '', 'slo', _("Slovenian") . ' (CP 1250)').
  342. translate_lang_opt('es_ES', '', 'spa', _("Spanish")).
  343. translate_lang_opt('sv_SE', '', 'swe', _("Swedish")).
  344. translate_lang_opt('tr_TR', '', 'tur', _("Turkish") . ' (CP 1254)').
  345. translate_lang_opt('cy_GB', '', 'wel', _("Welsh")).
  346. '</SELECT>';
  347. $right = '<SELECT name="to">'.
  348. translate_lang_opt('', 'pt_BR', 'pob', _("Brazilian Portuguese")).
  349. translate_lang_opt('', 'bg_BG', 'bul', _("Bulgarian") . ' (CP 1251)').
  350. translate_lang_opt('', 'hr_HR', 'cro', _("Croatian") . ' (CP 1250)').
  351. translate_lang_opt('', 'cs_CZ', 'che', _("Czech") . ' (CP 1250)').
  352. translate_lang_opt('', 'da_DK', 'dan', _("Danish")).
  353. translate_lang_opt('', 'nl_NL', 'dut', _("Dutch")).
  354. translate_lang_opt('!en', 'en_US', 'eng', _("English")).
  355. translate_lang_opt('', 'tl_PH', 'tag', _("Filipino (Tagalog)")).
  356. translate_lang_opt('', 'fi_FI', 'fin', _("Finnish")).
  357. translate_lang_opt('', 'fr_FR', 'fre', _("French")).
  358. translate_lang_opt('', 'de_DE', 'ger', _("German")).
  359. translate_lang_opt('', 'el_GR', 'grk', _("Greek")).
  360. translate_lang_opt('', 'hu_HU', 'hun', _("Hungarian") . ' (CP 1250)').
  361. translate_lang_opt('', 'is_IS', 'ice', _("Icelandic")).
  362. translate_lang_opt('', 'it_IT', 'ita', _("Italian")).
  363. translate_lang_opt('', 'ja_JP', 'jpn', _("Japanese") . ' (Shift JIS)').
  364. translate_lang_opt('', 'la', 'ltt', _("Latin")).
  365. translate_lang_opt('', 'es*', 'spl', _("Latin American Spanish")).
  366. translate_lang_opt('', 'no*', 'nor', _("Norwegian")).
  367. translate_lang_opt('', 'pl_PL', 'pol', _("Polish") . ' (ISO 8859-2)').
  368. translate_lang_opt('', 'pt_PT', 'poe', _("Portuguese")).
  369. translate_lang_opt('', 'ro_RO', 'rom', _("Romanian") . ' (CP 1250)').
  370. translate_lang_opt('', 'ru_RU', 'rus', _("Russian") . ' (CP 1251)').
  371. translate_lang_opt('', 'sr_YU', 'sel', _("Serbian") . ' (CP 1250)').
  372. translate_lang_opt('', 'sl_SI', 'slo', _("Slovenian") . ' (CP 1250)').
  373. translate_lang_opt('', 'es_ES', 'spa', _("Spanish")).
  374. translate_lang_opt('', 'sv_SE', 'swe', _("Swedish")).
  375. translate_lang_opt('', 'tr_TR', 'tur', _("Turkish") . ' (CP 1254)').
  376. translate_lang_opt('', 'cy_GB', 'wel', _("Welsh")).
  377. '</SELECT>';
  378. printf( _("%s to %s"), $left, $right );
  379. echo 'InterTran: <input type=submit value="' . _("Translate") . '">';
  380. translate_table_end();
  381. }
  382. /**
  383. * gpltrans translation engine
  384. *
  385. * @param string $message text that has to be translated
  386. * @access private
  387. */
  388. function translate_form_gpltrans($message) {
  389. translate_new_form('http://www.translator.cx/cgi-bin/gplTrans');
  390. echo '<select name="language">'.
  391. translate_lang_opt('', 'nl_NL', 'dutch_dict', _("Dutch")).
  392. translate_lang_opt('', 'fr_FR', 'french_dict', _("French")).
  393. translate_lang_opt('', 'de_DE', 'german_dict', _("German")).
  394. translate_lang_opt('', 'id_ID', 'indonesian_dict', _("Indonesian")).
  395. translate_lang_opt('', 'it_IT', 'italian_dict', _("Italian")).
  396. translate_lang_opt('', 'la', 'latin_dict', _("Latin")).
  397. translate_lang_opt('', 'pt*', 'portuguese_dict', _("Portuguese")).
  398. translate_lang_opt('', 'es_ES', 'spanish_dict', _("Spanish")).
  399. '</select>';
  400. echo '<select name="toenglish">';
  401. echo '<option value="yes" >'. _("to English") . '</option>';
  402. echo '<option value="no" selected>' . _("from English") . '</option></select>';
  403. echo "<input type=hidden name=text value=\"$message\">".
  404. 'GPLTrans: <input type="submit" value="' . _("Translate") . '">';
  405. translate_table_end();
  406. }
  407. /**
  408. * reference.com (dictionary) translation engine
  409. *
  410. * @param string $message text that has to be translated
  411. * @access private
  412. */
  413. function translate_form_dictionary($message) {
  414. translate_new_form('http://dictionary.reference.com/translate/text.html');
  415. list($usec, $sec) = explode(" ",microtime());
  416. $time = $sec . (float)$usec*100000000;
  417. echo "<input type=hidden name=text value=\"$message\" />".
  418. "<input type=hidden name=r value=\"$time\" />".
  419. '<SELECT NAME="lp">'.
  420. translate_lang_opt('en_US', 'zh_CN', 'en_zh',
  421. sprintf( _("%s to %s"),_("English"),_("Simplified Chinese"))) .
  422. translate_lang_opt('en_US', 'zh_TW', 'en_zt',
  423. sprintf( _("%s to %s"),_("English"),_("Traditional Chinese"))) .
  424. translate_lang_opt('en_US', 'nl_NL', 'en_nl',
  425. sprintf( _("%s to %s"),_("English"),_("Dutch"))) .
  426. translate_lang_opt('en_US', 'fr_FR', 'en_fr',
  427. sprintf( _("%s to %s"),_("English"),_("French"))) .
  428. translate_lang_opt('en_US', 'de_DE', 'en_ge',
  429. sprintf( _("%s to %s"),_("English"),_("German"))) .
  430. translate_lang_opt('en_US', 'el_GR', 'en_el',
  431. sprintf( _("%s to %s"),_("English"),_("Greek"))) .
  432. translate_lang_opt('en_US', 'it_IT', 'en_it',
  433. sprintf( _("%s to %s"),_("English"),_("Italian"))) .
  434. translate_lang_opt('en_US', 'ja_JP', 'en_ja',
  435. sprintf( _("%s to %s"),_("English"),_("Japanese"))) .
  436. translate_lang_opt('en_US', 'ko_KR', 'en_ko',
  437. sprintf( _("%s to %s"),_("English"),_("Korean"))) .
  438. translate_lang_opt('en_US', 'pt*', 'en_pt',
  439. sprintf( _("%s to %s"),_("English"),_("Portuguese"))) .
  440. translate_lang_opt('en_US', 'ru_RU', 'en_ru',
  441. sprintf( _("%s to %s"),_("English"),_("Russian"))) .
  442. translate_lang_opt('en_US', 'es_ES', 'en_es',
  443. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  444. translate_lang_opt('zh_CN', '', 'zh_en',
  445. sprintf( _("%s to %s"),_("Simplified Chinese"),_("English"))) .
  446. translate_lang_opt('zh_TW', '', 'zt_en',
  447. sprintf( _("%s to %s"),_("Traditional Chinese"),_("English"))) .
  448. translate_lang_opt('nl_NL', '', 'nl_en',
  449. sprintf( _("%s to %s"),_("Dutch"),_("English"))) .
  450. translate_lang_opt('fr_FR', '', 'fr_en',
  451. sprintf( _("%s to %s"),_("French"),_("English"))) .
  452. translate_lang_opt('de_DE', 'en_US', 'ge_en',
  453. sprintf( _("%s to %s"),_("German"),_("English"))) .
  454. translate_lang_opt('el_GR', '', 'el_en',
  455. sprintf( _("%s to %s"),_("Greek"),_("English"))) .
  456. translate_lang_opt('it_IT', '', 'it_en',
  457. sprintf( _("%s to %s"),_("Italian"),_("English"))) .
  458. translate_lang_opt('ja_JP', '', 'ja_en',
  459. sprintf( _("%s to %s"),_("Japanese"),_("English"))) .
  460. translate_lang_opt('ko_KR', '', 'ko_en',
  461. sprintf( _("%s to %s"),_("Korean"),_("English"))) .
  462. translate_lang_opt('pt*', '', 'pt_en',
  463. sprintf( _("%s to %s"),_("Portuguese"),_("English"))) .
  464. translate_lang_opt('ru_RU', '', 'ru_en',
  465. sprintf( _("%s to %s"),_("Russian"),_("English"))) .
  466. translate_lang_opt('es_ES', '', 'es_en',
  467. sprintf( _("%s to %s"),_("Spanish"),_("English"))) .
  468. '</SELECT>'.
  469. 'Dictionary.com: <INPUT TYPE="submit" VALUE="'._("Translate").'">';
  470. translate_table_end();
  471. }
  472. /**
  473. * otenet translation engine
  474. *
  475. * @param string $message text that has to be translated
  476. * @access private
  477. */
  478. function translate_form_otenet($message) {
  479. translate_new_form('http://systran.otenet.gr/cgi-bin/systran.cgi');
  480. ?>
  481. <input type="hidden" name="doit" value="done">
  482. <INPUT NAME="partner" VALUE="OTEnet-en" type="hidden">
  483. <input type="hidden" name="urltext" value="<?php echo $message; ?>">
  484. <select name="lp" size="1"><?php
  485. echo translate_lang_opt('en_US', 'el_GR', 'en_el',
  486. sprintf( _("%s to %s"),_("English"),_("Greek"))) .
  487. translate_lang_opt('el_GR', 'en_US', 'el_en',
  488. sprintf( _("%s to %s"),_("Greek"),_("English"))) .
  489. translate_lang_opt('fr_FR', '', 'fr_el',
  490. sprintf( _("%s to %s"),_("French"),_("Greek"))) .
  491. translate_lang_opt('el_GR', 'fr_FR', 'el_fr',
  492. sprintf( _("%s to %s"),_("Greek"),_("French"))) .
  493. translate_lang_opt('#', '', '', "----------------") .
  494. translate_lang_opt('en_US', '', 'en_fr',
  495. sprintf( _("%s to %s"),_("English"),_("French"))) .
  496. translate_lang_opt('fr_FR', '', 'fr_en',
  497. sprintf( _("%s to %s"),_("French"),_("English"))) .
  498. translate_lang_opt('en_US', 'de_DE', 'en_de',
  499. sprintf( _("%s to %s"),_("English"),_("German"))) .
  500. translate_lang_opt('de_DE', '', 'de_en',
  501. sprintf( _("%s to %s"),_("German"),_("English"))) .
  502. translate_lang_opt('en_US', 'es_ES', 'en_es',
  503. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  504. translate_lang_opt('es_ES', '', 'es_en',
  505. sprintf( _("%s to %s"),_("Spanish"),_("English"))) .
  506. translate_lang_opt('en_US', 'it_IT', 'en_it',
  507. sprintf( _("%s to %s"),_("English"),_("Italian"))) .
  508. translate_lang_opt('it_IT', '', 'it_en',
  509. sprintf( _("%s to %s"),_("Italian"),_("English"))) .
  510. translate_lang_opt('en_US', 'pt*', 'en_pt',
  511. sprintf( _("%s to %s"),_("English"),_("Portuguese"))) .
  512. translate_lang_opt('pt*', '', 'pt_en',
  513. sprintf( _("%s to %s"),_("Portuguese"),_("English"))) .
  514. translate_lang_opt('fr_FR', '', 'fr_de',
  515. sprintf( _("%s to %s"),_("French"),_("German"))) .
  516. translate_lang_opt('de_DE', '', 'de_fr',
  517. sprintf( _("%s to %s"),_("German"),_("French"))) .
  518. translate_lang_opt('fr_FR', '', 'fr_es',
  519. sprintf( _("%s to %s"),_("French"),_("Spanish"))) .
  520. translate_lang_opt('es_ES', '', 'es_fr',
  521. sprintf( _("%s to %s"),_("Spanish"),_("French"))) .
  522. translate_lang_opt('fr_FR', 'nl_NL', 'fr_nl',
  523. sprintf( _("%s to %s"),_("French"),_("Dutch"))) .
  524. translate_lang_opt('nl_NL', '', 'nl_fr',
  525. sprintf( _("%s to %s"),_("Dutch"),_("French"))) ;
  526. echo '</select>'.
  527. 'OTEnet: <input type="Submit" value="' . _("Translate") . '">';
  528. translate_table_end();
  529. }
  530. /**
  531. * promt translation engine
  532. *
  533. * @param string $message text that has to be translated
  534. * @access private
  535. */
  536. function translate_form_promt($message) {
  537. translate_new_form('http://www.online-translator.com/text.asp#tr_form');
  538. echo '<input type="hidden" name="status" value="translate">';
  539. echo "<input type=\"hidden\" name=\"source\" value=\"$message\">";
  540. echo _("Interface language")." : ";
  541. echo "<select size=\"1\" name=\"lang\">\n";
  542. echo "<option value=\"en\">" . _("English") . "</option>\n";
  543. echo "<option value=\"ru\">" . _("Russian") . "</option>\n";
  544. echo "<option value=\"de\">" . _("German") . "</option>\n";
  545. echo "<option value=\"fr\">" . _("French") . "</option>\n";
  546. echo "<option value=\"es\">" . _("Spanish") . "</option>\n";
  547. echo "</select><br>\n";
  548. echo _("Translation direction")." : ";
  549. echo '<select size="1" id="direction" name="direction">';
  550. echo translate_lang_opt('en_US', 'ru_RU', 'er',
  551. sprintf( _("%s to %s"),_("English"),_("Russian"))) .
  552. translate_lang_opt('ru_RU', 'en_US', 're',
  553. sprintf( _("%s to %s"),_("Russian"),_("English"))) .
  554. translate_lang_opt('de_DE', '', 'gr',
  555. sprintf( _("%s to %s"),_("German"),_("Russian"))) .
  556. translate_lang_opt('ru_RU', 'de_DE', 'rg',
  557. sprintf( _("%s to %s"),_("Russian"),_("German"))) .
  558. translate_lang_opt('fr_FR', '', 'fr',
  559. sprintf( _("%s to %s"),_("French"),_("Russian"))) .
  560. translate_lang_opt('ru_RU', 'fr_FR', 'rf',
  561. sprintf( _("%s to %s"),_("Russian"),_("French"))) .
  562. translate_lang_opt('es_ES', '', 'sr',
  563. sprintf( _("%s to %s"),_("Spanish"),_("Russian"))) .
  564. translate_lang_opt('ru_RU', 'es_ES', 'rs',
  565. sprintf( _("%s to %s"),_("Russian"),_("Spanish"))) .
  566. translate_lang_opt('it_IT', '', 'ir',
  567. sprintf( _("%s to %s"),_("Italian"),_("Russian"))) .
  568. translate_lang_opt('en_US', '', 'eg',
  569. sprintf( _("%s to %s"),_("English"),_("German"))) .
  570. translate_lang_opt('de_DE', '', 'ge',
  571. sprintf( _("%s to %s"),_("German"),_("English"))) .
  572. translate_lang_opt('en_US', '', 'es',
  573. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  574. translate_lang_opt('es_ES', '', 'se',
  575. sprintf( _("%s to %s"),_("Spanish"),_("English"))) ;
  576. echo "</select><br>\n";
  577. echo "<input type=\"hidden\" name=\"template\" value=\"General\">\n";
  578. echo 'PROMT: <input type="submit" value="' . _("Translate") . '">';
  579. translate_table_end();
  580. }
  581. /**
  582. * google translation engine
  583. *
  584. * @param string $message text that has to be translated
  585. * @access private
  586. */
  587. function translate_form_google($message) {
  588. translate_new_form('http://www.google.com/translate_t');
  589. ?>
  590. <input type="hidden" name="ie" value="Unknown">
  591. <input type="hidden" name="oe" value="ASCII">
  592. <input type="hidden" name="hl" value="en">
  593. <input type="hidden" name="text" value="<?php echo $message; ?>">
  594. <select name="langpair"><?php
  595. echo translate_lang_opt('en_US', 'de_DE', 'en|de',
  596. sprintf( _("%s to %s"),_("English"),_("German"))) .
  597. translate_lang_opt('en_US', 'es_ES', 'en|es',
  598. sprintf( _("%s to %s"),_("English"),_("Spanish"))) .
  599. translate_lang_opt('en_US', 'fr_FR', 'en|fr',
  600. sprintf( _("%s to %s"),_("English"),_("French"))) .
  601. translate_lang_opt('en_US', 'it_IT', 'en|it',
  602. sprintf( _("%s to %s"),_("English"),_("Italian"))) .
  603. translate_lang_opt('en_US', 'pt*', 'en|pt',
  604. sprintf( _("%s to %s"),_("English"),_("Portuguese"))) .
  605. translate_lang_opt('de_DE', 'en_US', 'de|en',
  606. sprintf( _("%s to %s"),_("German"),_("English"))) .
  607. translate_lang_opt('de_DE', '', 'de|fr',
  608. sprintf( _("%s to %s"),_("German"),_("French"))) .
  609. translate_lang_opt('es_ES', '', 'es|en',
  610. sprintf( _("%s to %s"),_("Spanish"),_("English"))) .
  611. translate_lang_opt('fr_FR', '', 'fr|en',
  612. sprintf( _("%s to %s"),_("French"),_("English"))) .
  613. translate_lang_opt('fr_FR', '', 'fr|de',
  614. sprintf( _("%s to %s"),_("French"),_("German"))) .
  615. translate_lang_opt('it_IT', '', 'it|en',
  616. sprintf( _("%s to %s"),_("Italian"),_("English"))) .
  617. translate_lang_opt('pt*', '', 'pt|en',
  618. sprintf( _("%s to %s"),_("Portuguese"),_("English")));
  619. echo '</select>'.
  620. 'Google: <input type="Submit" value="' . _("Translate") . '">';
  621. translate_table_end();
  622. }
  623. ?>