我花了大约一周时间试图理解本地化如何在ASP.NET Core 1.0中运行。我已经测试了很多选项,但我无法使其正常工作。
我已经阅读了Visual Studio中的错误,我已阅读所有关于它现在如何工作的文章(Article1,Article2,Article3)并且我已经检查过了并测试了官方GitHub存储库中example的所有内容。
我的目标:
我只是想让它像我在ASP.NET MVC 5中那样工作。
我已经配置了我的Startup.cs:
配置部分:
var requestLocalizationOptions = new RequestLocalizationOptions
{
// Set options here to change middleware behavior
SupportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("es-ES")
},
SupportedUICultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("es-ES")
}
};
app.UseRequestLocalization(requestLocalizationOptions, defaultRequestCulture: new RequestCulture("en-US"));
配置服务部分:
// Add MVC services to the services container.
services
.AddMvc()
.AddViewLocalization(options => options.ResourcesPath = "Resources")
.AddDataAnnotationsLocalization();
在我的文件夹资源中,我有我的.resx文件。我从官方的例子中复制了它,但没有办法......没有错误,只是没有工作。
如果我测试官方回购的本地化示例,它可以工作。但我无法修改以适应MVC 6。
我已经在GitHub上为我的代码创建了一个存储库并对其进行测试。 (https://github.com/chemitaxis/Localization.StackOverflow)
有人可以帮帮我吗?我想很多人都有这些问题。
谢谢!
答案 0 :(得分:5)
好的,我解决了......明天我将在GitHub上更新我的例子。
我创建了一个 _ViewImports ,然后添加它:
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
@using System.Threading.Tasks
@using AspNet5Localization
@using AspNet5Localization.Resources
@using Microsoft.AspNet.Mvc.Localization
@using Microsoft.Extensions.Localization
@inject IStringLocalizer<AmazingResource> SR
之后,我创建了一个 HomeController 和 Views / Home / Index.cshtml 文件。
就像我在 _ViewImports 中注入 _ViewImports IStringLocalizer SR 一样,我可以使用它在我的Razor Views中使用它:
@SR["Name"]
我不知道这是否是最佳方式,但它确实有效。如果有人能解释这样做的最佳方式,请回答这个问题。
完整的解决方案:https://github.com/chemitaxis/Localization.StackOverflow
感谢。