Replaced the placeholder arrow in the language selector button with the current language name using the new `GetLanguageName` method. Added `GetLanguageName` to map culture codes to language names. Fixed encoding issue by correcting "Fran�ais" to "Français" in the French language option.
74 lines
2.1 KiB
Plaintext
74 lines
2.1 KiB
Plaintext
@using System.Globalization
|
|
@using EnvelopeGenerator.ReceiverUI.Services
|
|
@inject IJSRuntime JSRuntime
|
|
@inject NavigationManager Navigation
|
|
@inject CultureService CultureService
|
|
|
|
<div class="language-selector">
|
|
<button class="language-selector__trigger" @onclick="ToggleDropdown" aria-label="Select Language">
|
|
<span class="fi fi-@GetFlagCode(CurrentCulture)"></span>
|
|
<span class="language-selector__arrow">@GetLanguageName(CurrentCulture)</span>
|
|
</button>
|
|
|
|
@if (isOpen)
|
|
{
|
|
<div class="language-selector__dropdown">
|
|
<button class="language-selector__option" @onclick="@(() => ChangeLanguageAsync("de-DE"))">
|
|
<span class="fi fi-de"></span>
|
|
<span>Deutsch</span>
|
|
</button>
|
|
<button class="language-selector__option" @onclick="@(() => ChangeLanguageAsync("en-US"))">
|
|
<span class="fi fi-us"></span>
|
|
<span>English</span>
|
|
</button>
|
|
<button class="language-selector__option" @onclick="@(() => ChangeLanguageAsync("fr-FR"))">
|
|
<span class="fi fi-fr"></span>
|
|
<span>Français</span>
|
|
</button>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
@code {
|
|
private bool isOpen = false;
|
|
private string CurrentCulture => CultureInfo.CurrentCulture.Name;
|
|
|
|
private void ToggleDropdown()
|
|
{
|
|
isOpen = !isOpen;
|
|
}
|
|
|
|
private async Task ChangeLanguageAsync(string culture)
|
|
{
|
|
if (CultureInfo.CurrentCulture.Name != culture)
|
|
{
|
|
await CultureService.SetCultureAsync(culture);
|
|
Navigation.NavigateTo(Navigation.Uri, forceLoad: true);
|
|
}
|
|
|
|
isOpen = false;
|
|
}
|
|
|
|
private string GetFlagCode(string culture)
|
|
{
|
|
return culture switch
|
|
{
|
|
"de-DE" => "de",
|
|
"en-US" => "us",
|
|
"fr-FR" => "fr",
|
|
_ => "de"
|
|
};
|
|
}
|
|
|
|
private string GetLanguageName(string culture)
|
|
{
|
|
return culture switch
|
|
{
|
|
"de-DE" => "Deutsch",
|
|
"en-US" => "English",
|
|
"fr-FR" => "Français",
|
|
_ => "Deutsch"
|
|
};
|
|
}
|
|
}
|