Drupal 8.2.2: Schwierigkeiten mein Datenmodell in Drupal abzubilden
am 12.11.2016 - 07:57 Uhr in
Ich verrenne mich und komme gedanklich mit der Abbildung meines Datenmodels in Drupal nicht weiter. Um es zu veranschaulichen, habe ich ein ER-Modell angehängt.
Voraussetzungen
- Drupal ist multilingual mit deutsch + türkisch eingerichtet.
- Zu jeder Pflanze soll jeweils eine Beschreibung in deutsch + türkisch existieren.
- Jede Pflanze hat beliebig viele, jedoch mindestens einen Namen (Bezeichnung), egal welche Sprache.
- Jede Pflanze hat immer einen Rufnamen jeweils in deutsch + türkisch - ein gängiger Name, unter dem diese erkannt wird.
- Zusätzlich zu den vorhandenen Sprachen deutsch + türkisch können die Namen auch in lateinisch oder griechisch erfaßt werden.
- Die Namen in lateinisch und griechisch werden in allen Sprachen mit dargestellt.
- Jede Pflanze kann, aber muß nicht, in hierarchischer Beziehung zu einer oder mehreren anderen Pflanzen stehen.
- Für jede dieser Beziehungen soll die Art der Beziehung nachgehalten werden.
Ich habe nun folgendes generiert
Inhaltstyp: "Pflanzen"
Feld: "Beschreibung": Text (formatted, long, with summary)
Inhaltstyp: "Pflanzen-Namen"
Feld: "Name": Klartext
Feld: "Rufname?": Boolean
Taxonomie: "Pflanzen-Beziehungsart"
Begriff: "biologische Taxonomie"
Begriff: "Sorte"
Inhaltstyp: "Pflanzen-Beziehungen"
Feld: "Mutter": Entitäts-Referenzierung (Inhaltstyp: "Pflanzen", Erlaubte Anzahl Werte: 1)
Feld: "Kind": Entitäts-Referenzierung (Inhaltstyp: "Pflanzen", Erlaubte Anzahl Werte: 1)
Feld: "Beziehungsart": Entitäts-Referenzierung (Taxonomie: "Pflanzen-Beziehungsart", Erlaubte Anzahl Werte: 1)
Beispiele:
1. Pflanze: "Solanum"
Namen:
lateinisch: Solanum
deutsch: Nachtschatten
türkisch: Patlıcangiller
Beziehungen:
zum Kind "Tomate" als "biologische Taxonomie"
zum Kind "Kartoffel" als "biologische Taxonomie"
2. Pflanze: "Tomate"
Namen:
lateinisch: Solanum lycopersicum (Rufname)
deutsch: Tomate (Rufname)
deutsch: Paradiesapfel
türkisch: Domates (Rufname)
Beziehungen:
zur Mutter "Nachschatten" als "biologische Taxonomie"
3. Pflanze "Kartoffel"
Namen:
lateinisch: Solanum tuberosum (Rufname)
deutsch: Kartoffel (Rufname)
deutsch: Erdapfel
türkisch: Patates (Rufname)
Beziehungen:
zur Mutter "Nachschatten" als "biologische Taxonomie"
zum Kind "Annabelle" als "Sorte"
4. Pflanze "Annabelle"
Namen:
lateinisch: Solanum tuberosum var. Nicola x Monalisa" (ist in dieser Sprache der Rufname)
deutsch: Annabelle (Rufname)
türkisch: Anabel (Rufname)
Beziehungen:
zur Mutter "Kartoffel" als "Sorte"
Wo hakts bei mir?
- Ich könnte den Rufnamen als Inhaltstyp-Feld "Titel" erfassen, so das der Inhaltstyp "Pflanzen-Namen" komplett entfallen könnte, indem ich bei "Pflanzen" ein Feld "Namen" mit Mehrfacheintragungen generiere. Ich könnte zwar keine Rufnamen für die lateinischen Namen definieren, aber damit kann ich leben.
- Wie kann ich jedoch griechische + lateinische Namen einbinden?
- Wie bekomme ich es hin, daß jemand anstelle mit "Kartoffel" die Pflanze mit dem Namen "Erdapfel" oder "Solanum tuberosum" bei der Zuordnung finden kann? Also in den Auswahllisten alle verfügbaren Namen gelistet sind (Rufnamen in englisch + türkisch sowie die anderen Namen in englisch + türkisch + lateinisch + griechisch)?
- Wie kriege ich während der Eingabe die Verbindung von "Pflanzen" auf "Pflanzen-Beziehungen"?
Anhang | Größe |
---|---|
Unbenannt1.png | 41.27 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Du hast ein falsches
am 12.11.2016 - 13:36 Uhr
Du hast ein falsches Verständnis von der Multilingualität. Die Sprache ist gedacht für den Benutzer der Seite. Es sollte die Sprache sein, die er spricht.
Du definierst, ob ein Entity Mehrsprachigkeit unterstützt und dann noch welche Felder übersetzbar sein sollen. In Deiner Anwendung ist der biologische Name in Latein nicht übersetzbar. Daneben hast du die Namen in der jeweiligen Benutzersprache. Das wäre bei Dir ein wiederholbares Feld, denn Du möchtest ja mehrere Namen in einer Sprache darstellen. Schon das hat seine Tücken. Du kannst eigentlich nur den Rufnahmen übersetzen. Die Entsprechung eines Zweitnamens ist nämlich in einer anderen Sprache vermutlich nicht gegeben (etwa bei Tomate und Paradiesapfel, wobei mir dieser Begriff im Deutschen für Tomate auch neu ist). In diesem Sinne solltest Du Deine Datenstruktur noch einmal überdenken.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Drupal 8.2.2: Schwierigkeiten mein Datenmodell in Drupal ...
am 13.11.2016 - 08:54 Uhr
Ich habe kein falsches Verständnis von Multilingualität - ich lebe Multilingualität! Aber wenn Du es sagst, dann habe ich wohl ein falsches Verständnis der Multilingualität von Drupal und das weiß ich als Newbie.
Die Entität soll in deutsch + türkisch erfaßt werden, ja. Ich habe aber nirgends erwähnt, daß die Namen in der Übersetzung sich entsprechen sollen. Dies ginge, wenn überhaupt, nur mit dem Rufnamen - ich dachte das wäre klar. Aber zu jeder Sprache bzw. Übersetzung soll eine x-beliebige Anzahl Namen erfaßt werden.
Da es scheinbar keine Alternativen gibt (oder?), bleibe ich bei dem was ich bisher in Drupal habe kennenlernen können und das wären 3 Felder: Rufname, Name, wissenschaftlicher Name:
Auch stört es mich derzeit nicht, wenn ich einen Inhalt übersetze, mein komplettes Drupal auf die jeweilige Sprache umgestellt wird. Ich vermute, dass das Einstellungssache ist. Ich finde es nur schade, dass ich für diese Namen, die alle die gleiche Struktur haben, gezwungen werde, drei Felder zu deklarieren und somit 3 Tabellen im Hintergrund generiert werden, aber - wie gesagt - das Leben besteht aus Kompromissen. Die eierlegende Wollmichsau gibt es nicht und bisher finde ich Drupal hochinteressant.
Das einzige, wo ich mir Gedanken mache, ist, wie ich eine Pflanze zu einer anderen in Beziehung setze! Wenn ich eine Zuordnung treffe, so erfolgt die Auswahl über das Titel-Feld des Inhaltstyps. Bleibe ich bei der o. g. Lösung, so wäre dies der Rufname. Würde ich z.B. einen wissenschaftlichen Namen, der meistens ein eindeutiger Name ist, eingeben, so könnte ich keine Zuordnung treffen, da dieser zwar vorhanden, aber in einem anderen Feld lokalisiert ist. Oder, wenn man z.B. "Cranberry" (englischer Name) anstelle "Großfrüchtige Moosbeere" (deutscher Name) eingibt, wäre die Zuordnung adhoc nicht möglich und erst über den Umweg der Übersetzung usw.
Bleibt man bei der o. g. Lösung, so könnte ich in MySQL ohne weiteres einen View über diese 3 Tabellen generieren und hätte somit einen Zugriff auf alle Namen und alle Sprachen. Die Frage wäre, wie kriege ich diese nun bei der Referenzierung angezeigt? Könnte man in dieser Liste der verfügbaren Pflanzen alle Namen als auch die Sprache anzeigen? Gibt es irgendeine Lösung, vielleicht sogar einen anderen Weg?
Eine andere Fragestellung die sich noch ergibt ist, wie kann ich z.B. in der deutschen Darstellung, trotzdem alle Namen - also Rufnamen + Namen in deutsch + türkisch sowie die wissenschaftlichen Namen bei der jeweiligen Pflanze anzeigen? Eigentlich wäre es ein Ausschalten der Multilingualität von Drupal für diese Felder.
Das Du Multilingualität
am 13.11.2016 - 13:23 Uhr
Das Du Multilingualität lebst, weiß ich. Hier reden wir aber über die Umsetzung mit Drupal 8.
Entity-Referenzen werden bei Drupal immer über die Entity-ID des referenzierten Entities abgebildet. In einer "normalen" Auswahl wird Dir eine Liste angeboten, bei der Du lediglich die Titel der Entities siehst, um Deine Auswahl zu treffen. Darüber hinaus besteht die Möglichkeit, Views zu benutzen, um die Auswahl zu tätigen. Leider sind die schönen Hilfsmodule [do:reference_dialog] und [do:entityreference_view_widget] für D8 noch nicht verfügbar. Also mußt Du Dich im Moment mit einfachen Views begnügen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *