July 2006 - Posts

ASP.NET'te Localization & Globalization

0. Giriş
1. Hazırlık
   1.1 Sayfanın Hazırlanması
   1.2 Kaynak dosyaların hazırlanması
   1.3 Sayfada son rötuşlar
2. Sonuç

 

0. Giriş

 

Geliştirdiğimiz web uygulamaları birden fazla dili destekliyorsa ziyaretçilerimizin browser ayarlarına göre onlara kendi dilleri ile hoşgeldin demek hoş olmaz mı ? Misal Google.com’un arabirini girdiğiniz browser ınızın dil ayarlarına göre İngilizce veya Türkçe geliyor. Şimdi bu Lokalizasyon işlemini ASP.NET 2.0 da nasıl yapacağımıza bakacağız.

 

1. Hazırlık

         1.1 Sayfanın Hazırlanması

 

Bunun için aşağıdaki gibi bir form hazırladım.

 

 

Formumuzda 4 adet Label, 4 adet TextBox ve 1 adet Buttın kontrolü ekledik. Kontrollerin isimleri şekilde görüldüğü gibidir.

 

1.2 Kaynak dosyaların hazırlanması

 

Sayfamız ile ilgili dil bilgilerini resx dosyalarında tutacağız. Bunu için projemizde App_LocalResources klasörü ekliyoruz.

 

 

 

Eklemiş olduğumuz App_LocalResources klasörüne yine sağ tıklayıp Add New Item diyerek aşaıdaki şekilde görüldüğü gibi Resource File ekliyoruz. Ancak burada dosya ismi verirken kaynak sağlayacağımız dosya ismi ile aynı olmasına dikkat etmemiz gerekiyor. Örneğin, Default.aspx in kaynak dosyası olarak kullanacağımız dosyanın ismi Default.aspx.resx olmalı.

 

 

Resource dosyamızı oluşturduğumuza göre artık kaynak dosyamızı doldurabiliriz. Name kolonuna kontrol ve özelliklerinin ismini Value kısmına ise bu özelliklere atanacak değerleri yazıyoruz.

 

 

Şimdi de sayfamızın İngilizce versiyonu için gerekli kaynak dosyamızı oluşturalım.

 

App_LocalResource klasörüne yine sağtıklayıp Add New Item i seçelim. Bu sefer dosya ismi verirken kaynak sağlayacağımız dosyanın sonuna dil kodu ekliyoruz.

Örneğin Defaul.aspx isimli dosyamızın İngilizce verilerinin bulunduğu kaynak dosyamızın ismei Default.aspx.en.resx olacaktır.

 

Default.aspx.en.resx dosyamızıda şekilde görüldüğü üzere dolduruyoruz.

 

 

Buraya kadar gerekli kaynak dosyalarımızı oluşturduk. Şimdi Default.aspx isimli sayfamıza dönüp gerekli ayarları yapacağız.

 

1.3 Sayfamızda son rötuşlar

 

Default.aspx dosyamızın HTML kısmında şekilde görüldüğü üzere her kontrole  bir meta bilgisi ekledik.

 

 

 

Sayfamızın Dil ayarlarını browser dan alması için Page deklarasyonuna Culture ve UICulture değerlerini auto atadık.

 

 

2.Sonuç

 

            Browser ayarlarımız TR iken

 

           

 

 

Browser ayarlarımız EN iken

 

Posted by Selçuk Yavuz | with no comments
Filed under:

SQL Server ile Dinamik Sayfalar Üretmek

Günlük olarak gazete sitelerini dolaşırken bir şey dikkatimi çekti. www.milliyet.com.tr sitesinin dosya uzantısı HTML ! Sanıyorum bir yada bir kaç HTML editörü her gün ona haber sayfasını gün be gün oluştuyor. Ne dersiniz ?

Tabii günümüz teknolojisinin bize sunduğu imkanları düşününce pekte olur şey gibi gelmiyor. Peki ama bu HTML sayfaları nasıl oluşturuluyor ? Milliyet.com.tr sitesi mimarlarının uyguladıkları tekniği bilmiyorum ama birazdan bu işi SQL Server’a yaptırmanın yolunu inceleyeğiz.

Peki sunucu taraflı ( server side ) programlama dilleri mevcut ve gayet güzel işimizi görüyorken böyle bir cambazlık yapmamızın sebebi nedir ? Cevap : Performans.

Dinamik Mi ? Statik Mi ?

Dinamik Sayfalar : IIS üzerindeki ASPX uygulamaları istemci tarafından çağrıldığında ilgili sayfa kodları  C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll tarafından makine diline çevirilir ve kodda istenilen işlemleri gerçekleştirdikten sonra kullanıcıya HTML çıktı iletir.  Örneğin : http://www.vatanim.com.tr/root.vatan?exec=haberdetay&Newsid=24983&Categoryid=4

Statik Sayfalar : IIS üzerinde bulunan HTML, TXT, XML gibi uzantıya sahip dosyalar ise herhangi bir derleyici tarafından bir işleme tabi tutulmadan direk kullanıcıya gönderilir. Örneğin : http://www.milliyet.com.tr/2006/01/30/index.html

Şimdi bizde Örnek olarak bizde aşağıdaki tabloda bulunan 4 adet haberi bir HTML sayfada gösterelim

Örnek Tablomuz :

Bu yazının konusunu oluşturan System Stored Procedure’müz ise sp_makewebtask

 sp_makewebtask toplamda 32 adet parametre kabul ederek oldukça geniş bir çalışma alanı sağlıyor. Biz basit olarak  4 parametresini kullanarak ortaya kullanışlı bir sayfa çıkaracağız.

 Ancak SQL Server 2005 te bu System Stored Procedure’ü çalıştırmadan evvel ufak bir ayar yapmamız gerekiyor. SQL Server te güvenlik nedeniyle bu sp_makewebtask nin kapalı geliyor.

 Gerekli izinleri vermek için -> All Programs -> Microsoft.SQL Server 2005 -> Configration Tools -> SQL Server Surface Area Configuration menüsü izlemek gerekiyor. Çıkan pencerede en alttaki Surface Area Configration for Features linkine tıklayıp yeni açılacak olan pencerede  bulunan menüden Web Asistant seçilip Enable Web Asistanst checkbox’ını seçmemiz gerekiyor.

Öncelikle çıktının üretileceği bir Tamplate dosyaya ihtiyacımız var. 

<HTML>
<HEAD>
<TITLE>BenimSitem</TITLE>
</HEAD>
<BODY> 

<h1>BenimSitem</h1>
 
<%begindetail%>
     <h4><%insert_data_here%></title></h4>
     <font face="Verdana" size="1"><%insert_data_here%></font>
     <hr>
<%enddetail%> 

</BODY>
</HTML>

  C:\Inetpub\wwwroot\benimsitem\ Haberler.TPL

Burada sarı ile belirtilen yerler arasında kalan bölge çalıştırılacak SQL ifadesinin döndüreceği satır sayısı kadar yazdırılacak. Turkuaz ile belirtilen bölgeler ise her satır için kolon sırasına göre döşenecek verilerin yazdıralacağı alanları belirtiyor.

Örneğin SELECT Baslik,Metin FROM Haberler şeklindeki bir SQL Sorgusunda <h4> etiketleri arasında Baslik <font> etiketleri arasında ise haber gelecektir.

Artık sp_makewebtask sp mizi kullanabiliriz.

EXECUTE 

sp_makewebtask 
      @templatefile = 'C:\Inetpub\wwwroot\benimsitem\Haberler.TPL',
      @outputfile = 'C:\Inetpub\wwwroot\benimsitem\Haberler.HTML',
      @query = 'SELECT Baslik,Metin FROM Haberler',
      @codepage = 1254
GO

 templatefile : Oluşturulacak HTML belgesinin referans alınacağı tamplate dosyası. 

@outputfile : HTML çıktının oluşturulacağı adres. 

@query : Üretilecek HTML belgesinin içeriğini dolduracak SQL sorgusu. 

@codepage : HTML sayfasının karakter seti. 

Yukarıdaki SQL ifadesini çalıştırdığımızda C:\Inetpub\wwwroot\benimsitem\Haberler.HTML adresinde HTML dosyamızı görmüş olacağız.

Browser pencemize http://localhost/benimsitem/Haberler.HTML adresini yazdığımıda aşağıdaki gibi bir çıktı elde edeceğiz.

Peki tablomuza Haber eklendiğinde, silindiğinde veya değiştirildiğinde ne olacak ?

 Yukarıdaki SQL ifadesini Haberler Tablosu için INSER-UPDATE-DELETE Trigger’ına yerleştirdiğimizde Haber tablomuzda meydana gelecek ufak bir değişiklik sonucu HTML dosyamıza iletilecektir.  

CREATE TRIGGER tr_HaberlerHTM
ON Haberler
FOR INSERT,UPDATE,DELETE
AS
EXECUTE sp_makewebtask 
      @templatefile = 'C:\Inetpub\wwwroot\benimsitem\Haberler.TPL',
      @outputfile = 'C:\Inetpub\wwwroot\benimsitem\Haberler.HTML',
      @query = 'SELECT Baslik,Metin FROM Haberler',
      @codepage = 1254
GO

  
 
  

 

Posted by Selçuk Yavuz | with no comments
Filed under: ,
More Posts