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.695
350
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.695
350
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.695
350
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.695
350
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.695
350
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.695
350
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.695
350
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.695
350
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
Zugriff verweigert nach Umzug auf neuen Rechner, X-Rechnung kann nicht gespeichert werden JTL-Wawi 1.11 4
Lizenz-Störung? Ich erhalte keinen Zugriff mehr zu meiner Wawi, egal welcher User JTL-Wawi 1.11 3
JTL-Wawi 1.11.7 Sporadischer Fehler - Zugriff verweigert. JTL-Wawi 1.11 4
Neu Feld "Informationen" auf Smartphone immer ausklappen Allgemeine Fragen zu JTL-Shop 2
Neu Update von 1.8.12.4 auf 2.0.5 - Kostenfreie Version - Registrierung erforderlich? User helfen Usern - Fragen zu JTL-Wawi 1
JTL Update auf 1.9 , danach Import Kundenspezifrische Preise velerhaft JTL-Wawi 1.9 0
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
nach Update von 5.3 auf 5.7 neue Position im Warenkorb "Gebühr" die auch in den Auftrag übernommen werden Einrichtung JTL-Shop5 2
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 4
Neu Amazon: Artikel-Highlight / Produkttitel auf 75 Zeichen begrenzt Amazon-Anbindung - Fehler und Bugs 8
Neu Produktionsaufträge tauchen nicht in der Workbench auf JTL-Plan&Produce - Fehler und Bugs 2
Bei Update auf 2.05 kam folgende Meldung JTL-Wawi 2.0 2
Ameise - Importvorlage auf 80 Spalten begrenzt? JTL-Wawi 2.0 0
Login Wawi nicht möglich nach Update auf 1.11.11 JTL-Wawi 1.11 1
Neu Anpassung Kundendaten auf XRechnung User helfen Usern - Fragen zu JTL-Wawi 0
Neu Absenderadresse auf Versandlabel ändern User helfen Usern - Fragen zu JTL-Wawi 1
Ameise (1.11.11.0) Export auf Clients nicht möglich - Das Dezimaltrennzeichen kann nicht die leere Zeichenfolge sein JTL-Wawi 1.11 5
Neu Hinweis zum Auftrag wird seit Update auf die 1.11 nicht mehr angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Umstellung auf Jera Datev Schnittstelle - keine Kundennummer im Kundencenter Schnittstellen Import / Export 2
JTL APP - Fehlermeldung nach Update auf Wawi 1.11. JTL-Wawi App 6
JTL Wawi 1.11. - Fenstergröße - Artikel auf Einkaufsliste setzen JTL-Wawi 1.11 13
Nach Update auf 2.0.3 Keine Fehlermeldungen mehr sichtbar Otto.de - Anbindung (SCX) 1
DPD Cloud Labeldruck auf Zebra LP 2844-Z seit Update auf JTL-Wawi 1.11.x fehlerhaft JTL-Wawi 1.11 3
JTL nach Update auf 2.0.3 im Bereich „Kunden“ extrem langsam JTL-Wawi 2.0 1
Neu DotLiquide Variable Voraussichtliches Lieferdatum auf Rechnung User helfen Usern - Fragen zu JTL-Wawi 1
Neu Betrag auf der Rechnung nach Rechnungskorrektur User helfen Usern - Fragen zu JTL-Wawi 1
Fehler nach Update auf Version 1.11.11 und 2.0.4 JTL-Wawi 2.0 7
Lohnt sich das Update von 1.11.6 auf 2.0.4 aktuell? JTL-Wawi 2.0 2
Neu DHL Versenden 4.0 Zolltarifnummer auf 8 Stellen kürzen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Internetmarke 2.0 - Direktdruck auf Umschlag JTL-ShippingLabels - Ideen, Lob und Kritik 3
Update auf 1.11.11 schlägt fehl JTL-Wawi 1.11 3
Neu Update Version 1.5 auf 1.11 - Download älterer Versionen als 1.8 Installation von JTL-Wawi 2
Neu Shop-Update auf 5.7.1: Sprachvariablen im Widerrufsformular werden nicht erkannt, obwohl vorhanden?! JTL-Shop - Fehler und Bugs 3
Erfahrungswerte Update von 1.8.12.2 auf 1.11.10 JTL-Wawi 1.11 4
Neu Umzug von sehr alter JTL Wawi Version auf neuen PC User helfen Usern - Fragen zu JTL-Wawi 3
Neu Rechnungskorrektur/Storno wird auf falsches Buchungskonto gebucht JTL-Wawi - Fehler und Bugs 1
Neu Umstellung auf DHL Versenden 4.0 leeres Versand Label JTL-ShippingLabels - Ideen, Lob und Kritik 5
Neu Angebotsname auf Amazon Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Konfigurationskomponenten auf Bons in separaten Positionen ausgeben JTL-POS - Fehler und Bugs 4
Neu Nach Update auf 1.11.10.0 Abgleich zu Ebay über 3 Stunden bei neuen Angeboten eBay-Anbindung - Fehler und Bugs 2
Beantwortet [WAWI-85758] Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 1
Neu Suche Workflow: Erstbestellung Shop auf Rechnung -> Auftrag Zurückhalten JTL-Wawi - Ideen, Lob und Kritik 1
Dashboard lädt nicht und Umsatzanzeige rechnet falsch seit Update auf 1.11.8 JTL-Wawi 1.11 8
Neu PayPal Plugin wirft Fehler auf einmal wegen telefonnummer JTL-Shop - Fehler und Bugs 3
Update von 1.10.15 auf 1.11.10 JTL-Wawi 1.11 11
Neu Falsch erzeugte Ausgangszahlung bei Teilzahlungen und Retoure (Kauf auf Rechnung) Arbeitsabläufe in JTL-Wawi 0
Neu Nach Update auf JTL-Wawi 2.0.3 keine WMS-Lager mehr auswählbar – Versand komplett blockiert JTL-Wawi 2.0 3
Update auf 1.11 verlangt ein Update auf aktuelleren SQL Server JTL-Wawi 1.11 7
Betreff: Umstellung Shipping 3 auf Shipping 4 nicht möglich JTL-Wawi 2.0 0
Neu Migration DHL Versenden 3.0 auf DHL Versenden 4.0 Dienstleistung, Jobs und Ähnliches 31

Ähnliche Themen