Özellikle de Netbeans ile uygulama geliştirmeye çalışırken ve Oracle VTYS kurulumunda sık sık karşıma çıkmakta bu sorun. Netbeans teki örnek uygulamaların yarıya yakını Sistem yerel ayarım Türkçe olduğu için çalışmamakta. Yukarıdaki makale sorunu göstermekte ve son paragrafı da aslında durumun ne kadar vahim olabileceğine işaret etmektedir.
Bu bir sorunmudur değilmidir tartışılır. Fakat yurtdışındaki birçok geliştirici bu durumun farkında değil. JBoss ta bu tip hatalarla ilgili birkaç bug girdiğimde uygulama rusca da çincede çalışıyor sizin lokalizasyon ne diye soruyorlar. Şaşırıyorlar da.
Yalnız aynı uygulamayı paylaşan jvm de genelde güvenlik nedeniyle şu kısım kapalıdır.
// Use incorrectly written code
Hatırladığım kadarıyla Netbeans için "Tr" ayarlı windowslarda kurulum sorunu vardı. Windows' u yerel dil "En" yapılınca sorun ortadan kalkıyordu. Hala aynı şey varmıdır? Kullananlar buna ek olarak netbeans' taki örnek programların "Tr" ayarlı sistemlerde çalışmadığını mı söylüyorlar şu anda. Birileri bilgilendirirse sevinirim. Zira java çalışmak için bellek artırımına gittim. Birde windows ta netbeans ile java çalışmak için nelerle cebelleşeceğimizi öğrenmiş oluruz.
Netbeans kurulumunda Turkce sorunu vardir. Kurulum sirasinda yerel ayari Ingilizceye ya da baska bir dile cevrilir, kurulum yapilir, ardindan ayar tekrar Turkceye cevrilir. Bu islemden sonra hem Netbeans hem de Netbeans ile yazdiginiz programlar Turkce yerel ayariyla sorunsuz calismaktadir. Bizzat bu sekilde kullanmaktayim. Bunun disinda hic problemle karsilasmadim. Bu yazdiklarim Netbeans'in 5. ve 6. surumleri icin gecerlidir.
Gecen sene NetBeans gelistiricilerinden Roman Strobl'a sormustum soruyu. Anladigim kadari ile bu Netbeans degil o zamanlar kullandiklari install shield'den kaynaklanan bir sorunmus. Bildigim kadari ile 6.0 surumu java tabanli yeni bir installer kullandigindan su anda bu sorun olmasa gerek, ama Turkce kurmayi denemedigim icin kesin konusamiyorum.
Merak etme durum o kadar da kötü değil (en azından başlangıç için) . Netbeans'i bir kere kurduktan sonra. sistem ayarlarını tekrar türkçe yap
Netbeans klasöründe etc dizini içinde netbeans.conf
netbeans_default_options içerisinde en sona --locale tr_TR ekle
Eğer uygulama sunucusu olarak ta glassfish kullanıyorsan
lib klasöründeki Launcher ve processLauncher.xml dosyasına
< sysproperty key="user.language" value="tr-TR"/ >
birde domain klasöründeki domain.xml
Bu ayarlar yüzünden en azından iki ay cebelleştim.
Ben yandım eller yanmasın :)
Netbean 6 ve Java 6 kurun. Turkce ile problemsiz sekilde calisiyor. Zaten Netbeans 6 ozellikleriyle de eskisine gore cok daha iyi gorunuyor.
Netbeans'in onceden kullandigi kurulum programi kapali kodluydu ve kendilerine ait degildi. Kurulum programi HSQLDB'nin eski ve turkce ile calismayan bir versiyonunu kullandigindan TR yerelinde calismiyordu. Ayrica kullanilan XSLT derleyicisinin kullandigi bcel bytecode manipulasyon kutuphanesi de Turkce ile sorunluydu.
Java 1.4 surumlerinde String sinifi icerisinde toUpperCase sinifinda sirf turkceye ozel kod yer alirdi. Sonradan Java5 ile birlikte farkli dillerde de (Azerice gibi) ayni durum soz konusu oldugundan saniyorum konuyu daha genel bizimde cozen bir yaklasim yapildi. Su anda Java Doc'ta su yazar:
"Converts all of the characters in this String to upper case using the rules of the default locale. This method is equivalent to toUpperCase(Locale.getDefault()).
Note: This method is locale sensitive, and may produce unexpected results if used for strings that are intended to be interpreted locale independently. Examples are programming language identifiers, protocol keys, and HTML tags. For instance, "title".toUpperCase() in a Turkish locale returns "T?TLE", where '?' is the LATIN CAPITAL LETTER I WITH DOT ABOVE character. To obtain correct results for locale insensitive strings, use toUpperCase(Locale.ENGLISH). "
Bu arada, hatirlatirim ki bu javaya has bir sorun degildir. I harfi .Net dahil tum platformlarda sorunludur. isterseniz google'da "turkish dotless i [php, python, c#, ruby, delphi, vb ..]" seklinde bir arama yapin.
Bu konuda benim onerim default Locale'yi degistirmek yerine sadece turkce oldugu kesin olan Stringler icin ozel islem yapilmasidir. Zaten sorun genellikle sadece buyuk-kucuk harf donusumu sirasinda ortaya cikiyor. tabi bunun yapildigi ic kutuphaneleri de dusunerek.
"toUpperCase sinifinda" -> "toUpperCase metodunda"
Zaten sorun programı siz yazıyorsanız önemli değil. Siz programda gerekli önlemleri alabilirsiniz. Problem genellikle hazır araçları kullanırken problem teşkil ediyor. Araçlar kendi ayar dosyalarını veya çıktılarını genellikle XML olarak tutuyorlar. ve bu dosyalar XML parser tarafından yorumlanmaya geldiğinde içerideki değişkenler i harfi içeriyorsa vay halinize.
Bu durum Uygulama geliştirdiğiniz IDE'de, kullandığınız uygulama sunucusunda ve oradan buradan toparlanmış tüm üçüncü parti araçlarda karşınıza çıkabilir. Aklınızda bulunsun xmltransformation ile ilgili hemen hemen tüm exceptionlar sırf türkçe locale de çalıştığınız için.
Ama ben notepad de yazıp kendim derliyorum diyenlere bi diyeceğim yok :)