【发布时间】:2019-07-07 20:01:24
【问题描述】:
我的 Razor 页面如下所示。
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<h1>@Localizer["Index"]</h1>
...
我的 Startup.cs 包含以下内容。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization(a => a.ResourcesPath = "/");
services.Configure<RequestLocalizationOptions>(a =>
{
CultureInfo[] supportedCultures = {
new CultureInfo("sv-SE"),
new CultureInfo("se")
};
a.DefaultRequestCulture = new RequestCulture("se");
a.SupportedCultures = supportedCultures;
a.SupportedUICultures = supportedCultures;
});
...
}
我直接在项目的根目录中放置了一个名为 Controllers.HomeController.se.resx 的文件。控制器 HomeController 包含注入。
public class HomeController : Controller
{
private readonly Context _context;
private readonly IStringLocalizer<HomeController> _localizer;
public HomeController(Context context, IStringLocalizer<HomeController> localizer)
{
_context = context;
_localizer = localizer;
}
...
}
应用程序不会崩溃但呈现的字符串是 Index 而不是来自 RESX 文件的值。我试图尽可能地关注the docs,但显然我错过了一些东西。我需要帮助找出那将是什么。
我在构造函数中设置了断点并检查了 _localizer["Index"] 的值。正如预期的那样,未找到文件的标志设置为 true。检查 SearchedLocation 的值会给我 Web...Controllers.MemberController。我不知道这三个点是否是项目根目录中 RESX 文件的正确点。我也期待 se 在名称中的某处。
【问题讨论】:
标签: c# asp.net-core localization asp.net-core-2.2