December 2006 - Posts

MultiLanguage Treeview

http://forum.mutasyon.net te sorulan bir soru üzerine dil desteği olan bir TreeView oluşturulması üzerine biraz araştırma yaptım. Güzel bir Localization örneği oldu :
 
  1. Önce sitemap dosyalarımızı oluşturalım.

    Root'a kaydediyoruz..

    Web.tr-TR.sitemap

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
       <siteMapNode url="Default.aspx" title="Default"  description="">
           <siteMapNode url="Makaleler" title="Articles"  description="" />
           <siteMapNode url="Sorular" title="Questions"  description="" />
       </siteMapNode>
    </siteMap>

    Web.en-US.sitemap

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
       <siteMapNode url="Default.aspx" title="Ana Sayfa"  description="">
           <siteMapNode url="Makaleler" title="Makaleler.aspx"  description="" />
           <siteMapNode url="Sorular" title="Sorular.aspx"  description="" />
       </siteMapNode>
    </siteMap>

  2. Web.Config te bir kullanacağımız sitemap'leri tanımlıyoruz.

    <system.web> içine :
    <siteMap defaultProvider="SiteMap_tr-TR" enabled="true">
      <providers>
       <clear/>
       <add name="SiteMap_tr-TR"
         type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         siteMapFile="~/Web.tr-TR.sitemap"
        />
       <add name="SiteMap_en-US"
         type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         siteMapFile="~/Web.en-US.sitemap"
        />
      </providers>
     </siteMap>
  3. ASPX dosyamızın HTML kısmına TreeView ve SiteMapDataSource ekliyoruz :

    <asp:TreeView runat="server" ID="tvMenu" DataSourceID="smds"></asp:TreeView>
    <asp:SiteMapDataSource runat="server" id="smds" />
  4. ASPX dosyamızın çağırmak istediğimiz Web.sitemap 'in Provider'ını bildiriyoruz.

    Türkçe için :


    smds.SiteMapProvider = "SiteMap_tr-TR";

    İngilizce için

    smds.SiteMapProvider = "SiteMap_en-US";

Ben bunları Page_Load'a yazdım.

Dilerseniz bir DropDownList ekle SelectedIndexChange'ine ekleyin.

Culture'ı session'da tutup gerektiğinde çağır yada değiştirin.

Gerisi size kalmış.

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