@page "/weather" @page "/{locale}/weather" @using Microsoft.Extensions.Localization @inject IStringLocalizer L @inject Atomx.Admin.Client.Services.ILocalizationProvider LocalizationProvider @L["weather.title"]

@L["weather.title"]

@L["weather.summary"]

Quick links: Login Counter
@if (forecasts == null) {

Loading...

} else { @foreach (var forecast in forecasts) { }
Date @L["weather.temperature"] Temp. (F) Summary
@forecast.Date.ToShortDateString() @forecast.TemperatureC @forecast.TemperatureF @forecast.Summary
} @code { [Parameter] public string Locale { get; set; } = string.Empty; private WeatherForecast[]? forecasts; protected override async Task OnInitializedAsync() { if (LocalizationProvider != null) { LocalizationProvider.LanguageChanged += OnLanguageChanged; } if (OperatingSystem.IsBrowser() && LocalizationProvider != null) { try { await LocalizationProvider.LoadCultureAsync(LocalizationProvider.CurrentCulture); } catch { } } // Simulate asynchronous loading to demonstrate a loading indicator await Task.Delay(500); var startDate = DateOnly.FromDateTime(DateTime.Now); var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = startDate.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = summaries[Random.Shared.Next(summaries.Length)] }).ToArray(); } private void OnLanguageChanged(object? s, string c) => _ = InvokeAsync(StateHasChanged); public void Dispose() { if (LocalizationProvider != null) LocalizationProvider.LanguageChanged -= OnLanguageChanged; } private class WeatherForecast { public DateOnly Date { get; set; } public int TemperatureC { get; set; } public string? Summary { get; set; } public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); } private string GetShortCulture(string current) { if (string.IsNullOrEmpty(current)) return current; if (current.StartsWith("zh", StringComparison.OrdinalIgnoreCase)) return "zh"; if (current.StartsWith("en", StringComparison.OrdinalIgnoreCase)) return "en"; var prefix = current.Split('-', StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); return prefix ?? current; } }