fastix®: Multilingualer Webauftritt

Beitrag lesen

Moin!

1. Wo kommen denn die Inhalte her?
2. Wie groß ist die Seite?

Ich habe bei einem Projekt in den Templates mal einen "Translate-Tag" eingebaut:

<title><translate>Eine tolle Seite!</translate></title>

Das wird beim Auslesen untersucht:

function translate_tpl($str, $lang=false, $arTemplate) {
require_once 'includes/translate.inc.php';
$suchmuster = '/<translate>(.*)</translate>/e';
return preg_replace($suchmuster, "getTranslation('\1')", $str);
}

Die Funktion getTranslation('\1') sucht einen String aus einem Hash, zwischengespeichertem Hash oder einer Datenbank heraus.

Also etwa so:

  
$GLOBALS['uebersetzungen']['Eine tolle Seite!']['en']='A fine site!';  
$GLOBALS['uebersetzungen']['Habe einen netten Tag!']['en']='Have a nice day!';

...

function getTranslation($str) {  
    if ( TRUE  
       and isset $_SESSION['lang']  
       and ($_SESSION['lang'] != 'de')  
       and isset ($GLOBALS['uebersetzungen'][$str][$_SESSION['lang']])  
       and ('' != $GLOBALS['uebersetzungen'][$str][$_SESSION['lang']])  
    ) {  
       return ($GLOBALS['uebersetzungen'][$str][$_SESSION['lang']]);  
    } else {  
       return $str;  
    }  
}

Das passt z.B. ganz gut beim "Interior" eines Shops, weil der Anteil der seitenspezifischen Textmengen recht gering ist, die Produktbeschreibungen e.t.c. liegen dann aber schon in der Datenbank übersetzt vor, so dass diese nicht nochmals übersetzt werden müssen.

Dazu brauchst Du noch eine Routine, welche unübersetzte Texte in das Array oder die Datenbank einträgt und für die Übersetzer ein kleines, zugangsgeschütztes "Backoffice" sowie womöglich eine gute Idee wie Du das alles mit einem Cache unterstützt. Den kann es ja auch für Templates geben.

Enthält Deine Webseite eher Romane, dann geht das natürlich nicht...

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix