From b370c69670cd7d402712f1167cc040fe82c1beb4 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 8 May 2025 23:04:21 +0800 Subject: [PATCH] :bug: Fix localization --- .../Account/AccountEventService.cs | 11 +++++--- DysonNetwork.Sphere/Account/AccountService.cs | 28 ------------------- DysonNetwork.Sphere/AppDatabase.cs | 2 +- DysonNetwork.Sphere/Program.cs | 4 --- 4 files changed, 8 insertions(+), 37 deletions(-) diff --git a/DysonNetwork.Sphere/Account/AccountEventService.cs b/DysonNetwork.Sphere/Account/AccountEventService.cs index aaf314e..def73bd 100644 --- a/DysonNetwork.Sphere/Account/AccountEventService.cs +++ b/DysonNetwork.Sphere/Account/AccountEventService.cs @@ -1,3 +1,4 @@ +using System.Globalization; using DysonNetwork.Sphere.Activity; using DysonNetwork.Sphere.Connection; using DysonNetwork.Sphere.Resources; @@ -11,10 +12,10 @@ namespace DysonNetwork.Sphere.Account; public class AccountEventService( AppDatabase db, - AccountService acc, ActivityService act, WebSocketService ws, - IMemoryCache cache + IMemoryCache cache, + IStringLocalizer localizer ) { private static readonly Random Random = new(); @@ -120,8 +121,10 @@ public class AccountEventService( public async Task CheckInDaily(Account user) { - var localizer = AccountService.GetEventLocalizer(user.Language); - + var cultureInfo = new CultureInfo(user.Language, false); + CultureInfo.CurrentCulture = cultureInfo; + CultureInfo.CurrentUICulture = cultureInfo; + // Generate 2 positive tips var positiveIndices = Enumerable.Range(1, FortuneTipCount) .OrderBy(_ => Random.Next()) diff --git a/DysonNetwork.Sphere/Account/AccountService.cs b/DysonNetwork.Sphere/Account/AccountService.cs index 08d1011..e0a3aff 100644 --- a/DysonNetwork.Sphere/Account/AccountService.cs +++ b/DysonNetwork.Sphere/Account/AccountService.cs @@ -40,32 +40,4 @@ public class AccountService( return null; } - - public static IStringLocalizer GetEventLocalizer(string language) - { - var culture = new CultureInfo(language, false); - - var originalCulture = CultureInfo.CurrentCulture; - - try - { - // Set the desired culture - CultureInfo.CurrentUICulture = culture; - CultureInfo.CurrentCulture = culture; - - // Now create the localizer - var localizer = new ResourceManagerStringLocalizerFactory( - new Microsoft.Extensions.Options.OptionsWrapper(new LocalizationOptions - { ResourcesPath = "Resources" }), - NullLoggerFactory.Instance - ).Create(typeof(AccountEventResource)); - - return localizer; - } - finally - { - CultureInfo.CurrentCulture = originalCulture; - CultureInfo.CurrentUICulture = originalCulture; - } - } } \ No newline at end of file diff --git a/DysonNetwork.Sphere/AppDatabase.cs b/DysonNetwork.Sphere/AppDatabase.cs index adf2bb6..7abf022 100644 --- a/DysonNetwork.Sphere/AppDatabase.cs +++ b/DysonNetwork.Sphere/AppDatabase.cs @@ -69,7 +69,7 @@ public class AppDatabase( optionsBuilder.UseNpgsql( dataSource, - opt => opt.UseNodaTime() + opt => opt.UseNodaTime().UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery) ).UseSnakeCaseNamingConvention(); optionsBuilder.UseAsyncSeeding(async (context, _, cancellationToken) => diff --git a/DysonNetwork.Sphere/Program.cs b/DysonNetwork.Sphere/Program.cs index 97417a7..5eb21d3 100644 --- a/DysonNetwork.Sphere/Program.cs +++ b/DysonNetwork.Sphere/Program.cs @@ -64,12 +64,8 @@ builder.Services.Configure(options => { new CultureInfo("zh-hans"), }; - options.DefaultRequestCulture = new RequestCulture("en-us"); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; - - // TODO parse user token - options.AddInitialRequestCultureProvider(new CustomRequestCultureProvider(async context => await Task.FromResult(new ProviderCultureResult("zh-hans")))); }); // Other pipelines