【问题标题】:Understanding Resource files in MVC6 RC1了解 MVC6 RC1 中的资源文件
【发布时间】:2016-08-15 08:01:04
【问题描述】:

我一直在努力思考如何最好地在 MVC6 中为多种语言实现资源文件,但由于每个版本的变化让我对如何正确实现它们感到有点困惑。需要什么,有什么限制?

我看过的几篇文章:

https://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/

MVC 6 : how to use RESX files?

http://pratikvasani.github.io/archive/2015/12/25/MVC-6-localization-how-to/

我正在尝试设置资源文件,以便我的用户可以使用英语和德语,这将基于浏览器设置或他们帐户中的个人设置。

实现这一目标的最佳方法是什么?

提前致谢!

编辑:

因此,根据文章,我已将以下代码添加到 Startup.cs:

        services.AddLocalization(options =>
                options.ResourcesPath = "Resources");
        services.AddMvc()
                .AddViewLocalization(Microsoft.AspNet.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
                .AddDataAnnotationsLocalization();

        var supportedCultures = new[]
        {
            new CultureInfo("de-DE"),
            new CultureInfo("en-US")
        };

        //Set Default Localization Culture
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            SupportedCultures = supportedCultures,
            SupportedUICultures = supportedCultures
        }, new RequestCulture(new CultureInfo("en-US")));

然后在 Resources 文件夹中,我创建了带有文件名的新 resx 文件:

  • “Views.Shared._LocalizationTest.en-US.resx”

  • “Views.Shared._LocalizationTest.de-DE.resx”

我的部分视图如下:

@using Microsoft.AspNet.Localization
@using Microsoft.AspNet.Mvc.Localization
@inject IViewLocalizer Localizer

<div>
     @Localizer["TestString"]
</div>

我似乎仍然缺少一些东西,因为我正在显示“TestString”而不是“测试字符串”用于英语或“德语:测试字符串”(根据我的资源文件)。

有什么想法吗?

【问题讨论】:

标签: localization asp.net-core asp.net-core-mvc resx asp.net-core-localization


【解决方案1】:

ASP.NET 核心默认方法是在资源文件中包含您的默认语言字符串,而只是将它们包装在代码中。因此,您可以使用包含在本地化程序中的英语字符串来编写应用程序,并拥有一个德语资源文件。见我的文章https://docs.microsoft.com/aspnet/core/fundamentals/localization

【讨论】:

  • 真的有这么好的主意吗?我的意思是当你开始使用一个小应用程序时它很方便,但对我来说听起来很容易出错。我的意思是,如果您更改默认语言的标点符号,那么您将不得不去替换所有其他本地化文件中的“键”,否则您的本地化变量将不会再在其他本地化文件中找到?
  • 那篇文章肯定有帮助,但我和 Tseng 有类似的想法。例如,英语可能是我的强项,本地化是远程进行的,但网站的默认语言应该是德语。
  • 我同意 Reosoul。现在,我正在尝试使用默认的西班牙语和支持的英语构建一个 asp.net core mvc 网站。但是,它不适用于包含在代码中的字符串。它总是显示来自 English.resx 文件的字符串。
猜你喜欢
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多