Merhabalar,Kodamanda veya başka kaynaklarda asp’de çoklu dil sistemleri ile ilgili bir çok değişik yöntem gördüm. Ben de kendi projelerimde kullandığım sistemi anlatmaya çalışacağım.Bu örnekte 3 dil ile çalışan bir örnek yapacağım. Dil sayısını istediğiniz kadar artırabilirsiniz. Bize lazım olanlar;# 3 adet xml uzantılı dil dosyası. (ben bunları tr.xml, en.xml ve fr.xml olarak isimlendirdim)# dil seçimi sonucunda her seçimde dili değişecek olan sayfa. (default.asp olsun)# o anda hangi dilin seçili olduğunu bulan, ona göre seçili dilin dil dosyasını açan ve değişkenlere o dil dosyasındaki değerleri atayan dosya (dil.asp dosyası olsun)# dil seçimini otomatiğe bağlayacağımız yani dili belli linklerle değiştirebileceğimiz sayfa (dildegistir.asp)Öncelikle dil dosyalarımızı verelim;tr.xml sayfası;arama
etiket
seçenek

en.xml sayfası;search
tag
option

fr.xml sayfası;recherche
étiquette
choix

ASP dosyalarımıza sıra geldi. Basitten karmaşığa doğru gidelim.default.asp sayfamız;Değer 1: <%=d1%>Değer 1: <%=d2%>Değer 1: <%=d3%>Türkçe
English geç
Français
default.asp sayfasında yaptığımız hemen hemen hiçbirşey yok. dil.asp dosyasını bağladık. değişkenleri ekrana yazdırdık ve diller arası geçiş için linkler koyduk. Bu kadar.
dildegistir.asp sayfası;<%dil=request.querystring("dil")if dil="" thensession("dil")="tr"elseif dil="en" thensession("dil")="en"elseif dil="fr" thensession("dil")="fr"elsesession("dil")="tr"end ifresponse.redirect "default.asp"%>dildegistir.asp sayfasında şunu yaptık. default.asp sayfasından querystring ile gelen veriyi dil diye bir değişkene atadık. sonra gelen veriye göre session(“dil”) çerezine dil değerini yerleştirdik. eğer gelen veri boşsa, tr ise veya bu 3 dil değerinden farklı ise session(“dil”) çerezine yine tr atadık. en son olarak da tekrar default.asp sayfasına yönlendik.
Sıra en karmaşık dosyamızda. session(“dil”)’in değerine göre dili ve dilin xml dosyasını seçecek ve uygulayacak olan dosya.dil.asp sayfası;<%if session("dil")="tr" or session("dil")="" thendosya = "tr.xml"elseif session("dil")="en" thendosya = "en.xml"elseif session("dil")="fr" thendosyas = "en.xml"end ifSet xmlDoc = createObject("Msxml.DOMDocument" )xmlDoc.async = falsexmlDoc.setProperty "ServerHTTPRequest" , truexmlDoc.load(dosya)If (xmlDoc.parseError.errorCode <> 0) ThenResponse.Write “XML error: ” & xmlDoc.parseError.reasonElseSet channelNodes = xmlDoc.selectNodes(“//dilsistemi/*” )For Each entry in channelNodesIf entry.tagName = “d1″ Thend1 = entry.textelseif entry.tagName=”d2″ thend2=entry.textelseif entry.tagName=”d3” thend3=entry.textEnd IfNextEnd If%>Bu dosya ne yapıyor. Dikkat ettiyseniz bu dosyayı default.asp’nin başına bağlamıştık. Bu dosya session(“dil”)’e göre dili belirleyip ilgili dosyayı alıyor ve HTTPRequest ile işlemler yapıp değişkenlere atıyor. Sayfaya ilk girişte session(“dil”) boş olabileceği için bu durumda da tr dil dosyasının seçilmesini sağlıyor.
Geliştirilebilir bir sistemi bu. Geliştirip değiştirerek çok daha farklı ve kullanışlı şeyler yapılabilir.request.querystring nesnesi ile ilgili bilgi almak için daha önceden hazırladığım bu makaleyi okuyabilirsiniz. ?=tr şeklindeki olaylarda sql injection’a düşmemek için de bu makaleyi okuyabilirsiniz.