phpbar.de logo

Mailinglisten-Archive

Re: [php] Konzepte für Mehrsprachigkeit?
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] Konzepte für Mehrsprachigkeit?




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)

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive