setup.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489
  1. <?php
  2. /**
  3. * setup.php
  4. *
  5. * Copyright (c) 1999-2002 The SquirrelMail Project Team
  6. * Licensed under the GNU GPL. For full terms see the file COPYING.
  7. *
  8. * $Id$
  9. */
  10. /* Easy plugin that sends the body of the message to a new browser
  11. window using the specified translator. It can also translate your
  12. outgoing message if you send it to someone in a different country.
  13. Languages from i18n, incorporated in the auto-language selection:
  14. en - English
  15. no - Norwegian (Bokm&aring;l)
  16. no_NO_ny - Norwegian (Nynorsk)
  17. de - Deutsch
  18. ru - Russian KOI8-R
  19. pl - Polish
  20. sv - Swedish
  21. nl - Dutch
  22. pt_BR - Portuguese (Brazil)
  23. fr - French
  24. it - Italian
  25. cs - Czech
  26. es - Spanish
  27. ko - Korean
  28. */
  29. /* Initialize the translation plugin */
  30. function squirrelmail_plugin_init_translate() {
  31. global $squirrelmail_plugin_hooks;
  32. $squirrelmail_plugin_hooks['read_body_bottom']['translate'] = 'translate_read_form';
  33. $squirrelmail_plugin_hooks['optpage_register_block']['translate'] = 'translate_optpage_register_block';
  34. $squirrelmail_plugin_hooks['loading_prefs']['translate'] = 'translate_pref';
  35. $squirrelmail_plugin_hooks['compose_button_row']['translate'] = 'translate_button';
  36. }
  37. /* Show the translation for a message you're reading */
  38. function translate_read_form() {
  39. global $color, $translate_server;
  40. global $body, $translate_dir;
  41. global $translate_show_read;
  42. if (!$translate_show_read) {
  43. return;
  44. }
  45. $translate_dir = 'to';
  46. $new_body = $body;
  47. $pos = strpos($new_body,
  48. '">Download this as a file</A></CENTER><BR></SMALL>');
  49. if (is_int($pos)) {
  50. $new_body = substr($new_body, 0, $pos);
  51. }
  52. $trans = get_html_translation_table('HTMLENTITIES');
  53. $trans[' '] = '&nbsp;';
  54. $trans = array_flip($trans);
  55. $new_body = strtr($new_body, $trans);
  56. $new_body = urldecode($new_body);
  57. $new_body = strip_tags($new_body);
  58. /* I really don't like this next part ... */
  59. $new_body = str_replace('"', "''", $new_body);
  60. $new_body = strtr($new_body, "\n", ' ');
  61. $function = 'translate_form_' . $translate_server;
  62. $function($new_body);
  63. }
  64. function translate_table_end() {
  65. ?></td>
  66. </tr>
  67. </table>
  68. </td>
  69. </tr>
  70. </table>
  71. </form>
  72. <?php
  73. }
  74. function translate_button() {
  75. global $translate_show_send;
  76. if (! $translate_show_send) {
  77. return;
  78. }
  79. }
  80. function translate_optpage_register_block() {
  81. global $optpage_blocks;
  82. $optpage_blocks[] = array(
  83. 'name' => _("Translation Options"),
  84. 'url' => '../plugins/translate/options.php',
  85. 'desc' => _("Which translator should be used when you get messages in a different language?"),
  86. 'js' => false
  87. );
  88. }
  89. function translate_pref() {
  90. global $username, $data_dir;
  91. global $translate_server, $translate_location;
  92. global $translate_show_send, $translate_show_read;
  93. global $translate_same_window;
  94. $translate_server = getPref($data_dir, $username, 'translate_server');
  95. if ($translate_server == '') {
  96. $translate_server = 'babelfish';
  97. }
  98. $translate_location = getPref($data_dir, $username, 'translate_location');
  99. if ($translate_location == '') {
  100. $translate_location = 'center';
  101. }
  102. $translate_show_send = getPref($data_dir, $username, 'translate_show_send');
  103. $translate_show_read = getPref($data_dir, $username, 'translate_show_read');
  104. $translate_same_window = getPref($data_dir, $username, 'translate_same_window');
  105. }
  106. /**
  107. * This function could be sped up.
  108. * It basically negates the process if a ! is found in the beginning and
  109. * matches a * at the end with 0 or more characters.
  110. */
  111. function translate_does_it_match_language($test) {
  112. global $squirrelmail_language;
  113. $true = 1;
  114. $false = 0;
  115. $index = 0;
  116. $smindex = 0;
  117. if (! $test || ! $squirrelmail_language) {
  118. return $false;
  119. }
  120. if ($test[$index] == '!') {
  121. $index ++;
  122. $true = 0;
  123. $false = 1;
  124. }
  125. if (($index == 0) && ($test == $squirrelmail_language)) {
  126. return $true;
  127. }
  128. while ($test[$index]) {
  129. if ($test[$index] == '*') {
  130. return $true;
  131. }
  132. if ($test[$index] != $squirrelmail_language[$smindex]) {
  133. return $false;
  134. }
  135. $index ++;
  136. $smindex ++;
  137. }
  138. return $false;
  139. }
  140. function translate_lang_opt($from, $to, $value, $text) {
  141. global $translate_dir;
  142. $ret = ' <option value="' . $value . '"';
  143. if (translate_does_it_match_language($to) && ($translate_dir == 'to')) {
  144. $ret .= ' SELECTED';
  145. }
  146. if (translate_does_it_match_language($from) && ($translate_dir == 'from')) {
  147. $ret .= ' SELECTED';
  148. }
  149. $ret .= '>' . $text . "</option>\n";
  150. return( $ret );
  151. }
  152. function translate_new_form($action) {
  153. global $translate_dir, $translate_new_window, $translate_location;
  154. global $color, $translate_same_window;
  155. echo '<form action="';
  156. if ($translate_dir == 'to') {
  157. echo $action;
  158. } else {
  159. echo 'translate.php';
  160. }
  161. echo '" method="post"';
  162. if (!$translate_same_window) {
  163. echo ' target="_blank"';
  164. }
  165. echo ">\n";
  166. ?><table align="<?php echo $translate_location ?>" cellpadding=3 cellspacing=0 border=0 bgcolor=<?php echo $color[10] ?>>
  167. <tr>
  168. <td>
  169. <table cellpadding=2 cellspacing=1 border=0 bgcolor="<?php echo $color[5] ?>">
  170. <tr>
  171. <td><?php
  172. }
  173. function translate_form_babelfish($message) {
  174. translate_new_form('http://babelfish.altavista.com/translate.dyn');
  175. ?>
  176. <input type="hidden" name="doit" value="done">
  177. <input type="hidden" name="BabelFishFrontPage" value="yes">
  178. <input type="hidden" name="bblType" value="urltext">
  179. <input type="hidden" name="urltext" value="<?php echo $message; ?>">
  180. <select name="lp"><?php
  181. echo translate_lang_opt('en', 'fr', 'en_fr',
  182. sprintf( _("%s to %s"),
  183. _("English"),
  184. _("French"))) .
  185. translate_lang_opt('', 'de', 'en_de',
  186. sprintf( _("%s to %s"),
  187. _("English"),
  188. _("German"))) .
  189. translate_lang_opt('', 'it', 'en_it',
  190. sprintf( _("%s to %s"),
  191. _("English"),
  192. _("Italian"))) .
  193. translate_lang_opt('', 'pt*', 'en_pt',
  194. sprintf( _("%s to %s"),
  195. _("English"),
  196. _("Portuguese"))) .
  197. translate_lang_opt('', 'es', 'en_es',
  198. sprintf( _("%s to %s"),
  199. _("English"),
  200. _("Spanish"))) .
  201. translate_lang_opt('fr', 'en', 'fr_en',
  202. sprintf( _("%s to %s"),
  203. _("French"),
  204. _("English"))) .
  205. translate_lang_opt('de', '', 'de_en',
  206. sprintf( _("%s to %s"),
  207. _("German"),
  208. _("English"))) .
  209. translate_lang_opt('it', '', 'it_en',
  210. sprintf( _("%s to %s"),
  211. _("Italian"),
  212. _("English"))) .
  213. translate_lang_opt('pt*', '', 'pt_en',
  214. sprintf( _("%s to %s"),
  215. _("Portuguese"),
  216. _("English"))) .
  217. translate_lang_opt('es', '', 'es_en',
  218. sprintf( _("%s to %s"),
  219. _("Spanish"),
  220. _("English"))) .
  221. translate_lang_opt('', '', 'de_fr',
  222. sprintf( _("%s to %s"),
  223. _("German"),
  224. _("French"))) .
  225. translate_lang_opt('', '', 'fr_de',
  226. sprintf( _("%s to %s"),
  227. _("French"),
  228. _("German"))) .
  229. translate_lang_opt('ru', '', 'ru_en',
  230. sprintf( _("%s to %s"),
  231. _("Russian"),
  232. _("English")));
  233. echo '</select>'.
  234. 'Babelfish: <input type="Submit" value="' . _("Translate") . '">';
  235. translate_table_end();
  236. }
  237. function translate_form_go($message) {
  238. translate_new_form('http://translator.go.com/cb/trans_entry');
  239. ?>
  240. <input type=hidden name=input_type value=text>
  241. <select name=lp><?php
  242. echo translate_lang_opt('en', 'es', 'en_sp',
  243. sprintf( _("%s to %s"),
  244. _("English"),
  245. _("Spanish"))) .
  246. translate_lang_opt('', 'fr', 'en_fr',
  247. sprintf( _("%s to %s"),
  248. _("English"),
  249. _("French"))) .
  250. translate_lang_opt('', 'de', 'en_ge',
  251. sprintf( _("%s to %s"),
  252. _("English"),
  253. _("German"))) .
  254. translate_lang_opt('', 'it', 'en_it',
  255. sprintf( _("%s to %s"),
  256. _("English"),
  257. _("Italian"))) .
  258. translate_lang_opt('', 'pt', 'en_pt',
  259. sprintf( _("%s to %s"),
  260. _("English"),
  261. _("Portuguese"))) .
  262. translate_lang_opt('es', 'en', 'sp_en',
  263. sprintf( _("%s to %s"),
  264. _("Spanish"),
  265. _("English"))) .
  266. translate_lang_opt('fr', '', 'fr_en',
  267. sprintf( _("%s to %s"),
  268. _("French"),
  269. _("English"))) .
  270. translate_lang_opt('de', '', 'ge_en',
  271. sprintf( _("%s to %s"),
  272. _("German"),
  273. _("English"))) .
  274. translate_lang_opt('it', '', 'it_en',
  275. sprintf( _("%s to %s"),
  276. _("Italian"),
  277. _("English"))) .
  278. translate_lang_opt('pt', '', 'pt_en',
  279. sprintf( _("%s to %s"),
  280. _("Portuguese"),
  281. _("English")));
  282. echo '</select>'.
  283. "<input type=\"hidden\" name=\"text\" value=\"$message\">".
  284. 'Go.com: <input type="Submit" value="' . _("Translate") . '">';
  285. translate_table_end();
  286. }
  287. function translate_form_intertran($message) {
  288. translate_new_form('http://www.tranexp.com:2000/InterTran');
  289. echo '<INPUT TYPE="hidden" NAME="topframe" VALUE="yes">'.
  290. '<INPUT TYPE="hidden" NAME="type" VALUE="text">'.
  291. "<input type=\"hidden\" name=\"text\" value=\"$message\">";
  292. $left = '<SELECT name="from">' .
  293. translate_lang_opt('pt_BR', '', 'pob', _("Brazilian Portuguese")).
  294. translate_lang_opt('', '', 'bul', _("Bulgarian") . ' (CP 1251)').
  295. translate_lang_opt('', '', 'cro', _("Croatian") . ' (CP 1250)').
  296. translate_lang_opt('cs', '', 'che', _("Czech") . ' (CP 1250)').
  297. translate_lang_opt('', '', 'dan', _("Danish")).
  298. translate_lang_opt('nl', '', 'dut', _("Dutch")).
  299. translate_lang_opt('en', '!en', 'eng', _("English")).
  300. translate_lang_opt('', '', 'spe', _("European Spanish")).
  301. translate_lang_opt('', '', 'fin', _("Finnish")).
  302. translate_lang_opt('fr', '', 'fre', _("French")).
  303. translate_lang_opt('de', '', 'ger', _("German")).
  304. translate_lang_opt('', '', 'grk', _("Greek")).
  305. translate_lang_opt('', '', 'hun', _("Hungarian") . ' (CP 1250)').
  306. translate_lang_opt('', '', 'ice', _("Icelandic")).
  307. translate_lang_opt('it', '', 'ita', _("Italian")).
  308. translate_lang_opt('', '', 'jpn', _("Japanese") . ' (Shift JIS)').
  309. translate_lang_opt('', '', 'spl', _("Latin American Spanish")).
  310. translate_lang_opt('no*', '', 'nor', _("Norwegian")).
  311. translate_lang_opt('pl', '', 'pol', _("Polish") . ' (ISO 8859-2)').
  312. translate_lang_opt('', '', 'poe', _("Portuguese")).
  313. translate_lang_opt('', '', 'rom', _("Romanian") . ' (CP 1250)').
  314. translate_lang_opt('ru', '', 'rus', _("Russian") . ' (CP 1251)').
  315. translate_lang_opt('', '', 'sel', _("Serbian") . ' (CP 1250)').
  316. translate_lang_opt('', '', 'slo', _("Slovenian") . ' (CP 1250)').
  317. translate_lang_opt('es', '', 'spa', _("Spanish")).
  318. translate_lang_opt('sv', '', 'swe', _("Swedish")).
  319. translate_lang_opt('', '', 'wel', _("Welsh")).
  320. '</SELECT>';
  321. $right = '<SELECT name="to">'.
  322. translate_lang_opt('', 'pt_BR', 'pob', _("Brazilian Portuguese")).
  323. translate_lang_opt('', '', 'bul', _("Bulgarian") . ' (CP 1251)').
  324. translate_lang_opt('', '', 'cro', _("Croatian") . ' (CP 1250)').
  325. translate_lang_opt('', 'cs', 'che', _("Czech") . ' (CP 1250)').
  326. translate_lang_opt('', '', 'dan', _("Danish")).
  327. translate_lang_opt('', 'nl', 'dut', _("Dutch")).
  328. translate_lang_opt('!en', 'en', 'eng', _("English")).
  329. translate_lang_opt('', '', 'spe', _("European Spanish")).
  330. translate_lang_opt('', '', 'fin', _("Finnish")).
  331. translate_lang_opt('', 'fr', 'fre', _("French")).
  332. translate_lang_opt('', 'de', 'ger', _("German")).
  333. translate_lang_opt('', '', 'grk', _("Greek")).
  334. translate_lang_opt('', '', 'hun', _("Hungarian") . ' (CP 1250)').
  335. translate_lang_opt('', '', 'ice', _("Icelandic")).
  336. translate_lang_opt('', 'it', 'ita', _("Italian")).
  337. translate_lang_opt('', '', 'jpn', _("Japanese") . ' (Shift JIS)').
  338. translate_lang_opt('', '', 'spl', _("Latin American Spanish")).
  339. translate_lang_opt('', 'no*', 'nor', _("Norwegian")).
  340. translate_lang_opt('', 'pl', 'pol', _("Polish") . ' (ISO 8859-2)').
  341. translate_lang_opt('', '', 'poe', _("Portuguese")).
  342. translate_lang_opt('', '', 'rom', _("Romanian") . ' (CP 1250)').
  343. translate_lang_opt('', 'ru', 'rus', _("Russian") . ' (CP 1251)').
  344. translate_lang_opt('', '', 'sel', _("Serbian") . ' (CP 1250)').
  345. translate_lang_opt('', '', 'slo', _("Slovenian") . ' (CP 1250)').
  346. translate_lang_opt('', 'es', 'spa', _("Spanish")).
  347. translate_lang_opt('', 'sv', 'swe', _("Swedish")).
  348. translate_lang_opt('', '', 'wel', _("Welsh")).
  349. '</SELECT>';
  350. printf( _("%s to %s"), $left, $right );
  351. echo 'InterTran: <input type=submit value="' . _("Translate") . '">';
  352. translate_table_end();
  353. }
  354. function translate_form_gpltrans($message) {
  355. translate_new_form('http://www.translator.cx/cgi-bin/gplTrans');
  356. echo '<select name="toenglish">';
  357. translate_lang_opt('en', '!en', 'no', 'From English');
  358. translate_lang_opt('!en', 'en', 'yes', 'To English');
  359. echo '</select><select name="language">'.
  360. translate_lang_opt('nl', 'nl', 'dutch_dict', _("Dutch")).
  361. translate_lang_opt('fr', 'fr', 'french_dict', _("French")).
  362. translate_lang_opt('de', 'de', 'german_dict', _("German")).
  363. translate_lang_opt('', '', 'indonesian_dict', _("Indonesian")).
  364. translate_lang_opt('it', 'it', 'italian_dict', _("Italian")).
  365. translate_lang_opt('', '', 'latin_dict', _("Latin")).
  366. translate_lang_opt('pt', 'pt', 'portuguese_dict', _("Portuguese")).
  367. translate_lang_opt('es', 'es', 'spanish_dict', _("Spanish")).
  368. '</select>'.
  369. "<input type=hidden name=text value=\"$message\">".
  370. 'GPLTrans: <input type="submit" value="' . _("Translate") . '">';
  371. translate_table_end();
  372. }
  373. function translate_form_dictionary($message) {
  374. translate_new_form('http://translate.dictionary.com:8800/systran/cgi');
  375. echo '<INPUT TYPE=HIDDEN NAME=partner VALUE=LEXICO>'.
  376. "<input type=hidden name=urltext value=\"$message\">".
  377. '<SELECT NAME="lp">'.
  378. translate_lang_opt('en', 'fr', 'en_fr',
  379. sprintf( _("%s to %s"),
  380. _("English"),
  381. _("French"))) .
  382. translate_lang_opt('', 'de', 'en_de',
  383. sprintf( _("%s to %s"),
  384. _("English"),
  385. _("German"))) .
  386. translate_lang_opt('', 'it', 'en_it',
  387. sprintf( _("%s to %s"),
  388. _("English"),
  389. _("Italian"))) .
  390. translate_lang_opt('', 'pt*', 'en_pt',
  391. sprintf( _("%s to %s"),
  392. _("English"),
  393. _("Portuguese"))) .
  394. translate_lang_opt('', 'es', 'en_sp',
  395. sprintf( _("%s to %s"),
  396. _("English"),
  397. _("Spanish"))) .
  398. translate_lang_opt('fr', '', 'fr_en',
  399. sprintf( _("%s to %s"),
  400. _("French"),
  401. _("English"))) .
  402. translate_lang_opt('', '', 'fr_ge',
  403. sprintf( _("%s to %s"),
  404. _("French"),
  405. _("German"))) .
  406. translate_lang_opt('', '', 'ge_fr',
  407. sprintf( _("%s to %s"),
  408. _("German"),
  409. _("French"))) .
  410. translate_lang_opt('de', '', 'de_en',
  411. sprintf( _("%s to %s"),
  412. _("German"),
  413. _("English"))) .
  414. translate_lang_opt('it', '', 'it_en',
  415. sprintf( _("%s to %s"),
  416. _("Italian"),
  417. _("English"))) .
  418. translate_lang_opt('pt*', '', 'pt_en',
  419. sprintf( _("%s to %s"),
  420. _("Portuguese"),
  421. _("English"))) .
  422. translate_lang_opt('es', '', 'sp_en',
  423. sprintf( _("%s to %s"),
  424. _("Spanish"),
  425. _("English"))) .
  426. '<\SELECT>'.
  427. 'Dictionary.com: <INPUT TYPE="submit" VALUE="'._("Translate").'">';
  428. translate_table_end();
  429. }
  430. ?>