2011-01-17 16 views
7

Listesini nasıl genişletirim Java 1.6'da bulunan Yerel Ayarlara daha fazla Yerel Yer eklemek için bir yol arıyorum. Ama yaratmak istediğim Locales, ISO-3166 ülke kodlarına ve ISO-639 dil kodlarına sahip değil. Bunu yapmak için herhangi bir yolu var mı? Mevcut Java Locales

yüzden

gibi bir şey mevcut bir Locale uzatmayı düşündünüz eklemek istiyorum Yerel Ayarlar sadece dil adlarında farklı olmakla birlikte bir etnik gruptur küçük, daha seçici onların kimliğine ;-) hakkında olsun
UserDefinedLocale extends Locale { 
    UserDefinedLocale (Locale parentLocale) {...} 
} 

ama java.util.Locale özellikle zor etrafında bir şey kesmek için yapar kesindir ... Yani

Java Locales listesi eksiksiz olduğu fikri nedir? Biraz daha Locales özledim mi?

cevap

1

this answer bakınız:

... Sen SPI'ler yoluyla ek yerler için destek takabilirsiniz ( here açıklanmıştır). Örneğin, yeni bir yerel ayar için bir tarih biçimlendirici sağlamak için, bir DateFormatProvider hizmetini uygulayarak bunu yaparsınız. Bunu, mevcut bir uygulamayı dekore ederek gerçekleştirebilirsiniz - ICU4J kütüphanesine, istediğiniz desteği sağlayıp sağlamadığını öğrenmek istiyorum.

+0

Teşekkürler. Her kullanıcı ne yazık ki manipüle ediyor JRE, benim uygulama için bir seçenek değil: "Locale Duyarlı Hizmetler SPI'leri standart Java Uzantı Mekanizmasına dayanıyor olduğundan, bunları bir JAR dosyası olarak paketleyebilirsiniz (MANIFEST dosyasında birkaç hileyle birlikte Burada bulun ve uzantısı dizinine yerleştirin. " – alfonx

4

java.util Locale için javadoc dosyasını okuyun.

Diyor ki O da diyor

: "Bu sınıftaki Kurucular kullanarak Yerel nesne oluşturma": Bir Yerel nesne bir bölge için sadece bir tanımlayıcı olduğundan ", hiçbir geçerliliğinin kontrol sizi zaman yapılır bir yerel Ayar "

Ayrıca diyor ki: " oluştururlar. bir yerel nesne almak istiyorum (NumberFormat) çeşidini belirleyen mekanizmadır yerel için değil, bir konteyner nesneleri tanımlamak için sadece bir mekanizmadır nesneler kendilerini "

Ve nihayet, getAvailableLocales için javadoc() metodu diyor ki:

"dönen dizi Java çalıştırma ortamı tarafından ve kurulu LocaleServiceProvider uygulamaları tarafından desteklenen yerel birliği temsil" Yani sadece bir dil kodu icat etmek zorunda olan standart listede değildir ve yerel ayarınız için bir tanımlayıcı olarak kullanın.

+0

_ "Yani sadece standart listede olmayan bir dil kodu icat etmeniz ve onu yerel ayarınız için bir tanımlayıcı olarak kullanmanız gerekiyor." _ - bir "LocaleServiceProvider" kurmaktan bahsettiğiniz biraz özlediniz mi? –

+0

Bunun bir kısayol olduğuna katılıyorum. Ancak OP, “mevcut yerellerin listesini genişletmek” ile ne demek istediğini açık bir şekilde açıklamadığı için, istediği şeyin yeni bir tane oluşturmak için ona ihtiyaç duyduğundan şüphe ettim. ResourceBundle'ı kullanarak yeni bir Yerel Ayardan başka bir şeye gerek yoktur. Sayı ve tarih formatı, kuralları başka bir dilden yeniden kullanabilir. O zaman sadece yeni bir ülke kodu veya varyant kodu kullanmak zorunda kalacaktı. –

İlgili konular