mirror of
https://github.com/DrMboga/WotBlitzStatisticsBlazor.git
synced 2026-10-24 11:50:05 +02:00
feat: localization added
This commit is contained in:
1 parent
2fba32b5b4
commit
c035f78340
15 files changed
+542
-19
No files matched your search
@@ -11,6 +11,16 @@
|
||||
<RadzenLabel Text="WOT Blitz statistics">
|
||||
</RadzenLabel>
|
||||
</div>
|
||||
<div class="col-6 d-flex align-items-center justify-content-end">
|
||||
<RadzenSplitButton Click=@(LanguageSelected) Icon="language" Text="@CurrentCultureInfo.NativeName" Style="margin:0 .5rem">
|
||||
<ChildContent>
|
||||
@foreach (var ci in CultureInfos)
|
||||
{
|
||||
<RadzenSplitButtonItem Text="@ci.Value.DisplayName" Value="@ci.Key" />
|
||||
}
|
||||
</ChildContent>
|
||||
</RadzenSplitButton>
|
||||
</div>
|
||||
</div>
|
||||
</ChildContent>
|
||||
</RadzenHeader>
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Microsoft.JSInterop;
|
||||
using Radzen;
|
||||
using Radzen.Blazor;
|
||||
using WotBlitzStatisticsPro.Blazor.Messages;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
{
|
||||
@@ -10,11 +16,33 @@ namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
[Inject]
|
||||
private DialogService DialogService { get; set; }
|
||||
|
||||
[Inject]
|
||||
private IMediator Mediator { get; set; }
|
||||
|
||||
public RadzenSidebar Sidebar0;
|
||||
public RadzenBody Body0;
|
||||
public bool SidebarExpanded { get; set; } = false;
|
||||
public bool BodyExpanded { get; set; } = true;
|
||||
|
||||
public Dictionary<string, CultureInfo> CultureInfos { get; set; } = new()
|
||||
{
|
||||
{ "en-US", new CultureInfo("en-US", false)},
|
||||
{ "ru-RU", new CultureInfo("ru-RU", false)},
|
||||
{ "de-DE", new CultureInfo("de-DE", false)}
|
||||
};
|
||||
|
||||
public CultureInfo CurrentCultureInfo
|
||||
{
|
||||
get => CultureInfo.CurrentCulture;
|
||||
set
|
||||
{
|
||||
if (CultureInfo.CurrentCulture != value)
|
||||
{
|
||||
Mediator.Publish(new ChangeCurrentCultureMessage(value.Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
//if (httpContextAccessor != null && httpContextAccessor.HttpContext != null &&
|
||||
@@ -31,8 +59,6 @@ namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
|
||||
}
|
||||
|
||||
public void InvertSideBar()
|
||||
@@ -40,5 +66,13 @@ namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
SidebarExpanded = !SidebarExpanded;
|
||||
BodyExpanded = !BodyExpanded;
|
||||
}
|
||||
|
||||
public void LanguageSelected(RadzenSplitButtonItem item)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
CurrentCultureInfo = CultureInfos[item.Value];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
@inherits NavMenuBase
|
||||
@inject IStringLocalizer<App> Localize
|
||||
|
||||
<div>
|
||||
<RadzenPanelMenu Click="@(MenuClicked)">
|
||||
<RadzenPanelMenuItem Text="Home" Icon="home"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="Login with WG.net ID" Icon="vpn_key"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="Search player" Icon="person_search"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="Search clan" Icon="screen_search_desktop"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="@Localize["Home"]" Icon="home"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="@Localize["Login with WG.net ID"]" Icon="vpn_key"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="@Localize["Search player"]" Icon="person_search"></RadzenPanelMenuItem>
|
||||
<RadzenPanelMenuItem Text="@Localize["Search clan"]" Icon="screen_search_desktop"></RadzenPanelMenuItem>
|
||||
</RadzenPanelMenu>
|
||||
</div>
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Threading.Tasks;
|
||||
using MediatR;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.Extensions.Localization;
|
||||
using Radzen;
|
||||
using WotBlitzStatisticsPro.Blazor.Messages;
|
||||
using WotBlitzStatisticsPro.Blazor.Model;
|
||||
@@ -19,6 +20,10 @@ namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
[Inject]
|
||||
public ISearchDialogService SearchDialogService { get; set; }
|
||||
|
||||
[Inject]
|
||||
private IStringLocalizer<App> Localizer { get; set; }
|
||||
|
||||
|
||||
[Parameter]
|
||||
public EventCallback CloseSideBar { get; set; }
|
||||
|
||||
@@ -27,17 +32,17 @@ namespace WotBlitzStatisticsPro.Blazor.Shared
|
||||
await CloseSideBar.InvokeAsync();
|
||||
switch (menuItem.Text)
|
||||
{
|
||||
case "Home":
|
||||
case var _ when(Localizer.GetString("Home")) == menuItem.Text:
|
||||
NavManager.NavigateTo("/");
|
||||
break;
|
||||
case "Login with WG.net ID":
|
||||
case var _ when (Localizer.GetString("Login with WG.net ID")) == menuItem.Text:
|
||||
await Mediator.Publish(new LoginToWgMessage());
|
||||
break;
|
||||
case "Search player":
|
||||
case var _ when (Localizer.GetString("Search player")) == menuItem.Text:
|
||||
await Mediator.Publish(new OpenSearchDialogMessage(DialogType.FindPlayer));
|
||||
//await SearchDialogService.OpenSearchDialog(DialogType.FindPlayer);
|
||||
break;
|
||||
case "Search clan":
|
||||
case var _ when (Localizer.GetString("Search clan")) == menuItem.Text:
|
||||
await Mediator.Publish(new OpenSearchDialogMessage(DialogType.FindClan));
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user