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.629
325
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.629
325
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.629
325
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.629
325
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.629
325
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.629
325
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.629
325
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.629
325
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 auf Artikel und Bestellungen nach Update nicht möglich JTL-Wawi 1.11 0
Neu Problem: Sprachumschaltung auf der Startseite nicht möglich bzw. nach 404-Fallback inkonsistent (nicht eingeloggte Benutzer) Einrichtung von JTL-Shop4 2
JTL-Wawi startet nach Neustart nicht / hängt auf neu eingerichtetem PC (Remote-Datenbank) JTL-Wawi 1.11 11
Neu Kundenwechsel von B2C auf B2B bekommt B2C angezeigt User helfen Usern - Fragen zu JTL-Wawi 5
Neu Fehler bei der Anmeldung nach Update auf 1.11.5 Installation von JTL-Wawi 0
Seit dem Update auf JTL Wawi 1.11.4 funktioniert der Workflow "Datei Schreiben" nicht JTL-Wawi 1.11 1
Neu JTL Wawi auf Windows Server 2025 mit SQL 2025? Installation von JTL-Wawi 6
Seit Update auf 1.11.4 Workflow für Kartonauswahl gibt error JTL Das Objekt mit Nullwert muss einen Wert haben. BrowsePk: 152325 WorkflowAktionId: 155 JTL-Wawi 1.11 1
Neu Verwendetes Guthaben auf Rechnung ausweisen User helfen Usern - Fragen zu JTL-Wawi 9
Neu Bons werden nach Wechsel auf neue Kasse nicht mehr signiert Allgemeine Fragen zu JTL-POS 0
Neu JTL auf dem Server duplizieren für Experimente Installation von JTL-Wawi 1
Neu Interne Links in den Dropdowns "Sortierung" und "Artikel pro Seite" auf follow setzen Betrieb / Pflege von JTL-Shop 1
Angebot auf EBay erhält Netto Preise aus JTL eBay-Anbindung - Fehler und Bugs 5
Update auf 1.11.4 Aktualisierung hängt -> "Keine Rückmeldung" JTL-Wawi 1.11 2
25 Gutscheine für Kunden auf Rechnung erstellen Allgemeine Fragen zu JTL-Vouchers 0
Neu AMAZON LISTER 2.0 Hochladen nicht möglich! Satus " Wartet auf Rückmeldu..." Amazon-Lister - Fehler und Bugs 0
Neu Nach Update auf JTL Shop 5.6.1 - Play/Pause Buttons im Layout!? Installation / Updates von JTL-Shop 6
Neu JTL_DirectQuery - SQL Abfrage Anzahl der Pakete auf Versandliste (DPD) User helfen Usern - Fragen zu JTL-Wawi 3
Nach Update auf 1.11.4 (von 10.13.1) werden keine Artikel unter F2 Artikel mehr angezeigt, sind aber da! JTL-Wawi 1.11 0
Neu JTL Wawo Objektverweis wurde nicht auf eine Objektinstanz festgelet JTL-Wawi - Fehler und Bugs 0
Neu Seit Update auf 1.10.15.0: eBay Fahrzeugverwendungsliste Fehler eBay-Anbindung - Fehler und Bugs 3
Neu Seit Update auf 1.11.4 läuft der CSV Abgleich ins Endlose! JTL-Ameise - Fehler und Bugs 6
Neu Nach Update komme ich nicht mehr auf die Shop Seite Installation / Updates von JTL-Shop 6
Kein vollständiges Update auf 1.11.4.0 möglich JTL-Wawi 1.11 1
Neu Darkmode auf Tablet Allgemeine Fragen zu JTL-POS 0
Neu Bei Klick auf Warenkorb Button nicht direkt Warenkorb Templates für JTL-Shop 8
Seit Update auf 1.11.4 werden Rechnungen nicht mehr korrekt gespeichert / nur Mini-Ausschnitt sichtbar JTL-Wawi 1.11 4
Neu Update WAWI 1.10.14.3 auf 1.11.4.0 Installation von JTL-Wawi 4
Seit Update auf 1.11.4: Hunderte Artikel plötzlich „in Aufträgen reserviert“, aber keine passenden Aufträge vorhanden JTL-Wawi 1.11 5
Neu Wawi 0.9.9.923 zwecks Aufbewahrungspflicht auf Windows 11 PC umziehen Installation von JTL-Wawi 5
Druck von Versandetiketten auf Zebra Drucker ZM400, ZT410 nicht möglich JTL-Wawi 1.11 8
Neu Update auf 5.6.1. – Trusted Shops Plugin erzeugt Fehlercode 500 Installation / Updates von JTL-Shop 6
Neu Onpage Composer - Entwürfe auf mehrere Kinder/Varianten importieren Betrieb / Pflege von JTL-Shop 1
Neu Hohe CPU-last auf Shopserver - JTL Shop Query? Allgemeine Fragen zu JTL-Shop 9
Update von 1.6 auf ? JTL-Wawi 1.6 4
Issue angelegt [WAWI-86213] Kartonagen nicht mehr über Workflow auswählbar nach Update auf 1.11.3 JTL-Workflows - Ideen, Lob und Kritik 1
Neu Von jetzt auf gleich Shop down "ohne" Fremdeinwirkung JTL-Shop - Fehler und Bugs 5
Bild auf Rechnung bewegt sich nicht mit den Positionen JTL-Wawi 1.11 8
Neu Nach Update auf 2.4.0 kein Bestell- & Artikeldatentransfer mehr möglich WooCommerce-Connector 0
Neu Amazon Artikel auf verschiedenen Sellercentrals aktivieren/deaktivieren? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bilder von Kinderartikeln auf Vaterartikel kopieren via SQL Eigene Übersichten in der JTL-Wawi 2
Neu Probleme bei der Umstellung von Varkombi auf Konfigurationsartikel User helfen Usern - Fragen zu JTL-Wawi 0
Neu OPC-Bilder werden nach Update auf 5.6.0 nicht mehr generiert JTL-Shop - Fehler und Bugs 3
Neu Nach Update auf neueste Shop-Version – Datenbank plötzlich leer / Wie weiter? Backup, Rollback oder neu aufsetzen? JTL-Shop - Fehler und Bugs 9
Neu JeraSoft stellt auf Auftragsmenge um ! User helfen Usern - Fragen zu JTL-Wawi 59
Neu JTL-Wawi Aufträge die mit JTL-POS bezahlt wurde tauchen im Tagenabschluss auf JTL-POS - Fehler und Bugs 7
Neu Lieferschein: Hinweis auf Teillieferung in Ausgabe 2.0 Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Umlagerungsnummer auf Lager-Packliste Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Kassensysteme der Zukunft – wie gut sind aktuelle Lösungen auf kommende Anforderungen vorbereitet? Starten mit JTL: Projektabwicklung & Migration 1
Sporadischer Absturz beim Bearbeiten eines Artikel - nach Klick auf speichern JTL-Wawi 1.11 7

Ähnliche Themen