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 :-(