我按照Microsoft的博客中所述设置了本地化,但默认语言始终为英语。这就是我的Startup.cs在本地化方面的样子。
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("ar"),
new CultureInfo("en")
};
在ConfigureServices方法中:
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar", "ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
services.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
在配置方法中:
app.UseRequestLocalization(new RequestLocalizationOptions()
{
DefaultRequestCulture = new RequestCulture("ar"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
谢谢:)
答案 0 :(得分:20)
你正在设置&#34;阿拉伯语&#34;如果没有内置提供程序可以确定请求文化,则使用DefaultRequestCulture
但DefaultRequestCulture
。默认提供者是:
QueryStringRequestCultureProvider
CookieRequestCultureProvider
AcceptLanguageHeaderRequestCultureProvider
最有可能的是,文化是根据浏览器发送的Accept-Language HTTP标头确定的。
您必须删除AcceptLanguageHeaderRequestCultureProvider
才能回退到DefaultRequestCulture
。为此,我们可以覆盖RequestCultureProviders
的{{1}}列表,并仅使用其他两个提供商。在RequestLocalizationOptions
:
Startup.cs
并且在public void ConfigureServices(IServiceCollection services)
{
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("ar"),
new CultureInfo("en")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
}
方法中只需在Configure
app.UseRequestLocalization();
答案 1 :(得分:2)
如果您正在使用Ajax调用来设置区域性,并使用Json结果将响应返回给客户端。
您必须在浏览器级别设置与ASP.Net对应的cookie值,如下所示。否则,本地化程序将无法找到具有Cookie值的正确区域性。
var date = new Date();
date.setTime(date.getTime() + (30*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
document.cookie = '.AspNetCore.Culture' + "=c=" + (data.message || "ko-KR") + "|uic=" +(data.message || "ko-KR") + expires + "; path=/";
window.location.reload();
谢谢