我正在使用 MudBlazor 组件开发 Blazor (.NET 7) WebAssembly 应用程序,并且想知道如何以及是否可以将 f.ex DataGrid 本地化为“is-IS”?我已经使用 .resx 文件完成了基本本地化。
提前致谢,
奥拉维尔
我创建了一个 WebAssemblyHostExtension 并在 Program.cs 中引用它,使用 IStringLocalizer 工作得很好,但 MudBlazor 组件只是英文的。我缺少什么?
问候,
奥拉维尔
...
builder.Services.AddBlazoredLocalStorage();
var host = builder.Build();
等待主机.SetDefaultCulture(); // 检索本地存储值并设置线程的当前区域性。
等待主机.RunAsync();
公共异步静态任务 SetDefaultCulture(此 WebAssemblyHost 主机)
{
CultureInfo cultureInfo;
try
{
var localStorage = host.Services.GetRequiredService<ILocalStorageService>();
var cultureString = await localStorage.GetItemAsync<string>("culture");
if (!string.IsNullOrWhiteSpace(cultureString))
{
cultureInfo = new CultureInfo(cultureString);
}
else
{
cultureInfo = new CultureInfo(LocalizerSettings.NeutralCulture.Name);
}
}
catch(Exception ex
{
cultureInfo = new CultureInfo(LocalizerSettings.NeutralCulture.Name);
}
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
}
在 Blazor wasm 托管client项目:
-
将这些行添加到程序.cs :
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
builder.Services.AddTransient();
-
将具有 true 值的 BlazorWebAssemblyLoadAllGlobalizationData 添加到客户端项目的 .csproj 文件中地产集团部分:
BlazorWebAssemblyLoadAllGlobalizationData>true
-
创建一个 DictionaryMudLocalizer 类:
公共类 DictionaryMudLocalizer : MudLocalizer
{
私有只读字典 _localization;
public DictionaryMudLocalizer()
{
_localization = new()
{
{ "MudDataGrid.Unsort", "حذف سورت" },
};
}
public override LocalizedString this[string key]
{
get
{
_localization.TryGetValue(key, out var res);
return new(key, res);
}
}
}
要使其使用自定义本地化程序,CurrentUICulture 不能是任何英语文化
https://mudblazor.com/features/localization#dictionary-based-example https://mudblazor.com/features/localization#dictionary-based-example
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)