Я следил за примером проекта в https://github.com/pranavkm/LocSample
Вот код Program.cs:
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Blazored.LocalStorage;
using System.Globalization;
using System.Diagnostics;
using Microsoft.Extensions.Options;
namespace Temple
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddBlazoredLocalStorage();
var host = builder.Build();
var localStorage = host.Services.GetRequiredService<ILocalStorageService>();
string CurrentLanguage=await localStorage.GetItemAsync<string>("Language");
Debug.WriteLine(CurrentLanguage);
if (!string.IsNullOrEmpty(CurrentLanguage))
{
var culture = new CultureInfo(CurrentLanguage);
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
await host.RunAsync();
}
}
}
А вот код index. razor:
@page "/"
@inject IStringLocalizer<Index> Localizer;
@inject NavigationManager Nav
@inject Blazored.LocalStorage.ILocalStorageService localStorage
<h1>@Localizer["Test"]</h1>
<button @onclick="ABC">123123</button>
Welcome to your new app.
@code{
public void ABC()
{
localStorage.SetItemAsync("Language", "zh-Hans");
Nav.NavigateTo(Nav.Uri, forceLoad: true);
}
}
А вот список файлов:
Как видите, я использую пакет Blazored.LocalStorage
nuget для локального хранилища, и он хорошо работает.
Проблема в том, когда я нажимал кнопку в index.razor. Язык никогда не меняется на китайский.
Более того, я обнаружил странную проблему. После того, как я изменил код в index.razor
следующим образом:
@code{
public void ABC()
{
localStorage.SetItemAsync("Language", "en");
Nav.NavigateTo(Nav.Uri, forceLoad: true);
}
}
Когда я нажал кнопку, он правильно изменил язык на английский sh.
Что с этим не так?