asp.net-core – ASP .NET Core 1.0 RTM本地化无法正常工作
|
我一直在努力为 microsofts documentation之后的asp .NET Core 1.0 RTM Web应用程序实现本地化,但我无法让它工作.我遇到的问题是,无论我如何尝试设置文化,它总是显示英语资源文件中的字符串. 如果有人有5分钟的时间,我会非常感激你的意见. 这是我关于本地化的Startup.cs内容: public void ConfigureServices(IServiceCollection services)
{
...
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder)
.AddDataAnnotationsLocalization();
services.AddScoped<LocalizationFilter>();
services.AddLocalization(options => options.ResourcesPath = "Resources");
var supportedCultures = new List<CultureInfo>{
new CultureInfo("en-US"),new CultureInfo("sl-SI"),new CultureInfo("de-DE"),new CultureInfo("hr-HR")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US"),new CultureInfo("en-US"));
});
}
public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
{
...
var supportedCultures = new List<CultureInfo>{
new CultureInfo("en-US"),new CultureInfo("hr-HR")
};
var requestLocalizationOptions = new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,SupportedUICultures = supportedCultures,DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US"),new CultureInfo("en-US"))
};
app.UseRequestLocalization(requestLocalizationOptions);
}
这就是我在ActionFilter中改变OnActionExecuting内部文化的方式 actionContext.HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) });
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
我也试过在我的控制器上做这个没有运气. 然后在我的视图中我使用@inject IViewLocalizer Localizer来显示带有@Localizer [“Name”]的本地化字符串. 我的resoucres位于Resources / Views / ControllerName文件夹中,如下所示: > Resources / Views / ControllerName / ViewName.en.resx 无论我如何尝试改变文化,显示的字符串始终来自.en资源文件. 我真的不知道我错过了什么.有什么想法吗? 解决方法您可能会遇到以下情况:https://github.com/aspnet/Mvc/issues/4692 主要看一下评论:https://github.com/aspnet/Mvc/issues/4692#issuecomment-223671462 简介:您可以在MVC中创建资源过滤器以解决此问题: public class CultureSettingResourceFilter : IResourceFilter,IOrderedFilter
{
public int Order
{
get
{
return int.MinValue;
}
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
// By this time the response would already have been started,so do not try to modify the response
}
public void OnResourceExecuting(ResourceExecutingContext context)
{
var culture = httpContext.GetRouteValue("your-culture-key-name")?.ToString();
// set your culture here
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
}
}
services.AddMvc(o =>
{
o.Filters.Add(new CultureSettingResourceFilter());
}); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在经典ASP中对集合进行排序
- asp.net-mvc – 使用带有剃刀的html选择框
- asp.net-mvc-4 – 登录后WebSecurity.CurrentUserName和Use
- asp.net – 从通用列表中将ListItem添加到DropDownList
- asp.net-mvc – ASP.NET MVC Route,在控制器之前具有值,没有
- asp.net – 处理原始HTTP请求内容
- asp.net – 如何在Web应用程序中对PDF文档进行数字签名?
- asp.net – 在非开发环境中省略从Web API方法返回的错误消息
- asp.net – HTTP错误404.4 – 未找到您要查找的资源没有与之
- asp.net – IIS – 无法通过ip地址而不是本地主机访问页面
