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

ASP.NET Core Web API本地化配置后失效问题求助

问题排查与解决方案

1. 检查资源文件的命名与结构

  • 资源文件必须放在你配置的Resources路径下,命名需符合ASP.NET Core本地化约定:
    • 英文资源:Resources/AuthController.en.resx 或 Resources/[你的项目名称].AuthController.en.resx(取决于你配置的资源命名模式)
    • 俄文资源:Resources/AuthController.ru.resx 或 Resources/[你的项目名称].AuthController.ru.resx
  • 确认俄文资源文件中已添加About Title键对应的俄文翻译值,而非空值或原英文内容。

2. 验证Program.cs的本地化配置正确性

确保配置完整启用了请求文化提供器,参考正确配置示例:

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[]
    {
        new CultureInfo("en"),
        new CultureInfo("ru")
    };

    options.DefaultRequestCulture = new RequestCulture("en");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;

    // 启用查询字符串、Accept-Language头两种文化识别方式
    options.RequestCultureProviders = new List<IRequestCultureProvider>
    {
        new QueryStringRequestCultureProvider(),
        new AcceptLanguageHeaderRequestCultureProvider()
    };
});

// 必须将本地化中间件放在路由和控制器映射之前
app.UseRequestLocalization();
app.MapControllers();

重点确认ResourcesPath路径设置正确,且UseRequestLocalization中间件的位置没有错误。

3. 确认IStringLocalizer的注入与使用方式

在AuthController中,需注入对应控制器的本地化器,而非全局通用的本地化器:

private readonly IStringLocalizer<AuthController> _localizer;

public AuthController(IStringLocalizer<AuthController> localizer)
{
    _localizer = localizer;
}

// 获取本地化字符串的代码
var aboutTitle = _localizer["About Title"];

如果使用无泛型的IStringLocalizer,则需确保资源文件为全局共享格式(如Resources/Shared.ru.resx),且配置时指定了对应的资源类型。

4. 检查请求文化是否被正确识别

在控制器中添加代码,打印当前生效的UI文化,确认请求是否成功切换到俄语:

var currentUICulture = HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.UICulture.Name;
// 或使用线程文化
var currentUICulture = Thread.CurrentThread.CurrentUICulture.Name;

若输出不是ru,需检查:

  • 查询字符串参数是否为ui-culture=ru(默认参数名是culture和ui-culture)
  • Accept-Language请求头格式是否正确(如ru或ru-RU)

5. 清理缓存并重新生成项目

VS的资源文件缓存可能导致修改不生效,执行以下操作:

  • 右键项目 → 清理
  • 右键项目 → 重新生成
  • 重启调试服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:38:15