我正在尝试实现本地化,但是在运行时仅Name返回。
启动文件
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的视图,位于“ 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”]返回“ About”
@ requestCulture.RequestCulture.Culture.Name返回“否”
最佳答案
您能否添加Localization.AspNetCore.TagHelpers nuget包。添加完之后,我开始进行本地化工作。
另请参见:Localization in ASP.Net core MVC not working - unable to locate resource file,存在类似问题。