Mehrsprachige Menüpunkte in Drupal 8
am 26.05.2016 - 12:13 Uhr in
In Drupal 6 war es möglich, ein Menü zu erstellen, welches sowohl deutsche als auch Menüpunkte einer zweiten Sprache im gleichen Menü enthalten hat.
Auf einer zweisprachigen Seite musste man also nur ein Menü erstellen und dieses enthielt auch die Menüpunkte der zweiten Sprache. Angezeigt wurden jeweils nur die Menüpunkte der richtigen Sprache, je nachdem auf welcher Einzelseite in welcher Sprache man sich gerade befand.
Jetzt in Drupal 8 wurde zwar die Mehrsprachigkeit von Drupal super ausgebaut und alles ist in den Core gewandert und es soll auch viel einfacher sein, aber dieser Punkt scheint zu fehlen:
Ich nehme an, dass es keine Möglichkeit gibt, in einem Menü einzelne Menüpunkt einer anderen/zweiten Sprache zum Menü hinzuzufügen, um ein zweisprachiges Menü (Menüpunkte) zu haben, welches immer korrekt nur jene Menüpunkte anzeigt zu der aktuellen Sprache der Einzelseite.
Es gibt zwar folgende Möglichkeiten in Drupal 8:
- Blocklayout ... Block übersetzen ... anscheinend wird hier nur der Titel des Bocks übersetzt und dann der Blocktitel immer automatisch in der korrekten Sprache angezeigt. Aber das brauche ich nicht, wiel ich keine Blocktitel anzeige.
- Menüs ... Menü übersetzen .... auch ein Menü kann man übersetzen, aber anscheinend wie beim Block wird hier nur der Menütitel übersetzt, detto wie oben.
Man kann auch in den Bockeinstellungen festlegen, dass ein Block nur in einer bestimmten Sprache angezeigt werden kann uns so kann man für jede Sprache ein einges Menü für diese Sprache erstellen.
Das ist zwar eine Lösung, aber damit ein Nachteil im Vergleich zu Drupal 6. Es ist nicht so tragisch, aber bei einem Upgrade von Drupal 6 nach Drupal 8 bedeutet dies, dass man alle mehrsprachigen Menüs neu erstellen muss.
Stimmt das, oder gibt es noch irgend eine andere Lösung. Nach diesem Artikel hier von Gábor Hojtsy anscheinend nicht.
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben
Deine alte Lösung beruhte auf
am 27.05.2016 - 12:17 Uhr
Deine alte Lösung beruhte auf der "content translation". Bei D 7 wurde die "Entity translation" bereits empfohlen und bei D 8 ist es heute die einzige Möglichkeit. In der alten Lösung hatte jeder Node eine andere NID ja nach Sprache und deshalb mußte man extra Menüs und auch extra Taxonomien je Sprache haben. Heute bleibt die Nod-ID und die Felder des Nodes werden übersetzt und also hat man auch das Menühandling dem angepaßt. Die Menüpunkte sollen in allen Sprachen vorhanden sein und die angezeigten Texte werden übersetzt. Daß also ein Menüpunkt nur in einer Sprache vorhanden ist, ist so nicht mehr vorgesehen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke und Detailfrage
am 27.05.2016 - 17:35 Uhr
Danke für die ausführliche Infos.
Die Menüpunkte sollen in allen Sprachen vorhanden sein und die angezeigten Texte werden übersetzt. Daß also ein Menüpunkt nur in einer Sprache vorhanden ist, ist so nicht mehr vorgesehen.
Hier ist nicht ganz klar, was das genau in der Praxis bedeutet:
Lege ein Menü "menu1" an.
Füge 10 Menüpunkte hinzu in Deutsch.
Jetzt wie geht es weiter, wenn ich diese 10 Menüpunkt auch in "Sprache 2" benötige?
1) Kann man zum menu1 weitere 10 Menüpunkte in "Sprache 2" hinzufügen, so dass man am Ende nur ein Menü hat, welches für beide Sprachen korrekt die Menüpunkt anzeigt? Hier habe ich keine Möglichkeit gefunden, Menüpunkt einer Sprache zuzuordnen in Drupal 8.
2) Oder muss man zusätzlich ein Menü menu2 erstellen, wo man die weiteren 10 Menüpunkte in "Sprache 2" anlegt. Man hat also am Ende zwei Menüs, welche über die Blocksteuerung dann eben jeder nur in der korrekten Sprache angezeigt wird. Diese Einstellungsmöglichkeit gibt es in Drupal 8. Dies bedeutet allerdings, dass man bei einem Upgrade von Drupal 6 nach Drupal 8 das bisherige eine Menü mit 20 Menüpunkten in 2 Sprachen in zwei Menüs mit je 10 Menüpunkten abändern muss.
Was trifft zu, 1 oder 2?
Danke.
Es trifft die Nummer 1 zu.
am 28.05.2016 - 14:19 Uhr
Es trifft die Nummer 1 zu. Ich habe es eben mal ausprobiert, da ich in Drupal 8 auch noch nicht sehr bewandert bin. Du definierst weitere Sprachen und sagst anschließend, was in weitere Sprachen zu übersetzen ist. Für das Menü ist das Custom Menü Links. Dann findest Du bei den Menüpunkten für selbst angelegte Einträge einen übersetzen Tab, über den Du die Übersetzungen eingeben kannst. Menüpunkte, die aus dem System oder von Views kommen, muß Du dort auf die Übersetzung kommen. Wie genau habe ich jetzt noch nicht auf die Schnelle gefunden.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Verwirrung ist perfekt - wie vorgehen?
am 28.05.2016 - 19:10 Uhr
Okay, neu ist jetzt sozusagen, dass man unter
/admin/config/regional/content-language
einstellen kann, was übersetzt werden können soll.
Aktiviert man Custom menu link, wie von Dir vorgeschlagen, kann man plötzlich beides:
- einem Menü einen Menüpunkt in der zweiten Sprache hinzufügen
- einen bestehenden Menüpunkt übersetzen
(beides hat unterschiedliche Auswirkungen).
Welches der beiden Methoden verwendet man denn nun jetzt, wobei die erste vorerst mal nicht funktioniert hat.
Man kann also Menüpunkte übersetzen und Menüpunkte einer Sprache zuordnen. Was wendet man jetzt an, wenn man einfach nichts anderes will, als eine Drupal 8 Site mit Seiten (page) inklusive Menüpunkten in Deutsch und der 2. Sprache zu erstellen.
Und sobald das klappt, stellt sich die Frage, wie denn nun die Vorgangsweise ist, wenn man nicht von einer neuen Drupal 8 - Installation ausgeht, sondern von einem Upgrade von Drupal 6 nach D8. In dem Fall werden die Inhalte nämlich nach dem Migrate/Upgrade andere in Drupal 8 angelegt, als sie benötigt werden: Für jede zweisprachige Seite wird ein Node in Deutsch und ein Node in der 2. Sprache angelegt (mit eigener NID), weil dies in Drupal 6 damals so war.
Wie macht man aus dem riesigen Durcheinander nun eine funktionierende zweisprachige Seite?
(Eigentlich sollte das der Upgrade-Prozess alles automatisch machen, aber ich weiß, das ist noch jung und es wird noch nicht alles unterstütz, vielleicht funktioniert das in einem Jahr perfekt, derzeit nicht).
In Drupal 6 wurden die Nodes,
am 28.05.2016 - 19:30 Uhr
In Drupal 6 wurden die Nodes, die Übersetzungen von einander waren, über das Feld tid (Translation-ID) in der Node-Tabelle gekoppelt. Darauf basierend ließe sich mit eigener Programmierung die Inhalte beider Nodes in Drupal 8 in einem zusammenführen. Ob Migration das je perfekt können wird, wage ich aber nicht vorherzusagen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Weder 1 noch 2
am 30.05.2016 - 13:17 Uhr
Du legst ein Menü an. Das definiert die Struktur und welcher Content (nid) hinter dem Menüpunkt steckt. Das ist in jeder Sprache immer der selbe (nicht der gleiche!) Content. Verwirrt?
In Drupal 8 werden keine Inhalte mehr übersetzt (also neue Entities erzeugt) sondern Felder. Das gilt für Menüs ebenso wie für Taxonomie und Entities (also auch Content). Willst du also Menüs übersetzen, musst du die Felder in dem Menü übersetzen. Da bleibt also nur der Linktext der angezeigt wird. Du musst aber immer erst die Felder, die übersetzt werden sollen, für die Übersetzung freischalten. Die Übersetzungen der Felder werden dann in der entsprechenden Sprache angezeigt (und was nicht übersetzt ist, wird in der Ausgangssprache angezeigt).
Es bleibt dir aber unbenommen, ein englisches Menü, ein deutsches Menü oder ein französisches Menü mit unterschiedlichen Strukturen zu erfassen und ebenso Beiträge in Englisch, in Deutsch oder in Französisch zu erstellen. Nur haben diese Beiträge keinen Bezug untereinander (wie in D7).
Warum muss man Felder für die Übersetzung freischalten? Stell dir vor, du hast einen Beitragstyp mit Bildern, z.B. der Abbildung eines Buches. Der Beitrag soll dieses Buch beschreiben. Möchtest du in der deutschen Übersetzung die Abbildung des englischen Buches zeigen? Wohl kaum, also ist in diesem Beitragstyp das Bild "übersetzbar". Hast du aber einen Beitragstyp mit Bild, der z.B. Naturaufnahmen zeigt und beschreibt, ist eine "Übersetzung" des Bildes wenig sinnvoll.
Wilfried
Drupal: a CMS without typo in its name
Auf Drupal.org bin ich als Pepe Roni unterwegs!
Übersetzung fehlt, aber Menüpunkt in anderer Sprache erscheint
am 02.09.2017 - 22:46 Uhr
Ich mache gerade die Erfahrung, dass es mit der Übersetzung der Menü-Punkte in Drupal 8 nicht gerade einfach ist, oder ich mache etwas falsch...
So wie es bei mir aussieht, reicht es nicht, bei der Übersetzung eines Inhaltes (zumindest bei der "Einfachen Seite") einen Menüpunkt in der jeweiligen Sprache zu erstellen.
Man muß danach noch unter "admin/structure/menu/manage/main" auf das "Bearbeiten" dieses Menüpunktes gehen und dort in allen Sprachen unter "Übersetzung" das Kästchen bei "Diese Übersetzung ist veröffentlicht" aktivieren. Und das auch in der Standardsprache, in der der Inhalt zuerst erstellt wurde. Obwohl der entsprechende Menüpunkt bereits zu sehen ist.
Was ich bis jetzt noch nicht geschafft habe, das ist die Menüpunkte bei fehlenden Übersetzungen zu verstecken. Ich arbeite mit drei Sprachen. Deutsch ist Standard. Für einen in Deutsch erstellten Inhalt habe ich die Übersetzung nur in einer Sprache gemacht und in dieser Sprache sowie in Deutsch wird der Menüpunkt korrekt angezeigt. Wenn ich aber die Webseite auf die dritte Sprache umschalte, für die noch keine Übersetzung vorhanden ist, verschwindet der entsprechende Menüpunkt nicht, sondern wird in Deutsch angezeigt. Wenn ich dann auf diesen deutschen Menüpunkt klicke, erscheint der entsprechende Inhalt in Deutsch, dabei bleibt aber diese dritte Sprache auf der Webseite aktiv (Name der Website bleibt in der dritten Sprache und in dem URL-Feld bleibt der Sprachkürzel zu sehen).
Soll das so sein? Bei Drupal 6 verschwinden die Menüpunkte, wenn die Übersetzung nicht vorhanden ist.
Drupal 8 und Mehrsprachikeit
am 03.09.2017 - 05:41 Uhr
Drupal 8 und Mehrsprachikeit ist auch ziemlich bescheiden...
Beim alten Prinzip hast du keine Zusammenhänge mehr zwischen der deutschen und der englischen Übersetzung (also wenn du beispielsweise das Sprachfähnchen bei Impressumm auf Englisch umstellst ist dort nicht das englische zu sehen)
Beim neuen Prinzip legt Drupal 8 komischerweise aber auch eine zweite Seite an, aber mit der selben ID! Solltest du da z.B. eine englische Übersetzung löschen ist auf die deutsche Seite weg!
C.A.W. Webdesign