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

@L["site.name"]

@(L["current.count"] ?? "Current count"): @currentCount

Quick links: Login Weather
zh Quick links: Login Weather
en Quick links: Login Weather
@code { [Parameter] public string Locale { get; set; } = string.Empty; private int currentCount = 0; protected override async Task OnInitializedAsync() { if (LocalizationProvider != null) { LocalizationProvider.LanguageChanged += OnLanguageChanged; } // If running in browser, ensure current culture loaded (WASM loads asynchronously) if (OperatingSystem.IsBrowser() && LocalizationProvider != null) { try { await LocalizationProvider.LoadCultureAsync(LocalizationProvider.CurrentCulture); } catch { } } } private void OnLanguageChanged(object? sender, string culture) { _ = InvokeAsync(StateHasChanged); } public void Dispose() { if (LocalizationProvider != null) { LocalizationProvider.LanguageChanged -= OnLanguageChanged; } } private void IncrementCount() { currentCount++; } 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; } }