Я боролся с локализацией Core 3.1, но я наконец сделал это в настоящее время с их новым поведением (удивительно, что их документы не обновляются для новых изменений).
Как говорится, кажется, что я не могу найти хороший способ сделать культуру на основе URL, например: https://localhost/en/area? / controller / action
Примечание: я нашел решение несколько дней go, но оно не работало с Идентификация (Идентификация необходима для моей работы)
Пожалуйста, мне нужна ваша помощь.
Текущая настройка: -
ConfigureServices
services.AddLocalization();
services.AddMvc()
.AddMvcLocalization()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedResource));
});
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("ar")
};
options.DefaultRequestCulture = new RequestCulture("en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
Настройка
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("ar"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});
HomeController для сохранения выбора пользователя в кулинарии ie
[HttpPost]
public IActionResult SetLanguage(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}