ASP Net core - 如何实现后台服务本地化?

ASP Net core - How to implement background services localization?

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

现在我想知道如何将定位器实现到后台服务中(我需要通知他们他们的帐户很快就会被删除)?我可以存储有关用户在浏览我的应用程序时正在使用的文化的信息。我看到了 IStringLocalizer< SomeClass > - WithCulture 的函数,其中 returns 一个具有请求文化的新 IStringLocalizer。但它表明它已被弃用。有没有其他方法如何将 Localizer 实现到后台服务(同时在数据库中使用存储的用户文化)?

如果您有语言代码,那么您可以设置 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;
        }
    }