.NET核心1.1和运行时本地化

时间:2017-08-24 13:42:09

标签: c# asp.net-core asp.net-core-webapi

在我正在开发的应用程序中,需要对输出消息进行本地化。 我的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在运行时更改本地化程序?

由于

1 个答案:

答案 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)