[TYPO3-german] extbase 6.0.0 - TranslationHandling

conPassione gmbh info at conpassione.ch
Tue Apr 16 12:37:21 CEST 2013


Hallo Johannes

ich denke, das liegt daran, dass Du via equals('sys_language_uid',1) ja
wirklich nur Englisch ausliest.
Da kannst Du eigentlich die Zeile mit setRespectSysLanguage fallen
lassen und das "equals" mit "in" ersetzten und gegen einen Array mit
(-1,0,Sprachcode) testen, dann werden die richtigen Sprachen ausgelesen.

Gruss Renzo
-- 

________________________________________________________________________


Renzo Bauen
conPassione gmbh
T +41 33 345 00 92
M +41 79 330 10 11
http://www.conpassione.ch
TYPO3 Bronce Associate 

Am Dienstag, den 16.04.2013, 12:23 +0200 schrieb Johannes C. Schulz -
EnzephaloN IT-Solutions:

> Hallo Renzo
> 
> Danke für Deine sehr ausführlichen Informationen.
> Ich habe mich dahingehend nochmal in meinem Kopf umgeschaut und bei meiner Extension wohl den Haken gefunden:
> Es gibt Datensätze die übersetzt sind, aber die Attribute (nach denen auch gesucht werden kann) sind nicht übersetzt. Dadurch kam es wohl dazu, daß nichts ausgegeben wurde, da extbase wohl versuchte die Übersetzungen der Attribute zu finden.
> Ich habe mir jetzt so beholfen:
> 
> if(t3lib_div::_GP('l') != '0'){
> 	$query->getQuerySettings()->setRespectSysLanguage(FALSE);
>       	$langsearch = $query->logicalAnd($query->equals('sys_language_uid',1));
>      	$constraint[] = $langsearch;
> }
> 
> Das funktioniert schonmal für "englisch". Bei den anderen zwei Sprachen wird komischerweise "deutsch" ausgegeben...
> 
> Grüße
> Johannes
> 
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von conPassione gmbh
> Gesendet: Dienstag, 16. April 2013 11:53
> An: typo3-german at lists.typo3.org
> Betreff: Re: [TYPO3-german] extbase 6.0.0 - TranslationHandling
> 
> Hallo Johannes
> 
> Du machst folgendes:
> mit setRespectSysLanguage(FALSE) setzt Du die Sprachbehandlung ausser Kraft, d.h. TYPO3 gibt Dir dann alle Datensätze aus ohne Einschränkung durch die Sprache! Es ist deshalb logisch, dass Du sie doppelt bekommst.
> Der SQL String wird dann keine WHERE-Klausel haben mit sowas wie 'sys_language_uid' = XY.
> 
> Selber bin ich gerade daran unter 4.7.10 verknüpfte Datensätze sprachabhängig und mit fall-back Mechanismus auszulesen.
> Das mache ich so:
> 
> Voraussetzung:
> In Tabelle Events gibt es Datensätze wie diese:
> uid title l10n_parent ...
> 1 TestD1 0
> 2 TestF1 1
> 3 TestD2 0
> 4 TestD3 0
> 5 TestF2 3
> 6 TestD4 0
> d.h. bei jedem ins Französische übersetzten Datensatz "TestF.." wird in der Spalte l10n_parent die uid des "originalen" Deutschen Datensatzes gespeichert. Das macht TYPO3 so, wenn man eine Übersetzung eines Datensatzes im BE anlegt.
> 
> Für die Kategorien gilt dasselbe.
> uid title l10n_parent ...
> 1 KatD1 0
> 2 CatF1 1
> 3 KatD2 0
> 4 CatF2 3
> 
> Nun habe ich das Problem, dass das Selektieren nach Kategorie schwierig wird, vor allem dann, wenn es ein fall-back geben soll!
> Wenn ich einem Deutschen Datensatz eine Kategorie KatD1 zuordne,und dem auff Französich übersetzten Datensatz die entsprechende CatF1, kann ich nicht einfach nach Kategorie uid = 1 suchen, sonst finde ich die übersetzten nicht und umgekehrt.
> 
> Die Lösung für diese Probleme ist scheinbar einfach...
> Ich brauche lediglich folgendes Konstrukt in meinem EventRepository:
> 
> public function findEventsByCategory($languageUid, $eventCatID,
> $eventCatTranslatedID) {
>     $lan = array();
>     $lan[] = -1;
>     $lan[] = 0;
>     $lan[] = $languageUid;
> 	
>     $cat = array();
>     $cat[] = $eventCatID;
>     $cat[] = $eventCatTranslatedID;  
> 
>     $query = $this->createQuery();
>     $query->matching(
>         $query->logicalAnd(
>             $query->in('sys_language_uid', $lan),
>             $query->in('event_cat', $cat)
>         )
>     );
> }
> 
> Damit werden auf der deutschen Seite alle Datensätze korrekt ausgegeben, inkl. der verknüpften Kategorien und dasselbe auf französisch. Dabei auf französisch alle französischen Datensätze angezeigt und wo es keine Übersetzung gibt, die deutschen. Die den deutschen Datensätzen zugeordneten Kategorien werden dabei auch auf Französisch übersetzt:
> 
> ausgegebene Liste in Deutsch         und in Französisch
> Event Kategorie                 Manifestation  Categorie
> TestD1 KatD1                     TestF1  CatF1
> TestD2 KatD1                     TestF2  CatF1
> TestD3 KatD2                     TestD3  CatF2
> TestD4 KatD2                     TestD4  CatF2
> 
> Das einzige wirklich schwierige ist, von der $eventCatTranslatedID auf die originale $eventCatID zu schliessen, d.h. für eine uid in der Tabelle Kategorie die entsprechende l10n_parent rauszulesen.
> 
> Wichtig für mich war die Erkenntnis, dass Extbase sehr viel hilft bei dem Auslesen von Datensätzen, wenn man die Abfrage mit in('sys_language_uid', $lan) und nicht mit equals('sys_language_uid',
> $languageUid) macht. Dann kommen die richtigen Datensätze!
> 
> Ich hoffe Dir damit etwas geholfen zu haben. 
> Und ich bin gerade daran, das auf 6.0.4 zu portieren um zu schauen, obs da auch noch funktioniert.
> 
> Liebe Grüsse
> Renzo
> 
> 
> ________________________________________________________________________
> 
> 
> Renzo Bauen
> conPassione gmbh
> T +41 33 345 00 92
> M +41 79 330 10 11
> http://www.conpassione.ch
> TYPO3 Bronce Associate 
> 
> Am Dienstag, den 16.04.2013, 10:44 +0200 schrieb Johannes C. Schulz - EnzephaloN IT-Solutions:
> 
> > Hallo nochmal zu diesem Thema
> > 
> > Ich habe die Funktion weggeworfen und die if-Anweisung in meine 
> > Repository Methode eingefügt.
> > if((integer)(t3lib_div::_GP('l')) > 0){  
> >       $query->getQuerySettings()->setRespectSysLanguage(FALSE);
> >       $query->getQuerySettings()->setSysLanguageUid(1);
> >     }
> > 1.) Durch das setRespectSysLanguage(FALSE) werden alle Datensätze zwar 
> > in der korrekten Sprache, dafür aber doppelt ausgegeben.
> > 2.) das setSysLanguageUid(1) hat keinerlei Effekt.
> > 
> > Was ist falsch??
> > 
> > Johannes
> > 
> > -----Ursprüngliche Nachricht-----
> > Von: typo3-german-bounces at lists.typo3.org
> > [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Johannes C.
> > Schulz - EnzephaloN IT-Solutions
> > Gesendet: Dienstag, 16. April 2013 09:55
> > An: typo3-german at lists.typo3.org
> > Betreff: [TYPO3-german] extbase 6.0.0 - TranslationHandling
> > 
> > Hallo Freunde
> > 
> >  
> > 
> > Beim Versuch eine ältere Extension die ich geschrieben habe auf 
> > extbase 6 zum Laufen zu bringen, bemerkte ich plötzlich daß das 
> > TranslationHandling nicht mehr funktioniert.
> > 
> > Bis jetzt läuft das unter typo3 4.7.10 alles ohne Probleme. Auf meinem 
> > typo3
> > 6.0.4 Testserver zeigt die Listenansicht auf den englischen, 
> > französichen und holländischen Seiten aber keinerlei Datensätze mehr. 
> > Das Plugin wird geladen, aber es werden anscheinend keine Objekte an den View übergeben.
> > Jetzt habe ich mal im Netz gesucht und folgende Funktion meinem 
> > Repository
> > hinzugefügt:
> > 
> > public function initializeObject(){
> > 
> >      /** @var $querySettings
> > \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings */
> > 
> >                    $querySettings =
> > $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\
> > Typo3Q
> > uerySettings');
> > 
> >      if((integer)(t3lib_div::_GP('l')) > 0){
> > 
> >         $querySettings->setRespectSysLanguage(FALSE);   
> > 
> >         $querySettings->setSysLanguageUid(1);
> > 
> >         $this->setDefaultQuerySettings($querySettings);
> > 
> >      }
> > 
> >      else{
> > 
> >        $querySettings->setSysLanguageUid(0);
> > 
> >        $this->setDefaultQuerySettings($querySettings);
> > 
> >      }
> > 
> > }
> > 
> >  
> > 
> > Allerdings hilft das nicht weiter. Die Liste bleibt leer.
> > 
> > Kann mir hier jemand bitte weiterhelfen?
> > 
> >  
> > 
> > Johannes
> > 
> > _______________________________________________
> > TYPO3-german mailing list
> > TYPO3-german at lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> > 
> > 
> > _______________________________________________
> > TYPO3-german mailing list
> > TYPO3-german at lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> 
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list