Views モジュールを使って、当サイトのリンク集を構築している際、グループ化に使用したタクサノミのタームが翻訳されない問題に遭遇した。言語ごとにタームを作るのも大変だし、どうしたものかと悩んでいたのだが、ネットで調べてみたところ、手頃な回避策が見つかったので、ここにまとめておくことにする。
問題が見つかった環境は以下のとおり。
設定は、ボキャブラリの Multilingual options をインターフェース翻訳にし、Arguments を使用して View を Term ID でグループ化している。
ボキャブラリの方は、「タクサノミー」->「ボキャブラリの編集」から、「Multilingual options」で「Localize terms. Terms are ・・・」を選択肢すれば良い。
Viewの方は、Arguments に Term ID を追加して、タイトルに%1を設定し、「Action to take if argument is not present」で「Summary, sorted ascending」を選択すれば、グループ化表示が可能となる。
左サイドバーに、サマリー表示のブロックを配置して、Viewを表示すると下図のように結果となる。サマリー表示のタームと、リスト表示のタイトルが翻訳されていないことがわかる。
まずは、サマリー表示のタームが翻訳されない問題だが、views-view-summary.tpl ファイルを、以下の手順でオーバーライドすれば解決できる。
<li><a href="<?php print $row->url; ?>"><?php print tt('taxonomy:term:'.$row->term_node_tid.':name', $row->link); ?></a>次に、タイトルが翻訳されない問題の方だが、こちらは少し厄介で、Viewsモジュールのいくつかのハンドラクラスをオーバーライドしなければならない。この問題については、Drupal.org のこちらのスレッドでも議論され、最終的には Views translation にパッチを当てることに落ち着いたようだが、当サイトでは、できるだけ正規のモジュールに手を加えたくないという理由から、新しいモジュールを追加する方法を採用した。追加するモジュールは、前述のスレッドで公開されているから、対策自体は簡単だ。コメント#90の i18ntaxonomyviews_for_2_7.zipを、ダウンロードしてインストールするれば、タイトルが翻訳されるようになる。
さて、ふたつの対策を行ったところで、結果を見てみよう。
サマリー表示のターム、リスト表示のタイトルのタームともに翻訳されるようになり、View内のタームを多言語化することに成功した。
コメント
I came accross your blog!
I came accross your blog! Awsome!
replica louis vuitton handbags
replica handbags louis vuitton
louis vuitton replica