ASP.NET CORE 3.1-如何将海地克里奥尔语添加到我的文化列表中


services.Configure<RequestLocalizationOptions>(options =>
{

var cultures = new List<CultureInfo>
{
new CultureInfo("pt-BR"),
new CultureInfo("en-US"),
new CultureInfo("es"),
new CultureInfo("ht"),  // <--   Haitian Creole              
new CultureInfo("tr"),
new CultureInfo("ar")
};
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("pt-BR");
options.SupportedCultures = cultures;
options.SupportedUICultures = cultures;
});

你好。有没有办法把海地克里奥尔语加入我的文化列表?既然它不在支持的语言列表中?我看了好几个地方,反复阅读本地化文档。我什么也没找到。有人能帮我吗?因为我知道在NET Framework中,通过CultureAndRegionInfoBuilder是可能的。但在.Net Core 3.1中,我还没有看到类似的东西。

我尝试自定义RequestCultureProvider,并使用全名使其适用于我:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
services.AddControllersWithViews();
services.AddLocalization(opt => { opt.ResourcesPath = "Resources"; });
services.Configure<RequestLocalizationOptions>(options =>
{
List<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("de-DE"),
new CultureInfo("fr-FR"),
new CultureInfo("ht-HT")
};
options.DefaultRequestCulture = new RequestCulture(culture: "ht-HT", uiCulture: "ht-HT");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Clear();
options.AddInitialRequestCultureProvider(new MyCustomRequestCultureProvider(CultureInfo.CurrentCulture));
});
}

MyCustomRequestCultureProvider:

public class MyCustomRequestCultureProvider : RequestCultureProvider
{
CultureInfo Culture ;
public MyCustomRequestCultureProvider(CultureInfo cultureInfo)
{
Culture = cultureInfo;
}
public override async Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
await Task.Yield();
return new ProviderCultureResult(Culture.ToString());
}
}

此测试基于此官方文件。

最新更新