28 Aralık 2007 Cuma 11:24
Merhaba; dün yaptığım işlem adımları aşağıdaki gibidir.
**Adım01: DNN 4.8.0 source code paketini yüklendi.
**Adım02: VisualStudio ile proje dosyası açıldı.
**Adım03: Visual Studio Solution penceresinde yeralan "DotNetNuke.Library" projesi içerisinde(bu konum disk üzerinde d:\DNN480KaynakpaketiXX\Library\Components\Shared konumuna karşılık gelmektedir.) yer alan orjinal CBO.VB dosyası açıldı.
**Adım04: CBO.VB içerisinde
##_29 nolu satırda(sınıf kütüphanelerinin bulunduğu yerdeki boşluşa) :
##_29 : Imports System.Threading kütapanesini eklendi.
-------
122 nolu satırda yer alan "GetOrdinals" fonksiyonun hemen altına yeni kodlar için üç satır boşluk açıldı.
##_123 nolu satırda: Dim tmp_ActiveCultureInfo As CultureInfo = Thread.CurrentThread.CurrentCulture '// kullanıcının aktif kültür bölgesini değişiklikten sonra eski haline getirmek için saklıyoruz. EKLENDİ.
##_124 nolu satıra: Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
eklendi. (bu ekleme kodun çağırdığı özellik anahtar isimlerinin kullanıcının seçtiği kültürden ayrı olarak en-US formatında yüklenmesini sağlıyor)
##_147 (Return arrOrdinals satırından 1 önceki satır.):
##_147 satıra: Thread.CurrentThread.CurrentCulture = tmp_ActiveCultureInfo
eklendi. bu ekleme kullanıcının mevcut kültürüne geri dönmesi sağlandı.
### bu değişiklikliklerden sonra "DotNetNuke.Library" Release modda derlendi ve ...\library\bin klasörü içerisindeki oluşan "DotNetNuke.dll" dosyası
...\Website\bin klasörü içerisine kopyalandı.
(bu işlem derleme sırasında da otomatik gerçekleştiriliyor olabilir. emin olmak için tekrar manuel kopyalandı.)
*********************
CBO.VB fonksiyonun modifiye edilmiş tam hali (yukarıdaki Imports System.Threading eklenmeli)
*********************
''' -----------------------------------------------------------------------------
'''
''' GetOrdinals gets the array of Ordinals in the dataReader that corresponds to the
''' ArrayList of properties in the class
''' '''
The DataReader
'''
An ArrayList of properties for the type
'''
An Array of ordinals'''
'''
''' [cnurse] 06/29/2007 Documented
''' ''' -----------------------------------------------------------------------------
Private Shared Function GetOrdinals(ByVal objProperties As ArrayList, ByVal dr As IDataReader) As Integer()
Dim tmp_ActiveCultureInfo As CultureInfo = Thread.CurrentThread.CurrentCulture '// kullanıcının aktif kültür bölgesini değişiklikten sonra eski haline getirmek için saklıyoruz.BFC27.12.20007
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US") '//BFC27.12.2007
Dim arrOrdinals(objProperties.Count) As Integer
Dim propertyName As String
Dim intIndex As Integer
Dim columns As New Hashtable
If Not dr Is Nothing Then
'Get the column names from the DataReader
For intIndex = 0 To dr.FieldCount - 1
columns(dr.GetName(intIndex).ToUpper()) = ""
Next intIndex
For intIndex = 0 To objProperties.Count - 1
propertyName = DirectCast(objProperties(intIndex), PropertyInfo).Name.ToUpper()
If (columns.ContainsKey(propertyName)) Then
arrOrdinals(intIndex) = dr.GetOrdinal(propertyName)
Else
arrOrdinals(intIndex) = -1
End If
Next
End If
Thread.CurrentThread.CurrentCulture = tmp_ActiveCultureInfo '// BFC27.12.2007
Return arrOrdinals
End Function
*************************************
*************************************
Gözlem Notları:
01- yeni yada yükselme kurulumundan sonra Türkçe Aktif iken kontrol alınan hata mesajları önlendi.
02- Yönetim sayfaları sorun görünmüyor.
03- Ülke bayrakları her iki moddada düzgün görünüyor.
04- yeni kurulumda ise eğer diller den türkçe dil eklenmiş ise, Türkçe dil paketinin de mutlaka yüklü olması gerekiyor.
NOTLAR:
***01: yukarıdaki değişiklik kısa zaman içerisinde geliştirilmiş bir çözüm.
daha uygun bir yerde yapılacak değişiklikle, Kurulum aşamasındaki web.config deki en-US zorunluğu da ortadan kalkabilir.
***02: DNN yapısı tekrar analiz edilmeli ve DUyurular ve benzeri modüllerdeki dil sorunları çekirdekten düzeltme yoluna gidilebilir.
Özetle
*********
sorun temeli kullanıcının seçtiği veya ayarlanan kültür yapısı çağrılan anahtar isimleri ve parametrik değerleri etkiliyor. Anahtar kelimeler ve Parametre isimleri kültür değişikliğinden etkilenmeyecek şekilde tasarlanmalıdır.
Yazdıklarımı tekrar kontrol edecek zamanım olmadığı için bu ve önceki yazılarımda yer alan imla ve yazım hatalarını lütfen hoş görünüz :)
iyi çalışmalar.
bulentcavan@istanbul.gov.tr; bfcavan@gmail.com (google talk aktif)