Serene Bach 多言語への対応
- 2009.04.12 Sunday
- dev
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 を継承した全てのクラスで利用できます。
スポンサーリンク