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

.NET Core 6 MVC中ViewLocalizer本地化失效问题求助

ASP.NET Core 6 MVC ViewLocalizer 不生效问题的解决方案

1. 修正服务注册顺序

AddLocalization必须在AddControllersWithViews().AddViewLocalization之前执行,视图本地化依赖全局本地化配置(如ResourcesPath),颠倒顺序会导致配置不生效。修改Program.cs代码:

// 先配置本地化基础服务
builder.Services.AddLocalization(options =>
{
    options.ResourcesPath = "Resources";
});

// 再添加MVC并启用视图本地化
builder.Services.AddControllersWithViews()
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);

// 配置请求本地化选项
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[]
    {
        new CultureInfo("en-US"),
        new CultureInfo("tr-TR"),
        new CultureInfo("fr")
    };
    options.DefaultRequestCulture = new RequestCulture("en-US");
    options.SupportedUICultures = supportedCultures;
    options.SupportedCultures = supportedCultures;
    // 明确设置请求文化提供器优先级,确保查询字符串优先生效
    options.RequestCultureProviders = new List<IRequestCultureProvider>
    {
        new QueryStringRequestCultureProvider(),
        new CookieRequestCultureProvider(),
        new AcceptLanguageHeaderRequestCultureProvider()
    };
});

2. 匹配资源文件路径与视图路径

你的视图对应路径为Views/Kategori/CurrentKategori.cshtml(URL为/Kategori/CurrentKategori),资源文件必须与视图路径严格对应,将资源文件从Resources/Views/Category目录移至Resources/Views/Kategori下:

  • 正确路径:Resources/Views/Kategori/CurrentKategori.en-US.resx
  • 正确路径:Resources/Views/Kategori/CurrentKategori.tr-TR.resx
  • 正确路径:Resources/Views/Kategori/CurrentKategori.fr.resx

3. 调整中间件顺序

app.UseRequestLocalization()必须放在路由配置之前,确保文化信息在路由解析前生效。修改Program.cs的中间件顺序:

var app = builder.Build();

// 其他中间件(如UseHttpsRedirection、UseStaticFiles)
app.UseHttpsRedirection();
app.UseStaticFiles();

// 本地化中间件必须在路由之前
app.UseRequestLocalization();

app.UseRouting();

app.UseAuthorization();

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

app.Run();

4. 检查资源文件生成配置

每个.resx文件的属性需正确设置,否则资源无法被程序读取:

  1. 在解决方案资源管理器右键点击.resx文件,选择「属性」
  2. 设置生成操作为嵌入式资源
  3. 设置自定义工具为PublicResXFileCodeGenerator

5. 完善URL文化切换参数

切换文化时需同时指定culture和ui-culture参数,UICulture直接决定资源文件的查找逻辑:

https://localhost:44338/Kategori/CurrentKategori/?culture=en-US&ui-culture=en-US

6. 避免系统区域设置覆盖默认文化

若系统默认区域为土耳其语,可能会覆盖配置的默认请求文化,可在RequestLocalizationOptions中禁用父文化回退:

options.FallBackToParentCultures = false;
options.FallBackToParentUICultures = false;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:00:01