クライアントのウェブサイトでパンくずリストを表示する必要がありますが、2つの言語である必要があります。いくつかのアプローチとモジュールを試しましたが、すべて1つの言語でパンくずリストを表示しています。
どうか、誰かがこれについて考えているなら、私はあなたの助けに感謝します。
さらに、デフォルトのdrupalブレッドクラムの使用について、ブレッドクラムを正しく使用するために何をインストールする必要がありますか?ブレッドクラム+別のモジュールが必要ですか???
よろしく、
クライアントのウェブサイトでパンくずリストを表示する必要がありますが、2つの言語である必要があります。いくつかのアプローチとモジュールを試しましたが、すべて1つの言語でパンくずリストを表示しています。
どうか、誰かがこれについて考えているなら、私はあなたの助けに感謝します。
さらに、デフォルトのdrupalブレッドクラムの使用について、ブレッドクラムを正しく使用するために何をインストールする必要がありますか?ブレッドクラム+別のモジュールが必要ですか???
よろしく、
回答:
次のようなブレッドクラムが必要だとします。
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');
}
}
言語コードで私を引用しないでください。これを行うには、ロケールモジュールをインストールして有効にする必要がありますが、上記の例のパンくずリストを出力するはずです。
私はカスタムブレッドクラムモジュールを使用しました。このモジュールには、各言語のブレッドクラムを追加する機能があります...自動生成されるブレッドクラムについては、文字列変換テーブルで翻訳を行うことができます。多言語ブレッドクラムはパスブレッドクラムを使用して作成することもできると思います
Drupalには、ほとんどの場合これを処理できるいくつかの主流の寄付モジュールがあります。組み込みのインターフェース翻訳とi18n_stringを使用して、構成->地域と言語->インターフェースの翻訳->翻訳で、主要なパンくずリストの多くに翻訳を追加できます。
いくつかのモジュールは、これらの文字列を最初から取得するのに役立ちます。potxモジュールを使用して、インストール済みの他のモジュールからすべての組み込みインターフェース文字列をプルし、文字列をlocales_sourceテーブルに配置できます。次に、l10n_updateモジュールを使用して、コミュニティから提供されたこれらの文字列の翻訳を検索できます。
たとえば、ノードに由来するブレッドクラムの最後の部分については、Drupalは、ノードが見つかった場合、翻訳されたタイトルを表示します。Content Translation(ノードベース)の場合、ノードはブレッドクラムにタイトルを表示し、Entity Translation(フィールドベース)の場合、titleモジュールを有効にしてタイトルプロパティをフィールドに変換し、フィールドを翻訳して表示できます。パンくずリストで。
お役に立てれば:
<?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++;
}
}
?>
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);
}
}
}