Trong Linux/Unix/Mac, cài đặt LC_ALL
và LANG
có thể kiểm soát ngôn ngữ mặc định cho các chương trình Java. Trong Windows, các ngôn ngữ được đặt từ Bảng điều khiển, trong Tùy chọn ngôn ngữ và khu vực.
Khi JVM khởi động trong một môi trường * nix, nó sẽ làm điều này:
- Quét môi trường cho
LC_ALL
- Nếu
LC_ALL
không tồn tại, quét môi trường cho LANG
- Nếu Cài đặt JVM
user.language
được đặt, sử dụng thay cho các biến môi trường.
- Nếu không có gì được thiết lập, mặc định để
en_US
(Tôi tin rằng đây là trường hợp thất bại cuối cùng)
Trong môi trường của bạn, bạn có LC_ALL
thiết lập để C
, mà chỉ là C locale. Về cơ bản nó là một dự phòng truyền thống cho đến những ngày mà ngôn ngữ không được sử dụng.
Bạn có thể thay đổi LC_ALL
trong trường hợp của mình và khởi động lại JVM và bạn sẽ nhận được một giá trị mới cho java.util.Locale.getDefault()
.
Ví dụ:
import java.util.Locale;
public class LocaleTest {
public static void main(String[] args) {
System.out.println(Locale.getDefault());
}
}
đây đang chạy:
> LC_ALL=en_UK java LocaleTest
en_UK
> LC_ALL=ja_JP java LocaleTest
ja_JP
Cũng lưu ý rằng nếu bạn đang chạy Java 1.7.0-b147, có một lỗi với JRE không nhận ra các thiết lập môi trường cho miền địa phương và sẽ luôn sử dụng ngôn ngữ hệ thống mặc định.
Báo cáo lỗi tại đây: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7073906
bạn đã khởi động lại jvm chưa? –