Yazdığınız Kodlar “Türkiye” Uyumlu mu?
Yazılım üreticiler geliştirdikleri yazılımları evrenselleştirirken en çok problem oluşturan ülkenin Türkiye olduğunu biliyor muydunuz? Yazılım veya web sitesi sahiplerinden bazıları geri dönüş aldıkları problemlerin büyük bir kısmının Türkiye kaynaklı Türkçe kullanılan sistemlerde ve tarayıcılardan geldiğini görmüş. Bunun üzerine kimisi tamamen arayüzü değiştirerek gibiside bu hatalara gözünü kapayarak işine devam etmiş.
Bu Türkiye kaynaklı hataların temel 3 sebebi var.
Sebeplerden ilki ABD’de kullanılan 3/14/2020 şeklindeki “Bugün” formatının Türkiye’deki hali 21.03.2020 şeklinde olması. Yani bizim gün/ay/yıl olarak yazılan tarih biçimi Amerikan standratlarında ay/gün/yıl şeklinde.
Bu kullanım her ne kadar Türkiye için uygun gözüksede ne yazık ki yanlış.
Doğru kullanım ise:
İkincisi ise sayıların yazılış biçimindeki farklılık. ABD de sayılar 35,653 şeklinde 3 lü rakam gruplarının arasına virgül (,) işareti konulurken Türkiye’de sayılar 34.653 formatında 3 lü grupların arasına (.) nokta işareti kullanılıyor.
Aslında yukarda saydığımız iki problemi de çözmek bir programcı için çok kolay ve birçok programcı bu iki sebepteki sorunları önceden kestirip bunlara önlem alıyor. Çünkü bunlar farklı ülkelerde de farklılık gösterebiliyor. Ama üçüncüsü daha çok Türkiye’ye özel ve bunu önceden kestirmek çok güç. Ki bu da İngilizce de büyük “İ” harfi ve küçük “ı” harfi bulunmayışı, onlara göre de bizde fazladan bu harflerin bulunuşu.
peki üstteki karşılaştırmalar bizi Türkiye testinden geçirir mi? ne yazık ki “HAYIR”.
- Düzeltme: Kültürel temelli dilsel karşılaştırmalara (Türkiye’de size noktalı büyük I’ler veren) kesinlikle gerekmedikçe karşılaştırmalar için sıralı (ham bayt) bir karşılaştırıcı veya değişmez kültür kullanın .
Veya
Veya
Ve son olarak, Regex arkadaşımız için bir düzeltme:
- Aslında böyle bir şey yazarken kendini beğenmiştim (yorum not):
Bu basit program “Türkiye Testi” ni geçiyor mu?
Muhtemelen “evet” demekten çekiniyorsunuz… ve haklı olarak. Çünkü bu da testi geçemez.
Sebep: Raymond Chen’in işaret ettiği gibi, orada 10’dan fazla basamak var. Burada gerçek Arapça rakamlar kullanıyorum ( bu kod tablosunun 4. sayfasına bakınız):
Düzeltme: Bir CultureInvariant burada size yardımcı olmaz. Tek seçenek, kastettiğiniz karakter aralığını açıkça belirtmektir:
Veya RegexOptions.ECMAScript
seçeneğini kullanın. Java ECMAScript’te
, “\ d” bize şunu veren [0-9] anlamına gelir:
“Türkiye Testi” çok basit bir soru sorsa da, benim gibi tüm küçük detayları anlamayan adamlar için sürprizlerle doludur.
“Türkiye Testi” çok basit bir soru sorsa da, benim gibi tüm küçük detayları anlamayan adamlar için sürprizlerle doludur.
“Türkiye Testi” çok basit bir soru sorsa da, benim gibi tüm küçük detayları anlamayan adamlar için sürprizlerle doludur. Yukarıda gördüğümüz gibi Türkiye, klasik Frank Sinatra şarkısında “New York, New York” gibi:
“Bu küçük kasaba mavileri eriyor,
Yeni bir başlangıç yapacağım – eski New York’ta
Eğer orada yapabilirsem, her yerde yaparım
Bu size bağlı – New York, New York ”
Kodunuz Türkiye’de düzgün çalışıyorsa, muhtemelen her yerde çalışır.
Bu bizi logo programına getiriyor:
“Turkey Test” Logo Program Gereksinimleri :
- Joel Spolsky’nin Unicode’a temel girişini okuyun.
- Microsoft’un “ Microsoft .NET 2.0’da Dizeleri Kullanmaya Yönelik Yeni Öneriler ” makalesini ve BCL ekibi tarafından bu yayını okuyun .
- Kullandığınız tüm dize, ayrıştırma ve normal ifade için her zaman kültürü ve sayı biçimlendiriciyi belirtin.
- Kullanıcıdan veri okuduysanız ve bunları dile duyarlı bir konuda (örneğin sıralama) işlemek istiyorsanız, CurrentCulture’u kullanın. Bunların hiçbiri önemli değilse, gerçekten Ordinal karşılaştırmaları kullanmayı deneyin.
- Kodunuzda FxCop komutunu çalıştırın ve CA1304 (SpecifyCultureInfo) veya CA1305 (SpecifyIFormatProvider) uyarısı olmadığından emin olun.
- “ Tr-TR ” kültürünün yanı sıra yerel kültürünüzdeki işlemleri karşılaştıran birim test dizesi (aslında Türkiye’de yaşamıyorsanız, “en-US” gibi bir kültür kullanmayın).
Yukarıdaki gereksinimleri başarıyla geçtikten sonra, yazılımınız nihayet gururla “Passed ‘The Turkey Test’” logosunu kullanabilecektir.
Kaynak : (Does Your Code Pass The Turkey Test?)
Başka bir referans site daha. (What’s Wrong With Turkey?)