You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中ViewLocalizer显示键而非值的问题排查

解决ASP.NET Core本地化显示键名而非值的问题

针对你遇到的ViewLocalizer显示键名而非对应文本的问题,按以下步骤排查修复:

1. 检查资源文件的命名与位置

  • 资源文件需遵循视图匹配规则:如果是Shared/_Layout.cshtml的资源,要放在Resources/Views/Shared目录下,命名为Shared.en.resx(英文)和Shared.ar.resx(阿拉伯语);如果是Home/Index.cshtml这类页面视图,资源文件要放在Resources/Views/Home下,命名为Index.en.resx和Index.ar.resx。
  • 若使用全局共用资源,文件需放在Resources根目录,命名为Views.en.resx、Views.ar.resx,后续要在配置中指定资源路径。

2. 完善Program.cs的本地化配置

在Program.cs中补充关键配置代码:

// 指定资源文件所在路径
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

builder.Services.AddControllersWithViews()
    // 启用视图本地化,按后缀匹配资源文件
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
    .AddDataAnnotationsLocalization();

// 配置支持的语言文化
var supportedCultures = new[] { "en", "ar" };
var localizationOptions = new RequestLocalizationOptions()
    .SetDefaultCulture("en")
    .AddSupportedCultures(supportedCultures)
    .AddSupportedUICultures(supportedCultures);

app.UseRequestLocalization(localizationOptions);

3. 检查资源文件的访问权限

  • 右键点击resx文件→属性,确认自定义工具设置为PublicResXFileCodeGenerator;打开resx编辑器,将顶部的访问修饰符设为public。只有公开的资源类,ViewLocalizer才能正确读取文本值。

4. 确认视图中的注入正确

确保使用ViewLocalizer的视图顶部有正确的注入代码:

@inject IViewLocalizer ViewLocalizer

调整完成后重新运行项目,可通过查询字符串?culture=en或?culture=ar切换语言,即可看到对应的本地化文本。

内容的提问来源于stack exchange,提问作者Abdulsalam Elsharif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:15:50