Параметры локализации ASP.NET Core 2.1 SupportedCultures всегда содержит только английский язык - PullRequest
0 голосов
/ 29 июня 2018

Я хочу настроить локализацию в моем ASP.NET Core 2.1. Я создаю объект RequestLocalizationOptions с 6 поддерживаемыми культурами и настраиваю службы, но при извлечении этих параметров (объект localizationOptions в примере кода ниже) коллекции SupportedCultures и SupportedUICultures содержат только одну культуру.

public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<RequestLocalizationOptions>(opts => BuildLocalizationOptions());
        services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });

        services.AddMvc()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder)
            .AddJsonOptions(opts => opts.SerializerSettings.ContractResolver = new DefaultContractResolver());
    }

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles();

        var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
        app.UseRequestLocalization(localizationOptions.Value);

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

    private RequestLocalizationOptions BuildLocalizationOptions()
    {
        IList<CultureInfo> supportedCultures = new List<CultureInfo>
        {
            new CultureInfo("en-US"),
            new CultureInfo("en"),
            new CultureInfo("fr-FR"),
            new CultureInfo("fr"),
            new CultureInfo("ro-RO"),
            new CultureInfo("ro")
        };

        var options = new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture("en-US", "en-US"),
            SupportedCultures = supportedCultures,
            SupportedUICultures = supportedCultures
        };

        return options;
    }

Буду признателен за любую помощь, может быть, я что-то упустил.

ОБНОВЛЕНИЕ: Извините, забыл включить метод BuildLocalizationOptions ().

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, вы хотите сделать что-то вроде:

RequestLocalizationOptions localizationOptions = new RequestLocalizationOptions
{
    SupportedCultures = new List<CultureInfo> { new CultureInfo("en-GB") },
    SupportedUICultures = new List<CultureInfo> { new CultureInfo("en-GB") },
    DefaultRequestCulture = new RequestCulture("en-GB")
};
app.UseRequestLocalization(localizationOptions);
...