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

问题描述 投票:0回答:1

我正在尝试使用资源文件本地化 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 文件,并将本地化字符串放入其中。

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

我做错了什么或遗漏了什么吗?

datagrid localization resx mudblazor
1个回答
0
投票

这对我有用:

第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>();
© www.soinside.com 2019 - 2024. All rights reserved.