Я обновил проект с .Net Core 2.2 до .Net Core 3.0.
После попытки исправить все предупреждения и ошибки, я сейчас пытаюсь найти решение для этого предупреждения:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
Я использую это, чтобы изменить язык веб-сайта для вошедшего в систему пользователя. У меня есть эта реализация, чтобы изменить культуру сайта на пользователя:
public class CultureLocalizer : ICultureLocalizer
{
private readonly IStringLocalizer localizer;
public CultureLocalizer(IStringLocalizerFactory factory)
{
var type = typeof(Resources.PageResources);
var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
localizer = factory.Create("PageResources", assemblyName.Name);
}
// if we have formatted string we can provide arguments
// e.g.: @Localizer.Text("Hello {0}", User.Name)
public LocalizedString Get(string key, params string[] arguments)
{
return arguments == null ? localizer[key] : localizer[key, arguments];
}
public LocalizedString Get(Enum key, params string[] arguments)
{
return arguments == null ? localizer[key.ToString()] : localizer[key.ToString(), arguments];
}
public LocalizedString Get(CultureInfo culture, string key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key] : localizer.WithCulture(culture)[key, arguments];
}
public LocalizedString Get(CultureInfo culture, Enum key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key.ToString()] : localizer.WithCulture(culture)[key.ToString(), arguments];
}
}
И это фиктивный класс, который содержит только .resx
файл для переводов:
// dummy class for grouping localization resources
public class PageResources
{
}
Я не смог найти в Интернете ничего, что объясняет, как решить это предупреждение, кроме этого обсуждения на github, которое, похоже, пока не имеет решения.
Кто-нибудь еще наткнулся на это предупреждение и нашел решение для него?
источник
CurrentUICulture
потому что,CurrentCulture
кажется, не влияет наStringLocalizer
. При использовании в веб-приложении вы можетеservices.Configure<RequestLocalizationOptions>
настроить поведение для определения языка запросов текущего пользователя, но помните о настройках по умолчанию Microsoft - заголовках, файлах cookie и т. Д. - для автоматического определения языка. По этой причине я предпочитаю использоватьRequestCultureProviders
свой собственный известный механизм определения языка пользователя.