[Openlaszlo-i18n 66] Re: 実装後のテストについて

Back to archive index

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



Openlaszlo-i18n メーリングリストの案内
Back to archive index