<system.web> .net 核心中的全球化

<system.web> globalization in .net core

我一直在使用以下设置 web.config 我以前的应用程序。

<system.web>
  <globalization culture="en-AU" uiCulture="en-AU" />
</system.web>

现在在我的新 .net 核心项目中,我不知道如何将此设置放入 appsettings.json 文件中。

感谢您的帮助, 尼古拉

本地化在 Startup class 中配置,可在整个应用程序中使用。 AddLocalization 方法用于 ConfigureServices 定义资源和本地化。然后可以在 Configure 方法中使用它。在这里,可以定义 RequestLocalizationOptions 并使用 UseRequestLocalization 方法将其添加到堆栈中。

public void ConfigureServices(IServiceCollection services)
{
            services.AddLocalization(options => options.ResourcesPath = "Resources");

            services.AddMvc()
                .AddViewLocalization()
                .AddDataAnnotationsLocalization();

            services.AddScoped<LanguageActionFilter>();

            services.Configure<RequestLocalizationOptions>(
                options =>
                    {
                        var supportedCultures = new List<CultureInfo>
                        {
                            new CultureInfo("en-US"),
                            new CultureInfo("de-CH"),
                            new CultureInfo("fr-CH"),
                            new CultureInfo("it-CH")
                        };

                        options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
                        options.SupportedCultures = supportedCultures;
                        options.SupportedUICultures = supportedCultures;
                    });
}

在ConfigureServices中加入这两行好像是你想要的效果:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {

        System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU");
        System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-AU");

我尝试了批准的答案:首先它需要一个 LanguageActionFilter class 这不是一个标准的 .net 核心 class 然后它做到了不适用于使用首选文化而不是系统默认文化的简单目的。