【发布时间】:2020-01-28 01:47:13
【问题描述】:
我一直在为 Core 3.1 本地化而苦苦挣扎,但我现在终于用他们的新行为做到了(令人惊讶的是,他们的文档没有针对新的变化进行更新)。
话虽如此,我似乎找不到一种基于 URL 制作文化的好方法,例如:https://localhost/en/area?/controller/action
注意:我几天前找到了一个解决方案,但它不适用于身份(身份对我的工作至关重要)
我需要你的帮助。
当前设置:-
配置服务
services.AddLocalization();
services.AddMvc()
.AddMvcLocalization()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedResource));
});
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("ar")
};
options.DefaultRequestCulture = new RequestCulture("en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
配置
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("ar"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});
HomeController 将用户选择保存在 cookie 中
[HttpPost]
public IActionResult SetLanguage(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}
【问题讨论】:
标签: asp.net .net asp.net-mvc asp.net-core asp.net-core-3.1