@using Microsoft.Extensions.Localization @using AliasVault.Client.Services @using Microsoft.JSInterop @using System.Globalization @implements IDisposable @inject LanguageService LanguageService @inject IJSRuntime JSRuntime
@code { private string _currentLanguage = "en"; public void Dispose() { LanguageService.LanguageChanged -= OnLanguageChanged; } protected override async Task OnInitializedAsync() { // Get the current culture that Blazor is actually using var currentCulture = System.Globalization.CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; var supportedLanguages = LanguageService.GetSupportedLanguages(); if (supportedLanguages.ContainsKey(currentCulture)) { _currentLanguage = currentCulture; } else { // Fallback to getting language from service _currentLanguage = await LanguageService.GetCurrentLanguageAsync(); } LanguageService.LanguageChanged += OnLanguageChanged; StateHasChanged(); } private void OnLanguageChanged(string languageCode) { _currentLanguage = languageCode; InvokeAsync(StateHasChanged); } private async Task OnLanguageChangedFromSelect(ChangeEventArgs e) { var languageCode = e.Value?.ToString(); if (!string.IsNullOrEmpty(languageCode)) { await LanguageService.SetLanguageAsync(languageCode); } } }