16. August 2011 in TYPO3 von Leo
Um die eigene Extension Mehrsprachig zu machen und trotzdem so flexibel wie möglich zu halten, nutzt man die locallang. Früher handelte es sich hier um ein simples PHP-File mit einem Array, heute ist es ein XML-File mit einer besseren struktur und Übersicht, wo es auch keine Zeichensatz Probleme gibt.
Um für die eigene Extension eine locallang nutzen zu können, gehen wir folgendermassen vor:
Als erstes legen wir die locallang.xml an. Meist direkt im Extension Verzeichnis zu finden, sprich typo3conf/ext/meineExtension/locallang.xml. Falls wir jedoch mehrere pi’s in unserer Extension haben, können wir in jedem pi eine eigene locallang Anlegen welche dann jeweils genutzt wird.
In unsere so eben erstelle locallang.xml Datei kopieren wir nun folgenden XML-Code:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
<meta type="array">
<type>module</type>
<description>language Labels</description>
</meta>
<data type="array">
<languageKey index="default" type="array">
<label index="captchaErrorMessage">Captcha incorrect!</label>
</languageKey>
<languageKey index="de" type="array">
<label index="captchaErrorMessage">Captcha nicht korrekt!</label>
</languageKey>
</data>
</T3locallang>
Hier haben wir 2 Sprachen. Die default Sprache (englisch) und “de” für Deutsch. Die Übersetzungen werden als Phrasen gemacht, welche jeweils in labels abgespeichert werden. Die labels erhalten einen namen (index=”") und werden im languageKey Array eingefügt. Oben anhand des Beispiels zu sehen.
In unserer PHP-Class der Extension (falls mehrere muss es in jeder gemacht werden), müssen noch folgende Variabeln angegeben werden, was falls ihr mit dem Extension Kickstarter arbeitet eigentlich erledigt sein sollte. Direkt in der Class gebt ihr folgendes an:
public $scriptRelPath = 'class.ux_tx_tipafriend.php'; // Path to this script relative to the extension dir.
public $extKey = 'x4etipafriendrecap'; // The extension key.
So kann TYPO3 die korrekte localconf holen. Wäre unsere Datei in einem pi Verzeichnis, wäre der $scriptRelPath demnach z.B. pi1/class.ux_tx_tipafriend.php.
Damit die Sprachen nun noch geladen werden, müssen in der Main-Funktion noch folgendes gemacht werden:
Zuerst muss die conf in $this->conf geschrieben werden:
$this->conf = $conf;
Danach (muss danach sein!) muss die locallang selbst noch geladen werden:
$this->pi_loadLL();
Fertig!
Um jetzt auf die Phrasen zuzugreifen, nutzen wir folgende Zeile:
$error = $this->pi_getLL('captchaErrorMessage');