我正在尝试实现本地化,但运行时仅返回名称。
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
.....
List<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("no"),
new CultureInfo("en")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("no"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
该项目包含一个名为 Index.cshtml 的 View ,位于“Views\Home”中。 Resources 文件夹包含两个资源文件: Views.Home.Index.en.resx 和 Views.Home.Index.no.resx
Index.cshtml:
@inject IOptions<RequestLocalizationOptions> LocalizerOptions
@inject IViewLocalizer Localizer
@{
var requestCulture = Context.Features.Get<IRequestCultureFeature>();
var cultureItems = LocalizerOptions.Value.SupportedUICultures
.Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
.ToList();
}
@{
ViewData["Title"] = Localizer["Title"];
}
<div id="section_box_about" class="section_box_about" style="margin-top:0px;">
@Localizer["HeaderAbout"]
</div>
<div class="container" style="width:96%;margin:auto;">
@Localizer["About"]
<br />
<br />
<br />
@requestCulture.RequestCulture.Culture.Name
</div>
@Localizer["About"] 返回“关于”
@requestCulture.RequestCulture.Culture.Name 返回“否”
最佳答案
您能否添加 Localization.AspNetCore.TagHelpers nuget 包。添加此内容后,我进行了本地化工作。
另请参阅:Localization in ASP.Net core MVC not working - unable to locate resource file有类似的问题。
关于c# - ASP.NET Core 本地化 - 不从资源文件返回值,仅返回名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43485192/