Asp. net локализация ядра Есть ли способ разрешить все культуры? - PullRequest
1 голос
/ 04 февраля 2020

Я хочу разрешить все культуры в моем приложении. Как вы можете видеть ниже, я допускаю несколько культур. И у меня есть специальный провайдер, который получит культуру пользователя. Если его культура отсутствует в SupportedCultures, значит, я не справлюсь с его культурой (даже если смогу). Я не могу знать перед назначением SupportedCultures, какие культуры будут поддерживаться.

Например, GetTheUserCulture () возвращает "de". Когда я попытаюсь позже получить культуру, она переключится на язык по умолчанию (в данном случае «en»). Или я хочу, чтобы это было "де".

Есть ли способ Разрешить все культуры?

            const string defaultCulture = "en";
            services.Configure<RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new[]
                {
                    new CultureInfo(defaultCulture),
                    new CultureInfo("fr-FR"),
                    new CultureInfo("fr"),
                    new CultureInfo("es"),
                    new CultureInfo("ru"),
                    new CultureInfo("ja"),
                    new CultureInfo("ar"),
                    new CultureInfo("zh"),
                    new CultureInfo("en-GB"),
                    new CultureInfo("en-UK")
                };

                options.DefaultRequestCulture = new RequestCulture(defaultCulture);
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
                options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context =>
                {
                    return new ProviderCultureResult(GetTheUserCulture());
                }));
            });

1 Ответ

2 голосов
/ 04 февраля 2020

Мы можем получить все культуры с CultureInfo и затем добавить их в SupportedCultures. Это будет выглядеть так:

            services.Configure<RequestLocalizationOptions>(options =>
            {
                CultureInfo[] supportedCultures = CultureInfo.GetCultures(CultureTypes.AllCultures &~ CultureTypes.NeutralCultures)
                    .Where(cul => !String.IsNullOrEmpty(cul.Name))
                    .ToArray();

                options.DefaultRequestCulture = new RequestCulture(defaultCulture);
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...