【发布时间】:2019-05-16 06:01:21
【问题描述】:
我正在尝试在 .Netcore 中实现本地化,但我被困在一件事上,我将如何在 Url 中展示当前的文化。我已经检查并尝试了很多东西,但我无法让它工作。我将展示我已实现的内容。
在我的启动ConfigureServices下:
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("de"),
new CultureInfo("en")
};
options.DefaultRequestCulture = new RequestCulture(culture: "de", uiCulture: "de");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
启动配置:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
var culture = locOptions.Value.DefaultRequestCulture.Culture;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseSession();
//configuring mvc routes...
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
routes.MapRoute(
name: "default",
template: "{culture}/{controller}/{action}/{id?}",
defaults: new { culture = culture, controller = "Home", action = "Index" });
});
}
我已经创建了一个局部视图,并且像这种文化正在成功地改变文化:-
[HttpPost]
public IActionResult ChangeLanguage(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}
现在我想在像 www.test.com/en/home/view 这样的 url 中展示我当前的文化
我创建了一条路线并设置了文化,但即使我更改了文化,它也只采用默认文化。
另外请告诉我这是实现本地化的正确方法,因为我对这个话题太困惑了。
编辑:- 当我更改应用程序的文化时,我只需要更改我在 url 中的文化。
【问题讨论】:
-
你试过
CultureInfo.CurrentCulture吗? -
@JagjitSingh 我在哪里可以试试这个?
标签: c# asp.net-core .net-core asp.net-core-mvc