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.477
289
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.477
289
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.477
289
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.477
289
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: 41

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
232
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.477
289
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.477
289
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.477
289
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.477
289
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
Neu Fehler mit Zugriff auf die Datenbank (Exec Direct). Installation von JTL-Wawi 4
Neu Gleichzeitiger Zugriff von zwei Nutzern auf JTL-Shop-Backend Allgemeine Fragen zu JTL-Shop 2
Neu Google Bilder Bot Zugriff auf /dbeS/bild.php?a=1375538&n=1&url=0&s=0 Allgemeine Fragen zu JTL-Shop 3
Neu HT-Zugriff fehlgeschlagen bei 'Erscheint am' JTL-Ameise - Fehler und Bugs 1
Preiskalkulation auf Grundlage von Lieferantenpreise und Lieferantenbestand JTL-Wawi 1.8 1
Kettensymbol auf alle Artikel verwenden Otto.de - Anbindung (SCX) 0
Neu ++ Fehler beim update von 1.55.5.3 auf version 1.8.11.0 ++ Installation von JTL-Wawi 8
Neu Verkaufskanal POS Kundengruppen Preis brutto auf Artikeletikett drucken Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Wasserzeichen auf Lieferschein und Rechnung auf ganze A4 Seite User helfen Usern - Fragen zu JTL-Wawi 5
Neu Keine Bestellung möglich über Nova 5.4 auf 4K Laptop JTL-Shop - Fehler und Bugs 16
Bestellungen beim Lieferanten - Aufteilung auf verschiedene Läger ? JTL-Wawi 1.9 3
Neu JTL Artikel auf Shopify als Varianten anzeigen Shopify-Connector 2
Neu Sehr lange Ladezeit der Produktseite nach Upgrade auf Version 5.4 Allgemeine Fragen zu JTL-Shop 6
JTL-Search - Hardwarestörung auf einem der Search-Server (s7) Störungsmeldungen 0
Neu Nach update auf 5.4 kein Login mehr möglich JTL-Shop - Fehler und Bugs 2
Neu JTL Shop 5.4 - Seite 1 verschachtelt sich bei klick auf Seite 1 JTL-Shop - Fehler und Bugs 0
Nach Umstieg auf V5 Paypal express weg. Einrichtung JTL-Shop5 5
Neu Update JTL Wawi von 1.0.0.0 auf 1.8.10.0 Installation von JTL-Wawi 8
Neu Warnung: Update auf Shop 5.4 Installation / Updates von JTL-Shop 39
POS Zahlungen tauchen in Wawi unter Zahlungen nicht mehr auf JTL-Wawi 1.9 0
Neu Umstellung auf den Amazon Lister 2.0 Amazon-Lister - Ideen, Lob und Kritik 0
API Zeichenbegrenzug auf 20 Zeichen Otto.de - Anbindung (SCX) 1
Neu Nach Update auf 5.4 klappt einiges nicht mehr ! Installation / Updates von JTL-Shop 9
Neu Update auf 5.4.0 schlägt fehl Installation / Updates von JTL-Shop 4
Neu JTL Shop Subscription wurde durch Umstellung auf "Advanced Edition" teils doppelt berechnet Allgemeine Fragen zu JTL-Shop 1
Neu Umfrage: Scanpflicht auf Artikelebene (Nur für bestimmte Artikel aktivieren/deaktivieren) JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Filter und Workflows nicht auf Vaterartikel anwendbar JTL-Workflows - Fehler und Bugs 0
Neu Packtisch+ wartet nicht auf TrackingID Import Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 6
Neu Upgrade CFE auf Advanced wenn Hosting gebucht Allgemeine Fragen zu JTL-Shop 6
Neu Retouren/Rückerstattungen auf Amazon Arbeitsabläufe in JTL-Wawi 1
Neu Fehler bei Coupons bei Wechsel von 4 auf 5 Betrieb / Pflege von JTL-Shop 0
Neu Artikelnamen auf der Homepage vollständig sehen. Er ist wenn er zu lang ist verkürzt. Allgemeine Fragen zu JTL-Shop 2
Neu Anfägerfragen und Installtion auf ngix server Installation / Updates von JTL-Shop 13
Nach Update auf 1.9 alle Drucker verschwunden JTL-Wawi 1.9 6
Seit Wechsel auf DPD werden keine Versanddaten mehr an Kaufland übertragen. kaufland.de - Anbindung (SCX) 1
Neu Amazon Lister 2.0 Fehlercode: SLR402 Bild "1.jpg" für das Angebot mit SKU "xxxxx" auf Channel "AMAZONDEJTL" wurde nicht gefunden Amazon-Lister - Ideen, Lob und Kritik 0
Update von 1.6.47.2 auf 1.9.5.3 (Registrierung, usw.) JTL-Wawi 1.9 1
Neu Inhalt eines Containers mehrfach auf verschiedenen Unterseiten darstellen Allgemeine Fragen zu JTL-Shop 4
Neu Bestand auf einem Amazon-Marktplatz auf Null setzen. User helfen Usern - Fragen zu JTL-Wawi 0
Ändern der Bearbeitungszeit auf Amazon lässt sich nicht auf Länder eingrenzen JTL-Wawi 1.9 0
Attribute für EWR Pflichtangaben (ab 13.12.2024) auf den Marktplätzen otto.de & kaufland.de Otto.de - Anbindung (SCX) 8
Fehler bei Update von 1.5.55.8 auf 1.7.15.6 ( Unbehandelte Ausnahme #7110FFD83C0136E0 vom Typ JTL.Database.SqlUpdater.UpdateException) JTL-Wawi 1.7 0
Neu Wie finde ich per SQL heraus welche Aufträge auf Teillieferbar stehen? JTL Ameise - Eigene Exporte 1
Neu DPD A6 Versandlabel auf A4 Etiketten Bogen drucken JTL-ShippingLabels - Fehler und Bugs 0
JTL Wawi Update 1.8.12.4 auf 1.9.5.2 nicht möglich JTL-Wawi 1.9 4
Neu Kontaktformular auf einer eigenen Seite hinzufügen Allgemeine Fragen zu JTL-Shop 1
Neu QR Code auf Rechnung bei PayPal fehlerhaft User helfen Usern - Fragen zu JTL-Wawi 0
Neu WMS Wareneingang falscher Artikel auf Etikett JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Beantwortet Artikelbilder auf Lieferschein / Rechnung / Angebot. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 8
Neu [Liquid Error: Ein Aufrufziel hat einen Ausnahmefehler verursacht] Fehlermeldung in meiner Designvorlage auf Ebay eBay-Designvorlagen - Fehler und Bugs 0

Ähnliche Themen