@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 Task OnInitializedAsync() { // localization handled globally in Routes. No per-page initialization needed. return Task.CompletedTask; } private void OnLanguageChanged(object? sender, string culture) { // no-op; global router remount will update page translations } public void Dispose() { // no per-page unsubscribe required } 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; } }