FlashDevelop 3.0.0 beta5 と日本語Flex2 SDK
FDBが終了しない不具合を解消する
このエントリは2007/12/11の再掲です
FlashDevelopという優れた ActionScriptエディタがあります。ActionScriptでコーディングできる、あらゆるものをサポートしていて、mtascや FlexSDKでのコンパイルがワンアクションでできるようになります。最近は、BOMが付いていればきちんとUTF-8として認識してくれるようにもなっているので、マルチバイトソースコードでも十分に使えます。便利なのでベータ段階でもじゃんじゃん使いたいのですが…。
じつは FlashDevelop 3.0.0 beta5 は日本ロケールで動くFlex2 SDKとの相性が良くありません。具体的には、デバッグ実行中に対象アプリケーションの終了を検知できず、FDB(FlexSDKの対話式デバッガ)が終了せずに延々とcontinueコマンドを実行し続けます。その結果、出力コンソールが無限ループに陥ってしまいます。
これは、「Player session terminated」というFDBのコンソール応答が、日本では「Player セッションが終了しました」に翻訳されてしまうのが原因です。FlashDevelopがFlashPlayerの終了を検知するヒントは、FDBのコンソール出力なのです。
場当たり的な対策案:
Flex2SDKのlib/fdb.jar内の日本語リソース
を削除するか、もしくは、fdb_en.propertiesで
キー名 = Player session terminated
となっている行を探し出し、fdb_ja.propertiesの該当するキーの値を英語のものと同じものに変更するか、どちらかで対処できるはずです。同種の現象がないとは言い切れないので、私は削除を選びました。
zipをそのまま操作できるアーカイバが使えるなら、拡張子のjarをzipに変更して作業し、最後にまたjarに戻しておけば簡単です。
バグレポートはもう済ませました。
http://www.flashdevelop.org/community/viewtopic.php?p=10356
ところで、Flex3SDKの場合はどうなんだろう?
追記
/flex/tools/debugger/cli/fdbhelp_ja.txtを消すと、_en.txtのほうが採用されて英語ヘルプが表示されると思いきや、なんと、エラーになります。これって、if(locale.equals('ja')){ ... }else{ .... } って実装なの?というわけで、fdbhelp_ja.txtは消さない、もしくは、_en.txtのものと同じ内容のもに変更するのが良いでしょう。
fdb_ja.propertiesは、消したら_en.propertiesを読みます。こっちは普通に実装されてるみたいですね。
追記
Flex3でもfdb_ja.propertiesがありました。同じ対処が必要です。