Extensions Tutorial: Teil 10 – Übersetzungen
Nun sind wir im letzten Teil unseres Tutorials angelangt. Zum Schluß wollen wir unsere Erweiterung noch für die Verwendnung in mehreren Sprachen vorbereiten.
1. Dateistruktur anpassen
app/
etc/
modules/
- Mxperts_All.xml (Oder Ihre Firmenname IhreFirme_All.xml)
code/
local/
Mxperts/ (Oder Ihre Firmenname IhreFirme_All.xml)
Tutorial/ (Bezeichnung Ihrer Erweiterung)
Block/
- Index.php
Admin/
- Main.php
Main/
- Grid.php
- New.php
New/
- Form.php
- Edit.php
Edit/
- Form.php
controllers/
- AdminController.php
- IndexController.php
etc/
- config.xml
Helper/
- Data.php
Model/
- Tutorial.php
Mysql4/
- Tutorial.php
Tutorial/
- Collection.php
sql/
tutorial_setup/
- mysql4-install-0.2.0.php
- mysql4-upgrade-0.1.0-0.2.0.php
locale/
en_US
- Mxperts_Tutorial.csv
de_DE
- Mxperts_Tutorial.csv
Erklärung:
Im Verzeichnis app/locale befinden sich die Sprachfiles in den jeweiligen Verzeichnissen wie en_US,de_DE oder de_CH, etc. Wir verwenden für unser Module den Dateinamen Mxperts_Tutorial.csv, der in der config.xml noch definiert werden muss. Für jede Sprache die übersetzt werden soll muss diese Datei jeweils erstellt werden. IN unserem Fall erstellen wir nur en_US und de_DE.
2. config.xml anpassen
<?xml version="1.0"?>
<config>
<modules>
<Mxperts_Tutorial>
<version>0.2.0</version>
</Mxperts_Tutorial>
</modules>
<global>
<models>
<tutorial>
<class>Mxperts_Tutorial_Model</class>
<resourceModel>tutorial_mysql4</resourceModel>
</tutorial>
<tutorial_mysql4>
<class>Mxperts_Tutorial_Model_Mysql4</class>
<entities>
<tutorial>
<table>tutorial</table>
</tutorial>
</entities>
</tutorial_mysql4>
</models>
<helpers>
<tutorial><class>Mxperts_Tutorial_Helper</class></tutorial>
</helpers>
<blocks>
<tutorial>
<class>Mxperts_Tutorial_Block</class>
</tutorial>
</blocks>
<resources>
<tutorial_setup>
<setup>
<module>Mxperts_Tutorial</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</tutorial_setup>
<tutorial_write>
<connection>
<use>core_write</use>
</connection>
</tutorial_write>
<tutorial_read>
<connection>
<use>core_read</use>
</connection>
</tutorial_read>
</resources>
</global>
<adminhtml>
<menu>
<tutorial translate="title" module="tutorial">
<title>Tutorial</title>
<sort_order>100</sort_order>
<action>tutorial/admin</action>
</tutorial>
</menu>
<translate>
<modules>
<Mxperts_Tutorial>
<files>
<default>Mxperts_Tutorial.csv</default>
</files>
</Mxperts_Tutorial>
</modules>
</translate>
</adminhtml>
<frontend>
<routers>
<Mxperts_Tutorial>
<use>standard</use>
<args>
<module>Mxperts_Tutorial</module>
<frontName>tutorial</frontName>
</args>
</Mxperts_Tutorial>
</routers>
<translate>
<modules>
<Mxperts_Tutorial>
<files>
<default>Mxperts_Tutorial.csv</default>
</files>
</Mxperts_Tutorial>
</modules>
</translate>
</frontend>
</config>
Datei: app/locale/en_US/Mxperts_Tutorial.csv
ID,ID Name,Name Tags,Tags Summary,Summary Single element,Single element List of %s elements,List of %s elements Edit Element'%s,Edit Element'%s Add New,Add New Element(s),Element(s) Add New Element,Add New Element Element Details,Element Details Action,Action Edit,Edit Delete,Delete Item Details,Item Details
Datei: app/locale/de_DE/Mxperts_Tutorial.csv
ID,ID Name,Bezeichnung Tags,Tags Summary,Zusammenfassung Single element, Einzelnes Element List of %s elements,Liste von %s Elementen Edit Element'%s,Bearbeite Elemente %s Add New,Neu Element(s),Element(e) Add New Element,Neues Element erstellen Element Details,Element Detailansicht Action,Aktion Edit,Bearbeiten Delete,Löschen Item Details, Element Details
Nun sind die Bezeichnungen für beliebige Sprachen erweiterbar. Hier sehen Sie auch wie die Defintion von Sprachfiles funktioniert. Wenn Sie nun eine Erweiterung verwenden die ohne Sprachfiles und ohne Sprachunterstützung ausgeliefert wurde, sind Sie nun in der Lage diese nachzurüsten.
Ich hoffe Sie hatten Spaß mit meinem Tutorial und ich freue mich auf Ihr reges Feedback. Wenn Sie aus diesem Tutorial Ihre eigenen Erweiterungen abgeleitet haben, können wir diese hier gerne Vorstellen.
Download des fertigen Tutorials: mxpert_ext_tut_10
Vielen Dank für das ausführliche Tutorial, werde es bei Gelegenheit durcharbeiten um mehr Erfahrung mit Magento zu erlangen.
Habe im Moment das Problem, dass ich ein eigenes umfangreiches Feedbackformular erstellen möchte und da ein Captcha eingebaut habe. Das Captcha-Bild wird mit PHP generiert (separates Skript) und eine Sessionvar mit dem Code geschrieben mit welchem die Eingabe des Benutzers auf der Folgeseite geprüft wird.
Mein Problem ist, dass ich es einfach nicht schaffe auf diese Sessionvariable zuzugreifen, auch wenn ich die SessionID ins externe (gleicher Server, nur anderes Verzeichnis) Bildskript übernehme und damit aufrufe.
Würdest du mir helfen oder vielleicht sogar dein Tutorial so erweitern, dass darin Sessionvariablen geschrieben und ausgelesen werden können?
War diese Antwort hilfreich?
LikeDislikeHallo,
danke für Dein Feedback, hast Du wegen Deinem Problem schon im Forum von Magento gesucht?
http://www.magentocommerce.com/boards/viewforum/25/
Ich denke dort ist der bessere Platz für solche Fragen.
Viele Grüße
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeHi,
kann es sein, dass sich in dem Code von app/locale/de_DE/Mxperts_Tutorial.csv noch ein kleiner Fehler eingeschlichen hat? Muss es nicht heißen:
Edit Element’%s,Bearbeite Elemente %s (das s fehlt hinter dem letzten %-Zeichen oder?
Ansonsten, super gutes Tutorial, vielen Dank.
Marco
War diese Antwort hilfreich?
LikeDislikeJa, das stimmt – ist korrigiert.
Danke für den Hinweis.
War diese Antwort hilfreich?
LikeDislikeSuper Tutorial, klasse… endlich genau das was ich schon seit Tagen mir versucht habe vergebens selber anzueignen!!
Besten Dank für die Mühe! Was mich auch brennend interessieren würde wie man dort nun auch auf vorhandene Produkte zugreifen kann (zum Beispiel jedem Artikel ein Tutorial (oder eben etwas anderes je nachdem wie man das Modul anpasst) zuzuweisen kann)?
War diese Antwort hilfreich?
LikeDislikeIch kann mich meinen Vorgängern nur anschließen – Klasse Tutorial, man hat tatsächlich von jeder Seite etwas gesehen und kann mit den erworbenen Kenntnissen ernsthaft in kommende Projekte gehen – da das “wo ist was” und wie funktioniert es… auf jeden Fall vermittelt wurde.
Vielen Dank!
War diese Antwort hilfreich?
LikeDislikeNoch mal Danke für das lange und ausführliche tutorial.
Ich bin zwar noch nicht durch, bin aber guter Dinge!
War diese Antwort hilfreich?
LikeDislikeHallo,
erst mal danke für das Tutorial! Echt gut gemacht zum Einstieg. Ich bekommen allerdings mit meinen selbst nach getippen als auch mit deinen Dateien aus dem Tutorial folgende Fehler:
Beim Aufruf im backend:
dbModel read resource does not implement Zend_Db_Adapter_Abstract
beim versuch einen neuen Eintrag anzulegen:
Fatal error: Call to a member function beginTransaction() on a non-object in /Applications/MAMP/htdocs/magento/app/code/core/Mage/Core/Model/Resource/Abstract.php on line 63
Magento ver. 1.3.2.4
Locale Entwicklungsumgebung MAMP / MAC OSX
Any Ideas?
War diese Antwort hilfreich?
LikeDislikeAuch von mir ein großes Kompliment für das gelungene Tutorial. Hat meine Lust an Magento (wieder-)erweckt. Ich wollte Magento ob des großen Einarbeitungs- und Lernaufwands eigentlich gerne ignorieren. Dummerweise muss ich eine kleine Erweiterung erstellen und da kommt das Tutorial gerade recht.
Ich hab das gleiche Problem beim neuen Eintrag wie oliver:
Fatal error: Call to a member function beginTransaction() on a non-object in /kunden/XXXXXXXX.de/hosting/XXXXXXX/Magento/app/code/core/Mage/Core/Model/Resource/Abstract.php on line 63
Hat hier jemand eine Idee wo der Fehler liegen könnte?
Gruß
Mark M
War diese Antwort hilfreich?
LikeDislikeHallo,
ich habe anfangs das Tutorial Schritt für Schtitt von Teil 1-10 nachbauen wollen, bin aber schon an der Stelle mit dem Menüpunkt im Backend (Teil2) gescheitert [Fatal error: Class 'Mxperts_Tutorial_Helper_Data' not found...]. Hab mir natürlich auch alle Kommentare durchgelesen und auf Groß- und Kleinschreibung geachtet. Letztendlich habe ich mir dann das fertige Modul unter Teil 10 runtergeladen. Selber Fehler. Cache mehrfach geleert, alle Einträge zu Mxpert aus der DB gelöscht, /var/cache/ geleert… nichts passiert. Habe ich etwas übersehen oder ist das Modul zum runterladen buggy?
LG
War diese Antwort hilfreich?
LikeDislikeProblem gelöst! Musste nur mal den Compiler deaktivieren… Bis ich diesen Lösungsansatz gefunden habe sind mehrere Stunden vergangen…
War diese Antwort hilfreich?
LikeDislikeHerzlichen Dank für das sehr gute und nutzreiche Tutorial! Habe noch ein paar offene Fragen (an den entsprechenden Stellen hinterlegt), bleibe aber dran. Sobald ich Lösungen habe, poste ich …
Super Sache Johannes! Grüsse aus der Schweiz!
Joni
War diese Antwort hilfreich?
LikeDislikeHallo,
erstmal – super Tutorial – danke.
Kann mir jemand sagen wie ich die Ausgabe auf eine CMS Seite bekomme? Also als Block?
Danke
War diese Antwort hilfreich?
LikeDislikeWahnsinnsarbeit und das ganze funktioniert sogar immernoch mit Magento 1.5.0.1! Respekt und großen Dank. Die Welt von Magento hat sich mir geöffnet.
War diese Antwort hilfreich?
LikeDislike