言語パックを追加するには手動インストールと自動更新の二つの方法がある.
自動更新はサイト管理ブロックの[言語]-[言語パック]より,インストールされている言語パックの更新を選択すれば自動的に行われる.ただしこれはmoodle.orgで正式に管理されている言語パックのみに許された手段であり,K-12向け日本語言語パックには用いることができない.
更新は手作業によって行わなくてはならない.まだ公開(それ以前に作業に^^;)されていないが,将来的には以下のURLよりzip形式での公開を予定している.
http://sourceforge.jp/projects/jak12/releases/
ここからダウンロードした標準の言語パックをmoodledata/langフォルダ内に展開すれば,自動的にMoodleは新しい言語の言語パック(ヘルプファイルを含む)と認識し,管理者による指定,ユーザ個人による選択が可能となる.たとえば,日本語(ja)の代わりに,日本語(ja_g01)(:小学校一年生用)など.
基本的にはこれで問題は無い.しかし標準ではないサードバーティ製プラグイン(モジュール,ブロック)用の言語パックはどうだろう? メジャーなプラグインの言語パックは吉田氏によって標準の日本語言語パックに同梱jされているが,それほどメジャーではないものについては各人で言語パックを作成するなどの手段が取られているだろう.それらは成人向けにja_utf8というフォルダに作成されているだろう.これらの日本語言語パックに,K-12の日本語言語パックを選択した学生(ja_g**)はアクセスできない.名前は似ているが,ja_utf8とja_g**_utfは全く別の言語パックと認識されるためである.もし希望する言語用の翻訳語が見つからない場合,Moodleはen_utf8(つまり英語)の単語を翻訳語として返す.これでは余計に問題である.
色々と調べたところ,選択した言語パックのフォルダの中にあるlangconfig.phpに,$string['parentlanguage'] = '****'; という指定があれば,選択する候補であるフォルダに選択した言語の言語パックファイルが存在しなかった場合,言語を英語ではなく,指定した言語に置き換えて再度選択する仕組みア備わっていることが分かった.つまり,ja_g1_utf8, ja_g2_utf8,..., ja_g12_utf8の各K-12向け日本語言語パックのlangconfig.phpに,$string['parentlanguage'] = 'ja_utf8';を追加すれば良さそうであることが分かった.K-12向け日本語言語パックに指定されたモジュール類の言語パックが存在しなかった場合,ja_utf8向けの言語パックから目的の単語の翻訳語を探索する.
とりあえずこれから実験を行ってみます.この仕組みを流用できれば,Moodle本体に改造は必要ない.
#しかし,moodle/lib/moodlelib.phpのfunction get_string(),もっと効率よく書けるなぁ.ちょっと手を加えたら同じ改良を何箇所にも施さなくてはならない.外側にもう一つループを追加すれば,ja_g**_local_utf8, ja_g**_utf8, ja_local_utf8, ja_utf8, en_utf8の順で探索できるように改善できるのに.