Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
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() { global $mybb, $db;
$query = $db->simple_select("settings", "value", "name='bblanguage'"); $bblanguage = $db->fetch_field($query, "value"); if (!empty($mybb->user['language']) && $mybb->user['language'] != $bblanguage) { $subject = 'Englisch'; $body = 'Hello english user'; } else { $subject = 'Deutsch'; $body = 'Hallo deutscher Benutzer'; } }
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
23.10.2020, 11:50
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 12:21 von itsmeJAY.)
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() { global $mybb; // Array um verschiedene Sprachen abzudecken $emailText = [ "default" => [ "title" => "Standard-Title", "text" => "Standard-Text..." ], "deutsch" => [ "title" => "Deutscher Titel", "text" => "Deutscher Text..." ] ];
if (array_key_exists($mybb->settings['bblanguage'], $emailText)) { $subject = $emailText[$mybb->settings['bblanguage']]['title']; $body = $emailText[$mybb->settings['bblanguage']]['text'] } else { $subject = $emailText['default']['title']; $body = $emailText['default']['text']; } }
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..
Beiträge: 1.710
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
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?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.244
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
Du musst nur das array erweitern.
Die if-Anweisung ändert sich ja nicht.
PHP-Code: $emailText = [ "default" => [ "title" => "Standard-Title", "text" => "Standard-Text..." ], "deutsch" => [ "title" => "Deutscher Titel", "text" => "Deutscher Text..." ], "chinesisch" => [ "title" => "德国头衔", "text" => "德语文字..." ] ];
Getestet habe ich JAY`s Code allerdings noch nicht.
Beiträge: 1.710
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
23.10.2020, 13:17
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 13:32 von Gerti.)
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?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
Beiträge: 2.244
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
(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.
Ich kann nämlich nirgends $user->['language'] bzw. $mybb_user->['language'] entnehmen.
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.
Beiträge: 1.136
Themen: 39
Registriert seit: 27.08.2014
23.10.2020, 14:08
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 14:12 von itsmeJAY.)
(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']
wird mit der Sprache von dem Benutzer immer überschrieben (siehe Funktion: https://github.com/mybb/mybb/blob/featur...al.php#L60).
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
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
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.
Beiträge: 1.710
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
23.10.2020, 14:59
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2020, 14:59 von Gerti.)
(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']); if ($userlanguage == "english") { PN in Englisch senden } else { PN in Boardsprache senden senden }
Das funktioniert perfekt, und wenn man möchte kann man das auch so gestalten:
PHP-Code: $userlanguage = htmlspecialchars_uni($user['language']); if ($userlanguage == "english") { PN in Englisch senden } if ($userlanguage == "spanish") { PN in Spanisch senden } if ($userlanguage == "france") { PN in Französich senden } if ($userlanguage == "sweden") { PN in Schwedisch senden }
wobei noch die die IF-Bedingung fehlt, wenn "$userlanguage" keinen Eintrag hat, denn
PHP-Code: if ($userlanguage == "") { PN in Standardsprache senden }
funktioniert nicht. *grummel
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
|