kazimyaver | Tüm yazılar etiketlendi 'mvc multi language'

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ı