在ASP.NET Core 2.2中,可以通过使用IStringLocalizer
接口来实现本地化。在视图模型和视图中使用本地化时,需要注入IStringLocalizer
接口,并使用Localizer
属性来获取本地化的字符串。
以下是一个示例,展示了如何在视图模型和视图中使用本地化:
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
}
创建一个名为Resources
的文件夹,并在其中创建一个名为Views
的文件夹。在Views
文件夹中创建一个名为Home.cs.resx
的资源文件,用于存储Home视图的本地化字符串。
创建一个名为HomeViewModel.cs
的视图模型类:
public class HomeViewModel
{
private readonly IStringLocalizer _localizer;
public HomeViewModel(IStringLocalizer localizer)
{
_localizer = localizer;
}
public string GetLocalizedName()
{
return _localizer["Name"];
}
}
HomeViewModel
并将视图模型传递给视图:public class HomeController : Controller
{
private readonly IStringLocalizer _localizer;
public HomeController(IStringLocalizer localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
var viewModel = new HomeViewModel(_localizer);
return View(viewModel);
}
}
@model HomeViewModel
@Model.GetLocalizedName()
这样,视图模型和视图中的本地化字符串将会生效。确保在资源文件中正确配置了本地化字符串,并且设置了正确的区域设置。