Files
Atomx/Atomx.Admin/Atomx.Admin.Client/Pages/Counter.razor
2025-12-09 04:09:33 +08:00

70 lines
2.2 KiB
Plaintext

@page "/counter"
@page "/{locale}/counter"
@using Microsoft.Extensions.Localization
@inject IStringLocalizer<Counter> L
@inject Atomx.Admin.Client.Services.ILocalizationProvider LocalizationProvider
<PageTitle>@L["site.name"]</PageTitle>
<h1>@L["site.name"]</h1>
<p role="status">@(L["current.count"] ?? "Current count"): @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">@(L["click.me"] ?? "Click me")</button>
<Atomx.Admin.Client.Components.LangSelector />
<div style="margin-top:16px;">
<strong>Quick links:</strong>
<span style="padding-left:10px;"><NavLink href="/account/login">Login</NavLink></span>
<span style="padding-left:10px;"><NavLink href="/weather">Weather</NavLink></span>
</div>
<div style="margin-top:16px;">
<strong>zh Quick links:</strong>
<span style="padding-left:10px;"><NavLink href="/zh/account/login">Login</NavLink></span>
<span style="padding-left:10px;"><NavLink href="/zh/weather">Weather</NavLink></span>
</div>
<div style="margin-top:16px;">
<strong>en Quick links:</strong>
<span style="padding-left:10px;"><NavLink href="/en/account/login">Login</NavLink></span>
<span style="padding-left:10px;"><NavLink href="/en/weather">Weather</NavLink></span>
</div>
@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;
}
}