趣味と実益と現実逃避で更新されるblogです.
役に立つことから無意味なことまでさまざま書いていきます.
|
April 18th, 2006 |
File_Gettextを使ってみる(Read: 23731) |
参照: PEAR :: Package :: File_Gettext |
使ってみるというかpoを読み込んでvar_dump()してみただけです. 超お手軽に使えます. |
話の流れで.というか興味のある順番なのでごめんなさい.
Documentation for the latest releaseとか見ながらやってみました. File_Gettextはこんなモジュールです. ・ライセンスはPHP(アーカイブ内のはPHPライセンスに見えないんだけど.「LICENSE files were confused」とか書いてるし) ・factoryパターン ・gettext関連のファイル(po,mo)からの読み込み,PHPの配列化 ・PHP配列のgettext関連のファイル(po,mo)への書き出し ・poからmoへの変換 ・メンテナー不在(ぶ ってことで基本的な使い方. 下記の手順でいわゆる「array( "message"=>"メッセージ",...);」みたいな形式に落ちてきます. ・File_Gettext::factoryでオブジェクトのインスタンス,第1引数でpoかmoを指定(マニュアルによるとtoupperのみ受付.tolowerも通るけどね)第2引数でオブジェクトが扱うファイル名を指定(後から指定もできるし文字列の場合もあるので任意) ・メソッド「load()」でファイルの読み込み.文字列を直接渡したい場合は不必要 ・メソッド「toArray()」で配列化 以上.簡単です. ってことで下記はxchatのpoを読み込む例. $ php -r ' require_once "File/Gettext.php"; var_dump( $obj = File_Gettext::factory( "PO", "xchat-2.6.0.ja.po")); var_dump( $obj->load()); var_dump($obj->toArray()); object(File_Gettext_PO)#1 (3) { ["strings"]=> array(0) { } ["meta"]=> array(0) { } ["file"]=> string(17) "xchat-2.6.0.ja.po" } bool(true) array(2) { ["meta"]=> array(9) { ["Project-Id-Version"]=> string(11) "xchat 2.6.0" ["Report-Msgid-Bugs-To"]=> string(13) "www.xchat.org" ["POT-Creation-Date"]=> string(21) "2005-10-20 15:10+1000" ["PO-Revision-Date"]=> string(21) "2005-12-14 02:42+0900" ["Last-Translator"]=> string(46) "Tadashi Jokagi <elf2000@users.sourceforge.net>" ["Language-Team"]=> string(52) "Japanese <translation-team-ja@lists.sourceforge.net>" ["MIME-Version"]=> string(3) "1.0" ["Content-Type"]=> string(25) "text/plain; charset=UTF-8" ["Content-Transfer-Encoding"]=> string(4) "8bit" } ["strings"]=> array(1536) { ["Cannot create ~/.xchat2"]=> string(37) "~/.xchat2 を作成できません。" ["I'm busy"]=> string(6) "多忙" ["Leaving"]=> string(15) "さようなら" ["* Running IRC as root is stupid! You should create a User Account and use that to login. "]=> string(208) "* IRC を root 権限で立ち上げるなんて愚かにも程があります! きちんとユーザーアカウント作成してから そのユーザーで ログインしなおしてください。 " (snip) ぶっちゃけgettext拡張モジュールより簡単に実装できちゃいます. <?php require_once "File/Gettext.php"; define( "PO_DIR", dirname( __FILE__)."locales/"); define( "LANG", "ja"); function _( $message) { return isset( $GLOBALS[ "message"][ $message])? $GLOBALS[ "message"][ $message]: $message; } function load_po() { $gettext = File_Gettext::factory( "PO", sprintf( "%s%s.po", PO_DIR, LANG)); $gettext->load() $GLOBALS[ "message"][ $message] = $gettext->toArray(); } load_po(); echo _( "Hello PHP World!\n"); ?> まぁお手軽さ重要ってところでしょうか. |
ELF Apr 18th, 2006 07:38 / [ 編集 ]
[ コメントする ] [ トラックバック(1) ] [ ] |
[ POST ] [ AddLink ] [ CtlPanel ]
<< | 4月 | >> | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
* | * | * | * | * | * | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | * | * | * | * | * | * |