SimpleBoxes

Serene Bach 多言語への対応

Serene Bach では、多言語対応を行なうライブラリとして sb::Language というモジュールが用意されています。

sb::Language の主な役割は二つ。

  • 定型文字列の多言語対応
  • 文字コードの変換

Serene Bach 3 になって仕組みは若干変わりましたが、基本的な内容はほぼ一緒です。

定型文字列の取得

例えば、

my $error = sb::Language->get->string('No article.');

のようにすると $error に「No article.」に対応した文字列がセットされます。

比較的よく利用されるインタフェースなので、Serene Bach 3 では

my $error = sb->string('No article.');

という形式のショートカットも用意されています。

言語リソースは特定ディレクトリ内にテキストファイルとして置かれています。

  • リソースディレクトリ (例 : /lib/resource/)
    • ja.txt : 日本語リソース
    • en.txt : 英語リソース

Serene Bach 2 では、基本的な言語リソースはモジュール内に記述されていましたが、Serene Bach 3 では上述のリソースファイルに移っています。

文字コード変換

文字コードの変換処理は sb::Language モジュールにあるインタフェースを利用します。

my $output = sb::Language->get->convert($input,'sjis');

現在のところ、あまり高度で複雑な処理などは想定されてなく、単に Jcode.pm のラッパーとして機能しています。

将来的には標準モジュールである Encode を利用するように変更したいところです。

Serene Bach のコンストラクタ

sb::Language は Singleton オブジェクトなので、どこで取得しても同一なオブジェクトが取得できることが保証されています。

Serene Bach では、new 以外に get がコンストラクタとして利用できます。

sb::Language->get->string('No article.');

のように、より自然な形で利用できるようにしています。

get コンストラクタは、sb::Object を継承した全てのクラスで利用できます。

関連記事
このエントリーをはてなブックマークに追加

スポンサーリンク

<< mixi アプリを開発するのに携帯電話のメールアドレスが必須な件 :: リノベーションは楽じゃない 総集編 - 廊下 >>