From 0c20c898dac7f78791034bfdd159a57667fbcb72 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Thu, 23 Sep 2021 18:58:52 +0200 Subject: [PATCH] Added message handling --- BlazorWebassemblyI18n/App.razor.cs | 22 +++++++++++++++++ .../Pages/EmployeeData.razor | 24 +++++++++++-------- .../Pages/LanguageSelector.razor | 10 +++++++- 3 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 BlazorWebassemblyI18n/App.razor.cs diff --git a/BlazorWebassemblyI18n/App.razor.cs b/BlazorWebassemblyI18n/App.razor.cs new file mode 100644 index 0000000..660a215 --- /dev/null +++ b/BlazorWebassemblyI18n/App.razor.cs @@ -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; + } + } +} \ No newline at end of file diff --git a/BlazorWebassemblyI18n/Pages/EmployeeData.razor b/BlazorWebassemblyI18n/Pages/EmployeeData.razor index 0ae9d74..d2e103c 100644 --- a/BlazorWebassemblyI18n/Pages/EmployeeData.razor +++ b/BlazorWebassemblyI18n/Pages/EmployeeData.razor @@ -1,7 +1,9 @@ @page "/employee" @using Newtonsoft.Json; +@using R = BlazorWebassemblyI18n.Resources; @inject IJSRuntime JSRuntime @inject Microsoft.Extensions.Localization.IStringLocalizer Localize +@implements IMessage

@title


@@ -23,11 +25,11 @@
- +
- +
@@ -65,19 +67,21 @@ @code{ + [Inject] private SessionManager sessionManager { get; set; } + Employee employee = new Employee(); List lstEmployees = new List(); - string title; + string title => string.Format(R.App.Title, companyName); string companyName = "Phrase"; string[] TableHeader = { "Name", "Gender", "City", "Salary", "Joining Date" }; protected override async Task OnInitializedAsync() { - setTitle(); var empGetJS = (IJSInProcessRuntime)JSRuntime; var empList = await empGetJS.InvokeAsync("employeeData.get"); FetchEmployeeFromLocalStorage(empList); + sessionManager.Register(this); } void SaveEmployeeToLocalStorage() @@ -89,6 +93,12 @@ employee = new Employee(); } + public Task ReceiveMessage(string message) + { + this.StateHasChanged(); + return Task.CompletedTask; + } + void FetchEmployeeFromLocalStorage(string empList) { if (empList != null) @@ -97,12 +107,6 @@ } } - void setTitle() - { - string localizedTitle = Localize["Title"]; - title = string.Format(localizedTitle, companyName); - } - class Employee { public string Name { get; set; } diff --git a/BlazorWebassemblyI18n/Pages/LanguageSelector.razor b/BlazorWebassemblyI18n/Pages/LanguageSelector.razor index 9a8de77..bc0f917 100644 --- a/BlazorWebassemblyI18n/Pages/LanguageSelector.razor +++ b/BlazorWebassemblyI18n/Pages/LanguageSelector.razor @@ -13,6 +13,9 @@ @code { + [Inject] + SessionManager sessionManager {get;set;} + CultureInfo[] supportedLanguages = new[] { new CultureInfo("en-US"), @@ -29,8 +32,13 @@ { var js = (IJSInProcessRuntime)JSRuntime; 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}'"); } } }