Я хотел бы отправлять электронные письма с моим .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