2017-08-24 64 views
0

在我开发的应用程序中,需要对输出消息进行本地化。 我的web api项目我已经成功与.net核心的全球化/本地化功能。每个用户在数据库中都有一个特定的区域设置,所以通过自定义的RequestCultureProvider,我设法访问用户的主体,抓住他的语言并改变RequestCultureProvider。 但有时我运行向用户发送推送通知消息的过程。例如:.NET核心1.1和运行时本地化

foreach(var user in users) 
     await SendNotification("message", user.DeviceId) 

如果我重写这样的:等待sendNotification时(定位器[“消息”],user.DeviceId)然后每个用户将有“消息”的相同的转换。是否可以根据user.cultureInfo在运行时更改本地化器?

谢谢

回答

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)