複数の言語でのテキストの表示
多言語コンテンツフィルタを使用すると、複数の言語でリソースを作成できます。このフィルタをオンにすると、テキストに複数の言語が含まれていることを示す<span lang="xx" class="multilang">タグを探します。そして、ユーザの言語(ブラウザまたはユーザのプレファレンスで設定されている言語)のテキストを選択して出力します。
多言語コンテンツフィルタの有効化
管理者は、次のようにして多言語コンテンツフィルタを有効にできます。
- サイト管理 > プラグイン > フィルタ > フィルタ設定に移動し、多言語コンテンツのドロップダウンメニューで「On」を選択します。
- 見出しも複数の言語で表示する場合は、「適用先」カラムで「コンテンツおよびヘッディング」を選択します。
- サイト管理 > プラグイン > フィルタ > フィルタ共通設定に移動し、「システムコンテクストによるフィルタナビゲーション」がオンになっていることを確認します。
手順3の設定もオンにせずに「適用先」を「コンテンツおよびヘッディング」にすると、Moodleサイトの動作が大幅に遅くなる可能性があります。
コースでの使用方法
この機能を使用するには、まず(同じリソース内に)複数の言語でコンテンツを作成します。次に、各言語ブロック(multilangブロックとも呼ばれます)を次のタグで囲みます。
<span lang="XX" class="multilang">your_content_here</span> <span lang="YY" class="multilang">your_content_in_other_language_here</span>
これらのタグを機能させるには、タグを入力する際にコード編集モード(HTMLエディタで[<>]を押します)になっていることが不可欠です。multilangブロック内の各言語の間には、スペース、タブ、改行のみを使用できます。
各multilangブロックが、関連するほかのmultilangブロックと同じ親要素内にネストされるようにすることが重要です。
正しい構造
各multilangブロックが、1つの親要素内にまとめてネストされています。
<p>
<span lang="XX" class="multilang">your_content_here</span>
<span lang="YY" class="multilang">your_content_in_other_language_here</span>
</p>
誤った構造
各multilangブロックが、それぞれ個別の親要素内にネストされています。
<p>
<span lang="XX" class="multilang">your_content_here</span>
</p>
<p>
<span lang="YY" class="multilang">your_content_in_other_language_here</span>
</p>
注:サイトで子言語パック(一覧は言語パックを参照)を使用している場合は、最初のspanタグを親言語にする必要があります。そうしないと、子言語を使用しているユーザがテキストを表示した際に、そのユーザにとって正しい言語で表示されません(MDL-55197で報告されているとおりです)。例えば、サイトでen_usを使用している場合は、(親言語として)enのspanタグを最初に置く必要があります。つまり、次のようになります。
<span lang="en" class="multilang">your_content_in English</span> <span lang="de" class="multilang">your_content_in_German_here</span>
課題の提出同意書での使用方法
- フィルタを有効にした状態で、サイト管理 > プラグイン > 活動モジュール > 課題 > 課題設定に移動します。
- 提出同意書に、例えば次のように追加します。
<span lang="en" class="multilang">This assignment is my own work, except where I have acknowledged the use of the works of other people.</span> <span lang="fr" class="multilang">Ce devoir est le fruit de mon travail personnel, sauf aux endroits où l'utilisation d'oeuvre d'autres auteurs est clairement indiquée.</span>
内部での動作
- フィルタは、まずテキスト内のmultilangブロックを探します。
- 各multilangブロックについて:
- 現在有効な言語のテキストがある場合は、それを出力します。
- そうでない場合、現在の親言語のテキストがあれば、それを出力します。
- そうでない場合は、テキスト内で最初に見つかった言語を出力します。
- multilangブロックの外側にあるテキストは、常に表示されます。
よくある問題
- 多言語フィルタが有効になっていない。サイト管理の「フィルタ設定」で有効にできます。
- 見出しが正しく表示されない - サイト管理の「フィルタ設定」で、多言語フィルタをコンテンツおよびヘッディングに適用するよう設定する必要があります。
- 言語のspanタグの間に余分な文字がある - エディタが<br />などのタグを追加している可能性があるため、ソース表示でHTMLを確認してください。
- コース設定で特定の言語が「強制」されている場合は、表示言語を変更できません。
- 言語のspanタグ内に余分なスペースがある。
「Restriction by language」追加プラグイン

言語フィルタは便利ですが、リソースや活動が非常に複雑になってしまうことがあります。
Restriction by language利用条件は、英語のリソースを英語のユーザにのみ表示したり、フランス語の活動をフランス語を話す学生にのみ表示したりすることを簡単にする追加プラグインです。
Multi-Language Content (v2)追加プラグインおよびMulti-Language Contentテキストエディタプラグイン
Multi-language Content (v2)という、別の多言語コンテンツフィルタもあります。このフィルタは、非常にシンプルな非HTMLタグを使用して多言語ブロックをマークします(多言語コンテンツの作成が容易になります)。また、Multi-Language Content TinyMCEプラグインと組み合わせて使用すると、HTMLビューモードを使用せずにテキストエディタ上で直接、さらに簡単に多言語コンテンツを作成できます。
Multi-Lingual Content追加プラグイン
Multi-lingual Contentは、multilangフィルタをより柔軟にしたバージョンです。フィルタの管理設定で、HTML構文、非HTML構文、またはその両方の3つの選択肢から1つを選択できます。非HTML構文を選択した場合、言語ブロックは{mlang en}English{mlang}{mlang bg}Bulgarian{mlang}のようになります。HTML構文の場合、言語ブロックは、lang="XX"属性を持つ同一のHTMLタグ(span、div、その他任意のタグ)の連続です。
質問がある場合
moodle.orgのLanguagesフォーラムに投稿してください。
関連項目
- 言語
- テーマ設定のカスタムメニューアイテム
- Is the official language filter the way to go? (What's your experience?)
- Translation of MOOCのフォーラムディスカッションと解決策