@using System.Threading
@using Telerik.Blazor.Components
@inject NavigationManager NavigationManager
<div>
<TelerikDropDownList Data="@Cultures"
@bind-Value="@SelectedCulture"
Width="200px"
TextField="@nameof(CultureData.Text)"
ValueField="@nameof(CultureData.Value)"
DefaultText="Select a language">
<DropDownListSettings>
<DropDownListPopupSettings Height="auto"></DropDownListPopupSettings>
</DropDownListSettings>
</TelerikDropDownList>
</div>
@code{
public class CultureData
{
public string Text { get; set; }
public string Value { get; set; }
}
public List<CultureData> Cultures { get; set; } = new List<CultureData>()
{
new CultureData() { Text = "English", Value = "en-US" },
new CultureData() { Text = "German", Value = "de-CH" },
};
public string SelectedCulture { get; set; } = Thread.CurrentThread.CurrentUICulture.Name;
protected override void OnInitialized()
{
if (Cultures.All(c => c.Value != SelectedCulture))
{
SelectedCulture = Cultures.First().Value;
}
}
public void OnValueChanged(string eventArgs)
{
SelectedCulture = eventArgs;
SetCulture(eventArgs);
}
public void SetCulture(string culture)
{
var uri = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var query = $"?culture={Uri.EscapeDataString(culture)}&redirectUri={Uri.EscapeDataString(uri)}";
NavigationManager.NavigateTo($"{NavigationManager.BaseUri}Culture/SetCulture{query}", forceLoad: true);
}
}
@using Telerik.Blazor.Components
@inject NavigationManager NavigationManager
<div>
<TelerikDropDownList Data="@Cultures"
@bind-Value="@SelectedCulture"
Width="200px"
TextField="@nameof(CultureData.Text)"
ValueField="@nameof(CultureData.Value)"
DefaultText="Select a language">
<DropDownListSettings>
<DropDownListPopupSettings Height="auto"></DropDownListPopupSettings>
</DropDownListSettings>
</TelerikDropDownList>
</div>
@code{
public class CultureData
{
public string Text { get; set; }
public string Value { get; set; }
}
public List<CultureData> Cultures { get; set; } = new List<CultureData>()
{
new CultureData() { Text = "English", Value = "en-US" },
new CultureData() { Text = "German", Value = "de-CH" },
};
public string SelectedCulture { get; set; } = Thread.CurrentThread.CurrentUICulture.Name;
protected override void OnInitialized()
{
if (Cultures.All(c => c.Value != SelectedCulture))
{
SelectedCulture = Cultures.First().Value;
}
}
public void OnValueChanged(string eventArgs)
{
SelectedCulture = eventArgs;
SetCulture(eventArgs);
}
public void SetCulture(string culture)
{
var uri = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var query = $"?culture={Uri.EscapeDataString(culture)}&redirectUri={Uri.EscapeDataString(uri)}";
NavigationManager.NavigateTo($"{NavigationManager.BaseUri}Culture/SetCulture{query}", forceLoad: true);
}
}