ロケールの特定
Flash Player 10.1 以降、Adobe AIR 2.0 以降
ロケールは、言語と、国または地域の文化に基づく表記規則の特定の組み合わせを識別します。
ロケール識別子は、文字列として安全に管理できます。ただし、LocaleID クラスを使用して、ロケールに関連する追加情報を取得することができます。
LocaleID オブジェクトは次のように作成します。
var locale:LocaleID = new LocaleID("es-MX");
LocaleID オブジェクトの作成後は、ロケール ID に関するデータを取得できます。getKeysAndValues()、getLanguage()、getRegion()、getScript()、getVariant() および isRightToLeft() メソッドと name プロパティを使用します。
これらのメソッドおよびプロパティから取得された値は、ロケールに関してロケール識別子から直接抽出できない追加の情報を反映することができます。
アプリケーションが日付表示形式などのロケール対応サービスを作成するときは、使用するロケールを指定する必要があります。サポートされているロケールのリストは、オペレーティングシステムごとに異なるので、要求されたロケールが必ずしも使用できるとは限りません。
Flash Player は、要求されたロケールの言語コードに一致するように最初に試みます。次に、一致する書き込みシステム(スクリプト)および地域を検索してロケールを調整します。例えば、次のような場合です。
var loc:LocaleID = new LocaleID("es");
trace(loc.getLanguage()); // es
trace(loc.getScript()); // Latn
trace(loc.getRegion()); // ES
この例では、LocaleID() コンストラクターが、そのユーザーの言語コード「es」に最も一致するロケールに関するデータを取得しました。
ロケール ID の設定
アプリケーションの現在のロケールを設定する方法は、次のように複数あります。
単一のロケール ID をアプリケーションにハードコーディングする。これは一般的な手法ですが、アプリケーションの国際化をサポートしていません。
ユーザーのオペレーティングシステムまたはブラウザーからロケール ID 環境設定を使用するか、またはその他のユーザー環境設定を使用する。通常、この手法によりユーザーに対する最適なロケール設定が得られますが、常に正確であるとは限りません。オペレーティングシステム設定にユーザーの実際の環境設定が反映されていないというリスクがあります。例えば、ユーザーは共有されたコンピューターを使用していて、オペレーティングシステムで希望のロケールを変更できない可能性があります。
ユーザーの環境設定に基づいてロケール ID を設定したら、サポートされているロケールの一覧からユーザーが選択できるようにします。アプリケーションが複数のロケールをサポートできる場合、通常はこの手法が最善のオプションです。
この 3 つ目のオプションは次のように実装できます。
ユーザープロファイル、ブラウザー設定、オペレーティングシステム設定または Cookie から、ユーザーが希望するロケールまたは言語のリストを取得します(アプリケーションはこのロジックを実装する必要があります。flash.globalization ライブラリは、このような環境設定を直接読み取ることはサポートしていません)。
これらのロケールのうち、アプリケーションがサポートしているものを判断し、デフォルトで最適なものを選択します。LocaleID.determinePreferredLocales() メソッドを使用して、希望のロケールおよびオペレーティングシステムでサポートされているロケールに基づいて、ユーザーに対して最適なロケールを見つけます。
デフォルトのロケールが適切でない場合に備えて、デフォルトのロケール設定をユーザーが変更する方法を用意します。
ロケールと言語用の他のクラスでの制限
fl.lang.Locale クラスを使用すると、文字列値を含むリソースバンドルを使用して、ロケールに基づいてテキスト文字列を置き換えることができます。ただし、このクラスは、数、通貨、日付の形式の設定、並べ替え、一致など、その他の国際化機能をサポートしていません。さらに、このクラスは Flash Professional のみでしか使用できません。
また、flash.system.Capabilities.language プロパティを使用して、オペレーティングシステムの現在の言語コード設定を取得できます。ただし、このプロパティは、完全なロケール ID ではなく、2 文字表記の ISO 639-1 言語コードのみを取得し、特定のロケールセットのみをサポートします。
AIR 1.5 では、flash.system.Capabilities.languages プロパティを使用できます。このプロパティは、ユーザーが優先するユーザーインターフェイスの言語の配列を提供します。したがって、このプロパティには Capabilities.language の制限はありません。