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_menu
muss 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/edit
der 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/edit
den ü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/2
vollständig aufzugeben . Angenommen, Sie legen im oben genannten Beispiel den Pfadalias artilce/hello
fü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/hello
Sie jetzt auf zugreifen , können Sie den Knoten "Bonjour" mit dem französischen Menü sehen. Wenn Sie jedoch zugreifen/fr/node/1
Was 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.
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.
quelle