Blazor Server中MudBlazor数据网格资源文件本地化失败排查
MudBlazor数据网格筛选项本地化失效的排查与解决
以下是针对你遇到的问题的排查点和解决步骤:
检查资源文件的生成操作配置
右键点击MudResources.resx和MudResources.fa-IR.resx,选择「属性」:- 确保「生成操作」设置为
Embedded Resource - 「自定义工具」留空(.NET Core/5+ 无需旧版ResXFileCodeGenerator,IStringLocalizer会直接读取嵌入式资源)
- 确保「生成操作」设置为
补充本地化服务的基础注册
在Program.cs中,除了注册MudLocalizer,还需要添加本地化服务的核心配置:// 添加本地化服务 builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); // 若资源文件放在Resources文件夹下,否则可省略此参数 // 配置支持的文化 var supportedCultures = new[] { "en-US", "fa-IR" }; var localizationOptions = new RequestLocalizationOptions() .SetDefaultCulture("fa-IR") .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); app.UseRequestLocalization(localizationOptions);确认资源键与MudBlazor的要求匹配
MudBlazor的数据网格筛选项使用特定的本地化键,你需要确保MudResources.fa-IR.resx中包含以下关键键值(示例为波斯语翻译,可按需调整):键名 波斯语示例 datagrid_filter_apply اعمال datagrid_filter_clear پاک کردن datagrid_filter_contains شامل میشود datagrid_filter_equal مساوی datagrid_filter_greaterthan بزرگتر از datagrid_filter_lessthan کوچکتر از datagrid_filter_isnull خالی است datagrid_filter_isnotnull خالی نیست 验证本地化服务的注入与覆盖顺序
确保服务注册顺序正确(先添加本地化服务,再注册自定义MudLocalizer):// 先添加本地化服务 builder.Services.AddLocalization(); // 再注册自定义MudLocalizer builder.Services.AddTransient<MudLocalizer, ResXMudLocalizer>(); // 最后注册MudBlazor服务 builder.Services.AddMudServices();清理缓存并重建项目
手动删除项目根目录下的bin和obj文件夹,重启IDE后重新构建并运行项目,避免旧资源文件的缓存影响。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

