ASP.NET Core请求本地化选项 [英] ASP.NET Core Request Localization Options
问题描述
这是我的自定义请求区域性提供程序,如果url中未指定区域性(例如, http ://sypalo.com/ru 或 http://sypalo.com/en ). 我的想法是使用该语言在用户浏览器中默认显示网站,所以我正在寻找一种方法来确定并返回它,而不是:return Task.FromResult(new ProviderCultureResult("en","en"));
Here is my custom request culture provider which returns "en" as a default culture if no culture specified in url (for example http://sypalo.com/ru or http://sypalo.com/en). My idea to show website on that language which is default in user's browser, so I'm looking a way how to determine it and return it instead of: return Task.FromResult(new ProviderCultureResult("en", "en"));
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("ru")
};
options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =>
{
var pathSegments = context.Request.Path.Value.Split('/');
if (pathSegments.Count() > 0)
if (supportedCultures.Select(x => x.TwoLetterISOLanguageName).Contains((pathSegments[1])))
return Task.FromResult(new ProviderCultureResult(pathSegments[1], pathSegments[1]));
return Task.FromResult(new ProviderCultureResult("en", "en"));
}));
});
推荐答案
您可以从当前的Request
获取Accept-Language
标头,并设置默认语言.您的代码应如下所示:
You can get Accept-Language
header from the current Request
and set default language. Your code should be something like this:
services.Configure<RequestLocalizationOptions>(options =>
{
//...
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =>
{
//...
var userLangs = context.Request.Headers["Accept-Language"].ToString();
var firstLang = userLangs.Split(',').FirstOrDefault();
var defaultLang = string.IsNullOrEmpty(firstLang) ? "en" : firstLang;
return Task.FromResult(new ProviderCultureResult(defaultLang, defaultLang));
}));
});
这篇关于ASP.NET Core请求本地化选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!