gpt4 book ai didi

c# - 使用 Asp.Net Core 强制语言环境

转载 作者:太空狗 更新时间:2023-10-30 00:38:20 25 4
gpt4 key购买 nike

我在使用 Asp.Net Core 1.1 和完整的 .Net Framework v4.6.2 编写的 Web 应用程序时遇到了一些奇怪的问题。

我想强制应用程序使用瑞典语言环境 (sv-SE)。这在开发机器上工作得很好(当然......)但在它应该运行的服务器上(运行 Windows Server 2012r2)就不行了。

我试过以下方法:

1) 将 "SiteLocale": "sv-SE"放入 appsettings.json 文件中。

2) 将以下内容放入 web.config

<configuration>
<system.web>
<globalization culture="sv-SE" uiCulture="sv-SE" />
</system.web>
...
</configuration

3) 在初始化应用程序之前在 program.cs 中设置默认语言环境

System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("sv-SE");
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("sv-SE");

4) 在 Startup.cs 中为 Configure(...) 添加了 RequestLocalization

var supportedCultures = new[]
{
new CultureInfo("sv-SE")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("sv-SE"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});

5) 在我的 Controller 构造函数中设置当前线程文化

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("sv-SE");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("sv-SE");

6) 在我的 Controller 操作中设置当前线程文化

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("sv-SE");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("sv-SE");

7) 为服务器安装瑞典语言包(服务器最初只有英文)

完成上述所有操作后, View 中输出的任何日期或数字仍使用 en-US 语言环境呈现。

查看 View 中的当前语言环境,我可以看到以下内容:

System.Globalization.CultureInfo.CurrentCulture.Name => "sv-SE"
System.Globalization.CultureInfo.CurrentUICulture.Name => "sv-SE"
System.Globalization.CultureInfo.InstalledUICulture => "en-US"

同样,在我的开发机器上,它工作正常,数字和日期的格式是根据瑞典语言环境设置的。但在服务器上它们不是。

在服务器上,应用程序在 ApplicationPoolIdentity 下运行。我假设配置为使用“en-US”作为语言环境,因为操作系统最初安装时仅使用英语。

困惑为什么设置 CurrentThread.CurrentCulture/CurrentUICulture 没有效果。

最佳答案

我在使用 ASP Net Core 3.0 时遇到了类似的问题。网站托管在不同的国家/地区,导致格式出现问题。

我在启动时添加了以下内容:

using Microsoft.AspNetCore.Localization;
using System.Globalization;

在配置服务中:

services.AddLocalization();

在配置中:

var supportedCultures = new[]{
new CultureInfo("en-US")
};
app.UseRequestLocalization(new RequestLocalizationOptions {
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
FallBackToParentCultures= false
});
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

关于c# - 使用 Asp.Net Core 强制语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com