我正在尝试实现本地化,但是在运行时仅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,存在类似问题。

10-07 19:19
查看更多