Merhaba ..
Geliştirdiğimiz yazılım için yurtdışı talepleri geliyor .. çoklu dil desteği verme adına çalışma başlattık ..
devexpress ve fastreport un dil destek paketleri ile işimi görecek gibiyim .. 1-2 sorun var araştırdım tam çözüm bulamadım ..
integer ve date alanlarında componentlerde yine latin karakterler gözüküyor .. string alanlarda sorun yok ..
acaba sistemin kendi dili ile ilgilimidir diye sistem dilini Farsça yaptım .. olmadı ..
pas dosyalarının içine dalmadan önce buraya yazayım dedim .. bu konuda tecrübesi olan varmıdır ?
çoklu dil desteğinde numeric rakam sıkıntısı (Farsça ve Arapça için)
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
çoklu dil desteğinde numeric rakam sıkıntısı (Farsça ve Arapça için)
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: çoklu dil desteğinde numeric rakam sıkıntısı (Farsça ve Arapça için)
1.si sorunuz cok aciklayici degil sorun sadece baslikdan anlasiliyor. Kendi anladiginiz sekilde degil bizim anlayacagimiz sekilde yazmaniz gerekir herkes acaba ne demek istedi diye yazip cevap bekleme zahmetine girmeyebilir.
Sorunuz sanirim edit alanlarinda latin olmayan alfabelerde ornegin 1 rakaminin o alfabelerde boyle yazilmadigi icin sorun yasiyorsunuz.
Sanirim Key in ['1'..'9'] seklinde kullaniyorsunuz bu yontemi bu sekilde kullanilmasini onermiyorum.
Bunun birkac cozumu var.
1) Edit Control Styles degerleri arasinda yer alan ES_NUMBER style'ini uygulamaniz gerekli. Fakat burada onemli olan bir nokta var Projeyi eger Delphi 7 de yaziyorsaniz bu stil Paste olayinda bug kapisini acik birakacaktir, çunku Delphi 7 surumunde çalistirilabilir exe dosyalarina manifesto xml i dahil edilmez bu sebepden oturu siz ES_NUMBER stilini uyguladiginiz Edit nesnesine numeric olmayan stringi Paste ettiginizde sorunsuz sekilde yapistiracaktir, fakat XE surumlerinde derlenen EXE lerde manifesto dahil edildigi icin siz yapistirma islemini yaptiginizda Windows, buraya bunu yapistiramazsiniz gibisinden uyari verecektir.
Bu durumda WM_PASTE Windows mesajini ilgili Edit icin declare edip 2. Yontemde anlaracagim sekilde kodlamanizi yapmaniz gerekir.
WM_PASTE ise clipboard'dan o nesneye birsey kopyalandiysa calisacaktir bu mesaj calistiginda ise Clipboard nesnesi ile kopyalanmis stringi alarak kodlamanizi yapabilirsiniz.
2) Edit controllerinin KeyPress i ile degil KeyDown eventi alani ile ilgilenmeniz gerekir.
Burada ise dogrudan Windowsun Key Code'ları ile islem yaparak yapabilirsiniz, cunku siz rakamlari alfabetik yani insanin kullanmasi gereken sekilde kistas yapiyor olabilirsiniz. 1 rakami Latin alfabesinde sembolik olarak '1' iken arapca da farscada daha farkli sembolize edilmistir. Bilgisayar bunu sembolize ederken tek bir temel uzerinden bunu yapar ve goruntu olarak ciktiyi degistirir cunku sayilar evrenseldir ve tek bir kodla ifade edilebilir
Bunun birlikte KeyDownda Key in [Number0..Number9] olarak kullanmaniz sadece sayisal rakamlara izin vereceginden Backspace, Ctrl + C, Ctrl + V kombinasyonlarinida ezmis olacaksiniz, buna dikkat ederekten islemlerinizi yapmanizi oneririm.
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Iyi gunler.
Sorunuz sanirim edit alanlarinda latin olmayan alfabelerde ornegin 1 rakaminin o alfabelerde boyle yazilmadigi icin sorun yasiyorsunuz.
Sanirim Key in ['1'..'9'] seklinde kullaniyorsunuz bu yontemi bu sekilde kullanilmasini onermiyorum.
Bunun birkac cozumu var.
1) Edit Control Styles degerleri arasinda yer alan ES_NUMBER style'ini uygulamaniz gerekli. Fakat burada onemli olan bir nokta var Projeyi eger Delphi 7 de yaziyorsaniz bu stil Paste olayinda bug kapisini acik birakacaktir, çunku Delphi 7 surumunde çalistirilabilir exe dosyalarina manifesto xml i dahil edilmez bu sebepden oturu siz ES_NUMBER stilini uyguladiginiz Edit nesnesine numeric olmayan stringi Paste ettiginizde sorunsuz sekilde yapistiracaktir, fakat XE surumlerinde derlenen EXE lerde manifesto dahil edildigi icin siz yapistirma islemini yaptiginizda Windows, buraya bunu yapistiramazsiniz gibisinden uyari verecektir.
Bu durumda WM_PASTE Windows mesajini ilgili Edit icin declare edip 2. Yontemde anlaracagim sekilde kodlamanizi yapmaniz gerekir.
WM_PASTE ise clipboard'dan o nesneye birsey kopyalandiysa calisacaktir bu mesaj calistiginda ise Clipboard nesnesi ile kopyalanmis stringi alarak kodlamanizi yapabilirsiniz.
2) Edit controllerinin KeyPress i ile degil KeyDown eventi alani ile ilgilenmeniz gerekir.
Burada ise dogrudan Windowsun Key Code'ları ile islem yaparak yapabilirsiniz, cunku siz rakamlari alfabetik yani insanin kullanmasi gereken sekilde kistas yapiyor olabilirsiniz. 1 rakami Latin alfabesinde sembolik olarak '1' iken arapca da farscada daha farkli sembolize edilmistir. Bilgisayar bunu sembolize ederken tek bir temel uzerinden bunu yapar ve goruntu olarak ciktiyi degistirir cunku sayilar evrenseldir ve tek bir kodla ifade edilebilir
Bunun birlikte KeyDownda Key in [Number0..Number9] olarak kullanmaniz sadece sayisal rakamlara izin vereceginden Backspace, Ctrl + C, Ctrl + V kombinasyonlarinida ezmis olacaksiniz, buna dikkat ederekten islemlerinizi yapmanizi oneririm.
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Iyi gunler.
Re: çoklu dil desteğinde numeric rakam sıkıntısı (Farsça ve Arapça için)
öncelikle cevabınız ve ilginiz için teşekkür ederim ..
sonrasında yazdığım sorunun zaten başlık kısmı okunduğu zaman net anlaşılması en güzel olanı değilmidir ?
"sadece baslikdan anlasiliyor. " yazmış olmanız garip geldi bana ..
sonrasında yazdığım sorunun zaten başlık kısmı okunduğu zaman net anlaşılması en güzel olanı değilmidir ?
"sadece baslikdan anlasiliyor. " yazmış olmanız garip geldi bana ..
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
-
- Üye
- Mesajlar: 152
- Kayıt: 16 May 2014 11:23
Re: çoklu dil desteğinde numeric rakam sıkıntısı (Farsça ve Arapça için)
Oyleyse baslik inceleme alanini kaldirmalarini soyleyelim kimse bosuna zahmet etmemis olur 
Iyi gunler

Iyi gunler