Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » ASP » Çoklu Dil Yapısı


Yanıt
 
LinkBack Seçenekler
Old 23.08.2008   #11 (permalink)
 
Üyelik Tarihi: 21.08.2008
Yer: istanbul
Mesaj: 6
re: Çoklu Dil Yapısı


ben ingilizce için ayrıca klasör açtım.

www.netteseyret.net , sitenin sağ üstünde bir ingiliz bayrağı var, tıkladığınızda /eng klasörüne gidiyor. yani sitenin kopyasını aldım ve onu ingilizceye çevirdim, iç klasöre attım. database olarak aynısını kullanıyorlar.

dil 'i request yöntemiyle de alabilirdim. ancak ne bileyim, bu işime geldi. bir kere yapılacak şeydi ztn. sadece menüler ve açıklama başlıkları elle giriliyor. herşey database'den geliyor...
magickeyboard şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 23.08.2008   #12 (permalink)
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Mesaj: 70
re: Çoklu Dil Yapısı

Benim bahsettiğimde editörlerin yeni dil ekleme ihtimali yüksek olduğu için ben dediğin yöntemi yapmadım, bu nedenle de XML daha mantıklı gibi. Gerçi denemedim daha yukarda gelen kodu da...
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 23.09.2008   #13 (permalink)
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Mesaj: 70
re: Çoklu Dil Yapısı

Alıntı:
absconder tarafından gönderilen mesaj: Mesajı Görüntüle
application nesnesini kullanmanın avantajı, içindeki veri ram'de tutulduğunda okuma/yazma işlemleri disk yada veritabanı işlemlerine oldukça hızlı olur.

application nesnesi, session nesnesinin global halidir.

tüm kullanıcılarda global şekilde değişken kullanmanıza olanak verir.

ayrıca illede global.asa kullanmanıza gerek yok, global.asa, web sitesi açıldığında ilk değerlerin yüklenmesini garanti edebilir. ancak eklediğim örnekte global.asa'yı silsenizde sorun çıkarmadan çalışıyor olacaktır.

test.ASP?lang=tr
test.ASP?lang=en

şeklinde çağırarak test edebilirsiniz.
aradan uzun bir zaman geçtikten sonra değerlendirme yazmam konusunda özür dielrim, yoğun günlerden sonra yeniden web işlerinin başına geçebildim.
global.asa'yı açtğımda herşeyi anladım ancak bu tip işlemleri pek bilmedğimden sormak istiyorum mümkünse.

Kod:
Sub LoadXML(langID)
	Set XML = server.CreateObject("Microsoft.XMLDOM")
	success = XML.Load(server.MapPath("/XML/lang_"& langID &".XML"))
	
	If success Then
		Application.Lock
		Application(langID & "XML") = XML.XML
		Application.UnLock
	End If
	Set XML = Nothing
End Sub
burada Application(langID & "XML") = XML.XML kısmını Application(&"lang_"&langID & .XML") = "lang_"&langID&".XML" şeklinde yapmak gerekimoyr mu? Daha açıkçası ben burayı anlamadım )
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 23.09.2008   #14 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,973
re: Çoklu Dil Yapısı

hayır,

XML.Load(server.MapPath("/XML/lang_"& langID &".XML"))

burada o ayarlanıyor zaten.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.09.2008   #15 (permalink)
 
fever's Avatar
 
Üyelik Tarihi: 02.07.2008
Yer: istanbul
Mesaj: 22
re: Çoklu Dil Yapısı

Alıntı:
zubeyrozturk tarafından gönderilen mesaj: Mesajı Görüntüle

Kod:
<%
dil = Request.QueryString("dil")
If dil="" Then
dil="tr"
End If
%>
<% If dil="tr" Then %>
<!--#include file="diller/tr.ASP" -->
<% Elseif dil="en" Then %>
<!--#include file="diller/en.ASP" -->
<% Else %>
<!--#include file="diller/tr.ASP" -->
<% End If %>
Sayfamda da

Kod:
<%=strTitle%>
<%=strWelc%>
Şeklinde kullandığımda sorunsuz bir şekilde çalışır.
Bu şekilde yazdığınızda diğer dillerin include edilmesini engellemiş olmazsınız. "Include" işi script yorumlanmadan önce yapıldığından kullandığınız if(dil==tr) hiç bir işe yaramayacaktır. Sunucu öncelikle include etmiş olduğunuz dosyaları sizin dosyanızın içine katacak sonra da yorumlayıp HTML'i üretecektir.

Evet yüklendikten sonra if'ler devreye girecek ve sistem dilediğiniz doğrultuda çalışacak ama diğer dillerin her istekte yeniden yeniden yüklenmesi niye gereksin ki? Daha farklı çözümlerle sunucuyu daha az yormak ve dahi daha dinamik yapılar elde etmek mümkün olabilir.

Yukarda kurulan XML yapısı da pek hoş olmuş, ilgililerin ellerine sağlık.
__________________
--
mailsakla.com
fever şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.09.2008   #16 (permalink)
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Mesaj: 70
Re: Çoklu Dil Yapısı

@absconder
Tamam şimdi anladım, yani aslında biz sadece Application'a bir ad vermiş oluyoruz değil mi? XML i zaten bahsi geçen yerde load ediyor.

@fever
Burada tartıştığımız kısım sistem yöneticisine daha sonra istediği dili ekleyebilme özelliğinin tanımlanması. Sizin verdiğinzde ise sabit diller var, buna göre if yapıyoruz oluyor. Halbuki yöneticimiz Türkçe yanında bir de Rusça eklerse tercümesini kendisinin yapmasını istemek ve tercüme bitince de bunları RU.XML e yazdırmak. Rusça eklenince de bunu sisteme tanımlatmak.

Zaten sistemi bitirince genel mantığını burada anlatacağım tekrar. Şu anda site üzerine XML verilerini işlemek kaldı sadece. Türkçe sabit dilimiz, sitenin bir yerine yeni bir kelime tanımlamak gerektiğinde db.ye bunu tanımlıyoruz sadece Türkçe kısmına, diğer dillere editörler tercüme ediyor, onlar tercüme edince XML.ler güncelleniyor.
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.09.2008   #17 (permalink)
 
fever's Avatar
 
Üyelik Tarihi: 02.07.2008
Yer: istanbul
Mesaj: 22
Re: Çoklu Dil Yapısı

@darkfaceofmoon
Alıntı:
darkfaceofmoon tarafından gönderilen mesaj: Mesajı Görüntüle
@fever
Burada tartıştığımız kısım sistem yöneticisine daha sonra istediği dili ekleyebilme özelliğinin tanımlanması. Sizin verdiğinzde ise sabit diller var, buna göre if yapıyoruz oluyor. Halbuki yöneticimiz Türkçe yanında bir de Rusça eklerse tercümesini kendisinin yapmasını istemek ve tercüme bitince de bunları RU.XML e yazdırmak. Rusça eklenince de bunu sisteme tanımlatmak.

Sadece daha önce mesaj yazan zubeyr'in yöntemi statik de olsa çalışsa da kullanılan if'in işlevsiz olduğunu belirtmek istedim. If'ler çalışmadan once zaten bütün dosyalar include edilmiş olacak ve if koşulları sadece değerlerin atanması sırasında işe yarayacak.

"Tamam, sorunsuz çalışır fakat her istek için bütün dil dosyaları tekrar tekrar neden yüklensin ki?" demek istemiştim.

Yoksa benimsemiş olduğunuz XML yöntemi oldukça hoş ve olması gereken şekilde zaten.

Kolay gelsin.
__________________
--
mailsakla.com
fever şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 25.09.2008   #18 (permalink)
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Mesaj: 70
Re: Çoklu Dil Yapısı

Küçük bir yanlış anlaşılma oldu sanırm, pardon.
Umarım geliştirdiğimiz yöntem tam yerine oturur da burada anlatırız.

İyi çalışmalar
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 01.10.2008   #19 (permalink)
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Mesaj: 70
Re: Çoklu Dil Yapısı

Merhaba,
@absconder
Değerli arkadaşım gerçekten yardımların sayesinde global.asa üzerinde oynayarak da performansın arttırılabildiğini öğrendim ancak halen tam sonuca ulaşamadım. İnş sonuca ulaştıktan sonra bunu herkesle de paylaşacağım müsadenle fakat bir takım sorunlar yaşamaktayım. Altta kodları verdim; ufak 1-2 tartışma ile sonuçlandırırsak sevinirim...

global.asa
PHP Code:
<script language=vbscript runat=server>

Sub Application_OnStart
    Set dbconn
server.CreateObject("ADODB.Connection")
    
dbconn.Open "Driver={SQL server}; server=sserver.net; Database=DB_123; Uid=kullaniciadi; Pwd=123456;"

    
set ListLangs=dbconn.execute("select LId from Langs order by LId asc")
    do while 
not ListLangs.eof
        LoadXML
(ListLangs("LangID"))
    
ListLangs.movenext:loop
    set ListLangs
=nothing

    dbconn
.close
    set dbconn
=nothing
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
End Sub

Sub Session_OnEnd
End Sub

Sub LoadXML
(langID)
    
Set XML server.CreateObject("Microsoft.XMLDOM")
    
success XML.Load(server.MapPath("/XML/lang_"langID &".XML"))
    
    If 
success Then
        Application
.Lock
        Application
(langID "XML") = XML.XML
        Application
.UnLock
    End 
If
    
Set XML Nothing
End Sub

</script>
 
BU XML.LERİ SEÇMEK İÇİN KULLANDIĞIM VE HER SAYFANIN BAŞINDA YER ALAN FONKSİYON
PHP Code:
C_DefaultLangcookie ile gelen dil değeri yani -trgibi
If Application(C_DefaultLang "XML") = "" then
    LoadXML
(C_DefaultLang)
End If

Sub LoadXML(langID)
    
Set XML server.CreateObject("Microsoft.XMLDOM")
    
success XML.Load(server.MapPath("/XML/lang_"langID &".XML"))
    
    
response.Write success
    
    
If success Then
        Application
.Lock
        Application
(langID "XML") = XML.XML
        Application
.UnLock
    End 
If
    
Set XML Nothing
End Sub

Function Resource(LangIDnode)
    
returnVal ""
    
Set XML server.CreateObject("Microsoft.XMLDOM")
    
success XML.LoadXML(Application(LangID "XML"))

    If 
success Then
        Set root 
XML.documentElement
        
If root.hasChildNodes() Then
        Set rec 
root.selectSingleNode("//lang//"node &"")
            If 
Len(rec.text) > 0 Then
                returnVal
rec.text
            
Else
                
returnVal "No!"
            
End If
        
End If
    Else
        
Response.Write("Err!")
    
End If
    
Set XML Nothing
    Resource 
returnVal
End 
Function 
BU DA LANG_TR.XML DOSYASI...
Kod:
<?XML version="1.0" encoding="windows-1254" ?>
<root>
	<lang>
		<1_gonder>G&ouml;nder</1_gonder>
		<1_anasayfa>Anasayfa</1_anasayfa>
		<1_rumuz>Rumuz</1_rumuz>
		<1_sifre>Şifre</1_sifre>
		<1_kapat>Kapat</1_kapat>
		<1_geri>Geri</1_geri>
		<1_ileri>İleri</1_ileri>
	</lang>
</root>
BU SA SAYFA ÇIKTILARI İÇİN...
Kod:
<%=C_DefaultLang%>
<br />
<%=Resource(C_DefaultLang,"1_rumuz")%>
<br />
<%=LoadXML(C_DefaultLang)%>
BU DA HTML ÇIKTISI

HTML Code:
tr
Err! 
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 01.10.2008   #20 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,973
Re: Çoklu Dil Yapısı

Kod:
select LId from
ile select edildiğinde

Kod:
ListLangs("LangID")
değil de

Kod:
ListLangs("LId")
şeklinde olması gerekmez mi?

bir de bu id numeric değer ("1", "2") değil mi? yoksa "tr", "eng" gibi alfanumeric mi? XML'ler buna uygun mu?

tahminim, 1,2 gibi çağırıyorsunuz, sonra da sayfa içerisinde, "tr" ile çağırdığınızda hataya düşüyor.

Kod:
<%=C_DefaultLang%>
<br />
<%=LoadXML(C_DefaultLang)%>
<br />
<%=Resource(C_DefaultLang,"1_rumuz")%>
deneyin. aynı tipte çağırdığınızı ve çağırmadan önce yüklendiğini garanti etmiş olursunuz.

hata almazsanız, global.asa çerisinde numeric id ("1, "2") yerine alfanumeric id ("tr", "en") ile yükleme yapacak şekilde düzenleyin.

hata alırsanız, XML dizininde lang_tr.XML dosyasının olduğunu kontrol edin. varsa, soruna kaldığınız yerden tartışmaya devam edebiliriz.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

asp , dil , dil yapisi


 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum