i18n」タグアーカイブ

Codeigniter の言語クラスで gettext を使えるようにする

最近、ちょっと訳あって Codeigniter をいじってます。
すでに PHP が分かっていれば、学習コストも低く、直感的に使えるんでなかなか良いっすよ。

Codeigniter で、国際化するために用意されてる言語クラスですが、通常は以下のようにして使います。

application/language ディレクトリに各言語のサブフォルダ(例:japanese)を用意する。

その中に _lang.php (例:error_lang.php) というファイルを作成して、連想配列 $lang にテキストをセットする。

$lang['language_key'] = "実際に表示されるメッセージ";

Controller で言語ファイルを読み込む。

$this->lang->load('filename');

lang オブジェクトの line メソッドか、lang() 関数で、キーを指定してテキストを取得する。

$message = $this->lang->line('language_key');
// または
echo lang('language_key');

ただ、これだとキーとの対比とか、メンテナンスがめんどくさいので、できれば .mo ファイル作って gettext() で処理したい所です。
続きを読む