VirtueMart - Know How und Bugfixes

Mehrsprachigkeit von VM 2 Custom-Fields

Bewertung:  / 1
SchwachSuper 

Problembeschreibung

Leider ist es in der Version bis zur 2.0.18 so, dass nicht alle Elemente von VirtueMart konsequent multilanguage-fähig sind. So z.B. die Custom-Fields (selbsterstelle Felder). Während für die Bezeichnung der Felder die Übersetzungen noch funktionieren, sind die Benennung der Selektions-Options nicht über das Joomla-Language-Overriding beschreibbar. Statt dessen wird hier ausschließlich mit den eingegebenen Values der Felder gearbeitet. Ganz sicher wird das in einer der nächsten Versione von VM erfolgen, doch derweil muss man sich im Notfall selbst behelfen.

Dieser Workaround soll beschreiben mit welchen Maßnahmen das zu erreichen ist. Es ist aber zu beachten, dass dieser Workaround Eingriffe in den Core von VM bedeuten. Man soll sich also zum einen mit php einwenig auskennen und sich bewusst sein, was Core-Eingriffe für Nachteile mit sich bringen können. Wer sich unsicher ist, Finger davon lassen, Profi machen lassen oder warten bis es mal Core-Bestandteil ist.

 



 

 

Einige technische Hintergründe und Wissenswertes zum Thema

  1. Alle Texte die sprachabhängig angezeigt werden sollen, werden in Joomla 2.5 / 3.0 / ... durch dieses Konstrukt JText::_('TEXT') erzeugt. Das funktioniert im neuen VM 2 ebenfalls, im Gegensatz zu früheren Versionen von VirtueMart, die hier noch eigenen Bilbliotheken verwendeten.
  2. Joomla bietet neben seinen eigenen Sprachdatei auch die Möglichkeit, dass der Projektmanager eigenen Sprachdateien aufbauen kann. Diese können zwei Zwecke erfüllen:
    1. entweder bestehende Sprachkonstrukte (im Joomla-Jargon Sprachschlüssel genannt) durch eigenen Varianten zu ersetzen (was einfach dadurch erfolgt, dass der Phrasenbezeichner absolut identisch verwendet wird und damit überschrieben wird
    2. oder man will eigenen Sprachphrasen hinzufügen, die es so noch nicht gab, so z.B. Menü-Einträge oder wie in unserem Fall Feldname und Inhalte von Selektionsfeldern in Custom-Produkten.
  3. Für diesen Zweck wird in Joomla eine Datei language\overrides\de-DE.override.ini erzeugt - entspr. mit ähnlichem Dateinamen für die weiteren Sprachen. Diese gleiche Datei steht dann auch in VM zur Verfügung. Deshalb bietet VM selbst auch kein eigenes Sprach-Overriding an, was jedoch meines Erachtens nicht schlecht wäre, weil man dann diese Sprachdatei nur componentenabhängig laden würde, was das Projekt evtl. etwas beschleunigen würde.
  4. Für die Pflege diese Sprachdatei hat Joomla einen eigenen Adminbereich eingerichtet zu finden unter Erweiterungen > Sprachen > Overrides. Hier sollte man dann rechts in der Dropdownliste die Zielsprach auswählen und durch Klicken auf den Button Neu kann man dann eigenen Schlüssel und Phrasen anlegen. Das wird für jede Zielsprache und jede weitere Phrase wiederholt. Alternativ kann man natürlich auch manuell per Editor die o.g. ~.override.ini-Datei für die jeweiligen Sprachversionen pflegen.

  5. Verantwortlich für die Ausgabe der Benutzerdefinierte Feldern in VM ist das Script admininstrator/components/com_virtuemart/models/customfields.php. Für die verschiedenen Benutzerfelder-Typen gibt es entspr. Methoden zu  deren Darstellung, so z.B. für die Custom-Price-Felder vom Type V in der Methode getProductCustomsFieldCart().

 

Modifikation von customfields.php zur sprachkonformen Ausgabe

Mit der Modifikation des Scriptes customfields.php und dort die Methode getProductCustomsFieldCart() wollen wir erreichen, dass die Selections-Options in den Dropdownlisten übersetzt werden.

Dazu modifizieren wir die Zeile zur Übergabe von $productCustom->custom_value an $productCustom->text durch ergänzen der Sprachmethode JText::_(); (ca. Zeile 873):

if ($group->field_type == 'V') {
	$default = current ($group->options);
	foreach ($group->options as $productCustom) {
		$price = self::_getCustomPrice($productCustom->custom_price, $currency, $calculator);
		$productCustom->text = JText::_ ($productCustom->custom_value) . ' ' . $price;

Immerhin, bei den Feldname (Titel) unterstützt VM bereits die Sprachumsetzung. Es muss hierfür also lediglich im Feld Titel für das selbsterstellte Feld der Sprachschlüssel eingetragen werden.

{jcomments on} 

 

 

 

  • Gast - Ad.

    Diese Idee ist keineswegs neu, im übrigen könnte man sie auch unterbringen, indem man die customfields im Override der Details überschreibt.<br /><br />Sie funktioniert aber nicht, wenn Kunden ihre Daten sprechend anlegen wollen, da ist es besser man vergibt unterschiedliche Feldtitle mit -de und -en etc. und fragt diese innerhalb der Ausgabeschleife ab.

  • Gast - ollie aus K.

    Als Antwort auf: Gast - Ad.

    Klingt sehr gut und simpel, aber ich bekomme da einfach nichts hin. Vielleicht könntest Du mir einen Tipp geben!?!<br /><br />Habe z.B. ein Bild gedruckt auf drei verschiedenen Materialien und in zwei verschiedenen Größen. Habe sozusagen ein "imaginäres" Produkt ohne Preis (das nicht angezeigt) und dann fünf verschiedene Varianten angelegt (Gedruckt auf A, B, C und die Größen 1 und 2). Über selbsterstellte Felder habe ich die Auswahlfelder mit "Plugins" und "stockable variants" die Auswahlfelder angelegt.<br /><br />Das klappt auf der "deutschen Seite" genau, wie ich es mir vorgestellt habe! Natürlich hätte ich auf der englischen Seite gerne, das in dem Auswahlfeld "Material" z.B. anstatt "Leinwand", "Canvas" steht. Leider bekomme ich auf der "englischen Seite", zwar die Varianten angezeigt und kann diese umbenennen (also ihnen englische Titel geben), aber die Auswahlfelder für "Material" und "Grösse" werden mir dort überhaupt nicht angezeigt. <br /><br />Wo liegt da der Denkfehler, bzw. wie kann ich dieses Problem lösen? Recherchiere und tüfftele schon seit Tagen daran herum, aber irgendwie scheint außer mir niemand das Problem zu haben, und ich finde einfach keine Lösung! :sad: Für Hilfe wäre ich wirklich sehr dankbar! Vielen Dank im voraus!

  • Gast - mD.SK

    Als Antwort auf: Gast - ollie aus K.

    Sind Sie mal den Hinweisen von Ad. gefolgt? Mein obiger Text ist nicht unbedingt als Anleitung gedacht sondern mehr als Diskussion. Wenn Ihnen dazu auch in den VM-Foren keine Lösung angeboten wird, müsste man sich mit Ihrer konkreten Produktkonstellation mal auseinandersetzen. Das braucht aber Zeit um zu sehen, ob es an Ihren Anlagen liegt oder VM hier noch "nicht ganz fertig" ist. Wie in meinem obigen Beitrag zu lesen, findet man in den Quellen schon immer mal wieder so'n paar Stellen, wo die Multilang.-Fähigkeit nicht kompl. durchimplementiert ist.

Einen Kommentar verfassen

Als Gast kommentieren

0
Deine Kommentare erfordern die Moderation durch den Administrator
Nutzungsbedingungen.
Suche - Kategorien
Suche - Inhalt
plg_search_attachments
VM - Search, Virtuemart Product

Ihr Warenkorb

 x 
Ihr Warenkorb ist noch leer.