C# ASP Net核心-如何实现后台服务本地化?
在中发布了一个问题,询问在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。但这表明它已被弃用。是否有其他方法可以实现本地化到后台服务(同时在数据库中使用用户的存储
现在我想知道如何实现本地化到后台服务(我需要通知他们,很快他们的帐户将被删除)?我可以存储有关用户在浏览我的应用程序时使用的Culture的信息。我看到了一个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已被弃用,因此我正在寻找另一种选择。