Mehrsprachige Brotkrume


7

Ich muss einen Breadcrumb auf meiner Client-Website anzeigen, aber er muss in zwei Sprachen vorliegen. Ich habe verschiedene Ansätze und Module ausprobiert, aber alle zeigen den Breadcrumb nur in einer Sprache.

Bitte, wenn jemand eine Idee dazu hat, schätze ich Ihre Hilfe.

Könnten Sie bitte mehr über die Verwendung von Standard-Drupal-Breadcrumb erklären, was hätte ich installieren müssen, um Breadcrumb richtig zu verwenden? Benötige ich Breadcrumb + ein anderes Modul ???

Grüße,


Sie müssen angeben, wo Sie den Breadcrumb platzieren und wie Sie Ihre Website übersetzen. Diese Antwort kann jedoch von Nutzen sein: drupal.stackexchange.com/questions/59930/…
Patrick Kenny

Vielen Dank, Patrick. Ich verwende Taxonomie, um meinen Inhalt mit lokalisiertem Vokabular zu kategorisieren, und ich verwende die Standardansicht für Taxonomie-Begriffe, um kategorisierten Inhalt anzuzeigen. Ich habe easy Breadcrumb installiert, aber der Breadcrumb wird nur in Englisch angezeigt.
Fadifannoun

Die meisten Breadcrumb-Module auf drupal.org sind nicht mehrsprachig. Sofern sich ein Modul nicht ausdrücklich als unterstützend auflistet, würde ich davon ausgehen, dass es keine Unterstützung gibt.
Patrick Kenny

1
Crumbs verfügt über ein gewisses Maß an Mehrsprachigkeit (wir verwenden es mit übersetzten Menü-Links, bei Vokabeln nicht sicher). Ich würde das zuerst versuchen, ein Problem für fehlende Sachen erstellen
Bojan Zivanovic

+1 auf Krümel. Bisher das einzige, was wirklich "out of the box" funktioniert, um übersetzte Semmelbrösel zu bekommen. Es scheint auch das beste Modul zu sein, um einen strukturierten Ansatz für die Codierung separater Breadcrumb-Rezepte bereitzustellen.
Lester Peabody

Antworten:


1

Angenommen, Sie möchten Ihre Semmelbrösel wie folgt:

  Home/La Casa >> Node/Nodo >> Friends/Amigos

Sie können template_preprocess_breadcrumb folgendermaßen überschreiben:

  function MY_THEME_preprocess_breadcrumb(&$variables)
  {
     $breadcrumbs = &$variables['breadcrumb'];
     foreach($breadcrumbs as &$breadcrumb)
     {
         $breadcrumb .= '/' . locale($breadcrumb, null, 'SP');
     }
   }

Zitieren Sie mich nicht in den Langcodes, und dies würde erfordern, dass Sie das Gebietsschemamodul installiert und aktiviert haben, aber es sollte den obigen Beispiel-Breadcrumb ausgeben.



0

Drupal verfügt über einige Mainstream-Module, die in den meisten Fällen damit umgehen können. Mit der integrierten Schnittstellenübersetzung und i18n_string können Sie Übersetzungen für viele der wichtigsten Breadcrumbs unter Konfiguration -> Regional & Sprache -> Schnittstelle übersetzen -> Übersetzen hinzufügen.

Mehrere Module können Ihnen dabei helfen, diese Zeichenfolgen zu erhalten. Mit dem Potx-Modul können Sie alle integrierten Schnittstellenzeichenfolgen aus Ihren anderen installierten Modulen abrufen, wodurch die Zeichenfolgen in die Tabelle locales_source eingefügt werden. Anschließend können Sie das Modul l10n_update verwenden, um nach von der Community bereitgestellten Übersetzungen für diese Zeichenfolgen zu suchen.

Für den letzten Teil eines Breadcrumbs, der beispielsweise von einem Knoten stammt, zeigt Drupal den übersetzten Titel des Knotens an, wenn er ihn findet. Bei der Inhaltsübersetzung (knotenbasiert) zeigt der Knoten seinen Titel im Breadcrumb an, und bei der Entitätsübersetzung (feldbasiert) können Sie das Titelmodul aktivieren, um die Titeleigenschaft in ein Feld zu konvertieren, das dann übersetzt und angezeigt werden kann in der Semmelbrösel.


0

Hoffe das hilft:

<?php
    //breadcrumb fix
        function THEME_NAME_menu_breadcrumb_alter(&$active_trail, $item) {
            global $language ;
            $lang_name = $language->language;
            $i = 0;
            foreach (array_keys($active_trail) as $key) {
                if($i!=0){
                    $translatedValue = i18n_string_translate(array('menu', 'item', $active_trail[$key]['mlid'], 'title'), $active_trail[$key]['title'], array('langcode' => $lang_name, 'sanitize' => FALSE));
                    $active_trail[$key]['title'] = $translatedValue;
                }
               $i++;
            }
        } 
    ?>

0

Angenommen, Sie verwenden das i18nModul, einschließlich des Submoduls i18n_menu, besteht die zuverlässigste Methode zum Übersetzen Ihrer Breadcrumbs darin, hook_menu_breadcrumb_alterdie _i18n_menu_link_titleFunktion für jedes Element zu implementieren und auszuführen .

Das sollte funktionieren:

/**
 *   Implements hook_menu_breadcrumb_alter()
 */
function YOURMODULE_menu_breadcrumb_alter(&$active_trail, $item) {
  foreach ($active_trail as $index => $breadcrumb_item) {
    if (isset($breadcrumb_item['mlid'])) {
      $active_trail[$index]['title'] = _i18n_menu_link_title($breadcrumb_item);
    }
  }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.