鈴鹿高専の白井です.
WindowsXP SP2上で,apache2をWebサーバとして,moodle1.8+を運用しています.
moodle1.7の頃から発生していた現象だったのですが,あまり実用上は問題が無かったため放置していた日本語表示の不具合の報告です.この問題はWindows環境に依存しているかも知れません.
添付した画像は一例です.このように,曜日が正しく表示されません.主に (j)と表示されます.添付した画像の箇所のソースは,moodle/admin/mnet/index.php (moodle1.8より前には存在しないかも知れません),以下のように,
<?php echo userdate($MNET->public_key_expires); ?>
userdate()関数を用いています.
function userdate($date, $format='', $timezone=99, $fixday = true)
はmoodle/lib/moodlelib.php内で宣言されており,
strftime($format, $date); あるいは gmstrftime($format, $date); によって$datestringを生成し,リターンしています.いずれもPHPの関数ですのでこれ以上,深く辿ることはできません.
$formatは,
if (empty($format)) {
$format = get_string('strftimedaydatetime');
}にて,strftimedaydatetimeを参照しており,これはja_utf8/langconfig.phpの中で,
$string['strftimedaydatetime'] = '%%Y年 %%m月 %%d日(%%A) %%H:%%M';
と設定されています.単純に考えると,%%A (現在のロケールに基づく完全な曜日の名前)が正しく変換されていないのではないのか.
(ちなみに%%Aをテキストエディタで'月'に変更すれば(月)と表示されます)
カレンダーは順調です.曜日もきちんと「月曜日」から「日曜日」までしっかりと表示されています.しかし添付した画像のように一部では(j)のような表示になりますし,他にもmoodleからメール送信してくるフォーラムダイジェストなどでも,
Apache2(win32)側の原因についての対策 2007年 04月 26日(j) 19:08 - 白井 達也の投稿
のように曜日のみ正しく出力されません.
カレンダーの年月日の文字化けのようなコード変換上の問題なのか,PHPのインプリメント(あるいは設定)の問題なのか.まず情報提供をお願いしたいのは,この現象が当方の環境だけで発生しているのか,です.如何でしょう?