よろしければ、下記言語パック修正をお試しください。
- サイト管理者としてMoodleにログインする。
- 「管理 >サイト管理 > 言語設定 > 言語カスタマイゼーション」に移動する。
- 「選択 ...」プルダウンメニューから「日本語 (ja)」を選択する。
- 「編集のため言語パックを開く」ボタンをクリックする。
- 「続ける」ボタンをクリックする。
- 「ストリングを表示するコンポーネン」で「moodle.php」を選択する。
- 「次のテキストを含むストリングのみ」に「教師」を入力する。
- 「ストリングを表示する」ボタンをクリックする。
- ストリング「defaultcourseteacher」のローカルカスタマイズ欄に別の名称 (例 先生) を入力する。
- ストリング「noneditingteacher」のローカルカスタマイズ欄に別の名称 (例 編集権限のない先生) を入力する。
- ページ下部の「修正を言語パックに保存する」ボタンをクリックする。
- 「続ける」ボタンをクリックする。
福田先生
確かに、Moodle 1.9では、ロール名のリネームがすぐにコース一覧に反映されます。
大変お手数ですが、下記のいずれかをお試しください。
- サイト管理者としてMoodleにログインする。
- 「管理 >サイト管理 > 開発 > すべてのキャッシュを削除する」に移動する。
- 「すべてのキャッシュを削除する」ボタンをクリックする。
または
Moodleデータディレクトリ内のコース担当者用キャッシュサブディレクトリを削除する。
例)
cd /var/www/moodledata
cd cache/cachestore_file/default_application
ls -la
rm -rf core_coursecontacts
ありがとうございました。うまくいきました。ただ,不思議な仕様ですね。
コース作成者が,[コースの設定]の編集画面で[ロールのリネーム]に新しい名称を書き込んでも,それがすぐに反映されず,サイト管理者が「すべてのキャッシュを削除する」まで反映しないとは!1.9の時のようにすぐに反映されるようにしてもらいたいものです。
応急処置として,crontabで一日一回
rm -rf /var/www/moodledata/cache/cachestore_file/default_application/core_coursecontacts
してしまおうかとか思うのですが,何か副作用はありますでしょうか?
福田先生
Moodle 2.8より、下記のように、「コース管理者 (coursecontac) 」を一定時間 (3600秒) キャッシュするコードが追加されたようです。
該当プログラム:
lib/coursecatlib.php
該当箇所:
717行目
public static function preload_course_contacts(&$courses) {
global $CFG, $DB;
if (empty($courses) || empty($CFG->coursecontact)) {
return;
}
$managerroles = explode(',', $CFG->coursecontact);
$cache = cache::make('core', 'coursecontacts');
$cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
// Check if cache was set for the current course contacts and it is not yet expired.
if (empty($cacheddata['basic']) || $cacheddata['basic']['roles'] !== $CFG->coursecontact ||
$cacheddata['basic']['lastreset'] < time() - self::CACHE_COURSE_CONTACTS_TTL) {
// Reset cache.
$cache->purge();
$cache->set('basic', array('roles' => $CFG->coursecontact, 'lastreset' => time()));
$cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
}
$courseids = array();
foreach (array_keys($courses) as $id) {
if ($cacheddata[$id] !== false) {
$courses[$id]->managers = $cacheddata[$id];
} else {
$courseids[] = $id;
}
}
// Array $courseids now stores list of ids of courses for which we still need to retrieve contacts.
if (empty($courseids)) {
return;
}
crontabで直接キャッシュを削除されることに問題はありませんが、下記のように「コース管理者 (coursecontac) 」キャッシュの存続時間を3600秒より短くされても宜しいかと思います。もちろん、コードを改変せずに、3600秒お待ちになっても宜しいかと思います。
修正対象プログラム:
lib/coursecatlib.php
修正箇所:
56行目
[ 修正前 ]
/** Do not fetch course contacts more often than once per hour. */
const CACHE_COURSE_CONTACTS_TTL = 3600;
[ 修正後 ]
/** Do not fetch course contacts more often than once per hour. */
const CACHE_COURSE_CONTACTS_TTL = 60;