Offen Zugriff auf Sprachvariablen in PHP

WakMoo

Aktives Mitglied
14. September 2008
88
0
Hallo zusammen,
ist es möglich aus PHP heraus auf Sprachvariablen zuzugreifen, so wie in Templates über {lang section="" key=""}?
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Ja, mit ner einfachen Funktion:

Code:
function getMyData($value, $kKunde) {
        $myData = $GLOBALS['DB']->executeQuery("SELECT $value FROM tkunde WHERE kKunde = $kKunde", 2);
        if ($value == 'cNachname') {
            $xTeaCiN = new XTEA(BLOWFISH_KEY);
            return $xTeaCiN->decrypt($myData[0]->$value);
        } elseif ($value == 'cAnrede') {
            if ($myData[0]->$value == 'm') {
                return lang('salutationM');
            } elseif ($myData[0]->$value == 'w') {
                return lang('salutationW');
            }
        } else {
            return $myData[0]->$value;
        }
}

function lang($key) {
        if ($key !== '') {
            if (isset($_SESSION['Kunde'])) {
                $sprachISO = getMyData('kSprache', $_SESSION['Kunde']->kKunde);
            } else {
                $sprachISO = 1;
            }
            $value = $GLOBALS['DB']->executeQuery("SELECT cWert FROM tsprachwerte WHERE cName = '$key' AND kSprachISO = $sprachISO", 2);
            return $value[0]->cWert;
        } else {
            return false;
        }
}

Aufruf dann beispielsweise:

Code:
lang('firstName');

Dabei spielt die Section keine Rolle.
 

WakMoo

Aktives Mitglied
14. September 2008
88
0
AW: Zugriff auf Sprachvariablen in PHP

Das ging ja schnell, danke! Ich habe das ganze noch etwas modifiziert, denn die aktuelle Sprache steht doch direkt in der Session, oder?

Code:
	function lang($key) {
		if ($key !== '') {
			if (isset($_SESSION['kSprachISO'])) {
				$sprachISO = $_SESSION['kSprachISO'];
			} else {
				$sprachISO = 1;
			}
			$value = $GLOBALS['DB']->executeQuery("SELECT cWert FROM tsprachwerte WHERE cName = '$key' AND kSprachISO = $sprachISO", 2);
			if($value[0]->cWert !== '') {
				return '#'.$key.'#';
			}
			return $value[0]->cWert;
		} else {
			return false;
		}
	}
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Stimmt, aber dann kannst du dir auch die ganze Abfrage sparen, da ja $_SESSION['kSprachISO'] immer gesetzt ist. Dann sieht die Funktion so aus:

Code:
function lang($key) {
        if ($key !== '') {
            $value = $GLOBALS['DB']->executeQuery("SELECT cWert FROM tsprachwerte WHERE cName = '$key' AND kSprachISO = $_SESSION['kSprachISO']", 2);
            if($value[0]->cWert !== '') {
                return '#'.$key.'#';
            }
            return $value[0]->cWert;
        } else {
            return false;
        }
    }
 

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Warum so kompliziert?

PHP:
$GLOBALS['oSprache']->gibWert('name', 'section')
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Das nenn ich kurz und knapp :) Schön wie der JTL Shop dokumentiert ist ;)

Aber bei deinem Ansatz muss man die Section kennen, die Funktion oben sucht global in allen Sections. Für Plugins würde ich die Funktion oben nehmen.
 

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Man weiss doch was man ausgeben will, also kennt man auch die section. In welcher Situation kennt man diese denn nicht?
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Man weiss doch was man ausgeben will, also kennt man auch die section. In welcher Situation kennt man diese denn nicht?

Siehe Screenshot:

sprachvariablen.jpg

So sind die Plugins automatisch für alle Sprachen gerüstet. Verwendest du das Sprachensystem für Plugins wie JTL es vorgibt, hast du immer das Problem, dass du das Plugin um die entsprechenden Sprachen erweitern muss.

So siehts ja nach JTL in der info.xml aus:

Code:
<Variable>
                <Name>foo</Name> 
                <Description>beschreibung foo</Description> 
                <VariableLocalized iso="GER">foo auf deutsch</VariableLocalized> 
                <VariableLocalized iso="ENG">foo auf englisch</VariableLocalized>
            </Variable>

Mit meinem Ansatz spielen die im Shop verwendetetn Sprachen keine Rolle. Sollten neue Sprachen hinzukommen muss lediglich die Übersetzung für die in der Sprachverwaltung erstellten Variable ergänzt werden.
 

Anhänge

  • sprachvariablen.jpg
    sprachvariablen.jpg
    66,1 KB · Aufrufe: 42

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Die Sprachen der plugins musst du nicht als Entwickler erweitern, sondern der Kunde, der die neue Sprache anlegt. Er kann dies dann bei JEDEM plugin ergänzen. Dazu muss ich die Sprache nicht in der xml definiert haben und kann sich dennoch ansprechen. Bisher macht die neue Funktion also immer noch keinen Sinn. ;) die kompletten sorachvariablen der Session Sprache sind ja global bereits geladen. Wieso also wieder nen sql query setzen?
 

ag-websolutions.de

Sehr aktives Mitglied
29. Dezember 2009
14.548
233
AW: Zugriff auf Sprachvariablen in PHP

Der von Björn aufgezeigte Weg ist der offizielle Styleguide von JTL was die Verwendung von Sprachvariablen angeht.
Jeder Plugin-Entwickler sollte sich daran halten, da damit eine für die Kunden einheitliche Bedienung der Plugins gewährleistet wird und der Kunde sich nicht immer auf "eigene Entwickler-Süppchen" einstellen muss.
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Die Sprachen der plugins musst du nicht als Entwickler erweitern, sondern der Kunde, der die neue Sprache anlegt. Er kann dies dann bei JEDEM plugin ergänzen.

Er kann dies dann bei JEDEM plugin ergänzen. Dazu muss ich die Sprache nicht in der xml definiert haben und kann sich dennoch ansprechen.

Naja, über die Mechanismen die JTL für seine PLugins so vorsieht möchte ich garnicht im Detail eingehen, da sind so einige Probleme mit aufgetreten die selbst JTL nicht erklären konnte.
Aber schoon alleine schon aus dem Grund, dass der Kunde das Plugin dann jedesmal deinstallieren und anschließend wieder installieren muss damit die Ergänzungen überhaupt greifen hat mich von den regulären Sprachvariablen nach JTL Schmea weggebracht. Gerade wenn das Plugin auch eine Tabelle in der Datenbank anlegt. Dann sind nämlich alle vorigen Einträge wieder weg.
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Der von Björn aufgezeigte Weg ist der offizielle Styleguide von JTL was die Verwendung von Sprachvariablen angeht.
Jeder Plugin-Entwickler sollte sich daran halten, da damit eine für die Kunden einheitliche Bedienung der Plugins gewährleistet wird und der Kunde sich nicht immer auf "eigene Entwickler-Süppchen" einstellen muss.

Auf "eigene Entwickler-Süppchen" stellt sich der Kunde doch automatisch mit jedem Plugin eines anderen Entwicklers ein. Denn jeder kocht sein eigenes Süppchen. Und wenn ich der Meinung bin, dass bestimmte Mechanismen für meine Zwecke nicht ideal sind oder einfach nicht funktionieren, dann mach ich mir eben Gedanken und verwende eine Alternative. Wenn jeder dieser Meinung wäre wie du, dann würde es keine Innovationen mehr geben. So nach dem Motto Friss oder Stirb. Das ist ja Unsinn.
 

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Naja, über die Mechanismen die JTL für seine PLugins so vorsieht möchte ich garnicht im Detail eingehen, da sind so einige Probleme mit aufgetreten die selbst JTL nicht erklären konnte.
Aber schoon alleine schon aus dem Grund, dass der Kunde das Plugin dann jedesmal deinstallieren und anschließend wieder installieren muss damit die Ergänzungen überhaupt greifen hat mich von den regulären Sprachvariablen nach JTL Schmea weggebracht. Gerade wenn das Plugin auch eine Tabelle in der Datenbank anlegt. Dann sind nämlich alle vorigen Einträge wieder weg.

Sorry, aber das ist schlichtweg nicht korrekt. Das Plugin muss nicht deinstalliert werden, damit es eine neue Sprache annimmt.

Ich habe mir gerade mal die Arbeit gemacht und eine dritte Sprache aktiviert. ALLE Plugins hatten SOFORT die Möglichkeit, den Text für diese Sprache zu hinterlegen. Probier es aus, du wirst merken, wie klasse das ist :D
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Sorry, aber das ist schlichtweg nicht korrekt. Das Plugin muss nicht deinstalliert werden, damit es eine neue Sprache annimmt.

Ich habe mir gerade mal die Arbeit gemacht und eine dritte Sprache aktiviert. ALLE Plugins hatten SOFORT die Möglichkeit, den Text für diese Sprache zu hinterlegen. Probier es aus, du wirst merken, wie klasse das ist :D

Unglaublich, aber Recht haste, muss ich mich korrigieren :) Ich hatte den Wert innerhalb der VariableLocalized verändert und dieser wurde erst nach einer Neuinstallation übernommen. Da das aber nur die Vorgabe ist, ist das ja egal. Man lernt jeden Tag dazu. Danke für den Tipp!
 

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Änderungen in der XML bedürfen einer Installation/Update. Das ist korrekt. Denn die dort enthaltenen Daten werden in die DB geschrieben.
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.671
338
AW: Zugriff auf Sprachvariablen in PHP

Wenn "Innovationen" immer ihre Grundlage in Unwissenheit haben, dann sind es keine Verbesserungen, die dem Kunden weiter helfen.

Da hast du durchaus Recht. Aber woher soll das Wissen kommen wenn es nirgends erfasst ist außer durch learning by doing? Bleiben wir mal beim Beispiel der Sprachvariablen innerhalb der info.xml. Woher soll man denn wissen, dass der Knoten für die einzelnen Sprachen auch weggelassen werden kann? Für mich war das bisher immer so zu verstehen, dass damit die Variablen der einzelnen Sprachen definiert wird. Das ist aber nicht so, Bjoern3003 hats mir ja gezeigt. Das dazu.

Und mal ehrlich, das Feedback durch die "Wissenden" innerhalb des Forums ist meiner Meinung nach sehr dürftig, gerade wenn ich mir das Developer Forum hier anschaue. Und Feedback von JTL erhält man auch nur sehr sporadisch, besonders wenn es um spezielle Fragen geht. Niemand verschenkt offenbar gern sein wissen, was ich auch verstehen kann, schließlich verdient ihr und ich auch damit mein täglich Brot. Es gibt aber auch Ausnahmen, aber diese kommen meist nur in Diskussionen ans Tageslicht :)
 

Bjoern3003

Offizieller Servicepartner
SPBanner
13. November 2006
504
4
AW: Zugriff auf Sprachvariablen in PHP

Wenn man den offenen Source vom Shop studiert, erhält man aber jede Menge Infos darüber ;)

Man muss sich nur mal mit den Classen und Funktionen im Shop auseinandersetzen und Smarty verstehen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Der ganze Betrieb hat keinen Zugriff auf JTL Wawi 1.11.4 meh JTL-Wawi 1.11 10
Beantwortet Update von 1.11.5 auf 2.0 bleibt hängen JTL-Wawi 2.0 0
Neu Umzug SQL Datenbank auf neuen Server User helfen Usern - Fragen zu JTL-Wawi 2
Update 1.9.8.0 auf 1.11.7.0 sofort Meldung "Not Responding" JTL-Wawi 1.11 2
Neu 1000te Zugriffe aus der ganzen welt auf applepay.php Allgemeine Fragen zu JTL-Shop 2
Neu Problem nach Update auf Shop 5.6.1 - Impressum JTL-Shop - Fehler und Bugs 2
Seit umzug auf neuen Server und vorherigem update auf 2.0, startet worker nicht... JTL-Wawi 2.0 4
Macht es noch Sinn, auf dem Marktplatz OTTO zu verkaufen? Otto.de - Anbindung (SCX) 7
Neu Pickliste wird auf Packtisch und in Wawi unter Picklisten nicht angezeigt. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Strukturierte Daten vom Typ "Produkt" werden nach Update auf JTL Shop 5.6.1 nur fehlerhaft erkannt JTL-Shop - Fehler und Bugs 3
Neu Artikelpreis auf Anfrage Fehlermeldung Allgemeine Fragen zu JTL-Shop 0
Aufträge auf die Pikliste legen bringt Fehler DataTreeListView JTL-Wawi 1.11 2
Shop 5.5.3 / Eingabefelder auf IOS zoomt immer :-( Einrichtung JTL-Shop5 6
Artikelbild auf Lieferschein anzeigen JTL-Wawi 1.11 5
Neu Kategoriestruktur auf JTL-Wawi in WooCommerce Shop darstellen WooCommerce-Connector 2
Artikelbezeichnung auf der Rechnung anpassen von "Artikelname" in "Kurzbeschreibung" JTL-Wawi 1.10 4
Update auf 1.11.7 JTL-Wawi 1.11 4
Update von 1.11.6 auf 1.11.7: JTL Worker verbindet nicht mehr mit Datenbank (WaWi schon) JTL-Wawi 1.11 1
Neu Umstellung auf DHL Versenden 4.0 (REST-API) JTL-ShippingLabels - Ideen, Lob und Kritik 30
Neu DHL Versenden 4.0 - Firmenname nicht auf Label JTL-ShippingLabels - Ideen, Lob und Kritik 7
Neu Rechnung wird zusätzlich auf Labeldrucker ausgegeben JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Index auf tbesucher.dLetzteAktivitaet? JTL-Shop - Fehler und Bugs 2
Neu Austausch JTL-POS Tablet - Datenübertragung auf neues Gerät - Einrichtung Einrichtung / Updates von JTL-POS 0
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 0
JTL-Ameise: Export von Verkäufen auf Komponenten-Ebene JTL-Wawi 1.10 6
Neu Update der Version 1.2.2.2 auf eine aktuelle Installation von JTL-Wawi 10
GLS-Aufträge stehen auf „Teilgeliefert“, obwohl vollständig versendet – kein Versandkostenartikel vorhanden (JTL 1.10.14.1) JTL-Wawi 1.10 0
Neu Abbruch auf der Plattform löscht nicht mehr den Auftrag Arbeitsabläufe in JTL-Wawi 3
Neu Frage zur mobilen WMS-Anwendung auf Android JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Durch Massenupdate Menge auf ebay ändern User helfen Usern - Fragen zu JTL-Wawi 0
Neu Der Auftrag wird nicht ausgeliefert. Der Auftrag befindet sich bereits auf einer anderen Pickliste. User helfen Usern - Fragen zu JTL-Wawi 1
Verkaufseinheit wird nicht auf Angebot/Auftrag/Rechnung/Lieferschein ausgegeben JTL-Wawi 1.11 3
Beantwortet Herstellerslider auf Startseite entfernen Betrieb / Pflege von JTL-Shop 2
Neu POS-Server startet nicht mehr nach WaWi-update auf Version 1.11.6.0 JTL-POS - Fehler und Bugs 1
Neu Coupon auf Pickliste anzeigen lassen 5 + 1 Gratis Arbeitsabläufe in JTL-Wawi 5
Neu Frage zu SQL Statement - Kunden-Kommentar aus Auftrag auf Pickliste User helfen Usern - Fragen zu JTL-Wawi 1
Neu Falsche Berechnung auf dem Z-Bon JTL-POS - Fehler und Bugs 0
Neu Samsung TAB A7 + Swissbit TSE USB-Stick mit JSAUX Adapter OTG Typ C auf USB JTL-POS - Fragen zu Hardware 1
Neu Update auf 1.11.6 mittlerweile sinnvoll User helfen Usern - Fragen zu JTL-Wawi 0
Lieferbare Aufträge werden nicht auf WMS-Picklisten gesetzt JTL-Wawi 1.11 4
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Neu Newsletter: KI Webinare, JTL Wawi 2.0 und vieles mehr - Freue dich auf JTL Events! User helfen Usern - Fragen zu JTL-Wawi 5
Updat Wawi 1.3 auf Wawi 1.8 JTL-Wawi 1.8 1
Neu Update von Wawi 1.3 auf Wawi 1.8 JTL-Wawi 1.6 1
Versandgewicht auf Packliste JTL-Wawi 1.9 2
Neu Referenznummer Grösse auf den Versand Etiketten von DPD-Cloudservice und GLS Api JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Paket x/y auf Versandetikett bzw. Lieferscheinnummer und Paketanzahl fehlt Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Karussell gehen auf der Startseite nach Update auf 5.6.1 nicht mehr Betrieb / Pflege von JTL-Shop 8
Nachträgliche Änderung von Steuerart auf Innergemeinschaftliche Lieferung nicht möglich JTL-Wawi 1.11 4
Neu News im Blogsystem auf Blog ändern Allgemeine Fragen zu JTL-Shop 6

Ähnliche Themen