【发布时间】:2020-03-14 14:48:14
【问题描述】:
我试图在运行时动态设置IStringLocalizer 的语言。似乎可以做到这一点的唯一可用方法是IStringLocalizer.WithCulture。但是,尝试使用它会导致弃用警告。
public IStringLocalizer GetLocalizer(string locale) {
this.localizerFactory.Create(typeof(CommonResources)).WithCulture(new CultureInfo(locale));
}
我不使用 ASP,我在处理来自其他来源(各种网络聊天 API)的用户交互的 IHostedService 中执行此操作。此服务需要符合管理员为聊天服务器或频道设置的语言(存储在数据库中)。
当前设置IStringLocalizer 语言的正确方法是什么?我应该完全使用另一个类吗?
【问题讨论】:
-
this SO 回答对您有帮助吗?
-
@SimonWilson 不幸的是,没有。在答案中,他们似乎只在应用程序开始时提供语言,以默认值和可用值集合的形式。如果他们以编程方式设置
IStringLocalizer的延迟,它会被很好地隐藏。此外,该示例是针对 ASP 应用程序的,这不是我的情况。 -
此外,在评论中,OP 自己询问所提供的答案如何动态改变文化。
-
可能您可以创建一个中间件,根据每个请求可以设置 currentCulture 或 UICulture。本地化程序会根据文化集自动解析字符串。
标签: c# .net-core internationalization