Hallo Steffen,
ist schon ein wenig her der Eintrag, aber ich bin gerade erst darüber gestolpert. Laut Kommentaren innerhalb von lang.php ist der "language-splitted" als deprecated gekennzeichnet. Das nur am Rande.
Ich habe allerdings ein konkretes Problem, wenn ich in der XML Datei Umlaute für deutsche Labels verwende wird mir kein korrekter Wert zurück gegeben.
Hast du da noch eine Idee?
// Abfragen
$this->LLkey = t3lib_div::GPvar('L');
if($this->LLkey == '') { // Standard
$this->LLkey = 'default';
}
$this->LOCAL_LANG = t3lib_div::readLLfile('EXT:'.$this->extKey.'/pi1/locallang.xml', $this->LLkey);
$this->LOCAL_LANG_loaded = 1;
$this->pi_loadLL();
Hallo an Alle,
auch auf die Gefahr hin, dass dieser Thread uralt ist, wollte ich eine kurze Bemerkung dazu machen.
Dieses minimalistische Beispiel hat bei mir schon funktioniert.
class tx_my_extension_name extends tslib_pibase {
var $extKey = 'tx_my_extension_name';
public $scriptRelPath = 'pi1/class.tx_my_extension_name.php';
function main() {
$GLOBALS['TSFE'] = t3lib_Div::makeInstance('tslib_fe');
$GLOBALS['TSFE']->fe_user = tslib_eidtools::initFeUser();
$this->pi_loadLL();
echo $this->pi_getLL('my_label');
}
}
Sorry, dass ich diesen alten Thread hier noch einmal ausgrabe:
$this->lang = $values['lang'];
if($this->lang == '') $this->lang = 'default';
$this->LOCAL_LANG = t3lib_div::readLLfile('EXT:lb4de/pi4/locallang.xml',$this->lang);
$this->pi_loadLL();
Debug-Ausgabe:
t3lib_div::debug($this->LOCAL_LANG);
liefert mir folgendes Array:
default
Label1
0
source DEF:value
target DEF:value
1
Label1
0
source DEF:value
target DEF:value
eigentlich sollte unter 1 der englischsprachige Text geladen werden - dem ist aber nicht so. Jemand eine Idee warum? (unter 1 lädt er nochmals den default-text, ändert auch nichts daran, dass ich versuche zB die id 3 zu laden.., er überschreibt die werte der language id 1,2,3,etc. immer mit dem default wert)
Cache habe ich mittlerweile abgeschalten, das wars nicht..
Ich weiss, der Thread ist alt.
Ich komme trotzdem nicht umhin zu ergänzen/verbessern, aus gegebenem Anlass.
1. Die Klasse des eID-Scripts muss von tslib_pibase abgeleitet werden:
class tx_myextkey_eid extends tslib_pibase {
// @todo fill code
}
2. Wir benötigen zwei Class-Properties:
var $extKey = 'myextkey';
var $scriptRelPath = 'piX/class.tx_my_script_path.php';
es ist eigentlich wurscht ob public oder protected. AFAIK nur halt nicht private.
3. Anschliessend müssen wir das TSFE initialisieren (möglichst bevor wir tslib_eidtools::initFeUser() aufrufen).
Haken an der Sache: diese Klasse benötigt (mittlerweile) 3 Parameter, wir gehen also wie folgt vor (strikt nach T3 Coding Guidelines/API):
public function main() {
$GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], (int)t3lib_div::_GP('id'), (int)t3lib_div::_GP('type'));
$GLOBALS['TSFE']->fe_user = tslib_eidtools::initFeUser();
// @todo more code in mainfunction
}
4. Nun können wir gefahrlos den üblichen Weg zum Laden von Sprachen gehen:
private function myEidLoadLL() {
$this->pi_loadLL(); // loads $this->LOCAL_LANG; could be written in main() of course too.
}
Hmm, leider führt keiner der Lösungen bei mir zur Verwendung der korrekten Sprache, immer wird das default-Array geladen.
Anbei der Beginn meiner Klasse:
public function main($content, $conf) {
$GLOBALS['TSFE'] = t3lib_div::makeInstance('tslib_fe', $GLOBALS['TYPO3_CONF_VARS'], t3lib_div::_GP('id'), t3lib_div::_GP('type'));
$GLOBALS['TSFE']->connectToDB();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->checkAlternativeIdMethods();
$GLOBALS['TSFE']->determineId();
$GLOBALS['TSFE']->getCompressedTCarray();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->getConfigArray();
$this->cObj = t3lib_div::makeInstance('tslib_cObj');
$this->conf = $conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
Sieht jemand, woran es liegen könnte?
jaaa, das problem ist, dass man $this->LLkey setzen muss bevor man pi_loadLL aufruft.
ich habe leider keinen weg gefunden das vernünftig über die api hinzubekommen, $this->LLkey muss ja lang-iso2 sein.
man bekommt aber so nur die sys_language_uid raus. man muss sich also den iso2 aus der db holen, was reichlich umständlich ist.
oder man matched sich das händisch, if (int)t3lib_div::_GP('L') = 0 -> $this->LLkey = 'de' etc ...
vielleicht besser mit nem array oder so.
ich hab es im typoscript gesetzt. geht aber auch nur, wenn man sich eine funktion parseMergeTypoScript schreibt, oder so, die das entsprechende typoscript lädt ...
Wunderbar, das klappt!
Und da in meiner Extension sowieso erstmal nur deutsch und englisch enthalten sein sollen, kann ich es auch händisch setzen.
wenn nur alle probleme so einfach zu lösen wären ... 😉
du hast im ausgleich dafür nicht schnell ne lösung parat wie ich (komplett OT) den imageMarker-optionSplit in den tt_news auch für die listenansicht verwenden kann? :-)
Leider nicht, hab das bisher auch nur in der Einzelansicht gebraucht 😉