WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 09.08.2018 17:57:28

florian
Administrator

Eingestellte Sprache des Benutzers im Frontend abfragen?

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

#2 09.08.2018 18:42:01

webbird
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#3 09.08.2018 18:42:09

bernd
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

Liked by:

florian, stefanek

#4 09.08.2018 18:45:33

webbird
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

Das hab ich mich allerdings auch gefragt...


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#5 09.08.2018 18:49:13

florian
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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.  thumb_up

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

#6 09.08.2018 18:51:30

bernd
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

Liked by:

webbird

#7 10.08.2018 09:45:19

webbird
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

Und dann noch die passende Funktion analog zu get_user_id() und Co... smile Weiß grad nicht welche class das ist.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#8 10.08.2018 09:49:44

florian
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

#9 10.08.2018 10:10:23

webbird
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

Irgendwo = initialize.php


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#10 10.08.2018 11:17:58

stefanek
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

#11 10.08.2018 11:22:19

webbird
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

Mich wundert vor allem, dass die bisher noch niemand gebraucht hat. big_smile


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#12 10.08.2018 11:29:34

florian
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

#13 10.08.2018 11:53:46

stefanek
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

webbird schrieb:

Mich wundert vor allem, dass die bisher noch niemand gebraucht hat. big_smile

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.

florian schrieb:

- 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

#14 10.08.2018 12:04:56

florian
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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

#15 10.08.2018 12:22:23

stefanek
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

Ganz schön buggy....  lol
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

#16 10.08.2018 12:31:32

florian
Administrator

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

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.

attachment.php?item=1367&download=1


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#17 10.08.2018 12:47:55

stefanek
Developer

Re: Eingestellte Sprache des Benutzers im Frontend abfragen?

florian schrieb:

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

Fußzeile des Forums

up