Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.27 veröffentlicht (22.06.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Syntax in Sprachdatei
#1
Hallo

ist es möglich z.B {$mybb->settings['bbname']} in einer Sprachvariablen mit einzubinden?

Beispiel:
PHP-Code:
$l['syntax_text'] = 'Sie befindet sich im Forum {$mybb->settings['bbname']} und....'

Wenn ja, wie? Habe zwar schon einiges wie z.B. Escaped versucht, aber bisher ohne Erfolg. Hätte jemand eine Lösung?

Vorab besten Dank für Tipps und Hinweise.
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.26 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#2
Ich gehe davon aus, dass du die Variablen, die du in den Sprachstrings verwenden möchtest, in der Sprachdatei noch nicht globalisiert hast?!
Woher soll die Variable dann bekannt sein?

Beispiel:
PHP-Code:
<?php
global $mybb;
$boardname htmlspecialchars_uni($mybb->settings['bbname']);
$l['syntax_text'] = 'Sie befindet sich im Forum {$boardname} und....'
Zitieren
#3
PHP-Code und -Variablen haben in Sprachdateien nichts verloren und überleben ein Bearbeiten der Sprachdatei im Admin-CP nicht.

Variable Texte kann man mit Platzhaltern wie {1} und $lang->sprintf umsetzen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#4
Hi Stefan,

ich glaube nicht, dass es hier um variable Texte geht, denn "$mybb->settings['bbname']" ändert sich ja im Normalfall nie.
Gerti hat nicht konkret beschrieben, was er vor hat.
Mir erschließt sich die Sinnhaftigkeit auch nicht, denn wenn ich in der Sprachdatei eine Variable definiere und einfüge, habe ich das in gleicher Zeit auch als Klartext eingefügt.
Es macht allenfalls Sinn, wenn dieser Text in dieser Sprachdatei seeehr häufig vorkommt.

Über Sinn und Unsinn kann nur Gerti aufklären.
Ich habe lediglich einen Anhaltspunkt gegeben, wie´s funktionieren könnte. Wink
Zitieren
#5
(02.06.2021, 13:07)Schnapsnase schrieb: ich glaube nicht, dass es hier um variable Texte geht, denn "$mybb->settings['bbname']" ändert sich ja im Normalfall nie.
Wenn sich das Text nicht ändern würde, bräuchte Gerti auch keine Variable. Toungue In den offiziellen Sprachpaketen gibt es jede Menge Platzhalter, sogar für genau diese Variable.
(02.06.2021, 13:07)Schnapsnase schrieb: Ich habe lediglich einen Anhaltspunkt gegeben, wie´s funktionieren könnte. Wink
Und ich habe geschrieben, warum diese Lösung Murks ist. Und sie funktioniert nicht einmal. Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#6
(02.06.2021, 16:46)StefanT schrieb: Und sie funktioniert nicht einmal. Wink

Na getestet hab ich´s leider nicht. Das wollte ich Gerti überlassen. Big Grin 
Kurzer Hinweis von Deiner Seite, warum´s nicht funktioniert?
War mir eigentlich sicher, dass das funktionieren müsste... Rolleyes
Zitieren
#7
Über Sinn und Unsinn kann man stets geteilter Meinung sein. Manche begnügen sich mit einem Golf, andere bevorzugen Flugzeuge und/oder einen Maserati und wieder Andere begnügen sich mit dem ÖVPN oder Fahrrad bzw. zu Fuss. Der/die eine mag lieber Käse, andere bevorzugen Wurst. usw.

Ich habe lediglich dahingend eine Frage gestellt ob, und wenn ja, wie es möglich ist.

@Schnapsnase
Deine gut gemeinte Anregung funktioniert, so wie StefanT bereits anmerkte, leider nicht.


Zum Sachthema:
(02.06.2021, 11:07)StefanT schrieb: Variable Texte kann man mit Platzhaltern wie {1} und $lang->sprintf umsetzen.
Das geht für mich doch tief in die Programmierung. Soweit getraue ich mich mit meinem Wissensstand nicht einzutauchen. *schäm

(02.06.2021, 16:46)StefanT schrieb: In den offiziellen Sprachpaketen gibt es jede Menge Platzhalter, sogar für genau diese Variable.
Wie lautet der Platzhalter für genau die gewünschte Variable?

Zusatzfrage:
Wie erkennt man die von Dir benannten "jede Menge Platzhalter", wie findet man diese heraus um sie verwenden zu "können"?
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.26 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#8
Nachtrag:
@Schnapsnase
Deine Ausführung: "Es macht allenfalls Sinn, wenn dieser Text in dieser Sprachdatei seeehr häufig vorkommt." trifft hierbei genau ins Schwarze. Vor allem wenn die gleiche Sprachdatei in mehreren Forn verwendet werden soll.
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.26 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#9
Du lässt uns ja hier im Dunkeln stehen, und niemand weiß eigentlich, was du erreichen willst. Rolleyes 
Du kannst, wie Stefan bereits angedeutet hat, in der Sprachdatei beispielhaft folgende Platzhalter definieren:
PHP-Code:
$l['syntax_text'] = 'Sie befindet sich im Forum {1} und Ihre letzter Besuch hier war {2}';  

Im Plugin müsste dann an der jenigen Stelle wie folgt definiert werden:
PHP-Code:
$lang->syntax_text $lang->sprintf($lang->syntax_text$mybb->settings['bbname'], $lastvisit); 

Der Platzhalter {1} wird dann durch "$mybb->settings['bbname']" und der Platzhalter {2} durch
"$lastvisit" ersetzt.

Ungetestet, aber so sollte das in etwa funktionieren.
Ich gehe davon aus, dass Stefan meine Fauxpas berichtigen wird. Wink
Zitieren
#10
(02.06.2021, 20:20)Schnapsnase schrieb: Du lässt uns ja hier im Dunkeln stehen, und niemand weiß eigentlich, was du erreichen willst. Rolleyes 
Wie so im Dunkeln stehen lassen?

Wenn ich dazu vorab all meine Intensionen, Begründungen etc. offen zur Diskussion legen muss, dann wird es ein unnötig langer Thread, weil dann eh nur über (Un-)Sinn diskutiert wird, aber das eigentliche Ansinnen sich nicht verändert.

Letztlich hast Du es mit Deinen angeregten Lösungsvorschlägen (dafür besten Danke) grundsätzlich verstanden was angestrebt wird. Sie analog diese Anleitung.

Logisch klingt für mich den von Dir angeregten Lösungsweg:
via {1} den Inhalt von $mybb->setting['bbname'] in der Sprachdatei des PlugIns (egal bei welchem Sprachvariablen innerhalb der Sprachdatei) verwenden.

Danke für die dazugehörige Anregung. der Test war leider erfolglos (oder ich binde es an der falschen Stelle ein).

Die Variable
PHP-Code:
$mybb->settings['bbname'
wird in innerhalb der Sprachdatei in mehr Sprachvariablen:
$l['syntax_1'] = 'Text {1} Text';
$l['syntax_2'] = 'Text {1} Text';
$l['syntax_3'] = 'Text {1} Text';
usw. benötigt

Klick,
die gewünschte Variable "pauschal in Form von {1}" für die Sprachdatei des PlugIns über das PlugIn selbst verfügbar zu machen klingt daher absolut logisch.

Jetzt stellt sich die Frage:
An welcher Stelle z.B.
function activate {
'$Definition';
}

? muss es wie im PlugIn definiert werden damit der von Dir angeregte Syntax {1} usw. in der Sprachdatei an x-beliebiger Stelle pauschal verwendet werden kann?

Nachtrag
die von Schnapsnase eingangs vorgeschlagene Lösung mit:
PHP-Code:
global $mybb;
$bb_name htmlspecialchars_uni($mybb->settings['bbname']); 
in der Sprachvariablen einzubinden funktioniert jetzt doch.

Die ursprünglich Nichfunktion scheint dem geschuldet zu sein, weil anscheinend irgendwo der Syntax boardname schon verwendet wird. Nachdem ich es auf bb_name änderte funktionierte es sofort.

Ganz herzlichen Dank für die Lösung
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.26 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren