Added message handling
This commit is contained in:
parent
e4fc2d7512
commit
0c20c898da
22
BlazorWebassemblyI18n/App.razor.cs
Normal file
22
BlazorWebassemblyI18n/App.razor.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
|
namespace BlazorWebassemblyI18n
|
||||||
|
{
|
||||||
|
public sealed partial class App : IMessage
|
||||||
|
{
|
||||||
|
[Inject] private SessionManager sessionManager { get; set; }
|
||||||
|
|
||||||
|
protected override Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
sessionManager.Register(this);
|
||||||
|
return base.OnInitializedAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task ReceiveMessage(string message)
|
||||||
|
{
|
||||||
|
this.StateHasChanged();
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
@page "/employee"
|
@page "/employee"
|
||||||
@using Newtonsoft.Json;
|
@using Newtonsoft.Json;
|
||||||
|
@using R = BlazorWebassemblyI18n.Resources;
|
||||||
@inject IJSRuntime JSRuntime
|
@inject IJSRuntime JSRuntime
|
||||||
@inject Microsoft.Extensions.Localization.IStringLocalizer<App> Localize
|
@inject Microsoft.Extensions.Localization.IStringLocalizer<App> Localize
|
||||||
|
@implements IMessage
|
||||||
|
|
||||||
<h1>@title</h1>
|
<h1>@title</h1>
|
||||||
<br />
|
<br />
|
||||||
@ -23,11 +25,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-md-12">@Localize["City"]</label>
|
<label class="control-label col-md-12">@R.App.City</label>
|
||||||
<input class="form-control" @bind="employee.City" />
|
<input class="form-control" @bind="employee.City" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-md-12">@Localize["Salary"]</label>
|
<label class="control-label col-md-12">@R.App.Salary</label>
|
||||||
<input type="number" class="form-control" @bind="employee.Salary" />
|
<input type="number" class="form-control" @bind="employee.Salary" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -65,19 +67,21 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code{
|
@code{
|
||||||
|
[Inject] private SessionManager sessionManager { get; set; }
|
||||||
|
|
||||||
Employee employee = new Employee();
|
Employee employee = new Employee();
|
||||||
List<Employee> lstEmployees = new List<Employee>();
|
List<Employee> lstEmployees = new List<Employee>();
|
||||||
string title;
|
string title => string.Format(R.App.Title, companyName);
|
||||||
string companyName = "Phrase";
|
string companyName = "Phrase";
|
||||||
|
|
||||||
string[] TableHeader = { "Name", "Gender", "City", "Salary", "Joining Date" };
|
string[] TableHeader = { "Name", "Gender", "City", "Salary", "Joining Date" };
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
setTitle();
|
|
||||||
var empGetJS = (IJSInProcessRuntime)JSRuntime;
|
var empGetJS = (IJSInProcessRuntime)JSRuntime;
|
||||||
var empList = await empGetJS.InvokeAsync<string>("employeeData.get");
|
var empList = await empGetJS.InvokeAsync<string>("employeeData.get");
|
||||||
FetchEmployeeFromLocalStorage(empList);
|
FetchEmployeeFromLocalStorage(empList);
|
||||||
|
sessionManager.Register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveEmployeeToLocalStorage()
|
void SaveEmployeeToLocalStorage()
|
||||||
@ -89,6 +93,12 @@
|
|||||||
employee = new Employee();
|
employee = new Employee();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task ReceiveMessage(string message)
|
||||||
|
{
|
||||||
|
this.StateHasChanged();
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
void FetchEmployeeFromLocalStorage(string empList)
|
void FetchEmployeeFromLocalStorage(string empList)
|
||||||
{
|
{
|
||||||
if (empList != null)
|
if (empList != null)
|
||||||
@ -97,12 +107,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTitle()
|
|
||||||
{
|
|
||||||
string localizedTitle = Localize["Title"];
|
|
||||||
title = string.Format(localizedTitle, companyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Employee
|
class Employee
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
|
|
||||||
@code
|
@code
|
||||||
{
|
{
|
||||||
|
[Inject]
|
||||||
|
SessionManager sessionManager {get;set;}
|
||||||
|
|
||||||
CultureInfo[] supportedLanguages = new[]
|
CultureInfo[] supportedLanguages = new[]
|
||||||
{
|
{
|
||||||
new CultureInfo("en-US"),
|
new CultureInfo("en-US"),
|
||||||
@ -29,8 +32,13 @@
|
|||||||
{
|
{
|
||||||
var js = (IJSInProcessRuntime)JSRuntime;
|
var js = (IJSInProcessRuntime)JSRuntime;
|
||||||
js.InvokeVoid("appCulture.set", value.Name);
|
js.InvokeVoid("appCulture.set", value.Name);
|
||||||
|
var cultureInfo = new CultureInfo(value.Name);
|
||||||
|
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
|
||||||
|
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
|
||||||
|
CultureInfo.CurrentCulture = cultureInfo;
|
||||||
|
|
||||||
Nav.NavigateTo(Nav.Uri, forceLoad: true);
|
//Nav.NavigateTo(Nav.Uri, forceLoad: true);
|
||||||
|
sessionManager.SendMessage($"culture was changed to '{value.Name}'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user