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