要实现ASP.Net Core 2.1 MVC的本地化文化回退,可以按照以下步骤进行操作:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR"),
// 添加其他支持的文化
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
创建资源文件,用于存储各个文化的本地化字符串。在项目的根目录下创建一个名为"Resources"的文件夹,并在该文件夹下创建一个名为"SharedResources.resx"的资源文件。在资源文件的属性中设置"Build Action"为"Embedded resource",并根据需要添加本地化字符串。
在Controller中使用本地化字符串。在需要本地化的地方,使用IStringLocalizer
private readonly IStringLocalizer _localizer;
public HomeController(IStringLocalizer localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
ViewData["Message"] = _localizer["WelcomeMessage"];
return View();
}
@inject IViewLocalizer Localizer
@Localizer["WelcomeMessage"]
这样,当应用程序的语言环境不是默认支持的文化时,它会回退到默认的文化,并使用默认文化中的本地化字符串。