Mehrsprachigkeit mit Smarty lösen

Eyüp

Grünschnabel
Hallo Liebe Community,

ich steh vor dem Mehrsprachigkeitsproblem, möchte einen Sprachsystem
entwickeln, oder einen vorhandenen nutzen.

So dabei möchte ich das Template-System Smarty ebenfalls nutzen.

Mein Vorhaben:
Man sollte die Sprache in der Website auswählen können und es soll direkt mit einem Refresh zu verfügung stehen.
Desweiteren soll die ausgewählte sprache als cookie gespeichert werden.

Mein (nicht optimaler Lösungsansatz) war so gewesen (ohne Smarty)

PHP:
class Lang {
  var $setlang;
  var $loadlang;

  function setlang($lang) {
   return $this->setlang = setcookie("lang", $lang, time()*8640000);
  }

  function loadLang($lang) {
  
  switch($lang) {
    case "de":
      include("lang.de.php");
      break;

   case "en":
     include("lang.en.php");
     break;

  case default:
    include("lang.en.php");
    break;
    }
  }

}

Ja wie löse ich das am besten optimal?
 
Hm, ich würde in den Templates für jeden Text einen Platzhaltzer setzen, a la:

{$lang.xxx} wobei xxx für eine von dir gewählte Kennzeichnung stehen.

Die Klasse liest die Texte aus einer Datenbank/Datei aus und registriert sie automatisch in Smarty.

So würde ich das machen.
 
den $lang array im php füllen und mit smarty auslesen? nen bischen selber nachdenken, sollte drin sein..
 
Hier die Lösung mit PHP5 ;)
Sollte sich aber auch einfach in PHP4 umsetzen lassen.
PHP:
class lang {
  protected $_lang;

  public function __construct($lang) 
  {
    if(!isset($_COOKIE['page_lang'])) {
      setcookie("page_lang", $lang, time()*8640000);
      $this->_lang = $lang;
    } else {
      $this->_lang = $_COOKIE['page_lang'];
    }
  }
  public function getLang() 
  {
    # Verbindung zur Datenbank und den Text in $language (array) einlesen.
    global $smarty; # Klasseninstanz von Smarty
    $smarty->assign('lang', $language);
  }
}

So in etwa würde ich das umsetzen.
 
Zurück