多言語パンくず


7

クライアントのウェブサイトでパンくずリストを表示する必要がありますが、2つの言語である必要があります。いくつかのアプローチとモジュールを試しましたが、すべて1つの言語でパンくずリストを表示しています。

どうか、誰かがこれについて考えているなら、私はあなたの助けに感謝します。

さらに、デフォルトのdrupalブレッドクラムの使用について、ブレッドクラムを正しく使用するために何をインストールする必要がありますか?ブレッドクラム+別のモジュールが必要ですか???

よろしく、


ブレッドクラムを配置する場所と、サイトをどのように翻訳するかについての詳細を提供する必要があります。:この答えは有用であり得る、と述べているdrupal.stackexchange.com/questions/59930/...
パトリック・ケニー

パトリックに感謝します。分類を使用してコンテンツをローカライズされた語彙で分類し、分類されたコンテンツを表示するためにデフォルトの分類用語ビューを使用しています。簡単なブレッドクラムをインストールしましたが、ブレッドクラムを英語でのみ表示しています。
fadifannoun 2013

drupal.orgのほとんどのブレッドクラムモジュールには、多言語機能がありません。モジュールにサポートがあると明確に記載されていない限り、サポートはないと仮定します。
Patrick Kenny

1
Crumbsにはある程度の多言語機能があります(ボキャブラリーについては不明ですが、翻訳されたメニューリンクで使用しています)。私は最初にそれを試してみて、不足しているものの問題を作成します
Bojan Zivanovic

パン粉に+1。これまでのところ、翻訳されたブレッドクラムを取得するために「そのまま」機能する唯一のこと。また、個別のブレッドクラムレシピをコーディングするための構造化アプローチを提供するための最良のモジュールのようです。
レスターピーボディ

回答:


1

次のようなブレッドクラムが必要だとします。

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

次のように、template_preprocess_breadcrumbをオーバーライドできます。

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

言語コードで私を引用しないでください。これを行うには、ロケールモジュールをインストールして有効にする必要がありますが、上記の例のパンくずリストを出力するはずです。



0

Drupalには、ほとんどの場合これを処理できるいくつかの主流の寄付モジュールがあります。組み込みのインターフェース翻訳とi18n_stringを使用して、構成->地域と言語->インターフェースの翻訳->翻訳で、主要なパンくずリストの多くに翻訳を追加できます。

いくつかのモジュールは、これらの文字列を最初から取得するのに役立ちます。potxモジュールを使用して、インストール済みの他のモジュールからすべての組み込みインターフェース文字列をプルし、文字列をlocales_sourceテーブルに配置できます。次に、l10n_updateモジュールを使用して、コミュニティから提供されたこれらの文字列の翻訳を検索できます。

たとえば、ノードに由来するブレッドクラムの最後の部分については、Drupalは、ノードが見つかった場合、翻訳されたタイトルを表示します。Content Translation(ノードベース)の場合、ノードはブレッドクラムにタイトルを表示し、Entity Translation(フィールドベース)の場合、titleモジュールを有効にしてタイトルプロパティをフィールドに変換し、フィールドを翻訳して表示できます。パンくずリストで。


0

お役に立てれば:

<?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

i18nサブモジュールを含むモジュールを使用していると仮定するとi18n_menu、パンくずリストを翻訳する最も信頼できる方法は、各アイテムに関数を実装hook_menu_breadcrumb_alterして実行_i18n_menu_link_titleすることです。

これはうまくいくはずです:

/**
 *   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);
    }
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.