2016-04-06 21 views
0

Çoklu dil özellikli bir sitem var. Ben hala dili bulmak için tanımlama bilgisi kullanıyorum, örneğin kullanıcı “English” seçtiyse, çerez değerini “EN” olarak değiştireceğim ve kullanıcıya “ingilizce sayfa” sunacağım.MVC'de çoklu dil desteği

Bu davranışı değiştirmek ve dili çerez yerine URL'den okumak istiyorum. Örneğin ürün sayfası için geçerli url

www.ezstore.com/product/asus-gtx970 

Yani eğer ben RouteConfig değişen düşünüyordum

www.ezstore.com/en/product/asus-gtx970 for english 
www.ezstore.com/fr/product/asus-gtx970 for french 

url değiştirmek ve dil değeri elde etmek URL'yi okumak istiyorum. Mümkün mü?

Benim şimdiki RouteConfig geçerli:

routes.MapRoute("Product", "Product/{id}", new { 
    controller = "Product", 
    action = "Index", 
    id = UrlParameter.Optional 
}); 

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

Ben tarayıcı tarafından gönderilen HTTP_ACCEPT_LANGUAGE başlığının kullanılmasını ele alacak. Bu kullanıcının tercih ettiği dil. –

+0

Bakın [bu] (http://www.wiliam.com.au/wiliam-blog/web-design-sydney-using-mvc-routing-for-seo-friendly-urls-on-multilingual-sites) makalesi . –

+0

Bence ihtiyacın olan cevap budur [http://stackoverflow.com/questions/1712167/asp-net-mvc-localization-route#answer-1712320](http://stackoverflow.com/questions/1712167/asp -net-mvc-yerelleştirme-rota # answer-1712320) –

cevap

1

Sen gösterildiği gibi özel rotayı değiştirebilirsiniz: -

routes.MapRoute("Product", "{langcode}/Product/{id}", new { 
    controller = "Product", 
    action = "Index", 
    id = UrlParameter.Optional 
}); 

İşte langcode dil için bir rota parametre olacaktır.

ve gösterildiği gibi daha sonra kontrolör eylemi langcode rota parametresini olsun: -

public ActionResult Index(string langcode) 
{....} 
+0

Aslında "MapRoute" özelliğini "RouteConfig" birimimde kullanıyorum. Bu, her "MapRoute" içinde "langcode" kelimesini eklemem gerektiği anlamına mı geliyor? Yoksa daha verimli bir çözüm var mı? – warheat1990

+0

@ warheat1990 ... Evet .. hangi sayfalarda istediğiniz 'langcode' url'de cevap olarak gösterildiği gibi rotalarını değiştirmek zorundasınız. –

İlgili konular