Skip to content

Commit 86259b7

Browse files
committed
Support explicit culture addition in outbound routing
1 parent d13bc23 commit 86259b7

4 files changed

Lines changed: 29 additions & 3 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ protected override void InitializeCulture() {
3535
// Classical way
3636
RouteTable.Routes.GetVirtualPath(null, "OfferDetails", new RouteValueDictionary() {{"title", "chef-de-projet"}, {"id", 12}}).VirtualPath
3737

38+
// With explicit culture
39+
RouteTable.Routes.GetVirtualPath(null, "OfferDetails", new RouteValueDictionary() {{"title", "chef-de-projet"}, {"id", 12}, {"id", "fr-FR"}).VirtualPath
40+
3841
// Through RouteUrlExpressionBuilder
3942
<asp:HyperLink runat="server" NavigateUrl="<%$RouteUrl:title=chef-de-projet,id=12,routename=OfferDetails%>" Text="Details" />
4043
```

RouteLocalization.WebForms.Tests/LocalizationRouteCollectionTest.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public void LocalizationRouteCollection_RemoveTranslation_NonExistingCulture_Thr
118118
}
119119

120120
[Test]
121-
public void LocalizationRouteCollection_OutboundRouteTest()
121+
public void LocalizationRouteCollection_OutboundRoute_CultureInThreadTest()
122122
{
123123
var localizedRoute = CreateLocalizedRoute();
124124
localizedRoute.AddTranslation(LocalizationRouteCollection.NeutralCulture, "neutral/neutral-{title}_{id}");
@@ -145,6 +145,28 @@ public void LocalizationRouteCollection_OutboundRouteTest()
145145
tester.WithRouteInfo("OfferDetails", new { title = "project-manager", id = 12 })
146146
.ShouldGenerateUrl("/neutral/neutral-project-manager_12");
147147
}
148+
149+
}
150+
151+
[Test]
152+
public void LocalizationRouteCollection_OutboundRoute_CultureInRouteValuesTest()
153+
{
154+
var localizedRoute = CreateLocalizedRoute();
155+
localizedRoute.AddTranslation(LocalizationRouteCollection.NeutralCulture, "neutral/neutral-{title}_{id}");
156+
localizedRoute.AddTranslation("en-US", "job/job-{title}_{id}");
157+
localizedRoute.AddTranslation("fr-FR", "offre-de-emploi/offre-{title}_{id}");
158+
159+
var routes = new RouteCollection();
160+
routes.Add("OfferDetails", localizedRoute);
161+
162+
var tester = new RouteTester(routes);
163+
164+
tester.WithRouteInfo("OfferDetails", new { title = "project-manager", id = 12, culture = "en-US" })
165+
.ShouldGenerateUrl("/job/job-project-manager_12");
166+
tester.WithRouteInfo("OfferDetails", new { title = "chef-de-projet", id = 12, culture = "fr-FR" })
167+
.ShouldGenerateUrl("/offre-de-emploi/offre-chef-de-projet_12");
168+
tester.WithRouteInfo("OfferDetails", new { title = "project-manager", id = 12, culture = "nl-NL" })
169+
.ShouldGenerateUrl("/neutral/neutral-project-manager_12");
148170
}
149171

150172
[Test]

RouteLocalization.WebForms/LocalizationRouteCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public override VirtualPathData GetVirtualPath(RequestContext requestContext, Ro
198198
throw new ArgumentNullException("values");
199199
}
200200

201-
string currentCulture = Thread.CurrentThread.CurrentUICulture.Name;
201+
string currentCulture = values["culture"] as string ?? Thread.CurrentThread.CurrentUICulture.Name;
202202
var localizationRoute = this.GetLocalizedOrDefaultRoute(currentCulture);
203203
if (localizationRoute == null)
204204
{

RouteLocalization.WebForms/RouteLocalization.WebForms.nuspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
<projectUrl>https://github.com/ogaudefroy/RouteLocalization.WebForms</projectUrl>
99
<requireLicenseAcceptance>false</requireLicenseAcceptance>
1010
<description>ASP.Net localized routing for WebForms routes</description>
11-
<releaseNotes></releaseNotes>
11+
<releaseNotes>-v0.1.0: Initial Release
12+
-v0.1.1: Support explicit culture addition in outbound routing</releaseNotes>
1213
<copyright>$copyright$</copyright>
1314
</metadata>
1415
</package>

0 commit comments

Comments
 (0)