2016-04-06 13 views
0

Ich habe eine Website mit mehrsprachigen Funktionen. Ich benutze immer noch Cookies, um die Sprache zu erkennen. Wenn der Benutzer zum Beispiel "Englisch" auswählt, dann ändere ich den Cookie-Wert auf "EN" und serviere dem Nutzer eine "englische Seite".Multilanguage-Unterstützung in MVC

Ich möchte dieses Verhalten ändern und die Sprache von URL anstelle von Cookie lesen. So zum Beispiel, wenn die aktuelle URL für Produktseite

ist
www.ezstore.com/product/asus-gtx970 

Ich möchte die URL ändern

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

ich dachte die RouteConfig und lesen Sie die URL Ändern der Sprache Wert zu erhalten. Ist das möglich?

Mein aktueller RouteConfig ist:

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

Ich würde den HTTP_ACCEPT_LANGUAGE Header vom Browser gesendet werden. Das ist die Sprache, die der Benutzer bevorzugt. –

+0

Schauen Sie sich [Artikel] (http://www.wiliam.com.au/wiliam-blog/web-design-sydney-using-mvc-routing-for-seo-friendly-urls-on-multilingual-sites) an . –

+0

Ich denke, das ist die Antwort, die Sie brauchen [http://stackoverflow.com/questions/1712167/asp-net-mvc-localisation-route#answer-1712320](http://stackoverflow.com/questions/1712167/asp -net-mvc-localization-route # answer-1712320) –

Antwort

1

Sie Ihre individuelle Route wie abgebildet ändern können: -

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

Hier langcode eine Route Parameter für Sprache sein wird.

und dann den langcode Routenparameter auf Controller-Aktion erhalten wie folgt: -

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

Eigentlich habe ich 'MapRoute' in meiner' RouteConfig', heißt das, dass ich '' langcode} '' in 'MapRoute' hinzufügen muss? Oder gibt es eine effizientere Lösung? – warheat1990

+0

@ warheat1990 ... Ja..auf welchen Seiten Sie auch immer 'langcode' in der URL möchten, müssen Sie ihre Routen ändern, wie in Antwort gezeigt. –