![]() |
![]() ![]() ![]() |
ActionAscriptではflash.system.Capabilities.languageプロパティを使用して、Flashが実行されているユーザー環境の言語情報を取得できます。
但し、これは完全なロケール名ではなく、言語名のみを返す点に注意が必要です。
また、このプロパティの値は、OSの元々の言語であり、ブラウザやOSの言語設定の変更が反映されない点にも注意が必要です。
ブラウザの言語設定を反映せるには、言語取得のJavaScriptを書いてそれをActionScriptで呼び出したり、Flashオブジェクトへの引数(FlashVars)として渡す必要があります。
FlashVarsを使ったロケール引渡しは以下のようになります。
====== フラッシュを読み込むHTML ===== <html> <object width="100%" height="100%" > <!-- Edit locale to the suitable one. --> <param name="FlashVars" value="locale=ja_JP" /> <!-- Edit locale to the suitable one. --> <embed width="100%" height="100%" src="Main.swf" FlashVars="locale=ja_JP" /> </object> </html> ※PHPやJavaScriptを使えば、「ja_JP」の部分をユーザーのロケールに動的に切り替えることができます。 ====== ActionScript ===== public function Main():void { var FlashVars:Object = this.root.loaderInfo.parameters; var locale = FlashVars["locale"]; ※localeには「ja_JP」が入ります。ロケールの詳細についてはこちらをご参照ください。
日付、時刻、通貨の処理はflash.globalizationパッケージ内のクラスで、ロケールに沿った処理が可能です。
これらのクラスは、flash.globalization.LocaleID.DEFAULTを使用することで、OSの言語設定に沿ったロケール切り替えを実現できます。
(*上記のflash.system.Capabilities.languageを使わない点に注意してください。)
以下はOSの言語設定にそった書式で現在日付を表示するサンプルです。
var df:DateTimeFormatter = new DateTimeFormatter(LocaleID.DEFAULT, DateTimeStyle.SHORT, DateTimeStyle.NONE); var currentDate:Date = new Date(); var shortDate:String = df.format(currentDate);*LocaleID.DEFAULT自体の値は"i-default"です。
var FlashVars:Object = this.root.loaderInfo.parameters;
var locale = FlashVars["locale"];
var df:DateTimeFormatter = new DateTimeFormatter(locale, DateTimeStyle.SHORT, DateTimeStyle.NONE);
flash.globalizationについては、こちらをご覧ください。
ActionScriptは、そのバージョンで非推称になったり、廃止になっているメソッド、クラスがたくさんあります。
非推称のものに関しては、以前と動作が異なったり、期待する動作をしないものもあるので注意が必要です。
ロケールやリソースに関するクラスやメソッドの中には以前と異なる動作をするものがあります。
非推称、廃止メソッド、クラスについては、こちらをご参照ください。