使用 Blazor 服务器应用程序中的资源文件进行 MudBlazor 数据网格本地化

Ami*_*mir 6 datagrid localization resx mudblazor

我正在尝试使用资源文件本地化 MudBlazor 数据网格。但数据网格过滤项仍以英文显示。

据此我添加了以下课程:

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];
}
Run Code Online (Sandbox Code Playgroud)

并将以下内容添加到 Program.cs

builder.Services.AddTransient<MudLocalizer, ResXMudLocalizer>();
Run Code Online (Sandbox Code Playgroud)

我已确保 CurrentUICulture 是“fa-IR”。我制作了两个名为“MudResources.resx”和“MudResources.fa-IR.resx”的 Resx 文件,并将本地化字符串放入其中。

但数据网格仍然显示英文单词。

我做错了什么或者错过了什么吗?

小智 0

这对我有用:

\n

第一步:创建一个类:

\n
using Microsoft.Extensions.Localization;\nusing MudBlazor;\n\nnamespace PortalApp\n{\n    public class MudBlazorLocalization : MudLocalizer\n    {\n        private Dictionary<string, string> _localization;\n\n        public MudBlazorLocalization()\n        {\n            _localization = new()\n            {\n                { "MudDataGrid.is empty", "est\xc3\xa1 vac\xc3\xado" },\n                { "MudDataGrid.is not empty", "no esta vac\xc3\xado" },\n                { "MudDataGrid.contains", "contiene" },\n                { "MudDataGrid.not contains", "no contiene" },\n                { "MudDataGrid.Unsort","Sin ordenar" }\n            };\n        }\n\n        public override LocalizedString this[string key]\n        {\n            get\n            {\n                if (_localization.TryGetValue(key, out var res))\n                {\n                    return new(key, res);\n                }\n                else\n                {\n                    return new(key, key, true);\n                }\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

步骤2:将以下内容添加到Program.cs中

\n
builder.Services.AddMudServices();\nbuilder.Services.AddTransient<MudLocalizer, MudBlazorLocalization>();\n
Run Code Online (Sandbox Code Playgroud)\n