Blazor Server.SetDefaultCulture()在IIS10中托管时无法与所有浏览器一起工作



我的目标

我想把CurrentCulture和CurrentUICulture初始化分开。该应用程序使用一种货币标准,但可以显示不同用户的多个文本翻译(基于.resx文件(。

我的代码

我在启动中使用以下代码。配置以实现这一点。

var configuredCulture = "da-DK";
var supportedUICultures = new[] { "en", "nl" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(configuredCulture)
.AddSupportedUICultures(supportedUICultures);
app.UseRequestLocalization(localizationOptions);

*configedCulture通常从AppSettings.json中读取,因此应用程序管理员可以对其进行设置

我的问题

上面的代码在我的Chromium Edge、Chrome&火狐。文本翻译基于浏览器语言,从appSettings.config读取当前版本(在本例中为硬编码(。

在将应用程序发布到运行IIS10的Server 2019之后,FireFoxChrome总是显示美元符号,所以我认为他们将CurrentCulture转换为en-US。铬边缘&Iphone上的Safari向我显示了正确的值(在本例中为2.95 kr.(,因此它们确实可以像expected一样工作。

我的问题

我的文化配置设置正确吗?换句话说,我需要更改代码还是应该查看IIS配置?(尽管我在IIS10中没有找到本地化设置(。

FireFox和Chrome似乎需要将集合Culture包含在UICulture列表中。我以为这些东西是分开的。所以改变:

var supportedUICultures = new[] { "en", "nl" };

进入:

var supportedUICultures = new[] { "en", "nl", "da-DK" };

修复了所有浏览器的问题。

最新更新