kazimyaver | Tüm yazılar etiketlendi 'asp.net mvc çoklu dil desteği'

ASP.NET MVC Çoklu Dil Desteği / Multi Language

Merhaba, ASP.NET MVC uygulamamızda çoklu dil desteği çalışmasını hızlı bir şekilde gerçekleştirelim;

Öncelikle yeni bir proje oluşturuyoruz oluşturduğumuz projenin menü alanını dile göre şekillendireceğiz. 

Solution Explorer'a sağ tıklayarak yeni bir klasör ekleyelim Resources isminde. Oluşturduğumuz klasöre sağ tıklayarak Add > New Item > General sekmesi altından Resource File ekliyoruz istediğiniz ismi verebilirsiniz ben Home ismini kullandım. 


Name kısmına değişken isimlerimizi belirliyoruz. Value kısmına da bu alanların değerlerini giriyoruz. Access Modifier : seçeneğinden Public seçili olması gerekiyor.

Daha sonra Home.resx dosyasına sağ tıklayarak copy - paste yapıyoruz. İsmini değiştirerek Home.tr.resx yapıyoruz. İçinde ki Value alanlarını Türkçe'ye çeviriyoruz.

Projemizde View > Shared klasörü altından _Layout.cshtml'i açarak. Menü alanında bulunan;

@Html.ActionLink("Home""Index""Home")

Şeklinde olan kısımdan linkText alanına Resources'dan gelen değerimizi yazacağız.

@Html.ActionLink(MultiLanguage.Resources.Home.Home, "Index""Home")

Şeklinde olacak. Tüm değişiklik gösterecek alanları da ayarladıktan sonra yeni bir Language adında Controller eklememiz gerekiyor. 

Yeni bir action ekliyoruz şu şekilde olacak;

public ActionResult Change(String languageSelect)
{
    if (languageSelect != null)
    {
         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageSelect);
         Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageSelect);
    }

    HttpCookie cookie = new HttpCookie("language");
    cookie.Value = languageSelect;
    Response.Cookies.Add(cookie);

    return View("Index");
}

Global.asax dosyasına girerek Application_BeginRequest'i düzenliyoruz. Eğer yoksa baştan oluşturabilirsiniz.

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"];
    if (cookie != null && cookie.Value != null)
    {
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
    }
    else
    {
       System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
       System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
    }
}

Global.asax dosyasına girerek Application_BeginRequest'i düzenliyoruz. Eğer yoksa baştan oluşturabilirsiniz.

Derleyip çalıştırdığımız zaman dil seçimine göre sayfa içerisinde ki textlerin değiştiğini göreceksiniz. Umarım yararlı olur kaynak kodları aşağıda paylaşıyorum. Bir sonra ki yazıda gör��şmek üzere.

Kaynak Kodları