Локализация в ASP.NET Core 3.1

Я пытаюсь использовать локализацию в приложении .NET Core 3.1.
Я добавил в свой Startup.cs файл следующее:

services.AddLocalization(o => o.ResourcesPath = "Resources");
services.Configure<RequestLocalizationOptions>(options =>
{
    var supportedCultures = new[]
    {
        new CultureInfo("de-DE"),
        new CultureInfo("en-US")
    };
    options.DefaultRequestCulture = new RequestCulture("de-DE", "de-DE");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
});

В сборке, где мне нужна локализация, я создал папку с именем Resources и в ней файл ресурсов с именем MailTexte.de-DE.resx. В той же сборке, но в другой папке я добавил класс MailTexte.cs:

public class MailTexte
{
    public string ConfirmationMailTitel { get; } = string.Empty;
}

В классе, где мне нужна локализация, я ввел IStringLocalizer<MailTexte> stringLocalizer в конструктор и пытаюсь получить значение с помощью var titel = this.stringLocalizer["ConfirmationMailTitel"];

К сожалению, при просмотре результата он говорит: «Ресурс не найден = истина».

Я что-то упускаю?

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


person xeraphim    schedule 08.04.2020    source источник


Ответы (1)


Если папки ресурсов нет в проекте asp.net, вы должны сделать следующее:

        private readonly IStringLocalizer _stringLocalizer;
     
        public TestController(IStringLocalizerFactory stringLocalizerFactory)
        {
           _stringLocalizer = stringLocalizerFactory.Create(
            typeof(ConfirmationMailTitel).FullName,
            "ResourcesAssemblyName");
         }
person vahid tajari    schedule 28.06.2020