日本語環境で FCSH Wrapper を動かす方法

FCSH Wrapper*1が日本語を受け取れるように改造することにしました。

windowsロケール(コントロールパネル->地域のオプション->ロケール)を「日本語」から「英語(US)」に変更するとFCSH Wrapperを利用したflexのビルドはできます。しかし、windowsロケールを変えると、他のアプリケーションにも影響が出るので、FCSH Wrapper が日本語を受け取れるように改造することにしました。

まず、次のような構成でmeadowからflex3のソースをビルドしてみます

FCSH Wrapper のログ画面に『ターゲット [some.kind.of.echo] が見つかりませんでした』と出力されて、コンパイルがうまく行きませんでした。FCSH Wrapper のjavaソースを追いかけた結果、次の2ヶ所を書き換えると日本語環境(日本語ロケール)でも動きました。

  • ソースディレクトリ:fcshWrapper/src/ro/arhinet/fcshwrapper/wrapper
    • FcshProcessWrapper.java 94行目*2
原文:instance.stdOutReader.startToWatchForEchoMessage("Target [some.kind.of.echo] not found");
改造:instance.stdOutReader.startToWatchForEchoMessage("ターゲット [some.kind.of.echo] が見つかりませんでした");
    • CommandsHistory.java 61行目*3
原文:Pattern patternCheck =Pattern.compile(".*Assigned (\\d*) as the compile target id.*", Pattern.DOTALL);
改造:Pattern patternCheck =Pattern.compile(".*コンパイルのターゲット ID として (\\d*) が割り当てられました.*", Pattern.DOTALL);

javaのソースはUTF-8で保存し、fcshWrapperディレクトリ(build.xmlがあるはず)でantとすれば、distディレクトリ内に fcshWrapper.jar ができますので、これを元々のfcshWrapper.jarファイルに上書きします。

meadow の利用の有無はこの改造には関連しませんので、『fcshを日本語環境でバッチビルドする』というのが本筋です。ただ、巷のIDEでは普通に出来ることだと思われるので、やはり meadow(emacs類)からの利用以外では不要の改造だと思います。もっと上手い方法があればご指導下さい。

(+64223 リスタート)

*1:fcshはAdobe Flex3 SDK に含まれるユーティリティで、コンパイル情報をメモリ内にキャッシュして、ビルド時間を短縮するものです。ただし、fcshはシェルなのでコマンドは人手で一つずつ入力するのが基本です。FCSH Wrapper は ant というバッチビルドユーティリティを利用できるようにして、ビルドを自動化するユーティリティです。

*2:常駐しているfcshを探す

*3:fcshが利用しているコンパイルIDを取得する