diff --git a/DysonNetwork.Sphere/Account/AccountService.cs b/DysonNetwork.Sphere/Account/AccountService.cs index fab8bf1..0d59fe3 100644 --- a/DysonNetwork.Sphere/Account/AccountService.cs +++ b/DysonNetwork.Sphere/Account/AccountService.cs @@ -1,3 +1,4 @@ +using System.Globalization; using DysonNetwork.Sphere.Auth; using DysonNetwork.Sphere.Storage; using EFCore.BulkExtensions; @@ -14,6 +15,18 @@ public class AccountService( ICacheService cache ) { + public static void SetCultureInfo(Account account) + { + SetCultureInfo(account.Language); + } + + public static void SetCultureInfo(string? languageCode) + { + var info = new CultureInfo(languageCode ?? "en-us", false); + CultureInfo.CurrentCulture = info; + CultureInfo.CurrentUICulture = info; + } + public const string AccountCachePrefix = "account:"; public async Task PurgeAccountCache(Account account) diff --git a/DysonNetwork.Sphere/Account/MagicSpellService.cs b/DysonNetwork.Sphere/Account/MagicSpellService.cs index 8ab6f23..ff2e4a9 100644 --- a/DysonNetwork.Sphere/Account/MagicSpellService.cs +++ b/DysonNetwork.Sphere/Account/MagicSpellService.cs @@ -78,10 +78,7 @@ public class MagicSpellService( .Where(a => a.Id == spell.AccountId) .Select(a => a.Language) .FirstOrDefaultAsync(); - - var cultureInfo = new CultureInfo(accountLanguage ?? "en-us", false); - CultureInfo.CurrentCulture = cultureInfo; - CultureInfo.CurrentUICulture = cultureInfo; + AccountService.SetCultureInfo(accountLanguage); try { diff --git a/DysonNetwork.Sphere/Chat/ChatRoomController.cs b/DysonNetwork.Sphere/Chat/ChatRoomController.cs index 29efc67..c33d878 100644 --- a/DysonNetwork.Sphere/Chat/ChatRoomController.cs +++ b/DysonNetwork.Sphere/Chat/ChatRoomController.cs @@ -741,6 +741,7 @@ public class ChatRoomController( ? localizer["ChatInviteDirectBody", sender.Nick] : localizer["ChatInviteBody", member.ChatRoom.Name ?? "Unnamed"]; + AccountService.SetCultureInfo(member.Account); await nty.SendNotification(member.Account, "invites.chats", title, null, body); } } \ No newline at end of file diff --git a/DysonNetwork.Sphere/Post/PostService.cs b/DysonNetwork.Sphere/Post/PostService.cs index 193499f..b67f326 100644 --- a/DysonNetwork.Sphere/Post/PostService.cs +++ b/DysonNetwork.Sphere/Post/PostService.cs @@ -261,6 +261,7 @@ public class PostService( if (!isSelfReact && op is not null) { + AccountService.SetCultureInfo(op); await nty.SendNotification( op, "posts.reactions.new", diff --git a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs index 9148cad..725c719 100644 --- a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs +++ b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs @@ -71,6 +71,7 @@ public class PublisherSubscriptionService( { try { + AccountService.SetCultureInfo(subscription.Account); await nty.SendNotification( subscription.Account, "posts.new", diff --git a/DysonNetwork.Sphere/Realm/RealmService.cs b/DysonNetwork.Sphere/Realm/RealmService.cs index 6423441..bda0da9 100644 --- a/DysonNetwork.Sphere/Realm/RealmService.cs +++ b/DysonNetwork.Sphere/Realm/RealmService.cs @@ -9,6 +9,7 @@ public class RealmService(AppDatabase db, NotificationService nty, IStringLocali { public async Task SendInviteNotify(RealmMember member) { + AccountService.SetCultureInfo(member.Account); await nty.SendNotification( member.Account, "invites.realms",