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

OrchardCore(Asp.Net Core)添加ViewLocalization报错:PO文件本地化配置问题

解决Orchard Core中使用PO文件本地化的Mvc配置问题

嘿,我之前在Orchard Core项目里配置PO文件本地化时也碰到过这个问题!核心点在于Orchard Core已经帮我们封装了Mvc的注册逻辑,直接调用services.AddMvc()反而会和框架自带的配置冲突,正确的做法是通过Orchard的扩展方法来配置视图本地化:

正确的配置步骤

1. 通过AddOrchardCms的ConfigureMvc扩展添加本地化

在Startup.cs的ConfigureServices方法里,修改AddOrchardCms()的配置,用ConfigureMvc来注入视图本地化:

services.AddOrchardCms()
    .ConfigureMvc(mvcBuilder =>
    {
        // 添加视图本地化,指定用后缀格式(比如Index.en.cshtml)
        mvcBuilder.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
        // 如果需要模型数据注解的本地化,也加上这一行
        mvcBuilder.AddDataAnnotationsLocalization();
    });

2. 配置本地化资源路径

同样在ConfigureServices里,添加本地化资源的基础路径配置(如果你的PO文件放在Resources文件夹下):

services.AddLocalization(options =>
{
    options.ResourcesPath = "Resources"; // 指向你的PO文件存放目录
});

3. 启用本地化中间件

在Configure方法中,确保把UseRequestLocalization放在UseRouting之后,UseEndpoints之前:

app.UseRouting();

// 启用请求本地化
app.UseRequestLocalization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

额外注意事项

  • PO文件的命名要符合规范:比如对应Views/Home/Index.cshtml的英文PO文件,应该是Resources/Views.Home.Index.en.po(如果设置了ResourcesPath),或者直接在Views目录下创建Index.en.po(配合Suffix格式的视图本地化)。
  • 不要单独调用services.AddMvc(),Orchard Core的AddOrchardCms()已经包含了Mvc的注册,重复添加会导致依赖注入冲突。

内容的提问来源于stack exchange,提问作者Eugenio Finch Piccirillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:01