14

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

我看过的几篇文章:

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

MVC 6:如何使用 RESX 文件?

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”而不是“Test String”来显示英语或“German: Test String”(根据我的资源文件)。

有任何想法吗?

4

1 回答 1

2

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

于 2016-04-21T22:02:43.267 回答