ContextMenu のラベル

右クリックや Ctrl + クリックで出現するメニューが ContextMenu です。
Flash では ActionScript を使ってこれを変更できますが、以下のような値はラベルにできません。

  • Save
  • Zoom In
  • Zoom Out
  • 100%
  • Show All
  • Quality
  • Play
  • Loop
  • Rewind
  • Forward
  • Back
  • Movie not loaded
  • About
  • Print
  • Show Redraw Regions
  • Debugger
  • Undo
  • Cut
  • Copy
  • Paste
  • Delete
  • Select All
  • Open
  • Open in new window
  • Copy link

ただし、これらの単語を別のものと組み合わせれば使用可能です(copy value とか)。
また、以下の単語は何と組み合わせても使えません。

これらから考えるに、右クリックメニューを使ってフィッシング詐欺みたいな真似をする阿呆への対策のようです。『Adobeのサイトへ飛ぶ』みたいに書いておいて、実際は詐欺サイトに飛んでいました、なんてケースがすぐに思い浮かびますね。

さて、本題はここから。私たちの使っているマシンは日本語マシンであり、右クリック時のメニューも『copy』ではなく『コピー』です。だからこんなのは関係ない…と思ったら大間違い。この制約にはこんな但し書きもついています。

英語以外のシステムで実行される場合、キャプションストリングは英語の一覧およびローカライズされた一覧の両方と比較されます。

つまり日本語を扱う OS では、日本語のメニューとも比較されるという事。ここで WindowsMac で(もっと言うと OS のバージョンによっても?)動作に差が発生します。
Windows Vista Ultimate 64bit では『コピー』が使えるのに対して、 Mac OS 10.5.4 では正しく標示されず、エラーの報告すらされません。

一週間以上これに悩まされましたが、ようやく解決。しかし、私はこの手の制限があると毎度引っかかっている気がする…

参考:flash.ui.ContextMenuItem (Flex 3)