Понимание файлов ресурсов в MVC6 RC1

Я пытаюсь оборачивать голову тем, как лучше всего реализовать файлы ресурсов для нескольких языков в 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/

Я пытаюсь настроить файлы ресурсов, чтобы у меня был доступ на английском и немецком языках для моих пользователей, который был бы основан на настройках браузера или личных настройках в их учетной записи.

Каким будет лучший способ достичь этого?

Спасибо заранее!

Edit:

Итак, согласно статье, я добавил следующий код в 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")));

Затем в папке "Ресурсы" я создал новые файлы 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>

Кажется, что мне что-то не хватает, поскольку вместо "Test String" вместо "Test String" для английского языка или "German: Test String" (согласно моим файлам ресурсов) появляется "TestString".

Любые идеи?

Ответ 1

Основной подход по умолчанию для ASP.NET: НЕ имеет ваши языковые строки по умолчанию в файле ресурсов, а просто их завершают в код. Таким образом, вы можете написать приложение, используя английские строки, завернутые в локализатор, и иметь один немецкий файл ресурсов. См. Мою статью https://docs.microsoft.com/aspnet/core/fundamentals/localization