Menü-Links werden nicht übersetzt

7

Ich habe Drupal 7 und auch die Internationalisierungsmodule installiert. Ich kann eine einfache Site hinzufügen und übersetzen. Ich kann mich sogar dafür entscheiden, lokalisierte URL-Aliase hinzuzufügen, die beim Sprachwechsel gut funktionieren. Das einzige, was nicht funktioniert, ist die Menüübersetzung. Bei der Übersetzung eines Artikels kann ich für jede Sprache einen anderen Menünamen wählen - im Menü wird jedoch nur die englische Version für alle Sprachen angezeigt.

Hat jemand eine Ahnung, warum das so sein könnte?

dmeu
quelle

Antworten:

6

Folgendes verstehe ich mit dem aktuellen Drupal 7.32. Das Verhalten des i18n in Drupal hängt stark von den Einstellungen ab, daher erwähne ich die Art und Weise, mit der ich ziemlich vertraut bin. Wenn Ihre Einstellungen unterschiedlich sind, kann das Verhalten unterschiedlich sein.

Erstens i18n_menumuss aktiviert werden, sowie i18n_node(ich verstehe, einige Leute bevorzugen Entity-Übersetzung, deren Verhalten anders sein muss, aber ich weiß nicht darüber).

Zweitens geben Sie "URL" mit "Pfadpräfix" die höchste Priorität bei /admin/config/regional/language/configure. Ich persönlich bevorzuge es auch sehr, das Pfadpräfix für die Standardsprache (normalerweise Englisch, "en") explizit auf zu setzen /admin/config/regional/language/edit/en. Standardmäßig ist es Null, und das finde ich aufgrund seiner inhärent asymetrischen Natur ziemlich verwirrend. Trotzdem liegt es natürlich an jedem Entwickler!

Drittens ist "Übersetzungsmodus" bei /admin/structure/menu/manage/main-menu/editder Schlüssel. Standardmäßig ist dies "Keine mehrsprachigen Optionen für Menüelemente". Offensichtlich ist das nicht gut für übersetzbare Menüs. Wählen Sie eine der beiden folgenden Optionen: (1) "Übersetzen und lokalisieren". und (2) "Feste Sprache".

Ich denke, die zweite Option (2) passt zu den meisten Websites, es sei denn, die Menüstrukturen für alle unterstützten Sprachen auf der Website sind identisch. Wenn Sie (2) wählen, erstellen Sie einfach ein anderes Menü, sagen Sie "Hauptmenü Französisch", kreuzen Sie "Feste Sprache" als Französisch an und platzieren Sie es in dem Bereich, den Sie in der Blockkonfiguration mögen/admin/structure/block

Wenn Sie den ersten (1) "Übersetzen und lokalisieren" auswählen, wird in /admin/structure/menu/manage/main-menu/edit(zum Beispiel für das Hauptmenü ) die Registerkarte "ÜBERSETZEN" (oben) angezeigt, und Sie können jetzt jeden Link aus der Spalte "Übersetzen" übersetzen (ganz rechts?) bei /admin/structure/menu/manage/main-menu.

Jetzt gibt es mehr als eine Option, je nachdem, was Sie im Menü erreichen möchten. Angenommen, es gibt einen Knoten "Hallo" und seinen französischen Übersetzungsknoten "Bonjour" (es handelt sich um zwei verschiedene Knoten, z. B. Knoten 1 bzw. 2). Möchten Sie die beiden Links für "Hallo" und "Bonjour" im Menü angeben (wenn in einer der beiden Sprachen angezeigt)? Oder möchten Sie den Link für "Hallo" für den englischen Modus / die englischen Leser und den für "Bonjour" für den französischen Modus bereitstellen? (So ​​komplex sind mehrsprachige Websites ...)

Angenommen, Sie bevorzugen die zweite Option. Bereiten Sie beispielsweise einen Hauptmenü-Link für "Hallo / Bonjour" im Hauptmenü vor. Das heißt, der Plan lautet: "Hallo" -Menü, das mit "Hallo" -Knoten (= 1) verknüpft ist, wird angezeigt, wenn es auf Englisch angezeigt wird, und "Bonjour" -Menü, das mit "Bonjour" -Knoten (= 2) verknüpft ist, wird angezeigt, wenn es in angezeigt wird Französisch.

Zuerst erstellen Sie den Menülink "Hallo", der mit Knoten 1 verknüpft ist. Zweitens geben Sie über die oben erwähnte Registerkarte "ÜBERSETZEN" /admin/structure/menu/manage/main-menu/editden übersetzten Titel als "Bonjour" ein und vergessen nicht, den Link in "Knoten =" zu ändern 2, damit das Menü "Bonjour" korrekt auf den französischen Artikel "Bonjour" verweist.

Wenn Sie nun einen anderen französischen Knoten (z. B. "Au revoir") auf Französisch anzeigen (das Pfadpräfix muss sein /fr/), wird das Menü "Bonjour" angezeigt, das mit dem französischen Knoten "Bonjour" verknüpft ist. Wenn Sie die englische Übersetzung ("Good Bye") im englischen Modus sehen (das Pfadpräfix darf nicht sein /fr/), lautet das obige Menü "Hello", das mit dem englischen "Hello" -Knoten verknüpft ist. Arbeit ist erledigt.

Die Sache ist, ich denke, es ist einfacher, die Pfad-Aliase für jeden Inhalt festzulegen (ein einzelner Pfad-Alias ​​für eine Reihe von Knoten für alle Übersetzungen) und im Grunde genommen die Verwendung der Form von knotentypischen Links wie /node/2vollständig aufzugeben . Angenommen, Sie legen im oben genannten Beispiel den Pfadalias artilce/hellofür Knoten 1 fest (Englisch; legen Sie keinen anderen Pfadalias für Knoten 2 fest, Französisch, da dies zu Verwirrung führen würde). Wenn /fr/artilce/helloSie jetzt auf zugreifen , können Sie den Knoten "Bonjour" mit dem französischen Menü sehen. Wenn Sie jedoch zugreifen/fr/node/1Was Sie sehen werden, ist der englische "Hallo" -Knoten (= 1), während das Menü oben ein französischer "Bonjour" ist. Dies liegt daran, dass der Knoten = 1 in Englisch geschrieben ist, während Sie den Inhalt in der französischen Umgebung anzeigen, wodurch das Menü in Französisch angezeigt wird (wenn Sie die Lokalisierung aktiviert haben, werden andere Teile wie das Benutzermenü ebenfalls französisch, jedoch nicht der Hauptinhalt).

Für manche Menschen mag das das sein, was sie wollen. Beispielsweise kann eine französische Einkaufsseite eine englische Schnittstelle für den Einkaufskorb usw. bieten, während sie sich nicht die Mühe machen müssen, die Beschreibung jedes zu verkaufenden Artikels zu übersetzen. Ich vermute, deshalb ist der i18n in Drupal so konzipiert.

Schließlich möchten Sie möglicherweise häufig "Alle Caches leeren", während Sie die Einstellungen ändern, um sicherzustellen, dass alle vorgenommenen Änderungen sich auf das auswirken, was Sie sehen.

Masa Sakano
quelle
4

Ich bin mir ziemlich sicher, dass Sie das Untermodul i18n Menu Translation aktivieren müssen , das Teil des Internationalisierungsmoduls ist .

Bearbeiten Sie das Menü und wählen Sie den gewünschten Übersetzungsmodus. Ich benutze Übersetzen und Lokalisieren .

Wenn Sie dann einen Menülink bearbeiten, sollte eine neue Registerkarte für Übersetzen vorhanden sein . Von dort aus können Sie den übersetzten Menüeintrag hinzufügen. Danach sehen Sie den Menüeintrag. Wenn Sie die Option nicht übersetzen können, bearbeiten Sie den Primärknoten und speichern Sie ihn erneut. Dadurch wird dem Menüelement normalerweise eine Sprache zugewiesen.

Anschließend können Sie Ihre Menü-Links nach Bedarf anordnen. Ich verwende übergeordnete / untergeordnete URL-Aliase basierend auf der Menühierarchie, daher erstelle ich einen Spiegelmenübaum.

Wenn Sie das Menü zu einer Seite hinzufügen, werden nur die Links für die aktuelle Sprache angezeigt.

Nebenbei bemerkt, Drupal 7 Multilingual Sites ist die Kosten für die Arbeit an Ihrer ersten mehrsprachigen Site wert (vorausgesetzt, Sie kennen Drupal bereits gut).

mpdonadio
quelle
Ich bin kein Experte in diesem Bereich, aber ich habe diese Woche einen Tag mit der Ersteinrichtung einer mehrsprachigen Website verbracht, sodass alles in meinem Kopf frisch ist. Ich würde gerne andere / bessere Möglichkeiten sehen, um damit umzugehen.
mpdonadio
2
Hallo MPD, danke für deine Zeit. Ich habe es genau so konfigurieren lassen, wie Sie es gesagt haben. Das Modul war bereits installiert und ich übersetzte bereits Artikel und Unterlinks (URL). Das funktioniert gut. Was nicht funktioniert, ist der angezeigte Link im Menü.
dmeu
Heute bin ich auch auf dieses Problem gestoßen, die Menüpunkte wurden nicht in der ausgewählten Sprache angezeigt (sie waren immer in der Standardsprache). Wie sich herausstellte, war die Reihenfolge der Spracherkennungseinstellungen dafür verantwortlich.
Volker
0

Beachten Sie, dass Sie auf der Seite Sprachen> Auswahl und Erkennung die Erkennungsmethode sowohl für die Benutzeroberfläche als auch für den Inhalt auf URL festlegen müssen. Ich denke, das Menü fällt unter die Einstellungen der Benutzeroberfläche. Ich habe Stunden gebraucht, um das zu realisieren. Ich nahm an, dass die Benutzeroberfläche die Backend-Administrationsseiten waren.

Jeff
quelle