Раньше я создавал приложение WPF Blazor.
Я пытаюсь сделать это снова, но на этот раз я попробовал добавить локализацию
согласно документации Microsoft и другим документам
(За исключением того, что вместо того, чтобы полагаться на локальное хранилище, я полагаюсь на файл конфигурации, я могу загрузить информацию о культуре из конфигурации и установить DefaultThreadCurrentCulture и DefaultThreadCurrentUICulture с нужной мне CultureInfo)
Это хорошо работает для стандартного приложения Blazor WASM, но, похоже, не работает. работаю для приложения WPF Blazor.
Когда я пытаюсь получить локализованную строку, он всегда возвращает английский ресурс по умолчанию.
Я подозреваю, что в нем что-то есть что делать с удалением этой строки
Код: Выделить всё
- await builder.Build().RunAsync();
Код: Выделить всё
builder.Services.AddLocalization();
var host = builder.Build();
const string defaultCulture = "en-US";
var js = host.Services.GetRequiredService();
var result = await js.InvokeAsync("blazorCulture.get");
var culture = CultureInfo.GetCultureInfo(result ?? defaultCulture);
if (result == null)
{
await js.InvokeVoidAsync("blazorCulture.set", defaultCulture);
}
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
await host.RunAsync();
Код: Выделить всё
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var serviceCollection = new ServiceCollection();
serviceCollection.AddWpfBlazorWebView();
Resources.Add("services", serviceCollection.BuildServiceProvider());
}
}
Кстати, кто-нибудь знает, почему культуру необходимо устанавливать после создания хоста, но до его запуска? Я не уверен, что полностью понимаю, как это работает.
Я также исследовал это, поскольку это дает доступ к хосту, но мне не удалось заставить работать версию .NET 8
https://github.com/DotNetExtension/BlazorDesktop
Редактирование:
Возможно, мне стоит попробовать использовать Extensions.Hosting? это вообще поможет?
ага
В этой статье вы узнаете, как использовать реализации IStringLocalizer и IStringLocalizerFactory. . Весь исходный код примеров в этой статье основан на пакетах NuGet Microsoft.Extensions.Localization и Microsoft.Extensions.Hosting. Дополнительную информацию о хостинге см. в разделе .NET Generic Host.
Возможно, это поможет
Подробнее здесь: https://stackoverflow.com/questions/784 ... blazor-app