[TYPO3-german] WG: Tip zu mehrsprachigen Extensions

Andre Dittmar typo3 at hotbytes.de
Thu Jul 20 14:17:16 CEST 2006


Hallo Michael,

>> $markerArray['###LABEL_FIRST###'] = $this->pi_getLL('label_first');
>> bekommt keine Daten aus der locallang.xml und ich verstehe nicht wieso?

Wenn Du in Deiner locallang.xml ein solches Label hast, sollte dieses auch eingesetzt werden. Du musst das Label halt für alle Sprachen anlegen, wobei ja "default" immer schon vorhanden ist und i.d.R. die englische Sprachversion ist (oder sogar sein sollte?).
Für die deutsche Version legst Du Dir dann halt einen neuen Node analog zu der default-Variante im XML-File an. 

>> Aber mir kommt es auch so vor als ob die vom kickstarter angelegte
>> locallang-xml-Datei auch nur für das Backend und nicht für das
>> Frontend-Plugin ist... Muss ich irgendwo anders ein neues locallang.xml
>> erstellen?

Im Hauptverzeichnis Deiner EXT gibt es eine locallang_db.xml, diese ist in der Tat für die Formulare im Backend gedacht. Der Kickstarter legt Dir im Verzeichnis pi1 aber auch eine locallang.xml an, diese ist ausschliesslich für die Sprachversionen der Ausgabe im Frontend gedacht (zumindest handhabe ich das so).


>> Und die zweite Frage: Angenommen ich bekommen den markerArray gefüllt, wie
>> sage ich Typo3, dass diese dann in das Template eingestzt werden sollen?

Ok, hier mal ein paar Basics:

1. Templatefile in member variable laden,z.B.:
$this->templateCode = $this->cObj->fileResource($this->conf['templateFile']);
// $this->conf['templateFile'] ist eine Angabe im Typoscript-Setup für
// die Extension, da steht der Pfad zum Templatefile drin.
// z.B: fileadmin/templates/tx_myextension.html

2. Teilbereich für des Templatefiles in Variable laden:
$tmplForm = $this->cObj->getSubpart($this->templateCode, '###TEMPLATE_FORM###');
// Hiermit lädst Du eine Teilbereich Deines Templates in eine Variable. Der
// Teilbereich enthält hardcodiertes HTML und Marker in der Form
// ###LABEL_FIRSTNAME###. Diese Marker sollen durch Inhalte z.B. aus der DB
// oder aus einem locallang.xml ersetzt werden.

3. Array mit Werten befüllen
$markerArray['###CLASS###'] = $this->class;
$markerArray['###LABEL_FIRSTNAME###'] = this->pi_getLL('label_firstname');
$markerArray['###VALUE_FIRSTNAME###'] = $result['first_name'];
// usw...
// Die Marker können halt mit beliebigem Content gefüllt werden, so hast Du
// nachher für jeden Marker in dem Array einen entsprechenden Wert zugewiesen.

4. Dein Teilbereich des Templates mit den Werten füllen:
$content = $this->cObj->substituteMarkerArray($tmplForm,$markerArray);
// Nun wird der eigentliche Content erzeugt und einer Variablen zugewiesen.
// Dies kann nun per return ausgegeben werden.


>> Sorry, aber ich bekomme es irgendwie nicht hin, aber jeder Anfang ist
>> schwer...Ich weiß auch immer nicht ob es schon vorgefertite Funktionen in
>> der Typo3 Api gibt oder ob man das alles selber programmieren muss....

Is klar :-) Du kannst Dir mal die Extension Extension Development Evaluator (extdeveval) installieren. Die installiert neben einem Modul mit nützlichen Developer-Funktionen auch eine Leiste mit Links zu den wichtigsten API-Dokumentationen. Ich hab die bei mir im Firefox in einem Bookmarkfolder und kann da immer mal wieder nachschauen. Das sieht dann für die Templatefunktionen z.B. so aus:
http://web1.hotserved.de/typo3conf/ext/extdeveval/apidocs/tslib_content_api.html
(Schau mal unter "HTML template processing functions", da wird Dir dann geholfen)


>> Vielleicht noch ein bißchen Quellcode:

Hilft im Moment nicht wirklich weiter ;-)


>> Wie geht es nun weiter? Wenn es nichts fertiges gibt, würde ich per eigener
>> Programmierung in $tmpl nach den Markern suchen und diese mit erreg_replace
>> ersetzen...

Da würde auch ein str_replace() reichen, das ist glaub ich schneller und performanter. Aber das kann man sich eigentlich schenken, denn... siehe unten:


>> Könnte mir aber gut vorstellen, dass da auch vorgefertigte
>> Klassen gibt.

Ja, die gibt es natürlich, siehe oben die API... Typo3 ist ja eigentlich mehr als ein CMS: Es ist eigentlich ein Framework, also ein Baukasten der nur in 99% der Fälle als CMS genutzt wird. Typo3 bietet Dir also schon für so ziemlich alle Anwendungen Funktionen die bereits sich bewährt haben und bedingt durch die grosse Community ständig auf Verbesserungen und Bugfixes kontrolliert werden.


>> tt_news ist so riesig und verwirrend für Anfänger, ich meine
>> da ist schwer abzukupfern, aber ich probiere es weiter...

FullACK, tt_news ist vielleicht ein schlechtes Beispiel in dem Zusammenhang, da es recht komplex ist und durch die Flexibilität in der Konfiguration auch recht massig und unüberschaubar ist :-)


Ich hoffe ich konnte Dir ein wenig weiterhelfen! Also am besten wird es sein wenn Du Dir mal die extdeveval installierst, das hilft auf jeden Fall schon weiter. Vielleicht hilft Dir auch in einer ruhigen Minute einen Blick in die TYPO3 Coding Guidelines und in die TYPO3 Core APIs Dokus weiter?


Beste Grüsse,
Andre

---
Andre Dittmar | hot bytes
 
Elbinger Straße 24
74226 Nordheim
Germany 

Fon : +49 (0) 71 33 / 20 46 43
Fax : +49 (0) 71 33 / 20 46 42
D1  : +49 (0) 1 60 / 97 22 03 03

Web : http://www.hotbytes.de
Mail: mail at hotbytes.de


____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.8612 from 20.07.2006
Virus news: www.antiviruslab.com




More information about the TYPO3-german mailing list