feat: localization added

This commit is contained in:
Mikhail Shabanov committed 2021-04-07 12:32:17 +02:00
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;
}