IF-Bedingung für Boardsprache - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html) +--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html) +--- Thema: IF-Bedingung für Boardsprache (/thread-37487.html) |
RE: IF-Bedingung für Boardsprache - doylecc - 23.10.2020 Die IF Bedingung trifft nie zu, weil in der global.php die Variable $mybb->settings['bblanguage'] durch die vom User eingestellte Sprache überschrieben wird und sie dadurch immer mit $mybb->user['language'] übereinstimmt. Du könntest für den Vergleich die Boardsprache direkt aus der DB holen, ungefähr so: PHP-Code: function myFunction() RE: IF-Bedingung für Boardsprache - itsmeJAY - 23.10.2020 jo, so gehts auch.. Bedeutet aber, dass im else-Zweig immer die "Standard-Forensprache" steht. Angenommen der Benutzer hat Spanisch eingestellt aber die Standard-Sprache ist Englisch, würde der Benutzer in der o.g Variante trotzdem einen deutschen Text bekommen. Oder sehe ich das falsch? @doylecc: ggf. könnte man es auch komplett ohne DB-Abfrage machen und zeitgleich nicht nur 2, sondern mehrere Sprachen abdecken, z. B. hiermit (runtergetippt, nicht getestet!) - oder habe ich etwas vergessen und bedenke etwas nicht? PHP-Code: function myFunction() Somit müsste einfach immer nur das array oben mit allen vorhandenen Forensprachen gepflegt werden und wenn es eine mal nicht gibt, wird der default-Wert genommen. Man spart sich natürlich zusätzlich DB Abfrage und somit verschlechtert man nicht die Perfomance. Wie gesagt, ob ich etwas nicht bedacht habe, weiß ich gerade noch nicht.. RE: IF-Bedingung für Boardsprache - Gerti - 23.10.2020 Bin ich froh dass gar die Programmierprofis unterschiedliche Lösungsvarianten darlegen. Ich kann da nur staunen und bewundert/verwundert zu Euch hoch blicken. @istmeJAY Würdest Du, für einen Laien, dein Beispiel mal mit "Deutsch_Du"; Deutsch_Sie"; "Englisch"; "Spanisch" und eventuell "Französisch" (also vier oder fünf Sprachen) aufzeigen damit auch ein Laie es versteht? Wie müsste das array dazu im Detail lauten? RE: IF-Bedingung für Boardsprache - Schnapsnase - 23.10.2020 Du musst nur das array erweitern. Die if-Anweisung ändert sich ja nicht. PHP-Code: $emailText = [ Getestet habe ich JAY`s Code allerdings noch nicht. RE: IF-Bedingung für Boardsprache - Gerti - 23.10.2020 Aaah , jetzt habe ich verstanden "$emailText" ist das array. Habe ich das jetzt richtig verstanden, dass das Array sich auf die vom User eingestellte Sprache bezieht, anderfalls wird default angenommen. Ich kann nämlich nirgends $user->['language'] bzw. $mybb_user->['language'] entnehmen. Danke für die Erläuterung Zusatzfrage: Sind "deutsch_du" und "deutsch_sie" zwei verschiedene Fragen oder kann dies mit "deutsch" pausschal abgefangen werden? RE: IF-Bedingung für Boardsprache - itsmeJAY - 23.10.2020 Beide verschiedene. RE: IF-Bedingung für Boardsprache - Schnapsnase - 23.10.2020 (23.10.2020, 13:17)Gerti schrieb: Habe ich das jetzt richtig verstanden, dass das Array sich auf die vom User eingestellte Sprache bezieht, anderfalls wird default angenommen. Wie doylecc das so prima erklärt hat, wird 'bblanguage' mit dem Setting des Users überschrieben. Somit dürftest Du mit 'bblanguage' in JAY`s Code immer die richtige Sprache haben. Ich hoffe, ich hab das richtig verstanden, denn ich kann momentan leider nicht testen. @doylecc & @itsmeJAY Danke für Eure Code-Beispiele und Beiträge! Es ist immer wieder lehrreich Euch zu lesen. RE: IF-Bedingung für Boardsprache - itsmeJAY - 23.10.2020 (23.10.2020, 13:17)Gerti schrieb: Ich kann nämlich nirgends $user->['language'] bzw. $mybb_user->['language'] entnehmen. Richtig. Brauchst du auch nicht, denn PHP-Code: $mybb->settings['bblanguage'] Das bedeutet das du in der o.g Variable (Eigenschaft) immer die Sprache hast, die der Benutzer gerade verwendet oder ausgewählt hat. Weshalb das MyBB so überschreibt, weiß ich gerade auch nicht auswendig. Bedeutet aber das nach meiner Lösung einfach folgendes getan wird: Wir überprüfen ob die Sprache, welche in $mybb->settings['bblanguage'] drin steht mit einem Index im Array übereinstimmt. Wenn ja nehmen wir den title und den text aus diesem Index. Sollten wir dies nicht finden, nehmen wir einfach den "default" Index aus dem Array. Das setzt natürlich vorraus, dass jeder Index im Array genau so heißt wie eine Sprache die Benutzer verwenden könnte (bspw: english, deutsch_sie, deutsch_du, usw) Ich hoffe ich habe alles beachtet. Grüße RE: IF-Bedingung für Boardsprache - doylecc - 23.10.2020 Wenn ich das richtig sehe, gibt es nur einen Haken dabei: Mit $mybb->settings['bblanguage'] wird die PN immer in der Sprache des Absenders verfasst, nicht in der Sprache des Empfängers. RE: IF-Bedingung für Boardsprache - Gerti - 23.10.2020 (23.10.2020, 14:38)doylecc schrieb: Wenn ich das richtig sehe, gibt es nur einen Haken dabei: Mit $mybb->settings['bblanguage'] wird die PN immer in der Sprache des Absenders verfasst, nicht in der Sprache des Empfängers.Yep, nach dem ganzen Trubel einer virtuell einfachen Idee mit doch erheblichen Umsetzungsproblemen favoriserte ich den derzeitigen funktionierenden Zustand: PHP-Code: $userlanguage = htmlspecialchars_uni($user['language']); PHP-Code: $userlanguage = htmlspecialchars_uni($user['language']); wobei noch die die IF-Bedingung fehlt, wenn "$userlanguage" keinen Eintrag hat, denn PHP-Code: if ($userlanguage == "") { |