argius note

プログラミング関連

ロケール(言語と国)を指定するプロパティ

え、知らなかった.....

class LocaleTest {
    public static void main(String[] args) {
        System.out.println(java.util.Locale.getDefault());
    }
}

上記コードをコンパイルして、日本語環境で以下のように実行。

$ java -version
java version "1.6.0_05-ea"
Java(TM) SE Runtime Environment (build 1.6.0_05-ea-b05)
Java HotSpot(TM) Client VM (build 1.6.0_05-ea-b05, mixed mode, sharing)
$ java LocaleTest
ja_JP
$ java -Duser.language=de -Duser.country=CH LocaleTest
de_CH
$

例では、意味もなく"ドイツ語のスイス"を指定しています。

SunのJava限定かと思ったのですが、gcjでもできました。最後は「おやっ?」と思うかもしれませんが、gcjでは、有効なロケールに国が存在せず、言語は"en,fr,de,ga"だけのようです。

$ /etc/alternative/java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20070626 (Red Hat 4.1.2-13)

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ /etc/alternative/java LocaleTest
ja_JP
$ /etc/alternative/java -Duser.language=en -Duser.country=UK LocaleTest
en_JP
$