如何实现本地化ASP网络核心MVC



我不知道如何在 ASP.NET 核心MVC网站上使用本地化: 我关注了这个网站,但我想我忘记了一些东西:

启动:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(
config =>
{
config.Filters.Add<ActionFilter>();
})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(option =>
{
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("fr"),
};
option.DefaultRequestCulture = new RequestCulture(culture: "fr", uiCulture: "fr");
option.SupportedCultures = supportedCultures;
option.SupportedUICultures = supportedCultures;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

主控制器 :

public class HomeController : Controller
{
private readonly IStringLocalizer<HomeController> _localizer;
public HomeController(IStringLocalizer<HomeController> localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
return View()
}
}

Index.cshtml

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@{
ViewData["Title"] = Localizer["Home"];
}
<h1>News</h1>
<h2>@Localizer["Home"]</h2>

我有一个Resources Folder,里面有一个文件HomeController.fr.resx其中定义了主页 => Accueil 关系。

该函数Request.HttpContext.Features.Get<IRequestCultureFeature>().RequestCulture.Culture.Name返回fr但页面始终显示Home而不是Accueil

我错过了本地化工作吗?

我终于明白为什么它不起作用,我只是忘记添加 Localization.AspNetCore.TagHelpers NugetPackage。

最新更新