最近の更新

関連


その他いろいろ

多機能フィードリーダSynapse製作中

2月までは目が回るほど忙しい

MODxでつくる! 最強のCMSサイト カバー
MODxでつくる! 最強のCMSサイト

Multilingual Listing 1.10

多言語振り分け/リストアップ
初出:2007年04/03 更新:2007年04/22

この文書のキーワード: なし

概要

MODxで異なる言語圏のユーザ向けに副言語が利用できたら…と思い、作ってみました。 TVを利用する、ソースコードに印を埋め込んで選択して表示、別ドキュメントへジャンプ、と様々な実装方法が考えられますが、Multilingual Listingでは別ドキュメントへジャンプする方法をとっています。

ブラウザが要求してきた言語(Accept-Language)によって振り分けるプラグインMultilingual Routerもあります。 これは、要求された言語(ja,en-us;など)を最初から試していって、最初に見つかったドキュメントの内容を出力します。また、言語違いの同ドキュメントがリファラの場合、ブラウザの要求言語に関わらずURLで指定されたドキュメントが表示されます。

わかりやすく書くと、以下のようになります。(デフォルト英語(en)としています)

ブラウザの言語リファラURL(エイリアス)表示されるページ
ja,endoc-jadocdoc
doc-jadoc-ja
docdocdoc
doc-jadoc-ja
上記以外、あるいは無しdoc, doc-jadoc-ja

動作環境

使用方法

まず、スニペットの$available_langにサイトで使う全ての言語の識別名(Routerと兼用することを考えると、ブラウザの送るen, ja, frのような識別子)を、$available_lang_nameには対応する言語名(その言語の自称を推奨)を書きます。 デフォルトの


$available_lang = array('en', 'fr', 'ja');
$available_lang_name = array('English', 'François', '日本語');

は英語,フランス語,日本語を使う際の設定です。配列の先頭がデフォルト扱い(-langのサフィックスなしで使える)となるため、日本語圏のサイトではarray('ja', 'en')が妥当でしょう。

Multilingual Routerは"OnWebPageInit"をトリガに指定します。 コード中の$available_langにスニペット同様言語の省略名を書いてください。

言語の切り替えリンクを表示させたい場所で、


  [[MultilingualListing]]
とします。現在のドキュメントのエイリアスがsome-document(-*)だったとして、
some-document (英語版)
some-document-fr (フランス語版)
some-document-ja (日本語版)
が検索され、見つかった物がそれぞれのページのリンクとしてリストアップされます。 一つしか見つからなかった場合にリストの表示を抑制するには&nothingIfMonoを1にします。

ここでsome-documentが英語版となっているのは、先の言語設定の配列の先頭にenを指定しているからです。