[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