【问题标题】:ASP.NET 5 (MVC 6) - Resources LocalizationASP.NET 5 (MVC 6) - 资源本地化
【发布时间】:2016-04-08 14:50:58
【问题描述】:

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

我已经阅读了Visual Studio 中的错误,我已经阅读了所有关于它现在如何工作的文章(Article1Article2Article3)并且我已经检查和测试了所有关于 example在官方 GitHub 存储库中。

我的目标:

我只想让它像在 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 文件。我已经从官方示例中复制了它,但没有办法......没有错误,只是不工作。

如果我测试官方 Repo 的本地化示例,它可以工作。但我无法修改以适应 MVC 6。

我在 GitHub 上为我的代码创建了一个存储库并对其进行了测试。 (https://github.com/chemitaxis/Localization.StackOverflow)

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

谢谢!!

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    好的,我解决了...我明天会在 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
    

    之后,我创建了一个 HomeControllerViews/Home/Index.cshtml 文件。

    就像我在 _ViewImports 中的 Views 中注入了 IStringLocalizer SR 我可以在我的 Razor 视图中使用它,只需:

    @SR["Name"]
    

    我不知道这是否是最好的方法,但它确实有效。如果有人可以解释最好的方法,请回答这个问题。

    完整的解决方案工作:https://github.com/chemitaxis/Localization.StackOverflow

    谢谢。

    【讨论】:

    • 这正是我想要的。我尝试运行 RC2 github.com/damienbod/AspNet5Localization/tree/rc2 的示例,但我无法管理。我遇到了与 dnx 的 rc2 版本相关的问题。你成功运行这个版本了吗?
    • 还没有……我稍后再做。我将在新分支中升级
    • 您能否添加带有数据注释的示例本地化。我试过[Required(ErrorMessageResourceName = "Name_is_required", ErrorMessageResourceType = typeof(PersonalInfo))] [MaxLength(Constants.MaxNameLength)] public string Name { get; set; },但它不起作用。
    • 很遗憾地看到,经过这么多年和一次大的 CORE 品牌重塑,我们仍然坚持使用这种丑陋的本地化解决方案,涉及 .resx 文件,但现在多了一层间接涉及接口和依赖注入。难过,非常难过。我想微软已经把这个留给开源社区继续下去,没有人为此工作,因为如果有,他们就不值得他们的薪水......
    • 我同意@Vi100,本地化还是很丑……我等github.com/turquoiseowl/i18n/issues/293
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2019-01-13
    • 2012-06-10
    • 2022-07-21
    相关资源
    最近更新 更多