Shortcut
WM:LS
Template:Stubの言語選択機能がない状態。
Template:Stubの言語を選択した状態(英語とフランス語。)

言語の選択(Language select)機能は、多言語ページにおいて外国語を隠すことができる機能です。例えば、フランス人が多言語ページにおいてフランス語の文章だけを見ることができます。

注記:
  • このページで説明する言語選択機能の使用は、翻訳版が非常に少ないか、少数の文を翻訳する場合に限定してください。言語選択機能の想定する対象は、ほとんど翻訳されないページ(一般的な活動報告書や利用者ページなど)またはカテゴリの文書化ページです(個別のサブカテゴリ作成、言語ごとの翻訳ページ集の保存または画像の説明が望ましいまたは不可能である場合)。
  • サブページを作り複数の単一言語に全文を翻訳されるように設計されたページはできるだけ言語選択を使わず、言語バーを置いてこれら複数ページ間のナビゲーションを可能にするべきです(詳細はMeta:Translationを参照)。
  • 同様に一般的なメッセージボックスで、ページの状態(ステータス)を通知するものは、ユーザ言語を直接表示するため、言語選択を使用する代わりに言語スイッチ・テンプレート(Template:LangSwitchを参照)を参照読み込みするか、または新しいTranslate拡張機能を使用。

右の2つの画像はTemplate:Stub(かつて当言語選択システムを採用)のCSSを使う場合を示し、英語とフランス語の言語を選択するか(下部参照)しないかを示します。現状でこのテンプレートは、ユーザーの個人設定言語に自動翻訳経由で置き換えられ、それ以外の言語版訳は非表示になります。

「言語の選択」の方法 edit

「言語の選択」には2つの方法があります。ページの「言語の選択」のための準備は両方の方法とも同じです。かつてのCSSを使った方法は複数の言語を選択することができ、多言語ユーザにとってはいちばん便利です。しかし、選択された言語が無い ときに認識できず、何も表示されなくなります。新しいほうのJavaScriptを使った方法は自動的にブラウザの言語を検知し(ブラウザの設定を無視するように設定可能)、選択された言語がない場合には何も起こりません。しかし、この方法では一度に1つの言語しか表示できません。

多言語ページだと分かるように edit

言語選択を実行するページには{{multilingual}}を使ったこのページにリンクする案内があります。この目的にどのロゴを使うかの議論は今までないままで、今のところLocalisation2.svgが使われています。

言語の範囲設定 edit

技術的な詳細 edit

多言語ページはCSSのクラスclass="lang-xx"に含まれる全ての言語で書かれた文章とともに、 HTML 要素はクラス"multilingual"でタグ付けされます。xxは小文字の BCP 47 言語コードで(一般的に2、3文字の言語ISO 639のコードに、おそらく異形を示す接尾辞付き。2文字コードがない場合は、小文字の3文字コードを採用)、HTML lang 属性を示します。このlangは文脈上は class 属性よりも正確ですが、それにフックするには特定の CSS が必要なのに、すべてのブラウザーには対応していません。既存のメッセージを翻訳しているときは、コード"und"を使い、対象の言語が何語か判断できないと示します。)

以下は英語、古英語、フランス語、スワヒリ語、ラテン語、オック語、ルーマニア語、パリ語、アラビア語、ペルシア語、ウイグル語のページの例です。

<div class="multilingual">
<div class="lang-ang" lang="ang">Þis wordu is Englisc.</div>
<div class="lang-en" lang="en">This text is English.</div>
<div class="lang-fr" lang="fr">Ce texte est Français.</div>
<div class="lang-sw" lang="sw">Maelezo haya ni ya Kiswahili.</div>
<div class="lang-la" lang="la">Haec verba latina sunt.</div>
<div class="lang-oc" lang="oc">Aqueste tèxt es en Occitan.</div>
<div class="lang-ro" lang="ro">Acest text este în română.</div>
<div class="lang-pa" lang="pa">ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।</div>
<div class="lang-ar" lang="ar">هذا النّص عربي.</div>
<div class="lang-fa" lang="fa">اين نوشته فارسي است.</div>
<div class="lang-ug" lang="ug">بۇ ئۇيغۇرچە</div>
</div>

各原語名を視覚的に正しく表現するため、一覧は(言語コード順の並びではなく)ページ本体で手動で並べ替えを要します。言語コード順に並べると、順序は相対的に保たれ、最終的には恣意的で読者が目で追っても希望する言語を見つけにくくなる場合があります。

テンプレート edit

{{Ls}} テンプレート{{ls}}は言語の選択の実行を簡単にします。例えば、以下の2行は同値になります(ただしテンプレートにはその他の便利な書式設定オプションもいくつか付属し、現在のユーザー設定言語の言語名と関連する言語コードを示すツールチップの表示、更新が必要なあいまいな翻訳の色付けなどです。)

{{Ls|en|This text is English.}}
<div class="lang-en" lang="en" dir="ltr">'''English:''' This text is English.</div>

この{{Ls}} テンプレートは多言語化してある節ごとに同一ページ内の複数箇所に、また同一言語が対象でも使って良いです。節単位に含まれる Ls テンプレートの相対的な順序も維持されますが、多くの場合、言語を一貫した順序で並べた方が良いと感じるかもしれません。{{LangSelect}} は(各言語は 1 回のみ受け入れるという制限付きで)これを簡素化します。

注意点は、現状のボタン付き言語選択フォームの生成は、表示中のページのそれぞれの多言語化した見出し配下に置いた Javascript を使っているため、ページの上部には、言語選択ボックスがもう1個、表示されます。(そちらは当該ページ上の任意の多言語化見出しの場所で使われ、全言語コードの一覧で、並べ替えがしていないので選択しにくい)。これをカスタマイズするのは、CSS です(下記を参照)。

複数の{{Ls}} を使う場合は、最初に翻訳文が(編集とメンテナンスを容易にするため)言語コードごとに並べてある場合(特にスクリプトの方向が交互の場合)、 {{LangSelect}} が翻訳をどのように混在させてしまうか、検索しにくくなるか確認しましょう。これは {{LangSelect}} の作用で、(方向とタイプによって順位が決まる)スクリプトに基づき視覚的に順序付けし、さらに次に言語名のアルファベット順に並べ替えてから、右から左書きの言語を(訳注:日本語など)左から右書き言語と別のグループにまとめたからです。以下をご参照ください。

ウィキコード レンダリング
<div class="multilingual">
{{Ls|ar|هذا النص باللغة العربية.}}
{{Ls|da|Denne tekst er på dansk.}}
{{Ls|en|This text is English.}}
{{Ls|fa|این متن به زبان فارسی است.}}
{{Ls|fi|Tämä teksti on suomeksi.}}
{{Ls|fr|Ce texte est en français.}}
{{Ls|frc|update=en|Ce texte devrait être en français cajun.}}
{{Ls|he|טקסט כתוב בעברית.}}
{{Ls|hi|यह पाठ हिन्दी में है।}}
{{Ls|pa|ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।}}
{{Ls|ru|Этот текст на русском языке.}}
{{Ls|sv|Denna text är på svenska.}}
{{Ls|th|ข้อความนี้อยู่ในไทย.}}
{{Ls|ur|یہ متن اردو ہے.}}
{{Ls|zh|这是中文。}}
{{Ls|zu|Lo mbhalo Zulu.}}
</div>
العربية: هذا النص باللغة العربية.
Dansk: Denne tekst er på dansk.
English: This text is English.
فارسی: این متن به زبان فارسی است.
Suomi: Tämä teksti on suomeksi.
Français : Ce texte est en français.
Français cadien: Ce texte devrait être en français cajun. [update needed: en]
עברית: טקסט כתוב בעברית.
हिन्दी: यह पाठ हिन्दी में है।
मराठी: हा मजकूर मराठीत आहे.
ਪੰਜਾਬੀ: ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।
Русский: Этот текст на русском языке.
Svenska: Denna text är på svenska.
ไทย: ข้อความนี้อยู่ในไทย.
اردو: یہ متن اردو ہے.
中文: 这是中文。
IsiZulu: Lo mbhalo Zulu.
{{LangSelect | update = en
 | ar = هذا النص باللغة العربية.
 | da = Denne tekst er på dansk.
 | en = This text is English.
 | fa = این متن به زبان فارسی است.
 | fi = Tämä teksti on suomeksi.
 | fr = Ce texte est en français.
 | frc:FUZZY = Ce texte devrait être en français cajun.
 | he = טקסט כתוב בעברית.
 | hi = यह पाठ हिन्दी में है।
 | mr = हा मजकूर मराठीत आहे.
 | pa = ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।
 | ru = Этот текст на русском языке.
 | sv = Denna text är på svenska.
 | th = ข้อความนี้อยู่ในไทย.
 | ur = یہ متن اردو ہے.
 | zh = 这是中文。
 | zu = Lo mbhalo Zulu.
}}
Dansk: Denne tekst er på dansk.
English: This text is English.
Français : Ce texte est en français.
Français cadien: Ce texte devrait être en français cajun. [update needed: en]
IsiZulu: Lo mbhalo Zulu.
Suomi: Tämä teksti on suomeksi.
Svenska: Denna text är på svenska.
Русский: Этот текст на русском языке.
हिन्दी: यह पाठ हिन्दी में है।
ਪੰਜਾਬੀ: ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।
ไทย: ข้อความนี้อยู่ในไทย.
中文: 这是中文。
עברית: טקסט כתוב בעברית.
اردو: یہ متن اردو ہے.
العربية: هذا النص باللغة العربية.
فارسی: این متن به زبان فارسی است.

テンプレートの {{LangSwitch}}{{LangSelect}} に似ていますが、ただし表示する言語は単一です(指定した言語または現在のページのコンテンツ言語。)

用例 edit

2種類の「言語の選択」の方式を巡る争いがあることに留意してください。一度に使えるのは1つだけです。

下記の記述は、利用者が「Monobook」外装に設定していることを前提にしています。

カスケーディング・スタイルシート(CSS) edit

スタイルシートに次の文を加えて、見たいと思う言語に設定できるように編集してください。

/* すべての翻訳文を非表示にする(非推奨、元の原文も非表示にするため。)*/
.multilingual { display:none; }
/* 選択した言語のみ非表示 */ 
.multilingual >.lang-en,
.multilingual>.lang-fr { display:block; }

CSSを十分に対応するブラウザを使っているのなら(Mozilla FirefoxOperaのようなブラウザ)、文脈上は適切なCSSを利用すべきです。

多言語化した見出し内で、言語選択フォームのみを非表示にしたい(ページの上部に自動で追加される言語選択ボックスだけ表示したい)場合、次の CSS コードを使う選択肢もあります。

/* 多言語化見出し内の言語選択フォームを非表示にする */
.multilingual>form.lang_info { display:none; }

反対に、ページ最上部の言語選択ボックスの方を非表示にする(そして多言語化見出し内の言語選択フォームは表示し続ける)には、次の CSS コードを使う選択肢もあります。

/* 多言語化ページ最上部の言語選択ボックスを非表示にする */
.langselectorcontainer { display:none; }

JavaScript edit

JavaScript方式はメタウィキでは既定で有効になっています。利用不可にするには、ご利用のスクリプトファイルに次の文を加えます。

ls_enable = false;

下記でJavaScriptの例を1つ見てください。言語選択が不可能に設定済みなら、全ての言語の文が表示されます。

Afrikaans: Hierdie teks is in Afrikaans.
Bahasa Indonesia: Ini adalah teks dalam bahasa Indonesia.
Bahasa Melayu: Teks ini ditulis dalam Bahasa Melayu.
Boarisch: Des is a boarischa Text.
Brezhoneg : Brezhoneg eo an destenn-mañ.
Català : Aquest text és en català.
Dansk: Denne tekst er på dansk.
Deutsch: Dieser Text ist Deutsch.
Eesti: See tekst on eesti keeles.
English: This text is English.
Español : Ese texto está en español.
Esperanto: Ĉi tiu teksto estas en Esperanto.
Français : Ce texte est en français.
Frysk: Dizze tekst is yn it Frysk.
Galego: Este texto está en galego.
Hrvatski: Ovaj tekst je na hrvatskom jeziku.
Interlingua: Iste texto es in interlingua.
Italiano: Questo testo è in Italiano.
Kiswahili: Haya ni maelezo ya Kiswahili.
Kurdî: Ev nivîs bi kurdî ye.
Latina: Haec nota latine scriptus est.
Lëtzebuergesch: Dësen Text ass op lëtzebuergesch
Lietuvių: Šis tekstas yra lietuviškas
Magyar: Ez a szöveg magyarul van
Nederlands: Deze tekst is in het Nederlands.
Norsk: Denne teksten er på norsk.
Occitan : Aqueste tèxt es en occitan.
Polski: Ten tekst jest po polsku.
Português : Este texto está em português.
Sardu: Custu testu est in sardu.
Suomi: Tämä teksti on suomeksi.
Svenska: Denna text är på svenska.
Türkçe: Bu tekst Türkçe'dir.
Ελληνικά: Αυτό το κείμενο είναι στα Ελληνικά
Беларуская: Гэты тэкст — на беларускай мове.
Беларуская (тарашкевіца): Гэты тэкст — на беларускай мове.
Български: Този текст е на български език.
Македонски: Ова е текст на македонски јазик.
Русский: Этот текст — на русском языке.
Українська: Цей текст написано українською мовою.
ქართული: ეს ტექსტი ქართულ ენაზეა.
हिन्दी: यह पाठ हिन्दी में है।
বাংলা: এই বার্তাটি বাংলায়।
ਪੰਜਾਬੀ: ਇਹ ਟੈਕਸਟ ਪੰਜਾਬੀ ਵਿੱਚ ਹੈ।
ଓଡ଼ିଆ: ଏହି ଲେଖାଟି ଓଡ଼ିଆ ଭାଷାରେ ଲେଖାଯାଇଛି ।
தமிழ்: இது தமிழ் மொழி
ភាសាខ្មែរ៖ ឃ្លានេះជាភាសាខ្មែរ។
한국어: 이 글은 한국어입니다.
中文: 这些文字是中文。 / 這些文字是中文。
日本語: この文章は日本語です。
עברית: הטקסט הזה בעברית.
العربية: هذا النّص عربي.
فارسی: این متن فارسی است.
ئۇيغۇرچە / Uyghurche: بۇلار ئۇيغۇرچە

言語を指定する場合は、言語名ではなくコードを使います。

JavaScriptのコードはコモンズの.js 解説ページを参照してください。

変更履歴 edit

このコードは個人的なSubversionリポジトリに保存してあります。このコードをウィキメディアのSubversionのリポジトリに入れようとして、MediaWikiの開発者と連絡を取ろうとしていますが、依然、実現していません。

  • リビジョン1999 — --DieBuche 2010年11月07日T10:34(UTC)
    • 全文を書き換え、RL に対応(左書き文字)
    • ドロップダウンに集約
    • 動作確認済み、{{de}}、{{en}} その他。
  • リビジョン1358 — Edward Z. Yang(Talk 2007年2月19日 15:36(UTC)
    • cookieがない場合、wgUserLanguageがグローバル変数だと検知するはず
    • 言語設定を空白にした場合、cookieを削除して自動検知に切り替える。
  • リビジョン1133 — Edward Z. YangTalk 2006年9月2日T22:33(UTC)
    • 利用者がもっと使いやすいように「Show all」(全てを表示する)の動作を微調整した(Cookieを上書きする代わりに単に全言語を一時的に表示する)。「Select」(選択)を押すと切り替わる。
    • 「Save」(省略)を「Select」(選択)に変更した。
    • 「Select」(選択)ボタンを太字にした。
    • 言語の文字列を考慮した

関連項目 edit

外部リンク edit