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-boun...@lists.typo3.org 
> [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von conPassione gmbh
> Gesendet: Dienstag, 16. April 2013 11:53
> An: typo3-german@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-boun...@lists.typo3.org
> > [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Johannes C.
> > Schulz - EnzephaloN IT-Solutions
> > Gesendet: Dienstag, 16. April 2013 09:55
> > An: typo3-german@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@lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> > 
> > 
> > _______________________________________________
> > TYPO3-german mailing list
> > TYPO3-german@lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german@lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> 
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german@lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an