Yoshihiro ICHIYANAGI
ichan****@im*****
2005年 10月 5日 (水) 21:47:17 JST
こんばんは。 > > 既存クラスに新しく追加されるメッセージを考慮しているんですね。(なるほど) > > なにも考慮していないだけかも(笑 かもしれないっすね。:-) > > /*********** (ここからは理想です) ************ > > だからLaszloMessageを挿入する作業はあるタイミングで特定の人々が > > convertorをつかって行えれば最高で > すね。 > > 例えば、source code内の国際化すべきメッセージのところに、マークとなるコメント文を > > 挿入して、あとはconvertorが勝手にLaszloMessage.getMessage()に変換して、 > > メッセージもResourceファイルに吐きだし、その時keyも自動生成される。 > > 後はメッセージの翻訳のみ行えばいい、と。 > > **********************************************/ > > ResourceBundle Editorもオープンソースなので、自動的に適したKeyを作成する > ようにテコ入れしましょうか。 > packagename.methodname.string(空白をアンダーラインで結んで最大30文字)と > か。 ちょっと時間あったんで、rubyでconvertorつくってみました。 結構使えそうです。 i18n化したいメッセージコードの前後に以下のようなコメント行を追加すると、 //@conv-i18n.begin //@conv-i18n.end JUnit生成用コメントとともに、LaszloMessagesのメソッドにコンバートしてくれます。 例: [変換前] package org.openlaszlo.servlets; public class LZDummy { .... public static int getKrankPort () { String portStr = LPS.getProperties().getProperty(KRANK_PORT_PROPERTY); int portnum = DEFAULT_KRANK_PORT; if (portStr == null) { return portnum; } try { portnum = Integer.parseInt(portStr); } catch (NumberFormatException e) { throw new RuntimeException( -> //@conv-i18n.begin "Server configuration error: can't parse lps.properties entry '"+ KRANK_PORT_PROPERTY +"'" -> //@conv-i18n.end ); } return portnum; } } [変換後] package org.openlaszlo.servlets; public class LZDummy { .... public static int getKrankPort () { String portStr = LPS.getProperties().getProperty(KRANK_PORT_PROPERTY); int portnum = DEFAULT_KRANK_PORT; if (portStr == null) { return portnum; } try { portnum = Integer.parseInt(portStr); } catch (NumberFormatException e) { throw new RuntimeException( -> /* -> * @i18n.test -> * @org-mes="Server configuration error: can't parse lps.properties entry '"+ p0 +"'" -> */ -> LaszloMessages.getMessage(PREFIX_NAME,"051005-120", new Object[] {KRANK_PORT_PROPERTY}) ); } return portnum; } } laszlomessages.properties org.openlaszlo.servlets.LZDummy.051005-120=\ Server configuration error: can't parse lps.properties entry ' {0} ' [uniqe id]は、[YYMMDD]-[current line no]にしました。 といった感じです。 この仕様であれば、Eclipse ReourceBundle Editor使わなくて済みそうです。 例えば、このようなコンバータを利用すれば、developerはi18n関連のソース変更を意識することなく 開発が進められ、openlaszlo.orgサイドがnew release前にi18nにしたいメッセージに対してのみpin pointで i18n化できるようになると思います。 ichan