在ASP.NET Core 2.0中,本地化可能不起作用的原因可能是配置不正确或缺少必要的依赖项。以下是一个可能的解决方法:
public void ConfigureServices(IServiceCollection services)
{
// 添加本地化服务
services.AddLocalization(options => options.ResourcesPath = "Resources");
// 添加MVC服务
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// 设置默认语言
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("zh-CN")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("zh-CN"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
// ...
}
确保已正确配置资源文件。在项目的根目录下创建一个名为“Resources”的文件夹,并在其中添加一个名为“SharedResource.xx-XX.resx”的资源文件,其中“xx-XX”是所支持的语言代码。确保资源文件的生成操作设置为“嵌入的资源”。
在视图中使用正确的本地化方法。在视图中使用@Localizer["Hello"]
的方式来本地化文本。确保使用正确的键值,例如在资源文件中的键值为“Hello”。
@Localizer["Hello"]
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// 设置默认语言
// ...
// 添加本地化中间件
app.UseRequestLocalization();
// 添加MVC中间件
app.UseMvc();
// ...
}
通过以上步骤,您应该能够解决ASP.NET Core 2.0中本地化不起作用的问题。如果问题仍然存在,请确保已经安装了正确版本的AspNetCore.Localization和AspNetCore.Mvc.Localization NuGet软件包,并确保在项目中引用了正确版本的依赖项。