2011-08-28 25 views

Trả lời

3

Tôi sợ không có hằng số cho tất cả các ngôn ngữ. Bạn không có nhiều miền địa phương được xác định trước như Locale.UKLocale.US, vv Mỗi miền địa phương có một mã ngôn ngữ mà có thể thu được qua phương pháp getLanguage().

Để có được tất cả các mã ngôn ngữ được hỗ trợ bởi việc sử dụng JVM tiềm ẩn getISOLanguages()

for(String lang : Locale.getISOLanguages()) { 
    System.out.println(lang); 
} 

Thông tin chi tiết: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Locale.html

0

Yup .. Sử dụng Locale.COUNTRY-NAME

+2

Không giống nhau. Martin đang tìm kiếm * mã * ngôn ngữ, không phải mã * quốc gia *. Họ không nhất thiết phải bản đồ 1: 1 với nhau. –

+0

@Michael: Bạn nói đúng. –

+3

bạn có thể sử dụng ngôn ngữ để có được ngôn ngữ như vậy 'Locale local = Locale.ENGLISH; local.getLanguage(); ' –

4

Các mã ngôn ngữ gồm 2 chữ cái được định nghĩa theo tiêu chuẩn ISO 639-1. Lớp java.util.Locale không chứa tất cả, nhưng chỉ Locales được VM hỗ trợ (theo Locale.getAvailableLocales()). Cách dễ nhất để truy cập tất cả các mã ngôn ngữ ISO 639-1 trong Java là dựa vào dự án International Components for Unicode (ICU4J) — một thư viện i18n mở rộng, được sử dụng rộng rãi và tích cực từ IBM. Bạn có thể lấy danh sách tất cả các ngôn ngữ từ lớp ULocale: com.ibm.icu.util.ULocale.getISOLanguages().

+0

Đó là ISO 639-1, không phải 639-2. Nếu không, +1. – Henning

Các vấn đề liên quan