2011-11-30 20 views
5

Java I18n yeteneği inanılmaz. Mükemmel Desteklenen locales çalışır:Java I18n desteklenmiyor Yerel Ayarlar

Locale ar = new Locale("ar","SA"); 
System.out.println(ar.getDisplayName(ar)); 

çıkışlar:

Ama Kazakh dil gibi değil, desteklenen yerler için العربية (السعودية), dil adı aynı lang görüntülenen Java Spec enlish (Standart) çıktı, yazılı gibi.

Locale locale = new Locale("kk","KZ"); 
System.out.println(kk.getDisplayLanguage(kk)); 

çıkışlar: Kazakh (Kazakhstan)

Ben bu sorunu çözmeye çalışıyorum, son kodu şöyle çıkışına sahiptir: Қазақша (Қазақстан).

Herkes çözüm biliyor mu?

Herhangi bir tahmin (veya Java SE geliştirici ile temasa yolları veya algoritmalar tanıdıklarınızı ile) Ben cevap olarak not edecektir;)

teşekkür ederiz!

cevap

1

Windows üzerinde çalıştığınızı varsayarsak, OS Bölgesel Ayarları'nda yerel ayarı değiştirmeniz gerekir. Lütfen bkz this link. (2000 kazandığında Kazakh görünür, ancak 7 kazanırsa listede görünmez ...). Linux üzerinde, yerel ayarı localedef utility ile ayarlayabilirsiniz.

İyi Şanslar!

+0

Hiç geç olmamasından iyidir ^^ – erko

2

En belirgin çözüm, çevirileri kendiniz sağlamak, yani dil ve ülke özelliklerinin değerine bağlı olarak yerel değeri dışlamak ve bunları ListResourceBundle örneğine koymak olacaktır. Bu bir sürü iş gibi görünüyorsa, bu ... Kontrol etmek için diğer bir çözüm de ICU kullanıyor.
Size Locale görünen adını doğrudan vermez, ancak Yerel Ayarı temel alan ULocale nesnesini oluşturabilir ve bu yalnızca çevrilmiş olabilir.
ICU hilesi işe yaramazsa, muhtemelen CLDR dil listesinden geçmeniz ve çevirileri kendiniz yapmanız gerekir. BTW. Sırp tam olarak aynı sorunu vardı, ben onlar için sabitleme yaptıklarından emin değilim JDK7 ...