Quantcast
Channel: MVC Çoklu Dil Desteği
Viewing all articles
Browse latest Browse all 12

MVC Çoklu Dil Desteği

$
0
0


Merahabar;
MVC ile çok dil desteiği yapmanın bir kaç yolu var ancak ben URL Routing ile yapmak istiyorum. Bunun için baya bi araştırdım bir şeyler buldum ancak sorunumu çözemedim. Yaptıklarım;

public class CultureConstraint : IRouteConstraint
    {
        private string[] _values;
        public CultureConstraint(params string[] values)
        {
            this._values = values;
        }

        public bool Match(HttpContextBase httpContext, Route route, string parameterName,
                            RouteValueDictionary values, RouteDirection routeDirection)
        {
            string value = values[parameterName].ToString();
            return _values.Contains(value);

        }
    }
    public enum Culture
    {
        tr = 1,
        en = 2
    }

 public class MultiCultureMvcRouteHandler : MvcRouteHandler
    {
        protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            var culture = requestContext.RouteData.Values["culture"].ToString();
            var ci = new CultureInfo(culture);
            Thread.CurrentThread.CurrentUICulture = ci;
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);
            return base.GetHttpHandler(requestContext);
        }
    }

Sitenin Layout'un da bulanan kodlar.

@Html.ActionLink("eng", "ChangeCulture", "AnaSayfa", new { lang = (int)Test.Models.Culture.en, returnUrl = this.Request.RawUrl }, new { @class = "culture-link" }) @Html.ActionLink("tr", "ChangeCulture", "AnaSayfa", new { lang = (int)Test.Models.Culture.tr, returnUrl = this.Request.RawUrl }, new { @class = "culture-link" })

public class Layout { [Display(ResourceType = typeof(lang), Name = "Menu_AnaSayfa")] public string AnaSayfa { get; set; } }


<a class="active " href="#">@Html.LabelFor(c=>c.AnaSayfa)</a>

RouteConfig

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "AnaSayfa", action = "Index", id = UrlParameter.Optional }
            );

foreach (Route r in routes) { if (!(r.RouteHandler is SingleCultureMvcRouteHandler)) { r.RouteHandler = new MultiCultureMvcRouteHandler(); r.Url = "{culture}/" + r.Url; if (r.Defaults == null) { r.Defaults = new RouteValueDictionary(); } r.Defaults.Add("culture", Culture.tr.ToString()); if (r.Constraints == null) { r.Constraints = new RouteValueDictionary(); } r.Constraints.Add("culture", new CultureConstraint(Culture.en.ToString(),Culture.tr.ToString())); } }

lang.resx

 public static string Menu_AnaSayfa {
            get {
                return ResourceManager.GetString("Menu_AnaSayfa", resourceCulture);
            }
        }
Projeyi derlediğimde RessourceCulture parametresi boş geliyor sorunu çözemedim Url routing yöntemi ile anlatan bir kaynak varsa paylaşırsanız memnun olurum.




Viewing all articles
Browse latest Browse all 12

Trending Articles


Hamile kalmak için


Şekilli süslü hazır floodlar


Havas-ul Kur-an Kenzul Havas PDF


Hamile kalmak için


EL-AZÎM Esması ve Sırları


En etkili korumlardan birisi


Enerji Beden ve İki Uygulama-1


Foxtrot Six Türkçe Dublaj izle (2020)


SCCM 2012 Client Installation issue


Hakan Sabancı 4 ayrı adrese Sevgililer Günü buketi gönderdi!



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>