WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Man kann im Benutzerprofil ja angeben, welche Sprache man spricht, und so wird das Backend dann auch angezeigt. So weit, so gut.
Jetzt versuche ich aber schon seit zwei Stunden, an diese eingestellte Sprache im _Frontend_ (Template) heranzukommen. Aber LANGUAGE und $_SESSION['LANGUAGE'] liefern nur die eingestellte Seitensprache, nicht aber die Sprache zurück, die im Benutzerprofil hinterlegt ist.
Gibt es da irgend eine Lösung?
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Das Problem hatte ich neulich schon mal aufgezeigt. Die Konstante LANGUAGE betrifft die aktuell gewählte Sprache und wird von ?lang=bla übersteuert. Schätze Du wirst eine DB-Abfrage machen müssen.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Du könntest dir im Template was in der Art basteln (quick'n'dirty):
if (isset($_SESSION['USER_ID'])) {
$user_id = $_SESSION['USER_ID'];
$user_language = $database->get_one("SELECT `language` FROM `wbce_users` WHERE `user_id` = $user_id");
$_SESSION['USER_LANGUAGE'] = $user_language;
}
Wobei sich mir die Frage aufdrängt, warum wird das eigentlich nicht gleich beim einlogen mitgemacht? Da wird so eine Menge "Kram" in der Session gespeichert, warum ausgerechnet das nicht?
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
florian, stefanek
Das hab ich mich allerdings auch gefragt...
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Yep, ich wollte die Sache auch erst in Core-Fehlerberichte posten.
@bernd: Danke für den Code. wbce_ muss mit dem tatsächlichen Tableprefix ersetzt werden, aber dann funktioniert's.
Urgh, hier geht gerade ein Gewitter los, ich fahr jetzt schnell den Rechner runter und zieh den Stecker.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
So wie ich das in der class.login sehe, wird da schon die User Sprache in $_SESSION['LANGUAGE'] gespeichert:
// Set language
if ($results_array['language'] != '') {
$_SESSION['LANGUAGE'] = $results_array['language'];
}
Aber anscheinend bei mehrsprachigen Seiten später durch die Seitensprache überschrieben ?!? (Wilde Vermutung)
Würde vielleicht nicht schaden an der Stelle zusätzlich gleich noch eine $_SESSION['USER_LANGUAGE'] anzulegen?
Tut nicht weh, aber hilft vielleicht ;-)
Beitrag geändert von bernd (09.08.2018 18:55:20)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
webbird
Und dann noch die passende Funktion analog zu get_user_id() und Co... Weiß grad nicht welche class das ist.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Ich habe noch einiges an weiterer Zeit in diese Sache versenkt.
a) Das Problem ist, dass irgendwo™ die Konstante LANGUAGE definiert wird, die dann für alles weitere verwendet wird. Da kommt man dann nicht heran bzw. kann das logischerweise (da Konstante) nicht mehr ändern.
b) Der Versuch,mit $_SESSION['LANGUAGE'] = $user_language wenigstens die Sessionvariable (sagt man das so?) zu ändern, führt zu sonderbaren Ergebnissen, so wird z.B. die /account/preferences.php dann nicht mehr angezeigt.
c) Versuche ich, von Hand mit ?lang=XY irgend eine andere Sprache zu erzwingen, sagt WBCE "Denkste" und generiert dann solche drolligen URLs wie seite.php?lang=DE&lang=XY. Und verwendet stumpf weiter DE. Das habe ich dann zwar irgendwo gefunden, wo das erzeugt wird, und eine zusätzliche Prüfung da reingebastelt, ob es schon einen Parameter lang gibt, aber dann wird auch gleich das fremdsprachige Menü (auf einer Seite mit Spracheinstellung deutsch) angezeigt.
Ich glaube, diese ganze Sprachensache ist dann wohl die nächste größere Baustelle. (Im konkreten Fall habe ich mir erstmal anders beholfen.)
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Irgendwo = initialize.php
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Das System versucht natürlich die Sprache anzuzeigen, die auch in den Einstellungen der Seite gespeichert ist.
Will man jetzt auf einer Seite die z.B. als RU eingestellt ist dem User die Inhalte doch in EN zeigen, dann wundere ich mich: warum?
Oder geht es um einen kleinen Ausschnitt, der für den User in seiner Sprache angezeigt werden soll, und der Rest wird in der Sprache der Seiteneinstellung ausgegeben?
Ich persönlich denke nicht, dass dem System an dieser Stelle viel fehlt. Bis auf eine $_SESSION['USER_LANGUAGE'] Sessionvariable. Die sollte schon gesetzt sein und es wundert mich auch, dass sie nicht vorhanden ist.
Gruß,
Christian
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
Mich wundert vor allem, dass die bisher noch niemand gebraucht hat.
Ich habe eine Amazon-Wishlist. Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal
Offline
Im konkreten Fall ging es um zweierlei:
- Anzeige von account/preferences.php in der richtigen Sprache
- Ein Bereich auf einer zweisprachigen Webseite sollte nicht doppelt vorgehalten werden müssen, und ich hatte gedacht, man könnte je nach eingestellter Sprache unterschiedliche Texte ausgeben - z.B. für Überschriften, und dass z.B. auch auf der Seite eingebundene Module ihren Output gemäß Benutzersprache generieren. Wirklich zu Ende gedacht hatte ich das nicht, der Einwand von stefanek ist also durchaus berechtigt.
Eine Sessionvariable USER_LANGUAGE sollten wir in der nächsten Version einbauen.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Mich wundert vor allem, dass die bisher noch niemand gebraucht hat.
Es gab denke ich einfach keine große Notwendigkeit dafür.
Zumal man mit einer Einzeiler SQL Abfrage die Sprache des Users auch ermittelt hat. Wahrscheinlich hat einfach bisher kein Hahn nach gekräht.
Trotzdem ist es sinnvoll sie zu haben.
- Anzeige von account/preferences.php in der richtigen Sprache
Passiert es nicht automatisch? *wunder*
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
Nein, das Verhalten ist ziemlich bizarr. Es wird die Sprache der zuletzt aufgerufenen "echten" Seite verwendet. Deshalb steht in der Auswahlliste für die Benutzersprache dann auch ein falscher Wert.
Sprich: Ein Benutzer, der als Sprache französisch ausgewählt hat, bekommt im Frontend das Preferences-Formular mit deutschen Beschriftungen und Vorauswahl "deutsch" bei "Sprache", wenn er vorher auf einer Seite gewesen ist, bei der deutsch als Seitensprache eingestellt war. Und umgekehrt (Spracheinstellung deutsch, vorher französische Seite aufgerufen, Formular in französisch.) m(
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Ganz schön buggy....
Ich habe da mal an einem Tool gearbeitet... dieses hätte ich in einer Bug freien Variante anzubieten (mit ein paar Anpassungen).
Gruß,
Christian
Beitrag geändert von stefanek (10.08.2018 12:22:48)
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline
Wenn Du das Tool meinst, von dem ich glaube, dass Du es meinst, so muss ich Dich enttäuschen: auch damit tritt das Problem(chen) auf.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Wenn Du das Tool meinst, von dem ich glaube, dass Du es meinst, so muss ich Dich enttäuschen: auch damit tritt das Problem(chen) auf.
Da lag keine Täuschung vor, denn es ist mir klar.
Weswegen ich "mit kleinen Anpassungen" in Klammern gesetzt habe.
“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale
Offline