<?
/*
   retranslator: feed something to babelfish, get the results, and feed
   it back again. hilarity ensues.
*/

function translate($urltext=''$lfrom=''$lto='') {
    
$babelfishurl    'http://babelfish.altavista.com/tr';

    
$doit    'done';    // dunno what this does
    
$tt    'urltext';    // can be "url" to translate a url
    
$url    $babelfishurl "?doit=$doit&tt=$tt&lp={$lfrom}_{$lto}&urltext=XXXX%20" urlencode($urltext);

    if (!@
$fp fopen($url'r'))
        return 
"Error: Couldn't connect to Babelfish";
    
    while (!
feof($fp))
        
$text .= fgets($fp1024);

    if (!
$text)
        return 
'Error: No text returned from Babelfish.';

    
$regex    '!>XXXX (.*?)<!smi';

    
$translation    preg_match($regex$text$match)
            ? 
$match[1]
            : 
"Error: Couldn't find the text to translate. This sometimes happens because"
            
" the connection times out or the server is busy, so try reloading.";

    return 
$translation;
    }

function 
retrans($text=''$lfrom=''$lto='') {
    
$translation    translate($text$lfrom$lto);
    return 
ereg('Error: '$translation) ? $translation translate($text$lto$lfrom);
    }

$languages = array(
    
'en_es'    => 'English to Spanish',
    
'en_zh'    => 'English to Chinese',
    
'en_fr'    => 'English to French',
    
'en_de'    => 'English to German',
    
'en_it'    => 'English to Italian',
    
'en_ja'    => 'English to Japanese',
    
'en_ko'    => 'English to Korean',
    
'en_pt'    => 'English to Portuguese',
    
'zh_en'    => 'Chinese to English',
    
'fr_en'    => 'French to English',
    
'fr_de'    => 'French to German',
    
'de_en'    => 'German to English',
    
'de_fr'    => 'German to French',
    
'it_en'    => 'Italian to English',
    
'ja_en'    => 'Japanese to English',
    
'ko_en'    => 'Korean to English',
    
'pt_en'    => 'Portuguese to English',
    
'ru_en'    => 'Russian to English',
    
'es_en'    => 'Spanish to English',
    );

if ((
$text stripslashes($text)) && $lp) {
    list(
$lfrom$lto)    = explode('_'$lp);
    
$translated        retrans($text$lfrom$lto);
    }

?>
<form action="<?=$PHP_SELF?>" method=post>

<p><table cellpadding=5 cellspacing=1 width=75% bgcolor=black>

<tr bgcolor=#EEEEEE><td align=center>
    <table cellpadding=3 cellspacing=1 bgcolor=#666666>

    <tr bgcolor=white>
    <td align=right valign=top>text to translate: </td>
    <td>
    J<textarea name=text rows=4 cols=70><?=$text?></textarea>
    </td>
    </tr>

    <tr bgcolor=white>
    <td align=right>languages to use: </td>
    <td>
    <select name=lp>
    <?
    
foreach ($languages as $pair => $desc)
        echo 
"<option value='$pair'", ($pair == $lp ' selected' ''), ">$desc and back</option>\n";
    
?>
    </select>
    </td>
    </tr>

    <tr bgcolor=white>
    <td align=right>button to press: </td>
    <td><input type=submit value="push please me"></td>
    </tr>

    </table>

<? if ($translated) { ?>

<p><table cellpadding=7 cellspacing=1 width=100% bgcolor=#666666>
    <tr bgcolor=white><td colspan=2>

    <b>translation: </b>

    <br><br>
    <?=$translated?>

    </td></tr>
</table>

    <?    ?>
</form>