Laden...

asp.net mvc2: lokalisierte Routen

Erstellt von M@TUK vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.306 Views
M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 13 Jahren
asp.net mvc2: lokalisierte Routen

Hi,

ich würd gerne urls mit der Form

{lang}/{controller}/
{lang}/{controller}/{id}/

lokalisieren...

Beispiel:

http://www.domain.de/aktuelles/
http://www.domain.de/en/news/

http://www.domain.de/aktuelles/titel-des-eintrags/
http://www.domain.de/en/news/title-of-entry/

Und "aktuelles" bzw. "news" soll hier dann auf den Controller => news geroutet werden.
Und wenn eine 3. Sprache dazukommt soll der übersetzte "wert" ebenfalls
auf news geroutet werden...

Der Wert für die Language ist kein Problem, aber wie könnte das mit dem Controller bzw. auch Actions funktionieren?

16.827 Beiträge seit 2008
vor 13 Jahren

Hallo,

da gibt's verschiedene Möglichkeiten.

Ich nutze ausschließlich diese Variante:
Localization in ASP.NET MVC – 3 Days Investigation, 1 Day Job, da hier das Abfragen innerhalb der Controllers weg fällt und man einiges an Arbeit spar.

Wenn Du ein wenig googlest wirst Du aber wie gesagt verschiedene Ansätze sehen.
Such Dir den aus, der zu Deiner Anwendung passt.

M
M@TUK Themenstarter:in
402 Beiträge seit 2005
vor 13 Jahren

Hi,

danke für den Link...

Ich hab auch schon mehrere "Varianten" durchgelesen.

Es ist aber keine zu finden wo der Controller bzw. Action-"Name" lokalisiert wird.

Der Language-Code vorne weg alleine reicht mir nicht...

In deinem Beispiel ist das auch nicht so...

http://www.foobar.com/fr/account.....

es müsste aber
http://www.foobar.com/fr/compte
oder
http://www.foobar.com/Konto....
oder
http://www.foobar.com/en/account
heissen..

16.827 Beiträge seit 2008
vor 13 Jahren

Das geht dann nur über die RouteCollection.


routes.MapRoute("ACCOUNT_EN", "en/Account/{action}", new { controller="Account", action="Index"} );

routes.MapRoute("ACCOUNT_FR", "fr/Compte/{action}", new { controller="Account", action="Index"} );

routes.MapRoute("ACCOUNT_DE", "de/Konto/{action}", new { controller="Account", action="Index"} );

Die RouteCollection im Global.asax.cs File möchte meines Wissens keine Konstante, sodass Du hier ein Mapping vornehmen kannst, sprich eine Übersetzung.