Интернационализация .NET Core - PullRequest
0 голосов
/ 25 октября 2018

Я хотел бы отправлять электронные письма с моим .NET Core API, и текстовое содержимое электронных писем находится в файлах ресурсов, но у меня проблемы с чтением файлов.

У меня есть 2 файла меток, Ресурсы/Messages.en-GB.resx and Resources / Messages.fr-FR.resx

В Startup.cs я добавил это в метод Configure:

var supportedCultures = new List<CultureInfo>
{
    new CultureInfo("fr-FR"),
    new CultureInfo("en-GB")
};

var localizationOptions = new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("fr-FR"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(localizationOptions);

И в ConfigureServicesМетод:

services.AddLocalization(options => options.ResourcesPath = "Resources");

Я создал класс инструментов:

public class MessagesLang
{
    private readonly ResourceManager _resourceManager;

    public MessagesLang()
    {
        _resourceManager = ResourceManager.CreateFileBasedResourceManager("Messages", "/Resources", null);
    }

    public string Get(string key)
    {
        return _resourceManager.GetString(key);
    }
}

И я использую этот класс в моем контроллере:

public class MailController : Controller
{
    private readonly MessagesLang _messages;
    private readonly EmailManager _emails;

    public MailController(MessagesLang messages, EmailManager emails)
    {
        _messages = messages;
        _emails = emails;
    }
    [HttpPost("send-mail")]
    public void SendEmail()
    {
        string content = _messages.Get("email-content");
        ...
        _emails.SendMail(content);
        ...
    }
}

Но это не такработа, у меня есть эта ошибка:

System.Resources.MissingManifestResourceException: Не удалось найти какие-либо ресурсы, подходящие для указанной культуры (или нейтральной культуры) на диске.baseName: сообщения locationInfo: fileName: Messages.resources

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...