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内の日本語リソース

  • /flex/tools/debugger/cli/fdb_ja.properties
  • /flex/tools/debugger/cli/fdbhelp_ja.txt

を削除するか、もしくは、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がありました。同じ対処が必要です。