[TYPO3-german] Problem mit _LOCAL_LANG in eigener Extension

bernd wilke x00nsji02 at sneakemail.com
Thu Mar 20 02:05:42 CET 2008


Peter Linzenkirchner schrieb am Wed, 19 Mar 2008 18:40:56 +0100:

> Hallo,
> 
> ich schreibe gerade meine erste Extension und habe ein kleines Problem
> ...
> 
> Meine Labels für die Frontendausgabe erstelle ich über die
> locallang.xml, was auch gut funktioniert. Jetzt möchte ich aber die
> Sache mit Typoscript variabler machen, sprich diese Labels aus
> locallang.xml mit Typoscript überschreiben.
> 
> Wenn ich folgendes mache, geht es:
> 
> locallang.xml:
> <label index="legende_txt">Ein Text</label>
> 
> TypoScript:
> plugin.tx_lisimmo_pi1._LOCAL_LANG.de {
> 	legende_txt =  ein neuer Text.
> }
> 
> Wenn ich das mache, geht es nicht:
> 
> locallang.xml:
> <label index="search.legende_txt">Ein Text</label>
> 
> TypoScript:
> plugin.tx_lisimmo_pi1._LOCAL_LANG.de {
> 	search.legende_txt =  ein neuer Text.
> }
> 
> Das geht auch nicht:
> plugin.tx_lisimmo_pi1._LOCAL_LANG.de {
> 	search {
> 		legende_txt =  ein neuer Text.
> 	}
> }
> 
> Es scheint so, als würde diese Ersetzung durch TypoScript grundsätzlich
> nur in einer Ebene funktionieren, also ohne eine Punktsyntax innerhalb
> des Name-Space der Extension. Oder finde ich nur die Syntax nicht?
> Leider habe ich bereits ca. 100 solche Labels ...

das dürfte ein grundsätzliches Problem sein, das in der zugrunde 
liegenden Datenstruktur zu suchen ist.
Die Einträge aus locallang.xml werden ja in ein PHP-Array umgewandelt und 
von dort ausgelesen. dito das TypoScript.
Allerdings gibt es dabei Unterscheide in der Verarbeitung.
Das wird vermutlich in der alten Version der locallang.xml deutlich: Die 
alte version ist pures PHP und die datei hieß/heißt locallang.php

wenn du folgendes typoscript verwendest:
plugin.tx_lisimmo_pi1._LOCAL_LANG.de.search.legende_txt =  ein neuer Text.

wird daraus in PHP:

$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_lisimmo_pi1.']
['_LOCAL_LANG_.']['de.']['search.']['legende_txt'] = 'ein neuer Text.'

In der locallang.php würde aber stehen:
$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_lisimmo_pi1.']
['_LOCAL_LANG_.']['de.']['search.legende_txt'] = 'ein neuer Text.'
was für die locallang.php in Ordnung ist.

Du müßtest irgendwo im typoscript unterscheiden zwischen '.' als Trennung 
unterscheidlicher Ebenen und '.' als Zeichen innerhalb eines Keys.
meines Wissens nach geht das leider nicht.

Ausweg: 
benenne all deine locallang-Schlüssel von 'search.abc' nach 'search_abc' 
um.

Bernd
-- 
http://www.pi-phi.de/t3v4/cheatsheet.html


More information about the TYPO3-german mailing list