我的目标
我想把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之后,FireFox和Chrome总是显示美元符号,所以我认为他们将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" };
修复了所有浏览器的问题。