Локализация: класс ResourceManagerWithCultureStringLocalizer и элемент интерфейса WithCulture удален

Класс Microsoft.Extensions.Localization.ResourceManagerWithCultureStringLocalizer и Microsoft.Extensions.Localization.ResourceManagerStringLocalizer.WithCulture метод были удалены в .NET 5.

Контекст см. в разделах aspnet/Announcements#346 и dotnet/aspnetcore#3324. Обсуждение этого изменения см. на странице dotnet/aspnetcore#7756.

Представленные версии

5,0

Старое поведение

Класс ResourceManagerWithCultureStringLocalizer и метод ResourceManagerStringLocalizer.WithCulture являются устаревшими в .NET Core 3.0 и более поздних версиях.

Новое поведение

Класс ResourceManagerWithCultureStringLocalizer и метод ResourceManagerStringLocalizer.WithCulture были удалены в .NET 5. Сведения о внесенных изменениях см. в запросе на вытягивание dotnet/extensions#2562.

Причина изменения

Класс ResourceManagerWithCultureStringLocalizer и ResourceManagerStringLocalizer.WithCulture метод часто были источниками путаницы для пользователей локализации. Особенно это проявляется при создании пользовательской реализации IStringLocalizer. Этот класс и метод создают ощущение, что экземпляр IStringLocalizer должен существовать для каждого языка и ресурса. На самом деле экземпляры различаются только для ресурсов. Во время выполнения свойство CultureInfo.CurrentUICulture определяет используемый язык.

Прекратите использовать класс ResourceManagerWithCultureStringLocalizer и метод ResourceManagerStringLocalizer.WithCulture.

Затронутые API

  • Microsoft.Extensions.Localization.ResourceManagerWithCultureStringLocalizer
  • Microsoft.Extensions.Localization.ResourceManagerStringLocalizer.WithCulture