Localization for ASP.NET

by Volem January 07, 2011 10:42

ASP.NET'te coklu dil destegi vermek icin size kod tekrarini onleyecek bir yapidan bahsetmek istiyorum. Bildiginiz gibi resource dosyalarini kullanarak asp.net icin coklu dil destegini saglayabiliyorsunuz. Yapmaniz gereken uygun isimde resx dosyalarini Global Resources ya da Local Resources klasorleri altina eklemek ardindan da secilen dil icin sayfanin Culture ve UICulture ozelliklerini ayarlamak. Bunun icin benim kullandigim(yazdigim) bir LanguageManager kutuphanesinden bahsedecegim. Yaptigi is basit olarak verilen sayfanin culture ozelliklerini ayarlamak. Ornekten de goreceginiz gibi bir adet siniftan olusuyor.. Kodu genel olarak anlatmayacagim, basit bir yapi var gorulecegi uzere.. LanguageManager'in dil destegi icin kullandigi yapi dil bilgisini session'da tutmasi.. Normalde dil enumeration bilgisi bu class icinde yer almamali ancak kodun calistirilabilir bir durumda olmasi icin bu sinifin icerisine ekledim. Dikkat edilirse ApplyLanguage metodu virtual bir metod ve eger isterseniz bu sinifi inherit ederek dili ister veritabanindan isterseniz cookieden ya da istediginiz herhangi bir servisten okuyacak hale getirebilirsiniz. Bu amacla dispose metodu da virtual olarak set edilmistir ancak Session info icin dispose gerekmiyor o yuzden icerigi bos birakildi ancak ornegin dil bilgisini veritabanindan okursaniz dispose da veritabani baglantisini kapatma islemini yapabilirsiniz..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;
using System.Globalization;

namespace Acquistor.Managers
{
    public class LanguageManager : IDisposable
    {
        private System.Web.UI.Page Page;

        public enum Language
        {
            TR,
            EN
        }

        public LanguageManager(System.Web.UI.Page Page)
        {
            this.Page = Page;
        }

        public virtual void ApplyLanguage()
        {
            if (Page.Session["Language"] == null)
            {
                Page.Session["Language"] = Language.TR.ToString();
            }
            switch (Page.Session["Language"].ToString())
            {
                case "TR":
                    SetPageCulture("tr", "tr-TR");
                    break;
                case "EN":
                    SetPageCulture("en", "en-US");
                    break;
                default:
                    SetPageCulture("tr", "tr-TR");
                    break;
            }
        }

        private void SetPageCulture(string uiCulture, string culture)
        {
            Page.UICulture = uiCulture;
            Page.Culture = culture;
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(uiCulture);
        }

        #region IDisposable Members

        public virtual void Dispose()
        {

        }

        #endregion
    }
}
Gelelim bu kodu nasil kullanacaksiniz.. Tabii ki dilini guncellemek istediginiz sayfanin InitializeCulture metodunu override ederek, ama benim tavsiyem genelde tum sayfalarinizda bunu yapmak isteyeceginizi dusundugumden bu isi tanimlayacaginiz base page icerisinde yapmaniz ve sayfalarinizi bu base pageden inherit etmeniz. Boylece tek bir yerden butun sayfalariniza coklu dil destegini vermis olursunuz. Hemen nasil kullanabileceginizi de ufak bir kod ile gostermeye calisayim...
protected override void InitializeCulture()
{
    using (LanguageManager lm = new LanguageManager(Page))
    {
        lm.ApplyLanguage();
    }
    base.InitializeCulture();
}
Umarim isinize yarar.. Herkese kolay gelsin.

Tags: , ,

C# | Web

Comments

4/8/2012 1:19:35 PM #

Topics regarding cyber bullying, stalking along with other sorts of harassment are generally under-reported in the media channels.  It sure could be beneficial if a lot more people carried on with these sorts of discussions.  It isn't going to make any difference if it is a celebrity, simply a teen, or a co-worker.

Monitor Mobile United States

4/8/2012 6:30:07 PM #

It seems logical that FBI agents, presumably non-Muslim, who are invited to attend mosque services would be attentive to utterances that suggest an inclination to jihad; and having heard them would surely be expected to record what was heard and seen for future reference. To expect otherwise would seem to be illogical.

Web Filter United States

4/8/2012 6:32:42 PM #

Once spybubble is purchased for how long can it be used? Is there a monthly fee to use this android spy software?

Reverse-Look-Up United States

4/8/2012 10:04:12 PM #

good site!! You should start many more. I love all the info offered. I will stay tuned.

Millard Karlsson United States

4/14/2012 8:02:50 PM #

Too bad my javascripting skills equal "zero", otherwise I could remember such a short code.

Natosha Ingemi United States

Add comment




  Country flag
Click to change captcha
biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen | Modified by Volem

RSS
View Volkan Nazmi Metin's profile on LinkedIn

RevolverMap

Son Eklenen Yazılar

Yazar Hakkında

Sosyal, evli, çocuklu, karısını ve kızını çok seven, gezmeyi seven, spor yapmak isteyen bir mühendis