Hallo, Gast! (Registrieren)

Letzte Ankündigung: Sicherheitsupdate: MyBB 1.8.24 veröffentlicht (09.08.20)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
PlugIn wechselt Sprache nur nach De-/Installation
#1
Gegeben:
* Plugin unter ./in/plugins/plugin_name.php mit Einstellungsoptionen für den Admin im ACP.
* Sprachdateien in Deutscher und Englischer Sprache.

Sprachdatei in:
./inc/languages/deutsch_du/admin/config_plugin_name.lang.php
./inc/languages/deutsch_du/pluginname.lang.php
./inc/languages/deutsch_sie/admin/config_plugin_name.lang.php
./inc/languages/deutsch_sie/pluginname.lang.php
./inc/languages/english/admin/config_plugin_name.lang.php
./inc/languages/english/pluginname.lang.php

Auswirkung:
Wird im ACP und Home wird unter:
A) > Startseite > Einstellungen >> Globale Einstellungen >>Admin Control Panel Sprache >>> Deutsch_DU (oder Deutsch_Sie) ausgewählt,
unter:
a1) > Konfiguration > Einstellungen >Plugin-Einstellungen >>> das Plugin inkl. den Funktionseinstellungen in Deutscher Sprache angezeigt.
unter:

a2) > Konfiguration > Plugins >>> das Plugin in Deutscher Sprache angezeigt.
schalte man auf
B) > Startseite > Einstellungen >> Globale Einstellungen >>Admin Control Panel Sprache >>> English ausgewählt,
unter:
b1) > Configuration > Setting >Plugin-Settings >>> das Plugin inkl. der Funktionseinstellungen in Deutscher Sprache angezeigt. (Sollte jetzt aber Englisch sein)
unter:
b2) > Konfiguration > Plugins >>> das Plugin in Englischer Sprache angezeigt.
schalte man auf


Im Frontend wird sofort alles in der jeweils ausgewählten Sprache angezeigt. Auch die Funktion bzgl. der im ACP getätigten Einstellungen beim PlugIn (egal unter welcher Sprache) wird stets korrekt ausgeführt.

Nur wenn ich das PlugIn deinstalliere (deaktivieren bringt nichts) und mit Funktion "B" wieder installiere, ist es wie "A" (eben in Englisch) = korrekt.
Stelle ich aber dann wieder auf "A" um (ohne Deinstallation), ist es hinsichtlich "b" genau umgekehrt.

Wo liegt der Fehler das im ACP nicht ("b1") die eingestellte Sprache ohne Deinstallation angezeigt wird?

Muss in einem PlugIn etwas zusätzliches defininiert (berücksichtigt) werden, damit beim Triggern zwischen "A" und "B" auch "a1" und "b1" sich analog dazu verhalten?

Vorab Danke für eine Erläuterung, Tipps, Hilfestellungen.
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#2
Damit die automatische Sprachänderung bei Plugins im ACP funktioniert müssen die entsprechenden Sprachvariablen des Plugins auf eine spezielle Weise definiert werden.

Schau mal in die Sprachdatei eines meiner Plugins, da habe ich es funktionsfähig definiert:
=> https://github.com/SvePu/MyBB_Report-To-...php#L7-L33
Zitieren
#3
Und siehe auch hier:
https://www.mybb.de/forum/thread-37293-p...#pid244911
Zitieren
#4
Das standardmäßige "hello" Plugin kannst du auch als Vorlage nehmen.
=> https://github.com/mybb/mybb/blob/featur...o.lang.php
Zitieren
#5
@SvePU
Aus dem Link (Ziel eine Plugin-Datei) werde ich nicht schlau, bei den anderen PlugIns von Dir (obwohl weniger $load->lang(xxxx);] definiert) auch nicht.

Denoch besten Dank für den (leider - sicherlich mir geschuldeten - vergeblichen) Versuch einer Hilfestellung.

@doylecc
so wie ich den Link verstehe, muss ich an allen Stellen im PlugIn wo:
PHP-Code:
'title' => $db->escape_string($lang->plugin_name),
'description' => $db->escape_string($lang->plugin_name), 
steht, in:
PHP-Code:
'title' => $db->escape_string($lang->setting_plugin_name),
'description' => $db->escape_string($lang->setting_plugin_name), 
ändern. Korrekt?

Habe es mal so umgesetzt, dann aber fehlen mir für das ACP die anklickbaren Überschriften um Einstellungen etc. vorzunehmen.

Habe auch mal am Anfang:
PHP-Code:
'name' => $db->escape_string($lang->setting_plugin_name),
'description' => $db->escape_string($lang->setting_plugin_name), 
mit und ohne "settings_" versucht, immer fehlen irgendwo wie Überschriften zum Anklicken für Einstellungen.
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#6
(20.10.2020, 16:43)Gerti schrieb: Habe auch mal am Anfang:
PHP-Code:
'name' => $db->escape_string($lang->setting_plugin_name),
'description' => $db->escape_string($lang->setting_plugin_name), 
mit und ohne "settings_" versucht, immer fehlen irgendwo wie Überschriften zum Anklicken für Einstellungen.

Die korrekte Schreibweise wäre:

PHP-Code:
'title' => $db->escape_string($lang->setting_settingname),
'description' => $db->escape_string($lang->setting_settingname_desc), 
Beachte, dass hier der Settingname und nicht der Plugin-Name eingegeben wird.
Beachte auch das "_desc" am Ende von description.
Zitieren
#7
Du hast zur Kenntnis genommen, dass die erste Zeile im PHP-Beitrag "name" lautet und im zweiten PHP-Beitrag "title"?

Ich habe die Abschnitte mit "title" und "description" entsprechend benannt. Zum Testen auch mal den Abchnitt "name" und "description" analog versucht.
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#8
(21.10.2020, 09:46)Gerti schrieb: Du hast zur Kenntnis genommen, ...

Mir ging es in meinem Beitrag nicht darum, ob Du "Name" oder "title" schreibst, sondern um den Syntax dahinter.
Schau Dir genau an, wie ich den Code geschrieben habe.
Oder reden wir mal wieder aneinander vorbei? Huh
Zitieren
#9
(21.10.2020, 09:54)Schnapsnase schrieb: sondern um den Syntax dahinter.

... Syntax, oder die Logik? Die Syntax war doch von vorne rein klar  Wink

Achja: https://der-artikel.de/die/Syntax.html
Zitieren
#10
(21.10.2020, 11:16)itsmeJAY schrieb: ... Syntax, oder die Logik?

Danke für Deinen Versuch der Aufklärung.
Wenn man
PHP-Code:
'description' => $db->escape_string($lang->setting_settingnamename), 
statt
PHP-Code:
'description' => $db->escape_string($lang->setting_settingname_desc), 
schreibt, ist das im weiten Sinne ein Syntaxfehler.
Genau als ob man in der Grammatik ein Komma an die falsche Stelle setzt.
Entweder wird dadurch der Sinn entstellt, oder es kommt etwas völlig Unbrauchbares raus. Toungue
Zitieren