在ASP.NET Core 3.0中,本地化可能不起作用的一个常见问题是缺少必要的配置。以下是解决该问题的步骤和代码示例:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.Configure(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("zh-CN")
};
options.DefaultRequestCulture = new RequestCulture("en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
// ...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("zh-CN")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
// ...
}
在项目中创建一个Resources文件夹,并添加一个名为"SharedResource.resx"的资源文件。确保将"生成操作"设置为"嵌入的资源"。
在视图中,使用@inject指令将IViewLocalizer注入,并使用Localizer实例进行本地化字符串的访问:
@inject IViewLocalizer Localizer
@Localizer["Hello"]
using Microsoft.AspNetCore.Mvc.Localization;
public class HomeController : Controller
{
private readonly IStringLocalizer _localizer;
public HomeController(IStringLocalizer localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
ViewData["Message"] = _localizer["Welcome"];
return View();
}
}
以上是解决ASP.NET Core 3.0本地化不起作用的步骤和代码示例。确保按照上述步骤进行配置和使用本地化功能。