SORU
13 EKİM 2009, Salı


ASP.NET MVC uygulaması Kültür

Ne ASP.NET MVC uygulaması UI Kültürü/Kültür ayarlamak için en iyi yerdir

Şu anda bu gibi görünüyor CultureController Dersim var:

public class CultureController : Controller
    {
        public ActionResult SetSpanishCulture()
        {
            HttpContext.Session["culture"] = "es-ES";
            return RedirectToAction("Index", "Home");
        }

        public ActionResult SetFrenchCulture()
        {
            HttpContext.Session["culture"] = "fr-FR";
            return RedirectToAction("Index", "Home");
        }
    }

ve bu gibi bir link: ana sayfada her dil için bir köprü

<li><%= Html.ActionLink("French", "SetFrenchCulture", "Culture")%></li>
<li><%= Html.ActionLink("Spanish", "SetSpanishCulture", "Culture")%></li>

ama bunu yapmak için daha uygun bir yol olduğunu düşünüyorum ki gayet iyi çalışıyor.

Kültür aşağıdaki ActionFilter kullanarak okuyorum http://www.iansuttle.com/blog/post/ASPNET-MVC-Action-Filter-for-Localized-Sites.aspx. MVC bir çaylak biraz da bu yüzden doğru yerde bu ayarı ben emin değilim ben. Web de yapmak istemiyorum.config seviyede, bir kullanıcı tercihine göre olmalı. Ben de kendi http başlıklarını tarayıcı ayarlarını kültür almak için kontrol etmek istemiyorum.

Düzenleme:

Sadece netleştirmek için - oturum kullanmak için olup olmadığını anlamaya çalışıyorum. Bit ile mutluyum. Ya ben denemek ise en iyisidir bunu bir Kültür denetleyicisi olan bir aksiyon yöntemi için her Kültüre olmalıdır, yoksa daha iyi bir yerde MVC pipeline?

CEVAP
13 EKİM 2009, Salı


localization method bunu kullanıyorum ve eklenen bir kullanıcı example.com/xx-xx/ ziyaret zaman kültür ve dil ayarlar rota parametre

Örnek:

routes.MapRoute("DefaultLocalized",
            "{language}-{culture}/{controller}/{action}/{id}",
            new
            {
                controller = "Home",
                action = "Index",
                id = "",
                language = "nl",
                culture = "NL"
            });

Dil ayarı/: gerçek kültür yapan bir filtre var

using System.Globalization;
using System.Threading;
using System.Web.Mvc;

public class InternationalizationAttribute : ActionFilterAttribute {

    public override void OnActionExecuting(ActionExecutingContext filterContext) {

        string language = (string)filterContext.RouteData.Values["language"] ?? "nl";
        string culture = (string)filterContext.RouteData.Values["culture"] ?? "NL";

        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", language, culture));

    }
}

İçin Uluslararası özniteliği sadece sınıf eklemek etkinleştirmek için:

[Internationalization]
public class HomeController : Controller {
...

Şimdi bir ziyaretçi http://example.com/de-DE/Home/Index gittiği zaman Alman site görüntülenir.

Bu cevap doğru yönde işaret umuyoruz.

Ben de here bulabileceğiniz 5 örnek küçük bir MVC proje yaptı

Sadece gitmek için http://{yourhost}:{port}/TR/home/dizini için bkz: geçerli tarih, İngilizce (ABD), ya da değiştirmek için http://{yourhost}:{port}/de-de/home/dizini için Almanca vesaire.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • Metheud

    Metheud

    9 EYLÜL 2006
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013