Eigene Sprachdateien in TYPO3 einbinden

Bei der Entwicklung meiner TYPO3-Extension sm_employeelist bin ich auf das Problem gestoßen, dass ich in meinen verschiedenen Plugins auf einige Sprachdefinitionen zugreifen muss, die von diesen gemeinsam verwendet werden.

Über den Aufruf von $this->pi_loadLL(); in der main-Methode jedes Plugins werden zwar die im jeweiligen Plugin-Verzeichnis liegenden Sprachdateien (z.B. pi1/locallang.xml) eingebunden, aber eine “globale” Datei, in der ich Plugin-unabhängige Sprachdefinitionen anlegen kann, ist so nicht einzubinden.

Die Lösung besteht aus ein paar Zeilen Code (leider hat mich die Suche nach der Lösung ein wenig mehr Zeit gekostet, als man annehmen würde ;)). Den entscheidenden Hinweis habe ich in der TYPO3-Dokumentation unter dem Punkt Localization gefunden. Mittels $GLOBALS['LANG']->includeLLFile() können externe Sprachdateien eingebunden werden. Die Schwierigkeit ist nun, auf die Definitionen über pi_getLL() zugreifen zu können. Dafür habe ich mir die Sprachdatei als Array zurückliefern lassen und dieses mit dem Array $this->LOCAL_LANG vereinigt. Nachher kann ganz normal mittels $this->pi_getLL('key_der_definition') auf die Werte zugegriffen werden. Die einzufügenden Codezeilen sind die folgenden: // load global localization for all plugins foreach ($this->LOCAL_LANG as $key => $val) { $LOCAL_LANG = $GLOBALS['LANG']->includeLLFile(t3lib_extMgm::extPath('sm_employeelist') . 'locallang.xml', 0); $this->LOCAL_LANG[$key] = array_merge($LOCAL_LANG[$key], $this->LOCAL_LANG[$key]); }
Dabei werden die Definitionen für jede einzelne Sprache aus der globalen Datei an die Werte des aktuellen Plugins angefügt, wobei die Werte des aktuellen Plugins Vorrang haben. Dadurch können globale Definitionen auf Plugin-Ebene überschrieben werden.

Die Zusammenstellung des Pfades der Include-Datei mittels t3lib_extMgm::extPath() habe ich in meiner Extension durchgehend verwendet. Dies muss natürlich auf die eigenen Anforderungen angepasst werden…

Über Stefan

Polyglot Clean Code Developer

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax