ASP.NET 5(MVC 6) - 资源本地化

时间:2016-02-16 12:47:09

标签: asp.net-core

我花了大约一周时间试图理解本地化如何在ASP.NET Core 1.0中运行。我已经测试了很多选项,但我无法使其正常工作。

我已经阅读了Visual Studio中的错误,我已阅读所有关于它现在如何工作的文章(Article1Article2Article3)并且我已经检查过了并测试了官方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

有人可以帮帮我吗?我想很多人都有这些问题。

谢谢!

1 个答案:

答案 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

感谢。