sasfed
Mitglied
Hallo zusammen,
ich programmiere zur Zeit ein kleines CMS für Fussballvereine und jetzt wurde der Wunsch nach Mehrsprachigkeit an mich herangetragen.
Ich habe mich im Web schlau gemacht und bin jetzt zu folgender Lösung gekommen:
Texte und Spalten von Tabellen werde in einer Tabelle language abgespeichert. Am Anfang meiner Index überprüfe ich, in welcher Sprache die Seite ausgeführt werden soll.
Je nachdem, wird z.B. die language.en.php aufgerufen. In dieser wird eine Methode der Klasse Language aufgerufen, welche das Assoziative-Array public $language mit den englischen Übersetzungen auffüllt.
Sämtliche andere Klassen werden nun von dieser Klasse Language abgeleitet. Demzufolge können alle Klassen auf dieses Attribut zugreifen. Mein Platzhalter lautet wie folgt:
.
Dieser Platzhalter gibt z.B. "news_header_en" zurück, also die Spalte mit dem englischen Newsheader. Leider funktioniert dies aber nicht. Ich bekomme keine Fehlermeldung sondern einfach nichts. Es folgen die Codefragmente:
Die Klasse Language
Die c_news.php, mit der Klasse News
Habt ihr eine Idee, wo mein Problem liegen könnte? Interessant ist folgendes: wenn ich public $language direkt befülle, bekomme ich in der getNews auch einen Wert. Die Übergabe klappt also. Die $language wird in der Methode getLanguageArray auch richtig befüllt. Wenn ich nämlich innerhalb der Methode einen Wert ausgeb, funktioniert es.
Im Voraus vielen Dank für eure Mithilfe.
Viele Grüße
Sascha
ich programmiere zur Zeit ein kleines CMS für Fussballvereine und jetzt wurde der Wunsch nach Mehrsprachigkeit an mich herangetragen.
Ich habe mich im Web schlau gemacht und bin jetzt zu folgender Lösung gekommen:
Texte und Spalten von Tabellen werde in einer Tabelle language abgespeichert. Am Anfang meiner Index überprüfe ich, in welcher Sprache die Seite ausgeführt werden soll.
Je nachdem, wird z.B. die language.en.php aufgerufen. In dieser wird eine Methode der Klasse Language aufgerufen, welche das Assoziative-Array public $language mit den englischen Übersetzungen auffüllt.
Sämtliche andere Klassen werden nun von dieser Klasse Language abgeleitet. Demzufolge können alle Klassen auf dieses Attribut zugreifen. Mein Platzhalter lautet wie folgt:
PHP:
$this->language["news_header"]
Dieser Platzhalter gibt z.B. "news_header_en" zurück, also die Spalte mit dem englischen Newsheader. Leider funktioniert dies aber nicht. Ich bekomme keine Fehlermeldung sondern einfach nichts. Es folgen die Codefragmente:
Die Klasse Language
PHP:
class Language{
public $language;
function getLanguageArray($get){
$sql="SELECT $get, lang_de FROM language";
$query=mysql_query($sql);
while($result=mysql_fetch_assoc($query)){;
$this->language[$result["lang_de"]]=$result[$get];
}
}
}
Die c_news.php, mit der Klasse News
PHP:
class News extends Language{
function getNews($order,$page,$id,$archiv,$year){
$start=($page*$this->epp)-$this->epp;
$header=$this->language["header_news"];
.......
Habt ihr eine Idee, wo mein Problem liegen könnte? Interessant ist folgendes: wenn ich public $language direkt befülle, bekomme ich in der getNews auch einen Wert. Die Übergabe klappt also. Die $language wird in der Methode getLanguageArray auch richtig befüllt. Wenn ich nämlich innerhalb der Methode einen Wert ausgeb, funktioniert es.
Im Voraus vielen Dank für eure Mithilfe.
Viele Grüße
Sascha