[TYPO3-german] extbase 6.2: bestimmte übersetzung erzwingen
Johannes C. Schulz - EnzephaloN IT-Solutions
info at enzephalon.de
Wed May 7 11:55:10 CEST 2014
Hallo
Anscheinend ist die Liste typo3 v4 MVC tot jedenfalls antwortet da
niemand mehr? Deswegen möchte ich meine Frage hier nochmal stellen.
Es gibt den extbase-Bug https://forge.typo3.org/issues/45873 . Dadurch ist
es nicht möglich mit setRespectSysLanguage(FALSE) eine eigene Übersetzung zu
erzwingen. Ich aber benötige auf französischen Seiten englische Elemente.
Komischerweise funktioniert dies in meinem Repository mit der LIST-Funktion
gut. Doch rufe ich hieraus ein DETAIL auf, so wird mir statt des gewünschten
englischen Objektes das deutsche Objekt ausgeliefert OBWOHL ich explizit
nach t3_origuid und sys_language_uid suche und auch finde. Irgendwie kommt
da immernoch das languageOverlay dazwischen. Das möchte ich abschalten,
bitte.
Meine Versuche dies mittels der neuen Methoden
$query->getQuerySettings()->setLanguageMode('ignore'); und
$query->getQuerySettings()->setLanguageOverlayMode(TRUE); zu tun blieben
erfolglos.
Hier mal die zwei Methoden (findByProperties funktioniert / findByUidNew
funktioniert nicht)
class HotellistRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
public function findByUidNew($hotel){
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
if($GLOBALS['TSFE']->sys_language_uid != 0){
$query->getQuerySettings()->setRespectSysLanguage(FALSE);
$query->getQuerySettings()->setSysLanguageUid(1);
//$query->getQuerySettings()->setLanguageMode('ignore');
//$query->getQuerySettings()->setLanguageOverlayMode(TRUE);
$query = $query->matching(
$query->logicalAnd(
$query->equals('t3_origuid',$hotel),
$query->in('sys_language_uid',array(1))
)
);
}else{
$query = $query->matching(
$query->equals('uid',$hotel)
);
}
return $query->execute()->getFirst();
}
public function
findByProperties($order,$type,$pidstorage,$classification = NULL,$property =
NULL,$htype = NULL,$name = NULL){
$orderings = array($type => $order ==
'ORDER_ASCENDING' ?
\TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING :
\TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING);
$query = $this->createQuery();
$constraint = array();
/* Wenn Englisch, Französisch oder
Niederländisch, zeige die englischen Inhalte */
if($GLOBALS['TSFE']->sys_language_uid != 0){
$query->getQuerySettings()->setRespectSysLanguage(FALSE);
$query->getQuerySettings()->setSysLanguageUid(1);
$langsearch =
$query->logicalAnd($query->in('sys_language_uid',array(1)));
$constraint[] = $langsearch;
}
/*BUILD TOGETHER*/
if(!empty($constraint))
$query->matching($query->logicalAnd($constraint));
$query->setOrderings($orderings);
return $query->execute();
}
}
More information about the TYPO3-german
mailing list