T3-時計にして、日本語でも表示させる

lib.php の render_instance を変更して時計を表示させてみる。既にインストールされているプラグインなので、乱暴だがサーバ上のファイルを直接書き換えてしまえば、試すのも簡単。

時計にする

lib.php の render_instance() を下記のように変更

lib.php

   public static function render_instance(BlockInstance $instance, $editing=false) {
      $result= sprintf("It is %s now',date("Y/m/d H:i:s"));
       return $result;
   }

date("Y/m/d H:i:s");は、UNIXコマンドの新しいdateのように、書式指定子を使って日付をフォーマットして文字列として返す。ここではこの結果を直接関数の戻り値としている。

これで時計が出るようになった。

maharapg-t3-1-20121211-024404.png

言語ファイルを使う

上記の例は、メッセージに使う文言をプログラムの中に埋め込んでいる。Maharaでは、そのような文言をプログラムとは別の「言語ファイル」に保存しておき、そこから取り出して使うようにしている。言語ファイルを切り替えれば、英語表示や日本語表示を切り替えることができる。

Blocktype プラグインでは、lang ディレクトリ以下に言語名を示すディレクトリを作成、その中に blocktype.simpleclock.php という名前のファイルを作成する。PHPプログラムからlangファイルに定義しているデータを取り出すには get_string 関数を使う。

lib.php

   public static function render_instance(BlockInstance $instance, $editing=false) {
     $result=get_string('clockstring','blocktype.simpleclock',date("Y/m/d H:i:s"));
     return $result;
   }

get_stringは、ここでは lang/en.utf8/blocktype.simpleclock.php から clockstring というキーのついた文字列を取りだす。取り出した文字に書式指定子がある場合には、それに当てはめる値として、3番目以降の引数を順次使う。

lang/en.utf8/blocktype.simpleclock.php

一行追加する。

<?php
/**
 * Mahara: Electronic portfolio, weblog, resume builder and social networking
   (略)
 */

defined('INTERNAL') || die();

$string['title'] = 'SimpleClock';
$string['description'] = 'Show current date/time on your view.';

$string['clockstring'] = 'It is %s now.';
?>

これで完成。

lang/ja.utf8/blocktype.simpleclock.php

日本語の言語ファイルを追加する。

<?php
/**
 * Mahara: Electronic portfolio, weblog, resume builder and social networking
   (略)
 */

defined('INTERNAL') || die();

$string['title'] = 'SimpleClock';
$string['description'] = '現在の日付と時刻を表示します。';

$string['clockstring'] = 'ただいまの時刻は %s です。';
?>

これで日本語で表示できるようになった。ユーザ設定で言語を切り替えると英語に変わる。

maharapg-t3-2-20121211-024656.png

【追記】日本語言語パックを「正しく」インストールしていると上記の方法では日本語が表示されない。「正しい」インストールでは、日本語リソースは ${maharadata}/langpack/ja.utf8 以下に保存される。このような方法で保存方している場合、ブロックモジュールのディレクトリ内においてある日本語リソースは読み込まれない。文字列の検索が langpack/ja.utf8 以下でしか実行されないからである。表示したい日本語リソースはすべて ${maharadata}/langpack/ja.utf8 以下に($mahararoot と同じディレクトリ構成で)おいておく必要がある。この場合、具体的には下記のようにシンボリックリンクを作成すればよい。

$ cd ${maharadata}/langpack/ja.utf8/blocktype
$ ln -s ${mahararoot}/blocktype/simpleclock .

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-28 (金) 11:21:49 (1730d)