JavaA2Z

KAB-studio > プログラミング > JavaA2Z > ロケールとは

ロケール

日本語 舞台
英語 locale
ふりがな ろけーる
フリガナ ロケール

解説

「言語」及び「国」の指定。
Javaでは、日時等「使用者に分かりやすい文字列」を作る際に、その使用者の「言語」「国」を指定することで、その「言語」「国」に適切な文字列を作る機能がある。この「言語」「国」の指定を「ロケール」という。
 
ロケールはLocaleクラスで管理する。デフォルトのロケールは、実環境のOSの言語等によって自動的に設定され、これはLocaleクラスのgetDefault()メソッドで取得できる。
ロケールの変更はLocaleクラスのsetDefault()メソッドで変更できる。ロケールの指定は通常、Localeクラス定義されているstatic finalフィールドを使用する。たとえば日本であればLocale.JAPAN、等。また、コンストラクタに「言語コード」「国コード」を指定してLocaleクラスインスタンスを作ることもできる。この「言語コード」「国コード」はISOで指定されたコードから選択する。
 
ロケールは先ほどの日付表示他、プロパティ等のリソースも言語に合わせて適切に選択することができる。
ロケールをうまく使うことで、ユーザーの環境がどのような言語の環境であっても適切な表現ができるようになる。逆に言うと、たとえば、曜日のコードから曜日を決めて「月曜日」「火曜日」といった文字列を出力することは勧められない。
ただし、実際には多言語対応する必要があるプログラムは少なく、逆にバグの原因となる可能性もあるため、場合によってはロケールを使用しないプログラムの方がいい場合もある。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.Locale;
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Sample
{
    public static void main( String[] args )
    {
        // デフォルトのロケールを取得します。
        // LocaleクラスのgetDefault()メソッドで取得します。
        Locale locale = Locale.getDefault();
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : 日本語 (日本)
        // 国 : 日本
        // 言語 : 日本語

        // 日時もロケールに左右されます。
        String format = "yyyy/MMMMM/dd'('EEEEE')' a hh:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format );
        String formated = simpleDateFormat.format( Calendar.getInstance().getTime() );
        System.out.println( formated );
        // 2005/6月/03(金曜日) 午後 12:32:44

        // この「6月」「金曜日」「午後」が日本語なのはロケールが日本だからです。

        // それぞれの国のロケールはLocaleクラスの各定数フィールド
        // として定義されています。
        locale = Locale.US;
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // en_US
        // 言語コード : en
        // 国コード : US
        // 名前 : 英語 (アメリカ合衆国)
        // 国 : アメリカ合衆国
        // 言語 : 英語

        // 言語コードと国コードから作ることもできます。
        locale = new Locale( "ja""JP" );
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : 日本語 (日本)
        // 国 : 日本
        // 言語 : 日本語

        // この「日本語」とかも、現在のデフォルトロケールが
        // 「日本」(Locale.JAPAN)だから、日本語で出力されています。

        // ロケールを変更します。
        Locale.setDefault( Locale.US );
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : Japanese (Japan)
        // 国 : Japan
        // 言語 : Japanese

        // このように、デフォルトロケールを変更すれば、出力が
        // 日本語以外になります。

        // 日時もロケールに左右されます。
        simpleDateFormat = new SimpleDateFormat( format );
        formated = simpleDateFormat.format( Calendar.getInstance().getTime() );
        System.out.println( formated );
        // 2005/June/03(Friday) PM 12:32:44
    }
}
// Sample.java
import java.util.Locale;
import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Sample
{
    public static void main( String[] args )
    {
        // デフォルトのロケールを取得します。
        // LocaleクラスのgetDefault()メソッドで取得します。
        Locale locale = Locale.getDefault();
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : 日本語 (日本)
        // 国 : 日本
        // 言語 : 日本語

        // 日時もロケールに左右されます。
        String format = "yyyy/MMMMM/dd'('EEEEE')' a hh:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat( format );
        String formated = simpleDateFormat.format( Calendar.getInstance().getTime() );
        System.out.println( formated );
        // 2005/6月/03(金曜日) 午後 12:32:44

        // この「6月」「金曜日」「午後」が日本語なのはロケールが日本だからです。

        // それぞれの国のロケールはLocaleクラスの各定数フィールド
        // として定義されています。
        locale = Locale.US;
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // en_US
        // 言語コード : en
        // 国コード : US
        // 名前 : 英語 (アメリカ合衆国)
        // 国 : アメリカ合衆国
        // 言語 : 英語

        // 言語コードと国コードから作ることもできます。
        locale = new Locale( "ja", "JP" );
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : 日本語 (日本)
        // 国 : 日本
        // 言語 : 日本語

        // この「日本語」とかも、現在のデフォルトロケールが
        // 「日本」(Locale.JAPAN)だから、日本語で出力されています。

        // ロケールを変更します。
        Locale.setDefault( Locale.US );
        System.out.println( locale.toString() );
        System.out.println( "言語コード : " + locale.getLanguage() );
        System.out.println( "国コード : " + locale.getCountry() );
        System.out.println( "名前 : " + locale.getDisplayName() );
        System.out.println( "国 : " + locale.getDisplayCountry() );
        System.out.println( "言語 : " + locale.getDisplayLanguage() );
        // ja_JP
        // 言語コード : ja
        // 国コード : JP
        // 名前 : Japanese (Japan)
        // 国 : Japan
        // 言語 : Japanese

        // このように、デフォルトロケールを変更すれば、出力が
        // 日本語以外になります。

        // 日時もロケールに左右されます。
        simpleDateFormat = new SimpleDateFormat( format );
        formated = simpleDateFormat.format( Calendar.getInstance().getTime() );
        System.out.println( formated );
        // 2005/June/03(Friday) PM 12:32:44
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/03
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。