@inject NavigationManager navMan
@inject IConfiguration cfgSvc
@if (cultures != null)
{
@* 語系切換介面 *@
<form class="form-inline">
<select class="form-control mr-2" @bind="selectedCulture">
<option>選取…</option>
@foreach (var culture in cultures)
{
<option value="@culture.Key">@culture.Value</option>
}
</select>
<button class="btn btn-outline-primary" @onclick="RequestCultureChange">Change</button>
</form>
}
@code{
string selectedCulture;
Dictionary<string, string> cultures;
protected override void OnInitialized()
{
selectedCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
cultures = cfgSvc.GetSection("Cultures").GetChildren().ToDictionary(x => x.Key, x => x.Value);
}
void RequestCultureChange()
{
if (String.IsNullOrWhiteSpace(selectedCulture))
return;
var redirectUrl = new Uri(navMan.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var queryString = $"?culture={Uri.EscapeDataString(selectedCulture)}&redirectUrl={Uri.EscapeDataString(redirectUrl)}";
navMan.NavigateTo($"/Language{queryString}", forceLoad: true);
}
}