ロケールは、ユーザーの言語と文化の設定を識別します。ロケールによって、次の項目の形式が制御されます。
- 日付
- 時刻
- 数値
- 通貨
ColdFusion では、使用される JVM でサポートされているすべてのロケールがサポートされます。
現在の JVM バージョン(1.4.2 まで)では、アラビア語ロケールで使用されるアラビアヒンズー数字、ヒンズー語ロケールで使用されるヒンズー数字など、ローカルな数字はサポートされていません。ColdFusion はすべてのロケールでアラビア数字を使用します。
ロケール名
ColdFusion では、ロケール名を指定するために 2 つの形式がサポートされています。1 つは標準の Java ロケール名です。もう 1 つは、ColdFusion 6.1 以前で使用されていた ColdFusion ネーミング規則です。
- すべてのロケールは、次の要素を組み合わせた名前で指定できます。
- 言語を識別する 2 つの小文字。例えば、英語は en、中国語は zh 。
- 下線と 2 つの大文字(オプション)。これにより、地域による言語の違いを識別できます。例えば、米国は US 、香港は HK と表します。例えば、en_US は 米国 英語を、es_MX はメキシコスペイン語を表します。Sun 1.4.2 JVM でサポートされている Java ロケール識別子の一覧とその意味については、https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html を参照してください。
ColdFusion MX 7 よりも前の ColdFusion では、サポートされている ロケール セットが限定されており、言語名の後に地域を丸括弧で囲んだ識別子を使用していました(地域を指定しない言語もあります)。例えば、English (US) や German (Standard) のように指定できます。こうした名前は現在でも引き続きサポートされています。一覧については、 SetLocale (『CFML リファレンス』)を参照してください。
Server.coldfusion .supportedlocales 変数は、指定可能なロケール名のカンマ区切りのリストです。
また、ユーザーが認識できる形式でロケール名を返す、GetLocaleDisplayName 関数も用意されています。この関数により、 francais (France) など、ユーザーの言語を使用してロケールを表示することができます。
ロケールの決定
ColdFusion では、ロケールの値を次のように決定します。
デフォルトでは、JVM ロケールが使用されます。デフォルトの JVM ロケールはオペレーティングシステムのロケールです。ColdFusion Administrator の [Java と JVM の設定] ページの [JVM 引数] フィールドを使用すれば、ColdFusion の JVM ロケール値を明示的に設定できます。次に例を示します。
-Duser.language=de -Duser.country=DE.
- SetLocale 関数で設定されたロケールは現在のリクエストの終了まで、または現在のリクエストの途中で再度の SetLocale 呼び出しによる再設定がおこなわれるまで保持されます。
- リクエストに複数の SetLocale 関数がある場合、ロケールに依存する ColdFusion タグおよび関数(LS で始まる関数など)は、現在のロケール設定に基づいてデータを形式設定します。レスポンスの Content-Language HTTP ヘッダーの値は、リクエスター(通常はクライアントブラウザー)にレスポンスを送信する前に最後に処理された SetLocale 関数によって 決まります 。ページをリクエストしたブラウザーは、Content-Language ヘッダーで指定されている言語の規則に従ってレスポンスを表示します。
- ColdFusion では、 cfflush タグの後の SetLocale 関数は無視されます。
ロケールの使用
SetLocale 関数は、ColdFusion で日付、時刻、数値および通貨値を出力するために使用するデフォルトの形式を決定します。ColdFusion の現在のロケール設定を取得するには、GetLocale 関数を使用します。または、GetLocaleDisplayName 関数を使用して、ユーザーが認識できる形式でロケール名を取得できます。SetLocale をまだ呼び出していない場合、GetLocale は JVM のロケールを返します。
現在のロケールが与える影響は次の 2 つです。
- ColdFusion で出力される日付、時刻、通貨、または数値の形式設定に影響を与えます。ColdFusion ページでは、ロケールを何回でも変更して、さまざまなロケールの表記規則に従って情報を表示することができます。これによって、正しく形式設定された多様な通貨値を含むページを出力できます。
- ColdFusion がクライアントにページを返すときには、HTTP の Content-Language ヘッダーが挿入されます。この情報は、ページの最後のロケール設定から取得されます。
以前のバージョンの ColdFusion では、デフォルトのロケールはオペレーティングシステムのロケールではなく、常に英語でした。日本語版の ColdFusion では、デフォルトのロケールは日本語でした。
次の例では、LSCurrencyFormat 関数を使用して、ColdFusion でサポートされているすべてのロケールの通貨単位を使用して 100,000 という値を出力します。このコードを実行すると、ブラウザーに返されるデータに対するロケールの影響を確認できます。
<!--- loop through list of locales; show currency values for 100,000 units ---> <cfloop LIST = "#Server.Coldfusion.SupportedLocales#" index = "locale" delimiters = ","> <cfset oldlocale = SetLocale(locale)> <cfoutput><p><b><I>#locale#</I></b><br> Local: #LSCurrencyFormat(100000, "local")#<br> International: #LSCurrencyFormat(100000, "international")#<br> None: #LSCurrencyFormat(100000, "none")#<br> <hr noshade> </cfoutput> </cfloop>
この例では、ColdFusion 変数の Server.Coldfusion.SupportedLocales を使用しています。この変数には、ColdFusion でサポートされているすべてのロケールのリストが含まれています。