using System.Globalization; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.JSInterop; using MudBlazor.Services; using TaikoWebUI.Settings; using TaikoWebUI.Utilities; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); builder.Services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddMudServices(); builder.Services.AddSingleton(); builder.Services.Configure(builder.Configuration.GetSection(nameof(WebUiSettings))); builder.Services.AddScoped(); builder.Services.AddLocalization(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); var host = builder.Build(); var gameDataService = host.Services.GetRequiredService(); await gameDataService.InitializeAsync(builder.HostEnvironment.BaseAddress); CultureInfo culture; var js = host.Services.GetRequiredService(); var result = await js.InvokeAsync("blazorCulture.get"); if (result is not null) { culture = new CultureInfo(result); } else { culture = new CultureInfo("en-US"); await js.InvokeVoidAsync("blazorCulture.set", "en-US"); } CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; await host.RunAsync();