Zum Inhalt springen

ve_guestbook problem

Erstellt am 13. Februar 2008 · 4 Antworten · letzte Antwort am 25. März 2008

Tags: Frage

ZoltanK ·

hi!
bin neu hier und ein ziemlicher anfänger was typo3 angeht.
nun ja, ich hab mal ein template (multiflex3 von rasi.ch) gesaugt und wollte unter anderem ein gästebuch (ve_guestbook 2.50) erstellen und zwar in englisch und deutsch.
meine default sprache ist deutsch.
ich erstell also eine form und eine list in deutsch(default) und englisch.
die list wird in beiden sprachen korrekt angezeigt. beim deutschen steht der richtige deutsche und beim ennglischen der richtige englische text.
aber die form ist nicht in ordnung, beim deutschen werden die felder korrekt angezeigt, also beim textfeld "vorname" steht auch "vorname" und so weiter....
aber bei der englischen versionen steht gar kein text vor den textfeldern.
bitte um hilfe, ist sehr dringend.
danke
Zoltan

boingboing ·

das Problem liegt hier:

    function initFormMarkerArray() {
        $markerArray = array();
        if (is_array($this->LOCAL_LANG[$this->LLkey])) {
            foreach ($this->LOCAL_LANG[$this->LLkey] as $key => $value) {
                if (strpos($key, 'form_') === 0) {
                    $markerArray['###'.strtoupper($key).'###'] = $value;
                }
            }
        }
        return $markerArray;
    }

Diese Funktion in pi1/class.tx_veguestbook_pi1.php extrahiert aus dem Language XML die Labelbezeichner für die FORM.

Entscheidend ist der Sprachschlüssel LLkey. In Deutsch ist er "de" in Englisch "en".

Soweit so gut - ABER: in der XML-Datei locallang.xml in ./typo3conf/ext/ve_guestbook/pi1/ steht als Sprachschlüssel "default" bei den Englischen Ausdrücken:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
	<meta type="array">
		<description></description>
		<type>module</type>
		<csh_table></csh_table>
		<labelContext type="array">
		</labelContext>
	</meta>
	<data type="array">
		<languageKey index="default" type="array">
			<label index="form_firstname">Firstname</label>
...

"en" existiert nicht in der gesamten XML-Datei! Die Konsequenz: Die PHP-Funktion findet bei Englisch keine passenden Einträge in der XML-Datei und die Labelbezeichner bleiben leer!

QUICK-HACK:

Einfach "default" durch "en" ersetzen, dann geht's:

...
		<languageKey index="en" type="array">
...

#giggle# [/b]

boingboing ·

Bitteschön!

So ganz zufrieden bin ich mit dem Quickhack aber nicht, da es meiner Meinung nach auch so gehen sollte, bzw. ja nur bei FORM das Problem auftaucht und die LIST und der TEASER auch so funktionieren.

Wahrscheinlich würde es auch funktionieren, wenn man im PHP-code von oben eine IF-Abfrage einführt und prüft, ob $this->LLkey "en" ist und dann auf "default" umhängt.

Aber sauber ist das auch nicht :o

grüße,

Marc

George Mason ·

Dies ist sauber:

plugin.tx_veguestbook_pi1 {
_LOCAL_LANG.de.form_firstname = Name
_LOCAL_LANG.de.pi_list_browseresults_next = ältere Einträge &gt;
_LOCAL_LANG.de.pi_list_browseresults_prev = &lt; neuere Einträge

_LOCAL_LANG.en.form_firstname = Name
_LOCAL_LANG.en.form_email = E-mail
_LOCAL_LANG.en.form_place = Place
_LOCAL_LANG.en.form_homepage = Homepage

Erklärung: Du legst die englischen Labels, die Du brauchst, einfach in deinem Page Template fest.