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