在我正在开发的应用程序中,需要对输出消息进行本地化。 我的web api项目我已经通过.net核心的全球化/本地化功能取得了成功。每个用户在数据库中都有一个特定的语言环境,因此使用自定义的RequestCultureProvider,我已设法访问用户的主体,获取他的语言并更改RequestCultureProvider。 但有时我会运行向用户发送推送通知消息的程序。例如:
foreach(var user in users)
await SendNotification("message", user.DeviceId)
如果我重写如下: await SendNotification(localizer [" message"],user.DeviceId)那么每个用户将拥有相同的" message&#34翻译;。是否可以根据user.cultureInfo在运行时更改本地化程序?
由于
答案 0 :(得分:1)
当然可以。
您只需要使用.WithCulture(...)
foreach(var user in users)
await SendNotification(localizer.WithCulture(new Culture("en-US"))["message"], user.DeviceId)
当然用包含文化的变量或属性替换en-US
,即
foreach(var user in users)
await SendNotification(localizer.WithCulture(new Culture(user.CultureInfo))["message"], user.DeviceId)