2017-08-24 66 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)