[TYPO3-german] Extbase 6.2.4 / Multilanguage Problem

Stefan Padberg post at bergische-webschmiede.de
Sat Sep 20 01:10:11 CEST 2014


Hallo,

falls es für jemanden mal von Interesse ist: ein Lösungsweg für 
Datei-Metadaten (Titel, Beschreibung) in einer Multilanguage-Umgebung.

Wenn man Bilder oder Dateien einem Contentelement zuordnet oder in einer 
eigenen Extension einbindet, werden einem auch die Felder "Titel" und 
"Beschreibung" angeboten. Diese Felder werden von dem 
Typo3-Language-Mechanismus NICHT erfasst. Also Finger weg!

Man muss die Metadaten direkt bei dem Bild oder der Datei in der 
Dateiliste eintragen. Und das geht so:

1) Öffne die Eingabemaske für die Meta-Daten. Gib Titel und Beschreibung 
für sys_language_uid = 0 ein. Abspeichern ohne zu schließen!

2) Dann ganz oben im Sprachumschalter die nächste Sprache wählen. Es 
kommt eine neue Eingabemaske. Jetzt die Metadaten für die neue Sprache 
eingeben und abspeichern mit schließen.

3) Unter dem Datei-Datensatz in der Dateiliste erscheint jetzt ein 
kleines Sprachauswahlmenü mit Flaggen-Icons für alle angelegten Sprachen 
im System.

Die Datei-Metadaten sind jetzt lokalisiert und werden über die normalen 
Typo3-Mechanismen sprachabhängig ins Fluid-Template gemappt.

Sehr geil, wenn man's weiß! ;-)

Beste Grüße
Stefan Padberg



Am 19.09.2014 um 18:40 schrieb Stefan Padberg:
> Hallo,
>
> die localizedUid bekommt man recht einfach heraus.
>
> Im model einfach die function einbauen:
>
>      /**
>       * Returns the localized uid
>       *
>       * @return string $_localizedUid
>       */
>      public function getLocalizedUid() {
>          return $this->_localizedUid;
>      }
>
> Aber wenn ich mit der localizedUid versuche, die lokalisierte Version zu
> ermitteln, bekomme ich "automatisch" die nicht-lokalisierte Version zurück.
>
> So ein Mist! Keiner eine Idee? Muss ich mir doch eine eigene SQL-Abfrage
> schnitzen...
>
> Stefan
>
> Am 19.09.2014 um 18:12 schrieb Stefan Padberg:
>> Hallo,
>>
>> ich habe das weiter untersucht und die Datenbank-Einträge verfolgt. Es
>> ist irgendwie ein konzeptionelles Problem bei Typo3 oder Extbase,
>> scheint mir.
>>
>> 1 Produkt:
>> product( uid:1 )
>>
>> 1 lokalisiertes Produkt:
>> product( uid:11, sys_language_uid:1, i10n_parent:1 )
>>
>> 2 Produktversionen:
>> version( uid:1, product:1, name:'product 1, version A' )
>> version( uid:2, product:1, name:'product 1, version B' )
>>
>> 2 lokalisierte Produktversionen:
>> version( uid:11, product:11, sys_language_uid:1, i10n_parent:1,
>> name:'Produkt 1, Variante A' )
>> version( uid:12, product:11, sys_language_uid:1, i10n_parent:2,
>> name:'Produkt 1, Varainte B' )
>>
>> Insgesamt haben wir jetzt also 4 Versionsdatensätze. Wenn die
>> sys_language_uid=1 ist, holt sich Extbase die 2 nicht-lokalisierten
>> Versions-Uids über die nicht-lokalisierte Produkt-Uid, schaut dann nach,
>> welche lokalisierten Versions-Uid zutreffen und gibt dann automatisch
>> den lokalisierten Produktversionsnamen aus.
>>
>> Warum funktioniert das bei den Bildern nicht?
>>
>> Jede Version habe ein Bild:
>> sys_file_reference( uid:201, uid_foreign:1, tablenames:'version',
>> sys_langauge_uid:0; i10n_parent:0 )
>> sys_file_reference( uid:211, uid_foreign:2, tablenames:'version',
>> sys_langauge_uid:0; i10n_parent:0 )
>> sys_file_reference( uid:221, uid_foreign:11, tablenames:'version',
>> sys_langauge_uid:1; i10n_parent:0 )
>> sys_file_reference( uid:231, uid_foreign:12, tablenames:'version',
>> sys_langauge_uid:1; i10n_parent:0 )
>>
>> Wie man sieht, ist i10n_parent bei den referenzierten Bildern nicht
>> gesetzt. So hat Extbase keine Chance, das lokalisierte Bild zu finden.
>> Es sucht ja mit den nicht-lokalisierten Versions-Uids die
>> nicht-lokalisierten Bild-Uids und findet dann keine lokalisierten
>> Bild-Uids.
>>
>> Anders als bei den Produktversionen, die ich über den Typo3-inhärenten
>> Mechanismus lokalisieren kann, geht das bei den referenzierten Bildern
>> nicht. Es gibt keine lokalisierten Filereferenzen.
>>
>> Man müsste mit den lokalisierten Versions-Uids die passenden
>> Bildreferenzen zusammensuchen. Das müsste in Extbase irgendwie
>> implementiert werden.
>>
>> Für mich stellt sich jetzt die Frage:
>> Wie bekomme ich jetzt im Controller die lokalisierte Versions-Uid raus?
>> In Fluid steht sie im Debugger:
>>
>> version =>
>>      uid => 1
>>      sys_language_uid => 1
>>      _localizedUid => 11
>>
>> Mit $version->getUid() bekomme ich immer die nicht-lokalisierte Uid.
>>
>> Weiß jemand etwas hierzu?
>>
>>
>>
>> Ich kann mir natürlich eine eigene SQL-Abfrage in das
>> Versions-Repository schreiben. Dann hab ichs - eventuell.
>>
>> Oder ich baue meine eigene Bildreferenz in die Extension und lege die
>> über die sys_file_reference, um das sauber abzuwickeln.
>>
>> Ich hoffe aber, es gibt in Extbase eine einfache Lösung für dieses
>> Standardproblem, die ich Extbase-Dummy bloß noch nicht kenne.
>>
>> Beste Grüße
>> Stefan
>>
>>
>> Am 19.09.2014 um 11:05 schrieb Stefan Padberg:
>>>
>>> Hallo,
>>>
>>> ich habe hier einen merkwürdigen Effekt:
>>>
>>> Eine eigene Extension verwaltet Produkte. Die Produkte sind mehrsprachig
>>> hinterlegt, funktioniert alles tippi-toppi.
>>>
>>> Manche Produkte haben Varianten. Die Varianten sind in einer eigenen
>>> Tabelle erfasst und mittels n:1-Relation an die Produkttabelle
>>> gekoppelt. Die Varianten sind auch lokalisert worden, und auch das
>>> funktioniert tippi-toppi...
>>>
>>>
>>> ...bis auf die BILDER! Die beigefügten Bilder sind zwar korrekt
>>> lokalisiert (eigene Datanstz-ID), aber werden nicht gezogen. Es wird
>>> immer der Originalbild-Datensatz gezogen, mitsamt Titel und Beschreibung
>>> in Originalsprache.
>>>
>>> Im Fluid-Template spreche ich die Bilder so an:
>>>
>>> {products.0.versions.0.images.0}
>>> (Ich spar mir jetzt die übliche for-each-Schleife; obiges bedeutet:
>>> 1. Bild der 1. Variante des 1.Produkts)
>>>
>>> bzw. Bild-Titelfeld
>>> {products.0.versions.0.images.0.originalResource.title}
>>>
>>> In der Datenbank sind in der sys_file_reference die entsprechenden
>>> Bilddatensätze nicht gegeneinander lokalisiert. Ist das das Problem?
>>> Eigentlich sollte es dort egal sein, weil die Lokalisierung ja über die
>>> Produktvarianten erfolgt. Eigentlich würde ich erwarten, wenn die
>>> lokalisierte Produktvariante gezogen wird, dass dann auch die
>>> lokalisierten Bilddatensätze gezogen werden. Woher weiß Extbase
>>> überhaupt von den Originalbilddatensätzen? Dazu müsste es ja über die
>>> Originalvariantendatensätze gehen. Es werden aber korrekt die
>>> lokalisierten Varianten gerendert.
>>>
>>> Ist das ein Bug?
>>>
>>> Beste Grüße
>>> Stefan
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>


-- 
--
Bergische Webschmiede
Typo3 Dienstleistungen
:: Dipl.-Ing. Stefan Padberg
:: www.bergische-webschmiede.de

---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com



More information about the TYPO3-german mailing list