MyMiniCity踏んでください!!

ただいま絶賛MyMiniCity参加中です.是非リンクを踏んでください!!(笑
April 18th, 2006

File_Gettextを使ってみる

(Read: 19049)
Add to Hatena Bookmark

参照: 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スタイルの実装をすることができますね.
ぶっちゃけ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");

?>
ただしこれだけだと日本人にはあまりなじみの無い単数形複数形をうまく扱うための仕組み(名前度忘れ)や文字エンコードの指定など小技で便利な機能が使えないと思われます.
まぁお手軽さ重要ってところでしょうか.

トピックの参照元

▼最近のトピック

▼ 人気のトピック


< 過去の記事 [ 4All Categories ] 新しい記事 >
Powered by gsblog (customize)

[ POST ] [ AddLink ] [ CtlPanel ]

Subscribe blog

Bookmark blog

About me

about me

応援しています

我が息子が産まれたアクア・バースハウス(東京都世田谷区にある助産院)を応援しています.

翻訳のお仕事

腕に自信がある方,修行をしたい方はこちらをどうぞ.

2006 calendar

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
| Day | Month | Year |

Powered by RRDTOOL.

Archives

Categories

Links


Mail to admin

人気ブログランキングへ RSS feed meter for http://blog.poyo.jp/ Search Engine Optimization
blogpeople.netに登録!! スカウター : よくきたblog

My Google news

My Google News

Related site

ころんころん♪ べびぽよ フォト蔵Wiki
string(40) "/categ-1/year-2006/month-4/id-1145313508"