我正在尝试使用资源文件本地化 MudBlazor 数据网格。但数据网格过滤项仍然以英文显示。
根据this我添加了以下课程:
using Microsoft.Extensions.Localization;
using MudBlazor;
internal class ResXMudLocalizer : MudLocalizer
{
private IStringLocalizer _localization;
public ResXMudLocalizer(IStringLocalizer<MudResources> localizer)
{
_localization = localizer;
}
public override LocalizedString this[string key] => _localization[key];
}
并将以下内容添加到 Program.cs
builder.Services.AddTransient<MudLocalizer, ResXMudLocalizer>();
我已确保 CurrentUICulture 是“fa-IR”。 我制作了两个名为“MudResources.resx”和“MudResources.fa-IR.resx”的 Resx 文件,并将本地化字符串放入其中。
但是数据网格仍然显示英文单词。
我做错了什么或遗漏了什么吗?
这对我有用:
第1步:创建一个类:
using Microsoft.Extensions.Localization;
using MudBlazor;
namespace PortalApp
{
public class MudBlazorLocalization : MudLocalizer
{
private Dictionary<string, string> _localization;
public MudBlazorLocalization()
{
_localization = new()
{
{ "MudDataGrid.is empty", "está vacío" },
{ "MudDataGrid.is not empty", "no esta vacío" },
{ "MudDataGrid.contains", "contiene" },
{ "MudDataGrid.not contains", "no contiene" },
{ "MudDataGrid.Unsort","Sin ordenar" }
};
}
public override LocalizedString this[string key]
{
get
{
if (_localization.TryGetValue(key, out var res))
{
return new(key, res);
}
else
{
return new(key, key, true);
}
}
}
}
}
第2步:将以下内容添加到Program.cs中
builder.Services.AddMudServices();
builder.Services.AddTransient<MudLocalizer, MudBlazorLocalization>();