Проект автономного приложения .NET 8 Blazor WebAssembly Я добавил культуру «az-AZ» в файл Program.cs, но он не работает. Но другие языки работают.
Программа.cs
using BlazorApp1;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using System.Globalization;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("az-AZ");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("az-AZ");
await builder.Build().RunAsync();
BlazorApp1
<Project Sdk = "Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
</PropertyGroup>
<ItemGroup>
<PackageReference Include = "Microsoft.AspNetCore.Components.WebAssembly" Version = "8.0.2" />
<PackageReference Include = "Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version = "8.0.2" PrivateAssets = "all" />
</ItemGroup>
</Project>
@Рена Привет. Я думаю все конфиги в порядке. Потому что когда я перехожу на «тр-ТР», это работает.
Привет @Халиг Гейдаров, ты пробовал другие культуры, не только тр-ТР и аз-АЗ? Все остальные культуры могут работать нормально? Я думаю, вам лучше рассказать, как вы настраиваете локализацию и как получаете культуру. Настройкой на стороне клиента, из заголовков или любым другим способом.
@Rena Да, это работает нормально.
Привет @Khalig Heydarov, проверьте эту проблему на github, похоже, это сделано специально. Вы можете просмотреть ссылку в последнем комментарии и попробовать настроить.
Извините, мне просто нужно спросить: это WebAssembly или ServerSide? Мне это кажется WebAss, но вы указали оба тега.
Также для других на этой странице Также есть обсуждение этой проблемы, где мы получаем более подробную информацию, в частности: изменение культуры ДЕЙСТВИТЕЛЬНО работает и оказывает влияние, но есть проблемы с такими вещами, как метод .ToLower().
См. https://www.arclab.com/en/kb/csharp/get-installed-ui-cultural-enumeration-of-cultural-names.html
Укажите, является ли языковая письменность кириллицей или латиницей:
az-Cyrl-AZ
против.
az-Latn-AZ
Похоже, их можно упростить до:
az-Cyrl
<-- Азәрбајҹан дили
против.
az-Latn
<-- azərbaycan
Я не проверял; Я думаю, что они действуют так же, как и два предыдущих варианта.
Пример использования:
new CultureInfo("az-Cyrl");
Я использовал их все, но не работало.
Я нашел ответ от Microsoft, и он работает. https://github.com/dotnet/runtime/issues/104717
«az» по умолчанию не включен в данные интернализации приложения WASM, см.: доступные культуры.
BlazorWebAssemblyLoadAllGlobalizationData
работает только для приложения Blazor WASM. Он загружает все культуры из списка «доступных культур», упомянутого выше. Эквивалентом в приложении WASM является <WasmIcuDataFileName>icudt_custom.dat</WasmIcuDataFileName>
doc.
Если вы хотите добавить любую культуру, которая не добавлена в список культур «доступных культур» (например, «az-Latn-AZ»), вам следует следовать специальной инструкции ICU и использовать свою собственную версию файла icu, заполнив WasmIcuDataFileName
его имя.
Привет @Халиг Гейдаров, как тебе другая конфигурация локализации? Вот официальный документ: как настроить культуру.