Multilingual Listing 1.10
概要
MODxで異なる言語圏のユーザ向けに副言語が利用できたら…と思い、作ってみました。 TVを利用する、ソースコードに印を埋め込んで選択して表示、別ドキュメントへジャンプ、と様々な実装方法が考えられますが、Multilingual Listingでは別ドキュメントへジャンプする方法をとっています。
ブラウザが要求してきた言語(Accept-Language)によって振り分けるプラグインMultilingual Routerもあります。 これは、要求された言語(ja,en-us;など)を最初から試していって、最初に見つかったドキュメントの内容を出力します。また、言語違いの同ドキュメントがリファラの場合、ブラウザの要求言語に関わらずURLで指定されたドキュメントが表示されます。
わかりやすく書くと、以下のようになります。(デフォルト英語(en)としています)
| ブラウザの言語 | リファラ | URL(エイリアス) | 表示されるページ |
|---|---|---|---|
| ja,en | doc-ja | doc | doc |
| doc-ja | doc-ja | ||
| doc | doc | doc | |
| doc-ja | doc-ja | ||
| 上記以外、あるいは無し | doc, doc-ja | doc-ja |
動作環境
- フレンドリーURL ON
- エイリアスパスOFFで確認。ONで動くかは未確認。
使用方法
まず、スニペットの$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にスニペット同様言語の省略名を書いてください。言語の切り替えリンクを表示させたい場所で、
とします。現在のドキュメントのエイリアスがsome-document(-*)だったとして、[[MultilingualListing]]some-document (英語版) some-document-fr (フランス語版) some-document-ja (日本語版)が検索され、見つかった物がそれぞれのページのリンクとしてリストアップされます。 一つしか見つからなかった場合にリストの表示を抑制するには¬hingIfMonoを1にします。ここでsome-documentが英語版となっているのは、先の言語設定の配列の先頭にenを指定しているからです。
