@page "/debug/localization" @inject Atomx.Admin.Client.Services.ILocalizationProvider LocalizationProvider @inject IHttpClientFactory HttpClientFactory @inject IJSRuntime JS @inject ILogger Logger @inject HttpClient Http @inject NavigationManager Nav

Localization Debug

CurrentCulture: @LocalizationProvider.CurrentCulture

Provider Results

HTTP Fetch Results

JS Read

@jsResult

@code { private List providerResults = new(); private List httpResults = new(); private string jsResult = string.Empty; private async Task SetProviderZh() { providerResults.Clear(); try { // Use short code; provider will map to full culture and set active culture await LocalizationProvider.SetCultureAsync("zh"); providerResults.Add($"Set culture to {LocalizationProvider.CurrentCulture}"); providerResults.Add($"site.name={LocalizationProvider.GetString("site.name")}"); providerResults.Add($"login.title={LocalizationProvider.GetString("login.title")}"); } catch (Exception ex) { providerResults.Add("Set provider zh failed: " + ex.Message); Logger.LogError(ex, "Set provider zh failed"); } } private async Task SetProviderEn() { providerResults.Clear(); try { await LocalizationProvider.SetCultureAsync("en"); providerResults.Add($"Set culture to {LocalizationProvider.CurrentCulture}"); providerResults.Add($"site.name={LocalizationProvider.GetString("site.name")}"); providerResults.Add($"login.title={LocalizationProvider.GetString("login.title")}"); } catch (Exception ex) { providerResults.Add("Set provider en failed: " + ex.Message); Logger.LogError(ex, "Set provider en failed"); } } private async Task FetchFiles() { httpResults.Clear(); try { // Prefer injected HttpClient that has BaseAddress set in Program.cs for WASM var client = Http ?? HttpClientFactory.CreateClient(); var urlZ = new Uri(new Uri(Nav.BaseUri), $"localization/zh-Hans.json"); httpResults.Add($"GET {urlZ}"); var resZ = await client.GetAsync(urlZ); httpResults.Add($"=> {resZ.StatusCode}"); if (resZ.IsSuccessStatusCode) { var txt = await resZ.Content.ReadAsStringAsync(); httpResults.Add("zh content len=" + txt.Length); } var urlE = new Uri(new Uri(Nav.BaseUri), $"localization/en-US.json"); httpResults.Add($"GET {urlE}"); var resE = await client.GetAsync(urlE); httpResults.Add($"=> {resE.StatusCode}"); if (resE.IsSuccessStatusCode) { var txt = await resE.Content.ReadAsStringAsync(); httpResults.Add("en content len=" + txt.Length); } } catch (Exception ex) { httpResults.Add("Fetch error: " + ex.Message); Logger.LogError(ex, "FetchFiles error"); } } private async Task ReadCookie() { try { jsResult = await JS.InvokeAsync("cookies.Read", "atomx.culture"); } catch (Exception ex) { jsResult = "JS error: " + ex.Message; } } }