ASP.NET Core MVC本地化配置后不生效问题求助
ASP.NET Core MVC 本地化不生效的解决方案
我帮你排查了下,你已经完成了大部分基础配置,但有几个关键细节遗漏了,导致翻译没有生效,具体如下:
1. 明确指定资源文件路径
你创建了Resources文件夹,但ASP.NET Core默认不会自动扫描这个目录下的资源文件。需要在ConfigureServices的AddMvc配置中添加资源路径的指定:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(config => { config.Filters.Add<ActionFilter>(); }) // 新增这一行,告诉框架资源文件存放在Resources文件夹 .AddMvcOptions(options => options.ResourcesPath = "Resources") .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); // 其余请求本地化配置保持不变 }
2. 确保资源文件的命名与结构匹配
根据你设置的资源路径,资源文件的命名必须对应控制器/视图的结构:
- 针对
HomeController的字符串本地化:
你可以在Resources文件夹下创建Controllers子目录,然后把HomeController.fr.resx放在这个子目录里;或者直接在Resources根目录将文件命名为Controllers.HomeController.fr.resx。 - 针对
Index.cshtml视图的本地化:
你需要额外创建视图对应的资源文件——要么在Resources根目录命名为Views.Home.Index.fr.resx,要么创建Resources/Views/Home子目录,然后放入Index.fr.resx。记得在这个资源文件里添加Home到Accueil的映射。
3. 检查资源文件的编译属性
在Visual Studio中右键点击你的.resx文件,打开属性面板,确认自定义工具设置为ResXFileCodeGenerator,这个设置能确保资源文件被正确编译并被框架识别。
你的中间件顺序是对的(UseRequestLocalization在UseMvc之前),这部分没问题。做完上面的调整后,重启应用应该就能看到翻译生效了。
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

