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