Die Extension „comments“ lässt sich sehr schnell integrieren udn sehr gut für eigene Anwendungsfälle konfigurieren. Einzige Ausnahme: man möchte Sprachlabels ändern, was normalerweise via TypoScript möglich ist:
plugin.tx_comments_pi1 {
_LOCAL_LANG {
de {
pi1_template.add_comment = Schreiben Sie einen Kommentar
}
}
}
Leider zeigt das (in Version 1.7.1) keinerlei Wirkung :-(
Ursachenforschung
Eine Ausgabe des $LOCAL_LANG-Arrays, welches via \TYPO3\CMS\Frontend\Plugin\AbstractPlugin::pi_loadLL() geladen wird, zeigt bereits, dass das gesetzte neue Label überhabt nicht ausgelesen wird.
Die main()-Methode der Extension bekommt jedoch mittels $conf die TS-Konfiguration übergeben. Folglich muss der Fehler irgendwo dazwischen liegen. Dazwischen gibt es aber nur einen Aufruf: $this->fixLL();
Dieser Aufruf ist (laut phpdoc-Kommentar) ein Workaround für einen Bug #7154. Der enthaltene Link führt inzwischen leider ins Leere… Der Workaround wurde im Jahr 2008 in die Extension eingebaut. Ob er überhaupt noch nötig ist, wurde nicht weiter geprüft.
Die fixLL()-Methode durchläuft via foreach das Sprach-Array aus der TS-Konfiguration und ruft die interne Methode fixLL_internal() auf. Im PHP-Code fällt dort schnell etwas auf:
/**
* Helper function for fixLL. Called recursively.
*
* @param array $LL Current array
* @param array $ll Result array
* @param string $prefix Prefix
* @return void
*/
function fixLL_internal($LL, $ll, $prefix = '') {
while (list($key, $val) = each($LL)) {
if (is_array($val)) {
$this->fixLL_internal($val, $ll, $prefix . $key);
} else {
$ll[$prefix.$key] = $val;
}
}
}
Die Methode gibt nichts zurück (@return void) und verändert keine Klassenvariablen. Wie also soll hier etwas bearbeitetes die Methode verlassen? Und warum ist $ll als „Result array“ kommentiert, wenn es doch nirgends als Ergebnis ankommt?
Lösung
Die Lösung des Problem ist das Ergänzen eines „&“ in der Methodendeklaration:
function fixLL_internal($LL, &$ll, $prefix = '')
Und wenn man dann seine Debugging-Session beendet hat, findet man auch den passenden Bugtracker-Eintrag – samt Patch :-(
Links