2017-08-24 1 views
0

Dans une application que je développe, il y a une demande pour les messages de sortie à localiser. J'ai mon projet web api Je l'ai réussi avec les fonctionnalités de globalisation/localisation du noyau .net. Chaque utilisateur a une localisation spécifique dans la base de données, donc avec un RequestCultureProvider personnalisé, j'ai réussi à accéder au principal de l'utilisateur, saisir son langage et modifier RequestCultureProvider. Mais parfois, j'exécute des procédures qui envoient des messages de notifications push aux utilisateurs. Par exemple:.NET Core 1.1 et la localisation dans l'exécution

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

Si je réécris comme: attendre sendNotification (radiophare [ "message"], user.DeviceId) alors chaque utilisateur aura la même traduction de "message". Est-il possible de modifier en cours d'exécution le localisateur selon user.cultureInfo?

Merci

Répondre

1

Bien sûr, vous pouvez.

Il vous suffit d'appeler le radiophare avec .WithCulture(...)

foreach(var user in users) 
    await SendNotification(localizer.WithCulture(new Culture("en-US"))["message"], user.DeviceId) 

Bien sûr le remplacement de la en-US avec une variable ou une propriété qui contient la culture, à savoir

foreach(var user in users) 
    await SendNotification(localizer.WithCulture(new Culture(user.CultureInfo))["message"], user.DeviceId)