2017-04-19 156 views
3

我想實現本地化,但是當只運行名稱回報。ASP.NET核心定位 - 不從資源文件返回值,唯一的名字

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,位於 「視圖\首頁」。 資源文件夾包含兩個資源文件: Views.Home.Index.en.resxViews.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 [ 「關於」]返回 「關於」

@ requestCulture.RequestCulture.Culture.Name返回「否」

回答