Mailinglisten-Archive |
amalesh kempf wrote: > Was macht ihr denn so bei euren projekten, wenn ihr > mehrsprachigkeit verwenden müßt? Wir nehmen die Sprachauswahl als Session-Variable $lang mit PHPLIB von Seite zu Seite (Wir setzen im Hause PHPLIB ziemlich häufig ein :-). Wir haben dann je nach Sachlage zwei unterschiedliche Fälle: 1. Die Seite ist überwiegend Text und hat nur wenig Code. Dann wird index.php3 generiert: <?php ### Session variablen laden (ggf. auch $lang) page_open(array("sess" => "M_Session")); include("layout.inc"); $sess->register("lang"); ### Wenn wir noch keine Sprache gewaehlt haben, ### Auswahlschirm anzeigen und Ende. if (!isset($lang)) { include("sprachauswahl.ihtml"); page_close(); exit; } ### Wenn eine Sprache angegeben ist, Sprachauswahl ### ueberschreiben. if ($HTTP_GET_VARS["lang"] != "") { switch($HTTP_GET_VARS["lang"]) { case "en": $lang = "en"; break; case "dk": $lang = "dk"; break; default: $lang = "de"; break; } } ### Sprachauswahl abspeichern. page_close(); ### Hier ist mit Sicherheit eine Sprache gewaehlt. ### Standardlayout erzeugen. make_standard_frameset(""); ?> Der Frameset lädt dann unter anderem content.php3: <?php page_open(array("sess" => "M_Session")); include("layout.inc"); switch($lang) { case "en": include("./aktuelles_en.html"); break; case "dk": include("./aktuelles_dk.html"); break; default: include("./aktuelles_de.html"); break; } ?> 2. Die Seite hat überwiegend Code und nur wenig Text. Dann verwenden wir Messagekataloge: ### layout.inc include("lang_$lang.php3"); $h = explode("/", $PATH_INFO); if (count($h) == 2) { $pagename = "/"; } else { $pagename = $h[count($h)-2]; } ### ### pmsg($index) ### msg($index) ### ### Gibt die zur aktuellen Landessprache und ### aktuellen Seite passende Meldung $index aus. ### function msg($index) { global $pagename, $messages; return $messages[$pagename][$index]; } function pmsg($index) { global $pagename; printf("%s", msg($index)); } ### lang_de.php3 $messages["email"]["heading"] = "Nehmen Sie Kontakt auf"; $messages["email"]["satz1"] = "Senden Sie uns"; $messages["email"]["auftrag"] = "einen Auftrag"; $messages["email"]["anfrage"] = "eine Anfrage"; und so weiter. Im Code kann ich dann pmsg("auftrag") und es kommt automatisch in der richtigen Sprache. Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive