This commit is contained in:
yxw
2025-12-07 18:31:58 +08:00
parent d91954e331
commit 9631e00a12
12 changed files with 60 additions and 464 deletions

View File

@@ -1,61 +0,0 @@
@inject LanguageProvider LanguageProvider
@inject IStringLocalizer<LanguageSelector> Localizer
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false">
@GetLanguageDisplayName(LanguageProvider.CurrentLanguage)
</button>
<ul class="dropdown-menu">
@foreach (var language in LanguageProvider.SupportedLanguages)
{
<li>
<button class="dropdown-item @(language == LanguageProvider.CurrentLanguage ? "active" : "")"
@onclick="() => ChangeLanguage(language)"
type="button">
@GetLanguageDisplayName(language)
@if (language == LanguageProvider.CurrentLanguage)
{
<span class="badge bg-primary">✓</span>
}
</button>
</li>
}
</ul>
</div>
@code {
protected override void OnInitialized()
{
// 订阅变更以便在语言切换时即时更新该组件
LanguageProvider.OnLanguageChanged += OnLanguageChanged;
}
private void OnLanguageChanged()
{
// 在 UI 线程上下文中触发 StateHasChanged
_ = InvokeAsync(StateHasChanged);
}
public void Dispose()
{
LanguageProvider.OnLanguageChanged -= OnLanguageChanged;
}
private string GetLanguageDisplayName(string languageCode)
{
return languageCode switch
{
"zh-Hans" => "简体中文",
"en-US" => "English (US)",
_ => languageCode
};
}
private async Task ChangeLanguage(string languageCode)
{
await LanguageProvider.ChangeLanguageAsync(languageCode);
}
}