C# ASP Net核心-如何实现后台服务本地化?

C# ASP Net核心-如何实现后台服务本地化?,c#,asp.net-core,background-service,asp.net-core-localization,C#,Asp.net Core,Background Service,Asp.net Core Localization,在中发布了一个问题,询问在ASP NET核心应用程序中删除非活动用户的最佳实现。伊恩·坎普为此建议了后台服务,我真的很喜欢这个 现在我想知道如何实现本地化到后台服务(我需要通知他们,很快他们的帐户将被删除)?我可以存储有关用户在浏览我的应用程序时使用的Culture的信息。我看到了一个IStringLocalizer-WithCulture函数,它返回一个具有请求的区域性的新IStringLocalizer。但这表明它已被弃用。是否有其他方法可以实现本地化到后台服务(同时在数据库中使用用户的存储

在中发布了一个问题,询问在ASP NET核心应用程序中删除非活动用户的最佳实现。伊恩·坎普为此建议了后台服务,我真的很喜欢这个


现在我想知道如何实现本地化到后台服务(我需要通知他们,很快他们的帐户将被删除)?我可以存储有关用户在浏览我的应用程序时使用的Culture的信息。我看到了一个IStringLocalizer-WithCulture函数,它返回一个具有请求的区域性的新IStringLocalizer。但这表明它已被弃用。是否有其他方法可以实现本地化到后台服务(同时在数据库中使用用户的存储区域性)?

如果您有语言代码,则可以设置
CultureInfo.CurrentUICulture
以通过
stringLocalizer
获取本地化字符串

    public class ResourceProvider
    {
        private readonly IStringLocalizer stringLocalizer;
        public ResourceProvider(IStringLocalizerFactory localizerFactory)
        {
            stringLocalizer = localizerFactory.Create("ResourceStrings", System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
        }

        public string GetLocalizedString(string resourceKey, string languageCode)
        {
          CultureInfo.CurrentUICulture = new CultureInfo(languageCode);
          var localizedString = stringLocalizer[resourceKey].Value;
          return localizedString;
        }
    }

不确定“localizer”是什么意思,但如果要返回本地化消息,可以使用资源文件(.resx扩展名)并维护每个区域性的资源。您可以根据线程区域性从正确的文件中提取,也可以使用静态代码隐藏并传递CultureInfo实例。我使用resx文件,在ASP NET core中有一个类IStringLocalizer,它根据发送到实例的键处理本地化字符串。定位器是一个实例。Localizer[“MyLocalizedString”]基于HttpRequest区域性从resx文件返回本地化字符串。但在后台服务中,并没有HttpRequest文化,所以我想知道如何对IStringLocalizer(或任何建议的Localizer)说我想要某种文化。另外,我看到WithCulture已被弃用,因此我正在寻找另一种选择。