Zum Inhalt springen

Bezeichner der Select-List-Einträge je nach Sprache ausgeben?

Erstellt am 8. April 2013 · 5 Antworten · letzte Antwort am 20. August 2013

Tags: TCA, Frage

fan66766 ·

Hallo Forumbenutzer,

ich habe ein mehrsprachiges System. Mittels "locallang_db" bin ich in der Lage zu sagen, für welchen Wert in einer Select List welcher Bezeichner verwendet werden soll. Hier im TCA:

'salutation' => array(
	'exclude' => 0,
	'label' => 'LLL:EXT:[xxx]/Resources/Private/Language/locallang_db.xlf:tx_[xxx]_domain_model_question.salutation',
	'config' => array(
		'type' => 'select',
		'items' => array(
			array('LLL:EXT:[xxx]/Resources/Private/Language/locallang_db.xlf:tx_[xxx]_domain_model_question.salutation.male', 0),
			array('LLL:EXT:[xxx]/Resources/Private/Language/locallang_db.xlf:tx_[xxx]_domain_model_question.salutation.female', 1),
		),
		'size' => 1,
		'maxitems' => 1,
		'eval' => ''
	),
),

dementsprechend gibt es auch eine de.locallang_db für die deutsche Sprache.

Aktuell mache ich es im Controller wie folgt, obwohl es eine unschöne Lösung ist, Sprachabhängigkeiten im Controller zu verankern:

if($GLOBALS['TSFE']->sys_language_uid==0){ //German
	$this->view->assign('salutations', array(0 => "Herr", 1 => "Frau;
}else if($GLOBALS['TSFE']->sys_language_uid==1){	//English
	$this->view->assign('salutations', array(0 => "Mr", 1 => "Mrs;
}

Entschuldigt, dass ich die Klammern nicht geschlossen habe. In der Vorschau wurde mir immer ein "wink"-Smily angehängt.

Kann ich nicht die Bezeichner ermitteln lassen? So könnte es dem Controller und Fluid egal sein.

Vielen Dank für die Anregungen,
Gruss

karf ·

Mit TYPO3\CMS\Extbase\Utility\LocalizationUtility->translate() kannst du die locallang file im controller abrufen.

fan66766 ·

Hallo,

danke für die Antwort. Ich bekomme in meinem Controller die Fehlermeldung:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in ...Controller.php on line 171

Meine Anweisung ist:

echo TYPO3\CMS\Extbase\Utility\LocalizationUtility->translate('tx_[xxx]_domain_model_person.salutation.male','[xxx]');
fan66766 ·

Also mit folgender Anweisung bekomme ich die gewünschte Ausgabe:

$GLOBALS['TSFE']->sL('LLL:EXT:[xxx]/Resources/Private/Language/de.locallang_db.xlf:tx_[xxx]_domain_model_person.salutation.male'),
trayandev ·

versuch mal:

\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_[xxx]_domain_model_person.salutation.male', '[xxx]');

kainobi ·

mMn. wäre es einfacher und schöner, wenn Du das direkt im Template machst:

<f:translate key="tx_xxx_domain_model_person.salutation.{modelObject.salutation}" />

Und dann die entsprechenden Keys in die locallang.xml/xlf Deiner Ext. eintragen...