<?php
// Übersetzungsrichtung, wobei 0=EN, 1=FR und 2=DE
$aSprache= array
( '0-1'=> 'from English to French'
, '0-2'=> 'from English to German'
, '1-0'=> 'from French to English'
, '1-2'=> 'from French to German'
, '2-0'=> 'from German to English'
, '2-1'=> 'from German to French'
);
// Wörterbuch: jedes Element besteht aus einem Feld, in welchem im 0ten Element EN, im 1ten FR und im 2ten DE definiert ist. Immer kleingeschrieben!
$aDict= array
( array( 'peace', 'paix', 'frieden' )
, array( 'house', 'maison', 'haus' )
, array( 'we', 'nous', 'wir' )
, array( 'english', 'anglais', 'englisch' )
, array( 'two', 'deux', 'zwei' )
);
// Nur dieses eine Dokument wird benötigt; ein großer Teil der Ausgabe ist immer identisch
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<title>Mini Directory</title>
<style type="text/css">
body { font: 13px Arial, sans-serif; }
h1 { color: green; }
label { display: block; float: left; width: 130px; text-align: right; margin: 5px 10px 0px 0px; }
input, select { margin-top: 3px; }
</style>
</head><body>
<h1>Mini Directory</h1>';
// Übersetzungsrichtung angegeben? Wenn nicht, wurde die Seite nur aufgerufen statt abgeschickt
$sDirection= isset( $_POST['fromto'] )? $_POST['fromto']: 0;
// Zu übersetzendes Wort angegeben?
$sWord= isset( $_POST['word'] )? $_POST['word']: '';
// Möglicher auszugebender Fehler
$sError= '';
// Mögliche gefundene Übersetzung
$sFound= '';
// Befindet sich die ausgewählte Übersetzungsrichtung überhaupt in unserer Definition des Felds oben?
if( isset( $aSprache[$sDirection] ) ) {
// Wurde überhaupt ein zu übersetzendes Wort angegeben?
if( $sWord!= '' ) {
// Gänsefüßchen und Apostrophe ggf. de-escaped
if( get_magic_quotes_gpc() ) $sWord= stripslashes( $sWord );
// Zahl vor dem Bindestrich ist Quellsprache, Zahl dahinter ist Zielsprache - in Feld aufteilen
$aDirection= explode( '-', $sDirection );
// Zu übersetzendes Wort in Kleinbuchstaben umwandeln, da unser Wörterbuch auch nur Kleinbuchstaben hat
$sWordLower= strtolower( $sWord );
// Wörterbuch durchwandern
foreach( $aDict as $iKey=> $sWert ) {
// Die Quellsprache eines Wörterbuch-Elements stimmt mit dem zu suchenden Wort überein?
if( strcmp( $sWert[$aDirection[0]], $sWordLower )== 0 ) {
// Zielsprache des Elements merken
$sFound= $aDict[$iKey][$aDirection[1]];
// Schleife verlassen und nicht zu Ende durchlaufen
break;
}
}
// Falls nichts gefunden, dann Hinweis ausgeben
if( $sFound== '' ) $sError= 'No translation found';
} else $sError= 'Please enter a word';
}
// Fehlermeldung auszugeben?
if( $sError!= '' ) echo '
<p style="color: red;">'. $sError. '!</p>';
// Formular beginnen
echo '<form action="'. $_SERVER['PHP_SELF']. '" method="post"><div>
<label for="fromto">Direction:</label>
<select name="fromto" id="fromto">';
// Alle Übersetzungsrichtungen anbieten
foreach( $aSprache as $sKey=> $sWert ) echo '
<option value="'. $sKey. '"'. ( $sDirection== $sKey? ' selected="selected"': '' ). '>'. $sWert. '</option>';
// Ggf. zu übersetzendes Wort wieder mit ausgeben
echo '
</select><br/>
<label for="word">Word to translate:</label>
<input name="word" id="word" value="'. htmlentities( $sWord ). '" /><br/>';
// Übersetzung gefunden? Zusätzliche unveränderliche Textbox
if( $sFound ) echo '
<label for="found" style="color: green;">Found translation:</label>
<input id="found" style="background-color: #EFE;" readonly="readonly" value="'. htmlentities( $sFound ). '" /><br/>';
// Formularende
echo '
<label> </label>
<input type="submit" />
<input type="reset" />
</div></form>
</body></html>';
?>